@copilotkit/react-core 1.5.1-next.0 → 1.5.1-next.2

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 (123) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{chunk-ODAH4HNG.mjs → chunk-22XKTBPF.mjs} +15 -3
  3. package/dist/chunk-22XKTBPF.mjs.map +1 -0
  4. package/dist/{chunk-YL6V3QTN.mjs → chunk-2KT73RVG.mjs} +42 -13
  5. package/dist/chunk-2KT73RVG.mjs.map +1 -0
  6. package/dist/{chunk-VQDGBYWQ.mjs → chunk-3GQPEN4M.mjs} +17 -7
  7. package/dist/chunk-3GQPEN4M.mjs.map +1 -0
  8. package/dist/{chunk-7LRDVJH5.mjs → chunk-6BQVZFNO.mjs} +2 -2
  9. package/dist/{chunk-MKEQ2MJG.mjs → chunk-EWKJMQOF.mjs} +5 -5
  10. package/dist/{chunk-6KHA5W5R.mjs → chunk-FQ53HQYZ.mjs} +2 -2
  11. package/dist/{chunk-VPTC36RZ.mjs → chunk-HIUT2NLX.mjs} +2 -2
  12. package/dist/chunk-LHKIIAUQ.mjs +59 -0
  13. package/dist/chunk-LHKIIAUQ.mjs.map +1 -0
  14. package/dist/{chunk-SFPANIOY.mjs → chunk-LNI2Z45S.mjs} +2 -2
  15. package/dist/{chunk-SFPANIOY.mjs.map → chunk-LNI2Z45S.mjs.map} +1 -1
  16. package/dist/chunk-NR2BTA6Z.mjs +1 -0
  17. package/dist/{chunk-M3SYKJ3W.mjs → chunk-VGOFRULA.mjs} +17 -9
  18. package/dist/chunk-VGOFRULA.mjs.map +1 -0
  19. package/dist/{chunk-QCUP6HLK.mjs → chunk-VNTDIJSG.mjs} +2 -2
  20. package/dist/{chunk-STZUYPHJ.mjs → chunk-WXREY7UP.mjs} +4 -4
  21. package/dist/chunk-WXREY7UP.mjs.map +1 -0
  22. package/dist/{chunk-OAF4ASJH.mjs → chunk-X36DNILG.mjs} +9 -8
  23. package/dist/chunk-X36DNILG.mjs.map +1 -0
  24. package/dist/{chunk-NYBGR2NK.mjs → chunk-XOQMISG3.mjs} +2 -2
  25. package/dist/components/copilot-provider/copilot-messages.d.ts +8 -0
  26. package/dist/components/copilot-provider/copilotkit-props.d.ts +16 -0
  27. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  28. package/dist/components/copilot-provider/copilotkit.d.ts +8 -0
  29. package/dist/components/copilot-provider/copilotkit.js +35 -6
  30. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  31. package/dist/components/copilot-provider/copilotkit.mjs +6 -6
  32. package/dist/components/copilot-provider/index.d.ts +8 -0
  33. package/dist/components/copilot-provider/index.js +35 -6
  34. package/dist/components/copilot-provider/index.js.map +1 -1
  35. package/dist/components/copilot-provider/index.mjs +6 -6
  36. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  37. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  38. package/dist/components/error-boundary/error-utils.js.map +1 -1
  39. package/dist/components/error-boundary/error-utils.mjs +1 -1
  40. package/dist/components/index.d.ts +8 -0
  41. package/dist/components/index.js +35 -6
  42. package/dist/components/index.js.map +1 -1
  43. package/dist/components/index.mjs +6 -6
  44. package/dist/components/toast/toast-provider.js +1 -1
  45. package/dist/components/toast/toast-provider.js.map +1 -1
  46. package/dist/components/toast/toast-provider.mjs +1 -1
  47. package/dist/context/copilot-context.d.ts +23 -2
  48. package/dist/context/copilot-context.js +3 -3
  49. package/dist/context/copilot-context.js.map +1 -1
  50. package/dist/context/copilot-context.mjs +1 -1
  51. package/dist/context/index.js +3 -3
  52. package/dist/context/index.js.map +1 -1
  53. package/dist/context/index.mjs +1 -1
  54. package/dist/hooks/index.d.ts +1 -0
  55. package/dist/hooks/index.js +85 -10
  56. package/dist/hooks/index.js.map +1 -1
  57. package/dist/hooks/index.mjs +19 -15
  58. package/dist/hooks/use-chat.d.ts +4 -0
  59. package/dist/hooks/use-chat.js +14 -4
  60. package/dist/hooks/use-chat.js.map +1 -1
  61. package/dist/hooks/use-chat.mjs +3 -3
  62. package/dist/hooks/use-coagent-state-render.js +31 -8
  63. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  64. package/dist/hooks/use-coagent-state-render.mjs +4 -2
  65. package/dist/hooks/use-coagent.js +29 -9
  66. package/dist/hooks/use-coagent.js.map +1 -1
  67. package/dist/hooks/use-coagent.mjs +9 -9
  68. package/dist/hooks/use-copilot-action.js +3 -3
  69. package/dist/hooks/use-copilot-action.js.map +1 -1
  70. package/dist/hooks/use-copilot-action.mjs +3 -3
  71. package/dist/hooks/use-copilot-authenticated-action.d.ts +8 -0
  72. package/dist/hooks/use-copilot-authenticated-action.js +418 -0
  73. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -0
  74. package/dist/hooks/use-copilot-authenticated-action.mjs +12 -0
  75. package/dist/hooks/use-copilot-authenticated-action.mjs.map +1 -0
  76. package/dist/hooks/use-copilot-chat.js +19 -8
  77. package/dist/hooks/use-copilot-chat.js.map +1 -1
  78. package/dist/hooks/use-copilot-chat.mjs +8 -8
  79. package/dist/hooks/use-copilot-readable.js +3 -3
  80. package/dist/hooks/use-copilot-readable.js.map +1 -1
  81. package/dist/hooks/use-copilot-readable.mjs +2 -2
  82. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  83. package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
  84. package/dist/hooks/use-make-copilot-document-readable.js +3 -3
  85. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  86. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  87. package/dist/index.d.ts +1 -0
  88. package/dist/index.js +114 -12
  89. package/dist/index.js.map +1 -1
  90. package/dist/index.mjs +21 -17
  91. package/dist/lib/copilot-task.js.map +1 -1
  92. package/dist/lib/copilot-task.mjs +7 -7
  93. package/dist/lib/index.js.map +1 -1
  94. package/dist/lib/index.mjs +7 -7
  95. package/dist/utils/extract.js.map +1 -1
  96. package/dist/utils/extract.mjs +6 -6
  97. package/dist/utils/index.js.map +1 -1
  98. package/dist/utils/index.mjs +6 -6
  99. package/package.json +3 -3
  100. package/src/components/copilot-provider/copilotkit-props.tsx +10 -0
  101. package/src/components/copilot-provider/copilotkit.tsx +44 -7
  102. package/src/components/toast/toast-provider.tsx +1 -1
  103. package/src/context/copilot-context.tsx +28 -2
  104. package/src/hooks/index.ts +1 -0
  105. package/src/hooks/use-chat.ts +15 -5
  106. package/src/hooks/use-coagent-state-render.ts +11 -0
  107. package/src/hooks/use-coagent.ts +11 -1
  108. package/src/hooks/use-copilot-authenticated-action.ts +60 -0
  109. package/src/hooks/use-copilot-chat.ts +1 -0
  110. package/dist/chunk-L34MHAXR.mjs +0 -1
  111. package/dist/chunk-M3SYKJ3W.mjs.map +0 -1
  112. package/dist/chunk-OAF4ASJH.mjs.map +0 -1
  113. package/dist/chunk-ODAH4HNG.mjs.map +0 -1
  114. package/dist/chunk-STZUYPHJ.mjs.map +0 -1
  115. package/dist/chunk-VQDGBYWQ.mjs.map +0 -1
  116. package/dist/chunk-YL6V3QTN.mjs.map +0 -1
  117. /package/dist/{chunk-7LRDVJH5.mjs.map → chunk-6BQVZFNO.mjs.map} +0 -0
  118. /package/dist/{chunk-MKEQ2MJG.mjs.map → chunk-EWKJMQOF.mjs.map} +0 -0
  119. /package/dist/{chunk-6KHA5W5R.mjs.map → chunk-FQ53HQYZ.mjs.map} +0 -0
  120. /package/dist/{chunk-VPTC36RZ.mjs.map → chunk-HIUT2NLX.mjs.map} +0 -0
  121. /package/dist/{chunk-L34MHAXR.mjs.map → chunk-NR2BTA6Z.mjs.map} +0 -0
  122. /package/dist/{chunk-QCUP6HLK.mjs.map → chunk-VNTDIJSG.mjs.map} +0 -0
  123. /package/dist/{chunk-NYBGR2NK.mjs.map → chunk-XOQMISG3.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/index.ts","../../src/context/copilot-context.tsx","../../src/context/copilot-messages-context.tsx"],"sourcesContent":["export { CopilotContext, useCopilotContext } from \"./copilot-context\";\nexport { CopilotMessagesContext, useCopilotMessagesContext } from \"./copilot-messages-context\";\nexport type {\n CopilotContextParams,\n CoagentInChatRenderFunction,\n CopilotApiConfig,\n} from \"./copilot-context\";\nexport type { CopilotMessagesContextParams } from \"./copilot-messages-context\";\n","import { CopilotCloudConfig, FunctionCallHandler } from \"@copilotkit/shared\";\nimport {\n ActionRenderProps,\n CatchAllActionRenderProps,\n FrontendAction,\n} from \"../types/frontend-action\";\nimport React from \"react\";\nimport { TreeNodeId } from \"../hooks/use-tree\";\nimport { DocumentPointer } from \"../types\";\nimport { CopilotChatSuggestionConfiguration } from \"../types/chat-suggestion-configuration\";\nimport { CoAgentStateRender, CoAgentStateRenderProps } from \"../types/coagent-action\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport { CopilotRuntimeClient, ForwardedParametersInput } from \"@copilotkit/runtime-client-gql\";\n\n/**\n * Interface for the configuration of the Copilot API.\n */\nexport interface CopilotApiConfig {\n /**\n * The public API key for Copilot Cloud.\n */\n publicApiKey?: string;\n\n /**\n * The configuration for Copilot Cloud.\n */\n cloud?: CopilotCloudConfig;\n\n /**\n * The endpoint for the chat API.\n */\n chatApiEndpoint: string;\n\n /**\n * The endpoint for the Copilot transcribe audio service.\n */\n transcribeAudioUrl?: string;\n\n /**\n * The endpoint for the Copilot text to speech service.\n */\n textToSpeechUrl?: string;\n\n /**\n * additional headers to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'Authorization': 'Bearer your_token_here'\n * }\n * ```\n */\n headers: Record<string, string>;\n\n /**\n * Custom properties to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'user_id': 'user_id'\n * }\n * ```\n */\n properties?: Record<string, any>;\n\n /**\n * Indicates whether the user agent should send or receive cookies from the other domain\n * in the case of cross-origin requests.\n */\n credentials?: RequestCredentials;\n}\n\nexport type InChatRenderFunction = (\n props: ActionRenderProps<any> | CatchAllActionRenderProps<any>,\n) => string | JSX.Element;\nexport type CoagentInChatRenderFunction = (\n props: CoAgentStateRenderProps<any>,\n) => string | JSX.Element | undefined | null;\n\nexport interface ChatComponentsCache {\n actions: Record<string, InChatRenderFunction | string>;\n coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;\n}\n\nexport interface AgentSession {\n agentName: string;\n threadId?: string;\n nodeName?: string;\n}\n\nexport interface CopilotContextParams {\n // function-calling\n actions: Record<string, FrontendAction<any>>;\n setAction: (id: string, action: FrontendAction<any>) => void;\n removeAction: (id: string) => void;\n\n // coagent actions\n coAgentStateRenders: Record<string, CoAgentStateRender<any>>;\n setCoAgentStateRender: (id: string, stateRender: CoAgentStateRender<any>) => void;\n removeCoAgentStateRender: (id: string) => void;\n\n chatComponentsCache: React.RefObject<ChatComponentsCache>;\n\n getFunctionCallHandler: (\n customEntryPoints?: Record<string, FrontendAction<any>>,\n ) => FunctionCallHandler;\n\n // text context\n addContext: (context: string, parentId?: string, categories?: string[]) => TreeNodeId;\n removeContext: (id: TreeNodeId) => void;\n getContextString: (documents: DocumentPointer[], categories: string[]) => string;\n\n // document context\n addDocumentContext: (documentPointer: DocumentPointer, categories?: string[]) => TreeNodeId;\n removeDocumentContext: (documentId: string) => void;\n getDocumentsContext: (categories: string[]) => DocumentPointer[];\n\n isLoading: boolean;\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration };\n addChatSuggestionConfiguration: (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => void;\n removeChatSuggestionConfiguration: (id: string) => void;\n\n chatInstructions: string;\n setChatInstructions: React.Dispatch<React.SetStateAction<string>>;\n\n // api endpoints\n copilotApiConfig: CopilotApiConfig;\n\n showDevConsole: boolean | \"auto\";\n\n // agents\n coagentStates: Record<string, CoagentState>;\n setCoagentStates: React.Dispatch<React.SetStateAction<Record<string, CoagentState>>>;\n coagentStatesRef: React.RefObject<Record<string, CoagentState>>;\n setCoagentStatesWithRef: (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => void;\n\n agentSession: AgentSession | null;\n setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;\n\n agentLock: string | null;\n\n threadId: string | null;\n setThreadId: React.Dispatch<React.SetStateAction<string | null>>;\n\n runId: string | null;\n setRunId: React.Dispatch<React.SetStateAction<string | null>>;\n\n // The chat abort controller can be used to stop generation globally,\n // i.e. when using `stop()` from `useChat`\n chatAbortControllerRef: React.MutableRefObject<AbortController | null>;\n\n // runtime\n runtimeClient: CopilotRuntimeClient;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: Pick<ForwardedParametersInput, \"temperature\">;\n}\n\nconst emptyCopilotContext: CopilotContextParams = {\n actions: {},\n setAction: () => {},\n removeAction: () => {},\n\n coAgentStateRenders: {},\n setCoAgentStateRender: () => {},\n removeCoAgentStateRender: () => {},\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getContextString: (documents: DocumentPointer[], categories: string[]) =>\n returnAndThrowInDebug(\"\"),\n addContext: () => \"\",\n removeContext: () => {},\n\n getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),\n\n isLoading: false,\n setIsLoading: () => returnAndThrowInDebug(false),\n\n chatInstructions: \"\",\n setChatInstructions: () => returnAndThrowInDebug(\"\"),\n\n getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),\n addDocumentContext: () => returnAndThrowInDebug(\"\"),\n removeDocumentContext: () => {},\n runtimeClient: {} as any,\n\n copilotApiConfig: new (class implements CopilotApiConfig {\n get chatApiEndpoint(): string {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n\n get headers(): Record<string, string> {\n return {};\n }\n get body(): Record<string, any> {\n return {};\n }\n })(),\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: () => {},\n removeChatSuggestionConfiguration: () => {},\n showDevConsole: \"auto\",\n coagentStates: {},\n setCoagentStates: () => {},\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: () => {},\n agentSession: null,\n setAgentSession: () => {},\n forwardedParameters: {},\n agentLock: null,\n threadId: null,\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n};\n\nexport const CopilotContext = React.createContext<CopilotContextParams>(emptyCopilotContext);\n\nexport function useCopilotContext(): CopilotContextParams {\n const context = React.useContext(CopilotContext);\n if (context === emptyCopilotContext) {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n return context;\n}\n\nfunction returnAndThrowInDebug<T>(value: T): T {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n return value;\n}\n","/**\n * An internal context to separate the messages state (which is constantly changing) from the rest of CopilotKit context\n */\n\nimport { Message } from \"@copilotkit/runtime-client-gql\";\nimport React from \"react\";\n\nexport interface CopilotMessagesContextParams {\n messages: Message[];\n setMessages: React.Dispatch<React.SetStateAction<Message[]>>;\n}\n\nconst emptyCopilotContext: CopilotMessagesContextParams = {\n messages: [],\n setMessages: () => [],\n};\n\nexport const CopilotMessagesContext =\n React.createContext<CopilotMessagesContextParams>(emptyCopilotContext);\n\nexport function useCopilotMessagesContext(): CopilotMessagesContextParams {\n const context = React.useContext(CopilotMessagesContext);\n if (context === emptyCopilotContext) {\n throw new Error(\n \"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`\",\n );\n }\n return context;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,mBAAkB;AAqKlB,IAAM,sBAA4C;AAAA,EAChD,SAAS,CAAC;AAAA,EACV,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EAErB,qBAAqB,CAAC;AAAA,EACtB,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,0BAA0B,MAAM;AAAA,EAAC;AAAA,EAEjC,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAAA,EACzE,kBAAkB,CAAC,WAA8B,eAC/C,sBAAsB,EAAE;AAAA,EAC1B,YAAY,MAAM;AAAA,EAClB,eAAe,MAAM;AAAA,EAAC;AAAA,EAEtB,wBAAwB,MAAM,sBAAsB,MAAY;AAAA,EAAC,EAAC;AAAA,EAElE,WAAW;AAAA,EACX,cAAc,MAAM,sBAAsB,KAAK;AAAA,EAE/C,kBAAkB;AAAA,EAClB,qBAAqB,MAAM,sBAAsB,EAAE;AAAA,EAEnD,qBAAqB,CAAC,eAAyB,sBAAsB,CAAC,CAAC;AAAA,EACvE,oBAAoB,MAAM,sBAAsB,EAAE;AAAA,EAClD,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,eAAe,CAAC;AAAA,EAEhB,kBAAkB,IAAK,MAAkC;AAAA,IACvD,IAAI,kBAA0B;AAC5B,YAAM,IAAI,MAAM,uEAAuE;AAAA,IACzF;AAAA,IAEA,IAAI,UAAkC;AACpC,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,OAA4B;AAC9B,aAAO,CAAC;AAAA,IACV;AAAA,EACF,EAAG;AAAA,EAEH,6BAA6B,CAAC;AAAA,EAC9B,gCAAgC,MAAM;AAAA,EAAC;AAAA,EACvC,mCAAmC,MAAM;AAAA,EAAC;AAAA,EAC1C,gBAAgB;AAAA,EAChB,eAAe,CAAC;AAAA,EAChB,kBAAkB,MAAM;AAAA,EAAC;AAAA,EACzB,kBAAkB,EAAE,SAAS,CAAC,EAAE;AAAA,EAChC,yBAAyB,MAAM;AAAA,EAAC;AAAA,EAChC,cAAc;AAAA,EACd,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,qBAAqB,CAAC;AAAA,EACtB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,OAAO;AAAA,EACP,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,wBAAwB,EAAE,SAAS,KAAK;AAC1C;AAEO,IAAM,iBAAiB,aAAAA,QAAM,cAAoC,mBAAmB;AAEpF,SAAS,oBAA0C;AACxD,QAAM,UAAU,aAAAA,QAAM,WAAW,cAAc;AAC/C,MAAI,YAAY,qBAAqB;AACnC,UAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AACA,SAAO;AACT;AAEA,SAAS,sBAAyB,OAAa;AAC7C,QAAM,IAAI,MAAM,uEAAuE;AACvF,SAAO;AACT;;;AC/OA,IAAAC,gBAAkB;AAOlB,IAAMC,uBAAoD;AAAA,EACxD,UAAU,CAAC;AAAA,EACX,aAAa,MAAM,CAAC;AACtB;AAEO,IAAM,yBACX,cAAAC,QAAM,cAA4CD,oBAAmB;AAEhE,SAAS,4BAA0D;AACxE,QAAM,UAAU,cAAAC,QAAM,WAAW,sBAAsB;AACvD,MAAI,YAAYD,sBAAqB;AACnC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;","names":["React","import_react","emptyCopilotContext","React"]}
1
+ {"version":3,"sources":["../../src/context/index.ts","../../src/context/copilot-context.tsx","../../src/context/copilot-messages-context.tsx"],"sourcesContent":["export { CopilotContext, useCopilotContext } from \"./copilot-context\";\nexport { CopilotMessagesContext, useCopilotMessagesContext } from \"./copilot-messages-context\";\nexport type {\n CopilotContextParams,\n CoagentInChatRenderFunction,\n CopilotApiConfig,\n} from \"./copilot-context\";\nexport type { CopilotMessagesContextParams } from \"./copilot-messages-context\";\n","import { CopilotCloudConfig, FunctionCallHandler } from \"@copilotkit/shared\";\nimport {\n ActionRenderProps,\n CatchAllActionRenderProps,\n FrontendAction,\n} from \"../types/frontend-action\";\nimport React from \"react\";\nimport { TreeNodeId } from \"../hooks/use-tree\";\nimport { DocumentPointer } from \"../types\";\nimport { CopilotChatSuggestionConfiguration } from \"../types/chat-suggestion-configuration\";\nimport { CoAgentStateRender, CoAgentStateRenderProps } from \"../types/coagent-action\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport { CopilotRuntimeClient, ForwardedParametersInput } from \"@copilotkit/runtime-client-gql\";\nimport { Agent } from \"@copilotkit/runtime-client-gql\";\n\n/**\n * Interface for the configuration of the Copilot API.\n */\nexport interface CopilotApiConfig {\n /**\n * The public API key for Copilot Cloud.\n */\n publicApiKey?: string;\n\n /**\n * The configuration for Copilot Cloud.\n */\n cloud?: CopilotCloudConfig;\n\n /**\n * The endpoint for the chat API.\n */\n chatApiEndpoint: string;\n\n /**\n * The endpoint for the Copilot transcribe audio service.\n */\n transcribeAudioUrl?: string;\n\n /**\n * The endpoint for the Copilot text to speech service.\n */\n textToSpeechUrl?: string;\n\n /**\n * additional headers to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'Authorization': 'Bearer your_token_here'\n * }\n * ```\n */\n headers: Record<string, string>;\n\n /**\n * Custom properties to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'user_id': 'user_id'\n * }\n * ```\n */\n properties?: Record<string, any>;\n\n /**\n * Indicates whether the user agent should send or receive cookies from the other domain\n * in the case of cross-origin requests.\n */\n credentials?: RequestCredentials;\n}\n\nexport type InChatRenderFunction = (\n props: ActionRenderProps<any> | CatchAllActionRenderProps<any>,\n) => string | JSX.Element;\nexport type CoagentInChatRenderFunction = (\n props: CoAgentStateRenderProps<any>,\n) => string | JSX.Element | undefined | null;\n\nexport interface ChatComponentsCache {\n actions: Record<string, InChatRenderFunction | string>;\n coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;\n}\n\nexport interface AgentSession {\n agentName: string;\n threadId?: string;\n nodeName?: string;\n}\n\nexport interface AuthState {\n status: \"authenticated\" | \"unauthenticated\";\n authHeaders: Record<string, string>;\n userId?: string;\n metadata?: Record<string, any>;\n}\n\nexport type ActionName = string;\n\nexport interface CopilotContextParams {\n // function-calling\n actions: Record<string, FrontendAction<any>>;\n setAction: (id: string, action: FrontendAction<any>) => void;\n removeAction: (id: string) => void;\n\n // coagent actions\n coAgentStateRenders: Record<string, CoAgentStateRender<any>>;\n setCoAgentStateRender: (id: string, stateRender: CoAgentStateRender<any>) => void;\n removeCoAgentStateRender: (id: string) => void;\n\n chatComponentsCache: React.RefObject<ChatComponentsCache>;\n\n getFunctionCallHandler: (\n customEntryPoints?: Record<string, FrontendAction<any>>,\n ) => FunctionCallHandler;\n\n // text context\n addContext: (context: string, parentId?: string, categories?: string[]) => TreeNodeId;\n removeContext: (id: TreeNodeId) => void;\n getContextString: (documents: DocumentPointer[], categories: string[]) => string;\n\n // document context\n addDocumentContext: (documentPointer: DocumentPointer, categories?: string[]) => TreeNodeId;\n removeDocumentContext: (documentId: string) => void;\n getDocumentsContext: (categories: string[]) => DocumentPointer[];\n\n isLoading: boolean;\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration };\n addChatSuggestionConfiguration: (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => void;\n removeChatSuggestionConfiguration: (id: string) => void;\n\n chatInstructions: string;\n setChatInstructions: React.Dispatch<React.SetStateAction<string>>;\n\n // api endpoints\n copilotApiConfig: CopilotApiConfig;\n\n showDevConsole: boolean | \"auto\";\n\n // agents\n coagentStates: Record<string, CoagentState>;\n setCoagentStates: React.Dispatch<React.SetStateAction<Record<string, CoagentState>>>;\n coagentStatesRef: React.RefObject<Record<string, CoagentState>>;\n setCoagentStatesWithRef: (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => void;\n\n agentSession: AgentSession | null;\n setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;\n\n agentLock: string | null;\n\n threadId: string | null;\n setThreadId: React.Dispatch<React.SetStateAction<string | null>>;\n\n runId: string | null;\n setRunId: React.Dispatch<React.SetStateAction<string | null>>;\n\n // The chat abort controller can be used to stop generation globally,\n // i.e. when using `stop()` from `useChat`\n chatAbortControllerRef: React.MutableRefObject<AbortController | null>;\n\n // runtime\n runtimeClient: CopilotRuntimeClient;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: Pick<ForwardedParametersInput, \"temperature\">;\n availableAgents: Agent[];\n\n /**\n * The auth states for the CopilotKit.\n */\n authStates?: Record<ActionName, AuthState>;\n setAuthStates?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n}\n\nconst emptyCopilotContext: CopilotContextParams = {\n actions: {},\n setAction: () => {},\n removeAction: () => {},\n\n coAgentStateRenders: {},\n setCoAgentStateRender: () => {},\n removeCoAgentStateRender: () => {},\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getContextString: (documents: DocumentPointer[], categories: string[]) =>\n returnAndThrowInDebug(\"\"),\n addContext: () => \"\",\n removeContext: () => {},\n\n getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),\n\n isLoading: false,\n setIsLoading: () => returnAndThrowInDebug(false),\n\n chatInstructions: \"\",\n setChatInstructions: () => returnAndThrowInDebug(\"\"),\n\n getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),\n addDocumentContext: () => returnAndThrowInDebug(\"\"),\n removeDocumentContext: () => {},\n runtimeClient: {} as any,\n\n copilotApiConfig: new (class implements CopilotApiConfig {\n get chatApiEndpoint(): string {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n\n get headers(): Record<string, string> {\n return {};\n }\n get body(): Record<string, any> {\n return {};\n }\n })(),\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: () => {},\n removeChatSuggestionConfiguration: () => {},\n showDevConsole: \"auto\",\n coagentStates: {},\n setCoagentStates: () => {},\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: () => {},\n agentSession: null,\n setAgentSession: () => {},\n forwardedParameters: {},\n agentLock: null,\n threadId: null,\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n};\n\nexport const CopilotContext = React.createContext<CopilotContextParams>(emptyCopilotContext);\n\nexport function useCopilotContext(): CopilotContextParams {\n const context = React.useContext(CopilotContext);\n if (context === emptyCopilotContext) {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n return context;\n}\n\nfunction returnAndThrowInDebug<T>(_value: T): T {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n}\n","/**\n * An internal context to separate the messages state (which is constantly changing) from the rest of CopilotKit context\n */\n\nimport { Message } from \"@copilotkit/runtime-client-gql\";\nimport React from \"react\";\n\nexport interface CopilotMessagesContextParams {\n messages: Message[];\n setMessages: React.Dispatch<React.SetStateAction<Message[]>>;\n}\n\nconst emptyCopilotContext: CopilotMessagesContextParams = {\n messages: [],\n setMessages: () => [],\n};\n\nexport const CopilotMessagesContext =\n React.createContext<CopilotMessagesContextParams>(emptyCopilotContext);\n\nexport function useCopilotMessagesContext(): CopilotMessagesContextParams {\n const context = React.useContext(CopilotMessagesContext);\n if (context === emptyCopilotContext) {\n throw new Error(\n \"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`\",\n );\n }\n return context;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,mBAAkB;AA+LlB,IAAM,sBAA4C;AAAA,EAChD,SAAS,CAAC;AAAA,EACV,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EAErB,qBAAqB,CAAC;AAAA,EACtB,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,0BAA0B,MAAM;AAAA,EAAC;AAAA,EAEjC,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAAA,EACzE,kBAAkB,CAAC,WAA8B,eAC/C,sBAAsB,EAAE;AAAA,EAC1B,YAAY,MAAM;AAAA,EAClB,eAAe,MAAM;AAAA,EAAC;AAAA,EAEtB,wBAAwB,MAAM,sBAAsB,MAAY;AAAA,EAAC,EAAC;AAAA,EAElE,WAAW;AAAA,EACX,cAAc,MAAM,sBAAsB,KAAK;AAAA,EAE/C,kBAAkB;AAAA,EAClB,qBAAqB,MAAM,sBAAsB,EAAE;AAAA,EAEnD,qBAAqB,CAAC,eAAyB,sBAAsB,CAAC,CAAC;AAAA,EACvE,oBAAoB,MAAM,sBAAsB,EAAE;AAAA,EAClD,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,eAAe,CAAC;AAAA,EAEhB,kBAAkB,IAAK,MAAkC;AAAA,IACvD,IAAI,kBAA0B;AAC5B,YAAM,IAAI,MAAM,uEAAuE;AAAA,IACzF;AAAA,IAEA,IAAI,UAAkC;AACpC,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,OAA4B;AAC9B,aAAO,CAAC;AAAA,IACV;AAAA,EACF,EAAG;AAAA,EAEH,6BAA6B,CAAC;AAAA,EAC9B,gCAAgC,MAAM;AAAA,EAAC;AAAA,EACvC,mCAAmC,MAAM;AAAA,EAAC;AAAA,EAC1C,gBAAgB;AAAA,EAChB,eAAe,CAAC;AAAA,EAChB,kBAAkB,MAAM;AAAA,EAAC;AAAA,EACzB,kBAAkB,EAAE,SAAS,CAAC,EAAE;AAAA,EAChC,yBAAyB,MAAM;AAAA,EAAC;AAAA,EAChC,cAAc;AAAA,EACd,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,qBAAqB,CAAC;AAAA,EACtB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,OAAO;AAAA,EACP,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,wBAAwB,EAAE,SAAS,KAAK;AAAA,EACxC,iBAAiB,CAAC;AACpB;AAEO,IAAM,iBAAiB,aAAAA,QAAM,cAAoC,mBAAmB;AAEpF,SAAS,oBAA0C;AACxD,QAAM,UAAU,aAAAA,QAAM,WAAW,cAAc;AAC/C,MAAI,YAAY,qBAAqB;AACnC,UAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AACA,SAAO;AACT;AAEA,SAAS,sBAAyB,QAAc;AAC9C,QAAM,IAAI,MAAM,uEAAuE;AACzF;;;ACzQA,IAAAC,gBAAkB;AAOlB,IAAMC,uBAAoD;AAAA,EACxD,UAAU,CAAC;AAAA,EACX,aAAa,MAAM,CAAC;AACtB;AAEO,IAAM,yBACX,cAAAC,QAAM,cAA4CD,oBAAmB;AAEhE,SAAS,4BAA0D;AACxE,QAAM,UAAU,cAAAC,QAAM,WAAW,sBAAsB;AACvD,MAAI,YAAYD,sBAAqB;AACnC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;","names":["React","import_react","emptyCopilotContext","React"]}
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  CopilotContext,
8
8
  useCopilotContext
9
- } from "../chunk-STZUYPHJ.mjs";
9
+ } from "../chunk-WXREY7UP.mjs";
10
10
  import "../chunk-SKC7AJIV.mjs";
11
11
  export {
12
12
  CopilotContext,
@@ -6,6 +6,7 @@ export { UseChatHelpers } from './use-chat.js';
6
6
  export { useCopilotReadable } from './use-copilot-readable.js';
7
7
  export { HintFunction, runAgent, startAgent, stopAgent, useCoAgent } from './use-coagent.js';
8
8
  export { useCopilotRuntimeClient } from './use-copilot-runtime-client.js';
9
+ export { useCopilotAuthenticatedAction } from './use-copilot-authenticated-action.js';
9
10
  import '@copilotkit/runtime-client-gql';
10
11
  import '../types/system-message.js';
11
12
  import '@copilotkit/shared';
@@ -85,6 +85,7 @@ __export(hooks_exports, {
85
85
  useCoAgent: () => useCoAgent,
86
86
  useCoAgentStateRender: () => useCoAgentStateRender,
87
87
  useCopilotAction: () => useCopilotAction,
88
+ useCopilotAuthenticatedAction: () => useCopilotAuthenticatedAction,
88
89
  useCopilotChat: () => useCopilotChat,
89
90
  useCopilotReadable: () => useCopilotReadable,
90
91
  useCopilotRuntimeClient: () => useCopilotRuntimeClient,
@@ -158,7 +159,8 @@ var emptyCopilotContext = {
158
159
  runId: null,
159
160
  setRunId: () => {
160
161
  },
161
- chatAbortControllerRef: { current: null }
162
+ chatAbortControllerRef: { current: null },
163
+ availableAgents: []
162
164
  };
163
165
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
164
166
  function useCopilotContext() {
@@ -168,9 +170,8 @@ function useCopilotContext() {
168
170
  }
169
171
  return context;
170
172
  }
171
- function returnAndThrowInDebug(value) {
173
+ function returnAndThrowInDebug(_value) {
172
174
  throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
173
- return value;
174
175
  }
175
176
 
176
177
  // src/hooks/use-copilot-chat.ts
@@ -206,6 +207,9 @@ function processActionsForRuntimeRequest(actions) {
206
207
  return filteredActions;
207
208
  }
208
209
 
210
+ // src/hooks/use-copilot-runtime-client.ts
211
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
212
+
209
213
  // src/components/toast/toast-provider.tsx
210
214
  var import_react3 = require("react");
211
215
 
@@ -334,7 +338,6 @@ function useToast() {
334
338
  }
335
339
 
336
340
  // src/hooks/use-copilot-runtime-client.ts
337
- var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
338
341
  var import_react4 = require("react");
339
342
  var useCopilotRuntimeClient = (options) => {
340
343
  const { addGraphQLErrorsToast } = useToast();
@@ -374,9 +377,9 @@ function useChat(options) {
374
377
  setThreadId,
375
378
  runId,
376
379
  setRunId,
377
- chatAbortControllerRef
380
+ chatAbortControllerRef,
381
+ agentLock
378
382
  } = options;
379
- const { addGraphQLErrorsToast } = useToast();
380
383
  const runChatCompletionRef = (0, import_react5.useRef)();
381
384
  const agentSessionRef = (0, import_react5.useRef)(agentSession);
382
385
  agentSessionRef.current = agentSession;
@@ -528,7 +531,15 @@ function useChat(options) {
528
531
  nodeName: lastAgentStateMessage.nodeName
529
532
  });
530
533
  } else {
531
- setAgentSession(null);
534
+ if (agentLock) {
535
+ setAgentSession({
536
+ threadId: (0, import_shared2.randomId)(),
537
+ agentName: agentLock,
538
+ nodeName: void 0
539
+ });
540
+ } else {
541
+ setAgentSession(null);
542
+ }
532
543
  }
533
544
  }
534
545
  }
@@ -817,7 +828,8 @@ function useCopilotChat(_a = {}) {
817
828
  setThreadId,
818
829
  runId,
819
830
  setRunId,
820
- chatAbortControllerRef
831
+ chatAbortControllerRef,
832
+ agentLock
821
833
  }));
822
834
  const latestAppend = useUpdatedRef(append);
823
835
  const latestAppendFunc = useAsyncCallback(
@@ -1020,9 +1032,18 @@ function useCoAgentStateRender(action, dependencies) {
1020
1032
  setCoAgentStateRender,
1021
1033
  removeCoAgentStateRender,
1022
1034
  coAgentStateRenders,
1023
- chatComponentsCache
1035
+ chatComponentsCache,
1036
+ availableAgents
1024
1037
  } = (0, import_react10.useContext)(CopilotContext);
1025
1038
  const idRef = (0, import_react10.useRef)((0, import_shared5.randomId)());
1039
+ const { addToast } = useToast();
1040
+ (0, import_react10.useEffect)(() => {
1041
+ if ((availableAgents == null ? void 0 : availableAgents.length) && !availableAgents.some((a) => a.name === action.name)) {
1042
+ const message = `(useCoAgentStateRender): Agent "${action.name}" not found. Make sure the agent exists and is properly configured.`;
1043
+ console.warn(message);
1044
+ addToast({ type: "warning", message });
1045
+ }
1046
+ }, [availableAgents]);
1026
1047
  const key = `${action.name}-${action.nodeName || "global"}`;
1027
1048
  if (dependencies === void 0) {
1028
1049
  if (coAgentStateRenders[idRef.current]) {
@@ -1091,14 +1112,23 @@ function useCopilotReadable({ description, value, parentId, categories, convert
1091
1112
  // src/hooks/use-coagent.ts
1092
1113
  var import_react13 = require("react");
1093
1114
  function useCoAgent(options) {
1115
+ const generalContext = useCopilotContext();
1116
+ const { availableAgents } = generalContext;
1117
+ const { addToast } = useToast();
1094
1118
  const isExternalStateManagement = (options2) => {
1095
1119
  return "state" in options2 && "setState" in options2;
1096
1120
  };
1097
1121
  const { name } = options;
1122
+ (0, import_react13.useEffect)(() => {
1123
+ if ((availableAgents == null ? void 0 : availableAgents.length) && !availableAgents.some((a) => a.name === name)) {
1124
+ const message = `(useCoAgent): Agent "${name}" not found. Make sure the agent exists and is properly configured.`;
1125
+ console.warn(message);
1126
+ addToast({ type: "warning", message });
1127
+ }
1128
+ }, [availableAgents]);
1098
1129
  const isInternalStateManagementWithInitial = (options2) => {
1099
1130
  return "initialState" in options2;
1100
1131
  };
1101
- const generalContext = useCopilotContext();
1102
1132
  const messagesContext = useCopilotMessagesContext();
1103
1133
  const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
1104
1134
  const { coagentStates, coagentStatesRef, setCoagentStatesWithRef } = context;
@@ -1212,6 +1242,50 @@ function runAgent(name, context, appendMessage, runChatCompletion, hint) {
1212
1242
  }
1213
1243
  });
1214
1244
  }
1245
+
1246
+ // src/hooks/use-copilot-authenticated-action.ts
1247
+ var import_react14 = require("react");
1248
+ var import_react15 = __toESM(require("react"));
1249
+ function useCopilotAuthenticatedAction(action, dependencies) {
1250
+ const { authConfig, authStates, setAuthStates } = useCopilotContext();
1251
+ const pendingActionRef = (0, import_react14.useRef)(null);
1252
+ const executeAction = (0, import_react14.useCallback)(
1253
+ (props) => {
1254
+ if (typeof action.render === "function") {
1255
+ return action.render(props);
1256
+ }
1257
+ return action.render || import_react15.default.createElement(import_react14.Fragment);
1258
+ },
1259
+ [action]
1260
+ );
1261
+ const wrappedRender = (0, import_react14.useCallback)(
1262
+ (props) => {
1263
+ const isAuthenticated = Object.values(authStates || {}).some(
1264
+ (state) => state.status === "authenticated"
1265
+ );
1266
+ if (!isAuthenticated) {
1267
+ pendingActionRef.current = props;
1268
+ return (authConfig == null ? void 0 : authConfig.SignInComponent) ? import_react15.default.createElement(authConfig.SignInComponent, {
1269
+ onSignInComplete: (authState) => {
1270
+ setAuthStates == null ? void 0 : setAuthStates((prev) => __spreadProps(__spreadValues({}, prev), { [action.name]: authState }));
1271
+ if (pendingActionRef.current) {
1272
+ executeAction(pendingActionRef.current);
1273
+ pendingActionRef.current = null;
1274
+ }
1275
+ }
1276
+ }) : import_react15.default.createElement(import_react14.Fragment);
1277
+ }
1278
+ return executeAction(props);
1279
+ },
1280
+ [action, authStates, setAuthStates]
1281
+ );
1282
+ useCopilotAction(
1283
+ __spreadProps(__spreadValues({}, action), {
1284
+ render: wrappedRender
1285
+ }),
1286
+ dependencies
1287
+ );
1288
+ }
1215
1289
  // Annotate the CommonJS export names for ESM import in node:
1216
1290
  0 && (module.exports = {
1217
1291
  runAgent,
@@ -1220,6 +1294,7 @@ function runAgent(name, context, appendMessage, runChatCompletion, hint) {
1220
1294
  useCoAgent,
1221
1295
  useCoAgentStateRender,
1222
1296
  useCopilotAction,
1297
+ useCopilotAuthenticatedAction,
1223
1298
  useCopilotChat,
1224
1299
  useCopilotReadable,
1225
1300
  useCopilotRuntimeClient,