@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,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 { openNavigationTarget } from '../../../lib/navigation-open.js';
4
4
  import { resolveNavigationTarget } from '../../../lib/navigation.js';
5
5
  import { resolveWorkItemId, WorkActiveResolutionError } from '../../../lib/work-active.js';
6
- export default class WorkOpen extends AgentiaCommand {
6
+ export default class WorkOpen extends CicdCommand {
7
7
  static args = {
8
8
  id: Args.string({
9
9
  description: 'User story ID (defaults to the active work item from `work set`)',
@@ -1,7 +1,7 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { collectPromoteUserStoryIds, formatWorkPromoteResult, performWorkPromote, WorkPromoteConflictError, WorkPromoteValidationError, } from '../../../lib/work-promote.js';
4
- export default class WorkPromote extends AgentiaCommand {
4
+ export default class WorkPromote extends CicdCommand {
5
5
  static args = {
6
6
  userStoryIds: Args.string({
7
7
  description: 'User story ID. Pass more than one to merge those feature branches in order. Omit when using --promotion with --continue or --abort.',
@@ -1,7 +1,7 @@
1
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
1
+ import { CicdCommand } from '../../../lib/cicd-command.js';
2
2
  import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
3
3
  import { runWorkPublish, WORK_PUBLISH_DESCRIPTION, workPublishFlags, } from '../../../lib/work-publish-command.js';
4
- export default class WorkPublish extends AgentiaCommand {
4
+ export default class WorkPublish extends CicdCommand {
5
5
  static description = WORK_PUBLISH_DESCRIPTION;
6
6
  static examples = [
7
7
  '<%= config.bin %> <%= command.id %>',
@@ -1,11 +1,11 @@
1
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
1
+ import { CicdCommand } from '../../../lib/cicd-command.js';
2
2
  import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
3
3
  import { runWorkPublish, workPublishFlags, } from '../../../lib/work-publish-command.js';
4
4
  /**
5
5
  * Compatibility alias of `cicd work publish`.
6
6
  * Prefer `agentia cicd work publish` in scripts and docs.
7
7
  */
8
- export default class WorkPush extends AgentiaCommand {
8
+ export default class WorkPush extends CicdCommand {
9
9
  static description = [
10
10
  'Alias of cicd work publish.',
11
11
  'Publishes the current feature/<lastWorkItem> branch and registers commits with Copado.',
@@ -1,20 +1,21 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { reconcileWorkSetCredential } from '../../../lib/credential-sync.js';
5
5
  import { writeLastWorkSelection } from '../../../lib/defaults-store.js';
6
6
  import { checkoutFeatureBranch, fetchOriginBranch, fetchOriginBranchIfExists, listPendingChanges, } from '../../../lib/git-worktree.js';
7
+ import { withLocalDevelopmentFlow } from '../../../lib/work-local-development-flow.js';
7
8
  import { performWorkSetNone, WorkSetNoneValidationError } from '../../../lib/work-set-none.js';
8
9
  import { isWorkSetWarning, parseWorkSetSelection, toWorkSetWarningResult, writeWorkSetWarningSelection, } from '../../../lib/work-set-selection.js';
9
10
  import { featureBranchName, workSetEndpoint, } from '../../../lib/work-types.js';
10
- export default class WorkSet extends AgentiaCommand {
11
+ export default class WorkSet extends CicdCommand {
11
12
  static args = {
12
13
  id: Args.string({
13
14
  description: 'User story ID or name (omit with --none)',
14
15
  required: false,
15
16
  }),
16
17
  };
17
- static description = [
18
+ static description = withLocalDevelopmentFlow([
18
19
  'Set the active work item and prepare a local feature branch.',
19
20
  'Calls the CICD gateway work/set endpoint, requires a clean tracked working tree,',
20
21
  'fetches the work item base branch from origin, fetches the feature branch when it',
@@ -23,11 +24,12 @@ export default class WorkSet extends AgentiaCommand {
23
24
  'A gateway warning prints the message, skips git, clears lastBaseBranch/lastDevOrgBranch/lastPullRequestBaseUrl,',
24
25
  'and records lastWorkItemId/lastWorkItem/lastWorkItemTitle from the returned work item.',
25
26
  'After work/set returns, compares the Story source credential with the CICD project default:',
26
- 'warns when the default or Story credential is missing, and warns without changing the Story',
27
- 'when they differ (shows the current credential and environment; use work update to change it).',
27
+ 'warns when the Story credential is missing, skips comparison when a bound Story has no project default,',
28
+ 'and warns without changing the Story when they differ (shows the current credential and environment;',
29
+ 'use work update to change it).',
28
30
  'With --none, clears every last* key from `.agentia/config.user.json` and checks out',
29
31
  'the previous lastBaseBranch when present, else main, else master, else stays put.',
30
- ].join(' ');
32
+ ].join(' '));
31
33
  static examples = [
32
34
  '<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU',
33
35
  '<%= config.bin %> <%= command.id %> US-0001 --json',
@@ -1,10 +1,10 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../lib/cicd-command.js';
3
3
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
4
  import { readLastWorkItem } from '../../../lib/defaults-store.js';
5
5
  import { resolveRecordedWorkBranchMetadata, } from '../../../lib/work-branch-metadata.js';
6
6
  import { formatWorkBranchMetadata, formatWorkStatus, workStatusEndpoint, } from '../../../lib/work-types.js';
7
- export default class WorkStatus extends AgentiaCommand {
7
+ export default class WorkStatus extends CicdCommand {
8
8
  static args = {
9
9
  id: Args.string({
10
10
  description: 'User story ID or name (defaults to the last work item from `work set`)',
@@ -1,6 +1,6 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import path from 'node:path';
3
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { CicdCommand } from '../../../lib/cicd-command.js';
4
4
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
5
5
  import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
6
6
  import { readLastBaseBranch, readLastPullRequestBaseUrl, readSkipPullRequest, } from '../../../lib/defaults-store.js';
@@ -9,13 +9,14 @@ import { LocalQualityGatesError, resolveLocalQualityGatesScript, runLocalQuality
9
9
  import { openUrl } from '../../../lib/open-browser.js';
10
10
  import { resolveWorkItemId } from '../../../lib/work-active.js';
11
11
  import { pickWorkDoneFlags, runWorkDone, workDoneFlags } from '../../../lib/work-done.js';
12
+ import { withLocalDevelopmentFlow } from '../../../lib/work-local-development-flow.js';
12
13
  import { reportLocalQualityGatesFailure, reportLocalQualityGatesOutcome, } from '../../../lib/work-local-run-tests.js';
13
14
  import { performWorkPush, resolveActiveFeatureWorkItem, resolveWorkPushContext, resolveWorkPushNeed, uploadCapturedPublishLogsBestEffort, WorkPushValidationError, } from '../../../lib/work-push.js';
14
15
  import { reportSubmitUserStoriesAheadBehind } from '../../../lib/work-submit-ahead-behind.js';
15
16
  import { waitForPendingCommitJobBeforeSubmit } from '../../../lib/work-submit-wait.js';
16
17
  import { buildPullRequestCompareUrl, formatWorkCommandMessage, workSubmitEndpoint, } from '../../../lib/work-types.js';
17
- export default class WorkSubmit extends AgentiaCommand {
18
- static description = [
18
+ export default class WorkSubmit extends CicdCommand {
19
+ static description = withLocalDevelopmentFlow([
19
20
  'Submit the current feature/<lastWorkItem> work item for pipeline quality gates and validation.',
20
21
  'Runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present,',
21
22
  'pushes and registers commits when the branch is ahead of origin, then calls headless work/submit',
@@ -25,7 +26,7 @@ export default class WorkSubmit extends AgentiaCommand {
25
26
  'After a successful submit or promote, uploads the captured command output as a Salesforce File on the user story (`Local Commit Logs <commitId> <datetime>.txt`) via `/agentia/headless/file/upload`. HTTP 404 is ignored until that endpoint is rolled out; other upload failures are warned and do not fail the command.',
26
27
  'With --done or --deploy, matches Copado UI Submit when promoting (validate=false / headless work/done).',
27
28
  'cicd work done is a compatibility alias of this command with --done.',
28
- ].join(' ');
29
+ ].join(' '));
29
30
  static examples = [
30
31
  '<%= config.bin %> <%= command.id %>',
31
32
  '<%= config.bin %> <%= command.id %> --apex-test-classes=MyTest,OtherTest',
@@ -1,8 +1,8 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { AgentiaCommand } from '../../../../lib/agentia-command.js';
2
+ import { CicdCommand } from '../../../../lib/cicd-command.js';
3
3
  import { planWorkApexTestRun, recordWorkApexTestOutcome, WorkApexRerunError, } from '../../../../lib/work-apex-test-failures.js';
4
4
  import { DEFAULT_APEX_TEST_WAIT_MINUTES, formatWorkApexTestHuman, parseApexTestClassNames, runWorkApexTests, skippedWorkApexTestResult, validateApexTestWaitMinutes, WorkApexTestError, } from '../../../../lib/work-apex-test.js';
5
- export default class WorkTestApex extends AgentiaCommand {
5
+ export default class WorkTestApex extends CicdCommand {
6
6
  static description = [
7
7
  'Run specified Apex test classes via Salesforce CLI (`sf apex run test`) with code coverage.',
8
8
  'Usually run from project-root local quality gates (`.agentia_quality_gates.sh` / `.agentia_quality_gates.cmd`) when those scripts are configured.',
@@ -1,12 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import path from 'node:path';
3
- import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { CicdCommand } from '../../../lib/cicd-command.js';
4
4
  import { getCurrentBranch } from '../../../lib/git-worktree.js';
5
5
  import { LocalQualityGatesError, parseQualityGatesEnvAssignments, resolveLocalQualityGatesScript, } from '../../../lib/local-quality-gates.js';
6
6
  import { runWorkTestLocalQualityGates } from '../../../lib/stock-quality-gates.js';
7
7
  import { reportLocalQualityGatesFailure, reportLocalQualityGatesOutcome, } from '../../../lib/work-local-run-tests.js';
8
8
  import { extractUserStoryFromFeatureBranch } from '../../../lib/work-types.js';
9
- export default class WorkTest extends AgentiaCommand {
9
+ export default class WorkTest extends CicdCommand {
10
10
  static description = [
11
11
  'Run quality gates for the current work item.',
12
12
  'With --local (the default) it runs project-root .agentia_quality_gates.sh (macOS/Linux) or',
@@ -1,10 +1,10 @@
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 { resolveWorkItemId, WorkActiveResolutionError } from '../../../lib/work-active.js';
5
5
  import { buildWorkMutationPayload, collectWorkMutationFlagKeys, validateWorkMutationPayload, workMutationFlags, } from '../../../lib/work-flags.js';
6
6
  import { workEndpoint } from '../../../lib/work-types.js';
7
- export default class WorkUpdate extends AgentiaCommand {
7
+ export default class WorkUpdate extends CicdCommand {
8
8
  static args = {
9
9
  id: Args.string({
10
10
  description: 'User story ID (defaults to the active work item from `work set`)',
@@ -14,6 +14,7 @@ export default class WorkUpdate extends AgentiaCommand {
14
14
  static description = 'Update a Copado user story by ID';
15
15
  static examples = [
16
16
  '<%= config.bin %> <%= command.id %> --title "Updated story"',
17
+ '<%= config.bin %> <%= command.id %> --custom-field JIRA_Key__c=CICD-1',
17
18
  '<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --title "Updated story"',
18
19
  '<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU --status "In Progress" --json',
19
20
  ];
@@ -0,0 +1,15 @@
1
+ import { AgentiaCommand } from '../lib/agentia-command.js';
2
+ import { runInteractiveHelpAgent } from '../lib/help-agent-command.js';
3
+ export default class HelpAgent extends AgentiaCommand {
4
+ static description = `Chat interactively with the Copado Help Agent.
5
+
6
+ Starts without a credential preflight, sends bounded non-secret CLI context, and requests a fresh short-lived AI token through the CICD gateway for every turn. Type /help during the session to list chat commands.`;
7
+ static enableJsonFlag = false;
8
+ static examples = ['<%= config.bin %> <%= command.id %>'];
9
+ static experimental = true;
10
+ async run() {
11
+ await this.parse(HelpAgent);
12
+ return runInteractiveHelpAgent(this);
13
+ }
14
+ }
15
+ //# sourceMappingURL=help-agent.js.map
@@ -0,0 +1,38 @@
1
+ import { Args, Flags, loadHelpClass } from '@oclif/core';
2
+ import { AgentiaCommand } from '../lib/agentia-command.js';
3
+ import { runInteractiveHelpAgent } from '../lib/help-agent-command.js';
4
+ export default class Help extends AgentiaCommand {
5
+ static args = {
6
+ command: Args.string({ description: 'Command to show help for.', required: false }),
7
+ };
8
+ static description = 'Display help for <%= config.bin %> or open the interactive Copado support expert.';
9
+ static enableJsonFlag = false;
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %>',
12
+ '<%= config.bin %> <%= command.id %> <command>',
13
+ '<%= config.bin %> <%= command.id %> --agent',
14
+ ];
15
+ static flags = {
16
+ agent: Flags.boolean({
17
+ description: 'Open the interactive Copado support expert.',
18
+ }),
19
+ 'nested-commands': Flags.boolean({
20
+ char: 'n',
21
+ description: 'Include all nested commands in the output.',
22
+ }),
23
+ };
24
+ static strict = false;
25
+ async run() {
26
+ const { argv, flags } = await this.parse(Help);
27
+ if (flags.agent) {
28
+ if (argv.length > 0 || flags['nested-commands']) {
29
+ this.error('--agent cannot be combined with a command or --nested-commands.', { exit: 2 });
30
+ }
31
+ return runInteractiveHelpAgent(this);
32
+ }
33
+ const HelpClass = await loadHelpClass(this.config);
34
+ const help = new HelpClass(this.config, { all: flags['nested-commands'] });
35
+ await help.showHelp(argv);
36
+ }
37
+ }
38
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1,42 @@
1
+ import { confirm } from '@inquirer/prompts';
2
+ import { Flags } from '@oclif/core';
3
+ import { AgentiaCommand } from '../../lib/agentia-command.js';
4
+ import { clearCommandHistory } from '../../lib/command-history.js';
5
+ import { clearHelpAgentInteractions } from '../../lib/help-agent-interaction-history.js';
6
+ import { redactErrorMessage } from '../../lib/secret-redaction.js';
7
+ export default class HistoryClear extends AgentiaCommand {
8
+ static description = 'Clear temporary command and Help Agent interaction history';
9
+ static examples = [
10
+ '<%= config.bin %> <%= command.id %> --yes',
11
+ '<%= config.bin %> <%= command.id %> --yes --json',
12
+ ];
13
+ static flags = {
14
+ yes: Flags.boolean({
15
+ char: 'y',
16
+ default: false,
17
+ description: 'Confirm clearing temporary history without prompting.',
18
+ }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(HistoryClear);
22
+ if (!flags.yes) {
23
+ if (this.jsonEnabled() || process.stdin.isTTY !== true || process.stdout.isTTY !== true) {
24
+ this.error('Clearing temporary history requires confirmation. Pass --yes for headless or JSON execution.', {
25
+ exit: 2,
26
+ });
27
+ }
28
+ if (!(await confirm({ default: false, message: 'Clear temporary command and Help Agent history?' }))) {
29
+ this.error('History clearing canceled.', { exit: 1 });
30
+ }
31
+ }
32
+ try {
33
+ await Promise.all([clearCommandHistory(), clearHelpAgentInteractions()]);
34
+ }
35
+ catch (error) {
36
+ this.error(`Could not clear temporary history: ${redactErrorMessage(error)}`, { exit: 1 });
37
+ }
38
+ this.display(() => this.log('Temporary history cleared.'));
39
+ return { cleared: true };
40
+ }
41
+ }
42
+ //# sourceMappingURL=clear.js.map
@@ -0,0 +1,50 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../lib/agentia-command.js';
3
+ import { COMMAND_HISTORY_DEFAULT_LIST_LIMIT, COMMAND_HISTORY_LIMIT, readCommandHistory, } from '../../lib/command-history.js';
4
+ import { table } from '../../lib/format.js';
5
+ export default class HistoryList extends AgentiaCommand {
6
+ static description = 'List recent sanitized Agentia CLI command executions';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %>',
9
+ '<%= config.bin %> <%= command.id %> --limit 10',
10
+ '<%= config.bin %> <%= command.id %> --limit 10 --json',
11
+ ];
12
+ static flags = {
13
+ limit: Flags.integer({
14
+ default: COMMAND_HISTORY_DEFAULT_LIST_LIMIT,
15
+ description: 'Maximum entries to return (newest first).',
16
+ max: COMMAND_HISTORY_LIMIT,
17
+ min: 1,
18
+ }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(HistoryList);
22
+ const history = await readCommandHistory();
23
+ const entries = history.slice(-flags.limit).reverse();
24
+ this.display(() => {
25
+ if (entries.length === 0) {
26
+ this.log('No command history.');
27
+ return;
28
+ }
29
+ this.log(table([
30
+ { alias: 'Timestamp', value: 'timestamp' },
31
+ { alias: 'Command', minContentWidth: 12, value: 'commandId' },
32
+ { alias: 'Origin', value: 'clientOrigin' },
33
+ { alias: 'Status', value: 'status' },
34
+ { alias: 'Exit', value: 'exitCode' },
35
+ { alias: 'Duration', value: 'duration' },
36
+ { alias: 'Workspace', minContentWidth: 8, value: 'workspace' },
37
+ ], entries.map((entry) => ({
38
+ clientOrigin: entry.clientOrigin ?? 'unknown',
39
+ commandId: entry.commandId,
40
+ duration: `${entry.durationMs}ms`,
41
+ exitCode: entry.exitCode,
42
+ status: entry.status,
43
+ timestamp: entry.timestamp,
44
+ workspace: entry.workspace,
45
+ }))));
46
+ });
47
+ return { entries, limit: flags.limit, total: history.length };
48
+ }
49
+ }
50
+ //# sourceMappingURL=list.js.map
@@ -1,7 +1,7 @@
1
1
  import { confirm } from '@inquirer/prompts';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { AgentiaCommand } from '../../lib/agentia-command.js';
4
- import { assessInstalls, enforceInstalls, parseInstallArguments, PluginTrustError, stockInstallArguments, uncheckedWarning } from '../../lib/plugin-trust/gate.js';
4
+ import { assessInstalls, enforceInstalls, parseInstallArguments, PluginTrustError, stockInstallArguments } from '../../lib/plugin-trust/gate.js';
5
5
  export default class PluginsInstall extends AgentiaCommand {
6
6
  static aliases = ['plugins:add'];
7
7
  static args = {
@@ -11,7 +11,7 @@ export default class PluginsInstall extends AgentiaCommand {
11
11
 
12
12
  Official and Verified plugins install without a prompt. Community, unlisted, and git URL plugins ask first. Use --allow-unverified when there is no terminal or with --json.
13
13
 
14
- A revoked version, or an npm tarball that differs from the hash in the catalog, is always refused. If the catalog cannot be reached, the command warns and the install continues.`;
14
+ A revoked version, or an npm tarball that differs from the hash in the catalog, is always refused. If the catalog cannot be reached, plugins cannot be checked, so the command warns and asks first, even for Official and Verified plugins. Use --allow-unverified to install without the check.`;
15
15
  static examples = [
16
16
  '<%= config.bin %> <%= command.id %> @acme/agentia-plugin-x',
17
17
  '<%= config.bin %> <%= command.id %> @acme/agentia-plugin-x@1.2.0 --allow-unverified --json',
@@ -35,9 +35,6 @@ A revoked version, or an npm tarball that differs from the hash in the catalog,
35
35
  const registryVariable = this.config.scopedEnvVarKey('NPM_REGISTRY');
36
36
  const customRegistry = Boolean(process.env[registryVariable]);
37
37
  const { assessments } = await assessInstalls(inputs, { resolve: !customRegistry });
38
- const skipped = uncheckedWarning(assessments);
39
- if (skipped)
40
- this.display(() => this.warn(skipped));
41
38
  if (customRegistry)
42
39
  this.display(() => this.warn(`${registryVariable} is set, so versions cannot be checked against the catalog.`));
43
40
  plugins = await enforceInstalls(assessments, {
@@ -1,5 +1,6 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { createPluginSkillLoader, pluginRefsFromConfig, selectPluginSkills, } from '../../../lib/plugin-skills.js';
3
4
  import { createInquirerSetupPrompts, isPromptCanceled } from '../../../lib/setup-prompts.js';
4
5
  import { resolveSelectedSkillPacks, runSetupSkills, SETUP_SKILL_TARGETS, } from '../../../lib/setup-skills.js';
5
6
  export default class SetupSkillsCreate extends AgentiaCommand {
@@ -10,6 +11,7 @@ export default class SetupSkillsCreate extends AgentiaCommand {
10
11
  '<%= config.bin %> <%= command.id %> --cicd --target agents --no-prompt',
11
12
  '<%= config.bin %> <%= command.id %> --testing --ai --target cursor --no-prompt',
12
13
  '<%= config.bin %> <%= command.id %> --json',
14
+ '<%= config.bin %> <%= command.id %> --plugin @acme/agentia-plugin-release --target cursor --no-prompt',
13
15
  ];
14
16
  static flags = {
15
17
  adv: Flags.boolean({
@@ -30,6 +32,10 @@ export default class SetupSkillsCreate extends AgentiaCommand {
30
32
  default: false,
31
33
  description: 'Skip interactive prompts; defaults the target to .agents/skills when --target is omitted',
32
34
  }),
35
+ plugin: Flags.string({
36
+ description: 'Also install the skills this installed plugin contributes through its agentia:contribute hook (repeatable). Without pack flags only plugin skills are written',
37
+ multiple: true,
38
+ }),
33
39
  target: Flags.string({
34
40
  description: 'Project skill root to write (repeatable)',
35
41
  multiple: true,
@@ -43,8 +49,17 @@ export default class SetupSkillsCreate extends AgentiaCommand {
43
49
  const { flags } = await this.parse(SetupSkillsCreate);
44
50
  const noPrompt = flags['no-prompt'] || this.jsonEnabled();
45
51
  try {
46
- return await runSetupSkills({
52
+ const pluginNames = flags.plugin ?? [];
53
+ const hasPackFlag = flags.adv || flags.ai || flags.cicd || flags.testing;
54
+ const packs = pluginNames.length > 0 && !hasPackFlag ? [] : resolveSelectedSkillPacks(flags);
55
+ // The agentia:contribute hook runs only through this loader, once, and only when plugin skills are needed.
56
+ const loadPluginSkills = createPluginSkillLoader(this.config);
57
+ const plugin = pluginNames.length > 0
58
+ ? await selectPluginSkills(pluginRefsFromConfig(this.config), pluginNames, loadPluginSkills)
59
+ : undefined;
60
+ const result = await runSetupSkills({
47
61
  force: flags.force,
62
+ loadPluginSkills,
48
63
  log: (message) => {
49
64
  this.display(() => {
50
65
  this.log(message);
@@ -52,11 +67,22 @@ export default class SetupSkillsCreate extends AgentiaCommand {
52
67
  },
53
68
  mode: 'create',
54
69
  noPrompt,
55
- packs: resolveSelectedSkillPacks(flags),
70
+ offerPluginSkills: pluginNames.length === 0 && !hasPackFlag,
71
+ packs,
72
+ pluginRefs: pluginRefsFromConfig(this.config),
73
+ pluginSkills: plugin?.skills,
74
+ rules: packs.length > 0,
75
+ skippedPluginSkills: plugin?.skipped,
56
76
  targets: flags.target,
57
77
  }, {
58
78
  prompts: noPrompt ? undefined : createInquirerSetupPrompts(),
59
79
  });
80
+ for (const item of result.skippedPluginSkills) {
81
+ this.display(() => {
82
+ this.warn(`Skipped plugin skill ${item.plugin}/${item.skill}: ${item.reason}`);
83
+ });
84
+ }
85
+ return result;
60
86
  }
61
87
  catch (error) {
62
88
  if (isPromptCanceled(error)) {
@@ -0,0 +1,55 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { createPluginSkillLoader, pluginRefsFromConfig, selectPluginSkills, } from '../../../lib/plugin-skills.js';
4
+ export default class SetupSkillsList extends AgentiaCommand {
5
+ static description = 'List skills that installed plugins contribute through their agentia:contribute hook (what "setup skills create|update --plugin" can install) and why invalid ones are skipped';
6
+ static examples = [
7
+ '<%= config.bin %> <%= command.id %>',
8
+ '<%= config.bin %> <%= command.id %> --plugin @acme/agentia-plugin-release --json',
9
+ ];
10
+ static flags = {
11
+ plugin: Flags.string({
12
+ description: 'Only list skills from this installed plugin (repeatable)',
13
+ multiple: true,
14
+ }),
15
+ };
16
+ async run() {
17
+ const { flags } = await this.parse(SetupSkillsList);
18
+ const plugins = pluginRefsFromConfig(this.config);
19
+ const load = createPluginSkillLoader(this.config);
20
+ let discovery;
21
+ try {
22
+ discovery =
23
+ flags.plugin && flags.plugin.length > 0
24
+ ? await selectPluginSkills(plugins, flags.plugin, load)
25
+ : await load();
26
+ }
27
+ catch (error) {
28
+ this.error(error.message, { exit: 1 });
29
+ }
30
+ const result = {
31
+ skills: discovery.skills.map((skill) => ({
32
+ description: skill.description,
33
+ files: skill.files.length,
34
+ id: skill.id,
35
+ plugin: skill.plugin,
36
+ skill: skill.name,
37
+ version: skill.version,
38
+ })),
39
+ skipped: discovery.skipped,
40
+ };
41
+ this.display(() => {
42
+ if (result.skills.length === 0 && result.skipped.length === 0) {
43
+ this.log('No installed plugin ships skills.');
44
+ }
45
+ for (const item of result.skills) {
46
+ this.log(`${item.skill} (${item.plugin}@${item.version}, ${item.files} files): ${item.description}`);
47
+ }
48
+ for (const item of result.skipped) {
49
+ this.log(`skipped ${item.plugin}/${item.skill}: ${item.reason}`);
50
+ }
51
+ });
52
+ return result;
53
+ }
54
+ }
55
+ //# sourceMappingURL=list.js.map
@@ -1,15 +1,18 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { createPluginSkillLoader, pluginRefsFromConfig, selectPluginSkills, } from '../../../lib/plugin-skills.js';
3
4
  import { createInquirerSetupPrompts, isPromptCanceled } from '../../../lib/setup-prompts.js';
4
5
  import { resolveSelectedSkillPacks, runSetupSkills, SETUP_SKILL_TARGETS, } from '../../../lib/setup-skills.js';
5
6
  export default class SetupSkillsUpdate extends AgentiaCommand {
6
- static description = 'Update Agentia-managed Markdown skill files and restore missing files in this project';
7
+ static description = 'Update Agentia-managed Markdown skill files and restore missing files in this project; without flags it also refreshes plugin skills already installed';
7
8
  static examples = [
8
9
  '<%= config.bin %> <%= command.id %>',
9
10
  '<%= config.bin %> <%= command.id %> --ai --target cursor --no-prompt',
10
11
  '<%= config.bin %> <%= command.id %> --adv --target agents --no-prompt',
11
12
  '<%= config.bin %> <%= command.id %> --cicd --testing --target agents --no-prompt',
12
13
  '<%= config.bin %> <%= command.id %> --force --json',
14
+ '<%= config.bin %> <%= command.id %> --prune --target cursor --no-prompt',
15
+ '<%= config.bin %> <%= command.id %> --plugin @acme/agentia-plugin-release --target cursor --no-prompt',
13
16
  ];
14
17
  static flags = {
15
18
  adv: Flags.boolean({
@@ -30,6 +33,15 @@ export default class SetupSkillsUpdate extends AgentiaCommand {
30
33
  default: false,
31
34
  description: 'Skip interactive prompts; defaults the target to .agents/skills when --target is omitted',
32
35
  }),
36
+ plugin: Flags.string({
37
+ description: 'Also install the skills this installed plugin contributes through its agentia:contribute hook (repeatable). Without pack flags only plugin skills are written',
38
+ multiple: true,
39
+ }),
40
+ prune: Flags.boolean({
41
+ default: false,
42
+ description: 'Also delete installed plugin skills whose plugin is uninstalled or no longer contributes them (only files carrying that plugin\'s managed marker)',
43
+ exclusive: ['plugin'],
44
+ }),
33
45
  target: Flags.string({
34
46
  description: 'Project skill root to write (repeatable)',
35
47
  multiple: true,
@@ -43,8 +55,17 @@ export default class SetupSkillsUpdate extends AgentiaCommand {
43
55
  const { flags } = await this.parse(SetupSkillsUpdate);
44
56
  const noPrompt = flags['no-prompt'] || this.jsonEnabled();
45
57
  try {
46
- return await runSetupSkills({
58
+ const pluginNames = flags.plugin ?? [];
59
+ const hasPackFlag = flags.adv || flags.ai || flags.cicd || flags.testing;
60
+ const packs = pluginNames.length > 0 && !hasPackFlag ? [] : resolveSelectedSkillPacks(flags);
61
+ // The agentia:contribute hook runs only through this loader, once, and only when plugin skills are needed.
62
+ const loadPluginSkills = createPluginSkillLoader(this.config);
63
+ const plugin = pluginNames.length > 0
64
+ ? await selectPluginSkills(pluginRefsFromConfig(this.config), pluginNames, loadPluginSkills)
65
+ : undefined;
66
+ const result = await runSetupSkills({
47
67
  force: flags.force,
68
+ loadPluginSkills,
48
69
  log: (message) => {
49
70
  this.display(() => {
50
71
  this.log(message);
@@ -52,11 +73,23 @@ export default class SetupSkillsUpdate extends AgentiaCommand {
52
73
  },
53
74
  mode: 'update',
54
75
  noPrompt,
55
- packs: resolveSelectedSkillPacks(flags),
76
+ packs,
77
+ pluginRefs: pluginRefsFromConfig(this.config),
78
+ pluginSkills: plugin?.skills,
79
+ prune: flags.prune,
80
+ refreshPlugins: pluginNames.length === 0 && !hasPackFlag,
81
+ rules: packs.length > 0,
82
+ skippedPluginSkills: plugin?.skipped,
56
83
  targets: flags.target,
57
84
  }, {
58
85
  prompts: noPrompt ? undefined : createInquirerSetupPrompts(),
59
86
  });
87
+ for (const item of result.skippedPluginSkills) {
88
+ this.display(() => {
89
+ this.warn(`Skipped plugin skill ${item.plugin}/${item.skill}: ${item.reason}`);
90
+ });
91
+ }
92
+ return result;
60
93
  }
61
94
  catch (error) {
62
95
  if (isPromptCanceled(error)) {
@@ -6,8 +6,8 @@ import { runSetupWizard } from '../lib/setup-wizard.js';
6
6
  export default class Setup extends AgentiaCommand {
7
7
  static description = [
8
8
  'Prepare this machine and the current project for Agentia.',
9
- 'Guides CICD, AI, and CRT authentication, Cursor MCP, local quality gates, Agent Skills, agent rules, and removal of a legacy AGENTS.md section.',
10
- 'Use --skip-auth to skip authentication and continue with Cursor MCP and project setup.',
9
+ 'Guides CICD, AI, and CRT authentication, Cursor and Claude Code MCP, local quality gates, Agent Skills, agent rules, and removal of a legacy AGENTS.md section.',
10
+ 'Use --skip-auth to skip authentication and continue with Cursor and Claude Code MCP and project setup.',
11
11
  'Git is optional: .gitignore is updated only inside a repository, and generated files are not committed.',
12
12
  ].join(' ');
13
13
  static enableJsonFlag = false;
@@ -18,7 +18,7 @@ export default class Setup extends AgentiaCommand {
18
18
  static flags = {
19
19
  'skip-auth': Flags.boolean({
20
20
  default: false,
21
- description: 'Skip CICD, AI, and CRT authentication; continue with Cursor MCP and project setup',
21
+ description: 'Skip CICD, AI, and CRT authentication; continue with Cursor and Claude Code MCP and project setup',
22
22
  }),
23
23
  };
24
24
  async run() {
@@ -0,0 +1,15 @@
1
+ import { AgentiaCommand } from '../lib/agentia-command.js';
2
+ import { runInteractiveHelpAgent } from '../lib/help-agent-command.js';
3
+ export default class Support extends AgentiaCommand {
4
+ static description = `Chat interactively with the Copado support expert.
5
+
6
+ Sends bounded local CLI context and requests a fresh short-lived AI token through the CICD gateway for every turn. Type /help during the session to list chat commands.`;
7
+ static enableJsonFlag = false;
8
+ static examples = ['<%= config.bin %> <%= command.id %>'];
9
+ static experimental = true;
10
+ async run() {
11
+ await this.parse(Support);
12
+ return runInteractiveHelpAgent(this);
13
+ }
14
+ }
15
+ //# sourceMappingURL=support.js.map