@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.
- package/CHANGELOG.md +19 -0
- package/dist/{chunk-DZCTHC4G.mjs → chunk-5SGZKEPX.mjs} +3 -3
- package/dist/chunk-6PNZ77RB.mjs +66 -0
- package/dist/chunk-6PNZ77RB.mjs.map +1 -0
- package/dist/{chunk-7QGQVBD7.mjs → chunk-7HWSAEOY.mjs} +2 -2
- package/dist/{chunk-YJT6IYNV.mjs → chunk-AL3MOOKF.mjs} +2 -2
- package/dist/{chunk-67W2A4DM.mjs → chunk-DEPX7JPX.mjs} +10 -6
- package/dist/chunk-DEPX7JPX.mjs.map +1 -0
- package/dist/{chunk-KGCYVAIN.mjs → chunk-FMROB4TE.mjs} +49 -10
- package/dist/chunk-FMROB4TE.mjs.map +1 -0
- package/dist/{chunk-PMHLIIAI.mjs → chunk-GANI4ZZM.mjs} +3 -3
- package/dist/{chunk-VEQGQAGN.mjs → chunk-H2OR7FUU.mjs} +2 -2
- package/dist/chunk-IGLITGLC.mjs +1 -0
- package/dist/{chunk-V74U56PX.mjs → chunk-IHWTLSHY.mjs} +2 -2
- package/dist/{chunk-TJTOQRGB.mjs → chunk-IU7OLWWW.mjs} +26 -6
- package/dist/chunk-IU7OLWWW.mjs.map +1 -0
- package/dist/{chunk-GPWNMXSU.mjs → chunk-WU53OU3E.mjs} +2 -2
- package/dist/{chunk-S5MSFDGS.mjs → chunk-XOHLZIZK.mjs} +2 -2
- package/dist/chunk-ZAU4EMBM.mjs +48 -0
- package/dist/chunk-ZAU4EMBM.mjs.map +1 -0
- package/dist/{chunk-RKYHRYN3.mjs → chunk-ZM56S3LJ.mjs} +5 -2
- package/dist/chunk-ZM56S3LJ.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.js +4 -1
- package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
- package/dist/components/copilot-provider/copilot-messages.mjs +2 -2
- package/dist/components/copilot-provider/copilotkit-props.d.ts +1 -0
- package/dist/components/copilot-provider/copilotkit.d.ts +1 -0
- package/dist/components/copilot-provider/copilotkit.js +25 -2
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +3 -3
- package/dist/components/copilot-provider/index.d.ts +1 -0
- package/dist/components/copilot-provider/index.js +25 -2
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +3 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +25 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +3 -3
- package/dist/context/copilot-context.d.ts +5 -1
- package/dist/context/copilot-context.js +4 -1
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +4 -1
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +150 -13
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +20 -12
- package/dist/hooks/use-chat.d.ts +4 -1
- package/dist/hooks/use-chat.js +45 -7
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +1 -1
- package/dist/hooks/use-coagent-state-render.js +4 -1
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +2 -2
- package/dist/hooks/use-coagent.d.ts +1 -0
- package/dist/hooks/use-coagent.js +58 -13
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +6 -6
- package/dist/hooks/use-copilot-action.js +4 -1
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +2 -2
- package/dist/hooks/use-copilot-authenticated-action.js +4 -1
- package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
- package/dist/hooks/use-copilot-chat.d.ts +2 -1
- package/dist/hooks/use-copilot-chat.js +58 -13
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +5 -5
- package/dist/hooks/use-copilot-readable.js +4 -1
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt-render.d.ts +5 -0
- package/dist/hooks/use-langgraph-interrupt-render.js +184 -0
- package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -0
- package/dist/hooks/use-langgraph-interrupt-render.mjs +11 -0
- package/dist/hooks/use-langgraph-interrupt-render.mjs.map +1 -0
- package/dist/hooks/use-langgraph-interrupt.d.ts +7 -0
- package/dist/hooks/use-langgraph-interrupt.js +1050 -0
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -0
- package/dist/hooks/use-langgraph-interrupt.mjs +25 -0
- package/dist/hooks/use-langgraph-interrupt.mjs.map +1 -0
- package/dist/hooks/use-make-copilot-document-readable.js +4 -1
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +178 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -13
- package/dist/lib/copilot-task.d.ts +1 -0
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +4 -4
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +4 -4
- package/dist/types/interrupt-action.d.ts +35 -0
- package/dist/types/interrupt-action.js +19 -0
- package/dist/types/interrupt-action.js.map +1 -0
- package/dist/types/interrupt-action.mjs +1 -0
- package/dist/types/interrupt-action.mjs.map +1 -0
- package/dist/utils/extract.d.ts +1 -0
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +3 -3
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +3 -3
- package/package.json +3 -3
- package/src/components/copilot-provider/copilotkit.tsx +25 -0
- package/src/context/copilot-context.tsx +12 -3
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-chat.ts +52 -1
- package/src/hooks/use-copilot-chat.ts +4 -0
- package/src/hooks/use-langgraph-interrupt-render.ts +63 -0
- package/src/hooks/use-langgraph-interrupt.ts +62 -0
- package/src/types/interrupt-action.ts +35 -0
- package/dist/chunk-67W2A4DM.mjs.map +0 -1
- package/dist/chunk-KGCYVAIN.mjs.map +0 -1
- package/dist/chunk-NR2BTA6Z.mjs +0 -1
- package/dist/chunk-RKYHRYN3.mjs.map +0 -1
- package/dist/chunk-TJTOQRGB.mjs.map +0 -1
- /package/dist/{chunk-DZCTHC4G.mjs.map → chunk-5SGZKEPX.mjs.map} +0 -0
- /package/dist/{chunk-7QGQVBD7.mjs.map → chunk-7HWSAEOY.mjs.map} +0 -0
- /package/dist/{chunk-YJT6IYNV.mjs.map → chunk-AL3MOOKF.mjs.map} +0 -0
- /package/dist/{chunk-PMHLIIAI.mjs.map → chunk-GANI4ZZM.mjs.map} +0 -0
- /package/dist/{chunk-VEQGQAGN.mjs.map → chunk-H2OR7FUU.mjs.map} +0 -0
- /package/dist/{chunk-NR2BTA6Z.mjs.map → chunk-IGLITGLC.mjs.map} +0 -0
- /package/dist/{chunk-V74U56PX.mjs.map → chunk-IHWTLSHY.mjs.map} +0 -0
- /package/dist/{chunk-GPWNMXSU.mjs.map → chunk-WU53OU3E.mjs.map} +0 -0
- /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"]}
|
package/dist/context/index.mjs
CHANGED
package/dist/hooks/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/hooks/index.js
CHANGED
|
@@ -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
|
|
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 (((
|
|
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: ((
|
|
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
|
-
!((
|
|
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 ((
|
|
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 ((
|
|
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
|
|
860
|
+
return new import_runtime_client_gql5.TextMessage({
|
|
816
861
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
817
|
-
role:
|
|
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
|