@5ss/ai-tools 2.11.2 → 2.11.4

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 (188) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +3 -10
  3. package/dist/{bedrock-agentcore-browser-a_qOs-NR.js → bedrock-agentcore-browser-o_oqSPMK.js} +2 -2
  4. package/dist/{bedrock-agentcore-browser-a_qOs-NR.js.map → bedrock-agentcore-browser-o_oqSPMK.js.map} +1 -1
  5. package/dist/{bedrock-agentcore-code-interpreter-MWK-8RhA.js → bedrock-agentcore-code-interpreter-D4ERRFj1.js} +2 -2
  6. package/dist/{bedrock-agentcore-code-interpreter-MWK-8RhA.js.map → bedrock-agentcore-code-interpreter-D4ERRFj1.js.map} +1 -1
  7. package/dist/{cloudflare-browser-B6Yolpin.js → cloudflare-browser-nLJdH5nG.js} +3 -3
  8. package/dist/{cloudflare-browser-B6Yolpin.js.map → cloudflare-browser-nLJdH5nG.js.map} +1 -1
  9. package/dist/{cloudflare-email-Dy0KHeDf.js → cloudflare-email-CSRq8mRd.js} +2 -2
  10. package/dist/{cloudflare-email-Dy0KHeDf.js.map → cloudflare-email-CSRq8mRd.js.map} +1 -1
  11. package/dist/{cloudflare-sandbox-Dp_uNaqW.js → cloudflare-sandbox-Be7SeS4-.js} +3 -3
  12. package/dist/{cloudflare-sandbox-Dp_uNaqW.js.map → cloudflare-sandbox-Be7SeS4-.js.map} +1 -1
  13. package/dist/content-type-E4_Qdoa0.js +19 -0
  14. package/dist/{content-type-CORxaxcv.js.map → content-type-E4_Qdoa0.js.map} +1 -1
  15. package/dist/core/index.js +2 -6
  16. package/dist/core/index.js.map +1 -1
  17. package/dist/{define-CvpJ_pNP.js → define-ieoksEQ0.js} +1 -6
  18. package/dist/define-ieoksEQ0.js.map +1 -0
  19. package/dist/{eventbridge-scheduler-Bh6GqZY2.js → eventbridge-scheduler-BhQaReAz.js} +2 -2
  20. package/dist/{eventbridge-scheduler-Bh6GqZY2.js.map → eventbridge-scheduler-BhQaReAz.js.map} +1 -1
  21. package/dist/http/index.d.ts +1 -1
  22. package/dist/{http-service-T7E5UjP8.d.ts → http-service-CerzWwQO.d.ts} +3 -2
  23. package/dist/http-service-CerzWwQO.d.ts.map +1 -0
  24. package/dist/http-service-DDNCO1s4.js.map +1 -1
  25. package/dist/{client-CCKGsTeI.js → imessage-CofjmONG.js} +152 -2
  26. package/dist/imessage-CofjmONG.js.map +1 -0
  27. package/dist/{index-Cuh6eMWc.d.ts → index-9oSRRNdR.d.ts} +2 -2
  28. package/dist/{index-Cuh6eMWc.d.ts.map → index-9oSRRNdR.d.ts.map} +1 -1
  29. package/dist/{index-zK1ZwS4m.d.ts → index-ByHp3nZm.d.ts} +2 -2
  30. package/dist/{index-zK1ZwS4m.d.ts.map → index-ByHp3nZm.d.ts.map} +1 -1
  31. package/dist/{index-BU4gmYO8.d.ts → index-C-Cuh9it.d.ts} +2 -2
  32. package/dist/{index-BU4gmYO8.d.ts.map → index-C-Cuh9it.d.ts.map} +1 -1
  33. package/dist/index-CZX5OeOF.d.ts.map +1 -1
  34. package/dist/{index-CdFmEfZO.d.ts → index-CtfpOZWu.d.ts} +2 -2
  35. package/dist/{index-CdFmEfZO.d.ts.map → index-CtfpOZWu.d.ts.map} +1 -1
  36. package/dist/{index-n8JTpNf1.d.ts → index-DngnGGiS.d.ts} +2 -2
  37. package/dist/{index-n8JTpNf1.d.ts.map → index-DngnGGiS.d.ts.map} +1 -1
  38. package/dist/{index-DuOGj7vc.d.ts → index-DsTt2EbS.d.ts} +2 -2
  39. package/dist/{index-DuOGj7vc.d.ts.map → index-DsTt2EbS.d.ts.map} +1 -1
  40. package/dist/{index-pwW1OsOx.d.ts → index-Y8p8bsWU.d.ts} +2 -2
  41. package/dist/{index-pwW1OsOx.d.ts.map → index-Y8p8bsWU.d.ts.map} +1 -1
  42. package/dist/{mastra-vector-Dhc6XZ8l.js → mastra-vector-B8HjvdMT.js} +2 -2
  43. package/dist/{mastra-vector-Dhc6XZ8l.js.map → mastra-vector-B8HjvdMT.js.map} +1 -1
  44. package/dist/modules/artifacts/index.d.ts +1 -1
  45. package/dist/modules/artifacts/index.js +3 -3
  46. package/dist/modules/browser/index.d.ts +2 -2
  47. package/dist/modules/browser/index.js +3 -3
  48. package/dist/modules/calendar/index.js +1 -1
  49. package/dist/modules/code-sandbox/index.js +3 -3
  50. package/dist/modules/content-type/index.js +2 -2
  51. package/dist/modules/crypto/index.js +1 -1
  52. package/dist/modules/document-extract/index.d.ts +1 -1
  53. package/dist/modules/document-extract/index.js +2 -2
  54. package/dist/modules/document-render/index.d.ts +21 -30
  55. package/dist/modules/document-render/index.d.ts.map +1 -1
  56. package/dist/modules/document-render/index.js +11 -28
  57. package/dist/modules/document-render/index.js.map +1 -1
  58. package/dist/modules/email/index.d.ts +21 -3
  59. package/dist/modules/email/index.d.ts.map +1 -1
  60. package/dist/modules/email/index.js +3 -3
  61. package/dist/modules/email-message/index.js +1 -1
  62. package/dist/modules/files/index.js +2 -2
  63. package/dist/modules/image/index.d.ts +4 -1
  64. package/dist/modules/image/index.d.ts.map +1 -1
  65. package/dist/modules/image/index.js +25 -4
  66. package/dist/modules/image/index.js.map +1 -1
  67. package/dist/modules/messaging/index.d.ts +1 -1
  68. package/dist/modules/messaging/index.js +7 -7
  69. package/dist/modules/messaging/index.js.map +1 -1
  70. package/dist/modules/queue/index.d.ts +1 -1
  71. package/dist/modules/queue/index.js +2 -2
  72. package/dist/modules/rag/index.d.ts +1 -1
  73. package/dist/modules/rag/index.js +2 -2
  74. package/dist/modules/scheduler/index.d.ts +2 -2
  75. package/dist/modules/scheduler/index.js +2 -2
  76. package/dist/modules/skills/index.js +1 -1
  77. package/dist/modules/tasks/index.js +1 -1
  78. package/dist/modules/vector-store/index.js +1 -1
  79. package/dist/modules/web-fetch/index.js +1 -1
  80. package/dist/{pinecone-umY4t6OF.js → pinecone-CNnCFmix.js} +2 -2
  81. package/dist/{pinecone-umY4t6OF.js.map → pinecone-CNnCFmix.js.map} +1 -1
  82. package/dist/{qdrant-DMp4NhKR.js → qdrant-R_FIcG9d.js} +2 -2
  83. package/dist/{qdrant-DMp4NhKR.js.map → qdrant-R_FIcG9d.js.map} +1 -1
  84. package/dist/{resend-BAC38_dA.js → resend-Bu0NFO3h.js} +2 -2
  85. package/dist/{resend-BAC38_dA.js.map → resend-Bu0NFO3h.js.map} +1 -1
  86. package/dist/{s3-CsOaPWMP.js → s3-Dj7Teh-A.js} +2 -2
  87. package/dist/{s3-CsOaPWMP.js.map → s3-Dj7Teh-A.js.map} +1 -1
  88. package/dist/{slack-Di5BBNpt.js → slack-AjJDNnXJ.js} +2 -2
  89. package/dist/{slack-Di5BBNpt.js.map → slack-AjJDNnXJ.js.map} +1 -1
  90. package/dist/{sqs-DCwS1i2N.js → sqs-CjyXjasF.js} +2 -2
  91. package/dist/{sqs-DCwS1i2N.js.map → sqs-CjyXjasF.js.map} +1 -1
  92. package/dist/{supabase-vector-Dpp9mmJR.js → supabase-vector-BNoJZuft.js} +2 -2
  93. package/dist/{supabase-vector-Dpp9mmJR.js.map → supabase-vector-BNoJZuft.js.map} +1 -1
  94. package/dist/{teams-DYAHNb39.js → teams-CvxYLAi5.js} +2 -2
  95. package/dist/{teams-DYAHNb39.js.map → teams-CvxYLAi5.js.map} +1 -1
  96. package/dist/{telegram-DDXWzkfL.js → telegram-B_-Jljk3.js} +2 -2
  97. package/dist/{telegram-DDXWzkfL.js.map → telegram-B_-Jljk3.js.map} +1 -1
  98. package/dist/{textract-CPLiB22H.js → textract-CAfnGvua.js} +3 -3
  99. package/dist/{textract-CPLiB22H.js.map → textract-CAfnGvua.js.map} +1 -1
  100. package/dist/{vector-store-C3nEO80e.js → vector-store-DDiu3XPg.js} +6 -6
  101. package/dist/{vector-store-C3nEO80e.js.map → vector-store-DDiu3XPg.js.map} +1 -1
  102. package/dist/vendors/amazon-sp-api/index.d.ts +267 -18
  103. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -1
  104. package/dist/vendors/amazon-sp-api/index.js +821 -212
  105. package/dist/vendors/amazon-sp-api/index.js.map +1 -1
  106. package/dist/vendors/bedrock-agentcore-browser/index.d.ts +1 -1
  107. package/dist/vendors/bedrock-agentcore-browser/index.js +1 -1
  108. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +1 -1
  109. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +1 -1
  110. package/dist/vendors/cloudflare-browser/index.d.ts +1 -1
  111. package/dist/vendors/cloudflare-browser/index.js +1 -1
  112. package/dist/vendors/cloudflare-email/index.d.ts +1 -1
  113. package/dist/vendors/cloudflare-email/index.js +1 -1
  114. package/dist/vendors/cloudflare-sandbox/index.d.ts +1 -1
  115. package/dist/vendors/cloudflare-sandbox/index.js +1 -1
  116. package/dist/vendors/eventbridge-scheduler/index.d.ts +1 -1
  117. package/dist/vendors/eventbridge-scheduler/index.js +1 -1
  118. package/dist/vendors/imessage/index.js +1 -2
  119. package/dist/vendors/katana/index.d.ts +371 -2
  120. package/dist/vendors/katana/index.d.ts.map +1 -1
  121. package/dist/vendors/katana/index.js +541 -199
  122. package/dist/vendors/katana/index.js.map +1 -1
  123. package/dist/vendors/mastra-vector/index.js +1 -1
  124. package/dist/vendors/pinecone/index.d.ts +1 -1
  125. package/dist/vendors/pinecone/index.js +1 -1
  126. package/dist/vendors/qdrant/index.d.ts +1 -1
  127. package/dist/vendors/qdrant/index.js +1 -1
  128. package/dist/vendors/resend/index.d.ts +1 -1
  129. package/dist/vendors/resend/index.js +1 -1
  130. package/dist/vendors/s3/index.d.ts +1 -1
  131. package/dist/vendors/s3/index.js +1 -1
  132. package/dist/vendors/slack/index.d.ts +1 -1
  133. package/dist/vendors/slack/index.js +1 -1
  134. package/dist/vendors/sqs/index.d.ts +1 -1
  135. package/dist/vendors/sqs/index.js +1 -1
  136. package/dist/vendors/supabase-vector/index.d.ts +1 -1
  137. package/dist/vendors/supabase-vector/index.js +1 -1
  138. package/dist/vendors/teams/index.d.ts +1 -1
  139. package/dist/vendors/teams/index.js +1 -1
  140. package/dist/vendors/telegram/index.d.ts +1 -1
  141. package/dist/vendors/telegram/index.js +1 -1
  142. package/dist/vendors/textract/index.d.ts +1 -1
  143. package/dist/vendors/textract/index.js +1 -1
  144. package/dist/vendors/woocommerce/index.d.ts +1 -1
  145. package/dist/vendors/woocommerce/index.js +1 -1
  146. package/logos/README.md +0 -4
  147. package/logos/pack-logos.json +0 -5
  148. package/package.json +4 -38
  149. package/dist/artifacts-O8g-40Pw.js +0 -404
  150. package/dist/artifacts-O8g-40Pw.js.map +0 -1
  151. package/dist/batch-BMM5dXqL.d.ts +0 -22
  152. package/dist/batch-BMM5dXqL.d.ts.map +0 -1
  153. package/dist/client-CCKGsTeI.js.map +0 -1
  154. package/dist/content-type-CORxaxcv.js +0 -49
  155. package/dist/define-CvpJ_pNP.js.map +0 -1
  156. package/dist/gotenberg-NuJjxyln.js +0 -291
  157. package/dist/gotenberg-NuJjxyln.js.map +0 -1
  158. package/dist/http-service-T7E5UjP8.d.ts.map +0 -1
  159. package/dist/imessage-BSAFOI8Z.js +0 -154
  160. package/dist/imessage-BSAFOI8Z.js.map +0 -1
  161. package/dist/modules/document/index.d.ts +0 -575
  162. package/dist/modules/document/index.d.ts.map +0 -1
  163. package/dist/modules/document/index.js +0 -444
  164. package/dist/modules/document/index.js.map +0 -1
  165. package/dist/modules/file-convert/index.d.ts +0 -273
  166. package/dist/modules/file-convert/index.d.ts.map +0 -1
  167. package/dist/modules/file-convert/index.js +0 -103
  168. package/dist/modules/file-convert/index.js.map +0 -1
  169. package/dist/modules/pdf/index.d.ts +0 -287
  170. package/dist/modules/pdf/index.d.ts.map +0 -1
  171. package/dist/modules/pdf/index.js +0 -259
  172. package/dist/modules/pdf/index.js.map +0 -1
  173. package/dist/modules/presentation/index.d.ts +0 -247
  174. package/dist/modules/presentation/index.d.ts.map +0 -1
  175. package/dist/modules/presentation/index.js +0 -12657
  176. package/dist/modules/presentation/index.js.map +0 -1
  177. package/dist/object-artifact-store-CMTzCm_G.d.ts +0 -7
  178. package/dist/object-artifact-store-CMTzCm_G.d.ts.map +0 -1
  179. package/dist/object-artifact-store-wZ2j9cto.js +0 -28
  180. package/dist/object-artifact-store-wZ2j9cto.js.map +0 -1
  181. package/dist/vendors/gotenberg/index.d.ts +0 -306
  182. package/dist/vendors/gotenberg/index.d.ts.map +0 -1
  183. package/dist/vendors/gotenberg/index.js +0 -2
  184. package/logos/document.svg +0 -10
  185. package/logos/file-convert.svg +0 -9
  186. package/logos/gotenberg.svg +0 -340
  187. package/logos/pdf.svg +0 -10
  188. package/logos/presentation.svg +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"http-service-DDNCO1s4.js","names":["#http","#defaultLabel","#defaultSignal","#raw"],"sources":["../src/transport/errors.ts","../src/transport/http-service.ts"],"sourcesContent":["/**\n * HTTP status / network → ToolError for HttpService and AwsService.\n */\n\nimport { isError, isNumber } from 'es-toolkit'\nimport { FetchError } from 'ofetch'\n\nimport { ToolError } from '../core/errors'\nimport type { ToolErrorCode } from '../core/errors'\n\nexport type StatusThrowOptions = {\n\tallowStatuses?: readonly number[]\n\t/** When true, non-2xx does not throw. */\n\tnoThrow?: boolean\n}\n\n/** Map common HTTP status codes to stable ToolError codes. */\nexport function httpErrorCode(status: number): ToolErrorCode {\n\tif (status === 401) return 'bad_auth'\n\tif (status === 403) return 'forbidden'\n\tif (status === 404) return 'not_found'\n\tif (status === 429) return 'rate_limited'\n\tif (status === 413) return 'too_large'\n\treturn 'upstream'\n}\n\nexport function throwHttpStatus(operation: string, status: number, retryAfterMs?: number): never {\n\tconst code = httpErrorCode(status)\n\tthrow new ToolError(`${operation} failed with HTTP ${status}`, {\n\t\tcode,\n\t\tretryable: status >= 500 || status === 429,\n\t\tdetails: {\n\t\t\tstatus,\n\t\t\t...(retryAfterMs !== undefined && { retry_after_ms: retryAfterMs })\n\t\t}\n\t})\n}\n\n/** Parse Retry-After header (seconds or HTTP-date) into milliseconds when possible. */\nexport function retryAfterMsFromHeader(value: string | null): number | undefined {\n\tif (value === null || value.length === 0) return undefined\n\tconst asSeconds = Number.parseInt(value, 10)\n\tif (Number.isFinite(asSeconds) && asSeconds >= 0) return asSeconds * 1000\n\tconst asDate = Date.parse(value)\n\tif (Number.isFinite(asDate)) {\n\t\tconst delta = asDate - Date.now()\n\t\treturn delta > 0 ? delta : 0\n\t}\n\treturn undefined\n}\n\n/** Default: throw ToolError on non-2xx (404 → not_found). */\nexport function assertHttpStatusOk(\n\tlabel: string,\n\tstatus: number,\n\theaders: Headers,\n\toptions: StatusThrowOptions = {}\n): void {\n\tif (options.noThrow === true) return\n\tif (status >= 200 && status < 300) return\n\tif (options.allowStatuses && options.allowStatuses.includes(status)) return\n\tif (status === 404) {\n\t\tthrow new ToolError('Not found', { code: 'not_found', details: { status } })\n\t}\n\tthrowHttpStatus(label, status, retryAfterMsFromHeader(headers.get('retry-after')))\n}\n\n/** True if error or any nested `cause` is an AbortError (ofetch wraps abort in FetchError). */\nexport function isAbortErrorChain(error: unknown): boolean {\n\tlet current: unknown = error\n\tconst seen = new Set<unknown>()\n\twhile (current !== undefined && current !== null && !seen.has(current)) {\n\t\tseen.add(current)\n\t\tif (isError(current) && (current.name === 'AbortError' || current.name === 'TimeoutError')) {\n\t\t\treturn true\n\t\t}\n\t\tif (isError(current) && 'cause' in current) {\n\t\t\tcurrent = current.cause\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\treturn false\n}\n\n/** Map ofetch / AbortError / unknown network failures to ToolError. */\nexport function mapTransportNetworkError(error: unknown, label: string): never {\n\tif (error instanceof ToolError) throw error\n\tif (isAbortErrorChain(error)) {\n\t\tthrow new ToolError(`${label} request was aborted`, {\n\t\t\tcode: 'timeout',\n\t\t\tretryable: true,\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (error instanceof FetchError) {\n\t\tconst status = error.statusCode ?? error.response?.status\n\t\tif (isNumber(status) && Number.isFinite(status)) {\n\t\t\tconst retryAfter = retryAfterMsFromHeader(error.response?.headers.get('retry-after') ?? null)\n\t\t\tthrowHttpStatus(label, status, retryAfter)\n\t\t}\n\t\tthrow new ToolError(error.message || `${label} request failed`, {\n\t\t\tcode: 'upstream',\n\t\t\tretryable: true,\n\t\t\tcause: error\n\t\t})\n\t}\n\tthrow new ToolError(`${label} request failed`, {\n\t\tcode: 'upstream',\n\t\tretryable: true,\n\t\tcause: error\n\t})\n}\n","/**\n * Shared HTTP transport (ofetch under the hood).\n * Product clients construct this and call query/bytes/get/post/….\n */\n\nimport { createFetch } from 'ofetch'\nimport type { CreateFetchOptions, FetchOptions } from 'ofetch'\nimport { trimEnd } from 'es-toolkit'\n\nimport { ToolError } from '../core/errors'\nimport type { FetchLike } from '../core/types'\nimport { assertHttpStatusOk, mapTransportNetworkError } from './errors'\n\nexport type HttpServiceOptions = {\n\t/** Absolute origin or base path. Omit for free-form absolute URLs. */\n\tbaseURL?: string\n\t/** Default headers (Authorization, Content-Type, …). */\n\theaders?: Record<string, string>\n\t/** Default timeout ms. */\n\ttimeout?: number\n\t/**\n\t * Injectable fetch (tests via ToolContext / runTool).\n\t * Passed straight to ofetch — no preconnect wrapper.\n\t */\n\tfetch?: FetchLike\n\t/** Default abort signal. */\n\tsignal?: AbortSignal\n\t/** Prefix for ToolError messages (e.g. \"Resend\"). */\n\tlabel?: string\n}\n\n/**\n * Bodies ofetch accepts. `object` covers plain JSON payloads from tool input\n * (including empty objects); FormData/Blob/string live under BodyInit.\n */\nexport type HttpBody = BodyInit | object | null\n\nexport type HttpCallOptions = {\n\tquery?: Record<string, string | number | boolean | undefined>\n\tbody?: HttpBody\n\theaders?: Record<string, string>\n\t/** Status codes returned without throwing. */\n\tallowStatuses?: readonly number[]\n\t/** When true, non-2xx is returned instead of throwing. Default false. */\n\tnoThrow?: boolean\n\ttimeout?: number\n\tsignal?: AbortSignal\n\t/** Override error label for this call. */\n\tlabel?: string\n}\n\nexport type HttpBytesOptions = HttpCallOptions & {\n\t/** Stop reading and throw `too_large` once the response exceeds this many bytes. */\n\tmaxBytes?: number\n}\n\nexport type HttpQueryResult = {\n\tstatus: number\n\tok: boolean\n\theaders: Headers\n\turl: string\n\t/** Parsed body (JSON/text per ofetch). */\n\tdata: unknown\n}\n\nexport type HttpBytesResult = {\n\tstatus: number\n\tok: boolean\n\theaders: Headers\n\turl: string\n\tbytes: Uint8Array\n}\n\ntype OfetchInstance = ReturnType<typeof createFetch>\n\n/**\n * HTTP client: query (parsed), bytes, get/post/put/patch/delete/head.\n * Non-2xx → ToolError by default.\n */\nexport class HttpService {\n\treadonly #http: OfetchInstance\n\treadonly #defaultLabel: string\n\treadonly #defaultSignal: AbortSignal | undefined\n\n\tconstructor(options: HttpServiceOptions = {}) {\n\t\tthis.#defaultLabel = options.label ?? 'HTTP'\n\t\tthis.#defaultSignal = options.signal\n\t\tthis.#http = createOfetch(options)\n\t}\n\n\t/** Shared ofetch.raw + status assert + error map. */\n\tasync #raw(method: string, path: string, options: HttpCallOptions, extra?: FetchOptions) {\n\t\tconst label = options.label ?? this.#defaultLabel\n\t\ttry {\n\t\t\tconst res = await this.#http.raw(path, {\n\t\t\t\tsignal: this.#defaultSignal ?? null,\n\t\t\t\tmethod,\n\t\t\t\t...options,\n\t\t\t\t...extra\n\t\t\t})\n\t\t\tassertHttpStatusOk(label, res.status, res.headers, options)\n\t\t\treturn { status: res.status, ok: res.ok, headers: res.headers, url: res.url, data: res._data }\n\t\t} catch (error) {\n\t\t\tmapTransportNetworkError(error, label)\n\t\t}\n\t}\n\n\t/** Parsed body (JSON/text). ofetch parses JSON responses by default. */\n\tasync query(method: string, path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.#raw(method, path, options)\n\t}\n\n\t/**\n\t * Binary body. `maxBytes` switches to streaming and cancels before an\n\t * oversized response is materialized.\n\t */\n\tasync bytes(method: string, path: string, options: HttpBytesOptions = {}): Promise<HttpBytesResult> {\n\t\tconst { maxBytes, ...requestOptions } = options\n\t\tif (maxBytes !== undefined && (!Number.isSafeInteger(maxBytes) || maxBytes < 0)) {\n\t\t\tthrow new ToolError('Response byte limit must be a non-negative safe integer', { code: 'bad_input' })\n\t\t}\n\n\t\tconst res = await this.#raw(method, path, requestOptions, {\n\t\t\tresponseType: maxBytes === undefined ? 'arrayBuffer' : 'stream'\n\t\t})\n\t\tif (maxBytes === undefined) {\n\t\t\treturn {\n\t\t\t\t...res,\n\t\t\t\tbytes: new Uint8Array(res.data)\n\t\t\t}\n\t\t}\n\n\t\tconst label = options.label ?? this.#defaultLabel\n\t\ttry {\n\t\t\tconst bytes = await readBoundedBytes(res.data, res.headers, maxBytes, label)\n\t\t\treturn { ...res, bytes }\n\t\t} catch (error) {\n\t\t\tmapTransportNetworkError(error, label)\n\t\t}\n\t}\n\n\tget(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('GET', path, options)\n\t}\n\n\tpost(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('POST', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tput(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('PUT', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tpatch(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('PATCH', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tdelete(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('DELETE', path, options)\n\t}\n\n\thead(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('HEAD', path, options)\n\t}\n}\n\nfunction isReadableByteStream(value: unknown): value is ReadableStream<unknown> {\n\treturn value instanceof ReadableStream\n}\n\nfunction contentLength(headers: Headers): number | undefined {\n\tconst value = headers.get('content-length')\n\tif (value === null || !/^\\d+$/.test(value)) return undefined\n\tconst parsed = Number(value)\n\treturn Number.isSafeInteger(parsed) ? parsed : undefined\n}\n\nfunction responseTooLarge(label: string, maxBytes: number, observedBytes: number): never {\n\tthrow new ToolError(`${label} response exceeds byte limit`, {\n\t\tcode: 'too_large',\n\t\tdetails: { max_bytes: maxBytes, content_length: observedBytes }\n\t})\n}\n\nasync function readBoundedBytes(data: unknown, headers: Headers, maxBytes: number, label: string): Promise<Uint8Array> {\n\tconst declaredLength = contentLength(headers)\n\tif (declaredLength !== undefined && declaredLength > maxBytes) {\n\t\tif (isReadableByteStream(data)) {\n\t\t\ttry {\n\t\t\t\tawait data.cancel()\n\t\t\t} catch {\n\t\t\t\t// Preserve the stable too_large error.\n\t\t\t}\n\t\t}\n\t\tresponseTooLarge(label, maxBytes, declaredLength)\n\t}\n\tif (data === null || data === undefined) return new Uint8Array()\n\tif (!isReadableByteStream(data)) {\n\t\tthrow new ToolError(`${label} returned an invalid byte stream`, { code: 'upstream' })\n\t}\n\n\tconst reader = data.getReader()\n\tconst chunks: Uint8Array[] = []\n\tlet total = 0\n\ttry {\n\t\twhile (true) {\n\t\t\tconst chunk = await reader.read()\n\t\t\tif (chunk.done) break\n\t\t\tif (!(chunk.value instanceof Uint8Array)) {\n\t\t\t\tthrow new ToolError(`${label} returned an invalid byte chunk`, { code: 'upstream' })\n\t\t\t}\n\t\t\ttotal += chunk.value.byteLength\n\t\t\tif (total > maxBytes) {\n\t\t\t\ttry {\n\t\t\t\t\tawait reader.cancel()\n\t\t\t\t} catch {\n\t\t\t\t\t// Preserve the stable too_large error.\n\t\t\t\t}\n\t\t\t\tresponseTooLarge(label, maxBytes, declaredLength ?? total)\n\t\t\t}\n\t\t\tchunks.push(chunk.value)\n\t\t}\n\t} finally {\n\t\treader.releaseLock()\n\t}\n\n\tconst bytes = new Uint8Array(total)\n\tlet offset = 0\n\tfor (const chunk of chunks) {\n\t\tbytes.set(chunk, offset)\n\t\toffset += chunk.byteLength\n\t}\n\treturn bytes\n}\n\nfunction createOfetch(options: HttpServiceOptions): OfetchInstance {\n\tconst defaults: FetchOptions = {\n\t\t...options,\n\t\tretry: false,\n\t\tignoreResponseError: true\n\t}\n\tif (defaults.baseURL) {\n\t\tdefaults.baseURL = trimEnd(defaults.baseURL, '/')\n\t}\n\tconst createOptions: CreateFetchOptions = { defaults }\n\tif (options.fetch) {\n\t\tObject.assign(createOptions, { fetch: options.fetch })\n\t}\n\treturn createFetch(createOptions)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"http-service-DDNCO1s4.js","names":["#http","#defaultLabel","#defaultSignal","#raw"],"sources":["../src/transport/errors.ts","../src/transport/http-service.ts"],"sourcesContent":["/**\n * HTTP status / network → ToolError for HttpService and AwsService.\n */\n\nimport { isError, isNumber } from 'es-toolkit'\nimport { FetchError } from 'ofetch'\n\nimport { ToolError } from '../core/errors'\nimport type { ToolErrorCode } from '../core/errors'\n\nexport type StatusThrowOptions = {\n\tallowStatuses?: readonly number[]\n\t/** When true, non-2xx does not throw. */\n\tnoThrow?: boolean\n}\n\n/** Map common HTTP status codes to stable ToolError codes. */\nexport function httpErrorCode(status: number): ToolErrorCode {\n\tif (status === 401) return 'bad_auth'\n\tif (status === 403) return 'forbidden'\n\tif (status === 404) return 'not_found'\n\tif (status === 429) return 'rate_limited'\n\tif (status === 413) return 'too_large'\n\treturn 'upstream'\n}\n\nexport function throwHttpStatus(operation: string, status: number, retryAfterMs?: number): never {\n\tconst code = httpErrorCode(status)\n\tthrow new ToolError(`${operation} failed with HTTP ${status}`, {\n\t\tcode,\n\t\tretryable: status >= 500 || status === 429,\n\t\tdetails: {\n\t\t\tstatus,\n\t\t\t...(retryAfterMs !== undefined && { retry_after_ms: retryAfterMs })\n\t\t}\n\t})\n}\n\n/** Parse Retry-After header (seconds or HTTP-date) into milliseconds when possible. */\nexport function retryAfterMsFromHeader(value: string | null): number | undefined {\n\tif (value === null || value.length === 0) return undefined\n\tconst asSeconds = Number.parseInt(value, 10)\n\tif (Number.isFinite(asSeconds) && asSeconds >= 0) return asSeconds * 1000\n\tconst asDate = Date.parse(value)\n\tif (Number.isFinite(asDate)) {\n\t\tconst delta = asDate - Date.now()\n\t\treturn delta > 0 ? delta : 0\n\t}\n\treturn undefined\n}\n\n/** Default: throw ToolError on non-2xx (404 → not_found). */\nexport function assertHttpStatusOk(\n\tlabel: string,\n\tstatus: number,\n\theaders: Headers,\n\toptions: StatusThrowOptions = {}\n): void {\n\tif (options.noThrow === true) return\n\tif (status >= 200 && status < 300) return\n\tif (options.allowStatuses && options.allowStatuses.includes(status)) return\n\tif (status === 404) {\n\t\tthrow new ToolError('Not found', { code: 'not_found', details: { status } })\n\t}\n\tthrowHttpStatus(label, status, retryAfterMsFromHeader(headers.get('retry-after')))\n}\n\n/** True if error or any nested `cause` is an AbortError (ofetch wraps abort in FetchError). */\nexport function isAbortErrorChain(error: unknown): boolean {\n\tlet current: unknown = error\n\tconst seen = new Set<unknown>()\n\twhile (current !== undefined && current !== null && !seen.has(current)) {\n\t\tseen.add(current)\n\t\tif (isError(current) && (current.name === 'AbortError' || current.name === 'TimeoutError')) {\n\t\t\treturn true\n\t\t}\n\t\tif (isError(current) && 'cause' in current) {\n\t\t\tcurrent = current.cause\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\treturn false\n}\n\n/** Map ofetch / AbortError / unknown network failures to ToolError. */\nexport function mapTransportNetworkError(error: unknown, label: string): never {\n\tif (error instanceof ToolError) throw error\n\tif (isAbortErrorChain(error)) {\n\t\tthrow new ToolError(`${label} request was aborted`, {\n\t\t\tcode: 'timeout',\n\t\t\tretryable: true,\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (error instanceof FetchError) {\n\t\tconst status = error.statusCode ?? error.response?.status\n\t\tif (isNumber(status) && Number.isFinite(status)) {\n\t\t\tconst retryAfter = retryAfterMsFromHeader(error.response?.headers.get('retry-after') ?? null)\n\t\t\tthrowHttpStatus(label, status, retryAfter)\n\t\t}\n\t\tthrow new ToolError(error.message || `${label} request failed`, {\n\t\t\tcode: 'upstream',\n\t\t\tretryable: true,\n\t\t\tcause: error\n\t\t})\n\t}\n\tthrow new ToolError(`${label} request failed`, {\n\t\tcode: 'upstream',\n\t\tretryable: true,\n\t\tcause: error\n\t})\n}\n","/**\n * Shared HTTP transport (ofetch under the hood).\n * Product clients construct this and call query/bytes/get/post/….\n */\n\nimport { createFetch } from 'ofetch'\nimport type { CreateFetchOptions, FetchOptions } from 'ofetch'\nimport { trimEnd } from 'es-toolkit'\n\nimport { ToolError } from '../core/errors'\nimport type { FetchLike } from '../core/types'\nimport { assertHttpStatusOk, mapTransportNetworkError } from './errors'\n\nexport type HttpServiceOptions = {\n\t/** Absolute origin or base path. Omit for free-form absolute URLs. */\n\tbaseURL?: string\n\t/** Default headers (Authorization, Content-Type, …). */\n\theaders?: Record<string, string>\n\t/** Default timeout ms. */\n\ttimeout?: number\n\t/**\n\t * Injectable fetch (tests via ToolContext / runTool).\n\t * Passed straight to ofetch — no preconnect wrapper.\n\t */\n\tfetch?: FetchLike\n\t/** Default abort signal. */\n\tsignal?: AbortSignal\n\t/** Prefix for ToolError messages (e.g. \"Resend\"). */\n\tlabel?: string\n}\n\n/**\n * Bodies ofetch accepts. `object` covers plain JSON payloads from tool input\n * (including empty objects); FormData/Blob/string live under BodyInit.\n */\nexport type HttpBody = BodyInit | object | null\n\nexport type HttpQueryValue = string | number | boolean | readonly (string | number | boolean)[] | undefined\n\nexport type HttpCallOptions = {\n\tquery?: Record<string, HttpQueryValue>\n\tbody?: HttpBody\n\theaders?: Record<string, string>\n\t/** Status codes returned without throwing. */\n\tallowStatuses?: readonly number[]\n\t/** When true, non-2xx is returned instead of throwing. Default false. */\n\tnoThrow?: boolean\n\ttimeout?: number\n\tsignal?: AbortSignal\n\t/** Override error label for this call. */\n\tlabel?: string\n}\n\nexport type HttpBytesOptions = HttpCallOptions & {\n\t/** Stop reading and throw `too_large` once the response exceeds this many bytes. */\n\tmaxBytes?: number\n}\n\nexport type HttpQueryResult = {\n\tstatus: number\n\tok: boolean\n\theaders: Headers\n\turl: string\n\t/** Parsed body (JSON/text per ofetch). */\n\tdata: unknown\n}\n\nexport type HttpBytesResult = {\n\tstatus: number\n\tok: boolean\n\theaders: Headers\n\turl: string\n\tbytes: Uint8Array\n}\n\ntype OfetchInstance = ReturnType<typeof createFetch>\n\n/**\n * HTTP client: query (parsed), bytes, get/post/put/patch/delete/head.\n * Non-2xx → ToolError by default.\n */\nexport class HttpService {\n\treadonly #http: OfetchInstance\n\treadonly #defaultLabel: string\n\treadonly #defaultSignal: AbortSignal | undefined\n\n\tconstructor(options: HttpServiceOptions = {}) {\n\t\tthis.#defaultLabel = options.label ?? 'HTTP'\n\t\tthis.#defaultSignal = options.signal\n\t\tthis.#http = createOfetch(options)\n\t}\n\n\t/** Shared ofetch.raw + status assert + error map. */\n\tasync #raw(method: string, path: string, options: HttpCallOptions, extra?: FetchOptions) {\n\t\tconst label = options.label ?? this.#defaultLabel\n\t\ttry {\n\t\t\tconst res = await this.#http.raw(path, {\n\t\t\t\tsignal: this.#defaultSignal ?? null,\n\t\t\t\tmethod,\n\t\t\t\t...options,\n\t\t\t\t...extra\n\t\t\t})\n\t\t\tassertHttpStatusOk(label, res.status, res.headers, options)\n\t\t\treturn { status: res.status, ok: res.ok, headers: res.headers, url: res.url, data: res._data }\n\t\t} catch (error) {\n\t\t\tmapTransportNetworkError(error, label)\n\t\t}\n\t}\n\n\t/** Parsed body (JSON/text). ofetch parses JSON responses by default. */\n\tasync query(method: string, path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.#raw(method, path, options)\n\t}\n\n\t/**\n\t * Binary body. `maxBytes` switches to streaming and cancels before an\n\t * oversized response is materialized.\n\t */\n\tasync bytes(method: string, path: string, options: HttpBytesOptions = {}): Promise<HttpBytesResult> {\n\t\tconst { maxBytes, ...requestOptions } = options\n\t\tif (maxBytes !== undefined && (!Number.isSafeInteger(maxBytes) || maxBytes < 0)) {\n\t\t\tthrow new ToolError('Response byte limit must be a non-negative safe integer', { code: 'bad_input' })\n\t\t}\n\n\t\tconst res = await this.#raw(method, path, requestOptions, {\n\t\t\tresponseType: maxBytes === undefined ? 'arrayBuffer' : 'stream'\n\t\t})\n\t\tif (maxBytes === undefined) {\n\t\t\treturn {\n\t\t\t\t...res,\n\t\t\t\tbytes: new Uint8Array(res.data)\n\t\t\t}\n\t\t}\n\n\t\tconst label = options.label ?? this.#defaultLabel\n\t\ttry {\n\t\t\tconst bytes = await readBoundedBytes(res.data, res.headers, maxBytes, label)\n\t\t\treturn { ...res, bytes }\n\t\t} catch (error) {\n\t\t\tmapTransportNetworkError(error, label)\n\t\t}\n\t}\n\n\tget(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('GET', path, options)\n\t}\n\n\tpost(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('POST', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tput(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('PUT', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tpatch(path: string, body?: HttpBody, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('PATCH', path, body === undefined ? options : { ...options, body })\n\t}\n\n\tdelete(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('DELETE', path, options)\n\t}\n\n\thead(path: string, options: HttpCallOptions = {}): Promise<HttpQueryResult> {\n\t\treturn this.query('HEAD', path, options)\n\t}\n}\n\nfunction isReadableByteStream(value: unknown): value is ReadableStream<unknown> {\n\treturn value instanceof ReadableStream\n}\n\nfunction contentLength(headers: Headers): number | undefined {\n\tconst value = headers.get('content-length')\n\tif (value === null || !/^\\d+$/.test(value)) return undefined\n\tconst parsed = Number(value)\n\treturn Number.isSafeInteger(parsed) ? parsed : undefined\n}\n\nfunction responseTooLarge(label: string, maxBytes: number, observedBytes: number): never {\n\tthrow new ToolError(`${label} response exceeds byte limit`, {\n\t\tcode: 'too_large',\n\t\tdetails: { max_bytes: maxBytes, content_length: observedBytes }\n\t})\n}\n\nasync function readBoundedBytes(data: unknown, headers: Headers, maxBytes: number, label: string): Promise<Uint8Array> {\n\tconst declaredLength = contentLength(headers)\n\tif (declaredLength !== undefined && declaredLength > maxBytes) {\n\t\tif (isReadableByteStream(data)) {\n\t\t\ttry {\n\t\t\t\tawait data.cancel()\n\t\t\t} catch {\n\t\t\t\t// Preserve the stable too_large error.\n\t\t\t}\n\t\t}\n\t\tresponseTooLarge(label, maxBytes, declaredLength)\n\t}\n\tif (data === null || data === undefined) return new Uint8Array()\n\tif (!isReadableByteStream(data)) {\n\t\tthrow new ToolError(`${label} returned an invalid byte stream`, { code: 'upstream' })\n\t}\n\n\tconst reader = data.getReader()\n\tconst chunks: Uint8Array[] = []\n\tlet total = 0\n\ttry {\n\t\twhile (true) {\n\t\t\tconst chunk = await reader.read()\n\t\t\tif (chunk.done) break\n\t\t\tif (!(chunk.value instanceof Uint8Array)) {\n\t\t\t\tthrow new ToolError(`${label} returned an invalid byte chunk`, { code: 'upstream' })\n\t\t\t}\n\t\t\ttotal += chunk.value.byteLength\n\t\t\tif (total > maxBytes) {\n\t\t\t\ttry {\n\t\t\t\t\tawait reader.cancel()\n\t\t\t\t} catch {\n\t\t\t\t\t// Preserve the stable too_large error.\n\t\t\t\t}\n\t\t\t\tresponseTooLarge(label, maxBytes, declaredLength ?? total)\n\t\t\t}\n\t\t\tchunks.push(chunk.value)\n\t\t}\n\t} finally {\n\t\treader.releaseLock()\n\t}\n\n\tconst bytes = new Uint8Array(total)\n\tlet offset = 0\n\tfor (const chunk of chunks) {\n\t\tbytes.set(chunk, offset)\n\t\toffset += chunk.byteLength\n\t}\n\treturn bytes\n}\n\nfunction createOfetch(options: HttpServiceOptions): OfetchInstance {\n\tconst defaults: FetchOptions = {\n\t\t...options,\n\t\tretry: false,\n\t\tignoreResponseError: true\n\t}\n\tif (defaults.baseURL) {\n\t\tdefaults.baseURL = trimEnd(defaults.baseURL, '/')\n\t}\n\tconst createOptions: CreateFetchOptions = { defaults }\n\tif (options.fetch) {\n\t\tObject.assign(createOptions, { fetch: options.fetch })\n\t}\n\treturn createFetch(createOptions)\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { n as isToolError, t as ToolError } from "./errors-DoSpNHvs.js";
2
+ import { n as defineModule, r as defineTool } from "./define-ieoksEQ0.js";
2
3
  import { n as requireAuth } from "./provider-CgDAlg6K.js";
3
4
  import { t as HttpService } from "./http-service-DDNCO1s4.js";
4
5
  import { n as bytesToBase64, t as base64ToBytes } from "./bytes-BxpimpQx.js";
@@ -738,6 +739,155 @@ var ImessageClient = class ImessageClient {
738
739
  async answerCallback(_input) {}
739
740
  };
740
741
  //#endregion
741
- export { imessageSetReactionInputSchema as A, imessageMessageOutputSchema as C, imessageSendChatActionInputSchema as D, imessageReadInputSchema as E, imessageUnsendInputSchema as M, isImessageSpectrumAuth as N, imessageSendMediaInputSchema as O, imessageGrpcAuthSchema as S, imessageOkOutputSchema as T, imessageDownloadFileInputSchema as _, SpectrumImessageTokenSource as a, imessageEnsureChatInputSchema as b, resolveSpectrumSession as c, isImessageDefiniteRejection as d, isImessageOutcomeUnknown as f, imessageClearReactionInputSchema as g, imessageAuthSchema as h, DEFAULT_SPECTRUM_IMESSAGE_GRPC_ADDRESS as i, imessageSpectrumAuthSchema as j, imessageSendTextInputSchema as k, spectrumImessageGrpcAddress as l, MAX_MEDIA_BYTES as m, client_exports as n, issueImessageTokens as o, toSettableReaction as p, DEFAULT_SPECTRUM_CLOUD_URL as r, parseSpectrumTokenResponse as s, ImessageClient as t, ImessageClientError as u, imessageDownloadFileOutputSchema as v, imessageMiddlewareAuthSchema as w, imessageEnsureChatOutputSchema as x, imessageEditTextInputSchema as y };
742
+ //#region src/vendors/imessage/module.ts
743
+ const imessageSendTextTool = defineTool({
744
+ id: "imessage-send-text",
745
+ name: "imessageSendText",
746
+ description: "Send a text message to an iMessage chat. chat_id is the chat guid (e.g. any;-;+1555…). Returns message_id (guid) for later edits, reactions, or unsend.",
747
+ inputSchema: imessageSendTextInputSchema,
748
+ outputSchema: imessageMessageOutputSchema,
749
+ sideEffect: "send",
750
+ runtime: "node",
751
+ network: true,
752
+ execute: async (input, ctx) => ImessageClient.fromContext(ctx).sendText(input)
753
+ });
754
+ const imessageEditTextTool = defineTool({
755
+ id: "imessage-edit-text",
756
+ name: "imessageEditText",
757
+ description: "Edit the text of a previously sent iMessage. Requires chat guid and message guid.",
758
+ inputSchema: imessageEditTextInputSchema,
759
+ outputSchema: imessageMessageOutputSchema,
760
+ sideEffect: "write",
761
+ runtime: "node",
762
+ network: true,
763
+ execute: async (input, ctx) => ImessageClient.fromContext(ctx).editText(input)
764
+ });
765
+ const imessageSendChatActionTool = defineTool({
766
+ id: "imessage-send-chat-action",
767
+ name: "imessageSendChatAction",
768
+ description: "Show a typing indicator in an iMessage chat while a response is being prepared.",
769
+ inputSchema: imessageSendChatActionInputSchema,
770
+ outputSchema: imessageOkOutputSchema,
771
+ sideEffect: "none",
772
+ runtime: "node",
773
+ network: true,
774
+ execute: async (input, ctx) => {
775
+ await ImessageClient.fromContext(ctx).sendChatAction(input);
776
+ return {
777
+ ok: true,
778
+ space_id: input.chat_id
779
+ };
780
+ }
781
+ });
782
+ const imessageSetReactionTool = defineTool({
783
+ id: "imessage-set-reaction",
784
+ name: "imessageSetReaction",
785
+ description: "React to an iMessage with a tapback (love, like, dislike, laugh, emphasize, question) or free emoji. Returns a message guid for journaling. To clear, call clear-reaction with the same target message_id and emoji.",
786
+ inputSchema: imessageSetReactionInputSchema,
787
+ outputSchema: imessageMessageOutputSchema,
788
+ sideEffect: "write",
789
+ runtime: "node",
790
+ network: true,
791
+ execute: async (input, ctx) => ImessageClient.fromContext(ctx).setReaction(input)
792
+ });
793
+ const imessageClearReactionTool = defineTool({
794
+ id: "imessage-clear-reaction",
795
+ name: "imessageClearReaction",
796
+ description: "Clear an iMessage reaction. message_id is the target message that was reacted to; emoji must match set-reaction (tapback name or emoji character).",
797
+ inputSchema: imessageClearReactionInputSchema,
798
+ outputSchema: imessageOkOutputSchema,
799
+ sideEffect: "delete",
800
+ runtime: "node",
801
+ network: true,
802
+ execute: async (input, ctx) => {
803
+ await ImessageClient.fromContext(ctx).clearReaction(input);
804
+ return {
805
+ ok: true,
806
+ space_id: input.chat_id
807
+ };
808
+ }
809
+ });
810
+ const imessageUnsendTool = defineTool({
811
+ id: "imessage-unsend",
812
+ name: "imessageUnsend",
813
+ description: "Unsend a previously sent iMessage using its chat guid and message guid.",
814
+ inputSchema: imessageUnsendInputSchema,
815
+ outputSchema: imessageOkOutputSchema,
816
+ sideEffect: "delete",
817
+ runtime: "node",
818
+ network: true,
819
+ execute: async (input, ctx) => {
820
+ await ImessageClient.fromContext(ctx).unsend(input);
821
+ return {
822
+ ok: true,
823
+ space_id: input.chat_id
824
+ };
825
+ }
826
+ });
827
+ const imessageReadTool = defineTool({
828
+ id: "imessage-read",
829
+ name: "imessageRead",
830
+ description: "Mark an iMessage conversation as read (whole chat).",
831
+ inputSchema: imessageReadInputSchema,
832
+ outputSchema: imessageOkOutputSchema,
833
+ sideEffect: "write",
834
+ runtime: "node",
835
+ network: true,
836
+ execute: async (input, ctx) => {
837
+ await ImessageClient.fromContext(ctx).read(input);
838
+ return {
839
+ ok: true,
840
+ space_id: input.chat_id
841
+ };
842
+ }
843
+ });
844
+ const imessageSendMediaTool = defineTool({
845
+ id: "imessage-send-media",
846
+ name: "imessageSendMedia",
847
+ description: "Upload and send one photo or document to an iMessage chat from base64 bytes. Optional caption is sent as a follow-up text message.",
848
+ inputSchema: imessageSendMediaInputSchema,
849
+ outputSchema: imessageMessageOutputSchema,
850
+ sideEffect: "send",
851
+ runtime: "node",
852
+ network: true,
853
+ execute: async (input, ctx) => ImessageClient.fromContext(ctx).sendMedia(input)
854
+ });
855
+ const imessageDownloadFileTool = defineTool({
856
+ id: "imessage-download-file",
857
+ name: "imessageDownloadFile",
858
+ description: "Download attachment bytes by attachment guid (file_id from inbound or upload).",
859
+ inputSchema: imessageDownloadFileInputSchema,
860
+ outputSchema: imessageDownloadFileOutputSchema,
861
+ sideEffect: "none",
862
+ runtime: "node",
863
+ network: true,
864
+ execute: async (input, ctx) => ImessageClient.fromContext(ctx).downloadFile(input)
865
+ });
866
+ const imessageModule = defineModule({
867
+ id: "imessage",
868
+ title: "iMessage",
869
+ description: "iMessage tools for sending and editing text or media, typing indicators, reactions, unsend, read state, and attachment download via Photon Spectrum Cloud + Advanced iMessage gRPC (Node only).",
870
+ runtime: "node",
871
+ auth: {
872
+ type: "custom",
873
+ schema: imessageAuthSchema
874
+ },
875
+ categories: ["messaging", "chat"],
876
+ classification: "pii",
877
+ tags: ["imessage", "photon"],
878
+ tools: [
879
+ imessageSendTextTool,
880
+ imessageEditTextTool,
881
+ imessageSendChatActionTool,
882
+ imessageSetReactionTool,
883
+ imessageClearReactionTool,
884
+ imessageUnsendTool,
885
+ imessageReadTool,
886
+ imessageSendMediaTool,
887
+ imessageDownloadFileTool
888
+ ]
889
+ });
890
+ //#endregion
891
+ export { imessageEnsureChatInputSchema as A, imessageSetReactionInputSchema as B, toSettableReaction as C, imessageDownloadFileInputSchema as D, imessageClearReactionInputSchema as E, imessageOkOutputSchema as F, imessageUnsendInputSchema as H, imessageReadInputSchema as I, imessageSendChatActionInputSchema as L, imessageGrpcAuthSchema as M, imessageMessageOutputSchema as N, imessageDownloadFileOutputSchema as O, imessageMiddlewareAuthSchema as P, imessageSendMediaInputSchema as R, isImessageOutcomeUnknown as S, imessageAuthSchema as T, isImessageSpectrumAuth as U, imessageSpectrumAuthSchema as V, parseSpectrumTokenResponse as _, imessageReadTool as a, ImessageClientError as b, imessageSendTextTool as c, ImessageClient as d, client_exports as f, issueImessageTokens as g, SpectrumImessageTokenSource as h, imessageModule as i, imessageEnsureChatOutputSchema as j, imessageEditTextInputSchema as k, imessageSetReactionTool as l, DEFAULT_SPECTRUM_IMESSAGE_GRPC_ADDRESS as m, imessageDownloadFileTool as n, imessageSendChatActionTool as o, DEFAULT_SPECTRUM_CLOUD_URL as p, imessageEditTextTool as r, imessageSendMediaTool as s, imessageClearReactionTool as t, imessageUnsendTool as u, resolveSpectrumSession as v, MAX_MEDIA_BYTES as w, isImessageDefiniteRejection as x, spectrumImessageGrpcAddress as y, imessageSendTextInputSchema as z };
742
892
 
743
- //# sourceMappingURL=client-CCKGsTeI.js.map
893
+ //# sourceMappingURL=imessage-CofjmONG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imessage-CofjmONG.js","names":["#auth","#fetch","#signal","#session","#refreshIfNeeded","#expiresAtMs","#refresh","#mint","#auth","#options","#spectrum","#grpcAddress","#sdk","#im","#ready","#createSdk"],"sources":["../src/vendors/imessage/contracts.ts","../src/vendors/imessage/domain.ts","../src/vendors/imessage/spectrum-cloud.ts","../src/vendors/imessage/client.ts","../src/vendors/imessage/module.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Host auth for Photon iMessage over **gRPC** (Node/Bun only), aligned with spectrum-ts cloud.\n *\n * Two layers (do not conflate):\n * 1. **Spectrum Cloud** — `project_id` + `project_secret` → temporary tokens\n * (`POST /projects/{id}/imessage/tokens`), then gRPC to Photon’s managed hosts.\n * 2. **Direct gRPC** — `address` + temporary `token` when the host already has line credentials\n * (same shape as spectrum-ts explicit `clients[]`).\n *\n * Flat object (not a Zod union) so seams can `.extend` for `provider` / `storage`.\n *\n * @see https://github.com/photon-hq/spectrum-ts/blob/main/packages/imessage/src/auth.ts\n * @see https://github.com/photon-hq/advanced-imessage-ts\n */\nexport const imessageAuthSchema = z\n\t.object({\n\t\t/** Spectrum Cloud project id (with project_secret). Preferred production path. */\n\t\tproject_id: z.string().min(1).optional().describe('Spectrum / Photon project id'),\n\t\tproject_secret: z\n\t\t\t.string()\n\t\t\t.min(1)\n\t\t\t.optional()\n\t\t\t.describe('Spectrum / Photon project secret (Basic auth to Spectrum Cloud)'),\n\t\t/**\n\t\t * gRPC host:port for direct line access (e.g. imessage.spectrum.photon.codes:443 or\n\t\t * {instanceId}.imsg.photon.codes:443). Required with `token`; omitted when using Spectrum Cloud\n\t\t * (address is derived like spectrum-ts).\n\t\t */\n\t\taddress: z.string().min(1).optional().describe('gRPC host:port for direct Advanced iMessage connection'),\n\t\t/** Temporary iMessage bearer (not the project secret). Required for direct gRPC; Spectrum mints this. */\n\t\ttoken: z.string().min(1).optional().describe('Temporary iMessage gRPC bearer token'),\n\t\t/**\n\t\t * Dedicated instance id. With Spectrum Cloud multi-instance responses, required to pick a line;\n\t\t * gRPC address becomes `{server}.imsg.photon.codes:443`.\n\t\t */\n\t\tserver: z.string().min(1).optional().describe('Dedicated iMessage instance id (Spectrum dedicated routing)'),\n\t\tspectrum_cloud_url: z.url().optional().describe('Spectrum Cloud origin (default https://spectrum.photon.codes)'),\n\t\t/**\n\t\t * Override shared gRPC host (spectrum-ts `SPECTRUM_IMESSAGE_ADDRESS`).\n\t\t * Default `imessage.spectrum.photon.codes:443`.\n\t\t */\n\t\tspectrum_imessage_address: z\n\t\t\t.string()\n\t\t\t.min(1)\n\t\t\t.optional()\n\t\t\t.describe('Shared gRPC host override (default imessage.spectrum.photon.codes:443)'),\n\t\ttls: z.boolean().optional().describe('gRPC TLS (default true; set false only for local plaintext)')\n\t})\n\t.superRefine((value, ctx) => {\n\t\tconst hasProjectId = Boolean(value.project_id)\n\t\tconst hasProjectSecret = Boolean(value.project_secret)\n\t\tif (hasProjectId !== hasProjectSecret) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'project_id and project_secret must be provided together for Spectrum Cloud auth'\n\t\t\t})\n\t\t}\n\t\tif (hasProjectId) return\n\t\tif (!value.token || !value.address) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage:\n\t\t\t\t\t'Provide project_id + project_secret (Spectrum Cloud) or address + token (direct gRPC, spectrum-ts clients shape)'\n\t\t\t})\n\t\t}\n\t})\n\nexport type ImessageAuth = z.infer<typeof imessageAuthSchema>\n\nexport type ImessageSpectrumAuth = ImessageAuth & {\n\tproject_id: string\n\tproject_secret: string\n}\n\n/** Direct gRPC line credentials (host already minted a token). */\nexport type ImessageGrpcAuth = ImessageAuth & {\n\taddress: string\n\ttoken: string\n}\n\nexport function isImessageSpectrumAuth(auth: ImessageAuth): auth is ImessageSpectrumAuth {\n\treturn Boolean(auth.project_id && auth.project_secret)\n}\n\n/** Aliases for hosts that want a named schema export (same base + refine). */\nexport const imessageSpectrumAuthSchema = imessageAuthSchema\nexport const imessageGrpcAuthSchema = imessageAuthSchema\n/** @deprecated Use imessageGrpcAuthSchema — pack is gRPC-only. */\nexport const imessageMiddlewareAuthSchema = imessageAuthSchema\n\nexport const imessageChatActionSchema = z.enum([\n\t'typing',\n\t'upload_photo',\n\t'record_video',\n\t'upload_video',\n\t'record_voice',\n\t'upload_voice',\n\t'upload_document',\n\t'choose_sticker',\n\t'find_location',\n\t'record_video_note',\n\t'upload_video_note'\n])\n\nexport const imessageSendTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid (e.g. any;-;alice@example.com)'),\n\ttext: z.string().min(1).describe('Message text')\n})\n\nexport const imessageMessageOutputSchema = z.object({\n\tmessage_id: z.string().min(1).describe('Message guid (provider id for journaling)'),\n\tspace_id: z.string().describe('Chat guid (same as chat_id)')\n})\n\nexport const imessageEditTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tmessage_id: z.string().min(1).describe('Message guid to edit'),\n\ttext: z.string().min(1).describe('Replacement text')\n})\n\nexport const imessageSendChatActionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\taction: imessageChatActionSchema.describe('Chat action; non-typing values map to typing start')\n})\n\nexport const imessageSetReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tmessage_id: z.string().min(1).describe('Message guid to react to'),\n\temoji: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(64)\n\t\t.describe(\n\t\t\t'Tapback name (love, like, dislike, laugh, emphasize, question) or an emoji character (maps to kind emoji)'\n\t\t)\n})\n\nexport const imessageUnsendInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tmessage_id: z.string().min(1).describe('Message guid to unsend')\n})\n\nexport const imessageReadInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tmessage_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Optional; Advanced iMessage markRead marks the whole chat (field kept for seam parity)')\n})\n\nexport const imessageOkOutputSchema = z.object({\n\tok: z.boolean(),\n\tspace_id: z.string().optional()\n})\n\nexport const MAX_MEDIA_BYTES = 20 * 1024 * 1024\n\n/**\n * Clear a reaction via setReaction(isSet=false).\n * `message_id` is the **target** message guid (not a reaction-message id).\n * `emoji` must match what was set (tapback name or emoji character).\n */\nexport const imessageClearReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tmessage_id: z.string().min(1).describe('Target message guid that was reacted to'),\n\temoji: z.string().min(1).max(64).describe('Same tapback name or emoji used when setting the reaction')\n})\n\nexport const imessageSendMediaInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('iMessage chat guid'),\n\tkind: z.enum(['photo', 'document']).describe('Media kind (presentation)'),\n\tbody_base64: z.string().min(1).describe('File body as base64'),\n\tfile_name: z.string().min(1).describe('File name including extension'),\n\tcaption: z.string().optional().describe('Optional caption sent as a follow-up text message'),\n\tcontent_type: z.string().optional().describe('Optional MIME type; inferred from file_name when omitted')\n})\n\nexport const imessageDownloadFileInputSchema = z.object({\n\tfile_id: z.string().min(1).describe('Attachment guid (from inbound payload or upload)'),\n\tfile_name: z.string().min(1).optional().describe('Preferred file name for the download result'),\n\tchat_id: z.string().min(1).optional().describe('Chat guid (optional for attachment download; kept for seam parity)')\n})\n\nexport const imessageDownloadFileOutputSchema = z.object({\n\tfile_name: z.string(),\n\tfile_size: z.number().optional(),\n\tbody_base64: z.string().describe('Downloaded file body as base64')\n})\n\n/**\n * Create (or resolve) a chat via Photon `chats.create`.\n * Host-only proactive / contact-delivery path — not auto-run before sendText.\n * One address = 1:1; two or more = group.\n */\nexport const imessageEnsureChatInputSchema = z.object({\n\taddresses: z\n\t\t.array(z.string().min(1))\n\t\t.min(1)\n\t\t.describe('Peer phone number(s) or email(s). One address creates a 1:1 chat; two or more create a group'),\n\tmessage: z.string().min(1).optional().describe('Optional opening text sent in the same create call'),\n\tclient_message_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Optional idempotency key for chat creation and the optional opening send')\n})\n\nexport const imessageEnsureChatOutputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Chat guid for later send, edit, react, or unsend'),\n\tmessage_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Guid of the opening message when message was provided and the server returned one')\n})\n\nexport type ImessageSendTextInput = z.infer<typeof imessageSendTextInputSchema>\nexport type ImessageMessageOutput = z.infer<typeof imessageMessageOutputSchema>\nexport type ImessageEditTextInput = z.infer<typeof imessageEditTextInputSchema>\nexport type ImessageSendChatActionInput = z.infer<typeof imessageSendChatActionInputSchema>\nexport type ImessageSetReactionInput = z.infer<typeof imessageSetReactionInputSchema>\nexport type ImessageUnsendInput = z.infer<typeof imessageUnsendInputSchema>\nexport type ImessageReadInput = z.infer<typeof imessageReadInputSchema>\nexport type ImessageClearReactionInput = z.infer<typeof imessageClearReactionInputSchema>\nexport type ImessageSendMediaInput = z.infer<typeof imessageSendMediaInputSchema>\nexport type ImessageDownloadFileInput = z.infer<typeof imessageDownloadFileInputSchema>\nexport type ImessageDownloadFileOutput = z.infer<typeof imessageDownloadFileOutputSchema>\nexport type ImessageEnsureChatInput = z.infer<typeof imessageEnsureChatInputSchema>\nexport type ImessageEnsureChatOutput = z.infer<typeof imessageEnsureChatOutputSchema>\n","/**\n * Advanced iMessage helpers (no transport).\n * Maps package shapes ↔ Advanced iMessage SDK types.\n *\n * Error classes are matched by name (not `instanceof`) so this module does not\n * statically import `@photon-ai/advanced-imessage/grpc` (Node-only peers).\n */\n\nimport type { SettableMessageReaction } from '@photon-ai/advanced-imessage/grpc'\n\nimport { isToolError, ToolError } from '../../core/errors'\nimport { isPlainObject } from 'es-toolkit'\nimport { base64ToBytes, bytesToBase64 } from '../../shared/bytes'\nimport type { ImessageDownloadFileInput, ImessageDownloadFileOutput, ImessageMessageOutput } from './contracts'\nimport { MAX_MEDIA_BYTES } from './contracts'\n\nexport type ImessageFailureKind = 'definite_rejection' | 'outcome_unknown'\n\nexport class ImessageClientError extends ToolError {\n\treadonly failureKind: ImessageFailureKind\n\n\tconstructor(input: {\n\t\tmessage: string\n\t\tfailureKind: ImessageFailureKind\n\t\tcode?: ToolError['code']\n\t\tcause?: unknown\n\t\tdetails?: Record<string, unknown>\n\t}) {\n\t\tsuper(input.message, {\n\t\t\tcode: input.code ?? 'upstream',\n\t\t\tretryable: input.failureKind === 'outcome_unknown',\n\t\t\tcause: input.cause,\n\t\t\tdetails: {\n\t\t\t\tfailure_kind: input.failureKind,\n\t\t\t\t...input.details\n\t\t\t}\n\t\t})\n\t\tthis.name = 'ImessageClientError'\n\t\tthis.failureKind = input.failureKind\n\t}\n}\n\nexport function isImessageDefiniteRejection(error: unknown): boolean {\n\treturn error instanceof ImessageClientError && error.failureKind === 'definite_rejection'\n}\n\nexport function isImessageOutcomeUnknown(error: unknown): boolean {\n\treturn error instanceof ImessageClientError && error.failureKind === 'outcome_unknown'\n}\n\n/**\n * Map free-form emoji / tapback string to Photon SettableMessageReaction.\n * Known tapback names → kind; anything else → { kind: 'emoji', emoji }.\n */\nexport function toSettableReaction(emoji: string): SettableMessageReaction {\n\tconst trimmed = emoji.trim()\n\tconst lower = trimmed.toLowerCase()\n\tswitch (lower) {\n\t\tcase 'love':\n\t\t\treturn { kind: 'love' }\n\t\tcase 'like':\n\t\t\treturn { kind: 'like' }\n\t\tcase 'dislike':\n\t\t\treturn { kind: 'dislike' }\n\t\tcase 'laugh':\n\t\t\treturn { kind: 'laugh' }\n\t\tcase 'emphasize':\n\t\t\treturn { kind: 'emphasize' }\n\t\tcase 'question':\n\t\t\treturn { kind: 'question' }\n\t\tdefault:\n\t\t\treturn { kind: 'emoji', emoji: trimmed }\n\t}\n}\n\nexport function messageToOutput(\n\tchatId: string,\n\tmessage: { guid: string; chatGuids?: readonly string[] }\n): ImessageMessageOutput {\n\tconst space =\n\t\tmessage.chatGuids && message.chatGuids.length > 0 && message.chatGuids[0] ? message.chatGuids[0] : chatId\n\treturn {\n\t\tmessage_id: message.guid,\n\t\tspace_id: space\n\t}\n}\n\n/** Decode and size-check media base64 for sendMedia. */\nexport function decodeMediaBytes(bodyBase64: string): Uint8Array {\n\tlet bytes: Uint8Array\n\ttry {\n\t\tbytes = base64ToBytes(bodyBase64)\n\t} catch (error) {\n\t\tthrow new ToolError('Invalid base64 body', { code: 'bad_input', cause: error })\n\t}\n\tif (bytes.byteLength === 0) {\n\t\tthrow new ToolError('Media body must not be empty', { code: 'bad_input' })\n\t}\n\tif (bytes.byteLength > MAX_MEDIA_BYTES) {\n\t\tthrow new ToolError('Media exceeds 20 MiB limit', {\n\t\t\tcode: 'too_large',\n\t\t\tdetails: { max_bytes: MAX_MEDIA_BYTES, content_length: bytes.byteLength }\n\t\t})\n\t}\n\treturn bytes\n}\n\nexport function parseDownloadChunks(\n\tinput: ImessageDownloadFileInput,\n\tchunks: readonly { type: string; data?: Uint8Array; info?: { fileName?: string; totalBytes?: number } }[]\n): ImessageDownloadFileOutput {\n\tconst parts: Uint8Array[] = []\n\tlet fileName: string | undefined\n\tlet totalBytes: number | undefined\n\tfor (const frame of chunks) {\n\t\tif (frame.type === 'header' && frame.info) {\n\t\t\tif (frame.info.fileName) fileName = frame.info.fileName\n\t\t\tif (typeof frame.info.totalBytes === 'number') totalBytes = frame.info.totalBytes\n\t\t}\n\t\tif (frame.type === 'primaryChunk' && frame.data) {\n\t\t\tparts.push(frame.data)\n\t\t}\n\t}\n\tconst total = parts.reduce((n, p) => n + p.byteLength, 0)\n\tconst merged = new Uint8Array(total)\n\tlet offset = 0\n\tfor (const p of parts) {\n\t\tmerged.set(p, offset)\n\t\toffset += p.byteLength\n\t}\n\treturn {\n\t\tfile_name: input.file_name ?? fileName ?? input.file_id,\n\t\t...(totalBytes !== undefined ? { file_size: totalBytes } : total > 0 ? { file_size: total } : {}),\n\t\tbody_base64: bytesToBase64(merged)\n\t}\n}\n\nfunction errorName(error: unknown): string | undefined {\n\treturn error instanceof Error ? error.name : undefined\n}\n\nfunction sdkCode(error: unknown): string | undefined {\n\tif (!isPlainObject(error)) return undefined\n\tconst code = error['code']\n\treturn typeof code === 'string' ? code : undefined\n}\n\nfunction sdkRetryable(error: unknown): boolean | undefined {\n\tif (!isPlainObject(error)) return undefined\n\tconst retryable = error['retryable']\n\treturn typeof retryable === 'boolean' ? retryable : undefined\n}\n\n/** Map Photon SDK errors to ImessageClientError (definite vs unknown). */\nexport function mapSdkError(label: string, error: unknown): never {\n\tif (error instanceof ImessageClientError) throw error\n\t// Preserve Spectrum / auth preflight ToolErrors (do not reclassify as SDK upstream).\n\tif (isToolError(error)) throw error\n\n\tconst name = errorName(error)\n\tif (name === 'AuthenticationError') {\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label}: authentication failed`,\n\t\t\tfailureKind: 'definite_rejection',\n\t\t\tcode: 'bad_auth',\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (name === 'NotFoundError') {\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label}: not found`,\n\t\t\tfailureKind: 'definite_rejection',\n\t\t\tcode: 'not_found',\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (name === 'ValidationError') {\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label}: invalid request`,\n\t\t\tfailureKind: 'definite_rejection',\n\t\t\tcode: 'bad_input',\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (name === 'RateLimitError') {\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label}: rate limited`,\n\t\t\tfailureKind: 'outcome_unknown',\n\t\t\tcode: 'rate_limited',\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (name === 'ConnectionError') {\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label}: connection failed`,\n\t\t\tfailureKind: 'outcome_unknown',\n\t\t\tcode: 'upstream',\n\t\t\tcause: error\n\t\t})\n\t}\n\tif (name === 'IMessageError' || sdkCode(error) !== undefined) {\n\t\tconst retryable = sdkRetryable(error) === true\n\t\tthrow new ImessageClientError({\n\t\t\tmessage: (error instanceof Error && error.message) || `${label} failed`,\n\t\t\tfailureKind: retryable ? 'outcome_unknown' : 'definite_rejection',\n\t\t\tcode: 'upstream',\n\t\t\tcause: error,\n\t\t\tdetails: { ...(sdkCode(error) && { sdk_code: sdkCode(error) }) }\n\t\t})\n\t}\n\n\tconst message = error instanceof Error ? error.message : `${label} request failed`\n\tthrow new ImessageClientError({\n\t\tmessage,\n\t\tfailureKind: 'outcome_unknown',\n\t\tcause: error\n\t})\n}\n","/**\n * Spectrum Cloud iMessage token exchange + gRPC host resolution (spectrum-ts cloud path).\n *\n * project_id + project_secret → POST /projects/{id}/imessage/tokens → temporary bearer\n * (+ dedicated instance map) → createGrpcClient({ address, token }).\n *\n * @see https://github.com/photon-hq/spectrum-ts/blob/main/packages/core/src/utils/cloud.ts\n * @see https://github.com/photon-hq/spectrum-ts/blob/main/packages/imessage/src/auth.ts\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { HttpService } from '../../transport/http-service'\nimport type { FetchLike } from '../../core/types'\nimport type { ImessageSpectrumAuth } from './contracts'\n\nexport const DEFAULT_SPECTRUM_CLOUD_URL = 'https://spectrum.photon.codes'\n\n/**\n * Shared-line gRPC host used by spectrum-ts (`SPECTRUM_IMESSAGE_ADDRESS` override).\n * @see packages/imessage/src/auth.ts in spectrum-ts\n */\nexport const DEFAULT_SPECTRUM_IMESSAGE_GRPC_ADDRESS = 'imessage.spectrum.photon.codes:443'\n\n/** Refresh when less than this many ms remain (or 10% of TTL, whichever is larger, capped by TTL). */\nconst REFRESH_SKEW_MS = 60_000\n\nexport type SpectrumSharedTokenData = {\n\ttype: 'shared'\n\ttoken: string\n\texpiresIn: number\n}\n\nexport type SpectrumDedicatedTokenData = {\n\ttype: 'dedicated'\n\tauth: Record<string, string>\n\tnumbers: Record<string, string | null>\n\texpiresIn: number\n}\n\nexport type SpectrumImessageTokenData = SpectrumSharedTokenData | SpectrumDedicatedTokenData\n\nexport type ResolvedSpectrumSession = {\n\t/** Temporary Advanced iMessage bearer. */\n\ttoken: string\n\t/** Dedicated instance id for x-photon-server; omit for shared. */\n\tserver?: string\n\texpiresIn: number\n\ttype: 'shared' | 'dedicated'\n\t/** Phone numbers by instance when dedicated (informational). */\n\tnumbers?: Record<string, string | null>\n}\n\nexport type SpectrumTokenSourceOptions = {\n\t/** Must include project_id + project_secret (Spectrum path). */\n\tauth: ImessageSpectrumAuth\n\tfetch?: FetchLike | undefined\n\tsignal?: AbortSignal | undefined\n}\n\nfunction basicAuthHeader(projectId: string, projectSecret: string): string {\n\tconst raw = `${projectId}:${projectSecret}`\n\tconst encoded = typeof btoa === 'function' ? btoa(raw) : Buffer.from(raw, 'utf8').toString('base64')\n\treturn `Basic ${encoded}`\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn isPlainObject(value) ? value : undefined\n}\n\nfunction parseExpiresIn(value: unknown): number {\n\tif (typeof value === 'number' && Number.isFinite(value) && value > 0) return Math.floor(value)\n\tif (isString(value) && /^\\d+$/.test(value)) {\n\t\tconst n = Number(value)\n\t\tif (n > 0) return n\n\t}\n\t// Conservative default if the cloud omits expiresIn\n\treturn 3_600\n}\n\n/**\n * Parse Spectrum Cloud success body (`{ succeed, data }` or bare token payload).\n */\nexport function parseSpectrumTokenResponse(body: unknown): SpectrumImessageTokenData {\n\tconst root = asRecord(body)\n\tif (!root) {\n\t\tthrow new ToolError('Spectrum Cloud returned a non-object token response', { code: 'upstream' })\n\t}\n\n\tconst payload = asRecord(root['data']) ?? root\n\tconst type = payload['type']\n\n\tif (type === 'shared') {\n\t\tconst token = payload['token']\n\t\tif (!isString(token) || token.length === 0) {\n\t\t\tthrow new ToolError('Spectrum Cloud shared token response missing token', { code: 'upstream' })\n\t\t}\n\t\treturn { type: 'shared', token, expiresIn: parseExpiresIn(payload['expiresIn'] ?? payload['expires_in']) }\n\t}\n\n\tif (type === 'dedicated') {\n\t\tconst authRaw = asRecord(payload['auth'])\n\t\tif (!authRaw) {\n\t\t\tthrow new ToolError('Spectrum Cloud dedicated token response missing auth map', { code: 'upstream' })\n\t\t}\n\t\tconst auth: Record<string, string> = {}\n\t\tfor (const [instanceId, token] of Object.entries(authRaw)) {\n\t\t\tif (isString(token) && token.length > 0) auth[instanceId] = token\n\t\t}\n\t\tif (Object.keys(auth).length === 0) {\n\t\t\tthrow new ToolError('Spectrum Cloud dedicated token response has no instance tokens', {\n\t\t\t\tcode: 'upstream'\n\t\t\t})\n\t\t}\n\t\tconst numbersRaw = asRecord(payload['numbers'])\n\t\tconst numbers: Record<string, string | null> = {}\n\t\tif (numbersRaw) {\n\t\t\tfor (const [instanceId, phone] of Object.entries(numbersRaw)) {\n\t\t\t\tnumbers[instanceId] = isString(phone) ? phone : null\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\ttype: 'dedicated',\n\t\t\tauth,\n\t\t\tnumbers,\n\t\t\texpiresIn: parseExpiresIn(payload['expiresIn'] ?? payload['expires_in'])\n\t\t}\n\t}\n\n\tthrow new ToolError('Spectrum Cloud token response missing type shared|dedicated', {\n\t\tcode: 'upstream',\n\t\tdetails: { type: type ?? null }\n\t})\n}\n\n/**\n * Map Spectrum token payload + optional preferred instance → session fields for createGrpcClient.\n */\nexport function resolveSpectrumSession(\n\tdata: SpectrumImessageTokenData,\n\tpreferredServer: string | undefined\n): ResolvedSpectrumSession {\n\tif (data.type === 'shared') {\n\t\tif (preferredServer) {\n\t\t\tthrow new ToolError('Spectrum Cloud returned shared routing; server (dedicated instance id) must be omitted', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { server: preferredServer }\n\t\t\t})\n\t\t}\n\t\treturn { type: 'shared', token: data.token, expiresIn: data.expiresIn }\n\t}\n\n\tconst instanceIds = Object.keys(data.auth)\n\tconst server = preferredServer ?? (instanceIds.length === 1 ? instanceIds[0] : undefined)\n\tif (!server) {\n\t\tthrow new ToolError('Spectrum Cloud returned multiple dedicated instances; set auth.server to the instance id', {\n\t\t\tcode: 'bad_auth',\n\t\t\tdetails: { instance_ids: instanceIds }\n\t\t})\n\t}\n\tconst token = data.auth[server]\n\tif (!token) {\n\t\tthrow new ToolError('Spectrum Cloud dedicated response has no token for auth.server', {\n\t\t\tcode: 'bad_auth',\n\t\t\tdetails: { server, instance_ids: instanceIds }\n\t\t})\n\t}\n\treturn {\n\t\ttype: 'dedicated',\n\t\ttoken,\n\t\tserver,\n\t\texpiresIn: data.expiresIn,\n\t\t...(Object.keys(data.numbers).length > 0 && { numbers: data.numbers })\n\t}\n}\n\n/**\n * gRPC `address` spectrum-ts uses after token mint.\n * - shared → `imessage.spectrum.photon.codes:443` (or `spectrum_imessage_address`)\n * - dedicated → `{instanceId}.imsg.photon.codes:443`\n */\nexport function spectrumImessageGrpcAddress(\n\tsession: ResolvedSpectrumSession,\n\toptions: { sharedAddress?: string | undefined } = {}\n): string {\n\tif (session.type === 'dedicated' && session.server) {\n\t\treturn `${session.server}.imsg.photon.codes:443`\n\t}\n\treturn options.sharedAddress?.trim() || DEFAULT_SPECTRUM_IMESSAGE_GRPC_ADDRESS\n}\n\nexport async function issueImessageTokens(\n\tauth: ImessageSpectrumAuth,\n\toptions: { fetch?: FetchLike; signal?: AbortSignal } = {}\n): Promise<SpectrumImessageTokenData> {\n\tconst baseURL = (auth.spectrum_cloud_url ?? DEFAULT_SPECTRUM_CLOUD_URL).replace(/\\/$/, '')\n\tconst http = new HttpService({\n\t\tbaseURL,\n\t\theaders: {\n\t\t\tAuthorization: basicAuthHeader(auth.project_id, auth.project_secret),\n\t\t\tAccept: 'application/json'\n\t\t},\n\t\tlabel: 'Spectrum Cloud',\n\t\t...(options.fetch && { fetch: options.fetch }),\n\t\t...(options.signal && { signal: options.signal })\n\t})\n\n\tconst path = `/projects/${encodeURIComponent(auth.project_id)}/imessage/tokens`\n\ttry {\n\t\tconst { data } = await http.post(path, undefined, { label: 'Spectrum Cloud iMessage tokens' })\n\t\treturn parseSpectrumTokenResponse(data)\n\t} catch (error) {\n\t\tif (error instanceof ToolError) throw error\n\t\tthrow new ToolError('Spectrum Cloud iMessage token exchange failed', {\n\t\t\tcode: 'upstream',\n\t\t\tcause: error\n\t\t})\n\t}\n}\n\n/**\n * Caches Spectrum temporary tokens and refreshes before expiry.\n * `getBearer` is safe to pass as createGrpcClient `token: async () => …`.\n */\nexport class SpectrumImessageTokenSource {\n\treadonly #auth: ImessageSpectrumAuth\n\treadonly #fetch: FetchLike | undefined\n\treadonly #signal: AbortSignal | undefined\n\n\t#session: ResolvedSpectrumSession | undefined\n\t#expiresAtMs = 0\n\t#refresh: Promise<ResolvedSpectrumSession> | undefined\n\n\tconstructor(options: SpectrumTokenSourceOptions) {\n\t\tthis.#auth = options.auth\n\t\tthis.#fetch = options.fetch\n\t\tthis.#signal = options.signal\n\t}\n\n\t/** Dedicated instance id after the first successful mint (undefined for shared). */\n\tget server(): string | undefined {\n\t\treturn this.#session?.server\n\t}\n\n\t/** gRPC host:port for the current session (spectrum-ts routing). */\n\tget grpcAddress(): string | undefined {\n\t\tif (!this.#session) return undefined\n\t\treturn spectrumImessageGrpcAddress(this.#session, {\n\t\t\tsharedAddress: this.#auth.spectrum_imessage_address\n\t\t})\n\t}\n\n\t/** Ensure a session exists; returns routing fields for createGrpcClient. */\n\tasync ensureReady(): Promise<ResolvedSpectrumSession> {\n\t\treturn this.#refreshIfNeeded()\n\t}\n\n\t/** Temporary bearer for Advanced iMessage gRPC. */\n\tasync getBearer(): Promise<string> {\n\t\tconst session = await this.#refreshIfNeeded()\n\t\treturn session.token\n\t}\n\n\tasync #refreshIfNeeded(): Promise<ResolvedSpectrumSession> {\n\t\tconst now = Date.now()\n\t\tif (this.#session && now < this.#expiresAtMs) {\n\t\t\treturn this.#session\n\t\t}\n\t\tif (!this.#refresh) {\n\t\t\tthis.#refresh = this.#mint()\n\t\t\t\t.then((session) => {\n\t\t\t\t\tthis.#session = session\n\t\t\t\t\tconst skew = Math.min(REFRESH_SKEW_MS, Math.max(5_000, Math.floor(session.expiresIn * 100)))\n\t\t\t\t\tthis.#expiresAtMs = Date.now() + Math.max(1_000, session.expiresIn * 1_000 - skew)\n\t\t\t\t\treturn session\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.#refresh = undefined\n\t\t\t\t})\n\t\t}\n\t\treturn this.#refresh\n\t}\n\n\tasync #mint(): Promise<ResolvedSpectrumSession> {\n\t\tconst data = await issueImessageTokens(this.#auth, {\n\t\t\t...(this.#fetch && { fetch: this.#fetch }),\n\t\t\t...(this.#signal && { signal: this.#signal })\n\t\t})\n\t\t// Keep the same dedicated instance across refreshes when we already resolved one.\n\t\tconst preferred = this.#session?.server ?? this.#auth.server\n\t\treturn resolveSpectrumSession(data, preferred)\n\t}\n}\n","/**\n * iMessage vendor client via @photon-ai/advanced-imessage **gRPC** (Node/Bun only).\n * Host: `new ImessageClient(auth)`. Agent tools: `fromContext(ctx)`.\n *\n * Auth (spectrum-ts cloud shape):\n * - Spectrum Cloud: `project_id` + `project_secret` → temporary tokens → managed gRPC hosts\n * - Direct gRPC: `address` + `token` (explicit line, spectrum-ts `clients[]` shape)\n *\n * Requires optional peers: `nice-grpc`, `nice-grpc-common`, `@grpc/grpc-js`.\n * @see https://github.com/photon-hq/spectrum-ts/blob/main/packages/imessage/src/auth.ts\n * @see https://github.com/photon-hq/advanced-imessage-ts\n */\n\nimport type { AdvancedIMessage } from '@photon-ai/advanced-imessage/grpc'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { FetchLike, ToolContext } from '../../core/types'\nimport type {\n\tImessageAuth,\n\tImessageClearReactionInput,\n\tImessageDownloadFileInput,\n\tImessageDownloadFileOutput,\n\tImessageEditTextInput,\n\tImessageEnsureChatInput,\n\tImessageEnsureChatOutput,\n\tImessageMessageOutput,\n\tImessageReadInput,\n\tImessageSendChatActionInput,\n\tImessageSendMediaInput,\n\tImessageSendTextInput,\n\tImessageSetReactionInput,\n\tImessageUnsendInput\n} from './contracts'\nimport { imessageAuthSchema, isImessageSpectrumAuth } from './contracts'\nimport {\n\tdecodeMediaBytes,\n\tisImessageDefiniteRejection,\n\tisImessageOutcomeUnknown,\n\tImessageClientError,\n\tmapSdkError,\n\tmessageToOutput,\n\tparseDownloadChunks,\n\ttoSettableReaction\n} from './domain'\nimport { spectrumImessageGrpcAddress, SpectrumImessageTokenSource } from './spectrum-cloud'\n\n/**\n * Spectrum Cloud token HTTP uses injectable `fetch` (tests).\n * gRPC plane uses native Node/Bun channels (not Workers/edge).\n */\nexport type ImessageClientOptions = {\n\tfetch?: FetchLike | undefined\n\tsignal?: AbortSignal | undefined\n}\n\nexport class ImessageClient {\n\treadonly #auth: ImessageAuth\n\treadonly #options: ImessageClientOptions\n\t#im: AdvancedIMessage | undefined\n\t#ready: Promise<AdvancedIMessage> | undefined\n\t#spectrum: SpectrumImessageTokenSource | undefined\n\t#grpcAddress: string | undefined\n\n\tconstructor(auth: ImessageAuth, options: ImessageClientOptions = {}) {\n\t\tconst parsed = imessageAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid iMessage auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#auth = parsed.data\n\t\tthis.#options = options\n\t}\n\n\tstatic fromContext(ctx: ToolContext): ImessageClient {\n\t\tconst auth = requireAuth(ctx, imessageAuthSchema)\n\t\treturn new ImessageClient(auth, {\n\t\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t\t...(ctx.signal && { signal: ctx.signal })\n\t\t})\n\t}\n\n\t/**\n\t * Dedicated instance id after Spectrum mint (undefined for shared / direct gRPC).\n\t * Available after the first outbound call (or after `ready()`).\n\t */\n\tget server(): string | undefined {\n\t\tif (this.#spectrum) return this.#spectrum.server\n\t\tif (!isImessageSpectrumAuth(this.#auth)) return this.#auth.server\n\t\treturn undefined\n\t}\n\n\t/** Resolved gRPC host:port after `ready()` / first call. */\n\tget grpcAddress(): string | undefined {\n\t\treturn this.#grpcAddress ?? this.#spectrum?.grpcAddress\n\t}\n\n\t/** Resolve Spectrum tokens (if needed) and construct the gRPC SDK client. */\n\tasync ready(): Promise<void> {\n\t\tawait this.#sdk()\n\t}\n\n\t/** Release SDK resources. */\n\tasync close(): Promise<void> {\n\t\tif (this.#im) await this.#im.close()\n\t}\n\n\tasync #sdk(): Promise<AdvancedIMessage> {\n\t\tif (this.#im) return this.#im\n\t\t// Clear a failed init so a later call can retry (transient mint/network errors).\n\t\tthis.#ready ??= this.#createSdk().catch((error: unknown) => {\n\t\t\tthis.#ready = undefined\n\t\t\tthrow error\n\t\t})\n\t\tthis.#im = await this.#ready\n\t\treturn this.#im\n\t}\n\n\tasync #createSdk(): Promise<AdvancedIMessage> {\n\t\t// Dynamic import keeps messaging/edge graphs free of gRPC Node peers until call time.\n\t\tconst { createGrpcClient } = await import('@photon-ai/advanced-imessage/grpc')\n\t\tconst auth = this.#auth\n\t\tconst tls = auth.tls !== false\n\n\t\tif (isImessageSpectrumAuth(auth)) {\n\t\t\tconst spectrum = new SpectrumImessageTokenSource({\n\t\t\t\tauth,\n\t\t\t\t...(this.#options.fetch && { fetch: this.#options.fetch }),\n\t\t\t\t...(this.#options.signal && { signal: this.#options.signal })\n\t\t\t})\n\t\t\tthis.#spectrum = spectrum\n\t\t\tconst session = await spectrum.ensureReady()\n\t\t\tconst address = spectrumImessageGrpcAddress(session, {\n\t\t\t\tsharedAddress: auth.spectrum_imessage_address\n\t\t\t})\n\t\t\tthis.#grpcAddress = address\n\t\t\t// Same options spectrum-ts uses for cloud lines.\n\t\t\treturn createGrpcClient({\n\t\t\t\taddress,\n\t\t\t\ttoken: async () => spectrum.getBearer(),\n\t\t\t\ttls: true,\n\t\t\t\tautoIdempotency: true,\n\t\t\t\tretry: true\n\t\t\t})\n\t\t}\n\n\t\tconst token = auth.token\n\t\tconst address = auth.address\n\t\tif (!token || !address) {\n\t\t\tthrow new ToolError(\n\t\t\t\t'iMessage direct gRPC auth requires address and token when Spectrum credentials are omitted',\n\t\t\t\t{\n\t\t\t\t\tcode: 'bad_auth'\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tthis.#grpcAddress = address\n\t\treturn createGrpcClient({\n\t\t\taddress,\n\t\t\ttoken,\n\t\t\ttls,\n\t\t\tautoIdempotency: true,\n\t\t\tretry: true\n\t\t})\n\t}\n\n\t/**\n\t * Create a chat (1:1 or group) via Photon `chats.create`.\n\t * Host-only: call once for contact / proactive delivery, store `chat_id`, then sendText.\n\t * Does **not** run automatically before sendText — most threads already exist from inbound user messages.\n\t */\n\tasync ensureChat(input: ImessageEnsureChatInput): Promise<ImessageEnsureChatOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst created = await im.chats.create(input.addresses, {\n\t\t\t\t...(input.message && { message: input.message }),\n\t\t\t\t...(input.client_message_id && { clientMessageId: input.client_message_id })\n\t\t\t})\n\t\t\tconst out: ImessageEnsureChatOutput = { chat_id: created.chat.guid }\n\t\t\tif (created.initialMessage?.guid) {\n\t\t\t\tout.message_id = created.initialMessage.guid\n\t\t\t}\n\t\t\treturn out\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage ensureChat', error)\n\t\t}\n\t}\n\n\tasync sendText(input: ImessageSendTextInput): Promise<ImessageMessageOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst message = await im.messages.sendText(input.chat_id, input.text)\n\t\t\treturn messageToOutput(input.chat_id, message)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage sendText', error)\n\t\t}\n\t}\n\n\tasync editText(input: ImessageEditTextInput): Promise<ImessageMessageOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst message = await im.messages.edit(input.chat_id, input.message_id, input.text)\n\t\t\treturn messageToOutput(input.chat_id, message)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage editText', error)\n\t\t}\n\t}\n\n\t/**\n\t * Non-typing chat actions map to typing start (presentation parity with other channels).\n\t */\n\tasync sendChatAction(input: ImessageSendChatActionInput): Promise<void> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tawait im.chats.setTyping(input.chat_id, true)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage sendChatAction', error)\n\t\t}\n\t}\n\n\tasync stopTyping(input: { chat_id: string }): Promise<void> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tawait im.chats.setTyping(input.chat_id, false)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage stopTyping', error)\n\t\t}\n\t}\n\n\t/**\n\t * Add a tapback/emoji reaction. Returns the resulting message guid (store for journaling).\n\t * Clear with clearReaction using the **same target message_id + emoji** (setReaction isSet=false).\n\t */\n\tasync setReaction(input: ImessageSetReactionInput): Promise<ImessageMessageOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst message = await im.messages.setReaction(\n\t\t\t\tinput.chat_id,\n\t\t\t\tinput.message_id,\n\t\t\t\ttoSettableReaction(input.emoji),\n\t\t\t\ttrue\n\t\t\t)\n\t\t\treturn messageToOutput(input.chat_id, message)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage setReaction', error)\n\t\t}\n\t}\n\n\t/**\n\t * Remove a reaction. `message_id` is the **target** message; `emoji` must match setReaction.\n\t */\n\tasync clearReaction(input: ImessageClearReactionInput): Promise<void> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tawait im.messages.setReaction(input.chat_id, input.message_id, toSettableReaction(input.emoji), false)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage clearReaction', error)\n\t\t}\n\t}\n\n\tasync unsend(input: ImessageUnsendInput): Promise<void> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tawait im.messages.unsend(input.chat_id, input.message_id)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage unsend', error)\n\t\t}\n\t}\n\n\t/** Mark the chat read (Advanced iMessage marks the whole conversation). */\n\tasync read(input: ImessageReadInput): Promise<void> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tawait im.chats.markRead(input.chat_id)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage read', error)\n\t\t}\n\t}\n\n\t/**\n\t * Upload bytes then send attachment by GUID. Optional caption as follow-up text.\n\t */\n\tasync sendMedia(input: ImessageSendMediaInput): Promise<ImessageMessageOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst data = decodeMediaBytes(input.body_base64)\n\t\t\tconst uploaded = await im.attachments.upload({\n\t\t\t\tfileName: input.file_name,\n\t\t\t\tdata\n\t\t\t})\n\t\t\tconst message = await im.messages.sendAttachment(input.chat_id, uploaded.attachment.guid)\n\t\t\tif (input.caption) {\n\t\t\t\tawait im.messages.sendText(input.chat_id, input.caption)\n\t\t\t}\n\t\t\treturn messageToOutput(input.chat_id, message)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage sendMedia', error)\n\t\t}\n\t}\n\n\t/**\n\t * Download attachment bytes by attachment guid (`file_id`).\n\t */\n\tasync downloadFile(input: ImessageDownloadFileInput): Promise<ImessageDownloadFileOutput> {\n\t\ttry {\n\t\t\tconst im = await this.#sdk()\n\t\t\tconst frames: { type: string; data?: Uint8Array; info?: { fileName?: string; totalBytes?: number } }[] = []\n\t\t\tfor await (const frame of im.attachments.downloadStream(input.file_id)) {\n\t\t\t\tif (frame.type === 'header') {\n\t\t\t\t\tframes.push({\n\t\t\t\t\t\ttype: 'header',\n\t\t\t\t\t\tinfo: {\n\t\t\t\t\t\t\t...(frame.info.fileName && { fileName: frame.info.fileName }),\n\t\t\t\t\t\t\t...(typeof frame.info.totalBytes === 'number' && { totalBytes: frame.info.totalBytes })\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} else if (frame.type === 'primaryChunk') {\n\t\t\t\t\tframes.push({ type: 'primaryChunk', data: frame.data })\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parseDownloadChunks(input, frames)\n\t\t} catch (error) {\n\t\t\tmapSdkError('iMessage downloadFile', error)\n\t\t}\n\t}\n\n\tasync answerCallback(_input: unknown): Promise<void> {\n\t\t// No interactive callbacks on iMessage.\n\t}\n}\n\nexport { isImessageDefiniteRejection, isImessageOutcomeUnknown, ImessageClientError }\n","import { defineModule, defineTool } from '../../core/define'\nimport { ImessageClient } from './client'\nimport {\n\timessageAuthSchema,\n\timessageClearReactionInputSchema,\n\timessageDownloadFileInputSchema,\n\timessageDownloadFileOutputSchema,\n\timessageEditTextInputSchema,\n\timessageMessageOutputSchema,\n\timessageOkOutputSchema,\n\timessageReadInputSchema,\n\timessageSendChatActionInputSchema,\n\timessageSendMediaInputSchema,\n\timessageSendTextInputSchema,\n\timessageSetReactionInputSchema,\n\timessageUnsendInputSchema\n} from './contracts'\n\nexport const imessageSendTextTool = defineTool({\n\tid: 'imessage-send-text',\n\tname: 'imessageSendText',\n\tdescription:\n\t\t'Send a text message to an iMessage chat. chat_id is the chat guid (e.g. any;-;+1555…). Returns message_id (guid) for later edits, reactions, or unsend.',\n\tinputSchema: imessageSendTextInputSchema,\n\toutputSchema: imessageMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => ImessageClient.fromContext(ctx).sendText(input)\n})\n\nexport const imessageEditTextTool = defineTool({\n\tid: 'imessage-edit-text',\n\tname: 'imessageEditText',\n\tdescription: 'Edit the text of a previously sent iMessage. Requires chat guid and message guid.',\n\tinputSchema: imessageEditTextInputSchema,\n\toutputSchema: imessageMessageOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => ImessageClient.fromContext(ctx).editText(input)\n})\n\nexport const imessageSendChatActionTool = defineTool({\n\tid: 'imessage-send-chat-action',\n\tname: 'imessageSendChatAction',\n\tdescription: 'Show a typing indicator in an iMessage chat while a response is being prepared.',\n\tinputSchema: imessageSendChatActionInputSchema,\n\toutputSchema: imessageOkOutputSchema,\n\tsideEffect: 'none',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => {\n\t\tawait ImessageClient.fromContext(ctx).sendChatAction(input)\n\t\treturn { ok: true, space_id: input.chat_id }\n\t}\n})\n\nexport const imessageSetReactionTool = defineTool({\n\tid: 'imessage-set-reaction',\n\tname: 'imessageSetReaction',\n\tdescription:\n\t\t'React to an iMessage with a tapback (love, like, dislike, laugh, emphasize, question) or free emoji. Returns a message guid for journaling. To clear, call clear-reaction with the same target message_id and emoji.',\n\tinputSchema: imessageSetReactionInputSchema,\n\toutputSchema: imessageMessageOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => ImessageClient.fromContext(ctx).setReaction(input)\n})\n\nexport const imessageClearReactionTool = defineTool({\n\tid: 'imessage-clear-reaction',\n\tname: 'imessageClearReaction',\n\tdescription:\n\t\t'Clear an iMessage reaction. message_id is the target message that was reacted to; emoji must match set-reaction (tapback name or emoji character).',\n\tinputSchema: imessageClearReactionInputSchema,\n\toutputSchema: imessageOkOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => {\n\t\tawait ImessageClient.fromContext(ctx).clearReaction(input)\n\t\treturn { ok: true, space_id: input.chat_id }\n\t}\n})\n\nexport const imessageUnsendTool = defineTool({\n\tid: 'imessage-unsend',\n\tname: 'imessageUnsend',\n\tdescription: 'Unsend a previously sent iMessage using its chat guid and message guid.',\n\tinputSchema: imessageUnsendInputSchema,\n\toutputSchema: imessageOkOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => {\n\t\tawait ImessageClient.fromContext(ctx).unsend(input)\n\t\treturn { ok: true, space_id: input.chat_id }\n\t}\n})\n\nexport const imessageReadTool = defineTool({\n\tid: 'imessage-read',\n\tname: 'imessageRead',\n\tdescription: 'Mark an iMessage conversation as read (whole chat).',\n\tinputSchema: imessageReadInputSchema,\n\toutputSchema: imessageOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => {\n\t\tawait ImessageClient.fromContext(ctx).read(input)\n\t\treturn { ok: true, space_id: input.chat_id }\n\t}\n})\n\nexport const imessageSendMediaTool = defineTool({\n\tid: 'imessage-send-media',\n\tname: 'imessageSendMedia',\n\tdescription:\n\t\t'Upload and send one photo or document to an iMessage chat from base64 bytes. Optional caption is sent as a follow-up text message.',\n\tinputSchema: imessageSendMediaInputSchema,\n\toutputSchema: imessageMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => ImessageClient.fromContext(ctx).sendMedia(input)\n})\n\nexport const imessageDownloadFileTool = defineTool({\n\tid: 'imessage-download-file',\n\tname: 'imessageDownloadFile',\n\tdescription: 'Download attachment bytes by attachment guid (file_id from inbound or upload).',\n\tinputSchema: imessageDownloadFileInputSchema,\n\toutputSchema: imessageDownloadFileOutputSchema,\n\tsideEffect: 'none',\n\truntime: 'node',\n\tnetwork: true,\n\texecute: async (input, ctx) => ImessageClient.fromContext(ctx).downloadFile(input)\n})\n\nexport const imessageModule = defineModule({\n\tid: 'imessage',\n\ttitle: 'iMessage',\n\tdescription:\n\t\t'iMessage tools for sending and editing text or media, typing indicators, reactions, unsend, read state, and attachment download via Photon Spectrum Cloud + Advanced iMessage gRPC (Node only).',\n\truntime: 'node',\n\tauth: { type: 'custom', schema: imessageAuthSchema },\n\tcategories: ['messaging', 'chat'],\n\tclassification: 'pii',\n\ttags: ['imessage', 'photon'],\n\ttools: [\n\t\timessageSendTextTool,\n\t\timessageEditTextTool,\n\t\timessageSendChatActionTool,\n\t\timessageSetReactionTool,\n\t\timessageClearReactionTool,\n\t\timessageUnsendTool,\n\t\timessageReadTool,\n\t\timessageSendMediaTool,\n\t\timessageDownloadFileTool\n\t]\n})\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/cloudflare-browser/contracts.d.ts
6
6
  declare const MAX_HTML_CHARS = 2000000;
@@ -282,4 +282,4 @@ declare function titleFromHtml(html: string): string | undefined;
282
282
  declare function plainTextFromHtml(html: string): string;
283
283
  //#endregion
284
284
  export { cloudflareBrowserRenderOutputSchema as A, CloudflareBrowserSessionOutput as C, cloudflareBrowserAuthSchema as D, MAX_HTML_CHARS as E, cloudflareBrowserSessionIdInputSchema as F, cloudflareBrowserSessionOutputSchema as I, cloudflareBrowserStartSessionInputSchema as L, cloudflareBrowserRenderScreenshotInputSchema as M, cloudflareBrowserRenderSourceSchema as N, cloudflareBrowserClientAuthSchema as O, cloudflareBrowserSessionAuthSchema as P, cloudflareBrowserViewportSchema as R, CloudflareBrowserSessionIdInput as S, CloudflareBrowserViewport as T, CloudflareBrowserRenderOutput as _, cloudflareBrowserRenderPdfTool as a, CloudflareBrowserRenderSource as b, cloudflareBrowserStopSessionTool as c, mintCloudflareBrowserCdpConnection as d, CloudflareBrowserClient as f, CloudflareBrowserEngine as g, CloudflareBrowserClientAuth as h, cloudflareBrowserModule as i, cloudflareBrowserRenderPdfInputSchema as j, cloudflareBrowserEngineSchema as k, CloudflareBrowserCdpConnection as l, CloudflareBrowserAuth as m, titleFromHtml as n, cloudflareBrowserRenderScreenshotTool as o, CloudflareBrowserClientOptions as p, cloudflareBrowserGetSessionTool as r, cloudflareBrowserStartSessionTool as s, plainTextFromHtml as t, MintCloudflareBrowserCdpOptions as u, CloudflareBrowserRenderPdfInput as v, CloudflareBrowserStartSessionInput as w, CloudflareBrowserSessionAuth as x, CloudflareBrowserRenderScreenshotInput as y };
285
- //# sourceMappingURL=index-Cuh6eMWc.d.ts.map
285
+ //# sourceMappingURL=index-9oSRRNdR.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-Cuh6eMWc.d.ts","names":[],"sources":["../src/vendors/cloudflare-browser/contracts.ts","../src/vendors/cloudflare-browser/client.ts","../src/vendors/cloudflare-browser/cdp.ts","../src/vendors/cloudflare-browser/module.ts","../src/vendors/cloudflare-browser/domain.ts"],"mappings":";;;;;cAKa;;;;;cAMA,+BAA6B,EAAA;;;;KAM9B,0BAA0B,EAAE,aAAa;cAExC,oCAAkC,EAAA;;;;;;;GAQ7C,EAAA,KAAA;cAEW,mCAAiC,EAAA;;;;;;;;;;;;;;;;GAE5C,EAAA,KAAA;cAEW,6BAA2B,EAAA;;;;;;;;;;;;;;;;GAEtC,EAAA,KAAA;KAEU,wBAAwB,EAAE,aAAa;KACvC,8BAA8B,EAAE,aAAa;KAC7C,+BAA+B,EAAE,aAAa;cAE7C,0CAAwC,EAAA;;;;;;GAQnD,EAAA,KAAA;cAEW,uCAAqC,EAAA;;GAEhD,EAAA,KAAA;cAEW,sCAAoC,EAAA;;;;;GAK/C,EAAA,KAAA;KAEU,qCAAqC,EAAE,aAAa;KACpD,kCAAkC,EAAE,aAAa;KACjD,iCAAiC,EAAE,aAAa;cAE/C,iCAA+B,EAAA;;;;GAI1C,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;GAU7C,EAAA,KAAA;cAEU,uCAAqC,EAAA;;;;;;;;;;;GAKhD,EAAA,KAAA;cAEW,8CAA4C,EAAA;;;;;;;;;;;;;;;;GAMvD,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;;;;;;;;;;;;;GAG9C,EAAA,KAAA;KAEU,4BAA4B,EAAE,aAAa;KAC3C,gCAAgC,EAAE,aAAa;KAC/C,kCAAkC,EAAE,aAAa;KACjD,yCAAyC,EAAE,aAAa;KACxD,gCAAgC,EAAE,aAAa;;;KCvE/C,iCAAiC,KAAK;cAErC;;EAKZ,YAAY,MAAM,6BAA6B,UAAS;SAqBjD,YAAY,KAAK,cAAc;EAQhC,aAAa,QAAO,qCAA0C,QAAQ;EAUtE,WAAW,OAAO,kCAAkC,QAAQ;EAK5D,YAAY,OAAO,kCAAkC,QAAQ;;EAQ7D,UAAU,OAAO,kCAAkC,QAAQ;;EAK3D,iBAAiB,OAAO,yCAAyC,QAAQ;;;;;EAQzE,aAAa;IAClB;IACA;IACA,UAAU;MACP;IAAU;IAAc;;;;;KCxGjB;EACX;EACA;;;;;;EAMA,SAAS;EACT;EACA;;KAGW;;EAEX;;EAEA,UAAU;;;;;EAKV,UAAU;;;;;iBAmBK,mCACf,SAAS,gCACT,UAAS,kCACP;;;cCzCU,gCAAA;;;;;;;;;;;;;;;;;;cAYA,uCAAA;;;;;;;;;;;;;;;;;;;;;;;cAYA,mCAAA;;;;;;;;;cAaA,iCAAA;;;;;;;;cAaA,kCAAA;;;;;;;;cAYA,yBAAA;;;;;;;;;;;;;;;;;iBCoBG,cAAc;;iBAMd,kBAAkB"}
1
+ {"version":3,"file":"index-9oSRRNdR.d.ts","names":[],"sources":["../src/vendors/cloudflare-browser/contracts.ts","../src/vendors/cloudflare-browser/client.ts","../src/vendors/cloudflare-browser/cdp.ts","../src/vendors/cloudflare-browser/module.ts","../src/vendors/cloudflare-browser/domain.ts"],"mappings":";;;;;cAKa;;;;;cAMA,+BAA6B,EAAA;;;;KAM9B,0BAA0B,EAAE,aAAa;cAExC,oCAAkC,EAAA;;;;;;;GAQ7C,EAAA,KAAA;cAEW,mCAAiC,EAAA;;;;;;;;;;;;;;;;GAE5C,EAAA,KAAA;cAEW,6BAA2B,EAAA;;;;;;;;;;;;;;;;GAEtC,EAAA,KAAA;KAEU,wBAAwB,EAAE,aAAa;KACvC,8BAA8B,EAAE,aAAa;KAC7C,+BAA+B,EAAE,aAAa;cAE7C,0CAAwC,EAAA;;;;;;GAQnD,EAAA,KAAA;cAEW,uCAAqC,EAAA;;GAEhD,EAAA,KAAA;cAEW,sCAAoC,EAAA;;;;;GAK/C,EAAA,KAAA;KAEU,qCAAqC,EAAE,aAAa;KACpD,kCAAkC,EAAE,aAAa;KACjD,iCAAiC,EAAE,aAAa;cAE/C,iCAA+B,EAAA;;;;GAI1C,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;GAU7C,EAAA,KAAA;cAEU,uCAAqC,EAAA;;;;;;;;;;;GAKhD,EAAA,KAAA;cAEW,8CAA4C,EAAA;;;;;;;;;;;;;;;;GAMvD,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;;;;;;;;;;;;;GAG9C,EAAA,KAAA;KAEU,4BAA4B,EAAE,aAAa;KAC3C,gCAAgC,EAAE,aAAa;KAC/C,kCAAkC,EAAE,aAAa;KACjD,yCAAyC,EAAE,aAAa;KACxD,gCAAgC,EAAE,aAAa;;;KCvE/C,iCAAiC,KAAK;cAErC;;EAKZ,YAAY,MAAM,6BAA6B,UAAS;SAqBjD,YAAY,KAAK,cAAc;EAQhC,aAAa,QAAO,qCAA0C,QAAQ;EAUtE,WAAW,OAAO,kCAAkC,QAAQ;EAK5D,YAAY,OAAO,kCAAkC,QAAQ;;EAQ7D,UAAU,OAAO,kCAAkC,QAAQ;;EAK3D,iBAAiB,OAAO,yCAAyC,QAAQ;;;;;EAQzE,aAAa;IAClB;IACA;IACA,UAAU;MACP;IAAU;IAAc;;;;;KCxGjB;EACX;EACA;;;;;;EAMA,SAAS;EACT;EACA;;KAGW;;EAEX;;EAEA,UAAU;;;;;EAKV,UAAU;;;;;iBAmBK,mCACf,SAAS,gCACT,UAAS,kCACP;;;cCzCU,gCAAA;;;;;;;;;;;;;;;;;;cAYA,uCAAA;;;;;;;;;;;;;;;;;;;;;;;cAYA,mCAAA;;;;;;;;;cAaA,iCAAA;;;;;;;;cAaA,kCAAA;;;;;;;;cAYA,yBAAA;;;;;;;;;;;;;;;;;iBCoBG,cAAc;;iBAMd,kBAAkB"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/_storage/schemas.d.ts
6
6
  declare const MAX_OBJECT_BYTES: number;
@@ -344,4 +344,4 @@ declare const s3Module: ModuleDefinition<{
344
344
  }>;
345
345
  //#endregion
346
346
  export { deleteObjectInputSchema as $, GetObjectInput as A, PutObjectOutput as B, CopyObjectInput as C, DEFAULT_SIGNED_URL_SECONDS as D, CreateMultipartUploadOutput as E, ListObjectsOutput as F, abortMultipartUploadInputSchema as G, SignedUrlOutput as H, MAX_MULTIPART_PART_BYTES as I, completeMultipartUploadOutputSchema as J, abortMultipartUploadOutputSchema as K, MAX_OBJECT_BYTES as L, HeadObjectInput as M, HeadObjectOutput as N, DeleteObjectInput as O, ListObjectsInput as P, createMultipartUploadOutputSchema as Q, MAX_SIGNED_URL_SECONDS as R, CompleteMultipartUploadOutput as S, CreateMultipartUploadInput as T, UploadPartInput as U, SignedUrlInput as V, UploadPartOutput as W, copyObjectOutputSchema as X, copyObjectInputSchema as Y, createMultipartUploadInputSchema as Z, S3Auth as _, s3CreateSignedUrlTool as a, listObjectsInputSchema as at, AbortMultipartUploadOutput as b, s3HeadObjectTool as c, putObjectOutputSchema as ct, s3PutObjectTool as d, uploadPartInputSchema as dt, deleteObjectOutputSchema as et, s3UploadPartTool as f, uploadPartOutputSchema as ft, S3ClientOptions as g, S3Client as h, s3CreateMultipartUploadTool as i, headObjectOutputSchema as it, GetObjectOutput as j, DeleteObjectOutput as k, s3ListObjectsTool as l, signedUrlInputSchema as lt, S3ByteRangeResult as m, s3CompleteMultipartUploadTool as n, getObjectOutputSchema as nt, s3DeleteObjectTool as o, listObjectsOutputSchema as ot, S3ByteRange as p, completeMultipartUploadInputSchema as q, s3CopyObjectTool as r, headObjectInputSchema as rt, s3GetObjectTool as s, putObjectInputSchema as st, s3AbortMultipartUploadTool as t, getObjectInputSchema as tt, s3Module as u, signedUrlOutputSchema as ut, s3AuthSchema as v, CopyObjectOutput as w, CompleteMultipartUploadInput as x, AbortMultipartUploadInput as y, PutObjectInput as z };
347
- //# sourceMappingURL=index-zK1ZwS4m.d.ts.map
347
+ //# sourceMappingURL=index-ByHp3nZm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-zK1ZwS4m.d.ts","names":[],"sources":["../src/vendors/_storage/schemas.ts","../src/vendors/s3/contracts.ts","../src/vendors/s3/client.ts","../src/vendors/s3/module.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index-ByHp3nZm.d.ts","names":[],"sources":["../src/vendors/_storage/schemas.ts","../src/vendors/s3/contracts.ts","../src/vendors/s3/client.ts","../src/vendors/s3/module.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import "./index-CLmTrcu5.js";
5
5
  import { z } from "zod";
6
6
  //#region src/vendors/resend/contracts.d.ts
@@ -251,4 +251,4 @@ declare const resendModule: ModuleDefinition<{
251
251
  }>;
252
252
  //#endregion
253
253
  export { ResendClientOptions as a, ResendSendBatchOutput as c, resendAuthSchema as d, resendSendBatchInputSchema as f, resendSendOutputSchema as h, ResendClient as i, ResendSendInput as l, resendSendInputSchema as m, resendSendBatchTool as n, ResendAuth as o, resendSendBatchOutputSchema as p, resendSendTool as r, ResendSendBatchInput as s, resendModule as t, ResendSendOutput as u };
254
- //# sourceMappingURL=index-BU4gmYO8.d.ts.map
254
+ //# sourceMappingURL=index-C-Cuh9it.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BU4gmYO8.d.ts","names":[],"sources":["../src/vendors/resend/contracts.ts","../src/vendors/resend/client.ts","../src/vendors/resend/module.ts"],"mappings":";;;;;;cASa,kBAAgB,EAAA;;GAE3B,EAAA,KAAA;KAEU,aAAa,EAAE,aAAa;cAE3B,uBAAqB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2B/B,EAAA,KAAA;cAEU,wBAAsB,EAAA;;;GAGjC,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErC,EAAA,KAAA;cAEW,6BAA2B,EAAA;;;;;;;;;;;;;;;;GAA4C,EAAA,KAAA;KAExE,kBAAkB,EAAE,aAAa;KACjC,mBAAmB,EAAE,aAAa;KAClC,uBAAuB,EAAE,aAAa;KACtC,wBAAwB,EAAE,aAAa;;;KCrCvC,sBAAsB,KAAK;cAE1B;;EAGZ,YAAY,MAAM,YAAY,UAAS;SAmBhC,YAAY,KAAK,cAAc;;EAShC,KAAK,OAAO,kBAAkB,QAAQ;;EAOtC,UAAU,OAAO,uBAAuB,QAAQ;;;;;cClD1C,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAAA;;;;;;;;;;;;;cAaA,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAWA,cAAA;EAAY"}
1
+ {"version":3,"file":"index-C-Cuh9it.d.ts","names":[],"sources":["../src/vendors/resend/contracts.ts","../src/vendors/resend/client.ts","../src/vendors/resend/module.ts"],"mappings":";;;;;;cASa,kBAAgB,EAAA;;GAE3B,EAAA,KAAA;KAEU,aAAa,EAAE,aAAa;cAE3B,uBAAqB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2B/B,EAAA,KAAA;cAEU,wBAAsB,EAAA;;;GAGjC,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErC,EAAA,KAAA;cAEW,6BAA2B,EAAA;;;;;;;;;;;;;;;;GAA4C,EAAA,KAAA;KAExE,kBAAkB,EAAE,aAAa;KACjC,mBAAmB,EAAE,aAAa;KAClC,uBAAuB,EAAE,aAAa;KACtC,wBAAwB,EAAE,aAAa;;;KCrCvC,sBAAsB,KAAK;cAE1B;;EAGZ,YAAY,MAAM,YAAY,UAAS;SAmBhC,YAAY,KAAK,cAAc;;EAShC,KAAK,OAAO,kBAAkB,QAAQ;;EAOtC,UAAU,OAAO,uBAAuB,QAAQ;;;;;cClD1C,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAAA;;;;;;;;;;;;;cAaA,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAWA,cAAA;EAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-CZX5OeOF.d.ts","names":[],"sources":["../src/core/filter-tools.ts","../src/core/hooks.ts","../src/core/bind.ts","../src/core/context.ts","../src/core/contracts.ts","../src/core/catalog.ts","../src/core/define.ts","../src/generated/pack-logos.ts","../src/core/provider.ts","../src/core/resolve-tools.ts","../src/core/unique.ts","../src/core/with-auth.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index-CZX5OeOF.d.ts","names":[],"sources":["../src/core/filter-tools.ts","../src/core/hooks.ts","../src/core/bind.ts","../src/core/context.ts","../src/core/contracts.ts","../src/core/catalog.ts","../src/core/define.ts","../src/generated/pack-logos.ts","../src/core/provider.ts","../src/core/resolve-tools.ts","../src/core/unique.ts","../src/core/with-auth.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/textract/contracts.d.ts
6
6
  declare const MAX_BATCH_EXTRACT = 10;
@@ -356,4 +356,4 @@ declare const textractModule: ModuleDefinition<{
356
356
  }>;
357
357
  //#endregion
358
358
  export { textractOutputModeSchema as A, TextractTextChunk as C, textractExtractTextBatchInputSchema as D, textractExtractResultSchema as E, textractTextChunkSchema as M, textractExtractTextBatchOutputSchema as O, TextractStatusInput as S, textractChunkOptionsSchema as T, TextractExtractResult as _, TextractClient as a, TextractExtractTextInput as b, DEFAULT_EXTRACT_CHUNK_OVERLAP as c, MAX_BATCH_EXTRACT as d, MAX_EXTRACT_CHUNK_MAX_CHARS as f, TextractAuth as g, MAX_POLL_TIMEOUT_MS as h, textractModule as i, textractStatusInputSchema as j, textractExtractTextInputSchema as k, DEFAULT_POLL_INTERVAL_MS as l, MAX_POLL_INTERVAL_MS as m, textractExtractTextTool as n, TextractClientOptions as o, MAX_INLINE_EXTRACT_CHARS as p, textractGetStatusTool as r, DEFAULT_EXTRACT_CHUNK_MAX_CHARS as s, textractExtractTextBatchTool as t, DEFAULT_POLL_TIMEOUT_MS as u, TextractExtractTextBatchInput as v, textractAuthSchema as w, TextractOutputMode as x, TextractExtractTextBatchOutput as y };
359
- //# sourceMappingURL=index-CdFmEfZO.d.ts.map
359
+ //# sourceMappingURL=index-CtfpOZWu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CdFmEfZO.d.ts","names":[],"sources":["../src/vendors/textract/contracts.ts","../src/vendors/textract/client.ts","../src/vendors/textract/module.ts"],"mappings":";;;;;cAKa;cACA;cACA;cACA;cACA;;cAGA;cACA;cACA;cACA;cAEA,oBAAkB,EAAA;;;;;;;;;GAyB7B,EAAA,KAAA;KAEU,eAAe,EAAE,aAAa;cAE7B,0BAAwB,EAAA;;;;;KAMzB,qBAAqB,EAAE,aAAa;cAEnC,4BAA0B,EAAA;;;GAarC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;GAIlC,EAAA,KAAA;KAEU,oBAAoB,EAAE,aAAa;cAYlC,6BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAetC,EAAA,KAAA;cAEW,gCAA8B,EAAA;;;;;;;;;;;;;;;;;;;;;GAGzC,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;;;;;;;;;;;;;;;;;;;;GAY9C,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;GAGpC,EAAA,KAAA;cAEW,sCAAoC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiD,EAAA,KAAA;KAEtF,wBAAwB,EAAE,aAAa;KACvC,2BAA2B,EAAE,aAAa;KAC1C,gCAAgC,EAAE,aAAa;KAC/C,sBAAsB,EAAE,aAAa;KACrC,iCAAiC,EAAE,aAAa;;;KClGhD,wBAAwB,KAAK;cAE5B;;EAQZ,YAAY,MAAM,cAAc,UAAS;SAkClC,YAAY,KAAK,cAAc;;EAShC,YAAY,OAAO,2BAA2B,QAAQ;;EAUtD,UAAU,OAAO,sBAAsB,QAAQ;EAS/C,iBAAiB,OAAO,gCAAgC,QAAQ;;;;cCjG1D,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,gBAAA"}
1
+ {"version":3,"file":"index-CtfpOZWu.d.ts","names":[],"sources":["../src/vendors/textract/contracts.ts","../src/vendors/textract/client.ts","../src/vendors/textract/module.ts"],"mappings":";;;;;cAKa;cACA;cACA;cACA;cACA;;cAGA;cACA;cACA;cACA;cAEA,oBAAkB,EAAA;;;;;;;;;GAyB7B,EAAA,KAAA;KAEU,eAAe,EAAE,aAAa;cAE7B,0BAAwB,EAAA;;;;;KAMzB,qBAAqB,EAAE,aAAa;cAEnC,4BAA0B,EAAA;;;GAarC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;GAIlC,EAAA,KAAA;KAEU,oBAAoB,EAAE,aAAa;cAYlC,6BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAetC,EAAA,KAAA;cAEW,gCAA8B,EAAA;;;;;;;;;;;;;;;;;;;;;GAGzC,EAAA,KAAA;cAEW,qCAAmC,EAAA;;;;;;;;;;;;;;;;;;;;;;GAY9C,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;GAGpC,EAAA,KAAA;cAEW,sCAAoC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiD,EAAA,KAAA;KAEtF,wBAAwB,EAAE,aAAa;KACvC,2BAA2B,EAAE,aAAa;KAC1C,gCAAgC,EAAE,aAAa;KAC/C,sBAAsB,EAAE,aAAa;KACrC,iCAAiC,EAAE,aAAa;;;KClGhD,wBAAwB,KAAK;cAE5B;;EAQZ,YAAY,MAAM,cAAc,UAAS;SAkClC,YAAY,KAAK,cAAc;;EAShC,YAAY,OAAO,2BAA2B,QAAQ;;EAUtD,UAAU,OAAO,sBAAsB,QAAQ;EAS/C,iBAAiB,OAAO,gCAAgC,QAAQ;;;;cCjG1D,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,gBAAA"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/eventbridge-scheduler/contracts.d.ts
6
6
  declare const MAX_SCHEDULE_NAME = 64;
@@ -244,4 +244,4 @@ declare const eventBridgeSchedulerModule: ModuleDefinition<{
244
244
  }>;
245
245
  //#endregion
246
246
  export { scheduleListInputSchema as A, ScheduleUpdateInput as C, scheduleDeleteOutputSchema as D, scheduleCreateInputSchema as E, scheduleUpdateInputSchema as F, scheduleWriteOutputSchema as I, scheduleNameInputSchema as M, scheduleStateSchema as N, scheduleDetailSchema as O, scheduleSummarySchema as P, ScheduleSummary as S, eventBridgeSchedulerAuthSchema as T, ScheduleGetOutput as _, eventBridgeSchedulerModule as a, ScheduleNameInput as b, EventBridgeSchedulerClientOptions as c, MAX_PAYLOAD_JSON as d, MAX_SCHEDULE_NAME as f, ScheduleDetail as g, ScheduleDeleteOutput as h, eventBridgeSchedulerListTool as i, scheduleListOutputSchema as j, scheduleGetOutputSchema as k, EventBridgeSchedulerAuth as l, ScheduleCreateInput as m, eventBridgeSchedulerDeleteTool as n, eventBridgeSchedulerUpdateTool as o, MAX_TASK_REF as p, eventBridgeSchedulerGetTool as r, EventBridgeSchedulerClient as s, eventBridgeSchedulerCreateTool as t, MAX_LIST as u, ScheduleListInput as v, ScheduleWriteOutput as w, ScheduleState as x, ScheduleListOutput as y };
247
- //# sourceMappingURL=index-n8JTpNf1.d.ts.map
247
+ //# sourceMappingURL=index-DngnGGiS.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-n8JTpNf1.d.ts","names":[],"sources":["../src/vendors/eventbridge-scheduler/contracts.ts","../src/vendors/eventbridge-scheduler/client.ts","../src/vendors/eventbridge-scheduler/module.ts"],"mappings":";;;;;cAOa;cACA;cACA;cACA;cAQA,gCAA8B,EAAA;;;;;;;;;;;;GAiBzC,EAAA,KAAA;KAEU,2BAA2B,EAAE,aAAa;cAEzC,qBAAmB,EAAA;;;;KAEpB,gBAAgB,EAAE,aAAa;cAE9B,2BAAyB,EAAA;;;;;;;;;;;;;;;;;GAqBpC,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;;;;;;GAA4B,EAAA,KAAA;cAErD,yBAAuB,EAAA;;GAElC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;;;;;GAKlC,EAAA,KAAA;cAEW,uBAAqB,EAAA;;;;;;;;;GAMhC,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;;;;;;;;;;;GAM/B,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;GAGpC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;;;;;;;;;;;;;GAElC,EAAA,KAAA;cAEW,0BAAwB,EAAA;;;;;;;;;;;;GAGnC,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;GAGrC,EAAA,KAAA;KAEU,sBAAsB,EAAE,aAAa;KACrC,sBAAsB,EAAE,aAAa;KACrC,oBAAoB,EAAE,aAAa;KACnC,oBAAoB,EAAE,aAAa;KACnC,kBAAkB,EAAE,aAAa;KACjC,iBAAiB,EAAE,aAAa;KAChC,sBAAsB,EAAE,aAAa;KACrC,oBAAoB,EAAE,aAAa;KACnC,qBAAqB,EAAE,aAAa;KACpC,uBAAuB,EAAE,aAAa;;;KC/FtC,oCAAoC,KAAK;cAExC;;EAIZ,YAAY,MAAM,0BAA0B,UAAS;SAuB9C,YAAY,KAAK,cAAc;EAQhC,OAAO,OAAO,sBAAsB,QAAQ;EAM5C,OAAO,OAAO,sBAAsB,QAAQ;EAM5C,IAAI,OAAO,oBAAoB,QAAQ;EASvC,KAAK,QAAO,oBAAyB,QAAQ;EAmB7C,OAAO,OAAO,oBAAoB,QAAQ;;;;cC3FpC,gCAAA;;;;YAAA;;;;;;;;;;;cAYA,gCAAA;;;;YAAA;;;;;;;;;;;cAYA,6BAAA;;;;;;;;;;;;;;;;cAWA,8BAAA;;;;;;;;;;;;;;;cAWA,gCAAA;;;;;;cAWA,4BAAA"}
1
+ {"version":3,"file":"index-DngnGGiS.d.ts","names":[],"sources":["../src/vendors/eventbridge-scheduler/contracts.ts","../src/vendors/eventbridge-scheduler/client.ts","../src/vendors/eventbridge-scheduler/module.ts"],"mappings":";;;;;cAOa;cACA;cACA;cACA;cAQA,gCAA8B,EAAA;;;;;;;;;;;;GAiBzC,EAAA,KAAA;KAEU,2BAA2B,EAAE,aAAa;cAEzC,qBAAmB,EAAA;;;;KAEpB,gBAAgB,EAAE,aAAa;cAE9B,2BAAyB,EAAA;;;;;;;;;;;;;;;;;GAqBpC,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;;;;;;GAA4B,EAAA,KAAA;cAErD,yBAAuB,EAAA;;GAElC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;;;;;GAKlC,EAAA,KAAA;cAEW,uBAAqB,EAAA;;;;;;;;;GAMhC,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;;;;;;;;;;;GAM/B,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;GAGpC,EAAA,KAAA;cAEW,yBAAuB,EAAA;;;;;;;;;;;;;;;;GAElC,EAAA,KAAA;cAEW,0BAAwB,EAAA;;;;;;;;;;;;GAGnC,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;GAGrC,EAAA,KAAA;KAEU,sBAAsB,EAAE,aAAa;KACrC,sBAAsB,EAAE,aAAa;KACrC,oBAAoB,EAAE,aAAa;KACnC,oBAAoB,EAAE,aAAa;KACnC,kBAAkB,EAAE,aAAa;KACjC,iBAAiB,EAAE,aAAa;KAChC,sBAAsB,EAAE,aAAa;KACrC,oBAAoB,EAAE,aAAa;KACnC,qBAAqB,EAAE,aAAa;KACpC,uBAAuB,EAAE,aAAa;;;KC/FtC,oCAAoC,KAAK;cAExC;;EAIZ,YAAY,MAAM,0BAA0B,UAAS;SAuB9C,YAAY,KAAK,cAAc;EAQhC,OAAO,OAAO,sBAAsB,QAAQ;EAM5C,OAAO,OAAO,sBAAsB,QAAQ;EAM5C,IAAI,OAAO,oBAAoB,QAAQ;EASvC,KAAK,QAAO,oBAAyB,QAAQ;EAmB7C,OAAO,OAAO,oBAAoB,QAAQ;;;;cC3FpC,gCAAA;;;;YAAA;;;;;;;;;;;cAYA,gCAAA;;;;YAAA;;;;;;;;;;;cAYA,6BAAA;;;;;;;;;;;;;;;;cAWA,8BAAA;;;;;;;;;;;;;;;cAWA,gCAAA;;;;;;cAWA,4BAAA"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/bedrock-agentcore-browser/contracts.d.ts
6
6
  declare const DEFAULT_BROWSER_ID = "aws.browser.v1";
@@ -104,4 +104,4 @@ declare const bedrockAgentCoreBrowserModule: ModuleDefinition<{
104
104
  }>;
105
105
  //#endregion
106
106
  export { BedrockAgentCoreBrowserClient as a, BrowserSessionIdInput as c, DEFAULT_BROWSER_ID as d, bedrockAgentCoreBrowserAuthSchema as f, browserStreamSchema as g, browserStartSessionInputSchema as h, bedrockAgentCoreBrowserStopSessionTool as i, BrowserSessionOutput as l, browserSessionOutputSchema as m, bedrockAgentCoreBrowserModule as n, BedrockAgentCoreBrowserClientOptions as o, browserSessionIdInputSchema as p, bedrockAgentCoreBrowserStartSessionTool as r, BedrockAgentCoreBrowserAuth as s, bedrockAgentCoreBrowserGetSessionTool as t, BrowserStartSessionInput as u };
107
- //# sourceMappingURL=index-DuOGj7vc.d.ts.map
107
+ //# sourceMappingURL=index-DsTt2EbS.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DuOGj7vc.d.ts","names":[],"sources":["../src/vendors/bedrock-agentcore-browser/contracts.ts","../src/vendors/bedrock-agentcore-browser/client.ts","../src/vendors/bedrock-agentcore-browser/module.ts"],"mappings":";;;;;cAOa;cAEA,mCAAiC,EAAA;;;;;;GAM5C,EAAA,KAAA;KAEU,8BAA8B,EAAE,aAAa;cAI5C,gCAA8B,EAAA;;;;;GAKzC,EAAA,KAAA;cAEW,6BAA2B,EAAA;;GAEtC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;GAI9B,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;GAMrC,EAAA,KAAA;KAEU,2BAA2B,EAAE,aAAa;KAC1C,wBAAwB,EAAE,aAAa;KACvC,uBAAuB,EAAE,aAAa;;;KC5BtC,uCAAuC,KAAK;cAE3C;;EAKZ,YAAY,MAAM,6BAA6B,UAAS;SAwBjD,YAAY,KAAK,cAAc;EAYhC,aAAa,QAAO,2BAAgC,QAAQ;EAc5D,YAAY,OAAO,wBAAwB,QAAQ;EAQnD,WAAW,OAAO,wBAAwB,QAAQ;;;;cC1E5C,yCAAA;;;;;;;;;;;;;;;;cAYA,wCAAA;;;;;;;;;;;;;cAWA,uCAAA;;;;;;;;;;;;;cAWA,+BAAA"}
1
+ {"version":3,"file":"index-DsTt2EbS.d.ts","names":[],"sources":["../src/vendors/bedrock-agentcore-browser/contracts.ts","../src/vendors/bedrock-agentcore-browser/client.ts","../src/vendors/bedrock-agentcore-browser/module.ts"],"mappings":";;;;;cAOa;cAEA,mCAAiC,EAAA;;;;;;GAM5C,EAAA,KAAA;KAEU,8BAA8B,EAAE,aAAa;cAI5C,gCAA8B,EAAA;;;;;GAKzC,EAAA,KAAA;cAEW,6BAA2B,EAAA;;GAEtC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;GAI9B,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;GAMrC,EAAA,KAAA;KAEU,2BAA2B,EAAE,aAAa;KAC1C,wBAAwB,EAAE,aAAa;KACvC,uBAAuB,EAAE,aAAa;;;KC5BtC,uCAAuC,KAAK;cAE3C;;EAKZ,YAAY,MAAM,6BAA6B,UAAS;SAwBjD,YAAY,KAAK,cAAc;EAYhC,aAAa,QAAO,2BAAgC,QAAQ;EAc5D,YAAY,OAAO,wBAAwB,QAAQ;EAQnD,WAAW,OAAO,wBAAwB,QAAQ;;;;cC1E5C,yCAAA;;;;;;;;;;;;;;;;cAYA,wCAAA;;;;;;;;;;;;;cAWA,uCAAA;;;;;;;;;;;;;cAWA,+BAAA"}
@@ -1,6 +1,6 @@
1
1
  import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "./types-Ccb0DXY9.js";
2
2
  import "./index-CZX5OeOF.js";
3
- import { s as HttpServiceOptions } from "./http-service-T7E5UjP8.js";
3
+ import { s as HttpServiceOptions } from "./http-service-CerzWwQO.js";
4
4
  import { z } from "zod";
5
5
  //#region src/vendors/sqs/contracts.d.ts
6
6
  declare const MAX_SQS_MESSAGE_CHARS = 1048576;
@@ -131,4 +131,4 @@ declare const sqsModule: ModuleDefinition<{
131
131
  }>;
132
132
  //#endregion
133
133
  export { queueExtendVisibilityInputSchema as C, queueReceiveInputSchema as D, queueReceiptInputSchema as E, queueReceiveOutputSchema as O, queueEnqueueOutputSchema as S, queueMessageSchema as T, QueueReceiveInput as _, sqsSendTool as a, queueAcknowledgeOutputSchema as b, MAX_SQS_MESSAGE_CHARS as c, QueueEnqueueOutput as d, QueueExtendVisibilityInput as f, QueueReceiptInput as g, QueueOps as h, sqsReceiveTool as i, sqsAuthSchema as k, QueueAcknowledgeOutput as l, QueueMessage as m, sqsDeleteTool as n, SqsClient as o, QueueExtendVisibilityOutput as p, sqsModule as r, SqsClientOptions as s, sqsChangeVisibilityTool as t, QueueEnqueueInput as u, QueueReceiveOutput as v, queueExtendVisibilityOutputSchema as w, queueEnqueueInputSchema as x, SqsAuth as y };
134
- //# sourceMappingURL=index-pwW1OsOx.d.ts.map
134
+ //# sourceMappingURL=index-Y8p8bsWU.d.ts.map