@copado/agentia-cli 0.112.0-alpha.0 → 0.114.0-alpha.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 (322) hide show
  1. package/README.md +2014 -450
  2. package/dist/commands/ai/agent/ask.d.ts +3 -0
  3. package/dist/commands/ai/agent/ask.js +14 -0
  4. package/dist/commands/ai/agent/ask.js.map +1 -1
  5. package/dist/commands/ai/agent/chat.d.ts +3 -0
  6. package/dist/commands/ai/agent/chat.js +14 -0
  7. package/dist/commands/ai/agent/chat.js.map +1 -1
  8. package/dist/commands/cicd/work/set.js +22 -14
  9. package/dist/commands/cicd/work/set.js.map +1 -1
  10. package/dist/commands/testing/build/abort.d.ts +7 -1
  11. package/dist/commands/testing/build/abort.js +13 -3
  12. package/dist/commands/testing/build/abort.js.map +1 -1
  13. package/dist/commands/testing/build/get.d.ts +18 -0
  14. package/dist/commands/testing/build/get.js +38 -0
  15. package/dist/commands/testing/build/get.js.map +1 -0
  16. package/dist/commands/testing/build/latest.d.ts +12 -0
  17. package/dist/commands/testing/build/latest.js +40 -0
  18. package/dist/commands/testing/build/latest.js.map +1 -0
  19. package/dist/commands/testing/build/list.d.ts +6 -1
  20. package/dist/commands/testing/build/list.js +23 -1
  21. package/dist/commands/testing/build/list.js.map +1 -1
  22. package/dist/commands/testing/build/logs.d.ts +6 -0
  23. package/dist/commands/testing/build/logs.js +8 -1
  24. package/dist/commands/testing/build/logs.js.map +1 -1
  25. package/dist/commands/testing/build/run.d.ts +27 -4
  26. package/dist/commands/testing/build/run.js +4 -18
  27. package/dist/commands/testing/build/run.js.map +1 -1
  28. package/dist/commands/testing/build/search.d.ts +21 -0
  29. package/dist/commands/testing/build/search.js +57 -0
  30. package/dist/commands/testing/build/search.js.map +1 -0
  31. package/dist/commands/testing/create.d.ts +1 -15
  32. package/dist/commands/testing/create.js +1 -43
  33. package/dist/commands/testing/create.js.map +1 -1
  34. package/dist/commands/testing/data-table/create.d.ts +30 -0
  35. package/dist/commands/testing/data-table/create.js +52 -0
  36. package/dist/commands/testing/data-table/create.js.map +1 -0
  37. package/dist/commands/testing/data-table/delete.d.ts +25 -0
  38. package/dist/commands/testing/data-table/delete.js +40 -0
  39. package/dist/commands/testing/data-table/delete.js.map +1 -0
  40. package/dist/commands/testing/data-table/export.d.ts +33 -0
  41. package/dist/commands/testing/data-table/export.js +59 -0
  42. package/dist/commands/testing/data-table/export.js.map +1 -0
  43. package/dist/commands/testing/data-table/get.d.ts +21 -0
  44. package/dist/commands/testing/data-table/get.js +35 -0
  45. package/dist/commands/testing/data-table/get.js.map +1 -0
  46. package/dist/commands/testing/data-table/list.d.ts +16 -0
  47. package/dist/commands/testing/data-table/list.js +33 -0
  48. package/dist/commands/testing/data-table/list.js.map +1 -0
  49. package/dist/commands/testing/data-table/update.d.ts +34 -0
  50. package/dist/commands/testing/data-table/update.js +64 -0
  51. package/dist/commands/testing/data-table/update.js.map +1 -0
  52. package/dist/commands/testing/job/create.d.ts +18 -0
  53. package/dist/commands/testing/job/create.js +60 -4
  54. package/dist/commands/testing/job/create.js.map +1 -1
  55. package/dist/commands/testing/job/delete.d.ts +6 -1
  56. package/dist/commands/testing/job/delete.js +13 -3
  57. package/dist/commands/testing/job/delete.js.map +1 -1
  58. package/dist/commands/testing/job/refs.d.ts +17 -0
  59. package/dist/commands/testing/job/refs.js +30 -0
  60. package/dist/commands/testing/job/refs.js.map +1 -0
  61. package/dist/commands/testing/job/schedule/get.d.ts +23 -0
  62. package/dist/commands/testing/job/schedule/get.js +31 -0
  63. package/dist/commands/testing/job/schedule/get.js.map +1 -0
  64. package/dist/commands/testing/job/schedule/remove.d.ts +24 -0
  65. package/dist/commands/testing/job/schedule/remove.js +34 -0
  66. package/dist/commands/testing/job/schedule/remove.js.map +1 -0
  67. package/dist/commands/testing/job/schedule/set.d.ts +23 -0
  68. package/dist/commands/testing/job/schedule/set.js +39 -0
  69. package/dist/commands/testing/job/schedule/set.js.map +1 -0
  70. package/dist/commands/testing/job/update.d.ts +2 -0
  71. package/dist/commands/testing/job/update.js +7 -1
  72. package/dist/commands/testing/job/update.js.map +1 -1
  73. package/dist/commands/testing/job/upload.d.ts +6 -0
  74. package/dist/commands/testing/job/upload.js +22 -0
  75. package/dist/commands/testing/job/upload.js.map +1 -1
  76. package/dist/commands/testing/live/continue.d.ts +20 -0
  77. package/dist/commands/testing/live/continue.js +21 -0
  78. package/dist/commands/testing/live/continue.js.map +1 -0
  79. package/dist/commands/testing/live/execute.d.ts +30 -0
  80. package/dist/commands/testing/live/execute.js +43 -0
  81. package/dist/commands/testing/live/execute.js.map +1 -0
  82. package/dist/commands/testing/live/history.d.ts +23 -0
  83. package/dist/commands/testing/live/history.js +35 -0
  84. package/dist/commands/testing/live/history.js.map +1 -0
  85. package/dist/commands/testing/live/inspect.d.ts +18 -0
  86. package/dist/commands/testing/live/inspect.js +30 -0
  87. package/dist/commands/testing/live/inspect.js.map +1 -0
  88. package/dist/commands/testing/live/interrupt.d.ts +20 -0
  89. package/dist/commands/testing/live/interrupt.js +21 -0
  90. package/dist/commands/testing/live/interrupt.js.map +1 -0
  91. package/dist/commands/testing/live/recorder.d.ts +23 -0
  92. package/dist/commands/testing/live/recorder.js +134 -0
  93. package/dist/commands/testing/live/recorder.js.map +1 -0
  94. package/dist/commands/testing/live/reports.d.ts +20 -0
  95. package/dist/commands/testing/live/reports.js +31 -0
  96. package/dist/commands/testing/live/reports.js.map +1 -0
  97. package/dist/commands/testing/live/screenshot.d.ts +23 -0
  98. package/dist/commands/testing/live/screenshot.js +25 -0
  99. package/dist/commands/testing/live/screenshot.js.map +1 -0
  100. package/dist/commands/testing/live/set-options.d.ts +27 -0
  101. package/dist/commands/testing/live/set-options.js +28 -0
  102. package/dist/commands/testing/live/set-options.js.map +1 -0
  103. package/dist/commands/testing/live/start.d.ts +29 -0
  104. package/dist/commands/testing/live/start.js +53 -0
  105. package/dist/commands/testing/live/start.js.map +1 -0
  106. package/dist/commands/testing/live/status.d.ts +19 -0
  107. package/dist/commands/testing/live/status.js +27 -0
  108. package/dist/commands/testing/live/status.js.map +1 -0
  109. package/dist/commands/testing/live/stop.d.ts +24 -0
  110. package/dist/commands/testing/live/stop.js +38 -0
  111. package/dist/commands/testing/live/stop.js.map +1 -0
  112. package/dist/commands/testing/live/view.d.ts +16 -0
  113. package/dist/commands/testing/live/view.js +36 -0
  114. package/dist/commands/testing/live/view.js.map +1 -0
  115. package/dist/commands/testing/logs.d.ts +6 -0
  116. package/dist/commands/testing/logs.js +8 -1
  117. package/dist/commands/testing/logs.js.map +1 -1
  118. package/dist/commands/testing/project/create.d.ts +3 -0
  119. package/dist/commands/testing/project/create.js +17 -1
  120. package/dist/commands/testing/project/create.js.map +1 -1
  121. package/dist/commands/testing/project/delete.d.ts +7 -2
  122. package/dist/commands/testing/project/delete.js +15 -3
  123. package/dist/commands/testing/project/delete.js.map +1 -1
  124. package/dist/commands/testing/project/get.js +1 -1
  125. package/dist/commands/testing/project/get.js.map +1 -1
  126. package/dist/commands/testing/project/permission/get.d.ts +13 -0
  127. package/dist/commands/testing/project/permission/get.js +21 -0
  128. package/dist/commands/testing/project/permission/get.js.map +1 -0
  129. package/dist/commands/testing/project/permission/list.d.ts +13 -0
  130. package/dist/commands/testing/project/permission/list.js +21 -0
  131. package/dist/commands/testing/project/permission/list.js.map +1 -0
  132. package/dist/commands/testing/project/permission/set.d.ts +19 -0
  133. package/dist/commands/testing/project/permission/set.js +33 -0
  134. package/dist/commands/testing/project/permission/set.js.map +1 -0
  135. package/dist/commands/testing/project/permission/update.d.ts +19 -0
  136. package/dist/commands/testing/project/permission/update.js +33 -0
  137. package/dist/commands/testing/project/permission/update.js.map +1 -0
  138. package/dist/commands/testing/project/update.d.ts +14 -0
  139. package/dist/commands/testing/project/update.js +28 -0
  140. package/dist/commands/testing/project/update.js.map +1 -0
  141. package/dist/commands/testing/robot/create.d.ts +4 -1
  142. package/dist/commands/testing/robot/create.js +20 -5
  143. package/dist/commands/testing/robot/create.js.map +1 -1
  144. package/dist/commands/testing/robot/delete.d.ts +6 -1
  145. package/dist/commands/testing/robot/delete.js +13 -3
  146. package/dist/commands/testing/robot/delete.js.map +1 -1
  147. package/dist/commands/testing/robot/update.d.ts +19 -0
  148. package/dist/commands/testing/robot/update.js +49 -0
  149. package/dist/commands/testing/robot/update.js.map +1 -0
  150. package/dist/commands/testing/run.d.ts +27 -4
  151. package/dist/commands/testing/run.js +4 -11
  152. package/dist/commands/testing/run.js.map +1 -1
  153. package/dist/commands/testing/test/run.d.ts +27 -11
  154. package/dist/commands/testing/test/run.js +5 -37
  155. package/dist/commands/testing/test/run.js.map +1 -1
  156. package/dist/commands/testing/update.d.ts +6 -0
  157. package/dist/commands/testing/update.js +10 -0
  158. package/dist/commands/testing/update.js.map +1 -1
  159. package/dist/commands/testing/user-parameter/create.d.ts +19 -0
  160. package/dist/commands/testing/user-parameter/create.js +45 -0
  161. package/dist/commands/testing/user-parameter/create.js.map +1 -0
  162. package/dist/commands/testing/user-parameter/delete.d.ts +21 -0
  163. package/dist/commands/testing/user-parameter/delete.js +33 -0
  164. package/dist/commands/testing/user-parameter/delete.js.map +1 -0
  165. package/dist/commands/testing/user-parameter/get.d.ts +13 -0
  166. package/dist/commands/testing/user-parameter/get.js +21 -0
  167. package/dist/commands/testing/user-parameter/get.js.map +1 -0
  168. package/dist/commands/testing/user-parameter/list.d.ts +12 -0
  169. package/dist/commands/testing/user-parameter/list.js +23 -0
  170. package/dist/commands/testing/user-parameter/list.js.map +1 -0
  171. package/dist/commands/testing/user-parameter/update.d.ts +23 -0
  172. package/dist/commands/testing/user-parameter/update.js +45 -0
  173. package/dist/commands/testing/user-parameter/update.js.map +1 -0
  174. package/dist/commands/testing/variable/create.d.ts +6 -2
  175. package/dist/commands/testing/variable/create.js +14 -5
  176. package/dist/commands/testing/variable/create.js.map +1 -1
  177. package/dist/commands/testing/variable/delete.d.ts +6 -1
  178. package/dist/commands/testing/variable/delete.js +13 -3
  179. package/dist/commands/testing/variable/delete.js.map +1 -1
  180. package/dist/commands/testing/variable/get.d.ts +13 -0
  181. package/dist/commands/testing/variable/get.js +25 -0
  182. package/dist/commands/testing/variable/get.js.map +1 -0
  183. package/dist/commands/testing/variable/list.d.ts +4 -0
  184. package/dist/commands/testing/variable/list.js +15 -3
  185. package/dist/commands/testing/variable/list.js.map +1 -1
  186. package/dist/commands/testing/variable/update.d.ts +6 -2
  187. package/dist/commands/testing/variable/update.js +11 -5
  188. package/dist/commands/testing/variable/update.js.map +1 -1
  189. package/dist/lib/ai-chat-session.d.ts +2 -1
  190. package/dist/lib/ai-chat-session.js +8 -0
  191. package/dist/lib/ai-chat-session.js.map +1 -1
  192. package/dist/lib/ai-gateway.d.ts +5 -2
  193. package/dist/lib/ai-gateway.js +44 -5
  194. package/dist/lib/ai-gateway.js.map +1 -1
  195. package/dist/lib/ai-operations.d.ts +4 -2
  196. package/dist/lib/ai-operations.js +29 -3
  197. package/dist/lib/ai-operations.js.map +1 -1
  198. package/dist/lib/ai-types.d.ts +29 -0
  199. package/dist/lib/ai-types.js +25 -0
  200. package/dist/lib/ai-types.js.map +1 -1
  201. package/dist/lib/cicd-gateway.d.ts +6 -0
  202. package/dist/lib/cicd-gateway.js +13 -2
  203. package/dist/lib/cicd-gateway.js.map +1 -1
  204. package/dist/lib/credential-store.d.ts +3 -0
  205. package/dist/lib/credential-store.js +16 -0
  206. package/dist/lib/credential-store.js.map +1 -1
  207. package/dist/lib/credential-sync.d.ts +35 -0
  208. package/dist/lib/credential-sync.js +249 -0
  209. package/dist/lib/credential-sync.js.map +1 -0
  210. package/dist/lib/debug.js +3 -1
  211. package/dist/lib/debug.js.map +1 -1
  212. package/dist/lib/defaults-store.d.ts +18 -0
  213. package/dist/lib/defaults-store.js +182 -89
  214. package/dist/lib/defaults-store.js.map +1 -1
  215. package/dist/lib/environment-types.js +1 -1
  216. package/dist/lib/mcp/ai-tools.d.ts +3 -0
  217. package/dist/lib/mcp/ai-tools.js +6 -0
  218. package/dist/lib/mcp/ai-tools.js.map +1 -1
  219. package/dist/lib/mcp/command-id.js +3 -0
  220. package/dist/lib/mcp/command-id.js.map +1 -1
  221. package/dist/lib/mcp/redaction.d.ts +1 -2
  222. package/dist/lib/mcp/redaction.js +1 -23
  223. package/dist/lib/mcp/redaction.js.map +1 -1
  224. package/dist/lib/mcp/testing-live-tools.d.ts +126 -0
  225. package/dist/lib/mcp/testing-live-tools.js +215 -0
  226. package/dist/lib/mcp/testing-live-tools.js.map +1 -0
  227. package/dist/lib/mcp/testing-tools.d.ts +455 -9
  228. package/dist/lib/mcp/testing-tools.js +677 -37
  229. package/dist/lib/mcp/testing-tools.js.map +1 -1
  230. package/dist/lib/mcp/tools.d.ts +554 -14
  231. package/dist/lib/mcp/work-tools.js +7 -4
  232. package/dist/lib/mcp/work-tools.js.map +1 -1
  233. package/dist/lib/secret-redaction.d.ts +2 -0
  234. package/dist/lib/secret-redaction.js +24 -0
  235. package/dist/lib/secret-redaction.js.map +1 -0
  236. package/dist/lib/testing-config.d.ts +3 -0
  237. package/dist/lib/testing-config.js +9 -0
  238. package/dist/lib/testing-config.js.map +1 -1
  239. package/dist/lib/testing-confirmation.d.ts +14 -0
  240. package/dist/lib/testing-confirmation.js +17 -0
  241. package/dist/lib/testing-confirmation.js.map +1 -0
  242. package/dist/lib/testing-data-command.d.ts +21 -0
  243. package/dist/lib/testing-data-command.js +49 -0
  244. package/dist/lib/testing-data-command.js.map +1 -0
  245. package/dist/lib/testing-data-core.d.ts +22 -0
  246. package/dist/lib/testing-data-core.js +208 -0
  247. package/dist/lib/testing-data-core.js.map +1 -0
  248. package/dist/lib/testing-data-export.d.ts +1 -0
  249. package/dist/lib/testing-data-export.js +2 -0
  250. package/dist/lib/testing-data-export.js.map +1 -0
  251. package/dist/lib/testing-data-import.d.ts +1 -0
  252. package/dist/lib/testing-data-import.js +2 -0
  253. package/dist/lib/testing-data-import.js.map +1 -0
  254. package/dist/lib/testing-data-io.d.ts +21 -0
  255. package/dist/lib/testing-data-io.js +236 -0
  256. package/dist/lib/testing-data-io.js.map +1 -0
  257. package/dist/lib/testing-data-operations.d.ts +36 -0
  258. package/dist/lib/testing-data-operations.js +91 -0
  259. package/dist/lib/testing-data-operations.js.map +1 -0
  260. package/dist/lib/testing-data-types.d.ts +41 -0
  261. package/dist/lib/testing-data-types.js +3 -0
  262. package/dist/lib/testing-data-types.js.map +1 -0
  263. package/dist/lib/testing-flags.d.ts +62 -1
  264. package/dist/lib/testing-flags.js +177 -1
  265. package/dist/lib/testing-flags.js.map +1 -1
  266. package/dist/lib/testing-gateway.d.ts +17 -3
  267. package/dist/lib/testing-gateway.js +175 -45
  268. package/dist/lib/testing-gateway.js.map +1 -1
  269. package/dist/lib/testing-live-command.d.ts +24 -0
  270. package/dist/lib/testing-live-command.js +56 -0
  271. package/dist/lib/testing-live-command.js.map +1 -0
  272. package/dist/lib/testing-live-endpoints.d.ts +14 -0
  273. package/dist/lib/testing-live-endpoints.js +34 -0
  274. package/dist/lib/testing-live-endpoints.js.map +1 -0
  275. package/dist/lib/testing-live-history.d.ts +11 -0
  276. package/dist/lib/testing-live-history.js +96 -0
  277. package/dist/lib/testing-live-history.js.map +1 -0
  278. package/dist/lib/testing-live-operations.d.ts +118 -0
  279. package/dist/lib/testing-live-operations.js +676 -0
  280. package/dist/lib/testing-live-operations.js.map +1 -0
  281. package/dist/lib/testing-live-recorder.d.ts +14 -0
  282. package/dist/lib/testing-live-recorder.js +122 -0
  283. package/dist/lib/testing-live-recorder.js.map +1 -0
  284. package/dist/lib/testing-live-robot.d.ts +16 -0
  285. package/dist/lib/testing-live-robot.js +158 -0
  286. package/dist/lib/testing-live-robot.js.map +1 -0
  287. package/dist/lib/testing-live-state.d.ts +4 -0
  288. package/dist/lib/testing-live-state.js +90 -0
  289. package/dist/lib/testing-live-state.js.map +1 -0
  290. package/dist/lib/testing-live-types.d.ts +92 -0
  291. package/dist/lib/testing-live-types.js +2 -0
  292. package/dist/lib/testing-live-types.js.map +1 -0
  293. package/dist/lib/testing-operations.d.ts +157 -5
  294. package/dist/lib/testing-operations.js +829 -66
  295. package/dist/lib/testing-operations.js.map +1 -1
  296. package/dist/lib/testing-run-command.d.ts +25 -0
  297. package/dist/lib/testing-run-command.js +94 -0
  298. package/dist/lib/testing-run-command.js.map +1 -0
  299. package/dist/lib/testing-sanitization.d.ts +11 -0
  300. package/dist/lib/testing-sanitization.js +135 -0
  301. package/dist/lib/testing-sanitization.js.map +1 -0
  302. package/dist/lib/testing-schedule.d.ts +23 -0
  303. package/dist/lib/testing-schedule.js +48 -0
  304. package/dist/lib/testing-schedule.js.map +1 -0
  305. package/dist/lib/testing-secret-input.d.ts +12 -0
  306. package/dist/lib/testing-secret-input.js +56 -0
  307. package/dist/lib/testing-secret-input.js.map +1 -0
  308. package/dist/lib/testing-session.d.ts +8 -0
  309. package/dist/lib/testing-session.js +82 -0
  310. package/dist/lib/testing-session.js.map +1 -0
  311. package/dist/lib/testing-types.d.ts +143 -13
  312. package/dist/lib/testing-types.js +110 -5
  313. package/dist/lib/testing-types.js.map +1 -1
  314. package/dist/lib/testing-watch.d.ts +4 -0
  315. package/dist/lib/testing-watch.js +45 -0
  316. package/dist/lib/testing-watch.js.map +1 -0
  317. package/dist/lib/work-types.d.ts +1 -0
  318. package/dist/lib/work-types.js.map +1 -1
  319. package/oclif.manifest.json +7523 -2891
  320. package/package.json +12 -1
  321. package/templates/skills/agentia-testing/SKILL.md +9 -6
  322. package/templates/skills/agentia-testing/references/tests.md +70 -36
@@ -0,0 +1,249 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { resolveAiCredentials } from './ai-config.js';
3
+ import { AiGateway } from './ai-gateway.js';
4
+ import { agentUsesCicdIntegration } from './ai-types.js';
5
+ import { CicdGateway, tryResolveCicdCredentials, } from './cicd-gateway.js';
6
+ import { readCredentialSyncReceipt, readDefaults, resolveDefaults, writeCredentialSyncReceipt, } from './defaults-store.js';
7
+ import { salesforceIdsEqual } from './salesforce-id.js';
8
+ import { workEndpoint } from './work-types.js';
9
+ const CREDENTIAL_SYNC_SCHEMA_VERSION = 2;
10
+ const AI_INTEGRATION_NAME = 'Agentia CLI Copado CICD';
11
+ const activeSyncs = new Map();
12
+ function fingerprint(value) {
13
+ return createHash('sha256').update(value).digest('hex');
14
+ }
15
+ function trimOptional(value) {
16
+ const trimmed = value?.trim();
17
+ return trimmed === undefined || trimmed.length === 0 ? undefined : trimmed;
18
+ }
19
+ export function missingProjectDefaultCredentialWarning() {
20
+ return [
21
+ 'No CICD project default credential is configured.',
22
+ 'Run `agentia cicd project default set --credential <credential-id>` to set one.',
23
+ ].join(' ');
24
+ }
25
+ export function missingProjectDefaultWorkSetWarning() {
26
+ return [
27
+ missingProjectDefaultCredentialWarning(),
28
+ 'Then run `agentia cicd work update --source-credential <credential-id>` if the User Story should use it.',
29
+ ].join(' ');
30
+ }
31
+ export function missingStoryCredentialWarning(credentialId, workItemId) {
32
+ const updateTarget = workItemId === undefined ? '' : ` ${workItemId}`;
33
+ return [
34
+ 'The User Story has no source credential in Copado CICD.',
35
+ `Run \`agentia cicd work update${updateTarget} --source-credential ${credentialId}\` to bind the project default credential.`,
36
+ ].join(' ');
37
+ }
38
+ export function differingStoryCredentialWarning(storyCredentialId, projectDefaultCredentialId) {
39
+ return [
40
+ `The User Story source credential (${storyCredentialId}) differs from the project default credential (${projectDefaultCredentialId}).`,
41
+ 'Updating the User Story to use the project default credential.',
42
+ ].join(' ');
43
+ }
44
+ export async function readProjectDefaultCredentialContext() {
45
+ const [localDefaults, globalDefaults] = await Promise.all([readDefaults('local'), readDefaults('global')]);
46
+ const resolved = resolveDefaults(localDefaults, globalDefaults, ['credential', 'environment']);
47
+ const credential = resolved.find((entry) => entry.key === 'credential')?.value;
48
+ const environment = resolved.find((entry) => entry.key === 'environment')?.value;
49
+ return {
50
+ ...(typeof credential === 'string' && credential.trim().length > 0
51
+ ? { credentialId: credential.trim() }
52
+ : {}),
53
+ ...(typeof environment === 'string' && environment.trim().length > 0
54
+ ? { environmentId: environment.trim() }
55
+ : {}),
56
+ };
57
+ }
58
+ export function sanitizeWorkSetUserStory(userStory) {
59
+ const safeUserStory = { ...userStory };
60
+ delete safeUserStory.oauthSignature;
61
+ return safeUserStory;
62
+ }
63
+ export async function reconcileWorkSetCredential(workItem) {
64
+ const projectDefault = await readProjectDefaultCredentialContext();
65
+ const storyCredential = trimOptional(workItem.sourceCredential);
66
+ const sanitized = sanitizeWorkSetUserStory(workItem);
67
+ if (projectDefault.credentialId === undefined) {
68
+ return {
69
+ updated: false,
70
+ warnings: [missingProjectDefaultWorkSetWarning()],
71
+ workItem: sanitized,
72
+ };
73
+ }
74
+ if (storyCredential === undefined) {
75
+ return {
76
+ updated: false,
77
+ warnings: [missingStoryCredentialWarning(projectDefault.credentialId, workItem.id)],
78
+ workItem: sanitized,
79
+ };
80
+ }
81
+ if (salesforceIdsEqual(storyCredential, projectDefault.credentialId)) {
82
+ return {
83
+ updated: false,
84
+ warnings: [],
85
+ workItem: sanitized,
86
+ };
87
+ }
88
+ const warning = differingStoryCredentialWarning(storyCredential, projectDefault.credentialId);
89
+ const updated = await CicdGateway.call({
90
+ body: {
91
+ sourceCredential: projectDefault.credentialId,
92
+ },
93
+ endpoint: workEndpoint(workItem.id),
94
+ headers: { 'Content-Type': 'application/json' },
95
+ method: 'PATCH',
96
+ });
97
+ return {
98
+ updated: true,
99
+ warnings: [warning],
100
+ workItem: sanitizeWorkSetUserStory(updated),
101
+ };
102
+ }
103
+ function localReceiptMatches(receipt, context) {
104
+ return (receipt?.schemaVersion === context.schemaVersion &&
105
+ receipt.cicdBaseUrl === context.cicdBaseUrl &&
106
+ receipt.cicdKeyFingerprint === context.cicdKeyFingerprint &&
107
+ salesforceIdsEqual(receipt.credentialId, context.credentialId) &&
108
+ (receipt.environmentId ?? '') === (context.environmentId ?? '') &&
109
+ (receipt.orgId ?? '') === (context.orgId ?? ''));
110
+ }
111
+ function integrationWorkspace(integration) {
112
+ return integration.workspaceId ?? integration.workspace_id ?? undefined;
113
+ }
114
+ function matchingWorkspaceIntegrations(integrations, workspaceId) {
115
+ return integrations.filter((integration) => integration.type === 'copado_cicd' &&
116
+ integration.level === 'MEMBER' &&
117
+ integrationWorkspace(integration) === workspaceId);
118
+ }
119
+ function aiReceiptMatches(receipt, baseUrl, organizationId, workspaceId) {
120
+ return (receipt.ai?.baseUrl === baseUrl &&
121
+ receipt.ai.organizationId === organizationId &&
122
+ receipt.ai.workspaceId === workspaceId);
123
+ }
124
+ async function replaceAiIntegration(context, cicdCredentials, workspaceId, options) {
125
+ const integrations = await AiGateway.listIntegrations(options);
126
+ const matches = matchingWorkspaceIntegrations(integrations, workspaceId);
127
+ for (const integration of matches) {
128
+ // Replacement follows the established UI sequence because CICD credentials cannot be updated.
129
+ // eslint-disable-next-line no-await-in-loop
130
+ await AiGateway.deleteIntegration(integration.id, options);
131
+ }
132
+ const created = await AiGateway.createIntegration({
133
+ category: 'GENERAL',
134
+ config: { credentialId: context.credentialId },
135
+ credential: { apiKey: cicdCredentials.apiKey },
136
+ level: 'MEMBER',
137
+ name: AI_INTEGRATION_NAME,
138
+ type: 'copado_cicd',
139
+ workspaceId,
140
+ }, options);
141
+ const createdWorkspace = integrationWorkspace(created);
142
+ const createdCredentialId = created.config?.credentialId;
143
+ if ((created.type !== undefined && created.type !== 'copado_cicd') ||
144
+ (created.level !== undefined && created.level !== 'MEMBER') ||
145
+ (createdWorkspace !== undefined && createdWorkspace !== workspaceId) ||
146
+ (typeof createdCredentialId === 'string' &&
147
+ !salesforceIdsEqual(createdCredentialId, context.credentialId))) {
148
+ throw new Error('AI Gateway returned a Copado CICD integration that does not match the requested workspace context.');
149
+ }
150
+ return created.id;
151
+ }
152
+ function buildLocalContext(cicdCredentials, credentialId, environmentId, orgId) {
153
+ return {
154
+ cicdBaseUrl: cicdCredentials.baseUrl,
155
+ cicdKeyFingerprint: fingerprint(cicdCredentials.apiKey),
156
+ credentialId,
157
+ schemaVersion: CREDENTIAL_SYNC_SCHEMA_VERSION,
158
+ ...(environmentId === undefined ? {} : { environmentId }),
159
+ ...(orgId === undefined ? {} : { orgId }),
160
+ };
161
+ }
162
+ async function ensureAiIntegrationWithContext(input) {
163
+ const { aiOptions, cicdCredentials, context, force, workspaceId } = input;
164
+ const aiCredentials = resolveAiCredentials({ ...aiOptions, workspace: workspaceId });
165
+ const cached = await readCredentialSyncReceipt();
166
+ if (!force &&
167
+ localReceiptMatches(cached, context) &&
168
+ aiReceiptMatches(cached, aiCredentials.baseUrl, aiCredentials.orgId, workspaceId)) {
169
+ return {
170
+ credentialId: context.credentialId,
171
+ ...(context.environmentId === undefined ? {} : { environmentId: context.environmentId }),
172
+ integrationId: cached.ai?.integrationId,
173
+ ...(context.orgId === undefined ? {} : { orgId: context.orgId }),
174
+ workspaceId,
175
+ };
176
+ }
177
+ const integrationId = await replaceAiIntegration(context, cicdCredentials, workspaceId, aiOptions);
178
+ await writeCredentialSyncReceipt({
179
+ ...context,
180
+ ai: {
181
+ baseUrl: aiCredentials.baseUrl,
182
+ integrationId,
183
+ ...(aiCredentials.orgId === undefined ? {} : { organizationId: aiCredentials.orgId }),
184
+ workspaceId,
185
+ },
186
+ });
187
+ return {
188
+ credentialId: context.credentialId,
189
+ ...(context.environmentId === undefined ? {} : { environmentId: context.environmentId }),
190
+ integrationId,
191
+ ...(context.orgId === undefined ? {} : { orgId: context.orgId }),
192
+ workspaceId,
193
+ };
194
+ }
195
+ export async function ensureAgentCicdIntegration(agent, workspaceId, options = {}) {
196
+ if (!agentUsesCicdIntegration(agent) || options.noCredentialSync === true)
197
+ return undefined;
198
+ const cicdCredentials = tryResolveCicdCredentials({ forceRemote: true });
199
+ if (cicdCredentials === undefined)
200
+ return undefined;
201
+ if (workspaceId === undefined) {
202
+ throw new Error('AI dialogue did not identify its workspace. Pass --workspace or start a new dialogue before credential synchronization.');
203
+ }
204
+ const projectDefault = await readProjectDefaultCredentialContext();
205
+ const credentialId = trimOptional(options.credentialId) ?? projectDefault.credentialId;
206
+ if (credentialId === undefined) {
207
+ throw new Error(missingProjectDefaultCredentialWarning());
208
+ }
209
+ const aiCredentials = resolveAiCredentials({ ...options, workspace: workspaceId });
210
+ const orgId = aiCredentials.orgId === undefined ? undefined : String(aiCredentials.orgId);
211
+ const context = buildLocalContext(cicdCredentials, credentialId, projectDefault.environmentId, orgId);
212
+ const cached = await readCredentialSyncReceipt();
213
+ const cacheKey = [
214
+ aiCredentials.baseUrl,
215
+ orgId ?? '',
216
+ workspaceId,
217
+ cicdCredentials.baseUrl,
218
+ fingerprint(cicdCredentials.apiKey),
219
+ credentialId,
220
+ projectDefault.environmentId ?? '',
221
+ ].join('|');
222
+ if (options.forceCredentialSync !== true &&
223
+ localReceiptMatches(cached, context) &&
224
+ aiReceiptMatches(cached, aiCredentials.baseUrl, aiCredentials.orgId, workspaceId)) {
225
+ return {
226
+ credentialId: cached.credentialId,
227
+ ...(cached.environmentId === undefined ? {} : { environmentId: cached.environmentId }),
228
+ integrationId: cached.ai?.integrationId,
229
+ ...(cached.orgId === undefined ? {} : { orgId: cached.orgId }),
230
+ workspaceId,
231
+ };
232
+ }
233
+ const active = activeSyncs.get(cacheKey);
234
+ if (active !== undefined)
235
+ return active;
236
+ const sync = ensureAiIntegrationWithContext({
237
+ aiOptions: options,
238
+ cicdCredentials,
239
+ context,
240
+ force: options.forceCredentialSync === true,
241
+ workspaceId,
242
+ }).finally(() => activeSyncs.delete(cacheKey));
243
+ activeSyncs.set(cacheKey, sync);
244
+ return sync;
245
+ }
246
+ export function clearCredentialSyncsForTests() {
247
+ activeSyncs.clear();
248
+ }
249
+ //# sourceMappingURL=credential-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-sync.js","sourceRoot":"","sources":["../../src/lib/credential-sync.ts"],"names":[],"mappings":"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"}
package/dist/lib/debug.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { redactSecrets } from './secret-redaction.js';
1
2
  export function isVerboseDebug(env = process.env) {
2
3
  return env.DEBUG?.trim().toLowerCase() === 'verbose';
3
4
  }
@@ -17,7 +18,8 @@ export function logVerboseDebug(section, payload) {
17
18
  if (!isVerboseDebug()) {
18
19
  return;
19
20
  }
20
- const serialized = typeof payload === 'string' ? payload : JSON.stringify(payload, null, 2);
21
+ const redacted = redactSecrets(payload);
22
+ const serialized = typeof redacted === 'string' ? redacted : JSON.stringify(redacted, null, 2);
21
23
  process.stderr.write(`[DEBUG] ${section}\n${serialized}\n`);
22
24
  }
23
25
  //# sourceMappingURL=debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,OAAgB;IAC/D,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAM;IACR,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,KAAK,UAAU,IAAI,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AAEnD,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,OAAgB;IAC/D,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,KAAK,UAAU,IAAI,CAAC,CAAA;AAC7D,CAAC"}
@@ -1,6 +1,21 @@
1
1
  import { type ProjectDefaultKey, type ProjectDefaults, type ProjectDefaultScope, type ResolvedProjectDefault } from './project-defaults.js';
2
2
  import { type CachedUserContext, type StoredUserContext } from './user-context-types.js';
3
3
  export declare const DEFAULT_WORK_PUSH_RETRY_TIMEOUT_SECONDS = 300;
4
+ export type CredentialSyncAiReceipt = {
5
+ baseUrl: string;
6
+ integrationId: string;
7
+ organizationId?: number;
8
+ workspaceId: string;
9
+ };
10
+ export type CredentialSyncReceipt = {
11
+ ai?: CredentialSyncAiReceipt;
12
+ cicdBaseUrl: string;
13
+ cicdKeyFingerprint: string;
14
+ credentialId: string;
15
+ environmentId?: string;
16
+ orgId?: string;
17
+ schemaVersion: 2;
18
+ };
4
19
  export type DefaultsStorePaths = {
5
20
  /** Home-directory config (`~/.config/agentia-cli/config.json`). */
6
21
  globalPath: string;
@@ -23,6 +38,9 @@ export declare function readDefaults(scope: ProjectDefaultScope): Promise<Projec
23
38
  export declare function readUserContext(): Promise<CachedUserContext | undefined>;
24
39
  export declare function writeUserContext(cached: CachedUserContext): Promise<CachedUserContext>;
25
40
  export declare function clearUserContext(): Promise<void>;
41
+ export declare function readCredentialSyncReceipt(): Promise<CredentialSyncReceipt | undefined>;
42
+ export declare function writeCredentialSyncReceipt(receipt: CredentialSyncReceipt): Promise<CredentialSyncReceipt>;
43
+ export declare function clearCredentialSyncReceipt(): Promise<void>;
26
44
  export declare function readLastWorkItem(): Promise<string | undefined>;
27
45
  export declare function readLastWorkItemId(): Promise<string | undefined>;
28
46
  export declare function readLastWorkItemTitle(): Promise<string | undefined>;