@agentuity/cli 1.0.22 → 1.0.23

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 (297) hide show
  1. package/dist/auth.d.ts.map +1 -1
  2. package/dist/auth.js +7 -0
  3. package/dist/auth.js.map +1 -1
  4. package/dist/cache/resource-region.d.ts +1 -1
  5. package/dist/cache/resource-region.d.ts.map +1 -1
  6. package/dist/cache/resource-region.js.map +1 -1
  7. package/dist/cmd/ai/claude-code/install.d.ts.map +1 -1
  8. package/dist/cmd/ai/claude-code/install.js +0 -1
  9. package/dist/cmd/ai/claude-code/install.js.map +1 -1
  10. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +4 -2
  11. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +1 -1
  12. package/dist/cmd/build/vite/public-asset-path-plugin.js +18 -4
  13. package/dist/cmd/build/vite/public-asset-path-plugin.js.map +1 -1
  14. package/dist/cmd/cloud/email/create.d.ts +3 -0
  15. package/dist/cmd/cloud/email/create.d.ts.map +1 -0
  16. package/dist/cmd/cloud/email/create.js +58 -0
  17. package/dist/cmd/cloud/email/create.js.map +1 -0
  18. package/dist/cmd/cloud/email/delete.d.ts +3 -0
  19. package/dist/cmd/cloud/email/delete.d.ts.map +1 -0
  20. package/dist/cmd/cloud/email/delete.js +47 -0
  21. package/dist/cmd/cloud/email/delete.js.map +1 -0
  22. package/dist/cmd/cloud/email/destination/delete.d.ts +3 -0
  23. package/dist/cmd/cloud/email/destination/delete.d.ts.map +1 -0
  24. package/dist/cmd/cloud/email/destination/delete.js +54 -0
  25. package/dist/cmd/cloud/email/destination/delete.js.map +1 -0
  26. package/dist/cmd/cloud/email/destination/index.d.ts +3 -0
  27. package/dist/cmd/cloud/email/destination/index.d.ts.map +1 -0
  28. package/dist/cmd/cloud/email/destination/index.js +14 -0
  29. package/dist/cmd/cloud/email/destination/index.js.map +1 -0
  30. package/dist/cmd/cloud/email/destination/list.d.ts +3 -0
  31. package/dist/cmd/cloud/email/destination/list.d.ts.map +1 -0
  32. package/dist/cmd/cloud/email/destination/list.js +39 -0
  33. package/dist/cmd/cloud/email/destination/list.js.map +1 -0
  34. package/dist/cmd/cloud/email/destination/schemas.d.ts +9 -0
  35. package/dist/cmd/cloud/email/destination/schemas.d.ts.map +1 -0
  36. package/dist/cmd/cloud/email/destination/schemas.js +9 -0
  37. package/dist/cmd/cloud/email/destination/schemas.js.map +1 -0
  38. package/dist/cmd/cloud/email/destination/url.d.ts +3 -0
  39. package/dist/cmd/cloud/email/destination/url.d.ts.map +1 -0
  40. package/dist/cmd/cloud/email/destination/url.js +64 -0
  41. package/dist/cmd/cloud/email/destination/url.js.map +1 -0
  42. package/dist/cmd/cloud/email/get.d.ts +3 -0
  43. package/dist/cmd/cloud/email/get.d.ts.map +1 -0
  44. package/dist/cmd/cloud/email/get.js +43 -0
  45. package/dist/cmd/cloud/email/get.js.map +1 -0
  46. package/dist/cmd/cloud/email/inbound/get.d.ts +3 -0
  47. package/dist/cmd/cloud/email/inbound/get.d.ts.map +1 -0
  48. package/dist/cmd/cloud/email/inbound/get.js +44 -0
  49. package/dist/cmd/cloud/email/inbound/get.js.map +1 -0
  50. package/dist/cmd/cloud/email/inbound/index.d.ts +3 -0
  51. package/dist/cmd/cloud/email/inbound/index.d.ts.map +1 -0
  52. package/dist/cmd/cloud/email/inbound/index.js +12 -0
  53. package/dist/cmd/cloud/email/inbound/index.js.map +1 -0
  54. package/dist/cmd/cloud/email/inbound/list.d.ts +3 -0
  55. package/dist/cmd/cloud/email/inbound/list.d.ts.map +1 -0
  56. package/dist/cmd/cloud/email/inbound/list.js +43 -0
  57. package/dist/cmd/cloud/email/inbound/list.js.map +1 -0
  58. package/dist/cmd/cloud/email/inbound/schemas.d.ts +11 -0
  59. package/dist/cmd/cloud/email/inbound/schemas.d.ts.map +1 -0
  60. package/dist/cmd/cloud/email/inbound/schemas.js +11 -0
  61. package/dist/cmd/cloud/email/inbound/schemas.js.map +1 -0
  62. package/dist/cmd/cloud/email/index.d.ts +3 -0
  63. package/dist/cmd/cloud/email/index.d.ts.map +1 -0
  64. package/dist/cmd/cloud/email/index.js +28 -0
  65. package/dist/cmd/cloud/email/index.js.map +1 -0
  66. package/dist/cmd/cloud/email/list.d.ts +3 -0
  67. package/dist/cmd/cloud/email/list.d.ts.map +1 -0
  68. package/dist/cmd/cloud/email/list.js +37 -0
  69. package/dist/cmd/cloud/email/list.js.map +1 -0
  70. package/dist/cmd/cloud/email/outbound/get.d.ts +3 -0
  71. package/dist/cmd/cloud/email/outbound/get.d.ts.map +1 -0
  72. package/dist/cmd/cloud/email/outbound/get.js +45 -0
  73. package/dist/cmd/cloud/email/outbound/get.js.map +1 -0
  74. package/dist/cmd/cloud/email/outbound/index.d.ts +3 -0
  75. package/dist/cmd/cloud/email/outbound/index.d.ts.map +1 -0
  76. package/dist/cmd/cloud/email/outbound/index.js +12 -0
  77. package/dist/cmd/cloud/email/outbound/index.js.map +1 -0
  78. package/dist/cmd/cloud/email/outbound/list.d.ts +3 -0
  79. package/dist/cmd/cloud/email/outbound/list.d.ts.map +1 -0
  80. package/dist/cmd/cloud/email/outbound/list.js +43 -0
  81. package/dist/cmd/cloud/email/outbound/list.js.map +1 -0
  82. package/dist/cmd/cloud/email/outbound/schemas.d.ts +15 -0
  83. package/dist/cmd/cloud/email/outbound/schemas.d.ts.map +1 -0
  84. package/dist/cmd/cloud/email/outbound/schemas.js +15 -0
  85. package/dist/cmd/cloud/email/outbound/schemas.js.map +1 -0
  86. package/dist/cmd/cloud/email/send.d.ts +3 -0
  87. package/dist/cmd/cloud/email/send.d.ts.map +1 -0
  88. package/dist/cmd/cloud/email/send.js +77 -0
  89. package/dist/cmd/cloud/email/send.js.map +1 -0
  90. package/dist/cmd/cloud/email/util.d.ts +26 -0
  91. package/dist/cmd/cloud/email/util.d.ts.map +1 -0
  92. package/dist/cmd/cloud/email/util.js +57 -0
  93. package/dist/cmd/cloud/email/util.js.map +1 -0
  94. package/dist/cmd/cloud/index.d.ts.map +1 -1
  95. package/dist/cmd/cloud/index.js +8 -0
  96. package/dist/cmd/cloud/index.js.map +1 -1
  97. package/dist/cmd/cloud/region-lookup.d.ts +1 -1
  98. package/dist/cmd/cloud/region-lookup.d.ts.map +1 -1
  99. package/dist/cmd/cloud/region-lookup.js +44 -2
  100. package/dist/cmd/cloud/region-lookup.js.map +1 -1
  101. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts +7 -0
  102. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -1
  103. package/dist/cmd/cloud/sandbox/snapshot/build.js +46 -28
  104. package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
  105. package/dist/cmd/cloud/sandbox/snapshot/generate.d.ts.map +1 -1
  106. package/dist/cmd/cloud/sandbox/snapshot/generate.js +5 -1
  107. package/dist/cmd/cloud/sandbox/snapshot/generate.js.map +1 -1
  108. package/dist/cmd/cloud/schedule/create.d.ts +3 -0
  109. package/dist/cmd/cloud/schedule/create.d.ts.map +1 -0
  110. package/dist/cmd/cloud/schedule/create.js +72 -0
  111. package/dist/cmd/cloud/schedule/create.js.map +1 -0
  112. package/dist/cmd/cloud/schedule/delete.d.ts +3 -0
  113. package/dist/cmd/cloud/schedule/delete.d.ts.map +1 -0
  114. package/dist/cmd/cloud/schedule/delete.js +38 -0
  115. package/dist/cmd/cloud/schedule/delete.js.map +1 -0
  116. package/dist/cmd/cloud/schedule/delivery/get.d.ts +3 -0
  117. package/dist/cmd/cloud/schedule/delivery/get.d.ts.map +1 -0
  118. package/dist/cmd/cloud/schedule/delivery/get.js +78 -0
  119. package/dist/cmd/cloud/schedule/delivery/get.js.map +1 -0
  120. package/dist/cmd/cloud/schedule/delivery/index.d.ts +3 -0
  121. package/dist/cmd/cloud/schedule/delivery/index.d.ts.map +1 -0
  122. package/dist/cmd/cloud/schedule/delivery/index.js +23 -0
  123. package/dist/cmd/cloud/schedule/delivery/index.js.map +1 -0
  124. package/dist/cmd/cloud/schedule/delivery/list.d.ts +3 -0
  125. package/dist/cmd/cloud/schedule/delivery/list.d.ts.map +1 -0
  126. package/dist/cmd/cloud/schedule/delivery/list.js +67 -0
  127. package/dist/cmd/cloud/schedule/delivery/list.js.map +1 -0
  128. package/dist/cmd/cloud/schedule/destination/create.d.ts +3 -0
  129. package/dist/cmd/cloud/schedule/destination/create.d.ts.map +1 -0
  130. package/dist/cmd/cloud/schedule/destination/create.js +97 -0
  131. package/dist/cmd/cloud/schedule/destination/create.js.map +1 -0
  132. package/dist/cmd/cloud/schedule/destination/delete.d.ts +3 -0
  133. package/dist/cmd/cloud/schedule/destination/delete.d.ts.map +1 -0
  134. package/dist/cmd/cloud/schedule/destination/delete.js +41 -0
  135. package/dist/cmd/cloud/schedule/destination/delete.js.map +1 -0
  136. package/dist/cmd/cloud/schedule/destination/get.d.ts +3 -0
  137. package/dist/cmd/cloud/schedule/destination/get.d.ts.map +1 -0
  138. package/dist/cmd/cloud/schedule/destination/get.js +57 -0
  139. package/dist/cmd/cloud/schedule/destination/get.js.map +1 -0
  140. package/dist/cmd/cloud/schedule/destination/index.d.ts +3 -0
  141. package/dist/cmd/cloud/schedule/destination/index.d.ts.map +1 -0
  142. package/dist/cmd/cloud/schedule/destination/index.js +26 -0
  143. package/dist/cmd/cloud/schedule/destination/index.js.map +1 -0
  144. package/dist/cmd/cloud/schedule/destination/list.d.ts +3 -0
  145. package/dist/cmd/cloud/schedule/destination/list.d.ts.map +1 -0
  146. package/dist/cmd/cloud/schedule/destination/list.js +58 -0
  147. package/dist/cmd/cloud/schedule/destination/list.js.map +1 -0
  148. package/dist/cmd/cloud/schedule/get.d.ts +3 -0
  149. package/dist/cmd/cloud/schedule/get.d.ts.map +1 -0
  150. package/dist/cmd/cloud/schedule/get.js +76 -0
  151. package/dist/cmd/cloud/schedule/get.js.map +1 -0
  152. package/dist/cmd/cloud/schedule/index.d.ts +3 -0
  153. package/dist/cmd/cloud/schedule/index.d.ts.map +1 -0
  154. package/dist/cmd/cloud/schedule/index.js +35 -0
  155. package/dist/cmd/cloud/schedule/index.js.map +1 -0
  156. package/dist/cmd/cloud/schedule/list.d.ts +3 -0
  157. package/dist/cmd/cloud/schedule/list.d.ts.map +1 -0
  158. package/dist/cmd/cloud/schedule/list.js +60 -0
  159. package/dist/cmd/cloud/schedule/list.js.map +1 -0
  160. package/dist/cmd/cloud/schedule/update.d.ts +3 -0
  161. package/dist/cmd/cloud/schedule/update.d.ts.map +1 -0
  162. package/dist/cmd/cloud/schedule/update.js +65 -0
  163. package/dist/cmd/cloud/schedule/update.js.map +1 -0
  164. package/dist/cmd/cloud/schedule/util.d.ts +11 -0
  165. package/dist/cmd/cloud/schedule/util.d.ts.map +1 -0
  166. package/dist/cmd/cloud/schedule/util.js +17 -0
  167. package/dist/cmd/cloud/schedule/util.js.map +1 -0
  168. package/dist/cmd/cloud/task/create.d.ts +3 -0
  169. package/dist/cmd/cloud/task/create.d.ts.map +1 -0
  170. package/dist/cmd/cloud/task/create.js +108 -0
  171. package/dist/cmd/cloud/task/create.js.map +1 -0
  172. package/dist/cmd/cloud/task/get.d.ts +3 -0
  173. package/dist/cmd/cloud/task/get.d.ts.map +1 -0
  174. package/dist/cmd/cloud/task/get.js +124 -0
  175. package/dist/cmd/cloud/task/get.js.map +1 -0
  176. package/dist/cmd/cloud/task/index.d.ts +3 -0
  177. package/dist/cmd/cloud/task/index.d.ts.map +1 -0
  178. package/dist/cmd/cloud/task/index.js +33 -0
  179. package/dist/cmd/cloud/task/index.js.map +1 -0
  180. package/dist/cmd/cloud/task/list.d.ts +3 -0
  181. package/dist/cmd/cloud/task/list.d.ts.map +1 -0
  182. package/dist/cmd/cloud/task/list.js +174 -0
  183. package/dist/cmd/cloud/task/list.js.map +1 -0
  184. package/dist/cmd/cloud/task/update.d.ts +3 -0
  185. package/dist/cmd/cloud/task/update.d.ts.map +1 -0
  186. package/dist/cmd/cloud/task/update.js +118 -0
  187. package/dist/cmd/cloud/task/update.js.map +1 -0
  188. package/dist/cmd/cloud/task/util.d.ts +18 -0
  189. package/dist/cmd/cloud/task/util.d.ts.map +1 -0
  190. package/dist/cmd/cloud/task/util.js +45 -0
  191. package/dist/cmd/cloud/task/util.js.map +1 -0
  192. package/dist/cmd/cloud/webhook/create.d.ts +3 -0
  193. package/dist/cmd/cloud/webhook/create.d.ts.map +1 -0
  194. package/dist/cmd/cloud/webhook/create.js +54 -0
  195. package/dist/cmd/cloud/webhook/create.js.map +1 -0
  196. package/dist/cmd/cloud/webhook/delete.d.ts +3 -0
  197. package/dist/cmd/cloud/webhook/delete.d.ts.map +1 -0
  198. package/dist/cmd/cloud/webhook/delete.js +50 -0
  199. package/dist/cmd/cloud/webhook/delete.js.map +1 -0
  200. package/dist/cmd/cloud/webhook/deliveries.d.ts +3 -0
  201. package/dist/cmd/cloud/webhook/deliveries.d.ts.map +1 -0
  202. package/dist/cmd/cloud/webhook/deliveries.js +123 -0
  203. package/dist/cmd/cloud/webhook/deliveries.js.map +1 -0
  204. package/dist/cmd/cloud/webhook/destinations.d.ts +3 -0
  205. package/dist/cmd/cloud/webhook/destinations.d.ts.map +1 -0
  206. package/dist/cmd/cloud/webhook/destinations.js +212 -0
  207. package/dist/cmd/cloud/webhook/destinations.js.map +1 -0
  208. package/dist/cmd/cloud/webhook/get.d.ts +3 -0
  209. package/dist/cmd/cloud/webhook/get.d.ts.map +1 -0
  210. package/dist/cmd/cloud/webhook/get.js +50 -0
  211. package/dist/cmd/cloud/webhook/get.js.map +1 -0
  212. package/dist/cmd/cloud/webhook/index.d.ts +3 -0
  213. package/dist/cmd/cloud/webhook/index.d.ts.map +1 -0
  214. package/dist/cmd/cloud/webhook/index.js +45 -0
  215. package/dist/cmd/cloud/webhook/index.js.map +1 -0
  216. package/dist/cmd/cloud/webhook/list.d.ts +3 -0
  217. package/dist/cmd/cloud/webhook/list.d.ts.map +1 -0
  218. package/dist/cmd/cloud/webhook/list.js +72 -0
  219. package/dist/cmd/cloud/webhook/list.js.map +1 -0
  220. package/dist/cmd/cloud/webhook/receipts.d.ts +3 -0
  221. package/dist/cmd/cloud/webhook/receipts.d.ts.map +1 -0
  222. package/dist/cmd/cloud/webhook/receipts.js +128 -0
  223. package/dist/cmd/cloud/webhook/receipts.js.map +1 -0
  224. package/dist/cmd/cloud/webhook/util.d.ts +27 -0
  225. package/dist/cmd/cloud/webhook/util.d.ts.map +1 -0
  226. package/dist/cmd/cloud/webhook/util.js +20 -0
  227. package/dist/cmd/cloud/webhook/util.js.map +1 -0
  228. package/dist/config.d.ts +8 -0
  229. package/dist/config.d.ts.map +1 -1
  230. package/dist/types.d.ts +10 -2
  231. package/dist/types.d.ts.map +1 -1
  232. package/dist/types.js +3 -2
  233. package/dist/types.js.map +1 -1
  234. package/dist/version-check.d.ts.map +1 -1
  235. package/dist/version-check.js +18 -3
  236. package/dist/version-check.js.map +1 -1
  237. package/package.json +6 -6
  238. package/src/auth.ts +7 -0
  239. package/src/cache/resource-region.ts +4 -1
  240. package/src/cmd/ai/claude-code/install.ts +0 -3
  241. package/src/cmd/build/vite/public-asset-path-plugin.ts +18 -4
  242. package/src/cmd/cloud/email/create.ts +70 -0
  243. package/src/cmd/cloud/email/delete.ts +53 -0
  244. package/src/cmd/cloud/email/destination/delete.ts +65 -0
  245. package/src/cmd/cloud/email/destination/index.ts +15 -0
  246. package/src/cmd/cloud/email/destination/list.ts +46 -0
  247. package/src/cmd/cloud/email/destination/schemas.ts +9 -0
  248. package/src/cmd/cloud/email/destination/url.ts +75 -0
  249. package/src/cmd/cloud/email/get.ts +52 -0
  250. package/src/cmd/cloud/email/inbound/get.ts +53 -0
  251. package/src/cmd/cloud/email/inbound/index.ts +13 -0
  252. package/src/cmd/cloud/email/inbound/list.ts +50 -0
  253. package/src/cmd/cloud/email/inbound/schemas.ts +11 -0
  254. package/src/cmd/cloud/email/index.ts +29 -0
  255. package/src/cmd/cloud/email/list.ts +44 -0
  256. package/src/cmd/cloud/email/outbound/get.ts +54 -0
  257. package/src/cmd/cloud/email/outbound/index.ts +13 -0
  258. package/src/cmd/cloud/email/outbound/list.ts +50 -0
  259. package/src/cmd/cloud/email/outbound/schemas.ts +15 -0
  260. package/src/cmd/cloud/email/send.ts +91 -0
  261. package/src/cmd/cloud/email/util.ts +89 -0
  262. package/src/cmd/cloud/index.ts +8 -0
  263. package/src/cmd/cloud/region-lookup.ts +58 -2
  264. package/src/cmd/cloud/sandbox/snapshot/build.ts +59 -55
  265. package/src/cmd/cloud/sandbox/snapshot/generate.ts +5 -1
  266. package/src/cmd/cloud/schedule/create.ts +83 -0
  267. package/src/cmd/cloud/schedule/delete.ts +43 -0
  268. package/src/cmd/cloud/schedule/delivery/get.ts +85 -0
  269. package/src/cmd/cloud/schedule/delivery/index.ts +24 -0
  270. package/src/cmd/cloud/schedule/delivery/list.ts +82 -0
  271. package/src/cmd/cloud/schedule/destination/create.ts +110 -0
  272. package/src/cmd/cloud/schedule/destination/delete.ts +46 -0
  273. package/src/cmd/cloud/schedule/destination/get.ts +66 -0
  274. package/src/cmd/cloud/schedule/destination/index.ts +27 -0
  275. package/src/cmd/cloud/schedule/destination/list.ts +72 -0
  276. package/src/cmd/cloud/schedule/get.ts +92 -0
  277. package/src/cmd/cloud/schedule/index.ts +36 -0
  278. package/src/cmd/cloud/schedule/list.ts +78 -0
  279. package/src/cmd/cloud/schedule/update.ts +74 -0
  280. package/src/cmd/cloud/schedule/util.ts +34 -0
  281. package/src/cmd/cloud/task/create.ts +124 -0
  282. package/src/cmd/cloud/task/get.ts +138 -0
  283. package/src/cmd/cloud/task/index.ts +34 -0
  284. package/src/cmd/cloud/task/list.ts +191 -0
  285. package/src/cmd/cloud/task/update.ts +123 -0
  286. package/src/cmd/cloud/task/util.ts +74 -0
  287. package/src/cmd/cloud/webhook/create.ts +66 -0
  288. package/src/cmd/cloud/webhook/delete.ts +57 -0
  289. package/src/cmd/cloud/webhook/deliveries.ts +149 -0
  290. package/src/cmd/cloud/webhook/destinations.ts +274 -0
  291. package/src/cmd/cloud/webhook/get.ts +59 -0
  292. package/src/cmd/cloud/webhook/index.ts +46 -0
  293. package/src/cmd/cloud/webhook/list.ts +82 -0
  294. package/src/cmd/cloud/webhook/receipts.ts +157 -0
  295. package/src/cmd/cloud/webhook/util.ts +35 -0
  296. package/src/types.ts +3 -1
  297. package/src/version-check.ts +22 -3
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../../types';
3
+ import * as tui from '../../../../tui';
4
+ import { createScheduleAdapter } from '../util';
5
+ import { getCommand } from '../../../../command-prefix';
6
+
7
+ const CreateDestinationResponseSchema = z.object({
8
+ destination: z.object({
9
+ id: z.string(),
10
+ schedule_id: z.string(),
11
+ created_at: z.string(),
12
+ updated_at: z.string(),
13
+ created_by: z.string(),
14
+ type: z.enum(['url', 'sandbox']),
15
+ config: z.record(z.string(), z.unknown()),
16
+ }),
17
+ });
18
+
19
+ export const createSubcommand = createCommand({
20
+ name: 'create',
21
+ description: 'Create destination for a schedule',
22
+ tags: ['mutating', 'creates-resource', 'requires-auth'],
23
+ requires: { auth: true, region: true },
24
+ optional: { project: true },
25
+ examples: [
26
+ {
27
+ command: getCommand('cloud schedule destination create url sched_abc123 https://example.com'),
28
+ description: 'Create URL destination',
29
+ },
30
+ {
31
+ command: getCommand('cloud schedule destination create url sched_abc123 https://example.com --method POST'),
32
+ description: 'Create URL destination with POST method',
33
+ },
34
+ ],
35
+ schema: {
36
+ args: z.object({
37
+ type: z.enum(['url', 'sandbox']).describe('Destination type (url or sandbox)'),
38
+ schedule_id: z.string().min(1).describe('Schedule ID'),
39
+ target: z.string().min(1).describe('Destination URL or sandbox ID'),
40
+ }),
41
+ options: z.object({
42
+ method: z.string().optional().describe('HTTP method for URL destination'),
43
+ timeout: z.coerce.number().optional().describe('Request timeout in milliseconds'),
44
+ config: z.string().optional().describe('Additional config as JSON object'),
45
+ }),
46
+ response: CreateDestinationResponseSchema,
47
+ },
48
+
49
+ async handler(ctx) {
50
+ const { args, opts, options } = ctx;
51
+ const schedule = createScheduleAdapter(ctx);
52
+
53
+ if (args.type === 'sandbox' && !args.target.startsWith('sbx_')) {
54
+ tui.fatal('Sandbox target must start with "sbx_"');
55
+ }
56
+ if (args.type === 'url' && !args.target.startsWith('http://') && !args.target.startsWith('https://')) {
57
+ tui.fatal('URL target must start with http:// or https://');
58
+ }
59
+
60
+ let parsedConfig: Record<string, unknown> = {};
61
+ if (opts.config) {
62
+ try {
63
+ parsedConfig = JSON.parse(opts.config) as Record<string, unknown>;
64
+ } catch (e) {
65
+ tui.fatal(`Invalid JSON in --config: ${e instanceof Error ? e.message : String(e)}`);
66
+ }
67
+ }
68
+
69
+ const config: Record<string, unknown> = {
70
+ ...parsedConfig,
71
+ };
72
+
73
+ if (args.type === 'url') {
74
+ config.url = args.target;
75
+ }
76
+ if (args.type === 'sandbox') {
77
+ config.sandbox_id = args.target;
78
+ }
79
+ if (opts.method && args.type === 'url') {
80
+ config.method = opts.method;
81
+ }
82
+ if (opts.timeout !== undefined && args.type === 'url') {
83
+ config.timeout = opts.timeout;
84
+ }
85
+
86
+ const result = await schedule.createDestination(args.schedule_id, {
87
+ type: args.type,
88
+ config,
89
+ });
90
+
91
+ if (!options.json) {
92
+ tui.success(`Created destination: ${result.destination.id}`);
93
+ tui.table(
94
+ [
95
+ {
96
+ ID: result.destination.id,
97
+ Type: result.destination.type,
98
+ Config: JSON.stringify(result.destination.config),
99
+ },
100
+ ],
101
+ undefined,
102
+ { layout: 'vertical' }
103
+ );
104
+ }
105
+
106
+ return result;
107
+ },
108
+ });
109
+
110
+ export default createSubcommand;
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../../types';
3
+ import * as tui from '../../../../tui';
4
+ import { createScheduleAdapter } from '../util';
5
+ import { getCommand } from '../../../../command-prefix';
6
+
7
+ const DestinationDeleteResponseSchema = z.object({
8
+ success: z.boolean(),
9
+ destination_id: z.string(),
10
+ });
11
+
12
+ export const deleteSubcommand = createCommand({
13
+ name: 'delete',
14
+ aliases: ['rm'],
15
+ description: 'Delete a destination',
16
+ tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'],
17
+ requires: { auth: true, region: true },
18
+ optional: { project: true },
19
+ idempotent: true,
20
+ examples: [
21
+ {
22
+ command: getCommand('cloud schedule destination delete sdest_abc456'),
23
+ description: 'Delete destination',
24
+ },
25
+ ],
26
+ schema: {
27
+ args: z.object({
28
+ destination_id: z.string().min(1).describe('Destination ID'),
29
+ }),
30
+ response: DestinationDeleteResponseSchema,
31
+ },
32
+
33
+ async handler(ctx) {
34
+ const { args, options } = ctx;
35
+ const schedule = createScheduleAdapter(ctx);
36
+ await schedule.deleteDestination(args.destination_id);
37
+
38
+ if (!options.json) {
39
+ tui.success(`Deleted destination: ${args.destination_id}`);
40
+ }
41
+
42
+ return { success: true, destination_id: args.destination_id };
43
+ },
44
+ });
45
+
46
+ export default deleteSubcommand;
@@ -0,0 +1,66 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../../types';
3
+ import * as tui from '../../../../tui';
4
+ import { createScheduleAdapter } from '../util';
5
+ import { getCommand } from '../../../../command-prefix';
6
+
7
+ const DestinationGetResponseSchema = z.object({
8
+ destination: z.object({
9
+ id: z.string(),
10
+ schedule_id: z.string(),
11
+ created_at: z.string(),
12
+ updated_at: z.string(),
13
+ created_by: z.string(),
14
+ type: z.enum(['url', 'sandbox']),
15
+ config: z.record(z.string(), z.unknown()),
16
+ }),
17
+ });
18
+
19
+ export const getSubcommand = createCommand({
20
+ name: 'get',
21
+ description: 'Get destination details',
22
+ tags: ['read-only', 'fast', 'requires-auth'],
23
+ requires: { auth: true, region: true },
24
+ optional: { project: true },
25
+ idempotent: true,
26
+ examples: [
27
+ {
28
+ command: getCommand('cloud schedule destination get sched_abc123 sdest_abc456'),
29
+ description: 'Get destination details',
30
+ },
31
+ ],
32
+ schema: {
33
+ args: z.object({
34
+ schedule_id: z.string().min(1).describe('Schedule ID'),
35
+ destination_id: z.string().min(1).describe('Destination ID'),
36
+ }),
37
+ response: DestinationGetResponseSchema,
38
+ },
39
+
40
+ async handler(ctx) {
41
+ const { args, options } = ctx;
42
+ const schedule = createScheduleAdapter(ctx);
43
+ const destination = await schedule.getDestination(args.schedule_id, args.destination_id);
44
+
45
+ if (!options.json) {
46
+ tui.table(
47
+ [
48
+ {
49
+ ID: destination.id,
50
+ 'Schedule ID': destination.schedule_id,
51
+ Type: destination.type,
52
+ Config: JSON.stringify(destination.config),
53
+ Created: new Date(destination.created_at).toLocaleString(),
54
+ Updated: new Date(destination.updated_at).toLocaleString(),
55
+ },
56
+ ],
57
+ undefined,
58
+ { layout: 'vertical' }
59
+ );
60
+ }
61
+
62
+ return { destination };
63
+ },
64
+ });
65
+
66
+ export default getSubcommand;
@@ -0,0 +1,27 @@
1
+ import { createCommand } from '../../../../types';
2
+ import { createSubcommand } from './create';
3
+ import { listSubcommand } from './list';
4
+ import { getSubcommand } from './get';
5
+ import { deleteSubcommand } from './delete';
6
+ import { getCommand } from '../../../../command-prefix';
7
+
8
+ export const command = createCommand({
9
+ name: 'destination',
10
+ aliases: ['dest'],
11
+ description: 'Manage schedule destinations',
12
+ tags: ['requires-auth'],
13
+ requires: { auth: true },
14
+ subcommands: [createSubcommand, listSubcommand, getSubcommand, deleteSubcommand],
15
+ examples: [
16
+ {
17
+ command: getCommand('cloud schedule destination list sched_abc123'),
18
+ description: 'List destinations',
19
+ },
20
+ {
21
+ command: getCommand('cloud schedule destination create url sched_abc123 https://example.com'),
22
+ description: 'Create URL destination',
23
+ },
24
+ ],
25
+ });
26
+
27
+ export default command;
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../../types';
3
+ import * as tui from '../../../../tui';
4
+ import { createScheduleAdapter } from '../util';
5
+ import { getCommand } from '../../../../command-prefix';
6
+
7
+ const DestinationListResponseSchema = z.object({
8
+ destinations: z.array(
9
+ z.object({
10
+ id: z.string(),
11
+ schedule_id: z.string(),
12
+ created_at: z.string(),
13
+ updated_at: z.string(),
14
+ created_by: z.string(),
15
+ type: z.enum(['url', 'sandbox']),
16
+ config: z.record(z.string(), z.unknown()),
17
+ })
18
+ ),
19
+ });
20
+
21
+ export const listSubcommand = createCommand({
22
+ name: 'list',
23
+ aliases: ['ls'],
24
+ description: 'List destinations for a schedule',
25
+ tags: ['read-only', 'fast', 'requires-auth'],
26
+ requires: { auth: true, region: true },
27
+ optional: { project: true },
28
+ idempotent: true,
29
+ examples: [
30
+ {
31
+ command: getCommand('cloud schedule destination list sched_abc123'),
32
+ description: 'List schedule destinations',
33
+ },
34
+ ],
35
+ schema: {
36
+ args: z.object({
37
+ schedule_id: z.string().min(1).describe('Schedule ID'),
38
+ }),
39
+ response: DestinationListResponseSchema,
40
+ },
41
+
42
+ async handler(ctx) {
43
+ const { args, options } = ctx;
44
+ const schedule = createScheduleAdapter(ctx);
45
+ const result = await schedule.get(args.schedule_id);
46
+
47
+ if (!options.json) {
48
+ if (result.destinations.length === 0) {
49
+ tui.info('No destinations configured');
50
+ } else {
51
+ tui.table(
52
+ result.destinations.map((destination: {
53
+ id: string;
54
+ type: 'url' | 'sandbox';
55
+ config: Record<string, unknown>;
56
+ created_at: string;
57
+ }) => ({
58
+ ID: destination.id,
59
+ Type: destination.type,
60
+ Config: JSON.stringify(destination.config),
61
+ Created: new Date(destination.created_at).toLocaleString(),
62
+ })),
63
+ ['ID', 'Type', 'Config', 'Created']
64
+ );
65
+ }
66
+ }
67
+
68
+ return { destinations: result.destinations };
69
+ },
70
+ });
71
+
72
+ export default listSubcommand;
@@ -0,0 +1,92 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../types';
3
+ import * as tui from '../../../tui';
4
+ import { createScheduleAdapter } from './util';
5
+ import { getCommand } from '../../../command-prefix';
6
+
7
+ const ScheduleGetResponseSchema = z.object({
8
+ schedule: z.object({
9
+ id: z.string(),
10
+ created_at: z.string(),
11
+ updated_at: z.string(),
12
+ created_by: z.string(),
13
+ name: z.string(),
14
+ description: z.string().nullable(),
15
+ expression: z.string(),
16
+ due_date: z.string(),
17
+ }),
18
+ destinations: z.array(
19
+ z.object({
20
+ id: z.string(),
21
+ schedule_id: z.string(),
22
+ created_at: z.string(),
23
+ updated_at: z.string(),
24
+ created_by: z.string(),
25
+ type: z.enum(['url', 'sandbox']),
26
+ config: z.record(z.string(), z.unknown()),
27
+ })
28
+ ),
29
+ });
30
+
31
+ export const getSubcommand = createCommand({
32
+ name: 'get',
33
+ description: 'Get schedule details',
34
+ tags: ['read-only', 'fast', 'requires-auth'],
35
+ requires: { auth: true, region: true },
36
+ optional: { project: true },
37
+ idempotent: true,
38
+ examples: [
39
+ { command: getCommand('cloud schedule get sched_abc123'), description: 'Get schedule details' },
40
+ ],
41
+ schema: {
42
+ args: z.object({
43
+ schedule_id: z.string().min(1).describe('Schedule ID'),
44
+ }),
45
+ response: ScheduleGetResponseSchema,
46
+ },
47
+
48
+ async handler(ctx) {
49
+ const { args, options } = ctx;
50
+ const schedule = createScheduleAdapter(ctx);
51
+ const result = await schedule.get(args.schedule_id);
52
+
53
+ if (!options.json) {
54
+ const details: Record<string, unknown> = {
55
+ Name: result.schedule.name,
56
+ ID: result.schedule.id,
57
+ Expression: result.schedule.expression,
58
+ Description: result.schedule.description ?? '-',
59
+ 'Next Due': result.schedule.due_date,
60
+ Created: new Date(result.schedule.created_at).toLocaleString(),
61
+ Updated: new Date(result.schedule.updated_at).toLocaleString(),
62
+ };
63
+
64
+ tui.table([details], undefined, { layout: 'vertical', padStart: ' ' });
65
+
66
+ tui.newline();
67
+ tui.info('Destinations');
68
+ if (result.destinations.length === 0) {
69
+ tui.info('No destinations configured');
70
+ } else {
71
+ tui.table(
72
+ result.destinations.map((destination: {
73
+ id: string;
74
+ type: 'url' | 'sandbox';
75
+ config: Record<string, unknown>;
76
+ created_at: string;
77
+ }) => ({
78
+ ID: destination.id,
79
+ Type: destination.type,
80
+ Config: JSON.stringify(destination.config),
81
+ Created: new Date(destination.created_at).toLocaleString(),
82
+ })),
83
+ ['ID', 'Type', 'Config', 'Created']
84
+ );
85
+ }
86
+ }
87
+
88
+ return result;
89
+ },
90
+ });
91
+
92
+ export default getSubcommand;
@@ -0,0 +1,36 @@
1
+ import { createCommand } from '../../../types';
2
+ import { listSubcommand } from './list';
3
+ import { createSubcommand } from './create';
4
+ import { getSubcommand } from './get';
5
+ import { deleteSubcommand } from './delete';
6
+ import { updateSubcommand } from './update';
7
+ import destinationSubcommand from './destination';
8
+ import deliverySubcommand from './delivery';
9
+ import { getCommand } from '../../../command-prefix';
10
+
11
+ export const command = createCommand({
12
+ name: 'schedule',
13
+ aliases: ['schedules', 'sched'],
14
+ description: 'Manage scheduled tasks',
15
+ tags: ['requires-auth'],
16
+ requires: { auth: true },
17
+ subcommands: [
18
+ listSubcommand,
19
+ createSubcommand,
20
+ getSubcommand,
21
+ deleteSubcommand,
22
+ updateSubcommand,
23
+ destinationSubcommand,
24
+ deliverySubcommand,
25
+ ],
26
+ examples: [
27
+ { command: getCommand('cloud schedule list'), description: 'List schedules' },
28
+ {
29
+ command: getCommand("cloud schedule create --name nightly --expression '0 0 * * *'"),
30
+ description: 'Create a schedule',
31
+ },
32
+ { command: getCommand('cloud schedule get sched_abc123'), description: 'Get schedule details' },
33
+ ],
34
+ });
35
+
36
+ export default command;
@@ -0,0 +1,78 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../types';
3
+ import * as tui from '../../../tui';
4
+ import { createScheduleAdapter } from './util';
5
+ import { getCommand } from '../../../command-prefix';
6
+
7
+ const ScheduleListResponseSchema = z.object({
8
+ schedules: z.array(
9
+ z.object({
10
+ id: z.string(),
11
+ created_at: z.string(),
12
+ updated_at: z.string(),
13
+ created_by: z.string(),
14
+ name: z.string(),
15
+ description: z.string().nullable(),
16
+ expression: z.string(),
17
+ due_date: z.string(),
18
+ })
19
+ ),
20
+ total: z.number(),
21
+ });
22
+
23
+ export const listSubcommand = createCommand({
24
+ name: 'list',
25
+ aliases: ['ls'],
26
+ description: 'List schedules',
27
+ tags: ['read-only', 'fast', 'requires-auth'],
28
+ requires: { auth: true, region: true },
29
+ optional: { project: true },
30
+ idempotent: true,
31
+ examples: [
32
+ { command: getCommand('cloud schedule list'), description: 'List schedules' },
33
+ { command: getCommand('cloud schedule list --limit 20'), description: 'List 20 schedules' },
34
+ ],
35
+ schema: {
36
+ options: z.object({
37
+ limit: z.coerce.number().min(0).optional().describe('Maximum number of schedules'),
38
+ offset: z.coerce.number().min(0).optional().describe('Pagination offset'),
39
+ }),
40
+ response: ScheduleListResponseSchema,
41
+ },
42
+
43
+ async handler(ctx) {
44
+ const { opts, options } = ctx;
45
+ const schedule = createScheduleAdapter(ctx);
46
+ const result = await schedule.list({ limit: opts.limit, offset: opts.offset });
47
+
48
+ if (!options.json) {
49
+ if (result.schedules.length === 0) {
50
+ tui.info('No schedules found');
51
+ } else {
52
+ tui.table(
53
+ result.schedules.map((item: {
54
+ id: string;
55
+ created_at: string;
56
+ updated_at: string;
57
+ created_by: string;
58
+ name: string;
59
+ description: string | null;
60
+ expression: string;
61
+ due_date: string;
62
+ }) => ({
63
+ Name: item.name,
64
+ ID: item.id,
65
+ Expression: item.expression,
66
+ 'Next Due': item.due_date,
67
+ Created: new Date(item.created_at).toLocaleString(),
68
+ })),
69
+ ['Name', 'ID', 'Expression', 'Next Due', 'Created']
70
+ );
71
+ }
72
+ }
73
+
74
+ return result;
75
+ },
76
+ });
77
+
78
+ export default listSubcommand;
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ import { createCommand } from '../../../types';
3
+ import * as tui from '../../../tui';
4
+ import { createScheduleAdapter } from './util';
5
+ import { getCommand } from '../../../command-prefix';
6
+
7
+ const ScheduleUpdateResponseSchema = z.object({
8
+ schedule: z.object({
9
+ id: z.string(),
10
+ created_at: z.string(),
11
+ updated_at: z.string(),
12
+ created_by: z.string(),
13
+ name: z.string(),
14
+ description: z.string().nullable(),
15
+ expression: z.string(),
16
+ due_date: z.string(),
17
+ }),
18
+ });
19
+
20
+ export const updateSubcommand = createCommand({
21
+ name: 'update',
22
+ description: 'Update a schedule',
23
+ tags: ['mutating', 'requires-auth'],
24
+ requires: { auth: true, region: true },
25
+ optional: { project: true },
26
+ examples: [
27
+ {
28
+ command: getCommand("cloud schedule update sched_abc123 --expression '*/5 * * * *'"),
29
+ description: 'Update schedule expression',
30
+ },
31
+ ],
32
+ schema: {
33
+ args: z.object({
34
+ schedule_id: z.string().min(1).describe('Schedule ID'),
35
+ }),
36
+ options: z.object({
37
+ name: z.string().optional().describe('Schedule name'),
38
+ expression: z.string().optional().describe('Cron expression'),
39
+ description: z.string().optional().describe('Schedule description'),
40
+ }),
41
+ response: ScheduleUpdateResponseSchema,
42
+ },
43
+
44
+ async handler(ctx) {
45
+ const { args, opts, options } = ctx;
46
+ const schedule = createScheduleAdapter(ctx);
47
+ const result = await schedule.update(args.schedule_id, {
48
+ name: opts.name,
49
+ expression: opts.expression,
50
+ description: opts.description,
51
+ });
52
+
53
+ if (!options.json) {
54
+ tui.success(`Updated schedule: ${result.schedule.name}`);
55
+ tui.table(
56
+ [
57
+ {
58
+ Name: result.schedule.name,
59
+ ID: result.schedule.id,
60
+ Expression: result.schedule.expression,
61
+ Description: result.schedule.description ?? '-',
62
+ Updated: new Date(result.schedule.updated_at).toLocaleString(),
63
+ },
64
+ ],
65
+ undefined,
66
+ { layout: 'vertical' }
67
+ );
68
+ }
69
+
70
+ return result;
71
+ },
72
+ });
73
+
74
+ export default updateSubcommand;
@@ -0,0 +1,34 @@
1
+ import { ScheduleService, type Logger } from '@agentuity/core';
2
+ import { createServerFetchAdapter } from '@agentuity/server';
3
+ import type { AuthData, Config, GlobalOptions, ProjectConfig } from '../../../types';
4
+ import { getCatalystUrl } from '../../../catalyst';
5
+ import * as tui from '../../../tui';
6
+
7
+ export function createScheduleAdapter(
8
+ ctx: {
9
+ logger: Logger;
10
+ auth: AuthData;
11
+ region: string;
12
+ project?: ProjectConfig;
13
+ config: Config | null;
14
+ options: GlobalOptions;
15
+ },
16
+ explicitOrgId?: string
17
+ ) {
18
+ const orgId =
19
+ explicitOrgId ??
20
+ ctx.project?.orgId ??
21
+ ctx.options.orgId ??
22
+ (process.env.AGENTUITY_CLOUD_ORG_ID || ctx.config?.preferences?.orgId);
23
+ if (!orgId) {
24
+ tui.fatal(
25
+ 'Organization ID is required. Either run from a project directory or use --org-id flag.'
26
+ );
27
+ }
28
+ const adapter = createServerFetchAdapter(
29
+ { headers: { Authorization: `Bearer ${ctx.auth.apiKey}`, 'x-agentuity-orgid': orgId } },
30
+ ctx.logger
31
+ );
32
+ const baseUrl = getCatalystUrl(ctx.region);
33
+ return new ScheduleService(baseUrl, adapter);
34
+ }