@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,77 @@
1
+ import { basename } from 'node:path';
2
+ import { z } from 'zod';
3
+ import { createCommand } from '../../../types';
4
+ import * as tui from '../../../tui';
5
+ import { createEmailAdapter, truncate } from './util';
6
+ import { EmailOutboundSchema } from './outbound/schemas';
7
+ export const sendSubcommand = createCommand({
8
+ name: 'send',
9
+ description: 'Send an email',
10
+ tags: ['mutating', 'requires-auth'],
11
+ requires: { auth: true },
12
+ schema: {
13
+ args: z.object({
14
+ to: z.string().email().describe('Destination email address'),
15
+ }),
16
+ options: z.object({
17
+ from: z.string().email().describe('Sender email address (must be owned by org)'),
18
+ subject: z.string().min(1).describe('Email subject'),
19
+ text: z.string().optional().describe('Plain text body'),
20
+ html: z.string().optional().describe('HTML body'),
21
+ file: z.array(z.string()).optional().describe('Attachment file path (repeatable)'),
22
+ }),
23
+ response: EmailOutboundSchema,
24
+ },
25
+ async handler(ctx) {
26
+ const { args, opts, options } = ctx;
27
+ if (!opts.text && !opts.html) {
28
+ tui.fatal('At least one of --text or --html is required');
29
+ }
30
+ const fileValues = Array.isArray(opts.file)
31
+ ? opts.file
32
+ : opts.file
33
+ ? [opts.file]
34
+ : [];
35
+ const attachments = [];
36
+ for (const filePath of fileValues) {
37
+ const file = Bun.file(filePath);
38
+ if (!(await file.exists())) {
39
+ tui.fatal(`Attachment file not found: ${filePath}`);
40
+ }
41
+ const buffer = Buffer.from(await file.arrayBuffer());
42
+ attachments.push({
43
+ filename: basename(filePath),
44
+ contentType: file.type || 'application/octet-stream',
45
+ content: buffer.toString('base64'),
46
+ });
47
+ }
48
+ const email = createEmailAdapter(ctx);
49
+ const outbound = await email.send({
50
+ to: [args.to],
51
+ from: opts.from,
52
+ subject: opts.subject,
53
+ text: opts.text,
54
+ html: opts.html,
55
+ attachments: attachments.length > 0 ? attachments : undefined,
56
+ });
57
+ if (!options.json) {
58
+ tui.success('Email queued for delivery');
59
+ tui.table([
60
+ {
61
+ ID: outbound.id,
62
+ From: outbound.from,
63
+ To: outbound.to,
64
+ Subject: outbound.subject ?? '-',
65
+ Text: truncate(outbound.text),
66
+ Status: outbound.status ?? '-',
67
+ Sent: outbound.sent_at
68
+ ? new Date(outbound.sent_at).toLocaleString()
69
+ : '-',
70
+ },
71
+ ], ['ID', 'From', 'To', 'Subject', 'Text', 'Status', 'Sent'], { layout: 'vertical', padStart: ' ' });
72
+ }
73
+ return outbound;
74
+ },
75
+ });
76
+ export default sendSubcommand;
77
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/email/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { EmailStorageService, type Logger } from '@agentuity/core';
3
+ import type { AuthData, Config, GlobalOptions, ProjectConfig } from '../../../types';
4
+ export type { EmailAddress, EmailDestination, EmailInbound, EmailOutbound, EmailAttachment, EmailSendParams, } from '@agentuity/core';
5
+ interface EmailContext {
6
+ logger: Logger;
7
+ auth: AuthData;
8
+ region?: string;
9
+ project?: ProjectConfig;
10
+ config: Config | null;
11
+ options: GlobalOptions;
12
+ }
13
+ export declare function resolveEmailOrgId(ctx: EmailContext, explicitOrgId?: string): string;
14
+ export declare function resolveEmailRegion(ctx: EmailContext): string;
15
+ export declare const EmailAddressSchema: z.ZodObject<{
16
+ id: z.ZodString;
17
+ email: z.ZodString;
18
+ project_id: z.ZodOptional<z.ZodString>;
19
+ provider: z.ZodOptional<z.ZodString>;
20
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
21
+ created_at: z.ZodString;
22
+ updated_at: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>;
24
+ export declare function truncate(value: string | undefined, length?: number): string;
25
+ export declare function createEmailAdapter(ctx: EmailContext, explicitOrgId?: string): EmailStorageService;
26
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/email/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIrF,YAAY,EACX,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,GACf,MAAM,iBAAiB,CAAC;AAEzB,UAAU,YAAY;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAcnF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAc5D;AAED,eAAO,MAAM,kBAAkB;;;;;;;;iBAQ7B,CAAC;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,SAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,uBAc3E"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { EmailStorageService } from '@agentuity/core';
3
+ import { createServerFetchAdapter } from '@agentuity/server';
4
+ import { getCatalystUrl } from '../../../catalyst';
5
+ import * as tui from '../../../tui';
6
+ export function resolveEmailOrgId(ctx, explicitOrgId) {
7
+ const orgId = explicitOrgId ??
8
+ ctx.project?.orgId ??
9
+ ctx.options.orgId ??
10
+ (process.env.AGENTUITY_CLOUD_ORG_ID || ctx.config?.preferences?.orgId);
11
+ if (!orgId) {
12
+ tui.fatal('Organization ID is required. Either run from a project directory or use --org-id flag.');
13
+ }
14
+ return orgId;
15
+ }
16
+ export function resolveEmailRegion(ctx) {
17
+ if (ctx.region) {
18
+ return ctx.region;
19
+ }
20
+ if (process.env.AGENTUITY_REGION) {
21
+ return process.env.AGENTUITY_REGION;
22
+ }
23
+ if (ctx.config?.name === 'local') {
24
+ return 'local';
25
+ }
26
+ if (ctx.config?.preferences?.region) {
27
+ return ctx.config.preferences.region;
28
+ }
29
+ return 'usc';
30
+ }
31
+ export const EmailAddressSchema = z.object({
32
+ id: z.string(),
33
+ email: z.string(),
34
+ project_id: z.string().optional(),
35
+ provider: z.string().optional(),
36
+ config: z.record(z.string(), z.unknown()).optional(),
37
+ created_at: z.string(),
38
+ updated_at: z.string().optional(),
39
+ });
40
+ export function truncate(value, length = 200) {
41
+ if (!value) {
42
+ return '-';
43
+ }
44
+ return value.length > length ? `${value.slice(0, length - 3)}...` : value;
45
+ }
46
+ export function createEmailAdapter(ctx, explicitOrgId) {
47
+ const orgId = resolveEmailOrgId(ctx, explicitOrgId);
48
+ const adapter = createServerFetchAdapter({
49
+ headers: {
50
+ Authorization: `Bearer ${ctx.auth.apiKey}`,
51
+ 'x-agentuity-orgid': orgId,
52
+ },
53
+ }, ctx.logger);
54
+ const baseUrl = getCatalystUrl(resolveEmailRegion(ctx));
55
+ return new EmailStorageService(baseUrl, adapter);
56
+ }
57
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/email/util.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/index.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,OAAO,mCAgClB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/index.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,OAAO,mCAoClB,CAAC"}
@@ -10,12 +10,16 @@ import { scpSubcommand } from './scp';
10
10
  import { deploymentCommand } from './deployment';
11
11
  import keyvalueCommand from './keyvalue';
12
12
  import queueCommand from './queue';
13
+ import webhookCommand from './webhook';
13
14
  import { agentCommand } from './agent';
14
15
  import envCommand from './env';
15
16
  import apikeyCommand from './apikey';
16
17
  import streamCommand from './stream';
17
18
  import vectorCommand from './vector';
19
+ import { emailCommand } from './email';
20
+ import taskCommand from './task';
18
21
  import sandboxCommand from './sandbox';
22
+ import scheduleCommand from './schedule';
19
23
  import { regionSubcommand } from './region';
20
24
  import { machineCommand } from './machine';
21
25
  import { evalCommand } from './eval';
@@ -34,10 +38,14 @@ export const command = createCommand({
34
38
  apikeyCommand,
35
39
  keyvalueCommand,
36
40
  queueCommand,
41
+ webhookCommand,
42
+ taskCommand,
37
43
  agentCommand,
38
44
  streamCommand,
45
+ emailCommand,
39
46
  vectorCommand,
40
47
  sandboxCommand,
48
+ scheduleCommand,
41
49
  envCommand,
42
50
  evalCommand,
43
51
  evalRunCommand,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/cloud/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,YAAY,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,UAAU,MAAM,OAAO,CAAC;AAC/B,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,cAAc,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE;QACtF,EAAE,OAAO,EAAE,UAAU,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE;QACrF,EAAE,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE;KACjF;IACD,WAAW,EAAE;QACZ,aAAa;QACb,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,aAAa;QACb,cAAc;QACd,UAAU;QACV,WAAW;QACX,cAAc;QACd,gBAAgB;QAChB,SAAS;QACT,YAAY;QACZ,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;KACd;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/cloud/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,YAAY,MAAM,SAAS,CAAC;AACnC,OAAO,cAAc,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,UAAU,MAAM,OAAO,CAAC;AAC/B,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,WAAW,MAAM,QAAQ,CAAC;AACjC,OAAO,cAAc,MAAM,WAAW,CAAC;AACvC,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE;QACtF,EAAE,OAAO,EAAE,UAAU,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE;QACrF,EAAE,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE;KACjF;IACD,WAAW,EAAE;QACZ,aAAa;QACb,eAAe;QACf,YAAY;QACZ,cAAc;QACd,WAAW;QACX,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,aAAa;QACb,cAAc;QACd,eAAe;QACf,UAAU;QACV,WAAW;QACX,cAAc;QACd,gBAAgB;QAChB,SAAS;QACT,YAAY;QACZ,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;KACd;CACD,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { type Logger } from '@agentuity/core';
2
2
  import { type APIClient } from '@agentuity/server';
3
3
  import type { AuthData, Config } from '../../types';
4
- export type IdentifierType = 'project' | 'deployment' | 'sandbox' | 'stream';
4
+ export type IdentifierType = 'project' | 'deployment' | 'sandbox' | 'stream' | 'webhook' | 'task';
5
5
  /**
6
6
  * Determine the type of identifier based on its prefix
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"region-lookup.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/region-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAIN,KAAK,SAAS,EAGd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7E;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAepE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,WAAW,oBAAe,EAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,MAAM,CAAC,CAoGjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,WAAW,oBAAe,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"region-lookup.d.ts","sourceRoot":"","sources":["../../../src/cmd/cloud/region-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAKN,KAAK,SAAS,EAGd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAElG;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAqBpE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,WAAW,oBAAe,EAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,MAAM,CAAC,CAqJjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,WAAW,oBAAe,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1,5 +1,5 @@
1
- import { StreamStorageService } from '@agentuity/core';
2
- import { projectGet, sandboxResolve, deploymentGet, createServerFetchAdapter, getServiceUrls, } from '@agentuity/server';
1
+ import { StreamStorageService, TaskStorageService } from '@agentuity/core';
2
+ import { projectGet, sandboxResolve, deploymentGet, getWebhook, createServerFetchAdapter, getServiceUrls, } from '@agentuity/server';
3
3
  import { getResourceInfo, setResourceInfo } from '../../cache';
4
4
  import { getDefaultRegion } from '../../config';
5
5
  import * as tui from '../../tui';
@@ -17,9 +17,15 @@ export function getIdentifierType(identifier) {
17
17
  if (identifier.startsWith('sbx_')) {
18
18
  return 'sandbox';
19
19
  }
20
+ if (identifier.startsWith('task_')) {
21
+ return 'task';
22
+ }
20
23
  if (identifier.startsWith('stream_')) {
21
24
  return 'stream';
22
25
  }
26
+ if (identifier.startsWith('wh_')) {
27
+ return 'webhook';
28
+ }
23
29
  // Default to project for unknown prefixes
24
30
  return 'project';
25
31
  }
@@ -54,6 +60,28 @@ export async function getIdentifierRegion(logger, auth, apiClient, profileName =
54
60
  const deployment = await deploymentGet(apiClient, identifier);
55
61
  region = deployment.cloudRegion ?? null;
56
62
  }
63
+ else if (identifierType === 'task') {
64
+ // Tasks live in per-tenant DBs accessible from any regional Catalyst.
65
+ // Use default region to reach Catalyst, which can resolve the task for the org.
66
+ const taskDefaultRegion = await getDefaultRegion(profileName, config);
67
+ const taskBaseUrl = getServiceUrls(taskDefaultRegion).catalyst;
68
+ const resolvedTaskOrgId = orgId ?? process.env.AGENTUITY_CLOUD_ORG_ID ?? config?.preferences?.orgId;
69
+ if (!resolvedTaskOrgId) {
70
+ tui.fatal(`Organization ID required to resolve task '${identifier}'. Use --org-id or set AGENTUITY_CLOUD_ORG_ID.`, ErrorCode.INVALID_ARGUMENT);
71
+ }
72
+ const taskAdapter = createServerFetchAdapter({
73
+ headers: {
74
+ Authorization: `Bearer ${auth.apiKey}`,
75
+ 'x-agentuity-orgid': resolvedTaskOrgId,
76
+ },
77
+ }, logger);
78
+ const taskService = new TaskStorageService(taskBaseUrl, taskAdapter);
79
+ const taskResult = await taskService.get(identifier);
80
+ if (taskResult) {
81
+ region = taskDefaultRegion;
82
+ orgId = resolvedTaskOrgId;
83
+ }
84
+ }
57
85
  else if (identifierType === 'sandbox') {
58
86
  // sandbox - use CLI API to resolve across all orgs the user has access to
59
87
  if (!apiClient) {
@@ -66,6 +94,20 @@ export async function getIdentifierRegion(logger, auth, apiClient, profileName =
66
94
  orgId = sandbox.orgId;
67
95
  }
68
96
  }
97
+ else if (identifierType === 'webhook') {
98
+ // Webhook tenant DB is not regional — any global Catalyst can serve the request.
99
+ // We still look up the webhook to validate it exists and cache the orgId.
100
+ if (!apiClient) {
101
+ tui.fatal(`API client required for webhook region lookup. This is an internal error.`, ErrorCode.INVALID_ARGUMENT);
102
+ }
103
+ const resolvedOrgId = orgId ?? process.env.AGENTUITY_CLOUD_ORG_ID ?? config?.preferences?.orgId;
104
+ const webhook = await getWebhook(apiClient, identifier, resolvedOrgId ? { orgId: resolvedOrgId } : undefined);
105
+ if (webhook) {
106
+ orgId = resolvedOrgId;
107
+ }
108
+ // Use default region since webhooks are global
109
+ region = await getDefaultRegion(profileName, config);
110
+ }
69
111
  else {
70
112
  // stream - use the streams service to look up stream info
71
113
  // Any regional streams service can look up any stream and return its info
@@ -1 +1 @@
1
- {"version":3,"file":"region-lookup.js","sourceRoot":"","sources":["../../../src/cmd/cloud/region-lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"region-lookup.js","sourceRoot":"","sources":["../../../src/cmd/cloud/region-lookup.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  export declare const SNAPSHOT_TAG_REGEX: RegExp;
2
2
  export declare const MAX_SNAPSHOT_TAG_LENGTH = 128;
3
+ interface FileEntry {
4
+ path: string;
5
+ absolutePath: string;
6
+ size: number;
7
+ }
8
+ export declare const DEFAULT_EXCLUSIONS: string[];
9
+ export declare function resolveFileGlobs(directory: string, patterns: string[]): Promise<Map<string, FileEntry>>;
3
10
  export declare const buildSubcommand: import("../../../..").CommandDefinition;
4
11
  export default buildSubcommand;
5
12
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/snapshot/build.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,kBAAkB,QAAiC,CAAC;AACjE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AA+T3C,eAAO,MAAM,eAAe,yCAgrB1B,CAAC;AAEH,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/snapshot/build.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,kBAAkB,QAAiC,CAAC;AACjE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAsB3C,UAAU,SAAS;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACb;AA6HD,eAAO,MAAM,kBAAkB,UAAmE,CAAC;AAEnG,wBAAsB,gBAAgB,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAoEjC;AA+FD,eAAO,MAAM,eAAe,yCAorB1B,CAAC;AAEH,eAAe,eAAe,CAAC"}
@@ -1,20 +1,20 @@
1
- import { z } from 'zod';
2
- import { resolve, join, extname } from 'node:path';
3
- import { existsSync, statSync, createReadStream, createWriteStream } from 'node:fs';
1
+ import { createHash, createPublicKey, randomUUID } from 'node:crypto';
2
+ import { createReadStream, createWriteStream, existsSync, statSync } from 'node:fs';
3
+ import { rm } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { extname, isAbsolute, join, resolve } from 'node:path';
6
+ import { NPM_PACKAGE_NAME_PATTERN, SnapshotBuildFileSchema, snapshotBuildFinalize, snapshotBuildInit, snapshotUpload, } from '@agentuity/server';
4
7
  import { YAML } from 'bun';
5
8
  import * as tar from 'tar';
6
- import { createCommand } from '../../../../types';
7
- import * as tui from '../../../../tui';
8
- import { ErrorCode } from '../../../../errors';
9
+ import { z } from 'zod';
9
10
  import { getCommand } from '../../../../command-prefix';
10
- import { snapshotBuildInit, snapshotBuildFinalize, snapshotUpload, SnapshotBuildFileSchema, NPM_PACKAGE_NAME_PATTERN, } from '@agentuity/server';
11
11
  import { getCatalystAPIClient } from '../../../../config';
12
+ import { encryptFIPSKEMDEMStream } from '../../../../crypto/box';
13
+ import { ErrorCode } from '../../../../errors';
14
+ import * as tui from '../../../../tui';
15
+ import { createCommand } from '../../../../types';
12
16
  import { validateAptDependencies } from '../../../../utils/apt-validator';
13
17
  import { getGitInfo, mergeGitInfo } from '../../../../utils/git';
14
- import { encryptFIPSKEMDEMStream } from '../../../../crypto/box';
15
- import { tmpdir } from 'node:os';
16
- import { randomUUID, createHash, createPublicKey } from 'node:crypto';
17
- import { rm } from 'node:fs/promises';
18
18
  export const SNAPSHOT_TAG_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
19
19
  export const MAX_SNAPSHOT_TAG_LENGTH = 128;
20
20
  const SnapshotBuildResponseSchema = z.object({
@@ -132,8 +132,8 @@ function substituteVariables(values, variables, flagName) {
132
132
  return result;
133
133
  }
134
134
  // Default patterns that are always excluded from snapshot builds
135
- const DEFAULT_EXCLUSIONS = ['.git', '.git/**', 'node_modules/**', '.agentuity/**', '.env*'];
136
- async function resolveFileGlobs(directory, patterns) {
135
+ export const DEFAULT_EXCLUSIONS = ['.git', '.git/**', 'node_modules/**', '.agentuity/**', '.env*'];
136
+ export async function resolveFileGlobs(directory, patterns) {
137
137
  const files = new Map();
138
138
  const exclusions = [...DEFAULT_EXCLUSIONS];
139
139
  const inclusions = [];
@@ -159,9 +159,9 @@ async function resolveFileGlobs(directory, patterns) {
159
159
  });
160
160
  }
161
161
  }
162
- catch {
162
+ catch (err) {
163
163
  // Skip files that can't be stat'd (broken symlinks, permission issues, etc.)
164
- continue;
164
+ console.debug(`Skipping ${file}: ${err instanceof Error ? err.message : err}`);
165
165
  }
166
166
  }
167
167
  }
@@ -294,10 +294,7 @@ export const buildSubcommand = createCommand({
294
294
  .string()
295
295
  .optional()
296
296
  .describe('Path to build file (defaults to agentuity-snapshot.[json|yaml|yml])'),
297
- env: z
298
- .array(z.string())
299
- .optional()
300
- .describe('Environment variable substitution (KEY=VALUE)'),
297
+ env: z.array(z.string()).optional().describe('Environment variable substitution (KEY=VALUE)'),
301
298
  name: z.string().optional().describe('Snapshot name (overrides build file)'),
302
299
  tag: z.string().optional().describe('Snapshot tag (defaults to "latest")'),
303
300
  description: z.string().optional().describe('Snapshot description (overrides build file)'),
@@ -326,7 +323,7 @@ export const buildSubcommand = createCommand({
326
323
  async handler(ctx) {
327
324
  const { args, opts, options, auth, region, config, logger, orgId } = ctx;
328
325
  const dryRun = options.dryRun === true;
329
- const directory = resolve(args.directory);
326
+ let directory = resolve(args.directory);
330
327
  if (!existsSync(directory)) {
331
328
  logger.fatal(`Directory not found: ${directory}`);
332
329
  }
@@ -381,22 +378,43 @@ export const buildSubcommand = createCommand({
381
378
  process.exit(1);
382
379
  }
383
380
  const buildConfig = validationResult.data;
381
+ // If dir is specified in the build file, use it as the effective build context
382
+ if (buildConfig.dir) {
383
+ if (isAbsolute(buildConfig.dir)) {
384
+ logger.fatal(`'dir' must be a relative path, got: ${buildConfig.dir}`);
385
+ }
386
+ const dirPath = resolve(directory, buildConfig.dir);
387
+ if (!dirPath.startsWith(`${directory}/`) && dirPath !== directory) {
388
+ logger.fatal(`'dir' resolves outside the build root: ${dirPath}`);
389
+ }
390
+ let isDir = false;
391
+ try {
392
+ isDir = statSync(dirPath).isDirectory();
393
+ }
394
+ catch {
395
+ // path does not exist
396
+ }
397
+ if (!isDir) {
398
+ logger.fatal(`Build context directory not found or is not a directory: ${dirPath} (specified by 'dir: ${buildConfig.dir}' in build file)`);
399
+ }
400
+ directory = dirPath;
401
+ }
384
402
  // Determine if snapshot is public: CLI flag takes precedence, otherwise use build file
385
403
  const isPublic = opts.public === true || (opts.public === undefined && buildConfig.public === true);
386
404
  if (isPublic && !dryRun) {
387
405
  if (!opts.confirm) {
388
406
  if (!tui.isTTYLike()) {
389
- logger.fatal(`Publishing a public snapshot requires confirmation.\n\n` +
390
- `Public snapshots make all environment variables and files publicly accessible.\n\n` +
391
- `To proceed, add the --confirm flag:\n` +
407
+ logger.fatal('Publishing a public snapshot requires confirmation.\n\n' +
408
+ 'Public snapshots make all environment variables and files publicly accessible.\n\n' +
409
+ 'To proceed, add the --confirm flag:\n' +
392
410
  ` ${getCommand('cloud sandbox snapshot build . --public --confirm')}\n\n` +
393
- `To preview what will be published, use --dry-run first:\n` +
411
+ 'To preview what will be published, use --dry-run first:\n' +
394
412
  ` ${getCommand('cloud sandbox snapshot build . --public --dry-run')}`);
395
413
  }
396
- tui.warningBox('Public Snapshot', `You are publishing a public snapshot.\n\n` +
397
- `This will make all environment variables and\n` +
398
- `files in the snapshot publicly accessible.\n\n` +
399
- `Run with --dry-run to preview the contents.`);
414
+ tui.warningBox('Public Snapshot', 'You are publishing a public snapshot.\n\n' +
415
+ 'This will make all environment variables and\n' +
416
+ 'files in the snapshot publicly accessible.\n\n' +
417
+ 'Run with --dry-run to preview the contents.');
400
418
  console.log('');
401
419
  const confirmed = await tui.confirm('Proceed with public snapshot?', false);
402
420
  if (!confirmed) {