@copado/agentia-cli 0.112.0-alpha.0 → 0.113.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 (277) hide show
  1. package/README.md +1965 -410
  2. package/dist/commands/testing/build/abort.d.ts +7 -1
  3. package/dist/commands/testing/build/abort.js +13 -3
  4. package/dist/commands/testing/build/abort.js.map +1 -1
  5. package/dist/commands/testing/build/get.d.ts +18 -0
  6. package/dist/commands/testing/build/get.js +38 -0
  7. package/dist/commands/testing/build/get.js.map +1 -0
  8. package/dist/commands/testing/build/latest.d.ts +12 -0
  9. package/dist/commands/testing/build/latest.js +40 -0
  10. package/dist/commands/testing/build/latest.js.map +1 -0
  11. package/dist/commands/testing/build/list.d.ts +6 -1
  12. package/dist/commands/testing/build/list.js +23 -1
  13. package/dist/commands/testing/build/list.js.map +1 -1
  14. package/dist/commands/testing/build/logs.d.ts +6 -0
  15. package/dist/commands/testing/build/logs.js +8 -1
  16. package/dist/commands/testing/build/logs.js.map +1 -1
  17. package/dist/commands/testing/build/run.d.ts +27 -4
  18. package/dist/commands/testing/build/run.js +4 -18
  19. package/dist/commands/testing/build/run.js.map +1 -1
  20. package/dist/commands/testing/build/search.d.ts +21 -0
  21. package/dist/commands/testing/build/search.js +57 -0
  22. package/dist/commands/testing/build/search.js.map +1 -0
  23. package/dist/commands/testing/create.d.ts +1 -15
  24. package/dist/commands/testing/create.js +1 -43
  25. package/dist/commands/testing/create.js.map +1 -1
  26. package/dist/commands/testing/data-table/create.d.ts +30 -0
  27. package/dist/commands/testing/data-table/create.js +52 -0
  28. package/dist/commands/testing/data-table/create.js.map +1 -0
  29. package/dist/commands/testing/data-table/delete.d.ts +25 -0
  30. package/dist/commands/testing/data-table/delete.js +40 -0
  31. package/dist/commands/testing/data-table/delete.js.map +1 -0
  32. package/dist/commands/testing/data-table/export.d.ts +33 -0
  33. package/dist/commands/testing/data-table/export.js +59 -0
  34. package/dist/commands/testing/data-table/export.js.map +1 -0
  35. package/dist/commands/testing/data-table/get.d.ts +21 -0
  36. package/dist/commands/testing/data-table/get.js +35 -0
  37. package/dist/commands/testing/data-table/get.js.map +1 -0
  38. package/dist/commands/testing/data-table/list.d.ts +16 -0
  39. package/dist/commands/testing/data-table/list.js +33 -0
  40. package/dist/commands/testing/data-table/list.js.map +1 -0
  41. package/dist/commands/testing/data-table/update.d.ts +34 -0
  42. package/dist/commands/testing/data-table/update.js +64 -0
  43. package/dist/commands/testing/data-table/update.js.map +1 -0
  44. package/dist/commands/testing/job/create.d.ts +18 -0
  45. package/dist/commands/testing/job/create.js +60 -4
  46. package/dist/commands/testing/job/create.js.map +1 -1
  47. package/dist/commands/testing/job/delete.d.ts +6 -1
  48. package/dist/commands/testing/job/delete.js +13 -3
  49. package/dist/commands/testing/job/delete.js.map +1 -1
  50. package/dist/commands/testing/job/refs.d.ts +17 -0
  51. package/dist/commands/testing/job/refs.js +30 -0
  52. package/dist/commands/testing/job/refs.js.map +1 -0
  53. package/dist/commands/testing/job/schedule/get.d.ts +23 -0
  54. package/dist/commands/testing/job/schedule/get.js +31 -0
  55. package/dist/commands/testing/job/schedule/get.js.map +1 -0
  56. package/dist/commands/testing/job/schedule/remove.d.ts +24 -0
  57. package/dist/commands/testing/job/schedule/remove.js +34 -0
  58. package/dist/commands/testing/job/schedule/remove.js.map +1 -0
  59. package/dist/commands/testing/job/schedule/set.d.ts +23 -0
  60. package/dist/commands/testing/job/schedule/set.js +39 -0
  61. package/dist/commands/testing/job/schedule/set.js.map +1 -0
  62. package/dist/commands/testing/job/update.d.ts +2 -0
  63. package/dist/commands/testing/job/update.js +7 -1
  64. package/dist/commands/testing/job/update.js.map +1 -1
  65. package/dist/commands/testing/job/upload.d.ts +6 -0
  66. package/dist/commands/testing/job/upload.js +22 -0
  67. package/dist/commands/testing/job/upload.js.map +1 -1
  68. package/dist/commands/testing/live/continue.d.ts +20 -0
  69. package/dist/commands/testing/live/continue.js +21 -0
  70. package/dist/commands/testing/live/continue.js.map +1 -0
  71. package/dist/commands/testing/live/execute.d.ts +30 -0
  72. package/dist/commands/testing/live/execute.js +43 -0
  73. package/dist/commands/testing/live/execute.js.map +1 -0
  74. package/dist/commands/testing/live/history.d.ts +23 -0
  75. package/dist/commands/testing/live/history.js +35 -0
  76. package/dist/commands/testing/live/history.js.map +1 -0
  77. package/dist/commands/testing/live/inspect.d.ts +18 -0
  78. package/dist/commands/testing/live/inspect.js +30 -0
  79. package/dist/commands/testing/live/inspect.js.map +1 -0
  80. package/dist/commands/testing/live/interrupt.d.ts +20 -0
  81. package/dist/commands/testing/live/interrupt.js +21 -0
  82. package/dist/commands/testing/live/interrupt.js.map +1 -0
  83. package/dist/commands/testing/live/recorder.d.ts +23 -0
  84. package/dist/commands/testing/live/recorder.js +134 -0
  85. package/dist/commands/testing/live/recorder.js.map +1 -0
  86. package/dist/commands/testing/live/reports.d.ts +20 -0
  87. package/dist/commands/testing/live/reports.js +31 -0
  88. package/dist/commands/testing/live/reports.js.map +1 -0
  89. package/dist/commands/testing/live/screenshot.d.ts +23 -0
  90. package/dist/commands/testing/live/screenshot.js +25 -0
  91. package/dist/commands/testing/live/screenshot.js.map +1 -0
  92. package/dist/commands/testing/live/set-options.d.ts +27 -0
  93. package/dist/commands/testing/live/set-options.js +28 -0
  94. package/dist/commands/testing/live/set-options.js.map +1 -0
  95. package/dist/commands/testing/live/start.d.ts +29 -0
  96. package/dist/commands/testing/live/start.js +53 -0
  97. package/dist/commands/testing/live/start.js.map +1 -0
  98. package/dist/commands/testing/live/status.d.ts +19 -0
  99. package/dist/commands/testing/live/status.js +27 -0
  100. package/dist/commands/testing/live/status.js.map +1 -0
  101. package/dist/commands/testing/live/stop.d.ts +24 -0
  102. package/dist/commands/testing/live/stop.js +38 -0
  103. package/dist/commands/testing/live/stop.js.map +1 -0
  104. package/dist/commands/testing/live/view.d.ts +16 -0
  105. package/dist/commands/testing/live/view.js +36 -0
  106. package/dist/commands/testing/live/view.js.map +1 -0
  107. package/dist/commands/testing/logs.d.ts +6 -0
  108. package/dist/commands/testing/logs.js +8 -1
  109. package/dist/commands/testing/logs.js.map +1 -1
  110. package/dist/commands/testing/project/create.d.ts +3 -0
  111. package/dist/commands/testing/project/create.js +17 -1
  112. package/dist/commands/testing/project/create.js.map +1 -1
  113. package/dist/commands/testing/project/delete.d.ts +7 -2
  114. package/dist/commands/testing/project/delete.js +15 -3
  115. package/dist/commands/testing/project/delete.js.map +1 -1
  116. package/dist/commands/testing/project/get.js +1 -1
  117. package/dist/commands/testing/project/get.js.map +1 -1
  118. package/dist/commands/testing/project/permission/get.d.ts +13 -0
  119. package/dist/commands/testing/project/permission/get.js +21 -0
  120. package/dist/commands/testing/project/permission/get.js.map +1 -0
  121. package/dist/commands/testing/project/permission/list.d.ts +13 -0
  122. package/dist/commands/testing/project/permission/list.js +21 -0
  123. package/dist/commands/testing/project/permission/list.js.map +1 -0
  124. package/dist/commands/testing/project/permission/set.d.ts +19 -0
  125. package/dist/commands/testing/project/permission/set.js +33 -0
  126. package/dist/commands/testing/project/permission/set.js.map +1 -0
  127. package/dist/commands/testing/project/permission/update.d.ts +19 -0
  128. package/dist/commands/testing/project/permission/update.js +33 -0
  129. package/dist/commands/testing/project/permission/update.js.map +1 -0
  130. package/dist/commands/testing/project/update.d.ts +14 -0
  131. package/dist/commands/testing/project/update.js +28 -0
  132. package/dist/commands/testing/project/update.js.map +1 -0
  133. package/dist/commands/testing/robot/create.d.ts +4 -1
  134. package/dist/commands/testing/robot/create.js +20 -5
  135. package/dist/commands/testing/robot/create.js.map +1 -1
  136. package/dist/commands/testing/robot/delete.d.ts +6 -1
  137. package/dist/commands/testing/robot/delete.js +13 -3
  138. package/dist/commands/testing/robot/delete.js.map +1 -1
  139. package/dist/commands/testing/robot/update.d.ts +19 -0
  140. package/dist/commands/testing/robot/update.js +49 -0
  141. package/dist/commands/testing/robot/update.js.map +1 -0
  142. package/dist/commands/testing/run.d.ts +27 -4
  143. package/dist/commands/testing/run.js +4 -11
  144. package/dist/commands/testing/run.js.map +1 -1
  145. package/dist/commands/testing/test/run.d.ts +27 -11
  146. package/dist/commands/testing/test/run.js +5 -37
  147. package/dist/commands/testing/test/run.js.map +1 -1
  148. package/dist/commands/testing/update.d.ts +6 -0
  149. package/dist/commands/testing/update.js +10 -0
  150. package/dist/commands/testing/update.js.map +1 -1
  151. package/dist/commands/testing/user-parameter/create.d.ts +19 -0
  152. package/dist/commands/testing/user-parameter/create.js +45 -0
  153. package/dist/commands/testing/user-parameter/create.js.map +1 -0
  154. package/dist/commands/testing/user-parameter/delete.d.ts +21 -0
  155. package/dist/commands/testing/user-parameter/delete.js +33 -0
  156. package/dist/commands/testing/user-parameter/delete.js.map +1 -0
  157. package/dist/commands/testing/user-parameter/get.d.ts +13 -0
  158. package/dist/commands/testing/user-parameter/get.js +21 -0
  159. package/dist/commands/testing/user-parameter/get.js.map +1 -0
  160. package/dist/commands/testing/user-parameter/list.d.ts +12 -0
  161. package/dist/commands/testing/user-parameter/list.js +23 -0
  162. package/dist/commands/testing/user-parameter/list.js.map +1 -0
  163. package/dist/commands/testing/user-parameter/update.d.ts +23 -0
  164. package/dist/commands/testing/user-parameter/update.js +45 -0
  165. package/dist/commands/testing/user-parameter/update.js.map +1 -0
  166. package/dist/commands/testing/variable/create.d.ts +6 -2
  167. package/dist/commands/testing/variable/create.js +14 -5
  168. package/dist/commands/testing/variable/create.js.map +1 -1
  169. package/dist/commands/testing/variable/delete.d.ts +6 -1
  170. package/dist/commands/testing/variable/delete.js +13 -3
  171. package/dist/commands/testing/variable/delete.js.map +1 -1
  172. package/dist/commands/testing/variable/get.d.ts +13 -0
  173. package/dist/commands/testing/variable/get.js +25 -0
  174. package/dist/commands/testing/variable/get.js.map +1 -0
  175. package/dist/commands/testing/variable/list.d.ts +4 -0
  176. package/dist/commands/testing/variable/list.js +15 -3
  177. package/dist/commands/testing/variable/list.js.map +1 -1
  178. package/dist/commands/testing/variable/update.d.ts +6 -2
  179. package/dist/commands/testing/variable/update.js +11 -5
  180. package/dist/commands/testing/variable/update.js.map +1 -1
  181. package/dist/lib/credential-store.d.ts +3 -0
  182. package/dist/lib/credential-store.js +16 -0
  183. package/dist/lib/credential-store.js.map +1 -1
  184. package/dist/lib/mcp/command-id.js +3 -0
  185. package/dist/lib/mcp/command-id.js.map +1 -1
  186. package/dist/lib/mcp/testing-live-tools.d.ts +126 -0
  187. package/dist/lib/mcp/testing-live-tools.js +215 -0
  188. package/dist/lib/mcp/testing-live-tools.js.map +1 -0
  189. package/dist/lib/mcp/testing-tools.d.ts +455 -9
  190. package/dist/lib/mcp/testing-tools.js +677 -37
  191. package/dist/lib/mcp/testing-tools.js.map +1 -1
  192. package/dist/lib/mcp/tools.d.ts +551 -14
  193. package/dist/lib/testing-config.d.ts +3 -0
  194. package/dist/lib/testing-config.js +9 -0
  195. package/dist/lib/testing-config.js.map +1 -1
  196. package/dist/lib/testing-confirmation.d.ts +14 -0
  197. package/dist/lib/testing-confirmation.js +17 -0
  198. package/dist/lib/testing-confirmation.js.map +1 -0
  199. package/dist/lib/testing-data-command.d.ts +21 -0
  200. package/dist/lib/testing-data-command.js +49 -0
  201. package/dist/lib/testing-data-command.js.map +1 -0
  202. package/dist/lib/testing-data-core.d.ts +22 -0
  203. package/dist/lib/testing-data-core.js +208 -0
  204. package/dist/lib/testing-data-core.js.map +1 -0
  205. package/dist/lib/testing-data-export.d.ts +1 -0
  206. package/dist/lib/testing-data-export.js +2 -0
  207. package/dist/lib/testing-data-export.js.map +1 -0
  208. package/dist/lib/testing-data-import.d.ts +1 -0
  209. package/dist/lib/testing-data-import.js +2 -0
  210. package/dist/lib/testing-data-import.js.map +1 -0
  211. package/dist/lib/testing-data-io.d.ts +21 -0
  212. package/dist/lib/testing-data-io.js +236 -0
  213. package/dist/lib/testing-data-io.js.map +1 -0
  214. package/dist/lib/testing-data-operations.d.ts +36 -0
  215. package/dist/lib/testing-data-operations.js +91 -0
  216. package/dist/lib/testing-data-operations.js.map +1 -0
  217. package/dist/lib/testing-data-types.d.ts +41 -0
  218. package/dist/lib/testing-data-types.js +3 -0
  219. package/dist/lib/testing-data-types.js.map +1 -0
  220. package/dist/lib/testing-flags.d.ts +62 -1
  221. package/dist/lib/testing-flags.js +177 -1
  222. package/dist/lib/testing-flags.js.map +1 -1
  223. package/dist/lib/testing-gateway.d.ts +17 -3
  224. package/dist/lib/testing-gateway.js +175 -45
  225. package/dist/lib/testing-gateway.js.map +1 -1
  226. package/dist/lib/testing-live-command.d.ts +24 -0
  227. package/dist/lib/testing-live-command.js +56 -0
  228. package/dist/lib/testing-live-command.js.map +1 -0
  229. package/dist/lib/testing-live-endpoints.d.ts +14 -0
  230. package/dist/lib/testing-live-endpoints.js +34 -0
  231. package/dist/lib/testing-live-endpoints.js.map +1 -0
  232. package/dist/lib/testing-live-history.d.ts +11 -0
  233. package/dist/lib/testing-live-history.js +96 -0
  234. package/dist/lib/testing-live-history.js.map +1 -0
  235. package/dist/lib/testing-live-operations.d.ts +118 -0
  236. package/dist/lib/testing-live-operations.js +676 -0
  237. package/dist/lib/testing-live-operations.js.map +1 -0
  238. package/dist/lib/testing-live-recorder.d.ts +14 -0
  239. package/dist/lib/testing-live-recorder.js +122 -0
  240. package/dist/lib/testing-live-recorder.js.map +1 -0
  241. package/dist/lib/testing-live-robot.d.ts +16 -0
  242. package/dist/lib/testing-live-robot.js +158 -0
  243. package/dist/lib/testing-live-robot.js.map +1 -0
  244. package/dist/lib/testing-live-state.d.ts +4 -0
  245. package/dist/lib/testing-live-state.js +90 -0
  246. package/dist/lib/testing-live-state.js.map +1 -0
  247. package/dist/lib/testing-live-types.d.ts +92 -0
  248. package/dist/lib/testing-live-types.js +2 -0
  249. package/dist/lib/testing-live-types.js.map +1 -0
  250. package/dist/lib/testing-operations.d.ts +157 -5
  251. package/dist/lib/testing-operations.js +829 -66
  252. package/dist/lib/testing-operations.js.map +1 -1
  253. package/dist/lib/testing-run-command.d.ts +25 -0
  254. package/dist/lib/testing-run-command.js +94 -0
  255. package/dist/lib/testing-run-command.js.map +1 -0
  256. package/dist/lib/testing-sanitization.d.ts +11 -0
  257. package/dist/lib/testing-sanitization.js +135 -0
  258. package/dist/lib/testing-sanitization.js.map +1 -0
  259. package/dist/lib/testing-schedule.d.ts +23 -0
  260. package/dist/lib/testing-schedule.js +48 -0
  261. package/dist/lib/testing-schedule.js.map +1 -0
  262. package/dist/lib/testing-secret-input.d.ts +12 -0
  263. package/dist/lib/testing-secret-input.js +56 -0
  264. package/dist/lib/testing-secret-input.js.map +1 -0
  265. package/dist/lib/testing-session.d.ts +8 -0
  266. package/dist/lib/testing-session.js +82 -0
  267. package/dist/lib/testing-session.js.map +1 -0
  268. package/dist/lib/testing-types.d.ts +143 -13
  269. package/dist/lib/testing-types.js +110 -5
  270. package/dist/lib/testing-types.js.map +1 -1
  271. package/dist/lib/testing-watch.d.ts +4 -0
  272. package/dist/lib/testing-watch.js +45 -0
  273. package/dist/lib/testing-watch.js.map +1 -0
  274. package/oclif.manifest.json +8354 -3760
  275. package/package.json +12 -1
  276. package/templates/skills/agentia-testing/SKILL.md +9 -6
  277. package/templates/skills/agentia-testing/references/tests.md +70 -36
@@ -0,0 +1,23 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveHistory extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
13
+ status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ };
17
+ run(): Promise<{
18
+ count: number;
19
+ executions: import("../../../lib/testing-live-types.js").TestingLiveHistoryRecord[];
20
+ jobId: number;
21
+ projectId: number;
22
+ }>;
23
+ }
@@ -0,0 +1,35 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { getTestingLiveHistory } from '../../../lib/testing-live-operations.js';
5
+ import { readTestingLiveState } from '../../../lib/testing-live-state.js';
6
+ export default class TestingLiveHistory extends AgentiaCommand {
7
+ static args = { 'job-id': Args.integer({ description: 'CRT job/test ID; defaults to the active session.', required: false }) };
8
+ static description = 'Read bounded sanitized local CRT live execution history';
9
+ static examples = ['<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --limit 20 --json'];
10
+ static flags = {
11
+ ...testingLiveCommonFlags,
12
+ limit: Flags.integer({ default: 10, description: 'Maximum records to return.', max: 500, min: 1 }),
13
+ status: Flags.option({ description: 'Execution status filter.', options: ['completed', 'failed', 'recorded'] })(),
14
+ };
15
+ async run() {
16
+ const { args, flags } = await this.parse(TestingLiveHistory);
17
+ const active = args['job-id'] === undefined ? await readTestingLiveState() : undefined;
18
+ const jobId = args['job-id'] ?? active?.jobId;
19
+ if (jobId === undefined || (active !== undefined && active.projectId !== flags.project)) {
20
+ throw new Error('Provide a job ID or start a live session for this project.');
21
+ }
22
+ const result = getTestingLiveHistory({
23
+ jobId,
24
+ limit: flags.limit,
25
+ projectId: flags.project,
26
+ status: flags.status,
27
+ });
28
+ this.display(() => {
29
+ for (const execution of result.executions)
30
+ this.log(`${execution.startedAt} [${execution.status}] ${execution.lines.join(' | ')}`);
31
+ });
32
+ return result;
33
+ }
34
+ }
35
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,qBAAqB,EAAC,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAA;AAEvE,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,kDAAkD,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IACnI,MAAM,CAAU,WAAW,GAAG,yDAAyD,CAAA;IACvF,MAAM,CAAU,QAAQ,GAAG,CAAC,uFAAuF,CAAC,CAAA;IACpH,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;QAChG,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAC,CAAC,EAAE;KAChH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,KAAK,CAAA;QAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,MAAM,EAAE,KAAK,CAAC,MAAyD;SACxE,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACpI,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveInspect extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ dom: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ };
17
+ run(): Promise<Record<string, unknown>>;
18
+ }
@@ -0,0 +1,30 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { inspectTestingLive } from '../../../lib/testing-live-operations.js';
5
+ export default class TestingLiveInspect extends AgentiaCommand {
6
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
7
+ static description = 'Inspect bounded, sanitized page state from an active CRT live session';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> --project <project-id> --json',
10
+ '<%= config.bin %> <%= command.id %> --project <project-id> --dom --output page.html',
11
+ ];
12
+ static flags = {
13
+ ...testingLiveCommonFlags,
14
+ dom: Flags.boolean({ default: false, description: 'Fetch raw page DOM; requires --output.' }),
15
+ output: Flags.string({ dependsOn: ['dom'], description: 'Explicit file path for raw DOM.' }),
16
+ };
17
+ async run() {
18
+ const { args, flags } = await this.parse(TestingLiveInspect);
19
+ const result = await this.withSpinner('Inspecting CRT live session', () => inspectTestingLive({
20
+ dom: flags.dom,
21
+ jobId: args['job-id'],
22
+ output: flags.output,
23
+ projectId: flags.project,
24
+ sessionId: flags['session-id'],
25
+ }));
26
+ this.display(() => this.log(flags.dom ? `DOM written to ${String(result.path)}.` : JSON.stringify(result, null, 2)));
27
+ return result;
28
+ }
29
+ }
30
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,uEAAuE,CAAA;IACrG,MAAM,CAAU,QAAQ,GAAG;QACzB,mEAAmE;QACnE,qFAAqF;KACtF,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wCAAwC,EAAC,CAAC;QAC3F,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAC,CAAC;KAC3F,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE,GAAG,EAAE,CACxE,kBAAkB,CAAC;YACjB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACpH,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveInterrupt extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<{
16
+ action: string;
17
+ message: string;
18
+ sessionId: number;
19
+ }>;
20
+ }
@@ -0,0 +1,21 @@
1
+ import { Args } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { controlTestingLive } from '../../../lib/testing-live-operations.js';
5
+ export default class TestingLiveInterrupt extends AgentiaCommand {
6
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
7
+ static description = 'Interrupt Robot execution in the active CRT live session';
8
+ static examples = ['<%= config.bin %> <%= command.id %> --project <project-id>'];
9
+ static flags = testingLiveCommonFlags;
10
+ async run() {
11
+ const { args, flags } = await this.parse(TestingLiveInterrupt);
12
+ const result = await controlTestingLive('interrupt', {
13
+ jobId: args['job-id'],
14
+ projectId: flags.project,
15
+ sessionId: flags['session-id'],
16
+ });
17
+ this.display(() => this.log(result.message));
18
+ return result;
19
+ }
20
+ }
21
+ //# sourceMappingURL=interrupt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,cAAc;IAC9D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,0DAA0D,CAAA;IACxF,MAAM,CAAU,QAAQ,GAAG,CAAC,4DAA4D,CAAC,CAAA;IACzF,MAAM,CAAU,KAAK,GAAG,sBAAsB,CAAA;IAEvC,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveRecorder extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static enableJsonFlag: boolean;
11
+ static examples: string[];
12
+ static flags: {
13
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ 'no-enable': import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<{
20
+ recorded: number;
21
+ sessionId: number;
22
+ }>;
23
+ }
@@ -0,0 +1,134 @@
1
+ /* eslint-disable no-bitwise -- Node secure append flags are a bitmask. */
2
+ import { Args, Flags } from '@oclif/core';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { closeSync, constants, mkdirSync, openSync, writeSync } from 'node:fs';
5
+ import { dirname, extname, resolve } from 'node:path';
6
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
7
+ import { resolveTestingCredentials } from '../../../lib/testing-config.js';
8
+ import { appendTestingLiveHistory } from '../../../lib/testing-live-history.js';
9
+ import { loadTestingLiveConnection, setTestingLiveOptions } from '../../../lib/testing-live-operations.js';
10
+ import { acquireTestingLiveRecorderLock, connectTestingLiveWebSocket, parseTestingLiveRecorderFrame, robotLinesFromRecorderEvent, } from '../../../lib/testing-live-recorder.js';
11
+ export default class TestingLiveRecorder extends AgentiaCommand {
12
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
13
+ static description = 'Record CRT live interactions as bounded Robot Framework lines';
14
+ static enableJsonFlag = false;
15
+ static examples = [
16
+ '<%= config.bin %> <%= command.id %> --project <project-id> --output recorded.robot',
17
+ ];
18
+ static flags = {
19
+ debug: Flags.boolean({ default: false, description: 'Print frame sizes and event types without frame bodies.' }),
20
+ 'no-enable': Flags.boolean({ default: false, description: 'Do not manage the server recorder toggle.' }),
21
+ output: Flags.string({ char: 'o', description: 'Explicit .robot file to append recorded keywords to.' }),
22
+ project: Flags.integer({ char: 'p', description: 'CRT project ID.', required: true }),
23
+ 'session-id': Flags.integer({ description: 'Guard that must match the active CRT live session.', min: 1 }),
24
+ };
25
+ async run() {
26
+ const { args, flags } = await this.parse(TestingLiveRecorder);
27
+ const connection = await loadTestingLiveConnection({
28
+ jobId: args['job-id'],
29
+ projectId: flags.project,
30
+ sessionId: flags['session-id'],
31
+ });
32
+ const lock = acquireTestingLiveRecorderLock(connection.metadata.sessionId);
33
+ const descriptor = flags.output === undefined ? undefined : openRobotOutput(flags.output);
34
+ let recorded = 0;
35
+ try {
36
+ if (!flags['no-enable']) {
37
+ await setTestingLiveOptions({
38
+ jobId: connection.metadata.jobId,
39
+ projectId: connection.metadata.projectId,
40
+ recorder: emptyOptions(true),
41
+ sessionId: connection.metadata.sessionId,
42
+ });
43
+ }
44
+ const socket = connectTestingLiveWebSocket(connection.metadata.sessionPath, resolveTestingCredentials().domain, connection.session);
45
+ await new Promise((resolvePromise, reject) => {
46
+ const heartbeat = setInterval(() => {
47
+ if (socket.readyState === socket.OPEN)
48
+ socket.send('true');
49
+ }, 3000);
50
+ const stop = () => socket.close();
51
+ process.once('SIGINT', stop);
52
+ socket.once('error', () => reject(new Error('CRT live recorder connection failed.')));
53
+ socket.once('open', () => this.log('Recording CRT interactions. Press Ctrl-C to stop.'));
54
+ socket.on('message', (frame) => {
55
+ try {
56
+ const event = parseTestingLiveRecorderFrame(frame);
57
+ if (event === undefined)
58
+ return;
59
+ if (flags.debug) {
60
+ const type = typeof event.type === 'string' && /^[a-z-]{1,32}$/u.test(event.type)
61
+ ? event.type
62
+ : 'unknown';
63
+ this.warn(`Recorder event ${type} (${Buffer.byteLength(frame.toString())} bytes).`);
64
+ }
65
+ const lines = robotLinesFromRecorderEvent(event);
66
+ if (lines.length === 0)
67
+ return;
68
+ for (const line of lines)
69
+ this.log(line);
70
+ if (descriptor !== undefined) {
71
+ writeSync(descriptor, `${lines.join('\n')}\n\n`, undefined, 'utf8');
72
+ }
73
+ const now = new Date().toISOString();
74
+ appendTestingLiveHistory({
75
+ completedAt: now,
76
+ id: randomUUID(),
77
+ jobId: connection.metadata.jobId,
78
+ lines,
79
+ projectId: connection.metadata.projectId,
80
+ startedAt: now,
81
+ status: 'recorded',
82
+ });
83
+ recorded += lines.length;
84
+ }
85
+ catch (error) {
86
+ this.warn(error.message);
87
+ }
88
+ });
89
+ socket.once('close', () => resolvePromise());
90
+ socket.once('error', () => resolvePromise());
91
+ socket.once('close', cleanup);
92
+ socket.once('error', cleanup);
93
+ function cleanup() {
94
+ clearInterval(heartbeat);
95
+ process.removeListener('SIGINT', stop);
96
+ }
97
+ });
98
+ }
99
+ finally {
100
+ if (descriptor !== undefined)
101
+ closeSync(descriptor);
102
+ lock.release();
103
+ if (!flags['no-enable']) {
104
+ await setTestingLiveOptions({
105
+ jobId: connection.metadata.jobId,
106
+ projectId: connection.metadata.projectId,
107
+ recorder: emptyOptions(false),
108
+ sessionId: connection.metadata.sessionId,
109
+ }).catch(() => { });
110
+ }
111
+ }
112
+ return { recorded, sessionId: connection.metadata.sessionId };
113
+ }
114
+ }
115
+ function emptyOptions(enabled) {
116
+ return {
117
+ enabled,
118
+ enableHealingContext: false,
119
+ enableHoverText: false,
120
+ enableScrollText: false,
121
+ enableSystemState: false,
122
+ enableVerifyText: false,
123
+ preferTableKeywords: false,
124
+ };
125
+ }
126
+ function openRobotOutput(path) {
127
+ if (path.includes('\0') || extname(path).toLowerCase() !== '.robot') {
128
+ throw new Error('CRT recorder output must be an explicit .robot path.');
129
+ }
130
+ const target = resolve(path);
131
+ mkdirSync(dirname(target), { mode: 0o700, recursive: true });
132
+ return openSync(target, constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_WRONLY, 0o600);
133
+ }
134
+ //# sourceMappingURL=recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/recorder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveReports extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ 'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<{
17
+ files: import("../../../lib/testing-live-types.js").TestingLiveReportMetadata[];
18
+ sessionId: number;
19
+ }>;
20
+ }
@@ -0,0 +1,31 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { getTestingLiveReports } from '../../../lib/testing-live-operations.js';
5
+ export default class TestingLiveReports extends AgentiaCommand {
6
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
7
+ static description = 'List or save bounded report artifacts from an active CRT live session';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> --project <project-id>',
10
+ '<%= config.bin %> <%= command.id %> --project <project-id> --output-dir ./reports',
11
+ ];
12
+ static flags = {
13
+ ...testingLiveCommonFlags,
14
+ 'output-dir': Flags.string({ description: 'Explicit directory for log.html, report.html, and output.xml.' }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(TestingLiveReports);
18
+ const result = await this.withSpinner('Reading CRT live reports', () => getTestingLiveReports({
19
+ jobId: args['job-id'],
20
+ outputDir: flags['output-dir'],
21
+ projectId: flags.project,
22
+ sessionId: flags['session-id'],
23
+ }));
24
+ this.display(() => {
25
+ for (const file of result.files)
26
+ this.log(`${file.name}: ${file.bytes} bytes${file.path === undefined ? '' : ` -> ${file.path}`}`);
27
+ });
28
+ return result;
29
+ }
30
+ }
31
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,qBAAqB,EAAC,MAAM,yCAAyC,CAAA;AAE7E,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,uEAAuE,CAAA;IACrG,MAAM,CAAU,QAAQ,GAAG;QACzB,4DAA4D;QAC5D,mFAAmF;KACpF,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,+DAA+D,EAAC,CAAC;KAC3G,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,EAAE,CACrE,qBAAqB,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;YAC9B,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACpI,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveScreenshot extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<{
17
+ bytes: number;
18
+ path: string;
19
+ sessionId: number;
20
+ timestamp?: string;
21
+ url?: string;
22
+ }>;
23
+ }
@@ -0,0 +1,25 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { saveTestingLiveScreenshot } from '../../../lib/testing-live-operations.js';
5
+ export default class TestingLiveScreenshot extends AgentiaCommand {
6
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
7
+ static description = 'Save a bounded CRT live browser screenshot to an explicit file';
8
+ static examples = ['<%= config.bin %> <%= command.id %> --project <project-id> --output screenshot.png'];
9
+ static flags = {
10
+ ...testingLiveCommonFlags,
11
+ output: Flags.string({ char: 'o', description: 'Explicit screenshot output path.', required: true }),
12
+ };
13
+ async run() {
14
+ const { args, flags } = await this.parse(TestingLiveScreenshot);
15
+ const result = await this.withSpinner('Saving CRT live screenshot', () => saveTestingLiveScreenshot({
16
+ jobId: args['job-id'],
17
+ output: flags.output,
18
+ projectId: flags.project,
19
+ sessionId: flags['session-id'],
20
+ }));
21
+ this.display(() => this.log(`Wrote ${result.bytes} bytes to ${result.path}.`));
22
+ return result;
23
+ }
24
+ }
25
+ //# sourceMappingURL=screenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,yBAAyB,EAAC,MAAM,yCAAyC,CAAA;AAEjF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,cAAc;IAC/D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,gEAAgE,CAAA;IAC9F,MAAM,CAAU,QAAQ,GAAG,CAAC,oFAAoF,CAAC,CAAA;IACjH,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACnG,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,4BAA4B,EAAE,GAAG,EAAE,CACvE,yBAAyB,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QAC9E,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveSetOptions extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ enable: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ 'healing-context': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ 'hover-text': import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'scroll-text': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'system-state': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'table-keywords': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'verify-text': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
20
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ };
22
+ run(): Promise<{
23
+ recorder: import("../../../lib/testing-live-types.js").TestingLiveRecorderOptions;
24
+ sessionId: number;
25
+ status: number;
26
+ }>;
27
+ }
@@ -0,0 +1,28 @@
1
+ import { Args } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { testingLiveCommonFlags, testingLiveRecorderOptionFlags, testingLiveRecorderOptions, } from '../../../lib/testing-live-command.js';
4
+ import { setTestingLiveOptions } from '../../../lib/testing-live-operations.js';
5
+ export default class TestingLiveSetOptions extends AgentiaCommand {
6
+ static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
7
+ static description = 'Set the complete validated CRT live recorder option block';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> --project <project-id> --enable --scroll-text --table-keywords',
10
+ ];
11
+ static flags = { ...testingLiveCommonFlags, ...testingLiveRecorderOptionFlags };
12
+ async run() {
13
+ const { args, flags } = await this.parse(TestingLiveSetOptions);
14
+ const optionNames = ['enable', 'healing-context', 'hover-text', 'scroll-text', 'system-state', 'table-keywords', 'verify-text'];
15
+ if (!optionNames.some((name) => flags[name] !== undefined)) {
16
+ throw new Error('Provide at least one recorder option; unspecified options are set to false.');
17
+ }
18
+ const result = await setTestingLiveOptions({
19
+ jobId: args['job-id'],
20
+ projectId: flags.project,
21
+ recorder: testingLiveRecorderOptions(flags),
22
+ sessionId: flags['session-id'],
23
+ });
24
+ this.display(() => this.log('CRT live recorder options updated.'));
25
+ return result;
26
+ }
27
+ }
28
+ //# sourceMappingURL=set-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-options.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/set-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAC,qBAAqB,EAAC,MAAM,yCAAyC,CAAA;AAE7E,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,cAAc;IAC/D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,2DAA2D,CAAA;IACzF,MAAM,CAAU,QAAQ,GAAG;QACzB,oGAAoG;KACrG,CAAA;IACD,MAAM,CAAU,KAAK,GAAG,EAAC,GAAG,sBAAsB,EAAE,GAAG,8BAA8B,EAAC,CAAA;IAE/E,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC7D,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,CAAU,CAAA;QACxI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAChG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,QAAQ,EAAE,0BAA0B,CAAC,KAAK,CAAC;YAC3C,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAA;QAClE,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ export default class TestingLiveStart extends AgentiaCommand {
3
+ static args: {
4
+ 'job-id': import("@oclif/core/interfaces").Arg<number, {
5
+ max?: number;
6
+ min?: number;
7
+ }>;
8
+ };
9
+ static description: string;
10
+ static examples: string[];
11
+ static flags: {
12
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'jap-ime': import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ library: import("@oclif/core/interfaces").OptionFlag<"QWeb" | "QForce" | "QMobile", import("@oclif/core/interfaces").CustomOptions>;
16
+ 'no-bootstrap': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'no-browser': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'poll-interval': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
19
+ screen: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ section: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'section-index': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ 'session-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
24
+ viewport: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
+ project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
26
+ 'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
27
+ };
28
+ run(): Promise<import("../../../lib/testing-live-types.js").TestingLiveMetadata>;
29
+ }
@@ -0,0 +1,53 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { parseTestingLiveScreen, testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
4
+ import { startTestingLive } from '../../../lib/testing-live-operations.js';
5
+ import { TESTING_LIVE_LIBRARIES } from '../../../lib/testing-live-types.js';
6
+ export default class TestingLiveStart extends AgentiaCommand {
7
+ static args = {
8
+ 'job-id': Args.integer({ description: 'CRT job/test ID.', required: true }),
9
+ };
10
+ static description = 'Start and bootstrap a bounded Copado Robotic Testing live session';
11
+ static examples = [
12
+ '<%= config.bin %> <%= command.id %> <job-id> --project <project-id>',
13
+ '<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --file smoke.robot --section "Login"',
14
+ ];
15
+ static flags = {
16
+ ...testingLiveCommonFlags,
17
+ description: Flags.string({ description: 'Nonsecret session label.' }),
18
+ file: Flags.string({ description: 'Robot Framework file used to bootstrap a selected test/task.' }),
19
+ 'jap-ime': Flags.boolean({ default: false, description: 'Enable Japanese IME in the live environment.' }),
20
+ library: Flags.option({ default: 'QWeb', description: 'Robot Framework library to bootstrap.', options: [...TESTING_LIVE_LIBRARIES] })(),
21
+ 'no-bootstrap': Flags.boolean({ default: false, description: 'Create the host without readiness/bootstrap calls.' }),
22
+ 'no-browser': Flags.boolean({ default: false, description: 'Do not open Chrome during QWeb/QForce bootstrap.' }),
23
+ 'poll-interval': Flags.integer({ default: 3, description: 'Readiness polling interval in seconds.', min: 1 }),
24
+ screen: Flags.string({ description: 'Session screen as WIDTHxHEIGHTxDEPTH.' }),
25
+ section: Flags.string({ description: 'Robot test/task name to bootstrap.' }),
26
+ 'section-index': Flags.integer({ description: 'One-based Robot test/task index to bootstrap.', min: 1 }),
27
+ 'session-version': Flags.string({ description: 'CRT live environment version.' }),
28
+ timeout: Flags.integer({ default: 120, description: 'Readiness timeout in seconds.', min: 1 }),
29
+ viewport: Flags.string({ description: 'Session viewport as WIDTHxHEIGHT (24-bit depth).' }),
30
+ };
31
+ async run() {
32
+ const { args, flags } = await this.parse(TestingLiveStart);
33
+ const result = await this.withSpinner('Starting CRT live session', () => startTestingLive({
34
+ description: flags.description,
35
+ file: flags.file,
36
+ japIme: flags['jap-ime'],
37
+ jobId: args['job-id'],
38
+ library: flags.library,
39
+ noBootstrap: flags['no-bootstrap'],
40
+ noBrowser: flags['no-browser'],
41
+ pollIntervalMs: flags['poll-interval'] * 1000,
42
+ projectId: flags.project,
43
+ screen: parseTestingLiveScreen(flags.screen, flags.viewport),
44
+ section: flags.section,
45
+ sectionIndex: flags['section-index'],
46
+ sessionVersion: flags['session-version'],
47
+ timeoutMs: flags.timeout * 1000,
48
+ }));
49
+ this.display(() => this.log(`CRT live session ${result.sessionId} is ready for job ${result.jobId}.`));
50
+ return result;
51
+ }
52
+ }
53
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/start.ts"],"names":[],"mappings":"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"}