@copilotkit/vue 1.72.1-canary.sp-longthread-perf → 1.73.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 (77) hide show
  1. package/PARITY.md +15 -1
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.mjs +42 -41
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/use-render-activity-message-6LwUTCNm.cjs +85 -0
  7. package/dist/use-render-activity-message-6LwUTCNm.cjs.map +1 -0
  8. package/dist/{use-render-activity-message-Ciee03Rx.js → use-render-activity-message-Di_L8HCv.js} +4501 -4400
  9. package/dist/use-render-activity-message-Di_L8HCv.js.map +1 -0
  10. package/dist/v2/components/LicenseWarningBanner.vue.d.ts +3 -5
  11. package/dist/v2/components/LicenseWarningBanner.vue.d.ts.map +1 -1
  12. package/dist/v2/components/chat/CopilotChat.vue.d.ts.map +1 -1
  13. package/dist/v2/components/chat/CopilotChatAssistantMessage.vue.d.ts +4 -0
  14. package/dist/v2/components/chat/CopilotChatAssistantMessage.vue.d.ts.map +1 -1
  15. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts +7 -0
  16. package/dist/v2/components/chat/CopilotChatInput.vue.d.ts.map +1 -1
  17. package/dist/v2/components/chat/CopilotChatMessageView.vue.d.ts.map +1 -1
  18. package/dist/v2/components/chat/CopilotChatUserMessage.vue.d.ts +2 -0
  19. package/dist/v2/components/chat/CopilotChatUserMessage.vue.d.ts.map +1 -1
  20. package/dist/v2/components/chat/CopilotChatView.vue.d.ts +8 -2
  21. package/dist/v2/components/chat/CopilotChatView.vue.d.ts.map +1 -1
  22. package/dist/v2/components/chat/CopilotPopup.vue.d.ts.map +1 -1
  23. package/dist/v2/components/chat/CopilotPopupView.vue.d.ts.map +1 -1
  24. package/dist/v2/components/chat/CopilotPopupViewInternal.vue.d.ts.map +1 -1
  25. package/dist/v2/components/chat/CopilotPopupWelcomeScreen.vue.d.ts +7 -4
  26. package/dist/v2/components/chat/CopilotPopupWelcomeScreen.vue.d.ts.map +1 -1
  27. package/dist/v2/components/chat/CopilotSidebar.vue.d.ts.map +1 -1
  28. package/dist/v2/components/chat/CopilotSidebarView.vue.d.ts.map +1 -1
  29. package/dist/v2/components/chat/CopilotSidebarViewInternal.vue.d.ts.map +1 -1
  30. package/dist/v2/components/chat/CopilotSidebarWelcomeScreen.vue.d.ts +8 -5
  31. package/dist/v2/components/chat/CopilotSidebarWelcomeScreen.vue.d.ts.map +1 -1
  32. package/dist/v2/components/chat/index.d.ts +50 -26
  33. package/dist/v2/components/chat/index.d.ts.map +1 -1
  34. package/dist/v2/components/chat/types.d.ts +44 -17
  35. package/dist/v2/components/chat/types.d.ts.map +1 -1
  36. package/dist/v2/hooks/use-human-in-the-loop.d.ts.map +1 -1
  37. package/dist/v2/index.cjs +1 -1
  38. package/dist/v2/index.mjs +1 -1
  39. package/dist/v2/providers/CopilotKitProvider.types.d.ts +25 -1
  40. package/dist/v2/providers/CopilotKitProvider.types.d.ts.map +1 -1
  41. package/dist/v2/providers/CopilotKitProvider.vue.d.ts.map +1 -1
  42. package/package.json +6 -6
  43. package/src/v2/components/LicenseWarningBanner.vue +5 -17
  44. package/src/v2/components/__tests__/LicenseWarningBanner.test.ts +23 -0
  45. package/src/v2/components/chat/CopilotChat.vue +23 -22
  46. package/src/v2/components/chat/CopilotChatAssistantMessage.vue +12 -21
  47. package/src/v2/components/chat/CopilotChatInput.vue +32 -26
  48. package/src/v2/components/chat/CopilotChatMessageView.vue +29 -3
  49. package/src/v2/components/chat/CopilotChatUserMessage.vue +19 -19
  50. package/src/v2/components/chat/CopilotChatView.vue +31 -39
  51. package/src/v2/components/chat/CopilotPopup.vue +8 -10
  52. package/src/v2/components/chat/CopilotPopupView.vue +8 -18
  53. package/src/v2/components/chat/CopilotPopupViewInternal.vue +5 -19
  54. package/src/v2/components/chat/CopilotPopupWelcomeScreen.vue +36 -6
  55. package/src/v2/components/chat/CopilotSidebar.vue +8 -10
  56. package/src/v2/components/chat/CopilotSidebarView.vue +8 -18
  57. package/src/v2/components/chat/CopilotSidebarViewInternal.vue +5 -19
  58. package/src/v2/components/chat/CopilotSidebarWelcomeScreen.vue +36 -6
  59. package/src/v2/components/chat/__tests__/CopilotChat.e2e.test.ts +156 -5
  60. package/src/v2/components/chat/__tests__/CopilotChatInput.test.ts +34 -0
  61. package/src/v2/components/chat/__tests__/CopilotChatMessageView.rowKeys.test.ts +140 -0
  62. package/src/v2/components/chat/__tests__/CopilotChatUserMessage.test.ts +46 -0
  63. package/src/v2/components/chat/__tests__/CopilotChatView.test.ts +118 -0
  64. package/src/v2/components/chat/__tests__/CopilotPopupView.test.ts +79 -0
  65. package/src/v2/components/chat/__tests__/CopilotSidebarView.test.ts +93 -0
  66. package/src/v2/components/chat/types.ts +73 -18
  67. package/src/v2/hooks/__tests__/use-human-in-the-loop.e2e.test.ts +32 -6
  68. package/src/v2/hooks/use-human-in-the-loop.ts +1 -0
  69. package/src/v2/providers/CopilotKitProvider.types.ts +28 -1
  70. package/src/v2/providers/CopilotKitProvider.vue +86 -6
  71. package/src/v2/providers/__tests__/CopilotKitProvider.hitl.e2e.test.ts +192 -0
  72. package/src/v2/providers/__tests__/CopilotKitProvider.messageFilter.test.ts +159 -0
  73. package/src/v2/providers/__tests__/CopilotKitProvider.test.ts +275 -21
  74. package/src/v2/providers/__tests__/CopilotKitProvider.wildcard.test.ts +19 -1
  75. package/dist/use-render-activity-message-Ciee03Rx.js.map +0 -1
  76. package/dist/use-render-activity-message-DXJDZGkW.cjs +0 -85
  77. package/dist/use-render-activity-message-DXJDZGkW.cjs.map +0 -1
package/PARITY.md CHANGED
@@ -119,13 +119,27 @@ For render bridges, the mirror strategy is deterministic slot translation at cha
119
119
  5. Keep slot payloads stable and parity-tested against React behavior, not component internals.
120
120
  6. Keep public Vue interaction APIs idiomatic: use emits for component-level UI interactions such as `@submit-message`, `@input-change`, `@select-suggestion`, `@edit-message`, `@switch-to-branch`, `@thumbs-up`, `@thumbs-down`, `@read-aloud`, and `@regenerate`.
121
121
  7. Keep slot payload actions imperative: use slot payload callbacks such as `onCopy`, `onEdit`, `goPrev`, `goNext`, and `onSubmitMessage` for slotted control surfaces.
122
- 8. Only keep public callback props for true command-style flows that must be awaited by the child. Current exception: `CopilotChatView.onFinishTranscribeWithAudio`.
122
+ 8. Only keep public callback props for true command-style flows that must be awaited by the child. Current command exception: `CopilotChatView.onFinishTranscribeWithAudio`. Event-shaped `onX` props may also mirror an existing `defineEmits` event when a component must reactively gate its default controls; scoped-slot commands remain always-available local handlers and never infer listener presence through Vue instance internals.
123
123
  9. If a programmatic renderer registration path is used, prefer Vue SFC/components over handwritten `h(...)` render functions when either can express the same behavior.
124
124
  10. Keep slots as the primary public customization mechanism. Component-based registered renderers are acceptable for programmatic registration, but they do not replace the slot-first model.
125
125
  11. `renderCustomMessages` is an approved secondary provider API in Vue because ordered multi-renderer registration and agent-scoped precedence cannot be expressed honestly through a single slot function alone.
126
126
 
127
127
  This is a constraint for future parity work: new React render-hook behavior should be mirrored by extending slot contracts, not by re-introducing provider render props in Vue.
128
128
 
129
+ ### Interaction callback and capability map
130
+
131
+ Vue components expose optional callback props when the component must reactively decide whether a built-in control is available. Scoped slots receive stable command functions plus explicit capability flags, so slot consumers never need to infer availability from function presence.
132
+
133
+ | Vue surface | Callback and capability contract | Intentional Vue shape |
134
+ | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
135
+ | `CopilotChatView` | Optional `onStop`, `onAddFile`, and transcription callbacks determine `canStop`, `canAddFile`, and `canTranscribe` for `#input` and `#welcome-screen`. | Event-shaped callback props mirror emitted interactions only to support reactive control gating. |
136
+ | `CopilotChatInput` | Optional action callbacks gate the corresponding default controls. | The component emits interactions while callback presence describes availability. |
137
+ | `CopilotPopupView` / `CopilotSidebarView` | Optional callbacks are forwarded only when the corresponding action is available. | Wrapper layers must not turn an absent callback into a truthy no-op capability. |
138
+ | `CopilotChatUserMessage` | Optional edit and branch-switch callbacks gate controls; branch slot commands expose `canGoPrev` and `canGoNext`. | `#branch-navigation` receives stable commands even when navigation is unavailable. |
139
+ | `CopilotChatAssistantMessage` | Optional feedback, read-aloud, and regenerate callbacks gate toolbar actions. | Toolbar slots stay slot-first while callback props provide reactive availability. |
140
+ | `CopilotSidebarWelcomeScreen` / `CopilotPopupWelcomeScreen` | `#input` receives stable commands plus `canStop`, `canAddFile`, and `canTranscribe`, forwarded from the parent view or derived from optional callbacks when used directly. | Wrapper commands may be stable no-ops, so capability flags are the source of truth. |
141
+ | `LicenseWarningBanner` | Optional `onDismiss` controls whether the dismiss button is rendered. | A callback prop is used because listener introspection is not reactive or public Vue API. |
142
+
129
143
  ## Architectural decision: Render hooks -> Composable state + slots
130
144
 
131
145
  Vue also diverges intentionally from React for render-oriented hooks that mix behavior with a render callback.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@copilotkit/core"),A=require("@ag-ui/client"),e=require("./use-render-activity-message-DXJDZGkW.cjs"),i=require("vue"),C=require("@copilotkit/shared");function g(n){return typeof n!="function"?n:(o=>{const a=typeof o.result=="string"?{...o,result:C.parseJson(o.result,o.result)}:o;return n(a)})}function b(n,o){const a="parameters"in n?C.getZodParameters(n.parameters):void 0;if(n.name==="*"){e.useRenderTool({name:"*",render:g(n.render),..."agentId"in n?{agentId:n.agentId}:{}},o);return}const t=n;if("renderAndWaitForResponse"in t||"renderAndWait"in t){const l=t.render??t.renderAndWaitForResponse??t.renderAndWait;if(!l){console.warn(`[CopilotKit] useCopilotAction: HITL action '${t.name}' has no render function. Skipping.`);return}e.useHumanInTheLoop({name:t.name,description:t.description,parameters:a,render:g(l),agentId:t.agentId},o);return}if(t.available==="frontend"||t.available==="disabled"){t.render&&a?e.useRenderTool({name:t.name,parameters:a,render:g(t.render),agentId:t.agentId},o):console.warn(`[CopilotKit] useCopilotAction: action '${t.name}' with available="${t.available}" requires both 'render' and 'parameters'. Skipping registration.`);return}const c=t.handler?l=>Promise.resolve(t.handler(l)):void 0;let s;t.available==="remote"?s=!1:t.available!==void 0&&(s=!0),e.useFrontendTool({name:t.name,description:t.description,parameters:a,handler:c,followUp:t.followUp,render:g(t.render),available:s,agentId:t.agentId,get webmcp(){return t.webmcp}},o)}function _(n,o){const{name:a,description:t,parameters:c,handler:s,followUp:l,available:m,render:u,agentId:d}=n,p=C.getZodParameters(c),f=s?r=>Promise.resolve(s(r)):void 0,v=typeof u=="function"?r=>{const h=typeof r.result=="string"?{...r,result:C.parseJson(r.result,r.result)}:r;return u(h)}:u;e.useFrontendTool({name:a,description:t,parameters:p,handler:f,followUp:l,render:v,available:m===void 0?void 0:m!=="disabled",agentId:d,get webmcp(){return n.webmcp}},o)}function I(n,o){const{copilotkit:a}=e.useCopilotKit(),t=i.ref(void 0),c=o??[];return i.watch([()=>n.description,()=>n.value,()=>n.convert,()=>n.available,...c],(s,l,m)=>{const u=a.value;if(!u)return;const{description:d,value:p,convert:f,available:v}=n;let r;try{r=f?f(d,p):JSON.stringify(p)}catch(h){console.warn(`[CopilotKit] useCopilotReadable: failed to serialize value for "${d}":`,h),r=String(p)}v!=="disabled"&&(t.value=u.addContext({description:d,value:r}),m(()=>{t.value&&u.removeContext(t.value)}))},{immediate:!0}),t}const T=i.defineComponent({__name:"CopilotKit",props:{publicApiKey:{},publicLicenseKey:{},runtimeUrl:{},headers:{type:[Object,Function]},credentials:{},defaultThrottleMs:{},licenseToken:{},properties:{},useSingleEndpoint:{type:Boolean},agents__unsafe_dev_only:{},selfManagedAgents:{},renderToolCalls:{},renderActivityMessages:{},renderCustomMessages:{},frontendTools:{},humanInTheLoop:{},openGenerativeUI:{},showDevConsole:{type:[Boolean,String]},enableInspector:{type:Boolean},onError:{type:Function},a2ui:{},debug:{type:[Boolean,Object]}},setup(n){const o=n;return(a,t)=>(i.openBlock(),i.createBlock(e._sfc_main$15,i.normalizeProps(i.guardReactiveProps(o)),{default:i.withCtx(()=>[i.renderSlot(a.$slots,"default")]),_:3},16))}});exports.A2UIActivityContentSchema=e.A2UIActivityContentSchema;exports.A2UISurfaceActivityRenderer=e._sfc_main;exports.A2UISurfaceActivityType=e.A2UISurfaceActivityType;exports.CopilotChat=e.CopilotChat;exports.CopilotChatAssistantMessage=e._sfc_main$1;exports.CopilotChatAttachmentQueue=e._sfc_main$2;exports.CopilotChatAttachmentRenderer=e._sfc_main$3;exports.CopilotChatAudioRecorder=e._sfc_main$4;exports.CopilotChatConfigurationProvider=e._sfc_main$5;exports.CopilotChatDefaultLabels=e.CopilotChatDefaultLabels;exports.CopilotChatInput=e._sfc_main$6;exports.CopilotChatMessageView=e._sfc_main$7;exports.CopilotChatReasoningMessage=e._sfc_main$8;exports.CopilotChatSuggestionPill=e._sfc_main$9;exports.CopilotChatSuggestionView=e._sfc_main$10;exports.CopilotChatToggleButton=e.CopilotChatToggleButton;exports.CopilotChatToggleButtonCloseIcon=e.CopilotChatToggleButtonCloseIcon;exports.CopilotChatToggleButtonOpenIcon=e.CopilotChatToggleButtonOpenIcon;exports.CopilotChatToolCallsView=e._sfc_main$11;exports.CopilotChatUserMessage=e._sfc_main$12;exports.CopilotChatView=e._sfc_main$13;exports.CopilotKitCoreVue=e.CopilotKitCoreVue;exports.CopilotKitInspector=e._sfc_main$14;exports.CopilotKitProvider=e._sfc_main$15;exports.CopilotModalHeader=e.CopilotModalHeader;exports.CopilotPopup=e._sfc_main$16;exports.CopilotPopupView=e.CopilotPopupView;exports.CopilotSidebar=e._sfc_main$17;exports.CopilotSidebarView=e.CopilotSidebarView;exports.CopilotThreadsDrawer=e._sfc_main$18;exports.GenerateSandboxedUiArgsSchema=e.GenerateSandboxedUiArgsSchema;exports.LicenseContextKey=e.LicenseContextKey;exports.MCPAppsActivityContentSchema=e.MCPAppsActivityContentSchema;exports.MCPAppsActivityRenderer=e.MCPAppsActivityRenderer;exports.MCPAppsActivityType=e.MCPAppsActivityType;exports.OpenGenerativeUIActivityRenderer=e.OpenGenerativeUIActivityRenderer;exports.OpenGenerativeUIActivityType=e.OpenGenerativeUIActivityType;exports.OpenGenerativeUIContentSchema=e.OpenGenerativeUIContentSchema;exports.OpenGenerativeUIRenderer=e.OpenGenerativeUIRenderer;exports.OpenGenerativeUIToolRenderer=e.OpenGenerativeUIToolRenderer;exports.UseAgentUpdate=e.UseAgentUpdate;exports.createA2UIMessageRenderer=e.createA2UIMessageRenderer;exports.createDefaultLicenseRef=e.createDefaultLicenseRef;exports.defineToolCallRenderer=e.defineToolCallRenderer;exports.extractCompleteStyles=e.extractCompleteStyles;exports.getOperationSurfaceId=e.getOperationSurfaceId;exports.processPartialHtml=e.processPartialHtml;exports.useAgent=e.useAgent;exports.useAgentContext=e.useAgentContext;exports.useAttachments=e.useAttachments;exports.useCapabilities=e.useCapabilities;exports.useComponent=e.useComponent;exports.useConfigureSuggestions=e.useConfigureSuggestions;exports.useCopilotChatConfiguration=e.useCopilotChatConfiguration;exports.useCopilotKit=e.useCopilotKit;exports.useDefaultRenderTool=e.useDefaultRenderTool;exports.useHumanInTheLoop=e.useHumanInTheLoop;exports.useInterrupt=e.useInterrupt;exports.useKatexStyles=e.useKatexStyles;exports.useKeyboardHeight=e.useKeyboardHeight;exports.useLicenseContext=e.useLicenseContext;exports.useRenderActivityMessage=e.useRenderActivityMessage;exports.useRenderCustomMessages=e.useRenderCustomMessages;exports.useRenderTool=e.useRenderTool;exports.useSandboxFunctions=e.useSandboxFunctions;exports.useSuggestions=e.useSuggestions;exports.useThreads=e.useThreads;exports.vueBasicCatalog=e.vueBasicCatalog;Object.defineProperty(exports,"createLicenseContextValue",{enumerable:!0,get:()=>C.createLicenseContextValue});exports.CopilotKit=T;exports.useCopilotAction=b;exports.useCopilotReadable=I;exports.useFrontendTool=_;Object.keys(y).forEach(n=>{n!=="default"&&!Object.prototype.hasOwnProperty.call(exports,n)&&Object.defineProperty(exports,n,{enumerable:!0,get:()=>y[n]})});Object.keys(A).forEach(n=>{n!=="default"&&!Object.prototype.hasOwnProperty.call(exports,n)&&Object.defineProperty(exports,n,{enumerable:!0,get:()=>A[n]})});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@copilotkit/core"),A=require("@ag-ui/client"),e=require("./use-render-activity-message-6LwUTCNm.cjs"),i=require("vue"),C=require("@copilotkit/shared");function f(n){return typeof n!="function"?n:(o=>{const a=typeof o.result=="string"?{...o,result:C.parseJson(o.result,o.result)}:o;return n(a)})}function b(n,o){const a="parameters"in n?C.getZodParameters(n.parameters):void 0;if(n.name==="*"){e.useRenderTool({name:"*",render:f(n.render),..."agentId"in n?{agentId:n.agentId}:{}},o);return}const t=n;if("renderAndWaitForResponse"in t||"renderAndWait"in t){const l=t.render??t.renderAndWaitForResponse??t.renderAndWait;if(!l){console.warn(`[CopilotKit] useCopilotAction: HITL action '${t.name}' has no render function. Skipping.`);return}e.useHumanInTheLoop({name:t.name,description:t.description,parameters:a,render:f(l),agentId:t.agentId},o);return}if(t.available==="frontend"||t.available==="disabled"){t.render&&a?e.useRenderTool({name:t.name,parameters:a,render:f(t.render),agentId:t.agentId},o):console.warn(`[CopilotKit] useCopilotAction: action '${t.name}' with available="${t.available}" requires both 'render' and 'parameters'. Skipping registration.`);return}const c=t.handler?l=>Promise.resolve(t.handler(l)):void 0;let s;t.available==="remote"?s=!1:t.available!==void 0&&(s=!0),e.useFrontendTool({name:t.name,description:t.description,parameters:a,handler:c,followUp:t.followUp,render:f(t.render),available:s,agentId:t.agentId,get webmcp(){return t.webmcp}},o)}function _(n,o){const{name:a,description:t,parameters:c,handler:s,followUp:l,available:m,render:u,agentId:d}=n,p=C.getZodParameters(c),g=s?r=>Promise.resolve(s(r)):void 0,v=typeof u=="function"?r=>{const h=typeof r.result=="string"?{...r,result:C.parseJson(r.result,r.result)}:r;return u(h)}:u;e.useFrontendTool({name:a,description:t,parameters:p,handler:g,followUp:l,render:v,available:m===void 0?void 0:m!=="disabled",agentId:d,get webmcp(){return n.webmcp}},o)}function I(n,o){const{copilotkit:a}=e.useCopilotKit(),t=i.ref(void 0),c=o??[];return i.watch([()=>n.description,()=>n.value,()=>n.convert,()=>n.available,...c],(s,l,m)=>{const u=a.value;if(!u)return;const{description:d,value:p,convert:g,available:v}=n;let r;try{r=g?g(d,p):JSON.stringify(p)}catch(h){console.warn(`[CopilotKit] useCopilotReadable: failed to serialize value for "${d}":`,h),r=String(p)}v!=="disabled"&&(t.value=u.addContext({description:d,value:r}),m(()=>{t.value&&u.removeContext(t.value)}))},{immediate:!0}),t}const T=i.defineComponent({__name:"CopilotKit",props:{publicApiKey:{},publicLicenseKey:{},runtimeUrl:{},headers:{type:[Object,Function]},credentials:{},messageFilter:{type:Function},defaultThrottleMs:{},licenseToken:{},properties:{},useSingleEndpoint:{type:Boolean},agents__unsafe_dev_only:{},selfManagedAgents:{},renderToolCalls:{},renderActivityMessages:{},renderCustomMessages:{},frontendTools:{},humanInTheLoop:{},openGenerativeUI:{},showDevConsole:{type:[Boolean,String]},enableInspector:{type:Boolean},onError:{type:Function},a2ui:{},debug:{type:[Boolean,Object]}},setup(n){const o=n;return(a,t)=>(i.openBlock(),i.createBlock(e._sfc_main$15,i.normalizeProps(i.guardReactiveProps(o)),{default:i.withCtx(()=>[i.renderSlot(a.$slots,"default")]),_:3},16))}});exports.A2UIActivityContentSchema=e.A2UIActivityContentSchema;exports.A2UISurfaceActivityRenderer=e._sfc_main;exports.A2UISurfaceActivityType=e.A2UISurfaceActivityType;exports.CopilotChat=e.CopilotChat;exports.CopilotChatAssistantMessage=e._sfc_main$1;exports.CopilotChatAttachmentQueue=e._sfc_main$2;exports.CopilotChatAttachmentRenderer=e._sfc_main$3;exports.CopilotChatAudioRecorder=e._sfc_main$4;exports.CopilotChatConfigurationProvider=e._sfc_main$5;exports.CopilotChatDefaultLabels=e.CopilotChatDefaultLabels;exports.CopilotChatInput=e._sfc_main$6;exports.CopilotChatMessageView=e._sfc_main$7;exports.CopilotChatReasoningMessage=e._sfc_main$8;exports.CopilotChatSuggestionPill=e._sfc_main$9;exports.CopilotChatSuggestionView=e._sfc_main$10;exports.CopilotChatToggleButton=e.CopilotChatToggleButton;exports.CopilotChatToggleButtonCloseIcon=e.CopilotChatToggleButtonCloseIcon;exports.CopilotChatToggleButtonOpenIcon=e.CopilotChatToggleButtonOpenIcon;exports.CopilotChatToolCallsView=e._sfc_main$11;exports.CopilotChatUserMessage=e._sfc_main$12;exports.CopilotChatView=e._sfc_main$13;exports.CopilotKitCoreVue=e.CopilotKitCoreVue;exports.CopilotKitInspector=e._sfc_main$14;exports.CopilotKitProvider=e._sfc_main$15;exports.CopilotModalHeader=e.CopilotModalHeader;exports.CopilotPopup=e._sfc_main$16;exports.CopilotPopupView=e.CopilotPopupView;exports.CopilotSidebar=e._sfc_main$17;exports.CopilotSidebarView=e.CopilotSidebarView;exports.CopilotThreadsDrawer=e._sfc_main$18;exports.GenerateSandboxedUiArgsSchema=e.GenerateSandboxedUiArgsSchema;exports.LicenseContextKey=e.LicenseContextKey;exports.MCPAppsActivityContentSchema=e.MCPAppsActivityContentSchema;exports.MCPAppsActivityRenderer=e.MCPAppsActivityRenderer;exports.MCPAppsActivityType=e.MCPAppsActivityType;exports.OpenGenerativeUIActivityRenderer=e.OpenGenerativeUIActivityRenderer;exports.OpenGenerativeUIActivityType=e.OpenGenerativeUIActivityType;exports.OpenGenerativeUIContentSchema=e.OpenGenerativeUIContentSchema;exports.OpenGenerativeUIRenderer=e.OpenGenerativeUIRenderer;exports.OpenGenerativeUIToolRenderer=e.OpenGenerativeUIToolRenderer;exports.UseAgentUpdate=e.UseAgentUpdate;exports.createA2UIMessageRenderer=e.createA2UIMessageRenderer;exports.createDefaultLicenseRef=e.createDefaultLicenseRef;exports.defineToolCallRenderer=e.defineToolCallRenderer;exports.extractCompleteStyles=e.extractCompleteStyles;exports.getOperationSurfaceId=e.getOperationSurfaceId;exports.processPartialHtml=e.processPartialHtml;exports.useAgent=e.useAgent;exports.useAgentContext=e.useAgentContext;exports.useAttachments=e.useAttachments;exports.useCapabilities=e.useCapabilities;exports.useComponent=e.useComponent;exports.useConfigureSuggestions=e.useConfigureSuggestions;exports.useCopilotChatConfiguration=e.useCopilotChatConfiguration;exports.useCopilotKit=e.useCopilotKit;exports.useDefaultRenderTool=e.useDefaultRenderTool;exports.useHumanInTheLoop=e.useHumanInTheLoop;exports.useInterrupt=e.useInterrupt;exports.useKatexStyles=e.useKatexStyles;exports.useKeyboardHeight=e.useKeyboardHeight;exports.useLicenseContext=e.useLicenseContext;exports.useRenderActivityMessage=e.useRenderActivityMessage;exports.useRenderCustomMessages=e.useRenderCustomMessages;exports.useRenderTool=e.useRenderTool;exports.useSandboxFunctions=e.useSandboxFunctions;exports.useSuggestions=e.useSuggestions;exports.useThreads=e.useThreads;exports.vueBasicCatalog=e.vueBasicCatalog;Object.defineProperty(exports,"createLicenseContextValue",{enumerable:!0,get:()=>C.createLicenseContextValue});exports.CopilotKit=T;exports.useCopilotAction=b;exports.useCopilotReadable=I;exports.useFrontendTool=_;Object.keys(y).forEach(n=>{n!=="default"&&!Object.prototype.hasOwnProperty.call(exports,n)&&Object.defineProperty(exports,n,{enumerable:!0,get:()=>y[n]})});Object.keys(A).forEach(n=>{n!=="default"&&!Object.prototype.hasOwnProperty.call(exports,n)&&Object.defineProperty(exports,n,{enumerable:!0,get:()=>A[n]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/hooks/use-copilot-action.ts","../src/hooks/use-frontend-tool.ts","../src/hooks/use-copilot-readable.ts","../src/components/copilot-provider/CopilotKit.vue"],"sourcesContent":["/**\n * V1 compatibility wrapper for useCopilotAction.\n *\n * Accepts the legacy Parameter[] action format and routes to the appropriate\n * v2 composable (useFrontendTool, useHumanInTheLoop, or useRenderTool).\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport type { Parameter, MappedParameterTypes } from \"@copilotkit/shared\";\nimport { getZodParameters, parseJson } from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport { useHumanInTheLoop as useHumanInTheLoopV2 } from \"../v2/hooks/use-human-in-the-loop\";\nimport { useRenderTool as useRenderToolV2 } from \"../v2/hooks/use-render-tool\";\nimport type { VueFrontendTool, VueHumanInTheLoop } from \"../v2/types\";\n\n// Wraps a v1 render function so a JSON-string `result` is parsed before being\n// passed through. Mirrors the v1 React behavior. If render is a Component\n// (object) rather than a function, returns it unchanged — Components receive\n// props through Vue's prop system and the user is responsible for parsing.\nfunction wrapRenderWithJsonResult<R>(render: R): R {\n if (typeof render !== \"function\") return render;\n return ((props: { result?: unknown }) => {\n const next =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(next);\n }) as R;\n}\n\nexport interface FrontendAction<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\" | \"remote\" | \"frontend\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWaitForResponse?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWait?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this action to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport interface CatchAllFrontendAction {\n name: \"*\";\n render: (props: unknown) => unknown;\n}\n\nexport function useCopilotAction<const T extends Parameter[] | [] = []>(\n action: FrontendAction<T> | CatchAllFrontendAction,\n deps?: WatchSource<unknown>[],\n): void {\n const zodParameters =\n \"parameters\" in action\n ? getZodParameters(action.parameters as T)\n : undefined;\n\n // Catch-all render action\n if (action.name === \"*\") {\n useRenderToolV2(\n {\n name: \"*\",\n render: wrapRenderWithJsonResult(\n (action as CatchAllFrontendAction).render,\n ),\n ...(\"agentId\" in action\n ? { agentId: (action as FrontendAction<T>).agentId }\n : {}),\n },\n deps,\n );\n return;\n }\n\n const typedAction = action as FrontendAction<T>;\n\n // Human-in-the-loop: has renderAndWaitForResponse or renderAndWait\n if (\n \"renderAndWaitForResponse\" in typedAction ||\n \"renderAndWait\" in typedAction\n ) {\n const render =\n typedAction.render ??\n typedAction.renderAndWaitForResponse ??\n typedAction.renderAndWait;\n\n if (!render) {\n console.warn(\n `[CopilotKit] useCopilotAction: HITL action '${typedAction.name}' ` +\n `has no render function. Skipping.`,\n );\n return;\n }\n\n useHumanInTheLoopV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(render) as VueHumanInTheLoop<\n MappedParameterTypes<T>\n >[\"render\"],\n agentId: typedAction.agentId,\n },\n deps,\n );\n return;\n }\n\n // Render-only: available is \"frontend\" or \"disabled\" (no handler invoked remotely)\n if (\n typedAction.available === \"frontend\" ||\n typedAction.available === \"disabled\"\n ) {\n if (typedAction.render && zodParameters) {\n useRenderToolV2(\n {\n name: typedAction.name,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(\n typedAction.render as (props: unknown) => unknown,\n ),\n agentId: typedAction.agentId,\n },\n deps,\n );\n } else {\n console.warn(\n `[CopilotKit] useCopilotAction: action '${typedAction.name}' ` +\n `with available=\"${typedAction.available}\" requires both ` +\n `'render' and 'parameters'. Skipping registration.`,\n );\n }\n return;\n }\n\n // Default: frontend tool with handler\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = typedAction.handler\n ? (args: MappedParameterTypes<T>) =>\n Promise.resolve(typedAction.handler!(args))\n : undefined;\n\n // Convert v1 available (string enum) to v2 available (boolean)\n // At this point, \"frontend\" and \"disabled\" have been handled above,\n // so remaining values are \"enabled\", \"remote\", or undefined.\n // \"remote\" means server-only: register the tool but mark it as not\n // available on the frontend (matches React's ActionInputAvailability.Remote).\n let normalizedAvailable: boolean | undefined;\n if (typedAction.available === \"remote\") {\n normalizedAvailable = false;\n } else if (typedAction.available !== undefined) {\n normalizedAvailable = true;\n }\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp: typedAction.followUp,\n render: wrapRenderWithJsonResult(typedAction.render),\n available: normalizedAvailable,\n agentId: typedAction.agentId,\n // Read webmcp at watch time: the action object may expose it as a getter\n // over reactive state, and capturing the initial value here would\n // re-register a stale configuration.\n get webmcp() {\n return typedAction.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useFrontendTool.\n *\n * Accepts the legacy Parameter[] format and converts to Zod via getZodParameters,\n * then delegates to the v2 composable.\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport {\n type Parameter,\n type MappedParameterTypes,\n getZodParameters,\n parseJson,\n} from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport type { VueFrontendTool } from \"../v2/types\";\n\nexport interface UseFrontendToolArgs<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this tool to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport function useFrontendTool<const T extends Parameter[] = []>(\n tool: UseFrontendToolArgs<T>,\n deps?: WatchSource<unknown>[],\n) {\n const {\n name,\n description,\n parameters,\n handler,\n followUp,\n available,\n render,\n agentId,\n } = tool;\n const zodParameters = getZodParameters(parameters);\n\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = handler\n ? (args: MappedParameterTypes<T>) => Promise.resolve(handler(args))\n : undefined;\n\n // Wrap render to parse JSON-string results before passing them to the\n // user's render function — matches the v1 React behavior. If render is a\n // Component rather than a function, leave it unchanged.\n const normalizedRender =\n typeof render === \"function\"\n ? (props: { result?: unknown }) => {\n const renderProps =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(renderProps);\n }\n : render;\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name,\n description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp,\n render: normalizedRender,\n available: available === undefined ? undefined : available !== \"disabled\",\n agentId,\n // Read webmcp at watch time: the v1 args may expose it as a getter over\n // reactive state, and capturing the initial value here would re-register\n // a stale configuration.\n get webmcp() {\n return tool.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useCopilotReadable.\n *\n * Provides app-state and other information to the Copilot context.\n * Delegates directly to the v2 CopilotKitCoreVue instance.\n */\nimport { watch, ref, type Ref } from \"vue\";\nimport type { WatchSource } from \"vue\";\nimport { useCopilotKit } from \"../v2/providers/useCopilotKit\";\n\nexport interface UseCopilotReadableOptions {\n /** The description of the information to be added to the Copilot context. */\n description: string;\n /** The value to be added to the Copilot context. Object values are automatically stringified. */\n value: unknown;\n /** Whether the context is available to the Copilot. */\n available?: \"enabled\" | \"disabled\";\n /** Custom conversion function to serialize the value to a string. */\n convert?: (description: string, value: unknown) => string;\n}\n\nexport function useCopilotReadable(\n options: UseCopilotReadableOptions,\n deps?: WatchSource<unknown>[],\n): Ref<string | undefined> {\n const { copilotkit } = useCopilotKit();\n const ctxIdRef = ref<string | undefined>(undefined);\n\n const extraDeps = deps ?? [];\n\n watch(\n [\n () => options.description,\n () => options.value,\n () => options.convert,\n () => options.available,\n ...extraDeps,\n ],\n (_newValues, _old, onCleanup) => {\n const core = copilotkit.value;\n if (!core) return;\n\n const { description, value, convert, available } = options;\n\n let serializedValue: string;\n try {\n serializedValue = convert\n ? convert(description, value)\n : JSON.stringify(value);\n } catch (err) {\n console.warn(\n `[CopilotKit] useCopilotReadable: failed to serialize ` +\n `value for \"${description}\":`,\n err,\n );\n serializedValue = String(value);\n }\n\n if (available === \"disabled\") return;\n\n ctxIdRef.value = core.addContext({\n description,\n value: serializedValue,\n });\n\n onCleanup(() => {\n if (!ctxIdRef.value) return;\n core.removeContext(ctxIdRef.value);\n });\n },\n { immediate: true },\n );\n\n return ctxIdRef;\n}\n","<script setup lang=\"ts\">\n/**\n * V1 compatibility wrapper for CopilotKitProvider.\n *\n * Accepts the same props as CopilotKitProvider plus legacy v1 props\n * (publicApiKey, publicLicenseKey) and delegates to the v2 provider.\n */\nimport type { CopilotKitProps } from \"./types\";\nimport CopilotKitProvider from \"../../v2/providers/CopilotKitProvider.vue\";\n\nconst props = defineProps<CopilotKitProps>();\n</script>\n\n<template>\n <CopilotKitProvider v-bind=\"props\">\n <slot />\n </CopilotKitProvider>\n</template>\n"],"names":["wrapRenderWithJsonResult","render","props","next","parseJson","useCopilotAction","action","deps","zodParameters","getZodParameters","useRenderToolV2","typedAction","useHumanInTheLoopV2","normalizedHandler","args","normalizedAvailable","useFrontendToolV2","useFrontendTool","tool","name","description","parameters","handler","followUp","available","agentId","normalizedRender","renderProps","useCopilotReadable","options","copilotkit","useCopilotKit","ctxIdRef","ref","extraDeps","watch","_newValues","_old","onCleanup","core","value","convert","serializedValue","err","__props","_openBlock","_createBlock","CopilotKitProvider","_renderSlot","_ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/hooks/use-copilot-action.ts","../src/hooks/use-frontend-tool.ts","../src/hooks/use-copilot-readable.ts","../src/components/copilot-provider/CopilotKit.vue"],"sourcesContent":["/**\n * V1 compatibility wrapper for useCopilotAction.\n *\n * Accepts the legacy Parameter[] action format and routes to the appropriate\n * v2 composable (useFrontendTool, useHumanInTheLoop, or useRenderTool).\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport type { Parameter, MappedParameterTypes } from \"@copilotkit/shared\";\nimport { getZodParameters, parseJson } from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport { useHumanInTheLoop as useHumanInTheLoopV2 } from \"../v2/hooks/use-human-in-the-loop\";\nimport { useRenderTool as useRenderToolV2 } from \"../v2/hooks/use-render-tool\";\nimport type { VueFrontendTool, VueHumanInTheLoop } from \"../v2/types\";\n\n// Wraps a v1 render function so a JSON-string `result` is parsed before being\n// passed through. Mirrors the v1 React behavior. If render is a Component\n// (object) rather than a function, returns it unchanged — Components receive\n// props through Vue's prop system and the user is responsible for parsing.\nfunction wrapRenderWithJsonResult<R>(render: R): R {\n if (typeof render !== \"function\") return render;\n return ((props: { result?: unknown }) => {\n const next =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(next);\n }) as R;\n}\n\nexport interface FrontendAction<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\" | \"remote\" | \"frontend\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWaitForResponse?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWait?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this action to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport interface CatchAllFrontendAction {\n name: \"*\";\n render: (props: unknown) => unknown;\n}\n\nexport function useCopilotAction<const T extends Parameter[] | [] = []>(\n action: FrontendAction<T> | CatchAllFrontendAction,\n deps?: WatchSource<unknown>[],\n): void {\n const zodParameters =\n \"parameters\" in action\n ? getZodParameters(action.parameters as T)\n : undefined;\n\n // Catch-all render action\n if (action.name === \"*\") {\n useRenderToolV2(\n {\n name: \"*\",\n render: wrapRenderWithJsonResult(\n (action as CatchAllFrontendAction).render,\n ),\n ...(\"agentId\" in action\n ? { agentId: (action as FrontendAction<T>).agentId }\n : {}),\n },\n deps,\n );\n return;\n }\n\n const typedAction = action as FrontendAction<T>;\n\n // Human-in-the-loop: has renderAndWaitForResponse or renderAndWait\n if (\n \"renderAndWaitForResponse\" in typedAction ||\n \"renderAndWait\" in typedAction\n ) {\n const render =\n typedAction.render ??\n typedAction.renderAndWaitForResponse ??\n typedAction.renderAndWait;\n\n if (!render) {\n console.warn(\n `[CopilotKit] useCopilotAction: HITL action '${typedAction.name}' ` +\n `has no render function. Skipping.`,\n );\n return;\n }\n\n useHumanInTheLoopV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(render) as VueHumanInTheLoop<\n MappedParameterTypes<T>\n >[\"render\"],\n agentId: typedAction.agentId,\n },\n deps,\n );\n return;\n }\n\n // Render-only: available is \"frontend\" or \"disabled\" (no handler invoked remotely)\n if (\n typedAction.available === \"frontend\" ||\n typedAction.available === \"disabled\"\n ) {\n if (typedAction.render && zodParameters) {\n useRenderToolV2(\n {\n name: typedAction.name,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(\n typedAction.render as (props: unknown) => unknown,\n ),\n agentId: typedAction.agentId,\n },\n deps,\n );\n } else {\n console.warn(\n `[CopilotKit] useCopilotAction: action '${typedAction.name}' ` +\n `with available=\"${typedAction.available}\" requires both ` +\n `'render' and 'parameters'. Skipping registration.`,\n );\n }\n return;\n }\n\n // Default: frontend tool with handler\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = typedAction.handler\n ? (args: MappedParameterTypes<T>) =>\n Promise.resolve(typedAction.handler!(args))\n : undefined;\n\n // Convert v1 available (string enum) to v2 available (boolean)\n // At this point, \"frontend\" and \"disabled\" have been handled above,\n // so remaining values are \"enabled\", \"remote\", or undefined.\n // \"remote\" means server-only: register the tool but mark it as not\n // available on the frontend (matches React's ActionInputAvailability.Remote).\n let normalizedAvailable: boolean | undefined;\n if (typedAction.available === \"remote\") {\n normalizedAvailable = false;\n } else if (typedAction.available !== undefined) {\n normalizedAvailable = true;\n }\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp: typedAction.followUp,\n render: wrapRenderWithJsonResult(typedAction.render),\n available: normalizedAvailable,\n agentId: typedAction.agentId,\n // Read webmcp at watch time: the action object may expose it as a getter\n // over reactive state, and capturing the initial value here would\n // re-register a stale configuration.\n get webmcp() {\n return typedAction.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useFrontendTool.\n *\n * Accepts the legacy Parameter[] format and converts to Zod via getZodParameters,\n * then delegates to the v2 composable.\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport {\n type Parameter,\n type MappedParameterTypes,\n getZodParameters,\n parseJson,\n} from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport type { VueFrontendTool } from \"../v2/types\";\n\nexport interface UseFrontendToolArgs<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this tool to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport function useFrontendTool<const T extends Parameter[] = []>(\n tool: UseFrontendToolArgs<T>,\n deps?: WatchSource<unknown>[],\n) {\n const {\n name,\n description,\n parameters,\n handler,\n followUp,\n available,\n render,\n agentId,\n } = tool;\n const zodParameters = getZodParameters(parameters);\n\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = handler\n ? (args: MappedParameterTypes<T>) => Promise.resolve(handler(args))\n : undefined;\n\n // Wrap render to parse JSON-string results before passing them to the\n // user's render function — matches the v1 React behavior. If render is a\n // Component rather than a function, leave it unchanged.\n const normalizedRender =\n typeof render === \"function\"\n ? (props: { result?: unknown }) => {\n const renderProps =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(renderProps);\n }\n : render;\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name,\n description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp,\n render: normalizedRender,\n available: available === undefined ? undefined : available !== \"disabled\",\n agentId,\n // Read webmcp at watch time: the v1 args may expose it as a getter over\n // reactive state, and capturing the initial value here would re-register\n // a stale configuration.\n get webmcp() {\n return tool.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useCopilotReadable.\n *\n * Provides app-state and other information to the Copilot context.\n * Delegates directly to the v2 CopilotKitCoreVue instance.\n */\nimport { watch, ref, type Ref } from \"vue\";\nimport type { WatchSource } from \"vue\";\nimport { useCopilotKit } from \"../v2/providers/useCopilotKit\";\n\nexport interface UseCopilotReadableOptions {\n /** The description of the information to be added to the Copilot context. */\n description: string;\n /** The value to be added to the Copilot context. Object values are automatically stringified. */\n value: unknown;\n /** Whether the context is available to the Copilot. */\n available?: \"enabled\" | \"disabled\";\n /** Custom conversion function to serialize the value to a string. */\n convert?: (description: string, value: unknown) => string;\n}\n\nexport function useCopilotReadable(\n options: UseCopilotReadableOptions,\n deps?: WatchSource<unknown>[],\n): Ref<string | undefined> {\n const { copilotkit } = useCopilotKit();\n const ctxIdRef = ref<string | undefined>(undefined);\n\n const extraDeps = deps ?? [];\n\n watch(\n [\n () => options.description,\n () => options.value,\n () => options.convert,\n () => options.available,\n ...extraDeps,\n ],\n (_newValues, _old, onCleanup) => {\n const core = copilotkit.value;\n if (!core) return;\n\n const { description, value, convert, available } = options;\n\n let serializedValue: string;\n try {\n serializedValue = convert\n ? convert(description, value)\n : JSON.stringify(value);\n } catch (err) {\n console.warn(\n `[CopilotKit] useCopilotReadable: failed to serialize ` +\n `value for \"${description}\":`,\n err,\n );\n serializedValue = String(value);\n }\n\n if (available === \"disabled\") return;\n\n ctxIdRef.value = core.addContext({\n description,\n value: serializedValue,\n });\n\n onCleanup(() => {\n if (!ctxIdRef.value) return;\n core.removeContext(ctxIdRef.value);\n });\n },\n { immediate: true },\n );\n\n return ctxIdRef;\n}\n","<script setup lang=\"ts\">\n/**\n * V1 compatibility wrapper for CopilotKitProvider.\n *\n * Accepts the same props as CopilotKitProvider plus legacy v1 props\n * (publicApiKey, publicLicenseKey) and delegates to the v2 provider.\n */\nimport type { CopilotKitProps } from \"./types\";\nimport CopilotKitProvider from \"../../v2/providers/CopilotKitProvider.vue\";\n\nconst props = defineProps<CopilotKitProps>();\n</script>\n\n<template>\n <CopilotKitProvider v-bind=\"props\">\n <slot />\n </CopilotKitProvider>\n</template>\n"],"names":["wrapRenderWithJsonResult","render","props","next","parseJson","useCopilotAction","action","deps","zodParameters","getZodParameters","useRenderToolV2","typedAction","useHumanInTheLoopV2","normalizedHandler","args","normalizedAvailable","useFrontendToolV2","useFrontendTool","tool","name","description","parameters","handler","followUp","available","agentId","normalizedRender","renderProps","useCopilotReadable","options","copilotkit","useCopilotKit","ctxIdRef","ref","extraDeps","watch","_newValues","_old","onCleanup","core","value","convert","serializedValue","err","__props","_openBlock","_createBlock","CopilotKitProvider","_renderSlot","_ctx"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,32 +1,32 @@
1
1
  export * from "@copilotkit/core";
2
2
  export * from "@ag-ui/client";
3
- import { aa as f, a3 as b, a2 as v, a0 as y, u as I } from "./use-render-activity-message-Ciee03Rx.js";
4
- import { A as k, _ as W, a as J, C as j, b as E, c as q, d as N, e as Q, f as Z, g as X, h as Y, i as ee, j as ae, k as te, l as oe, m as ne, n as re, o as se, p as ie, q as le, r as de, s as ue, t as pe, v as ce, w as Ce, x as me, y as ge, z as fe, B as ve, G as he, L as Ae, M as be, D as ye, E as Ie, O as Re, F as Se, H as we, I as Te, J as xe, U as Ue, K as Pe, N as Me, P as Ke, Q as _e, R as ze, S as Be, T as Oe, V as Ve, W as Le, X as He, Y as De, Z as Fe, $ as Ge, a1 as $e, a4 as ke, a5 as We, a6 as Je, a7 as je, a8 as Ee, a9 as qe, ab as Ne, ac as Qe, ad as Ze, ae as Xe } from "./use-render-activity-message-Ciee03Rx.js";
3
+ import { aa as f, a3 as b, a2 as v, a0 as y, u as I } from "./use-render-activity-message-Di_L8HCv.js";
4
+ import { A as k, _ as W, a as J, C as j, b as E, c as q, d as N, e as Q, f as Z, g as X, h as Y, i as ee, j as te, k as ae, l as oe, m as ne, n as re, o as se, p as ie, q as le, r as de, s as ue, t as pe, v as ce, w as Ce, x as me, y as ge, z as fe, B as ve, G as he, L as Ae, M as be, D as ye, E as Ie, O as Re, F as Se, H as we, I as Te, J as xe, U as Ue, K as Pe, N as Me, P as Ke, Q as _e, R as ze, S as Be, T as Oe, V as Ve, W as Fe, X as Le, Y as He, Z as De, $ as Ge, a1 as $e, a4 as ke, a5 as We, a6 as Je, a7 as je, a8 as Ee, a9 as qe, ab as Ne, ac as Qe, ad as Ze, ae as Xe } from "./use-render-activity-message-Di_L8HCv.js";
5
5
  import { ref as R, watch as S, defineComponent as w, openBlock as T, createBlock as x, normalizeProps as U, guardReactiveProps as P, withCtx as M, renderSlot as K } from "vue";
6
6
  import { getZodParameters as h, parseJson as A } from "@copilotkit/shared";
7
- import { createLicenseContextValue as ea } from "@copilotkit/shared";
8
- function c(a) {
9
- return typeof a != "function" ? a : ((t) => {
10
- const o = typeof t.result == "string" ? { ...t, result: A(t.result, t.result) } : t;
11
- return a(o);
7
+ import { createLicenseContextValue as et } from "@copilotkit/shared";
8
+ function c(t) {
9
+ return typeof t != "function" ? t : ((a) => {
10
+ const o = typeof a.result == "string" ? { ...a, result: A(a.result, a.result) } : a;
11
+ return t(o);
12
12
  });
13
13
  }
14
- function O(a, t) {
15
- const o = "parameters" in a ? h(a.parameters) : void 0;
16
- if (a.name === "*") {
14
+ function O(t, a) {
15
+ const o = "parameters" in t ? h(t.parameters) : void 0;
16
+ if (t.name === "*") {
17
17
  f(
18
18
  {
19
19
  name: "*",
20
20
  render: c(
21
- a.render
21
+ t.render
22
22
  ),
23
- ..."agentId" in a ? { agentId: a.agentId } : {}
23
+ ..."agentId" in t ? { agentId: t.agentId } : {}
24
24
  },
25
- t
25
+ a
26
26
  );
27
27
  return;
28
28
  }
29
- const e = a;
29
+ const e = t;
30
30
  if ("renderAndWaitForResponse" in e || "renderAndWait" in e) {
31
31
  const s = e.render ?? e.renderAndWaitForResponse ?? e.renderAndWait;
32
32
  if (!s) {
@@ -43,7 +43,7 @@ function O(a, t) {
43
43
  render: c(s),
44
44
  agentId: e.agentId
45
45
  },
46
- t
46
+ a
47
47
  );
48
48
  return;
49
49
  }
@@ -57,7 +57,7 @@ function O(a, t) {
57
57
  ),
58
58
  agentId: e.agentId
59
59
  },
60
- t
60
+ a
61
61
  ) : console.warn(
62
62
  `[CopilotKit] useCopilotAction: action '${e.name}' with available="${e.available}" requires both 'render' and 'parameters'. Skipping registration.`
63
63
  );
@@ -82,10 +82,10 @@ function O(a, t) {
82
82
  return e.webmcp;
83
83
  }
84
84
  },
85
- t
85
+ a
86
86
  );
87
87
  }
88
- function V(a, t) {
88
+ function V(t, a) {
89
89
  const {
90
90
  name: o,
91
91
  description: e,
@@ -95,7 +95,7 @@ function V(a, t) {
95
95
  available: p,
96
96
  render: i,
97
97
  agentId: l
98
- } = a, d = h(u);
98
+ } = t, d = h(u);
99
99
  v(
100
100
  {
101
101
  name: o,
@@ -113,26 +113,26 @@ function V(a, t) {
113
113
  // reactive state, and capturing the initial value here would re-register
114
114
  // a stale configuration.
115
115
  get webmcp() {
116
- return a.webmcp;
116
+ return t.webmcp;
117
117
  }
118
118
  },
119
- t
119
+ a
120
120
  );
121
121
  }
122
- function L(a, t) {
122
+ function F(t, a) {
123
123
  const { copilotkit: o } = y(), e = R(void 0);
124
124
  return S(
125
125
  [
126
- () => a.description,
127
- () => a.value,
128
- () => a.convert,
129
- () => a.available,
130
- ...t ?? []
126
+ () => t.description,
127
+ () => t.value,
128
+ () => t.convert,
129
+ () => t.available,
130
+ ...a ?? []
131
131
  ],
132
132
  (r, s, p) => {
133
133
  const i = o.value;
134
134
  if (!i) return;
135
- const { description: l, value: d, convert: C, available: g } = a;
135
+ const { description: l, value: d, convert: C, available: g } = t;
136
136
  let n;
137
137
  try {
138
138
  n = C ? C(l, d) : JSON.stringify(d);
@@ -152,7 +152,7 @@ function L(a, t) {
152
152
  { immediate: !0 }
153
153
  ), e;
154
154
  }
155
- const H = /* @__PURE__ */ w({
155
+ const L = /* @__PURE__ */ w({
156
156
  __name: "CopilotKit",
157
157
  props: {
158
158
  publicApiKey: {},
@@ -160,6 +160,7 @@ const H = /* @__PURE__ */ w({
160
160
  runtimeUrl: {},
161
161
  headers: { type: [Object, Function] },
162
162
  credentials: {},
163
+ messageFilter: { type: Function },
163
164
  defaultThrottleMs: {},
164
165
  licenseToken: {},
165
166
  properties: {},
@@ -178,9 +179,9 @@ const H = /* @__PURE__ */ w({
178
179
  a2ui: {},
179
180
  debug: { type: [Boolean, Object] }
180
181
  },
181
- setup(a) {
182
- const t = a;
183
- return (o, e) => (T(), x(I, U(P(t)), {
182
+ setup(t) {
183
+ const a = t;
184
+ return (o, e) => (T(), x(I, U(P(a)), {
184
185
  default: M(() => [
185
186
  K(o.$slots, "default")
186
187
  ]),
@@ -201,8 +202,8 @@ export {
201
202
  X as CopilotChatDefaultLabels,
202
203
  Y as CopilotChatInput,
203
204
  ee as CopilotChatMessageView,
204
- ae as CopilotChatReasoningMessage,
205
- te as CopilotChatSuggestionPill,
205
+ te as CopilotChatReasoningMessage,
206
+ ae as CopilotChatSuggestionPill,
206
207
  oe as CopilotChatSuggestionView,
207
208
  ne as CopilotChatToggleButton,
208
209
  re as CopilotChatToggleButtonCloseIcon,
@@ -210,7 +211,7 @@ export {
210
211
  ie as CopilotChatToolCallsView,
211
212
  le as CopilotChatUserMessage,
212
213
  de as CopilotChatView,
213
- H as CopilotKit,
214
+ L as CopilotKit,
214
215
  ue as CopilotKitCoreVue,
215
216
  pe as CopilotKitInspector,
216
217
  I as CopilotKitProvider,
@@ -233,21 +234,21 @@ export {
233
234
  Ue as UseAgentUpdate,
234
235
  Pe as createA2UIMessageRenderer,
235
236
  Me as createDefaultLicenseRef,
236
- ea as createLicenseContextValue,
237
+ et as createLicenseContextValue,
237
238
  Ke as defineToolCallRenderer,
238
239
  _e as extractCompleteStyles,
239
240
  ze as getOperationSurfaceId,
240
241
  Be as processPartialHtml,
241
242
  Oe as useAgent,
242
243
  Ve as useAgentContext,
243
- Le as useAttachments,
244
- He as useCapabilities,
245
- De as useComponent,
246
- Fe as useConfigureSuggestions,
244
+ Fe as useAttachments,
245
+ Le as useCapabilities,
246
+ He as useComponent,
247
+ De as useConfigureSuggestions,
247
248
  O as useCopilotAction,
248
249
  Ge as useCopilotChatConfiguration,
249
250
  y as useCopilotKit,
250
- L as useCopilotReadable,
251
+ F as useCopilotReadable,
251
252
  $e as useDefaultRenderTool,
252
253
  V as useFrontendTool,
253
254
  b as useHumanInTheLoop,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/hooks/use-copilot-action.ts","../src/hooks/use-frontend-tool.ts","../src/hooks/use-copilot-readable.ts","../src/components/copilot-provider/CopilotKit.vue"],"sourcesContent":["/**\n * V1 compatibility wrapper for useCopilotAction.\n *\n * Accepts the legacy Parameter[] action format and routes to the appropriate\n * v2 composable (useFrontendTool, useHumanInTheLoop, or useRenderTool).\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport type { Parameter, MappedParameterTypes } from \"@copilotkit/shared\";\nimport { getZodParameters, parseJson } from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport { useHumanInTheLoop as useHumanInTheLoopV2 } from \"../v2/hooks/use-human-in-the-loop\";\nimport { useRenderTool as useRenderToolV2 } from \"../v2/hooks/use-render-tool\";\nimport type { VueFrontendTool, VueHumanInTheLoop } from \"../v2/types\";\n\n// Wraps a v1 render function so a JSON-string `result` is parsed before being\n// passed through. Mirrors the v1 React behavior. If render is a Component\n// (object) rather than a function, returns it unchanged — Components receive\n// props through Vue's prop system and the user is responsible for parsing.\nfunction wrapRenderWithJsonResult<R>(render: R): R {\n if (typeof render !== \"function\") return render;\n return ((props: { result?: unknown }) => {\n const next =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(next);\n }) as R;\n}\n\nexport interface FrontendAction<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\" | \"remote\" | \"frontend\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWaitForResponse?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWait?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this action to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport interface CatchAllFrontendAction {\n name: \"*\";\n render: (props: unknown) => unknown;\n}\n\nexport function useCopilotAction<const T extends Parameter[] | [] = []>(\n action: FrontendAction<T> | CatchAllFrontendAction,\n deps?: WatchSource<unknown>[],\n): void {\n const zodParameters =\n \"parameters\" in action\n ? getZodParameters(action.parameters as T)\n : undefined;\n\n // Catch-all render action\n if (action.name === \"*\") {\n useRenderToolV2(\n {\n name: \"*\",\n render: wrapRenderWithJsonResult(\n (action as CatchAllFrontendAction).render,\n ),\n ...(\"agentId\" in action\n ? { agentId: (action as FrontendAction<T>).agentId }\n : {}),\n },\n deps,\n );\n return;\n }\n\n const typedAction = action as FrontendAction<T>;\n\n // Human-in-the-loop: has renderAndWaitForResponse or renderAndWait\n if (\n \"renderAndWaitForResponse\" in typedAction ||\n \"renderAndWait\" in typedAction\n ) {\n const render =\n typedAction.render ??\n typedAction.renderAndWaitForResponse ??\n typedAction.renderAndWait;\n\n if (!render) {\n console.warn(\n `[CopilotKit] useCopilotAction: HITL action '${typedAction.name}' ` +\n `has no render function. Skipping.`,\n );\n return;\n }\n\n useHumanInTheLoopV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(render) as VueHumanInTheLoop<\n MappedParameterTypes<T>\n >[\"render\"],\n agentId: typedAction.agentId,\n },\n deps,\n );\n return;\n }\n\n // Render-only: available is \"frontend\" or \"disabled\" (no handler invoked remotely)\n if (\n typedAction.available === \"frontend\" ||\n typedAction.available === \"disabled\"\n ) {\n if (typedAction.render && zodParameters) {\n useRenderToolV2(\n {\n name: typedAction.name,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(\n typedAction.render as (props: unknown) => unknown,\n ),\n agentId: typedAction.agentId,\n },\n deps,\n );\n } else {\n console.warn(\n `[CopilotKit] useCopilotAction: action '${typedAction.name}' ` +\n `with available=\"${typedAction.available}\" requires both ` +\n `'render' and 'parameters'. Skipping registration.`,\n );\n }\n return;\n }\n\n // Default: frontend tool with handler\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = typedAction.handler\n ? (args: MappedParameterTypes<T>) =>\n Promise.resolve(typedAction.handler!(args))\n : undefined;\n\n // Convert v1 available (string enum) to v2 available (boolean)\n // At this point, \"frontend\" and \"disabled\" have been handled above,\n // so remaining values are \"enabled\", \"remote\", or undefined.\n // \"remote\" means server-only: register the tool but mark it as not\n // available on the frontend (matches React's ActionInputAvailability.Remote).\n let normalizedAvailable: boolean | undefined;\n if (typedAction.available === \"remote\") {\n normalizedAvailable = false;\n } else if (typedAction.available !== undefined) {\n normalizedAvailable = true;\n }\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp: typedAction.followUp,\n render: wrapRenderWithJsonResult(typedAction.render),\n available: normalizedAvailable,\n agentId: typedAction.agentId,\n // Read webmcp at watch time: the action object may expose it as a getter\n // over reactive state, and capturing the initial value here would\n // re-register a stale configuration.\n get webmcp() {\n return typedAction.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useFrontendTool.\n *\n * Accepts the legacy Parameter[] format and converts to Zod via getZodParameters,\n * then delegates to the v2 composable.\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport {\n type Parameter,\n type MappedParameterTypes,\n getZodParameters,\n parseJson,\n} from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport type { VueFrontendTool } from \"../v2/types\";\n\nexport interface UseFrontendToolArgs<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this tool to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport function useFrontendTool<const T extends Parameter[] = []>(\n tool: UseFrontendToolArgs<T>,\n deps?: WatchSource<unknown>[],\n) {\n const {\n name,\n description,\n parameters,\n handler,\n followUp,\n available,\n render,\n agentId,\n } = tool;\n const zodParameters = getZodParameters(parameters);\n\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = handler\n ? (args: MappedParameterTypes<T>) => Promise.resolve(handler(args))\n : undefined;\n\n // Wrap render to parse JSON-string results before passing them to the\n // user's render function — matches the v1 React behavior. If render is a\n // Component rather than a function, leave it unchanged.\n const normalizedRender =\n typeof render === \"function\"\n ? (props: { result?: unknown }) => {\n const renderProps =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(renderProps);\n }\n : render;\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name,\n description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp,\n render: normalizedRender,\n available: available === undefined ? undefined : available !== \"disabled\",\n agentId,\n // Read webmcp at watch time: the v1 args may expose it as a getter over\n // reactive state, and capturing the initial value here would re-register\n // a stale configuration.\n get webmcp() {\n return tool.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useCopilotReadable.\n *\n * Provides app-state and other information to the Copilot context.\n * Delegates directly to the v2 CopilotKitCoreVue instance.\n */\nimport { watch, ref, type Ref } from \"vue\";\nimport type { WatchSource } from \"vue\";\nimport { useCopilotKit } from \"../v2/providers/useCopilotKit\";\n\nexport interface UseCopilotReadableOptions {\n /** The description of the information to be added to the Copilot context. */\n description: string;\n /** The value to be added to the Copilot context. Object values are automatically stringified. */\n value: unknown;\n /** Whether the context is available to the Copilot. */\n available?: \"enabled\" | \"disabled\";\n /** Custom conversion function to serialize the value to a string. */\n convert?: (description: string, value: unknown) => string;\n}\n\nexport function useCopilotReadable(\n options: UseCopilotReadableOptions,\n deps?: WatchSource<unknown>[],\n): Ref<string | undefined> {\n const { copilotkit } = useCopilotKit();\n const ctxIdRef = ref<string | undefined>(undefined);\n\n const extraDeps = deps ?? [];\n\n watch(\n [\n () => options.description,\n () => options.value,\n () => options.convert,\n () => options.available,\n ...extraDeps,\n ],\n (_newValues, _old, onCleanup) => {\n const core = copilotkit.value;\n if (!core) return;\n\n const { description, value, convert, available } = options;\n\n let serializedValue: string;\n try {\n serializedValue = convert\n ? convert(description, value)\n : JSON.stringify(value);\n } catch (err) {\n console.warn(\n `[CopilotKit] useCopilotReadable: failed to serialize ` +\n `value for \"${description}\":`,\n err,\n );\n serializedValue = String(value);\n }\n\n if (available === \"disabled\") return;\n\n ctxIdRef.value = core.addContext({\n description,\n value: serializedValue,\n });\n\n onCleanup(() => {\n if (!ctxIdRef.value) return;\n core.removeContext(ctxIdRef.value);\n });\n },\n { immediate: true },\n );\n\n return ctxIdRef;\n}\n","<script setup lang=\"ts\">\n/**\n * V1 compatibility wrapper for CopilotKitProvider.\n *\n * Accepts the same props as CopilotKitProvider plus legacy v1 props\n * (publicApiKey, publicLicenseKey) and delegates to the v2 provider.\n */\nimport type { CopilotKitProps } from \"./types\";\nimport CopilotKitProvider from \"../../v2/providers/CopilotKitProvider.vue\";\n\nconst props = defineProps<CopilotKitProps>();\n</script>\n\n<template>\n <CopilotKitProvider v-bind=\"props\">\n <slot />\n </CopilotKitProvider>\n</template>\n"],"names":["wrapRenderWithJsonResult","render","props","next","parseJson","useCopilotAction","action","deps","zodParameters","getZodParameters","useRenderToolV2","typedAction","useHumanInTheLoopV2","normalizedHandler","args","normalizedAvailable","useFrontendToolV2","useFrontendTool","tool","name","description","parameters","handler","followUp","available","agentId","renderProps","useCopilotReadable","options","copilotkit","useCopilotKit","ctxIdRef","ref","watch","_newValues","_old","onCleanup","core","value","convert","serializedValue","err","__props","_openBlock","_createBlock","CopilotKitProvider","_renderSlot","_ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/hooks/use-copilot-action.ts","../src/hooks/use-frontend-tool.ts","../src/hooks/use-copilot-readable.ts","../src/components/copilot-provider/CopilotKit.vue"],"sourcesContent":["/**\n * V1 compatibility wrapper for useCopilotAction.\n *\n * Accepts the legacy Parameter[] action format and routes to the appropriate\n * v2 composable (useFrontendTool, useHumanInTheLoop, or useRenderTool).\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport type { Parameter, MappedParameterTypes } from \"@copilotkit/shared\";\nimport { getZodParameters, parseJson } from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport { useHumanInTheLoop as useHumanInTheLoopV2 } from \"../v2/hooks/use-human-in-the-loop\";\nimport { useRenderTool as useRenderToolV2 } from \"../v2/hooks/use-render-tool\";\nimport type { VueFrontendTool, VueHumanInTheLoop } from \"../v2/types\";\n\n// Wraps a v1 render function so a JSON-string `result` is parsed before being\n// passed through. Mirrors the v1 React behavior. If render is a Component\n// (object) rather than a function, returns it unchanged — Components receive\n// props through Vue's prop system and the user is responsible for parsing.\nfunction wrapRenderWithJsonResult<R>(render: R): R {\n if (typeof render !== \"function\") return render;\n return ((props: { result?: unknown }) => {\n const next =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(next);\n }) as R;\n}\n\nexport interface FrontendAction<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\" | \"remote\" | \"frontend\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWaitForResponse?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n renderAndWait?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this action to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport interface CatchAllFrontendAction {\n name: \"*\";\n render: (props: unknown) => unknown;\n}\n\nexport function useCopilotAction<const T extends Parameter[] | [] = []>(\n action: FrontendAction<T> | CatchAllFrontendAction,\n deps?: WatchSource<unknown>[],\n): void {\n const zodParameters =\n \"parameters\" in action\n ? getZodParameters(action.parameters as T)\n : undefined;\n\n // Catch-all render action\n if (action.name === \"*\") {\n useRenderToolV2(\n {\n name: \"*\",\n render: wrapRenderWithJsonResult(\n (action as CatchAllFrontendAction).render,\n ),\n ...(\"agentId\" in action\n ? { agentId: (action as FrontendAction<T>).agentId }\n : {}),\n },\n deps,\n );\n return;\n }\n\n const typedAction = action as FrontendAction<T>;\n\n // Human-in-the-loop: has renderAndWaitForResponse or renderAndWait\n if (\n \"renderAndWaitForResponse\" in typedAction ||\n \"renderAndWait\" in typedAction\n ) {\n const render =\n typedAction.render ??\n typedAction.renderAndWaitForResponse ??\n typedAction.renderAndWait;\n\n if (!render) {\n console.warn(\n `[CopilotKit] useCopilotAction: HITL action '${typedAction.name}' ` +\n `has no render function. Skipping.`,\n );\n return;\n }\n\n useHumanInTheLoopV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(render) as VueHumanInTheLoop<\n MappedParameterTypes<T>\n >[\"render\"],\n agentId: typedAction.agentId,\n },\n deps,\n );\n return;\n }\n\n // Render-only: available is \"frontend\" or \"disabled\" (no handler invoked remotely)\n if (\n typedAction.available === \"frontend\" ||\n typedAction.available === \"disabled\"\n ) {\n if (typedAction.render && zodParameters) {\n useRenderToolV2(\n {\n name: typedAction.name,\n parameters: zodParameters,\n render: wrapRenderWithJsonResult(\n typedAction.render as (props: unknown) => unknown,\n ),\n agentId: typedAction.agentId,\n },\n deps,\n );\n } else {\n console.warn(\n `[CopilotKit] useCopilotAction: action '${typedAction.name}' ` +\n `with available=\"${typedAction.available}\" requires both ` +\n `'render' and 'parameters'. Skipping registration.`,\n );\n }\n return;\n }\n\n // Default: frontend tool with handler\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = typedAction.handler\n ? (args: MappedParameterTypes<T>) =>\n Promise.resolve(typedAction.handler!(args))\n : undefined;\n\n // Convert v1 available (string enum) to v2 available (boolean)\n // At this point, \"frontend\" and \"disabled\" have been handled above,\n // so remaining values are \"enabled\", \"remote\", or undefined.\n // \"remote\" means server-only: register the tool but mark it as not\n // available on the frontend (matches React's ActionInputAvailability.Remote).\n let normalizedAvailable: boolean | undefined;\n if (typedAction.available === \"remote\") {\n normalizedAvailable = false;\n } else if (typedAction.available !== undefined) {\n normalizedAvailable = true;\n }\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name: typedAction.name,\n description: typedAction.description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp: typedAction.followUp,\n render: wrapRenderWithJsonResult(typedAction.render),\n available: normalizedAvailable,\n agentId: typedAction.agentId,\n // Read webmcp at watch time: the action object may expose it as a getter\n // over reactive state, and capturing the initial value here would\n // re-register a stale configuration.\n get webmcp() {\n return typedAction.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useFrontendTool.\n *\n * Accepts the legacy Parameter[] format and converts to Zod via getZodParameters,\n * then delegates to the v2 composable.\n */\nimport type { WatchSource } from \"vue\";\nimport type { WebMCPToolConfig } from \"@copilotkit/core\";\nimport {\n type Parameter,\n type MappedParameterTypes,\n getZodParameters,\n parseJson,\n} from \"@copilotkit/shared\";\nimport { useFrontendTool as useFrontendToolV2 } from \"../v2/hooks/use-frontend-tool\";\nimport type { VueFrontendTool } from \"../v2/types\";\n\nexport interface UseFrontendToolArgs<T extends Parameter[] | [] = []> {\n name: string;\n description?: string;\n parameters?: T;\n handler?: (args: MappedParameterTypes<T>) => unknown | Promise<unknown>;\n followUp?: boolean;\n available?: \"disabled\" | \"enabled\";\n render?: VueFrontendTool<MappedParameterTypes<T>>[\"render\"];\n agentId?: string;\n /**\n * Also expose this tool to browser agents through the WebMCP API\n * (`document.modelContext`). `true` uses default annotations;\n * `{ annotations }` provides WebMCP annotations.\n */\n webmcp?: boolean | WebMCPToolConfig;\n}\n\nexport function useFrontendTool<const T extends Parameter[] = []>(\n tool: UseFrontendToolArgs<T>,\n deps?: WatchSource<unknown>[],\n) {\n const {\n name,\n description,\n parameters,\n handler,\n followUp,\n available,\n render,\n agentId,\n } = tool;\n const zodParameters = getZodParameters(parameters);\n\n // Wrap the v1 handler (single-arg) to match v2's (args, context) => Promise<unknown> signature\n const normalizedHandler = handler\n ? (args: MappedParameterTypes<T>) => Promise.resolve(handler(args))\n : undefined;\n\n // Wrap render to parse JSON-string results before passing them to the\n // user's render function — matches the v1 React behavior. If render is a\n // Component rather than a function, leave it unchanged.\n const normalizedRender =\n typeof render === \"function\"\n ? (props: { result?: unknown }) => {\n const renderProps =\n typeof props.result === \"string\"\n ? { ...props, result: parseJson(props.result, props.result) }\n : props;\n return (render as (p: unknown) => unknown)(renderProps);\n }\n : render;\n\n useFrontendToolV2<MappedParameterTypes<T>>(\n {\n name,\n description,\n parameters: zodParameters,\n handler: normalizedHandler,\n followUp,\n render: normalizedRender,\n available: available === undefined ? undefined : available !== \"disabled\",\n agentId,\n // Read webmcp at watch time: the v1 args may expose it as a getter over\n // reactive state, and capturing the initial value here would re-register\n // a stale configuration.\n get webmcp() {\n return tool.webmcp;\n },\n },\n deps,\n );\n}\n","/**\n * V1 compatibility wrapper for useCopilotReadable.\n *\n * Provides app-state and other information to the Copilot context.\n * Delegates directly to the v2 CopilotKitCoreVue instance.\n */\nimport { watch, ref, type Ref } from \"vue\";\nimport type { WatchSource } from \"vue\";\nimport { useCopilotKit } from \"../v2/providers/useCopilotKit\";\n\nexport interface UseCopilotReadableOptions {\n /** The description of the information to be added to the Copilot context. */\n description: string;\n /** The value to be added to the Copilot context. Object values are automatically stringified. */\n value: unknown;\n /** Whether the context is available to the Copilot. */\n available?: \"enabled\" | \"disabled\";\n /** Custom conversion function to serialize the value to a string. */\n convert?: (description: string, value: unknown) => string;\n}\n\nexport function useCopilotReadable(\n options: UseCopilotReadableOptions,\n deps?: WatchSource<unknown>[],\n): Ref<string | undefined> {\n const { copilotkit } = useCopilotKit();\n const ctxIdRef = ref<string | undefined>(undefined);\n\n const extraDeps = deps ?? [];\n\n watch(\n [\n () => options.description,\n () => options.value,\n () => options.convert,\n () => options.available,\n ...extraDeps,\n ],\n (_newValues, _old, onCleanup) => {\n const core = copilotkit.value;\n if (!core) return;\n\n const { description, value, convert, available } = options;\n\n let serializedValue: string;\n try {\n serializedValue = convert\n ? convert(description, value)\n : JSON.stringify(value);\n } catch (err) {\n console.warn(\n `[CopilotKit] useCopilotReadable: failed to serialize ` +\n `value for \"${description}\":`,\n err,\n );\n serializedValue = String(value);\n }\n\n if (available === \"disabled\") return;\n\n ctxIdRef.value = core.addContext({\n description,\n value: serializedValue,\n });\n\n onCleanup(() => {\n if (!ctxIdRef.value) return;\n core.removeContext(ctxIdRef.value);\n });\n },\n { immediate: true },\n );\n\n return ctxIdRef;\n}\n","<script setup lang=\"ts\">\n/**\n * V1 compatibility wrapper for CopilotKitProvider.\n *\n * Accepts the same props as CopilotKitProvider plus legacy v1 props\n * (publicApiKey, publicLicenseKey) and delegates to the v2 provider.\n */\nimport type { CopilotKitProps } from \"./types\";\nimport CopilotKitProvider from \"../../v2/providers/CopilotKitProvider.vue\";\n\nconst props = defineProps<CopilotKitProps>();\n</script>\n\n<template>\n <CopilotKitProvider v-bind=\"props\">\n <slot />\n </CopilotKitProvider>\n</template>\n"],"names":["wrapRenderWithJsonResult","render","props","next","parseJson","useCopilotAction","action","deps","zodParameters","getZodParameters","useRenderToolV2","typedAction","useHumanInTheLoopV2","normalizedHandler","args","normalizedAvailable","useFrontendToolV2","useFrontendTool","tool","name","description","parameters","handler","followUp","available","agentId","renderProps","useCopilotReadable","options","copilotkit","useCopilotKit","ctxIdRef","ref","watch","_newValues","_old","onCleanup","core","value","convert","serializedValue","err","__props","_openBlock","_createBlock","CopilotKitProvider","_renderSlot","_ctx"],"mappings":"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"}