@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
@@ -1,10 +1,11 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingJobFlag, testingProjectFlag } from '../../../lib/testing-flags.js';
4
- import { searchTestingBuilds } from '../../../lib/testing-operations.js';
5
- import { formatTestingBuildTable, TESTING_RUN_TYPES, } from '../../../lib/testing-types.js';
6
- export default class TestingBuildSearch extends AgentiaCommand {
7
- static description = 'Search Copado Robotic Testing build metrics';
2
+ import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { searchTestingBuilds } from '../../../../lib/testing-execution.js';
4
+ import { testingJobFlag, testingProjectFlag } from '../../../../lib/testing-flags.js';
5
+ import { formatTestingBuildTable, TESTING_RUN_TYPES, } from '../../../../lib/testing-types.js';
6
+ export default class TestingJobRunsSearch extends AgentiaCommand {
7
+ static deprecateAliases = true;
8
+ static description = 'Search Copado Robotic Testing job run metrics';
8
9
  static examples = [
9
10
  '<%= config.bin %> <%= command.id %> --project <project-id> --job <job-id> --status failed',
10
11
  '<%= config.bin %> <%= command.id %> --project <project-id> --job <job-id> --run-type regression --count --json',
@@ -27,8 +28,9 @@ export default class TestingBuildSearch extends AgentiaCommand {
27
28
  status: Flags.string({ description: 'Status filter. Can be provided multiple times.', multiple: true }),
28
29
  to: Flags.string({ description: 'Include builds at or before this ISO-8601 date or epoch value.' }),
29
30
  };
31
+ static hiddenAliases = ['testing:build:search'];
30
32
  async run() {
31
- const { flags } = await this.parse(TestingBuildSearch);
33
+ const { flags } = await this.parse(TestingJobRunsSearch);
32
34
  const result = await this.withSpinner('Searching testing builds', () => searchTestingBuilds({
33
35
  count: flags.count,
34
36
  from: flags.from,
@@ -1,13 +1,13 @@
1
1
  import { Args } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
3
  import { testingProjectFlag } from '../../../../lib/testing-flags.js';
4
- import { getTestingJobSchedule } from '../../../../lib/testing-schedule.js';
4
+ import { getTestingJobScheduleStatus } from '../../../../lib/testing-operations.js';
5
5
  import { formatTestingRecord } from '../../../../lib/testing-types.js';
6
6
  export default class TestingJobScheduleGet extends AgentiaCommand {
7
7
  static args = {
8
- id: Args.integer({ description: 'CRT job/test ID.', required: true }),
8
+ id: Args.integer({ description: 'CRT job ID.', required: true }),
9
9
  };
10
- static description = 'Get the schedule for a Copado Robotic Testing job/test';
10
+ static description = 'Get the schedule for a Copado Robotic Testing job';
11
11
  static examples = [
12
12
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id>',
13
13
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --json',
@@ -15,15 +15,9 @@ export default class TestingJobScheduleGet extends AgentiaCommand {
15
15
  static flags = { ...testingProjectFlag };
16
16
  async run() {
17
17
  const { args, flags } = await this.parse(TestingJobScheduleGet);
18
- const schedule = await this.withSpinner('Getting testing schedule', () => getTestingJobSchedule({ jobId: args.id, projectId: flags.project }));
19
- const result = {
20
- configured: schedule !== undefined,
21
- jobId: args.id,
22
- projectId: flags.project,
23
- ...(schedule === undefined ? {} : { schedule }),
24
- };
18
+ const result = await this.withSpinner('Getting testing schedule', () => getTestingJobScheduleStatus({ jobId: args.id, projectId: flags.project }));
25
19
  this.display(() => {
26
- this.log(schedule === undefined ? 'No schedule configured.' : formatTestingRecord(schedule));
20
+ this.log(result.schedule === undefined ? 'No schedule configured.' : formatTestingRecord(result.schedule));
27
21
  });
28
22
  return result;
29
23
  }
@@ -2,12 +2,12 @@ import { Args, Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
3
  import { confirmTestingAction } from '../../../../lib/testing-confirmation.js';
4
4
  import { testingProjectFlag } from '../../../../lib/testing-flags.js';
5
- import { removeTestingJobSchedule } from '../../../../lib/testing-schedule.js';
5
+ import { removeTestingJobSchedule } from '../../../../lib/testing-operations.js';
6
6
  export default class TestingJobScheduleRemove extends AgentiaCommand {
7
7
  static args = {
8
- id: Args.integer({ description: 'CRT job/test ID.', required: true }),
8
+ id: Args.integer({ description: 'CRT job ID.', required: true }),
9
9
  };
10
- static description = 'Remove the schedule from a Copado Robotic Testing job/test';
10
+ static description = 'Remove the schedule from a Copado Robotic Testing job';
11
11
  static examples = [
12
12
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --yes',
13
13
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --yes --json',
@@ -1,13 +1,13 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
3
  import { testingProjectFlag } from '../../../../lib/testing-flags.js';
4
- import { setTestingJobSchedule } from '../../../../lib/testing-schedule.js';
4
+ import { setTestingJobSchedule } from '../../../../lib/testing-operations.js';
5
5
  import { TESTING_RECORD_BUILD_OPTIONS } from '../../../../lib/testing-types.js';
6
6
  export default class TestingJobScheduleSet extends AgentiaCommand {
7
7
  static args = {
8
- id: Args.integer({ description: 'CRT job/test ID.', required: true }),
8
+ id: Args.integer({ description: 'CRT job ID.', required: true }),
9
9
  };
10
- static description = 'Create or update a Copado Robotic Testing job/test schedule';
10
+ static description = 'Create or update a Copado Robotic Testing job schedule';
11
11
  static examples = [
12
12
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --cron "0 6 * * 1-5"',
13
13
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --cron "0 6 * * *" --timezone Europe/Helsinki --record failed --json',
@@ -1,17 +1,17 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingGitStorageFlags, testingProjectFlag, } from '../../../lib/testing-flags.js';
4
- import { buildTestingGitStorageUpdate, updateTestingJob } from '../../../lib/testing-operations.js';
3
+ import { testingGitStorageFlags, testingProjectFlag } from '../../../lib/testing-flags.js';
4
+ import { updateTestingJob } from '../../../lib/testing-operations.js';
5
5
  import { resolveTestingSecretInput } from '../../../lib/testing-secret-input.js';
6
6
  import { formatTestingRecord, TESTING_JOB_PARALLEL_MODES, TESTING_JOB_SUITE_TYPES, } from '../../../lib/testing-types.js';
7
7
  export default class TestingJobUpdate extends AgentiaCommand {
8
8
  static args = {
9
9
  id: Args.integer({
10
- description: 'CRT job/test ID.',
10
+ description: 'CRT job ID.',
11
11
  required: true,
12
12
  }),
13
13
  };
14
- static description = 'Update Copado Robotic Testing job/test metadata';
14
+ static description = 'Update Copado Robotic Testing job metadata';
15
15
  static examples = [
16
16
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --name "Smoke"',
17
17
  '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --git-url https://github.com/acme/crt-tests.git --git-branch main',
@@ -22,26 +22,21 @@ export default class TestingJobUpdate extends AgentiaCommand {
22
22
  ...testingProjectFlag,
23
23
  ...testingGitStorageFlags,
24
24
  'case-duration-change-detection': Flags.boolean({
25
- description: 'Enable case duration change detection analytics.',
25
+ allowNo: true,
26
+ description: 'Enable or disable duration analytics.',
26
27
  }),
27
28
  description: Flags.string({
28
- description: 'Job/test description.',
29
- }),
30
- 'hide-video-params': Flags.boolean({
31
- description: 'Hide video parameters.',
29
+ description: 'Job description.',
32
30
  }),
33
31
  name: Flags.string({
34
- description: 'Job/test name.',
35
- }),
36
- 'no-case-duration-change-detection': Flags.boolean({
37
- description: 'Disable case duration change detection analytics.',
32
+ description: 'Job name.',
38
33
  }),
39
34
  'parallel-mode': Flags.option({
40
35
  description: 'Parallel execution mode.',
41
36
  options: [...TESTING_JOB_PARALLEL_MODES],
42
37
  })(),
43
38
  robot: Flags.integer({
44
- description: 'CRT robot ID that should execute this job/test.',
39
+ description: 'CRT robot ID that should execute this job.',
45
40
  }),
46
41
  'screen-depth': Flags.integer({
47
42
  description: 'Screen color depth. Must be provided with --screen-width and --screen-height.',
@@ -53,7 +48,8 @@ export default class TestingJobUpdate extends AgentiaCommand {
53
48
  description: 'Screen width. Must be provided with --screen-height and --screen-depth.',
54
49
  }),
55
50
  'show-video-params': Flags.boolean({
56
- description: 'Show video parameters.',
51
+ allowNo: true,
52
+ description: 'Enable or disable video streaming and recording capabilities when running the test job.',
57
53
  }),
58
54
  'suite-type': Flags.option({
59
55
  description: 'CRT suite/job type.',
@@ -65,33 +61,30 @@ export default class TestingJobUpdate extends AgentiaCommand {
65
61
  };
66
62
  async run() {
67
63
  const { args, flags } = await this.parse(TestingJobUpdate);
68
- const screen = this.screenFromFlags(flags);
69
- const showVideoParams = this.videoParamsFromFlags(flags);
70
- const caseDurationChangeDetection = this.analyticsFromFlags(flags);
71
64
  const gitPassword = await resolveTestingSecretInput({
72
65
  value: flags['git-password'],
73
66
  valueFile: flags['git-password-file'],
74
67
  valueStdin: flags['git-password-stdin'],
75
68
  }, { label: 'CRT Git password', required: false });
76
69
  const job = await this.withSpinner('Updating testing job', () => updateTestingJob({
77
- analytics: caseDurationChangeDetection === undefined ? undefined : { caseDurationChangeDetection },
70
+ caseDurationChangeDetection: flags['case-duration-change-detection'],
78
71
  description: flags.description,
79
72
  domainCredentialId: flags['git-domain-credential'],
73
+ gitBranch: flags['git-branch'],
74
+ gitPassword,
75
+ gitTag: flags['git-tag'],
76
+ gitUrl: flags['git-url'],
77
+ gitUseCallerCredentials: flags['git-use-caller-credentials'],
78
+ gitUsername: flags['git-username'],
80
79
  jobId: args.id,
81
80
  name: flags.name,
82
81
  parallelExecution: flags['parallel-mode'],
83
82
  projectId: flags.project,
84
83
  robotId: flags.robot,
85
- screen,
86
- showVideoParams,
87
- storage: buildTestingGitStorageUpdate({
88
- gitBranch: flags['git-branch'],
89
- gitPassword,
90
- gitTag: flags['git-tag'],
91
- gitUrl: flags['git-url'],
92
- gitUseCallerCredentials: flags['git-use-caller-credentials'],
93
- gitUsername: flags['git-username'],
94
- }),
84
+ screenDepth: flags['screen-depth'],
85
+ screenHeight: flags['screen-height'],
86
+ screenWidth: flags['screen-width'],
87
+ showVideoParams: flags['show-video-params'],
95
88
  suiteType: flags['suite-type'],
96
89
  timeout: flags.timeout,
97
90
  }));
@@ -101,41 +94,5 @@ export default class TestingJobUpdate extends AgentiaCommand {
101
94
  });
102
95
  return job;
103
96
  }
104
- analyticsFromFlags(flags) {
105
- if (flags['case-duration-change-detection'] === true && flags['no-case-duration-change-detection'] === true) {
106
- this.error('Use either --case-duration-change-detection or --no-case-duration-change-detection, not both.', {
107
- exit: 2,
108
- });
109
- }
110
- if (flags['case-duration-change-detection'] === true)
111
- return true;
112
- if (flags['no-case-duration-change-detection'] === true)
113
- return false;
114
- return undefined;
115
- }
116
- screenFromFlags(flags) {
117
- const values = [flags['screen-depth'], flags['screen-height'], flags['screen-width']];
118
- const supplied = values.filter((value) => value !== undefined);
119
- if (supplied.length === 0)
120
- return undefined;
121
- if (supplied.length !== values.length) {
122
- this.error('Provide --screen-width, --screen-height, and --screen-depth together.', { exit: 2 });
123
- }
124
- const [depth, height, width] = values;
125
- if (depth <= 0 || height <= 0 || width <= 0) {
126
- this.error('Screen dimensions and depth must be positive integers.', { exit: 2 });
127
- }
128
- return { depth, height, width };
129
- }
130
- videoParamsFromFlags(flags) {
131
- if (flags['show-video-params'] === true && flags['hide-video-params'] === true) {
132
- this.error('Use either --show-video-params or --hide-video-params, not both.', { exit: 2 });
133
- }
134
- if (flags['show-video-params'] === true)
135
- return true;
136
- if (flags['hide-video-params'] === true)
137
- return false;
138
- return undefined;
139
- }
140
97
  }
141
98
  //# sourceMappingURL=update.js.map
@@ -1,7 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
3
  import { createTestingProject } from '../../../lib/testing-operations.js';
4
- import { formatTestingRecord, TESTING_PROJECT_EXECUTORS, TESTING_PROJECT_TYPES, } from '../../../lib/testing-types.js';
4
+ import { formatTestingRecord } from '../../../lib/testing-types.js';
5
5
  export default class TestingProjectCreate extends AgentiaCommand {
6
6
  static description = 'Create a Copado Robotic Testing project';
7
7
  static examples = [
@@ -9,35 +9,19 @@ export default class TestingProjectCreate extends AgentiaCommand {
9
9
  '<%= config.bin %> <%= command.id %> --name "QA Tests" --description "Smoke suite" --json',
10
10
  ];
11
11
  static flags = {
12
- 'dashboard-id': Flags.integer({
13
- description: 'Optional CRT dashboard ID.',
14
- min: 1,
15
- }),
16
12
  description: Flags.string({
17
13
  description: 'Project description.',
18
14
  }),
19
- executor: Flags.option({
20
- description: 'Project execution backend.',
21
- options: [...TESTING_PROJECT_EXECUTORS],
22
- })(),
23
15
  name: Flags.string({
24
16
  description: 'Project name.',
25
17
  required: true,
26
18
  }),
27
- type: Flags.option({
28
- default: 'ta',
29
- description: 'CRT project type.',
30
- options: [...TESTING_PROJECT_TYPES],
31
- })(),
32
19
  };
33
20
  async run() {
34
21
  const { flags } = await this.parse(TestingProjectCreate);
35
22
  const project = await this.withSpinner('Creating testing project', () => createTestingProject({
36
- dashboardId: flags['dashboard-id'],
37
23
  description: flags.description,
38
24
  name: flags.name,
39
- projectExecutor: flags.executor,
40
- projectType: flags.type,
41
25
  }));
42
26
  this.display(() => {
43
27
  this.log('Testing project created');
@@ -14,7 +14,6 @@ export default class TestingProjectGet extends AgentiaCommand {
14
14
  '<%= config.bin %> <%= command.id %> <project-id>',
15
15
  '<%= config.bin %> <%= command.id %> <project-id> --json',
16
16
  ];
17
- static flags = {};
18
17
  async run() {
19
18
  const { args } = await this.parse(TestingProjectGet);
20
19
  const project = await this.withSpinner('Fetching testing project', () => getTestingProject({ projectId: args.id }));
@@ -1,7 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
3
  import { listTestingProjects } from '../../../lib/testing-operations.js';
4
- import { formatTestingTable } from '../../../lib/testing-types.js';
4
+ import { formatTestingProjectTable } from '../../../lib/testing-types.js';
5
5
  export default class TestingProjectList extends AgentiaCommand {
6
6
  static description = 'List Copado Robotic Testing projects';
7
7
  static examples = [
@@ -21,7 +21,7 @@ export default class TestingProjectList extends AgentiaCommand {
21
21
  this.log('No testing projects found.');
22
22
  return;
23
23
  }
24
- this.log(formatTestingTable(projects));
24
+ this.log(formatTestingProjectTable(projects));
25
25
  });
26
26
  return projects;
27
27
  }
@@ -1,5 +1,6 @@
1
- import { Args, Flags } from '@oclif/core';
1
+ import { Args } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { testingPermissionFlags } from '../../../../lib/testing-flags.js';
3
4
  import { setTestingProjectPermission } from '../../../../lib/testing-operations.js';
4
5
  import { formatTestingTable } from '../../../../lib/testing-types.js';
5
6
  export default class TestingProjectPermissionSet extends AgentiaCommand {
@@ -11,12 +12,7 @@ export default class TestingProjectPermissionSet extends AgentiaCommand {
11
12
  '<%= config.bin %> <%= command.id %> <project-id> --user <user-id> --view',
12
13
  '<%= config.bin %> <%= command.id %> <project-id> --group <group-id> --view --edit --json',
13
14
  ];
14
- static flags = {
15
- edit: Flags.boolean({ default: false, description: 'Grant edit access.' }),
16
- group: Flags.integer({ description: 'Platform group ID.', exclusive: ['user'], min: 1 }),
17
- user: Flags.integer({ description: 'Platform user ID.', exclusive: ['group'], min: 1 }),
18
- view: Flags.boolean({ default: false, description: 'Grant view access.' }),
19
- };
15
+ static flags = testingPermissionFlags;
20
16
  async run() {
21
17
  const { args, flags } = await this.parse(TestingProjectPermissionSet);
22
18
  const result = await this.withSpinner('Setting testing project permission', () => setTestingProjectPermission({
@@ -1,5 +1,6 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../../lib/agentia-command.js';
3
+ import { testingPermissionFlags } from '../../../../lib/testing-flags.js';
3
4
  import { setTestingProjectPermission } from '../../../../lib/testing-operations.js';
4
5
  import { formatTestingTable } from '../../../../lib/testing-types.js';
5
6
  export default class TestingProjectPermissionUpdate extends AgentiaCommand {
@@ -12,9 +13,8 @@ export default class TestingProjectPermissionUpdate extends AgentiaCommand {
12
13
  '<%= config.bin %> <%= command.id %> <project-id> --group <group-id> --view --json',
13
14
  ];
14
15
  static flags = {
16
+ ...testingPermissionFlags,
15
17
  edit: Flags.boolean({ default: false, description: 'Set edit access.' }),
16
- group: Flags.integer({ description: 'Platform group ID.', exclusive: ['user'], min: 1 }),
17
- user: Flags.integer({ description: 'Platform user ID.', exclusive: ['group'], min: 1 }),
18
18
  view: Flags.boolean({ default: false, description: 'Set view access.' }),
19
19
  };
20
20
  async run() {
@@ -1,67 +1,64 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingProjectFlag, } from '../../../lib/testing-flags.js';
3
+ import { testingProjectFlag } from '../../../lib/testing-flags.js';
4
4
  import { createTestingRobot } from '../../../lib/testing-operations.js';
5
- import { formatTestingRecord, TESTING_ROBOT_REPORTING, TESTING_ROBOT_RUN_ENVIRONMENTS, TESTING_ROBOT_TYPES, } from '../../../lib/testing-types.js';
5
+ import { formatTestingRecord, TESTING_ROBOT_REPORTING, TESTING_ROBOT_REPORTING_DESCRIPTION, TESTING_ROBOT_RUN_ENVIRONMENT_DESCRIPTION, TESTING_ROBOT_RUN_ENVIRONMENTS, TESTING_ROBOT_TYPE_DESCRIPTION, TESTING_ROBOT_TYPES, } from '../../../lib/testing-types.js';
6
6
  export default class TestingRobotCreate extends AgentiaCommand {
7
7
  static description = 'Create a Copado Robotic Testing robot';
8
8
  static examples = [
9
9
  '<%= config.bin %> <%= command.id %> --project <project-id> --name "Cloud Robot"',
10
- '<%= config.bin %> <%= command.id %> --project <project-id> --name "QConnect Robot" --kind QConnect --json',
10
+ '<%= config.bin %> <%= command.id %> --project <project-id> --name "QConnect Robot" --run-environment QConnect --json',
11
11
  ];
12
12
  static flags = {
13
13
  ...testingProjectFlag,
14
14
  description: Flags.string({
15
15
  default: '',
16
- description: 'Robot description.',
16
+ description: 'Description for the robot (defaults to empty if omitted).',
17
17
  }),
18
18
  'fw-version': Flags.string({
19
19
  default: 'stable',
20
- description: 'Robot framework version.',
20
+ description: 'Test framework release channel (for example stable).',
21
21
  }),
22
- kind: Flags.option({
23
- description: 'Backward-compatible robot run environment alias.',
24
- exclusive: ['run-environment'],
25
- options: [...TESTING_ROBOT_RUN_ENVIRONMENTS],
26
- })(),
27
22
  label: Flags.string({
28
- description: 'Optional robot label.',
23
+ description: 'Optional label for the robot.',
29
24
  }),
30
25
  name: Flags.string({
31
- description: 'Robot name.',
26
+ description: 'Name for the new robot.',
32
27
  required: true,
33
28
  }),
34
- os: Flags.string({
35
- default: 'linux',
36
- description: 'Robot operating system.',
37
- }),
38
29
  reporting: Flags.option({
39
- description: 'Which testing results to retain.',
30
+ description: TESTING_ROBOT_REPORTING_DESCRIPTION,
40
31
  options: [...TESTING_ROBOT_REPORTING],
41
32
  })(),
42
- 'robot-type': Flags.string({
33
+ 'robot-type': Flags.option({
43
34
  default: 'default',
44
- description: 'CRT robot type.',
35
+ description: TESTING_ROBOT_TYPE_DESCRIPTION,
45
36
  options: [...TESTING_ROBOT_TYPES],
46
- }),
37
+ })(),
47
38
  'run-environment': Flags.option({
48
- description: 'Robot execution environment.',
49
- exclusive: ['kind'],
39
+ default: 'cloud',
40
+ description: TESTING_ROBOT_RUN_ENVIRONMENT_DESCRIPTION,
50
41
  options: [...TESTING_ROBOT_RUN_ENVIRONMENTS],
51
42
  })(),
52
43
  };
53
44
  async run() {
54
- const { flags } = await this.parse(TestingRobotCreate);
45
+ const argv = this.argv.map((arg, index) => {
46
+ if (arg === '--run-environment=paceconnect')
47
+ return '--run-environment=QConnect';
48
+ if (arg === 'paceconnect' && this.argv[index - 1] === '--run-environment')
49
+ return 'QConnect';
50
+ return arg;
51
+ });
52
+ const { flags } = await this.parse(TestingRobotCreate, argv);
55
53
  const robot = await this.withSpinner('Creating testing robot', () => createTestingRobot({
56
54
  description: flags.description,
57
55
  fwVersion: flags['fw-version'],
58
- kind: (flags['run-environment'] ?? flags.kind ?? 'cloud'),
59
56
  label: flags.label,
60
57
  name: flags.name,
61
- os: flags.os,
62
58
  projectId: flags.project,
63
59
  reporting: flags.reporting,
64
60
  robotType: flags['robot-type'],
61
+ runEnvironment: flags['run-environment'],
65
62
  }));
66
63
  this.display(() => {
67
64
  this.log('Testing robot created');
@@ -1,6 +1,6 @@
1
1
  import { Args } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingProjectFlag, } from '../../../lib/testing-flags.js';
3
+ import { testingProjectFlag } from '../../../lib/testing-flags.js';
4
4
  import { getTestingRobot } from '../../../lib/testing-operations.js';
5
5
  import { formatTestingRecord } from '../../../lib/testing-types.js';
6
6
  export default class TestingRobotGet extends AgentiaCommand {
@@ -1,7 +1,7 @@
1
1
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
- import { testingProjectFlag, } from '../../../lib/testing-flags.js';
2
+ import { testingProjectFlag } from '../../../lib/testing-flags.js';
3
3
  import { listTestingRobots } from '../../../lib/testing-operations.js';
4
- import { formatTestingTable } from '../../../lib/testing-types.js';
4
+ import { formatTestingRobotTable } from '../../../lib/testing-types.js';
5
5
  export default class TestingRobotList extends AgentiaCommand {
6
6
  static description = 'List Copado Robotic Testing robots in a project';
7
7
  static examples = [
@@ -19,7 +19,7 @@ export default class TestingRobotList extends AgentiaCommand {
19
19
  this.log('No testing robots found.');
20
20
  return;
21
21
  }
22
- this.log(formatTestingTable(robots));
22
+ this.log(formatTestingRobotTable(robots));
23
23
  });
24
24
  return robots;
25
25
  }
@@ -2,7 +2,7 @@ import { Args, Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
3
  import { testingProjectFlag } from '../../../lib/testing-flags.js';
4
4
  import { updateTestingRobot } from '../../../lib/testing-operations.js';
5
- import { formatTestingRecord, TESTING_ROBOT_REPORTING, TESTING_ROBOT_TYPES, } from '../../../lib/testing-types.js';
5
+ import { formatTestingRecord, TESTING_ROBOT_REPORTING, TESTING_ROBOT_REPORTING_DESCRIPTION, TESTING_ROBOT_TYPE_DESCRIPTION, TESTING_ROBOT_TYPES, } from '../../../lib/testing-types.js';
6
6
  export default class TestingRobotUpdate extends AgentiaCommand {
7
7
  static args = {
8
8
  id: Args.string({ description: 'CRT robot ID.', required: true }),
@@ -19,11 +19,11 @@ export default class TestingRobotUpdate extends AgentiaCommand {
19
19
  label: Flags.string({ description: 'New robot label.' }),
20
20
  name: Flags.string({ description: 'New robot name.' }),
21
21
  reporting: Flags.option({
22
- description: 'Which testing results to retain.',
22
+ description: TESTING_ROBOT_REPORTING_DESCRIPTION,
23
23
  options: [...TESTING_ROBOT_REPORTING],
24
24
  })(),
25
25
  'robot-type': Flags.option({
26
- description: 'New CRT robot type.',
26
+ description: TESTING_ROBOT_TYPE_DESCRIPTION,
27
27
  options: [...TESTING_ROBOT_TYPES],
28
28
  })(),
29
29
  };
@@ -13,27 +13,21 @@ export default class TestingUserParameterCreate extends AgentiaCommand {
13
13
  static flags = {
14
14
  description: Flags.string({ description: 'Parameter description.' }),
15
15
  key: Flags.string({ description: 'Parameter key.', required: true }),
16
- sensitive: Flags.boolean({ default: false, description: 'Mark the parameter as sensitive.' }),
16
+ sensitive: Flags.boolean({ allowNo: true, default: false, description: 'Mark the parameter as sensitive.' }),
17
17
  type: Flags.option({ default: 'parameter', description: 'CRT user-parameter type.', options: ['parameter'] })(),
18
18
  unique: Flags.boolean({ default: false, description: 'Reject an existing parameter with the same key.' }),
19
19
  ...testingSecretInputFlags,
20
20
  };
21
21
  async run() {
22
22
  const { flags } = await this.parse(TestingUserParameterCreate);
23
- const value = await resolveTestingSecretInput({
24
- noTrim: flags['no-trim'],
25
- trim: flags.trim,
26
- value: flags.value,
27
- valueFile: flags['value-file'],
28
- valueStdin: flags['value-stdin'],
29
- }, { label: 'CRT user-parameter value', required: true });
23
+ const value = await resolveTestingSecretInput(flags, { label: 'CRT user-parameter value', required: true });
30
24
  const result = await this.withSpinner('Creating testing user parameter', () => createTestingUserParameter({
31
25
  description: flags.description,
32
26
  key: flags.key,
33
27
  sensitive: flags.sensitive,
34
28
  type: 'parameter',
35
29
  unique: flags.unique,
36
- value: value,
30
+ value,
37
31
  }));
38
32
  this.display(() => {
39
33
  this.log('Testing user parameter created');
@@ -21,13 +21,7 @@ export default class TestingUserParameterUpdate extends AgentiaCommand {
21
21
  };
22
22
  async run() {
23
23
  const { args, flags } = await this.parse(TestingUserParameterUpdate);
24
- const value = await resolveTestingSecretInput({
25
- noTrim: flags['no-trim'],
26
- trim: flags.trim,
27
- value: flags.value,
28
- valueFile: flags['value-file'],
29
- valueStdin: flags['value-stdin'],
30
- }, { label: 'CRT user-parameter value', required: false });
24
+ const value = await resolveTestingSecretInput(flags, { label: 'CRT user-parameter value', required: false });
31
25
  const result = await this.withSpinner('Updating testing user parameter', () => updateTestingUserParameter({
32
26
  description: flags.description,
33
27
  key: flags.key,
@@ -1,6 +1,6 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingProjectFlag, testingSecretInputFlags, } from '../../../lib/testing-flags.js';
3
+ import { testingProjectFlag, testingSecretInputFlags } from '../../../lib/testing-flags.js';
4
4
  import { createTestingVariable } from '../../../lib/testing-operations.js';
5
5
  import { resolveTestingSecretInput } from '../../../lib/testing-secret-input.js';
6
6
  import { formatTestingRecord, TESTING_VARIABLE_TYPES } from '../../../lib/testing-types.js';
@@ -16,7 +16,7 @@ export default class TestingVariableCreate extends AgentiaCommand {
16
16
  description: 'Variable description.',
17
17
  }),
18
18
  job: Flags.integer({
19
- description: 'Scope the variable to a CRT job/test ID.',
19
+ description: 'Scope the variable to a CRT job ID.',
20
20
  exclusive: ['robot'],
21
21
  }),
22
22
  key: Flags.string({
@@ -28,6 +28,7 @@ export default class TestingVariableCreate extends AgentiaCommand {
28
28
  exclusive: ['job'],
29
29
  }),
30
30
  sensitive: Flags.boolean({
31
+ allowNo: true,
31
32
  default: false,
32
33
  description: 'Mark the variable as sensitive.',
33
34
  }),
@@ -44,13 +45,7 @@ export default class TestingVariableCreate extends AgentiaCommand {
44
45
  };
45
46
  async run() {
46
47
  const { flags } = await this.parse(TestingVariableCreate);
47
- const value = await resolveTestingSecretInput({
48
- noTrim: flags['no-trim'],
49
- trim: flags.trim,
50
- value: flags.value,
51
- valueFile: flags['value-file'],
52
- valueStdin: flags['value-stdin'],
53
- }, { label: 'CRT variable value', required: true });
48
+ const value = await resolveTestingSecretInput(flags, { label: 'CRT variable value', required: true });
54
49
  const result = await this.withSpinner('Creating testing variable', () => createTestingVariable({
55
50
  description: flags.description,
56
51
  jobId: flags.job,
@@ -1,8 +1,8 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
- import { testingProjectFlag, } from '../../../lib/testing-flags.js';
3
+ import { testingProjectFlag } from '../../../lib/testing-flags.js';
4
4
  import { listTestingVariables } from '../../../lib/testing-operations.js';
5
- import { formatTestingTable, TESTING_VARIABLE_TYPES, } from '../../../lib/testing-types.js';
5
+ import { formatTestingTable, TESTING_VARIABLE_TYPES } from '../../../lib/testing-types.js';
6
6
  export default class TestingVariableList extends AgentiaCommand {
7
7
  static description = 'List Copado Robotic Testing variables/secrets';
8
8
  static examples = [
@@ -12,7 +12,7 @@ export default class TestingVariableList extends AgentiaCommand {
12
12
  static flags = {
13
13
  ...testingProjectFlag,
14
14
  job: Flags.integer({
15
- description: 'Filter for a CRT job/test ID.',
15
+ description: 'Filter for a CRT job ID.',
16
16
  exclusive: ['robot'],
17
17
  }),
18
18
  key: Flags.string({