@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
@@ -3,11 +3,11 @@ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
3
  import { aiConnectionFlags, aiGatewayCallOptions } from '../../../lib/ai-flags.js';
4
4
  import { runAiAsk } from '../../../lib/ai-operations.js';
5
5
  import { formatAiTerminalMessage, renderMarkdown, StreamingMarkdownRenderer, streamSupportsColor, } from '../../../lib/ai-terminal-renderer.js';
6
- import { AI_ASK_AGENTS } from '../../../lib/ai-types.js';
6
+ import { AI_ASK_AGENTS, AI_DEFAULT_AGENT } from '../../../lib/ai-types.js';
7
7
  export default class AiAgentAsk extends AgentiaCommand {
8
8
  static description = 'Send a single-turn prompt to a Copado AI agent';
9
9
  static examples = [
10
- '<%= config.bin %> <%= command.id %> -p "Summarize our deployment guidance"',
10
+ '<%= config.bin %> <%= command.id %> -p "Why did the last promotion fail?"',
11
11
  '<%= config.bin %> <%= command.id %> --agent plan -p "Break this requirement into implementation steps"',
12
12
  '<%= config.bin %> <%= command.id %> --agent build -p "Generate an Apex handler outline" --sf-org test14 --user-story US-1042',
13
13
  '<%= config.bin %> <%= command.id %> --agent test -p "Create regression checks" --component LeadScoringHandler --json',
@@ -16,8 +16,8 @@ export default class AiAgentAsk extends AgentiaCommand {
16
16
  ];
17
17
  static flags = {
18
18
  agent: Flags.option({
19
- default: 'knowledge',
20
- description: 'AI agent to target (defaults to knowledge)',
19
+ default: AI_DEFAULT_AGENT,
20
+ description: 'AI agent to target (defaults to orchestrate, which routes to the right specialist)',
21
21
  options: [...AI_ASK_AGENTS],
22
22
  })(),
23
23
  component: Flags.string({
@@ -3,7 +3,7 @@ import { stdin as input } from 'node:process';
3
3
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
4
4
  import { runAiChatSession } from '../../../lib/ai-chat-session.js';
5
5
  import { aiConnectionFlags, aiGatewayCallOptions } from '../../../lib/ai-flags.js';
6
- import { AI_CHAT_AGENTS } from '../../../lib/ai-types.js';
6
+ import { AI_CHAT_AGENTS, AI_DEFAULT_AGENT } from '../../../lib/ai-types.js';
7
7
  export default class AiAgentChat extends AgentiaCommand {
8
8
  static description = 'Start an interactive Copado AI agent chat session';
9
9
  static enableJsonFlag = false;
@@ -12,12 +12,12 @@ export default class AiAgentChat extends AgentiaCommand {
12
12
  '<%= config.bin %> <%= command.id %> --agent plan --sf-org test14',
13
13
  '<%= config.bin %> <%= command.id %> --agent build --user-story US-1042 --timeout 240',
14
14
  '<%= config.bin %> <%= command.id %> --agent knowledge',
15
- '<%= config.bin %> <%= command.id %> --agent orchestrate --workspace 42d0b908-37b7-4565-9ec9-86eda40c9782',
15
+ '<%= config.bin %> <%= command.id %> --workspace 42d0b908-37b7-4565-9ec9-86eda40c9782',
16
16
  ];
17
17
  static flags = {
18
18
  agent: Flags.option({
19
- default: 'knowledge',
20
- description: 'AI agent to target (defaults to knowledge)',
19
+ default: AI_DEFAULT_AGENT,
20
+ description: 'AI agent to target (defaults to orchestrate, which routes to the right specialist)',
21
21
  options: [...AI_CHAT_AGENTS],
22
22
  })(),
23
23
  component: Flags.string({
@@ -15,6 +15,7 @@ export default class AuthGet extends AgentiaCommand {
15
15
  '<%= config.bin %> <%= command.id %> --cicd',
16
16
  '<%= config.bin %> <%= command.id %> --crt',
17
17
  '<%= config.bin %> <%= command.id %> --cicd --crt',
18
+ '<%= config.bin %> <%= command.id %> --cicd --json',
18
19
  '<%= config.bin %> <%= command.id %> --json',
19
20
  ];
20
21
  static flags = {
@@ -48,6 +49,10 @@ export default class AuthGet extends AgentiaCommand {
48
49
  }
49
50
  const selectedTypes = types.length > 0 ? types : ALL_CREDENTIAL_TYPES;
50
51
  const credentials = selectedTypes.map((type) => this.buildCredentialResult(type));
52
+ const { listCicdNamedConnections, summarizeCicdNamedConnection } = await import('../../lib/cicd-connection.js');
53
+ const cicdConnections = selectedTypes.includes('cicd')
54
+ ? listCicdNamedConnections().map((connection) => summarizeCicdNamedConnection(connection))
55
+ : undefined;
51
56
  this.display(() => {
52
57
  for (const type of ['cicd', 'ai', 'crt', 'adv']) {
53
58
  if (!selectedTypes.includes(type))
@@ -60,10 +65,25 @@ export default class AuthGet extends AgentiaCommand {
60
65
  this.log('');
61
66
  this.log(this.formatCredentialLine(this.buildCredentialResult(type, scope)));
62
67
  }
68
+ if (type === 'cicd' && cicdConnections !== undefined && cicdConnections.length > 0) {
69
+ this.log('');
70
+ this.log(ux.colorize('cyan', 'Named CICD connections'));
71
+ for (const connection of cicdConnections) {
72
+ const kind = connection.kind === undefined ? '' : ` [${connection.kind}]`;
73
+ const key = connection.set ? connection.masked : '(missing key)';
74
+ this.log(`Connection: ${connection.name}${kind}`);
75
+ this.log(`API Key: ${key}`);
76
+ this.log(`Server URL: ${connection.baseUrl}`);
77
+ }
78
+ }
63
79
  }
64
80
  });
65
81
  const configFiles = this.buildConfigFileResults();
66
- return { configFiles, credentials };
82
+ return {
83
+ ...(cicdConnections === undefined ? {} : { cicdConnections }),
84
+ configFiles,
85
+ credentials,
86
+ };
67
87
  }
68
88
  buildCicdCredentialResult(scope) {
69
89
  const status = getCicdAuthStatus(scope);
@@ -15,6 +15,7 @@ export default class AuthSet extends AgentiaCommand {
15
15
  '<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --region na',
16
16
  '<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --custom-url https://dev.api.copado.com',
17
17
  '<%= config.bin %> <%= command.id %> --cicd <copado-api-key>',
18
+ '<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --custom-url https://test.api.copado.com --connection sandbox --kind sandbox',
18
19
  '<%= config.bin %> <%= command.id %> --crt <pak> --crt-org <crt-org-id>',
19
20
  '<%= config.bin %> <%= command.id %> --crt <pak> --crt-domain robotic.copado.com --crt-org <crt-org-id>',
20
21
  '<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --region na --crt <pak>',
@@ -43,6 +44,9 @@ export default class AuthSet extends AgentiaCommand {
43
44
  cicd: Flags.string({
44
45
  description: 'Copado API key for CICD authentication',
45
46
  }),
47
+ connection: Flags.string({
48
+ description: 'Store a named CICD connection (keychain + config) without changing the active/default connection. Use with --cicd-connection on cicd commands.',
49
+ }),
46
50
  crt: Flags.string({ description: 'PAK for CRT authentication (requires --crt-org)' }),
47
51
  'crt-domain': Flags.string({
48
52
  description: 'CRT domain hostname for robotic testing commands',
@@ -53,6 +57,10 @@ export default class AuthSet extends AgentiaCommand {
53
57
  'custom-url': Flags.string({
54
58
  description: 'CICD gateway base URL used instead of regional mapping',
55
59
  }),
60
+ kind: Flags.option({
61
+ description: 'Tag a named CICD connection as sandbox or production (requires --connection)',
62
+ options: ['sandbox', 'production'],
63
+ })(),
56
64
  local: Flags.boolean({
57
65
  default: false,
58
66
  description: 'Store authentication for the current project and user.',
@@ -75,10 +83,12 @@ export default class AuthSet extends AgentiaCommand {
75
83
  aiOrg: flags['ai-org'],
76
84
  aiWorkspace: flags['ai-workspace'],
77
85
  cicd: flags.cicd,
86
+ connection: flags.connection,
78
87
  crt: flags.crt,
79
88
  crtDomain: flags['crt-domain'],
80
89
  crtOrg: flags['crt-org'],
81
90
  customUrl: flags['custom-url'],
91
+ kind: flags.kind,
82
92
  region: flags.region,
83
93
  scope: flags.local ? 'local' : 'global',
84
94
  }));
@@ -92,6 +102,9 @@ export default class AuthSet extends AgentiaCommand {
92
102
  for (const { label } of result.stored) {
93
103
  this.log(`Stored ${label}.`);
94
104
  }
105
+ if (result.connection !== undefined) {
106
+ this.log(`Stored named CICD connection "${result.connection}"${result.connectionKind === undefined ? '' : ` (${result.connectionKind})`}.`);
107
+ }
95
108
  if (result.baseUrl !== undefined) {
96
109
  this.log(`Stored CICD endpoint: ${result.baseUrl}.`);
97
110
  }
@@ -11,6 +11,7 @@ export default class AuthUnset extends AgentiaCommand {
11
11
  '<%= config.bin %> <%= command.id %> --adv',
12
12
  '<%= config.bin %> <%= command.id %> --cicd',
13
13
  '<%= config.bin %> <%= command.id %> --crt',
14
+ '<%= config.bin %> <%= command.id %> --connection sandbox --yes',
14
15
  '<%= config.bin %> <%= command.id %> --cicd --crt --yes',
15
16
  '<%= config.bin %> <%= command.id %> --json --yes',
16
17
  ];
@@ -24,6 +25,9 @@ export default class AuthUnset extends AgentiaCommand {
24
25
  cicd: Flags.boolean({
25
26
  description: 'Remove Copado API key and CICD endpoint configuration',
26
27
  }),
28
+ connection: Flags.string({
29
+ description: 'Remove a named CICD connection (does not remove the active/default CICD auth)',
30
+ }),
27
31
  crt: Flags.boolean({
28
32
  description: 'Remove CRT PAK, domain, and organization configuration',
29
33
  }),
@@ -46,6 +50,39 @@ export default class AuthUnset extends AgentiaCommand {
46
50
  if (flags.local && flags.global) {
47
51
  this.error('Use either --local or --global, not both.', { exit: 2 });
48
52
  }
53
+ if (flags.connection !== undefined) {
54
+ if (flags.local || flags.global || flags.cicd || flags.crt || flags.ai || flags.adv) {
55
+ this.error('Use --connection alone (optionally with --yes).', { exit: 2 });
56
+ }
57
+ const { deleteCicdNamedConnection } = await import('../../lib/cicd-connection.js');
58
+ const requiresExplicitYes = (this.jsonEnabled() || !input.isTTY) && !hasAuthUnsetTestConfirm();
59
+ if (requiresExplicitYes && !flags.yes) {
60
+ this.error('Refusing to unset credentials without confirmation. Re-run with --yes.', { exit: 2 });
61
+ }
62
+ if (!flags.yes) {
63
+ const { confirm } = await import('@inquirer/prompts');
64
+ const accepted = await confirm({
65
+ default: false,
66
+ message: `Remove named CICD connection "${flags.connection}"?`,
67
+ });
68
+ if (!accepted) {
69
+ this.log('Auth unset cancelled. No credentials were removed.');
70
+ return { cancelled: true, removed: [] };
71
+ }
72
+ }
73
+ const removed = await deleteCicdNamedConnection(flags.connection);
74
+ if (removed) {
75
+ this.log(`Removed named CICD connection "${flags.connection}".`);
76
+ }
77
+ else {
78
+ this.log(`Named CICD connection "${flags.connection}" was not configured.`);
79
+ }
80
+ return {
81
+ removed: removed
82
+ ? [{ label: `CICD connection "${flags.connection}"`, removed: true, type: 'cicd' }]
83
+ : [],
84
+ };
85
+ }
49
86
  const types = resolveAuthUnsetTypes(flags);
50
87
  const requiresExplicitYes = (this.jsonEnabled() || !input.isTTY) && !hasAuthUnsetTestConfirm();
51
88
  if (requiresExplicitYes && !flags.yes) {
@@ -1,6 +1,6 @@
1
1
  import { Args, 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 { resolveWorkItemId, WorkActiveResolutionError } from '../../../lib/work-active.js';
5
5
  import { buildWorkCommitRequest, formatWorkCommitResult, normalizeWorkCommitInput, performWorkCommit, resolveWorkCommitPlatformExperience, WORK_COMMIT_ACTIONS, WORK_COMMIT_DEFAULT_TIMEOUT_SECONDS, WORK_COMMIT_METADATA_CATEGORY_HELP, WorkCommitJobFailedError, WorkCommitTimeoutError, WorkCommitValidationError, } from '../../../lib/work-commit.js';
6
6
  function readStdin() {
@@ -97,7 +97,7 @@ async function commitInputFromFlags(flags) {
97
97
  }
98
98
  return simpleInputFromFlags(flags);
99
99
  }
100
- export default class CloudCommit extends AgentiaCommand {
100
+ export default class CloudCommit extends CicdCommand {
101
101
  static args = {
102
102
  id: Args.string({
103
103
  description: 'User story ID (defaults to the active work item from `work set`)',
@@ -1,9 +1,10 @@
1
1
  import { confirm } from '@inquirer/prompts';
2
2
  import { Args, Flags } from '@oclif/core';
3
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
4
- import { formatPromotionRunResult, isPromotionRunExecutionError, parseIgnoredMetadataJson, performPromotionRun, PROMOTION_RUN_DEFAULT_TIMEOUT_SECONDS, promotionRunErrorJson, PromotionRunValidationError, resolvePromotionIdForWorkItem, } from '../../../lib/promotion-run.js';
3
+ import { CicdCommand } from '../../../lib/cicd-command.js';
4
+ import { formatPromotionRunResult, isPromotionRunExecutionError, NoPromotionForUserStoryError, parseIgnoredMetadataJson, performPromotionRun, PROMOTION_RUN_DEFAULT_TIMEOUT_SECONDS, promotionRunErrorJson, PromotionRunValidationError, resolvePromotionIdForWorkItem, } from '../../../lib/promotion-run.js';
5
5
  import { resolveWorkItemId, WorkActiveResolutionError } from '../../../lib/work-active.js';
6
- export default class CloudPromote extends AgentiaCommand {
6
+ import { createForwardPromotionForUserStory, WorkPromoteValidationError } from '../../../lib/work-promote.js';
7
+ export default class CloudPromote extends CicdCommand {
7
8
  static args = {
8
9
  id: Args.string({
9
10
  description: 'User Story ID (defaults to the active work item from `work set`)',
@@ -12,6 +13,7 @@ export default class CloudPromote extends AgentiaCommand {
12
13
  };
13
14
  static description = [
14
15
  'Promote the explicit or active User Story through its Copado Promotion.',
16
+ 'When no promotion contains the story, creates a forward Draft promotion, adds the story, then runs it.',
15
17
  'Selects promote-only unless --deploy is passed.',
16
18
  ].join(' ');
17
19
  static examples = [
@@ -80,7 +82,19 @@ export default class CloudPromote extends AgentiaCommand {
80
82
  throw error;
81
83
  }
82
84
  try {
83
- const promotionId = await this.withSpinner('Resolving User Story promotion', () => resolvePromotionIdForWorkItem(workItemId, promoteFlags['promotion-id']));
85
+ const promotionId = await this.withSpinner('Resolving User Story promotion', async () => {
86
+ try {
87
+ return await resolvePromotionIdForWorkItem(workItemId, promoteFlags['promotion-id']);
88
+ }
89
+ catch (error) {
90
+ if (!(error instanceof NoPromotionForUserStoryError)) {
91
+ throw error;
92
+ }
93
+ const created = await createForwardPromotionForUserStory(workItemId);
94
+ this.display(() => this.log(`Created promotion ${created.name ?? created.id} for ${workItemId}.`));
95
+ return created.id;
96
+ }
97
+ });
84
98
  if (promoteFlags['recreate-promotion-branch'] === true && !promoteFlags.yes) {
85
99
  if (this.jsonEnabled() || !process.stdin.isTTY) {
86
100
  this.error('Promotion branch recreation requires confirmation. Pass --yes for headless or JSON execution.', {
@@ -116,7 +130,7 @@ export default class CloudPromote extends AgentiaCommand {
116
130
  return workResult;
117
131
  }
118
132
  catch (error) {
119
- if (error instanceof PromotionRunValidationError) {
133
+ if (error instanceof PromotionRunValidationError || error instanceof WorkPromoteValidationError) {
120
134
  this.error(error.message, { exit: 2 });
121
135
  }
122
136
  if (isPromotionRunExecutionError(error)) {
@@ -0,0 +1,38 @@
1
+ import { Args, ux } from '@oclif/core';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
+ import { runCredentialAuthStatus, } from '../../../../lib/environment-auth-status.js';
4
+ import { EnvironmentCredentialInputError } from '../../../../lib/environment-credential-flags.js';
5
+ import { formatEnvironmentAuthStatus } from '../../../../lib/environment-types.js';
6
+ export default class CredentialAuthStatus extends CicdCommand {
7
+ static args = {
8
+ id: Args.string({
9
+ description: 'Copado credential ID',
10
+ name: 'id',
11
+ required: true,
12
+ }),
13
+ };
14
+ static description = 'Validate the authentication status of a credential by ID';
15
+ static examples = [
16
+ '<%= config.bin %> <%= command.id %> <credential-id>',
17
+ '<%= config.bin %> <%= command.id %> <credential-id> --json',
18
+ ];
19
+ async run() {
20
+ const { args } = await this.parse(CredentialAuthStatus);
21
+ try {
22
+ const result = await this.withSpinner('Validating credential', () => runCredentialAuthStatus({
23
+ credentialId: args.id,
24
+ }));
25
+ this.display(() => {
26
+ this.log(formatEnvironmentAuthStatus(result, { colorize: ux.colorize }));
27
+ });
28
+ return result;
29
+ }
30
+ catch (error) {
31
+ if (error instanceof EnvironmentCredentialInputError) {
32
+ this.error(error.message, { exit: error.exitCode });
33
+ }
34
+ throw error;
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1,54 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { CicdCommand } from '../../../../../lib/cicd-command.js';
3
+ import { DEFAULT_AUTH_TIMEOUT_SECONDS, runCredentialWebLogin, } from '../../../../../lib/environment-auth.js';
4
+ import { EnvironmentCredentialInputError } from '../../../../../lib/environment-credential-flags.js';
5
+ export default class CredentialAuthWebLogin extends CicdCommand {
6
+ static args = {
7
+ id: Args.string({
8
+ description: 'Copado credential ID',
9
+ name: 'id',
10
+ required: true,
11
+ }),
12
+ };
13
+ static description = 'Authenticate a credential via browser web login';
14
+ static examples = [
15
+ '<%= config.bin %> <%= command.id %> <credential-id>',
16
+ '<%= config.bin %> <%= command.id %> <credential-id> --port 8085 --timeout 120',
17
+ '<%= config.bin %> <%= command.id %> <credential-id> --json',
18
+ ];
19
+ static flags = {
20
+ port: Flags.integer({
21
+ description: 'Local loopback port (default: scan 8080-8090)',
22
+ }),
23
+ timeout: Flags.integer({
24
+ default: DEFAULT_AUTH_TIMEOUT_SECONDS,
25
+ description: 'Max seconds to wait for browser login',
26
+ }),
27
+ };
28
+ async run() {
29
+ const { args, flags } = await this.parse(CredentialAuthWebLogin);
30
+ try {
31
+ const result = await this.withSpinner('Authenticating credential', () => runCredentialWebLogin({
32
+ credentialId: args.id,
33
+ port: flags.port,
34
+ quiet: this.jsonEnabled(),
35
+ timeoutSeconds: flags.timeout,
36
+ }));
37
+ this.display(() => {
38
+ this.log(`Authenticated credential "${result.credentialName}" for environment ${result.environmentId}.`);
39
+ });
40
+ return result;
41
+ }
42
+ catch (error) {
43
+ if (error instanceof EnvironmentCredentialInputError) {
44
+ this.error(error.message, { exit: error.exitCode });
45
+ }
46
+ const { exitCode } = error;
47
+ if (exitCode !== undefined) {
48
+ this.error(error.message, { exit: exitCode });
49
+ }
50
+ throw error;
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=login.js.map
@@ -1,7 +1,7 @@
1
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
1
+ import { CicdCommand } from '../../../lib/cicd-command.js';
2
2
  import { credentialCreateFlags, EnvironmentCredentialInputError, validateCredentialName, } from '../../../lib/environment-credential-flags.js';
3
3
  import { createEnvironmentCredential, resolveEnvironmentOrgType, } from '../../../lib/environment-credential-operations.js';
4
- export default class CredentialCreate extends AgentiaCommand {
4
+ export default class CredentialCreate extends CicdCommand {
5
5
  static description = 'Create a Copado environment credential';
6
6
  static examples = [
7
7
  '<%= config.bin %> <%= command.id %> --environmentid <environment-id> --name "CI User"',
@@ -1,8 +1,8 @@
1
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
- import { credentialListFlags } from '../../../lib/environment-credential-flags.js';
3
- import { listEnvironmentCredentials, sanitizeCredentialListItem, } from '../../../lib/environment-credential-operations.js';
1
+ import { CicdCommand } from '../../../lib/cicd-command.js';
2
+ import { buildCredentialListFilters, credentialListFlags } from '../../../lib/environment-credential-flags.js';
3
+ import { listCredentials } from '../../../lib/environment-credential-operations.js';
4
4
  import { cellValue, table } from '../../../lib/format.js';
5
- export const CREDENTIAL_TABLE_DISPLAY_LIMIT = 100;
5
+ import { displayListPagination } from '../../../lib/list-pagination.js';
6
6
  export function formatCredentialTable(credentials) {
7
7
  const header = [
8
8
  { alias: 'ID', value: 'id' },
@@ -28,31 +28,27 @@ export function formatCredentialTable(credentials) {
28
28
  }));
29
29
  return table(header, rows);
30
30
  }
31
- export default class CredentialList extends AgentiaCommand {
32
- static description = 'List credentials for a Copado environment';
31
+ export default class CredentialList extends CicdCommand {
32
+ static description = 'List Copado credentials across environments';
33
33
  static examples = [
34
- '<%= config.bin %> <%= command.id %> --environmentid <environment-id>',
35
- '<%= config.bin %> <%= command.id %> --environmentid "Dev Sandbox"',
36
- '<%= config.bin %> <%= command.id %> --environmentid <environment-id> --json',
34
+ '<%= config.bin %> <%= command.id %>',
35
+ '<%= config.bin %> <%= command.id %> --name CI',
36
+ '<%= config.bin %> <%= command.id %> --page-size 50',
37
+ '<%= config.bin %> <%= command.id %> --cursor NEXT --json',
37
38
  ];
38
39
  static flags = credentialListFlags;
39
40
  async run() {
40
41
  const { flags } = await this.parse(CredentialList);
41
- const response = await this.withSpinner('Fetching environment credentials', () => listEnvironmentCredentials(flags.environmentid));
42
- const credentials = response.map((credential) => sanitizeCredentialListItem(credential));
42
+ const page = await this.withSpinner('Fetching credentials', () => listCredentials(buildCredentialListFilters(flags)));
43
43
  this.display(() => {
44
- if (credentials.length === 0) {
44
+ if (page.data.length === 0) {
45
45
  this.log('No credentials found.');
46
46
  return;
47
47
  }
48
- const truncated = credentials.length > CREDENTIAL_TABLE_DISPLAY_LIMIT;
49
- const displayedCredentials = truncated ? credentials.slice(0, CREDENTIAL_TABLE_DISPLAY_LIMIT) : credentials;
50
- if (truncated) {
51
- this.log(`Showing first ${CREDENTIAL_TABLE_DISPLAY_LIMIT} of ${credentials.length} credentials.`);
52
- }
53
- this.log(formatCredentialTable(displayedCredentials));
48
+ this.log(formatCredentialTable(page.data));
49
+ displayListPagination(this.log.bind(this), page);
54
50
  });
55
- return credentials;
51
+ return page;
56
52
  }
57
53
  }
58
54
  //# sourceMappingURL=list.js.map
@@ -0,0 +1,30 @@
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
+ export default class CredentialOpen extends CicdCommand {
6
+ static args = {
7
+ id: Args.string({
8
+ description: 'Copado credential ID',
9
+ required: true,
10
+ }),
11
+ };
12
+ static description = 'Open a Copado credential in the browser';
13
+ static examples = [
14
+ '<%= config.bin %> <%= command.id %> <credential-id>',
15
+ '<%= config.bin %> <%= command.id %> <credential-id> --json',
16
+ ];
17
+ async run() {
18
+ const { args } = await this.parse(CredentialOpen);
19
+ const target = await this.withSpinner('Resolving navigation URL', () => resolveNavigationTarget({
20
+ id: args.id,
21
+ resourceType: 'credential',
22
+ }));
23
+ await openNavigationTarget(target, {
24
+ jsonEnabled: this.jsonEnabled(),
25
+ log: this.log.bind(this),
26
+ });
27
+ return target;
28
+ }
29
+ }
30
+ //# sourceMappingURL=open.js.map
@@ -1,19 +1,19 @@
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 { collectCredentialUpdateFlagKeys, credentialUpdateFlags, EnvironmentCredentialInputError, validateCredentialName, } from '../../../lib/environment-credential-flags.js';
4
- import { resolveEnvironmentOrgType, updateEnvironmentCredential, } from '../../../lib/environment-credential-operations.js';
5
- export default class CredentialUpdate extends AgentiaCommand {
4
+ import { sanitizeCredentialListItem, updateCredentialById, } from '../../../lib/environment-credential-operations.js';
5
+ export default class CredentialUpdate extends CicdCommand {
6
6
  static args = {
7
7
  id: Args.string({
8
8
  description: 'Copado credential ID',
9
9
  required: true,
10
10
  }),
11
11
  };
12
- static description = 'Update a Copado environment credential by ID';
12
+ static description = 'Update a Copado credential by ID';
13
13
  static examples = [
14
- '<%= config.bin %> <%= command.id %> <credential-id> --environmentid <environment-id> --name "CI User"',
15
- '<%= config.bin %> <%= command.id %> <credential-id> --environmentid <environment-id> --default',
16
- '<%= config.bin %> <%= command.id %> <credential-id> --environmentid <environment-id> --no-default --json',
14
+ '<%= config.bin %> <%= command.id %> <credential-id> --name "CI User"',
15
+ '<%= config.bin %> <%= command.id %> <credential-id> --default',
16
+ '<%= config.bin %> <%= command.id %> <credential-id> --no-default --json',
17
17
  ];
18
18
  static flags = credentialUpdateFlags;
19
19
  async run() {
@@ -23,8 +23,8 @@ export default class CredentialUpdate extends AgentiaCommand {
23
23
  this.error('Must provide at least one flag to update.', {
24
24
  exit: 2,
25
25
  suggestions: [
26
- `${this.config.bin} cicd credential update ${args.id} --environmentid ${flags.environmentid} --name <name>`,
27
- `${this.config.bin} cicd credential update ${args.id} --environmentid ${flags.environmentid} --default`,
26
+ `${this.config.bin} cicd credential update ${args.id} --name <name>`,
27
+ `${this.config.bin} cicd credential update ${args.id} --default`,
28
28
  ],
29
29
  });
30
30
  }
@@ -33,14 +33,11 @@ export default class CredentialUpdate extends AgentiaCommand {
33
33
  this.error(nameError, { exit: 2 });
34
34
  }
35
35
  try {
36
- const orgType = await this.withSpinner('Fetching environment', () => resolveEnvironmentOrgType(flags.environmentid));
37
- const credential = await this.withSpinner('Updating credential', () => updateEnvironmentCredential({
36
+ const credential = sanitizeCredentialListItem((await this.withSpinner('Updating credential', () => updateCredentialById({
38
37
  credentialId: args.id,
39
38
  defaultCredential: flags.default,
40
- environmentId: flags.environmentid,
41
39
  name: flags.name,
42
- orgType,
43
- }));
40
+ }))));
44
41
  this.display(() => {
45
42
  this.log(`Updated credential ${credential.name ?? flags.name ?? args.id} (ID: ${credential.id ?? args.id}).`);
46
43
  });
@@ -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 { assertJsonObject, jsonBodyFlags, readJsonBodyFromFileOrStdin, } from '../../../../lib/data-flags.js';
4
4
  import { dataTemplatesCommitEndpoint, } from '../../../../lib/data-types.js';
5
- export default class DataCommitCreate extends AgentiaCommand {
5
+ export default class DataCommitCreate extends CicdCommand {
6
6
  static description = 'Create a data commit for a user story';
7
7
  static examples = [
8
8
  '<%= config.bin %> <%= command.id %> --file commit.json',
@@ -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 { formatUserStoryDataCommitTable, userStoryDataCommitsEndpoint, } from '../../../../lib/data-types.js';
5
- export default class DataCommitList extends AgentiaCommand {
5
+ export default class DataCommitList extends CicdCommand {
6
6
  static args = {
7
7
  userStoryId: Args.string({
8
8
  description: 'User story Id',
@@ -1,5 +1,5 @@
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 { datasetFileContentEndpoint, } from '../../../../lib/data-types.js';
5
5
  const BASE64_DISPLAY_LIMIT = 120;
@@ -9,7 +9,7 @@ function truncateBase64(value) {
9
9
  }
10
10
  return `${value.slice(0, BASE64_DISPLAY_LIMIT)}… (${value.length} chars)`;
11
11
  }
12
- export default class DataDatasetFileContent extends AgentiaCommand {
12
+ export default class DataDatasetFileContent extends CicdCommand {
13
13
  static args = {
14
14
  contentVersionId: Args.string({
15
15
  description: 'ContentVersion 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 { datasetFilesEndpoint, formatDatasetFileTable, } from '../../../../lib/data-types.js';
5
- export default class DataDatasetFileList extends AgentiaCommand {
5
+ export default class DataDatasetFileList extends CicdCommand {
6
6
  static args = {
7
7
  userStoryDataCommitId: Args.string({
8
8
  description: 'User story data commit Id',
@@ -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 { assertJsonObject, jsonBodyFlags, readJsonBodyFromFileOrStdin, } from '../../../../lib/data-flags.js';
5
5
  import { advancedFiltersEndpoint, } from '../../../../lib/data-types.js';
6
- export default class DataFilterAdd extends AgentiaCommand {
6
+ export default class DataFilterAdd extends CicdCommand {
7
7
  static args = {
8
8
  dataTemplateId: Args.string({
9
9
  description: 'Data template 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 { advancedFilterEndpoint } from '../../../../lib/data-types.js';
5
- export default class DataFilterDelete extends AgentiaCommand {
5
+ export default class DataFilterDelete extends CicdCommand {
6
6
  static args = {
7
7
  dataTemplateId: Args.string({
8
8
  description: 'Data template 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 { advancedFiltersEndpoint, formatAdvancedFilterTable, } from '../../../../lib/data-types.js';
5
- export default class DataFilterList extends AgentiaCommand {
5
+ export default class DataFilterList extends CicdCommand {
6
6
  static args = {
7
7
  dataTemplateId: Args.string({
8
8
  description: 'Data template Id',
@@ -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 { assertJsonObject, jsonBodyFlags, readJsonBodyFromFileOrStdin, } from '../../../../lib/data-flags.js';
5
5
  import { advancedFilterEndpoint, } from '../../../../lib/data-types.js';
6
- export default class DataFilterUpdate extends AgentiaCommand {
6
+ export default class DataFilterUpdate extends CicdCommand {
7
7
  static args = {
8
8
  dataTemplateId: Args.string({
9
9
  description: 'Data template Id',