@assistant-ui/react-google-adk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/AdkClient.d.ts +45 -0
  4. package/dist/AdkClient.d.ts.map +1 -0
  5. package/dist/AdkClient.js +204 -0
  6. package/dist/AdkClient.js.map +1 -0
  7. package/dist/AdkEventAccumulator.d.ts +45 -0
  8. package/dist/AdkEventAccumulator.d.ts.map +1 -0
  9. package/dist/AdkEventAccumulator.js +508 -0
  10. package/dist/AdkEventAccumulator.js.map +1 -0
  11. package/dist/AdkSessionAdapter.d.ts +61 -0
  12. package/dist/AdkSessionAdapter.d.ts.map +1 -0
  13. package/dist/AdkSessionAdapter.js +159 -0
  14. package/dist/AdkSessionAdapter.js.map +1 -0
  15. package/dist/convertAdkMessages.d.ts +4 -0
  16. package/dist/convertAdkMessages.d.ts.map +1 -0
  17. package/dist/convertAdkMessages.js +75 -0
  18. package/dist/convertAdkMessages.js.map +1 -0
  19. package/dist/hooks.d.ts +50 -0
  20. package/dist/hooks.d.ts.map +1 -0
  21. package/dist/hooks.js +173 -0
  22. package/dist/hooks.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +10 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/server/adkEventStream.d.ts +42 -0
  28. package/dist/server/adkEventStream.d.ts.map +1 -0
  29. package/dist/server/adkEventStream.js +135 -0
  30. package/dist/server/adkEventStream.js.map +1 -0
  31. package/dist/server/createAdkApiRoute.d.ts +47 -0
  32. package/dist/server/createAdkApiRoute.d.ts.map +1 -0
  33. package/dist/server/createAdkApiRoute.js +41 -0
  34. package/dist/server/createAdkApiRoute.js.map +1 -0
  35. package/dist/server/index.d.ts +4 -0
  36. package/dist/server/index.d.ts.map +1 -0
  37. package/dist/server/index.js +4 -0
  38. package/dist/server/index.js.map +1 -0
  39. package/dist/server/parseAdkRequest.d.ts +56 -0
  40. package/dist/server/parseAdkRequest.d.ts.map +1 -0
  41. package/dist/server/parseAdkRequest.js +93 -0
  42. package/dist/server/parseAdkRequest.js.map +1 -0
  43. package/dist/structuredEvents.d.ts +7 -0
  44. package/dist/structuredEvents.d.ts.map +1 -0
  45. package/dist/structuredEvents.js +79 -0
  46. package/dist/structuredEvents.js.map +1 -0
  47. package/dist/types.d.ts +253 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +14 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/useAdkMessages.d.ts +28 -0
  52. package/dist/useAdkMessages.d.ts.map +1 -0
  53. package/dist/useAdkMessages.js +198 -0
  54. package/dist/useAdkMessages.js.map +1 -0
  55. package/dist/useAdkRuntime.d.ts +36 -0
  56. package/dist/useAdkRuntime.d.ts.map +1 -0
  57. package/dist/useAdkRuntime.js +252 -0
  58. package/dist/useAdkRuntime.js.map +1 -0
  59. package/package.json +83 -0
  60. package/server/package.json +4 -0
  61. package/src/AdkClient.test.ts +662 -0
  62. package/src/AdkClient.ts +274 -0
  63. package/src/AdkEventAccumulator.test.ts +591 -0
  64. package/src/AdkEventAccumulator.ts +602 -0
  65. package/src/AdkSessionAdapter.test.ts +362 -0
  66. package/src/AdkSessionAdapter.ts +245 -0
  67. package/src/convertAdkMessages.test.ts +209 -0
  68. package/src/convertAdkMessages.ts +93 -0
  69. package/src/hooks.ts +217 -0
  70. package/src/index.ts +66 -0
  71. package/src/server/adkEventStream.test.ts +78 -0
  72. package/src/server/adkEventStream.ts +161 -0
  73. package/src/server/createAdkApiRoute.test.ts +370 -0
  74. package/src/server/createAdkApiRoute.ts +86 -0
  75. package/src/server/index.ts +6 -0
  76. package/src/server/parseAdkRequest.test.ts +152 -0
  77. package/src/server/parseAdkRequest.ts +122 -0
  78. package/src/structuredEvents.ts +81 -0
  79. package/src/types.ts +265 -0
  80. package/src/useAdkMessages.ts +259 -0
  81. package/src/useAdkRuntime.ts +398 -0
@@ -0,0 +1,159 @@
1
+ import { AdkEventAccumulator } from "./AdkEventAccumulator.js";
2
+ /**
3
+ * Creates a `RemoteThreadListAdapter` backed by ADK's session REST API,
4
+ * plus a `load` function that reconstructs messages from session events.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const { adapter, load } = createAdkSessionAdapter({
9
+ * apiUrl: "http://localhost:8000",
10
+ * appName: "my-app",
11
+ * userId: "user-1",
12
+ * });
13
+ *
14
+ * const runtime = useAdkRuntime({
15
+ * stream: createAdkStream({ ... }),
16
+ * sessionAdapter: adapter,
17
+ * load,
18
+ * });
19
+ * ```
20
+ */
21
+ export function createAdkSessionAdapter(options) {
22
+ const { apiUrl, appName, userId } = options;
23
+ const baseUrl = `${apiUrl}/apps/${encodeURIComponent(appName)}/users/${encodeURIComponent(userId)}/sessions`;
24
+ const getHeaders = async () => {
25
+ if (!options.headers)
26
+ return {};
27
+ if (typeof options.headers === "function")
28
+ return await options.headers();
29
+ return options.headers;
30
+ };
31
+ const adapter = {
32
+ async list() {
33
+ const headers = await getHeaders();
34
+ const res = await fetch(baseUrl, { headers });
35
+ if (!res.ok) {
36
+ throw new Error(`Failed to list sessions: ${res.status}`);
37
+ }
38
+ const data = (await res.json());
39
+ const threads = data.map((session) => ({
40
+ status: "regular",
41
+ remoteId: session.id,
42
+ externalId: session.id,
43
+ title: undefined,
44
+ }));
45
+ return { threads };
46
+ },
47
+ async initialize(threadId) {
48
+ const headers = await getHeaders();
49
+ const res = await fetch(baseUrl, {
50
+ method: "POST",
51
+ headers: { "Content-Type": "application/json", ...headers },
52
+ body: JSON.stringify({}),
53
+ });
54
+ if (!res.ok) {
55
+ throw new Error(`Failed to create session: ${res.status}`);
56
+ }
57
+ const session = (await res.json());
58
+ return { remoteId: threadId, externalId: session.id };
59
+ },
60
+ async delete(remoteId) {
61
+ const headers = await getHeaders();
62
+ const res = await fetch(`${baseUrl}/${encodeURIComponent(remoteId)}`, {
63
+ method: "DELETE",
64
+ headers,
65
+ });
66
+ if (!res.ok && res.status !== 404) {
67
+ throw new Error(`Failed to delete session: ${res.status}`);
68
+ }
69
+ },
70
+ async rename() {
71
+ // ADK sessions don't support titles
72
+ },
73
+ async archive() {
74
+ // ADK sessions don't support archiving
75
+ },
76
+ async unarchive() {
77
+ // ADK sessions don't support archiving
78
+ },
79
+ generateTitle() {
80
+ // Title generation not supported without assistant-cloud
81
+ return Promise.resolve(new ReadableStream());
82
+ },
83
+ async fetch(threadId) {
84
+ const headers = await getHeaders();
85
+ const res = await fetch(`${baseUrl}/${encodeURIComponent(threadId)}`, {
86
+ headers,
87
+ });
88
+ if (!res.ok) {
89
+ throw new Error(`Session not found: ${res.status}`);
90
+ }
91
+ const session = (await res.json());
92
+ return {
93
+ status: "regular",
94
+ remoteId: session.id,
95
+ externalId: session.id,
96
+ title: undefined,
97
+ };
98
+ },
99
+ };
100
+ const load = async (sessionId) => {
101
+ const headers = await getHeaders();
102
+ const res = await fetch(`${baseUrl}/${encodeURIComponent(sessionId)}`, {
103
+ headers,
104
+ });
105
+ if (!res.ok) {
106
+ throw new Error(`Failed to load session: ${res.status}`);
107
+ }
108
+ const session = (await res.json());
109
+ if (!session.events?.length) {
110
+ return { messages: [] };
111
+ }
112
+ const accumulator = new AdkEventAccumulator();
113
+ let messages = [];
114
+ for (const event of session.events) {
115
+ messages = accumulator.processEvent(event);
116
+ }
117
+ return { messages };
118
+ };
119
+ const artifactBaseUrl = (sessionId) => `${baseUrl}/${encodeURIComponent(sessionId)}/artifacts`;
120
+ const artifacts = {
121
+ async list(sessionId) {
122
+ const headers = await getHeaders();
123
+ const res = await fetch(artifactBaseUrl(sessionId), { headers });
124
+ if (!res.ok)
125
+ throw new Error(`Failed to list artifacts: ${res.status}`);
126
+ const data = (await res.json());
127
+ return data.map((a) => a.filename);
128
+ },
129
+ async load(sessionId, artifactName, version) {
130
+ const headers = await getHeaders();
131
+ let url = `${artifactBaseUrl(sessionId)}/${encodeURIComponent(artifactName)}`;
132
+ if (version != null)
133
+ url += `/versions/${version}`;
134
+ const res = await fetch(url, { headers });
135
+ if (!res.ok)
136
+ throw new Error(`Failed to load artifact: ${res.status}`);
137
+ return (await res.json());
138
+ },
139
+ async listVersions(sessionId, artifactName) {
140
+ const headers = await getHeaders();
141
+ const url = `${artifactBaseUrl(sessionId)}/${encodeURIComponent(artifactName)}/versions`;
142
+ const res = await fetch(url, { headers });
143
+ if (!res.ok) {
144
+ throw new Error(`Failed to list artifact versions: ${res.status}`);
145
+ }
146
+ return (await res.json());
147
+ },
148
+ async delete(sessionId, artifactName) {
149
+ const headers = await getHeaders();
150
+ const url = `${artifactBaseUrl(sessionId)}/${encodeURIComponent(artifactName)}`;
151
+ const res = await fetch(url, { method: "DELETE", headers });
152
+ if (!res.ok && res.status !== 404) {
153
+ throw new Error(`Failed to delete artifact: ${res.status}`);
154
+ }
155
+ },
156
+ };
157
+ return { adapter, load, artifacts };
158
+ }
159
+ //# sourceMappingURL=AdkSessionAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdkSessionAdapter.js","sourceRoot":"","sources":["../src/AdkSessionAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { useExternalMessageConverter } from "@assistant-ui/core/react";
2
+ import type { AdkMessage } from "./types.js";
3
+ export declare const convertAdkMessage: useExternalMessageConverter.Callback<AdkMessage>;
4
+ //# sourceMappingURL=convertAdkMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertAdkMessages.d.ts","sourceRoot":"","sources":["../src/convertAdkMessages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAyB,mBAAgB;AA6CjE,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CAAC,QAAQ,CAClE,UAAU,CA0CX,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ const contentToParts = (content) => {
3
+ if (typeof content === "string")
4
+ return [{ type: "text", text: content }];
5
+ return content
6
+ .map((part) => {
7
+ switch (part.type) {
8
+ case "text":
9
+ return { type: "text", text: part.text };
10
+ case "reasoning":
11
+ return { type: "reasoning", text: part.text };
12
+ case "image":
13
+ return {
14
+ type: "image",
15
+ image: `data:${part.mimeType};base64,${part.data}`,
16
+ };
17
+ case "image_url":
18
+ return { type: "image", image: part.url };
19
+ case "code":
20
+ return {
21
+ type: "data",
22
+ name: "executable_code",
23
+ data: { code: part.code, language: part.language },
24
+ };
25
+ case "code_result":
26
+ return {
27
+ type: "data",
28
+ name: "code_execution_result",
29
+ data: { output: part.output, outcome: part.outcome },
30
+ };
31
+ default:
32
+ return null;
33
+ }
34
+ })
35
+ .filter((p) => p !== null);
36
+ };
37
+ export const convertAdkMessage = (message) => {
38
+ switch (message.type) {
39
+ case "human":
40
+ return {
41
+ role: "user",
42
+ id: message.id,
43
+ content: contentToParts(message.content),
44
+ };
45
+ case "ai": {
46
+ const toolCallParts = message.tool_calls?.map((tc) => ({
47
+ type: "tool-call",
48
+ toolCallId: tc.id,
49
+ toolName: tc.name,
50
+ args: tc.args,
51
+ argsText: tc.argsText ?? JSON.stringify(tc.args),
52
+ })) ?? [];
53
+ return {
54
+ role: "assistant",
55
+ id: message.id,
56
+ content: [...contentToParts(message.content), ...toolCallParts],
57
+ ...(message.status && { status: message.status }),
58
+ ...(message.author && {
59
+ metadata: {
60
+ custom: { author: message.author, branch: message.branch },
61
+ },
62
+ }),
63
+ };
64
+ }
65
+ case "tool":
66
+ return {
67
+ role: "tool",
68
+ toolCallId: message.tool_call_id,
69
+ toolName: message.name,
70
+ result: message.content,
71
+ isError: message.status === "error",
72
+ };
73
+ }
74
+ };
75
+ //# sourceMappingURL=convertAdkMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertAdkMessages.js","sourceRoot":"","sources":["../src/convertAdkMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /// <reference types="@assistant-ui/core/store" />
2
+ import type { AdkMessage, AdkSendMessageConfig, AdkToolConfirmation, AdkAuthCredential, AdkAuthRequest, AdkMessageMetadata } from "./types.js";
3
+ export declare const symbolAdkRuntimeExtras: unique symbol;
4
+ export type AdkRuntimeExtras = {
5
+ [symbolAdkRuntimeExtras]: true;
6
+ send: (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
7
+ agentInfo: {
8
+ name?: string | undefined;
9
+ branch?: string | undefined;
10
+ };
11
+ stateDelta: Record<string, unknown>;
12
+ artifactDelta: Record<string, number>;
13
+ longRunningToolIds: string[];
14
+ toolConfirmations: AdkToolConfirmation[];
15
+ authRequests: AdkAuthRequest[];
16
+ escalated: boolean;
17
+ messageMetadata: Map<string, AdkMessageMetadata>;
18
+ };
19
+ /** Returns the name and branch of the currently active ADK agent. */
20
+ export declare const useAdkAgentInfo: () => {
21
+ name?: string | undefined;
22
+ branch?: string | undefined;
23
+ } | undefined;
24
+ /** Returns the accumulated session state delta from ADK events. */
25
+ export declare const useAdkSessionState: () => Record<string, unknown>;
26
+ /** Returns a function to send raw ADK messages. */
27
+ export declare const useAdkSend: () => (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
28
+ /** Returns the IDs of long-running tools awaiting external input. */
29
+ export declare const useAdkLongRunningToolIds: () => string[];
30
+ /** Returns pending tool confirmation requests (from SecurityPlugin etc). */
31
+ export declare const useAdkToolConfirmations: () => AdkToolConfirmation[];
32
+ /** Returns pending auth credential requests from tools. */
33
+ export declare const useAdkAuthRequests: () => AdkAuthRequest[];
34
+ /** Returns the accumulated artifact delta (filename → version). */
35
+ export declare const useAdkArtifacts: () => Record<string, number>;
36
+ /** Returns whether any agent has escalated (requested human handoff). */
37
+ export declare const useAdkEscalation: () => boolean;
38
+ /** Returns per-message metadata (grounding, citation, usage). Keyed by message ID. */
39
+ export declare const useAdkMessageMetadata: () => Map<string, AdkMessageMetadata>;
40
+ /** Returns a function to confirm or deny a pending tool confirmation. */
41
+ export declare const useAdkConfirmTool: () => (toolCallId: string, confirmed: boolean, payload?: unknown) => Promise<void>;
42
+ /** Returns a function to submit auth credentials for a pending auth request. */
43
+ export declare const useAdkSubmitAuth: () => (toolCallId: string, credential: AdkAuthCredential) => Promise<void>;
44
+ /** Returns app-level state (keys prefixed with `app:`, prefix stripped). */
45
+ export declare const useAdkAppState: () => Record<string, unknown>;
46
+ /** Returns user-level state (keys prefixed with `user:`, prefix stripped). */
47
+ export declare const useAdkUserState: () => Record<string, unknown>;
48
+ /** Returns temp state (keys prefixed with `temp:`, prefix stripped). Not persisted. */
49
+ export declare const useAdkTempState: () => Record<string, unknown>;
50
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EACnB,mBAAgB;AAEjB,eAAO,MAAM,sBAAsB,eAA+B,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IACzC,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAClD,CAAC;AAeF,qEAAqE;AACrE,eAAO,MAAM,eAAe;WAxBN,MAAM,GAAG,SAAS;aAAW,MAAM,GAAG,SAAS;aA8BpE,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,+BAM9B,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,UAAU,SAEb,UAAU,UAAU,EAAE,EAAE,QAAQ,oBAAoB,kBAK7D,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,gBAMpC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,6BAMnC,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,wBAM9B,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,eAAe,8BAM3B,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,eAM5B,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,uCAMjC,CAAC;AAIF,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,SAEpB,YAAY,MAAM,EAAE,WAAW,OAAO,EAAE,UAAU,OAAO,kBAoBlE,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,SAEnB,YAAY,MAAM,EAAE,YAAY,iBAAiB,kBAiB1D,CAAC;AAqBF,4EAA4E;AAC5E,eAAO,MAAM,cAAc,+BAM1B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,eAAe,+BAM3B,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,eAAe,+BAM3B,CAAC"}
package/dist/hooks.js ADDED
@@ -0,0 +1,173 @@
1
+ /// <reference types="@assistant-ui/core/store" />
2
+ import { useAui, useAuiState } from "@assistant-ui/store";
3
+ import { v4 as uuidv4 } from "uuid";
4
+ export const symbolAdkRuntimeExtras = Symbol("adk-runtime-extras");
5
+ const asAdkRuntimeExtras = (extras) => {
6
+ if (typeof extras !== "object" ||
7
+ extras == null ||
8
+ !(symbolAdkRuntimeExtras in extras))
9
+ throw new Error("This method can only be called when you are using useAdkRuntime");
10
+ return extras;
11
+ };
12
+ /** Returns the name and branch of the currently active ADK agent. */
13
+ export const useAdkAgentInfo = () => {
14
+ return useAuiState((s) => {
15
+ const extras = s.thread.extras;
16
+ if (!extras)
17
+ return undefined;
18
+ return asAdkRuntimeExtras(extras).agentInfo;
19
+ });
20
+ };
21
+ /** Returns the accumulated session state delta from ADK events. */
22
+ export const useAdkSessionState = () => {
23
+ return useAuiState((s) => {
24
+ const extras = s.thread.extras;
25
+ if (!extras)
26
+ return {};
27
+ return asAdkRuntimeExtras(extras).stateDelta;
28
+ });
29
+ };
30
+ /** Returns a function to send raw ADK messages. */
31
+ export const useAdkSend = () => {
32
+ const aui = useAui();
33
+ return (messages, config) => {
34
+ const extras = aui.thread().getState().extras;
35
+ const { send } = asAdkRuntimeExtras(extras);
36
+ return send(messages, config);
37
+ };
38
+ };
39
+ /** Returns the IDs of long-running tools awaiting external input. */
40
+ export const useAdkLongRunningToolIds = () => {
41
+ return useAuiState((s) => {
42
+ const extras = s.thread.extras;
43
+ if (!extras)
44
+ return [];
45
+ return asAdkRuntimeExtras(extras).longRunningToolIds;
46
+ });
47
+ };
48
+ /** Returns pending tool confirmation requests (from SecurityPlugin etc). */
49
+ export const useAdkToolConfirmations = () => {
50
+ return useAuiState((s) => {
51
+ const extras = s.thread.extras;
52
+ if (!extras)
53
+ return [];
54
+ return asAdkRuntimeExtras(extras).toolConfirmations;
55
+ });
56
+ };
57
+ /** Returns pending auth credential requests from tools. */
58
+ export const useAdkAuthRequests = () => {
59
+ return useAuiState((s) => {
60
+ const extras = s.thread.extras;
61
+ if (!extras)
62
+ return [];
63
+ return asAdkRuntimeExtras(extras).authRequests;
64
+ });
65
+ };
66
+ /** Returns the accumulated artifact delta (filename → version). */
67
+ export const useAdkArtifacts = () => {
68
+ return useAuiState((s) => {
69
+ const extras = s.thread.extras;
70
+ if (!extras)
71
+ return {};
72
+ return asAdkRuntimeExtras(extras).artifactDelta;
73
+ });
74
+ };
75
+ /** Returns whether any agent has escalated (requested human handoff). */
76
+ export const useAdkEscalation = () => {
77
+ return useAuiState((s) => {
78
+ const extras = s.thread.extras;
79
+ if (!extras)
80
+ return false;
81
+ return asAdkRuntimeExtras(extras).escalated;
82
+ });
83
+ };
84
+ /** Returns per-message metadata (grounding, citation, usage). Keyed by message ID. */
85
+ export const useAdkMessageMetadata = () => {
86
+ return useAuiState((s) => {
87
+ const extras = s.thread.extras;
88
+ if (!extras)
89
+ return new Map();
90
+ return asAdkRuntimeExtras(extras).messageMetadata;
91
+ });
92
+ };
93
+ // ── Convenience helpers for interactive flows ──
94
+ /** Returns a function to confirm or deny a pending tool confirmation. */
95
+ export const useAdkConfirmTool = () => {
96
+ const aui = useAui();
97
+ return (toolCallId, confirmed, payload) => {
98
+ const extras = aui.thread().getState().extras;
99
+ const { send } = asAdkRuntimeExtras(extras);
100
+ return send([
101
+ {
102
+ id: uuidv4(),
103
+ type: "tool",
104
+ tool_call_id: toolCallId,
105
+ name: "adk_request_confirmation",
106
+ content: JSON.stringify({
107
+ confirmed,
108
+ ...(payload != null && { payload }),
109
+ }),
110
+ status: "success",
111
+ },
112
+ ], {});
113
+ };
114
+ };
115
+ /** Returns a function to submit auth credentials for a pending auth request. */
116
+ export const useAdkSubmitAuth = () => {
117
+ const aui = useAui();
118
+ return (toolCallId, credential) => {
119
+ const extras = aui.thread().getState().extras;
120
+ const { send } = asAdkRuntimeExtras(extras);
121
+ return send([
122
+ {
123
+ id: uuidv4(),
124
+ type: "tool",
125
+ tool_call_id: toolCallId,
126
+ name: "adk_request_credential",
127
+ content: JSON.stringify(credential),
128
+ status: "success",
129
+ },
130
+ ], {});
131
+ };
132
+ };
133
+ // ── State prefix helpers ──
134
+ const APP_PREFIX = "app:";
135
+ const USER_PREFIX = "user:";
136
+ const TEMP_PREFIX = "temp:";
137
+ const filterByPrefix = (state, prefix) => {
138
+ const result = {};
139
+ for (const key of Object.keys(state)) {
140
+ if (key.startsWith(prefix)) {
141
+ result[key.slice(prefix.length)] = state[key];
142
+ }
143
+ }
144
+ return result;
145
+ };
146
+ /** Returns app-level state (keys prefixed with `app:`, prefix stripped). */
147
+ export const useAdkAppState = () => {
148
+ return useAuiState((s) => {
149
+ const extras = s.thread.extras;
150
+ if (!extras)
151
+ return {};
152
+ return filterByPrefix(asAdkRuntimeExtras(extras).stateDelta, APP_PREFIX);
153
+ });
154
+ };
155
+ /** Returns user-level state (keys prefixed with `user:`, prefix stripped). */
156
+ export const useAdkUserState = () => {
157
+ return useAuiState((s) => {
158
+ const extras = s.thread.extras;
159
+ if (!extras)
160
+ return {};
161
+ return filterByPrefix(asAdkRuntimeExtras(extras).stateDelta, USER_PREFIX);
162
+ });
163
+ };
164
+ /** Returns temp state (keys prefixed with `temp:`, prefix stripped). Not persisted. */
165
+ export const useAdkTempState = () => {
166
+ return useAuiState((s) => {
167
+ const extras = s.thread.extras;
168
+ if (!extras)
169
+ return {};
170
+ return filterByPrefix(asAdkRuntimeExtras(extras).stateDelta, TEMP_PREFIX);
171
+ });
172
+ };
173
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { useAdkRuntime, type UseAdkRuntimeOptions, } from "./useAdkRuntime.js";
2
+ export { useAdkMessages, type UseAdkMessagesOptions, } from "./useAdkMessages.js";
3
+ export { convertAdkMessage } from "./convertAdkMessages.js";
4
+ export type { AdkEvent, AdkEventPart, AdkEventActions, AdkMessage, AdkMessageContentPart, AdkToolCall, AdkToolConfirmation, AdkAuthCredential, AdkAuthCredentialType, AdkAuthRequest, AdkMessageMetadata, AdkRunConfig, AdkSendMessageConfig, AdkStreamCallback, AdkStructuredEvent, OnAdkErrorCallback, OnAdkCustomEventCallback, OnAdkAgentTransferCallback, } from "./types.js";
5
+ export { AdkEventType } from "./types.js";
6
+ export { toAdkStructuredEvents } from "./structuredEvents.js";
7
+ export { AdkEventAccumulator } from "./AdkEventAccumulator.js";
8
+ export { createAdkStream, type CreateAdkStreamOptions, } from "./AdkClient.js";
9
+ export { createAdkSessionAdapter, type AdkSessionAdapterOptions, type AdkArtifactData, } from "./AdkSessionAdapter.js";
10
+ export { useAdkAgentInfo, useAdkSessionState, useAdkSend, useAdkLongRunningToolIds, useAdkToolConfirmations, useAdkAuthRequests, useAdkArtifacts, useAdkEscalation, useAdkMessageMetadata, useAdkConfirmTool, useAdkSubmitAuth, useAdkAppState, useAdkUserState, useAdkTempState, } from "./hooks.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,2BAAwB;AAEzB,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,4BAAyB;AAE1B,OAAO,EAAE,iBAAiB,EAAE,gCAA6B;AAEzD,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,GAC3B,mBAAgB;AAEjB,OAAO,EAAE,YAAY,EAAE,mBAAgB;AAEvC,OAAO,EAAE,qBAAqB,EAAE,8BAA2B;AAE3D,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,uBAAoB;AAErB,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,+BAA4B;AAE7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,mBAAgB"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export { useAdkRuntime, } from "./useAdkRuntime.js";
2
+ export { useAdkMessages, } from "./useAdkMessages.js";
3
+ export { convertAdkMessage } from "./convertAdkMessages.js";
4
+ export { AdkEventType } from "./types.js";
5
+ export { toAdkStructuredEvents } from "./structuredEvents.js";
6
+ export { AdkEventAccumulator } from "./AdkEventAccumulator.js";
7
+ export { createAdkStream, } from "./AdkClient.js";
8
+ export { createAdkSessionAdapter, } from "./AdkSessionAdapter.js";
9
+ export { useAdkAgentInfo, useAdkSessionState, useAdkSend, useAdkLongRunningToolIds, useAdkToolConfirmations, useAdkAuthRequests, useAdkArtifacts, useAdkEscalation, useAdkMessageMetadata, useAdkConfirmTool, useAdkSubmitAuth, useAdkAppState, useAdkUserState, useAdkTempState, } from "./hooks.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,2BAAwB;AAEzB,OAAO,EACL,cAAc,GAEf,4BAAyB;AAE1B,OAAO,EAAE,iBAAiB,EAAE,gCAA6B;AAuBzD,OAAO,EAAE,YAAY,EAAE,mBAAgB;AAEvC,OAAO,EAAE,qBAAqB,EAAE,8BAA2B;AAE3D,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,OAAO,EACL,eAAe,GAEhB,uBAAoB;AAErB,OAAO,EACL,uBAAuB,GAGxB,+BAA4B;AAE7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,mBAAgB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The ADK SDK Event type. Intentionally loose to avoid requiring @google/adk.
3
+ */
4
+ type AdkSdkEvent = {
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>;
26
+ };
27
+ export type AdkEventStreamOptions = {
28
+ onError?: (error: unknown) => void;
29
+ };
30
+ /**
31
+ * Converts an AsyncGenerator of ADK SDK Events into an SSE Response.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { adkEventStream } from '@assistant-ui/react-google-adk/server';
36
+ * const events = runner.runAsync({ userId, sessionId, newMessage });
37
+ * return adkEventStream(events);
38
+ * ```
39
+ */
40
+ export declare const adkEventStream: (events: AsyncGenerator<AdkSdkEvent, void, undefined>, options?: AdkEventStreamOptions) => Response;
41
+ export {};
42
+ //# sourceMappingURL=adkEventStream.d.ts.map
@@ -0,0 +1 @@
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;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EACpD,UAAU,qBAAqB,KAC9B,QA4CF,CAAC"}