@assistant-ui/react-google-adk 0.0.30 → 0.0.32

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 (103) hide show
  1. package/dist/AdkClient.d.ts +26 -29
  2. package/dist/AdkClient.d.ts.map +1 -1
  3. package/dist/AdkClient.js +5 -3
  4. package/dist/AdkClient.js.map +1 -1
  5. package/dist/AdkEventAccumulator.d.ts +41 -45
  6. package/dist/AdkEventAccumulator.d.ts.map +1 -1
  7. package/dist/AdkEventAccumulator.js +63 -99
  8. package/dist/AdkEventAccumulator.js.map +1 -1
  9. package/dist/AdkSessionAdapter.d.ts +41 -39
  10. package/dist/AdkSessionAdapter.d.ts.map +1 -1
  11. package/dist/AdkSessionAdapter.js +11 -7
  12. package/dist/AdkSessionAdapter.js.map +1 -1
  13. package/dist/adkAuthRequest.d.ts +17 -0
  14. package/dist/adkAuthRequest.d.ts.map +1 -0
  15. package/dist/adkAuthRequest.js +45 -0
  16. package/dist/adkAuthRequest.js.map +1 -0
  17. package/dist/adkExtras.d.ts +2 -5
  18. package/dist/adkExtras.d.ts.map +1 -1
  19. package/dist/adkToolApproval.d.ts +18 -21
  20. package/dist/adkToolApproval.d.ts.map +1 -1
  21. package/dist/adkToolApproval.js +1 -3
  22. package/dist/adkToolApproval.js.map +1 -1
  23. package/dist/contentToParts.d.ts +2 -5
  24. package/dist/contentToParts.d.ts.map +1 -1
  25. package/dist/convertAdkMessages.d.ts +5 -8
  26. package/dist/convertAdkMessages.d.ts.map +1 -1
  27. package/dist/convertAdkMessages.js +4 -3
  28. package/dist/convertAdkMessages.js.map +1 -1
  29. package/dist/convertToAdkMessages.d.ts +36 -39
  30. package/dist/convertToAdkMessages.d.ts.map +1 -1
  31. package/dist/hooks.d.ts +25 -23
  32. package/dist/hooks.d.ts.map +1 -1
  33. package/dist/hooks.js +12 -10
  34. package/dist/hooks.js.map +1 -1
  35. package/dist/index.d.ts +11 -10
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/normalizeAdkPart.d.ts +2 -0
  38. package/dist/normalizeAdkPart.d.ts.map +1 -0
  39. package/dist/normalizeAdkPart.js +31 -0
  40. package/dist/normalizeAdkPart.js.map +1 -0
  41. package/dist/parseAdkEvent.d.ts +2 -5
  42. package/dist/parseAdkEvent.d.ts.map +1 -1
  43. package/dist/raceWithAbortSignal.d.ts +2 -0
  44. package/dist/raceWithAbortSignal.d.ts.map +1 -0
  45. package/dist/raceWithAbortSignal.js +45 -0
  46. package/dist/raceWithAbortSignal.js.map +1 -0
  47. package/dist/sdkIdentity.d.ts +2 -5
  48. package/dist/sdkIdentity.d.ts.map +1 -1
  49. package/dist/sdkIdentity.js +1 -1
  50. package/dist/server/adkEventStream.d.ts +25 -27
  51. package/dist/server/adkEventStream.d.ts.map +1 -1
  52. package/dist/server/adkEventStream.js +23 -15
  53. package/dist/server/adkEventStream.js.map +1 -1
  54. package/dist/server/createAdkApiRoute.d.ts +23 -25
  55. package/dist/server/createAdkApiRoute.d.ts.map +1 -1
  56. package/dist/server/index.d.ts +4 -4
  57. package/dist/server/index.d.ts.map +1 -0
  58. package/dist/server/parseAdkRequest.d.ts +18 -20
  59. package/dist/server/parseAdkRequest.d.ts.map +1 -1
  60. package/dist/structuredEvents.d.ts +2 -5
  61. package/dist/structuredEvents.d.ts.map +1 -1
  62. package/dist/structuredEvents.js +1 -1
  63. package/dist/structuredEvents.js.map +1 -1
  64. package/dist/toAdkFunctionResponse.d.ts +2 -5
  65. package/dist/toAdkFunctionResponse.d.ts.map +1 -1
  66. package/dist/trimTrailingSlashes.d.ts +1 -4
  67. package/dist/trimTrailingSlashes.d.ts.map +1 -1
  68. package/dist/types.d.ts +253 -256
  69. package/dist/types.d.ts.map +1 -1
  70. package/dist/types.js.map +1 -1
  71. package/dist/useAdkMessages.d.ts +26 -29
  72. package/dist/useAdkMessages.d.ts.map +1 -1
  73. package/dist/useAdkMessages.js +2 -0
  74. package/dist/useAdkMessages.js.map +1 -1
  75. package/dist/useAdkRuntime.d.ts +50 -52
  76. package/dist/useAdkRuntime.d.ts.map +1 -1
  77. package/dist/useAdkRuntime.js +1 -1
  78. package/package.json +10 -9
  79. package/src/AdkClient.test.ts +50 -0
  80. package/src/AdkClient.ts +10 -3
  81. package/src/AdkEventAccumulator.test.ts +312 -11
  82. package/src/AdkEventAccumulator.ts +68 -142
  83. package/src/AdkSessionAdapter.test.ts +284 -1
  84. package/src/AdkSessionAdapter.ts +32 -8
  85. package/src/adkAuthRequest.test.ts +101 -0
  86. package/src/adkAuthRequest.ts +50 -0
  87. package/src/adkToolApproval.test.ts +0 -4
  88. package/src/adkToolApproval.ts +1 -3
  89. package/src/convertAdkMessages.test.ts +41 -0
  90. package/src/convertAdkMessages.ts +19 -7
  91. package/src/hooks.render.test.tsx +95 -2
  92. package/src/hooks.ts +12 -13
  93. package/src/normalizeAdkPart.ts +35 -0
  94. package/src/raceWithAbortSignal.test.ts +73 -0
  95. package/src/raceWithAbortSignal.ts +48 -0
  96. package/src/server/adkEventStream.test.ts +147 -0
  97. package/src/server/adkEventStream.ts +27 -20
  98. package/src/structuredEvents.test.ts +69 -0
  99. package/src/structuredEvents.ts +4 -1
  100. package/src/types.ts +1 -1
  101. package/src/useAdkMessages.test.ts +102 -3
  102. package/src/useAdkMessages.ts +2 -0
  103. package/src/useAdkRuntime.replacement.test.tsx +11 -7
@@ -1,32 +1,31 @@
1
- //#region src/server/adkEventStream.d.ts
2
1
  /**
3
2
  * The ADK SDK Event type. Intentionally loose to avoid requiring @google/adk.
4
3
  */
5
4
  type AdkSdkEvent = {
6
- id?: string;
7
- invocationId?: string;
8
- author?: string;
9
- branch?: string;
10
- partial?: boolean;
11
- turnComplete?: boolean;
12
- interrupted?: boolean;
13
- finishReason?: string;
14
- timestamp?: number;
15
- content?: {
16
- role?: string;
17
- parts?: Array<Record<string, unknown>>;
18
- };
19
- actions?: Record<string, unknown>;
20
- longRunningToolIds?: string[];
21
- errorCode?: string;
22
- errorMessage?: string;
23
- groundingMetadata?: unknown;
24
- citationMetadata?: unknown;
25
- usageMetadata?: unknown;
26
- customMetadata?: Record<string, unknown>;
5
+ id?: string;
6
+ invocationId?: string;
7
+ author?: string;
8
+ branch?: string;
9
+ partial?: boolean;
10
+ turnComplete?: boolean;
11
+ interrupted?: boolean;
12
+ finishReason?: string;
13
+ timestamp?: number;
14
+ content?: {
15
+ role?: string;
16
+ parts?: Array<Record<string, unknown>>;
17
+ };
18
+ actions?: Record<string, unknown>;
19
+ longRunningToolIds?: string[];
20
+ errorCode?: string;
21
+ errorMessage?: string;
22
+ groundingMetadata?: unknown;
23
+ citationMetadata?: unknown;
24
+ usageMetadata?: unknown;
25
+ customMetadata?: Record<string, unknown>;
27
26
  };
28
- type AdkEventStreamOptions = {
29
- onError?: (error: unknown) => void;
27
+ export type AdkEventStreamOptions = {
28
+ onError?: (error: unknown) => void;
30
29
  };
31
30
  /**
32
31
  * Converts an AsyncGenerator of ADK SDK Events into an SSE Response.
@@ -38,7 +37,6 @@ type AdkEventStreamOptions = {
38
37
  * return adkEventStream(events);
39
38
  * ```
40
39
  */
41
- declare const adkEventStream: (events: AsyncGenerator<AdkSdkEvent, void, undefined>, options?: AdkEventStreamOptions) => Response;
42
- //#endregion
43
- export { AdkEventStreamOptions, adkEventStream };
40
+ export declare const adkEventStream: (events: AsyncGenerator<AdkSdkEvent, void, undefined>, options?: AdkEventStreamOptions) => Response;
41
+ export {};
44
42
  //# sourceMappingURL=adkEventStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adkEventStream.d.ts","names":[],"sources":["../../src/server/adkEventStream.ts"],"mappings":";;;;KAKK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE;IACA,QAAQ,MAAM;;EAEhB,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;;KAyEP;EACV,WAAW;;;;;;;;;;;;cA4BA,iBACX,QAAQ,eAAe,+BACvB,UAAU,0BACT"}
1
+ {"version":3,"file":"adkEventStream.d.ts","sourceRoot":"","sources":["../../src/server/adkEventStream.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,KAAK,WAAW,GAAG;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACxC,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAwEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAiBF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EACpD,UAAU,qBAAqB,KAC9B,QAmDF,CAAC"}
@@ -72,25 +72,33 @@ const adkEventStream = (events, options) => {
72
72
  const encoder = new TextEncoder();
73
73
  let cancelled = false;
74
74
  const stream = new ReadableStream({
75
- async start(controller) {
75
+ start(controller) {
76
76
  controller.enqueue(encoder.encode(":ok\n\n"));
77
+ },
78
+ async pull(controller) {
77
79
  try {
78
- for await (const event of events) {
79
- if (cancelled) break;
80
- const wireEvent = convertSdkEvent(event);
81
- controller.enqueue(encoder.encode(`data: ${JSON.stringify(wireEvent)}\n\n`));
80
+ const { done, value } = await events.next();
81
+ if (cancelled) return;
82
+ if (done) {
83
+ controller.close();
84
+ return;
82
85
  }
86
+ const wireEvent = convertSdkEvent(value);
87
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(wireEvent)}\n\n`));
83
88
  } catch (e) {
84
- if (!cancelled) {
85
- notifyError(options?.onError, e);
86
- const errorEvent = {
87
- id: "",
88
- errorCode: "STREAM_ERROR",
89
- errorMessage: e instanceof Error ? e.message : "Unknown stream error"
90
- };
91
- controller.enqueue(encoder.encode(`data: ${JSON.stringify(errorEvent)}\n\n`));
92
- }
93
- } finally {
89
+ if (cancelled) return;
90
+ try {
91
+ await events.return?.(void 0);
92
+ } catch {}
93
+ if (cancelled) return;
94
+ notifyError(options?.onError, e);
95
+ if (cancelled) return;
96
+ const errorEvent = {
97
+ id: "",
98
+ errorCode: "STREAM_ERROR",
99
+ errorMessage: e instanceof Error ? e.message : "Unknown stream error"
100
+ };
101
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(errorEvent)}\n\n`));
94
102
  controller.close();
95
103
  }
96
104
  },
@@ -1 +1 @@
1
- {"version":3,"file":"adkEventStream.js","names":[],"sources":["../../src/server/adkEventStream.ts"],"sourcesContent":["import type { AdkEvent, AdkEventActions, AdkEventPart } from \"../types\";\n\n/**\n * The ADK SDK Event type. Intentionally loose to avoid requiring @google/adk.\n */\ntype AdkSdkEvent = {\n id?: string;\n invocationId?: string;\n author?: string;\n branch?: string;\n partial?: boolean;\n turnComplete?: boolean;\n interrupted?: boolean;\n finishReason?: string;\n timestamp?: number;\n content?: {\n role?: string;\n parts?: Array<Record<string, unknown>>;\n };\n actions?: Record<string, unknown>;\n longRunningToolIds?: string[];\n errorCode?: string;\n errorMessage?: string;\n groundingMetadata?: unknown;\n citationMetadata?: unknown;\n usageMetadata?: unknown;\n customMetadata?: Record<string, unknown>;\n};\n\nconst convertSdkPart = (part: Record<string, unknown>): AdkEventPart => {\n const result: Record<string, unknown> = {};\n if (\"text\" in part && typeof part.text === \"string\") result.text = part.text;\n if (\"thought\" in part && typeof part.thought === \"boolean\")\n result.thought = part.thought;\n if (\"functionCall\" in part && part.functionCall)\n result.functionCall = part.functionCall;\n if (\"functionResponse\" in part && part.functionResponse)\n result.functionResponse = part.functionResponse;\n if (\"executableCode\" in part && part.executableCode)\n result.executableCode = part.executableCode;\n if (\"codeExecutionResult\" in part && part.codeExecutionResult)\n result.codeExecutionResult = part.codeExecutionResult;\n if (\"inlineData\" in part && part.inlineData)\n result.inlineData = part.inlineData;\n if (\"fileData\" in part && part.fileData) result.fileData = part.fileData;\n return result as AdkEventPart;\n};\n\nconst convertSdkActions = (\n actions: Record<string, unknown>,\n): AdkEventActions => {\n const result: Record<string, unknown> = {};\n if (actions.stateDelta != null) result.stateDelta = actions.stateDelta;\n if (actions.artifactDelta != null)\n result.artifactDelta = actions.artifactDelta;\n if (actions.transferToAgent != null)\n result.transferToAgent = actions.transferToAgent;\n if (actions.escalate != null) result.escalate = actions.escalate;\n if (actions.skipSummarization != null)\n result.skipSummarization = actions.skipSummarization;\n if (actions.requestedAuthConfigs != null)\n result.requestedAuthConfigs = actions.requestedAuthConfigs;\n if (actions.requestedToolConfirmations != null)\n result.requestedToolConfirmations = actions.requestedToolConfirmations;\n return result as AdkEventActions;\n};\n\nconst convertSdkEvent = (event: AdkSdkEvent): AdkEvent => {\n const result: Record<string, unknown> = { id: event.id ?? \"\" };\n if (event.invocationId != null) result.invocationId = event.invocationId;\n if (event.author != null) result.author = event.author;\n if (event.branch != null) result.branch = event.branch;\n if (event.partial != null) result.partial = event.partial;\n if (event.turnComplete != null) result.turnComplete = event.turnComplete;\n if (event.interrupted != null) result.interrupted = event.interrupted;\n if (event.finishReason != null) result.finishReason = event.finishReason;\n if (event.timestamp != null) result.timestamp = event.timestamp;\n if (event.content) {\n const content: Record<string, unknown> = {};\n if (event.content.role != null) content.role = event.content.role;\n if (event.content.parts)\n content.parts = event.content.parts.map(convertSdkPart);\n result.content = content;\n }\n if (event.actions) result.actions = convertSdkActions(event.actions);\n if (event.longRunningToolIds)\n result.longRunningToolIds = event.longRunningToolIds;\n if (event.errorCode != null) result.errorCode = event.errorCode;\n if (event.errorMessage != null) result.errorMessage = event.errorMessage;\n if (event.groundingMetadata != null)\n result.groundingMetadata = event.groundingMetadata;\n if (event.citationMetadata != null)\n result.citationMetadata = event.citationMetadata;\n if (event.usageMetadata != null) result.usageMetadata = event.usageMetadata;\n if (event.customMetadata != null)\n result.customMetadata = event.customMetadata;\n return result as AdkEvent;\n};\n\nexport type AdkEventStreamOptions = {\n onError?: (error: unknown) => void;\n};\n\nconst reportCallbackError = (error: unknown) => {\n console.error(\"[react-google-adk] onError callback threw an error\", error);\n};\n\nconst notifyError = (\n callback: AdkEventStreamOptions[\"onError\"],\n error: unknown,\n) => {\n try {\n void Promise.resolve(callback?.(error)).catch(reportCallbackError);\n } catch (callbackError) {\n reportCallbackError(callbackError);\n }\n};\n\n/**\n * Converts an AsyncGenerator of ADK SDK Events into an SSE Response.\n *\n * @example\n * ```ts\n * import { adkEventStream } from '@assistant-ui/react-google-adk/server';\n * const events = runner.runAsync({ userId, sessionId, newMessage });\n * return adkEventStream(events);\n * ```\n */\nexport const adkEventStream = (\n events: AsyncGenerator<AdkSdkEvent, void, undefined>,\n options?: AdkEventStreamOptions,\n): Response => {\n const encoder = new TextEncoder();\n let cancelled = false;\n const stream = new ReadableStream({\n async start(controller) {\n // Initial SSE comment to keep connection alive through proxies\n controller.enqueue(encoder.encode(\":ok\\n\\n\"));\n try {\n for await (const event of events) {\n if (cancelled) break;\n const wireEvent = convertSdkEvent(event);\n controller.enqueue(\n encoder.encode(`data: ${JSON.stringify(wireEvent)}\\n\\n`),\n );\n }\n } catch (e) {\n if (!cancelled) {\n notifyError(options?.onError, e);\n const errorEvent: AdkEvent = {\n id: \"\",\n errorCode: \"STREAM_ERROR\",\n errorMessage:\n e instanceof Error ? e.message : \"Unknown stream error\",\n };\n controller.enqueue(\n encoder.encode(`data: ${JSON.stringify(errorEvent)}\\n\\n`),\n );\n }\n } finally {\n controller.close();\n }\n },\n async cancel() {\n cancelled = true;\n await events.return?.(undefined as any);\n },\n });\n\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n },\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"adkEventStream.js","names":[],"sources":["../../src/server/adkEventStream.ts"],"sourcesContent":["import type { AdkEvent, AdkEventActions, AdkEventPart } from \"../types\";\n\n/**\n * The ADK SDK Event type. Intentionally loose to avoid requiring @google/adk.\n */\ntype AdkSdkEvent = {\n id?: string;\n invocationId?: string;\n author?: string;\n branch?: string;\n partial?: boolean;\n turnComplete?: boolean;\n interrupted?: boolean;\n finishReason?: string;\n timestamp?: number;\n content?: {\n role?: string;\n parts?: Array<Record<string, unknown>>;\n };\n actions?: Record<string, unknown>;\n longRunningToolIds?: string[];\n errorCode?: string;\n errorMessage?: string;\n groundingMetadata?: unknown;\n citationMetadata?: unknown;\n usageMetadata?: unknown;\n customMetadata?: Record<string, unknown>;\n};\n\nconst convertSdkPart = (part: Record<string, unknown>): AdkEventPart => {\n const result: Record<string, unknown> = {};\n if (\"text\" in part && typeof part.text === \"string\") result.text = part.text;\n if (\"thought\" in part && typeof part.thought === \"boolean\")\n result.thought = part.thought;\n if (\"functionCall\" in part && part.functionCall)\n result.functionCall = part.functionCall;\n if (\"functionResponse\" in part && part.functionResponse)\n result.functionResponse = part.functionResponse;\n if (\"executableCode\" in part && part.executableCode)\n result.executableCode = part.executableCode;\n if (\"codeExecutionResult\" in part && part.codeExecutionResult)\n result.codeExecutionResult = part.codeExecutionResult;\n if (\"inlineData\" in part && part.inlineData)\n result.inlineData = part.inlineData;\n if (\"fileData\" in part && part.fileData) result.fileData = part.fileData;\n return result as AdkEventPart;\n};\n\nconst convertSdkActions = (\n actions: Record<string, unknown>,\n): AdkEventActions => {\n const result: Record<string, unknown> = {};\n if (actions.stateDelta != null) result.stateDelta = actions.stateDelta;\n if (actions.artifactDelta != null)\n result.artifactDelta = actions.artifactDelta;\n if (actions.transferToAgent != null)\n result.transferToAgent = actions.transferToAgent;\n if (actions.escalate != null) result.escalate = actions.escalate;\n if (actions.skipSummarization != null)\n result.skipSummarization = actions.skipSummarization;\n if (actions.requestedAuthConfigs != null)\n result.requestedAuthConfigs = actions.requestedAuthConfigs;\n if (actions.requestedToolConfirmations != null)\n result.requestedToolConfirmations = actions.requestedToolConfirmations;\n return result as AdkEventActions;\n};\n\nconst convertSdkEvent = (event: AdkSdkEvent): AdkEvent => {\n const result: Record<string, unknown> = { id: event.id ?? \"\" };\n if (event.invocationId != null) result.invocationId = event.invocationId;\n if (event.author != null) result.author = event.author;\n if (event.branch != null) result.branch = event.branch;\n if (event.partial != null) result.partial = event.partial;\n if (event.turnComplete != null) result.turnComplete = event.turnComplete;\n if (event.interrupted != null) result.interrupted = event.interrupted;\n if (event.finishReason != null) result.finishReason = event.finishReason;\n if (event.timestamp != null) result.timestamp = event.timestamp;\n if (event.content) {\n const content: Record<string, unknown> = {};\n if (event.content.role != null) content.role = event.content.role;\n if (event.content.parts)\n content.parts = event.content.parts.map(convertSdkPart);\n result.content = content;\n }\n if (event.actions) result.actions = convertSdkActions(event.actions);\n if (event.longRunningToolIds)\n result.longRunningToolIds = event.longRunningToolIds;\n if (event.errorCode != null) result.errorCode = event.errorCode;\n if (event.errorMessage != null) result.errorMessage = event.errorMessage;\n if (event.groundingMetadata != null)\n result.groundingMetadata = event.groundingMetadata;\n if (event.citationMetadata != null)\n result.citationMetadata = event.citationMetadata;\n if (event.usageMetadata != null) result.usageMetadata = event.usageMetadata;\n if (event.customMetadata != null)\n result.customMetadata = event.customMetadata;\n return result as AdkEvent;\n};\n\nexport type AdkEventStreamOptions = {\n onError?: (error: unknown) => void;\n};\n\nconst reportCallbackError = (error: unknown) => {\n console.error(\"[react-google-adk] onError callback threw an error\", error);\n};\n\nconst notifyError = (\n callback: AdkEventStreamOptions[\"onError\"],\n error: unknown,\n) => {\n try {\n void Promise.resolve(callback?.(error)).catch(reportCallbackError);\n } catch (callbackError) {\n reportCallbackError(callbackError);\n }\n};\n\n/**\n * Converts an AsyncGenerator of ADK SDK Events into an SSE Response.\n *\n * @example\n * ```ts\n * import { adkEventStream } from '@assistant-ui/react-google-adk/server';\n * const events = runner.runAsync({ userId, sessionId, newMessage });\n * return adkEventStream(events);\n * ```\n */\nexport const adkEventStream = (\n events: AsyncGenerator<AdkSdkEvent, void, undefined>,\n options?: AdkEventStreamOptions,\n): Response => {\n const encoder = new TextEncoder();\n let cancelled = false;\n const stream = new ReadableStream({\n start(controller) {\n // Initial SSE comment to keep connection alive through proxies\n controller.enqueue(encoder.encode(\":ok\\n\\n\"));\n },\n async pull(controller) {\n try {\n const { done, value } = await events.next();\n if (cancelled) return;\n if (done) {\n controller.close();\n return;\n }\n const wireEvent = convertSdkEvent(value);\n controller.enqueue(\n encoder.encode(`data: ${JSON.stringify(wireEvent)}\\n\\n`),\n );\n } catch (e) {\n if (cancelled) return;\n try {\n await events.return?.(undefined as any);\n } catch {}\n if (cancelled) return;\n notifyError(options?.onError, e);\n if (cancelled) return;\n const errorEvent: AdkEvent = {\n id: \"\",\n errorCode: \"STREAM_ERROR\",\n errorMessage: e instanceof Error ? e.message : \"Unknown stream error\",\n };\n controller.enqueue(\n encoder.encode(`data: ${JSON.stringify(errorEvent)}\\n\\n`),\n );\n controller.close();\n }\n },\n async cancel() {\n cancelled = true;\n await events.return?.(undefined as any);\n },\n });\n\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n },\n });\n};\n"],"mappings":"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"}
@@ -1,31 +1,30 @@
1
- import { AdkEventStreamOptions } from "./adkEventStream.js";
2
- //#region src/server/createAdkApiRoute.d.ts
1
+ import { type AdkEventStreamOptions } from "./adkEventStream.js";
3
2
  /**
4
3
  * Loose runner type matching the ADK SDK's Runner interface.
5
4
  * Avoids requiring `@google/adk` as a dependency.
6
5
  */
7
6
  type AdkRunner = {
8
- runAsync(options: Record<string, unknown>): AsyncGenerator<any, void, undefined>;
7
+ runAsync(options: Record<string, unknown>): AsyncGenerator<any, void, undefined>;
9
8
  };
10
- type CreateAdkApiRouteOptions = {
11
- /**
12
- * ADK Runner instance.
13
- */
14
- runner: AdkRunner;
15
- /**
16
- * User ID to use for the ADK session. Can be a static string
17
- * or a function that extracts it from the request.
18
- */
19
- userId: string | ((req: Request) => string | Promise<string>);
20
- /**
21
- * Session ID to use. Can be a static string or a function
22
- * that extracts it from the request (e.g. from query params or headers).
23
- */
24
- sessionId: string | ((req: Request) => string | Promise<string>);
25
- /**
26
- * Error handler for stream errors.
27
- */
28
- onError?: AdkEventStreamOptions["onError"];
9
+ export type CreateAdkApiRouteOptions = {
10
+ /**
11
+ * ADK Runner instance.
12
+ */
13
+ runner: AdkRunner;
14
+ /**
15
+ * User ID to use for the ADK session. Can be a static string
16
+ * or a function that extracts it from the request.
17
+ */
18
+ userId: string | ((req: Request) => string | Promise<string>);
19
+ /**
20
+ * Session ID to use. Can be a static string or a function
21
+ * that extracts it from the request (e.g. from query params or headers).
22
+ */
23
+ sessionId: string | ((req: Request) => string | Promise<string>);
24
+ /**
25
+ * Error handler for stream errors.
26
+ */
27
+ onError?: AdkEventStreamOptions["onError"];
29
28
  };
30
29
  /**
31
30
  * Creates a request handler that combines `parseAdkRequest`, `toAdkContent`,
@@ -43,7 +42,6 @@ type CreateAdkApiRouteOptions = {
43
42
  * });
44
43
  * ```
45
44
  */
46
- declare function createAdkApiRoute(options: CreateAdkApiRouteOptions): (req: Request) => Promise<Response>;
47
- //#endregion
48
- export { CreateAdkApiRouteOptions, createAdkApiRoute };
45
+ export declare function createAdkApiRoute(options: CreateAdkApiRouteOptions): (req: Request) => Promise<Response>;
46
+ export {};
49
47
  //# sourceMappingURL=createAdkApiRoute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAdkApiRoute.d.ts","names":[],"sources":["../../src/server/createAdkApiRoute.ts"],"mappings":";;;;;;KAOK;EACH,SACE,SAAS,0BACR;;KAGO;;;;EAIV,QAAQ;;;;;EAMR,mBAAmB,KAAK,qBAAqB;;;;;EAM7C,sBAAsB,KAAK,qBAAqB;;;;EAKhD,UAAU;;;;;;;;;;;;;;;;;;iBAmBI,kBACd,SAAS,4BACP,KAAK,YAAY,QAAQ"}
1
+ {"version":3,"file":"createAdkApiRoute.d.ts","sourceRoot":"","sources":["../../src/server/createAdkApiRoute.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,4BAAyB;AAE9E;;;GAGG;AACH,KAAK,SAAS,GAAG;IACf,QAAQ,CACN,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE;;OAEG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA8BrC"}
@@ -1,4 +1,4 @@
1
- import { AdkEventStreamOptions, adkEventStream } from "./adkEventStream.js";
2
- import { CreateAdkApiRouteOptions, createAdkApiRoute } from "./createAdkApiRoute.js";
3
- import { parseAdkRequest, toAdkContent } from "./parseAdkRequest.js";
4
- export { type AdkEventStreamOptions, type CreateAdkApiRouteOptions, adkEventStream, createAdkApiRoute, parseAdkRequest, toAdkContent };
1
+ export { adkEventStream, type AdkEventStreamOptions } from "./adkEventStream.js";
2
+ export { parseAdkRequest, toAdkContent } from "./parseAdkRequest.js";
3
+ export { createAdkApiRoute, type CreateAdkApiRouteOptions, } from "./createAdkApiRoute.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,4BAAyB;AAC9E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,6BAA0B;AAClE,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,+BAA4B"}
@@ -1,19 +1,18 @@
1
- import { AdkSendMessageConfig } from "../types.js";
2
- //#region src/server/parseAdkRequest.d.ts
1
+ import type { AdkSendMessageConfig } from "../types.js";
3
2
  type ParsedAdkRequest = {
4
- type: "message";
5
- text: string;
6
- parts?: Array<Record<string, unknown>> | undefined;
7
- config: AdkSendMessageConfig;
8
- stateDelta?: Record<string, unknown> | undefined;
3
+ type: "message";
4
+ text: string;
5
+ parts?: Array<Record<string, unknown>> | undefined;
6
+ config: AdkSendMessageConfig;
7
+ stateDelta?: Record<string, unknown> | undefined;
9
8
  } | {
10
- type: "tool-result";
11
- toolCallId: string;
12
- toolName: string;
13
- result: unknown;
14
- isError: boolean;
15
- config: AdkSendMessageConfig;
16
- stateDelta?: Record<string, unknown> | undefined;
9
+ type: "tool-result";
10
+ toolCallId: string;
11
+ toolName: string;
12
+ result: unknown;
13
+ isError: boolean;
14
+ config: AdkSendMessageConfig;
15
+ stateDelta?: Record<string, unknown> | undefined;
17
16
  };
18
17
  /**
19
18
  * Parses an incoming HTTP request into a structured ADK request.
@@ -36,7 +35,7 @@ type ParsedAdkRequest = {
36
35
  * }
37
36
  * ```
38
37
  */
39
- declare const parseAdkRequest: (request: Request) => Promise<ParsedAdkRequest>;
38
+ export declare const parseAdkRequest: (request: Request) => Promise<ParsedAdkRequest>;
40
39
  /**
41
40
  * Converts a parsed ADK request into a Google GenAI Content object
42
41
  * suitable for `Runner.runAsync({ newMessage })`.
@@ -49,10 +48,9 @@ declare const parseAdkRequest: (request: Request) => Promise<ParsedAdkRequest>;
49
48
  * return adkEventStream(events);
50
49
  * ```
51
50
  */
52
- declare const toAdkContent: (parsed: ParsedAdkRequest) => {
53
- role: string;
54
- parts: Array<Record<string, unknown>>;
51
+ export declare const toAdkContent: (parsed: ParsedAdkRequest) => {
52
+ role: string;
53
+ parts: Array<Record<string, unknown>>;
55
54
  };
56
- //#endregion
57
- export { parseAdkRequest, toAdkContent };
55
+ export {};
58
56
  //# sourceMappingURL=parseAdkRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseAdkRequest.d.ts","names":[],"sources":["../../src/server/parseAdkRequest.ts"],"mappings":";;KAIK;EAEC;EACA;EACA,QAAQ,MAAM;EACd,QAAQ;EACR,aAAa;;EAGb;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,aAAa;;;;;;;;;;;;;;;;;;;;;;;cA6HN,kBACX,SAAS,YACR,QAAQ;;;;;;;;;;;;;cAsFE,eACX,QAAQ;EACL;EAAc,OAAO,MAAM"}
1
+ {"version":3,"file":"parseAdkRequest.d.ts","sourceRoot":"","sources":["../../src/server/parseAdkRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAiB;AAGrD,KAAK,gBAAgB,GACjB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACnD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAClD,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAClD,CAAC;AAuGN;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,OAAO,KACf,OAAO,CAAC,gBAAgB,CAwE1B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GACvB,QAAQ,gBAAgB,KACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAsBvD,CAAC"}
@@ -1,10 +1,7 @@
1
- import { AdkEvent, AdkStructuredEvent } from "./types.js";
2
- //#region src/structuredEvents.d.ts
1
+ import type { AdkEvent, AdkStructuredEvent } from "./types.js";
3
2
  /**
4
3
  * Converts a raw `AdkEvent` into an array of structured, typed events.
5
4
  * Useful for building custom event renderers.
6
5
  */
7
- declare function toAdkStructuredEvents(event: AdkEvent): AdkStructuredEvent[];
8
- //#endregion
9
- export { toAdkStructuredEvents };
6
+ export declare function toAdkStructuredEvents(event: AdkEvent): AdkStructuredEvent[];
10
7
  //# sourceMappingURL=structuredEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structuredEvents.d.ts","names":[],"sources":["../src/structuredEvents.ts"],"mappings":";;;;;;iBAOgB,sBAAsB,OAAO,WAAW"}
1
+ {"version":3,"file":"structuredEvents.d.ts","sourceRoot":"","sources":["../src/structuredEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,mBAAgB;AAG5D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,kBAAkB,EAAE,CA4E3E"}
@@ -29,7 +29,7 @@ function toAdkStructuredEvents(event) {
29
29
  type: "tool_call",
30
30
  call: {
31
31
  name: part.functionCall.name,
32
- args: part.functionCall.args
32
+ args: part.functionCall.args ?? {}
33
33
  }
34
34
  };
35
35
  if (part.functionCall.id != null) call.call.id = part.functionCall.id;
@@ -1 +1 @@
1
- {"version":3,"file":"structuredEvents.js","names":[],"sources":["../src/structuredEvents.ts"],"sourcesContent":["import type { AdkEvent, AdkStructuredEvent } from \"./types\";\nimport { isFinalResponse } from \"./AdkEventAccumulator\";\n\n/**\n * Converts a raw `AdkEvent` into an array of structured, typed events.\n * Useful for building custom event renderers.\n */\nexport function toAdkStructuredEvents(event: AdkEvent): AdkStructuredEvent[] {\n const result: AdkStructuredEvent[] = [];\n\n if (event.errorCode || event.errorMessage) {\n const err: AdkStructuredEvent & { type: \"error\" } = { type: \"error\" };\n if (event.errorCode != null) err.errorCode = event.errorCode;\n if (event.errorMessage != null) err.errorMessage = event.errorMessage;\n result.push(err);\n }\n\n const parts = event.content?.parts;\n if (parts) {\n for (const part of parts) {\n if (part.text != null) {\n if (part.thought) {\n result.push({ type: \"thought\", content: part.text });\n } else {\n result.push({ type: \"content\", content: part.text });\n }\n }\n if (part.functionCall) {\n const call: AdkStructuredEvent & { type: \"tool_call\" } = {\n type: \"tool_call\",\n call: { name: part.functionCall.name, args: part.functionCall.args },\n };\n if (part.functionCall.id != null) call.call.id = part.functionCall.id;\n result.push(call);\n }\n if (part.functionResponse) {\n const tr: AdkStructuredEvent & { type: \"tool_result\" } = {\n type: \"tool_result\",\n result: {\n name: part.functionResponse.name,\n response: part.functionResponse.response,\n },\n };\n if (part.functionResponse.id != null)\n tr.result.id = part.functionResponse.id;\n result.push(tr);\n }\n if (part.executableCode) {\n const ce: AdkStructuredEvent & { type: \"call_code\" } = {\n type: \"call_code\",\n code: { code: part.executableCode.code },\n };\n if (part.executableCode.language != null)\n ce.code.language = part.executableCode.language;\n result.push(ce);\n }\n if (part.codeExecutionResult) {\n const cr: AdkStructuredEvent & { type: \"code_result\" } = {\n type: \"code_result\",\n result: { output: part.codeExecutionResult.output },\n };\n if (part.codeExecutionResult.outcome != null)\n cr.result.outcome = part.codeExecutionResult.outcome;\n result.push(cr);\n }\n }\n }\n\n if (event.actions?.requestedToolConfirmations) {\n result.push({\n type: \"tool_confirmation\",\n confirmations: event.actions.requestedToolConfirmations,\n });\n }\n\n if (isFinalResponse(event) && result.length === 0) {\n result.push({ type: \"finished\" });\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAOA,SAAgB,sBAAsB,OAAuC;CAC3E,MAAM,SAA+B,CAAC;CAEtC,IAAI,MAAM,aAAa,MAAM,cAAc;EACzC,MAAM,MAA8C,EAAE,MAAM,QAAQ;EACpE,IAAI,MAAM,aAAa,MAAM,IAAI,YAAY,MAAM;EACnD,IAAI,MAAM,gBAAgB,MAAM,IAAI,eAAe,MAAM;EACzD,OAAO,KAAK,GAAG;CACjB;CAEA,MAAM,QAAQ,MAAM,SAAS;CAC7B,IAAI,OACF,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,QAAQ,MAAM;GACrB,IAAI,KAAK,SACP,OAAO,KAAK;IAAE,MAAM;IAAW,SAAS,KAAK;GAAK,CAAC;QAEnD,OAAO,KAAK;IAAE,MAAM;IAAW,SAAS,KAAK;GAAK,CAAC;EAEvD;EACA,IAAI,KAAK,cAAc;GACrB,MAAM,OAAmD;IACvD,MAAM;IACN,MAAM;KAAE,MAAM,KAAK,aAAa;KAAM,MAAM,KAAK,aAAa;IAAK;GACrE;GACA,IAAI,KAAK,aAAa,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,aAAa;GACnE,OAAO,KAAK,IAAI;EAClB;EACA,IAAI,KAAK,kBAAkB;GACzB,MAAM,KAAmD;IACvD,MAAM;IACN,QAAQ;KACN,MAAM,KAAK,iBAAiB;KAC5B,UAAU,KAAK,iBAAiB;IAClC;GACF;GACA,IAAI,KAAK,iBAAiB,MAAM,MAC9B,GAAG,OAAO,KAAK,KAAK,iBAAiB;GACvC,OAAO,KAAK,EAAE;EAChB;EACA,IAAI,KAAK,gBAAgB;GACvB,MAAM,KAAiD;IACrD,MAAM;IACN,MAAM,EAAE,MAAM,KAAK,eAAe,KAAK;GACzC;GACA,IAAI,KAAK,eAAe,YAAY,MAClC,GAAG,KAAK,WAAW,KAAK,eAAe;GACzC,OAAO,KAAK,EAAE;EAChB;EACA,IAAI,KAAK,qBAAqB;GAC5B,MAAM,KAAmD;IACvD,MAAM;IACN,QAAQ,EAAE,QAAQ,KAAK,oBAAoB,OAAO;GACpD;GACA,IAAI,KAAK,oBAAoB,WAAW,MACtC,GAAG,OAAO,UAAU,KAAK,oBAAoB;GAC/C,OAAO,KAAK,EAAE;EAChB;CACF;CAGF,IAAI,MAAM,SAAS,4BACjB,OAAO,KAAK;EACV,MAAM;EACN,eAAe,MAAM,QAAQ;CAC/B,CAAC;CAGH,IAAI,gBAAgB,KAAK,KAAK,OAAO,WAAW,GAC9C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAC;CAGlC,OAAO;AACT"}
1
+ {"version":3,"file":"structuredEvents.js","names":[],"sources":["../src/structuredEvents.ts"],"sourcesContent":["import type { AdkEvent, AdkStructuredEvent } from \"./types\";\nimport { isFinalResponse } from \"./AdkEventAccumulator\";\n\n/**\n * Converts a raw `AdkEvent` into an array of structured, typed events.\n * Useful for building custom event renderers.\n */\nexport function toAdkStructuredEvents(event: AdkEvent): AdkStructuredEvent[] {\n const result: AdkStructuredEvent[] = [];\n\n if (event.errorCode || event.errorMessage) {\n const err: AdkStructuredEvent & { type: \"error\" } = { type: \"error\" };\n if (event.errorCode != null) err.errorCode = event.errorCode;\n if (event.errorMessage != null) err.errorMessage = event.errorMessage;\n result.push(err);\n }\n\n const parts = event.content?.parts;\n if (parts) {\n for (const part of parts) {\n if (part.text != null) {\n if (part.thought) {\n result.push({ type: \"thought\", content: part.text });\n } else {\n result.push({ type: \"content\", content: part.text });\n }\n }\n if (part.functionCall) {\n const call: AdkStructuredEvent & { type: \"tool_call\" } = {\n type: \"tool_call\",\n call: {\n name: part.functionCall.name,\n args: part.functionCall.args ?? {},\n },\n };\n if (part.functionCall.id != null) call.call.id = part.functionCall.id;\n result.push(call);\n }\n if (part.functionResponse) {\n const tr: AdkStructuredEvent & { type: \"tool_result\" } = {\n type: \"tool_result\",\n result: {\n name: part.functionResponse.name,\n response: part.functionResponse.response,\n },\n };\n if (part.functionResponse.id != null)\n tr.result.id = part.functionResponse.id;\n result.push(tr);\n }\n if (part.executableCode) {\n const ce: AdkStructuredEvent & { type: \"call_code\" } = {\n type: \"call_code\",\n code: { code: part.executableCode.code },\n };\n if (part.executableCode.language != null)\n ce.code.language = part.executableCode.language;\n result.push(ce);\n }\n if (part.codeExecutionResult) {\n const cr: AdkStructuredEvent & { type: \"code_result\" } = {\n type: \"code_result\",\n result: { output: part.codeExecutionResult.output },\n };\n if (part.codeExecutionResult.outcome != null)\n cr.result.outcome = part.codeExecutionResult.outcome;\n result.push(cr);\n }\n }\n }\n\n if (event.actions?.requestedToolConfirmations) {\n result.push({\n type: \"tool_confirmation\",\n confirmations: event.actions.requestedToolConfirmations,\n });\n }\n\n if (isFinalResponse(event) && result.length === 0) {\n result.push({ type: \"finished\" });\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAOA,SAAgB,sBAAsB,OAAuC;CAC3E,MAAM,SAA+B,CAAC;CAEtC,IAAI,MAAM,aAAa,MAAM,cAAc;EACzC,MAAM,MAA8C,EAAE,MAAM,QAAQ;EACpE,IAAI,MAAM,aAAa,MAAM,IAAI,YAAY,MAAM;EACnD,IAAI,MAAM,gBAAgB,MAAM,IAAI,eAAe,MAAM;EACzD,OAAO,KAAK,GAAG;CACjB;CAEA,MAAM,QAAQ,MAAM,SAAS;CAC7B,IAAI,OACF,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,QAAQ,MAAM;GACrB,IAAI,KAAK,SACP,OAAO,KAAK;IAAE,MAAM;IAAW,SAAS,KAAK;GAAK,CAAC;QAEnD,OAAO,KAAK;IAAE,MAAM;IAAW,SAAS,KAAK;GAAK,CAAC;EAEvD;EACA,IAAI,KAAK,cAAc;GACrB,MAAM,OAAmD;IACvD,MAAM;IACN,MAAM;KACJ,MAAM,KAAK,aAAa;KACxB,MAAM,KAAK,aAAa,QAAQ,CAAC;IACnC;GACF;GACA,IAAI,KAAK,aAAa,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK,aAAa;GACnE,OAAO,KAAK,IAAI;EAClB;EACA,IAAI,KAAK,kBAAkB;GACzB,MAAM,KAAmD;IACvD,MAAM;IACN,QAAQ;KACN,MAAM,KAAK,iBAAiB;KAC5B,UAAU,KAAK,iBAAiB;IAClC;GACF;GACA,IAAI,KAAK,iBAAiB,MAAM,MAC9B,GAAG,OAAO,KAAK,KAAK,iBAAiB;GACvC,OAAO,KAAK,EAAE;EAChB;EACA,IAAI,KAAK,gBAAgB;GACvB,MAAM,KAAiD;IACrD,MAAM;IACN,MAAM,EAAE,MAAM,KAAK,eAAe,KAAK;GACzC;GACA,IAAI,KAAK,eAAe,YAAY,MAClC,GAAG,KAAK,WAAW,KAAK,eAAe;GACzC,OAAO,KAAK,EAAE;EAChB;EACA,IAAI,KAAK,qBAAqB;GAC5B,MAAM,KAAmD;IACvD,MAAM;IACN,QAAQ,EAAE,QAAQ,KAAK,oBAAoB,OAAO;GACpD;GACA,IAAI,KAAK,oBAAoB,WAAW,MACtC,GAAG,OAAO,UAAU,KAAK,oBAAoB;GAC/C,OAAO,KAAK,EAAE;EAChB;CACF;CAGF,IAAI,MAAM,SAAS,4BACjB,OAAO,KAAK;EACV,MAAM;EACN,eAAe,MAAM,QAAQ;CAC/B,CAAC;CAGH,IAAI,gBAAgB,KAAK,KAAK,OAAO,WAAW,GAC9C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAC;CAGlC,OAAO;AACT"}
@@ -1,6 +1,3 @@
1
- //#region src/toAdkFunctionResponse.d.ts
2
- declare const isAdkFunctionError: (response: unknown) => boolean;
3
- declare const toAdkFunctionResponse: (result: unknown, isError?: boolean) => Record<string, unknown>;
4
- //#endregion
5
- export { isAdkFunctionError, toAdkFunctionResponse };
1
+ export declare const isAdkFunctionError: (response: unknown) => boolean;
2
+ export declare const toAdkFunctionResponse: (result: unknown, isError?: boolean) => Record<string, unknown>;
6
3
  //# sourceMappingURL=toAdkFunctionResponse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toAdkFunctionResponse.d.ts","names":[],"sources":["../src/toAdkFunctionResponse.ts"],"mappings":";cAEa,qBAAsB;cAKtB,wBACX,iBACA,sBACC"}
1
+ {"version":3,"file":"toAdkFunctionResponse.d.ts","sourceRoot":"","sources":["../src/toAdkFunctionResponse.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,GAAI,UAAU,OAAO,KAAG,OAGzB,CAAC;AAE/B,eAAO,MAAM,qBAAqB,GAChC,QAAQ,OAAO,EACf,iBAAe,KACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAOxB,CAAC"}
@@ -1,5 +1,2 @@
1
- //#region src/trimTrailingSlashes.d.ts
2
- declare const trimTrailingSlashes: (value: string) => string;
3
- //#endregion
4
- export { trimTrailingSlashes };
1
+ export declare const trimTrailingSlashes: (value: string) => string;
5
2
  //# sourceMappingURL=trimTrailingSlashes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trimTrailingSlashes.d.ts","names":[],"sources":["../src/trimTrailingSlashes.ts"],"mappings":";cAAa,sBAAuB"}
1
+ {"version":3,"file":"trimTrailingSlashes.d.ts","sourceRoot":"","sources":["../src/trimTrailingSlashes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,WAIhD,CAAC"}