@assistant-ui/react-google-adk 0.0.31 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/AdkClient.d.ts +24 -26
- package/dist/AdkClient.d.ts.map +1 -1
- package/dist/AdkClient.js +5 -3
- package/dist/AdkClient.js.map +1 -1
- package/dist/AdkEventAccumulator.d.ts +39 -41
- package/dist/AdkEventAccumulator.d.ts.map +1 -1
- package/dist/AdkSessionAdapter.d.ts +38 -39
- package/dist/AdkSessionAdapter.d.ts.map +1 -1
- package/dist/AdkSessionAdapter.js +4 -3
- package/dist/AdkSessionAdapter.js.map +1 -1
- package/dist/adkAuthRequest.d.ts +17 -0
- package/dist/adkAuthRequest.d.ts.map +1 -0
- package/dist/adkAuthRequest.js +45 -0
- package/dist/adkAuthRequest.js.map +1 -0
- package/dist/adkExtras.d.ts +1 -3
- package/dist/adkExtras.d.ts.map +1 -1
- package/dist/adkToolApproval.d.ts +12 -14
- package/dist/adkToolApproval.d.ts.map +1 -1
- package/dist/contentToParts.d.ts +1 -3
- package/dist/contentToParts.d.ts.map +1 -1
- package/dist/contentToParts.js +1 -0
- package/dist/contentToParts.js.map +1 -1
- package/dist/convertAdkMessages.d.ts +3 -5
- package/dist/convertAdkMessages.d.ts.map +1 -1
- package/dist/convertAdkMessages.js +8 -3
- package/dist/convertAdkMessages.js.map +1 -1
- package/dist/convertToAdkMessages.d.ts +32 -34
- package/dist/convertToAdkMessages.d.ts.map +1 -1
- package/dist/hooks.d.ts +10 -7
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +11 -9
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -0
- package/dist/normalizeAdkPart.d.ts +0 -2
- package/dist/normalizeAdkPart.d.ts.map +1 -1
- package/dist/parseAdkEvent.d.ts +1 -3
- package/dist/parseAdkEvent.d.ts.map +1 -1
- package/dist/raceWithAbortSignal.d.ts +2 -0
- package/dist/raceWithAbortSignal.d.ts.map +1 -0
- package/dist/raceWithAbortSignal.js +45 -0
- package/dist/raceWithAbortSignal.js.map +1 -0
- package/dist/sdkIdentity.d.ts +1 -3
- package/dist/sdkIdentity.d.ts.map +1 -1
- package/dist/sdkIdentity.js +1 -1
- package/dist/server/adkEventStream.d.ts +23 -24
- package/dist/server/adkEventStream.d.ts.map +1 -1
- package/dist/server/adkEventStream.js +23 -15
- package/dist/server/adkEventStream.js.map +1 -1
- package/dist/server/createAdkApiRoute.d.ts +21 -22
- package/dist/server/createAdkApiRoute.d.ts.map +1 -1
- package/dist/server/index.d.ts +4 -4
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/parseAdkRequest.d.ts +16 -17
- package/dist/server/parseAdkRequest.d.ts.map +1 -1
- package/dist/structuredEvents.d.ts +1 -3
- package/dist/structuredEvents.d.ts.map +1 -1
- package/dist/toAdkFunctionResponse.d.ts +0 -2
- package/dist/toAdkFunctionResponse.d.ts.map +1 -1
- package/dist/trimTrailingSlashes.d.ts +0 -2
- package/dist/trimTrailingSlashes.d.ts.map +1 -1
- package/dist/types.d.ts +232 -234
- package/dist/types.d.ts.map +1 -1
- package/dist/useAdkMessages.d.ts +25 -27
- package/dist/useAdkMessages.d.ts.map +1 -1
- package/dist/useAdkMessages.js +6 -5
- package/dist/useAdkMessages.js.map +1 -1
- package/dist/useAdkRuntime.d.ts +48 -49
- package/dist/useAdkRuntime.d.ts.map +1 -1
- package/package.json +8 -5
- package/src/AdkClient.test.ts +50 -0
- package/src/AdkClient.ts +10 -3
- package/src/AdkSessionAdapter.test.ts +17 -0
- package/src/AdkSessionAdapter.ts +8 -3
- package/src/adkAuthRequest.test.ts +101 -0
- package/src/adkAuthRequest.ts +50 -0
- package/src/contentToParts.ts +2 -0
- package/src/convertAdkMessages.test.ts +54 -0
- package/src/convertAdkMessages.ts +24 -7
- package/src/convertToAdkMessages.test.ts +6 -0
- package/src/hooks.render.test.tsx +95 -2
- package/src/hooks.ts +12 -13
- package/src/raceWithAbortSignal.test.ts +73 -0
- package/src/raceWithAbortSignal.ts +48 -0
- package/src/server/adkEventStream.test.ts +147 -0
- package/src/server/adkEventStream.ts +27 -20
- package/src/tests/settleOutsideAct.ts +15 -0
- package/src/useAdkMessages.fast-refresh.test.tsx +114 -0
- package/src/useAdkMessages.test.ts +35 -0
- package/src/useAdkMessages.ts +5 -5
- package/src/useAdkRuntime.refetch.test.tsx +7 -6
- package/src/useAdkRuntime.replacement.test.tsx +4 -3
- package/src/useAdkRuntime.toolOwnership.test.tsx +4 -3
|
@@ -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
|
-
|
|
75
|
+
start(controller) {
|
|
76
76
|
controller.enqueue(encoder.encode(":ok\n\n"));
|
|
77
|
+
},
|
|
78
|
+
async pull(controller) {
|
|
77
79
|
try {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
controller.
|
|
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 (
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
|
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
|
-
|
|
7
|
+
runAsync(options: Record<string, unknown>): AsyncGenerator<any, void, undefined>;
|
|
9
8
|
};
|
|
10
9
|
export type CreateAdkApiRouteOptions = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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`,
|
|
@@ -44,5 +43,5 @@ export type CreateAdkApiRouteOptions = {
|
|
|
44
43
|
* ```
|
|
45
44
|
*/
|
|
46
45
|
export declare function createAdkApiRoute(options: CreateAdkApiRouteOptions): (req: Request) => Promise<Response>;
|
|
47
|
-
|
|
46
|
+
export {};
|
|
48
47
|
//# sourceMappingURL=createAdkApiRoute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAdkApiRoute.d.ts","
|
|
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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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.
|
|
@@ -50,8 +49,8 @@ export declare const parseAdkRequest: (request: Request) => Promise<ParsedAdkReq
|
|
|
50
49
|
* ```
|
|
51
50
|
*/
|
|
52
51
|
export declare const toAdkContent: (parsed: ParsedAdkRequest) => {
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
role: string;
|
|
53
|
+
parts: Array<Record<string, unknown>>;
|
|
55
54
|
};
|
|
56
|
-
|
|
55
|
+
export {};
|
|
57
56
|
//# sourceMappingURL=parseAdkRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseAdkRequest.d.ts","
|
|
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,9 +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
6
|
export declare function toAdkStructuredEvents(event: AdkEvent): AdkStructuredEvent[];
|
|
8
|
-
//#endregion
|
|
9
7
|
//# sourceMappingURL=structuredEvents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredEvents.d.ts","
|
|
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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
//#region src/toAdkFunctionResponse.d.ts
|
|
2
1
|
export declare const isAdkFunctionError: (response: unknown) => boolean;
|
|
3
2
|
export declare const toAdkFunctionResponse: (result: unknown, isError?: boolean) => Record<string, unknown>;
|
|
4
|
-
//#endregion
|
|
5
3
|
//# sourceMappingURL=toAdkFunctionResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toAdkFunctionResponse.d.ts","
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trimTrailingSlashes.d.ts","
|
|
1
|
+
{"version":3,"file":"trimTrailingSlashes.d.ts","sourceRoot":"","sources":["../src/trimTrailingSlashes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,WAIhD,CAAC"}
|