@5ss/ai-tools 2.11.1
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/CHANGELOG.md +112 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/dist/ai-sdk/index.d.ts +15 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +24 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/artifact-D064mHfK.js +44 -0
- package/dist/artifact-D064mHfK.js.map +1 -0
- package/dist/artifacts-O8g-40Pw.js +404 -0
- package/dist/artifacts-O8g-40Pw.js.map +1 -0
- package/dist/aws-json-CecFqzqX.js +23 -0
- package/dist/aws-json-CecFqzqX.js.map +1 -0
- package/dist/aws-service-msttbPrz.js +58 -0
- package/dist/aws-service-msttbPrz.js.map +1 -0
- package/dist/batch-BMM5dXqL.d.ts +22 -0
- package/dist/batch-BMM5dXqL.d.ts.map +1 -0
- package/dist/batch-Co1ujeAW.js +67 -0
- package/dist/batch-Co1ujeAW.js.map +1 -0
- package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
- package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
- package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
- package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
- package/dist/bytes-BxpimpQx.js +45 -0
- package/dist/bytes-BxpimpQx.js.map +1 -0
- package/dist/client-CCKGsTeI.js +743 -0
- package/dist/client-CCKGsTeI.js.map +1 -0
- package/dist/cloudflare/index.d.ts +37 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +41 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare-browser-B6Yolpin.js +428 -0
- package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
- package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
- package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
- package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
- package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
- package/dist/content-type-CORxaxcv.js +49 -0
- package/dist/content-type-CORxaxcv.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +204 -0
- package/dist/core/index.js.map +1 -0
- package/dist/define-CvpJ_pNP.js +115 -0
- package/dist/define-CvpJ_pNP.js.map +1 -0
- package/dist/errors-DoSpNHvs.js +20 -0
- package/dist/errors-DoSpNHvs.js.map +1 -0
- package/dist/errors-aKhko9T1.d.ts +18 -0
- package/dist/errors-aKhko9T1.d.ts.map +1 -0
- package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
- package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
- package/dist/framework-context-DVIIY8ZO.js +24 -0
- package/dist/framework-context-DVIIY8ZO.js.map +1 -0
- package/dist/gotenberg-NuJjxyln.js +291 -0
- package/dist/gotenberg-NuJjxyln.js.map +1 -0
- package/dist/http/index.d.ts +47 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +3 -0
- package/dist/http-service-DDNCO1s4.js +254 -0
- package/dist/http-service-DDNCO1s4.js.map +1 -0
- package/dist/http-service-T7E5UjP8.d.ts +80 -0
- package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
- package/dist/imessage-BSAFOI8Z.js +154 -0
- package/dist/imessage-BSAFOI8Z.js.map +1 -0
- package/dist/index-BU4gmYO8.d.ts +254 -0
- package/dist/index-BU4gmYO8.d.ts.map +1 -0
- package/dist/index-CCivzmxO.d.ts +188 -0
- package/dist/index-CCivzmxO.d.ts.map +1 -0
- package/dist/index-CLmTrcu5.d.ts +22 -0
- package/dist/index-CLmTrcu5.d.ts.map +1 -0
- package/dist/index-CZX5OeOF.d.ts +235 -0
- package/dist/index-CZX5OeOF.d.ts.map +1 -0
- package/dist/index-CdFmEfZO.d.ts +359 -0
- package/dist/index-CdFmEfZO.d.ts.map +1 -0
- package/dist/index-Cuh6eMWc.d.ts +285 -0
- package/dist/index-Cuh6eMWc.d.ts.map +1 -0
- package/dist/index-DuOGj7vc.d.ts +107 -0
- package/dist/index-DuOGj7vc.d.ts.map +1 -0
- package/dist/index-ccZ1XOHw.d.ts +69 -0
- package/dist/index-ccZ1XOHw.d.ts.map +1 -0
- package/dist/index-n8JTpNf1.d.ts +247 -0
- package/dist/index-n8JTpNf1.d.ts.map +1 -0
- package/dist/index-pwW1OsOx.d.ts +134 -0
- package/dist/index-pwW1OsOx.d.ts.map +1 -0
- package/dist/index-zK1ZwS4m.d.ts +347 -0
- package/dist/index-zK1ZwS4m.d.ts.map +1 -0
- package/dist/limits-hjrO8zUG.js +80 -0
- package/dist/limits-hjrO8zUG.js.map +1 -0
- package/dist/mastra/index.d.ts +14 -0
- package/dist/mastra/index.d.ts.map +1 -0
- package/dist/mastra/index.js +26 -0
- package/dist/mastra/index.js.map +1 -0
- package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
- package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
- package/dist/mcp/index.d.ts +80 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +97 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/modules/artifacts/index.d.ts +337 -0
- package/dist/modules/artifacts/index.d.ts.map +1 -0
- package/dist/modules/artifacts/index.js +348 -0
- package/dist/modules/artifacts/index.js.map +1 -0
- package/dist/modules/browser/index.d.ts +516 -0
- package/dist/modules/browser/index.d.ts.map +1 -0
- package/dist/modules/browser/index.js +475 -0
- package/dist/modules/browser/index.js.map +1 -0
- package/dist/modules/calendar/index.d.ts +93 -0
- package/dist/modules/calendar/index.d.ts.map +1 -0
- package/dist/modules/calendar/index.js +131 -0
- package/dist/modules/calendar/index.js.map +1 -0
- package/dist/modules/code-sandbox/index.d.ts +317 -0
- package/dist/modules/code-sandbox/index.d.ts.map +1 -0
- package/dist/modules/code-sandbox/index.js +537 -0
- package/dist/modules/code-sandbox/index.js.map +1 -0
- package/dist/modules/content-type/index.d.ts +22 -0
- package/dist/modules/content-type/index.d.ts.map +1 -0
- package/dist/modules/content-type/index.js +66 -0
- package/dist/modules/content-type/index.js.map +1 -0
- package/dist/modules/crypto/index.d.ts +115 -0
- package/dist/modules/crypto/index.d.ts.map +1 -0
- package/dist/modules/crypto/index.js +139 -0
- package/dist/modules/crypto/index.js.map +1 -0
- package/dist/modules/document/index.d.ts +575 -0
- package/dist/modules/document/index.d.ts.map +1 -0
- package/dist/modules/document/index.js +444 -0
- package/dist/modules/document/index.js.map +1 -0
- package/dist/modules/document-extract/index.d.ts +438 -0
- package/dist/modules/document-extract/index.d.ts.map +1 -0
- package/dist/modules/document-extract/index.js +127 -0
- package/dist/modules/document-extract/index.js.map +1 -0
- package/dist/modules/document-render/index.d.ts +336 -0
- package/dist/modules/document-render/index.d.ts.map +1 -0
- package/dist/modules/document-render/index.js +155 -0
- package/dist/modules/document-render/index.js.map +1 -0
- package/dist/modules/email/index.d.ts +311 -0
- package/dist/modules/email/index.d.ts.map +1 -0
- package/dist/modules/email/index.js +167 -0
- package/dist/modules/email/index.js.map +1 -0
- package/dist/modules/email-message/index.d.ts +95 -0
- package/dist/modules/email-message/index.d.ts.map +1 -0
- package/dist/modules/email-message/index.js +264 -0
- package/dist/modules/email-message/index.js.map +1 -0
- package/dist/modules/file-convert/index.d.ts +273 -0
- package/dist/modules/file-convert/index.d.ts.map +1 -0
- package/dist/modules/file-convert/index.js +103 -0
- package/dist/modules/file-convert/index.js.map +1 -0
- package/dist/modules/files/index.d.ts +452 -0
- package/dist/modules/files/index.d.ts.map +1 -0
- package/dist/modules/files/index.js +733 -0
- package/dist/modules/files/index.js.map +1 -0
- package/dist/modules/image/index.d.ts +342 -0
- package/dist/modules/image/index.d.ts.map +1 -0
- package/dist/modules/image/index.js +281 -0
- package/dist/modules/image/index.js.map +1 -0
- package/dist/modules/messaging/index.d.ts +608 -0
- package/dist/modules/messaging/index.d.ts.map +1 -0
- package/dist/modules/messaging/index.js +1067 -0
- package/dist/modules/messaging/index.js.map +1 -0
- package/dist/modules/pdf/index.d.ts +287 -0
- package/dist/modules/pdf/index.d.ts.map +1 -0
- package/dist/modules/pdf/index.js +259 -0
- package/dist/modules/pdf/index.js.map +1 -0
- package/dist/modules/presentation/index.d.ts +247 -0
- package/dist/modules/presentation/index.d.ts.map +1 -0
- package/dist/modules/presentation/index.js +12657 -0
- package/dist/modules/presentation/index.js.map +1 -0
- package/dist/modules/queue/index.d.ts +129 -0
- package/dist/modules/queue/index.d.ts.map +1 -0
- package/dist/modules/queue/index.js +131 -0
- package/dist/modules/queue/index.js.map +1 -0
- package/dist/modules/rag/index.d.ts +250 -0
- package/dist/modules/rag/index.d.ts.map +1 -0
- package/dist/modules/rag/index.js +366 -0
- package/dist/modules/rag/index.js.map +1 -0
- package/dist/modules/scheduler/index.d.ts +216 -0
- package/dist/modules/scheduler/index.d.ts.map +1 -0
- package/dist/modules/scheduler/index.js +153 -0
- package/dist/modules/scheduler/index.js.map +1 -0
- package/dist/modules/skills/index.d.ts +205 -0
- package/dist/modules/skills/index.d.ts.map +1 -0
- package/dist/modules/skills/index.js +203 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/tasks/index.d.ts +287 -0
- package/dist/modules/tasks/index.d.ts.map +1 -0
- package/dist/modules/tasks/index.js +207 -0
- package/dist/modules/tasks/index.js.map +1 -0
- package/dist/modules/vector-store/index.d.ts +3 -0
- package/dist/modules/vector-store/index.js +3 -0
- package/dist/modules/web-fetch/index.d.ts +99 -0
- package/dist/modules/web-fetch/index.d.ts.map +1 -0
- package/dist/modules/web-fetch/index.js +242 -0
- package/dist/modules/web-fetch/index.js.map +1 -0
- package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
- package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
- package/dist/object-artifact-store-wZ2j9cto.js +28 -0
- package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
- package/dist/pinecone-umY4t6OF.js +190 -0
- package/dist/pinecone-umY4t6OF.js.map +1 -0
- package/dist/provider-CgDAlg6K.js +34 -0
- package/dist/provider-CgDAlg6K.js.map +1 -0
- package/dist/qdrant-DMp4NhKR.js +253 -0
- package/dist/qdrant-DMp4NhKR.js.map +1 -0
- package/dist/resend-BAC38_dA.js +155 -0
- package/dist/resend-BAC38_dA.js.map +1 -0
- package/dist/s3-CsOaPWMP.js +955 -0
- package/dist/s3-CsOaPWMP.js.map +1 -0
- package/dist/schemas-ChOAhdo9.js +192 -0
- package/dist/schemas-ChOAhdo9.js.map +1 -0
- package/dist/slack-Di5BBNpt.js +1455 -0
- package/dist/slack-Di5BBNpt.js.map +1 -0
- package/dist/sqs-DCwS1i2N.js +225 -0
- package/dist/sqs-DCwS1i2N.js.map +1 -0
- package/dist/supabase-vector-Dpp9mmJR.js +218 -0
- package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
- package/dist/tanstack/index.d.ts +15 -0
- package/dist/tanstack/index.d.ts.map +1 -0
- package/dist/tanstack/index.js +28 -0
- package/dist/tanstack/index.js.map +1 -0
- package/dist/teams-DYAHNb39.js +835 -0
- package/dist/teams-DYAHNb39.js.map +1 -0
- package/dist/telegram-DDXWzkfL.js +734 -0
- package/dist/telegram-DDXWzkfL.js.map +1 -0
- package/dist/textract-CPLiB22H.js +554 -0
- package/dist/textract-CPLiB22H.js.map +1 -0
- package/dist/transport-B4vn-XiQ.js +157 -0
- package/dist/transport-B4vn-XiQ.js.map +1 -0
- package/dist/transport-i96ACAI_.d.ts +46 -0
- package/dist/transport-i96ACAI_.d.ts.map +1 -0
- package/dist/types-Ccb0DXY9.d.ts +150 -0
- package/dist/types-Ccb0DXY9.d.ts.map +1 -0
- package/dist/unique-EwBH1JPB.js +19 -0
- package/dist/unique-EwBH1JPB.js.map +1 -0
- package/dist/vector-store-C3nEO80e.js +193 -0
- package/dist/vector-store-C3nEO80e.js.map +1 -0
- package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
- package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
- package/dist/vendors/amazon-sp-api/index.js +975 -0
- package/dist/vendors/amazon-sp-api/index.js.map +1 -0
- package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
- package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
- package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
- package/dist/vendors/cloudflare-browser/index.js +2 -0
- package/dist/vendors/cloudflare-email/index.d.ts +260 -0
- package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
- package/dist/vendors/cloudflare-email/index.js +3 -0
- package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
- package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
- package/dist/vendors/cloudflare-sandbox/index.js +2 -0
- package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
- package/dist/vendors/eventbridge-scheduler/index.js +2 -0
- package/dist/vendors/gotenberg/index.d.ts +306 -0
- package/dist/vendors/gotenberg/index.d.ts.map +1 -0
- package/dist/vendors/gotenberg/index.js +2 -0
- package/dist/vendors/imessage/index.d.ts +420 -0
- package/dist/vendors/imessage/index.d.ts.map +1 -0
- package/dist/vendors/imessage/index.js +4 -0
- package/dist/vendors/katana/index.d.ts +1570 -0
- package/dist/vendors/katana/index.d.ts.map +1 -0
- package/dist/vendors/katana/index.js +1639 -0
- package/dist/vendors/katana/index.js.map +1 -0
- package/dist/vendors/mastra-vector/index.d.ts +120 -0
- package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
- package/dist/vendors/mastra-vector/index.js +3 -0
- package/dist/vendors/pinecone/index.d.ts +75 -0
- package/dist/vendors/pinecone/index.d.ts.map +1 -0
- package/dist/vendors/pinecone/index.js +3 -0
- package/dist/vendors/qdrant/index.d.ts +75 -0
- package/dist/vendors/qdrant/index.d.ts.map +1 -0
- package/dist/vendors/qdrant/index.js +3 -0
- package/dist/vendors/resend/index.d.ts +3 -0
- package/dist/vendors/resend/index.js +3 -0
- package/dist/vendors/s3/index.d.ts +2 -0
- package/dist/vendors/s3/index.js +2 -0
- package/dist/vendors/slack/index.d.ts +576 -0
- package/dist/vendors/slack/index.d.ts.map +1 -0
- package/dist/vendors/slack/index.js +3 -0
- package/dist/vendors/sqs/index.d.ts +2 -0
- package/dist/vendors/sqs/index.js +2 -0
- package/dist/vendors/supabase-vector/index.d.ts +89 -0
- package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
- package/dist/vendors/supabase-vector/index.js +3 -0
- package/dist/vendors/teams/index.d.ts +303 -0
- package/dist/vendors/teams/index.d.ts.map +1 -0
- package/dist/vendors/teams/index.js +3 -0
- package/dist/vendors/telegram/index.d.ts +319 -0
- package/dist/vendors/telegram/index.d.ts.map +1 -0
- package/dist/vendors/telegram/index.js +3 -0
- package/dist/vendors/textract/index.d.ts +2 -0
- package/dist/vendors/textract/index.js +2 -0
- package/dist/vendors/woocommerce/index.d.ts +1700 -0
- package/dist/vendors/woocommerce/index.d.ts.map +1 -0
- package/dist/vendors/woocommerce/index.js +1427 -0
- package/dist/vendors/woocommerce/index.js.map +1 -0
- package/dist/with-auth-CpKqTrGK.js +240 -0
- package/dist/with-auth-CpKqTrGK.js.map +1 -0
- package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
- package/logos/README.md +89 -0
- package/logos/amazon.svg +6 -0
- package/logos/artifacts.svg +9 -0
- package/logos/browser.svg +9 -0
- package/logos/calendar.svg +15 -0
- package/logos/cloudflare-browser.svg +5 -0
- package/logos/cloudflare-email.svg +5 -0
- package/logos/cloudflare.svg +4 -0
- package/logos/code-sandbox.svg +8 -0
- package/logos/content-type.svg +10 -0
- package/logos/crypto.svg +7 -0
- package/logos/document-extract.svg +12 -0
- package/logos/document-render.svg +8 -0
- package/logos/document.svg +10 -0
- package/logos/email-message.svg +8 -0
- package/logos/email.svg +7 -0
- package/logos/file-convert.svg +9 -0
- package/logos/files.svg +6 -0
- package/logos/gotenberg.svg +340 -0
- package/logos/image.svg +8 -0
- package/logos/imessage.svg +7 -0
- package/logos/katana.svg +13 -0
- package/logos/mastra.svg +7 -0
- package/logos/messaging.svg +7 -0
- package/logos/pack-logos.json +48 -0
- package/logos/pdf.svg +10 -0
- package/logos/pinecone.svg +25 -0
- package/logos/presentation.svg +8 -0
- package/logos/qdrant.svg +4 -0
- package/logos/queue.svg +11 -0
- package/logos/rag.svg +18 -0
- package/logos/resend.svg +5 -0
- package/logos/scheduler.svg +7 -0
- package/logos/skills.svg +10 -0
- package/logos/slack.svg +14 -0
- package/logos/supabase.svg +4 -0
- package/logos/tasks.svg +10 -0
- package/logos/teams.svg +6 -0
- package/logos/telegram.svg +10 -0
- package/logos/textract.svg +5 -0
- package/logos/vector-store.svg +8 -0
- package/logos/web-fetch.svg +8 -0
- package/logos/woocommerce.svg +4 -0
- package/package.json +373 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { t as ToolError } from "../../errors-DoSpNHvs.js";
|
|
2
|
+
import { n as defineModule, r as defineTool } from "../../define-CvpJ_pNP.js";
|
|
3
|
+
import { n as bytesToBase64, o as utf8ToBytes, t as base64ToBytes } from "../../bytes-BxpimpQx.js";
|
|
4
|
+
import { isNil, isPlainObject, isString } from "es-toolkit";
|
|
5
|
+
import { castArray, has, isArray } from "es-toolkit/compat";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { createMimeMessage } from "mimetext";
|
|
8
|
+
import PostalMime from "postal-mime";
|
|
9
|
+
//#region src/modules/email-message/module.ts
|
|
10
|
+
const addressSchema = z.object({
|
|
11
|
+
address: z.email().describe("Email address"),
|
|
12
|
+
name: z.string().optional().describe("Display name")
|
|
13
|
+
});
|
|
14
|
+
const attachmentOutSchema = z.object({
|
|
15
|
+
filename: z.string().optional(),
|
|
16
|
+
mime_type: z.string().optional().describe("Attachment MIME type when known"),
|
|
17
|
+
size: z.number().optional(),
|
|
18
|
+
disposition: z.enum(["attachment", "inline"]).optional(),
|
|
19
|
+
content_id: z.string().optional(),
|
|
20
|
+
content_base64: z.string().optional().describe("Attachment bytes as base64 when available")
|
|
21
|
+
});
|
|
22
|
+
const parseInput = z.object({
|
|
23
|
+
raw: z.string().min(1).describe("Raw RFC 822 / MIME message as utf8 text or base64"),
|
|
24
|
+
encoding: z.enum(["utf8", "base64"]).optional().describe("How to decode raw. Defaults to utf8")
|
|
25
|
+
});
|
|
26
|
+
const parseOutput = z.object({
|
|
27
|
+
subject: z.string().optional(),
|
|
28
|
+
from: addressSchema.optional(),
|
|
29
|
+
to: z.array(addressSchema).optional(),
|
|
30
|
+
cc: z.array(addressSchema).optional(),
|
|
31
|
+
bcc: z.array(addressSchema).optional(),
|
|
32
|
+
reply_to: z.array(addressSchema).optional(),
|
|
33
|
+
message_id: z.string().optional(),
|
|
34
|
+
in_reply_to: z.string().optional(),
|
|
35
|
+
references: z.string().optional(),
|
|
36
|
+
date: z.string().optional(),
|
|
37
|
+
text: z.string().optional(),
|
|
38
|
+
html: z.string().optional(),
|
|
39
|
+
headers: z.array(z.object({
|
|
40
|
+
key: z.string().describe("Lowercase header name"),
|
|
41
|
+
value: z.string()
|
|
42
|
+
})).optional().describe("Parsed header key/value pairs"),
|
|
43
|
+
attachments: z.array(attachmentOutSchema)
|
|
44
|
+
});
|
|
45
|
+
const buildAttachmentSchema = z.object({
|
|
46
|
+
filename: z.string().min(1).max(255).describe("Attachment file name"),
|
|
47
|
+
content_base64: z.string().min(1).describe("Attachment bytes as base64 (no data: URL prefix)"),
|
|
48
|
+
content_type: z.string().min(1).optional().describe("MIME type. Defaults to application/octet-stream"),
|
|
49
|
+
inline: z.boolean().optional().describe("When true, attach as inline content"),
|
|
50
|
+
content_id: z.string().optional().describe("Content-ID for inline references")
|
|
51
|
+
});
|
|
52
|
+
const buildInput = z.object({
|
|
53
|
+
from: z.union([z.email(), addressSchema]).describe("Sender address or { address, name }"),
|
|
54
|
+
to: z.union([
|
|
55
|
+
z.email(),
|
|
56
|
+
addressSchema,
|
|
57
|
+
z.array(z.union([z.email(), addressSchema])).min(1)
|
|
58
|
+
]).describe("Recipient address, named address, or list"),
|
|
59
|
+
subject: z.string().min(1).describe("Subject line"),
|
|
60
|
+
text: z.string().optional().describe("Plain text body"),
|
|
61
|
+
html: z.string().optional().describe("HTML body"),
|
|
62
|
+
cc: z.union([
|
|
63
|
+
z.email(),
|
|
64
|
+
addressSchema,
|
|
65
|
+
z.array(z.union([z.email(), addressSchema]))
|
|
66
|
+
]).optional().describe("CC recipients"),
|
|
67
|
+
bcc: z.union([
|
|
68
|
+
z.email(),
|
|
69
|
+
addressSchema,
|
|
70
|
+
z.array(z.union([z.email(), addressSchema]))
|
|
71
|
+
]).optional().describe("BCC recipients"),
|
|
72
|
+
reply_to: z.union([z.email(), addressSchema]).optional().describe("Reply-To address"),
|
|
73
|
+
headers: z.record(z.string(), z.string()).optional().describe("Additional headers as a string map"),
|
|
74
|
+
attachments: z.array(buildAttachmentSchema).max(32).optional().describe("Up to 32 base64 attachments to include in the message")
|
|
75
|
+
}).refine((v) => Boolean(v.text?.trim() || v.html?.trim()), { message: "Provide text and/or html body" });
|
|
76
|
+
const buildOutput = z.object({ raw: z.string().describe("Serialized email message") });
|
|
77
|
+
function contentToBase64(content) {
|
|
78
|
+
if (isNil(content)) return {};
|
|
79
|
+
if (isString(content)) {
|
|
80
|
+
const bytes = utf8ToBytes(content);
|
|
81
|
+
return {
|
|
82
|
+
base64: bytesToBase64(bytes),
|
|
83
|
+
size: bytes.byteLength
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (content instanceof ArrayBuffer) {
|
|
87
|
+
const bytes = new Uint8Array(content);
|
|
88
|
+
return {
|
|
89
|
+
base64: bytesToBase64(bytes),
|
|
90
|
+
size: bytes.byteLength
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (content instanceof Uint8Array) return {
|
|
94
|
+
base64: bytesToBase64(content),
|
|
95
|
+
size: content.byteLength
|
|
96
|
+
};
|
|
97
|
+
return {};
|
|
98
|
+
}
|
|
99
|
+
function mapAddr(a) {
|
|
100
|
+
if (!isPlainObject(a) || !has(a, "address")) return void 0;
|
|
101
|
+
const address = a["address"];
|
|
102
|
+
if (!isString(address) || address.length === 0) return void 0;
|
|
103
|
+
const name = has(a, "name") && isString(a["name"]) ? a["name"] : void 0;
|
|
104
|
+
return isNil(name) || name.length === 0 ? { address } : {
|
|
105
|
+
address,
|
|
106
|
+
name
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function mapAddrList(list) {
|
|
110
|
+
if (!isArray(list)) return [];
|
|
111
|
+
return castArray(list).map(mapAddr).filter((a) => !isNil(a));
|
|
112
|
+
}
|
|
113
|
+
function formatMailbox(value) {
|
|
114
|
+
if (isString(value)) return value;
|
|
115
|
+
const mapped = mapAddr(value);
|
|
116
|
+
if (!mapped) throw new ToolError("Invalid mailbox address", { code: "bad_input" });
|
|
117
|
+
if (isNil(mapped.name) || mapped.name.length === 0) return mapped.address;
|
|
118
|
+
return `${mapped.name} <${mapped.address}>`;
|
|
119
|
+
}
|
|
120
|
+
function formatMailboxList(value) {
|
|
121
|
+
if (isNil(value)) return [];
|
|
122
|
+
return castArray(value).map((item) => formatMailbox(item));
|
|
123
|
+
}
|
|
124
|
+
function mapDisposition(value) {
|
|
125
|
+
return value === "attachment" || value === "inline" ? value : void 0;
|
|
126
|
+
}
|
|
127
|
+
const parseEmailMessageTool = defineTool({
|
|
128
|
+
id: "email-message-parse",
|
|
129
|
+
name: "parseEmailMessage",
|
|
130
|
+
description: "Parse a raw RFC 822 / MIME email into structured headers, text/html bodies, identifiers, and attachment metadata. Use when you need to inspect message content without sending mail.",
|
|
131
|
+
inputSchema: parseInput,
|
|
132
|
+
outputSchema: parseOutput,
|
|
133
|
+
sideEffect: "read",
|
|
134
|
+
runtime: "both",
|
|
135
|
+
execute: async (input) => {
|
|
136
|
+
const bytes = input.encoding === "base64" ? base64ToBytes(input.raw) : utf8ToBytes(input.raw);
|
|
137
|
+
try {
|
|
138
|
+
const message = await new PostalMime().parse(bytes);
|
|
139
|
+
const from = mapAddr(message.from);
|
|
140
|
+
const html = isString(message.html) && message.html.length > 0 ? message.html : void 0;
|
|
141
|
+
const headers = [];
|
|
142
|
+
if (isArray(message.headers)) for (const h of message.headers) {
|
|
143
|
+
if (!isPlainObject(h)) continue;
|
|
144
|
+
const key = h["key"];
|
|
145
|
+
const value = h["value"];
|
|
146
|
+
if (isString(key) && isString(value)) headers.push({
|
|
147
|
+
key,
|
|
148
|
+
value
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return parseOutput.parse({
|
|
152
|
+
subject: message.subject,
|
|
153
|
+
from,
|
|
154
|
+
to: mapAddrList(message.to),
|
|
155
|
+
cc: mapAddrList(message.cc),
|
|
156
|
+
bcc: mapAddrList(message.bcc),
|
|
157
|
+
reply_to: mapAddrList(message.replyTo),
|
|
158
|
+
message_id: message.messageId,
|
|
159
|
+
in_reply_to: message.inReplyTo,
|
|
160
|
+
references: message.references,
|
|
161
|
+
date: message.date,
|
|
162
|
+
text: message.text,
|
|
163
|
+
html,
|
|
164
|
+
...headers.length > 0 ? { headers } : {},
|
|
165
|
+
attachments: (message.attachments ?? []).map((att) => {
|
|
166
|
+
const encoded = contentToBase64(att.content);
|
|
167
|
+
const disposition = mapDisposition(att.disposition);
|
|
168
|
+
const filename = isString(att.filename) && att.filename.length > 0 ? att.filename : void 0;
|
|
169
|
+
const contentId = isString(att.contentId) && att.contentId.length > 0 ? att.contentId : void 0;
|
|
170
|
+
return {
|
|
171
|
+
filename,
|
|
172
|
+
mime_type: att.mimeType,
|
|
173
|
+
size: encoded.size,
|
|
174
|
+
disposition,
|
|
175
|
+
content_id: contentId,
|
|
176
|
+
content_base64: encoded.base64
|
|
177
|
+
};
|
|
178
|
+
})
|
|
179
|
+
});
|
|
180
|
+
} catch (error) {
|
|
181
|
+
if (error instanceof ToolError) throw error;
|
|
182
|
+
throw new ToolError("Failed to parse email message", {
|
|
183
|
+
code: "bad_input",
|
|
184
|
+
cause: error
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
const buildEmailMessageTool = defineTool({
|
|
190
|
+
id: "email-message-build",
|
|
191
|
+
name: "buildEmailMessage",
|
|
192
|
+
description: "Build a raw RFC 822 / MIME email from structured sender, recipients, subject, text/html bodies, optional headers, and base64 attachments. Use when you need a serialized message for SMTP or archival. Provide text and/or html.",
|
|
193
|
+
inputSchema: buildInput,
|
|
194
|
+
outputSchema: buildOutput,
|
|
195
|
+
sideEffect: "none",
|
|
196
|
+
runtime: "both",
|
|
197
|
+
execute: async (input) => {
|
|
198
|
+
try {
|
|
199
|
+
const msg = createMimeMessage();
|
|
200
|
+
msg.setSender(formatMailbox(input.from));
|
|
201
|
+
msg.setRecipients(formatMailboxList(input.to));
|
|
202
|
+
const cc = formatMailboxList(input.cc);
|
|
203
|
+
if (cc.length > 0) msg.setCc(cc);
|
|
204
|
+
const bcc = formatMailboxList(input.bcc);
|
|
205
|
+
if (bcc.length > 0) msg.setBcc(bcc);
|
|
206
|
+
if (input.reply_to) msg.setHeader("Reply-To", formatMailbox(input.reply_to));
|
|
207
|
+
if (input.headers) for (const [name, value] of Object.entries(input.headers)) {
|
|
208
|
+
if (name.trim().length === 0) throw new ToolError("Header names must be non-empty", { code: "bad_input" });
|
|
209
|
+
msg.setHeader(name, value);
|
|
210
|
+
}
|
|
211
|
+
msg.setSubject(input.subject);
|
|
212
|
+
if (input.text) msg.addMessage({
|
|
213
|
+
contentType: "text/plain",
|
|
214
|
+
data: input.text
|
|
215
|
+
});
|
|
216
|
+
if (input.html) msg.addMessage({
|
|
217
|
+
contentType: "text/html",
|
|
218
|
+
data: input.html
|
|
219
|
+
});
|
|
220
|
+
if (input.attachments) for (const att of input.attachments) {
|
|
221
|
+
try {
|
|
222
|
+
base64ToBytes(att.content_base64);
|
|
223
|
+
} catch (error) {
|
|
224
|
+
throw new ToolError("Attachment content_base64 is not valid base64", {
|
|
225
|
+
code: "bad_input",
|
|
226
|
+
cause: error
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
const headers = {};
|
|
230
|
+
if (att.content_id) headers["Content-ID"] = att.content_id;
|
|
231
|
+
msg.addAttachment({
|
|
232
|
+
filename: att.filename,
|
|
233
|
+
contentType: att.content_type ?? "application/octet-stream",
|
|
234
|
+
data: att.content_base64,
|
|
235
|
+
encoding: "base64",
|
|
236
|
+
inline: att.inline === true,
|
|
237
|
+
headers
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
return buildOutput.parse({ raw: msg.asRaw() });
|
|
241
|
+
} catch (error) {
|
|
242
|
+
if (error instanceof ToolError) throw error;
|
|
243
|
+
throw new ToolError("Failed to build email message", {
|
|
244
|
+
code: "bad_input",
|
|
245
|
+
cause: error
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
const emailMessageModule = defineModule({
|
|
251
|
+
id: "email-message",
|
|
252
|
+
title: "Email Message",
|
|
253
|
+
description: "Parse and build RFC 822 email messages without sending them.",
|
|
254
|
+
runtime: "both",
|
|
255
|
+
auth: { type: "none" },
|
|
256
|
+
categories: ["email", "utility"],
|
|
257
|
+
classification: "pii",
|
|
258
|
+
tags: ["mime", "pure"],
|
|
259
|
+
tools: [parseEmailMessageTool, buildEmailMessageTool]
|
|
260
|
+
});
|
|
261
|
+
//#endregion
|
|
262
|
+
export { buildEmailMessageTool, emailMessageModule, parseEmailMessageTool };
|
|
263
|
+
|
|
264
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/modules/email-message/module.ts"],"sourcesContent":["import { isNil, isPlainObject, isString } from 'es-toolkit'\nimport { castArray, has, isArray } from 'es-toolkit/compat'\nimport { createMimeMessage } from 'mimetext'\nimport PostalMime from 'postal-mime'\nimport { z } from 'zod'\n\nimport { defineModule, defineTool } from '../../core/define'\nimport { ToolError } from '../../core/errors'\nimport { base64ToBytes, bytesToBase64, utf8ToBytes } from '../../shared/bytes'\n\nconst addressSchema = z.object({\n\taddress: z.email().describe('Email address'),\n\tname: z.string().optional().describe('Display name')\n})\n\nconst attachmentOutSchema = z.object({\n\tfilename: z.string().optional(),\n\tmime_type: z.string().optional().describe('Attachment MIME type when known'),\n\tsize: z.number().optional(),\n\tdisposition: z.enum(['attachment', 'inline']).optional(),\n\tcontent_id: z.string().optional(),\n\tcontent_base64: z.string().optional().describe('Attachment bytes as base64 when available')\n})\n\nconst parseInput = z.object({\n\traw: z.string().min(1).describe('Raw RFC 822 / MIME message as utf8 text or base64'),\n\tencoding: z.enum(['utf8', 'base64']).optional().describe('How to decode raw. Defaults to utf8')\n})\n\nconst parseOutput = z.object({\n\tsubject: z.string().optional(),\n\tfrom: addressSchema.optional(),\n\tto: z.array(addressSchema).optional(),\n\tcc: z.array(addressSchema).optional(),\n\tbcc: z.array(addressSchema).optional(),\n\treply_to: z.array(addressSchema).optional(),\n\tmessage_id: z.string().optional(),\n\tin_reply_to: z.string().optional(),\n\treferences: z.string().optional(),\n\tdate: z.string().optional(),\n\ttext: z.string().optional(),\n\thtml: z.string().optional(),\n\theaders: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tkey: z.string().describe('Lowercase header name'),\n\t\t\t\tvalue: z.string()\n\t\t\t})\n\t\t)\n\t\t.optional()\n\t\t.describe('Parsed header key/value pairs'),\n\tattachments: z.array(attachmentOutSchema)\n})\n\nconst buildAttachmentSchema = z.object({\n\tfilename: z.string().min(1).max(255).describe('Attachment file name'),\n\tcontent_base64: z.string().min(1).describe('Attachment bytes as base64 (no data: URL prefix)'),\n\tcontent_type: z.string().min(1).optional().describe('MIME type. Defaults to application/octet-stream'),\n\tinline: z.boolean().optional().describe('When true, attach as inline content'),\n\tcontent_id: z.string().optional().describe('Content-ID for inline references')\n})\n\nconst buildInput = z\n\t.object({\n\t\tfrom: z.union([z.email(), addressSchema]).describe('Sender address or { address, name }'),\n\t\tto: z\n\t\t\t.union([z.email(), addressSchema, z.array(z.union([z.email(), addressSchema])).min(1)])\n\t\t\t.describe('Recipient address, named address, or list'),\n\t\tsubject: z.string().min(1).describe('Subject line'),\n\t\ttext: z.string().optional().describe('Plain text body'),\n\t\thtml: z.string().optional().describe('HTML body'),\n\t\tcc: z\n\t\t\t.union([z.email(), addressSchema, z.array(z.union([z.email(), addressSchema]))])\n\t\t\t.optional()\n\t\t\t.describe('CC recipients'),\n\t\tbcc: z\n\t\t\t.union([z.email(), addressSchema, z.array(z.union([z.email(), addressSchema]))])\n\t\t\t.optional()\n\t\t\t.describe('BCC recipients'),\n\t\treply_to: z.union([z.email(), addressSchema]).optional().describe('Reply-To address'),\n\t\theaders: z.record(z.string(), z.string()).optional().describe('Additional headers as a string map'),\n\t\tattachments: z\n\t\t\t.array(buildAttachmentSchema)\n\t\t\t.max(32)\n\t\t\t.optional()\n\t\t\t.describe('Up to 32 base64 attachments to include in the message')\n\t})\n\t.refine((v) => Boolean(v.text?.trim() || v.html?.trim()), {\n\t\tmessage: 'Provide text and/or html body'\n\t})\n\nconst buildOutput = z.object({\n\traw: z.string().describe('Serialized email message')\n})\n\nfunction contentToBase64(content: unknown): { base64?: string; size?: number } {\n\tif (isNil(content)) return {}\n\tif (isString(content)) {\n\t\tconst bytes = utf8ToBytes(content)\n\t\treturn { base64: bytesToBase64(bytes), size: bytes.byteLength }\n\t}\n\tif (content instanceof ArrayBuffer) {\n\t\tconst bytes = new Uint8Array(content)\n\t\treturn { base64: bytesToBase64(bytes), size: bytes.byteLength }\n\t}\n\tif (content instanceof Uint8Array) {\n\t\treturn { base64: bytesToBase64(content), size: content.byteLength }\n\t}\n\treturn {}\n}\n\nfunction mapAddr(a: unknown): { address: string; name?: string } | undefined {\n\tif (!isPlainObject(a) || !has(a, 'address')) return undefined\n\tconst address = a['address']\n\tif (!isString(address) || address.length === 0) return undefined\n\tconst name = has(a, 'name') && isString(a['name']) ? a['name'] : undefined\n\treturn isNil(name) || name.length === 0 ? { address } : { address, name }\n}\n\nfunction mapAddrList(list: unknown): Array<{ address: string; name?: string }> {\n\tif (!isArray(list)) return []\n\treturn castArray(list)\n\t\t.map(mapAddr)\n\t\t.filter((a): a is { address: string; name?: string } => !isNil(a))\n}\n\nfunction formatMailbox(value: unknown): string {\n\tif (isString(value)) return value\n\tconst mapped = mapAddr(value)\n\tif (!mapped) {\n\t\tthrow new ToolError('Invalid mailbox address', { code: 'bad_input' })\n\t}\n\tif (isNil(mapped.name) || mapped.name.length === 0) return mapped.address\n\treturn `${mapped.name} <${mapped.address}>`\n}\n\nfunction formatMailboxList(value: unknown): string[] {\n\tif (isNil(value)) return []\n\treturn castArray(value).map((item) => formatMailbox(item))\n}\n\nfunction mapDisposition(value: unknown): 'attachment' | 'inline' | undefined {\n\treturn value === 'attachment' || value === 'inline' ? value : undefined\n}\n\nexport const parseEmailMessageTool = defineTool({\n\tid: 'email-message-parse',\n\tname: 'parseEmailMessage',\n\tdescription:\n\t\t'Parse a raw RFC 822 / MIME email into structured headers, text/html bodies, identifiers, and attachment metadata. Use when you need to inspect message content without sending mail.',\n\tinputSchema: parseInput,\n\toutputSchema: parseOutput,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input) => {\n\t\tconst bytes = input.encoding === 'base64' ? base64ToBytes(input.raw) : utf8ToBytes(input.raw)\n\t\ttry {\n\t\t\tconst parser = new PostalMime()\n\t\t\tconst message = await parser.parse(bytes)\n\t\t\tconst from = mapAddr(message.from)\n\t\t\tconst html = isString(message.html) && message.html.length > 0 ? message.html : undefined\n\t\t\tconst headers: Array<{ key: string; value: string }> = []\n\t\t\tif (isArray(message.headers)) {\n\t\t\t\tfor (const h of message.headers) {\n\t\t\t\t\tif (!isPlainObject(h)) continue\n\t\t\t\t\tconst key = h['key']\n\t\t\t\t\tconst value = h['value']\n\t\t\t\t\tif (isString(key) && isString(value)) headers.push({ key, value })\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parseOutput.parse({\n\t\t\t\tsubject: message.subject,\n\t\t\t\tfrom,\n\t\t\t\tto: mapAddrList(message.to),\n\t\t\t\tcc: mapAddrList(message.cc),\n\t\t\t\tbcc: mapAddrList(message.bcc),\n\t\t\t\treply_to: mapAddrList(message.replyTo),\n\t\t\t\tmessage_id: message.messageId,\n\t\t\t\tin_reply_to: message.inReplyTo,\n\t\t\t\treferences: message.references,\n\t\t\t\tdate: message.date,\n\t\t\t\ttext: message.text,\n\t\t\t\thtml,\n\t\t\t\t...(headers.length > 0 ? { headers } : {}),\n\t\t\t\tattachments: (message.attachments ?? []).map((att) => {\n\t\t\t\t\tconst encoded = contentToBase64(att.content)\n\t\t\t\t\tconst disposition = mapDisposition(att.disposition)\n\t\t\t\t\tconst filename = isString(att.filename) && att.filename.length > 0 ? att.filename : undefined\n\t\t\t\t\tconst contentId = isString(att.contentId) && att.contentId.length > 0 ? att.contentId : undefined\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tmime_type: att.mimeType,\n\t\t\t\t\t\tsize: encoded.size,\n\t\t\t\t\t\tdisposition,\n\t\t\t\t\t\tcontent_id: contentId,\n\t\t\t\t\t\tcontent_base64: encoded.base64\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tif (error instanceof ToolError) throw error\n\t\t\tthrow new ToolError('Failed to parse email message', {\n\t\t\t\tcode: 'bad_input',\n\t\t\t\tcause: error\n\t\t\t})\n\t\t}\n\t}\n})\n\nexport const buildEmailMessageTool = defineTool({\n\tid: 'email-message-build',\n\tname: 'buildEmailMessage',\n\tdescription:\n\t\t'Build a raw RFC 822 / MIME email from structured sender, recipients, subject, text/html bodies, optional headers, and base64 attachments. Use when you need a serialized message for SMTP or archival. Provide text and/or html.',\n\tinputSchema: buildInput,\n\toutputSchema: buildOutput,\n\tsideEffect: 'none',\n\truntime: 'both',\n\texecute: async (input) => {\n\t\ttry {\n\t\t\tconst msg = createMimeMessage()\n\t\t\tmsg.setSender(formatMailbox(input.from))\n\t\t\tmsg.setRecipients(formatMailboxList(input.to))\n\t\t\tconst cc = formatMailboxList(input.cc)\n\t\t\tif (cc.length > 0) msg.setCc(cc)\n\t\t\tconst bcc = formatMailboxList(input.bcc)\n\t\t\tif (bcc.length > 0) msg.setBcc(bcc)\n\t\t\tif (input.reply_to) {\n\t\t\t\tmsg.setHeader('Reply-To', formatMailbox(input.reply_to))\n\t\t\t}\n\t\t\tif (input.headers) {\n\t\t\t\tfor (const [name, value] of Object.entries(input.headers)) {\n\t\t\t\t\tif (name.trim().length === 0) {\n\t\t\t\t\t\tthrow new ToolError('Header names must be non-empty', { code: 'bad_input' })\n\t\t\t\t\t}\n\t\t\t\t\tmsg.setHeader(name, value)\n\t\t\t\t}\n\t\t\t}\n\t\t\tmsg.setSubject(input.subject)\n\t\t\tif (input.text) {\n\t\t\t\tmsg.addMessage({ contentType: 'text/plain', data: input.text })\n\t\t\t}\n\t\t\tif (input.html) {\n\t\t\t\tmsg.addMessage({ contentType: 'text/html', data: input.html })\n\t\t\t}\n\t\t\tif (input.attachments) {\n\t\t\t\tfor (const att of input.attachments) {\n\t\t\t\t\t// Validate base64 early for a stable error code.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbase64ToBytes(att.content_base64)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow new ToolError('Attachment content_base64 is not valid base64', {\n\t\t\t\t\t\t\tcode: 'bad_input',\n\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst headers: Record<string, string> = {}\n\t\t\t\t\tif (att.content_id) headers['Content-ID'] = att.content_id\n\t\t\t\t\tmsg.addAttachment({\n\t\t\t\t\t\tfilename: att.filename,\n\t\t\t\t\t\tcontentType: att.content_type ?? 'application/octet-stream',\n\t\t\t\t\t\tdata: att.content_base64,\n\t\t\t\t\t\tencoding: 'base64',\n\t\t\t\t\t\tinline: att.inline === true,\n\t\t\t\t\t\theaders\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn buildOutput.parse({ raw: msg.asRaw() })\n\t\t} catch (error) {\n\t\t\tif (error instanceof ToolError) throw error\n\t\t\tthrow new ToolError('Failed to build email message', {\n\t\t\t\tcode: 'bad_input',\n\t\t\t\tcause: error\n\t\t\t})\n\t\t}\n\t}\n})\n\nexport const emailMessageModule = defineModule({\n\tid: 'email-message',\n\ttitle: 'Email Message',\n\tdescription: 'Parse and build RFC 822 email messages without sending them.',\n\truntime: 'both',\n\tauth: { type: 'none' },\n\tcategories: ['email', 'utility'],\n\tclassification: 'pii',\n\ttags: ['mime', 'pure'],\n\ttools: [parseEmailMessageTool, buildEmailMessageTool]\n})\n"],"mappings":"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"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
|
|
2
|
+
import "../../index-CZX5OeOF.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
//#region src/modules/file-convert/contracts.d.ts
|
|
5
|
+
declare const fileConvertAuthSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
6
|
+
gotenberg_base_url: z.ZodURL;
|
|
7
|
+
gotenberg_api_username: z.ZodOptional<z.ZodString>;
|
|
8
|
+
gotenberg_api_password: z.ZodOptional<z.ZodString>;
|
|
9
|
+
storage: z.ZodObject<{
|
|
10
|
+
access_key_id: z.ZodString;
|
|
11
|
+
secret_access_key: z.ZodString;
|
|
12
|
+
region: z.ZodString;
|
|
13
|
+
bucket: z.ZodString;
|
|
14
|
+
endpoint: z.ZodOptional<z.ZodURL>;
|
|
15
|
+
session_token: z.ZodOptional<z.ZodString>;
|
|
16
|
+
key_prefix: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
provider: z.ZodLiteral<"gotenberg">;
|
|
19
|
+
}, z.core.$strip>], "provider">;
|
|
20
|
+
type FileConvertAuth = z.infer<typeof fileConvertAuthSchema>;
|
|
21
|
+
declare const convertInputSchema: z.ZodObject<{
|
|
22
|
+
source: z.ZodObject<{
|
|
23
|
+
store: z.ZodEnum<{
|
|
24
|
+
host: "host";
|
|
25
|
+
object: "object";
|
|
26
|
+
}>;
|
|
27
|
+
key: z.ZodString;
|
|
28
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
29
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
30
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
path: z.ZodDefault<z.ZodEnum<{
|
|
33
|
+
"office-to-pdf": "office-to-pdf";
|
|
34
|
+
}>>;
|
|
35
|
+
output_key: z.ZodOptional<z.ZodString>;
|
|
36
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
declare const convertOutputSchema: z.ZodObject<{
|
|
39
|
+
source: z.ZodObject<{
|
|
40
|
+
store: z.ZodEnum<{
|
|
41
|
+
host: "host";
|
|
42
|
+
object: "object";
|
|
43
|
+
}>;
|
|
44
|
+
key: z.ZodString;
|
|
45
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
46
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
47
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
result: z.ZodObject<{
|
|
50
|
+
store: z.ZodEnum<{
|
|
51
|
+
host: "host";
|
|
52
|
+
object: "object";
|
|
53
|
+
}>;
|
|
54
|
+
key: z.ZodString;
|
|
55
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
56
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
57
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
path: z.ZodEnum<{
|
|
60
|
+
"office-to-pdf": "office-to-pdf";
|
|
61
|
+
}>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
declare const convertBatchInputSchema: z.ZodObject<{
|
|
64
|
+
items: z.ZodArray<z.ZodObject<{
|
|
65
|
+
source: z.ZodObject<{
|
|
66
|
+
store: z.ZodEnum<{
|
|
67
|
+
host: "host";
|
|
68
|
+
object: "object";
|
|
69
|
+
}>;
|
|
70
|
+
key: z.ZodString;
|
|
71
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
72
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
73
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
path: z.ZodDefault<z.ZodEnum<{
|
|
76
|
+
"office-to-pdf": "office-to-pdf";
|
|
77
|
+
}>>;
|
|
78
|
+
output_key: z.ZodOptional<z.ZodString>;
|
|
79
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
80
|
+
}, z.core.$strip>>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
declare const convertBatchOutputSchema: z.ZodObject<{
|
|
83
|
+
results: z.ZodArray<z.ZodObject<{
|
|
84
|
+
index: z.ZodInt;
|
|
85
|
+
ok: z.ZodBoolean;
|
|
86
|
+
value: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
source: z.ZodObject<{
|
|
88
|
+
store: z.ZodEnum<{
|
|
89
|
+
host: "host";
|
|
90
|
+
object: "object";
|
|
91
|
+
}>;
|
|
92
|
+
key: z.ZodString;
|
|
93
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
94
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
95
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
result: z.ZodObject<{
|
|
98
|
+
store: z.ZodEnum<{
|
|
99
|
+
host: "host";
|
|
100
|
+
object: "object";
|
|
101
|
+
}>;
|
|
102
|
+
key: z.ZodString;
|
|
103
|
+
media_type: z.ZodOptional<z.ZodString>;
|
|
104
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
105
|
+
byte_length: z.ZodOptional<z.ZodInt>;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
path: z.ZodEnum<{
|
|
108
|
+
"office-to-pdf": "office-to-pdf";
|
|
109
|
+
}>;
|
|
110
|
+
}, z.core.$strip>>;
|
|
111
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
112
|
+
code: z.ZodString;
|
|
113
|
+
message: z.ZodString;
|
|
114
|
+
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
succeeded: z.ZodInt;
|
|
118
|
+
failed: z.ZodInt;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
type ConvertInput = z.infer<typeof convertInputSchema>;
|
|
121
|
+
type ConvertOutput = z.infer<typeof convertOutputSchema>;
|
|
122
|
+
type ConvertBatchInput = z.infer<typeof convertBatchInputSchema>;
|
|
123
|
+
type ConvertBatchOutput = z.infer<typeof convertBatchOutputSchema>;
|
|
124
|
+
type FileConvertOps = {
|
|
125
|
+
convert: (input: ConvertInput) => Promise<ConvertOutput>;
|
|
126
|
+
convertBatch: (input: ConvertBatchInput) => Promise<ConvertBatchOutput>;
|
|
127
|
+
};
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/modules/file-convert/client.d.ts
|
|
130
|
+
declare class FileConvertClient implements FileConvertOps {
|
|
131
|
+
#private;
|
|
132
|
+
constructor(ops: FileConvertOps);
|
|
133
|
+
static fromContext(ctx: ToolContext): FileConvertClient;
|
|
134
|
+
static fromAuth(auth: FileConvertAuth, ctx?: ToolContext): FileConvertClient;
|
|
135
|
+
convert(input: ConvertInput): Promise<{
|
|
136
|
+
source: {
|
|
137
|
+
store: "host" | "object";
|
|
138
|
+
key: string;
|
|
139
|
+
media_type?: string | undefined;
|
|
140
|
+
filename?: string | undefined;
|
|
141
|
+
byte_length?: number | undefined;
|
|
142
|
+
};
|
|
143
|
+
result: {
|
|
144
|
+
store: "host" | "object";
|
|
145
|
+
key: string;
|
|
146
|
+
media_type?: string | undefined;
|
|
147
|
+
filename?: string | undefined;
|
|
148
|
+
byte_length?: number | undefined;
|
|
149
|
+
};
|
|
150
|
+
path: "office-to-pdf";
|
|
151
|
+
}>;
|
|
152
|
+
convertBatch(input: ConvertBatchInput): Promise<{
|
|
153
|
+
results: {
|
|
154
|
+
index: number;
|
|
155
|
+
ok: boolean;
|
|
156
|
+
value?: {
|
|
157
|
+
source: {
|
|
158
|
+
store: "host" | "object";
|
|
159
|
+
key: string;
|
|
160
|
+
media_type?: string | undefined;
|
|
161
|
+
filename?: string | undefined;
|
|
162
|
+
byte_length?: number | undefined;
|
|
163
|
+
};
|
|
164
|
+
result: {
|
|
165
|
+
store: "host" | "object";
|
|
166
|
+
key: string;
|
|
167
|
+
media_type?: string | undefined;
|
|
168
|
+
filename?: string | undefined;
|
|
169
|
+
byte_length?: number | undefined;
|
|
170
|
+
};
|
|
171
|
+
path: "office-to-pdf";
|
|
172
|
+
} | undefined;
|
|
173
|
+
error?: {
|
|
174
|
+
code: string;
|
|
175
|
+
message: string;
|
|
176
|
+
retryable?: boolean | undefined;
|
|
177
|
+
} | undefined;
|
|
178
|
+
}[];
|
|
179
|
+
succeeded: number;
|
|
180
|
+
failed: number;
|
|
181
|
+
}>;
|
|
182
|
+
}
|
|
183
|
+
//#endregion
|
|
184
|
+
//#region src/modules/file-convert/module.d.ts
|
|
185
|
+
declare const fileConvertTool: ToolDefinition<{
|
|
186
|
+
source: {
|
|
187
|
+
store: "host" | "object";
|
|
188
|
+
key: string;
|
|
189
|
+
media_type?: string | undefined;
|
|
190
|
+
filename?: string | undefined;
|
|
191
|
+
byte_length?: number | undefined;
|
|
192
|
+
};
|
|
193
|
+
path: "office-to-pdf";
|
|
194
|
+
output_key?: string | undefined;
|
|
195
|
+
filename?: string | undefined;
|
|
196
|
+
}, {
|
|
197
|
+
source: {
|
|
198
|
+
store: "host" | "object";
|
|
199
|
+
key: string;
|
|
200
|
+
media_type?: string | undefined;
|
|
201
|
+
filename?: string | undefined;
|
|
202
|
+
byte_length?: number | undefined;
|
|
203
|
+
};
|
|
204
|
+
result: {
|
|
205
|
+
store: "host" | "object";
|
|
206
|
+
key: string;
|
|
207
|
+
media_type?: string | undefined;
|
|
208
|
+
filename?: string | undefined;
|
|
209
|
+
byte_length?: number | undefined;
|
|
210
|
+
};
|
|
211
|
+
path: "office-to-pdf";
|
|
212
|
+
}>;
|
|
213
|
+
declare const fileConvertBatchTool: ToolDefinition<{
|
|
214
|
+
items: {
|
|
215
|
+
source: {
|
|
216
|
+
store: "host" | "object";
|
|
217
|
+
key: string;
|
|
218
|
+
media_type?: string | undefined;
|
|
219
|
+
filename?: string | undefined;
|
|
220
|
+
byte_length?: number | undefined;
|
|
221
|
+
};
|
|
222
|
+
path: "office-to-pdf";
|
|
223
|
+
output_key?: string | undefined;
|
|
224
|
+
filename?: string | undefined;
|
|
225
|
+
}[];
|
|
226
|
+
}, {
|
|
227
|
+
results: {
|
|
228
|
+
index: number;
|
|
229
|
+
ok: boolean;
|
|
230
|
+
value?: {
|
|
231
|
+
source: {
|
|
232
|
+
store: "host" | "object";
|
|
233
|
+
key: string;
|
|
234
|
+
media_type?: string | undefined;
|
|
235
|
+
filename?: string | undefined;
|
|
236
|
+
byte_length?: number | undefined;
|
|
237
|
+
};
|
|
238
|
+
result: {
|
|
239
|
+
store: "host" | "object";
|
|
240
|
+
key: string;
|
|
241
|
+
media_type?: string | undefined;
|
|
242
|
+
filename?: string | undefined;
|
|
243
|
+
byte_length?: number | undefined;
|
|
244
|
+
};
|
|
245
|
+
path: "office-to-pdf";
|
|
246
|
+
} | undefined;
|
|
247
|
+
error?: {
|
|
248
|
+
code: string;
|
|
249
|
+
message: string;
|
|
250
|
+
retryable?: boolean | undefined;
|
|
251
|
+
} | undefined;
|
|
252
|
+
}[];
|
|
253
|
+
succeeded: number;
|
|
254
|
+
failed: number;
|
|
255
|
+
}>;
|
|
256
|
+
declare const fileConvertModule: ModuleDefinition<{
|
|
257
|
+
gotenberg_base_url: string;
|
|
258
|
+
gotenberg_api_username?: string | undefined;
|
|
259
|
+
gotenberg_api_password?: string | undefined;
|
|
260
|
+
storage: {
|
|
261
|
+
access_key_id: string;
|
|
262
|
+
secret_access_key: string;
|
|
263
|
+
region: string;
|
|
264
|
+
bucket: string;
|
|
265
|
+
endpoint?: string | undefined;
|
|
266
|
+
session_token?: string | undefined;
|
|
267
|
+
key_prefix?: string | undefined;
|
|
268
|
+
};
|
|
269
|
+
provider: "gotenberg";
|
|
270
|
+
}>;
|
|
271
|
+
//#endregion
|
|
272
|
+
export { type ConvertInput, type ConvertOutput, type FileConvertAuth, FileConvertClient, type FileConvertOps, convertBatchInputSchema, convertBatchOutputSchema, convertInputSchema, convertOutputSchema, fileConvertAuthSchema, fileConvertBatchTool, fileConvertModule, fileConvertTool };
|
|
273
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/modules/file-convert/contracts.ts","../../../src/modules/file-convert/client.ts","../../../src/modules/file-convert/module.ts"],"mappings":";;;;cAkBa,uBAAqB,EAAA,uBAAA,EAAA;;;;;;;;;;;;;;GAAqE,EAAA,KAAA;KAE3F,kBAAkB,EAAE,aAAa;cAEhC,oBAAkB,EAAA;;;;;;;;;;;;;;;;GAA8B,EAAA,KAAA;cAChD,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;GAA+B,EAAA,KAAA;cAClD,yBAAuB,EAAA;;;;;;;;;;;;;;;;;;GAAmC,EAAA,KAAA;cAC1D,0BAAwB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAyC,EAAA,KAAA;KAElE,eAAe,EAAE,aAAa;KAC9B,gBAAgB,EAAE,aAAa;KAC/B,oBAAoB,EAAE,aAAa;KACnC,qBAAqB,EAAE,aAAa;KAEpC;EACX,UAAU,OAAO,iBAAiB,QAAQ;EAC1C,eAAe,OAAO,sBAAsB,QAAQ;;;;cCTxC,6BAA6B;;EAGzC,YAAY,KAAK;SAIV,YAAY,KAAK,cAAc;SAK/B,SAAS,MAAM,iBAAiB,MAAK,cAAmB;EAI/D,QAAQ,OAAO,eAAY;;;;;;;;;;;;;;;;;EAI3B,aAAa,OAAO,oBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cChCzB,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,sBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,mBAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { n as defineModule, r as defineTool } from "../../define-CvpJ_pNP.js";
|
|
2
|
+
import { n as requireAuth } from "../../provider-CgDAlg6K.js";
|
|
3
|
+
import { t as batchResultSchema } from "../../batch-Co1ujeAW.js";
|
|
4
|
+
import { d as gotenbergConvertInputSchema, f as gotenbergConvertOutputSchema, l as gotenbergAuthSchema, o as GotenbergClient, u as gotenbergConvertBatchInputSchema } from "../../gotenberg-NuJjxyln.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
//#region src/modules/file-convert/contracts.ts
|
|
7
|
+
const gotenbergFileConvertAuthSchema = gotenbergAuthSchema.extend({ provider: z.literal("gotenberg") });
|
|
8
|
+
const fileConvertAuthSchema = z.discriminatedUnion("provider", [gotenbergFileConvertAuthSchema]);
|
|
9
|
+
const convertInputSchema = gotenbergConvertInputSchema;
|
|
10
|
+
const convertOutputSchema = gotenbergConvertOutputSchema;
|
|
11
|
+
const convertBatchInputSchema = gotenbergConvertBatchInputSchema;
|
|
12
|
+
const convertBatchOutputSchema = batchResultSchema(convertOutputSchema);
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/modules/file-convert/providers/gotenberg.ts
|
|
15
|
+
var GotenbergFileConvertProvider = class {
|
|
16
|
+
#client;
|
|
17
|
+
constructor(auth, options = {}) {
|
|
18
|
+
const { provider: _p, ...vendorAuth } = auth;
|
|
19
|
+
this.#client = new GotenbergClient(vendorAuth, options);
|
|
20
|
+
}
|
|
21
|
+
convert(input) {
|
|
22
|
+
return this.#client.convert(input);
|
|
23
|
+
}
|
|
24
|
+
convertBatch(input) {
|
|
25
|
+
return this.#client.convertBatch(input);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/modules/file-convert/client.ts
|
|
30
|
+
/**
|
|
31
|
+
* File-convert seam client — picks gotenberg (LibreOffice) from host auth.
|
|
32
|
+
*/
|
|
33
|
+
function transportOptions(ctx) {
|
|
34
|
+
return {
|
|
35
|
+
...ctx.fetch && { fetch: ctx.fetch },
|
|
36
|
+
...ctx.signal && { signal: ctx.signal }
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function providerFor(auth, ctx) {
|
|
40
|
+
const options = transportOptions(ctx);
|
|
41
|
+
switch (auth.provider) {
|
|
42
|
+
case "gotenberg": return new GotenbergFileConvertProvider(auth, options);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
var FileConvertClient = class FileConvertClient {
|
|
46
|
+
#ops;
|
|
47
|
+
constructor(ops) {
|
|
48
|
+
this.#ops = ops;
|
|
49
|
+
}
|
|
50
|
+
static fromContext(ctx) {
|
|
51
|
+
const auth = requireAuth(ctx, fileConvertAuthSchema);
|
|
52
|
+
return new FileConvertClient(providerFor(auth, ctx));
|
|
53
|
+
}
|
|
54
|
+
static fromAuth(auth, ctx = {}) {
|
|
55
|
+
return new FileConvertClient(providerFor(auth, ctx));
|
|
56
|
+
}
|
|
57
|
+
convert(input) {
|
|
58
|
+
return this.#ops.convert(input);
|
|
59
|
+
}
|
|
60
|
+
convertBatch(input) {
|
|
61
|
+
return this.#ops.convertBatch(input);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/modules/file-convert/module.ts
|
|
66
|
+
const fileConvertTool = defineTool({
|
|
67
|
+
id: "file-convert",
|
|
68
|
+
name: "convertFile",
|
|
69
|
+
description: "Convert an existing office document ArtifactRef such as DOCX, PPTX, XLSX, or ODT to PDF and return the final PDF ArtifactRef. Use only when the format must change. For HTML or URL print layouts, use document-render-pdf.",
|
|
70
|
+
inputSchema: convertInputSchema,
|
|
71
|
+
outputSchema: convertOutputSchema,
|
|
72
|
+
sideEffect: "write",
|
|
73
|
+
runtime: "both",
|
|
74
|
+
execute: async (input, ctx) => FileConvertClient.fromContext(ctx).convert(input)
|
|
75
|
+
});
|
|
76
|
+
const fileConvertBatchTool = defineTool({
|
|
77
|
+
id: "file-convert-batch",
|
|
78
|
+
name: "convertFiles",
|
|
79
|
+
description: "Convert up to 10 existing office document ArtifactRefs to final PDF ArtifactRefs. Use only when multiple independent files must change format. Returns per-item success or error without aborting the batch.",
|
|
80
|
+
inputSchema: convertBatchInputSchema,
|
|
81
|
+
outputSchema: convertBatchOutputSchema,
|
|
82
|
+
sideEffect: "write",
|
|
83
|
+
runtime: "both",
|
|
84
|
+
execute: async (input, ctx) => FileConvertClient.fromContext(ctx).convertBatch(input)
|
|
85
|
+
});
|
|
86
|
+
const fileConvertModule = defineModule({
|
|
87
|
+
id: "file-convert",
|
|
88
|
+
title: "File Convert",
|
|
89
|
+
description: "Convert existing office documents to PDF. This changes file format only; it does not create document content or print HTML and URLs.",
|
|
90
|
+
runtime: "both",
|
|
91
|
+
auth: {
|
|
92
|
+
type: "custom",
|
|
93
|
+
schema: fileConvertAuthSchema
|
|
94
|
+
},
|
|
95
|
+
categories: ["documents", "convert"],
|
|
96
|
+
classification: "standard",
|
|
97
|
+
tags: ["office-to-pdf"],
|
|
98
|
+
tools: [fileConvertTool, fileConvertBatchTool]
|
|
99
|
+
});
|
|
100
|
+
//#endregion
|
|
101
|
+
export { FileConvertClient, convertBatchInputSchema, convertBatchOutputSchema, convertInputSchema, convertOutputSchema, fileConvertAuthSchema, fileConvertBatchTool, fileConvertModule, fileConvertTool };
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=index.js.map
|