@copado/agentia-cli 1.1.0 → 1.3.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 (394) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +3290 -2095
  3. package/dist/commands/ai/agent/ask.js +4 -4
  4. package/dist/commands/ai/agent/chat.js +4 -4
  5. package/dist/commands/auth/get.js +21 -1
  6. package/dist/commands/auth/set.js +13 -0
  7. package/dist/commands/auth/unset.js +37 -0
  8. package/dist/commands/cicd/cloud/commit.js +2 -2
  9. package/dist/commands/cicd/cloud/promote.js +19 -5
  10. package/dist/commands/cicd/credential/auth/status.js +38 -0
  11. package/dist/commands/cicd/credential/auth/web/login.js +54 -0
  12. package/dist/commands/cicd/credential/create.js +2 -2
  13. package/dist/commands/cicd/credential/list.js +15 -19
  14. package/dist/commands/cicd/credential/open.js +30 -0
  15. package/dist/commands/cicd/credential/update.js +11 -14
  16. package/dist/commands/cicd/data/commit/create.js +2 -2
  17. package/dist/commands/cicd/data/commit/list.js +2 -2
  18. package/dist/commands/cicd/data/dataset-file/content.js +2 -2
  19. package/dist/commands/cicd/data/dataset-file/list.js +2 -2
  20. package/dist/commands/cicd/data/filter/add.js +2 -2
  21. package/dist/commands/cicd/data/filter/delete.js +2 -2
  22. package/dist/commands/cicd/data/filter/list.js +2 -2
  23. package/dist/commands/cicd/data/filter/update.js +2 -2
  24. package/dist/commands/cicd/data/formula/create.js +2 -2
  25. package/dist/commands/cicd/data/formula/list.js +2 -2
  26. package/dist/commands/cicd/data/formula/update.js +2 -2
  27. package/dist/commands/cicd/data/records/match.js +2 -2
  28. package/dist/commands/cicd/data/records/search.js +2 -2
  29. package/dist/commands/cicd/data/sobject/fields.js +2 -2
  30. package/dist/commands/cicd/data/sobject/relationships.js +2 -2
  31. package/dist/commands/cicd/data/sync/apply.js +2 -2
  32. package/dist/commands/cicd/data/sync/preview-updates.js +2 -2
  33. package/dist/commands/cicd/data/template/convert-old.js +2 -2
  34. package/dist/commands/cicd/data/template/create.js +2 -2
  35. package/dist/commands/cicd/data/template/delete.js +2 -2
  36. package/dist/commands/cicd/data/template/get-detail.js +2 -2
  37. package/dist/commands/cicd/data/template/get.js +2 -2
  38. package/dist/commands/cicd/data/template/list.js +2 -2
  39. package/dist/commands/cicd/data/template/open.js +2 -2
  40. package/dist/commands/cicd/data/template/save-detail.js +2 -2
  41. package/dist/commands/cicd/environment/auth/status.js +36 -15
  42. package/dist/commands/cicd/environment/auth/web/login.js +22 -6
  43. package/dist/commands/cicd/environment/create.js +2 -2
  44. package/dist/commands/cicd/environment/get.js +2 -2
  45. package/dist/commands/cicd/environment/list.js +2 -2
  46. package/dist/commands/cicd/environment/open.js +8 -24
  47. package/dist/commands/cicd/environment/update.js +2 -2
  48. package/dist/commands/cicd/extension/create.js +2 -2
  49. package/dist/commands/cicd/extension/install.js +2 -2
  50. package/dist/commands/cicd/extension/package.js +2 -2
  51. package/dist/commands/cicd/extension/publish.js +2 -2
  52. package/dist/commands/cicd/extension/uninstall.js +2 -2
  53. package/dist/commands/cicd/extension/validate.js +2 -2
  54. package/dist/commands/cicd/extension-configuration/get.js +24 -0
  55. package/dist/commands/cicd/extension-configuration/list.js +49 -0
  56. package/dist/commands/cicd/extension-configuration/open.js +38 -0
  57. package/dist/commands/cicd/function/defaults.js +2 -2
  58. package/dist/commands/cicd/function/delete.js +2 -2
  59. package/dist/commands/cicd/function/get.js +2 -2
  60. package/dist/commands/cicd/function/list.js +2 -2
  61. package/dist/commands/cicd/function/open.js +2 -2
  62. package/dist/commands/cicd/function/result/get.js +2 -2
  63. package/dist/commands/cicd/function/result/log/get.js +2 -2
  64. package/dist/commands/cicd/function/run-local.js +2 -2
  65. package/dist/commands/cicd/function/run.js +2 -2
  66. package/dist/commands/cicd/function/upsert.js +2 -2
  67. package/dist/commands/cicd/health-check.js +2 -2
  68. package/dist/commands/cicd/job/get.js +2 -2
  69. package/dist/commands/cicd/job/kill.js +2 -2
  70. package/dist/commands/cicd/job/list.js +2 -2
  71. package/dist/commands/cicd/job/log/get.js +2 -2
  72. package/dist/commands/cicd/job/open.js +2 -2
  73. package/dist/commands/cicd/job/pause.js +2 -2
  74. package/dist/commands/cicd/job/result-file/get.js +2 -2
  75. package/dist/commands/cicd/job/result-file/list.js +2 -2
  76. package/dist/commands/cicd/job/resume.js +2 -2
  77. package/dist/commands/cicd/job/run.js +2 -2
  78. package/dist/commands/cicd/metadata/content/compare.js +2 -2
  79. package/dist/commands/cicd/metadata/content/get.js +3 -3
  80. package/dist/commands/cicd/metadata/dependency/list.js +45 -22
  81. package/dist/commands/cicd/metadata/explore.js +81 -0
  82. package/dist/commands/cicd/metadata/index/compare.js +2 -2
  83. package/dist/commands/cicd/metadata/list.js +5 -5
  84. package/dist/commands/cicd/metadata/refresh/deleted.js +3 -3
  85. package/dist/commands/cicd/metadata/refresh/run.js +4 -4
  86. package/dist/commands/cicd/metadata/refresh/status.js +4 -4
  87. package/dist/commands/cicd/notification/configure.js +2 -2
  88. package/dist/commands/cicd/notification/get.js +2 -2
  89. package/dist/commands/cicd/pipeline/automation/activate.js +39 -0
  90. package/dist/commands/cicd/pipeline/automation/create.js +33 -0
  91. package/dist/commands/cicd/pipeline/automation/deactivate.js +39 -0
  92. package/dist/commands/cicd/pipeline/automation/delete.js +45 -0
  93. package/dist/commands/cicd/pipeline/automation/get.js +32 -0
  94. package/dist/commands/cicd/pipeline/automation/list.js +38 -0
  95. package/dist/commands/cicd/pipeline/automation/open.js +38 -0
  96. package/dist/commands/cicd/pipeline/automation/update.js +38 -0
  97. package/dist/commands/cicd/pipeline/connection/create.js +2 -2
  98. package/dist/commands/cicd/pipeline/connection/delete.js +2 -2
  99. package/dist/commands/cicd/pipeline/connection/list.js +2 -2
  100. package/dist/commands/cicd/pipeline/connection/open.js +2 -2
  101. package/dist/commands/cicd/pipeline/connection/update.js +2 -2
  102. package/dist/commands/cicd/pipeline/create.js +2 -2
  103. package/dist/commands/cicd/pipeline/get.js +2 -2
  104. package/dist/commands/cicd/pipeline/list.js +2 -2
  105. package/dist/commands/cicd/pipeline/open.js +2 -2
  106. package/dist/commands/cicd/pipeline/quality-gate/activate.js +39 -0
  107. package/dist/commands/cicd/pipeline/quality-gate/create.js +34 -0
  108. package/dist/commands/cicd/pipeline/quality-gate/deactivate.js +39 -0
  109. package/dist/commands/cicd/pipeline/quality-gate/delete.js +45 -0
  110. package/dist/commands/cicd/pipeline/quality-gate/get.js +32 -0
  111. package/dist/commands/cicd/pipeline/quality-gate/list.js +34 -0
  112. package/dist/commands/cicd/pipeline/quality-gate/open.js +38 -0
  113. package/dist/commands/cicd/pipeline/quality-gate/update.js +38 -0
  114. package/dist/commands/cicd/pipeline/stage-connection/create.js +2 -2
  115. package/dist/commands/cicd/pipeline/stage-connection/delete.js +2 -2
  116. package/dist/commands/cicd/pipeline/stage-connection/list.js +2 -2
  117. package/dist/commands/cicd/pipeline/stage-connection/open.js +2 -2
  118. package/dist/commands/cicd/pipeline/stage-connection/update.js +2 -2
  119. package/dist/commands/cicd/pipeline/update.js +2 -2
  120. package/dist/commands/cicd/project/create.js +2 -2
  121. package/dist/commands/cicd/project/default/get.js +2 -2
  122. package/dist/commands/cicd/project/default/set.js +2 -2
  123. package/dist/commands/cicd/project/default/unset.js +2 -2
  124. package/dist/commands/cicd/project/delete.js +2 -2
  125. package/dist/commands/cicd/project/get.js +2 -2
  126. package/dist/commands/cicd/project/list.js +2 -2
  127. package/dist/commands/cicd/project/open.js +2 -2
  128. package/dist/commands/cicd/project/update.js +2 -2
  129. package/dist/commands/cicd/promotion/conflict/get.js +2 -2
  130. package/dist/commands/cicd/promotion/conflict/list.js +2 -2
  131. package/dist/commands/cicd/promotion/conflict/resolve.js +2 -2
  132. package/dist/commands/cicd/promotion/conflict/unresolve.js +2 -2
  133. package/dist/commands/cicd/promotion/get.js +2 -2
  134. package/dist/commands/cicd/promotion/job-step/update.js +2 -2
  135. package/dist/commands/cicd/promotion/list.js +2 -2
  136. package/dist/commands/cicd/promotion/open.js +2 -2
  137. package/dist/commands/cicd/promotion/queue/list.js +28 -0
  138. package/dist/commands/cicd/promotion/queue/remove.js +37 -0
  139. package/dist/commands/cicd/promotion/run.js +2 -2
  140. package/dist/commands/cicd/repository/auth/https/configure.js +2 -2
  141. package/dist/commands/cicd/repository/auth/oauth/login.js +2 -2
  142. package/dist/commands/cicd/repository/auth/setup.js +2 -2
  143. package/dist/commands/cicd/repository/auth/ssh/configure.js +2 -2
  144. package/dist/commands/cicd/repository/create.js +2 -2
  145. package/dist/commands/cicd/repository/delete.js +2 -2
  146. package/dist/commands/cicd/repository/get.js +2 -2
  147. package/dist/commands/cicd/repository/list.js +2 -2
  148. package/dist/commands/cicd/repository/open.js +2 -2
  149. package/dist/commands/cicd/repository/reset.js +2 -2
  150. package/dist/commands/cicd/repository/update.js +2 -2
  151. package/dist/commands/cicd/repository/validate.js +2 -2
  152. package/dist/commands/cicd/stage/create.js +2 -2
  153. package/dist/commands/cicd/stage/delete.js +2 -2
  154. package/dist/commands/cicd/stage/get.js +2 -2
  155. package/dist/commands/cicd/stage/list.js +2 -2
  156. package/dist/commands/cicd/stage/open.js +2 -2
  157. package/dist/commands/cicd/stage/update.js +2 -2
  158. package/dist/commands/cicd/template/defaults.js +2 -2
  159. package/dist/commands/cicd/template/delete.js +2 -2
  160. package/dist/commands/cicd/template/get.js +2 -2
  161. package/dist/commands/cicd/template/list.js +2 -2
  162. package/dist/commands/cicd/template/upsert.js +2 -2
  163. package/dist/commands/cicd/user/get.js +2 -2
  164. package/dist/commands/cicd/work/ahead-behind.js +2 -2
  165. package/dist/commands/cicd/work/create.js +3 -2
  166. package/dist/commands/cicd/work/delete.js +2 -2
  167. package/dist/commands/cicd/work/deployment-step/create.js +2 -2
  168. package/dist/commands/cicd/work/deployment-step/delete.js +2 -2
  169. package/dist/commands/cicd/work/deployment-step/list.js +2 -2
  170. package/dist/commands/cicd/work/deployment-step/reorder.js +2 -2
  171. package/dist/commands/cicd/work/deployment-step/salesforce-flows.js +2 -2
  172. package/dist/commands/cicd/work/deployment-step/types.js +2 -2
  173. package/dist/commands/cicd/work/deployment-step/update.js +2 -2
  174. package/dist/commands/cicd/work/done.js +2 -2
  175. package/dist/commands/cicd/work/environment-sync.js +10 -9
  176. package/dist/commands/cicd/work/get.js +2 -2
  177. package/dist/commands/cicd/work/list.js +2 -2
  178. package/dist/commands/cicd/work/open.js +2 -2
  179. package/dist/commands/cicd/work/promote.js +2 -2
  180. package/dist/commands/cicd/work/publish.js +2 -2
  181. package/dist/commands/cicd/work/push.js +2 -2
  182. package/dist/commands/cicd/work/set.js +8 -6
  183. package/dist/commands/cicd/work/status.js +2 -2
  184. package/dist/commands/cicd/work/submit.js +5 -4
  185. package/dist/commands/cicd/work/test/apex.js +2 -2
  186. package/dist/commands/cicd/work/test.js +2 -2
  187. package/dist/commands/cicd/work/update.js +3 -2
  188. package/dist/commands/help-agent.js +15 -0
  189. package/dist/commands/help.js +38 -0
  190. package/dist/commands/history/clear.js +42 -0
  191. package/dist/commands/history/list.js +50 -0
  192. package/dist/commands/plugins/install.js +2 -5
  193. package/dist/commands/setup/skills/create.js +28 -2
  194. package/dist/commands/setup/skills/list.js +55 -0
  195. package/dist/commands/setup/skills/update.js +36 -3
  196. package/dist/commands/setup.js +3 -3
  197. package/dist/commands/support.js +15 -0
  198. package/dist/commands/testing/browser/execute.js +49 -0
  199. package/dist/commands/testing/browser/history.js +49 -0
  200. package/dist/commands/testing/browser/inspect.js +35 -0
  201. package/dist/commands/testing/browser/recorder.js +52 -0
  202. package/dist/commands/testing/browser/reports.js +33 -0
  203. package/dist/commands/testing/browser/screenshot.js +27 -0
  204. package/dist/commands/testing/browser/set-options.js +35 -0
  205. package/dist/commands/testing/browser/start.js +51 -0
  206. package/dist/commands/testing/browser/status.js +26 -0
  207. package/dist/commands/testing/browser/stop.js +34 -0
  208. package/dist/commands/testing/browser/view.js +35 -0
  209. package/dist/commands/testing/data-table/create.js +1 -2
  210. package/dist/commands/testing/data-table/delete.js +1 -2
  211. package/dist/commands/testing/data-table/export.js +2 -6
  212. package/dist/commands/testing/data-table/get.js +2 -4
  213. package/dist/commands/testing/data-table/list.js +1 -2
  214. package/dist/commands/testing/data-table/update.js +3 -4
  215. package/dist/commands/testing/job/create.js +26 -22
  216. package/dist/commands/testing/job/delete.js +2 -2
  217. package/dist/commands/testing/job/files/download.js +73 -0
  218. package/dist/commands/testing/job/files/list.js +43 -0
  219. package/dist/commands/testing/job/{upload.js → files/upload.js} +13 -9
  220. package/dist/commands/testing/job/get.js +2 -2
  221. package/dist/commands/testing/job/list.js +1 -1
  222. package/dist/commands/testing/job/refs.js +4 -4
  223. package/dist/commands/testing/job/run.js +134 -1
  224. package/dist/commands/testing/{build → job/runs}/abort.js +10 -8
  225. package/dist/commands/testing/job/runs/get.js +42 -0
  226. package/dist/commands/testing/{build → job/runs}/list.js +19 -10
  227. package/dist/commands/testing/{logs.js → job/runs/logs.js} +9 -6
  228. package/dist/commands/testing/{build → job/runs}/search.js +9 -7
  229. package/dist/commands/testing/job/schedule/get.js +5 -11
  230. package/dist/commands/testing/job/schedule/remove.js +3 -3
  231. package/dist/commands/testing/job/schedule/set.js +3 -3
  232. package/dist/commands/testing/job/update.js +22 -65
  233. package/dist/commands/testing/project/create.js +1 -17
  234. package/dist/commands/testing/project/get.js +0 -1
  235. package/dist/commands/testing/project/list.js +2 -2
  236. package/dist/commands/testing/project/permission/set.js +3 -7
  237. package/dist/commands/testing/project/permission/update.js +2 -2
  238. package/dist/commands/testing/robot/create.js +22 -25
  239. package/dist/commands/testing/robot/get.js +1 -1
  240. package/dist/commands/testing/robot/list.js +3 -3
  241. package/dist/commands/testing/robot/update.js +3 -3
  242. package/dist/commands/testing/user-parameter/create.js +3 -9
  243. package/dist/commands/testing/user-parameter/update.js +1 -7
  244. package/dist/commands/testing/variable/create.js +4 -9
  245. package/dist/commands/testing/variable/list.js +3 -3
  246. package/dist/commands/testing/variable/update.js +5 -12
  247. package/dist/help.js +17 -0
  248. package/dist/hooks/init/cicd-connection.js +59 -0
  249. package/dist/lib/agentia-command.js +69 -6
  250. package/dist/lib/ai-types.js +2 -1
  251. package/dist/lib/cicd-command.js +3 -0
  252. package/dist/lib/cicd-connection.js +22 -0
  253. package/dist/lib/cicd-gateway.js +2 -1
  254. package/dist/lib/claude-mcp-config.js +15 -0
  255. package/dist/lib/command-history-sanitization.js +9 -0
  256. package/dist/lib/command-history.js +11 -0
  257. package/dist/lib/command-output-buffer.js +6 -1
  258. package/dist/lib/credential-sync.js +1 -2
  259. package/dist/lib/defaults-store.js +6 -1
  260. package/dist/lib/dependency-from-changes.js +3 -1
  261. package/dist/lib/dependency-source-context.js +3 -0
  262. package/dist/lib/environment-auth-status.js +2 -1
  263. package/dist/lib/environment-auth.js +2 -1
  264. package/dist/lib/environment-credential-flags.js +3 -1
  265. package/dist/lib/environment-credential-operations.js +8 -2
  266. package/dist/lib/environment-types.js +3 -1
  267. package/dist/lib/extension-configuration-ops.js +4 -0
  268. package/dist/lib/extension-configuration-sanitize.js +7 -0
  269. package/dist/lib/extension-configuration-types.js +8 -0
  270. package/dist/lib/help-agent-command.js +3 -0
  271. package/dist/lib/help-agent-interaction-history.js +10 -0
  272. package/dist/lib/help-agent-session.js +3 -0
  273. package/dist/lib/http-proxy.js +13 -0
  274. package/dist/lib/mcp/ai-tools.js +3 -3
  275. package/dist/lib/mcp/command-id.js +2 -0
  276. package/dist/lib/mcp/pipeline-automation-quality-tools.js +452 -0
  277. package/dist/lib/mcp/result.js +41 -3
  278. package/dist/lib/mcp/server.js +73 -3
  279. package/dist/lib/mcp/testing-browser-tools.js +194 -0
  280. package/dist/lib/mcp/testing-tools.js +242 -552
  281. package/dist/lib/mcp/tool-annotations.js +59 -30
  282. package/dist/lib/mcp/tools.js +202 -66
  283. package/dist/lib/mcp/work-tools.js +18 -4
  284. package/dist/lib/metadata-explore.js +8 -0
  285. package/dist/lib/network-error.js +8 -0
  286. package/dist/lib/pipeline-automation-flags.js +12 -0
  287. package/dist/lib/pipeline-automation-ops.js +9 -0
  288. package/dist/lib/pipeline-automation-types.js +18 -0
  289. package/dist/lib/pipeline-lifecycle-id.js +3 -0
  290. package/dist/lib/pipeline-quality-gate-flags.js +12 -0
  291. package/dist/lib/pipeline-quality-gate-ops.js +9 -0
  292. package/dist/lib/pipeline-quality-gate-types.js +17 -0
  293. package/dist/lib/plugin-host/ai.js +2 -1
  294. package/dist/lib/plugin-skills.js +22 -0
  295. package/dist/lib/plugin-trust/gate.js +1 -2
  296. package/dist/lib/project-root.js +3 -1
  297. package/dist/lib/promotion-queue.js +5 -0
  298. package/dist/lib/promotion-run.js +2 -1
  299. package/dist/lib/runtime.js +1 -1
  300. package/dist/lib/salesforce-tooling-check.js +6 -0
  301. package/dist/lib/skill-packs.js +7 -0
  302. package/dist/lib/support-ai-context.js +11 -0
  303. package/dist/lib/support-ai-stream-parser.js +4 -0
  304. package/dist/lib/support-ai.js +9 -0
  305. package/dist/lib/testing-archive.js +9 -0
  306. package/dist/lib/testing-browser-command.js +6 -0
  307. package/dist/lib/testing-browser-operations.js +17 -0
  308. package/dist/lib/testing-browser-requests.js +11 -0
  309. package/dist/lib/testing-browser-robot.js +9 -0
  310. package/dist/lib/testing-browser-session.js +14 -0
  311. package/dist/lib/testing-browser-state.js +17 -0
  312. package/dist/lib/testing-browser-stream.js +7 -0
  313. package/dist/lib/testing-browser-types.js +3 -0
  314. package/dist/lib/testing-browser-viewer-key.js +7 -0
  315. package/dist/lib/testing-data-table.js +39 -0
  316. package/dist/lib/testing-execution.js +22 -0
  317. package/dist/lib/testing-flags.js +6 -2
  318. package/dist/lib/testing-gateway.js +5 -1
  319. package/dist/lib/testing-operations.js +9 -4
  320. package/dist/lib/testing-sanitization.js +3 -1
  321. package/dist/lib/testing-secret-input.js +2 -1
  322. package/dist/lib/testing-types.js +24 -3
  323. package/dist/lib/work-environment-sync.js +3 -1
  324. package/dist/lib/work-flags.js +6 -1
  325. package/dist/lib/work-local-development-flow.js +4 -0
  326. package/dist/lib/work-promote.js +2 -1
  327. package/dist/lib/work-submit-wait.js +3 -1
  328. package/oclif.manifest.json +8841 -7469
  329. package/package.json +45 -5
  330. package/templates/skills/agentia-ai/SKILL.md +9 -6
  331. package/templates/skills/agentia-ai/references/ai-agents.md +21 -3
  332. package/templates/skills/agentia-cicd/SKILL.md +8 -5
  333. package/templates/skills/agentia-cicd/references/environments-and-credentials.md +35 -13
  334. package/templates/skills/agentia-cicd/references/extensions.md +3 -0
  335. package/templates/skills/agentia-cicd/references/pipelines.md +36 -2
  336. package/templates/skills/agentia-cicd/references/promotions.md +10 -1
  337. package/templates/skills/agentia-cicd/references/work.md +20 -5
  338. package/templates/skills/agentia-metadata/SKILL.md +146 -0
  339. package/templates/skills/agentia-metadata/references/metadata-dependency.md +70 -0
  340. package/templates/skills/agentia-metadata/references/metadata-explore.md +146 -0
  341. package/templates/skills/agentia-testing/SKILL.md +12 -7
  342. package/templates/skills/agentia-testing/references/browser-testing.md +93 -0
  343. package/templates/skills/agentia-testing/references/flow-automation.md +112 -0
  344. package/templates/skills/agentia-testing/references/qforce.md +88 -0
  345. package/templates/skills/agentia-testing/references/qweb.md +103 -0
  346. package/templates/skills/agentia-testing/references/tests.md +31 -23
  347. package/dist/commands/testing/build/get.js +0 -38
  348. package/dist/commands/testing/build/latest.js +0 -40
  349. package/dist/commands/testing/build/logs.js +0 -47
  350. package/dist/commands/testing/build/run.js +0 -26
  351. package/dist/commands/testing/create.js +0 -2
  352. package/dist/commands/testing/job/download.js +0 -54
  353. package/dist/commands/testing/job/files.js +0 -34
  354. package/dist/commands/testing/live/continue.js +0 -21
  355. package/dist/commands/testing/live/execute.js +0 -43
  356. package/dist/commands/testing/live/history.js +0 -35
  357. package/dist/commands/testing/live/inspect.js +0 -30
  358. package/dist/commands/testing/live/interrupt.js +0 -21
  359. package/dist/commands/testing/live/recorder.js +0 -134
  360. package/dist/commands/testing/live/reports.js +0 -31
  361. package/dist/commands/testing/live/screenshot.js +0 -25
  362. package/dist/commands/testing/live/set-options.js +0 -28
  363. package/dist/commands/testing/live/start.js +0 -53
  364. package/dist/commands/testing/live/status.js +0 -27
  365. package/dist/commands/testing/live/stop.js +0 -38
  366. package/dist/commands/testing/live/view.js +0 -36
  367. package/dist/commands/testing/run.js +0 -26
  368. package/dist/commands/testing/status.js +0 -45
  369. package/dist/commands/testing/test/create.js +0 -2
  370. package/dist/commands/testing/test/logs.js +0 -2
  371. package/dist/commands/testing/test/run.js +0 -26
  372. package/dist/commands/testing/test/status.js +0 -2
  373. package/dist/commands/testing/test/update.js +0 -2
  374. package/dist/commands/testing/update.js +0 -65
  375. package/dist/lib/mcp/testing-live-tools.js +0 -215
  376. package/dist/lib/testing-data-command.js +0 -8
  377. package/dist/lib/testing-data-core.js +0 -20
  378. package/dist/lib/testing-data-export.js +0 -6
  379. package/dist/lib/testing-data-import.js +0 -6
  380. package/dist/lib/testing-data-io.js +0 -12
  381. package/dist/lib/testing-data-operations.js +0 -10
  382. package/dist/lib/testing-data-types.js +0 -4
  383. package/dist/lib/testing-live-command.js +0 -6
  384. package/dist/lib/testing-live-endpoints.js +0 -6
  385. package/dist/lib/testing-live-history.js +0 -7
  386. package/dist/lib/testing-live-operations.js +0 -19
  387. package/dist/lib/testing-live-recorder.js +0 -9
  388. package/dist/lib/testing-live-robot.js +0 -9
  389. package/dist/lib/testing-live-state.js +0 -5
  390. package/dist/lib/testing-live-types.js +0 -3
  391. package/dist/lib/testing-run-command.js +0 -3
  392. package/dist/lib/testing-schedule.js +0 -5
  393. package/dist/lib/testing-session.js +0 -5
  394. package/dist/lib/testing-watch.js +0 -4
@@ -0,0 +1,49 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
+ import { fetchExtensionConfigurations } from '../../../lib/extension-configuration-ops.js';
4
+ import { formatExtensionConfigurationTable, } from '../../../lib/extension-configuration-types.js';
5
+ import { displayListPagination, listPaginationFlags } from '../../../lib/list-pagination.js';
6
+ export default class ExtensionConfigurationList extends CicdCommand {
7
+ static description = 'List Copado extension configurations';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ '<%= config.bin %> <%= command.id %> --tool Selenium --active --json',
11
+ ];
12
+ static flags = {
13
+ ...listPaginationFlags,
14
+ active: Flags.boolean({
15
+ allowNo: true,
16
+ description: 'Filter by active status',
17
+ }),
18
+ name: Flags.string({
19
+ description: 'Filter by extension configuration name',
20
+ }),
21
+ 'test-type': Flags.string({
22
+ description: 'Filter by test type',
23
+ }),
24
+ tool: Flags.string({
25
+ description: 'Filter by extension tool',
26
+ }),
27
+ };
28
+ async run() {
29
+ const { flags } = await this.parse(ExtensionConfigurationList);
30
+ const page = await this.withSpinner('Fetching extension configurations', () => fetchExtensionConfigurations({
31
+ active: flags.active,
32
+ cursor: flags.cursor,
33
+ name: flags.name,
34
+ pageSize: flags['page-size'],
35
+ testType: flags['test-type'],
36
+ tool: flags.tool,
37
+ }));
38
+ this.display(() => {
39
+ if (page.data.length === 0) {
40
+ this.log('No extension configurations found.');
41
+ return;
42
+ }
43
+ this.log(formatExtensionConfigurationTable(page.data));
44
+ displayListPagination(this.log.bind(this), page);
45
+ });
46
+ return page;
47
+ }
48
+ }
49
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1,38 @@
1
+ import { Args } from '@oclif/core';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
+ import { openNavigationTarget } from '../../../lib/navigation-open.js';
4
+ import { resolveNavigationTarget } from '../../../lib/navigation.js';
5
+ import { assertSalesforceLifecycleId } from '../../../lib/pipeline-lifecycle-id.js';
6
+ export default class ExtensionConfigurationOpen extends CicdCommand {
7
+ static args = {
8
+ id: Args.string({
9
+ description: 'Extension configuration Salesforce ID',
10
+ required: true,
11
+ }),
12
+ };
13
+ static description = 'Open a Copado extension configuration in the browser';
14
+ static examples = [
15
+ '<%= config.bin %> <%= command.id %> <configuration-id>',
16
+ '<%= config.bin %> <%= command.id %> <configuration-id> --json',
17
+ ];
18
+ async run() {
19
+ const { args } = await this.parse(ExtensionConfigurationOpen);
20
+ let configurationId;
21
+ try {
22
+ configurationId = assertSalesforceLifecycleId(args.id, 'Extension configuration ID');
23
+ }
24
+ catch (error) {
25
+ this.error(error instanceof Error ? error.message : String(error), { exit: 2 });
26
+ }
27
+ const target = await this.withSpinner('Resolving navigation URL', () => resolveNavigationTarget({
28
+ id: configurationId,
29
+ resourceType: 'extension_configuration',
30
+ }));
31
+ await openNavigationTarget(target, {
32
+ jsonEnabled: this.jsonEnabled(),
33
+ log: this.log.bind(this),
34
+ });
35
+ return target;
36
+ }
37
+ }
38
+ //# sourceMappingURL=open.js.map
@@ -1,8 +1,8 @@
1
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
1
+ import { CicdCommand } from '../../../lib/cicd-command.js';
2
2
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
3
3
  import { buildFunctionDefaultsPayload, functionDefaultsFlags } from '../../../lib/function-flags.js';
4
4
  import { formatFunctionDetail, functionsEndpoint, normalizeFunction, } from '../../../lib/function-types.js';
5
- export default class FunctionDefaults extends AgentiaCommand {
5
+ export default class FunctionDefaults extends CicdCommand {
6
6
  static description = 'Scaffold default Copado Function metadata and script without writing to Salesforce';
7
7
  static examples = [
8
8
  '<%= config.bin %> <%= command.id %> --name MyFunction',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { functionEndpoint } from '../../../lib/function-types.js';
5
- export default class FunctionDelete extends AgentiaCommand {
5
+ export default class FunctionDelete extends CicdCommand {
6
6
  static args = {
7
7
  'api-name': Args.string({
8
8
  description: 'Function API name',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatFunctionDetail, functionEndpoint, normalizeFunction, } from '../../../lib/function-types.js';
5
- export default class FunctionGet extends AgentiaCommand {
5
+ export default class FunctionGet extends CicdCommand {
6
6
  static args = {
7
7
  'api-name': Args.string({
8
8
  description: 'Function API name',
@@ -1,9 +1,9 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatFunctionTable, FUNCTION_LIST_TYPES, functionsEndpoint, normalizeFunctionsListPage, } from '../../../lib/function-types.js';
5
5
  import { buildListPaginationQuery, displayListPagination, listPaginationFlags, } from '../../../lib/list-pagination.js';
6
- export default class FunctionList extends AgentiaCommand {
6
+ export default class FunctionList extends CicdCommand {
7
7
  static description = 'List Copado Functions';
8
8
  static examples = [
9
9
  '<%= config.bin %> <%= command.id %>',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { openNavigationTarget } from '../../../lib/navigation-open.js';
4
4
  import { resolveNavigationTarget } from '../../../lib/navigation.js';
5
- export default class FunctionOpen extends AgentiaCommand {
5
+ export default class FunctionOpen extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'Function ID',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
4
4
  import { formatFunctionResultStatus, functionResultEndpoint, normalizeFunctionResultStatus, } from '../../../../lib/function-types.js';
5
- export default class FunctionResultGet extends AgentiaCommand {
5
+ export default class FunctionResultGet extends CicdCommand {
6
6
  static args = {
7
7
  'result-id': Args.string({
8
8
  description: 'Function result Id',
@@ -1,8 +1,8 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../../../lib/cicd-gateway.js';
4
4
  import { functionResultLogEndpoint } from '../../../../../lib/function-types.js';
5
- export default class FunctionResultLogGet extends AgentiaCommand {
5
+ export default class FunctionResultLogGet extends CicdCommand {
6
6
  static args = {
7
7
  'result-id': Args.string({
8
8
  description: 'Function result Id',
@@ -1,8 +1,8 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { DEFAULT_FUNCTION_LOCAL_IMAGE, executeLocalFunctionRun, formatLocalFunctionRunResult, } from '../../../lib/function-local-run.js';
4
4
  import { FUNCTION_RUNTIMES } from '../../../lib/function-types.js';
5
- export default class FunctionRunLocal extends AgentiaCommand {
5
+ export default class FunctionRunLocal extends CicdCommand {
6
6
  static args = {
7
7
  script: Args.string({
8
8
  description: 'Path to the local function script (.sh, .js, or .py)',
@@ -1,9 +1,9 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { buildFunctionRunPayload, functionRunFlags } from '../../../lib/function-flags.js';
5
5
  import { formatFunctionRunResult, functionRunEndpoint, normalizeFunctionRunResult, } from '../../../lib/function-types.js';
6
- export default class FunctionRun extends AgentiaCommand {
6
+ export default class FunctionRun extends CicdCommand {
7
7
  static args = {
8
8
  'api-name': Args.string({
9
9
  description: 'Function API name',
@@ -1,9 +1,9 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { buildFunctionUpsertPayload, functionUpsertFlags } from '../../../lib/function-flags.js';
5
5
  import { formatFunctionDetail, functionEndpoint, normalizeFunction, } from '../../../lib/function-types.js';
6
- export default class FunctionUpsert extends AgentiaCommand {
6
+ export default class FunctionUpsert extends CicdCommand {
7
7
  static args = {
8
8
  'api-name': Args.string({
9
9
  description: 'Function API name',
@@ -1,5 +1,5 @@
1
1
  import { Flags, ux } from '@oclif/core';
2
- import { AgentiaCommand } from '../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../lib/cicd-command.js';
3
3
  import { table } from '../../lib/format.js';
4
4
  import { analyzeGitRepository, gitSizerRows } from '../../lib/git-sizer.js';
5
5
  import { runOrganizationHealthChecks, } from '../../lib/health-check.js';
@@ -20,7 +20,7 @@ function displayStatus(status) {
20
20
  }
21
21
  }
22
22
  }
23
- export default class HealthCheck extends AgentiaCommand {
23
+ export default class HealthCheck extends CicdCommand {
24
24
  static description = 'Run organization-scoped governance health checks';
25
25
  static examples = [
26
26
  '<%= config.bin %> <%= command.id %>',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { fetchJob } from '../../../lib/job-get.js';
4
4
  import { formatJobDetail } from '../../../lib/job-types.js';
5
- export default class JobGet extends AgentiaCommand {
5
+ export default class JobGet extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatJobOperationResult, jobKillEndpoint, normalizeJobOperation, } from '../../../lib/job-types.js';
5
- export default class JobKill extends AgentiaCommand {
5
+ export default class JobKill extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,10 +1,10 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { fetchJobs } from '../../../lib/job-get.js';
4
4
  import { formatJobTable } from '../../../lib/job-types.js';
5
5
  import { buildListPaginationQuery, displayListPagination, listPaginationFlags, } from '../../../lib/list-pagination.js';
6
6
  import { getUserContext } from '../../../lib/user-context.js';
7
- export default class JobList extends AgentiaCommand {
7
+ export default class JobList extends CicdCommand {
8
8
  static description = 'List Copado job executions';
9
9
  static examples = [
10
10
  '<%= config.bin %> <%= command.id %>',
@@ -1,8 +1,8 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
4
4
  import { jobEndpoint, jobResultLogEndpoint, normalizeJob, resolveJobStepForLog, } from '../../../../lib/job-types.js';
5
- export default class JobLogGet extends AgentiaCommand {
5
+ export default class JobLogGet extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { openNavigationTarget } from '../../../lib/navigation-open.js';
4
4
  import { resolveNavigationTarget } from '../../../lib/navigation.js';
5
- export default class JobOpen extends AgentiaCommand {
5
+ export default class JobOpen extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution ID',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatJobOperationResult, jobPauseEndpoint, normalizeJobOperation, } from '../../../lib/job-types.js';
5
- export default class JobPause extends AgentiaCommand {
5
+ export default class JobPause extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,9 +1,9 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { writeFileSync } from 'node:fs';
3
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
4
4
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
5
5
  import { decodeJobResultFileBase64, jobResultFileContentEndpoint, normalizeJobResultFileContent, } from '../../../../lib/job-types.js';
6
- export default class JobResultFileGet extends AgentiaCommand {
6
+ export default class JobResultFileGet extends CicdCommand {
7
7
  static args = {
8
8
  resultId: Args.string({
9
9
  description: 'Copado Result Id',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
4
4
  import { formatJobResultFileTable, jobResultFilesEndpoint, normalizeJobResultFiles, } from '../../../../lib/job-types.js';
5
- export default class JobResultFileList extends AgentiaCommand {
5
+ export default class JobResultFileList extends CicdCommand {
6
6
  static args = {
7
7
  resultId: Args.string({
8
8
  description: 'Copado Result Id',
@@ -1,8 +1,8 @@
1
1
  import { Args } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatJobOperationResult, jobResumeEndpoint, normalizeJobOperation, } from '../../../lib/job-types.js';
5
- export default class JobResume extends AgentiaCommand {
5
+ export default class JobResume extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,8 +1,8 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { formatJobOperationResult, jobRunEndpoint, normalizeJobOperation, } from '../../../lib/job-types.js';
5
- export default class JobRun extends AgentiaCommand {
5
+ export default class JobRun extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'JobExecution Id',
@@ -1,5 +1,5 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
4
4
  import { assertRequired, CONTENT_SOURCES, contentResultToCompareSide, createUnifiedDiff, sourceSideLabel, } from '../../../../lib/metadata-common.js';
5
5
  export function buildMetadataCompareFileRequests(flags) {
@@ -33,7 +33,7 @@ export function buildMetadataCompareFileRequests(flags) {
33
33
  }
34
34
  return { sourceRequest, targetRequest };
35
35
  }
36
- export default class MetadataCompareFile extends AgentiaCommand {
36
+ export default class MetadataCompareFile extends CicdCommand {
37
37
  static description = 'Compare metadata file content between two orgs or Git branches';
38
38
  static examples = [
39
39
  '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id> --target-org-id <id>',
@@ -1,6 +1,6 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { readFileSync, writeFileSync } from 'node:fs';
3
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
4
4
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
5
5
  import { assertRequired, CONTENT_SOURCES, decodeBase64, formatContentTable, normalizeContentRows, } from '../../../../lib/metadata-common.js';
6
6
  const FILE_EXCLUSIVE_FLAGS = [
@@ -58,8 +58,8 @@ export function buildMetadataContentRequests(flags) {
58
58
  }
59
59
  return [buildMetadataContentRequest(flags)];
60
60
  }
61
- export default class MetadataContent extends AgentiaCommand {
62
- static description = 'Retrieve metadata file content via the CICD gateway';
61
+ export default class MetadataContent extends CicdCommand {
62
+ static description = 'Retrieve metadata file content';
63
63
  static examples = [
64
64
  '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --pipeline-id <id> --source-org-id <id>',
65
65
  '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --show',
@@ -1,9 +1,10 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { readFileSync } from 'node:fs';
3
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
4
4
  import { assertRequired } from '../../../../lib/assert.js';
5
5
  import { CicdGateway } from '../../../../lib/cicd-gateway.js';
6
- import { resolvedSelectionsFromChangedFiles } from '../../../../lib/dependency-from-changes.js';
6
+ import { resolvedSelectionsFromChangedFiles, resolvedSelectionsFromPaths, } from '../../../../lib/dependency-from-changes.js';
7
+ import { resolveDependencySourceContext } from '../../../../lib/dependency-source-context.js';
7
8
  import { findLocalMetadataPaths } from '../../../../lib/local-metadata-paths.js';
8
9
  import { formatDependencyTable, MODULE_TYPES, normalizeDependencyItem, normalizeDependencySelection, parseJsonValue, PLATFORM_EXPERIENCES, RETRIEVE_MODES, } from '../../../../lib/metadata-common.js';
9
10
  function readStdin() {
@@ -75,17 +76,24 @@ function metadataSelectionFromFlags(flags) {
75
76
  }
76
77
  return normalizeDependencySelection(selection);
77
78
  }
78
- function requestFromSelections(flags, selections) {
79
+ async function requestFromSelections(flags, selections) {
80
+ const sourceContext = await resolveDependencySourceContext({
81
+ pipelineId: flags['pipeline-id'],
82
+ platformExperience: flags['platform-experience'],
83
+ sourceCredentialId: flags['source-credential-id'],
84
+ sourceOrgId: flags['source-org-id'],
85
+ targetOrgId: flags['target-org-id'],
86
+ });
79
87
  const body = {
80
88
  compareOptions: {
81
- sourceCredentialId: assertRequired(flags['source-credential-id'], '--source-credential-id'),
82
- sourceOrgId: assertRequired(flags['source-org-id'], '--source-org-id'),
89
+ sourceCredentialId: sourceContext.sourceCredentialId,
90
+ sourceOrgId: sourceContext.sourceOrgId,
83
91
  },
84
92
  metadataSelections: selections.map((selection) => normalizeDependencySelection(selection)),
85
- pipelineId: assertRequired(flags['pipeline-id'], '--pipeline-id'),
93
+ pipelineId: sourceContext.pipelineId,
86
94
  };
87
- if (flags['target-org-id']) {
88
- body.compareOptions.targetOrgId = flags['target-org-id'];
95
+ if (sourceContext.targetOrgId) {
96
+ body.compareOptions.targetOrgId = sourceContext.targetOrgId;
89
97
  }
90
98
  if (flags['retrieve-mode']) {
91
99
  body.compareOptions.retrieveMode = flags['retrieve-mode'];
@@ -98,13 +106,18 @@ function requestFromSelections(flags, selections) {
98
106
  }
99
107
  return {
100
108
  body,
101
- platformExperience: assertRequired(flags['platform-experience'], '--platform-experience'),
109
+ platformExperience: sourceContext.platformExperience,
102
110
  };
103
111
  }
104
112
  export async function buildDependencyRequest(flags) {
105
- const inputModes = [Boolean(flags.file), flags.stdin, flags['from-changes']].filter(Boolean).length;
113
+ const inputModes = [
114
+ Boolean(flags.file),
115
+ flags.stdin,
116
+ flags['from-changes'],
117
+ Boolean(flags.path?.length),
118
+ ].filter(Boolean).length;
106
119
  if (inputModes > 1) {
107
- throw new Error('Use only one input mode: --file, --stdin, or --from-changes.');
120
+ throw new Error('Use only one input mode: --file, --stdin, --from-changes, or --path.');
108
121
  }
109
122
  if (flags.file) {
110
123
  return dependencyRequestFromJson(readFileSync(flags.file, 'utf8'));
@@ -114,16 +127,22 @@ export async function buildDependencyRequest(flags) {
114
127
  }
115
128
  if (flags['from-changes']) {
116
129
  const resolvedSelections = await resolvedSelectionsFromChangedFiles(flags['base-ref'], flags['module-type']);
117
- const request = requestFromSelections(flags, resolvedSelections.map(({ selection }) => selection));
130
+ const request = await requestFromSelections(flags, resolvedSelections.map(({ selection }) => selection));
131
+ request.localPathsBySelection = new Map(resolvedSelections.map(({ localPaths, selection }) => [`${selection.type}:${selection.name}`, localPaths]));
132
+ return request;
133
+ }
134
+ if (flags.path?.length) {
135
+ const resolvedSelections = resolvedSelectionsFromPaths(flags.path, flags['module-type']);
136
+ const request = await requestFromSelections(flags, resolvedSelections.map(({ selection }) => selection));
118
137
  request.localPathsBySelection = new Map(resolvedSelections.map(({ localPaths, selection }) => [`${selection.type}:${selection.name}`, localPaths]));
119
138
  return request;
120
139
  }
121
140
  if (!flags['metadata-name'] || !flags['metadata-type']) {
122
- throw new Error('Requires `--metadata-name` and `--metadata-type`, or an input mode such as --file, --stdin, or --from-changes.');
141
+ throw new Error('Requires `--metadata-name` and `--metadata-type`, or an input mode such as --file, --stdin, --from-changes, or --path.');
123
142
  }
124
143
  return requestFromSelections(flags, [metadataSelectionFromFlags(flags)]);
125
144
  }
126
- async function enrichDependencyResult(result, localPathsBySelection, moduleType) {
145
+ export async function enrichDependencyResult(result, localPathsBySelection, moduleType) {
127
146
  if (!Array.isArray(result.dependencies)) {
128
147
  return result;
129
148
  }
@@ -198,12 +217,13 @@ async function enrichDependencyResult(result, localPathsBySelection, moduleType)
198
217
  }),
199
218
  };
200
219
  }
201
- export default class DependencyGet extends AgentiaCommand {
202
- static description = 'Retrieve metadata dependencies via the CICD gateway';
220
+ export default class DependencyGet extends CicdCommand {
221
+ static description = 'Retrieve metadata dependencies';
203
222
  static examples = [
204
223
  '<%= config.bin %> <%= command.id %> --metadata-name MyClass --metadata-type ApexClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id>',
205
224
  'cat request.json | <%= config.bin %> <%= command.id %> --stdin',
206
225
  '<%= config.bin %> <%= command.id %> --from-changes --base-ref origin/main --retrieve-mode all --pipeline-id <id> --source-org-id <id> --source-credential-id <id>',
226
+ '<%= config.bin %> <%= command.id %> --path force-app/main/default/classes/MyClass.cls --pipeline-id <id> --source-credential-id <id> --source-org-id <id> --target-org-id <id> --platform-experience sfdx --retrieve-mode all --json',
207
227
  ];
208
228
  static flags = {
209
229
  'base-ref': Flags.string({
@@ -234,12 +254,15 @@ export default class DependencyGet extends AgentiaCommand {
234
254
  description: 'Optional addon module type',
235
255
  options: [...MODULE_TYPES],
236
256
  }),
257
+ path: Flags.string({
258
+ description: 'Local Salesforce source file path to resolve into a metadata selection. Repeatable. Mutually exclusive with --file, --stdin, and --from-changes.',
259
+ multiple: true,
260
+ }),
237
261
  'pipeline-id': Flags.string({
238
- description: 'Pipeline Id',
262
+ description: 'Pipeline Id. Defaults to the active work item pipelineId, or the pipeline on the project default.',
239
263
  }),
240
264
  'platform-experience': Flags.string({
241
- default: 'salesforce',
242
- description: 'Gateway platform experience header',
265
+ description: 'Platform experience header. Defaults to the active work item platform, then sfdx.',
243
266
  options: [...PLATFORM_EXPERIENCES],
244
267
  }),
245
268
  'result-id': Flags.string({
@@ -250,17 +273,17 @@ export default class DependencyGet extends AgentiaCommand {
250
273
  options: [...RETRIEVE_MODES],
251
274
  }),
252
275
  'source-credential-id': Flags.string({
253
- description: 'Source org credential Id',
276
+ description: 'Source org credential Id. Defaults to the active work item source credential, or the project default credential.',
254
277
  }),
255
278
  'source-org-id': Flags.string({
256
- description: 'Source org Id',
279
+ description: 'Source org Id. Defaults to the active work item sourceOrgId, or orgId from the resolved source credential/environment.',
257
280
  }),
258
281
  stdin: Flags.boolean({
259
282
  default: false,
260
283
  description: 'Read a JSON dependency request body from stdin',
261
284
  }),
262
285
  'target-org-id': Flags.string({
263
- description: 'Target org Id',
286
+ description: 'Target org Id. Not inferred from work item or project defaults.',
264
287
  }),
265
288
  };
266
289
  async run() {
@@ -0,0 +1,81 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
+ import { AI_METADATA_ACTIONS, buildAiMetadataToolRequest, callAiMetadataTool, } from '../../../lib/metadata-explore.js';
4
+ export default class MetadataExplore extends CicdCommand {
5
+ static description = [
6
+ 'Explore Salesforce metadata through Org Intelligence.',
7
+ 'Uses the project default credential when --credential-id is omitted;',
8
+ 'otherwise pass --credential-id, or both --session-id and --endpoint.',
9
+ ].join(' ');
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %> --action list --object-type ApexClass',
12
+ "<%= config.bin %> <%= command.id %> --action list --object-type ApexClass --pattern 'Account*'",
13
+ '<%= config.bin %> <%= command.id %> --action read --object-type ApexClass --full-name MyClass',
14
+ '<%= config.bin %> <%= command.id %> --action find_references --object-type ApexClass --full-name MyClass',
15
+ "<%= config.bin %> <%= command.id %> --action search --pattern 'Cont*' --credential-id <id>",
16
+ '<%= config.bin %> <%= command.id %> --action describe_type --object-type CustomObject --json',
17
+ ];
18
+ static experimental = true;
19
+ static flags = {
20
+ action: Flags.string({
21
+ description: 'Metadata action: list, search, read_documentation, describe_type, read, find_references, run_apex_tests',
22
+ options: [...AI_METADATA_ACTIONS],
23
+ required: true,
24
+ }),
25
+ 'apex-unit-tests': Flags.string({
26
+ description: 'Comma-separated Apex test classes. Required for run_apex_tests.',
27
+ }),
28
+ // Deferred write/deploy flags (re-add with matching AI_METADATA_ACTIONS when shipping mutate):
29
+ // 'async-id': Flags.string({
30
+ // description: 'Deployment Id from a previous validate/deploy for deploy_validated or check_async_id',
31
+ // }),
32
+ 'credential-id': Flags.string({
33
+ description: 'Copado credential Id for the target org. Defaults to the CICD project default credential when set.',
34
+ }),
35
+ endpoint: Flags.string({
36
+ description: 'Salesforce instance URL (with --session-id) when not using a credential. Exclusive with --credential-id.',
37
+ }),
38
+ 'full-name': Flags.string({
39
+ description: 'Fully qualified metadata name (required for read; list results emit this as fullName)',
40
+ }),
41
+ // 'metadata-files': Flags.string({
42
+ // description:
43
+ // 'YAML/XML Metadata API files for validate (with --full-name). Each file starts with ~~~~~~~~~~ <pathname> <type> <name> ~~~~~~~~~',
44
+ // }),
45
+ 'object-type': Flags.string({
46
+ description: 'Metadata type, for example ApexClass, CustomObject, or Flow',
47
+ }),
48
+ // 'organization-name': Flags.string({
49
+ // description: 'Optional label for logging; not used to select the target org',
50
+ // }),
51
+ pattern: Flags.string({
52
+ default: '*',
53
+ description: 'Wildcard pattern for list/search (name without namespace), for example Account* or *Info',
54
+ }),
55
+ 'session-id': Flags.string({
56
+ description: 'Salesforce session Id (with --endpoint) when not using a credential. Exclusive with --credential-id.',
57
+ }),
58
+ // 'test-level': Flags.string({
59
+ // description:
60
+ // 'Salesforce test level for validate/deploy (NoTestRun, RunSpecifiedTests, RunLocalTests). Defaults from --apex-unit-tests when omitted.',
61
+ // }),
62
+ // 'validate-only': Flags.boolean({
63
+ // default: false,
64
+ // description: 'When true, write-style actions validate without deploying',
65
+ // }),
66
+ };
67
+ async run() {
68
+ const { flags } = await this.parse(MetadataExplore);
69
+ const body = await buildAiMetadataToolRequest(flags);
70
+ const output = await this.withSpinner('Running AI metadata tool', () => callAiMetadataTool(body));
71
+ const result = {
72
+ output,
73
+ ...(body.credentialId === undefined ? {} : { credentialId: body.credentialId }),
74
+ };
75
+ this.display(() => {
76
+ process.stdout.write(output.endsWith('\n') ? output : `${output}\n`);
77
+ });
78
+ return result;
79
+ }
80
+ }
81
+ //# sourceMappingURL=explore.js.map