@copilotkitnext/react 1.51.5-next.2 → 1.51.5-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.cjs +1 -0
- package/dist/hooks/index.d.cts +1 -0
- package/dist/hooks/index.d.mts +1 -0
- package/dist/hooks/index.mjs +1 -0
- package/dist/hooks/use-component.cjs +60 -0
- package/dist/hooks/use-component.cjs.map +1 -0
- package/dist/hooks/use-component.d.cts +51 -0
- package/dist/hooks/use-component.d.cts.map +1 -0
- package/dist/hooks/use-component.d.mts +51 -0
- package/dist/hooks/use-component.d.mts.map +1 -0
- package/dist/hooks/use-component.mjs +59 -0
- package/dist/hooks/use-component.mjs.map +1 -0
- package/dist/hooks/use-default-render-tool.cjs +33 -3
- package/dist/hooks/use-default-render-tool.cjs.map +1 -1
- package/dist/hooks/use-default-render-tool.d.cts +33 -3
- package/dist/hooks/use-default-render-tool.d.cts.map +1 -1
- package/dist/hooks/use-default-render-tool.d.mts +33 -3
- package/dist/hooks/use-default-render-tool.d.mts.map +1 -1
- package/dist/hooks/use-default-render-tool.mjs +33 -3
- package/dist/hooks/use-default-render-tool.mjs.map +1 -1
- package/dist/hooks/use-frontend-tool.cjs.map +1 -1
- package/dist/hooks/use-frontend-tool.mjs.map +1 -1
- package/dist/hooks/use-render-tool.cjs +41 -0
- package/dist/hooks/use-render-tool.cjs.map +1 -1
- package/dist/hooks/use-render-tool.d.cts +50 -0
- package/dist/hooks/use-render-tool.d.cts.map +1 -1
- package/dist/hooks/use-render-tool.d.mts +50 -0
- package/dist/hooks/use-render-tool.d.mts.map +1 -1
- package/dist/hooks/use-render-tool.mjs +41 -0
- package/dist/hooks/use-render-tool.mjs.map +1 -1
- package/dist/index.cjs +2 -0
- package/dist/index.d.cts +2 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/index.umd.js +129 -3
- package/dist/index.umd.js.map +1 -1
- package/dist/types/react-tool-call-renderer.d.cts +1 -1
- package/dist/types/react-tool-call-renderer.d.mts +1 -1
- package/package.json +6 -6
|
@@ -5,6 +5,47 @@ let react = require("react");
|
|
|
5
5
|
|
|
6
6
|
//#region src/hooks/use-render-tool.tsx
|
|
7
7
|
const EMPTY_DEPS = [];
|
|
8
|
+
/**
|
|
9
|
+
* Registers a renderer entry in CopilotKit's `renderToolCalls` registry.
|
|
10
|
+
*
|
|
11
|
+
* Key behavior:
|
|
12
|
+
* - deduplicates by `agentId:name` (latest registration wins),
|
|
13
|
+
* - keeps renderer entries on cleanup so historical chat tool calls can still render,
|
|
14
|
+
* - refreshes registration when `deps` change.
|
|
15
|
+
*
|
|
16
|
+
* @typeParam S - Zod schema type describing tool call args.
|
|
17
|
+
* @param config - Renderer config for wildcard or named tools.
|
|
18
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* useRenderTool(
|
|
23
|
+
* {
|
|
24
|
+
* name: "searchDocs",
|
|
25
|
+
* args: z.object({ query: z.string() }),
|
|
26
|
+
* render: ({ status, args, result }) => {
|
|
27
|
+
* if (status === "executing") return <div>Searching {args.query}</div>;
|
|
28
|
+
* if (status === "complete") return <div>{result}</div>;
|
|
29
|
+
* return <div>Preparing...</div>;
|
|
30
|
+
* },
|
|
31
|
+
* },
|
|
32
|
+
* [],
|
|
33
|
+
* );
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* useRenderTool(
|
|
39
|
+
* {
|
|
40
|
+
* name: "summarize",
|
|
41
|
+
* args: z.object({ text: z.string() }),
|
|
42
|
+
* agentId: "research-agent",
|
|
43
|
+
* render: ({ name, status }) => <div>{name}: {status}</div>,
|
|
44
|
+
* },
|
|
45
|
+
* [selectedAgentId],
|
|
46
|
+
* );
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
8
49
|
function useRenderTool(config, deps) {
|
|
9
50
|
const { copilotkit } = require_CopilotKitProvider.useCopilotKit();
|
|
10
51
|
const extraDeps = deps ?? EMPTY_DEPS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-tool.cjs","names":["useCopilotKit","defineToolCallRenderer"],"sources":["../../src/hooks/use-render-tool.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport type { z } from \"zod\";\nimport { useCopilotKit } from \"../providers/CopilotKitProvider\";\nimport { defineToolCallRenderer } from \"../types/defineToolCallRenderer\";\nimport type { ReactToolCallRenderer } from \"../types/react-tool-call-renderer\";\n\nconst EMPTY_DEPS: ReadonlyArray<unknown> = [];\n\nexport interface RenderToolInProgressProps<S extends z.ZodTypeAny> {\n name: string;\n args: Partial<z.infer<S>>;\n status: \"inProgress\";\n result: undefined;\n}\n\nexport interface RenderToolExecutingProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"executing\";\n result: undefined;\n}\n\nexport interface RenderToolCompleteProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"complete\";\n result: string;\n}\n\nexport type RenderToolProps<S extends z.ZodTypeAny> =\n | RenderToolInProgressProps<S>\n | RenderToolExecutingProps<S>\n | RenderToolCompleteProps<S>;\n\ntype RenderToolConfig<S extends z.ZodTypeAny> = {\n name: string;\n args?: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n};\n\n
|
|
1
|
+
{"version":3,"file":"use-render-tool.cjs","names":["useCopilotKit","defineToolCallRenderer"],"sources":["../../src/hooks/use-render-tool.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport type { z } from \"zod\";\nimport { useCopilotKit } from \"../providers/CopilotKitProvider\";\nimport { defineToolCallRenderer } from \"../types/defineToolCallRenderer\";\nimport type { ReactToolCallRenderer } from \"../types/react-tool-call-renderer\";\n\nconst EMPTY_DEPS: ReadonlyArray<unknown> = [];\n\nexport interface RenderToolInProgressProps<S extends z.ZodTypeAny> {\n name: string;\n args: Partial<z.infer<S>>;\n status: \"inProgress\";\n result: undefined;\n}\n\nexport interface RenderToolExecutingProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"executing\";\n result: undefined;\n}\n\nexport interface RenderToolCompleteProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"complete\";\n result: string;\n}\n\nexport type RenderToolProps<S extends z.ZodTypeAny> =\n | RenderToolInProgressProps<S>\n | RenderToolExecutingProps<S>\n | RenderToolCompleteProps<S>;\n\ntype RenderToolConfig<S extends z.ZodTypeAny> = {\n name: string;\n args?: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n};\n\n/**\n * Registers a wildcard (`\"*\"`) renderer for tool calls.\n *\n * The wildcard renderer is used as a fallback when no exact name-matched\n * renderer is registered for a tool call.\n *\n * @param config - Wildcard renderer configuration.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"*\",\n * render: ({ name, status }) => (\n * <div>\n * {status === \"complete\" ? \"✓\" : \"⏳\"} {name}\n * </div>\n * ),\n * },\n * [],\n * );\n * ```\n */\nexport function useRenderTool(\n config: {\n name: \"*\";\n render: (props: any) => React.ReactElement;\n agentId?: string;\n },\n deps?: ReadonlyArray<unknown>,\n): void;\n\n/**\n * Registers a name-scoped renderer for tool calls.\n *\n * The provided `args` Zod schema defines the typed shape of `props.args`\n * in `render` for `executing` and `complete` states.\n *\n * @typeParam S - Zod schema type describing tool call args.\n * @param config - Named renderer configuration.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"searchDocs\",\n * args: z.object({ query: z.string() }),\n * render: ({ status, args, result }) => {\n * if (status === \"inProgress\") return <div>Preparing...</div>;\n * if (status === \"executing\") return <div>Searching {args.query}</div>;\n * return <div>{result}</div>;\n * },\n * },\n * [],\n * );\n * ```\n */\nexport function useRenderTool<S extends z.ZodTypeAny>(\n config: {\n name: string;\n args: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n },\n deps?: ReadonlyArray<unknown>,\n): void;\n\n/**\n * Registers a renderer entry in CopilotKit's `renderToolCalls` registry.\n *\n * Key behavior:\n * - deduplicates by `agentId:name` (latest registration wins),\n * - keeps renderer entries on cleanup so historical chat tool calls can still render,\n * - refreshes registration when `deps` change.\n *\n * @typeParam S - Zod schema type describing tool call args.\n * @param config - Renderer config for wildcard or named tools.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"searchDocs\",\n * args: z.object({ query: z.string() }),\n * render: ({ status, args, result }) => {\n * if (status === \"executing\") return <div>Searching {args.query}</div>;\n * if (status === \"complete\") return <div>{result}</div>;\n * return <div>Preparing...</div>;\n * },\n * },\n * [],\n * );\n * ```\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"summarize\",\n * args: z.object({ text: z.string() }),\n * agentId: \"research-agent\",\n * render: ({ name, status }) => <div>{name}: {status}</div>,\n * },\n * [selectedAgentId],\n * );\n * ```\n */\nexport function useRenderTool<S extends z.ZodTypeAny>(\n config: RenderToolConfig<S>,\n deps?: ReadonlyArray<unknown>,\n): void {\n const { copilotkit } = useCopilotKit();\n const extraDeps = deps ?? EMPTY_DEPS;\n\n useEffect(() => {\n // Build the ReactToolCallRenderer via defineToolCallRenderer\n const renderer =\n config.name === \"*\" && !config.args\n ? defineToolCallRenderer({\n name: \"*\",\n render: config.render,\n ...(config.agentId ? { agentId: config.agentId } : {}),\n })\n : defineToolCallRenderer({\n name: config.name,\n args: config.args!,\n render: config.render,\n ...(config.agentId ? { agentId: config.agentId } : {}),\n });\n\n // Dedupe by \"agentId:name\" key, same pattern as useFrontendTool\n const keyOf = (rc: ReactToolCallRenderer) =>\n `${rc.agentId ?? \"\"}:${rc.name}`;\n const currentRenderToolCalls =\n copilotkit.renderToolCalls as ReactToolCallRenderer[];\n\n const mergedMap = new Map<string, ReactToolCallRenderer>();\n for (const rc of currentRenderToolCalls) {\n mergedMap.set(keyOf(rc), rc);\n }\n\n mergedMap.set(keyOf(renderer), renderer);\n\n copilotkit.setRenderToolCalls(Array.from(mergedMap.values()));\n\n // No cleanup removal — keeps renderer for chat history, same as useFrontendTool\n }, [config.name, copilotkit, extraDeps.length, ...extraDeps]);\n}\n"],"mappings":";;;;;;AAMA,MAAM,aAAqC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiJ7C,SAAgB,cACd,QACA,MACM;CACN,MAAM,EAAE,eAAeA,0CAAe;CACtC,MAAM,YAAY,QAAQ;AAE1B,4BAAgB;EAEd,MAAM,WACJ,OAAO,SAAS,OAAO,CAAC,OAAO,OAC3BC,sDAAuB;GACrB,MAAM;GACN,QAAQ,OAAO;GACf,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;GACtD,CAAC,GACFA,sDAAuB;GACrB,MAAM,OAAO;GACb,MAAM,OAAO;GACb,QAAQ,OAAO;GACf,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;GACtD,CAAC;EAGR,MAAM,SAAS,OACb,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG;EAC5B,MAAM,yBACJ,WAAW;EAEb,MAAM,4BAAY,IAAI,KAAoC;AAC1D,OAAK,MAAM,MAAM,uBACf,WAAU,IAAI,MAAM,GAAG,EAAE,GAAG;AAG9B,YAAU,IAAI,MAAM,SAAS,EAAE,SAAS;AAExC,aAAW,mBAAmB,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC;IAG5D;EAAC,OAAO;EAAM;EAAY,UAAU;EAAQ,GAAG;EAAU,CAAC"}
|
|
@@ -20,11 +20,61 @@ interface RenderToolCompleteProps<S extends z.ZodTypeAny> {
|
|
|
20
20
|
result: string;
|
|
21
21
|
}
|
|
22
22
|
type RenderToolProps<S extends z.ZodTypeAny> = RenderToolInProgressProps<S> | RenderToolExecutingProps<S> | RenderToolCompleteProps<S>;
|
|
23
|
+
/**
|
|
24
|
+
* Registers a wildcard (`"*"`) renderer for tool calls.
|
|
25
|
+
*
|
|
26
|
+
* The wildcard renderer is used as a fallback when no exact name-matched
|
|
27
|
+
* renderer is registered for a tool call.
|
|
28
|
+
*
|
|
29
|
+
* @param config - Wildcard renderer configuration.
|
|
30
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* useRenderTool(
|
|
35
|
+
* {
|
|
36
|
+
* name: "*",
|
|
37
|
+
* render: ({ name, status }) => (
|
|
38
|
+
* <div>
|
|
39
|
+
* {status === "complete" ? "✓" : "⏳"} {name}
|
|
40
|
+
* </div>
|
|
41
|
+
* ),
|
|
42
|
+
* },
|
|
43
|
+
* [],
|
|
44
|
+
* );
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
23
47
|
declare function useRenderTool(config: {
|
|
24
48
|
name: "*";
|
|
25
49
|
render: (props: any) => React.ReactElement;
|
|
26
50
|
agentId?: string;
|
|
27
51
|
}, deps?: ReadonlyArray<unknown>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Registers a name-scoped renderer for tool calls.
|
|
54
|
+
*
|
|
55
|
+
* The provided `args` Zod schema defines the typed shape of `props.args`
|
|
56
|
+
* in `render` for `executing` and `complete` states.
|
|
57
|
+
*
|
|
58
|
+
* @typeParam S - Zod schema type describing tool call args.
|
|
59
|
+
* @param config - Named renderer configuration.
|
|
60
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* useRenderTool(
|
|
65
|
+
* {
|
|
66
|
+
* name: "searchDocs",
|
|
67
|
+
* args: z.object({ query: z.string() }),
|
|
68
|
+
* render: ({ status, args, result }) => {
|
|
69
|
+
* if (status === "inProgress") return <div>Preparing...</div>;
|
|
70
|
+
* if (status === "executing") return <div>Searching {args.query}</div>;
|
|
71
|
+
* return <div>{result}</div>;
|
|
72
|
+
* },
|
|
73
|
+
* },
|
|
74
|
+
* [],
|
|
75
|
+
* );
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
28
78
|
declare function useRenderTool<S extends z.ZodTypeAny>(config: {
|
|
29
79
|
name: string;
|
|
30
80
|
args: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-tool.d.cts","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"mappings":";;;UAQiB,yBAAA,WAAoC,CAAA,CAAE,UAAA;EACrD,IAAA;EACA,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;EACtB,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,wBAAA,WAAmC,CAAA,CAAE,UAAA;EACpD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,uBAAA,WAAkC,CAAA,CAAE,UAAA;EACnD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,KAGU,eAAA,WAA0B,CAAA,CAAE,UAAA,IACpC,yBAAA,CAA0B,CAAA,IAC1B,wBAAA,CAAyB,CAAA,IACzB,uBAAA,CAAwB,CAAA
|
|
1
|
+
{"version":3,"file":"use-render-tool.d.cts","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"mappings":";;;UAQiB,yBAAA,WAAoC,CAAA,CAAE,UAAA;EACrD,IAAA;EACA,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;EACtB,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,wBAAA,WAAmC,CAAA,CAAE,UAAA;EACpD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,uBAAA,WAAkC,CAAA,CAAE,UAAA;EACnD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,KAGU,eAAA,WAA0B,CAAA,CAAE,UAAA,IACpC,yBAAA,CAA0B,CAAA,IAC1B,wBAAA,CAAyB,CAAA,IACzB,uBAAA,CAAwB,CAAA;;;;;;AAjB5B;;;;;;;;;;;;;;;;;;;iBAkDgB,aAAA,CACd,MAAA;EACE,IAAA;EACA,MAAA,GAAS,KAAA,UAAe,KAAA,CAAM,YAAA;EAC9B,OAAA;AAAA,GAEF,IAAA,GAAO,aAAA;;;;;;;;;;;;;;;;;AA1CT;;;;;;;;;;iBAuEgB,aAAA,WAAwB,CAAA,CAAE,UAAA,CAAA,CACxC,MAAA;EACE,IAAA;EACA,IAAA,EAAM,CAAA;EACN,MAAA,GAAS,KAAA,EAAO,eAAA,CAAgB,CAAA,MAAO,KAAA,CAAM,YAAA;EAC7C,OAAA;AAAA,GAEF,IAAA,GAAO,aAAA"}
|
|
@@ -20,11 +20,61 @@ interface RenderToolCompleteProps<S extends z.ZodTypeAny> {
|
|
|
20
20
|
result: string;
|
|
21
21
|
}
|
|
22
22
|
type RenderToolProps<S extends z.ZodTypeAny> = RenderToolInProgressProps<S> | RenderToolExecutingProps<S> | RenderToolCompleteProps<S>;
|
|
23
|
+
/**
|
|
24
|
+
* Registers a wildcard (`"*"`) renderer for tool calls.
|
|
25
|
+
*
|
|
26
|
+
* The wildcard renderer is used as a fallback when no exact name-matched
|
|
27
|
+
* renderer is registered for a tool call.
|
|
28
|
+
*
|
|
29
|
+
* @param config - Wildcard renderer configuration.
|
|
30
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* useRenderTool(
|
|
35
|
+
* {
|
|
36
|
+
* name: "*",
|
|
37
|
+
* render: ({ name, status }) => (
|
|
38
|
+
* <div>
|
|
39
|
+
* {status === "complete" ? "✓" : "⏳"} {name}
|
|
40
|
+
* </div>
|
|
41
|
+
* ),
|
|
42
|
+
* },
|
|
43
|
+
* [],
|
|
44
|
+
* );
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
23
47
|
declare function useRenderTool(config: {
|
|
24
48
|
name: "*";
|
|
25
49
|
render: (props: any) => React.ReactElement;
|
|
26
50
|
agentId?: string;
|
|
27
51
|
}, deps?: ReadonlyArray<unknown>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Registers a name-scoped renderer for tool calls.
|
|
54
|
+
*
|
|
55
|
+
* The provided `args` Zod schema defines the typed shape of `props.args`
|
|
56
|
+
* in `render` for `executing` and `complete` states.
|
|
57
|
+
*
|
|
58
|
+
* @typeParam S - Zod schema type describing tool call args.
|
|
59
|
+
* @param config - Named renderer configuration.
|
|
60
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* useRenderTool(
|
|
65
|
+
* {
|
|
66
|
+
* name: "searchDocs",
|
|
67
|
+
* args: z.object({ query: z.string() }),
|
|
68
|
+
* render: ({ status, args, result }) => {
|
|
69
|
+
* if (status === "inProgress") return <div>Preparing...</div>;
|
|
70
|
+
* if (status === "executing") return <div>Searching {args.query}</div>;
|
|
71
|
+
* return <div>{result}</div>;
|
|
72
|
+
* },
|
|
73
|
+
* },
|
|
74
|
+
* [],
|
|
75
|
+
* );
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
28
78
|
declare function useRenderTool<S extends z.ZodTypeAny>(config: {
|
|
29
79
|
name: string;
|
|
30
80
|
args: S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-tool.d.mts","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"mappings":";;;UAQiB,yBAAA,WAAoC,CAAA,CAAE,UAAA;EACrD,IAAA;EACA,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;EACtB,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,wBAAA,WAAmC,CAAA,CAAE,UAAA;EACpD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,uBAAA,WAAkC,CAAA,CAAE,UAAA;EACnD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,KAGU,eAAA,WAA0B,CAAA,CAAE,UAAA,IACpC,yBAAA,CAA0B,CAAA,IAC1B,wBAAA,CAAyB,CAAA,IACzB,uBAAA,CAAwB,CAAA
|
|
1
|
+
{"version":3,"file":"use-render-tool.d.mts","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"mappings":";;;UAQiB,yBAAA,WAAoC,CAAA,CAAE,UAAA;EACrD,IAAA;EACA,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,KAAA,CAAM,CAAA;EACtB,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,wBAAA,WAAmC,CAAA,CAAE,UAAA;EACpD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,uBAAA,WAAkC,CAAA,CAAE,UAAA;EACnD,IAAA;EACA,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA;EACd,MAAA;EACA,MAAA;AAAA;AAAA,KAGU,eAAA,WAA0B,CAAA,CAAE,UAAA,IACpC,yBAAA,CAA0B,CAAA,IAC1B,wBAAA,CAAyB,CAAA,IACzB,uBAAA,CAAwB,CAAA;;;;;;AAjB5B;;;;;;;;;;;;;;;;;;;iBAkDgB,aAAA,CACd,MAAA;EACE,IAAA;EACA,MAAA,GAAS,KAAA,UAAe,KAAA,CAAM,YAAA;EAC9B,OAAA;AAAA,GAEF,IAAA,GAAO,aAAA;;;;;;;;;;;;;;;;;AA1CT;;;;;;;;;;iBAuEgB,aAAA,WAAwB,CAAA,CAAE,UAAA,CAAA,CACxC,MAAA;EACE,IAAA;EACA,IAAA,EAAM,CAAA;EACN,MAAA,GAAS,KAAA,EAAO,eAAA,CAAgB,CAAA,MAAO,KAAA,CAAM,YAAA;EAC7C,OAAA;AAAA,GAEF,IAAA,GAAO,aAAA"}
|
|
@@ -4,6 +4,47 @@ import { useEffect } from "react";
|
|
|
4
4
|
|
|
5
5
|
//#region src/hooks/use-render-tool.tsx
|
|
6
6
|
const EMPTY_DEPS = [];
|
|
7
|
+
/**
|
|
8
|
+
* Registers a renderer entry in CopilotKit's `renderToolCalls` registry.
|
|
9
|
+
*
|
|
10
|
+
* Key behavior:
|
|
11
|
+
* - deduplicates by `agentId:name` (latest registration wins),
|
|
12
|
+
* - keeps renderer entries on cleanup so historical chat tool calls can still render,
|
|
13
|
+
* - refreshes registration when `deps` change.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam S - Zod schema type describing tool call args.
|
|
16
|
+
* @param config - Renderer config for wildcard or named tools.
|
|
17
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* useRenderTool(
|
|
22
|
+
* {
|
|
23
|
+
* name: "searchDocs",
|
|
24
|
+
* args: z.object({ query: z.string() }),
|
|
25
|
+
* render: ({ status, args, result }) => {
|
|
26
|
+
* if (status === "executing") return <div>Searching {args.query}</div>;
|
|
27
|
+
* if (status === "complete") return <div>{result}</div>;
|
|
28
|
+
* return <div>Preparing...</div>;
|
|
29
|
+
* },
|
|
30
|
+
* },
|
|
31
|
+
* [],
|
|
32
|
+
* );
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* useRenderTool(
|
|
38
|
+
* {
|
|
39
|
+
* name: "summarize",
|
|
40
|
+
* args: z.object({ text: z.string() }),
|
|
41
|
+
* agentId: "research-agent",
|
|
42
|
+
* render: ({ name, status }) => <div>{name}: {status}</div>,
|
|
43
|
+
* },
|
|
44
|
+
* [selectedAgentId],
|
|
45
|
+
* );
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
7
48
|
function useRenderTool(config, deps) {
|
|
8
49
|
const { copilotkit } = useCopilotKit();
|
|
9
50
|
const extraDeps = deps ?? EMPTY_DEPS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-tool.mjs","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport type { z } from \"zod\";\nimport { useCopilotKit } from \"../providers/CopilotKitProvider\";\nimport { defineToolCallRenderer } from \"../types/defineToolCallRenderer\";\nimport type { ReactToolCallRenderer } from \"../types/react-tool-call-renderer\";\n\nconst EMPTY_DEPS: ReadonlyArray<unknown> = [];\n\nexport interface RenderToolInProgressProps<S extends z.ZodTypeAny> {\n name: string;\n args: Partial<z.infer<S>>;\n status: \"inProgress\";\n result: undefined;\n}\n\nexport interface RenderToolExecutingProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"executing\";\n result: undefined;\n}\n\nexport interface RenderToolCompleteProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"complete\";\n result: string;\n}\n\nexport type RenderToolProps<S extends z.ZodTypeAny> =\n | RenderToolInProgressProps<S>\n | RenderToolExecutingProps<S>\n | RenderToolCompleteProps<S>;\n\ntype RenderToolConfig<S extends z.ZodTypeAny> = {\n name: string;\n args?: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n};\n\n
|
|
1
|
+
{"version":3,"file":"use-render-tool.mjs","names":[],"sources":["../../src/hooks/use-render-tool.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport type { z } from \"zod\";\nimport { useCopilotKit } from \"../providers/CopilotKitProvider\";\nimport { defineToolCallRenderer } from \"../types/defineToolCallRenderer\";\nimport type { ReactToolCallRenderer } from \"../types/react-tool-call-renderer\";\n\nconst EMPTY_DEPS: ReadonlyArray<unknown> = [];\n\nexport interface RenderToolInProgressProps<S extends z.ZodTypeAny> {\n name: string;\n args: Partial<z.infer<S>>;\n status: \"inProgress\";\n result: undefined;\n}\n\nexport interface RenderToolExecutingProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"executing\";\n result: undefined;\n}\n\nexport interface RenderToolCompleteProps<S extends z.ZodTypeAny> {\n name: string;\n args: z.infer<S>;\n status: \"complete\";\n result: string;\n}\n\nexport type RenderToolProps<S extends z.ZodTypeAny> =\n | RenderToolInProgressProps<S>\n | RenderToolExecutingProps<S>\n | RenderToolCompleteProps<S>;\n\ntype RenderToolConfig<S extends z.ZodTypeAny> = {\n name: string;\n args?: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n};\n\n/**\n * Registers a wildcard (`\"*\"`) renderer for tool calls.\n *\n * The wildcard renderer is used as a fallback when no exact name-matched\n * renderer is registered for a tool call.\n *\n * @param config - Wildcard renderer configuration.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"*\",\n * render: ({ name, status }) => (\n * <div>\n * {status === \"complete\" ? \"✓\" : \"⏳\"} {name}\n * </div>\n * ),\n * },\n * [],\n * );\n * ```\n */\nexport function useRenderTool(\n config: {\n name: \"*\";\n render: (props: any) => React.ReactElement;\n agentId?: string;\n },\n deps?: ReadonlyArray<unknown>,\n): void;\n\n/**\n * Registers a name-scoped renderer for tool calls.\n *\n * The provided `args` Zod schema defines the typed shape of `props.args`\n * in `render` for `executing` and `complete` states.\n *\n * @typeParam S - Zod schema type describing tool call args.\n * @param config - Named renderer configuration.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"searchDocs\",\n * args: z.object({ query: z.string() }),\n * render: ({ status, args, result }) => {\n * if (status === \"inProgress\") return <div>Preparing...</div>;\n * if (status === \"executing\") return <div>Searching {args.query}</div>;\n * return <div>{result}</div>;\n * },\n * },\n * [],\n * );\n * ```\n */\nexport function useRenderTool<S extends z.ZodTypeAny>(\n config: {\n name: string;\n args: S;\n render: (props: RenderToolProps<S>) => React.ReactElement;\n agentId?: string;\n },\n deps?: ReadonlyArray<unknown>,\n): void;\n\n/**\n * Registers a renderer entry in CopilotKit's `renderToolCalls` registry.\n *\n * Key behavior:\n * - deduplicates by `agentId:name` (latest registration wins),\n * - keeps renderer entries on cleanup so historical chat tool calls can still render,\n * - refreshes registration when `deps` change.\n *\n * @typeParam S - Zod schema type describing tool call args.\n * @param config - Renderer config for wildcard or named tools.\n * @param deps - Optional dependencies to refresh registration.\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"searchDocs\",\n * args: z.object({ query: z.string() }),\n * render: ({ status, args, result }) => {\n * if (status === \"executing\") return <div>Searching {args.query}</div>;\n * if (status === \"complete\") return <div>{result}</div>;\n * return <div>Preparing...</div>;\n * },\n * },\n * [],\n * );\n * ```\n *\n * @example\n * ```tsx\n * useRenderTool(\n * {\n * name: \"summarize\",\n * args: z.object({ text: z.string() }),\n * agentId: \"research-agent\",\n * render: ({ name, status }) => <div>{name}: {status}</div>,\n * },\n * [selectedAgentId],\n * );\n * ```\n */\nexport function useRenderTool<S extends z.ZodTypeAny>(\n config: RenderToolConfig<S>,\n deps?: ReadonlyArray<unknown>,\n): void {\n const { copilotkit } = useCopilotKit();\n const extraDeps = deps ?? EMPTY_DEPS;\n\n useEffect(() => {\n // Build the ReactToolCallRenderer via defineToolCallRenderer\n const renderer =\n config.name === \"*\" && !config.args\n ? defineToolCallRenderer({\n name: \"*\",\n render: config.render,\n ...(config.agentId ? { agentId: config.agentId } : {}),\n })\n : defineToolCallRenderer({\n name: config.name,\n args: config.args!,\n render: config.render,\n ...(config.agentId ? { agentId: config.agentId } : {}),\n });\n\n // Dedupe by \"agentId:name\" key, same pattern as useFrontendTool\n const keyOf = (rc: ReactToolCallRenderer) =>\n `${rc.agentId ?? \"\"}:${rc.name}`;\n const currentRenderToolCalls =\n copilotkit.renderToolCalls as ReactToolCallRenderer[];\n\n const mergedMap = new Map<string, ReactToolCallRenderer>();\n for (const rc of currentRenderToolCalls) {\n mergedMap.set(keyOf(rc), rc);\n }\n\n mergedMap.set(keyOf(renderer), renderer);\n\n copilotkit.setRenderToolCalls(Array.from(mergedMap.values()));\n\n // No cleanup removal — keeps renderer for chat history, same as useFrontendTool\n }, [config.name, copilotkit, extraDeps.length, ...extraDeps]);\n}\n"],"mappings":";;;;;AAMA,MAAM,aAAqC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiJ7C,SAAgB,cACd,QACA,MACM;CACN,MAAM,EAAE,eAAe,eAAe;CACtC,MAAM,YAAY,QAAQ;AAE1B,iBAAgB;EAEd,MAAM,WACJ,OAAO,SAAS,OAAO,CAAC,OAAO,OAC3B,uBAAuB;GACrB,MAAM;GACN,QAAQ,OAAO;GACf,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;GACtD,CAAC,GACF,uBAAuB;GACrB,MAAM,OAAO;GACb,MAAM,OAAO;GACb,QAAQ,OAAO;GACf,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;GACtD,CAAC;EAGR,MAAM,SAAS,OACb,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG;EAC5B,MAAM,yBACJ,WAAW;EAEb,MAAM,4BAAY,IAAI,KAAoC;AAC1D,OAAK,MAAM,MAAM,uBACf,WAAU,IAAI,MAAM,GAAG,EAAE,GAAG;AAG9B,YAAU,IAAI,MAAM,SAAS,EAAE,SAAS;AAExC,aAAW,mBAAmB,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC;IAG5D;EAAC,OAAO;EAAM;EAAY,UAAU;EAAQ,GAAG;EAAU,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -13,6 +13,7 @@ require('./providers/index.cjs');
|
|
|
13
13
|
const require_use_render_custom_messages = require('./hooks/use-render-custom-messages.cjs');
|
|
14
14
|
const require_use_render_activity_message = require('./hooks/use-render-activity-message.cjs');
|
|
15
15
|
const require_use_frontend_tool = require('./hooks/use-frontend-tool.cjs');
|
|
16
|
+
const require_use_component = require('./hooks/use-component.cjs');
|
|
16
17
|
const require_defineToolCallRenderer = require('./types/defineToolCallRenderer.cjs');
|
|
17
18
|
const require_use_render_tool = require('./hooks/use-render-tool.cjs');
|
|
18
19
|
const require_use_default_render_tool = require('./hooks/use-default-render-tool.cjs');
|
|
@@ -93,6 +94,7 @@ exports.WildcardToolCallRender = require_WildcardToolCallRender.WildcardToolCall
|
|
|
93
94
|
exports.defineToolCallRenderer = require_defineToolCallRenderer.defineToolCallRenderer;
|
|
94
95
|
exports.useAgent = require_use_agent.useAgent;
|
|
95
96
|
exports.useAgentContext = require_use_agent_context.useAgentContext;
|
|
97
|
+
exports.useComponent = require_use_component.useComponent;
|
|
96
98
|
exports.useConfigureSuggestions = require_use_configure_suggestions.useConfigureSuggestions;
|
|
97
99
|
exports.useCopilotChatConfiguration = require_CopilotChatConfigurationProvider.useCopilotChatConfiguration;
|
|
98
100
|
exports.useCopilotKit = require_CopilotKitProvider.useCopilotKit;
|
package/dist/index.d.cts
CHANGED
|
@@ -31,6 +31,7 @@ import { defineToolCallRenderer } from "./types/defineToolCallRenderer.cjs";
|
|
|
31
31
|
import "./types/index.cjs";
|
|
32
32
|
import { useRenderActivityMessage } from "./hooks/use-render-activity-message.cjs";
|
|
33
33
|
import { useFrontendTool } from "./hooks/use-frontend-tool.cjs";
|
|
34
|
+
import { useComponent } from "./hooks/use-component.cjs";
|
|
34
35
|
import { useRenderTool } from "./hooks/use-render-tool.cjs";
|
|
35
36
|
import { useDefaultRenderTool } from "./hooks/use-default-render-tool.cjs";
|
|
36
37
|
import { useHumanInTheLoop } from "./hooks/use-human-in-the-loop.cjs";
|
|
@@ -43,4 +44,4 @@ import { CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubs
|
|
|
43
44
|
import { CopilotKitContextValue, CopilotKitProvider, CopilotKitProviderProps, useCopilotKit } from "./providers/CopilotKitProvider.cjs";
|
|
44
45
|
import "./providers/index.cjs";
|
|
45
46
|
export * from "@ag-ui/client";
|
|
46
|
-
export { AgentContextInput, AudioRecorderError, AudioRecorderState, CopilotChat, CopilotChatAssistantMessage, CopilotChatAssistantMessageProps, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatConfigurationProviderProps, CopilotChatConfigurationValue, CopilotChatInput, CopilotChatInputProps, CopilotChatLabels, CopilotChatMessageView, CopilotChatMessageViewProps, CopilotChatProps, CopilotChatReasoningMessage, CopilotChatReasoningMessageProps, CopilotChatSuggestionPill, CopilotChatSuggestionPillProps, CopilotChatSuggestionView, CopilotChatSuggestionViewProps, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToggleButtonProps, CopilotChatToolCallsView, CopilotChatToolCallsViewProps, CopilotChatUserMessage, CopilotChatUserMessageProps, CopilotChatView, CopilotChatViewProps, CopilotKitContextValue, CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubscriber, CopilotKitInspector, CopilotKitInspectorProps, CopilotKitProvider, CopilotKitProviderProps, CopilotModalHeader, CopilotModalHeaderProps, CopilotPopup, CopilotPopupProps, CopilotPopupView, CopilotPopupViewProps, CopilotSidebar, CopilotSidebarProps, CopilotSidebarView, CopilotSidebarViewProps, JsonSerializable, MCPAppsActivityContent, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, ReactActivityMessageRenderer, ReactCustomMessageRenderer, ReactCustomMessageRendererPosition, ReactFrontendTool, ReactHumanInTheLoop, ReactToolCallRenderer, ToolsMenuItem, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
|
47
|
+
export { AgentContextInput, AudioRecorderError, AudioRecorderState, CopilotChat, CopilotChatAssistantMessage, CopilotChatAssistantMessageProps, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatConfigurationProviderProps, CopilotChatConfigurationValue, CopilotChatInput, CopilotChatInputProps, CopilotChatLabels, CopilotChatMessageView, CopilotChatMessageViewProps, CopilotChatProps, CopilotChatReasoningMessage, CopilotChatReasoningMessageProps, CopilotChatSuggestionPill, CopilotChatSuggestionPillProps, CopilotChatSuggestionView, CopilotChatSuggestionViewProps, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToggleButtonProps, CopilotChatToolCallsView, CopilotChatToolCallsViewProps, CopilotChatUserMessage, CopilotChatUserMessageProps, CopilotChatView, CopilotChatViewProps, CopilotKitContextValue, CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubscriber, CopilotKitInspector, CopilotKitInspectorProps, CopilotKitProvider, CopilotKitProviderProps, CopilotModalHeader, CopilotModalHeaderProps, CopilotPopup, CopilotPopupProps, CopilotPopupView, CopilotPopupViewProps, CopilotSidebar, CopilotSidebarProps, CopilotSidebarView, CopilotSidebarViewProps, JsonSerializable, MCPAppsActivityContent, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, ReactActivityMessageRenderer, ReactCustomMessageRenderer, ReactCustomMessageRendererPosition, ReactFrontendTool, ReactHumanInTheLoop, ReactToolCallRenderer, ToolsMenuItem, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useComponent, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
package/dist/index.d.mts
CHANGED
|
@@ -31,6 +31,7 @@ import { defineToolCallRenderer } from "./types/defineToolCallRenderer.mjs";
|
|
|
31
31
|
import "./types/index.mjs";
|
|
32
32
|
import { useRenderActivityMessage } from "./hooks/use-render-activity-message.mjs";
|
|
33
33
|
import { useFrontendTool } from "./hooks/use-frontend-tool.mjs";
|
|
34
|
+
import { useComponent } from "./hooks/use-component.mjs";
|
|
34
35
|
import { useRenderTool } from "./hooks/use-render-tool.mjs";
|
|
35
36
|
import { useDefaultRenderTool } from "./hooks/use-default-render-tool.mjs";
|
|
36
37
|
import { useHumanInTheLoop } from "./hooks/use-human-in-the-loop.mjs";
|
|
@@ -43,4 +44,4 @@ import { CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubs
|
|
|
43
44
|
import { CopilotKitContextValue, CopilotKitProvider, CopilotKitProviderProps, useCopilotKit } from "./providers/CopilotKitProvider.mjs";
|
|
44
45
|
import "./providers/index.mjs";
|
|
45
46
|
export * from "@ag-ui/client";
|
|
46
|
-
export { AgentContextInput, AudioRecorderError, AudioRecorderState, CopilotChat, CopilotChatAssistantMessage, CopilotChatAssistantMessageProps, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatConfigurationProviderProps, CopilotChatConfigurationValue, CopilotChatInput, CopilotChatInputProps, CopilotChatLabels, CopilotChatMessageView, CopilotChatMessageViewProps, CopilotChatProps, CopilotChatReasoningMessage, CopilotChatReasoningMessageProps, CopilotChatSuggestionPill, CopilotChatSuggestionPillProps, CopilotChatSuggestionView, CopilotChatSuggestionViewProps, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToggleButtonProps, CopilotChatToolCallsView, CopilotChatToolCallsViewProps, CopilotChatUserMessage, CopilotChatUserMessageProps, CopilotChatView, CopilotChatViewProps, CopilotKitContextValue, CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubscriber, CopilotKitInspector, CopilotKitInspectorProps, CopilotKitProvider, CopilotKitProviderProps, CopilotModalHeader, CopilotModalHeaderProps, CopilotPopup, CopilotPopupProps, CopilotPopupView, CopilotPopupViewProps, CopilotSidebar, CopilotSidebarProps, CopilotSidebarView, CopilotSidebarViewProps, JsonSerializable, MCPAppsActivityContent, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, ReactActivityMessageRenderer, ReactCustomMessageRenderer, ReactCustomMessageRendererPosition, ReactFrontendTool, ReactHumanInTheLoop, ReactToolCallRenderer, ToolsMenuItem, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
|
47
|
+
export { AgentContextInput, AudioRecorderError, AudioRecorderState, CopilotChat, CopilotChatAssistantMessage, CopilotChatAssistantMessageProps, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatConfigurationProviderProps, CopilotChatConfigurationValue, CopilotChatInput, CopilotChatInputProps, CopilotChatLabels, CopilotChatMessageView, CopilotChatMessageViewProps, CopilotChatProps, CopilotChatReasoningMessage, CopilotChatReasoningMessageProps, CopilotChatSuggestionPill, CopilotChatSuggestionPillProps, CopilotChatSuggestionView, CopilotChatSuggestionViewProps, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToggleButtonProps, CopilotChatToolCallsView, CopilotChatToolCallsViewProps, CopilotChatUserMessage, CopilotChatUserMessageProps, CopilotChatView, CopilotChatViewProps, CopilotKitContextValue, CopilotKitCoreReact, CopilotKitCoreReactConfig, CopilotKitCoreReactSubscriber, CopilotKitInspector, CopilotKitInspectorProps, CopilotKitProvider, CopilotKitProviderProps, CopilotModalHeader, CopilotModalHeaderProps, CopilotPopup, CopilotPopupProps, CopilotPopupView, CopilotPopupViewProps, CopilotSidebar, CopilotSidebarProps, CopilotSidebarView, CopilotSidebarViewProps, JsonSerializable, MCPAppsActivityContent, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, ReactActivityMessageRenderer, ReactCustomMessageRenderer, ReactCustomMessageRendererPosition, ReactFrontendTool, ReactHumanInTheLoop, ReactToolCallRenderer, ToolsMenuItem, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useComponent, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
package/dist/index.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import "./providers/index.mjs";
|
|
|
12
12
|
import { useRenderCustomMessages } from "./hooks/use-render-custom-messages.mjs";
|
|
13
13
|
import { useRenderActivityMessage } from "./hooks/use-render-activity-message.mjs";
|
|
14
14
|
import { useFrontendTool } from "./hooks/use-frontend-tool.mjs";
|
|
15
|
+
import { useComponent } from "./hooks/use-component.mjs";
|
|
15
16
|
import { defineToolCallRenderer } from "./types/defineToolCallRenderer.mjs";
|
|
16
17
|
import { useRenderTool } from "./hooks/use-render-tool.mjs";
|
|
17
18
|
import { useDefaultRenderTool } from "./hooks/use-default-render-tool.mjs";
|
|
@@ -42,4 +43,4 @@ import "./types/index.mjs";
|
|
|
42
43
|
|
|
43
44
|
export * from "@ag-ui/client"
|
|
44
45
|
|
|
45
|
-
export { AudioRecorderError, CopilotChat, CopilotChatAssistantMessage_default as CopilotChatAssistantMessage, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatInput_default as CopilotChatInput, CopilotChatMessageView, CopilotChatReasoningMessage_default as CopilotChatReasoningMessage, CopilotChatSuggestionPill, CopilotChatSuggestionView, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToolCallsView, CopilotChatUserMessage_default as CopilotChatUserMessage, CopilotChatView_default as CopilotChatView, CopilotKitCoreReact, CopilotKitInspector, CopilotKitProvider, CopilotModalHeader, CopilotPopup, CopilotPopupView, CopilotSidebar, CopilotSidebarView, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
|
46
|
+
export { AudioRecorderError, CopilotChat, CopilotChatAssistantMessage_default as CopilotChatAssistantMessage, CopilotChatAudioRecorder, CopilotChatConfigurationProvider, CopilotChatInput_default as CopilotChatInput, CopilotChatMessageView, CopilotChatReasoningMessage_default as CopilotChatReasoningMessage, CopilotChatSuggestionPill, CopilotChatSuggestionView, CopilotChatToggleButton, DefaultCloseIcon as CopilotChatToggleButtonCloseIcon, DefaultOpenIcon as CopilotChatToggleButtonOpenIcon, CopilotChatToolCallsView, CopilotChatUserMessage_default as CopilotChatUserMessage, CopilotChatView_default as CopilotChatView, CopilotKitCoreReact, CopilotKitInspector, CopilotKitProvider, CopilotModalHeader, CopilotPopup, CopilotPopupView, CopilotSidebar, CopilotSidebarView, MCPAppsActivityContentSchema, MCPAppsActivityRenderer, MCPAppsActivityType, UseAgentUpdate, WildcardToolCallRender, defineToolCallRenderer, useAgent, useAgentContext, useComponent, useConfigureSuggestions, useCopilotChatConfiguration, useCopilotKit, useDefaultRenderTool, useFrontendTool, useHumanInTheLoop, useRenderActivityMessage, useRenderCustomMessages, useRenderTool, useRenderToolCall, useSuggestions };
|
package/dist/index.umd.js
CHANGED
|
@@ -2229,6 +2229,60 @@ window.parent.postMessage({jsonrpc:"2.0",method:"ui/notifications/sandbox-proxy-
|
|
|
2229
2229
|
]);
|
|
2230
2230
|
}
|
|
2231
2231
|
|
|
2232
|
+
//#endregion
|
|
2233
|
+
//#region src/hooks/use-component.tsx
|
|
2234
|
+
/**
|
|
2235
|
+
* Registers a React component as a frontend tool renderer in chat.
|
|
2236
|
+
*
|
|
2237
|
+
* This hook is a convenience wrapper around `useFrontendTool` that:
|
|
2238
|
+
* - builds a model-facing tool description,
|
|
2239
|
+
* - forwards optional Zod parameters,
|
|
2240
|
+
* - renders your component with tool call args.
|
|
2241
|
+
*
|
|
2242
|
+
* Use this when you want to display a typed visual component for a tool call
|
|
2243
|
+
* without manually wiring a full frontend tool object.
|
|
2244
|
+
*
|
|
2245
|
+
* @typeParam T - Shape of tool args expected by the component.
|
|
2246
|
+
* @param config - Tool registration config.
|
|
2247
|
+
* @param deps - Optional dependencies to refresh registration (same semantics as `useEffect`).
|
|
2248
|
+
*
|
|
2249
|
+
* @example
|
|
2250
|
+
* ```tsx
|
|
2251
|
+
* useComponent({
|
|
2252
|
+
* name: "showWeatherCard",
|
|
2253
|
+
* parameters: z.object({ city: z.string() }),
|
|
2254
|
+
* component: ({ city }: { city: string }) => <div>{city}</div>,
|
|
2255
|
+
* });
|
|
2256
|
+
* ```
|
|
2257
|
+
*
|
|
2258
|
+
* @example
|
|
2259
|
+
* ```tsx
|
|
2260
|
+
* useComponent(
|
|
2261
|
+
* {
|
|
2262
|
+
* name: "renderProfile",
|
|
2263
|
+
* parameters: z.object({ userId: z.string() }),
|
|
2264
|
+
* component: ProfileCard,
|
|
2265
|
+
* agentId: "support-agent",
|
|
2266
|
+
* },
|
|
2267
|
+
* [selectedAgentId],
|
|
2268
|
+
* );
|
|
2269
|
+
* ```
|
|
2270
|
+
*/
|
|
2271
|
+
function useComponent(config, deps) {
|
|
2272
|
+
const prefix = `Use this tool to display the "${config.name}" component in the chat. This tool renders a visual UI component for the user.`;
|
|
2273
|
+
const fullDescription = config.description ? `${prefix}\n\n${config.description}` : prefix;
|
|
2274
|
+
useFrontendTool({
|
|
2275
|
+
name: config.name,
|
|
2276
|
+
description: fullDescription,
|
|
2277
|
+
parameters: config.parameters,
|
|
2278
|
+
render: ({ args }) => {
|
|
2279
|
+
const Component = config.component;
|
|
2280
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, { ...args });
|
|
2281
|
+
},
|
|
2282
|
+
agentId: config.agentId
|
|
2283
|
+
}, deps);
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2232
2286
|
//#endregion
|
|
2233
2287
|
//#region src/types/defineToolCallRenderer.ts
|
|
2234
2288
|
function defineToolCallRenderer(def) {
|
|
@@ -2244,6 +2298,47 @@ window.parent.postMessage({jsonrpc:"2.0",method:"ui/notifications/sandbox-proxy-
|
|
|
2244
2298
|
//#endregion
|
|
2245
2299
|
//#region src/hooks/use-render-tool.tsx
|
|
2246
2300
|
const EMPTY_DEPS = [];
|
|
2301
|
+
/**
|
|
2302
|
+
* Registers a renderer entry in CopilotKit's `renderToolCalls` registry.
|
|
2303
|
+
*
|
|
2304
|
+
* Key behavior:
|
|
2305
|
+
* - deduplicates by `agentId:name` (latest registration wins),
|
|
2306
|
+
* - keeps renderer entries on cleanup so historical chat tool calls can still render,
|
|
2307
|
+
* - refreshes registration when `deps` change.
|
|
2308
|
+
*
|
|
2309
|
+
* @typeParam S - Zod schema type describing tool call args.
|
|
2310
|
+
* @param config - Renderer config for wildcard or named tools.
|
|
2311
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
2312
|
+
*
|
|
2313
|
+
* @example
|
|
2314
|
+
* ```tsx
|
|
2315
|
+
* useRenderTool(
|
|
2316
|
+
* {
|
|
2317
|
+
* name: "searchDocs",
|
|
2318
|
+
* args: z.object({ query: z.string() }),
|
|
2319
|
+
* render: ({ status, args, result }) => {
|
|
2320
|
+
* if (status === "executing") return <div>Searching {args.query}</div>;
|
|
2321
|
+
* if (status === "complete") return <div>{result}</div>;
|
|
2322
|
+
* return <div>Preparing...</div>;
|
|
2323
|
+
* },
|
|
2324
|
+
* },
|
|
2325
|
+
* [],
|
|
2326
|
+
* );
|
|
2327
|
+
* ```
|
|
2328
|
+
*
|
|
2329
|
+
* @example
|
|
2330
|
+
* ```tsx
|
|
2331
|
+
* useRenderTool(
|
|
2332
|
+
* {
|
|
2333
|
+
* name: "summarize",
|
|
2334
|
+
* args: z.object({ text: z.string() }),
|
|
2335
|
+
* agentId: "research-agent",
|
|
2336
|
+
* render: ({ name, status }) => <div>{name}: {status}</div>,
|
|
2337
|
+
* },
|
|
2338
|
+
* [selectedAgentId],
|
|
2339
|
+
* );
|
|
2340
|
+
* ```
|
|
2341
|
+
*/
|
|
2247
2342
|
function useRenderTool(config, deps) {
|
|
2248
2343
|
const { copilotkit } = useCopilotKit();
|
|
2249
2344
|
const extraDeps = deps !== null && deps !== void 0 ? deps : EMPTY_DEPS;
|
|
@@ -2278,10 +2373,40 @@ window.parent.postMessage({jsonrpc:"2.0",method:"ui/notifications/sandbox-proxy-
|
|
|
2278
2373
|
//#endregion
|
|
2279
2374
|
//#region src/hooks/use-default-render-tool.tsx
|
|
2280
2375
|
/**
|
|
2281
|
-
* Registers a wildcard ("*") tool-call renderer via `useRenderTool`.
|
|
2376
|
+
* Registers a wildcard (`"*"`) tool-call renderer via `useRenderTool`.
|
|
2377
|
+
*
|
|
2378
|
+
* - Call with no config to use CopilotKit's built-in default tool-call card.
|
|
2379
|
+
* - Pass `config.render` to replace the default UI with your own fallback renderer.
|
|
2282
2380
|
*
|
|
2283
|
-
*
|
|
2284
|
-
*
|
|
2381
|
+
* This is useful when you want a generic renderer for tools that do not have a
|
|
2382
|
+
* dedicated `useRenderTool({ name: "..." })` registration.
|
|
2383
|
+
*
|
|
2384
|
+
* @param config - Optional custom wildcard render function.
|
|
2385
|
+
* @param deps - Optional dependencies to refresh registration.
|
|
2386
|
+
*
|
|
2387
|
+
* @example
|
|
2388
|
+
* ```tsx
|
|
2389
|
+
* useDefaultRenderTool();
|
|
2390
|
+
* ```
|
|
2391
|
+
*
|
|
2392
|
+
* @example
|
|
2393
|
+
* ```tsx
|
|
2394
|
+
* useDefaultRenderTool({
|
|
2395
|
+
* render: ({ name, status }) => <div>{name}: {status}</div>,
|
|
2396
|
+
* });
|
|
2397
|
+
* ```
|
|
2398
|
+
*
|
|
2399
|
+
* @example
|
|
2400
|
+
* ```tsx
|
|
2401
|
+
* useDefaultRenderTool(
|
|
2402
|
+
* {
|
|
2403
|
+
* render: ({ name, result }) => (
|
|
2404
|
+
* <ToolEventRow title={name} payload={result} compact={compactMode} />
|
|
2405
|
+
* ),
|
|
2406
|
+
* },
|
|
2407
|
+
* [compactMode],
|
|
2408
|
+
* );
|
|
2409
|
+
* ```
|
|
2285
2410
|
*/
|
|
2286
2411
|
function useDefaultRenderTool(config, deps) {
|
|
2287
2412
|
var _config$render;
|
|
@@ -4730,6 +4855,7 @@ exports.WildcardToolCallRender = WildcardToolCallRender;
|
|
|
4730
4855
|
exports.defineToolCallRenderer = defineToolCallRenderer;
|
|
4731
4856
|
exports.useAgent = useAgent;
|
|
4732
4857
|
exports.useAgentContext = useAgentContext;
|
|
4858
|
+
exports.useComponent = useComponent;
|
|
4733
4859
|
exports.useConfigureSuggestions = useConfigureSuggestions;
|
|
4734
4860
|
exports.useCopilotChatConfiguration = useCopilotChatConfiguration;
|
|
4735
4861
|
exports.useCopilotKit = useCopilotKit;
|