@5ss/ai-tools 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{aws-service-msttbPrz.js → aws-service-Cn_ozX4X.js} +2 -2
  3. package/dist/{aws-service-msttbPrz.js.map → aws-service-Cn_ozX4X.js.map} +1 -1
  4. package/dist/{bedrock-agentcore-browser-o_oqSPMK.js → bedrock-agentcore-browser-DwDSP_YL.js} +2 -2
  5. package/dist/{bedrock-agentcore-browser-o_oqSPMK.js.map → bedrock-agentcore-browser-DwDSP_YL.js.map} +1 -1
  6. package/dist/{bedrock-agentcore-code-interpreter-D4ERRFj1.js → bedrock-agentcore-code-interpreter-F0dnrAm4.js} +2 -2
  7. package/dist/{bedrock-agentcore-code-interpreter-D4ERRFj1.js.map → bedrock-agentcore-code-interpreter-F0dnrAm4.js.map} +1 -1
  8. package/dist/{cloudflare-browser-nLJdH5nG.js → cloudflare-browser-D-HT43hu.js} +3 -3
  9. package/dist/{cloudflare-browser-nLJdH5nG.js.map → cloudflare-browser-D-HT43hu.js.map} +1 -1
  10. package/dist/{cloudflare-email-CSRq8mRd.js → cloudflare-email-BLI3z96V.js} +2 -2
  11. package/dist/{cloudflare-email-CSRq8mRd.js.map → cloudflare-email-BLI3z96V.js.map} +1 -1
  12. package/dist/{cloudflare-sandbox-Be7SeS4-.js → cloudflare-sandbox-6nX5lIev.js} +3 -3
  13. package/dist/{cloudflare-sandbox-Be7SeS4-.js.map → cloudflare-sandbox-6nX5lIev.js.map} +1 -1
  14. package/dist/{eventbridge-scheduler-BhQaReAz.js → eventbridge-scheduler-CDmO2-Te.js} +2 -2
  15. package/dist/{eventbridge-scheduler-BhQaReAz.js.map → eventbridge-scheduler-CDmO2-Te.js.map} +1 -1
  16. package/dist/http/index.d.ts.map +1 -1
  17. package/dist/http/index.js +2 -2
  18. package/dist/{http-service-DDNCO1s4.js → http-service-BMBIryAL.js} +2 -5
  19. package/dist/http-service-BMBIryAL.js.map +1 -0
  20. package/dist/{imessage-CH49-sFn.js → imessage-Dsms04rC.js} +2 -2
  21. package/dist/{imessage-CH49-sFn.js.map → imessage-Dsms04rC.js.map} +1 -1
  22. package/dist/modules/artifacts/index.js +1 -1
  23. package/dist/modules/browser/index.js +2 -2
  24. package/dist/modules/code-sandbox/index.js +2 -2
  25. package/dist/modules/document-extract/index.js +1 -1
  26. package/dist/modules/document-render/index.js +1 -1
  27. package/dist/modules/email/index.js +2 -2
  28. package/dist/modules/files/index.js +1 -1
  29. package/dist/modules/image/index.js +1 -1
  30. package/dist/modules/messaging/index.js +5 -5
  31. package/dist/modules/queue/index.js +1 -1
  32. package/dist/modules/rag/index.js +2 -2
  33. package/dist/modules/scheduler/index.js +1 -1
  34. package/dist/modules/vector-store/index.js +1 -1
  35. package/dist/modules/web-fetch/index.js +1 -1
  36. package/dist/{pinecone-CNnCFmix.js → pinecone-BvdXAZMi.js} +2 -2
  37. package/dist/{pinecone-CNnCFmix.js.map → pinecone-BvdXAZMi.js.map} +1 -1
  38. package/dist/{qdrant-R_FIcG9d.js → qdrant-D2E2Lxrw.js} +2 -2
  39. package/dist/{qdrant-R_FIcG9d.js.map → qdrant-D2E2Lxrw.js.map} +1 -1
  40. package/dist/{resend-Bu0NFO3h.js → resend-A2SnRdQ8.js} +2 -2
  41. package/dist/{resend-Bu0NFO3h.js.map → resend-A2SnRdQ8.js.map} +1 -1
  42. package/dist/{s3-Dj7Teh-A.js → s3-CoZQRTfe.js} +2 -2
  43. package/dist/{s3-Dj7Teh-A.js.map → s3-CoZQRTfe.js.map} +1 -1
  44. package/dist/{slack-AjJDNnXJ.js → slack-C9UJ0b61.js} +2 -2
  45. package/dist/{slack-AjJDNnXJ.js.map → slack-C9UJ0b61.js.map} +1 -1
  46. package/dist/{sqs-CjyXjasF.js → sqs-DxFnfODk.js} +2 -2
  47. package/dist/{sqs-CjyXjasF.js.map → sqs-DxFnfODk.js.map} +1 -1
  48. package/dist/{supabase-vector-BNoJZuft.js → supabase-vector-DT3qfnt2.js} +2 -2
  49. package/dist/{supabase-vector-BNoJZuft.js.map → supabase-vector-DT3qfnt2.js.map} +1 -1
  50. package/dist/{teams-CvxYLAi5.js → teams-NODh3i6U.js} +2 -2
  51. package/dist/{teams-CvxYLAi5.js.map → teams-NODh3i6U.js.map} +1 -1
  52. package/dist/{telegram-B_-Jljk3.js → telegram-CWMHBeKo.js} +2 -2
  53. package/dist/{telegram-B_-Jljk3.js.map → telegram-CWMHBeKo.js.map} +1 -1
  54. package/dist/{textract-CAfnGvua.js → textract-2jkPuRiE.js} +3 -3
  55. package/dist/{textract-CAfnGvua.js.map → textract-2jkPuRiE.js.map} +1 -1
  56. package/dist/{vector-store-DDiu3XPg.js → vector-store-CDQaQXFV.js} +4 -4
  57. package/dist/{vector-store-DDiu3XPg.js.map → vector-store-CDQaQXFV.js.map} +1 -1
  58. package/dist/vendors/amazon-sp-api/index.d.ts +1 -8
  59. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -1
  60. package/dist/vendors/amazon-sp-api/index.js +3 -14
  61. package/dist/vendors/amazon-sp-api/index.js.map +1 -1
  62. package/dist/vendors/bedrock-agentcore-browser/index.js +1 -1
  63. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +1 -1
  64. package/dist/vendors/cloudflare-browser/index.js +1 -1
  65. package/dist/vendors/cloudflare-email/index.js +1 -1
  66. package/dist/vendors/cloudflare-sandbox/index.js +1 -1
  67. package/dist/vendors/eventbridge-scheduler/index.js +1 -1
  68. package/dist/vendors/imessage/index.js +1 -1
  69. package/dist/vendors/katana/index.d.ts +112 -56
  70. package/dist/vendors/katana/index.d.ts.map +1 -1
  71. package/dist/vendors/katana/index.js +42 -16
  72. package/dist/vendors/katana/index.js.map +1 -1
  73. package/dist/vendors/pinecone/index.js +1 -1
  74. package/dist/vendors/qdrant/index.js +1 -1
  75. package/dist/vendors/resend/index.js +1 -1
  76. package/dist/vendors/s3/index.js +1 -1
  77. package/dist/vendors/slack/index.js +1 -1
  78. package/dist/vendors/sqs/index.js +1 -1
  79. package/dist/vendors/supabase-vector/index.js +1 -1
  80. package/dist/vendors/teams/index.js +1 -1
  81. package/dist/vendors/telegram/index.js +1 -1
  82. package/dist/vendors/textract/index.js +1 -1
  83. package/dist/vendors/woocommerce/index.js +1 -1
  84. package/package.json +1 -1
  85. package/dist/http-service-DDNCO1s4.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,8 @@ All notable changes to `@5ss/ai-tools` are documented here.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Releases are cut by [semantic-release](https://semantic-release.gitbook.io/) from [conventional commits](https://www.conventionalcommits.org/).
6
6
 
7
+ ## [3.0.1](https://github.com/five-star-solutions-co/ai-tools/compare/v3.0.0...v3.0.1) (2026-08-12)
8
+
7
9
  ## [3.0.0](https://github.com/five-star-solutions-co/ai-tools/compare/v2.11.4...v3.0.0) (2026-08-10)
8
10
 
9
11
  ## [2.11.4](https://github.com/five-star-solutions-co/ai-tools/compare/v2.11.3...v2.11.4) (2026-08-10)
@@ -1,5 +1,5 @@
1
1
  import { t as ToolError } from "./errors-DoSpNHvs.js";
2
- import { t as HttpService } from "./http-service-DDNCO1s4.js";
2
+ import { t as HttpService } from "./http-service-BMBIryAL.js";
3
3
  import { AwsClient } from "aws4fetch";
4
4
  //#region src/transport/aws-service.ts
5
5
  /**
@@ -55,4 +55,4 @@ var AwsService = class extends HttpService {
55
55
  //#endregion
56
56
  export { AwsService as t };
57
57
 
58
- //# sourceMappingURL=aws-service-msttbPrz.js.map
58
+ //# sourceMappingURL=aws-service-Cn_ozX4X.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aws-service-msttbPrz.js","names":["#aws","#label"],"sources":["../src/transport/aws-service.ts"],"sourcesContent":["/**\n * SigV4 HTTP client: HttpService + aws4fetch signing on every request.\n */\n\nimport { AwsClient } from 'aws4fetch'\n\nimport { ToolError } from '../core/errors'\nimport type { FetchLike } from '../core/types'\nimport { HttpService } from './http-service'\nimport type { HttpServiceOptions } from './http-service'\n\nexport type AwsCredentials = {\n\taccessKeyId: string\n\tsecretAccessKey: string\n\tregion: string\n\t/** AWS service name for SigV4 (s3, textract, sqs, …). */\n\tservice: string\n\tsessionToken?: string\n}\n\nexport type AwsServiceOptions = AwsCredentials & HttpServiceOptions\n\nexport type {\n\tHttpCallOptions as AwsCallOptions,\n\tHttpBytesOptions as AwsBytesOptions,\n\tHttpQueryResult as AwsQueryResult,\n\tHttpBytesResult as AwsBytesResult\n} from './http-service'\n\n/**\n * Same surface as HttpService (query/bytes/get/post/…).\n * Outbound requests are SigV4-signed; retries off (agent owns retry).\n */\nexport class AwsService extends HttpService {\n\treadonly #aws: AwsClient\n\treadonly #label: string\n\n\tconstructor(options: AwsServiceOptions) {\n\t\tconst {\n\t\t\taccessKeyId,\n\t\t\tsecretAccessKey,\n\t\t\tregion,\n\t\t\tservice,\n\t\t\tsessionToken,\n\t\t\tfetch: userFetch,\n\t\t\tlabel: userLabel,\n\t\t\t...http\n\t\t} = options\n\t\tconst label = userLabel ?? service.toUpperCase()\n\t\tconst aws = new AwsClient({\n\t\t\taccessKeyId,\n\t\t\tsecretAccessKey,\n\t\t\tregion,\n\t\t\tservice,\n\t\t\tretries: 0,\n\t\t\t...(sessionToken && { sessionToken })\n\t\t})\n\t\tconst baseFetch = userFetch ?? globalThis.fetch\n\t\tconst fetch: FetchLike = async (input, init) => baseFetch(await aws.sign(input, init))\n\t\tsuper({ ...http, fetch, label })\n\t\tthis.#aws = aws\n\t\tthis.#label = label\n\t}\n\n\t/** Query-string presign (does not perform the request). */\n\tasync sign(\n\t\turl: string,\n\t\toptions: { method?: string; signQuery?: boolean } = {}\n\t): Promise<{ url: string; method: string }> {\n\t\tconst method = options.method ?? 'GET'\n\t\ttry {\n\t\t\tconst signed = await this.#aws.sign(url, {\n\t\t\t\tmethod,\n\t\t\t\taws: { signQuery: options.signQuery ?? true }\n\t\t\t})\n\t\t\treturn { url: signed.url, method }\n\t\t} catch (error) {\n\t\t\tthrow new ToolError(`${this.#label} failed to sign URL`, {\n\t\t\t\tcode: 'internal',\n\t\t\t\tcause: error\n\t\t\t})\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;AAiCA,IAAa,aAAb,cAAgC,YAAY;CAC3C;CACA;CAEA,YAAY,SAA4B;EACvC,MAAM,EACL,aACA,iBACA,QACA,SACA,cACA,OAAO,WACP,OAAO,WACP,GAAG,SACA;EACJ,MAAM,QAAQ,aAAa,QAAQ,YAAY;EAC/C,MAAM,MAAM,IAAI,UAAU;GACzB;GACA;GACA;GACA;GACA,SAAS;GACT,GAAI,gBAAgB,EAAE,aAAa;EACpC,CAAC;EACD,MAAM,YAAY,aAAa,WAAW;EAC1C,MAAM,QAAmB,OAAO,OAAO,SAAS,UAAU,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC;EACrF,MAAM;GAAE,GAAG;GAAM;GAAO;EAAM,CAAC;EAC/B,KAAKA,OAAO;EACZ,KAAKC,SAAS;CACf;;CAGA,MAAM,KACL,KACA,UAAoD,CAAC,GACV;EAC3C,MAAM,SAAS,QAAQ,UAAU;EACjC,IAAI;GAKH,OAAO;IAAE,MAAK,MAJO,KAAKD,KAAK,KAAK,KAAK;KACxC;KACA,KAAK,EAAE,WAAW,QAAQ,aAAa,KAAK;IAC7C,CAAC,EAAA,CACoB;IAAK;GAAO;EAClC,SAAS,OAAO;GACf,MAAM,IAAI,UAAU,GAAG,KAAKC,OAAO,sBAAsB;IACxD,MAAM;IACN,OAAO;GACR,CAAC;EACF;CACD;AACD"}
1
+ {"version":3,"file":"aws-service-Cn_ozX4X.js","names":["#aws","#label"],"sources":["../src/transport/aws-service.ts"],"sourcesContent":["/**\n * SigV4 HTTP client: HttpService + aws4fetch signing on every request.\n */\n\nimport { AwsClient } from 'aws4fetch'\n\nimport { ToolError } from '../core/errors'\nimport type { FetchLike } from '../core/types'\nimport { HttpService } from './http-service'\nimport type { HttpServiceOptions } from './http-service'\n\nexport type AwsCredentials = {\n\taccessKeyId: string\n\tsecretAccessKey: string\n\tregion: string\n\t/** AWS service name for SigV4 (s3, textract, sqs, …). */\n\tservice: string\n\tsessionToken?: string\n}\n\nexport type AwsServiceOptions = AwsCredentials & HttpServiceOptions\n\nexport type {\n\tHttpCallOptions as AwsCallOptions,\n\tHttpBytesOptions as AwsBytesOptions,\n\tHttpQueryResult as AwsQueryResult,\n\tHttpBytesResult as AwsBytesResult\n} from './http-service'\n\n/**\n * Same surface as HttpService (query/bytes/get/post/…).\n * Outbound requests are SigV4-signed; retries off (agent owns retry).\n */\nexport class AwsService extends HttpService {\n\treadonly #aws: AwsClient\n\treadonly #label: string\n\n\tconstructor(options: AwsServiceOptions) {\n\t\tconst {\n\t\t\taccessKeyId,\n\t\t\tsecretAccessKey,\n\t\t\tregion,\n\t\t\tservice,\n\t\t\tsessionToken,\n\t\t\tfetch: userFetch,\n\t\t\tlabel: userLabel,\n\t\t\t...http\n\t\t} = options\n\t\tconst label = userLabel ?? service.toUpperCase()\n\t\tconst aws = new AwsClient({\n\t\t\taccessKeyId,\n\t\t\tsecretAccessKey,\n\t\t\tregion,\n\t\t\tservice,\n\t\t\tretries: 0,\n\t\t\t...(sessionToken && { sessionToken })\n\t\t})\n\t\tconst baseFetch = userFetch ?? globalThis.fetch\n\t\tconst fetch: FetchLike = async (input, init) => baseFetch(await aws.sign(input, init))\n\t\tsuper({ ...http, fetch, label })\n\t\tthis.#aws = aws\n\t\tthis.#label = label\n\t}\n\n\t/** Query-string presign (does not perform the request). */\n\tasync sign(\n\t\turl: string,\n\t\toptions: { method?: string; signQuery?: boolean } = {}\n\t): Promise<{ url: string; method: string }> {\n\t\tconst method = options.method ?? 'GET'\n\t\ttry {\n\t\t\tconst signed = await this.#aws.sign(url, {\n\t\t\t\tmethod,\n\t\t\t\taws: { signQuery: options.signQuery ?? true }\n\t\t\t})\n\t\t\treturn { url: signed.url, method }\n\t\t} catch (error) {\n\t\t\tthrow new ToolError(`${this.#label} failed to sign URL`, {\n\t\t\t\tcode: 'internal',\n\t\t\t\tcause: error\n\t\t\t})\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;AAiCA,IAAa,aAAb,cAAgC,YAAY;CAC3C;CACA;CAEA,YAAY,SAA4B;EACvC,MAAM,EACL,aACA,iBACA,QACA,SACA,cACA,OAAO,WACP,OAAO,WACP,GAAG,SACA;EACJ,MAAM,QAAQ,aAAa,QAAQ,YAAY;EAC/C,MAAM,MAAM,IAAI,UAAU;GACzB;GACA;GACA;GACA;GACA,SAAS;GACT,GAAI,gBAAgB,EAAE,aAAa;EACpC,CAAC;EACD,MAAM,YAAY,aAAa,WAAW;EAC1C,MAAM,QAAmB,OAAO,OAAO,SAAS,UAAU,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC;EACrF,MAAM;GAAE,GAAG;GAAM;GAAO;EAAM,CAAC;EAC/B,KAAKA,OAAO;EACZ,KAAKC,SAAS;CACf;;CAGA,MAAM,KACL,KACA,UAAoD,CAAC,GACV;EAC3C,MAAM,SAAS,QAAQ,UAAU;EACjC,IAAI;GAKH,OAAO;IAAE,MAAK,MAJO,KAAKD,KAAK,KAAK,KAAK;KACxC;KACA,KAAK,EAAE,WAAW,QAAQ,aAAa,KAAK;IAC7C,CAAC,EAAA,CACoB;IAAK;GAAO;EAClC,SAAS,OAAO;GACf,MAAM,IAAI,UAAU,GAAG,KAAKC,OAAO,sBAAsB;IACxD,MAAM;IACN,OAAO;GACR,CAAC;EACF;CACD;AACD"}
@@ -1,7 +1,7 @@
1
1
  import { t as ToolError } from "./errors-DoSpNHvs.js";
2
2
  import { n as defineModule, r as defineTool } from "./define-ieoksEQ0.js";
3
3
  import { n as requireAuth } from "./provider-CgDAlg6K.js";
4
- import { t as AwsService } from "./aws-service-msttbPrz.js";
4
+ import { t as AwsService } from "./aws-service-Cn_ozX4X.js";
5
5
  import { isPlainObject, isString } from "es-toolkit";
6
6
  import { z } from "zod";
7
7
  //#region src/vendors/bedrock-agentcore-browser/contracts.ts
@@ -179,4 +179,4 @@ const bedrockAgentCoreBrowserModule = defineModule({
179
179
  //#endregion
180
180
  export { BedrockAgentCoreBrowserClient as a, browserSessionIdInputSchema as c, browserStreamSchema as d, bedrockAgentCoreBrowserStopSessionTool as i, browserSessionOutputSchema as l, bedrockAgentCoreBrowserModule as n, DEFAULT_BROWSER_ID as o, bedrockAgentCoreBrowserStartSessionTool as r, bedrockAgentCoreBrowserAuthSchema as s, bedrockAgentCoreBrowserGetSessionTool as t, browserStartSessionInputSchema as u };
181
181
 
182
- //# sourceMappingURL=bedrock-agentcore-browser-o_oqSPMK.js.map
182
+ //# sourceMappingURL=bedrock-agentcore-browser-DwDSP_YL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-agentcore-browser-o_oqSPMK.js","names":["#auth","#aws","#browserId","#base","#mapSession"],"sources":["../src/vendors/bedrock-agentcore-browser/contracts.ts","../src/vendors/bedrock-agentcore-browser/client.ts","../src/vendors/bedrock-agentcore-browser/module.ts"],"sourcesContent":["/**\n * Amazon Bedrock AgentCore Browser contracts (session lifecycle + stream metadata).\n * Interactive automation uses stream endpoints (host/Playwright) — not faked REST click tools.\n */\n\nimport { z } from 'zod'\n\nexport const DEFAULT_BROWSER_ID = 'aws.browser.v1'\n\nexport const bedrockAgentCoreBrowserAuthSchema = z.object({\n\taccess_key_id: z.string().min(1).describe('AWS access key id'),\n\tsecret_access_key: z.string().min(1).describe('AWS secret access key'),\n\tregion: z.string().min(1).describe('AWS region for Bedrock AgentCore'),\n\tsession_token: z.string().min(1).optional().describe('Optional session token'),\n\tbrowser_id: z.string().min(1).optional().describe('Browser resource id (default aws.browser.v1)')\n})\n\nexport type BedrockAgentCoreBrowserAuth = z.infer<typeof bedrockAgentCoreBrowserAuthSchema>\n\nconst sessionId = z.string().min(1).max(40).describe('Browser session id')\n\nexport const browserStartSessionInputSchema = z.object({\n\tname: z.string().min(1).max(100).optional().describe('Optional session name'),\n\tsession_timeout_seconds: z.int().min(1).max(28_800).optional().describe('Session TTL in seconds (max 8 hours)'),\n\tviewport_width: z.int().min(1).max(10_000).optional().describe('Viewport width in pixels'),\n\tviewport_height: z.int().min(1).max(10_000).optional().describe('Viewport height in pixels')\n})\n\nexport const browserSessionIdInputSchema = z.object({\n\tsession_id: sessionId\n})\n\nexport const browserStreamSchema = z.object({\n\tautomation_stream_endpoint: z.string().optional().describe('Automation WebSocket/stream endpoint when returned'),\n\tautomation_stream_status: z.string().optional().describe('Automation stream status when returned'),\n\tlive_view_stream_endpoint: z.string().optional().describe('Live view stream endpoint when returned')\n})\n\nexport const browserSessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Browser session id'),\n\tbrowser_id: z.string().optional().describe('Browser resource id'),\n\tcreated_at: z.string().optional(),\n\tstatus: z.string().optional().describe('Session status when returned'),\n\tstreams: browserStreamSchema.optional().describe('Automation and live-view stream metadata')\n})\n\nexport type BrowserStartSessionInput = z.infer<typeof browserStartSessionInputSchema>\nexport type BrowserSessionIdInput = z.infer<typeof browserSessionIdInputSchema>\nexport type BrowserSessionOutput = z.infer<typeof browserSessionOutputSchema>\n","/**\n * Bedrock AgentCore Browser client — session lifecycle + stream endpoints.\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { AwsService } from '../../transport/aws-service'\nimport type { AwsServiceOptions } from '../../transport/aws-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tBedrockAgentCoreBrowserAuth,\n\tBrowserSessionIdInput,\n\tBrowserSessionOutput,\n\tBrowserStartSessionInput\n} from './contracts'\nimport { DEFAULT_BROWSER_ID, bedrockAgentCoreBrowserAuthSchema } from './contracts'\n\nexport type BedrockAgentCoreBrowserClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class BedrockAgentCoreBrowserClient {\n\treadonly #auth: BedrockAgentCoreBrowserAuth\n\treadonly #aws: AwsService\n\treadonly #browserId: string\n\n\tconstructor(auth: BedrockAgentCoreBrowserAuth, options: BedrockAgentCoreBrowserClientOptions = {}) {\n\t\tconst parsed = bedrockAgentCoreBrowserAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Bedrock AgentCore Browser auth', {\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.#browserId = this.#auth.browser_id ?? DEFAULT_BROWSER_ID\n\t\tconst awsOptions: AwsServiceOptions = {\n\t\t\taccessKeyId: this.#auth.access_key_id,\n\t\t\tsecretAccessKey: this.#auth.secret_access_key,\n\t\t\tregion: this.#auth.region,\n\t\t\tservice: 'bedrock-agentcore',\n\t\t\tbaseURL: `https://bedrock-agentcore.${this.#auth.region}.amazonaws.com`,\n\t\t\tlabel: 'Bedrock AgentCore Browser'\n\t\t}\n\t\tif (options.fetch) awsOptions.fetch = options.fetch\n\t\tif (options.signal) awsOptions.signal = options.signal\n\t\tif (this.#auth.session_token) awsOptions.sessionToken = this.#auth.session_token\n\t\tthis.#aws = new AwsService(awsOptions)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): BedrockAgentCoreBrowserClient {\n\t\tconst auth = requireAuth(ctx, bedrockAgentCoreBrowserAuthSchema)\n\t\tconst options: BedrockAgentCoreBrowserClientOptions = {}\n\t\tif (ctx.fetch) options.fetch = ctx.fetch\n\t\tif (ctx.signal) options.signal = ctx.signal\n\t\treturn new BedrockAgentCoreBrowserClient(auth, options)\n\t}\n\n\t#base(): string {\n\t\treturn `/browsers/${encodeURIComponent(this.#browserId)}`\n\t}\n\n\tasync startSession(input: BrowserStartSessionInput = {}): Promise<BrowserSessionOutput> {\n\t\tconst body: Record<string, unknown> = {}\n\t\tif (input.name) body['name'] = input.name\n\t\tif (input.session_timeout_seconds !== undefined) body['sessionTimeoutSeconds'] = input.session_timeout_seconds\n\t\tif (input.viewport_width !== undefined || input.viewport_height !== undefined) {\n\t\t\tbody['viewPort'] = {\n\t\t\t\twidth: input.viewport_width ?? 1280,\n\t\t\t\theight: input.viewport_height ?? 720\n\t\t\t}\n\t\t}\n\t\tconst { data } = await this.#aws.put(`${this.#base()}/sessions/start`, body)\n\t\treturn this.#mapSession(data)\n\t}\n\n\tasync stopSession(input: BrowserSessionIdInput): Promise<BrowserSessionOutput> {\n\t\tconst { data } = await this.#aws.put(\n\t\t\t`${this.#base()}/sessions/stop?sessionId=${encodeURIComponent(input.session_id)}`,\n\t\t\t{}\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync getSession(input: BrowserSessionIdInput): Promise<BrowserSessionOutput> {\n\t\tconst { data } = await this.#aws.get(\n\t\t\t`${this.#base()}/sessions/get?sessionId=${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string): BrowserSessionOutput {\n\t\tif (!isPlainObject(data)) {\n\t\t\tif (fallbackSessionId) return { session_id: fallbackSessionId, browser_id: this.#browserId }\n\t\t\tthrow new ToolError('Unexpected browser session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(data['sessionId']) ? data['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) throw new ToolError('Browser session response missing sessionId', { code: 'upstream' })\n\t\tconst out: BrowserSessionOutput = {\n\t\t\tsession_id: sessionId,\n\t\t\tbrowser_id: isString(data['browserIdentifier']) ? data['browserIdentifier'] : this.#browserId\n\t\t}\n\t\tif (isString(data['createdAt'])) out.created_at = data['createdAt']\n\t\tif (isString(data['status'])) out.status = data['status']\n\n\t\tconst streams = isPlainObject(data['streams']) ? data['streams'] : undefined\n\t\tif (streams) {\n\t\t\tconst automation = isPlainObject(streams['automationStream']) ? streams['automationStream'] : undefined\n\t\t\tconst live = isPlainObject(streams['liveViewStream']) ? streams['liveViewStream'] : undefined\n\t\t\tconst mapped: NonNullable<BrowserSessionOutput['streams']> = {}\n\t\t\tif (automation && isString(automation['streamEndpoint'])) {\n\t\t\t\tmapped.automation_stream_endpoint = automation['streamEndpoint']\n\t\t\t}\n\t\t\tif (automation && isString(automation['streamStatus'])) {\n\t\t\t\tmapped.automation_stream_status = automation['streamStatus']\n\t\t\t}\n\t\t\tif (live && isString(live['streamEndpoint'])) {\n\t\t\t\tmapped.live_view_stream_endpoint = live['streamEndpoint']\n\t\t\t}\n\t\t\tif (Object.keys(mapped).length > 0) out.streams = mapped\n\t\t}\n\t\treturn out\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { BedrockAgentCoreBrowserClient } from './client'\nimport {\n\tbedrockAgentCoreBrowserAuthSchema,\n\tbrowserSessionIdInputSchema,\n\tbrowserSessionOutputSchema,\n\tbrowserStartSessionInputSchema\n} from './contracts'\n\nconst id = 'bedrock-agentcore-browser'\n\nexport const bedrockAgentCoreBrowserStartSessionTool = defineTool({\n\tid: `${id}-start-session`,\n\tname: 'bedrockAgentCoreBrowserStartSession',\n\tdescription:\n\t\t'Start a Bedrock AgentCore browser session. Returns session_id and stream endpoints (automation / live view) when provided. Interactive page control uses those streams outside this pack.',\n\tinputSchema: browserStartSessionInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).startSession(input)\n})\n\nexport const bedrockAgentCoreBrowserStopSessionTool = defineTool({\n\tid: `${id}-stop-session`,\n\tname: 'bedrockAgentCoreBrowserStopSession',\n\tdescription: 'Stop a Bedrock AgentCore browser session by session_id.',\n\tinputSchema: browserSessionIdInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).stopSession(input)\n})\n\nexport const bedrockAgentCoreBrowserGetSessionTool = defineTool({\n\tid: `${id}-get-session`,\n\tname: 'bedrockAgentCoreBrowserGetSession',\n\tdescription: 'Get a Bedrock AgentCore browser session, including status and stream endpoints when available.',\n\tinputSchema: browserSessionIdInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).getSession(input)\n})\n\nexport const bedrockAgentCoreBrowserModule = defineModule({\n\tid,\n\ttitle: 'Bedrock AgentCore Browser',\n\tdescription:\n\t\t'Amazon Bedrock AgentCore Browser session lifecycle and stream metadata. These tools start, inspect, and stop sessions; page interaction occurs through the returned automation stream.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: bedrockAgentCoreBrowserAuthSchema },\n\tcategories: ['browser', 'aws'],\n\tclassification: 'standard',\n\ttags: ['agentcore', 'session'],\n\ttools: [\n\t\tbedrockAgentCoreBrowserStartSessionTool,\n\t\tbedrockAgentCoreBrowserStopSessionTool,\n\t\tbedrockAgentCoreBrowserGetSessionTool\n\t]\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"bedrock-agentcore-browser-DwDSP_YL.js","names":["#auth","#aws","#browserId","#base","#mapSession"],"sources":["../src/vendors/bedrock-agentcore-browser/contracts.ts","../src/vendors/bedrock-agentcore-browser/client.ts","../src/vendors/bedrock-agentcore-browser/module.ts"],"sourcesContent":["/**\n * Amazon Bedrock AgentCore Browser contracts (session lifecycle + stream metadata).\n * Interactive automation uses stream endpoints (host/Playwright) — not faked REST click tools.\n */\n\nimport { z } from 'zod'\n\nexport const DEFAULT_BROWSER_ID = 'aws.browser.v1'\n\nexport const bedrockAgentCoreBrowserAuthSchema = z.object({\n\taccess_key_id: z.string().min(1).describe('AWS access key id'),\n\tsecret_access_key: z.string().min(1).describe('AWS secret access key'),\n\tregion: z.string().min(1).describe('AWS region for Bedrock AgentCore'),\n\tsession_token: z.string().min(1).optional().describe('Optional session token'),\n\tbrowser_id: z.string().min(1).optional().describe('Browser resource id (default aws.browser.v1)')\n})\n\nexport type BedrockAgentCoreBrowserAuth = z.infer<typeof bedrockAgentCoreBrowserAuthSchema>\n\nconst sessionId = z.string().min(1).max(40).describe('Browser session id')\n\nexport const browserStartSessionInputSchema = z.object({\n\tname: z.string().min(1).max(100).optional().describe('Optional session name'),\n\tsession_timeout_seconds: z.int().min(1).max(28_800).optional().describe('Session TTL in seconds (max 8 hours)'),\n\tviewport_width: z.int().min(1).max(10_000).optional().describe('Viewport width in pixels'),\n\tviewport_height: z.int().min(1).max(10_000).optional().describe('Viewport height in pixels')\n})\n\nexport const browserSessionIdInputSchema = z.object({\n\tsession_id: sessionId\n})\n\nexport const browserStreamSchema = z.object({\n\tautomation_stream_endpoint: z.string().optional().describe('Automation WebSocket/stream endpoint when returned'),\n\tautomation_stream_status: z.string().optional().describe('Automation stream status when returned'),\n\tlive_view_stream_endpoint: z.string().optional().describe('Live view stream endpoint when returned')\n})\n\nexport const browserSessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Browser session id'),\n\tbrowser_id: z.string().optional().describe('Browser resource id'),\n\tcreated_at: z.string().optional(),\n\tstatus: z.string().optional().describe('Session status when returned'),\n\tstreams: browserStreamSchema.optional().describe('Automation and live-view stream metadata')\n})\n\nexport type BrowserStartSessionInput = z.infer<typeof browserStartSessionInputSchema>\nexport type BrowserSessionIdInput = z.infer<typeof browserSessionIdInputSchema>\nexport type BrowserSessionOutput = z.infer<typeof browserSessionOutputSchema>\n","/**\n * Bedrock AgentCore Browser client — session lifecycle + stream endpoints.\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { AwsService } from '../../transport/aws-service'\nimport type { AwsServiceOptions } from '../../transport/aws-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tBedrockAgentCoreBrowserAuth,\n\tBrowserSessionIdInput,\n\tBrowserSessionOutput,\n\tBrowserStartSessionInput\n} from './contracts'\nimport { DEFAULT_BROWSER_ID, bedrockAgentCoreBrowserAuthSchema } from './contracts'\n\nexport type BedrockAgentCoreBrowserClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class BedrockAgentCoreBrowserClient {\n\treadonly #auth: BedrockAgentCoreBrowserAuth\n\treadonly #aws: AwsService\n\treadonly #browserId: string\n\n\tconstructor(auth: BedrockAgentCoreBrowserAuth, options: BedrockAgentCoreBrowserClientOptions = {}) {\n\t\tconst parsed = bedrockAgentCoreBrowserAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Bedrock AgentCore Browser auth', {\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.#browserId = this.#auth.browser_id ?? DEFAULT_BROWSER_ID\n\t\tconst awsOptions: AwsServiceOptions = {\n\t\t\taccessKeyId: this.#auth.access_key_id,\n\t\t\tsecretAccessKey: this.#auth.secret_access_key,\n\t\t\tregion: this.#auth.region,\n\t\t\tservice: 'bedrock-agentcore',\n\t\t\tbaseURL: `https://bedrock-agentcore.${this.#auth.region}.amazonaws.com`,\n\t\t\tlabel: 'Bedrock AgentCore Browser'\n\t\t}\n\t\tif (options.fetch) awsOptions.fetch = options.fetch\n\t\tif (options.signal) awsOptions.signal = options.signal\n\t\tif (this.#auth.session_token) awsOptions.sessionToken = this.#auth.session_token\n\t\tthis.#aws = new AwsService(awsOptions)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): BedrockAgentCoreBrowserClient {\n\t\tconst auth = requireAuth(ctx, bedrockAgentCoreBrowserAuthSchema)\n\t\tconst options: BedrockAgentCoreBrowserClientOptions = {}\n\t\tif (ctx.fetch) options.fetch = ctx.fetch\n\t\tif (ctx.signal) options.signal = ctx.signal\n\t\treturn new BedrockAgentCoreBrowserClient(auth, options)\n\t}\n\n\t#base(): string {\n\t\treturn `/browsers/${encodeURIComponent(this.#browserId)}`\n\t}\n\n\tasync startSession(input: BrowserStartSessionInput = {}): Promise<BrowserSessionOutput> {\n\t\tconst body: Record<string, unknown> = {}\n\t\tif (input.name) body['name'] = input.name\n\t\tif (input.session_timeout_seconds !== undefined) body['sessionTimeoutSeconds'] = input.session_timeout_seconds\n\t\tif (input.viewport_width !== undefined || input.viewport_height !== undefined) {\n\t\t\tbody['viewPort'] = {\n\t\t\t\twidth: input.viewport_width ?? 1280,\n\t\t\t\theight: input.viewport_height ?? 720\n\t\t\t}\n\t\t}\n\t\tconst { data } = await this.#aws.put(`${this.#base()}/sessions/start`, body)\n\t\treturn this.#mapSession(data)\n\t}\n\n\tasync stopSession(input: BrowserSessionIdInput): Promise<BrowserSessionOutput> {\n\t\tconst { data } = await this.#aws.put(\n\t\t\t`${this.#base()}/sessions/stop?sessionId=${encodeURIComponent(input.session_id)}`,\n\t\t\t{}\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync getSession(input: BrowserSessionIdInput): Promise<BrowserSessionOutput> {\n\t\tconst { data } = await this.#aws.get(\n\t\t\t`${this.#base()}/sessions/get?sessionId=${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string): BrowserSessionOutput {\n\t\tif (!isPlainObject(data)) {\n\t\t\tif (fallbackSessionId) return { session_id: fallbackSessionId, browser_id: this.#browserId }\n\t\t\tthrow new ToolError('Unexpected browser session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(data['sessionId']) ? data['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) throw new ToolError('Browser session response missing sessionId', { code: 'upstream' })\n\t\tconst out: BrowserSessionOutput = {\n\t\t\tsession_id: sessionId,\n\t\t\tbrowser_id: isString(data['browserIdentifier']) ? data['browserIdentifier'] : this.#browserId\n\t\t}\n\t\tif (isString(data['createdAt'])) out.created_at = data['createdAt']\n\t\tif (isString(data['status'])) out.status = data['status']\n\n\t\tconst streams = isPlainObject(data['streams']) ? data['streams'] : undefined\n\t\tif (streams) {\n\t\t\tconst automation = isPlainObject(streams['automationStream']) ? streams['automationStream'] : undefined\n\t\t\tconst live = isPlainObject(streams['liveViewStream']) ? streams['liveViewStream'] : undefined\n\t\t\tconst mapped: NonNullable<BrowserSessionOutput['streams']> = {}\n\t\t\tif (automation && isString(automation['streamEndpoint'])) {\n\t\t\t\tmapped.automation_stream_endpoint = automation['streamEndpoint']\n\t\t\t}\n\t\t\tif (automation && isString(automation['streamStatus'])) {\n\t\t\t\tmapped.automation_stream_status = automation['streamStatus']\n\t\t\t}\n\t\t\tif (live && isString(live['streamEndpoint'])) {\n\t\t\t\tmapped.live_view_stream_endpoint = live['streamEndpoint']\n\t\t\t}\n\t\t\tif (Object.keys(mapped).length > 0) out.streams = mapped\n\t\t}\n\t\treturn out\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { BedrockAgentCoreBrowserClient } from './client'\nimport {\n\tbedrockAgentCoreBrowserAuthSchema,\n\tbrowserSessionIdInputSchema,\n\tbrowserSessionOutputSchema,\n\tbrowserStartSessionInputSchema\n} from './contracts'\n\nconst id = 'bedrock-agentcore-browser'\n\nexport const bedrockAgentCoreBrowserStartSessionTool = defineTool({\n\tid: `${id}-start-session`,\n\tname: 'bedrockAgentCoreBrowserStartSession',\n\tdescription:\n\t\t'Start a Bedrock AgentCore browser session. Returns session_id and stream endpoints (automation / live view) when provided. Interactive page control uses those streams outside this pack.',\n\tinputSchema: browserStartSessionInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).startSession(input)\n})\n\nexport const bedrockAgentCoreBrowserStopSessionTool = defineTool({\n\tid: `${id}-stop-session`,\n\tname: 'bedrockAgentCoreBrowserStopSession',\n\tdescription: 'Stop a Bedrock AgentCore browser session by session_id.',\n\tinputSchema: browserSessionIdInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).stopSession(input)\n})\n\nexport const bedrockAgentCoreBrowserGetSessionTool = defineTool({\n\tid: `${id}-get-session`,\n\tname: 'bedrockAgentCoreBrowserGetSession',\n\tdescription: 'Get a Bedrock AgentCore browser session, including status and stream endpoints when available.',\n\tinputSchema: browserSessionIdInputSchema,\n\toutputSchema: browserSessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreBrowserClient.fromContext(ctx).getSession(input)\n})\n\nexport const bedrockAgentCoreBrowserModule = defineModule({\n\tid,\n\ttitle: 'Bedrock AgentCore Browser',\n\tdescription:\n\t\t'Amazon Bedrock AgentCore Browser session lifecycle and stream metadata. These tools start, inspect, and stop sessions; page interaction occurs through the returned automation stream.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: bedrockAgentCoreBrowserAuthSchema },\n\tcategories: ['browser', 'aws'],\n\tclassification: 'standard',\n\ttags: ['agentcore', 'session'],\n\ttools: [\n\t\tbedrockAgentCoreBrowserStartSessionTool,\n\t\tbedrockAgentCoreBrowserStopSessionTool,\n\t\tbedrockAgentCoreBrowserGetSessionTool\n\t]\n})\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { t as ToolError } from "./errors-DoSpNHvs.js";
2
2
  import { n as defineModule, r as defineTool } from "./define-ieoksEQ0.js";
3
3
  import { n as requireAuth } from "./provider-CgDAlg6K.js";
4
- import { t as AwsService } from "./aws-service-msttbPrz.js";
4
+ import { t as AwsService } from "./aws-service-Cn_ozX4X.js";
5
5
  import { isPlainObject, isString } from "es-toolkit";
6
6
  import { z } from "zod";
7
7
  //#region src/vendors/bedrock-agentcore-code-interpreter/contracts.ts
@@ -354,4 +354,4 @@ const bedrockAgentCoreCodeInterpreterModule = defineModule({
354
354
  //#endregion
355
355
  export { startCommandInputSchema as A, executeCommandInputSchema as C, removeFilesInputSchema as D, readFilesInputSchema as E, taskIdInputSchema as M, writeFilesInputSchema as N, sessionIdInputSchema as O, executeCodeInputSchema as S, listFilesInputSchema as T, MAX_COMMAND_CHARS as _, bedrockAgentCoreCodeInterpreterListFilesTool as a, MAX_WRITE_FILES as b, bedrockAgentCoreCodeInterpreterRemoveFilesTool as c, bedrockAgentCoreCodeInterpreterStopSessionTool as d, bedrockAgentCoreCodeInterpreterStopTaskTool as f, MAX_CODE_CHARS as g, DEFAULT_CODE_INTERPRETER_ID as h, bedrockAgentCoreCodeInterpreterGetTaskTool as i, startSessionInputSchema as j, sessionOutputSchema as k, bedrockAgentCoreCodeInterpreterStartCommandTool as l, BedrockAgentCoreCodeInterpreterClient as m, bedrockAgentCoreCodeInterpreterExecuteCommandTool as n, bedrockAgentCoreCodeInterpreterModule as o, bedrockAgentCoreCodeInterpreterWriteFilesTool as p, bedrockAgentCoreCodeInterpreterGetSessionTool as r, bedrockAgentCoreCodeInterpreterReadFilesTool as s, bedrockAgentCoreCodeInterpreterExecuteCodeTool as t, bedrockAgentCoreCodeInterpreterStartSessionTool as u, MAX_FILE_PATHS as v, invokeResultSchema as w, bedrockAgentCoreCodeInterpreterAuthSchema as x, MAX_FILE_TEXT as y };
356
356
 
357
- //# sourceMappingURL=bedrock-agentcore-code-interpreter-D4ERRFj1.js.map
357
+ //# sourceMappingURL=bedrock-agentcore-code-interpreter-F0dnrAm4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-agentcore-code-interpreter-D4ERRFj1.js","names":["#auth","#aws","#interpreterId","#base","#mapSession","#invoke"],"sources":["../src/vendors/bedrock-agentcore-code-interpreter/contracts.ts","../src/vendors/bedrock-agentcore-code-interpreter/client.ts","../src/vendors/bedrock-agentcore-code-interpreter/module.ts"],"sourcesContent":["/**\n * Amazon Bedrock AgentCore Code Interpreter contracts.\n */\n\nimport { z } from 'zod'\n\nexport const DEFAULT_CODE_INTERPRETER_ID = 'aws.codeinterpreter.v1'\nexport const MAX_CODE_CHARS = 200_000\nexport const MAX_COMMAND_CHARS = 20_000\nexport const MAX_FILE_PATHS = 50\nexport const MAX_WRITE_FILES = 20\nexport const MAX_FILE_TEXT = 500_000\n\nexport const bedrockAgentCoreCodeInterpreterAuthSchema = z.object({\n\taccess_key_id: z.string().min(1).describe('AWS access key id'),\n\tsecret_access_key: z.string().min(1).describe('AWS secret access key'),\n\tregion: z.string().min(1).describe('AWS region for Bedrock AgentCore'),\n\tsession_token: z.string().min(1).optional().describe('Optional session token'),\n\tcode_interpreter_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Code interpreter resource id (default aws.codeinterpreter.v1)')\n})\n\nexport type BedrockAgentCoreCodeInterpreterAuth = z.infer<typeof bedrockAgentCoreCodeInterpreterAuthSchema>\n\nconst sessionId = z.string().min(1).max(40).describe('Code interpreter session id')\n\nexport const startSessionInputSchema = z.object({\n\tname: z.string().min(1).max(100).optional().describe('Optional session name'),\n\tsession_timeout_seconds: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(28_800)\n\t\t.optional()\n\t\t.describe('Session TTL in seconds (default provider-side, max 8 hours)')\n})\n\nexport const sessionIdInputSchema = z.object({\n\tsession_id: sessionId\n})\n\nexport const sessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Session id'),\n\tcode_interpreter_id: z.string().optional().describe('Interpreter id'),\n\tcreated_at: z.string().optional().describe('Creation timestamp when returned'),\n\tstatus: z.string().optional().describe('Session status when returned')\n})\n\nexport const executeCodeInputSchema = z.object({\n\tsession_id: sessionId,\n\tcode: z.string().min(1).max(MAX_CODE_CHARS).describe('Source code to execute'),\n\tlanguage: z.string().min(1).max(40).optional().describe('Language (default python)')\n})\n\nexport const executeCommandInputSchema = z.object({\n\tsession_id: sessionId,\n\tcommand: z.string().min(1).max(MAX_COMMAND_CHARS).describe('Shell command to run')\n})\n\nexport const startCommandInputSchema = executeCommandInputSchema\n\nexport const taskIdInputSchema = z.object({\n\tsession_id: sessionId,\n\ttask_id: z.string().min(1).max(200).describe('Async task id from start-command')\n})\n\nexport const listFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tdirectory_path: z.string().max(1024).optional().describe('Directory path (default session root)')\n})\n\nexport const readFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tpaths: z.array(z.string().min(1).max(1024)).min(1).max(MAX_FILE_PATHS).describe('File paths to read')\n})\n\nexport const writeFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tfiles: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tpath: z.string().min(1).max(1024).describe('Path to write'),\n\t\t\t\ttext: z.string().max(MAX_FILE_TEXT).describe('Utf8 file contents')\n\t\t\t})\n\t\t)\n\t\t.min(1)\n\t\t.max(MAX_WRITE_FILES)\n\t\t.describe('Files to write')\n})\n\nexport const removeFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tpaths: z.array(z.string().min(1).max(1024)).min(1).max(MAX_FILE_PATHS).describe('Paths to remove')\n})\n\nexport const invokeResultSchema = z.object({\n\tsession_id: z.string(),\n\tname: z.string().describe('Invoke tool name'),\n\tresult: z.unknown().optional().describe('Provider result payload'),\n\traw: z.unknown().optional().describe('Full provider response when useful')\n})\n\nexport type StartSessionInput = z.infer<typeof startSessionInputSchema>\nexport type SessionIdInput = z.infer<typeof sessionIdInputSchema>\nexport type SessionOutput = z.infer<typeof sessionOutputSchema>\nexport type ExecuteCodeInput = z.infer<typeof executeCodeInputSchema>\nexport type ExecuteCommandInput = z.infer<typeof executeCommandInputSchema>\nexport type StartCommandInput = z.infer<typeof startCommandInputSchema>\nexport type TaskIdInput = z.infer<typeof taskIdInputSchema>\nexport type ListFilesInput = z.infer<typeof listFilesInputSchema>\nexport type ReadFilesInput = z.infer<typeof readFilesInputSchema>\nexport type WriteFilesInput = z.infer<typeof writeFilesInputSchema>\nexport type RemoveFilesInput = z.infer<typeof removeFilesInputSchema>\nexport type InvokeResult = z.infer<typeof invokeResultSchema>\n","/**\n * Bedrock AgentCore Code Interpreter client (AwsService SigV4).\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { AwsService } from '../../transport/aws-service'\nimport type { AwsServiceOptions } from '../../transport/aws-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tBedrockAgentCoreCodeInterpreterAuth,\n\tExecuteCodeInput,\n\tExecuteCommandInput,\n\tInvokeResult,\n\tListFilesInput,\n\tReadFilesInput,\n\tRemoveFilesInput,\n\tSessionIdInput,\n\tSessionOutput,\n\tStartCommandInput,\n\tStartSessionInput,\n\tTaskIdInput,\n\tWriteFilesInput\n} from './contracts'\nimport { DEFAULT_CODE_INTERPRETER_ID, bedrockAgentCoreCodeInterpreterAuthSchema } from './contracts'\n\nexport type BedrockAgentCoreCodeInterpreterClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class BedrockAgentCoreCodeInterpreterClient {\n\treadonly #auth: BedrockAgentCoreCodeInterpreterAuth\n\treadonly #aws: AwsService\n\treadonly #interpreterId: string\n\n\tconstructor(auth: BedrockAgentCoreCodeInterpreterAuth, options: BedrockAgentCoreCodeInterpreterClientOptions = {}) {\n\t\tconst parsed = bedrockAgentCoreCodeInterpreterAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Bedrock AgentCore Code Interpreter auth', {\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.#interpreterId = this.#auth.code_interpreter_id ?? DEFAULT_CODE_INTERPRETER_ID\n\t\tconst awsOptions: AwsServiceOptions = {\n\t\t\taccessKeyId: this.#auth.access_key_id,\n\t\t\tsecretAccessKey: this.#auth.secret_access_key,\n\t\t\tregion: this.#auth.region,\n\t\t\tservice: 'bedrock-agentcore',\n\t\t\tbaseURL: `https://bedrock-agentcore.${this.#auth.region}.amazonaws.com`,\n\t\t\tlabel: 'Bedrock AgentCore Code Interpreter'\n\t\t}\n\t\tif (options.fetch) awsOptions.fetch = options.fetch\n\t\tif (options.signal) awsOptions.signal = options.signal\n\t\tif (this.#auth.session_token) awsOptions.sessionToken = this.#auth.session_token\n\t\tthis.#aws = new AwsService(awsOptions)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): BedrockAgentCoreCodeInterpreterClient {\n\t\tconst auth = requireAuth(ctx, bedrockAgentCoreCodeInterpreterAuthSchema)\n\t\tconst options: BedrockAgentCoreCodeInterpreterClientOptions = {}\n\t\tif (ctx.fetch) options.fetch = ctx.fetch\n\t\tif (ctx.signal) options.signal = ctx.signal\n\t\treturn new BedrockAgentCoreCodeInterpreterClient(auth, options)\n\t}\n\n\t#base(): string {\n\t\treturn `/code-interpreters/${encodeURIComponent(this.#interpreterId)}`\n\t}\n\n\tasync startSession(input: StartSessionInput = {}): Promise<SessionOutput> {\n\t\tconst body: Record<string, unknown> = {}\n\t\tif (input.name) body['name'] = input.name\n\t\tif (input.session_timeout_seconds !== undefined) body['sessionTimeoutSeconds'] = input.session_timeout_seconds\n\t\tconst { data } = await this.#aws.put(`${this.#base()}/sessions/start`, body)\n\t\treturn this.#mapSession(data)\n\t}\n\n\tasync stopSession(input: SessionIdInput): Promise<SessionOutput> {\n\t\tconst { data } = await this.#aws.put(\n\t\t\t`${this.#base()}/sessions/stop?sessionId=${encodeURIComponent(input.session_id)}`,\n\t\t\t{}\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync getSession(input: SessionIdInput): Promise<SessionOutput> {\n\t\tconst { data } = await this.#aws.get(\n\t\t\t`${this.#base()}/sessions/get?sessionId=${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync executeCode(input: ExecuteCodeInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'executeCode', {\n\t\t\tlanguage: input.language ?? 'python',\n\t\t\tcode: input.code\n\t\t})\n\t}\n\n\tasync executeCommand(input: ExecuteCommandInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'executeCommand', { command: input.command })\n\t}\n\n\tasync startCommand(input: StartCommandInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'startCommandExecution', { command: input.command })\n\t}\n\n\tasync getTask(input: TaskIdInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'getTask', { taskId: input.task_id })\n\t}\n\n\tasync stopTask(input: TaskIdInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'stopTask', { taskId: input.task_id })\n\t}\n\n\tasync listFiles(input: ListFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'listFiles', {\n\t\t\tdirectoryPath: input.directory_path ?? ''\n\t\t})\n\t}\n\n\tasync readFiles(input: ReadFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'readFiles', { paths: input.paths })\n\t}\n\n\tasync writeFiles(input: WriteFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'writeFiles', {\n\t\t\tcontent: input.files.map((f) => ({ path: f.path, text: f.text }))\n\t\t})\n\t}\n\n\tasync removeFiles(input: RemoveFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'removeFiles', { paths: input.paths })\n\t}\n\n\tasync #invoke(sessionId: string, name: string, args: Record<string, unknown>): Promise<InvokeResult> {\n\t\tconst { data } = await this.#aws.post(\n\t\t\t`${this.#base()}/tools/invoke`,\n\t\t\t{ name, arguments: args },\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\t'x-amzn-code-interpreter-session-id': sessionId,\n\t\t\t\t\tAccept: 'application/json'\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\tconst out: InvokeResult = { session_id: sessionId, name, raw: data }\n\t\tif (isPlainObject(data)) {\n\t\t\tif ('result' in data) out.result = data['result']\n\t\t\telse out.result = data\n\t\t} else {\n\t\t\tout.result = data\n\t\t}\n\t\treturn out\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string): SessionOutput {\n\t\tif (!isPlainObject(data)) {\n\t\t\tif (fallbackSessionId) return { session_id: fallbackSessionId, code_interpreter_id: this.#interpreterId }\n\t\t\tthrow new ToolError('Unexpected session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(data['sessionId']) ? data['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) throw new ToolError('Session response missing sessionId', { code: 'upstream' })\n\t\tconst out: SessionOutput = {\n\t\t\tsession_id: sessionId,\n\t\t\tcode_interpreter_id: isString(data['codeInterpreterIdentifier'])\n\t\t\t\t? data['codeInterpreterIdentifier']\n\t\t\t\t: this.#interpreterId\n\t\t}\n\t\tif (isString(data['createdAt'])) out.created_at = data['createdAt']\n\t\tif (isString(data['status'])) out.status = data['status']\n\t\treturn out\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { BedrockAgentCoreCodeInterpreterClient } from './client'\nimport {\n\tbedrockAgentCoreCodeInterpreterAuthSchema,\n\texecuteCodeInputSchema,\n\texecuteCommandInputSchema,\n\tinvokeResultSchema,\n\tlistFilesInputSchema,\n\treadFilesInputSchema,\n\tremoveFilesInputSchema,\n\tsessionIdInputSchema,\n\tsessionOutputSchema,\n\tstartCommandInputSchema,\n\tstartSessionInputSchema,\n\ttaskIdInputSchema,\n\twriteFilesInputSchema\n} from './contracts'\n\nconst id = 'bedrock-agentcore-code-interpreter'\n\nexport const bedrockAgentCoreCodeInterpreterStartSessionTool = defineTool({\n\tid: `${id}-start-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterStartSession',\n\tdescription:\n\t\t'Start a Bedrock AgentCore code interpreter session and return session_id. Use only when arbitrary code, commands, or temporary files are required and no purpose-built tool covers the task. Do not start it to build or edit supported deliverables.',\n\tinputSchema: startSessionInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).startSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStopSessionTool = defineTool({\n\tid: `${id}-stop-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterStopSession',\n\tdescription:\n\t\t'Stop a Bedrock AgentCore code interpreter session by session_id and release temporary resources. Call after interpreter work is complete.',\n\tinputSchema: sessionIdInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).stopSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterGetSessionTool = defineTool({\n\tid: `${id}-get-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterGetSession',\n\tdescription:\n\t\t'Get status and metadata for a Bedrock AgentCore code interpreter session. Use before continuing work on an existing session; this does not execute code.',\n\tinputSchema: sessionIdInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).getSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterExecuteCodeTool = defineTool({\n\tid: `${id}-execute-code`,\n\tname: 'bedrockAgentCoreCodeInterpreterExecuteCode',\n\tdescription:\n\t\t'Execute code in an active Bedrock AgentCore session. Use as a fallback for computation or automation with no dedicated tool. Do not replace purpose-built document, spreadsheet, presentation, PDF, image, render, or conversion tools.',\n\tinputSchema: executeCodeInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).executeCode(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterExecuteCommandTool = defineTool({\n\tid: `${id}-execute-command`,\n\tname: 'bedrockAgentCoreCodeInterpreterExecuteCommand',\n\tdescription:\n\t\t'Run a shell command in an active Bedrock AgentCore session. Use as a fallback for command-line work with no dedicated tool. Do not generate supported deliverables with command-line libraries when a purpose-built tool exists.',\n\tinputSchema: executeCommandInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).executeCommand(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStartCommandTool = defineTool({\n\tid: `${id}-start-command`,\n\tname: 'bedrockAgentCoreCodeInterpreterStartCommand',\n\tdescription:\n\t\t'Start a long-running command in an active Bedrock AgentCore session and return a task id. Use only for fallback command work that exceeds one call; poll with get-task.',\n\tinputSchema: startCommandInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).startCommand(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterGetTaskTool = defineTool({\n\tid: `${id}-get-task`,\n\tname: 'bedrockAgentCoreCodeInterpreterGetTask',\n\tdescription:\n\t\t'Get the status or result of an asynchronous Bedrock AgentCore command task. Use only with a task id returned by start-command; this does not start new work.',\n\tinputSchema: taskIdInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).getTask(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStopTaskTool = defineTool({\n\tid: `${id}-stop-task`,\n\tname: 'bedrockAgentCoreCodeInterpreterStopTask',\n\tdescription:\n\t\t'Stop an asynchronous Bedrock AgentCore command task. Use only with a task id returned by start-command when the running work should be cancelled.',\n\tinputSchema: taskIdInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).stopTask(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterListFilesTool = defineTool({\n\tid: `${id}-list-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterListFiles',\n\tdescription:\n\t\t'List temporary files in a Bedrock AgentCore session directory. Use to locate interpreter intermediates, not durable workspace files or ArtifactRefs.',\n\tinputSchema: listFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).listFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterReadFilesTool = defineTool({\n\tid: `${id}-read-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterReadFiles',\n\tdescription:\n\t\t'Read temporary files from a Bedrock AgentCore session by path. Use only within the interpreter workflow; use format-aware readers for supported ArtifactRefs.',\n\tinputSchema: readFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).readFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterWriteFilesTool = defineTool({\n\tid: `${id}-write-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterWriteFiles',\n\tdescription:\n\t\t'Write temporary text files into a Bedrock AgentCore session for intermediate computation. Do not use this as a final document builder or durable artifact store.',\n\tinputSchema: writeFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).writeFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterRemoveFilesTool = defineTool({\n\tid: `${id}-remove-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterRemoveFiles',\n\tdescription:\n\t\t'Remove temporary files from a Bedrock AgentCore session by path. Use only for interpreter cleanup; this does not delete durable workspace files or ArtifactRefs.',\n\tinputSchema: removeFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).removeFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterModule = defineModule({\n\tid,\n\ttitle: 'Bedrock AgentCore Code Interpreter',\n\tdescription:\n\t\t'General-purpose Bedrock AgentCore execution fallback for arbitrary code, commands, and temporary files when no purpose-built tool covers the task.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: bedrockAgentCoreCodeInterpreterAuthSchema },\n\tcategories: ['compute', 'sandbox', 'aws'],\n\tclassification: 'standard',\n\ttags: ['agentcore', 'exec'],\n\ttools: [\n\t\tbedrockAgentCoreCodeInterpreterStartSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterStopSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterGetSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterExecuteCodeTool,\n\t\tbedrockAgentCoreCodeInterpreterExecuteCommandTool,\n\t\tbedrockAgentCoreCodeInterpreterStartCommandTool,\n\t\tbedrockAgentCoreCodeInterpreterGetTaskTool,\n\t\tbedrockAgentCoreCodeInterpreterStopTaskTool,\n\t\tbedrockAgentCoreCodeInterpreterListFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterReadFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterWriteFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterRemoveFilesTool\n\t]\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"bedrock-agentcore-code-interpreter-F0dnrAm4.js","names":["#auth","#aws","#interpreterId","#base","#mapSession","#invoke"],"sources":["../src/vendors/bedrock-agentcore-code-interpreter/contracts.ts","../src/vendors/bedrock-agentcore-code-interpreter/client.ts","../src/vendors/bedrock-agentcore-code-interpreter/module.ts"],"sourcesContent":["/**\n * Amazon Bedrock AgentCore Code Interpreter contracts.\n */\n\nimport { z } from 'zod'\n\nexport const DEFAULT_CODE_INTERPRETER_ID = 'aws.codeinterpreter.v1'\nexport const MAX_CODE_CHARS = 200_000\nexport const MAX_COMMAND_CHARS = 20_000\nexport const MAX_FILE_PATHS = 50\nexport const MAX_WRITE_FILES = 20\nexport const MAX_FILE_TEXT = 500_000\n\nexport const bedrockAgentCoreCodeInterpreterAuthSchema = z.object({\n\taccess_key_id: z.string().min(1).describe('AWS access key id'),\n\tsecret_access_key: z.string().min(1).describe('AWS secret access key'),\n\tregion: z.string().min(1).describe('AWS region for Bedrock AgentCore'),\n\tsession_token: z.string().min(1).optional().describe('Optional session token'),\n\tcode_interpreter_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Code interpreter resource id (default aws.codeinterpreter.v1)')\n})\n\nexport type BedrockAgentCoreCodeInterpreterAuth = z.infer<typeof bedrockAgentCoreCodeInterpreterAuthSchema>\n\nconst sessionId = z.string().min(1).max(40).describe('Code interpreter session id')\n\nexport const startSessionInputSchema = z.object({\n\tname: z.string().min(1).max(100).optional().describe('Optional session name'),\n\tsession_timeout_seconds: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(28_800)\n\t\t.optional()\n\t\t.describe('Session TTL in seconds (default provider-side, max 8 hours)')\n})\n\nexport const sessionIdInputSchema = z.object({\n\tsession_id: sessionId\n})\n\nexport const sessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Session id'),\n\tcode_interpreter_id: z.string().optional().describe('Interpreter id'),\n\tcreated_at: z.string().optional().describe('Creation timestamp when returned'),\n\tstatus: z.string().optional().describe('Session status when returned')\n})\n\nexport const executeCodeInputSchema = z.object({\n\tsession_id: sessionId,\n\tcode: z.string().min(1).max(MAX_CODE_CHARS).describe('Source code to execute'),\n\tlanguage: z.string().min(1).max(40).optional().describe('Language (default python)')\n})\n\nexport const executeCommandInputSchema = z.object({\n\tsession_id: sessionId,\n\tcommand: z.string().min(1).max(MAX_COMMAND_CHARS).describe('Shell command to run')\n})\n\nexport const startCommandInputSchema = executeCommandInputSchema\n\nexport const taskIdInputSchema = z.object({\n\tsession_id: sessionId,\n\ttask_id: z.string().min(1).max(200).describe('Async task id from start-command')\n})\n\nexport const listFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tdirectory_path: z.string().max(1024).optional().describe('Directory path (default session root)')\n})\n\nexport const readFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tpaths: z.array(z.string().min(1).max(1024)).min(1).max(MAX_FILE_PATHS).describe('File paths to read')\n})\n\nexport const writeFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tfiles: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tpath: z.string().min(1).max(1024).describe('Path to write'),\n\t\t\t\ttext: z.string().max(MAX_FILE_TEXT).describe('Utf8 file contents')\n\t\t\t})\n\t\t)\n\t\t.min(1)\n\t\t.max(MAX_WRITE_FILES)\n\t\t.describe('Files to write')\n})\n\nexport const removeFilesInputSchema = z.object({\n\tsession_id: sessionId,\n\tpaths: z.array(z.string().min(1).max(1024)).min(1).max(MAX_FILE_PATHS).describe('Paths to remove')\n})\n\nexport const invokeResultSchema = z.object({\n\tsession_id: z.string(),\n\tname: z.string().describe('Invoke tool name'),\n\tresult: z.unknown().optional().describe('Provider result payload'),\n\traw: z.unknown().optional().describe('Full provider response when useful')\n})\n\nexport type StartSessionInput = z.infer<typeof startSessionInputSchema>\nexport type SessionIdInput = z.infer<typeof sessionIdInputSchema>\nexport type SessionOutput = z.infer<typeof sessionOutputSchema>\nexport type ExecuteCodeInput = z.infer<typeof executeCodeInputSchema>\nexport type ExecuteCommandInput = z.infer<typeof executeCommandInputSchema>\nexport type StartCommandInput = z.infer<typeof startCommandInputSchema>\nexport type TaskIdInput = z.infer<typeof taskIdInputSchema>\nexport type ListFilesInput = z.infer<typeof listFilesInputSchema>\nexport type ReadFilesInput = z.infer<typeof readFilesInputSchema>\nexport type WriteFilesInput = z.infer<typeof writeFilesInputSchema>\nexport type RemoveFilesInput = z.infer<typeof removeFilesInputSchema>\nexport type InvokeResult = z.infer<typeof invokeResultSchema>\n","/**\n * Bedrock AgentCore Code Interpreter client (AwsService SigV4).\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { AwsService } from '../../transport/aws-service'\nimport type { AwsServiceOptions } from '../../transport/aws-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tBedrockAgentCoreCodeInterpreterAuth,\n\tExecuteCodeInput,\n\tExecuteCommandInput,\n\tInvokeResult,\n\tListFilesInput,\n\tReadFilesInput,\n\tRemoveFilesInput,\n\tSessionIdInput,\n\tSessionOutput,\n\tStartCommandInput,\n\tStartSessionInput,\n\tTaskIdInput,\n\tWriteFilesInput\n} from './contracts'\nimport { DEFAULT_CODE_INTERPRETER_ID, bedrockAgentCoreCodeInterpreterAuthSchema } from './contracts'\n\nexport type BedrockAgentCoreCodeInterpreterClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class BedrockAgentCoreCodeInterpreterClient {\n\treadonly #auth: BedrockAgentCoreCodeInterpreterAuth\n\treadonly #aws: AwsService\n\treadonly #interpreterId: string\n\n\tconstructor(auth: BedrockAgentCoreCodeInterpreterAuth, options: BedrockAgentCoreCodeInterpreterClientOptions = {}) {\n\t\tconst parsed = bedrockAgentCoreCodeInterpreterAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Bedrock AgentCore Code Interpreter auth', {\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.#interpreterId = this.#auth.code_interpreter_id ?? DEFAULT_CODE_INTERPRETER_ID\n\t\tconst awsOptions: AwsServiceOptions = {\n\t\t\taccessKeyId: this.#auth.access_key_id,\n\t\t\tsecretAccessKey: this.#auth.secret_access_key,\n\t\t\tregion: this.#auth.region,\n\t\t\tservice: 'bedrock-agentcore',\n\t\t\tbaseURL: `https://bedrock-agentcore.${this.#auth.region}.amazonaws.com`,\n\t\t\tlabel: 'Bedrock AgentCore Code Interpreter'\n\t\t}\n\t\tif (options.fetch) awsOptions.fetch = options.fetch\n\t\tif (options.signal) awsOptions.signal = options.signal\n\t\tif (this.#auth.session_token) awsOptions.sessionToken = this.#auth.session_token\n\t\tthis.#aws = new AwsService(awsOptions)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): BedrockAgentCoreCodeInterpreterClient {\n\t\tconst auth = requireAuth(ctx, bedrockAgentCoreCodeInterpreterAuthSchema)\n\t\tconst options: BedrockAgentCoreCodeInterpreterClientOptions = {}\n\t\tif (ctx.fetch) options.fetch = ctx.fetch\n\t\tif (ctx.signal) options.signal = ctx.signal\n\t\treturn new BedrockAgentCoreCodeInterpreterClient(auth, options)\n\t}\n\n\t#base(): string {\n\t\treturn `/code-interpreters/${encodeURIComponent(this.#interpreterId)}`\n\t}\n\n\tasync startSession(input: StartSessionInput = {}): Promise<SessionOutput> {\n\t\tconst body: Record<string, unknown> = {}\n\t\tif (input.name) body['name'] = input.name\n\t\tif (input.session_timeout_seconds !== undefined) body['sessionTimeoutSeconds'] = input.session_timeout_seconds\n\t\tconst { data } = await this.#aws.put(`${this.#base()}/sessions/start`, body)\n\t\treturn this.#mapSession(data)\n\t}\n\n\tasync stopSession(input: SessionIdInput): Promise<SessionOutput> {\n\t\tconst { data } = await this.#aws.put(\n\t\t\t`${this.#base()}/sessions/stop?sessionId=${encodeURIComponent(input.session_id)}`,\n\t\t\t{}\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync getSession(input: SessionIdInput): Promise<SessionOutput> {\n\t\tconst { data } = await this.#aws.get(\n\t\t\t`${this.#base()}/sessions/get?sessionId=${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id)\n\t}\n\n\tasync executeCode(input: ExecuteCodeInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'executeCode', {\n\t\t\tlanguage: input.language ?? 'python',\n\t\t\tcode: input.code\n\t\t})\n\t}\n\n\tasync executeCommand(input: ExecuteCommandInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'executeCommand', { command: input.command })\n\t}\n\n\tasync startCommand(input: StartCommandInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'startCommandExecution', { command: input.command })\n\t}\n\n\tasync getTask(input: TaskIdInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'getTask', { taskId: input.task_id })\n\t}\n\n\tasync stopTask(input: TaskIdInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'stopTask', { taskId: input.task_id })\n\t}\n\n\tasync listFiles(input: ListFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'listFiles', {\n\t\t\tdirectoryPath: input.directory_path ?? ''\n\t\t})\n\t}\n\n\tasync readFiles(input: ReadFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'readFiles', { paths: input.paths })\n\t}\n\n\tasync writeFiles(input: WriteFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'writeFiles', {\n\t\t\tcontent: input.files.map((f) => ({ path: f.path, text: f.text }))\n\t\t})\n\t}\n\n\tasync removeFiles(input: RemoveFilesInput): Promise<InvokeResult> {\n\t\treturn this.#invoke(input.session_id, 'removeFiles', { paths: input.paths })\n\t}\n\n\tasync #invoke(sessionId: string, name: string, args: Record<string, unknown>): Promise<InvokeResult> {\n\t\tconst { data } = await this.#aws.post(\n\t\t\t`${this.#base()}/tools/invoke`,\n\t\t\t{ name, arguments: args },\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\t'x-amzn-code-interpreter-session-id': sessionId,\n\t\t\t\t\tAccept: 'application/json'\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\tconst out: InvokeResult = { session_id: sessionId, name, raw: data }\n\t\tif (isPlainObject(data)) {\n\t\t\tif ('result' in data) out.result = data['result']\n\t\t\telse out.result = data\n\t\t} else {\n\t\t\tout.result = data\n\t\t}\n\t\treturn out\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string): SessionOutput {\n\t\tif (!isPlainObject(data)) {\n\t\t\tif (fallbackSessionId) return { session_id: fallbackSessionId, code_interpreter_id: this.#interpreterId }\n\t\t\tthrow new ToolError('Unexpected session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(data['sessionId']) ? data['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) throw new ToolError('Session response missing sessionId', { code: 'upstream' })\n\t\tconst out: SessionOutput = {\n\t\t\tsession_id: sessionId,\n\t\t\tcode_interpreter_id: isString(data['codeInterpreterIdentifier'])\n\t\t\t\t? data['codeInterpreterIdentifier']\n\t\t\t\t: this.#interpreterId\n\t\t}\n\t\tif (isString(data['createdAt'])) out.created_at = data['createdAt']\n\t\tif (isString(data['status'])) out.status = data['status']\n\t\treturn out\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { BedrockAgentCoreCodeInterpreterClient } from './client'\nimport {\n\tbedrockAgentCoreCodeInterpreterAuthSchema,\n\texecuteCodeInputSchema,\n\texecuteCommandInputSchema,\n\tinvokeResultSchema,\n\tlistFilesInputSchema,\n\treadFilesInputSchema,\n\tremoveFilesInputSchema,\n\tsessionIdInputSchema,\n\tsessionOutputSchema,\n\tstartCommandInputSchema,\n\tstartSessionInputSchema,\n\ttaskIdInputSchema,\n\twriteFilesInputSchema\n} from './contracts'\n\nconst id = 'bedrock-agentcore-code-interpreter'\n\nexport const bedrockAgentCoreCodeInterpreterStartSessionTool = defineTool({\n\tid: `${id}-start-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterStartSession',\n\tdescription:\n\t\t'Start a Bedrock AgentCore code interpreter session and return session_id. Use only when arbitrary code, commands, or temporary files are required and no purpose-built tool covers the task. Do not start it to build or edit supported deliverables.',\n\tinputSchema: startSessionInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).startSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStopSessionTool = defineTool({\n\tid: `${id}-stop-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterStopSession',\n\tdescription:\n\t\t'Stop a Bedrock AgentCore code interpreter session by session_id and release temporary resources. Call after interpreter work is complete.',\n\tinputSchema: sessionIdInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).stopSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterGetSessionTool = defineTool({\n\tid: `${id}-get-session`,\n\tname: 'bedrockAgentCoreCodeInterpreterGetSession',\n\tdescription:\n\t\t'Get status and metadata for a Bedrock AgentCore code interpreter session. Use before continuing work on an existing session; this does not execute code.',\n\tinputSchema: sessionIdInputSchema,\n\toutputSchema: sessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).getSession(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterExecuteCodeTool = defineTool({\n\tid: `${id}-execute-code`,\n\tname: 'bedrockAgentCoreCodeInterpreterExecuteCode',\n\tdescription:\n\t\t'Execute code in an active Bedrock AgentCore session. Use as a fallback for computation or automation with no dedicated tool. Do not replace purpose-built document, spreadsheet, presentation, PDF, image, render, or conversion tools.',\n\tinputSchema: executeCodeInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).executeCode(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterExecuteCommandTool = defineTool({\n\tid: `${id}-execute-command`,\n\tname: 'bedrockAgentCoreCodeInterpreterExecuteCommand',\n\tdescription:\n\t\t'Run a shell command in an active Bedrock AgentCore session. Use as a fallback for command-line work with no dedicated tool. Do not generate supported deliverables with command-line libraries when a purpose-built tool exists.',\n\tinputSchema: executeCommandInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).executeCommand(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStartCommandTool = defineTool({\n\tid: `${id}-start-command`,\n\tname: 'bedrockAgentCoreCodeInterpreterStartCommand',\n\tdescription:\n\t\t'Start a long-running command in an active Bedrock AgentCore session and return a task id. Use only for fallback command work that exceeds one call; poll with get-task.',\n\tinputSchema: startCommandInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).startCommand(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterGetTaskTool = defineTool({\n\tid: `${id}-get-task`,\n\tname: 'bedrockAgentCoreCodeInterpreterGetTask',\n\tdescription:\n\t\t'Get the status or result of an asynchronous Bedrock AgentCore command task. Use only with a task id returned by start-command; this does not start new work.',\n\tinputSchema: taskIdInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).getTask(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterStopTaskTool = defineTool({\n\tid: `${id}-stop-task`,\n\tname: 'bedrockAgentCoreCodeInterpreterStopTask',\n\tdescription:\n\t\t'Stop an asynchronous Bedrock AgentCore command task. Use only with a task id returned by start-command when the running work should be cancelled.',\n\tinputSchema: taskIdInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).stopTask(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterListFilesTool = defineTool({\n\tid: `${id}-list-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterListFiles',\n\tdescription:\n\t\t'List temporary files in a Bedrock AgentCore session directory. Use to locate interpreter intermediates, not durable workspace files or ArtifactRefs.',\n\tinputSchema: listFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).listFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterReadFilesTool = defineTool({\n\tid: `${id}-read-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterReadFiles',\n\tdescription:\n\t\t'Read temporary files from a Bedrock AgentCore session by path. Use only within the interpreter workflow; use format-aware readers for supported ArtifactRefs.',\n\tinputSchema: readFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).readFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterWriteFilesTool = defineTool({\n\tid: `${id}-write-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterWriteFiles',\n\tdescription:\n\t\t'Write temporary text files into a Bedrock AgentCore session for intermediate computation. Do not use this as a final document builder or durable artifact store.',\n\tinputSchema: writeFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).writeFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterRemoveFilesTool = defineTool({\n\tid: `${id}-remove-files`,\n\tname: 'bedrockAgentCoreCodeInterpreterRemoveFiles',\n\tdescription:\n\t\t'Remove temporary files from a Bedrock AgentCore session by path. Use only for interpreter cleanup; this does not delete durable workspace files or ArtifactRefs.',\n\tinputSchema: removeFilesInputSchema,\n\toutputSchema: invokeResultSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => BedrockAgentCoreCodeInterpreterClient.fromContext(ctx).removeFiles(input)\n})\n\nexport const bedrockAgentCoreCodeInterpreterModule = defineModule({\n\tid,\n\ttitle: 'Bedrock AgentCore Code Interpreter',\n\tdescription:\n\t\t'General-purpose Bedrock AgentCore execution fallback for arbitrary code, commands, and temporary files when no purpose-built tool covers the task.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: bedrockAgentCoreCodeInterpreterAuthSchema },\n\tcategories: ['compute', 'sandbox', 'aws'],\n\tclassification: 'standard',\n\ttags: ['agentcore', 'exec'],\n\ttools: [\n\t\tbedrockAgentCoreCodeInterpreterStartSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterStopSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterGetSessionTool,\n\t\tbedrockAgentCoreCodeInterpreterExecuteCodeTool,\n\t\tbedrockAgentCoreCodeInterpreterExecuteCommandTool,\n\t\tbedrockAgentCoreCodeInterpreterStartCommandTool,\n\t\tbedrockAgentCoreCodeInterpreterGetTaskTool,\n\t\tbedrockAgentCoreCodeInterpreterStopTaskTool,\n\t\tbedrockAgentCoreCodeInterpreterListFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterReadFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterWriteFilesTool,\n\t\tbedrockAgentCoreCodeInterpreterRemoveFilesTool\n\t]\n})\n"],"mappings":";;;;;;;;;;AAMA,MAAa,8BAA8B;AAC3C,MAAa,iBAAiB;AAC9B,MAAa,oBAAoB;AACjC,MAAa,iBAAiB;AAC9B,MAAa,kBAAkB;AAC/B,MAAa,gBAAgB;AAE7B,MAAa,4CAA4C,EAAE,OAAO;CACjE,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,mBAAmB;CAC7D,mBAAmB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,uBAAuB;CACrE,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,kCAAkC;CACrE,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,wBAAwB;CAC7E,qBAAqB,EACnB,OAAO,CAAC,CACR,IAAI,CAAC,CAAC,CACN,SAAS,CAAC,CACV,SAAS,+DAA+D;AAC3E,CAAC;AAID,MAAM,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,6BAA6B;AAElF,MAAa,0BAA0B,EAAE,OAAO;CAC/C,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,uBAAuB;CAC5E,yBAAyB,EACvB,IAAI,CAAC,CACL,IAAI,CAAC,CAAC,CACN,IAAI,KAAM,CAAC,CACX,SAAS,CAAC,CACV,SAAS,6DAA6D;AACzE,CAAC;AAED,MAAa,uBAAuB,EAAE,OAAO,EAC5C,YAAY,UACb,CAAC;AAED,MAAa,sBAAsB,EAAE,OAAO;CAC3C,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,YAAY;CAC5C,qBAAqB,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,gBAAgB;CACpE,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,kCAAkC;CAC7E,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,8BAA8B;AACtE,CAAC;AAED,MAAa,yBAAyB,EAAE,OAAO;CAC9C,YAAY;CACZ,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,SAAS,wBAAwB;CAC7E,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,2BAA2B;AACpF,CAAC;AAED,MAAa,4BAA4B,EAAE,OAAO;CACjD,YAAY;CACZ,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,SAAS,sBAAsB;AAClF,CAAC;AAED,MAAa,0BAA0B;AAEvC,MAAa,oBAAoB,EAAE,OAAO;CACzC,YAAY;CACZ,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,kCAAkC;AAChF,CAAC;AAED,MAAa,uBAAuB,EAAE,OAAO;CAC5C,YAAY;CACZ,gBAAgB,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,uCAAuC;AACjG,CAAC;AAED,MAAa,uBAAuB,EAAE,OAAO;CAC5C,YAAY;CACZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAAkB,CAAC,CAAC,SAAS,oBAAoB;AACrG,CAAC;AAED,MAAa,wBAAwB,EAAE,OAAO;CAC7C,YAAY;CACZ,OAAO,EACL,MACA,EAAE,OAAO;EACR,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,eAAe;EAC1D,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,SAAS,oBAAoB;CAClE,CAAC,CACF,CAAC,CACA,IAAI,CAAC,CAAC,CACN,IAAA,EAAmB,CAAC,CACpB,SAAS,gBAAgB;AAC5B,CAAC;AAED,MAAa,yBAAyB,EAAE,OAAO;CAC9C,YAAY;CACZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAAkB,CAAC,CAAC,SAAS,iBAAiB;AAClG,CAAC;AAED,MAAa,qBAAqB,EAAE,OAAO;CAC1C,YAAY,EAAE,OAAO;CACrB,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,kBAAkB;CAC5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,yBAAyB;CACjE,KAAK,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,oCAAoC;AAC1E,CAAC;;;;;;ACvED,IAAa,wCAAb,MAAa,sCAAsC;CAClD;CACA;CACA;CAEA,YAAY,MAA2C,UAAwD,CAAC,GAAG;EAClH,MAAM,SAAS,0CAA0C,UAAU,IAAI;EACvE,IAAI,CAAC,OAAO,SACX,MAAM,IAAI,UAAU,mDAAmD;GACtE,MAAM;GACN,SAAS,EAAE,QAAQ,OAAO,MAAM,OAAO,KAAK,UAAU,MAAM,OAAO,EAAE;EACtE,CAAC;EAEF,KAAKA,QAAQ,OAAO;EACpB,KAAKE,iBAAiB,KAAKF,MAAM,uBAAA;EACjC,MAAM,aAAgC;GACrC,aAAa,KAAKA,MAAM;GACxB,iBAAiB,KAAKA,MAAM;GAC5B,QAAQ,KAAKA,MAAM;GACnB,SAAS;GACT,SAAS,6BAA6B,KAAKA,MAAM,OAAO;GACxD,OAAO;EACR;EACA,IAAI,QAAQ,OAAO,WAAW,QAAQ,QAAQ;EAC9C,IAAI,QAAQ,QAAQ,WAAW,SAAS,QAAQ;EAChD,IAAI,KAAKA,MAAM,eAAe,WAAW,eAAe,KAAKA,MAAM;EACnE,KAAKC,OAAO,IAAI,WAAW,UAAU;CACtC;CAEA,OAAO,YAAY,KAAyD;EAC3E,MAAM,OAAO,YAAY,KAAK,yCAAyC;EACvE,MAAM,UAAwD,CAAC;EAC/D,IAAI,IAAI,OAAO,QAAQ,QAAQ,IAAI;EACnC,IAAI,IAAI,QAAQ,QAAQ,SAAS,IAAI;EACrC,OAAO,IAAI,sCAAsC,MAAM,OAAO;CAC/D;CAEA,QAAgB;EACf,OAAO,sBAAsB,mBAAmB,KAAKC,cAAc;CACpE;CAEA,MAAM,aAAa,QAA2B,CAAC,GAA2B;EACzE,MAAM,OAAgC,CAAC;EACvC,IAAI,MAAM,MAAM,KAAK,UAAU,MAAM;EACrC,IAAI,MAAM,4BAA4B,KAAA,GAAW,KAAK,2BAA2B,MAAM;EACvF,MAAM,EAAE,SAAS,MAAM,KAAKD,KAAK,IAAI,GAAG,KAAKE,MAAM,EAAE,kBAAkB,IAAI;EAC3E,OAAO,KAAKC,YAAY,IAAI;CAC7B;CAEA,MAAM,YAAY,OAA+C;EAChE,MAAM,EAAE,SAAS,MAAM,KAAKH,KAAK,IAChC,GAAG,KAAKE,MAAM,EAAE,2BAA2B,mBAAmB,MAAM,UAAU,KAC9E,CAAC,CACF;EACA,OAAO,KAAKC,YAAY,MAAM,MAAM,UAAU;CAC/C;CAEA,MAAM,WAAW,OAA+C;EAC/D,MAAM,EAAE,SAAS,MAAM,KAAKH,KAAK,IAChC,GAAG,KAAKE,MAAM,EAAE,0BAA0B,mBAAmB,MAAM,UAAU,GAC9E;EACA,OAAO,KAAKC,YAAY,MAAM,MAAM,UAAU;CAC/C;CAEA,MAAM,YAAY,OAAgD;EACjE,OAAO,KAAKC,QAAQ,MAAM,YAAY,eAAe;GACpD,UAAU,MAAM,YAAY;GAC5B,MAAM,MAAM;EACb,CAAC;CACF;CAEA,MAAM,eAAe,OAAmD;EACvE,OAAO,KAAKA,QAAQ,MAAM,YAAY,kBAAkB,EAAE,SAAS,MAAM,QAAQ,CAAC;CACnF;CAEA,MAAM,aAAa,OAAiD;EACnE,OAAO,KAAKA,QAAQ,MAAM,YAAY,yBAAyB,EAAE,SAAS,MAAM,QAAQ,CAAC;CAC1F;CAEA,MAAM,QAAQ,OAA2C;EACxD,OAAO,KAAKA,QAAQ,MAAM,YAAY,WAAW,EAAE,QAAQ,MAAM,QAAQ,CAAC;CAC3E;CAEA,MAAM,SAAS,OAA2C;EACzD,OAAO,KAAKA,QAAQ,MAAM,YAAY,YAAY,EAAE,QAAQ,MAAM,QAAQ,CAAC;CAC5E;CAEA,MAAM,UAAU,OAA8C;EAC7D,OAAO,KAAKA,QAAQ,MAAM,YAAY,aAAa,EAClD,eAAe,MAAM,kBAAkB,GACxC,CAAC;CACF;CAEA,MAAM,UAAU,OAA8C;EAC7D,OAAO,KAAKA,QAAQ,MAAM,YAAY,aAAa,EAAE,OAAO,MAAM,MAAM,CAAC;CAC1E;CAEA,MAAM,WAAW,OAA+C;EAC/D,OAAO,KAAKA,QAAQ,MAAM,YAAY,cAAc,EACnD,SAAS,MAAM,MAAM,KAAK,OAAO;GAAE,MAAM,EAAE;GAAM,MAAM,EAAE;EAAK,EAAE,EACjE,CAAC;CACF;CAEA,MAAM,YAAY,OAAgD;EACjE,OAAO,KAAKA,QAAQ,MAAM,YAAY,eAAe,EAAE,OAAO,MAAM,MAAM,CAAC;CAC5E;CAEA,MAAMA,QAAQ,WAAmB,MAAc,MAAsD;EACpG,MAAM,EAAE,SAAS,MAAM,KAAKJ,KAAK,KAChC,GAAG,KAAKE,MAAM,EAAE,gBAChB;GAAE;GAAM,WAAW;EAAK,GACxB,EACC,SAAS;GACR,sCAAsC;GACtC,QAAQ;EACT,EACD,CACD;EACA,MAAM,MAAoB;GAAE,YAAY;GAAW;GAAM,KAAK;EAAK;EACnE,IAAI,cAAc,IAAI,GACrB,IAAI,YAAY,MAAM,IAAI,SAAS,KAAK;OACnC,IAAI,SAAS;OAElB,IAAI,SAAS;EAEd,OAAO;CACR;CAEA,YAAY,MAAe,mBAA2C;EACrE,IAAI,CAAC,cAAc,IAAI,GAAG;GACzB,IAAI,mBAAmB,OAAO;IAAE,YAAY;IAAmB,qBAAqB,KAAKD;GAAe;GACxG,MAAM,IAAI,UAAU,+BAA+B,EAAE,MAAM,WAAW,CAAC;EACxE;EACA,MAAM,YAAY,SAAS,KAAK,YAAY,IAAI,KAAK,eAAe;EACpE,IAAI,CAAC,WAAW,MAAM,IAAI,UAAU,sCAAsC,EAAE,MAAM,WAAW,CAAC;EAC9F,MAAM,MAAqB;GAC1B,YAAY;GACZ,qBAAqB,SAAS,KAAK,4BAA4B,IAC5D,KAAK,+BACL,KAAKA;EACT;EACA,IAAI,SAAS,KAAK,YAAY,GAAG,IAAI,aAAa,KAAK;EACvD,IAAI,SAAS,KAAK,SAAS,GAAG,IAAI,SAAS,KAAK;EAChD,OAAO;CACR;AACD;;;AC9JA,MAAM,KAAK;AAEX,MAAa,kDAAkD,WAAW;CACzE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,aAAa,KAAK;AACzG,CAAC;AAED,MAAa,iDAAiD,WAAW;CACxE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,YAAY,KAAK;AACxG,CAAC;AAED,MAAa,gDAAgD,WAAW;CACvE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,WAAW,KAAK;AACvG,CAAC;AAED,MAAa,iDAAiD,WAAW;CACxE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,YAAY,KAAK;AACxG,CAAC;AAED,MAAa,oDAAoD,WAAW;CAC3E,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,eAAe,KAAK;AAC3G,CAAC;AAED,MAAa,kDAAkD,WAAW;CACzE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,aAAa,KAAK;AACzG,CAAC;AAED,MAAa,6CAA6C,WAAW;CACpE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,QAAQ,KAAK;AACpG,CAAC;AAED,MAAa,8CAA8C,WAAW;CACrE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,SAAS,KAAK;AACrG,CAAC;AAED,MAAa,+CAA+C,WAAW;CACtE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtG,CAAC;AAED,MAAa,+CAA+C,WAAW;CACtE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtG,CAAC;AAED,MAAa,gDAAgD,WAAW;CACvE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,WAAW,KAAK;AACvG,CAAC;AAED,MAAa,iDAAiD,WAAW;CACxE,IAAI,GAAG,GAAG;CACV,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sCAAsC,YAAY,GAAG,CAAC,CAAC,YAAY,KAAK;AACxG,CAAC;AAED,MAAa,wCAAwC,aAAa;CACjE;CACA,OAAO;CACP,aACC;CACD,SAAS;CACT,MAAM;EAAE,MAAM;EAAU,QAAQ;CAA0C;CAC1E,YAAY;EAAC;EAAW;EAAW;CAAK;CACxC,gBAAgB;CAChB,MAAM,CAAC,aAAa,MAAM;CAC1B,OAAO;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AACD,CAAC"}
@@ -2,8 +2,8 @@ import { t as ToolError } from "./errors-DoSpNHvs.js";
2
2
  import { n as defineModule, r as defineTool } from "./define-ieoksEQ0.js";
3
3
  import { n as requireAuth } from "./provider-CgDAlg6K.js";
4
4
  import { t as artifactRefSchema } from "./artifact-D064mHfK.js";
5
- import { t as HttpService } from "./http-service-DDNCO1s4.js";
6
- import { m as s3AuthSchema, p as S3Client } from "./s3-Dj7Teh-A.js";
5
+ import { t as HttpService } from "./http-service-BMBIryAL.js";
6
+ import { m as s3AuthSchema, p as S3Client } from "./s3-CoZQRTfe.js";
7
7
  import { isNumber, isPlainObject, isString } from "es-toolkit";
8
8
  import { z } from "zod";
9
9
  import { compile } from "html-to-text";
@@ -425,4 +425,4 @@ const cloudflareBrowserModule = defineModule({
425
425
  //#endregion
426
426
  export { cloudflareBrowserViewportSchema as C, cloudflareBrowserStartSessionInputSchema as S, cloudflareBrowserRenderScreenshotInputSchema as _, cloudflareBrowserStartSessionTool as a, cloudflareBrowserSessionIdInputSchema as b, CloudflareBrowserClient as c, MAX_HTML_CHARS as d, cloudflareBrowserAuthSchema as f, cloudflareBrowserRenderPdfInputSchema as g, cloudflareBrowserRenderOutputSchema as h, cloudflareBrowserRenderScreenshotTool as i, plainTextFromHtml as l, cloudflareBrowserEngineSchema as m, cloudflareBrowserModule as n, cloudflareBrowserStopSessionTool as o, cloudflareBrowserClientAuthSchema as p, cloudflareBrowserRenderPdfTool as r, mintCloudflareBrowserCdpConnection as s, cloudflareBrowserGetSessionTool as t, titleFromHtml as u, cloudflareBrowserRenderSourceSchema as v, cloudflareBrowserSessionOutputSchema as x, cloudflareBrowserSessionAuthSchema as y };
427
427
 
428
- //# sourceMappingURL=cloudflare-browser-nLJdH5nG.js.map
428
+ //# sourceMappingURL=cloudflare-browser-D-HT43hu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-browser-nLJdH5nG.js","names":["#auth","#http","#storage","#engine","#mapSession","#renderAndStore"],"sources":["../src/vendors/cloudflare-browser/contracts.ts","../src/vendors/cloudflare-browser/domain.ts","../src/vendors/cloudflare-browser/client.ts","../src/vendors/cloudflare-browser/cdp.ts","../src/vendors/cloudflare-browser/module.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { artifactRefSchema } from '../../shared/artifact'\nimport { s3AuthSchema } from '../s3'\n\nexport const MAX_HTML_CHARS = 2_000_000\n\n/**\n * Cloudflare Browser Run engine (`?browser=`).\n * `chromium` is the product default (omit query). `kitesurf` is the lightweight Workers engine.\n */\nexport const cloudflareBrowserEngineSchema = z\n\t.enum(['chromium', 'kitesurf'])\n\t.describe(\n\t\t'Browser engine: kitesurf for cheaper agent screenshots/HTML extraction; chromium for pixel-perfect or complex sites (default)'\n\t)\n\nexport type CloudflareBrowserEngine = z.infer<typeof cloudflareBrowserEngineSchema>\n\nexport const cloudflareBrowserSessionAuthSchema = z.object({\n\taccount_id: z.string().min(1).describe('Cloudflare account id'),\n\tapi_token: z.string().min(1).describe('Cloudflare API token with Browser Rendering permission'),\n\tbrowser: cloudflareBrowserEngineSchema\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Default Browser Run engine for sessions and quick actions (chromium | kitesurf). Per-call browser overrides this when set.'\n\t\t)\n})\n\nexport const cloudflareBrowserClientAuthSchema = cloudflareBrowserSessionAuthSchema.extend({\n\tstorage: s3AuthSchema.optional().describe('Object storage required for rendered ArtifactRef output')\n})\n\nexport const cloudflareBrowserAuthSchema = cloudflareBrowserSessionAuthSchema.extend({\n\tstorage: s3AuthSchema.describe('Object storage for rendered ArtifactRef output')\n})\n\nexport type CloudflareBrowserAuth = z.infer<typeof cloudflareBrowserAuthSchema>\nexport type CloudflareBrowserClientAuth = z.infer<typeof cloudflareBrowserClientAuthSchema>\nexport type CloudflareBrowserSessionAuth = z.infer<typeof cloudflareBrowserSessionAuthSchema>\n\nexport const cloudflareBrowserStartSessionInputSchema = z.object({\n\tkeep_alive_seconds: z\n\t\t.int()\n\t\t.min(60)\n\t\t.max(600)\n\t\t.optional()\n\t\t.describe('How long the browser session remains available, from 60 to 600 seconds'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this session')\n})\n\nexport const cloudflareBrowserSessionIdInputSchema = z.object({\n\tsession_id: z.string().uuid().describe('Cloudflare browser session id')\n})\n\nexport const cloudflareBrowserSessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Cloudflare browser session id'),\n\tstatus: z.string().optional().describe('Current session status'),\n\twebsocket_debugger_url: z.string().optional().describe('WebSocket endpoint for Chrome DevTools Protocol'),\n\tdevtools_frontend_url: z.string().optional().describe('Hosted DevTools and live-view URL')\n})\n\nexport type CloudflareBrowserStartSessionInput = z.infer<typeof cloudflareBrowserStartSessionInputSchema>\nexport type CloudflareBrowserSessionIdInput = z.infer<typeof cloudflareBrowserSessionIdInputSchema>\nexport type CloudflareBrowserSessionOutput = z.infer<typeof cloudflareBrowserSessionOutputSchema>\n\nexport const cloudflareBrowserViewportSchema = z.object({\n\twidth: z.int().min(1).max(8_000).describe('Viewport width in CSS pixels'),\n\theight: z.int().min(1).max(8_000).describe('Viewport height in CSS pixels'),\n\tdevice_scale_factor: z.number().min(0.1).max(4).optional().describe('Device scale factor (default 1)')\n})\n\nexport const cloudflareBrowserRenderSourceSchema = z\n\t.object({\n\t\thtml: z.string().min(1).max(MAX_HTML_CHARS).optional().describe('HTML document body to render'),\n\t\turl: z.url().optional().describe('Absolute http(s) URL to open and render')\n\t})\n\t.refine((v) => Boolean(v.html?.trim() || v.url), {\n\t\tmessage: 'Provide html or url'\n\t})\n\t.refine((v) => !(v.html && v.url), {\n\t\tmessage: 'Provide only one of html or url'\n\t})\n\nexport const cloudflareBrowserRenderPdfInputSchema = z.object({\n\tsource: cloudflareBrowserRenderSourceSchema.describe('HTML string or URL to print'),\n\toutput_key: z.string().min(1).optional().describe('Object key for the PDF. Defaults under renders/'),\n\tfilename: z.string().min(1).optional().describe('Display filename for the result ArtifactRef'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this render')\n})\n\nexport const cloudflareBrowserRenderScreenshotInputSchema = z.object({\n\tsource: cloudflareBrowserRenderSourceSchema.describe('HTML string or URL to capture'),\n\toutput_key: z.string().min(1).optional().describe('Object key for the PNG. Defaults under renders/'),\n\tfilename: z.string().min(1).optional().describe('Display filename for the result ArtifactRef'),\n\tviewport: cloudflareBrowserViewportSchema.optional().describe('Optional screenshot viewport'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this capture')\n})\n\nexport const cloudflareBrowserRenderOutputSchema = z.object({\n\tresult: artifactRefSchema,\n\tkind: z.enum(['pdf', 'screenshot'])\n})\n\nexport type CloudflareBrowserViewport = z.infer<typeof cloudflareBrowserViewportSchema>\nexport type CloudflareBrowserRenderSource = z.infer<typeof cloudflareBrowserRenderSourceSchema>\nexport type CloudflareBrowserRenderPdfInput = z.infer<typeof cloudflareBrowserRenderPdfInputSchema>\nexport type CloudflareBrowserRenderScreenshotInput = z.infer<typeof cloudflareBrowserRenderScreenshotInputSchema>\nexport type CloudflareBrowserRenderOutput = z.infer<typeof cloudflareBrowserRenderOutputSchema>\n","/**\n * Cloudflare Browser Rendering payload helpers (no HTTP).\n * HTML → text / title via html-to-text (edge + node). No hand-rolled HTML parsers.\n */\n\nimport { compile } from 'html-to-text'\n\nimport { ToolError } from '../../core/errors'\nimport type { CloudflareBrowserEngine, CloudflareBrowserRenderSource } from './contracts'\n\n/**\n * Query bag for Browser Run `?browser=`.\n * Only emits when non-default (kitesurf); chromium is the API default when omitted.\n */\nexport function browserEngineQuery(\n\tengine: CloudflareBrowserEngine | undefined\n): { browser: 'kitesurf' } | Record<string, never> {\n\tif (engine === 'kitesurf') return { browser: 'kitesurf' }\n\treturn {}\n}\n\n/** Prefer per-call engine, then host auth default. */\nexport function resolveBrowserEngine(\n\toverride: CloudflareBrowserEngine | undefined,\n\tauthDefault: CloudflareBrowserEngine | undefined\n): CloudflareBrowserEngine | undefined {\n\treturn override ?? authDefault\n}\n\n/** Resource types blocked by default (no network subresources). */\nexport const blockedBrowserResourceTypes = [\n\t'document',\n\t'stylesheet',\n\t'image',\n\t'media',\n\t'font',\n\t'script',\n\t'texttrack',\n\t'xhr',\n\t'fetch',\n\t'prefetch',\n\t'eventsource',\n\t'websocket',\n\t'manifest',\n\t'signedexchange',\n\t'ping',\n\t'cspviolationreport',\n\t'preflight',\n\t'other'\n] as const\n\nconst htmlToPlainText = compile({\n\tdecodeEntities: true,\n\tpreserveNewlines: false,\n\twordwrap: false,\n\tselectors: [\n\t\t{ selector: 'script', format: 'skip' },\n\t\t{ selector: 'style', format: 'skip' },\n\t\t{ selector: 'noscript', format: 'skip' }\n\t]\n})\n\nconst htmlToTitle = compile({\n\tdecodeEntities: true,\n\twordwrap: false,\n\tbaseElements: { selectors: ['title'], orderBy: 'occurrence', returnDomByDefault: false },\n\tselectors: [{ selector: 'title', format: 'inline' }]\n})\n\nexport function sourceBody(source: CloudflareBrowserRenderSource): Record<string, unknown> {\n\tif (source.html) return { html: source.html }\n\tif (source.url) return { url: source.url }\n\tthrow new ToolError('Provide html or url', { code: 'bad_input' })\n}\n\nexport function assertBinaryPrefix(bytes: Uint8Array, kind: 'pdf' | 'screenshot'): void {\n\tif (kind === 'pdf') {\n\t\tconst sig = new TextEncoder().encode('%PDF-')\n\t\tconst ok = bytes.byteLength >= sig.byteLength && sig.every((b, i) => bytes[i] === b)\n\t\tif (!ok) throw new ToolError('Cloudflare Browser returned non-PDF body', { code: 'upstream' })\n\t\treturn\n\t}\n\tconst png = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])\n\tconst ok = bytes.byteLength >= png.byteLength && png.every((b, i) => bytes[i] === b)\n\tif (!ok) throw new ToolError('Cloudflare Browser returned non-PNG body', { code: 'upstream' })\n}\n\nexport function defaultRenderKey(kind: 'pdf' | 'screenshot', outputKey: string | undefined): string {\n\tif (outputKey) return outputKey\n\tconst stamp = Date.now()\n\treturn kind === 'pdf' ? `renders/${stamp}.pdf` : `renders/${stamp}.png`\n}\n\n/** Document title via html-to-text (not a hand-rolled HTML parser). */\nexport function titleFromHtml(html: string): string | undefined {\n\tconst title = htmlToTitle(html).trim()\n\treturn title.length > 0 ? title : undefined\n}\n\n/** Visible page text via html-to-text. */\nexport function plainTextFromHtml(html: string): string {\n\treturn htmlToPlainText(html).trim()\n}\n","/**\n * Cloudflare Browser Rendering vendor client (HTML/URL → PDF or screenshot).\n * Host: `new CloudflareBrowserClient(auth)`. Agent tools: `fromContext(ctx)`.\n */\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { isNumber, isPlainObject, isString } from 'es-toolkit'\nimport { artifactRefSchema } from '../../shared/artifact'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport { S3Client } from '../s3'\nimport type {\n\tCloudflareBrowserClientAuth,\n\tCloudflareBrowserEngine,\n\tCloudflareBrowserRenderOutput,\n\tCloudflareBrowserRenderPdfInput,\n\tCloudflareBrowserRenderScreenshotInput,\n\tCloudflareBrowserSessionIdInput,\n\tCloudflareBrowserSessionOutput,\n\tCloudflareBrowserStartSessionInput\n} from './contracts'\nimport {\n\tcloudflareBrowserClientAuthSchema,\n\tcloudflareBrowserRenderOutputSchema,\n\tcloudflareBrowserSessionOutputSchema\n} from './contracts'\nimport {\n\tassertBinaryPrefix,\n\tbrowserEngineQuery,\n\tdefaultRenderKey,\n\tresolveBrowserEngine,\n\tsourceBody,\n\ttitleFromHtml\n} from './domain'\n\nexport type CloudflareBrowserClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class CloudflareBrowserClient {\n\treadonly #auth: CloudflareBrowserClientAuth\n\treadonly #http: HttpService\n\treadonly #storage?: S3Client\n\n\tconstructor(auth: CloudflareBrowserClientAuth, options: CloudflareBrowserClientOptions = {}) {\n\t\tconst parsed = cloudflareBrowserClientAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Cloudflare Browser 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.#http = new HttpService({\n\t\t\t...options,\n\t\t\tbaseURL: `https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(this.#auth.account_id)}`,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.#auth.api_token}`\n\t\t\t},\n\t\t\ttimeout: 60_000,\n\t\t\tlabel: 'Cloudflare Browser'\n\t\t})\n\t\tif (this.#auth.storage) this.#storage = new S3Client(this.#auth.storage, options)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): CloudflareBrowserClient {\n\t\tconst auth = requireAuth(ctx, cloudflareBrowserClientAuthSchema)\n\t\treturn new CloudflareBrowserClient(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\tasync startSession(input: CloudflareBrowserStartSessionInput = {}): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.post('/browser-rendering/devtools/browser', undefined, {\n\t\t\tquery: {\n\t\t\t\t...(input.keep_alive_seconds !== undefined && { keep_alive: input.keep_alive_seconds * 1_000 }),\n\t\t\t\t...browserEngineQuery(this.#engine(input.browser))\n\t\t\t}\n\t\t})\n\t\treturn this.#mapSession(data, undefined, 'active')\n\t}\n\n\tasync getSession(input: CloudflareBrowserSessionIdInput): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.get(`/browser-rendering/devtools/session/${encodeURIComponent(input.session_id)}`)\n\t\treturn this.#mapSession(data, input.session_id, 'active')\n\t}\n\n\tasync stopSession(input: CloudflareBrowserSessionIdInput): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.delete(\n\t\t\t`/browser-rendering/devtools/browser/${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id, 'closing')\n\t}\n\n\t/** Browser Rendering PDF; store result in object storage. */\n\tasync renderPdf(input: CloudflareBrowserRenderPdfInput): Promise<CloudflareBrowserRenderOutput> {\n\t\treturn this.#renderAndStore('pdf', input)\n\t}\n\n\t/** Browser Rendering screenshot (PNG); store result in object storage. */\n\tasync renderScreenshot(input: CloudflareBrowserRenderScreenshotInput): Promise<CloudflareBrowserRenderOutput> {\n\t\treturn this.#renderAndStore('screenshot', input)\n\t}\n\n\t/**\n\t * One-shot rendered HTML for a URL or HTML source (Browser Rendering content API).\n\t * Not session-bound CDP; used for seam navigate/snapshot on Cloudflare.\n\t */\n\tasync fetchContent(input: {\n\t\turl?: string\n\t\thtml?: string\n\t\tbrowser?: CloudflareBrowserEngine\n\t}): Promise<{ html: string; title?: string }> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\t...sourceBody({\n\t\t\t\t...(input.url && { url: input.url }),\n\t\t\t\t...(input.html && { html: input.html })\n\t\t\t}),\n\t\t\tsetJavaScriptEnabled: true\n\t\t}\n\t\tconst { data } = await this.#http.post('/browser-rendering/content', body, {\n\t\t\tlabel: 'Cloudflare Browser content',\n\t\t\theaders: { 'Content-Type': 'application/json', Accept: 'text/html, application/json' },\n\t\t\tquery: browserEngineQuery(this.#engine(input.browser))\n\t\t})\n\t\tif (isString(data)) {\n\t\t\tconst out: { html: string; title?: string } = { html: data }\n\t\t\tconst title = titleFromHtml(data)\n\t\t\tif (title) out.title = title\n\t\t\treturn out\n\t\t}\n\t\tif (isPlainObject(data)) {\n\t\t\tconst result = data['result']\n\t\t\tconst html = isString(result) ? result : isString(data['html']) ? data['html'] : undefined\n\t\t\tif (html) {\n\t\t\t\tconst out: { html: string; title?: string } = { html }\n\t\t\t\tconst title = titleFromHtml(html)\n\t\t\t\tif (title) out.title = title\n\t\t\t\treturn out\n\t\t\t}\n\t\t}\n\t\tthrow new ToolError('Cloudflare Browser content response missing HTML', { code: 'upstream' })\n\t}\n\n\tasync #renderAndStore(\n\t\tkind: 'pdf' | 'screenshot',\n\t\tinput: CloudflareBrowserRenderPdfInput | CloudflareBrowserRenderScreenshotInput\n\t): Promise<CloudflareBrowserRenderOutput> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\t...sourceBody(input.source),\n\t\t\tsetJavaScriptEnabled: true\n\t\t}\n\t\tif (kind === 'pdf') {\n\t\t\tbody['preferCSSPageSize'] = true\n\t\t\tbody['printBackground'] = true\n\t\t} else {\n\t\t\tbody['fullPage'] = true\n\t\t\tbody['type'] = 'png'\n\t\t\tif ('viewport' in input && input.viewport) {\n\t\t\t\tconst viewport: Record<string, unknown> = {\n\t\t\t\t\twidth: input.viewport.width,\n\t\t\t\t\theight: input.viewport.height\n\t\t\t\t}\n\t\t\t\tif (input.viewport.device_scale_factor !== undefined) {\n\t\t\t\t\tviewport['deviceScaleFactor'] = input.viewport.device_scale_factor\n\t\t\t\t}\n\t\t\t\tbody['viewport'] = viewport\n\t\t\t}\n\t\t}\n\n\t\tconst path = kind === 'pdf' ? '/browser-rendering/pdf' : '/browser-rendering/screenshot'\n\t\tconst accept = kind === 'pdf' ? 'application/pdf' : 'image/png'\n\t\tconst { bytes } = await this.#http.bytes('POST', path, {\n\t\t\tlabel: `Cloudflare Browser ${kind}`,\n\t\t\tbody,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: accept\n\t\t\t},\n\t\t\tquery: browserEngineQuery(this.#engine(input.browser))\n\t\t})\n\t\tassertBinaryPrefix(bytes, kind)\n\n\t\tconst mediaType = kind === 'pdf' ? 'application/pdf' : 'image/png'\n\t\tconst key = defaultRenderKey(kind, input.output_key)\n\t\tconst filename = input.filename ?? (kind === 'pdf' ? 'render.pdf' : 'render.png')\n\t\tconst storage = this.#storage\n\t\tif (!storage) {\n\t\t\tthrow new ToolError('Cloudflare Browser rendering requires object storage', { code: 'bad_auth' })\n\t\t}\n\t\tawait storage.putBytes(key, bytes, mediaType)\n\n\t\tconst result = artifactRefSchema.parse({\n\t\t\tstore: 'object',\n\t\t\tkey,\n\t\t\tmedia_type: mediaType,\n\t\t\tfilename,\n\t\t\tbyte_length: bytes.byteLength\n\t\t})\n\t\treturn cloudflareBrowserRenderOutputSchema.parse({ result, kind })\n\t}\n\n\t#engine(override?: CloudflareBrowserEngine): CloudflareBrowserEngine | undefined {\n\t\treturn resolveBrowserEngine(override, this.#auth.browser)\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string, fallbackStatus?: string): CloudflareBrowserSessionOutput {\n\t\tconst payload = isPlainObject(data) && isPlainObject(data['result']) ? data['result'] : data\n\t\tif (!isPlainObject(payload)) {\n\t\t\tthrow new ToolError('Unexpected Cloudflare Browser session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(payload['sessionId']) ? payload['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) {\n\t\t\tthrow new ToolError('Cloudflare Browser session response missing sessionId', { code: 'upstream' })\n\t\t}\n\t\tconst output: CloudflareBrowserSessionOutput = { session_id: sessionId }\n\t\tif (isString(payload['status'])) {\n\t\t\toutput.status = payload['status']\n\t\t} else if (isString(payload['closeReason']) || isNumber(payload['endTime'])) {\n\t\t\toutput.status = 'closed'\n\t\t} else if (fallbackStatus) {\n\t\t\toutput.status = fallbackStatus\n\t\t}\n\t\tif (isString(payload['webSocketDebuggerUrl'])) {\n\t\t\toutput.websocket_debugger_url = payload['webSocketDebuggerUrl']\n\t\t}\n\t\tif (isString(payload['devtoolsFrontendUrl'])) {\n\t\t\toutput.devtools_frontend_url = payload['devtoolsFrontendUrl']\n\t\t}\n\t\treturn cloudflareBrowserSessionOutputSchema.parse(output)\n\t}\n}\n","/**\n * Cloudflare Browser Rendering CDP mint (no HTTP).\n * Turns a session payload into Playwright / AgentBrowser connection options.\n */\n\nimport { ToolError } from '../../core/errors'\nimport type { CloudflareBrowserEngine, CloudflareBrowserSessionOutput } from './contracts'\nimport { browserEngineQuery } from './domain'\n\nexport type CloudflareBrowserCdpConnection = {\n\tsession_id: string\n\twebsocket_url: string\n\t/**\n\t * Headers for the WebSocket upgrade when the host must attach the API token.\n\t * Cloudflare's webSocketDebuggerUrl is often self-contained; pass api_token when your\n\t * runtime requires Authorization on the upgrade.\n\t */\n\theaders: Record<string, string>\n\tlive_view_url?: string\n\tstatus?: string\n}\n\nexport type MintCloudflareBrowserCdpOptions = {\n\t/** Cloudflare API token — sets Authorization: Bearer when provided. */\n\tapi_token?: string\n\t/** Extra headers; caller keys win over defaults. */\n\theaders?: Record<string, string>\n\t/**\n\t * Ensure `browser=kitesurf` on the WebSocket URL when the session was started with Kitesurf\n\t * and the upstream URL omitted the query (idempotent if already present).\n\t */\n\tbrowser?: CloudflareBrowserEngine\n}\n\n/**\n * Append engine query params without clobbering existing search keys.\n */\nfunction withBrowserQuery(websocketUrl: string, engine: CloudflareBrowserEngine | undefined): string {\n\tconst extra = browserEngineQuery(engine)\n\tif (!('browser' in extra)) return websocketUrl\n\tconst url = new URL(websocketUrl)\n\tif (!url.searchParams.has('browser')) {\n\t\turl.searchParams.set('browser', extra.browser)\n\t}\n\treturn url.toString()\n}\n\n/**\n * Mint CDP connection options from a Cloudflare Browser session (startSession / getSession).\n */\nexport function mintCloudflareBrowserCdpConnection(\n\tsession: CloudflareBrowserSessionOutput,\n\toptions: MintCloudflareBrowserCdpOptions = {}\n): CloudflareBrowserCdpConnection {\n\tconst rawUrl = session.websocket_debugger_url?.trim()\n\tif (!rawUrl) {\n\t\tthrow new ToolError('Cloudflare Browser session has no websocket_debugger_url; start or get the session first', {\n\t\t\tcode: 'bad_input',\n\t\t\tdetails: { session_id: session.session_id }\n\t\t})\n\t}\n\n\tconst headers: Record<string, string> = {}\n\tif (options.api_token) {\n\t\theaders['Authorization'] = `Bearer ${options.api_token}`\n\t}\n\tif (options.headers) {\n\t\tObject.assign(headers, options.headers)\n\t}\n\n\tconst out: CloudflareBrowserCdpConnection = {\n\t\tsession_id: session.session_id,\n\t\twebsocket_url: withBrowserQuery(rawUrl, options.browser),\n\t\theaders\n\t}\n\tif (session.devtools_frontend_url) out.live_view_url = session.devtools_frontend_url\n\tif (session.status) out.status = session.status\n\treturn out\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { CloudflareBrowserClient } from './client'\nimport {\n\tcloudflareBrowserClientAuthSchema,\n\tcloudflareBrowserRenderOutputSchema,\n\tcloudflareBrowserRenderPdfInputSchema,\n\tcloudflareBrowserRenderScreenshotInputSchema,\n\tcloudflareBrowserSessionIdInputSchema,\n\tcloudflareBrowserSessionOutputSchema,\n\tcloudflareBrowserStartSessionInputSchema\n} from './contracts'\n\nexport const cloudflareBrowserRenderPdfTool = defineTool({\n\tid: 'cloudflare-browser-render-pdf',\n\tname: 'cloudflareBrowserRenderPdf',\n\tdescription:\n\t\t'Render HTML or a URL to a PDF via Cloudflare Browser Rendering. Writes the PDF to object storage and returns an ArtifactRef.',\n\tinputSchema: cloudflareBrowserRenderPdfInputSchema,\n\toutputSchema: cloudflareBrowserRenderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).renderPdf(input)\n})\n\nexport const cloudflareBrowserRenderScreenshotTool = defineTool({\n\tid: 'cloudflare-browser-render-screenshot',\n\tname: 'cloudflareBrowserRenderScreenshot',\n\tdescription:\n\t\t'Capture a PNG screenshot of HTML or a URL via Cloudflare Browser Rendering. Writes the image to object storage and returns an ArtifactRef.',\n\tinputSchema: cloudflareBrowserRenderScreenshotInputSchema,\n\toutputSchema: cloudflareBrowserRenderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).renderScreenshot(input)\n})\n\nexport const cloudflareBrowserStartSessionTool = defineTool({\n\tid: 'cloudflare-browser-start-session',\n\tname: 'cloudflareBrowserStartSession',\n\tdescription:\n\t\t'Start a Cloudflare Browser Run session for interactive browser control and return its connection metadata. This creates a session; it does not navigate or render content.',\n\tinputSchema: cloudflareBrowserStartSessionInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).startSession(input)\n})\n\nexport const cloudflareBrowserGetSessionTool = defineTool({\n\tid: 'cloudflare-browser-get-session',\n\tname: 'cloudflareBrowserGetSession',\n\tdescription:\n\t\t'Get the status and connection metadata for an existing Cloudflare Browser Run session. Use this to reconnect or check whether the session is still available.',\n\tinputSchema: cloudflareBrowserSessionIdInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).getSession(input)\n})\n\nexport const cloudflareBrowserStopSessionTool = defineTool({\n\tid: 'cloudflare-browser-stop-session',\n\tname: 'cloudflareBrowserStopSession',\n\tdescription: 'Close a Cloudflare Browser Run session by session id.',\n\tinputSchema: cloudflareBrowserSessionIdInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).stopSession(input)\n})\n\nexport const cloudflareBrowserModule = defineModule({\n\tid: 'cloudflare-browser',\n\ttitle: 'Cloudflare Browser Run',\n\tdescription:\n\t\t'Cloudflare Browser Run vendor pack for browser sessions plus HTML/URL PDF and screenshot quick actions.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: cloudflareBrowserClientAuthSchema },\n\tcategories: ['browser', 'cloudflare'],\n\tclassification: 'standard',\n\ttags: ['render', 'cdp', 'session'],\n\ttools: [\n\t\tcloudflareBrowserStartSessionTool,\n\t\tcloudflareBrowserGetSessionTool,\n\t\tcloudflareBrowserStopSessionTool,\n\t\tcloudflareBrowserRenderPdfTool,\n\t\tcloudflareBrowserRenderScreenshotTool\n\t]\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare-browser-D-HT43hu.js","names":["#auth","#http","#storage","#engine","#mapSession","#renderAndStore"],"sources":["../src/vendors/cloudflare-browser/contracts.ts","../src/vendors/cloudflare-browser/domain.ts","../src/vendors/cloudflare-browser/client.ts","../src/vendors/cloudflare-browser/cdp.ts","../src/vendors/cloudflare-browser/module.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { artifactRefSchema } from '../../shared/artifact'\nimport { s3AuthSchema } from '../s3'\n\nexport const MAX_HTML_CHARS = 2_000_000\n\n/**\n * Cloudflare Browser Run engine (`?browser=`).\n * `chromium` is the product default (omit query). `kitesurf` is the lightweight Workers engine.\n */\nexport const cloudflareBrowserEngineSchema = z\n\t.enum(['chromium', 'kitesurf'])\n\t.describe(\n\t\t'Browser engine: kitesurf for cheaper agent screenshots/HTML extraction; chromium for pixel-perfect or complex sites (default)'\n\t)\n\nexport type CloudflareBrowserEngine = z.infer<typeof cloudflareBrowserEngineSchema>\n\nexport const cloudflareBrowserSessionAuthSchema = z.object({\n\taccount_id: z.string().min(1).describe('Cloudflare account id'),\n\tapi_token: z.string().min(1).describe('Cloudflare API token with Browser Rendering permission'),\n\tbrowser: cloudflareBrowserEngineSchema\n\t\t.optional()\n\t\t.describe(\n\t\t\t'Default Browser Run engine for sessions and quick actions (chromium | kitesurf). Per-call browser overrides this when set.'\n\t\t)\n})\n\nexport const cloudflareBrowserClientAuthSchema = cloudflareBrowserSessionAuthSchema.extend({\n\tstorage: s3AuthSchema.optional().describe('Object storage required for rendered ArtifactRef output')\n})\n\nexport const cloudflareBrowserAuthSchema = cloudflareBrowserSessionAuthSchema.extend({\n\tstorage: s3AuthSchema.describe('Object storage for rendered ArtifactRef output')\n})\n\nexport type CloudflareBrowserAuth = z.infer<typeof cloudflareBrowserAuthSchema>\nexport type CloudflareBrowserClientAuth = z.infer<typeof cloudflareBrowserClientAuthSchema>\nexport type CloudflareBrowserSessionAuth = z.infer<typeof cloudflareBrowserSessionAuthSchema>\n\nexport const cloudflareBrowserStartSessionInputSchema = z.object({\n\tkeep_alive_seconds: z\n\t\t.int()\n\t\t.min(60)\n\t\t.max(600)\n\t\t.optional()\n\t\t.describe('How long the browser session remains available, from 60 to 600 seconds'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this session')\n})\n\nexport const cloudflareBrowserSessionIdInputSchema = z.object({\n\tsession_id: z.string().uuid().describe('Cloudflare browser session id')\n})\n\nexport const cloudflareBrowserSessionOutputSchema = z.object({\n\tsession_id: z.string().describe('Cloudflare browser session id'),\n\tstatus: z.string().optional().describe('Current session status'),\n\twebsocket_debugger_url: z.string().optional().describe('WebSocket endpoint for Chrome DevTools Protocol'),\n\tdevtools_frontend_url: z.string().optional().describe('Hosted DevTools and live-view URL')\n})\n\nexport type CloudflareBrowserStartSessionInput = z.infer<typeof cloudflareBrowserStartSessionInputSchema>\nexport type CloudflareBrowserSessionIdInput = z.infer<typeof cloudflareBrowserSessionIdInputSchema>\nexport type CloudflareBrowserSessionOutput = z.infer<typeof cloudflareBrowserSessionOutputSchema>\n\nexport const cloudflareBrowserViewportSchema = z.object({\n\twidth: z.int().min(1).max(8_000).describe('Viewport width in CSS pixels'),\n\theight: z.int().min(1).max(8_000).describe('Viewport height in CSS pixels'),\n\tdevice_scale_factor: z.number().min(0.1).max(4).optional().describe('Device scale factor (default 1)')\n})\n\nexport const cloudflareBrowserRenderSourceSchema = z\n\t.object({\n\t\thtml: z.string().min(1).max(MAX_HTML_CHARS).optional().describe('HTML document body to render'),\n\t\turl: z.url().optional().describe('Absolute http(s) URL to open and render')\n\t})\n\t.refine((v) => Boolean(v.html?.trim() || v.url), {\n\t\tmessage: 'Provide html or url'\n\t})\n\t.refine((v) => !(v.html && v.url), {\n\t\tmessage: 'Provide only one of html or url'\n\t})\n\nexport const cloudflareBrowserRenderPdfInputSchema = z.object({\n\tsource: cloudflareBrowserRenderSourceSchema.describe('HTML string or URL to print'),\n\toutput_key: z.string().min(1).optional().describe('Object key for the PDF. Defaults under renders/'),\n\tfilename: z.string().min(1).optional().describe('Display filename for the result ArtifactRef'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this render')\n})\n\nexport const cloudflareBrowserRenderScreenshotInputSchema = z.object({\n\tsource: cloudflareBrowserRenderSourceSchema.describe('HTML string or URL to capture'),\n\toutput_key: z.string().min(1).optional().describe('Object key for the PNG. Defaults under renders/'),\n\tfilename: z.string().min(1).optional().describe('Display filename for the result ArtifactRef'),\n\tviewport: cloudflareBrowserViewportSchema.optional().describe('Optional screenshot viewport'),\n\tbrowser: cloudflareBrowserEngineSchema.optional().describe('Override auth default engine for this capture')\n})\n\nexport const cloudflareBrowserRenderOutputSchema = z.object({\n\tresult: artifactRefSchema,\n\tkind: z.enum(['pdf', 'screenshot'])\n})\n\nexport type CloudflareBrowserViewport = z.infer<typeof cloudflareBrowserViewportSchema>\nexport type CloudflareBrowserRenderSource = z.infer<typeof cloudflareBrowserRenderSourceSchema>\nexport type CloudflareBrowserRenderPdfInput = z.infer<typeof cloudflareBrowserRenderPdfInputSchema>\nexport type CloudflareBrowserRenderScreenshotInput = z.infer<typeof cloudflareBrowserRenderScreenshotInputSchema>\nexport type CloudflareBrowserRenderOutput = z.infer<typeof cloudflareBrowserRenderOutputSchema>\n","/**\n * Cloudflare Browser Rendering payload helpers (no HTTP).\n * HTML → text / title via html-to-text (edge + node). No hand-rolled HTML parsers.\n */\n\nimport { compile } from 'html-to-text'\n\nimport { ToolError } from '../../core/errors'\nimport type { CloudflareBrowserEngine, CloudflareBrowserRenderSource } from './contracts'\n\n/**\n * Query bag for Browser Run `?browser=`.\n * Only emits when non-default (kitesurf); chromium is the API default when omitted.\n */\nexport function browserEngineQuery(\n\tengine: CloudflareBrowserEngine | undefined\n): { browser: 'kitesurf' } | Record<string, never> {\n\tif (engine === 'kitesurf') return { browser: 'kitesurf' }\n\treturn {}\n}\n\n/** Prefer per-call engine, then host auth default. */\nexport function resolveBrowserEngine(\n\toverride: CloudflareBrowserEngine | undefined,\n\tauthDefault: CloudflareBrowserEngine | undefined\n): CloudflareBrowserEngine | undefined {\n\treturn override ?? authDefault\n}\n\n/** Resource types blocked by default (no network subresources). */\nexport const blockedBrowserResourceTypes = [\n\t'document',\n\t'stylesheet',\n\t'image',\n\t'media',\n\t'font',\n\t'script',\n\t'texttrack',\n\t'xhr',\n\t'fetch',\n\t'prefetch',\n\t'eventsource',\n\t'websocket',\n\t'manifest',\n\t'signedexchange',\n\t'ping',\n\t'cspviolationreport',\n\t'preflight',\n\t'other'\n] as const\n\nconst htmlToPlainText = compile({\n\tdecodeEntities: true,\n\tpreserveNewlines: false,\n\twordwrap: false,\n\tselectors: [\n\t\t{ selector: 'script', format: 'skip' },\n\t\t{ selector: 'style', format: 'skip' },\n\t\t{ selector: 'noscript', format: 'skip' }\n\t]\n})\n\nconst htmlToTitle = compile({\n\tdecodeEntities: true,\n\twordwrap: false,\n\tbaseElements: { selectors: ['title'], orderBy: 'occurrence', returnDomByDefault: false },\n\tselectors: [{ selector: 'title', format: 'inline' }]\n})\n\nexport function sourceBody(source: CloudflareBrowserRenderSource): Record<string, unknown> {\n\tif (source.html) return { html: source.html }\n\tif (source.url) return { url: source.url }\n\tthrow new ToolError('Provide html or url', { code: 'bad_input' })\n}\n\nexport function assertBinaryPrefix(bytes: Uint8Array, kind: 'pdf' | 'screenshot'): void {\n\tif (kind === 'pdf') {\n\t\tconst sig = new TextEncoder().encode('%PDF-')\n\t\tconst ok = bytes.byteLength >= sig.byteLength && sig.every((b, i) => bytes[i] === b)\n\t\tif (!ok) throw new ToolError('Cloudflare Browser returned non-PDF body', { code: 'upstream' })\n\t\treturn\n\t}\n\tconst png = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])\n\tconst ok = bytes.byteLength >= png.byteLength && png.every((b, i) => bytes[i] === b)\n\tif (!ok) throw new ToolError('Cloudflare Browser returned non-PNG body', { code: 'upstream' })\n}\n\nexport function defaultRenderKey(kind: 'pdf' | 'screenshot', outputKey: string | undefined): string {\n\tif (outputKey) return outputKey\n\tconst stamp = Date.now()\n\treturn kind === 'pdf' ? `renders/${stamp}.pdf` : `renders/${stamp}.png`\n}\n\n/** Document title via html-to-text (not a hand-rolled HTML parser). */\nexport function titleFromHtml(html: string): string | undefined {\n\tconst title = htmlToTitle(html).trim()\n\treturn title.length > 0 ? title : undefined\n}\n\n/** Visible page text via html-to-text. */\nexport function plainTextFromHtml(html: string): string {\n\treturn htmlToPlainText(html).trim()\n}\n","/**\n * Cloudflare Browser Rendering vendor client (HTML/URL → PDF or screenshot).\n * Host: `new CloudflareBrowserClient(auth)`. Agent tools: `fromContext(ctx)`.\n */\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { isNumber, isPlainObject, isString } from 'es-toolkit'\nimport { artifactRefSchema } from '../../shared/artifact'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport { S3Client } from '../s3'\nimport type {\n\tCloudflareBrowserClientAuth,\n\tCloudflareBrowserEngine,\n\tCloudflareBrowserRenderOutput,\n\tCloudflareBrowserRenderPdfInput,\n\tCloudflareBrowserRenderScreenshotInput,\n\tCloudflareBrowserSessionIdInput,\n\tCloudflareBrowserSessionOutput,\n\tCloudflareBrowserStartSessionInput\n} from './contracts'\nimport {\n\tcloudflareBrowserClientAuthSchema,\n\tcloudflareBrowserRenderOutputSchema,\n\tcloudflareBrowserSessionOutputSchema\n} from './contracts'\nimport {\n\tassertBinaryPrefix,\n\tbrowserEngineQuery,\n\tdefaultRenderKey,\n\tresolveBrowserEngine,\n\tsourceBody,\n\ttitleFromHtml\n} from './domain'\n\nexport type CloudflareBrowserClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class CloudflareBrowserClient {\n\treadonly #auth: CloudflareBrowserClientAuth\n\treadonly #http: HttpService\n\treadonly #storage?: S3Client\n\n\tconstructor(auth: CloudflareBrowserClientAuth, options: CloudflareBrowserClientOptions = {}) {\n\t\tconst parsed = cloudflareBrowserClientAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Cloudflare Browser 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.#http = new HttpService({\n\t\t\t...options,\n\t\t\tbaseURL: `https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(this.#auth.account_id)}`,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.#auth.api_token}`\n\t\t\t},\n\t\t\ttimeout: 60_000,\n\t\t\tlabel: 'Cloudflare Browser'\n\t\t})\n\t\tif (this.#auth.storage) this.#storage = new S3Client(this.#auth.storage, options)\n\t}\n\n\tstatic fromContext(ctx: ToolContext): CloudflareBrowserClient {\n\t\tconst auth = requireAuth(ctx, cloudflareBrowserClientAuthSchema)\n\t\treturn new CloudflareBrowserClient(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\tasync startSession(input: CloudflareBrowserStartSessionInput = {}): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.post('/browser-rendering/devtools/browser', undefined, {\n\t\t\tquery: {\n\t\t\t\t...(input.keep_alive_seconds !== undefined && { keep_alive: input.keep_alive_seconds * 1_000 }),\n\t\t\t\t...browserEngineQuery(this.#engine(input.browser))\n\t\t\t}\n\t\t})\n\t\treturn this.#mapSession(data, undefined, 'active')\n\t}\n\n\tasync getSession(input: CloudflareBrowserSessionIdInput): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.get(`/browser-rendering/devtools/session/${encodeURIComponent(input.session_id)}`)\n\t\treturn this.#mapSession(data, input.session_id, 'active')\n\t}\n\n\tasync stopSession(input: CloudflareBrowserSessionIdInput): Promise<CloudflareBrowserSessionOutput> {\n\t\tconst { data } = await this.#http.delete(\n\t\t\t`/browser-rendering/devtools/browser/${encodeURIComponent(input.session_id)}`\n\t\t)\n\t\treturn this.#mapSession(data, input.session_id, 'closing')\n\t}\n\n\t/** Browser Rendering PDF; store result in object storage. */\n\tasync renderPdf(input: CloudflareBrowserRenderPdfInput): Promise<CloudflareBrowserRenderOutput> {\n\t\treturn this.#renderAndStore('pdf', input)\n\t}\n\n\t/** Browser Rendering screenshot (PNG); store result in object storage. */\n\tasync renderScreenshot(input: CloudflareBrowserRenderScreenshotInput): Promise<CloudflareBrowserRenderOutput> {\n\t\treturn this.#renderAndStore('screenshot', input)\n\t}\n\n\t/**\n\t * One-shot rendered HTML for a URL or HTML source (Browser Rendering content API).\n\t * Not session-bound CDP; used for seam navigate/snapshot on Cloudflare.\n\t */\n\tasync fetchContent(input: {\n\t\turl?: string\n\t\thtml?: string\n\t\tbrowser?: CloudflareBrowserEngine\n\t}): Promise<{ html: string; title?: string }> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\t...sourceBody({\n\t\t\t\t...(input.url && { url: input.url }),\n\t\t\t\t...(input.html && { html: input.html })\n\t\t\t}),\n\t\t\tsetJavaScriptEnabled: true\n\t\t}\n\t\tconst { data } = await this.#http.post('/browser-rendering/content', body, {\n\t\t\tlabel: 'Cloudflare Browser content',\n\t\t\theaders: { 'Content-Type': 'application/json', Accept: 'text/html, application/json' },\n\t\t\tquery: browserEngineQuery(this.#engine(input.browser))\n\t\t})\n\t\tif (isString(data)) {\n\t\t\tconst out: { html: string; title?: string } = { html: data }\n\t\t\tconst title = titleFromHtml(data)\n\t\t\tif (title) out.title = title\n\t\t\treturn out\n\t\t}\n\t\tif (isPlainObject(data)) {\n\t\t\tconst result = data['result']\n\t\t\tconst html = isString(result) ? result : isString(data['html']) ? data['html'] : undefined\n\t\t\tif (html) {\n\t\t\t\tconst out: { html: string; title?: string } = { html }\n\t\t\t\tconst title = titleFromHtml(html)\n\t\t\t\tif (title) out.title = title\n\t\t\t\treturn out\n\t\t\t}\n\t\t}\n\t\tthrow new ToolError('Cloudflare Browser content response missing HTML', { code: 'upstream' })\n\t}\n\n\tasync #renderAndStore(\n\t\tkind: 'pdf' | 'screenshot',\n\t\tinput: CloudflareBrowserRenderPdfInput | CloudflareBrowserRenderScreenshotInput\n\t): Promise<CloudflareBrowserRenderOutput> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\t...sourceBody(input.source),\n\t\t\tsetJavaScriptEnabled: true\n\t\t}\n\t\tif (kind === 'pdf') {\n\t\t\tbody['preferCSSPageSize'] = true\n\t\t\tbody['printBackground'] = true\n\t\t} else {\n\t\t\tbody['fullPage'] = true\n\t\t\tbody['type'] = 'png'\n\t\t\tif ('viewport' in input && input.viewport) {\n\t\t\t\tconst viewport: Record<string, unknown> = {\n\t\t\t\t\twidth: input.viewport.width,\n\t\t\t\t\theight: input.viewport.height\n\t\t\t\t}\n\t\t\t\tif (input.viewport.device_scale_factor !== undefined) {\n\t\t\t\t\tviewport['deviceScaleFactor'] = input.viewport.device_scale_factor\n\t\t\t\t}\n\t\t\t\tbody['viewport'] = viewport\n\t\t\t}\n\t\t}\n\n\t\tconst path = kind === 'pdf' ? '/browser-rendering/pdf' : '/browser-rendering/screenshot'\n\t\tconst accept = kind === 'pdf' ? 'application/pdf' : 'image/png'\n\t\tconst { bytes } = await this.#http.bytes('POST', path, {\n\t\t\tlabel: `Cloudflare Browser ${kind}`,\n\t\t\tbody,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: accept\n\t\t\t},\n\t\t\tquery: browserEngineQuery(this.#engine(input.browser))\n\t\t})\n\t\tassertBinaryPrefix(bytes, kind)\n\n\t\tconst mediaType = kind === 'pdf' ? 'application/pdf' : 'image/png'\n\t\tconst key = defaultRenderKey(kind, input.output_key)\n\t\tconst filename = input.filename ?? (kind === 'pdf' ? 'render.pdf' : 'render.png')\n\t\tconst storage = this.#storage\n\t\tif (!storage) {\n\t\t\tthrow new ToolError('Cloudflare Browser rendering requires object storage', { code: 'bad_auth' })\n\t\t}\n\t\tawait storage.putBytes(key, bytes, mediaType)\n\n\t\tconst result = artifactRefSchema.parse({\n\t\t\tstore: 'object',\n\t\t\tkey,\n\t\t\tmedia_type: mediaType,\n\t\t\tfilename,\n\t\t\tbyte_length: bytes.byteLength\n\t\t})\n\t\treturn cloudflareBrowserRenderOutputSchema.parse({ result, kind })\n\t}\n\n\t#engine(override?: CloudflareBrowserEngine): CloudflareBrowserEngine | undefined {\n\t\treturn resolveBrowserEngine(override, this.#auth.browser)\n\t}\n\n\t#mapSession(data: unknown, fallbackSessionId?: string, fallbackStatus?: string): CloudflareBrowserSessionOutput {\n\t\tconst payload = isPlainObject(data) && isPlainObject(data['result']) ? data['result'] : data\n\t\tif (!isPlainObject(payload)) {\n\t\t\tthrow new ToolError('Unexpected Cloudflare Browser session response', { code: 'upstream' })\n\t\t}\n\t\tconst sessionId = isString(payload['sessionId']) ? payload['sessionId'] : fallbackSessionId\n\t\tif (!sessionId) {\n\t\t\tthrow new ToolError('Cloudflare Browser session response missing sessionId', { code: 'upstream' })\n\t\t}\n\t\tconst output: CloudflareBrowserSessionOutput = { session_id: sessionId }\n\t\tif (isString(payload['status'])) {\n\t\t\toutput.status = payload['status']\n\t\t} else if (isString(payload['closeReason']) || isNumber(payload['endTime'])) {\n\t\t\toutput.status = 'closed'\n\t\t} else if (fallbackStatus) {\n\t\t\toutput.status = fallbackStatus\n\t\t}\n\t\tif (isString(payload['webSocketDebuggerUrl'])) {\n\t\t\toutput.websocket_debugger_url = payload['webSocketDebuggerUrl']\n\t\t}\n\t\tif (isString(payload['devtoolsFrontendUrl'])) {\n\t\t\toutput.devtools_frontend_url = payload['devtoolsFrontendUrl']\n\t\t}\n\t\treturn cloudflareBrowserSessionOutputSchema.parse(output)\n\t}\n}\n","/**\n * Cloudflare Browser Rendering CDP mint (no HTTP).\n * Turns a session payload into Playwright / AgentBrowser connection options.\n */\n\nimport { ToolError } from '../../core/errors'\nimport type { CloudflareBrowserEngine, CloudflareBrowserSessionOutput } from './contracts'\nimport { browserEngineQuery } from './domain'\n\nexport type CloudflareBrowserCdpConnection = {\n\tsession_id: string\n\twebsocket_url: string\n\t/**\n\t * Headers for the WebSocket upgrade when the host must attach the API token.\n\t * Cloudflare's webSocketDebuggerUrl is often self-contained; pass api_token when your\n\t * runtime requires Authorization on the upgrade.\n\t */\n\theaders: Record<string, string>\n\tlive_view_url?: string\n\tstatus?: string\n}\n\nexport type MintCloudflareBrowserCdpOptions = {\n\t/** Cloudflare API token — sets Authorization: Bearer when provided. */\n\tapi_token?: string\n\t/** Extra headers; caller keys win over defaults. */\n\theaders?: Record<string, string>\n\t/**\n\t * Ensure `browser=kitesurf` on the WebSocket URL when the session was started with Kitesurf\n\t * and the upstream URL omitted the query (idempotent if already present).\n\t */\n\tbrowser?: CloudflareBrowserEngine\n}\n\n/**\n * Append engine query params without clobbering existing search keys.\n */\nfunction withBrowserQuery(websocketUrl: string, engine: CloudflareBrowserEngine | undefined): string {\n\tconst extra = browserEngineQuery(engine)\n\tif (!('browser' in extra)) return websocketUrl\n\tconst url = new URL(websocketUrl)\n\tif (!url.searchParams.has('browser')) {\n\t\turl.searchParams.set('browser', extra.browser)\n\t}\n\treturn url.toString()\n}\n\n/**\n * Mint CDP connection options from a Cloudflare Browser session (startSession / getSession).\n */\nexport function mintCloudflareBrowserCdpConnection(\n\tsession: CloudflareBrowserSessionOutput,\n\toptions: MintCloudflareBrowserCdpOptions = {}\n): CloudflareBrowserCdpConnection {\n\tconst rawUrl = session.websocket_debugger_url?.trim()\n\tif (!rawUrl) {\n\t\tthrow new ToolError('Cloudflare Browser session has no websocket_debugger_url; start or get the session first', {\n\t\t\tcode: 'bad_input',\n\t\t\tdetails: { session_id: session.session_id }\n\t\t})\n\t}\n\n\tconst headers: Record<string, string> = {}\n\tif (options.api_token) {\n\t\theaders['Authorization'] = `Bearer ${options.api_token}`\n\t}\n\tif (options.headers) {\n\t\tObject.assign(headers, options.headers)\n\t}\n\n\tconst out: CloudflareBrowserCdpConnection = {\n\t\tsession_id: session.session_id,\n\t\twebsocket_url: withBrowserQuery(rawUrl, options.browser),\n\t\theaders\n\t}\n\tif (session.devtools_frontend_url) out.live_view_url = session.devtools_frontend_url\n\tif (session.status) out.status = session.status\n\treturn out\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { CloudflareBrowserClient } from './client'\nimport {\n\tcloudflareBrowserClientAuthSchema,\n\tcloudflareBrowserRenderOutputSchema,\n\tcloudflareBrowserRenderPdfInputSchema,\n\tcloudflareBrowserRenderScreenshotInputSchema,\n\tcloudflareBrowserSessionIdInputSchema,\n\tcloudflareBrowserSessionOutputSchema,\n\tcloudflareBrowserStartSessionInputSchema\n} from './contracts'\n\nexport const cloudflareBrowserRenderPdfTool = defineTool({\n\tid: 'cloudflare-browser-render-pdf',\n\tname: 'cloudflareBrowserRenderPdf',\n\tdescription:\n\t\t'Render HTML or a URL to a PDF via Cloudflare Browser Rendering. Writes the PDF to object storage and returns an ArtifactRef.',\n\tinputSchema: cloudflareBrowserRenderPdfInputSchema,\n\toutputSchema: cloudflareBrowserRenderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).renderPdf(input)\n})\n\nexport const cloudflareBrowserRenderScreenshotTool = defineTool({\n\tid: 'cloudflare-browser-render-screenshot',\n\tname: 'cloudflareBrowserRenderScreenshot',\n\tdescription:\n\t\t'Capture a PNG screenshot of HTML or a URL via Cloudflare Browser Rendering. Writes the image to object storage and returns an ArtifactRef.',\n\tinputSchema: cloudflareBrowserRenderScreenshotInputSchema,\n\toutputSchema: cloudflareBrowserRenderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).renderScreenshot(input)\n})\n\nexport const cloudflareBrowserStartSessionTool = defineTool({\n\tid: 'cloudflare-browser-start-session',\n\tname: 'cloudflareBrowserStartSession',\n\tdescription:\n\t\t'Start a Cloudflare Browser Run session for interactive browser control and return its connection metadata. This creates a session; it does not navigate or render content.',\n\tinputSchema: cloudflareBrowserStartSessionInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).startSession(input)\n})\n\nexport const cloudflareBrowserGetSessionTool = defineTool({\n\tid: 'cloudflare-browser-get-session',\n\tname: 'cloudflareBrowserGetSession',\n\tdescription:\n\t\t'Get the status and connection metadata for an existing Cloudflare Browser Run session. Use this to reconnect or check whether the session is still available.',\n\tinputSchema: cloudflareBrowserSessionIdInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).getSession(input)\n})\n\nexport const cloudflareBrowserStopSessionTool = defineTool({\n\tid: 'cloudflare-browser-stop-session',\n\tname: 'cloudflareBrowserStopSession',\n\tdescription: 'Close a Cloudflare Browser Run session by session id.',\n\tinputSchema: cloudflareBrowserSessionIdInputSchema,\n\toutputSchema: cloudflareBrowserSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareBrowserClient.fromContext(ctx).stopSession(input)\n})\n\nexport const cloudflareBrowserModule = defineModule({\n\tid: 'cloudflare-browser',\n\ttitle: 'Cloudflare Browser Run',\n\tdescription:\n\t\t'Cloudflare Browser Run vendor pack for browser sessions plus HTML/URL PDF and screenshot quick actions.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: cloudflareBrowserClientAuthSchema },\n\tcategories: ['browser', 'cloudflare'],\n\tclassification: 'standard',\n\ttags: ['render', 'cdp', 'session'],\n\ttools: [\n\t\tcloudflareBrowserStartSessionTool,\n\t\tcloudflareBrowserGetSessionTool,\n\t\tcloudflareBrowserStopSessionTool,\n\t\tcloudflareBrowserRenderPdfTool,\n\t\tcloudflareBrowserRenderScreenshotTool\n\t]\n})\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { t as ToolError } from "./errors-DoSpNHvs.js";
2
2
  import { n as defineModule, r as defineTool } from "./define-ieoksEQ0.js";
3
3
  import { n as requireAuth } from "./provider-CgDAlg6K.js";
4
- import { t as HttpService } from "./http-service-DDNCO1s4.js";
4
+ import { t as HttpService } from "./http-service-BMBIryAL.js";
5
5
  import { n as runBatchItems, t as batchResultSchema } from "./batch-Co1ujeAW.js";
6
6
  import { a as attachmentSchema, c as addressObject, l as addressObjectList, n as assertRecipientLimit, o as namedAddressSchema, t as assertEmailSize } from "./limits-hjrO8zUG.js";
7
7
  import { isNumber, isPlainObject, isString, pick } from "es-toolkit";
@@ -194,4 +194,4 @@ const cloudflareEmailModule = defineModule({
194
194
  //#endregion
195
195
  export { cloudflareEmailAuthSchema as a, cloudflareEmailSendInputSchema as c, CloudflareEmailClient as i, cloudflareEmailSendOutputSchema as l, cloudflareEmailSendBatchTool as n, cloudflareEmailSendBatchInputSchema as o, cloudflareEmailSendTool as r, cloudflareEmailSendBatchOutputSchema as s, cloudflareEmailModule as t };
196
196
 
197
- //# sourceMappingURL=cloudflare-email-CSRq8mRd.js.map
197
+ //# sourceMappingURL=cloudflare-email-BLI3z96V.js.map