@assistant-ui/react-google-adk 0.0.10 → 0.0.11

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 (63) hide show
  1. package/README.md +15 -128
  2. package/dist/AdkClient.d.ts +30 -26
  3. package/dist/AdkClient.d.ts.map +1 -1
  4. package/dist/AdkClient.js +131 -165
  5. package/dist/AdkClient.js.map +1 -1
  6. package/dist/AdkEventAccumulator.d.ts +43 -39
  7. package/dist/AdkEventAccumulator.d.ts.map +1 -1
  8. package/dist/AdkEventAccumulator.js +446 -531
  9. package/dist/AdkEventAccumulator.js.map +1 -1
  10. package/dist/AdkSessionAdapter.d.ts +40 -37
  11. package/dist/AdkSessionAdapter.d.ts.map +1 -1
  12. package/dist/AdkSessionAdapter.js +134 -155
  13. package/dist/AdkSessionAdapter.js.map +1 -1
  14. package/dist/contentToParts.d.ts +6 -2
  15. package/dist/contentToParts.d.ts.map +1 -1
  16. package/dist/contentToParts.js +37 -34
  17. package/dist/contentToParts.js.map +1 -1
  18. package/dist/convertAdkMessages.d.ts +7 -3
  19. package/dist/convertAdkMessages.d.ts.map +1 -1
  20. package/dist/convertAdkMessages.js +93 -86
  21. package/dist/convertAdkMessages.js.map +1 -1
  22. package/dist/hooks.d.ts +38 -34
  23. package/dist/hooks.d.ts.map +1 -1
  24. package/dist/hooks.js +132 -155
  25. package/dist/hooks.js.map +1 -1
  26. package/dist/index.d.ts +10 -11
  27. package/dist/index.js +10 -10
  28. package/dist/server/adkEventStream.d.ts +27 -25
  29. package/dist/server/adkEventStream.d.ts.map +1 -1
  30. package/dist/server/adkEventStream.js +91 -126
  31. package/dist/server/adkEventStream.js.map +1 -1
  32. package/dist/server/createAdkApiRoute.d.ts +26 -23
  33. package/dist/server/createAdkApiRoute.d.ts.map +1 -1
  34. package/dist/server/createAdkApiRoute.js +34 -37
  35. package/dist/server/createAdkApiRoute.js.map +1 -1
  36. package/dist/server/index.d.ts +4 -4
  37. package/dist/server/index.js +4 -4
  38. package/dist/server/parseAdkRequest.d.ts +21 -18
  39. package/dist/server/parseAdkRequest.d.ts.map +1 -1
  40. package/dist/server/parseAdkRequest.js +80 -88
  41. package/dist/server/parseAdkRequest.js.map +1 -1
  42. package/dist/structuredEvents.d.ts +6 -2
  43. package/dist/structuredEvents.d.ts.map +1 -1
  44. package/dist/structuredEvents.js +70 -75
  45. package/dist/structuredEvents.js.map +1 -1
  46. package/dist/types.d.ts +231 -227
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js +15 -12
  49. package/dist/types.js.map +1 -1
  50. package/dist/useAdkMessages.d.ts +32 -25
  51. package/dist/useAdkMessages.d.ts.map +1 -1
  52. package/dist/useAdkMessages.js +155 -182
  53. package/dist/useAdkMessages.js.map +1 -1
  54. package/dist/useAdkRuntime.d.ts +43 -34
  55. package/dist/useAdkRuntime.d.ts.map +1 -1
  56. package/dist/useAdkRuntime.js +219 -273
  57. package/dist/useAdkRuntime.js.map +1 -1
  58. package/package.json +8 -8
  59. package/src/useAdkRuntime.ts +6 -2
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/index.js.map +0 -1
  62. package/dist/server/index.d.ts.map +0 -1
  63. package/dist/server/index.js.map +0 -1
@@ -1,36 +1,39 @@
1
- export const contentToParts = (content) => {
2
- if (typeof content === "string")
3
- return [{ text: content }];
4
- return content.map((part) => {
5
- switch (part.type) {
6
- case "text":
7
- return { text: part.text };
8
- case "reasoning":
9
- return { text: part.text, thought: true };
10
- case "image":
11
- return { inlineData: { mimeType: part.mimeType, data: part.data } };
12
- case "image_url":
13
- return { fileData: { fileUri: part.url } };
14
- case "file":
15
- return { inlineData: { mimeType: part.mimeType, data: part.data } };
16
- case "file_url":
17
- return {
18
- fileData: {
19
- fileUri: part.url,
20
- ...(part.mimeType != null && { mimeType: part.mimeType }),
21
- },
22
- };
23
- case "code":
24
- return {
25
- executableCode: { code: part.code, language: part.language },
26
- };
27
- case "code_result":
28
- return {
29
- codeExecutionResult: { output: part.output, outcome: part.outcome },
30
- };
31
- default:
32
- return { text: "" };
33
- }
34
- });
1
+ //#region src/contentToParts.ts
2
+ const contentToParts = (content) => {
3
+ if (typeof content === "string") return [{ text: content }];
4
+ return content.map((part) => {
5
+ switch (part.type) {
6
+ case "text": return { text: part.text };
7
+ case "reasoning": return {
8
+ text: part.text,
9
+ thought: true
10
+ };
11
+ case "image": return { inlineData: {
12
+ mimeType: part.mimeType,
13
+ data: part.data
14
+ } };
15
+ case "image_url": return { fileData: { fileUri: part.url } };
16
+ case "file": return { inlineData: {
17
+ mimeType: part.mimeType,
18
+ data: part.data
19
+ } };
20
+ case "file_url": return { fileData: {
21
+ fileUri: part.url,
22
+ ...part.mimeType != null && { mimeType: part.mimeType }
23
+ } };
24
+ case "code": return { executableCode: {
25
+ code: part.code,
26
+ language: part.language
27
+ } };
28
+ case "code_result": return { codeExecutionResult: {
29
+ output: part.output,
30
+ outcome: part.outcome
31
+ } };
32
+ default: return { text: "" };
33
+ }
34
+ });
35
35
  };
36
+ //#endregion
37
+ export { contentToParts };
38
+
36
39
  //# sourceMappingURL=contentToParts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentToParts.js","sourceRoot":"","sources":["../src/contentToParts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAA8B,EACd,EAAE;IAClB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAQ,OAAmC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAgB,EAAE;QACrE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7B,KAAK,WAAW;gBACd,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC5C,KAAK,OAAO;gBACV,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtE,KAAK,WAAW;gBACd,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7C,KAAK,MAAM;gBACT,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtE,KAAK,UAAU;gBACb,OAAO;oBACL,QAAQ,EAAE;wBACR,OAAO,EAAE,IAAI,CAAC,GAAG;wBACjB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;qBAC1D;iBACF,CAAC;YACJ,KAAK,MAAM;gBACT,OAAO;oBACL,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;iBAC7D,CAAC;YACJ,KAAK,aAAa;gBAChB,OAAO;oBACL,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;iBACpE,CAAC;YACJ;gBACE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"contentToParts.js","names":[],"sources":["../src/contentToParts.ts"],"sourcesContent":["import type { AdkEventPart, AdkMessage, AdkMessageContentPart } from \"./types\";\n\nexport const contentToParts = (\n content: AdkMessage[\"content\"],\n): AdkEventPart[] => {\n if (typeof content === \"string\") return [{ text: content }];\n return (content as AdkMessageContentPart[]).map((part): AdkEventPart => {\n switch (part.type) {\n case \"text\":\n return { text: part.text };\n case \"reasoning\":\n return { text: part.text, thought: true };\n case \"image\":\n return { inlineData: { mimeType: part.mimeType, data: part.data } };\n case \"image_url\":\n return { fileData: { fileUri: part.url } };\n case \"file\":\n return { inlineData: { mimeType: part.mimeType, data: part.data } };\n case \"file_url\":\n return {\n fileData: {\n fileUri: part.url,\n ...(part.mimeType != null && { mimeType: part.mimeType }),\n },\n };\n case \"code\":\n return {\n executableCode: { code: part.code, language: part.language },\n };\n case \"code_result\":\n return {\n codeExecutionResult: { output: part.output, outcome: part.outcome },\n };\n default:\n return { text: \"\" };\n }\n });\n};\n"],"mappings":";AAEA,MAAa,kBACX,YACmB;CACnB,IAAI,OAAO,YAAY,UAAU,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC1D,OAAQ,QAAoC,KAAK,SAAuB;EACtE,QAAQ,KAAK,MAAb;GACE,KAAK,QACH,OAAO,EAAE,MAAM,KAAK,KAAK;GAC3B,KAAK,aACH,OAAO;IAAE,MAAM,KAAK;IAAM,SAAS;GAAK;GAC1C,KAAK,SACH,OAAO,EAAE,YAAY;IAAE,UAAU,KAAK;IAAU,MAAM,KAAK;GAAK,EAAE;GACpE,KAAK,aACH,OAAO,EAAE,UAAU,EAAE,SAAS,KAAK,IAAI,EAAE;GAC3C,KAAK,QACH,OAAO,EAAE,YAAY;IAAE,UAAU,KAAK;IAAU,MAAM,KAAK;GAAK,EAAE;GACpE,KAAK,YACH,OAAO,EACL,UAAU;IACR,SAAS,KAAK;IACd,GAAI,KAAK,YAAY,QAAQ,EAAE,UAAU,KAAK,SAAS;GACzD,EACF;GACF,KAAK,QACH,OAAO,EACL,gBAAgB;IAAE,MAAM,KAAK;IAAM,UAAU,KAAK;GAAS,EAC7D;GACF,KAAK,eACH,OAAO,EACL,qBAAqB;IAAE,QAAQ,KAAK;IAAQ,SAAS,KAAK;GAAQ,EACpE;GACF,SACE,OAAO,EAAE,MAAM,GAAG;EACtB;CACF,CAAC;AACH"}
@@ -1,4 +1,8 @@
1
- import type { useExternalMessageConverter } from "@assistant-ui/core/react";
2
- import type { AdkMessage } from "./types.js";
3
- export declare const convertAdkMessage: useExternalMessageConverter.Callback<AdkMessage>;
1
+ import { AdkMessage } from "./types.js";
2
+ import { useExternalMessageConverter } from "@assistant-ui/core/react";
3
+
4
+ //#region src/convertAdkMessages.d.ts
5
+ declare const convertAdkMessage: useExternalMessageConverter.Callback<AdkMessage>;
6
+ //#endregion
7
+ export { convertAdkMessage };
4
8
  //# sourceMappingURL=convertAdkMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertAdkMessages.d.ts","sourceRoot":"","sources":["../src/convertAdkMessages.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAyB,mBAAgB;AA8DjE,eAAO,MAAM,iBAAiB,EAAE,2BAA2B,CAAC,QAAQ,CAClE,UAAU,CA0CX,CAAC"}
1
+ {"version":3,"file":"convertAdkMessages.d.ts","names":[],"sources":["../src/convertAdkMessages.ts"],"mappings":";;;;cAkEa,iBAAA,EAAmB,2BAAA,CAA4B,QAAQ,CAClE,UAAA"}
@@ -1,91 +1,98 @@
1
1
  "use client";
2
+ //#region src/convertAdkMessages.ts
2
3
  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 "file":
20
- return {
21
- type: "file",
22
- data: part.data,
23
- mimeType: part.mimeType,
24
- ...(part.filename != null && { filename: part.filename }),
25
- };
26
- case "file_url":
27
- return {
28
- type: "data",
29
- name: "file_url",
30
- data: {
31
- url: part.url,
32
- ...(part.mimeType != null && { mimeType: part.mimeType }),
33
- },
34
- };
35
- case "code":
36
- return {
37
- type: "data",
38
- name: "executable_code",
39
- data: { code: part.code, language: part.language },
40
- };
41
- case "code_result":
42
- return {
43
- type: "data",
44
- name: "code_execution_result",
45
- data: { output: part.output, outcome: part.outcome },
46
- };
47
- default:
48
- return null;
49
- }
50
- })
51
- .filter((p) => p !== null);
4
+ if (typeof content === "string") return [{
5
+ type: "text",
6
+ text: content
7
+ }];
8
+ return content.map((part) => {
9
+ switch (part.type) {
10
+ case "text": return {
11
+ type: "text",
12
+ text: part.text
13
+ };
14
+ case "reasoning": return {
15
+ type: "reasoning",
16
+ text: part.text
17
+ };
18
+ case "image": return {
19
+ type: "image",
20
+ image: `data:${part.mimeType};base64,${part.data}`
21
+ };
22
+ case "image_url": return {
23
+ type: "image",
24
+ image: part.url
25
+ };
26
+ case "file": return {
27
+ type: "file",
28
+ data: part.data,
29
+ mimeType: part.mimeType,
30
+ ...part.filename != null && { filename: part.filename }
31
+ };
32
+ case "file_url": return {
33
+ type: "data",
34
+ name: "file_url",
35
+ data: {
36
+ url: part.url,
37
+ ...part.mimeType != null && { mimeType: part.mimeType }
38
+ }
39
+ };
40
+ case "code": return {
41
+ type: "data",
42
+ name: "executable_code",
43
+ data: {
44
+ code: part.code,
45
+ language: part.language
46
+ }
47
+ };
48
+ case "code_result": return {
49
+ type: "data",
50
+ name: "code_execution_result",
51
+ data: {
52
+ output: part.output,
53
+ outcome: part.outcome
54
+ }
55
+ };
56
+ default: return null;
57
+ }
58
+ }).filter((p) => p !== null);
52
59
  };
53
- export const convertAdkMessage = (message) => {
54
- switch (message.type) {
55
- case "human":
56
- return {
57
- role: "user",
58
- id: message.id,
59
- content: contentToParts(message.content),
60
- };
61
- case "ai": {
62
- const toolCallParts = message.tool_calls?.map((tc) => ({
63
- type: "tool-call",
64
- toolCallId: tc.id,
65
- toolName: tc.name,
66
- args: tc.args,
67
- argsText: tc.argsText ?? JSON.stringify(tc.args),
68
- })) ?? [];
69
- return {
70
- role: "assistant",
71
- id: message.id,
72
- content: [...contentToParts(message.content), ...toolCallParts],
73
- ...(message.status && { status: message.status }),
74
- ...(message.author && {
75
- metadata: {
76
- custom: { author: message.author, branch: message.branch },
77
- },
78
- }),
79
- };
80
- }
81
- case "tool":
82
- return {
83
- role: "tool",
84
- toolCallId: message.tool_call_id,
85
- toolName: message.name,
86
- result: message.content,
87
- isError: message.status === "error",
88
- };
89
- }
60
+ const convertAdkMessage = (message) => {
61
+ switch (message.type) {
62
+ case "human": return {
63
+ role: "user",
64
+ id: message.id,
65
+ content: contentToParts(message.content)
66
+ };
67
+ case "ai": {
68
+ const toolCallParts = message.tool_calls?.map((tc) => ({
69
+ type: "tool-call",
70
+ toolCallId: tc.id,
71
+ toolName: tc.name,
72
+ args: tc.args,
73
+ argsText: tc.argsText ?? JSON.stringify(tc.args)
74
+ })) ?? [];
75
+ return {
76
+ role: "assistant",
77
+ id: message.id,
78
+ content: [...contentToParts(message.content), ...toolCallParts],
79
+ ...message.status && { status: message.status },
80
+ ...message.author && { metadata: { custom: {
81
+ author: message.author,
82
+ branch: message.branch
83
+ } } }
84
+ };
85
+ }
86
+ case "tool": return {
87
+ role: "tool",
88
+ toolCallId: message.tool_call_id,
89
+ toolName: message.name,
90
+ result: message.content,
91
+ isError: message.status === "error"
92
+ };
93
+ }
90
94
  };
95
+ //#endregion
96
+ export { convertAdkMessage };
97
+
91
98
  //# sourceMappingURL=convertAdkMessages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertAdkMessages.js","sourceRoot":"","sources":["../src/convertAdkMessages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convertAdkMessages.js","names":[],"sources":["../src/convertAdkMessages.ts"],"sourcesContent":["\"use client\";\n\nimport type { ToolCallMessagePart } from \"@assistant-ui/core\";\nimport type { useExternalMessageConverter } from \"@assistant-ui/core/react\";\nimport type { AdkMessage, AdkMessageContentPart } from \"./types\";\n\ntype ContentPart =\n | { type: \"text\"; text: string }\n | { type: \"reasoning\"; text: string }\n | { type: \"image\"; image: string }\n | { type: \"file\"; data: string; mimeType: string; filename?: string }\n | { type: \"data\"; name: string; data: unknown };\n\nconst contentToParts = (content: AdkMessage[\"content\"]): ContentPart[] => {\n if (typeof content === \"string\")\n return [{ type: \"text\" as const, text: content }];\n\n return (content as AdkMessageContentPart[])\n .map((part): ContentPart | null => {\n switch (part.type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n case \"reasoning\":\n return { type: \"reasoning\", text: part.text };\n case \"image\":\n return {\n type: \"image\",\n image: `data:${part.mimeType};base64,${part.data}`,\n };\n case \"image_url\":\n return { type: \"image\", image: part.url };\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename != null && { filename: part.filename }),\n };\n case \"file_url\":\n return {\n type: \"data\",\n name: \"file_url\",\n data: {\n url: part.url,\n ...(part.mimeType != null && { mimeType: part.mimeType }),\n },\n };\n case \"code\":\n return {\n type: \"data\",\n name: \"executable_code\",\n data: { code: part.code, language: part.language },\n };\n case \"code_result\":\n return {\n type: \"data\",\n name: \"code_execution_result\",\n data: { output: part.output, outcome: part.outcome },\n };\n default:\n return null;\n }\n })\n .filter((p): p is NonNullable<typeof p> => p !== null);\n};\n\nexport const convertAdkMessage: useExternalMessageConverter.Callback<\n AdkMessage\n> = (message) => {\n switch (message.type) {\n case \"human\":\n return {\n role: \"user\",\n id: message.id,\n content: contentToParts(message.content),\n };\n\n case \"ai\": {\n const toolCallParts: ToolCallMessagePart[] =\n message.tool_calls?.map((tc) => ({\n type: \"tool-call\",\n toolCallId: tc.id,\n toolName: tc.name,\n args: tc.args,\n argsText: tc.argsText ?? JSON.stringify(tc.args),\n })) ?? [];\n\n return {\n role: \"assistant\",\n id: message.id,\n content: [...contentToParts(message.content), ...toolCallParts],\n ...(message.status && { status: message.status }),\n ...(message.author && {\n metadata: {\n custom: { author: message.author, branch: message.branch },\n },\n }),\n };\n }\n\n case \"tool\":\n return {\n role: \"tool\",\n toolCallId: message.tool_call_id,\n toolName: message.name,\n result: message.content,\n isError: message.status === \"error\",\n };\n }\n};\n"],"mappings":";;AAaA,MAAM,kBAAkB,YAAkD;CACxE,IAAI,OAAO,YAAY,UACrB,OAAO,CAAC;EAAE,MAAM;EAAiB,MAAM;CAAQ,CAAC;CAElD,OAAQ,QACL,KAAK,SAA6B;EACjC,QAAQ,KAAK,MAAb;GACE,KAAK,QACH,OAAO;IAAE,MAAM;IAAQ,MAAM,KAAK;GAAK;GACzC,KAAK,aACH,OAAO;IAAE,MAAM;IAAa,MAAM,KAAK;GAAK;GAC9C,KAAK,SACH,OAAO;IACL,MAAM;IACN,OAAO,QAAQ,KAAK,SAAS,UAAU,KAAK;GAC9C;GACF,KAAK,aACH,OAAO;IAAE,MAAM;IAAS,OAAO,KAAK;GAAI;GAC1C,KAAK,QACH,OAAO;IACL,MAAM;IACN,MAAM,KAAK;IACX,UAAU,KAAK;IACf,GAAI,KAAK,YAAY,QAAQ,EAAE,UAAU,KAAK,SAAS;GACzD;GACF,KAAK,YACH,OAAO;IACL,MAAM;IACN,MAAM;IACN,MAAM;KACJ,KAAK,KAAK;KACV,GAAI,KAAK,YAAY,QAAQ,EAAE,UAAU,KAAK,SAAS;IACzD;GACF;GACF,KAAK,QACH,OAAO;IACL,MAAM;IACN,MAAM;IACN,MAAM;KAAE,MAAM,KAAK;KAAM,UAAU,KAAK;IAAS;GACnD;GACF,KAAK,eACH,OAAO;IACL,MAAM;IACN,MAAM;IACN,MAAM;KAAE,QAAQ,KAAK;KAAQ,SAAS,KAAK;IAAQ;GACrD;GACF,SACE,OAAO;EACX;CACF,CAAC,EACA,QAAQ,MAAkC,MAAM,IAAI;AACzD;AAEA,MAAa,qBAER,YAAY;CACf,QAAQ,QAAQ,MAAhB;EACE,KAAK,SACH,OAAO;GACL,MAAM;GACN,IAAI,QAAQ;GACZ,SAAS,eAAe,QAAQ,OAAO;EACzC;EAEF,KAAK,MAAM;GACT,MAAM,gBACJ,QAAQ,YAAY,KAAK,QAAQ;IAC/B,MAAM;IACN,YAAY,GAAG;IACf,UAAU,GAAG;IACb,MAAM,GAAG;IACT,UAAU,GAAG,YAAY,KAAK,UAAU,GAAG,IAAI;GACjD,EAAE,KAAK,CAAC;GAEV,OAAO;IACL,MAAM;IACN,IAAI,QAAQ;IACZ,SAAS,CAAC,GAAG,eAAe,QAAQ,OAAO,GAAG,GAAG,aAAa;IAC9D,GAAI,QAAQ,UAAU,EAAE,QAAQ,QAAQ,OAAO;IAC/C,GAAI,QAAQ,UAAU,EACpB,UAAU,EACR,QAAQ;KAAE,QAAQ,QAAQ;KAAQ,QAAQ,QAAQ;IAAO,EAC3D,EACF;GACF;EACF;EAEA,KAAK,QACH,OAAO;GACL,MAAM;GACN,YAAY,QAAQ;GACpB,UAAU,QAAQ;GAClB,QAAQ,QAAQ;GAChB,SAAS,QAAQ,WAAW;EAC9B;CACJ;AACF"}
package/dist/hooks.d.ts CHANGED
@@ -1,53 +1,57 @@
1
1
  /// <reference types="@assistant-ui/core/store" />
2
- import type { ReadonlyJSONValue } from "assistant-stream/utils";
3
- import type { AdkMessage, AdkSendMessageConfig, AdkToolConfirmation, AdkAuthCredential, AdkAuthRequest, AdkMessageMetadata } from "./types.js";
4
- export declare const symbolAdkRuntimeExtras: unique symbol;
5
- export type AdkRuntimeExtras = {
6
- [symbolAdkRuntimeExtras]: true;
7
- send: (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
8
- agentInfo: {
9
- name?: string | undefined;
10
- branch?: string | undefined;
11
- };
12
- stateDelta: Record<string, unknown>;
13
- artifactDelta: Record<string, number>;
14
- longRunningToolIds: string[];
15
- toolConfirmations: AdkToolConfirmation[];
16
- authRequests: AdkAuthRequest[];
17
- escalated: boolean;
18
- messageMetadata: Map<string, AdkMessageMetadata>;
19
- };
20
- /** Returns the name and branch of the currently active ADK agent. */
21
- export declare const useAdkAgentInfo: () => {
2
+ import { AdkAuthCredential, AdkAuthRequest, AdkMessage, AdkMessageMetadata, AdkSendMessageConfig, AdkToolConfirmation } from "./types.js";
3
+ import { ReadonlyJSONValue } from "assistant-stream/utils";
4
+
5
+ //#region src/hooks.d.ts
6
+ declare const symbolAdkRuntimeExtras: unique symbol;
7
+ type AdkRuntimeExtras = {
8
+ [symbolAdkRuntimeExtras]: true;
9
+ send: (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
10
+ agentInfo: {
22
11
  name?: string | undefined;
23
12
  branch?: string | undefined;
13
+ };
14
+ stateDelta: Record<string, unknown>;
15
+ artifactDelta: Record<string, number>;
16
+ longRunningToolIds: string[];
17
+ toolConfirmations: AdkToolConfirmation[];
18
+ authRequests: AdkAuthRequest[];
19
+ escalated: boolean;
20
+ messageMetadata: Map<string, AdkMessageMetadata>;
21
+ };
22
+ /** Returns the name and branch of the currently active ADK agent. */
23
+ declare const useAdkAgentInfo: () => {
24
+ name?: string | undefined;
25
+ branch?: string | undefined;
24
26
  } | undefined;
25
27
  /** Returns the accumulated session state delta from ADK events. */
26
- export declare const useAdkSessionState: () => Record<string, unknown>;
28
+ declare const useAdkSessionState: () => Record<string, unknown>;
27
29
  /** Returns a function to send raw ADK messages. */
28
- export declare const useAdkSend: () => (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
30
+ declare const useAdkSend: () => (messages: AdkMessage[], config: AdkSendMessageConfig) => Promise<void>;
29
31
  /** Returns the IDs of long-running tools awaiting external input. */
30
- export declare const useAdkLongRunningToolIds: () => string[];
32
+ declare const useAdkLongRunningToolIds: () => string[];
31
33
  /** Returns pending tool confirmation requests (from SecurityPlugin etc). */
32
- export declare const useAdkToolConfirmations: () => AdkToolConfirmation[];
34
+ declare const useAdkToolConfirmations: () => AdkToolConfirmation[];
33
35
  /** Returns pending auth credential requests from tools. */
34
- export declare const useAdkAuthRequests: () => AdkAuthRequest[];
36
+ declare const useAdkAuthRequests: () => AdkAuthRequest[];
35
37
  /** Returns the accumulated artifact delta (filename → version). */
36
- export declare const useAdkArtifacts: () => Record<string, number>;
38
+ declare const useAdkArtifacts: () => Record<string, number>;
37
39
  /** Returns whether any agent has escalated (requested human handoff). */
38
- export declare const useAdkEscalation: () => boolean;
40
+ declare const useAdkEscalation: () => boolean;
39
41
  /** Returns per-message metadata (grounding, citation, usage). Keyed by message ID. */
40
- export declare const useAdkMessageMetadata: () => Map<string, AdkMessageMetadata>;
42
+ declare const useAdkMessageMetadata: () => Map<string, AdkMessageMetadata>;
41
43
  /** Returns a function to confirm or deny a pending tool confirmation. */
42
- export declare const useAdkConfirmTool: () => (toolCallId: string, confirmed: boolean, payload?: ReadonlyJSONValue) => Promise<void>;
44
+ declare const useAdkConfirmTool: () => (toolCallId: string, confirmed: boolean, payload?: ReadonlyJSONValue) => Promise<void>;
43
45
  /** Returns a function to submit auth credentials for a pending auth request. */
44
- export declare const useAdkSubmitAuth: () => (toolCallId: string, credential: AdkAuthCredential) => Promise<void>;
46
+ declare const useAdkSubmitAuth: () => (toolCallId: string, credential: AdkAuthCredential) => Promise<void>;
45
47
  /** Returns a function to submit the user's answer for a pending `adk_request_input` HITL interrupt. */
46
- export declare const useAdkSubmitInput: () => (toolCallId: string, result: ReadonlyJSONValue) => Promise<void>;
48
+ declare const useAdkSubmitInput: () => (toolCallId: string, result: ReadonlyJSONValue) => Promise<void>;
47
49
  /** Returns app-level state (keys prefixed with `app:`, prefix stripped). */
48
- export declare const useAdkAppState: () => Record<string, unknown>;
50
+ declare const useAdkAppState: () => Record<string, unknown>;
49
51
  /** Returns user-level state (keys prefixed with `user:`, prefix stripped). */
50
- export declare const useAdkUserState: () => Record<string, unknown>;
52
+ declare const useAdkUserState: () => Record<string, unknown>;
51
53
  /** Returns temp state (keys prefixed with `temp:`, prefix stripped). Not persisted. */
52
- export declare const useAdkTempState: () => Record<string, unknown>;
54
+ declare const useAdkTempState: () => Record<string, unknown>;
55
+ //#endregion
56
+ export { AdkRuntimeExtras, symbolAdkRuntimeExtras, useAdkAgentInfo, useAdkAppState, useAdkArtifacts, useAdkAuthRequests, useAdkConfirmTool, useAdkEscalation, useAdkLongRunningToolIds, useAdkMessageMetadata, useAdkSend, useAdkSessionState, useAdkSubmitAuth, useAdkSubmitInput, useAdkTempState, useAdkToolConfirmations, useAdkUserState };
53
57
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,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,SAG1B,YAAY,MAAM,EAClB,WAAW,OAAO,EAClB,UAAU,iBAAiB,kBAqB9B,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,SAEnB,YAAY,MAAM,EAAE,YAAY,iBAAiB,kBAiB1D,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,SAEpB,YAAY,MAAM,EAAE,QAAQ,iBAAiB,kBAiBtD,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"}
1
+ {"version":3,"file":"hooks.d.ts","names":[],"sources":["../src/hooks.ts"],"mappings":";;;;cAca,sBAAA;AAAA,KAED,gBAAA;EAAA,CACT,sBAAA;EACD,IAAA,GAAO,QAAA,EAAU,UAAA,IAAc,MAAA,EAAQ,oBAAA,KAAyB,OAAA;EAChE,SAAA;IAAa,IAAA;IAA2B,MAAA;EAAA;EACxC,UAAA,EAAY,MAAA;EACZ,aAAA,EAAe,MAAA;EACf,kBAAA;EACA,iBAAA,EAAmB,mBAAA;EACnB,YAAA,EAAc,cAAA;EACd,SAAA;EACA,eAAA,EAAiB,GAAA,SAAY,kBAAA;AAAA;;cAiBlB,eAAA;EAMZ,IAAA;EAAA,MAAA;AAAA;;cAGY,kBAAA,QAAkB,MAAA;;cASlB,UAAA,SAEH,QAAA,EAAU,UAAA,IAAc,MAAA,EAAQ,oBAAA,KAAoB,OAAA;;cAQjD,wBAAA;;cASA,uBAAA,QAAuB,mBAAA;;cASvB,kBAAA,QAAkB,cAAA;;cASlB,eAAA,QAAe,MAAA;;cASf,gBAAA;;cASA,qBAAA,QAAqB,GAAA,SAAA,kBAAA;;cAWrB,iBAAA,SAGT,UAAA,UACA,SAAA,WACA,OAAA,GAAU,iBAAA,KAAiB,OAAA;;cAwBlB,gBAAA,SAEH,UAAA,UAAoB,UAAA,EAAY,iBAAA,KAAiB,OAAA;;cAoB9C,iBAAA,SAEH,UAAA,UAAoB,MAAA,EAAQ,iBAAA,KAAiB,OAAA;;cAuC1C,cAAA,QAAc,MAAA;;cASd,eAAA,QAAe,MAAA;AAzL5B;AAAA,cAkMa,eAAA,QAAe,MAAA"}