alibabacloud-agentcore-sdk 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +15 -2
  2. package/dist/auth/index.cjs +6 -7
  3. package/dist/auth/index.cjs.map +1 -1
  4. package/dist/auth/index.js +5 -6
  5. package/dist/{chunk-RZNQGEGJ.cjs → chunk-25KH5XKG.cjs} +6 -6
  6. package/dist/{chunk-RZNQGEGJ.cjs.map → chunk-25KH5XKG.cjs.map} +1 -1
  7. package/dist/{chunk-A3WMLVJC.cjs → chunk-2TRT7RSV.cjs} +5 -7
  8. package/dist/chunk-2TRT7RSV.cjs.map +1 -0
  9. package/dist/{chunk-K3TE7625.js → chunk-3JXIMUUY.js} +2 -2
  10. package/dist/{chunk-UWPKFJYM.js → chunk-45S6S5WI.js} +13 -11
  11. package/dist/chunk-45S6S5WI.js.map +1 -0
  12. package/dist/{chunk-TWEO5XVM.cjs → chunk-5S55CTNM.cjs} +18 -20
  13. package/dist/chunk-5S55CTNM.cjs.map +1 -0
  14. package/dist/{chunk-JW62DVIC.js → chunk-5UQIUMSF.js} +3 -5
  15. package/dist/{chunk-JW62DVIC.js.map → chunk-5UQIUMSF.js.map} +1 -1
  16. package/dist/{chunk-ZWQBAJ5O.js → chunk-6NNPSP3O.js} +2 -2
  17. package/dist/{chunk-IUCLCPVV.js → chunk-76NTQYJB.js} +3 -3
  18. package/dist/{chunk-7Y263YIW.js → chunk-7AJ2V7RN.js} +5 -7
  19. package/dist/{chunk-7Y263YIW.js.map → chunk-7AJ2V7RN.js.map} +1 -1
  20. package/dist/{chunk-5ZOLHQXO.js → chunk-7UBN3SJI.js} +7 -9
  21. package/dist/{chunk-5ZOLHQXO.js.map → chunk-7UBN3SJI.js.map} +1 -1
  22. package/dist/{chunk-MZ5UWGXS.js → chunk-AEQ76QIO.js} +33 -5
  23. package/dist/chunk-AEQ76QIO.js.map +1 -0
  24. package/dist/{chunk-UBP5CHU7.js → chunk-AX3NM2DK.js} +5 -7
  25. package/dist/{chunk-UBP5CHU7.js.map → chunk-AX3NM2DK.js.map} +1 -1
  26. package/dist/{chunk-55XZZRKO.js → chunk-D45QSOR4.js} +4 -6
  27. package/dist/{chunk-55XZZRKO.js.map → chunk-D45QSOR4.js.map} +1 -1
  28. package/dist/{chunk-MICRSJ6R.js → chunk-EKLTJ65H.js} +2 -2
  29. package/dist/{chunk-RBAY4MO2.js → chunk-FG7K3EF7.js} +6 -8
  30. package/dist/{chunk-RBAY4MO2.js.map → chunk-FG7K3EF7.js.map} +1 -1
  31. package/dist/{chunk-PKYET77D.cjs → chunk-JK6KPDVW.cjs} +39 -41
  32. package/dist/chunk-JK6KPDVW.cjs.map +1 -0
  33. package/dist/{chunk-2E5EWEDG.cjs → chunk-KQTZUIMI.cjs} +10 -12
  34. package/dist/chunk-KQTZUIMI.cjs.map +1 -0
  35. package/dist/{chunk-ZLKYXRNM.js → chunk-KTKZCLYB.js} +3 -5
  36. package/dist/{chunk-ZLKYXRNM.js.map → chunk-KTKZCLYB.js.map} +1 -1
  37. package/dist/{chunk-RHY7Y43E.js → chunk-L74ASQWF.js} +8 -9
  38. package/dist/chunk-L74ASQWF.js.map +1 -0
  39. package/dist/{chunk-S7PWSJNP.cjs → chunk-LQM754U3.cjs} +5 -5
  40. package/dist/{chunk-S7PWSJNP.cjs.map → chunk-LQM754U3.cjs.map} +1 -1
  41. package/dist/{chunk-GYLT23D3.js → chunk-NI3U6RZL.js} +5 -5
  42. package/dist/{chunk-5JXA7JPS.js → chunk-NRYDUATX.js} +2 -2
  43. package/dist/{chunk-A3PF2SPD.cjs → chunk-NWWTBPYG.cjs} +5 -5
  44. package/dist/{chunk-A3PF2SPD.cjs.map → chunk-NWWTBPYG.cjs.map} +1 -1
  45. package/dist/{chunk-5RKN46UU.cjs → chunk-NXMTTQQK.cjs} +15 -15
  46. package/dist/{chunk-5RKN46UU.cjs.map → chunk-NXMTTQQK.cjs.map} +1 -1
  47. package/dist/{chunk-IF7LMBXC.js → chunk-PHVKSATD.js} +60 -16
  48. package/dist/chunk-PHVKSATD.js.map +1 -0
  49. package/dist/{chunk-RYXL25AI.js → chunk-PS3EAUMK.js} +2 -2
  50. package/dist/{chunk-ULJTQSLE.cjs → chunk-R7NVBTPK.cjs} +3 -3
  51. package/dist/{chunk-ULJTQSLE.cjs.map → chunk-R7NVBTPK.cjs.map} +1 -1
  52. package/dist/{chunk-YZP55W7S.cjs → chunk-RJCDBVZ6.cjs} +3 -3
  53. package/dist/{chunk-YZP55W7S.cjs.map → chunk-RJCDBVZ6.cjs.map} +1 -1
  54. package/dist/{chunk-LXHW6OT4.cjs → chunk-T26WN7TD.cjs} +19 -17
  55. package/dist/chunk-T26WN7TD.cjs.map +1 -0
  56. package/dist/{chunk-ZTWLCHCO.cjs → chunk-UKRJR66Y.cjs} +24 -26
  57. package/dist/chunk-UKRJR66Y.cjs.map +1 -0
  58. package/dist/{chunk-MWAHO47B.cjs → chunk-UMTUXOKE.cjs} +25 -27
  59. package/dist/chunk-UMTUXOKE.cjs.map +1 -0
  60. package/dist/{chunk-JSP7ZROS.cjs → chunk-V4A6MJ42.cjs} +36 -8
  61. package/dist/chunk-V4A6MJ42.cjs.map +1 -0
  62. package/dist/{chunk-BVZ7H2F5.cjs → chunk-VYOJJECB.cjs} +55 -56
  63. package/dist/chunk-VYOJJECB.cjs.map +1 -0
  64. package/dist/{chunk-ZLQ2IBTC.cjs → chunk-WRRIPTJP.cjs} +12 -12
  65. package/dist/{chunk-ZLQ2IBTC.cjs.map → chunk-WRRIPTJP.cjs.map} +1 -1
  66. package/dist/{chunk-QIZO3A4Y.cjs → chunk-ZIXZWQSP.cjs} +85 -41
  67. package/dist/chunk-ZIXZWQSP.cjs.map +1 -0
  68. package/dist/{chunk-RQRI6RCG.cjs → chunk-ZXPTDLXJ.cjs} +12 -14
  69. package/dist/chunk-ZXPTDLXJ.cjs.map +1 -0
  70. package/dist/collaboration/index.cjs +3 -3
  71. package/dist/collaboration/index.d.cts +2 -2
  72. package/dist/collaboration/index.d.ts +2 -2
  73. package/dist/collaboration/index.js +2 -2
  74. package/dist/controlplane/index.cjs +7 -8
  75. package/dist/controlplane/index.cjs.map +1 -1
  76. package/dist/controlplane/index.js +6 -7
  77. package/dist/{errors-D9OtcR-o.d.cts → errors-BGfCbCgs.d.cts} +4 -1
  78. package/dist/{errors-BjGO6N10.d.ts → errors-D_809AqR.d.ts} +4 -1
  79. package/dist/{google-adk-model-N47R7GB2.js → google-adk-model-V7SC6RQD.js} +3 -3
  80. package/dist/{google-adk-model-PDBKY5YZ.cjs → google-adk-model-WYWEQI4R.cjs} +13 -13
  81. package/dist/{google-adk-model-PDBKY5YZ.cjs.map → google-adk-model-WYWEQI4R.cjs.map} +1 -1
  82. package/dist/index.cjs +33 -35
  83. package/dist/index.cjs.map +1 -1
  84. package/dist/index.d.cts +2 -2
  85. package/dist/index.d.ts +2 -2
  86. package/dist/index.js +15 -17
  87. package/dist/index.js.map +1 -1
  88. package/dist/integrations/ai-sdk.cjs +3 -3
  89. package/dist/integrations/ai-sdk.js +2 -2
  90. package/dist/integrations/google-adk.cjs +14 -15
  91. package/dist/integrations/google-adk.cjs.map +1 -1
  92. package/dist/integrations/google-adk.js +10 -11
  93. package/dist/integrations/google-adk.js.map +1 -1
  94. package/dist/integrations/langchain.cjs +18 -19
  95. package/dist/integrations/langchain.cjs.map +1 -1
  96. package/dist/integrations/langchain.d.cts +3 -2
  97. package/dist/integrations/langchain.d.ts +3 -2
  98. package/dist/integrations/langchain.js +11 -12
  99. package/dist/integrations/langchain.js.map +1 -1
  100. package/dist/integrations/langgraph.cjs +10 -11
  101. package/dist/integrations/langgraph.cjs.map +1 -1
  102. package/dist/integrations/langgraph.d.cts +3 -2
  103. package/dist/integrations/langgraph.d.ts +3 -2
  104. package/dist/integrations/langgraph.js +9 -10
  105. package/dist/integrations/mastra.cjs +14 -15
  106. package/dist/integrations/mastra.cjs.map +1 -1
  107. package/dist/integrations/mastra.js +8 -9
  108. package/dist/integrations/mastra.js.map +1 -1
  109. package/dist/{langchain-adapter-DJsyjm5V.d.ts → langchain-adapter-CaTCXaeo.d.ts} +4 -2
  110. package/dist/{langchain-adapter-DFJdEX04.d.cts → langchain-adapter-DtxU7oAi.d.cts} +4 -2
  111. package/dist/{langchain-provider-PHL4UWNF.js → langchain-provider-JFWLKOGL.js} +26 -2
  112. package/dist/langchain-provider-JFWLKOGL.js.map +1 -0
  113. package/dist/{langchain-provider-NF5GIDQV.cjs → langchain-provider-UKO27CQA.cjs} +38 -14
  114. package/dist/langchain-provider-UKO27CQA.cjs.map +1 -0
  115. package/dist/mcp/index.cjs +3 -4
  116. package/dist/mcp/index.cjs.map +1 -1
  117. package/dist/mcp/index.js +2 -3
  118. package/dist/memory/index.cjs +6 -7
  119. package/dist/memory/index.cjs.map +1 -1
  120. package/dist/memory/index.d.cts +24 -2
  121. package/dist/memory/index.d.ts +24 -2
  122. package/dist/memory/index.js +5 -6
  123. package/dist/model/index.cjs +4 -5
  124. package/dist/model/index.cjs.map +1 -1
  125. package/dist/model/index.js +3 -4
  126. package/dist/runtime/index.cjs +7 -8
  127. package/dist/runtime/index.cjs.map +1 -1
  128. package/dist/runtime/index.js +6 -7
  129. package/dist/server/index.cjs +13 -15
  130. package/dist/server/index.cjs.map +1 -1
  131. package/dist/server/index.js +5 -7
  132. package/dist/server/index.js.map +1 -1
  133. package/dist/skill/index.cjs +4 -5
  134. package/dist/skill/index.cjs.map +1 -1
  135. package/dist/skill/index.js +3 -4
  136. package/package.json +1 -1
  137. package/dist/chunk-2E5EWEDG.cjs.map +0 -1
  138. package/dist/chunk-A3WMLVJC.cjs.map +0 -1
  139. package/dist/chunk-BVZ7H2F5.cjs.map +0 -1
  140. package/dist/chunk-IF7LMBXC.js.map +0 -1
  141. package/dist/chunk-JSP7ZROS.cjs.map +0 -1
  142. package/dist/chunk-LE5P3SJW.cjs +0 -16
  143. package/dist/chunk-LE5P3SJW.cjs.map +0 -1
  144. package/dist/chunk-LXHW6OT4.cjs.map +0 -1
  145. package/dist/chunk-MWAHO47B.cjs.map +0 -1
  146. package/dist/chunk-MZ5UWGXS.js.map +0 -1
  147. package/dist/chunk-NZL3VPJ2.js +0 -16
  148. package/dist/chunk-NZL3VPJ2.js.map +0 -1
  149. package/dist/chunk-PKYET77D.cjs.map +0 -1
  150. package/dist/chunk-QIZO3A4Y.cjs.map +0 -1
  151. package/dist/chunk-RHY7Y43E.js.map +0 -1
  152. package/dist/chunk-RQRI6RCG.cjs.map +0 -1
  153. package/dist/chunk-TWEO5XVM.cjs.map +0 -1
  154. package/dist/chunk-UWPKFJYM.js.map +0 -1
  155. package/dist/chunk-ZTWLCHCO.cjs.map +0 -1
  156. package/dist/langchain-provider-NF5GIDQV.cjs.map +0 -1
  157. package/dist/langchain-provider-PHL4UWNF.js.map +0 -1
  158. /package/dist/{chunk-K3TE7625.js.map → chunk-3JXIMUUY.js.map} +0 -0
  159. /package/dist/{chunk-ZWQBAJ5O.js.map → chunk-6NNPSP3O.js.map} +0 -0
  160. /package/dist/{chunk-IUCLCPVV.js.map → chunk-76NTQYJB.js.map} +0 -0
  161. /package/dist/{chunk-MICRSJ6R.js.map → chunk-EKLTJ65H.js.map} +0 -0
  162. /package/dist/{chunk-GYLT23D3.js.map → chunk-NI3U6RZL.js.map} +0 -0
  163. /package/dist/{chunk-5JXA7JPS.js.map → chunk-NRYDUATX.js.map} +0 -0
  164. /package/dist/{chunk-RYXL25AI.js.map → chunk-PS3EAUMK.js.map} +0 -0
  165. /package/dist/{google-adk-model-N47R7GB2.js.map → google-adk-model-V7SC6RQD.js.map} +0 -0
@@ -3,10 +3,8 @@
3
3
  var _chunkEGUKJE3Zcjs = require('./chunk-EGUKJE3Z.cjs');
4
4
 
5
5
 
6
- var _chunkLE5P3SJWcjs = require('./chunk-LE5P3SJW.cjs');
7
6
 
8
-
9
- var _chunkJSP7ZROScjs = require('./chunk-JSP7ZROS.cjs');
7
+ var _chunkV4A6MJ42cjs = require('./chunk-V4A6MJ42.cjs');
10
8
 
11
9
  // src/mcp/client.ts
12
10
  var _indexjs = require('@modelcontextprotocol/sdk/client/index.js');
@@ -32,15 +30,15 @@ var transportHeaders = /* @__PURE__ */ new Set([
32
30
  function mergeMCPHeaders(base, custom) {
33
31
  const result = { ...base };
34
32
  if (custom === void 0) return result;
35
- if (!custom || typeof custom !== "object" || Array.isArray(custom)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("MCP headers must be an object");
33
+ if (!custom || typeof custom !== "object" || Array.isArray(custom)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("MCP headers must be an object");
36
34
  const protectedNames = /* @__PURE__ */ new Set([...Object.keys(base).map((name) => name.toLowerCase()), ...transportHeaders, "authorization"]);
37
35
  const seen = /* @__PURE__ */ new Set();
38
36
  for (const [name, value] of Object.entries(custom)) {
39
- if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("Invalid MCP header name");
40
- if (typeof value !== "string" || /[\x00-\x1f\x7f]/.test(value)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("MCP header values must be strings without control characters");
37
+ if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("Invalid MCP header name");
38
+ if (typeof value !== "string" || /[\x00-\x1f\x7f]/.test(value)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("MCP header values must be strings without control characters");
41
39
  const folded = name.toLowerCase();
42
- if (protectedNames.has(folded)) throw new (0, _chunkJSP7ZROScjs.ConfigError)(`MCP header is protected: ${folded}`);
43
- if (seen.has(folded)) throw new (0, _chunkJSP7ZROScjs.ConfigError)(`Duplicate MCP header: ${folded}`);
40
+ if (protectedNames.has(folded)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)(`MCP header is protected: ${folded}`);
41
+ if (seen.has(folded)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)(`Duplicate MCP header: ${folded}`);
44
42
  seen.add(folded);
45
43
  Object.defineProperty(result, folded, { value, enumerable: true, configurable: true, writable: true });
46
44
  }
@@ -56,18 +54,18 @@ var MCPClient = (_class = class _MCPClient {
56
54
  constructor(options, descriptor) {;_class.prototype.__init.call(this);
57
55
  this.options = options;
58
56
  this.descriptor = descriptor;
59
- this.logger = _nullishCoalesce(options.logger, () => ( _chunkLE5P3SJWcjs.nullLogger));
57
+ this.logger = _nullishCoalesce(options.logger, () => ( _chunkV4A6MJ42cjs.nullLogger));
60
58
  this.timeouts = { sessionMs: _nullishCoalesce(options.sessionMs, () => ( 3e4)), metadataMs: _nullishCoalesce(options.metadataMs, () => ( 6e4)), toolMs: _nullishCoalesce(options.toolMs, () => ( 6e5)) };
61
- if (Object.values(this.timeouts).some((timeout) => !Number.isFinite(timeout) || timeout <= 0)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("MCP operation timeouts must be positive");
59
+ if (Object.values(this.timeouts).some((timeout) => !Number.isFinite(timeout) || timeout <= 0)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("MCP operation timeouts must be positive");
62
60
  if (options.transport !== "stdio") {
63
61
  let url;
64
62
  try {
65
63
  url = new URL(options.url);
66
64
  } catch (e) {
67
- throw new (0, _chunkJSP7ZROScjs.ConfigError)("Direct MCP URL must be HTTP(S)");
65
+ throw new (0, _chunkV4A6MJ42cjs.ConfigError)("Direct MCP URL must be HTTP(S)");
68
66
  }
69
- if (!["http:", "https:"].includes(url.protocol)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("Direct MCP URL must be HTTP(S)");
70
- if (options.transport !== void 0 && !["streamable-http", "sse"].includes(options.transport)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("MCP transport must be streamable-http, sse, or stdio");
67
+ if (!["http:", "https:"].includes(url.protocol)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("Direct MCP URL must be HTTP(S)");
68
+ if (options.transport !== void 0 && !["streamable-http", "sse"].includes(options.transport)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("MCP transport must be streamable-http, sse, or stdio");
71
69
  }
72
70
  this.logger.info("agentcore.mcp.client.created", { mode: descriptor ? "managed" : "direct", transport: _nullishCoalesce(options.transport, () => ( "streamable-http")), url: this.safeURL });
73
71
  }
@@ -235,4 +233,4 @@ var MCPClient = (_class = class _MCPClient {
235
233
 
236
234
 
237
235
  exports.mergeMCPHeaders = mergeMCPHeaders; exports.mcpServerURL = mcpServerURL; exports.MCPClient = MCPClient;
238
- //# sourceMappingURL=chunk-RQRI6RCG.cjs.map
236
+ //# sourceMappingURL=chunk-ZXPTDLXJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/chunk-ZXPTDLXJ.cjs","../src/mcp/client.ts","../src/mcp/headers.ts"],"names":[],"mappings":"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","file":"/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/chunk-ZXPTDLXJ.cjs","sourcesContent":[null,"import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport { StdioClientTransport, type StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { CallToolResultSchema, McpError, ErrorCode, type CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { inspect } from 'node:util';\nimport { ConfigError } from '../errors';\nimport { nullLogger, type Logger } from '../logging';\nimport type { MCPDescriptor } from '../controlplane/client';\nimport type { AgentConfig } from '../runtime/config';\nimport type { HeadersProvider } from '../model/client';\nimport { Tool, type ToolArguments } from '../integrations/common';\nimport { mergeMCPHeaders } from './headers';\n\nexport interface MCPTimeouts { sessionMs?: number; metadataMs?: number; toolMs?: number; }\nexport interface ManagedMCPOptions extends MCPTimeouts { headers?: Readonly<Record<string, string>>; credentialName?: string; }\nexport type DirectMCPOptions = ({ url: string; transport?: 'streamable-http' | 'sse'; headersProvider?: HeadersProvider } |\n { transport: 'stdio'; server: StdioServerParameters }) & MCPTimeouts & { logger?: Logger };\nexport interface MCPCallOptions { signal?: AbortSignal; }\ninterface Session {\n client: Client;\n transport: Transport;\n abort: AbortController;\n invalid: boolean;\n active: Set<Promise<unknown>>;\n closing?: Promise<void>;\n}\n\nexport function mcpServerURL(gatewayURL: string, id: string): string {\n const gateway = gatewayURL.replace(/\\/+$/, '').replace(/\\/(?:mcp|mcp-servers)$/, '');\n return `${gateway}/mcp-servers/${encodeURIComponent(id)}`;\n}\n\nexport class MCPClient {\n readonly descriptor?: MCPDescriptor;\n private readonly logger: Logger;\n private state?: Session;\n private opening?: Promise<Session>;\n private closed = false;\n private closing?: Promise<void>;\n private readonly timeouts: Required<MCPTimeouts>;\n\n private constructor(private readonly options: DirectMCPOptions, descriptor?: MCPDescriptor) {\n this.descriptor = descriptor;\n this.logger = options.logger ?? nullLogger;\n this.timeouts = { sessionMs: options.sessionMs ?? 30_000, metadataMs: options.metadataMs ?? 60_000, toolMs: options.toolMs ?? 600_000 };\n if (Object.values(this.timeouts).some((timeout) => !Number.isFinite(timeout) || timeout <= 0)) throw new ConfigError('MCP operation timeouts must be positive');\n if (options.transport !== 'stdio') {\n let url: URL;\n try { url = new URL(options.url); } catch { throw new ConfigError('Direct MCP URL must be HTTP(S)'); }\n if (!['http:', 'https:'].includes(url.protocol)) throw new ConfigError('Direct MCP URL must be HTTP(S)');\n if (options.transport !== undefined && !['streamable-http', 'sse'].includes(options.transport)) throw new ConfigError('MCP transport must be streamable-http, sse, or stdio');\n }\n this.logger.info('agentcore.mcp.client.created', { mode: descriptor ? 'managed' : 'direct', transport: options.transport ?? 'streamable-http', url: this.safeURL });\n }\n static platform(config: AgentConfig, descriptor: MCPDescriptor, options: Omit<ManagedMCPOptions, 'credentialName'> & {\n logger?: Logger; credentialHeadersProvider?: () => Promise<Record<string, string>>;\n } = {}): MCPClient {\n const { headers: custom, credentialHeadersProvider, ...connectionOptions } = options;\n const customHeaders = mergeMCPHeaders({}, custom);\n const headers = mergeMCPHeaders(config.gatewayHeaders, custom);\n return new MCPClient({ ...connectionOptions, url: mcpServerURL(config.mcpGatewayUrl, descriptor.mcpServerId), transport: 'streamable-http', headersProvider: async () => {\n if (!credentialHeadersProvider) return headers;\n const bound = mergeMCPHeaders(config.gatewayHeaders, await credentialHeadersProvider());\n return mergeMCPHeaders(bound, customHeaders);\n } }, descriptor);\n }\n static direct(options: DirectMCPOptions): MCPClient { return new MCPClient(options); }\n\n async listTools(options: MCPCallOptions = {}): Promise<Tool[]> {\n return this.withSession('list_tools', async (session) => {\n const definitions: Awaited<ReturnType<Client['listTools']>>['tools'] = [];\n let cursor: string | undefined;\n const deadline = AbortSignal.timeout(this.timeouts.metadataMs);\n const signal = AbortSignal.any([deadline, ...(options.signal ? [options.signal] : [])]);\n do {\n const result = await session.client.listTools(cursor ? { cursor } : undefined, { signal, timeout: this.timeouts.metadataMs });\n definitions.push(...result.tools); cursor = result.nextCursor;\n } while (cursor);\n return definitions.map((definition) => new Tool({ name: definition.name, description: definition.description ?? '', parameters: definition.inputSchema,\n invoke: (arguments_) => this.callTool(definition.name, arguments_),\n }));\n });\n }\n async tools(options: MCPCallOptions = {}): Promise<Tool[]> { return this.listTools(options); }\n async callTool(name: string, arguments_: ToolArguments, options: MCPCallOptions = {}): Promise<CallToolResult> {\n return this.withSession('call_tool', (session) => session.client.callTool({ name, arguments: arguments_ }, CallToolResultSchema,\n { timeout: this.timeouts.toolMs, signal: options.signal }) as Promise<CallToolResult>);\n }\n\n close(): Promise<void> {\n if (this.closing) return this.closing;\n this.closed = true;\n this.closing = (async () => {\n if (this.opening && this.state) this.state.abort.abort();\n await this.opening?.catch(() => undefined);\n if (this.state) await this.retire(this.state);\n })();\n return this.closing;\n }\n [inspect.custom](): string { return `MCPClient(url=${this.safeURL}, <redacted>)`; }\n toJSON(): string { return this[inspect.custom](); }\n\n private get safeURL(): string {\n if (this.options.transport === 'stdio') return 'stdio';\n const url = new URL(this.options.url); return `${url.origin}${url.pathname}`;\n }\n private async acquire(): Promise<Session> {\n for (;;) {\n if (this.closed) throw new Error('MCP client is closed');\n if (this.opening) return this.opening;\n if (this.state?.invalid) { await this.retire(this.state); continue; }\n if (this.state) return this.state;\n const request = this.open(); this.opening = request;\n try { return await request; } finally { this.opening = undefined; }\n }\n }\n private async open(): Promise<Session> {\n const client = new Client({ name: 'agentcore-sdk', version: '0.1.0' });\n const abort = new AbortController();\n let transport: Transport;\n if (this.options.transport === 'stdio') transport = new StdioClientTransport(this.options.server);\n else {\n const headers = await this.options.headersProvider?.() ?? {};\n const fetch: typeof globalThis.fetch = (input, init) => globalThis.fetch(input, { ...init, redirect: 'manual', signal: AbortSignal.any([abort.signal, ...(init?.signal ? [init.signal] : [])]) });\n transport = this.options.transport === 'sse'\n ? new SSEClientTransport(new URL(this.options.url), { requestInit: { headers }, fetch })\n : new StreamableHTTPClientTransport(new URL(this.options.url), { requestInit: { headers }, fetch });\n }\n const session: Session = { client, transport, abort, invalid: false, active: new Set() };\n this.state = session;\n const timer = setTimeout(() => abort.abort(new Error('MCP session open timed out')), this.timeouts.sessionMs);\n client.onclose = () => { session.invalid = true; };\n client.onerror = (error) => {\n if (this.closed || session.closing) return;\n session.invalid = true;\n this.logger.warn('agentcore.mcp.session.error', { url: this.safeURL, errorType: error.name });\n };\n this.logger.info('agentcore.mcp.session.open.started', { url: this.safeURL, timeoutMs: this.timeouts.sessionMs });\n try {\n await client.connect(transport, { signal: abort.signal, timeout: this.timeouts.sessionMs });\n abort.signal.throwIfAborted();\n if (this.closed) throw new Error('MCP client is closed');\n this.logger.info('agentcore.mcp.session.open.succeeded', { url: this.safeURL });\n return session;\n } catch (error) { await this.retire(session); throw error; }\n finally { clearTimeout(timer); }\n }\n\n private async withSession<T>(operation: string, call: (session: Session) => Promise<T>): Promise<T> {\n const session = await this.acquire();\n if (this.closed) throw new Error('MCP client is closed');\n const request = call(session); session.active.add(request);\n this.logger.info('agentcore.mcp.request.started', { operation, url: this.safeURL });\n try { const result = await request; this.logger.info('agentcore.mcp.request.succeeded', { operation, url: this.safeURL }); return result; }\n catch (error) {\n if (!(error instanceof McpError) || [ErrorCode.ConnectionClosed, ErrorCode.RequestTimeout].includes(error.code)) session.invalid = true;\n this.logger.warn('agentcore.mcp.request.failed', { operation, url: this.safeURL, errorType: error instanceof Error ? error.name : 'unknown' });\n throw error;\n } finally { session.active.delete(request); }\n }\n private retire(session: Session): Promise<void> {\n if (session.closing) return session.closing;\n session.invalid = true;\n session.closing = (async () => {\n await Promise.allSettled([...session.active]);\n session.abort.abort();\n try { await session.client.close(); }\n catch (error) { this.logger.warn('agentcore.mcp.session.close.failed', { errorType: error instanceof Error ? error.name : 'unknown', url: this.safeURL }); }\n if (this.state === session) this.state = undefined;\n })();\n return session.closing;\n }\n}\n","import { ConfigError } from '../errors';\n\nconst transportHeaders = new Set([\n 'host', 'content-length', 'connection', 'transfer-encoding', 'upgrade',\n 'mcp-session-id', 'mcp-protocol-version', 'last-event-id', 'content-type', 'accept',\n]);\n\n/** Copy fixed headers, rejecting case-insensitive credential/transport conflicts. */\nexport function mergeMCPHeaders(base: Readonly<Record<string, string>>, custom?: Readonly<Record<string, string>>): Record<string, string> {\n const result = { ...base };\n if (custom === undefined) return result;\n if (!custom || typeof custom !== 'object' || Array.isArray(custom)) throw new ConfigError('MCP headers must be an object');\n const protectedNames = new Set([...Object.keys(base).map((name) => name.toLowerCase()), ...transportHeaders, 'authorization']);\n const seen = new Set<string>();\n for (const [name, value] of Object.entries(custom)) {\n if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) throw new ConfigError('Invalid MCP header name');\n if (typeof value !== 'string' || /[\\x00-\\x1f\\x7f]/.test(value)) throw new ConfigError('MCP header values must be strings without control characters');\n const folded = name.toLowerCase();\n if (protectedNames.has(folded)) throw new ConfigError(`MCP header is protected: ${folded}`);\n if (seen.has(folded)) throw new ConfigError(`Duplicate MCP header: ${folded}`);\n seen.add(folded);\n Object.defineProperty(result, folded, { value, enumerable: true, configurable: true, writable: true });\n }\n return result;\n}\n"]}
@@ -18,8 +18,8 @@
18
18
 
19
19
 
20
20
 
21
- var _chunkA3PF2SPDcjs = require('../chunk-A3PF2SPD.cjs');
22
- require('../chunk-JSP7ZROS.cjs');
21
+ var _chunkNWWTBPYGcjs = require('../chunk-NWWTBPYG.cjs');
22
+ require('../chunk-V4A6MJ42.cjs');
23
23
 
24
24
 
25
25
 
@@ -40,5 +40,5 @@ require('../chunk-JSP7ZROS.cjs');
40
40
 
41
41
 
42
42
 
43
- exports.CollaborationConfigError = _chunkA3PF2SPDcjs.CollaborationConfigError; exports.CollaborationContextError = _chunkA3PF2SPDcjs.CollaborationContextError; exports.CollaborationContextRequiredError = _chunkA3PF2SPDcjs.CollaborationContextRequiredError; exports.CollaborationDisabledError = _chunkA3PF2SPDcjs.CollaborationDisabledError; exports.CollaborationError = _chunkA3PF2SPDcjs.CollaborationError; exports.CollaborationFileTooLargeError = _chunkA3PF2SPDcjs.CollaborationFileTooLargeError; exports.CollaborationRoleUnsupportedError = _chunkA3PF2SPDcjs.CollaborationRoleUnsupportedError; exports.CollaborationTaskConflictError = _chunkA3PF2SPDcjs.CollaborationTaskConflictError; exports.CollaborationTaskInvalidError = _chunkA3PF2SPDcjs.CollaborationTaskInvalidError; exports.CollaborationTaskNotFoundError = _chunkA3PF2SPDcjs.CollaborationTaskNotFoundError; exports.CollaborationTaskUnauthorizedError = _chunkA3PF2SPDcjs.CollaborationTaskUnauthorizedError; exports.CollaborationTaskUnavailableError = _chunkA3PF2SPDcjs.CollaborationTaskUnavailableError; exports.CollaborationTeamUnavailableError = _chunkA3PF2SPDcjs.CollaborationTeamUnavailableError; exports.CollaborationToolArgumentError = _chunkA3PF2SPDcjs.CollaborationToolArgumentError; exports.CollaborationTurnContext = _chunkA3PF2SPDcjs.CollaborationTurnContext; exports.bindCollaborationContext = _chunkA3PF2SPDcjs.bindCollaborationContext; exports.currentCollaborationContext = _chunkA3PF2SPDcjs.currentCollaborationContext; exports.parseCollaborationContext = _chunkA3PF2SPDcjs.parseCollaborationContext; exports.useCollaborationContext = _chunkA3PF2SPDcjs.useCollaborationContext;
43
+ exports.CollaborationConfigError = _chunkNWWTBPYGcjs.CollaborationConfigError; exports.CollaborationContextError = _chunkNWWTBPYGcjs.CollaborationContextError; exports.CollaborationContextRequiredError = _chunkNWWTBPYGcjs.CollaborationContextRequiredError; exports.CollaborationDisabledError = _chunkNWWTBPYGcjs.CollaborationDisabledError; exports.CollaborationError = _chunkNWWTBPYGcjs.CollaborationError; exports.CollaborationFileTooLargeError = _chunkNWWTBPYGcjs.CollaborationFileTooLargeError; exports.CollaborationRoleUnsupportedError = _chunkNWWTBPYGcjs.CollaborationRoleUnsupportedError; exports.CollaborationTaskConflictError = _chunkNWWTBPYGcjs.CollaborationTaskConflictError; exports.CollaborationTaskInvalidError = _chunkNWWTBPYGcjs.CollaborationTaskInvalidError; exports.CollaborationTaskNotFoundError = _chunkNWWTBPYGcjs.CollaborationTaskNotFoundError; exports.CollaborationTaskUnauthorizedError = _chunkNWWTBPYGcjs.CollaborationTaskUnauthorizedError; exports.CollaborationTaskUnavailableError = _chunkNWWTBPYGcjs.CollaborationTaskUnavailableError; exports.CollaborationTeamUnavailableError = _chunkNWWTBPYGcjs.CollaborationTeamUnavailableError; exports.CollaborationToolArgumentError = _chunkNWWTBPYGcjs.CollaborationToolArgumentError; exports.CollaborationTurnContext = _chunkNWWTBPYGcjs.CollaborationTurnContext; exports.bindCollaborationContext = _chunkNWWTBPYGcjs.bindCollaborationContext; exports.currentCollaborationContext = _chunkNWWTBPYGcjs.currentCollaborationContext; exports.parseCollaborationContext = _chunkNWWTBPYGcjs.parseCollaborationContext; exports.useCollaborationContext = _chunkNWWTBPYGcjs.useCollaborationContext;
44
44
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  import { inspect } from 'node:util';
2
- import { C as ConfigError, a as ContextError, A as AgentCoreError } from '../errors-D9OtcR-o.cjs';
3
- export { b as CollaborationOptions, c as CollaborationRuntime, W as Worker } from '../errors-D9OtcR-o.cjs';
2
+ import { C as ConfigError, a as ContextError, A as AgentCoreError } from '../errors-BGfCbCgs.cjs';
3
+ export { b as CollaborationOptions, c as CollaborationRuntime, W as Worker } from '../errors-BGfCbCgs.cjs';
4
4
  import '../common-BSXkQfxI.cjs';
5
5
  import '../logging-C8GLLg1f.cjs';
6
6
  import '../loader-eWuJ2GSL.cjs';
@@ -1,6 +1,6 @@
1
1
  import { inspect } from 'node:util';
2
- import { C as ConfigError, a as ContextError, A as AgentCoreError } from '../errors-BjGO6N10.js';
3
- export { b as CollaborationOptions, c as CollaborationRuntime, W as Worker } from '../errors-BjGO6N10.js';
2
+ import { C as ConfigError, a as ContextError, A as AgentCoreError } from '../errors-D_809AqR.js';
3
+ export { b as CollaborationOptions, c as CollaborationRuntime, W as Worker } from '../errors-D_809AqR.js';
4
4
  import '../common-BSXkQfxI.js';
5
5
  import '../logging-C8GLLg1f.js';
6
6
  import '../loader-DrIQ37nm.js';
@@ -18,8 +18,8 @@ import {
18
18
  currentCollaborationContext,
19
19
  parseCollaborationContext,
20
20
  useCollaborationContext
21
- } from "../chunk-RYXL25AI.js";
22
- import "../chunk-MZ5UWGXS.js";
21
+ } from "../chunk-PS3EAUMK.js";
22
+ import "../chunk-AEQ76QIO.js";
23
23
  export {
24
24
  CollaborationConfigError,
25
25
  CollaborationContextError,
@@ -1,13 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkPKYET77Dcjs = require('../chunk-PKYET77D.cjs');
4
- require('../chunk-YZP55W7S.cjs');
5
- require('../chunk-RZNQGEGJ.cjs');
6
- require('../chunk-2E5EWEDG.cjs');
7
- require('../chunk-5RKN46UU.cjs');
8
- require('../chunk-LE5P3SJW.cjs');
9
- require('../chunk-JSP7ZROS.cjs');
3
+ var _chunkJK6KPDVWcjs = require('../chunk-JK6KPDVW.cjs');
4
+ require('../chunk-RJCDBVZ6.cjs');
5
+ require('../chunk-25KH5XKG.cjs');
6
+ require('../chunk-KQTZUIMI.cjs');
7
+ require('../chunk-NXMTTQQK.cjs');
8
+ require('../chunk-V4A6MJ42.cjs');
10
9
 
11
10
 
12
- exports.AgentCoreControlPlane = _chunkPKYET77Dcjs.AgentCoreControlPlane;
11
+ exports.AgentCoreControlPlane = _chunkJK6KPDVWcjs.AgentCoreControlPlane;
13
12
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/controlplane/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACF,wEAAC","file":"/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/controlplane/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/controlplane/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACF,wEAAC","file":"/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/controlplane/index.cjs"}
@@ -1,12 +1,11 @@
1
1
  import {
2
2
  AgentCoreControlPlane
3
- } from "../chunk-5ZOLHQXO.js";
4
- import "../chunk-5JXA7JPS.js";
5
- import "../chunk-IUCLCPVV.js";
6
- import "../chunk-UBP5CHU7.js";
7
- import "../chunk-K3TE7625.js";
8
- import "../chunk-NZL3VPJ2.js";
9
- import "../chunk-MZ5UWGXS.js";
3
+ } from "../chunk-7UBN3SJI.js";
4
+ import "../chunk-NRYDUATX.js";
5
+ import "../chunk-76NTQYJB.js";
6
+ import "../chunk-AX3NM2DK.js";
7
+ import "../chunk-3JXIMUUY.js";
8
+ import "../chunk-AEQ76QIO.js";
10
9
  export {
11
10
  AgentCoreControlPlane
12
11
  };
@@ -70,6 +70,7 @@ interface MemoryErrorDetails {
70
70
  serviceCode?: string;
71
71
  httpStatusCode?: number;
72
72
  requestId?: string;
73
+ serviceMessage?: string;
73
74
  }
74
75
  declare class MemoryAPIError extends AgentCoreError {
75
76
  readonly operation: string;
@@ -77,7 +78,9 @@ declare class MemoryAPIError extends AgentCoreError {
77
78
  readonly serviceCode?: string;
78
79
  readonly httpStatusCode?: number;
79
80
  readonly requestId?: string;
81
+ readonly serviceMessage?: string;
80
82
  constructor(operation: string, details?: MemoryErrorDetails);
83
+ protected summary(operation: string): string;
81
84
  }
82
85
  declare class MemoryContractError extends AgentCoreError {
83
86
  readonly operation: string;
@@ -87,7 +90,7 @@ declare class MemoryContractError extends AgentCoreError {
87
90
  }
88
91
  declare class AddMemoriesOutcomeUnknownError extends MemoryAPIError {
89
92
  readonly code = "ADD_MEMORIES_OUTCOME_UNKNOWN";
90
- constructor(operation: string, details?: MemoryErrorDetails);
93
+ protected summary(): string;
91
94
  }
92
95
 
93
96
  export { AgentCoreError as A, ConfigError as C, InvocationError as I, MCPServerNotFoundError as M, ResourceNotConfiguredError as R, UnsupportedFeatureError as U, type Worker as W, ContextError as a, type CollaborationOptions as b, type CollaborationRuntime as c, AddMemoriesOutcomeUnknownError as d, AuthenticationError as e, CredentialExchangeError as f, MemoryAPIError as g, MemoryContractError as h, type MemoryErrorDetails as i, MemoryValidationError as j, ModelConnectionNotFoundError as k, WorkloadAccessTokenRejectedError as l, WorkloadIdentityNotConfiguredError as m };
@@ -70,6 +70,7 @@ interface MemoryErrorDetails {
70
70
  serviceCode?: string;
71
71
  httpStatusCode?: number;
72
72
  requestId?: string;
73
+ serviceMessage?: string;
73
74
  }
74
75
  declare class MemoryAPIError extends AgentCoreError {
75
76
  readonly operation: string;
@@ -77,7 +78,9 @@ declare class MemoryAPIError extends AgentCoreError {
77
78
  readonly serviceCode?: string;
78
79
  readonly httpStatusCode?: number;
79
80
  readonly requestId?: string;
81
+ readonly serviceMessage?: string;
80
82
  constructor(operation: string, details?: MemoryErrorDetails);
83
+ protected summary(operation: string): string;
81
84
  }
82
85
  declare class MemoryContractError extends AgentCoreError {
83
86
  readonly operation: string;
@@ -87,7 +90,7 @@ declare class MemoryContractError extends AgentCoreError {
87
90
  }
88
91
  declare class AddMemoriesOutcomeUnknownError extends MemoryAPIError {
89
92
  readonly code = "ADD_MEMORIES_OUTCOME_UNKNOWN";
90
- constructor(operation: string, details?: MemoryErrorDetails);
93
+ protected summary(): string;
91
94
  }
92
95
 
93
96
  export { AgentCoreError as A, ConfigError as C, InvocationError as I, MCPServerNotFoundError as M, ResourceNotConfiguredError as R, UnsupportedFeatureError as U, type Worker as W, ContextError as a, type CollaborationOptions as b, type CollaborationRuntime as c, AddMemoriesOutcomeUnknownError as d, AuthenticationError as e, CredentialExchangeError as f, MemoryAPIError as g, MemoryContractError as h, type MemoryErrorDetails as i, MemoryValidationError as j, ModelConnectionNotFoundError as k, WorkloadAccessTokenRejectedError as l, WorkloadIdentityNotConfiguredError as m };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  languageModel
3
- } from "./chunk-MICRSJ6R.js";
3
+ } from "./chunk-EKLTJ65H.js";
4
4
  import "./chunk-WKZUYPDS.js";
5
5
  import "./chunk-PTJPB27L.js";
6
6
  import {
7
7
  ConfigError,
8
8
  InvocationError
9
- } from "./chunk-MZ5UWGXS.js";
9
+ } from "./chunk-AEQ76QIO.js";
10
10
 
11
11
  // src/integrations/google-adk-model.ts
12
12
  import { BaseLlm } from "@google/adk";
@@ -205,4 +205,4 @@ function completion(reason, usage) {
205
205
  export {
206
206
  AgentCoreLlm
207
207
  };
208
- //# sourceMappingURL=google-adk-model-N47R7GB2.js.map
208
+ //# sourceMappingURL=google-adk-model-V7SC6RQD.js.map
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkS7PWSJNPcjs = require('./chunk-S7PWSJNP.cjs');
3
+ var _chunkLQM754U3cjs = require('./chunk-LQM754U3.cjs');
4
4
  require('./chunk-PC4FM2RP.cjs');
5
5
  require('./chunk-ZELRQU4J.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkJSP7ZROScjs = require('./chunk-JSP7ZROS.cjs');
9
+ var _chunkV4A6MJ42cjs = require('./chunk-V4A6MJ42.cjs');
10
10
 
11
11
  // src/integrations/google-adk-model.ts
12
12
  var _adk = require('@google/adk');
@@ -15,10 +15,10 @@ var AgentCoreLlm = class extends _adk.BaseLlm {
15
15
 
16
16
  constructor(client) {
17
17
  super({ model: client.settings.model });
18
- this.delegate = _chunkS7PWSJNPcjs.languageModel.call(void 0, client);
18
+ this.delegate = _chunkLQM754U3cjs.languageModel.call(void 0, client);
19
19
  }
20
20
  async connect() {
21
- throw new (0, _chunkJSP7ZROScjs.ConfigError)("AgentCore models do not implement ADK bidirectional live connections");
21
+ throw new (0, _chunkV4A6MJ42cjs.ConfigError)("AgentCore models do not implement ADK bidirectional live connections");
22
22
  }
23
23
  async *generateContentAsync(request, stream = false, abortSignal) {
24
24
  const lifetime = new AbortController();
@@ -62,7 +62,7 @@ var AgentCoreLlm = class extends _adk.BaseLlm {
62
62
  yield { content: { role: "model", parts }, partial: false, turnComplete: true, ...completion(item.finishReason, item.usage) };
63
63
  }
64
64
  }
65
- if (!finished) throw new (0, _chunkJSP7ZROScjs.InvocationError)("model stream ended without a completion event");
65
+ if (!finished) throw new (0, _chunkV4A6MJ42cjs.InvocationError)("model stream ended without a completion event");
66
66
  } finally {
67
67
  lifetime.abort();
68
68
  reader.releaseLock();
@@ -85,7 +85,7 @@ function prompt(contents) {
85
85
  for (const [partIndex, part] of (_nullishCoalesce(content.parts, () => ( []))).entries()) {
86
86
  if (part.functionCall) {
87
87
  const call = part.functionCall;
88
- if (!assistant || !call.name) throw new (0, _chunkJSP7ZROScjs.ConfigError)("ADK functionCall requires a model message and tool name");
88
+ if (!assistant || !call.name) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("ADK functionCall requires a model message and tool name");
89
89
  const id = _nullishCoalesce(call.id, () => ( `call-${index}-${partIndex}`));
90
90
  pending.push({ id, name: call.name });
91
91
  group.push({ type: "tool-call", toolCallId: id, toolName: call.name, input: _nullishCoalesce(call.args, () => ( {})) });
@@ -93,7 +93,7 @@ function prompt(contents) {
93
93
  flush();
94
94
  const response = part.functionResponse;
95
95
  const match = pending.findIndex((call2) => response.id ? call2.id === response.id : call2.name === response.name);
96
- if (match < 0) throw new (0, _chunkJSP7ZROScjs.ConfigError)("ADK functionResponse has no matching functionCall");
96
+ if (match < 0) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("ADK functionResponse has no matching functionCall");
97
97
  const call = pending.splice(match, 1)[0];
98
98
  result.push({ role: "tool", content: [{
99
99
  type: "tool-result",
@@ -110,9 +110,9 @@ function prompt(contents) {
110
110
  else if (!part.thought) group.push({ type: "text", text: part.text });
111
111
  } else if (_optionalChain([part, 'access', _6 => _6.inlineData, 'optionalAccess', _7 => _7.data]) !== void 0 || _optionalChain([part, 'access', _8 => _8.fileData, 'optionalAccess', _9 => _9.fileUri])) {
112
112
  const mediaType = _nullishCoalesce(_optionalChain([part, 'access', _10 => _10.inlineData, 'optionalAccess', _11 => _11.mimeType]), () => ( _optionalChain([part, 'access', _12 => _12.fileData, 'optionalAccess', _13 => _13.mimeType])));
113
- if (!mediaType) throw new (0, _chunkJSP7ZROScjs.ConfigError)("ADK file content requires mimeType");
113
+ if (!mediaType) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("ADK file content requires mimeType");
114
114
  group.push({ type: "file", mediaType, data: _nullishCoalesce(_optionalChain([part, 'access', _14 => _14.inlineData, 'optionalAccess', _15 => _15.data]), () => ( new URL(part.fileData.fileUri))) });
115
- } else throw new (0, _chunkJSP7ZROScjs.ConfigError)("unsupported ADK content part for AgentCore models");
115
+ } else throw new (0, _chunkV4A6MJ42cjs.ConfigError)("unsupported ADK content part for AgentCore models");
116
116
  }
117
117
  flush();
118
118
  }
@@ -123,7 +123,7 @@ function systemText(value) {
123
123
  if (Array.isArray(value)) return value.map(systemText).join("\n");
124
124
  if ("parts" in value) return (_nullishCoalesce(value.parts, () => ( []))).map(systemText).join("\n");
125
125
  if ("text" in value && value.text !== void 0) return value.text;
126
- throw new (0, _chunkJSP7ZROScjs.ConfigError)("ADK system instruction must contain text");
126
+ throw new (0, _chunkV4A6MJ42cjs.ConfigError)("ADK system instruction must contain text");
127
127
  }
128
128
  function jsonSchema(value) {
129
129
  const schema = structuredClone(value);
@@ -146,11 +146,11 @@ function requestOptions(request, abortSignal) {
146
146
  if (config.systemInstruction) messages.unshift({ role: "system", content: systemText(config.systemInstruction) });
147
147
  const allowed = _nullishCoalesce(_optionalChain([config, 'access', _16 => _16.toolConfig, 'optionalAccess', _17 => _17.functionCallingConfig, 'optionalAccess', _18 => _18.allowedFunctionNames]), () => ( request.allowedTools));
148
148
  const declarations = (_nullishCoalesce(config.tools, () => ( []))).flatMap((tool) => {
149
- if (!("functionDeclarations" in tool)) throw new (0, _chunkJSP7ZROScjs.ConfigError)("Gemini built-in tools are not supported by AgentCore model protocols");
149
+ if (!("functionDeclarations" in tool)) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("Gemini built-in tools are not supported by AgentCore model protocols");
150
150
  return _nullishCoalesce(tool.functionDeclarations, () => ( []));
151
151
  }).filter((tool) => !allowed || allowed.includes(tool.name));
152
152
  const functions = declarations.map((tool) => {
153
- if (!tool.name) throw new (0, _chunkJSP7ZROScjs.ConfigError)("ADK function declaration requires a name");
153
+ if (!tool.name) throw new (0, _chunkV4A6MJ42cjs.ConfigError)("ADK function declaration requires a name");
154
154
  return {
155
155
  type: "function",
156
156
  name: tool.name,
@@ -205,4 +205,4 @@ function completion(reason, usage) {
205
205
 
206
206
 
207
207
  exports.AgentCoreLlm = AgentCoreLlm;
208
- //# sourceMappingURL=google-adk-model-PDBKY5YZ.cjs.map
208
+ //# sourceMappingURL=google-adk-model-WYWEQI4R.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/google-adk-model-PDBKY5YZ.cjs","../src/integrations/google-adk-model.ts"],"names":["result"],"mappings":"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","file":"/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/google-adk-model-PDBKY5YZ.cjs","sourcesContent":[null,"import { BaseLlm, type LlmRequest, type LlmResponse } from '@google/adk';\nimport { FinishReason, type Content, type ContentUnion, type Part } from '@google/genai';\nimport type { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3Content, LanguageModelV3FinishReason,\n LanguageModelV3Message, LanguageModelV3Prompt, LanguageModelV3Usage } from '@ai-sdk/provider';\nimport type { ModelClient, ProviderModelClient } from '../model';\nimport { ConfigError, InvocationError } from '../errors';\nimport { languageModel } from './ai-sdk';\n\n/** ADK owns the agent loop; AI SDK normalizes native and direct provider models. */\nexport class AgentCoreLlm extends BaseLlm {\n private readonly delegate: LanguageModelV3;\n constructor(client: ModelClient | ProviderModelClient) { super({ model: client.settings.model }); this.delegate = languageModel(client); }\n async connect(): Promise<never> { throw new ConfigError('AgentCore models do not implement ADK bidirectional live connections'); }\n async *generateContentAsync(request: LlmRequest, stream = false, abortSignal?: AbortSignal): AsyncGenerator<LlmResponse> {\n const lifetime = new AbortController();\n const signals = [lifetime.signal, abortSignal, request.config?.abortSignal].filter((value): value is AbortSignal => value !== undefined);\n const options = requestOptions(request, AbortSignal.any(signals));\n try {\n if (!stream) {\n const result = await this.delegate.doGenerate(options);\n yield { content: { role: 'model', parts: result.content.flatMap(outputParts) }, ...completion(result.finishReason, result.usage) };\n return;\n }\n const result = await this.delegate.doStream(options);\n const reader = result.stream.getReader();\n const parts: Part[] = []; const text = new Map<string, Part>(); let finished = false;\n try {\n while (true) {\n const next = await reader.read(); if (next.done) break;\n const item = next.value;\n if (item.type === 'error') throw item.error;\n if (item.type === 'text-delta' || item.type === 'reasoning-delta') {\n const key = `${item.type}:${item.id}`; let part = text.get(key);\n if (!part) { part = { text: '', ...(item.type === 'reasoning-delta' ? { thought: true } : {}) }; text.set(key, part); parts.push(part); }\n part.text += item.delta;\n yield { content: { role: 'model', parts: [{ text: item.delta, thought: part.thought }] }, partial: true, turnComplete: false };\n } else if (item.type === 'reasoning-end') {\n const signature = item.providerMetadata?.anthropic?.signature;\n const part = text.get(`reasoning-delta:${item.id}`);\n if (part && typeof signature === 'string') part.thoughtSignature = signature;\n } else if (item.type === 'tool-call' || item.type === 'file') {\n parts.push(...outputParts(item));\n } else if (item.type === 'finish') {\n finished = true;\n yield { content: { role: 'model', parts }, partial: false, turnComplete: true, ...completion(item.finishReason, item.usage) };\n }\n }\n if (!finished) throw new InvocationError('model stream ended without a completion event');\n } finally { lifetime.abort(); reader.releaseLock(); }\n } finally { lifetime.abort(); }\n }\n}\n\ntype ChatPart = Extract<LanguageModelV3Message, { role: 'assistant' }>['content'][number];\ntype UserPart = Extract<LanguageModelV3Message, { role: 'user' }>['content'][number];\nfunction prompt(contents: Content[]): LanguageModelV3Prompt {\n const result: LanguageModelV3Prompt = []; const pending: { name: string; id: string }[] = [];\n for (const [index, content] of contents.entries()) {\n const assistant = content.role === 'model'; let group: ChatPart[] = [];\n const flush = () => {\n if (group.length) result.push(assistant ? { role: 'assistant', content: group } : { role: 'user', content: group as UserPart[] });\n group = [];\n };\n for (const [partIndex, part] of (content.parts ?? []).entries()) {\n if (part.functionCall) {\n const call = part.functionCall;\n if (!assistant || !call.name) throw new ConfigError('ADK functionCall requires a model message and tool name');\n const id = call.id ?? `call-${index}-${partIndex}`; pending.push({ id, name: call.name });\n group.push({ type: 'tool-call', toolCallId: id, toolName: call.name, input: call.args ?? {} });\n } else if (part.functionResponse) {\n flush(); const response = part.functionResponse;\n const match = pending.findIndex(call => response.id ? call.id === response.id : call.name === response.name);\n if (match < 0) throw new ConfigError('ADK functionResponse has no matching functionCall');\n const call = pending.splice(match, 1)[0]!;\n result.push({ role: 'tool', content: [{ type: 'tool-result', toolCallId: call.id, toolName: call.name,\n output: { type: 'text', value: JSON.stringify(response.response ?? {}) } }] });\n } else if (part.text !== undefined) {\n if (part.thought && assistant) group.push({ type: 'reasoning', text: part.text,\n providerOptions: part.thoughtSignature ? { anthropic: { signature: part.thoughtSignature } } : undefined });\n else if (!part.thought) group.push({ type: 'text', text: part.text });\n } else if (part.inlineData?.data !== undefined || part.fileData?.fileUri) {\n const mediaType = part.inlineData?.mimeType ?? part.fileData?.mimeType;\n if (!mediaType) throw new ConfigError('ADK file content requires mimeType');\n group.push({ type: 'file', mediaType, data: part.inlineData?.data ?? new URL(part.fileData!.fileUri!) });\n } else throw new ConfigError('unsupported ADK content part for AgentCore models');\n }\n flush();\n }\n return result;\n}\nfunction systemText(value: ContentUnion): string {\n if (typeof value === 'string') return value;\n if (Array.isArray(value)) return value.map(systemText).join('\\n');\n if ('parts' in value) return (value.parts ?? []).map(systemText).join('\\n');\n if ('text' in value && value.text !== undefined) return value.text;\n throw new ConfigError('ADK system instruction must contain text');\n}\n/** Translate GenAI's OpenAPI-style Schema; native parametersJsonSchema bypasses this. */\nfunction jsonSchema(value: unknown): Record<string, unknown> {\n const schema = structuredClone(value) as Record<string, unknown>;\n if (typeof schema.type === 'string') schema.type = schema.type.toLowerCase();\n for (const key of ['minItems', 'maxItems', 'minLength', 'maxLength', 'minProperties', 'maxProperties']) {\n if (typeof schema[key] === 'string') schema[key] = Number(schema[key]);\n }\n if (Array.isArray(schema.enum) && (schema.type === 'integer' || schema.type === 'number')) schema.enum = schema.enum.map(Number);\n if (schema.properties) schema.properties = Object.fromEntries(Object.entries(schema.properties).map(([key, item]) => [key, jsonSchema(item)]));\n if (schema.items) schema.items = jsonSchema(schema.items);\n if (Array.isArray(schema.anyOf)) schema.anyOf = schema.anyOf.map(jsonSchema);\n const nullable = schema.nullable; delete schema.nullable; delete schema.propertyOrdering;\n return nullable ? { anyOf: [schema, { type: 'null' }] } : schema;\n}\nfunction requestOptions(request: LlmRequest, abortSignal: AbortSignal): LanguageModelV3CallOptions {\n const config = request.config ?? {};\n const messages = prompt(request.contents);\n if (config.systemInstruction) messages.unshift({ role: 'system', content: systemText(config.systemInstruction) });\n const allowed = config.toolConfig?.functionCallingConfig?.allowedFunctionNames ?? request.allowedTools;\n const declarations = (config.tools ?? []).flatMap(tool => {\n if (!('functionDeclarations' in tool)) throw new ConfigError('Gemini built-in tools are not supported by AgentCore model protocols');\n return tool.functionDeclarations ?? [];\n }).filter(tool => !allowed || allowed.includes(tool.name!));\n const functions = declarations.map(tool => {\n if (!tool.name) throw new ConfigError('ADK function declaration requires a name');\n return { type: 'function' as const, name: tool.name, description: tool.description,\n inputSchema: tool.parametersJsonSchema ? structuredClone(tool.parametersJsonSchema) as Record<string, unknown>\n : tool.parameters ? jsonSchema(tool.parameters) : { type: 'object', properties: {} } };\n });\n const mode = config.toolConfig?.functionCallingConfig?.mode;\n const options: LanguageModelV3CallOptions = { prompt: messages, abortSignal,\n maxOutputTokens: config.maxOutputTokens, temperature: config.temperature, topP: config.topP, topK: config.topK,\n stopSequences: config.stopSequences, seed: config.seed, presencePenalty: config.presencePenalty, frequencyPenalty: config.frequencyPenalty,\n tools: functions.length ? functions : undefined,\n toolChoice: mode === 'NONE' || allowed?.length === 0 ? { type: 'none' } : mode === 'ANY' ? { type: 'required' } : { type: 'auto' },\n };\n if (config.responseMimeType === 'application/json' || config.responseJsonSchema || config.responseSchema) {\n options.responseFormat = { type: 'json', schema: config.responseJsonSchema ? structuredClone(config.responseJsonSchema) as Record<string, unknown>\n : config.responseSchema ? jsonSchema(config.responseSchema) : undefined };\n }\n return options;\n}\nfunction outputParts(item: LanguageModelV3Content): Part[] {\n if (item.type === 'text') return [{ text: item.text }];\n if (item.type === 'reasoning') {\n const signature = item.providerMetadata?.anthropic?.signature;\n return [{ text: item.text, thought: true, thoughtSignature: typeof signature === 'string' ? signature : undefined }];\n }\n if (item.type === 'tool-call') return [{ functionCall: { id: item.toolCallId, name: item.toolName, args: JSON.parse(item.input) } }];\n if (item.type === 'file') return [{ inlineData: { mimeType: item.mediaType, data: typeof item.data === 'string' ? item.data : Buffer.from(item.data).toString('base64') } }];\n return [];\n}\nfunction completion(reason: LanguageModelV3FinishReason, usage: LanguageModelV3Usage): Partial<LlmResponse> {\n const input = usage.inputTokens.total, output = usage.outputTokens.total;\n return { finishReason: reason.unified === 'length' ? FinishReason.MAX_TOKENS : reason.unified === 'content-filter' ? FinishReason.SAFETY\n : reason.unified === 'stop' || reason.unified === 'tool-calls' ? FinishReason.STOP : FinishReason.OTHER,\n ...(reason.unified === 'error' ? { errorCode: 'MODEL_ERROR', errorMessage: 'model generation failed' } : {}),\n usageMetadata: { promptTokenCount: input, candidatesTokenCount: output, totalTokenCount: input !== undefined && output !== undefined ? input + output : undefined,\n cachedContentTokenCount: usage.inputTokens.cacheRead, thoughtsTokenCount: usage.outputTokens.reasoning },\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/google-adk-model-WYWEQI4R.cjs","../src/integrations/google-adk-model.ts"],"names":["result"],"mappings":"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","file":"/home/runner/work/agentcore-sdk-nodejs/agentcore-sdk-nodejs/dist/google-adk-model-WYWEQI4R.cjs","sourcesContent":[null,"import { BaseLlm, type LlmRequest, type LlmResponse } from '@google/adk';\nimport { FinishReason, type Content, type ContentUnion, type Part } from '@google/genai';\nimport type { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3Content, LanguageModelV3FinishReason,\n LanguageModelV3Message, LanguageModelV3Prompt, LanguageModelV3Usage } from '@ai-sdk/provider';\nimport type { ModelClient, ProviderModelClient } from '../model';\nimport { ConfigError, InvocationError } from '../errors';\nimport { languageModel } from './ai-sdk';\n\n/** ADK owns the agent loop; AI SDK normalizes native and direct provider models. */\nexport class AgentCoreLlm extends BaseLlm {\n private readonly delegate: LanguageModelV3;\n constructor(client: ModelClient | ProviderModelClient) { super({ model: client.settings.model }); this.delegate = languageModel(client); }\n async connect(): Promise<never> { throw new ConfigError('AgentCore models do not implement ADK bidirectional live connections'); }\n async *generateContentAsync(request: LlmRequest, stream = false, abortSignal?: AbortSignal): AsyncGenerator<LlmResponse> {\n const lifetime = new AbortController();\n const signals = [lifetime.signal, abortSignal, request.config?.abortSignal].filter((value): value is AbortSignal => value !== undefined);\n const options = requestOptions(request, AbortSignal.any(signals));\n try {\n if (!stream) {\n const result = await this.delegate.doGenerate(options);\n yield { content: { role: 'model', parts: result.content.flatMap(outputParts) }, ...completion(result.finishReason, result.usage) };\n return;\n }\n const result = await this.delegate.doStream(options);\n const reader = result.stream.getReader();\n const parts: Part[] = []; const text = new Map<string, Part>(); let finished = false;\n try {\n while (true) {\n const next = await reader.read(); if (next.done) break;\n const item = next.value;\n if (item.type === 'error') throw item.error;\n if (item.type === 'text-delta' || item.type === 'reasoning-delta') {\n const key = `${item.type}:${item.id}`; let part = text.get(key);\n if (!part) { part = { text: '', ...(item.type === 'reasoning-delta' ? { thought: true } : {}) }; text.set(key, part); parts.push(part); }\n part.text += item.delta;\n yield { content: { role: 'model', parts: [{ text: item.delta, thought: part.thought }] }, partial: true, turnComplete: false };\n } else if (item.type === 'reasoning-end') {\n const signature = item.providerMetadata?.anthropic?.signature;\n const part = text.get(`reasoning-delta:${item.id}`);\n if (part && typeof signature === 'string') part.thoughtSignature = signature;\n } else if (item.type === 'tool-call' || item.type === 'file') {\n parts.push(...outputParts(item));\n } else if (item.type === 'finish') {\n finished = true;\n yield { content: { role: 'model', parts }, partial: false, turnComplete: true, ...completion(item.finishReason, item.usage) };\n }\n }\n if (!finished) throw new InvocationError('model stream ended without a completion event');\n } finally { lifetime.abort(); reader.releaseLock(); }\n } finally { lifetime.abort(); }\n }\n}\n\ntype ChatPart = Extract<LanguageModelV3Message, { role: 'assistant' }>['content'][number];\ntype UserPart = Extract<LanguageModelV3Message, { role: 'user' }>['content'][number];\nfunction prompt(contents: Content[]): LanguageModelV3Prompt {\n const result: LanguageModelV3Prompt = []; const pending: { name: string; id: string }[] = [];\n for (const [index, content] of contents.entries()) {\n const assistant = content.role === 'model'; let group: ChatPart[] = [];\n const flush = () => {\n if (group.length) result.push(assistant ? { role: 'assistant', content: group } : { role: 'user', content: group as UserPart[] });\n group = [];\n };\n for (const [partIndex, part] of (content.parts ?? []).entries()) {\n if (part.functionCall) {\n const call = part.functionCall;\n if (!assistant || !call.name) throw new ConfigError('ADK functionCall requires a model message and tool name');\n const id = call.id ?? `call-${index}-${partIndex}`; pending.push({ id, name: call.name });\n group.push({ type: 'tool-call', toolCallId: id, toolName: call.name, input: call.args ?? {} });\n } else if (part.functionResponse) {\n flush(); const response = part.functionResponse;\n const match = pending.findIndex(call => response.id ? call.id === response.id : call.name === response.name);\n if (match < 0) throw new ConfigError('ADK functionResponse has no matching functionCall');\n const call = pending.splice(match, 1)[0]!;\n result.push({ role: 'tool', content: [{ type: 'tool-result', toolCallId: call.id, toolName: call.name,\n output: { type: 'text', value: JSON.stringify(response.response ?? {}) } }] });\n } else if (part.text !== undefined) {\n if (part.thought && assistant) group.push({ type: 'reasoning', text: part.text,\n providerOptions: part.thoughtSignature ? { anthropic: { signature: part.thoughtSignature } } : undefined });\n else if (!part.thought) group.push({ type: 'text', text: part.text });\n } else if (part.inlineData?.data !== undefined || part.fileData?.fileUri) {\n const mediaType = part.inlineData?.mimeType ?? part.fileData?.mimeType;\n if (!mediaType) throw new ConfigError('ADK file content requires mimeType');\n group.push({ type: 'file', mediaType, data: part.inlineData?.data ?? new URL(part.fileData!.fileUri!) });\n } else throw new ConfigError('unsupported ADK content part for AgentCore models');\n }\n flush();\n }\n return result;\n}\nfunction systemText(value: ContentUnion): string {\n if (typeof value === 'string') return value;\n if (Array.isArray(value)) return value.map(systemText).join('\\n');\n if ('parts' in value) return (value.parts ?? []).map(systemText).join('\\n');\n if ('text' in value && value.text !== undefined) return value.text;\n throw new ConfigError('ADK system instruction must contain text');\n}\n/** Translate GenAI's OpenAPI-style Schema; native parametersJsonSchema bypasses this. */\nfunction jsonSchema(value: unknown): Record<string, unknown> {\n const schema = structuredClone(value) as Record<string, unknown>;\n if (typeof schema.type === 'string') schema.type = schema.type.toLowerCase();\n for (const key of ['minItems', 'maxItems', 'minLength', 'maxLength', 'minProperties', 'maxProperties']) {\n if (typeof schema[key] === 'string') schema[key] = Number(schema[key]);\n }\n if (Array.isArray(schema.enum) && (schema.type === 'integer' || schema.type === 'number')) schema.enum = schema.enum.map(Number);\n if (schema.properties) schema.properties = Object.fromEntries(Object.entries(schema.properties).map(([key, item]) => [key, jsonSchema(item)]));\n if (schema.items) schema.items = jsonSchema(schema.items);\n if (Array.isArray(schema.anyOf)) schema.anyOf = schema.anyOf.map(jsonSchema);\n const nullable = schema.nullable; delete schema.nullable; delete schema.propertyOrdering;\n return nullable ? { anyOf: [schema, { type: 'null' }] } : schema;\n}\nfunction requestOptions(request: LlmRequest, abortSignal: AbortSignal): LanguageModelV3CallOptions {\n const config = request.config ?? {};\n const messages = prompt(request.contents);\n if (config.systemInstruction) messages.unshift({ role: 'system', content: systemText(config.systemInstruction) });\n const allowed = config.toolConfig?.functionCallingConfig?.allowedFunctionNames ?? request.allowedTools;\n const declarations = (config.tools ?? []).flatMap(tool => {\n if (!('functionDeclarations' in tool)) throw new ConfigError('Gemini built-in tools are not supported by AgentCore model protocols');\n return tool.functionDeclarations ?? [];\n }).filter(tool => !allowed || allowed.includes(tool.name!));\n const functions = declarations.map(tool => {\n if (!tool.name) throw new ConfigError('ADK function declaration requires a name');\n return { type: 'function' as const, name: tool.name, description: tool.description,\n inputSchema: tool.parametersJsonSchema ? structuredClone(tool.parametersJsonSchema) as Record<string, unknown>\n : tool.parameters ? jsonSchema(tool.parameters) : { type: 'object', properties: {} } };\n });\n const mode = config.toolConfig?.functionCallingConfig?.mode;\n const options: LanguageModelV3CallOptions = { prompt: messages, abortSignal,\n maxOutputTokens: config.maxOutputTokens, temperature: config.temperature, topP: config.topP, topK: config.topK,\n stopSequences: config.stopSequences, seed: config.seed, presencePenalty: config.presencePenalty, frequencyPenalty: config.frequencyPenalty,\n tools: functions.length ? functions : undefined,\n toolChoice: mode === 'NONE' || allowed?.length === 0 ? { type: 'none' } : mode === 'ANY' ? { type: 'required' } : { type: 'auto' },\n };\n if (config.responseMimeType === 'application/json' || config.responseJsonSchema || config.responseSchema) {\n options.responseFormat = { type: 'json', schema: config.responseJsonSchema ? structuredClone(config.responseJsonSchema) as Record<string, unknown>\n : config.responseSchema ? jsonSchema(config.responseSchema) : undefined };\n }\n return options;\n}\nfunction outputParts(item: LanguageModelV3Content): Part[] {\n if (item.type === 'text') return [{ text: item.text }];\n if (item.type === 'reasoning') {\n const signature = item.providerMetadata?.anthropic?.signature;\n return [{ text: item.text, thought: true, thoughtSignature: typeof signature === 'string' ? signature : undefined }];\n }\n if (item.type === 'tool-call') return [{ functionCall: { id: item.toolCallId, name: item.toolName, args: JSON.parse(item.input) } }];\n if (item.type === 'file') return [{ inlineData: { mimeType: item.mediaType, data: typeof item.data === 'string' ? item.data : Buffer.from(item.data).toString('base64') } }];\n return [];\n}\nfunction completion(reason: LanguageModelV3FinishReason, usage: LanguageModelV3Usage): Partial<LlmResponse> {\n const input = usage.inputTokens.total, output = usage.outputTokens.total;\n return { finishReason: reason.unified === 'length' ? FinishReason.MAX_TOKENS : reason.unified === 'content-filter' ? FinishReason.SAFETY\n : reason.unified === 'stop' || reason.unified === 'tool-calls' ? FinishReason.STOP : FinishReason.OTHER,\n ...(reason.unified === 'error' ? { errorCode: 'MODEL_ERROR', errorMessage: 'model generation failed' } : {}),\n usageMetadata: { promptTokenCount: input, candidatesTokenCount: output, totalTokenCount: input !== undefined && output !== undefined ? input + output : undefined,\n cachedContentTokenCount: usage.inputTokens.cacheRead, thoughtsTokenCount: usage.outputTokens.reasoning },\n };\n}\n"]}