@copilotkit/react-core 1.5.15-next.3 → 1.5.15-next.5

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 (131) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{chunk-DZCTHC4G.mjs → chunk-5SGZKEPX.mjs} +3 -3
  3. package/dist/chunk-6PNZ77RB.mjs +66 -0
  4. package/dist/chunk-6PNZ77RB.mjs.map +1 -0
  5. package/dist/{chunk-7QGQVBD7.mjs → chunk-7HWSAEOY.mjs} +2 -2
  6. package/dist/{chunk-YJT6IYNV.mjs → chunk-AL3MOOKF.mjs} +2 -2
  7. package/dist/{chunk-67W2A4DM.mjs → chunk-DEPX7JPX.mjs} +10 -6
  8. package/dist/chunk-DEPX7JPX.mjs.map +1 -0
  9. package/dist/{chunk-KGCYVAIN.mjs → chunk-FMROB4TE.mjs} +49 -10
  10. package/dist/chunk-FMROB4TE.mjs.map +1 -0
  11. package/dist/{chunk-PMHLIIAI.mjs → chunk-GANI4ZZM.mjs} +3 -3
  12. package/dist/{chunk-VEQGQAGN.mjs → chunk-H2OR7FUU.mjs} +2 -2
  13. package/dist/chunk-IGLITGLC.mjs +1 -0
  14. package/dist/{chunk-V74U56PX.mjs → chunk-IHWTLSHY.mjs} +2 -2
  15. package/dist/{chunk-TJTOQRGB.mjs → chunk-IU7OLWWW.mjs} +26 -6
  16. package/dist/chunk-IU7OLWWW.mjs.map +1 -0
  17. package/dist/{chunk-GPWNMXSU.mjs → chunk-WU53OU3E.mjs} +2 -2
  18. package/dist/{chunk-S5MSFDGS.mjs → chunk-XOHLZIZK.mjs} +2 -2
  19. package/dist/chunk-ZAU4EMBM.mjs +48 -0
  20. package/dist/chunk-ZAU4EMBM.mjs.map +1 -0
  21. package/dist/{chunk-RKYHRYN3.mjs → chunk-ZM56S3LJ.mjs} +5 -2
  22. package/dist/chunk-ZM56S3LJ.mjs.map +1 -0
  23. package/dist/components/copilot-provider/copilot-messages.js +4 -1
  24. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  25. package/dist/components/copilot-provider/copilot-messages.mjs +2 -2
  26. package/dist/components/copilot-provider/copilotkit-props.d.ts +1 -0
  27. package/dist/components/copilot-provider/copilotkit.d.ts +1 -0
  28. package/dist/components/copilot-provider/copilotkit.js +25 -2
  29. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  30. package/dist/components/copilot-provider/copilotkit.mjs +3 -3
  31. package/dist/components/copilot-provider/index.d.ts +1 -0
  32. package/dist/components/copilot-provider/index.js +25 -2
  33. package/dist/components/copilot-provider/index.js.map +1 -1
  34. package/dist/components/copilot-provider/index.mjs +3 -3
  35. package/dist/components/index.d.ts +1 -0
  36. package/dist/components/index.js +25 -2
  37. package/dist/components/index.js.map +1 -1
  38. package/dist/components/index.mjs +3 -3
  39. package/dist/context/copilot-context.d.ts +5 -1
  40. package/dist/context/copilot-context.js +4 -1
  41. package/dist/context/copilot-context.js.map +1 -1
  42. package/dist/context/copilot-context.mjs +1 -1
  43. package/dist/context/index.d.ts +1 -0
  44. package/dist/context/index.js +4 -1
  45. package/dist/context/index.js.map +1 -1
  46. package/dist/context/index.mjs +1 -1
  47. package/dist/hooks/index.d.ts +3 -0
  48. package/dist/hooks/index.js +150 -13
  49. package/dist/hooks/index.js.map +1 -1
  50. package/dist/hooks/index.mjs +20 -12
  51. package/dist/hooks/use-chat.d.ts +4 -1
  52. package/dist/hooks/use-chat.js +45 -7
  53. package/dist/hooks/use-chat.js.map +1 -1
  54. package/dist/hooks/use-chat.mjs +1 -1
  55. package/dist/hooks/use-coagent-state-render.js +4 -1
  56. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  57. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  58. package/dist/hooks/use-coagent.d.ts +1 -0
  59. package/dist/hooks/use-coagent.js +58 -13
  60. package/dist/hooks/use-coagent.js.map +1 -1
  61. package/dist/hooks/use-coagent.mjs +6 -6
  62. package/dist/hooks/use-copilot-action.js +4 -1
  63. package/dist/hooks/use-copilot-action.js.map +1 -1
  64. package/dist/hooks/use-copilot-action.mjs +2 -2
  65. package/dist/hooks/use-copilot-authenticated-action.js +4 -1
  66. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  67. package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
  68. package/dist/hooks/use-copilot-chat.d.ts +2 -1
  69. package/dist/hooks/use-copilot-chat.js +58 -13
  70. package/dist/hooks/use-copilot-chat.js.map +1 -1
  71. package/dist/hooks/use-copilot-chat.mjs +5 -5
  72. package/dist/hooks/use-copilot-readable.js +4 -1
  73. package/dist/hooks/use-copilot-readable.js.map +1 -1
  74. package/dist/hooks/use-copilot-readable.mjs +2 -2
  75. package/dist/hooks/use-langgraph-interrupt-render.d.ts +5 -0
  76. package/dist/hooks/use-langgraph-interrupt-render.js +184 -0
  77. package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -0
  78. package/dist/hooks/use-langgraph-interrupt-render.mjs +11 -0
  79. package/dist/hooks/use-langgraph-interrupt-render.mjs.map +1 -0
  80. package/dist/hooks/use-langgraph-interrupt.d.ts +7 -0
  81. package/dist/hooks/use-langgraph-interrupt.js +1050 -0
  82. package/dist/hooks/use-langgraph-interrupt.js.map +1 -0
  83. package/dist/hooks/use-langgraph-interrupt.mjs +25 -0
  84. package/dist/hooks/use-langgraph-interrupt.mjs.map +1 -0
  85. package/dist/hooks/use-make-copilot-document-readable.js +4 -1
  86. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  87. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.js +178 -21
  90. package/dist/index.js.map +1 -1
  91. package/dist/index.mjs +21 -13
  92. package/dist/lib/copilot-task.d.ts +1 -0
  93. package/dist/lib/copilot-task.js.map +1 -1
  94. package/dist/lib/copilot-task.mjs +4 -4
  95. package/dist/lib/index.d.ts +1 -0
  96. package/dist/lib/index.js.map +1 -1
  97. package/dist/lib/index.mjs +4 -4
  98. package/dist/types/interrupt-action.d.ts +35 -0
  99. package/dist/types/interrupt-action.js +19 -0
  100. package/dist/types/interrupt-action.js.map +1 -0
  101. package/dist/types/interrupt-action.mjs +1 -0
  102. package/dist/types/interrupt-action.mjs.map +1 -0
  103. package/dist/utils/extract.d.ts +1 -0
  104. package/dist/utils/extract.js.map +1 -1
  105. package/dist/utils/extract.mjs +3 -3
  106. package/dist/utils/index.d.ts +1 -0
  107. package/dist/utils/index.js.map +1 -1
  108. package/dist/utils/index.mjs +3 -3
  109. package/package.json +3 -3
  110. package/src/components/copilot-provider/copilotkit.tsx +25 -0
  111. package/src/context/copilot-context.tsx +12 -3
  112. package/src/hooks/index.ts +2 -0
  113. package/src/hooks/use-chat.ts +52 -1
  114. package/src/hooks/use-copilot-chat.ts +4 -0
  115. package/src/hooks/use-langgraph-interrupt-render.ts +63 -0
  116. package/src/hooks/use-langgraph-interrupt.ts +62 -0
  117. package/src/types/interrupt-action.ts +35 -0
  118. package/dist/chunk-67W2A4DM.mjs.map +0 -1
  119. package/dist/chunk-KGCYVAIN.mjs.map +0 -1
  120. package/dist/chunk-NR2BTA6Z.mjs +0 -1
  121. package/dist/chunk-RKYHRYN3.mjs.map +0 -1
  122. package/dist/chunk-TJTOQRGB.mjs.map +0 -1
  123. /package/dist/{chunk-DZCTHC4G.mjs.map → chunk-5SGZKEPX.mjs.map} +0 -0
  124. /package/dist/{chunk-7QGQVBD7.mjs.map → chunk-7HWSAEOY.mjs.map} +0 -0
  125. /package/dist/{chunk-YJT6IYNV.mjs.map → chunk-AL3MOOKF.mjs.map} +0 -0
  126. /package/dist/{chunk-PMHLIIAI.mjs.map → chunk-GANI4ZZM.mjs.map} +0 -0
  127. /package/dist/{chunk-VEQGQAGN.mjs.map → chunk-H2OR7FUU.mjs.map} +0 -0
  128. /package/dist/{chunk-NR2BTA6Z.mjs.map → chunk-IGLITGLC.mjs.map} +0 -0
  129. /package/dist/{chunk-V74U56PX.mjs.map → chunk-IHWTLSHY.mjs.map} +0 -0
  130. /package/dist/{chunk-GPWNMXSU.mjs.map → chunk-WU53OU3E.mjs.map} +0 -0
  131. /package/dist/{chunk-S5MSFDGS.mjs.map → chunk-XOHLZIZK.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 {\n CopilotRuntimeClient,\n ExtensionsInput,\n ForwardedParametersInput,\n} 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;\n setThreadId: React.Dispatch<React.SetStateAction<string>>;\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_c?: Record<ActionName, AuthState>;\n setAuthStates_c?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig_c?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n\n extensions: ExtensionsInput;\n setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;\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: \"\",\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n extensions: {},\n setExtensions: () => {},\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;AAsMlB,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;AAAA,EAClB,YAAY,CAAC;AAAA,EACb,eAAe,MAAM;AAAA,EAAC;AACxB;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;;;AClRA,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 {\n CopilotRuntimeClient,\n ExtensionsInput,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport { Agent } from \"@copilotkit/runtime-client-gql\";\nimport {\n LangGraphInterruptAction,\n LangGraphInterruptActionSetter,\n} from \"../types/interrupt-action\";\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<TProps = ActionRenderProps<any> | CatchAllActionRenderProps<any>> =\n (props: TProps) => 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;\n setThreadId: React.Dispatch<React.SetStateAction<string>>;\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_c?: Record<ActionName, AuthState>;\n setAuthStates_c?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig_c?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n\n extensions: ExtensionsInput;\n setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;\n langGraphInterruptAction: LangGraphInterruptAction | null;\n setLangGraphInterruptAction: LangGraphInterruptActionSetter;\n removeLangGraphInterruptAction: () => void;\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: \"\",\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n extensions: {},\n setExtensions: () => {},\n langGraphInterruptAction: null,\n setLangGraphInterruptAction: () => null,\n removeLangGraphInterruptAction: () => 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}\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":"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","names":["React","import_react","emptyCopilotContext","React"]}
@@ -2,7 +2,7 @@ import "../chunk-YPSGKPDA.mjs";
2
2
  import {
3
3
  CopilotContext,
4
4
  useCopilotContext
5
- } from "../chunk-RKYHRYN3.mjs";
5
+ } from "../chunk-ZM56S3LJ.mjs";
6
6
  import {
7
7
  CopilotMessagesContext,
8
8
  useCopilotMessagesContext
@@ -7,6 +7,8 @@ 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
9
  export { useCopilotAuthenticatedAction_c } from './use-copilot-authenticated-action.js';
10
+ export { useLangGraphInterrupt } from './use-langgraph-interrupt.js';
11
+ export { useLangGraphInterruptRender } from './use-langgraph-interrupt-render.js';
10
12
  import '@copilotkit/runtime-client-gql';
11
13
  import '../types/system-message.js';
12
14
  import '@copilotkit/shared';
@@ -18,4 +20,5 @@ import '../context/copilot-context.js';
18
20
  import './use-tree.js';
19
21
  import '../types/chat-suggestion-configuration.js';
20
22
  import '../types/coagent-state.js';
23
+ import '../types/interrupt-action.js';
21
24
  import '../context/copilot-messages-context.js';
@@ -89,6 +89,8 @@ __export(hooks_exports, {
89
89
  useCopilotChat: () => useCopilotChat,
90
90
  useCopilotReadable: () => useCopilotReadable,
91
91
  useCopilotRuntimeClient: () => useCopilotRuntimeClient,
92
+ useLangGraphInterrupt: () => useLangGraphInterrupt,
93
+ useLangGraphInterruptRender: () => useLangGraphInterruptRender,
92
94
  useMakeCopilotDocumentReadable: () => useMakeCopilotDocumentReadable
93
95
  });
94
96
  module.exports = __toCommonJS(hooks_exports);
@@ -163,7 +165,10 @@ var emptyCopilotContext = {
163
165
  availableAgents: [],
164
166
  extensions: {},
165
167
  setExtensions: () => {
166
- }
168
+ },
169
+ langGraphInterruptAction: null,
170
+ setLangGraphInterruptAction: () => null,
171
+ removeLangGraphInterruptAction: () => null
167
172
  };
168
173
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
169
174
  function useCopilotContext() {
@@ -178,7 +183,7 @@ function returnAndThrowInDebug(_value) {
178
183
  }
179
184
 
180
185
  // src/hooks/use-copilot-chat.ts
181
- var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
186
+ var import_runtime_client_gql5 = require("@copilotkit/runtime-client-gql");
182
187
 
183
188
  // src/hooks/use-chat.ts
184
189
  var import_react5 = require("react");
@@ -362,6 +367,7 @@ var useCopilotRuntimeClient = (options) => {
362
367
  };
363
368
 
364
369
  // src/hooks/use-chat.ts
370
+ var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
365
371
  function useChat(options) {
366
372
  const {
367
373
  messages,
@@ -385,7 +391,9 @@ function useChat(options) {
385
391
  chatAbortControllerRef,
386
392
  agentLock,
387
393
  extensions,
388
- setExtensions
394
+ setExtensions,
395
+ langGraphInterruptAction,
396
+ setLangGraphInterruptAction
389
397
  } = options;
390
398
  const runChatCompletionRef = (0, import_react5.useRef)();
391
399
  const addErrorToast = useErrorToast();
@@ -405,7 +413,7 @@ function useChat(options) {
405
413
  });
406
414
  const runChatCompletion = useAsyncCallback(
407
415
  (previousMessages) => __async(this, null, function* () {
408
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
416
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
409
417
  setIsLoading(true);
410
418
  let newMessages = [
411
419
  new import_runtime_client_gql3.TextMessage({
@@ -428,6 +436,7 @@ function useChat(options) {
428
436
  threadId,
429
437
  runId: runIdRef.current,
430
438
  extensions: extensionsRef.current,
439
+ metaEvents: composeAndFlushMetaEventsInput([langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event]),
431
440
  messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)((0, import_runtime_client_gql3.filterAgentStateMessages)(messagesWithContext))
432
441
  }, copilotConfig.cloud ? {
433
442
  cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
@@ -489,15 +498,22 @@ function useChat(options) {
489
498
  messages2 = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
490
499
  (0, import_runtime_client_gql3.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
491
500
  );
501
+ ((_i = (_h = value.generateCopilotResponse) == null ? void 0 : _h.metaEvents) != null ? _i : []).forEach((ev) => {
502
+ if (ev.name === "LangGraphInterruptEvent") {
503
+ setLangGraphInterruptAction({
504
+ event: (0, import_runtime_client_gql3.langGraphInterruptEvent)(ev)
505
+ });
506
+ }
507
+ });
492
508
  if (messages2.length === 0) {
493
509
  continue;
494
510
  }
495
511
  newMessages = [];
496
- if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
512
+ if (((_j = value.generateCopilotResponse.status) == null ? void 0 : _j.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
497
513
  newMessages = [
498
514
  new import_runtime_client_gql3.TextMessage({
499
515
  role: import_runtime_client_gql3.MessageRole.Assistant,
500
- content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
516
+ content: ((_k = value.generateCopilotResponse.status.details) == null ? void 0 : _k.guardrailsReason) || ""
501
517
  })
502
518
  ];
503
519
  setMessages([...previousMessages, ...newMessages]);
@@ -635,11 +651,11 @@ function useChat(options) {
635
651
  followUp !== false && // and we executed an action
636
652
  (didExecuteAction || // the last message is a server side result
637
653
  !isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
638
- !((_j = chatAbortControllerRef.current) == null ? void 0 : _j.signal.aborted)
654
+ !((_l = chatAbortControllerRef.current) == null ? void 0 : _l.signal.aborted)
639
655
  ) {
640
656
  yield new Promise((resolve) => setTimeout(resolve, 10));
641
657
  return yield runChatCompletionRef.current(finalMessages);
642
- } else if ((_k = chatAbortControllerRef.current) == null ? void 0 : _k.signal.aborted) {
658
+ } else if ((_m = chatAbortControllerRef.current) == null ? void 0 : _m.signal.aborted) {
643
659
  const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
644
660
  if (message.isActionExecutionMessage()) {
645
661
  return finalMessages.find(
@@ -650,7 +666,7 @@ function useChat(options) {
650
666
  });
651
667
  const repairedMessageIds = repairedMessages.map((message) => message.id);
652
668
  setMessages(repairedMessages);
653
- if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
669
+ if ((_n = agentSessionRef.current) == null ? void 0 : _n.nodeName) {
654
670
  setAgentSession({
655
671
  threadId: agentSessionRef.current.threadId,
656
672
  agentName: agentSessionRef.current.agentName,
@@ -689,6 +705,33 @@ function useChat(options) {
689
705
  }),
690
706
  [messages]
691
707
  );
708
+ const composeAndFlushMetaEventsInput = (0, import_react5.useCallback)(
709
+ (metaEvents) => {
710
+ return metaEvents.reduce((acc, event) => {
711
+ if (!event)
712
+ return acc;
713
+ switch (event.name) {
714
+ case import_runtime_client_gql4.MetaEventName.LangGraphInterruptEvent:
715
+ if (event.response) {
716
+ setLangGraphInterruptAction(null);
717
+ return [
718
+ ...acc,
719
+ {
720
+ type: event.type,
721
+ name: event.name,
722
+ value: event.value,
723
+ response: event.response
724
+ }
725
+ ];
726
+ }
727
+ return acc;
728
+ default:
729
+ return acc;
730
+ }
731
+ }, []);
732
+ },
733
+ [setLangGraphInterruptAction]
734
+ );
692
735
  const append = useAsyncCallback(
693
736
  (message, options2) => __async(this, null, function* () {
694
737
  var _a;
@@ -799,7 +842,9 @@ function useCopilotChat(_a = {}) {
799
842
  setRunId,
800
843
  chatAbortControllerRef,
801
844
  extensions,
802
- setExtensions
845
+ setExtensions,
846
+ langGraphInterruptAction,
847
+ setLangGraphInterruptAction
803
848
  } = useCopilotContext();
804
849
  const { messages, setMessages } = useCopilotMessagesContext();
805
850
  const latestGetContextString = useUpdatedRef(getContextString);
@@ -812,9 +857,9 @@ function useCopilotChat(_a = {}) {
812
857
  const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
813
858
  const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
814
859
  const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
815
- return new import_runtime_client_gql4.TextMessage({
860
+ return new import_runtime_client_gql5.TextMessage({
816
861
  content: systemMessageMaker(contextString, chatInstructions),
817
- role: import_runtime_client_gql4.Role.System
862
+ role: import_runtime_client_gql5.Role.System
818
863
  });
819
864
  }, [getContextString, makeSystemMessage, chatInstructions]);
820
865
  const onCoAgentStateRender = useAsyncCallback(
@@ -858,7 +903,9 @@ function useCopilotChat(_a = {}) {
858
903
  chatAbortControllerRef,
859
904
  agentLock,
860
905
  extensions,
861
- setExtensions
906
+ setExtensions,
907
+ langGraphInterruptAction,
908
+ setLangGraphInterruptAction
862
909
  }));
863
910
  const latestAppend = useUpdatedRef(append);
864
911
  const latestAppendFunc = useAsyncCallback(
@@ -1335,6 +1382,94 @@ function useCopilotAuthenticatedAction_c(action, dependencies) {
1335
1382
  dependencies
1336
1383
  );
1337
1384
  }
1385
+
1386
+ // src/hooks/use-langgraph-interrupt.ts
1387
+ var import_react16 = require("react");
1388
+ var import_shared6 = require("@copilotkit/shared");
1389
+ function useLangGraphInterrupt(action, dependencies) {
1390
+ var _a;
1391
+ const { setLangGraphInterruptAction, removeLangGraphInterruptAction, langGraphInterruptAction } = (0, import_react16.useContext)(CopilotContext);
1392
+ const { runChatCompletion } = useCopilotChat();
1393
+ const { addToast } = useToast();
1394
+ const actionId = (0, import_shared6.dataToUUID)(JSON.stringify(action), "lgAction");
1395
+ const hasAction = (0, import_react16.useMemo)(
1396
+ () => Boolean(langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id),
1397
+ [langGraphInterruptAction]
1398
+ );
1399
+ const isCurrentAction = (0, import_react16.useMemo)(
1400
+ () => (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) && (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) === actionId,
1401
+ [langGraphInterruptAction]
1402
+ );
1403
+ (0, import_react16.useEffect)(() => {
1404
+ var _a2;
1405
+ if (hasAction && isCurrentAction && ((_a2 = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a2.response)) {
1406
+ runChatCompletion();
1407
+ }
1408
+ }, [(_a = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a.response, runChatCompletion, hasAction, isCurrentAction]);
1409
+ (0, import_react16.useEffect)(() => {
1410
+ var _a2;
1411
+ if (!action)
1412
+ return;
1413
+ if (hasAction && !isCurrentAction && !((_a2 = action.conditions) == null ? void 0 : _a2.length)) {
1414
+ addToast({
1415
+ type: "warning",
1416
+ message: "An action is already registered for the interrupt event"
1417
+ });
1418
+ return;
1419
+ }
1420
+ if (hasAction && isCurrentAction) {
1421
+ return;
1422
+ }
1423
+ setLangGraphInterruptAction(__spreadProps(__spreadValues({}, action), { id: actionId }));
1424
+ }, [
1425
+ action,
1426
+ hasAction,
1427
+ isCurrentAction,
1428
+ setLangGraphInterruptAction,
1429
+ removeLangGraphInterruptAction,
1430
+ ...dependencies || []
1431
+ ]);
1432
+ }
1433
+
1434
+ // src/hooks/use-langgraph-interrupt-render.ts
1435
+ var import_react17 = __toESM(require("react"));
1436
+ var import_shared7 = require("@copilotkit/shared");
1437
+ var InterruptRenderer = ({ event, result, render, resolve }) => {
1438
+ return render({ event, result, resolve });
1439
+ };
1440
+ function useLangGraphInterruptRender() {
1441
+ const { langGraphInterruptAction, setLangGraphInterruptAction } = useCopilotContext();
1442
+ const responseRef = import_react17.default.useRef();
1443
+ const resolveInterrupt = (0, import_react17.useCallback)(
1444
+ (response) => {
1445
+ responseRef.current = response;
1446
+ setTimeout(() => {
1447
+ setLangGraphInterruptAction({ event: { response } });
1448
+ }, 0);
1449
+ },
1450
+ [setLangGraphInterruptAction]
1451
+ );
1452
+ if (!langGraphInterruptAction || !langGraphInterruptAction.event || !langGraphInterruptAction.render)
1453
+ return null;
1454
+ const { render, handler, event, conditions } = langGraphInterruptAction;
1455
+ const conditionsMet = (0, import_shared7.executeConditions)({ conditions, value: event.value });
1456
+ if (!conditionsMet) {
1457
+ return null;
1458
+ }
1459
+ let result = null;
1460
+ if (handler) {
1461
+ result = handler({
1462
+ event,
1463
+ resolve: resolveInterrupt
1464
+ });
1465
+ }
1466
+ return import_react17.default.createElement(InterruptRenderer, {
1467
+ event,
1468
+ result,
1469
+ render,
1470
+ resolve: resolveInterrupt
1471
+ });
1472
+ }
1338
1473
  // Annotate the CommonJS export names for ESM import in node:
1339
1474
  0 && (module.exports = {
1340
1475
  runAgent,
@@ -1347,6 +1482,8 @@ function useCopilotAuthenticatedAction_c(action, dependencies) {
1347
1482
  useCopilotChat,
1348
1483
  useCopilotReadable,
1349
1484
  useCopilotRuntimeClient,
1485
+ useLangGraphInterrupt,
1486
+ useLangGraphInterruptRender,
1350
1487
  useMakeCopilotDocumentReadable
1351
1488
  });
1352
1489
  //# sourceMappingURL=index.js.map