@copilotkit/react-core 1.51.3-next.6 → 1.51.3-next.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 (97) hide show
  1. package/CHANGELOG.md +10 -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/lib/copilot-task.js.map +1 -1
  64. package/dist/lib/copilot-task.mjs +6 -4
  65. package/dist/lib/index.js.map +1 -1
  66. package/dist/lib/index.mjs +6 -4
  67. package/dist/setupTests.js +1 -0
  68. package/dist/setupTests.js.map +1 -1
  69. package/dist/setupTests.mjs +1 -0
  70. package/dist/setupTests.mjs.map +1 -1
  71. package/dist/test-helpers/copilot-context.d.ts +14 -0
  72. package/dist/test-helpers/copilot-context.js +128 -0
  73. package/dist/test-helpers/copilot-context.js.map +1 -0
  74. package/dist/test-helpers/copilot-context.mjs +74 -0
  75. package/dist/test-helpers/copilot-context.mjs.map +1 -0
  76. package/dist/types/index.mjs +1 -1
  77. package/package.json +5 -5
  78. package/src/components/copilot-provider/copilotkit.tsx +56 -0
  79. package/src/context/coagent-state-renders-context.tsx +1 -0
  80. package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +100 -0
  81. package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +892 -37
  82. package/src/hooks/__tests__/use-coagent-state-render.test.tsx +334 -0
  83. package/src/hooks/use-coagent-state-render-bridge.helpers.ts +311 -0
  84. package/src/hooks/use-coagent-state-render-bridge.tsx +25 -120
  85. package/src/hooks/use-coagent-state-render-registry.ts +215 -0
  86. package/src/hooks/use-copilot-chat_internal.ts +93 -34
  87. package/src/setupTests.ts +1 -0
  88. package/src/test-helpers/copilot-context.ts +91 -0
  89. package/dist/chunk-3X3I7OJV.mjs +0 -172
  90. package/dist/chunk-3X3I7OJV.mjs.map +0 -1
  91. package/dist/chunk-FDOMAPJY.mjs.map +0 -1
  92. package/dist/chunk-GIU66J37.mjs.map +0 -1
  93. package/dist/chunk-HBMPXNW2.mjs.map +0 -1
  94. /package/dist/{chunk-3G4VFRVV.mjs.map → chunk-NXHQDCZF.mjs.map} +0 -0
  95. /package/dist/{chunk-YTQHRJUA.mjs.map → chunk-VKNLTZJE.mjs.map} +0 -0
  96. /package/dist/{chunk-4RRUJHCI.mjs.map → chunk-VP43SLSZ.mjs.map} +0 -0
  97. /package/dist/{chunk-MF2ZSLBV.mjs.map → chunk-XZFIJ7XF.mjs.map} +0 -0
@@ -1,7 +1,13 @@
1
1
  import "../chunk-A6NKSGH3.mjs";
2
+ import {
3
+ useLangGraphInterrupt
4
+ } from "../chunk-4RRMC7L2.mjs";
2
5
  import {
3
6
  useMakeCopilotDocumentReadable
4
7
  } from "../chunk-7IBF6RBW.mjs";
8
+ import {
9
+ useCopilotReadable
10
+ } from "../chunk-Z6JV2LRY.mjs";
5
11
  import {
6
12
  useCopilotRuntimeClient
7
13
  } from "../chunk-6ESSSQ7Q.mjs";
@@ -9,8 +15,8 @@ import {
9
15
  useDefaultTool
10
16
  } from "../chunk-BUSWSDYO.mjs";
11
17
  import {
12
- useLangGraphInterrupt
13
- } from "../chunk-4RRMC7L2.mjs";
18
+ useCoAgent
19
+ } from "../chunk-ZYTXB6HH.mjs";
14
20
  import {
15
21
  useCopilotAdditionalInstructions
16
22
  } from "../chunk-ABWT4DRT.mjs";
@@ -31,39 +37,35 @@ import {
31
37
  } from "../chunk-7DTB7S5V.mjs";
32
38
  import {
33
39
  useCopilotChatHeadless_c
34
- } from "../chunk-MF2ZSLBV.mjs";
40
+ } from "../chunk-XZFIJ7XF.mjs";
35
41
  import {
36
42
  useCopilotChatSuggestions
37
43
  } from "../chunk-XDFVCQD3.mjs";
38
44
  import {
39
45
  useCopilotChat
40
- } from "../chunk-3G4VFRVV.mjs";
46
+ } from "../chunk-NXHQDCZF.mjs";
41
47
  import {
42
48
  useCopilotChatInternal
43
- } from "../chunk-HBMPXNW2.mjs";
44
- import {
45
- useLangGraphInterruptRender
46
- } from "../chunk-VV56AVPB.mjs";
49
+ } from "../chunk-LO4RRITI.mjs";
47
50
  import {
48
51
  useLazyToolRenderer
49
52
  } from "../chunk-ZVF5Q6IH.mjs";
50
53
  import {
51
- useCopilotReadable
52
- } from "../chunk-Z6JV2LRY.mjs";
54
+ useLangGraphInterruptRender
55
+ } from "../chunk-VV56AVPB.mjs";
56
+ import "../chunk-I76HKHPJ.mjs";
53
57
  import {
54
58
  useCoAgentStateRender
55
- } from "../chunk-YTQHRJUA.mjs";
56
- import {
57
- useCoAgent
58
- } from "../chunk-ZYTXB6HH.mjs";
59
- import "../chunk-I76HKHPJ.mjs";
59
+ } from "../chunk-VKNLTZJE.mjs";
60
60
  import "../chunk-6PUNP7CD.mjs";
61
61
  import "../chunk-O7ARI5CV.mjs";
62
- import "../chunk-3X3I7OJV.mjs";
62
+ import "../chunk-BKMJ4LC7.mjs";
63
63
  import "../chunk-NB2FKV2V.mjs";
64
64
  import "../chunk-LMHB2D4J.mjs";
65
+ import "../chunk-77IVITG3.mjs";
66
+ import "../chunk-C3YJYDK4.mjs";
65
67
  import "../chunk-EFL5OBKN.mjs";
66
- import "../chunk-FDOMAPJY.mjs";
68
+ import "../chunk-QD7EID4N.mjs";
67
69
  import "../chunk-AFNWX62Q.mjs";
68
70
  import "../chunk-DMLQZG75.mjs";
69
71
  import "../chunk-SKC7AJIV.mjs";
@@ -0,0 +1,92 @@
1
+ declare enum RenderStatus {
2
+ InProgress = "inProgress",
3
+ Complete = "complete"
4
+ }
5
+ declare enum ClaimAction {
6
+ Create = "create",
7
+ Override = "override",
8
+ Existing = "existing",
9
+ Block = "block"
10
+ }
11
+ interface StateRenderContext {
12
+ agentId: string;
13
+ stateRenderId: string;
14
+ messageId: string;
15
+ runId: string;
16
+ messageIndex?: number;
17
+ }
18
+ interface Claim {
19
+ stateRenderId: string;
20
+ runId?: string;
21
+ stateSnapshot?: any;
22
+ locked?: boolean;
23
+ messageIndex?: number;
24
+ }
25
+ type ClaimsByMessageId = Record<string, Claim>;
26
+ interface ClaimResolution {
27
+ canRender: boolean;
28
+ action: ClaimAction;
29
+ nextClaim?: Claim;
30
+ lockOthers?: boolean;
31
+ updateRunId?: string;
32
+ }
33
+ interface SnapshotCaches {
34
+ byStateRenderAndRun: Record<string, any>;
35
+ byMessageId: Record<string, any>;
36
+ }
37
+ interface SnapshotSelectionInput {
38
+ messageId: string;
39
+ messageName?: string;
40
+ allowLiveState?: boolean;
41
+ skipLatestCache?: boolean;
42
+ stateRenderId?: string;
43
+ effectiveRunId: string;
44
+ stateSnapshotProp?: any;
45
+ agentState?: any;
46
+ agentMessages?: Array<{
47
+ id: string;
48
+ role?: string;
49
+ }>;
50
+ existingClaim?: Claim;
51
+ caches: SnapshotCaches;
52
+ }
53
+ interface SnapshotSelectionResult {
54
+ snapshot?: any;
55
+ hasSnapshotKeys: boolean;
56
+ cachedSnapshot?: any;
57
+ allowEmptySnapshot?: boolean;
58
+ snapshotForClaim?: any;
59
+ }
60
+ declare function areStatesEquals(a: any, b: any): boolean;
61
+ declare function isPlaceholderMessageId(messageId: string | undefined): boolean;
62
+ declare function isPlaceholderMessageName(messageName: string | undefined): messageName is "coagent-state-render";
63
+ declare function readCachedMessageEntry(entry: any): {
64
+ snapshot?: any;
65
+ runId?: string;
66
+ };
67
+ declare function getEffectiveRunId({ existingClaimRunId, cachedMessageRunId, runId, }: {
68
+ existingClaimRunId?: string;
69
+ cachedMessageRunId?: string;
70
+ runId?: string;
71
+ }): string;
72
+ /**
73
+ * Resolve whether a message can claim a render slot.
74
+ * This is a pure decision function; the caller applies claim mutations.
75
+ */
76
+ declare function resolveClaim({ claims, context, stateSnapshot, }: {
77
+ claims: ClaimsByMessageId;
78
+ context: StateRenderContext;
79
+ stateSnapshot?: any;
80
+ }): ClaimResolution;
81
+ /**
82
+ * Select the best snapshot to render for this message.
83
+ * Priority order is:
84
+ * 1) explicit message snapshot
85
+ * 2) live agent state (latest assistant only)
86
+ * 3) cached snapshot for message
87
+ * 4) cached snapshot for stateRenderId+runId
88
+ * 5) last cached snapshot for stateRenderId
89
+ */
90
+ declare function selectSnapshot({ messageId, messageName, allowLiveState, skipLatestCache, stateRenderId, effectiveRunId, stateSnapshotProp, agentState, agentMessages, existingClaim, caches, }: SnapshotSelectionInput): SnapshotSelectionResult;
91
+
92
+ export { Claim, ClaimAction, ClaimResolution, ClaimsByMessageId, RenderStatus, SnapshotCaches, SnapshotSelectionInput, SnapshotSelectionResult, StateRenderContext, areStatesEquals, getEffectiveRunId, isPlaceholderMessageId, isPlaceholderMessageName, readCachedMessageEntry, resolveClaim, selectSnapshot };
@@ -0,0 +1,231 @@
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 __objRest = (source, exclude) => {
9
+ var target = {};
10
+ for (var prop in source)
11
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
12
+ target[prop] = source[prop];
13
+ if (source != null && __getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(source)) {
15
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
16
+ target[prop] = source[prop];
17
+ }
18
+ return target;
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
+
34
+ // src/hooks/use-coagent-state-render-bridge.helpers.ts
35
+ var use_coagent_state_render_bridge_helpers_exports = {};
36
+ __export(use_coagent_state_render_bridge_helpers_exports, {
37
+ ClaimAction: () => ClaimAction,
38
+ RenderStatus: () => RenderStatus,
39
+ areStatesEquals: () => areStatesEquals,
40
+ getEffectiveRunId: () => getEffectiveRunId,
41
+ isPlaceholderMessageId: () => isPlaceholderMessageId,
42
+ isPlaceholderMessageName: () => isPlaceholderMessageName,
43
+ readCachedMessageEntry: () => readCachedMessageEntry,
44
+ resolveClaim: () => resolveClaim,
45
+ selectSnapshot: () => selectSnapshot
46
+ });
47
+ module.exports = __toCommonJS(use_coagent_state_render_bridge_helpers_exports);
48
+ var import_shared = require("@copilotkit/shared");
49
+ var RenderStatus = /* @__PURE__ */ ((RenderStatus2) => {
50
+ RenderStatus2["InProgress"] = "inProgress";
51
+ RenderStatus2["Complete"] = "complete";
52
+ return RenderStatus2;
53
+ })(RenderStatus || {});
54
+ var ClaimAction = /* @__PURE__ */ ((ClaimAction2) => {
55
+ ClaimAction2["Create"] = "create";
56
+ ClaimAction2["Override"] = "override";
57
+ ClaimAction2["Existing"] = "existing";
58
+ ClaimAction2["Block"] = "block";
59
+ return ClaimAction2;
60
+ })(ClaimAction || {});
61
+ function getStateWithoutConstantKeys(state) {
62
+ if (!state)
63
+ return {};
64
+ const _a = state, { messages, tools, copilotkit } = _a, stateWithoutConstantKeys = __objRest(_a, ["messages", "tools", "copilotkit"]);
65
+ return stateWithoutConstantKeys;
66
+ }
67
+ function areStatesEquals(a, b) {
68
+ if (a && !b || !a && b)
69
+ return false;
70
+ const _a = a, { messages, tools, copilotkit } = _a, aWithoutConstantKeys = __objRest(_a, ["messages", "tools", "copilotkit"]);
71
+ const _b = b, {
72
+ messages: bMessages,
73
+ tools: bTools,
74
+ copilotkit: bCopilotkit
75
+ } = _b, bWithoutConstantKeys = __objRest(_b, [
76
+ "messages",
77
+ "tools",
78
+ "copilotkit"
79
+ ]);
80
+ return JSON.stringify(aWithoutConstantKeys) === JSON.stringify(bWithoutConstantKeys);
81
+ }
82
+ function isPlaceholderMessageId(messageId) {
83
+ return !!messageId && messageId.startsWith("coagent-state-render-");
84
+ }
85
+ function isPlaceholderMessageName(messageName) {
86
+ return messageName === "coagent-state-render";
87
+ }
88
+ function readCachedMessageEntry(entry) {
89
+ if (!entry || typeof entry !== "object") {
90
+ return { snapshot: entry, runId: void 0 };
91
+ }
92
+ const snapshot = "snapshot" in entry ? entry.snapshot : entry;
93
+ const runId = "runId" in entry ? entry.runId : void 0;
94
+ return { snapshot, runId };
95
+ }
96
+ function getEffectiveRunId({
97
+ existingClaimRunId,
98
+ cachedMessageRunId,
99
+ runId
100
+ }) {
101
+ return existingClaimRunId || cachedMessageRunId || runId || "pending";
102
+ }
103
+ function resolveClaim({
104
+ claims,
105
+ context,
106
+ stateSnapshot
107
+ }) {
108
+ const { messageId, stateRenderId, runId, messageIndex } = context;
109
+ const existing = claims[messageId];
110
+ if (existing) {
111
+ const canRender = existing.stateRenderId === stateRenderId;
112
+ const shouldUpdateRunId = canRender && runId && (!existing.runId || existing.runId === "pending");
113
+ return {
114
+ canRender,
115
+ action: canRender ? "existing" /* Existing */ : "block" /* Block */,
116
+ updateRunId: shouldUpdateRunId ? runId : void 0
117
+ };
118
+ }
119
+ const normalizedRunId = runId != null ? runId : "pending";
120
+ const renderClaimedByOtherMessageEntry = Object.entries(claims).find(
121
+ ([, claim]) => {
122
+ var _a;
123
+ return claim.stateRenderId === stateRenderId && ((_a = claim.runId) != null ? _a : "pending") === normalizedRunId && (0, import_shared.dataToUUID)(getStateWithoutConstantKeys(claim.stateSnapshot)) === (0, import_shared.dataToUUID)(getStateWithoutConstantKeys(stateSnapshot));
124
+ }
125
+ );
126
+ const renderClaimedByOtherMessage = renderClaimedByOtherMessageEntry == null ? void 0 : renderClaimedByOtherMessageEntry[1];
127
+ const claimedMessageId = renderClaimedByOtherMessageEntry == null ? void 0 : renderClaimedByOtherMessageEntry[0];
128
+ if (renderClaimedByOtherMessage) {
129
+ if (messageIndex !== void 0 && renderClaimedByOtherMessage.messageIndex !== void 0 && messageIndex > renderClaimedByOtherMessage.messageIndex) {
130
+ return {
131
+ canRender: true,
132
+ action: "override" /* Override */,
133
+ nextClaim: { stateRenderId, runId, messageIndex },
134
+ lockOthers: runId === renderClaimedByOtherMessage.runId || isPlaceholderMessageId(claimedMessageId)
135
+ };
136
+ }
137
+ if (runId && renderClaimedByOtherMessage.runId && runId !== renderClaimedByOtherMessage.runId) {
138
+ return {
139
+ canRender: true,
140
+ action: "override" /* Override */,
141
+ nextClaim: { stateRenderId, runId, messageIndex },
142
+ lockOthers: isPlaceholderMessageId(claimedMessageId)
143
+ };
144
+ }
145
+ if (isPlaceholderMessageId(claimedMessageId)) {
146
+ return {
147
+ canRender: true,
148
+ action: "override" /* Override */,
149
+ nextClaim: { stateRenderId, runId, messageIndex },
150
+ lockOthers: true
151
+ };
152
+ }
153
+ if (stateSnapshot && renderClaimedByOtherMessage.stateSnapshot && !areStatesEquals(renderClaimedByOtherMessage.stateSnapshot, stateSnapshot)) {
154
+ return {
155
+ canRender: true,
156
+ action: "override" /* Override */,
157
+ nextClaim: { stateRenderId, runId }
158
+ };
159
+ }
160
+ return { canRender: false, action: "block" /* Block */ };
161
+ }
162
+ if (!runId) {
163
+ return { canRender: false, action: "block" /* Block */ };
164
+ }
165
+ return {
166
+ canRender: true,
167
+ action: "create" /* Create */,
168
+ nextClaim: { stateRenderId, runId, messageIndex }
169
+ };
170
+ }
171
+ function selectSnapshot({
172
+ messageId,
173
+ messageName,
174
+ allowLiveState,
175
+ skipLatestCache,
176
+ stateRenderId,
177
+ effectiveRunId,
178
+ stateSnapshotProp,
179
+ agentState,
180
+ agentMessages,
181
+ existingClaim,
182
+ caches
183
+ }) {
184
+ var _a, _b, _c, _d, _e, _f;
185
+ const lastAssistantId = agentMessages ? (_a = [...agentMessages].reverse().find((msg) => msg.role === "assistant")) == null ? void 0 : _a.id : void 0;
186
+ const latestSnapshot = stateRenderId !== void 0 ? caches.byStateRenderAndRun[`${stateRenderId}::latest`] : void 0;
187
+ const messageIndex = agentMessages ? agentMessages.findIndex((msg) => msg.id === messageId) : -1;
188
+ const messageRole = messageIndex >= 0 && agentMessages ? (_b = agentMessages[messageIndex]) == null ? void 0 : _b.role : void 0;
189
+ let previousUserMessageId;
190
+ if (messageIndex > 0 && agentMessages) {
191
+ for (let i = messageIndex - 1; i >= 0; i -= 1) {
192
+ if (((_c = agentMessages[i]) == null ? void 0 : _c.role) === "user") {
193
+ previousUserMessageId = (_d = agentMessages[i]) == null ? void 0 : _d.id;
194
+ break;
195
+ }
196
+ }
197
+ }
198
+ const liveStateIsStale = stateSnapshotProp === void 0 && latestSnapshot !== void 0 && agentState !== void 0 && areStatesEquals(latestSnapshot, agentState);
199
+ const shouldUseLiveState = (Boolean(allowLiveState) || !lastAssistantId || messageId === lastAssistantId) && !liveStateIsStale;
200
+ const snapshot = stateSnapshotProp ? (0, import_shared.parseJson)(stateSnapshotProp, stateSnapshotProp) : shouldUseLiveState ? agentState : void 0;
201
+ const hasSnapshotKeys = !!(snapshot && Object.keys(snapshot).length > 0);
202
+ const allowEmptySnapshot = snapshot !== void 0 && !hasSnapshotKeys && (stateSnapshotProp !== void 0 || shouldUseLiveState);
203
+ const messageCacheEntry = caches.byMessageId[messageId];
204
+ const cachedMessageSnapshot = readCachedMessageEntry(messageCacheEntry).snapshot;
205
+ const cacheKey = stateRenderId !== void 0 ? `${stateRenderId}::${effectiveRunId}` : void 0;
206
+ let cachedSnapshot = cachedMessageSnapshot != null ? cachedMessageSnapshot : caches.byMessageId[messageId];
207
+ if (cachedSnapshot === void 0 && cacheKey && caches.byStateRenderAndRun[cacheKey] !== void 0) {
208
+ cachedSnapshot = caches.byStateRenderAndRun[cacheKey];
209
+ }
210
+ if (cachedSnapshot === void 0 && stateRenderId && previousUserMessageId && caches.byStateRenderAndRun[`${stateRenderId}::pending:${previousUserMessageId}`] !== void 0) {
211
+ cachedSnapshot = caches.byStateRenderAndRun[`${stateRenderId}::pending:${previousUserMessageId}`];
212
+ }
213
+ if (cachedSnapshot === void 0 && !skipLatestCache && stateRenderId && messageRole !== "assistant" && (stateSnapshotProp !== void 0 || agentState && Object.keys(agentState).length > 0)) {
214
+ cachedSnapshot = caches.byStateRenderAndRun[`${stateRenderId}::latest`];
215
+ }
216
+ const snapshotForClaim = (existingClaim == null ? void 0 : existingClaim.locked) ? (_e = existingClaim.stateSnapshot) != null ? _e : cachedSnapshot : hasSnapshotKeys ? snapshot : (_f = existingClaim == null ? void 0 : existingClaim.stateSnapshot) != null ? _f : cachedSnapshot;
217
+ return { snapshot, hasSnapshotKeys, cachedSnapshot, allowEmptySnapshot, snapshotForClaim };
218
+ }
219
+ // Annotate the CommonJS export names for ESM import in node:
220
+ 0 && (module.exports = {
221
+ ClaimAction,
222
+ RenderStatus,
223
+ areStatesEquals,
224
+ getEffectiveRunId,
225
+ isPlaceholderMessageId,
226
+ isPlaceholderMessageName,
227
+ readCachedMessageEntry,
228
+ resolveClaim,
229
+ selectSnapshot
230
+ });
231
+ //# sourceMappingURL=use-coagent-state-render-bridge.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/use-coagent-state-render-bridge.helpers.ts"],"sourcesContent":["import { dataToUUID, parseJson } from \"@copilotkit/shared\";\n\nexport enum RenderStatus {\n InProgress = \"inProgress\",\n Complete = \"complete\",\n}\n\nexport enum ClaimAction {\n Create = \"create\",\n Override = \"override\",\n Existing = \"existing\",\n Block = \"block\",\n}\n\nexport interface StateRenderContext {\n agentId: string;\n stateRenderId: string;\n messageId: string;\n runId: string;\n messageIndex?: number;\n}\n\nexport interface Claim {\n stateRenderId: string;\n runId?: string;\n stateSnapshot?: any;\n locked?: boolean;\n messageIndex?: number;\n}\n\nexport type ClaimsByMessageId = Record<string, Claim>;\n\nexport interface ClaimResolution {\n canRender: boolean;\n action: ClaimAction;\n nextClaim?: Claim;\n lockOthers?: boolean;\n updateRunId?: string;\n}\n\nexport interface SnapshotCaches {\n byStateRenderAndRun: Record<string, any>;\n byMessageId: Record<string, any>;\n}\n\nexport interface SnapshotSelectionInput {\n messageId: string;\n messageName?: string;\n allowLiveState?: boolean;\n skipLatestCache?: boolean;\n stateRenderId?: string;\n effectiveRunId: string;\n stateSnapshotProp?: any;\n agentState?: any;\n agentMessages?: Array<{ id: string; role?: string }>;\n existingClaim?: Claim;\n caches: SnapshotCaches;\n}\n\nexport interface SnapshotSelectionResult {\n snapshot?: any;\n hasSnapshotKeys: boolean;\n cachedSnapshot?: any;\n allowEmptySnapshot?: boolean;\n snapshotForClaim?: any;\n}\n\nfunction getStateWithoutConstantKeys(state: any) {\n if (!state) return {};\n const { messages, tools, copilotkit, ...stateWithoutConstantKeys } = state;\n return stateWithoutConstantKeys;\n}\n\n// Function that compares states, without the constant keys\nexport function areStatesEquals(a: any, b: any) {\n if ((a && !b) || (!a && b)) return false;\n const { messages, tools, copilotkit, ...aWithoutConstantKeys } = a;\n const {\n messages: bMessages,\n tools: bTools,\n copilotkit: bCopilotkit,\n ...bWithoutConstantKeys\n } = b;\n\n return JSON.stringify(aWithoutConstantKeys) === JSON.stringify(bWithoutConstantKeys);\n}\n\nexport function isPlaceholderMessageId(messageId: string | undefined) {\n return !!messageId && messageId.startsWith(\"coagent-state-render-\");\n}\n\nexport function isPlaceholderMessageName(messageName: string | undefined) {\n return messageName === \"coagent-state-render\";\n}\n\nexport function readCachedMessageEntry(entry: any): { snapshot?: any; runId?: string } {\n if (!entry || typeof entry !== \"object\") {\n return { snapshot: entry, runId: undefined };\n }\n const snapshot = \"snapshot\" in entry ? entry.snapshot : entry;\n const runId = \"runId\" in entry ? entry.runId : undefined;\n return { snapshot, runId };\n}\n\nexport function getEffectiveRunId({\n existingClaimRunId,\n cachedMessageRunId,\n runId,\n}: {\n existingClaimRunId?: string;\n cachedMessageRunId?: string;\n runId?: string;\n}) {\n return existingClaimRunId || cachedMessageRunId || runId || \"pending\";\n}\n\n/**\n * Resolve whether a message can claim a render slot.\n * This is a pure decision function; the caller applies claim mutations.\n */\nexport function resolveClaim({\n claims,\n context,\n stateSnapshot,\n}: {\n claims: ClaimsByMessageId;\n context: StateRenderContext;\n stateSnapshot?: any;\n}): ClaimResolution {\n const { messageId, stateRenderId, runId, messageIndex } = context;\n const existing = claims[messageId];\n\n if (existing) {\n const canRender = existing.stateRenderId === stateRenderId;\n const shouldUpdateRunId =\n canRender && runId && (!existing.runId || existing.runId === \"pending\");\n return {\n canRender,\n action: canRender ? ClaimAction.Existing : ClaimAction.Block,\n updateRunId: shouldUpdateRunId ? runId : undefined,\n };\n }\n\n const normalizedRunId = runId ?? \"pending\";\n const renderClaimedByOtherMessageEntry = Object.entries(claims).find(\n ([, claim]) =>\n claim.stateRenderId === stateRenderId &&\n (claim.runId ?? \"pending\") === normalizedRunId &&\n dataToUUID(getStateWithoutConstantKeys(claim.stateSnapshot)) ===\n dataToUUID(getStateWithoutConstantKeys(stateSnapshot)),\n );\n\n const renderClaimedByOtherMessage = renderClaimedByOtherMessageEntry?.[1];\n const claimedMessageId = renderClaimedByOtherMessageEntry?.[0];\n\n if (renderClaimedByOtherMessage) {\n if (\n messageIndex !== undefined &&\n renderClaimedByOtherMessage.messageIndex !== undefined &&\n messageIndex > renderClaimedByOtherMessage.messageIndex\n ) {\n return {\n canRender: true,\n action: ClaimAction.Override,\n nextClaim: { stateRenderId, runId, messageIndex },\n lockOthers:\n runId === renderClaimedByOtherMessage.runId || isPlaceholderMessageId(claimedMessageId),\n };\n }\n\n if (runId && renderClaimedByOtherMessage.runId && runId !== renderClaimedByOtherMessage.runId) {\n return {\n canRender: true,\n action: ClaimAction.Override,\n nextClaim: { stateRenderId, runId, messageIndex },\n lockOthers: isPlaceholderMessageId(claimedMessageId),\n };\n }\n\n if (isPlaceholderMessageId(claimedMessageId)) {\n return {\n canRender: true,\n action: ClaimAction.Override,\n nextClaim: { stateRenderId, runId, messageIndex },\n lockOthers: true,\n };\n }\n\n if (\n stateSnapshot &&\n renderClaimedByOtherMessage.stateSnapshot &&\n !areStatesEquals(renderClaimedByOtherMessage.stateSnapshot, stateSnapshot)\n ) {\n return {\n canRender: true,\n action: ClaimAction.Override,\n nextClaim: { stateRenderId, runId },\n };\n }\n\n return { canRender: false, action: ClaimAction.Block };\n }\n\n if (!runId) {\n return { canRender: false, action: ClaimAction.Block };\n }\n\n return {\n canRender: true,\n action: ClaimAction.Create,\n nextClaim: { stateRenderId, runId, messageIndex },\n };\n}\n\n/**\n * Select the best snapshot to render for this message.\n * Priority order is:\n * 1) explicit message snapshot\n * 2) live agent state (latest assistant only)\n * 3) cached snapshot for message\n * 4) cached snapshot for stateRenderId+runId\n * 5) last cached snapshot for stateRenderId\n */\nexport function selectSnapshot({\n messageId,\n messageName,\n allowLiveState,\n skipLatestCache,\n stateRenderId,\n effectiveRunId,\n stateSnapshotProp,\n agentState,\n agentMessages,\n existingClaim,\n caches,\n}: SnapshotSelectionInput): SnapshotSelectionResult {\n const lastAssistantId = agentMessages\n ? [...agentMessages].reverse().find((msg) => msg.role === \"assistant\")?.id\n : undefined;\n const latestSnapshot =\n stateRenderId !== undefined ? caches.byStateRenderAndRun[`${stateRenderId}::latest`] : undefined;\n const messageIndex = agentMessages\n ? agentMessages.findIndex((msg) => msg.id === messageId)\n : -1;\n const messageRole =\n messageIndex >= 0 && agentMessages ? agentMessages[messageIndex]?.role : undefined;\n let previousUserMessageId: string | undefined;\n if (messageIndex > 0 && agentMessages) {\n for (let i = messageIndex - 1; i >= 0; i -= 1) {\n if (agentMessages[i]?.role === \"user\") {\n previousUserMessageId = agentMessages[i]?.id;\n break;\n }\n }\n }\n const liveStateIsStale =\n stateSnapshotProp === undefined &&\n latestSnapshot !== undefined &&\n agentState !== undefined &&\n areStatesEquals(latestSnapshot, agentState);\n const shouldUseLiveState =\n (Boolean(allowLiveState) || !lastAssistantId || messageId === lastAssistantId) &&\n !liveStateIsStale;\n const snapshot = stateSnapshotProp\n ? parseJson(stateSnapshotProp, stateSnapshotProp)\n : shouldUseLiveState\n ? agentState\n : undefined;\n const hasSnapshotKeys = !!(snapshot && Object.keys(snapshot).length > 0);\n const allowEmptySnapshot =\n snapshot !== undefined &&\n !hasSnapshotKeys &&\n (stateSnapshotProp !== undefined || shouldUseLiveState);\n\n const messageCacheEntry = caches.byMessageId[messageId];\n const cachedMessageSnapshot = readCachedMessageEntry(messageCacheEntry).snapshot;\n const cacheKey =\n stateRenderId !== undefined ? `${stateRenderId}::${effectiveRunId}` : undefined;\n let cachedSnapshot = cachedMessageSnapshot ?? caches.byMessageId[messageId];\n if (cachedSnapshot === undefined && cacheKey && caches.byStateRenderAndRun[cacheKey] !== undefined) {\n cachedSnapshot = caches.byStateRenderAndRun[cacheKey];\n }\n if (\n cachedSnapshot === undefined &&\n stateRenderId &&\n previousUserMessageId &&\n caches.byStateRenderAndRun[`${stateRenderId}::pending:${previousUserMessageId}`] !==\n undefined\n ) {\n cachedSnapshot =\n caches.byStateRenderAndRun[`${stateRenderId}::pending:${previousUserMessageId}`];\n }\n if (\n cachedSnapshot === undefined &&\n !skipLatestCache &&\n stateRenderId &&\n messageRole !== \"assistant\" &&\n (stateSnapshotProp !== undefined ||\n (agentState && Object.keys(agentState).length > 0))\n ) {\n cachedSnapshot = caches.byStateRenderAndRun[`${stateRenderId}::latest`];\n }\n\n const snapshotForClaim = existingClaim?.locked\n ? existingClaim.stateSnapshot ?? cachedSnapshot\n : hasSnapshotKeys\n ? snapshot\n : existingClaim?.stateSnapshot ?? cachedSnapshot;\n\n return { snapshot, hasSnapshotKeys, cachedSnapshot, allowEmptySnapshot, snapshotForClaim };\n}\n"],"mappings":"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","names":["RenderStatus","ClaimAction"]}
@@ -0,0 +1,24 @@
1
+ import {
2
+ ClaimAction,
3
+ RenderStatus,
4
+ areStatesEquals,
5
+ getEffectiveRunId,
6
+ isPlaceholderMessageId,
7
+ isPlaceholderMessageName,
8
+ readCachedMessageEntry,
9
+ resolveClaim,
10
+ selectSnapshot
11
+ } from "../chunk-C3YJYDK4.mjs";
12
+ import "../chunk-SKC7AJIV.mjs";
13
+ export {
14
+ ClaimAction,
15
+ RenderStatus,
16
+ areStatesEquals,
17
+ getEffectiveRunId,
18
+ isPlaceholderMessageId,
19
+ isPlaceholderMessageName,
20
+ readCachedMessageEntry,
21
+ resolveClaim,
22
+ selectSnapshot
23
+ };
24
+ //# sourceMappingURL=use-coagent-state-render-bridge.helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}