@copilotkit/react-core 1.3.6 → 1.3.7

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 (118) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{chunk-4AF3YGMC.mjs → chunk-2MPUQRAY.mjs} +1 -3
  3. package/dist/chunk-2MPUQRAY.mjs.map +1 -0
  4. package/dist/{chunk-KK42A2OC.mjs → chunk-3MDMBUBP.mjs} +10 -6
  5. package/dist/chunk-3MDMBUBP.mjs.map +1 -0
  6. package/dist/{chunk-VZ66ENV7.mjs → chunk-6YEMNWKE.mjs} +41 -31
  7. package/dist/chunk-6YEMNWKE.mjs.map +1 -0
  8. package/dist/{chunk-3CU2I4W2.mjs → chunk-7DFHFZJT.mjs} +3 -4
  9. package/dist/{chunk-3CU2I4W2.mjs.map → chunk-7DFHFZJT.mjs.map} +1 -1
  10. package/dist/{chunk-6VNO5DEJ.mjs → chunk-AKQVU52J.mjs} +7 -9
  11. package/dist/chunk-AKQVU52J.mjs.map +1 -0
  12. package/dist/{chunk-NTNOUYBQ.mjs → chunk-ANOG3W5S.mjs} +2 -2
  13. package/dist/{chunk-ACK2DHWA.mjs → chunk-CQ23Q555.mjs} +2 -2
  14. package/dist/chunk-DCTJZ742.mjs +22 -0
  15. package/dist/chunk-DCTJZ742.mjs.map +1 -0
  16. package/dist/{chunk-2Y3VMFJN.mjs → chunk-OFG2PW2E.mjs} +8 -6
  17. package/dist/chunk-OFG2PW2E.mjs.map +1 -0
  18. package/dist/{chunk-UJWNB2I6.mjs → chunk-RYDEG77L.mjs} +2 -2
  19. package/dist/{chunk-QUCTZQ6X.mjs → chunk-TRXKPXDE.mjs} +2 -2
  20. package/dist/chunk-XXR4QFAQ.mjs +29 -0
  21. package/dist/chunk-XXR4QFAQ.mjs.map +1 -0
  22. package/dist/chunk-YPSGKPDA.mjs +1 -0
  23. package/dist/{chunk-IAS5FL4D.mjs → chunk-ZM6HV22S.mjs} +20 -13
  24. package/dist/chunk-ZM6HV22S.mjs.map +1 -0
  25. package/dist/components/copilot-provider/copilot-messages.d.ts +7 -0
  26. package/dist/components/copilot-provider/copilot-messages.js +80 -0
  27. package/dist/components/copilot-provider/copilot-messages.js.map +1 -0
  28. package/dist/components/copilot-provider/copilot-messages.mjs +9 -0
  29. package/dist/components/copilot-provider/copilot-messages.mjs.map +1 -0
  30. package/dist/components/copilot-provider/copilotkit.js +85 -52
  31. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  32. package/dist/components/copilot-provider/copilotkit.mjs +4 -2
  33. package/dist/components/copilot-provider/index.js +85 -52
  34. package/dist/components/copilot-provider/index.js.map +1 -1
  35. package/dist/components/copilot-provider/index.mjs +4 -2
  36. package/dist/components/index.js +85 -52
  37. package/dist/components/index.js.map +1 -1
  38. package/dist/components/index.mjs +4 -2
  39. package/dist/context/copilot-context.d.ts +0 -3
  40. package/dist/context/copilot-context.js +0 -2
  41. package/dist/context/copilot-context.js.map +1 -1
  42. package/dist/context/copilot-context.mjs +1 -1
  43. package/dist/context/copilot-messages-context.d.ts +15 -0
  44. package/dist/context/copilot-messages-context.js +57 -0
  45. package/dist/context/copilot-messages-context.js.map +1 -0
  46. package/dist/context/copilot-messages-context.mjs +10 -0
  47. package/dist/context/copilot-messages-context.mjs.map +1 -0
  48. package/dist/context/index.d.ts +2 -1
  49. package/dist/context/index.js +23 -4
  50. package/dist/context/index.js.map +1 -1
  51. package/dist/context/index.mjs +9 -3
  52. package/dist/hooks/index.js +57 -40
  53. package/dist/hooks/index.js.map +1 -1
  54. package/dist/hooks/index.mjs +18 -16
  55. package/dist/hooks/use-chat.js +5 -5
  56. package/dist/hooks/use-chat.js.map +1 -1
  57. package/dist/hooks/use-chat.mjs +1 -1
  58. package/dist/hooks/use-coagent-state-render.js +0 -2
  59. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  60. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  61. package/dist/hooks/use-coagent.js +48 -33
  62. package/dist/hooks/use-coagent.js.map +1 -1
  63. package/dist/hooks/use-coagent.mjs +8 -6
  64. package/dist/hooks/use-copilot-action.js +0 -2
  65. package/dist/hooks/use-copilot-action.js.map +1 -1
  66. package/dist/hooks/use-copilot-action.mjs +2 -2
  67. package/dist/hooks/use-copilot-chat.js +37 -21
  68. package/dist/hooks/use-copilot-chat.js.map +1 -1
  69. package/dist/hooks/use-copilot-chat.mjs +7 -4
  70. package/dist/hooks/use-copilot-readable.js +0 -2
  71. package/dist/hooks/use-copilot-readable.js.map +1 -1
  72. package/dist/hooks/use-copilot-readable.mjs +2 -2
  73. package/dist/hooks/use-make-copilot-document-readable.js +0 -2
  74. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  75. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  76. package/dist/index.d.ts +2 -1
  77. package/dist/index.js +176 -122
  78. package/dist/index.js.map +1 -1
  79. package/dist/index.mjs +26 -19
  80. package/dist/lib/copilot-task.d.ts +0 -1
  81. package/dist/lib/copilot-task.js +1 -1
  82. package/dist/lib/copilot-task.js.map +1 -1
  83. package/dist/lib/copilot-task.mjs +5 -3
  84. package/dist/lib/index.d.ts +0 -1
  85. package/dist/lib/index.js +1 -1
  86. package/dist/lib/index.js.map +1 -1
  87. package/dist/lib/index.mjs +5 -3
  88. package/dist/utils/extract.d.ts +2 -1
  89. package/dist/utils/extract.js +18 -10
  90. package/dist/utils/extract.js.map +1 -1
  91. package/dist/utils/extract.mjs +5 -3
  92. package/dist/utils/index.d.ts +1 -0
  93. package/dist/utils/index.js +18 -10
  94. package/dist/utils/index.js.map +1 -1
  95. package/dist/utils/index.mjs +5 -3
  96. package/package.json +7 -7
  97. package/src/components/copilot-provider/copilot-messages.tsx +23 -0
  98. package/src/components/copilot-provider/copilotkit.tsx +36 -30
  99. package/src/context/copilot-context.tsx +0 -8
  100. package/src/context/copilot-messages-context.tsx +29 -0
  101. package/src/context/index.ts +2 -0
  102. package/src/hooks/use-chat.ts +5 -5
  103. package/src/hooks/use-coagent.ts +11 -4
  104. package/src/hooks/use-copilot-chat.ts +2 -2
  105. package/src/lib/copilot-task.ts +1 -1
  106. package/src/utils/extract.ts +25 -13
  107. package/dist/chunk-2Y3VMFJN.mjs.map +0 -1
  108. package/dist/chunk-4AF3YGMC.mjs.map +0 -1
  109. package/dist/chunk-6VNO5DEJ.mjs.map +0 -1
  110. package/dist/chunk-IAS5FL4D.mjs.map +0 -1
  111. package/dist/chunk-KK42A2OC.mjs.map +0 -1
  112. package/dist/chunk-VNRDQJXW.mjs +0 -1
  113. package/dist/chunk-VZ66ENV7.mjs.map +0 -1
  114. /package/dist/{chunk-NTNOUYBQ.mjs.map → chunk-ANOG3W5S.mjs.map} +0 -0
  115. /package/dist/{chunk-ACK2DHWA.mjs.map → chunk-CQ23Q555.mjs.map} +0 -0
  116. /package/dist/{chunk-UJWNB2I6.mjs.map → chunk-RYDEG77L.mjs.map} +0 -0
  117. /package/dist/{chunk-QUCTZQ6X.mjs.map → chunk-TRXKPXDE.mjs.map} +0 -0
  118. /package/dist/{chunk-VNRDQJXW.mjs.map → chunk-YPSGKPDA.mjs.map} +0 -0
@@ -89,7 +89,7 @@ __export(hooks_exports, {
89
89
  module.exports = __toCommonJS(hooks_exports);
90
90
 
91
91
  // src/hooks/use-copilot-chat.ts
92
- var import_react4 = require("react");
92
+ var import_react5 = require("react");
93
93
 
94
94
  // src/context/copilot-context.tsx
95
95
  var import_react = __toESM(require("react"));
@@ -111,8 +111,6 @@ var emptyCopilotContext = {
111
111
  },
112
112
  getFunctionCallHandler: () => returnAndThrowInDebug(() => __async(void 0, null, function* () {
113
113
  })),
114
- messages: [],
115
- setMessages: () => returnAndThrowInDebug([]),
116
114
  isLoading: false,
117
115
  setIsLoading: () => returnAndThrowInDebug(false),
118
116
  chatInstructions: "",
@@ -284,7 +282,7 @@ function useChat(options) {
284
282
  } else {
285
283
  for (const message of messages2) {
286
284
  newMessages.push(message);
287
- if (message instanceof import_runtime_client_gql.ActionExecutionMessage && message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
285
+ if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
288
286
  if (!(message.id in actionResults)) {
289
287
  if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
290
288
  break;
@@ -314,7 +312,7 @@ function useChat(options) {
314
312
  })
315
313
  );
316
314
  }
317
- if (message instanceof import_runtime_client_gql.AgentStateMessage && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
315
+ if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
318
316
  if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
319
317
  break;
320
318
  }
@@ -326,7 +324,7 @@ function useChat(options) {
326
324
  executedCoAgentStateRenders.push(message.id);
327
325
  }
328
326
  }
329
- const lastAgentStateMessage = [...messages2].reverse().find((message) => message instanceof import_runtime_client_gql.AgentStateMessage);
327
+ const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
330
328
  if (lastAgentStateMessage) {
331
329
  if (lastAgentStateMessage.running) {
332
330
  setCoagentStates((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
@@ -358,7 +356,7 @@ function useChat(options) {
358
356
  // if followUp is not explicitly false
359
357
  followUp !== false && // if we have client side results
360
358
  (Object.values(actionResults).length || // or the last message we received is a result
361
- newMessages.length && newMessages[newMessages.length - 1] instanceof import_runtime_client_gql.ResultMessage)
359
+ newMessages.length && newMessages[newMessages.length - 1].isResultMessage())
362
360
  ) {
363
361
  yield new Promise((resolve) => setTimeout(resolve, 10));
364
362
  return yield runChatCompletionRef.current([...previousMessages, ...newMessages]);
@@ -387,7 +385,7 @@ function useChat(options) {
387
385
  }
388
386
  let newMessages = [...messages];
389
387
  const lastMessage = messages[messages.length - 1];
390
- if (lastMessage instanceof import_runtime_client_gql.TextMessage && lastMessage.role === "assistant") {
388
+ if (lastMessage.isTextMessage() && lastMessage.role === "assistant") {
391
389
  newMessages = newMessages.slice(0, -1);
392
390
  }
393
391
  setMessages(newMessages);
@@ -405,9 +403,28 @@ function useChat(options) {
405
403
  }
406
404
 
407
405
  // src/components/copilot-provider/copilotkit.tsx
408
- var import_react3 = require("react");
406
+ var import_react4 = require("react");
409
407
  var import_react_dom = require("react-dom");
410
408
  var import_shared2 = require("@copilotkit/shared");
409
+
410
+ // src/context/copilot-messages-context.tsx
411
+ var import_react3 = __toESM(require("react"));
412
+ var emptyCopilotContext2 = {
413
+ messages: [],
414
+ setMessages: () => []
415
+ };
416
+ var CopilotMessagesContext = import_react3.default.createContext(emptyCopilotContext2);
417
+ function useCopilotMessagesContext() {
418
+ const context = import_react3.default.useContext(CopilotMessagesContext);
419
+ if (context === emptyCopilotContext2) {
420
+ throw new Error(
421
+ "A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
422
+ );
423
+ }
424
+ return context;
425
+ }
426
+
427
+ // src/components/copilot-provider/copilotkit.tsx
411
428
  var import_jsx_runtime = require("react/jsx-runtime");
412
429
  var defaultCopilotContextCategories = ["global"];
413
430
 
@@ -422,8 +439,6 @@ function useCopilotChat(_a = {}) {
422
439
  getContextString,
423
440
  getFunctionCallHandler,
424
441
  copilotApiConfig,
425
- messages,
426
- setMessages,
427
442
  isLoading,
428
443
  setIsLoading,
429
444
  chatInstructions,
@@ -434,14 +449,15 @@ function useCopilotChat(_a = {}) {
434
449
  agentSession,
435
450
  setAgentSession
436
451
  } = useCopilotContext();
452
+ const { messages, setMessages } = useCopilotMessagesContext();
437
453
  const latestGetContextString = useUpdatedRef(getContextString);
438
- const deleteMessage = (0, import_react4.useCallback)(
454
+ const deleteMessage = (0, import_react5.useCallback)(
439
455
  (messageId) => {
440
456
  setMessages((prev) => prev.filter((message) => message.id !== messageId));
441
457
  },
442
458
  [setMessages]
443
459
  );
444
- const makeSystemMessageCallback = (0, import_react4.useCallback)(() => {
460
+ const makeSystemMessageCallback = (0, import_react5.useCallback)(() => {
445
461
  const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
446
462
  const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
447
463
  return new import_runtime_client_gql2.TextMessage({
@@ -449,7 +465,7 @@ function useCopilotChat(_a = {}) {
449
465
  role: import_runtime_client_gql2.Role.System
450
466
  });
451
467
  }, [getContextString, makeSystemMessage, chatInstructions]);
452
- const onCoAgentStateRender = (0, import_react4.useCallback)(
468
+ const onCoAgentStateRender = (0, import_react5.useCallback)(
453
469
  (args) => __async(this, null, function* () {
454
470
  var _a2;
455
471
  const { name, nodeName, state } = args;
@@ -484,29 +500,29 @@ function useCopilotChat(_a = {}) {
484
500
  setAgentSession
485
501
  }));
486
502
  const latestAppend = useUpdatedRef(append);
487
- const latestAppendFunc = (0, import_react4.useCallback)(
503
+ const latestAppendFunc = (0, import_react5.useCallback)(
488
504
  (message) => {
489
505
  return latestAppend.current(message);
490
506
  },
491
507
  [latestAppend]
492
508
  );
493
509
  const latestReload = useUpdatedRef(reload);
494
- const latestReloadFunc = (0, import_react4.useCallback)(() => {
510
+ const latestReloadFunc = (0, import_react5.useCallback)(() => {
495
511
  return latestReload.current();
496
512
  }, [latestReload]);
497
513
  const latestStop = useUpdatedRef(stop);
498
- const latestStopFunc = (0, import_react4.useCallback)(() => {
514
+ const latestStopFunc = (0, import_react5.useCallback)(() => {
499
515
  return latestStop.current();
500
516
  }, [latestStop]);
501
517
  const latestDelete = useUpdatedRef(deleteMessage);
502
- const latestDeleteFunc = (0, import_react4.useCallback)(
518
+ const latestDeleteFunc = (0, import_react5.useCallback)(
503
519
  (messageId) => {
504
520
  return latestDelete.current(messageId);
505
521
  },
506
522
  [latestDelete]
507
523
  );
508
524
  const latestSetMessages = useUpdatedRef(setMessages);
509
- const latestSetMessagesFunc = (0, import_react4.useCallback)(
525
+ const latestSetMessagesFunc = (0, import_react5.useCallback)(
510
526
  (messages2) => {
511
527
  return latestSetMessages.current(messages2);
512
528
  },
@@ -523,8 +539,8 @@ function useCopilotChat(_a = {}) {
523
539
  };
524
540
  }
525
541
  function useUpdatedRef(value) {
526
- const ref = (0, import_react4.useRef)(value);
527
- (0, import_react4.useEffect)(() => {
542
+ const ref = (0, import_react5.useRef)(value);
543
+ (0, import_react5.useEffect)(() => {
528
544
  ref.current = value;
529
545
  }, [value]);
530
546
  return ref;
@@ -554,12 +570,12 @@ ${additionalInstructions}` : "");
554
570
  }
555
571
 
556
572
  // src/hooks/use-copilot-action.ts
557
- var import_react5 = require("react");
573
+ var import_react6 = require("react");
558
574
  var import_shared3 = require("@copilotkit/shared");
559
575
  function useCopilotAction(action, dependencies) {
560
576
  const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
561
- const idRef = (0, import_react5.useRef)((0, import_shared3.randomId)());
562
- const renderAndWaitRef = (0, import_react5.useRef)(null);
577
+ const idRef = (0, import_react6.useRef)((0, import_shared3.randomId)());
578
+ const renderAndWaitRef = (0, import_react6.useRef)(null);
563
579
  action = __spreadValues({}, action);
564
580
  if (action.renderAndWait) {
565
581
  const renderAndWait = action.renderAndWait;
@@ -594,7 +610,7 @@ function useCopilotAction(action, dependencies) {
594
610
  }
595
611
  }
596
612
  }
597
- (0, import_react5.useEffect)(() => {
613
+ (0, import_react6.useEffect)(() => {
598
614
  setAction(idRef.current, action);
599
615
  if (chatComponentsCache.current !== null && action.render !== void 0) {
600
616
  chatComponentsCache.current.actions[action.name] = action.render;
@@ -619,7 +635,7 @@ function useCopilotAction(action, dependencies) {
619
635
  }
620
636
 
621
637
  // src/hooks/use-coagent-state-render.ts
622
- var import_react6 = require("react");
638
+ var import_react7 = require("react");
623
639
  var import_shared4 = require("@copilotkit/shared");
624
640
  function useCoAgentStateRender(action, dependencies) {
625
641
  const {
@@ -627,8 +643,8 @@ function useCoAgentStateRender(action, dependencies) {
627
643
  removeCoAgentStateRender,
628
644
  coAgentStateRenders,
629
645
  chatComponentsCache
630
- } = (0, import_react6.useContext)(CopilotContext);
631
- const idRef = (0, import_react6.useRef)((0, import_shared4.randomId)());
646
+ } = (0, import_react7.useContext)(CopilotContext);
647
+ const idRef = (0, import_react7.useRef)((0, import_shared4.randomId)());
632
648
  const key = `${action.name}-${action.nodeName || "global"}`;
633
649
  if (dependencies === void 0) {
634
650
  if (coAgentStateRenders[idRef.current]) {
@@ -640,7 +656,7 @@ function useCoAgentStateRender(action, dependencies) {
640
656
  }
641
657
  }
642
658
  }
643
- (0, import_react6.useEffect)(() => {
659
+ (0, import_react7.useEffect)(() => {
644
660
  setCoAgentStateRender(idRef.current, action);
645
661
  if (chatComponentsCache.current !== null && action.render !== void 0) {
646
662
  chatComponentsCache.current.coAgentStateRenders[key] = action.render;
@@ -660,11 +676,11 @@ function useCoAgentStateRender(action, dependencies) {
660
676
  }
661
677
 
662
678
  // src/hooks/use-make-copilot-document-readable.ts
663
- var import_react7 = require("react");
679
+ var import_react8 = require("react");
664
680
  function useMakeCopilotDocumentReadable(document, categories, dependencies = []) {
665
681
  const { addDocumentContext, removeDocumentContext } = useCopilotContext();
666
- const idRef = (0, import_react7.useRef)();
667
- (0, import_react7.useEffect)(() => {
682
+ const idRef = (0, import_react8.useRef)();
683
+ (0, import_react8.useEffect)(() => {
668
684
  const id = addDocumentContext(document, categories);
669
685
  idRef.current = id;
670
686
  return () => {
@@ -675,16 +691,16 @@ function useMakeCopilotDocumentReadable(document, categories, dependencies = [])
675
691
  }
676
692
 
677
693
  // src/hooks/use-copilot-readable.ts
678
- var import_react8 = require("react");
694
+ var import_react9 = require("react");
679
695
  function convertToJSON(description, value) {
680
696
  return `${description}: ${typeof value === "string" ? value : JSON.stringify(value)}`;
681
697
  }
682
698
  function useCopilotReadable({ description, value, parentId, categories, convert }, dependencies) {
683
699
  const { addContext, removeContext } = useCopilotContext();
684
- const idRef = (0, import_react8.useRef)();
700
+ const idRef = (0, import_react9.useRef)();
685
701
  convert = convert || convertToJSON;
686
702
  const information = convert(description, value);
687
- (0, import_react8.useEffect)(() => {
703
+ (0, import_react9.useEffect)(() => {
688
704
  const id = addContext(information, parentId, categories);
689
705
  idRef.current = id;
690
706
  return () => {
@@ -695,8 +711,7 @@ function useCopilotReadable({ description, value, parentId, categories, convert
695
711
  }
696
712
 
697
713
  // src/hooks/use-coagent.ts
698
- var import_react9 = require("react");
699
- var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
714
+ var import_react10 = require("react");
700
715
  function useCoAgent(options) {
701
716
  const isExternalStateManagement = (options2) => {
702
717
  return "state" in options2 && "setState" in options2;
@@ -705,7 +720,9 @@ function useCoAgent(options) {
705
720
  const isInternalStateManagementWithInitial = (options2) => {
706
721
  return "initialState" in options2;
707
722
  };
708
- const context = useCopilotContext();
723
+ const generalContext = useCopilotContext();
724
+ const messagesContext = useCopilotMessagesContext();
725
+ const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
709
726
  const { coagentStates, setCoagentStates } = context;
710
727
  const { appendMessage } = useCopilotChat();
711
728
  const getCoagentState = (coagentStates2, name2) => {
@@ -736,7 +753,7 @@ function useCoAgent(options) {
736
753
  };
737
754
  const coagentState = getCoagentState(coagentStates, name);
738
755
  const state = isExternalStateManagement(options) ? options.state : coagentState.state;
739
- (0, import_react9.useEffect)(() => {
756
+ (0, import_react10.useEffect)(() => {
740
757
  if (isExternalStateManagement(options)) {
741
758
  setState(options.state);
742
759
  } else if (coagentStates[name] === void 0) {
@@ -786,7 +803,7 @@ function runAgent(name, context, appendMessage, hint) {
786
803
  let previousState = null;
787
804
  for (let i = context.messages.length - 1; i >= 0; i--) {
788
805
  const message = context.messages[i];
789
- if (message instanceof import_runtime_client_gql3.AgentStateMessage && message.agentName === name) {
806
+ if (message.isAgentStateMessage() && message.agentName === name) {
790
807
  previousState = message.state;
791
808
  }
792
809
  }