run402 3.3.1 → 3.3.3

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 (38) hide show
  1. package/README.md +2 -0
  2. package/lib/billing.mjs +6 -4
  3. package/lib/email.mjs +142 -8
  4. package/lib/notifications.mjs +5 -5
  5. package/lib/org.mjs +14 -7
  6. package/lib/transfer.mjs +23 -16
  7. package/package.json +1 -1
  8. package/sdk/dist/namespaces/admin.d.ts +4 -6
  9. package/sdk/dist/namespaces/admin.d.ts.map +1 -1
  10. package/sdk/dist/namespaces/admin.js +2 -2
  11. package/sdk/dist/namespaces/admin.js.map +1 -1
  12. package/sdk/dist/namespaces/billing.d.ts +19 -3
  13. package/sdk/dist/namespaces/billing.d.ts.map +1 -1
  14. package/sdk/dist/namespaces/billing.js +20 -10
  15. package/sdk/dist/namespaces/billing.js.map +1 -1
  16. package/sdk/dist/namespaces/cache.d.ts +5 -5
  17. package/sdk/dist/namespaces/cache.d.ts.map +1 -1
  18. package/sdk/dist/namespaces/email.d.ts +62 -14
  19. package/sdk/dist/namespaces/email.d.ts.map +1 -1
  20. package/sdk/dist/namespaces/email.js +189 -23
  21. package/sdk/dist/namespaces/email.js.map +1 -1
  22. package/sdk/dist/namespaces/operator-session.d.ts +6 -0
  23. package/sdk/dist/namespaces/operator-session.d.ts.map +1 -1
  24. package/sdk/dist/namespaces/operator-session.js.map +1 -1
  25. package/sdk/dist/namespaces/org.d.ts +5 -3
  26. package/sdk/dist/namespaces/org.d.ts.map +1 -1
  27. package/sdk/dist/namespaces/org.js +10 -2
  28. package/sdk/dist/namespaces/org.js.map +1 -1
  29. package/sdk/dist/namespaces/org.types.d.ts +27 -14
  30. package/sdk/dist/namespaces/org.types.d.ts.map +1 -1
  31. package/sdk/dist/namespaces/transfers.d.ts +10 -3
  32. package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
  33. package/sdk/dist/namespaces/transfers.js +4 -6
  34. package/sdk/dist/namespaces/transfers.js.map +1 -1
  35. package/sdk/dist/scoped.d.ts +3 -1
  36. package/sdk/dist/scoped.d.ts.map +1 -1
  37. package/sdk/dist/scoped.js +6 -0
  38. package/sdk/dist/scoped.js.map +1 -1
@@ -130,29 +130,39 @@ export class Billing {
130
130
  async lookupOrganization(identifier) {
131
131
  return resolveOrganizationDetail(this.client, identifier, "looking up organization");
132
132
  }
133
- /** Fetch billing history by organization id (UUID), wallet, or email. */
134
- async history(identifier, limit) {
135
- return this.getHistory(identifier, limit);
133
+ /**
134
+ * Fetch billing history by organization id (UUID), wallet, or email. Pass
135
+ * `{ limit, after }` to page; `after` is the opaque keyset cursor
136
+ * (`next_cursor` from a prior page).
137
+ */
138
+ async history(identifier, opts = {}) {
139
+ return this.getHistory(identifier, opts);
136
140
  }
137
141
  /**
138
142
  * Fetch ledger history for a organization. History is keyed by organization id
139
143
  * (UUID): a wallet/email identifier is first resolved to its organization via the
140
144
  * lookup, then `GET /orgs/v1/:org_id/billing/history` is read.
141
145
  * Requires SIWX from a wallet linked to the organization, or an admin key.
146
+ * Pass `{ limit, after }` to page; `after` is the opaque keyset cursor
147
+ * (`next_cursor` from a prior page). Returns `{ org_id, entries, has_more,
148
+ * next_cursor }`.
142
149
  */
143
- async getHistory(identifier, limit) {
144
- if (limit !== undefined) {
145
- assertPositiveSafeInteger(limit, "limit", "fetching billing history");
150
+ async getHistory(identifier, opts = {}) {
151
+ if (opts.limit !== undefined) {
152
+ assertPositiveSafeInteger(opts.limit, "limit", "fetching billing history");
146
153
  }
147
154
  const id = classifyBillingIdentifier(identifier, "fetching billing history");
148
155
  const organizationId = id.kind === "org_id"
149
156
  ? id.value
150
157
  : (await fetchOrganizationByLookup(this.client, id.kind, id.value, "fetching billing history"))
151
158
  .org_id;
152
- const base = `/orgs/v1/${encodeURIComponent(organizationId)}/billing/history`;
153
- const path = limit !== undefined
154
- ? `${base}?limit=${encodeURIComponent(String(limit))}`
155
- : base;
159
+ const params = new URLSearchParams();
160
+ if (opts.limit !== undefined)
161
+ params.set("limit", String(opts.limit));
162
+ if (opts.after !== undefined)
163
+ params.set("after", opts.after);
164
+ const query = params.toString();
165
+ const path = `/orgs/v1/${encodeURIComponent(organizationId)}/billing/history${query ? `?${query}` : ""}`;
156
166
  return this.client.request(path, {
157
167
  context: "fetching billing history",
158
168
  });
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/namespaces/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/namespaces/billing.ts"],"names":[],"mappings":"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"}
@@ -48,11 +48,11 @@ export interface CacheInspectResult {
48
48
  search?: string;
49
49
  method?: string;
50
50
  locale?: string;
51
- releaseId?: string;
52
- cachedAt?: string;
53
- expiresAt?: string;
54
- writtenUnderGeneration?: string;
55
- contentSha256?: string;
51
+ release_id?: string;
52
+ cached_at?: string;
53
+ expires_at?: string;
54
+ written_under_generation?: string;
55
+ content_sha256?: string;
56
56
  headers?: Record<string, string | string[]>;
57
57
  }
58
58
  export interface CacheInvalidatePrefixOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/namespaces/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;0CAEsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB;oCACgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC;4DACwD;IACxD,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAanE;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkB1F;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpF;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAS/E;;;;;;OAMG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAajG"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/namespaces/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB;;0CAEsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB;oCACgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC;4DACwD;IACxD,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAanE;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkB1F;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpF;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAS/E;;;;;;OAMG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAajG"}
@@ -1,7 +1,6 @@
1
1
  /**
2
- * `email` namespace — project mailboxes (send / list / get / raw / delete)
3
- * and mailbox webhooks. Most operations auto-resolve the project's mailbox
4
- * via the provider cache, falling back to a discovery GET when absent.
2
+ * `email` namespace — project mailboxes (defaults, send / list / get / raw /
3
+ * delete) and mailbox webhooks.
5
4
  */
6
5
  import type { Client } from "../kernel.js";
7
6
  declare const MESSAGE_DIRECTIONS: readonly ["inbound", "outbound"];
@@ -20,12 +19,46 @@ export interface MailboxRecord {
20
19
  unique_recipients: number;
21
20
  created_at: string;
22
21
  updated_at: string;
22
+ /** True when this mailbox is configured as the project's outbound default. */
23
+ is_default_outbound?: boolean;
24
+ /** True when this mailbox is configured as the auth/session email sender. */
25
+ is_auth_sender?: boolean;
26
+ /** Whether the mailbox can currently send outbound mail. */
27
+ can_send?: boolean;
28
+ /** Present when `can_send` is false, e.g. domain verification or suspension. */
29
+ send_blocked_reason?: string | null;
30
+ /** Shared run402 domain vs a project-owned sender domain. Future strings are valid. */
31
+ domain_kind?: string;
23
32
  }
24
- export type CreateMailboxResult = MailboxRecord;
33
+ export interface MailboxSettings {
34
+ default_outbound_mailbox_id: string | null;
35
+ auth_sender_mailbox_id: string | null;
36
+ }
37
+ export interface MailboxNextAction {
38
+ type?: string;
39
+ action?: string;
40
+ method?: string;
41
+ path?: string;
42
+ auth?: string;
43
+ why?: string;
44
+ command?: string;
45
+ [key: string]: unknown;
46
+ }
47
+ export interface MailboxSelectionEnvelope {
48
+ mailbox_settings?: MailboxSettings;
49
+ next_actions?: MailboxNextAction[];
50
+ }
51
+ export type CreateMailboxResult = MailboxRecord & MailboxSelectionEnvelope;
25
52
  export type MailboxInfo = MailboxRecord;
26
- export interface MailboxListResponse {
53
+ export interface MailboxListResult extends MailboxSelectionEnvelope {
27
54
  mailboxes: MailboxRecord[];
28
55
  }
56
+ export type MailboxListResponse = MailboxListResult;
57
+ export interface SetMailboxDefaultsOptions {
58
+ default_outbound_mailbox_id?: string | null;
59
+ auth_sender_mailbox_id?: string | null;
60
+ }
61
+ export type SetMailboxDefaultsResult = MailboxListResult;
29
62
  export interface DeleteMailboxResult {
30
63
  mailbox_id: string;
31
64
  address: string;
@@ -61,9 +94,9 @@ export interface SendEmailOptions {
61
94
  attachments?: EmailAttachment[];
62
95
  in_reply_to?: string;
63
96
  /**
64
- * Target mailbox (slug or `mbx_…` id) on a project that has more than one.
65
- * Omit only when the project has exactly one mailbox — otherwise the call
66
- * throws an ambiguity error naming the available slugs.
97
+ * Target mailbox (slug or `mbx_…` id). Omit to use the configured
98
+ * `default_outbound_mailbox_id` when the gateway returns mailbox settings.
99
+ * Missing or invalid defaults surface typed repair errors.
67
100
  */
68
101
  mailbox?: MailboxSelector;
69
102
  }
@@ -78,6 +111,10 @@ export interface SendEmailResult {
78
111
  template: string | null;
79
112
  subject: string | null;
80
113
  sent_at: string;
114
+ /** The actual mailbox used for the send, echoed by the gateway. */
115
+ mailbox_id?: string;
116
+ /** The actual From address used for the send, echoed by the gateway. */
117
+ from_address?: string;
81
118
  }
82
119
  export interface EmailSummary {
83
120
  id: string;
@@ -212,16 +249,20 @@ export declare class Email {
212
249
  * - `selector` is a mailbox id (`mbx_…`) → used directly; the gateway 403s
213
250
  * if the id belongs to a different project, so no list call is needed.
214
251
  * - `selector` is a slug → the project's mailboxes are listed and matched.
215
- * - `selector` omitted the project's mailboxes are listed:
216
- * 0 "create one first"; exactly 1 → that one (cache refreshed);
217
- * 2+ an ambiguity error naming the slugs (never a silent pick).
252
+ * - `selector` omitted for sends use the configured
253
+ * `default_outbound_mailbox_id`. When the gateway returns
254
+ * `mailbox_settings` and no default is set, throw
255
+ * `DEFAULT_MAILBOX_REQUIRED`; do not silently pick the first/single row.
256
+ * - `selector` omitted for reads/webhooks → require a unique mailbox, as
257
+ * before. This keeps non-send flows from guessing that the outbound
258
+ * default is also the intended read/webhook target.
218
259
  *
219
260
  * The cached `mailbox_id` is intentionally NOT used to resolve when a
220
261
  * selector is omitted — trusting it would silently target an arbitrary
221
- * mailbox on a multi-mailbox project. It remains a best-effort convenience
222
- * cache, refreshed only on the single-mailbox path.
262
+ * mailbox on a multi-mailbox project.
223
263
  */
224
264
  private resolveMailbox;
265
+ private pickDefaultOutboundMailbox;
225
266
  /**
226
267
  * Choose a mailbox from a project's list given an optional selector.
227
268
  * `selector` matches by exact mailbox id or slug. With no selector: 0 →
@@ -231,7 +272,14 @@ export declare class Email {
231
272
  private pickMailbox;
232
273
  /** Best-effort refresh of the single-mailbox convenience cache. */
233
274
  private cacheMailbox;
234
- private listMailboxes;
275
+ private listMailboxEnvelope;
276
+ /** List project mailboxes plus default-role settings and gateway repair hints. */
277
+ listMailboxes(projectId: string): Promise<MailboxListResult>;
278
+ /**
279
+ * Configure the project's mailbox defaults. Values are mailbox ids
280
+ * (`mbx_…`) or `null` to clear when the gateway allows clearing.
281
+ */
282
+ setMailboxDefaults(projectId: string, opts: SetMailboxDefaultsOptions): Promise<SetMailboxDefaultsResult>;
235
283
  /**
236
284
  * Create a mailbox for a project.
237
285
  *
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAY3C,QAAA,MAAM,kBAAkB,kCAAmC,CAAC;AAC5D,QAAA,MAAM,iBAAiB,oEAAqE,CAAC;AAE7F,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,cAAc,CAAC;AAE7E,6FAA6F;AAC7F,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,wGAAwG;AACxG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,iFAAiF;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,eAAe,KACvB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAGlD;;;;OAIG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB3G,kFAAkF;IAC5E,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAa3B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWzF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQxF,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAY3B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,qBAAqB,CAAC;IAwB3B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC;CASjB;AAED,qBAAa,KAAK;IAOJ,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnF,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACtF,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAEnE,MAAM,EAAE,MAAM;IAQ3C;;;;;;;;;;;;;;OAcG;YACW,cAAc;IAiB5B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAqCnB,mEAAmE;YACrD,YAAY;YAaZ,aAAa;IAQ3B;;;;;;;;OAQG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+BlF,+DAA+D;IACzD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6D/E,8CAA8C;IACxC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBpF,yDAAyD;IACnD,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,WAAW,CAAC;IASvB;;;OAGG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAwB1B;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IASrF;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAwCjG"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/namespaces/email.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  /**
2
- * `email` namespace — project mailboxes (send / list / get / raw / delete)
3
- * and mailbox webhooks. Most operations auto-resolve the project's mailbox
4
- * via the provider cache, falling back to a discovery GET when absent.
2
+ * `email` namespace — project mailboxes (defaults, send / list / get / raw /
3
+ * delete) and mailbox webhooks.
5
4
  */
6
5
  import { ApiError, LocalError, ProjectNotFound } from "../errors.js";
7
6
  import { assertEmailAddress, assertHttpUrl, assertNonEmptyString, assertPositiveSafeInteger, assertStringInSet, } from "../validation.js";
@@ -127,28 +126,87 @@ export class Email {
127
126
  * - `selector` is a mailbox id (`mbx_…`) → used directly; the gateway 403s
128
127
  * if the id belongs to a different project, so no list call is needed.
129
128
  * - `selector` is a slug → the project's mailboxes are listed and matched.
130
- * - `selector` omitted the project's mailboxes are listed:
131
- * 0 "create one first"; exactly 1 → that one (cache refreshed);
132
- * 2+ an ambiguity error naming the slugs (never a silent pick).
129
+ * - `selector` omitted for sends use the configured
130
+ * `default_outbound_mailbox_id`. When the gateway returns
131
+ * `mailbox_settings` and no default is set, throw
132
+ * `DEFAULT_MAILBOX_REQUIRED`; do not silently pick the first/single row.
133
+ * - `selector` omitted for reads/webhooks → require a unique mailbox, as
134
+ * before. This keeps non-send flows from guessing that the outbound
135
+ * default is also the intended read/webhook target.
133
136
  *
134
137
  * The cached `mailbox_id` is intentionally NOT used to resolve when a
135
138
  * selector is omitted — trusting it would silently target an arbitrary
136
- * mailbox on a multi-mailbox project. It remains a best-effort convenience
137
- * cache, refreshed only on the single-mailbox path.
139
+ * mailbox on a multi-mailbox project.
138
140
  */
139
- async resolveMailbox(projectId, selector) {
141
+ async resolveMailbox(projectId, selector, mode = "unique", context = "resolving mailbox") {
140
142
  const project = await this.client.getProject(projectId);
141
143
  if (!project)
142
- throw new ProjectNotFound(projectId, "resolving mailbox");
144
+ throw new ProjectNotFound(projectId, context);
143
145
  if (selector && /^mbx_/.test(selector)) {
144
146
  return { id: selector, serviceKey: project.service_key };
145
147
  }
146
- const list = await this.listMailboxes(project.service_key);
147
- const mb = this.pickMailbox(list, selector, "resolving mailbox");
148
- if (!selector && list.length === 1)
148
+ const list = await this.listMailboxEnvelope(project.service_key);
149
+ const mb = mode === "default_outbound" && !selector
150
+ ? this.pickDefaultOutboundMailbox(projectId, list, context)
151
+ : this.pickMailbox(list.mailboxes, selector, context);
152
+ if (!selector && list.mailboxes.length === 1)
149
153
  await this.cacheMailbox(projectId, mb);
150
154
  return { id: mb.mailbox_id, serviceKey: project.service_key };
151
155
  }
156
+ pickDefaultOutboundMailbox(projectId, envelope, context) {
157
+ const defaultId = envelope.mailbox_settings?.default_outbound_mailbox_id ??
158
+ envelope.mailboxes.find((m) => m.is_default_outbound)?.mailbox_id ??
159
+ null;
160
+ if (defaultId) {
161
+ const mb = envelope.mailboxes.find((m) => m.mailbox_id === defaultId);
162
+ if (!mb) {
163
+ throw mailboxConfigError({
164
+ status: 409,
165
+ code: "DEFAULT_MAILBOX_INVALID",
166
+ message: `Configured default outbound mailbox ${defaultId} is not available. Set a valid default before sending email.`,
167
+ context,
168
+ projectId,
169
+ mailboxes: envelope.mailboxes,
170
+ settings: envelope.mailbox_settings,
171
+ nextActions: envelope.next_actions,
172
+ details: { default_outbound_mailbox_id: defaultId, reason: "missing_from_mailbox_list" },
173
+ });
174
+ }
175
+ if (mb.can_send === false) {
176
+ throw mailboxConfigError({
177
+ status: 409,
178
+ code: "DEFAULT_MAILBOX_INVALID",
179
+ message: `Configured default outbound mailbox ${defaultId} cannot send email: ${mb.send_blocked_reason ?? "blocked"}.`,
180
+ context,
181
+ projectId,
182
+ mailboxes: envelope.mailboxes,
183
+ settings: envelope.mailbox_settings,
184
+ nextActions: envelope.next_actions,
185
+ details: {
186
+ default_outbound_mailbox_id: defaultId,
187
+ reason: mb.send_blocked_reason ?? "send_blocked",
188
+ },
189
+ });
190
+ }
191
+ return mb;
192
+ }
193
+ // Old gateways did not return mailbox_settings. Keep the legacy
194
+ // single-mailbox convenience only while that field is absent, so tolerant
195
+ // public clients can ship before the stricter gateway rollout.
196
+ if (envelope.mailbox_settings === undefined) {
197
+ return this.pickMailbox(envelope.mailboxes, undefined, context);
198
+ }
199
+ throw mailboxConfigError({
200
+ status: envelope.mailboxes.length > 1 ? 409 : 400,
201
+ code: "DEFAULT_MAILBOX_REQUIRED",
202
+ message: "Set default_outbound_mailbox_id before sending email without an explicit mailbox.",
203
+ context,
204
+ projectId,
205
+ mailboxes: envelope.mailboxes,
206
+ settings: envelope.mailbox_settings,
207
+ nextActions: envelope.next_actions,
208
+ });
209
+ }
152
210
  /**
153
211
  * Choose a mailbox from a project's list given an optional selector.
154
212
  * `selector` matches by exact mailbox id or slug. With no selector: 0 →
@@ -187,12 +245,51 @@ export class Email {
187
245
  // best-effort cache — ignore failures
188
246
  }
189
247
  }
190
- async listMailboxes(serviceKey) {
248
+ async listMailboxEnvelope(serviceKey) {
191
249
  const raw = await this.client.request(`/mailboxes/v1`, {
192
250
  headers: { Authorization: `Bearer ${serviceKey}` },
193
251
  context: "listing mailboxes",
194
252
  });
195
- return raw.mailboxes ?? [];
253
+ return {
254
+ mailboxes: Array.isArray(raw.mailboxes) ? raw.mailboxes : [],
255
+ ...(raw.mailbox_settings !== undefined ? { mailbox_settings: raw.mailbox_settings } : {}),
256
+ ...(Array.isArray(raw.next_actions) ? { next_actions: raw.next_actions } : {}),
257
+ };
258
+ }
259
+ /** List project mailboxes plus default-role settings and gateway repair hints. */
260
+ async listMailboxes(projectId) {
261
+ const project = await this.client.getProject(projectId);
262
+ if (!project)
263
+ throw new ProjectNotFound(projectId, "listing mailboxes");
264
+ return this.listMailboxEnvelope(project.service_key);
265
+ }
266
+ /**
267
+ * Configure the project's mailbox defaults. Values are mailbox ids
268
+ * (`mbx_…`) or `null` to clear when the gateway allows clearing.
269
+ */
270
+ async setMailboxDefaults(projectId, opts) {
271
+ if (!opts || typeof opts !== "object" || Array.isArray(opts)) {
272
+ throw new LocalError("r.email.setMailboxDefaults(projectId, opts) requires an opts object.", "setting mailbox defaults");
273
+ }
274
+ const hasOutbound = Object.prototype.hasOwnProperty.call(opts, "default_outbound_mailbox_id");
275
+ const hasAuthSender = Object.prototype.hasOwnProperty.call(opts, "auth_sender_mailbox_id");
276
+ if (!hasOutbound && !hasAuthSender) {
277
+ throw new LocalError("Provide default_outbound_mailbox_id and/or auth_sender_mailbox_id.", "setting mailbox defaults");
278
+ }
279
+ validateOptionalMailboxId(opts.default_outbound_mailbox_id, "default_outbound_mailbox_id");
280
+ validateOptionalMailboxId(opts.auth_sender_mailbox_id, "auth_sender_mailbox_id");
281
+ const project = await this.client.getProject(projectId);
282
+ if (!project)
283
+ throw new ProjectNotFound(projectId, "setting mailbox defaults");
284
+ return this.client.request("/mailboxes/v1/settings", {
285
+ method: "PATCH",
286
+ headers: { Authorization: `Bearer ${project.service_key}` },
287
+ body: {
288
+ ...(hasOutbound ? { default_outbound_mailbox_id: opts.default_outbound_mailbox_id } : {}),
289
+ ...(hasAuthSender ? { auth_sender_mailbox_id: opts.auth_sender_mailbox_id } : {}),
290
+ },
291
+ context: "setting mailbox defaults",
292
+ });
196
293
  }
197
294
  /**
198
295
  * Create a mailbox for a project.
@@ -216,12 +313,13 @@ export class Email {
216
313
  if (slug.includes("--")) {
217
314
  throw new LocalError("Slug must not contain consecutive hyphens.", "creating mailbox");
218
315
  }
219
- const result = await this.client.request("/mailboxes/v1", {
316
+ const raw = await this.client.request("/mailboxes/v1", {
220
317
  method: "POST",
221
318
  headers: { Authorization: `Bearer ${project.service_key}` },
222
319
  body: { slug, project_id: projectId },
223
320
  context: "creating mailbox",
224
321
  });
322
+ const result = normalizeCreateMailboxResult(raw);
225
323
  await this.cacheMailbox(projectId, result);
226
324
  return result;
227
325
  }
@@ -249,7 +347,7 @@ export class Email {
249
347
  if (hasAttachments && isTemplate) {
250
348
  throw new LocalError("Attachments are only supported in raw mode (`subject` + `html`), not with `template`.", "sending email");
251
349
  }
252
- const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox);
350
+ const { id, serviceKey } = await this.resolveMailbox(projectId, opts.mailbox, "default_outbound", "sending email");
253
351
  const body = { to: opts.to };
254
352
  if (isTemplate) {
255
353
  body.template = opts.template;
@@ -341,9 +439,9 @@ export class Email {
341
439
  const project = await this.client.getProject(projectId);
342
440
  if (!project)
343
441
  throw new ProjectNotFound(projectId, "getting mailbox");
344
- const list = await this.listMailboxes(project.service_key);
345
- const mb = this.pickMailbox(list, selector, "getting mailbox");
346
- if (!selector && list.length === 1)
442
+ const list = await this.listMailboxEnvelope(project.service_key);
443
+ const mb = this.pickMailbox(list.mailboxes, selector, "getting mailbox");
444
+ if (!selector && list.mailboxes.length === 1)
347
445
  await this.cacheMailbox(projectId, mb);
348
446
  return mb;
349
447
  }
@@ -362,11 +460,11 @@ export class Email {
362
460
  id = selector;
363
461
  }
364
462
  else {
365
- const list = await this.listMailboxes(project.service_key);
366
- if (!selector && list.length === 0) {
463
+ const list = await this.listMailboxEnvelope(project.service_key);
464
+ if (!selector && list.mailboxes.length === 0) {
367
465
  throw new ApiError("No mailbox found for this project — nothing to delete.", 404, null, "deleting mailbox");
368
466
  }
369
- id = this.pickMailbox(list, selector, "deleting mailbox").mailbox_id;
467
+ id = this.pickMailbox(list.mailboxes, selector, "deleting mailbox").mailbox_id;
370
468
  }
371
469
  const result = await this.client.request(`/mailboxes/v1/${id}`, {
372
470
  method: "DELETE",
@@ -388,6 +486,74 @@ export class Email {
388
486
  return result;
389
487
  }
390
488
  }
489
+ function normalizeCreateMailboxResult(raw) {
490
+ const maybeEnvelope = raw;
491
+ if (maybeEnvelope.mailbox && typeof maybeEnvelope.mailbox === "object") {
492
+ return {
493
+ ...maybeEnvelope.mailbox,
494
+ ...(maybeEnvelope.mailbox_settings !== undefined
495
+ ? { mailbox_settings: maybeEnvelope.mailbox_settings }
496
+ : {}),
497
+ ...(Array.isArray(maybeEnvelope.next_actions)
498
+ ? { next_actions: maybeEnvelope.next_actions }
499
+ : {}),
500
+ };
501
+ }
502
+ const maybeLegacy = raw;
503
+ if (!maybeLegacy.mailbox_id && typeof maybeLegacy.id === "string") {
504
+ return { ...maybeLegacy, mailbox_id: maybeLegacy.id };
505
+ }
506
+ return raw;
507
+ }
508
+ function validateOptionalMailboxId(value, field) {
509
+ if (value === undefined || value === null)
510
+ return;
511
+ assertNonEmptyString(value, field, "setting mailbox defaults");
512
+ if (!/^mbx_/.test(value)) {
513
+ throw new LocalError(`${field} must be a mailbox id starting with "mbx_". Use listMailboxes() to resolve a slug first.`, "setting mailbox defaults");
514
+ }
515
+ }
516
+ function mailboxConfigError(opts) {
517
+ const next_actions = opts.nextActions && opts.nextActions.length > 0
518
+ ? opts.nextActions
519
+ : [{
520
+ type: "set_mailbox_defaults",
521
+ method: "PATCH",
522
+ path: "/mailboxes/v1/settings",
523
+ auth: "service_key",
524
+ why: "Choose the mailbox that should send outbound project email, then set default_outbound_mailbox_id.",
525
+ command: `run402 email defaults --outbound <slug|mbx_id> --project ${opts.projectId}`,
526
+ }];
527
+ return new ApiError(opts.message, opts.status, {
528
+ error: opts.message,
529
+ message: opts.message,
530
+ code: opts.code,
531
+ category: "email",
532
+ retryable: false,
533
+ safe_to_retry: true,
534
+ mutation_state: "none",
535
+ details: {
536
+ project_id: opts.projectId,
537
+ mailbox_settings: opts.settings ?? null,
538
+ candidates: summarizeMailboxCandidates(opts.mailboxes),
539
+ ...(opts.details ?? {}),
540
+ },
541
+ next_actions,
542
+ }, opts.context);
543
+ }
544
+ function summarizeMailboxCandidates(mailboxes) {
545
+ return mailboxes.map((m) => ({
546
+ mailbox_id: m.mailbox_id,
547
+ slug: m.slug,
548
+ address: m.address,
549
+ status: m.status,
550
+ is_default_outbound: m.is_default_outbound ?? false,
551
+ is_auth_sender: m.is_auth_sender ?? false,
552
+ can_send: m.can_send,
553
+ send_blocked_reason: m.send_blocked_reason ?? null,
554
+ domain_kind: m.domain_kind,
555
+ }));
556
+ }
391
557
  function encodePathSegment(value, name, context) {
392
558
  assertNonEmptyString(value, name, context);
393
559
  return encodeURIComponent(value);