@copilotkit/react-core 1.51.3-next.6 → 1.51.3-next.8

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 (102) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/chunk-77IVITG3.mjs +158 -0
  3. package/dist/chunk-77IVITG3.mjs.map +1 -0
  4. package/dist/chunk-BKMJ4LC7.mjs +119 -0
  5. package/dist/chunk-BKMJ4LC7.mjs.map +1 -0
  6. package/dist/chunk-C3YJYDK4.mjs +189 -0
  7. package/dist/chunk-C3YJYDK4.mjs.map +1 -0
  8. package/dist/{chunk-GIU66J37.mjs → chunk-DQXCQWSG.mjs} +47 -5
  9. package/dist/chunk-DQXCQWSG.mjs.map +1 -0
  10. package/dist/{chunk-HBMPXNW2.mjs → chunk-LO4RRITI.mjs} +71 -18
  11. package/dist/chunk-LO4RRITI.mjs.map +1 -0
  12. package/dist/{chunk-3G4VFRVV.mjs → chunk-NXHQDCZF.mjs} +2 -2
  13. package/dist/{chunk-FDOMAPJY.mjs → chunk-QD7EID4N.mjs} +1 -1
  14. package/dist/chunk-QD7EID4N.mjs.map +1 -0
  15. package/dist/{chunk-YTQHRJUA.mjs → chunk-VKNLTZJE.mjs} +2 -2
  16. package/dist/{chunk-4RRUJHCI.mjs → chunk-VP43SLSZ.mjs} +2 -2
  17. package/dist/{chunk-MF2ZSLBV.mjs → chunk-XZFIJ7XF.mjs} +2 -2
  18. package/dist/components/copilot-provider/copilotkit.js +437 -150
  19. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  20. package/dist/components/copilot-provider/copilotkit.mjs +5 -3
  21. package/dist/components/copilot-provider/index.js +437 -150
  22. package/dist/components/copilot-provider/index.js.map +1 -1
  23. package/dist/components/copilot-provider/index.mjs +5 -3
  24. package/dist/components/index.js +437 -150
  25. package/dist/components/index.js.map +1 -1
  26. package/dist/components/index.mjs +5 -3
  27. package/dist/context/coagent-state-renders-context.d.ts +1 -0
  28. package/dist/context/coagent-state-renders-context.js.map +1 -1
  29. package/dist/context/coagent-state-renders-context.mjs +1 -1
  30. package/dist/context/index.js.map +1 -1
  31. package/dist/context/index.mjs +1 -1
  32. package/dist/hooks/index.js +512 -212
  33. package/dist/hooks/index.js.map +1 -1
  34. package/dist/hooks/index.mjs +19 -17
  35. package/dist/hooks/use-coagent-state-render-bridge.helpers.d.ts +92 -0
  36. package/dist/hooks/use-coagent-state-render-bridge.helpers.js +231 -0
  37. package/dist/hooks/use-coagent-state-render-bridge.helpers.js.map +1 -0
  38. package/dist/hooks/use-coagent-state-render-bridge.helpers.mjs +24 -0
  39. package/dist/hooks/use-coagent-state-render-bridge.helpers.mjs.map +1 -0
  40. package/dist/hooks/use-coagent-state-render-bridge.js +334 -72
  41. package/dist/hooks/use-coagent-state-render-bridge.js.map +1 -1
  42. package/dist/hooks/use-coagent-state-render-bridge.mjs +4 -2
  43. package/dist/hooks/use-coagent-state-render-registry.d.ts +25 -0
  44. package/dist/hooks/use-coagent-state-render-registry.js +358 -0
  45. package/dist/hooks/use-coagent-state-render-registry.js.map +1 -0
  46. package/dist/hooks/use-coagent-state-render-registry.mjs +9 -0
  47. package/dist/hooks/use-coagent-state-render-registry.mjs.map +1 -0
  48. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  49. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  50. package/dist/hooks/use-copilot-chat-headless_c.js +414 -114
  51. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  52. package/dist/hooks/use-copilot-chat-headless_c.mjs +7 -5
  53. package/dist/hooks/use-copilot-chat.js +406 -106
  54. package/dist/hooks/use-copilot-chat.js.map +1 -1
  55. package/dist/hooks/use-copilot-chat.mjs +7 -5
  56. package/dist/hooks/use-copilot-chat_internal.js +406 -106
  57. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  58. package/dist/hooks/use-copilot-chat_internal.mjs +6 -4
  59. package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
  60. package/dist/index.js +651 -311
  61. package/dist/index.js.map +1 -1
  62. package/dist/index.mjs +22 -20
  63. package/dist/index.umd.js +39 -0
  64. package/dist/index.umd.js.map +1 -0
  65. package/dist/lib/copilot-task.js.map +1 -1
  66. package/dist/lib/copilot-task.mjs +6 -4
  67. package/dist/lib/index.js.map +1 -1
  68. package/dist/lib/index.mjs +6 -4
  69. package/dist/setupTests.js +1 -0
  70. package/dist/setupTests.js.map +1 -1
  71. package/dist/setupTests.mjs +1 -0
  72. package/dist/setupTests.mjs.map +1 -1
  73. package/dist/test-helpers/copilot-context.d.ts +14 -0
  74. package/dist/test-helpers/copilot-context.js +128 -0
  75. package/dist/test-helpers/copilot-context.js.map +1 -0
  76. package/dist/test-helpers/copilot-context.mjs +74 -0
  77. package/dist/test-helpers/copilot-context.mjs.map +1 -0
  78. package/dist/types/index.mjs +1 -1
  79. package/dist/v2/index.umd.js +2 -0
  80. package/dist/v2/index.umd.js.map +1 -0
  81. package/package.json +8 -6
  82. package/rollup.config.mjs +92 -0
  83. package/src/components/copilot-provider/copilotkit.tsx +56 -0
  84. package/src/context/coagent-state-renders-context.tsx +1 -0
  85. package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +100 -0
  86. package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +892 -37
  87. package/src/hooks/__tests__/use-coagent-state-render.test.tsx +334 -0
  88. package/src/hooks/use-coagent-state-render-bridge.helpers.ts +311 -0
  89. package/src/hooks/use-coagent-state-render-bridge.tsx +25 -120
  90. package/src/hooks/use-coagent-state-render-registry.ts +215 -0
  91. package/src/hooks/use-copilot-chat_internal.ts +93 -34
  92. package/src/setupTests.ts +1 -0
  93. package/src/test-helpers/copilot-context.ts +91 -0
  94. package/dist/chunk-3X3I7OJV.mjs +0 -172
  95. package/dist/chunk-3X3I7OJV.mjs.map +0 -1
  96. package/dist/chunk-FDOMAPJY.mjs.map +0 -1
  97. package/dist/chunk-GIU66J37.mjs.map +0 -1
  98. package/dist/chunk-HBMPXNW2.mjs.map +0 -1
  99. /package/dist/{chunk-3G4VFRVV.mjs.map → chunk-NXHQDCZF.mjs.map} +0 -0
  100. /package/dist/{chunk-YTQHRJUA.mjs.map → chunk-VKNLTZJE.mjs.map} +0 -0
  101. /package/dist/{chunk-4RRUJHCI.mjs.map → chunk-VP43SLSZ.mjs.map} +0 -0
  102. /package/dist/{chunk-MF2ZSLBV.mjs.map → chunk-XZFIJ7XF.mjs.map} +0 -0
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, { get: all[name], enumerable: true });
23
+ };
24
+ var __copyProps = (to, from, except, desc) => {
25
+ if (from && typeof from === "object" || typeof from === "function") {
26
+ for (let key of __getOwnPropNames(from))
27
+ if (!__hasOwnProp.call(to, key) && key !== except)
28
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
+ }
30
+ return to;
31
+ };
32
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
+ var __async = (__this, __arguments, generator) => {
34
+ return new Promise((resolve, reject) => {
35
+ var fulfilled = (value) => {
36
+ try {
37
+ step(generator.next(value));
38
+ } catch (e) {
39
+ reject(e);
40
+ }
41
+ };
42
+ var rejected = (value) => {
43
+ try {
44
+ step(generator.throw(value));
45
+ } catch (e) {
46
+ reject(e);
47
+ }
48
+ };
49
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
50
+ step((generator = generator.apply(__this, __arguments)).next());
51
+ });
52
+ };
53
+
54
+ // src/test-helpers/copilot-context.ts
55
+ var copilot_context_exports = {};
56
+ __export(copilot_context_exports, {
57
+ createTestCopilotContext: () => createTestCopilotContext
58
+ });
59
+ module.exports = __toCommonJS(copilot_context_exports);
60
+ var noop = () => {
61
+ };
62
+ var copilotApiConfig = {
63
+ chatApiEndpoint: "http://localhost",
64
+ headers: {}
65
+ };
66
+ function createTestCopilotContext(overrides = {}) {
67
+ return __spreadValues({
68
+ actions: {},
69
+ setAction: noop,
70
+ removeAction: noop,
71
+ setRegisteredActions: () => "action-id",
72
+ removeRegisteredAction: noop,
73
+ chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },
74
+ getFunctionCallHandler: () => () => __async(this, null, function* () {
75
+ }),
76
+ addContext: () => "context-id",
77
+ removeContext: noop,
78
+ getAllContext: () => [],
79
+ getContextString: () => "",
80
+ addDocumentContext: () => "document-id",
81
+ removeDocumentContext: noop,
82
+ getDocumentsContext: () => [],
83
+ isLoading: false,
84
+ setIsLoading: noop,
85
+ chatSuggestionConfiguration: {},
86
+ addChatSuggestionConfiguration: noop,
87
+ removeChatSuggestionConfiguration: noop,
88
+ chatInstructions: "",
89
+ setChatInstructions: noop,
90
+ additionalInstructions: [],
91
+ setAdditionalInstructions: noop,
92
+ copilotApiConfig,
93
+ showDevConsole: false,
94
+ coagentStates: {},
95
+ setCoagentStates: noop,
96
+ coagentStatesRef: { current: {} },
97
+ setCoagentStatesWithRef: noop,
98
+ agentSession: null,
99
+ setAgentSession: noop,
100
+ agentLock: null,
101
+ threadId: "",
102
+ setThreadId: noop,
103
+ runId: null,
104
+ setRunId: noop,
105
+ chatAbortControllerRef: { current: null },
106
+ forwardedParameters: {},
107
+ availableAgents: [],
108
+ extensions: {},
109
+ setExtensions: noop,
110
+ interruptActions: {},
111
+ setInterruptAction: noop,
112
+ removeInterruptAction: noop,
113
+ interruptEventQueue: {},
114
+ addInterruptEvent: noop,
115
+ resolveInterruptEvent: noop,
116
+ onError: noop,
117
+ bannerError: null,
118
+ setBannerError: noop,
119
+ internalErrorHandlers: {},
120
+ setInternalErrorHandler: noop,
121
+ removeInternalErrorHandler: noop
122
+ }, overrides);
123
+ }
124
+ // Annotate the CommonJS export names for ESM import in node:
125
+ 0 && (module.exports = {
126
+ createTestCopilotContext
127
+ });
128
+ //# sourceMappingURL=copilot-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/test-helpers/copilot-context.ts"],"sourcesContent":["import type { CopilotContextParams, CopilotApiConfig } from \"../context\";\n\nconst noop = () => {};\n\nconst copilotApiConfig: CopilotApiConfig = {\n chatApiEndpoint: \"http://localhost\",\n headers: {},\n};\n\nexport function createTestCopilotContext(\n overrides: Partial<CopilotContextParams> = {},\n): CopilotContextParams {\n return {\n actions: {},\n setAction: noop,\n removeAction: noop,\n\n setRegisteredActions: () => \"action-id\",\n removeRegisteredAction: noop,\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getFunctionCallHandler: () => async () => {},\n\n addContext: () => \"context-id\",\n removeContext: noop,\n getAllContext: () => [],\n getContextString: () => \"\",\n\n addDocumentContext: () => \"document-id\",\n removeDocumentContext: noop,\n getDocumentsContext: () => [],\n\n isLoading: false,\n setIsLoading: noop,\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: noop,\n removeChatSuggestionConfiguration: noop,\n\n chatInstructions: \"\",\n setChatInstructions: noop,\n\n additionalInstructions: [],\n setAdditionalInstructions: noop,\n\n copilotApiConfig,\n\n showDevConsole: false,\n\n coagentStates: {},\n setCoagentStates: noop,\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: noop,\n\n agentSession: null,\n setAgentSession: noop,\n\n agentLock: null,\n\n threadId: \"\",\n setThreadId: noop,\n\n runId: null,\n setRunId: noop,\n\n chatAbortControllerRef: { current: null },\n\n forwardedParameters: {},\n availableAgents: [],\n\n extensions: {},\n setExtensions: noop,\n\n interruptActions: {},\n setInterruptAction: noop,\n removeInterruptAction: noop,\n interruptEventQueue: {},\n addInterruptEvent: noop,\n resolveInterruptEvent: noop,\n\n onError: noop,\n\n bannerError: null,\n setBannerError: noop,\n internalErrorHandlers: {},\n setInternalErrorHandler: noop,\n removeInternalErrorHandler: noop,\n\n ...overrides,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,mBAAqC;AAAA,EACzC,iBAAiB;AAAA,EACjB,SAAS,CAAC;AACZ;AAEO,SAAS,yBACd,YAA2C,CAAC,GACtB;AACtB,SAAO;AAAA,IACL,SAAS,CAAC;AAAA,IACV,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,sBAAsB,MAAM;AAAA,IAC5B,wBAAwB;AAAA,IAExB,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAAA,IACzE,wBAAwB,MAAM,MAAY;AAAA,IAAC;AAAA,IAE3C,YAAY,MAAM;AAAA,IAClB,eAAe;AAAA,IACf,eAAe,MAAM,CAAC;AAAA,IACtB,kBAAkB,MAAM;AAAA,IAExB,oBAAoB,MAAM;AAAA,IAC1B,uBAAuB;AAAA,IACvB,qBAAqB,MAAM,CAAC;AAAA,IAE5B,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,6BAA6B,CAAC;AAAA,IAC9B,gCAAgC;AAAA,IAChC,mCAAmC;AAAA,IAEnC,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IAErB,wBAAwB,CAAC;AAAA,IACzB,2BAA2B;AAAA,IAE3B;AAAA,IAEA,gBAAgB;AAAA,IAEhB,eAAe,CAAC;AAAA,IAChB,kBAAkB;AAAA,IAClB,kBAAkB,EAAE,SAAS,CAAC,EAAE;AAAA,IAChC,yBAAyB;AAAA,IAEzB,cAAc;AAAA,IACd,iBAAiB;AAAA,IAEjB,WAAW;AAAA,IAEX,UAAU;AAAA,IACV,aAAa;AAAA,IAEb,OAAO;AAAA,IACP,UAAU;AAAA,IAEV,wBAAwB,EAAE,SAAS,KAAK;AAAA,IAExC,qBAAqB,CAAC;AAAA,IACtB,iBAAiB,CAAC;AAAA,IAElB,YAAY,CAAC;AAAA,IACb,eAAe;AAAA,IAEf,kBAAkB,CAAC;AAAA,IACnB,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,qBAAqB,CAAC;AAAA,IACtB,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IAEvB,SAAS;AAAA,IAET,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,uBAAuB,CAAC;AAAA,IACxB,yBAAyB;AAAA,IACzB,4BAA4B;AAAA,KAEzB;AAEP;","names":[]}
@@ -0,0 +1,74 @@
1
+ import {
2
+ __async,
3
+ __spreadValues
4
+ } from "../chunk-SKC7AJIV.mjs";
5
+
6
+ // src/test-helpers/copilot-context.ts
7
+ var noop = () => {
8
+ };
9
+ var copilotApiConfig = {
10
+ chatApiEndpoint: "http://localhost",
11
+ headers: {}
12
+ };
13
+ function createTestCopilotContext(overrides = {}) {
14
+ return __spreadValues({
15
+ actions: {},
16
+ setAction: noop,
17
+ removeAction: noop,
18
+ setRegisteredActions: () => "action-id",
19
+ removeRegisteredAction: noop,
20
+ chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },
21
+ getFunctionCallHandler: () => () => __async(this, null, function* () {
22
+ }),
23
+ addContext: () => "context-id",
24
+ removeContext: noop,
25
+ getAllContext: () => [],
26
+ getContextString: () => "",
27
+ addDocumentContext: () => "document-id",
28
+ removeDocumentContext: noop,
29
+ getDocumentsContext: () => [],
30
+ isLoading: false,
31
+ setIsLoading: noop,
32
+ chatSuggestionConfiguration: {},
33
+ addChatSuggestionConfiguration: noop,
34
+ removeChatSuggestionConfiguration: noop,
35
+ chatInstructions: "",
36
+ setChatInstructions: noop,
37
+ additionalInstructions: [],
38
+ setAdditionalInstructions: noop,
39
+ copilotApiConfig,
40
+ showDevConsole: false,
41
+ coagentStates: {},
42
+ setCoagentStates: noop,
43
+ coagentStatesRef: { current: {} },
44
+ setCoagentStatesWithRef: noop,
45
+ agentSession: null,
46
+ setAgentSession: noop,
47
+ agentLock: null,
48
+ threadId: "",
49
+ setThreadId: noop,
50
+ runId: null,
51
+ setRunId: noop,
52
+ chatAbortControllerRef: { current: null },
53
+ forwardedParameters: {},
54
+ availableAgents: [],
55
+ extensions: {},
56
+ setExtensions: noop,
57
+ interruptActions: {},
58
+ setInterruptAction: noop,
59
+ removeInterruptAction: noop,
60
+ interruptEventQueue: {},
61
+ addInterruptEvent: noop,
62
+ resolveInterruptEvent: noop,
63
+ onError: noop,
64
+ bannerError: null,
65
+ setBannerError: noop,
66
+ internalErrorHandlers: {},
67
+ setInternalErrorHandler: noop,
68
+ removeInternalErrorHandler: noop
69
+ }, overrides);
70
+ }
71
+ export {
72
+ createTestCopilotContext
73
+ };
74
+ //# sourceMappingURL=copilot-context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/test-helpers/copilot-context.ts"],"sourcesContent":["import type { CopilotContextParams, CopilotApiConfig } from \"../context\";\n\nconst noop = () => {};\n\nconst copilotApiConfig: CopilotApiConfig = {\n chatApiEndpoint: \"http://localhost\",\n headers: {},\n};\n\nexport function createTestCopilotContext(\n overrides: Partial<CopilotContextParams> = {},\n): CopilotContextParams {\n return {\n actions: {},\n setAction: noop,\n removeAction: noop,\n\n setRegisteredActions: () => \"action-id\",\n removeRegisteredAction: noop,\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getFunctionCallHandler: () => async () => {},\n\n addContext: () => \"context-id\",\n removeContext: noop,\n getAllContext: () => [],\n getContextString: () => \"\",\n\n addDocumentContext: () => \"document-id\",\n removeDocumentContext: noop,\n getDocumentsContext: () => [],\n\n isLoading: false,\n setIsLoading: noop,\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: noop,\n removeChatSuggestionConfiguration: noop,\n\n chatInstructions: \"\",\n setChatInstructions: noop,\n\n additionalInstructions: [],\n setAdditionalInstructions: noop,\n\n copilotApiConfig,\n\n showDevConsole: false,\n\n coagentStates: {},\n setCoagentStates: noop,\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: noop,\n\n agentSession: null,\n setAgentSession: noop,\n\n agentLock: null,\n\n threadId: \"\",\n setThreadId: noop,\n\n runId: null,\n setRunId: noop,\n\n chatAbortControllerRef: { current: null },\n\n forwardedParameters: {},\n availableAgents: [],\n\n extensions: {},\n setExtensions: noop,\n\n interruptActions: {},\n setInterruptAction: noop,\n removeInterruptAction: noop,\n interruptEventQueue: {},\n addInterruptEvent: noop,\n resolveInterruptEvent: noop,\n\n onError: noop,\n\n bannerError: null,\n setBannerError: noop,\n internalErrorHandlers: {},\n setInternalErrorHandler: noop,\n removeInternalErrorHandler: noop,\n\n ...overrides,\n };\n}\n"],"mappings":";;;;;;AAEA,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,mBAAqC;AAAA,EACzC,iBAAiB;AAAA,EACjB,SAAS,CAAC;AACZ;AAEO,SAAS,yBACd,YAA2C,CAAC,GACtB;AACtB,SAAO;AAAA,IACL,SAAS,CAAC;AAAA,IACV,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,sBAAsB,MAAM;AAAA,IAC5B,wBAAwB;AAAA,IAExB,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAAA,IACzE,wBAAwB,MAAM,MAAY;AAAA,IAAC;AAAA,IAE3C,YAAY,MAAM;AAAA,IAClB,eAAe;AAAA,IACf,eAAe,MAAM,CAAC;AAAA,IACtB,kBAAkB,MAAM;AAAA,IAExB,oBAAoB,MAAM;AAAA,IAC1B,uBAAuB;AAAA,IACvB,qBAAqB,MAAM,CAAC;AAAA,IAE5B,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,6BAA6B,CAAC;AAAA,IAC9B,gCAAgC;AAAA,IAChC,mCAAmC;AAAA,IAEnC,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IAErB,wBAAwB,CAAC;AAAA,IACzB,2BAA2B;AAAA,IAE3B;AAAA,IAEA,gBAAgB;AAAA,IAEhB,eAAe,CAAC;AAAA,IAChB,kBAAkB;AAAA,IAClB,kBAAkB,EAAE,SAAS,CAAC,EAAE;AAAA,IAChC,yBAAyB;AAAA,IAEzB,cAAc;AAAA,IACd,iBAAiB;AAAA,IAEjB,WAAW;AAAA,IAEX,UAAU;AAAA,IACV,aAAa;AAAA,IAEb,OAAO;AAAA,IACP,UAAU;AAAA,IAEV,wBAAwB,EAAE,SAAS,KAAK;AAAA,IAExC,qBAAqB,CAAC;AAAA,IACtB,iBAAiB,CAAC;AAAA,IAElB,YAAY,CAAC;AAAA,IACb,eAAe;AAAA,IAEf,kBAAkB,CAAC;AAAA,IACnB,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,qBAAqB,CAAC;AAAA,IACtB,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IAEvB,SAAS;AAAA,IAET,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,uBAAuB,CAAC;AAAA,IACxB,yBAAyB;AAAA,IACzB,4BAA4B;AAAA,KAEzB;AAEP;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import "../chunk-FD6FGKYY.mjs";
2
- import "../chunk-6YOKPWQ7.mjs";
3
2
  import "../chunk-36KQV2NA.mjs";
3
+ import "../chunk-6YOKPWQ7.mjs";
4
4
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@copilotkitnext/core"),require("@copilotkitnext/react")):"function"==typeof define&&define.amd?define(["exports","@copilotkitnext/core","@copilotkitnext/react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CopilotKitReactCoreV2={},e.CopilotKitNextCore,e.CopilotKitNextReact)}(this,function(e,t,o){"use strict";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&i.firstChild?i.insertBefore(n,i.firstChild):i.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}('@import "@copilotkitnext/react/styles.css";'),Object.keys(t).forEach(function(o){"default"===o||Object.prototype.hasOwnProperty.call(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[o]}})}),Object.keys(o).forEach(function(t){"default"===t||Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return o[t]}})})});
2
+ //# sourceMappingURL=index.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode"],"mappings":"4ZAAA,SAAqBA,EAAKC,QACX,IAARA,IAAiBA,EAAM,CAAA,GAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAgC,oBAAbC,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,GAnBW,CAqBzD","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "1.51.3-next.6",
12
+ "version": "1.51.3-next.8",
13
13
  "sideEffects": [
14
14
  "**/*.css"
15
15
  ],
@@ -28,6 +28,8 @@
28
28
  },
29
29
  "./v2/styles.css": "./dist/v2/index.css"
30
30
  },
31
+ "unpkg": "./dist/index.umd.js",
32
+ "jsdelivr": "./dist/index.umd.js",
31
33
  "types": "./dist/index.d.ts",
32
34
  "license": "MIT",
33
35
  "peerDependencies": {
@@ -59,10 +61,10 @@
59
61
  "@scarf/scarf": "^1.3.0",
60
62
  "react-markdown": "^8.0.7",
61
63
  "untruncate-json": "^0.0.1",
62
- "@copilotkit/runtime-client-gql": "1.51.3-next.6",
63
- "@copilotkit/shared": "1.51.3-next.6",
64
- "@copilotkitnext/core": "1.51.3-next.6",
65
- "@copilotkitnext/react": "1.51.3-next.6"
64
+ "@copilotkit/runtime-client-gql": "1.51.3-next.8",
65
+ "@copilotkit/shared": "1.51.3-next.8",
66
+ "@copilotkitnext/core": "1.51.3-next.8",
67
+ "@copilotkitnext/react": "1.51.3-next.8"
66
68
  },
67
69
  "keywords": [
68
70
  "copilotkit",
@@ -77,7 +79,7 @@
77
79
  "textarea"
78
80
  ],
79
81
  "scripts": {
80
- "build": "tsup --clean",
82
+ "build": "tsup --clean && rollup -c rollup.config.mjs",
81
83
  "dev": "tsup --watch",
82
84
  "test": "jest",
83
85
  "check-types": "tsc --noEmit",
@@ -0,0 +1,92 @@
1
+ import resolve from '@rollup/plugin-node-resolve';
2
+ import commonjs from '@rollup/plugin-commonjs';
3
+ import typescript from '@rollup/plugin-typescript';
4
+ import terser from '@rollup/plugin-terser';
5
+ import json from '@rollup/plugin-json';
6
+ import postcss from 'rollup-plugin-postcss';
7
+
8
+ function onwarn(warning, warn) {
9
+ // Ignore circular dependency warnings from node_modules
10
+ if (warning.code === 'CIRCULAR_DEPENDENCY' && warning.ids?.some(id => id.includes('node_modules'))) return;
11
+ // Ignore "this" rewritten to "undefined" warnings from node_modules
12
+ if (warning.code === 'THIS_IS_UNDEFINED' && warning.id?.includes('node_modules')) return;
13
+ // Ignore TypeScript plugin warnings (module mismatch, tslib, type errors during UMD build)
14
+ if (warning.code === 'PLUGIN_WARNING' && warning.plugin === 'typescript') return;
15
+ // Ignore "use client" directive warnings (expected for React Server Components)
16
+ if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message?.includes('"use client"')) return;
17
+ warn(warning);
18
+ }
19
+
20
+ const commonPlugins = [
21
+ postcss({ inject: true, minimize: true }),
22
+ resolve({ browser: true }),
23
+ commonjs(),
24
+ json(),
25
+ typescript({
26
+ tsconfig: './tsconfig.json',
27
+ declaration: false,
28
+ declarationMap: false,
29
+ declarationDir: undefined,
30
+ compilerOptions: {
31
+ declaration: false,
32
+ declarationMap: false,
33
+ declarationDir: undefined,
34
+ target: 'ES2017',
35
+ module: 'ESNext',
36
+ },
37
+ }),
38
+ terser(),
39
+ ];
40
+
41
+ const commonExternal = [
42
+ 'react',
43
+ 'react-dom',
44
+ '@copilotkit/shared',
45
+ '@copilotkit/runtime-client-gql',
46
+ '@copilotkitnext/core',
47
+ '@copilotkitnext/react',
48
+ '@ag-ui/client',
49
+ 'zod',
50
+ ];
51
+
52
+ const commonGlobals = {
53
+ 'react': 'React',
54
+ 'react-dom': 'ReactDOM',
55
+ '@copilotkit/shared': 'CopilotKitShared',
56
+ '@copilotkit/runtime-client-gql': 'CopilotKitRuntimeClientGQL',
57
+ '@copilotkitnext/core': 'CopilotKitNextCore',
58
+ '@copilotkitnext/react': 'CopilotKitNextReact',
59
+ '@ag-ui/client': 'AgUIClient',
60
+ 'zod': 'Zod',
61
+ };
62
+
63
+ export default [
64
+ {
65
+ input: 'src/index.tsx',
66
+ output: {
67
+ file: 'dist/index.umd.js',
68
+ format: 'umd',
69
+ name: 'CopilotKitReactCore',
70
+ sourcemap: true,
71
+ inlineDynamicImports: true,
72
+ globals: commonGlobals,
73
+ },
74
+ external: commonExternal,
75
+ onwarn,
76
+ plugins: commonPlugins,
77
+ },
78
+ {
79
+ input: 'src/v2/index.ts',
80
+ output: {
81
+ file: 'dist/v2/index.umd.js',
82
+ format: 'umd',
83
+ name: 'CopilotKitReactCoreV2',
84
+ sourcemap: true,
85
+ inlineDynamicImports: true,
86
+ globals: commonGlobals,
87
+ },
88
+ external: commonExternal,
89
+ onwarn,
90
+ plugins: commonPlugins,
91
+ },
92
+ ];
@@ -19,6 +19,7 @@ import {
19
19
  CopilotChatConfigurationProvider,
20
20
  CopilotKitInspector,
21
21
  CopilotKitProvider as CopilotKitNextProvider,
22
+ useCopilotKit,
22
23
  } from "@copilotkitnext/react";
23
24
  import {
24
25
  CopilotContext,
@@ -26,6 +27,7 @@ import {
26
27
  ChatComponentsCache,
27
28
  AgentSession,
28
29
  AuthState,
30
+ useCopilotContext,
29
31
  } from "../../context/copilot-context";
30
32
  import useTree from "../../hooks/use-tree";
31
33
  import { CopilotChatSuggestionConfiguration, DocumentPointer } from "../../types";
@@ -89,6 +91,59 @@ export function CopilotKit({ children, ...props }: CopilotKitProps) {
89
91
  );
90
92
  }
91
93
 
94
+ /**
95
+ * Bridge component that subscribes to v2.x copilotkit core error events
96
+ * and forwards them to v1.x error handling system.
97
+ * This ensures only ONE subscription exists regardless of how many times
98
+ * Chat components are rendered.
99
+ */
100
+ function CopilotKitErrorBridge() {
101
+ const { copilotkit } = useCopilotKit();
102
+ const { onError, copilotApiConfig } = useCopilotContext();
103
+
104
+ useEffect(() => {
105
+ if (!copilotkit) return;
106
+
107
+ const subscription = copilotkit.subscribe({
108
+ onError: async (event) => {
109
+ // Convert v2.x error event to v1.x CopilotErrorEvent format
110
+ const errorEvent: CopilotErrorEvent = {
111
+ type: "error",
112
+ timestamp: Date.now(),
113
+ context: {
114
+ source: "agent",
115
+ request: {
116
+ operation: event.code || "unknown",
117
+ url: copilotApiConfig?.chatApiEndpoint,
118
+ startTime: Date.now(),
119
+ },
120
+ technical: {
121
+ environment: "browser",
122
+ userAgent: typeof navigator !== "undefined" ? navigator.userAgent : undefined,
123
+ stackTrace: event.error.stack,
124
+ },
125
+ // Add additional context from v2.x event
126
+ ...event.context,
127
+ },
128
+ error: event.error,
129
+ };
130
+
131
+ try {
132
+ await onError(errorEvent);
133
+ } catch (handlerError) {
134
+ console.error("Error in onError handler:", handlerError);
135
+ }
136
+ },
137
+ });
138
+
139
+ return () => {
140
+ subscription.unsubscribe();
141
+ };
142
+ }, [copilotkit, onError, copilotApiConfig]);
143
+
144
+ return null;
145
+ }
146
+
92
147
  export function CopilotKitInternal(cpkProps: CopilotKitProps) {
93
148
  const { children, ...props } = cpkProps;
94
149
 
@@ -592,6 +647,7 @@ export function CopilotKitInternal(cpkProps: CopilotKitProps) {
592
647
  }}
593
648
  >
594
649
  <CopilotListeners />
650
+ <CopilotKitErrorBridge />
595
651
  <CoAgentStateRendersProvider>
596
652
  <MessagesTapProvider>
597
653
  <CopilotMessages>
@@ -13,6 +13,7 @@ interface StateRenderClaim {
13
13
  stateRenderId: string;
14
14
  stateSnapshot?: any;
15
15
  runId?: string;
16
+ messageIndex?: number;
16
17
  locked?: boolean;
17
18
  }
18
19
 
@@ -0,0 +1,100 @@
1
+ import {
2
+ ClaimAction,
3
+ resolveClaim,
4
+ selectSnapshot,
5
+ type ClaimsByMessageId,
6
+ type SnapshotCaches,
7
+ type StateRenderContext,
8
+ } from "../use-coagent-state-render-bridge.helpers";
9
+
10
+ describe("useCoAgentStateRenderBridge helpers", () => {
11
+ describe("resolveClaim", () => {
12
+ it("updates runId for an existing claim", () => {
13
+ const claims: ClaimsByMessageId = {
14
+ msg1: { stateRenderId: "render-a", runId: "pending" },
15
+ };
16
+ const context: StateRenderContext = {
17
+ agentId: "agent-1",
18
+ stateRenderId: "render-a",
19
+ messageId: "msg1",
20
+ runId: "run-123",
21
+ };
22
+
23
+ const result = resolveClaim({ claims, context, stateSnapshot: { step: 1 } });
24
+ expect(result.action).toBe(ClaimAction.Existing);
25
+ expect(result.canRender).toBe(true);
26
+ expect(result.updateRunId).toBe("run-123");
27
+ });
28
+
29
+ it("overrides when a newer message index arrives", () => {
30
+ const claims: ClaimsByMessageId = {
31
+ msg1: {
32
+ stateRenderId: "render-a",
33
+ runId: "run-1",
34
+ messageIndex: 0,
35
+ stateSnapshot: { step: 2 },
36
+ },
37
+ };
38
+ const context: StateRenderContext = {
39
+ agentId: "agent-1",
40
+ stateRenderId: "render-a",
41
+ messageId: "msg2",
42
+ runId: "run-1",
43
+ messageIndex: 1,
44
+ };
45
+
46
+ const result = resolveClaim({ claims, context, stateSnapshot: { step: 2 } });
47
+ expect(result.action).toBe(ClaimAction.Override);
48
+ expect(result.canRender).toBe(true);
49
+ expect(result.nextClaim).toMatchObject({
50
+ stateRenderId: "render-a",
51
+ runId: "run-1",
52
+ messageIndex: 1,
53
+ });
54
+ expect(result.lockOthers).toBe(true);
55
+ });
56
+
57
+ });
58
+
59
+ describe("selectSnapshot", () => {
60
+ const caches: SnapshotCaches = {
61
+ byStateRenderAndRun: {},
62
+ byMessageId: {},
63
+ };
64
+
65
+ it("prefers the explicit state snapshot prop", () => {
66
+ const result = selectSnapshot({
67
+ messageId: "msg1",
68
+ stateRenderId: "render-a",
69
+ effectiveRunId: "run-1",
70
+ stateSnapshotProp: "{\"phase\":\"planning\"}",
71
+ agentState: { phase: "ignored" },
72
+ agentMessages: [{ id: "assistant-1", role: "assistant" }],
73
+ caches,
74
+ });
75
+
76
+ expect(result.snapshot).toEqual({ phase: "planning" });
77
+ expect(result.hasSnapshotKeys).toBe(true);
78
+ });
79
+
80
+ it("falls back to cached snapshots for non-latest assistant messages", () => {
81
+ const result = selectSnapshot({
82
+ messageId: "msg-old",
83
+ stateRenderId: "render-a",
84
+ effectiveRunId: "run-1",
85
+ agentState: { phase: "live" },
86
+ agentMessages: [{ id: "assistant-latest", role: "assistant" }],
87
+ caches: {
88
+ byStateRenderAndRun: {
89
+ "render-a::run-1": { phase: "cached" },
90
+ },
91
+ byMessageId: {},
92
+ },
93
+ });
94
+
95
+ expect(result.snapshot).toBeUndefined();
96
+ expect(result.cachedSnapshot).toEqual({ phase: "cached" });
97
+ expect(result.snapshotForClaim).toEqual({ phase: "cached" });
98
+ });
99
+ });
100
+ });