@copilotz/chat-adapter 0.9.46 → 0.9.47

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/dist/index.js CHANGED
@@ -122,6 +122,24 @@ var getLlmAttemptId = (event) => {
122
122
  }
123
123
  return null;
124
124
  };
125
+ var getRoutingMessageFromMetadata = (metadata) => {
126
+ if (!isRecord(metadata)) return null;
127
+ const routing = isRecord(metadata.routing) ? metadata.routing : null;
128
+ if (!routing) return null;
129
+ if (routing.source !== "model_control" || !["consult", "ask", "handoff"].includes(String(routing.action)) || typeof routing.targetId !== "string" || routing.targetId.trim().length === 0 || typeof routing.message !== "string" || routing.message.trim().length === 0) {
130
+ return null;
131
+ }
132
+ return routing.message.trim();
133
+ };
134
+ var getRoutingMessage = (event) => {
135
+ if (!isRecord(event)) return null;
136
+ return getRoutingMessageFromMetadata(event.metadata);
137
+ };
138
+ var getVisibleLlmResultAnswer = (event) => {
139
+ const payload = getStreamEventPayload(event);
140
+ const answer = isRecord(payload) && typeof payload.answer === "string" ? payload.answer : "";
141
+ return answer.trim().length > 0 ? answer : getRoutingMessage(event) ?? void 0;
142
+ };
125
143
  var isTerminalEmptyLlmResultEvent = (event) => {
126
144
  if (!isRecord(event) || event.type !== "LLM_RESULT") return false;
127
145
  const payload = getStreamEventPayload(event);
@@ -130,8 +148,7 @@ var isTerminalEmptyLlmResultEvent = (event) => {
130
148
  if (payload.finishReason === "tool_calls") return false;
131
149
  if (hasValues(payload.toolCalls)) return false;
132
150
  const metadata = isRecord(event.metadata) ? event.metadata : {};
133
- const routing = isRecord(metadata.routing) ? metadata.routing : {};
134
- if ((routing.action === "ask" || routing.action === "handoff") && typeof routing.targetId === "string" && routing.targetId.trim().length > 0) return false;
151
+ if (getRoutingMessageFromMetadata(metadata)) return false;
135
152
  if (hasValues(metadata.targetQueue)) return false;
136
153
  return true;
137
154
  };
@@ -1681,7 +1698,7 @@ var shouldRenderHydratedMessage = (msg) => {
1681
1698
  return false;
1682
1699
  }
1683
1700
  const text = expectStringValue(msg.content, "message.content").trim();
1684
- const hasText = text.length > 0;
1701
+ const hasText = text.length > 0 || getRoutingMessageFromMetadata(meta) !== null;
1685
1702
  const hasToolCalls = extractToolCallsFromServerMessage(msg).length > 0;
1686
1703
  const hasAttachments = extractAttachments(meta).length > 0;
1687
1704
  if (msg.senderType === "tool") {
@@ -1695,6 +1712,7 @@ var convertServerMessage = (msg, options = {}) => {
1695
1712
  const metadata = msg.metadata ?? void 0;
1696
1713
  const attachments = extractAttachments(metadata);
1697
1714
  const messageContent = expectStringValue(msg.content, "message.content");
1715
+ const routingMessage = getRoutingMessageFromMetadata(metadata);
1698
1716
  const role = roleBySender[msg.senderType];
1699
1717
  const parsedToolCalls = extractToolCallsFromServerMessage(msg);
1700
1718
  const shouldRenderToolCalls = msg.senderType !== "tool";
@@ -1708,7 +1726,7 @@ var convertServerMessage = (msg, options = {}) => {
1708
1726
  }));
1709
1727
  const hasToolCalls = shouldRenderToolCalls && mappedToolCalls.length > 0;
1710
1728
  const isToolSender = msg.senderType === "tool";
1711
- const content = isToolSender ? "" : messageContent;
1729
+ const content = isToolSender ? "" : messageContent.trim().length > 0 ? messageContent : routingMessage ?? "";
1712
1730
  const reasoning = typeof msg.reasoning === "string" && msg.reasoning.length > 0 ? msg.reasoning : void 0;
1713
1731
  const llmAttemptId = typeof metadata?.[LLM_ATTEMPT_ID_METADATA_KEY] === "string" ? metadata[LLM_ATTEMPT_ID_METADATA_KEY].trim() : "";
1714
1732
  const activityItems = [
@@ -2808,7 +2826,7 @@ function useCopilotz({ userId, userName, userAvatar, assistantName, agentOptions
2808
2826
  return;
2809
2827
  }
2810
2828
  if (type === "LLM_RESULT") {
2811
- const finalAnswer = typeof payload?.answer === "string" ? payload.answer : void 0;
2829
+ const finalAnswer = getVisibleLlmResultAnswer(event);
2812
2830
  const attemptId = getLlmAttemptId(event) ?? liveRunState.activeAttemptId ?? liveRunState.lastAttemptId;
2813
2831
  if (attemptId) {
2814
2832
  dispatchLiveRunAction({