@dbx-tools/email 0.9.131 → 0.9.136

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.
package/README.md CHANGED
@@ -1,15 +1,13 @@
1
1
  # @dbx-tools/email
2
2
 
3
- Server-side email runtime, agent tools, and AppKit plugin.
4
-
5
3
  Add model-drafted email with human approval, sender policy, SMTP delivery, and a
6
4
  local development outbox to an AppKit or Mastra backend. Browser-safe message
7
5
  and result schemas live in
8
- [`@dbx-tools/shared-email`](../../shared/email), and the reusable React Email
6
+ [@dbx-tools/shared-email](../../shared/email), and the reusable React Email
9
7
  presentation lives in
10
- [`@dbx-tools/shared-email-template`](../../shared/email-template).
8
+ [@dbx-tools/shared-email-template](../../shared/email-template).
11
9
 
12
- ## Quick Start
10
+ ## Quick start
13
11
 
14
12
  Give an agent an email tool that pauses before delivery:
15
13
 
@@ -23,7 +21,7 @@ const support = agents.createAgent({
23
21
  });
24
22
  ```
25
23
 
26
- **Key features:**
24
+ The package:
27
25
 
28
26
  - AppKit plugin registration that resolves config, verifies SMTP at boot, and
29
27
  mounts a sender-options route.
@@ -43,7 +41,7 @@ const support = agents.createAgent({
43
41
  - Named caps on body length and attachment size, and an `AbortSignal` threaded
44
42
  through every send.
45
43
 
46
- ## Register Delivery
44
+ ## Register delivery
47
45
 
48
46
  ```ts
49
47
  import { createApp, lakebase, server } from "@databricks/appkit";
@@ -71,7 +69,7 @@ await createApp({
71
69
  `plugin.email()` validates config, primes the shared runtime, verifies SMTP when
72
70
  SMTP mode is active, and mounts a sender-options route for UIs. A failed verify
73
71
  fails setup, so a bad host or credential shows up in the boot logs rather than on
74
- the first approved send; outbox mode skips the check and logs loudly instead.
72
+ the first approved send. Outbox mode skips the check and logs a warning instead.
75
73
 
76
74
  `tool.emailTool()` creates an approval-gated Mastra `send_email` tool. Approval
77
75
  requires Mastra storage, so register `lakebase()` or configure storage explicitly
@@ -92,14 +90,14 @@ const sendEmail = emailTool({
92
90
  ```
93
91
 
94
92
  The callback returns `true` when human review is still required and `false`
95
- when Mastra may execute. Fail closed in the policy. Regular Mastra agents do not
96
- provide a built-in durable "remember this approval" store; Agent Controller
93
+ when Mastra may run the tool. Fail closed in the policy. Regular Mastra agents do not
94
+ provide a built-in durable "remember this approval" store. Agent Controller
97
95
  permission rules are a separate runtime, so this package does not emulate them
98
96
  client-side.
99
97
 
100
98
  The plugin does not decide how approval is presented. It emits a Mastra tool
101
99
  suspension and expects the host UI to resume that tool call with an approval or
102
- denial result. [`@dbx-tools/ui/email`](../../ui/appkit) provides the matching
100
+ denial result. [@dbx-tools/ui/email](../../ui/appkit) provides the matching
103
101
  approval card and compose components.
104
102
 
105
103
  ## Configuration
@@ -131,16 +129,16 @@ built-in default.
131
129
  | `SMTP_PASSWORD` | SMTP auth password or API key. |
132
130
  | `EMAIL_DOMAIN` | Domain for the derived sender address. |
133
131
  | `EMAIL_FROM` | Optional fixed `From` address, overriding per-user derivation. |
134
- | `EMAIL_SYSTEM_FROM` | `From` for system mail; defaults to `no-reply@<domain>`. |
132
+ | `EMAIL_SYSTEM_FROM` | `From` for system mail. Defaults to `no-reply@<domain>`. |
135
133
  | `EMAIL_SENDER_POLICY` | `allowlist` (default) or `unrestricted`. |
136
- | `EMAIL_ALLOWED_SENDERS` | Comma- or whitespace-separated `From` allow-list. |
134
+ | `EMAIL_ALLOWED_SENDERS` | Comma- or whitespace-separated `From` allowlist. |
137
135
  | `EMAIL_OUTBOX_MODE` | Opt in to writing messages to disk when SMTP is unconfigured. |
138
136
  | `EMAIL_OUTBOX_DIR` | Directory for outbox previews. |
139
137
 
140
138
  The `SMTP_*` names are unprefixed because SMTP is a third-party service, not a
141
139
  Databricks resource.
142
140
 
143
- ## Send Without An Agent
141
+ ## Send without an agent
144
142
 
145
143
  ```ts
146
144
  import { transport } from "@dbx-tools/email";
@@ -183,7 +181,7 @@ HTML body presents the code once.
183
181
  By default both MIME alternatives are rendered from one React Email tree, so the
184
182
  `text/plain` part is a rendering of the HTML - it carries the brand header and
185
183
  footer, and CSS margin becomes blank lines. That is right for prose and wrong for
186
- content something PARSES. A fourth argument replaces just that part, leaving the
184
+ content that a client parses. A fourth argument replaces only that part, leaving the
187
185
  branded HTML untouched:
188
186
 
189
187
  ```ts
@@ -194,15 +192,15 @@ await transport.sendEmail(message, from, undefined, {
194
192
 
195
193
  The motivating case is a one-time code: client code detection reads the code out
196
194
  of the prompt line, and a styled `<h2>` code renders two blank lines below the
197
- prompt, so autofill stops being offered even though the HTML looks perfect. Keep
195
+ prompt, so autofill stops being offered even though the HTML renders correctly. Keep
198
196
  the same information in both parts - a text alternative that disagrees with the
199
197
  HTML reads as phishing to spam filters. See
200
- [`@dbx-tools/tunnel`](../../node/tunnel) for a gate that does this.
198
+ [@dbx-tools/tunnel](../../node/tunnel) for a gate that does this.
201
199
 
202
200
  ### Control the preheader (and the push notification)
203
201
 
204
202
  The same options object takes a `preview`, the preheader: the snippet a client
205
- shows beside the subject in an inbox list, and the body of the PUSH NOTIFICATION
203
+ shows beside the subject in an inbox list, and the body of the push notification
206
204
  a mobile mail app posts. It defaults to the subject.
207
205
 
208
206
  ```ts
@@ -225,7 +223,7 @@ const appkit = await createApp({ plugins: [server(), email()] });
225
223
  await appkit.email.sendEmail(message, "reports@example.com");
226
224
  ```
227
225
 
228
- ## How Sends Reach AppKit's Interceptors
226
+ ## How sends reach AppKit interceptors
229
227
 
230
228
  Every send runs through AppKit's interceptor chain (timeout, telemetry, and the
231
229
  retry / cache posture in `defaults`), including sends from the Mastra tool, which
@@ -233,7 +231,7 @@ has no plugin instance in scope. The runtime carries an executor slot for this:
233
231
  registering the plugin installs its own `Plugin.execute()` there at setup, and
234
232
  `sendEmail()` routes through whatever is installed.
235
233
 
236
- Nothing else has to be wired up. Two consequences are worth knowing:
234
+ This has two effects:
237
235
 
238
236
  - In a plain Mastra app with no AppKit plugin registered, the slot falls back to
239
237
  running the send directly, so the tool still works without interceptors.
@@ -242,7 +240,7 @@ Nothing else has to be wired up. Two consequences are worth knowing:
242
240
  chain is re-raised as a stable `ExecutionError`, so an SMTP relay's own wording
243
241
  never becomes the caller's or the model's error text.
244
242
 
245
- ## Resolve SMTP Or Outbox Mode
243
+ ## Resolve SMTP or outbox mode
246
244
 
247
245
  ```ts
248
246
  import { config, transport } from "@dbx-tools/email";
@@ -260,7 +258,7 @@ const runtime = transport.getEmailRuntime({
260
258
 
261
259
  `resolveEmailConfig()` returns the validated `ResolvedEmailConfig` for
262
260
  inspection. `getEmailRuntime()` takes the same plugin config, resolves it, and
263
- memoizes the transport process-wide; the plugin primes it at setup, so later
261
+ memoizes the transport process-wide. The plugin primes it at setup, so later
264
262
  callers pass nothing and get the same instance.
265
263
 
266
264
  SMTP mode requires host, user, password, and a sender source. Outbox mode writes
@@ -269,7 +267,7 @@ HTML files to disk when SMTP credentials are absent and `EMAIL_OUTBOX_MODE=1`.
269
267
  Use SMTP mode for deployed apps. Use outbox mode for local demos, automated
270
268
  tests, and development loops where sending real mail would be risky.
271
269
 
272
- ## Agent Tools
270
+ ## Agent tools and approval
273
271
 
274
272
  Two tools expose the same send capability, one per agent runtime. Both are
275
273
  gated: the Mastra tool suspends for approval, and the AppKit tool is annotated
@@ -277,6 +275,10 @@ gated: the Mastra tool suspends for approval, and the AppKit tool is annotated
277
275
  The AppKit tool is deliberately not `autoInheritable`, so an agent reaches it
278
276
  only by wiring it explicitly.
279
277
 
278
+ Approval applies to the agent tools. `transport.sendEmail()` and the AppKit
279
+ plugin's `sendEmail()` export send immediately, so direct callers must enforce
280
+ their own authorization and approval policy.
281
+
280
282
  | Tool | Runtime | Wiring |
281
283
  | ------------ | ------- | ------------------------------------------------------------------------ |
282
284
  | `send_email` | Mastra | `tools: () => ({ send_email: emailTool() })` |
@@ -297,7 +299,7 @@ await createApp({
297
299
  });
298
300
  ```
299
301
 
300
- ## AppKit Routes
302
+ ## AppKit routes
301
303
 
302
304
  | Method | Path | Response |
303
305
  | ------ | -------------------- | ---------------------------------------------------------- |
@@ -311,7 +313,7 @@ caller's own local part.
311
313
  Use this route to populate a `From` dropdown in a compose UI. If no dropdown is
312
314
  shown, the server can still derive the sender from the active user and config.
313
315
 
314
- ## Sender Addresses
316
+ ## Sender addresses
315
317
 
316
318
  ```ts
317
319
  import { config, sender } from "@dbx-tools/email";
@@ -334,14 +336,14 @@ address and is entirely optional - set it only when every message really should
334
336
  come from a single mailbox.
335
337
 
336
338
  Mail that no user asked for - a sign-in code, a password reset, an alert - is
337
- SYSTEM mail, and a reply to it reaches nobody. It sends from
339
+ system mail, and a reply to it reaches nobody. It sends from
338
340
  `no-reply@<domain>` instead, which is also what `resolveSenderAddress()` returns
339
341
  when there is no user in scope, so a service-context send never leaks a person's
340
342
  address onto machine mail. That default outranks `from` on purpose (a fixed
341
343
  `from` is normally a human or team address). Name the address yourself with
342
344
  `systemFrom` / `EMAIL_SYSTEM_FROM` to route those replies to a monitored
343
- `support@`, or just to spell the local part differently. The system sender is
344
- folded into the effective allow-list, so the deny-by-default policy never blocks
345
+ `support@`, or to use a different local part. The system sender is
346
+ folded into the effective allowlist, so the deny-by-default policy never blocks
345
347
  the app's own sign-in mail.
346
348
 
347
349
  Sender helpers support exact addresses, domain wildcards, bare domains, and `*`.
@@ -349,12 +351,12 @@ Sender helpers support exact addresses, domain wildcards, bare domains, and `*`.
349
351
  choices for the current user, which is what the AppKit plugin exposes to clients.
350
352
 
351
353
  The default `senderPolicy: "allowlist"` is deny-by-default: with no explicit
352
- `allowedSenders`, the effective allow-list is the configured sender source, so a
354
+ `allowedSenders`, the effective allowlist is the configured sender source, so a
353
355
  deployment that only sets `EMAIL_DOMAIN` rejects a `From` on any other domain.
354
356
  Set `senderPolicy: "unrestricted"` to accept any `From` a caller supplies. The
355
357
  effective policy is logged at boot.
356
358
 
357
- ## Render A React Email
359
+ ## Render a React Email
358
360
 
359
361
  ```ts
360
362
  import { emailHtml, markdown } from "@dbx-tools/email";
@@ -379,7 +381,7 @@ and delivered message share typography, content styling, and brand behavior.
379
381
  `markdown.normalizeMarkdown()` normalizes Markdown without rendering it.
380
382
  `markdown.markdownToHtml()` renders through the shared React Email body.
381
383
 
382
- ## Brand The Email
384
+ ## Brand the email
383
385
 
384
386
  Every message uses the repository's dbx-tools brand by default. Pass a `brand`
385
387
  to the plugin or renderer only when the consuming application needs its own
@@ -409,10 +411,10 @@ email({
409
411
  React Email applies the brand through email-safe inline styles. The browser UI's
410
412
  `[data-brand]` CSS bridge cannot reach an inbox, so both the delivered document
411
413
  and browser preview consume the same `EmailBrand` values directly. A `logoUrl`
412
- renders when it is an `http(s):`, `data:`, or `cid:` URL; otherwise the branded
414
+ renders when it is an `http(s):`, `data:`, or `cid:` URL. Otherwise the branded
413
415
  display name becomes the header mark.
414
416
 
415
- ## Use The Outbox In Tests
417
+ ## Use the outbox in tests
416
418
 
417
419
  ```ts
418
420
  import { outbox } from "@dbx-tools/email";
@@ -422,7 +424,7 @@ const path = await outbox.writeOutboxEmail(message, "bot@example.com", "tmp/emai
422
424
 
423
425
  Outbox files are HTML previews with metadata in the header, written to
424
426
  `<dir>/<from>/<timestamp>-<subject-slug>.html`. A fourth argument accepts an
425
- `EmailBrand`; a fifth accepts the same `heading` and `preview` presentation used
427
+ `EmailBrand`. A fifth accepts the same `heading` and `preview` presentation used
426
428
  by the transport. Attachments are listed in the preview, but attachment bytes
427
429
  are not copied to disk.
428
430
 
@@ -439,7 +441,7 @@ are not copied to disk.
439
441
 
440
442
  An oversized payload is rejected with a `ValidationError` before anything is
441
443
  handed to SMTP. The constants and the plugin's interceptor settings live in the
442
- `defaults` module. Attachments accept inline `content` only; local paths and
444
+ `defaults` module. Attachments accept inline `content` only. Local paths and
443
445
  remote URLs are not part of the model-facing contract.
444
446
 
445
447
  ## Modules
@@ -457,7 +459,7 @@ remote URLs are not part of the model-facing contract.
457
459
  `resolveEmailConfig()`.
458
460
  - `defaults` - execution settings for the interceptor chain and the payload caps.
459
461
  - `sender` - per-user sender derivation, the do-not-reply system sender
460
- (`resolveSystemSenderAddress()`), allow-list parsing, and sender-option
462
+ (`resolveSystemSenderAddress()`), allowlist parsing, and sender-option
461
463
  listing.
462
464
  - `emailHtml` - Node rendering adapters over the shared template:
463
465
  `renderEmailHtml()`, `renderEmailText()`, and `renderEmail()` for both MIME
@@ -467,12 +469,12 @@ remote URLs are not part of the model-facing contract.
467
469
  - `brand` - `EmailBrand`, `emailBrandFromContext()`, and `defaultEmailBrand`.
468
470
 
469
471
  `brand`, and the components behind `emailHtml`/`markdown`, re-export from
470
- [`@dbx-tools/shared-email-template`](../../shared/email-template). They exist so
472
+ [@dbx-tools/shared-email-template](../../shared/email-template). They exist so
471
473
  server code has one import for delivery, and so the Node renderer and a browser
472
- preview cannot drift apart - not as a second implementation. Style inlining is
473
- React Email's own; this package runs no separate CSS inliner.
474
+ preview cannot drift apart. Style inlining is React Email's own. This package
475
+ runs no separate CSS inliner.
474
476
 
475
- Pair this package with [`@dbx-tools/shared-email`](../../shared/email) when a UI
477
+ Pair this package with [@dbx-tools/shared-email](../../shared/email) when a UI
476
478
  or tool schema needs to validate the same email payload, and with
477
- [`@dbx-tools/shared-email-template`](../../shared/email-template) when another
479
+ [@dbx-tools/shared-email-template](../../shared/email-template) when another
478
480
  runtime needs to reuse the presentation components directly.
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/email";
6
- export const PACKAGE_VERSION = "0.9.131";
6
+ export const PACKAGE_VERSION = "0.9.136";
7
7
  export * as brand from "./src/brand.ts";
8
8
  export * as config from "./src/config.ts";
9
9
  export * as defaults from "./src/defaults.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/email";
2
- export declare const PACKAGE_VERSION = "0.9.131";
2
+ export declare const PACKAGE_VERSION = "0.9.136";
3
3
  export * as brand from "./src/brand.ts";
4
4
  export * as config from "./src/config.ts";
5
5
  export * as defaults from "./src/defaults.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/email";
5
- export const PACKAGE_VERSION = "0.9.131";
5
+ export const PACKAGE_VERSION = "0.9.136";
6
6
  export * as brand from "./src/brand.js";
7
7
  export * as config from "./src/config.js";
8
8
  export * as defaults from "./src/defaults.js";
@@ -21,4 +21,4 @@ export { EmailPlugin, email } from "./src/plugin.js";
21
21
  export { SYSTEM_SENDER_LOCAL_PART } from "./src/sender.js";
22
22
  export { SEND_EMAIL_DESCRIPTION } from "./src/tool.js";
23
23
  export * from "./exports.js";
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJQLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZW1haWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMzFcIjtcbmV4cG9ydCAqIGFzIGJyYW5kIGZyb20gXCIuL3NyYy9icmFuZC50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0ICogYXMgZW1haWxIdG1sIGZyb20gXCIuL3NyYy9lbWFpbC1odG1sLnRzXCI7XG5leHBvcnQgKiBhcyBtYXJrZG93biBmcm9tIFwiLi9zcmMvbWFya2Rvd24udHNcIjtcbmV4cG9ydCAqIGFzIG91dGJveCBmcm9tIFwiLi9zcmMvb3V0Ym94LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgc2VuZGVyIGZyb20gXCIuL3NyYy9zZW5kZXIudHNcIjtcbmV4cG9ydCAqIGFzIHRvb2wgZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCAqIGFzIHRyYW5zcG9ydCBmcm9tIFwiLi9zcmMvdHJhbnNwb3J0LnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX1NNVFBfUE9SVCwgSU1QTElDSVRfVExTX1NNVFBfUE9SVCwgRU1BSUxfQ09ORklHX1NDSEVNQSB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VuZGVyUG9saWN5LCBTbXRwQ29uZmlnLCBFbWFpbFBsdWdpbkNvbmZpZywgUmVzb2x2ZWRTZW5kZXIsIFJlc29sdmVkU210cENvbmZpZywgUmVzb2x2ZWRGaWxlQ29uZmlnLCBSZXNvbHZlZEVtYWlsQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHsgU0VORF9USU1FT1VUX01TLCBWRVJJRllfVElNRU9VVF9NUywgVkVSSUZZX0FUVEVNUFRTLCBNQVhfQVRUQUNITUVOVF9CWVRFUywgTUFYX0FUVEFDSE1FTlRTX1RPVEFMX0JZVEVTLCBNQVhfQVRUQUNITUVOVF9DT1VOVCwgTUFYX0JPRFlfQ0hBUlMsIEVNQUlMX1NFTkRfU0VUVElOR1MsIEVNQUlMX1ZFUklGWV9TRVRUSU5HUywgRU1BSUxfU0VOREVSU19TRVRUSU5HUyB9IGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbWFpbEV4ZWN1dGVDb25maWcsIEVtYWlsRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCB7IGVzY2FwZUh0bWwgfSBmcm9tIFwiLi9zcmMvZW1haWwtaHRtbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbWFpbEh0bWxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2VtYWlsLWh0bWwudHNcIjtcbmV4cG9ydCB7IG5vcm1hbGl6ZU1hcmtkb3duIH0gZnJvbSBcIi4vc3JjL21hcmtkb3duLnRzXCI7XG5leHBvcnQgeyBFbWFpbFBsdWdpbiwgZW1haWwgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBTWVNURU1fU0VOREVSX0xPQ0FMX1BBUlQgfSBmcm9tIFwiLi9zcmMvc2VuZGVyLnRzXCI7XG5leHBvcnQgeyBTRU5EX0VNQUlMX0RFU0NSSVBUSU9OIH0gZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCB0eXBlIHsgRW1haWxUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sLnRzXCI7XG5leHBvcnQgdHlwZSB7IEVtYWlsRXhlY3V0b3IsIEVtYWlsUnVudGltZSwgU2VuZEVtYWlsT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJQLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZW1haWxcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMzZcIjtcbmV4cG9ydCAqIGFzIGJyYW5kIGZyb20gXCIuL3NyYy9icmFuZC50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0ICogYXMgZW1haWxIdG1sIGZyb20gXCIuL3NyYy9lbWFpbC1odG1sLnRzXCI7XG5leHBvcnQgKiBhcyBtYXJrZG93biBmcm9tIFwiLi9zcmMvbWFya2Rvd24udHNcIjtcbmV4cG9ydCAqIGFzIG91dGJveCBmcm9tIFwiLi9zcmMvb3V0Ym94LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgc2VuZGVyIGZyb20gXCIuL3NyYy9zZW5kZXIudHNcIjtcbmV4cG9ydCAqIGFzIHRvb2wgZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCAqIGFzIHRyYW5zcG9ydCBmcm9tIFwiLi9zcmMvdHJhbnNwb3J0LnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX1NNVFBfUE9SVCwgSU1QTElDSVRfVExTX1NNVFBfUE9SVCwgRU1BSUxfQ09ORklHX1NDSEVNQSB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VuZGVyUG9saWN5LCBTbXRwQ29uZmlnLCBFbWFpbFBsdWdpbkNvbmZpZywgUmVzb2x2ZWRTZW5kZXIsIFJlc29sdmVkU210cENvbmZpZywgUmVzb2x2ZWRGaWxlQ29uZmlnLCBSZXNvbHZlZEVtYWlsQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHsgU0VORF9USU1FT1VUX01TLCBWRVJJRllfVElNRU9VVF9NUywgVkVSSUZZX0FUVEVNUFRTLCBNQVhfQVRUQUNITUVOVF9CWVRFUywgTUFYX0FUVEFDSE1FTlRTX1RPVEFMX0JZVEVTLCBNQVhfQVRUQUNITUVOVF9DT1VOVCwgTUFYX0JPRFlfQ0hBUlMsIEVNQUlMX1NFTkRfU0VUVElOR1MsIEVNQUlMX1ZFUklGWV9TRVRUSU5HUywgRU1BSUxfU0VOREVSU19TRVRUSU5HUyB9IGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbWFpbEV4ZWN1dGVDb25maWcsIEVtYWlsRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCB7IGVzY2FwZUh0bWwgfSBmcm9tIFwiLi9zcmMvZW1haWwtaHRtbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbWFpbEh0bWxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2VtYWlsLWh0bWwudHNcIjtcbmV4cG9ydCB7IG5vcm1hbGl6ZU1hcmtkb3duIH0gZnJvbSBcIi4vc3JjL21hcmtkb3duLnRzXCI7XG5leHBvcnQgeyBFbWFpbFBsdWdpbiwgZW1haWwgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBTWVNURU1fU0VOREVSX0xPQ0FMX1BBUlQgfSBmcm9tIFwiLi9zcmMvc2VuZGVyLnRzXCI7XG5leHBvcnQgeyBTRU5EX0VNQUlMX0RFU0NSSVBUSU9OIH0gZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCB0eXBlIHsgRW1haWxUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sLnRzXCI7XG5leHBvcnQgdHlwZSB7IEVtYWlsRXhlY3V0b3IsIEVtYWlsUnVudGltZSwgU2VuZEVtYWlsT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cG9ydHMudHNcIjtcbiJdfQ==
package/package.json CHANGED
@@ -27,11 +27,11 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@databricks/appkit": "0.81.0",
30
- "@dbx-tools/appkit": "^0.9.131",
31
- "@dbx-tools/core": "^0.9.131",
32
- "@dbx-tools/shared-core": "^0.9.131",
33
- "@dbx-tools/shared-email": "^0.9.131",
34
- "@dbx-tools/shared-email-template": "^0.9.131",
30
+ "@dbx-tools/appkit": "^0.9.136",
31
+ "@dbx-tools/core": "^0.9.136",
32
+ "@dbx-tools/shared-core": "^0.9.136",
33
+ "@dbx-tools/shared-email": "^0.9.136",
34
+ "@dbx-tools/shared-email-template": "^0.9.136",
35
35
  "@mastra/core": "1.71.0",
36
36
  "@react-email/render": "^2.1.0",
37
37
  "nodemailer": "^7.0.13",
@@ -96,7 +96,7 @@
96
96
  "./package.json": "./package.json"
97
97
  }
98
98
  },
99
- "version": "0.9.131",
99
+ "version": "0.9.136",
100
100
  "types": "./lib/index.d.ts",
101
101
  "dbxToolsConfig": {
102
102
  "tags": [