@stack-spot/ai-chat-widget 2.1.0-beta.1 → 2.1.1-beta.1

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.
@@ -3,11 +3,11 @@ import { Accordion, Badge, Button, Card, Column, Divider, Icon, IconBox, ImageWi
3
3
  import { AnimatedHeight } from '@stack-spot/portal-components/AnimatedHeight';
4
4
  import { theme } from '@stack-spot/portal-theme';
5
5
  import { useTranslate } from '@stack-spot/portal-translate';
6
- import { findLastIndex } from 'lodash';
7
- import { useMemo } from 'react';
6
+ import { findLast, findLastIndex } from 'lodash';
7
+ import { useEffect, useMemo } from 'react';
8
8
  import styled from 'styled-components';
9
9
  import { Markdown } from '../../components/Markdown.js';
10
- import { useCurrentChat, useCurrentChatMessages, useWidget } from '../../context/hooks.js';
10
+ import { useChat, useChatMessages, useCurrentChat, useCurrentChatMessages, useWidget } from '../../context/hooks.js';
11
11
  import { ChatEntry } from '../../state/ChatEntry.js';
12
12
  import { planningToolDictionaryHelper } from '../../utils/planning-tool.js';
13
13
  import { updateToolStep } from '../../utils/update-tool-step.js';
@@ -37,23 +37,24 @@ const StyledCard = styled(Card) `
37
37
  const Step = ({ step, index, onClick, total, totalTools, isAllDone }) => {
38
38
  const t = useTranslate(dictionary);
39
39
  const status = getStatusIcon(step.status, isAllDone);
40
- return (_jsx("li", { tabIndex: onClick ? 0 : undefined, onClick: onClick, role: onClick ? 'button' : 'listitem', children: _jsxs(Row, { gap: "4px", alignItems: "center", children: [_jsx("div", { className: "step-status-icon", children: status }), _jsx(StyledCard, { p: "8px", w: "75%", children: _jsx(Accordion, { header: expand => _jsx(StepAccordionHeader, { step: step, index: index, expand: expand }), children: _jsx(Column, { pt: "12px", children: total ?
41
- _jsxs(Row, { gap: "40px", children: [_jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "Hashtag", size: "sm", color: "light.700" }), _jsx(Text, { color: "light.700", children: t.totalSteps }), total] }), _jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "BorderRadius", size: "sm", color: "light.700" }), _jsx(Text, { color: "light.700", children: t.totalTools }), totalTools] })] })
42
- : _jsxs(_Fragment, { children: [_jsxs(Row, { pb: "8px", gap: "4px", children: [_jsx(Icon, { icon: "Target", size: "sm", color: "light.700" }), _jsxs(Text, { color: "light.700", children: [t.stepGoal, ":"] }), _jsx(Text, { children: step.input })] }), _jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "BorderRadius", size: "sm", color: "light.700" }), _jsxs(Text, { color: "light.700", children: [t.toolsToBeExecuted, ":"] })] }), _jsx("ul", { className: "tools-list", children: step.attempts?.[0]?.tools?.map((tool) => (_jsx("li", { children: _jsxs(Text, { children: [tool.name, ": ", tool.goal] }) }, tool.id))) })] }) }) }) })] }) }));
40
+ const hasTools = step.attempts?.[0]?.tools && step.attempts?.[0]?.tools?.length > 0;
41
+ return (_jsx("li", { tabIndex: onClick ? 0 : undefined, onClick: onClick, role: onClick ? 'button' : 'listitem', children: _jsxs(Row, { gap: "4px", alignItems: "center", children: [_jsx("div", { className: "step-status-icon", children: status }), _jsx(StyledCard, { p: "8px", w: "80%", children: _jsx(Accordion, { header: expand => _jsx(StepAccordionHeader, { step: step, index: index, expand: expand }), children: _jsx(Column, { pt: "12px", children: total ?
42
+ _jsxs(Row, { gap: "40px", children: [_jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "Hashtag", size: "sm", color: "light.700" }), _jsx(Text, { color: "light.700", children: t.totalSteps }), total] }), _jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "BorderRadius", size: "sm", color: "light.700" }), _jsx(Text, { color: "light.700", children: t.totalTools }), totalTools ?? 0] })] })
43
+ : _jsxs(_Fragment, { children: [_jsxs(Row, { pb: "8px", children: [_jsx(Icon, { icon: "Target", size: "sm", color: "light.700" }), _jsxs(Text, { color: "light.700", tag: "span", style: { margin: '0 4px' }, children: [t.stepGoal, ":"] }), _jsx(Text, { tag: "span", children: step.input })] }), hasTools ? _jsxs(_Fragment, { children: [_jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "BorderRadius", size: "sm", color: "light.700" }), _jsxs(Text, { color: "light.700", children: [t.toolsToBeExecuted, ":"] })] }), _jsx("ul", { className: "tools-list", children: step.attempts?.[0]?.tools?.map((tool, index) => (_jsx("li", { children: _jsxs(Text, { children: [tool.name, ": ", tool.goal] }) }, `${tool.id}-${index}`))) })] }) : _jsxs(Row, { gap: "4px", children: [_jsx(Icon, { icon: "BorderRadius", size: "sm", color: "light.700" }), _jsx(Text, { color: "light.700", children: t.noToolToBeUsed })] })] }) }) }) })] }) }));
43
44
  };
44
45
  export const StepsPlaceholder = () => {
45
46
  const t = useTranslate(dictionary);
46
47
  return _jsxs(Card, { gap: "8px", children: [_jsxs(Row, { gap: "8px", children: [_jsx(ProgressCircular, { colorScheme: "inverse", size: "xs" }), _jsx(Text, { color: "light.700", children: t.generatingPlan })] }), _jsx(Text, { color: "light.700", children: t.analyzingRequirements }), _jsxs(Row, { gap: "12px", children: [_jsx(Skeleton, { height: "31px", width: "148px", bgLevel: 600 }), _jsx(Skeleton, { height: "31px", width: "148px", bgLevel: 600 }), _jsx(Skeleton, { height: "31px", width: "148px", bgLevel: 600 }), _jsx(Skeleton, { height: "31px", width: "148px", bgLevel: 600 })] })] });
47
48
  };
48
- const AwaitingApproval = ({ customApproveText }) => {
49
+ const AwaitingApproval = ({ customApproveText, chatId }) => {
49
50
  const t = useTranslate(dictionary);
50
- const chat = useCurrentChat();
51
+ const chat = useChat(chatId);
51
52
  const onAnswer = (response) => {
52
53
  chat.pushMessage(ChatEntry.createUserEntry('', false, undefined, undefined, response));
53
54
  };
54
55
  return _jsx(_Fragment, { children: _jsxs(Row, { gap: "8px", children: [_jsx(Button, { colorScheme: "light", onClick: () => onAnswer(t.cancel), children: _jsxs(Row, { gap: "8px", children: [_jsx(Icon, { icon: "Stop" }), t.cancel] }) }), _jsx(Button, { colorScheme: "inverse", onClick: () => onAnswer(customApproveText ?? t.approve), children: _jsxs(Row, { gap: "8px", children: [_jsx(Icon, { group: "fill", icon: "Play" }), customApproveText ?? t.approve] }) })] }) });
55
56
  };
56
- export const ToolStepsList = ({ toolStep, messageId }) => {
57
+ export const ToolStepsList = ({ toolStep, messageId, chatId }) => {
57
58
  const t = useTranslate(dictionary);
58
59
  const chat = useCurrentChat();
59
60
  const messages = useCurrentChatMessages();
@@ -65,7 +66,7 @@ export const ToolStepsList = ({ toolStep, messageId }) => {
65
66
  return undefined;
66
67
  return toolStep.attempts?.[0].tools?.[0];
67
68
  }, [toolStep]);
68
- useMemo(() => {
69
+ useEffect(() => {
69
70
  if (!toolStep)
70
71
  return undefined;
71
72
  const executionId = toolStep.attempts?.[0].tools?.[0].executionId;
@@ -73,13 +74,27 @@ export const ToolStepsList = ({ toolStep, messageId }) => {
73
74
  return;
74
75
  updateToolStep(messages, executionId, toolStep.status);
75
76
  }, [messages, toolStep, toolStep.status]);
76
- return _jsx(_Fragment, { children: toolStep && tool ? _jsx(AnimatedHeight, { children: _jsxs("div", { className: "steps", children: [_jsxs(Badge, { colorPalette: "yellow", appearance: "square", children: [_jsx(Icon, { icon: "StopWatch" }), _jsxs(Text, { children: [tool.name, " ", t.keepWorking] })] }), _jsxs(Card, { mt: "16px", gap: "8px", bgLevel: 500, children: [_jsxs(Row, { children: [_jsx(ImageWithFallback, { src: tool.image, width: "32px", fallback: _jsx(IconBox, { appearance: "circle", icon: "StackSpot" }) }), _jsx(Text, { children: tool.name })] }), _jsx(Text, { children: toolStep.user_question }), _jsx(Accordion, { header: expand => _jsxs(Row, { gap: "8px", mb: "4px", children: [_jsx(Card, { p: "4px", bgLevel: 400, children: expand }), _jsxs(Text, { children: [" ", t.viewDetails, " "] })] }), children: _jsx(Markdown, { onCopyCode: (code) => onCopyCode(code, `${messageId}`, chat), children: inputParsed }) }), _jsx(AwaitingApproval, { customApproveText: t.approveTool })] })] }) }) : null });
77
+ return _jsx(_Fragment, { children: toolStep && tool ? _jsx(AnimatedHeight, { children: _jsxs("div", { className: "steps", children: [_jsxs(Badge, { colorPalette: "yellow", appearance: "square", children: [_jsx(Icon, { icon: "StopWatch" }), _jsxs(Text, { children: [tool.name, " ", t.keepWorking] })] }), _jsxs(Card, { mt: "16px", gap: "8px", bgLevel: 500, children: [_jsxs(Row, { children: [_jsx(ImageWithFallback, { src: tool.image, width: "32px", fallback: _jsx(IconBox, { appearance: "circle", icon: "StackSpot" }) }), _jsx(Text, { children: tool.name })] }), _jsx(Text, { children: toolStep.user_question }), _jsx(Accordion, { header: expand => _jsxs(Row, { gap: "8px", mb: "4px", children: [_jsx(Card, { p: "4px", bgLevel: 400, children: expand }), _jsxs(Text, { children: [" ", t.viewDetails, " "] })] }), children: _jsx(Markdown, { onCopyCode: (code) => onCopyCode(code, `${messageId}`, chat), children: inputParsed }) }), _jsx(AwaitingApproval, { customApproveText: t.approveTool, chatId: chatId })] })] }) }) : null });
77
78
  };
78
- export const StepsList = ({ steps, chatId, messageId }) => {
79
+ export const StepsList = ({ steps, messageId, chatId, userHasAlreadyAnswered }) => {
79
80
  const t = useTranslate(dictionary);
80
- const actualSteps = steps.filter(s => s.type === 'step');
81
+ const filteredSteps = steps.filter(s => s.type === 'step');
82
+ const actualSteps = useMemo(() => filteredSteps.filter((item) => {
83
+ const messageIdForStep = planningToolDictionaryHelper.getMessageIdFromStepId(item.id);
84
+ if (!messageIdForStep) {
85
+ planningToolDictionaryHelper.setMessageIdForStepId(messageId, item.id);
86
+ return true;
87
+ }
88
+ else if (messageIdForStep === messageId) {
89
+ return true;
90
+ }
91
+ // If a step is from a planning and it is already inserted in the planningToolDictionaryHelper it means the step is already in a
92
+ // previous message and we do not want to show it again (for instance, when required a approval in the planning, we will have
93
+ // two messages with the same step id one for the planning awaiting and one for the planning end, so we want to show only one)
94
+ return false;
95
+ }), [filteredSteps]);
81
96
  const planning = steps.filter(s => s.type === 'planning');
82
- useMemo(() => {
97
+ useEffect(() => {
83
98
  actualSteps.map((item) => {
84
99
  const executionId = item.attempts[0]?.tools?.[0].executionId;
85
100
  if (executionId) {
@@ -87,14 +102,14 @@ export const StepsList = ({ steps, chatId, messageId }) => {
87
102
  }
88
103
  });
89
104
  }, [actualSteps, messageId]);
90
- const toolsStep = steps.find(s => s.type === 'tool');
91
- useMemo(() => {
105
+ const toolsStep = findLast(steps, s => s.type === 'tool');
106
+ useEffect(() => {
92
107
  const executionId = toolsStep?.attempts?.[0]?.tools?.[0]?.executionId;
93
108
  if (executionId) {
94
109
  planningToolDictionaryHelper.setMessageIdToolStepToolExecutionId(`${messageId}`, executionId);
95
110
  }
96
111
  }, [toolsStep, messageId]);
97
- const planningGoal = steps.filter(s => s.type === 'planning')?.[0]?.goal;
112
+ const planningGoal = planning?.[0]?.goal;
98
113
  const isLastStepDone = actualSteps[actualSteps.length - 1]?.status !== 'running' &&
99
114
  actualSteps[actualSteps.length - 1]?.status !== 'pending';
100
115
  const totalTools = useMemo(() => actualSteps?.reduce((sum, step) => {
@@ -105,12 +120,28 @@ export const StepsList = ({ steps, chatId, messageId }) => {
105
120
  let currentStepIndex = findLastIndex(actualSteps, s => s.status === 'running' || s.status === 'success');
106
121
  if (currentStepIndex === -1)
107
122
  currentStepIndex = 0;
123
+ return (_jsxs(_Fragment, { children: [actualSteps.length > 0 ? _jsx(AnimatedHeight, { children: _jsxs("div", { className: "steps", children: [_jsxs(Row, { gap: "14px", mb: "8px", ml: "5px", children: [_jsx(Icon, { icon: "Target", size: "sm", color: "light.600" }), _jsx(Text, { children: t.executionPlan })] }), _jsxs("ul", { className: "steps-list", children: [actualSteps.map((s, i) => _jsx(Step, { step: s, index: i + 1 }, i)), _jsx(Step, { step: { status: 'target', input: planningGoal, attempts: [] }, index: currentStepIndex + 1, total: actualSteps.length, totalTools: totalTools, isAllDone: isLastStepDone })] }), _jsxs(Column, { gap: "8px", mt: "8px", children: [_jsx(Divider, { colorScheme: "light" }), _jsx(Text, { color: "light.700", children: planning?.[0]?.user_question }), !userHasAlreadyAnswered && planning?.[0]?.status === 'awaiting_approval' && _jsx(AwaitingApproval, { chatId: chatId })] })] }) }) : null, toolsStep && toolsStep.status === 'awaiting_approval' && !userHasAlreadyAnswered &&
124
+ _jsx(ToolStepsList, { toolStep: toolsStep, messageId: messageId, chatId: chatId })] }));
125
+ };
126
+ export const ViewToolsDetails = ({ chatId }) => {
127
+ const t = useTranslate(dictionary);
128
+ const messages = useChatMessages(chatId);
129
+ const messageId = useMemo(() => {
130
+ const messageWithPlanning = findLast(messages, (message) => {
131
+ const steps = message.getValue().steps;
132
+ const planningStep = steps?.find((step) => step.type === 'planning' && step.status === 'success');
133
+ return planningStep ? true : false;
134
+ });
135
+ return messageWithPlanning?.id;
136
+ }, [messages]);
108
137
  const widget = useWidget();
109
138
  function openToolsPanel() {
110
- widget.set('currentMessageInPanel', { chatId, messageId });
111
- widget.set('panel', 'steps');
139
+ if (messageId) {
140
+ widget.set('currentMessageInPanel', { chatId, messageId });
141
+ widget.set('panel', 'steps');
142
+ }
112
143
  }
113
- return (_jsxs(_Fragment, { children: [actualSteps.length > 0 ? _jsx(AnimatedHeight, { children: _jsxs("div", { className: "steps", children: [_jsxs(Row, { gap: "14px", mb: "8px", ml: "5px", children: [_jsx(Icon, { icon: "Target", size: "sm", color: "light.600" }), _jsx(Text, { children: t.executionPlan })] }), _jsxs("ul", { className: "steps-list", children: [_jsx(Step, { step: actualSteps[currentStepIndex], index: currentStepIndex + 1 }), _jsx(Step, { step: { status: 'target', input: planningGoal, attempts: [] }, index: currentStepIndex + 1, total: actualSteps.length, totalTools: totalTools, isAllDone: isLastStepDone })] }), _jsxs(Column, { gap: "8px", mt: "8px", children: [_jsx(Divider, { colorScheme: "light" }), _jsx(Text, { color: "light.700", children: planning?.[0]?.user_question }), planning?.[0]?.status === 'awaiting_approval' && _jsx(AwaitingApproval, {})] }), isLastStepDone && _jsx("div", { className: "step-actions", children: _jsxs(Button, { colorScheme: "light", size: "sm", className: "icon-button details", onClick: openToolsPanel, children: [_jsx(Icon, { group: "fill", icon: "Play", size: "xs" }), t.detailed] }) })] }) }) : null, toolsStep && toolsStep.status === 'awaiting_approval' && _jsx(ToolStepsList, { toolStep: toolsStep, messageId: messageId })] }));
144
+ return _jsx(_Fragment, { children: _jsx("div", { className: "step-actions", children: _jsxs(Button, { colorScheme: "light", size: "sm", className: "icon-button details", onClick: openToolsPanel, children: [_jsx(Icon, { group: "fill", icon: "Play", size: "xs" }), t.detailed] }) }) });
114
145
  };
115
146
  const dictionary = {
116
147
  en: {
@@ -131,6 +162,7 @@ const dictionary = {
131
162
  viewDetails: 'View details',
132
163
  approveTool: 'Approve execution',
133
164
  pendingReview: 'Pending review',
165
+ noToolToBeUsed: 'No tool will be needed',
134
166
  },
135
167
  pt: {
136
168
  step: 'Passo',
@@ -150,6 +182,7 @@ const dictionary = {
150
182
  viewDetails: 'Ver detalhes',
151
183
  approveTool: 'Aprovar execução',
152
184
  pendingReview: 'Revisão pendente',
185
+ noToolToBeUsed: 'Nenhuma tool será necessária',
153
186
  },
154
187
  };
155
188
  //# sourceMappingURL=StepsList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepsList.js","sourceRoot":"","sources":["../../../src/views/Chat/StepsList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepsList.js","sourceRoot":"","sources":["../../../src/views/Chat/StepsList.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/views/Chat/styled.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAE7E,eAAO,MAAM,QAAQ,EAAE,oBAAoB,CACzC,KAAK,EACL,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAoTvF,CAAA"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/views/Chat/styled.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAE7E,eAAO,MAAM,QAAQ,EAAE,oBAAoB,CACzC,KAAK,EACL,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAqTvF,CAAA"}
@@ -286,8 +286,10 @@ export const ChatList = styled.ul `
286
286
  }
287
287
  }
288
288
 
289
- .step-actions {
290
- margin-top: 8px;
289
+ }
290
+
291
+ .step-actions {
292
+ margin-top: 16px;
291
293
  display: flex;
292
294
  gap: 6px;
293
295
 
@@ -297,7 +299,6 @@ export const ChatList = styled.ul `
297
299
  align-items: center;
298
300
  }
299
301
  }
300
- }
301
302
 
302
303
  .markdown img {
303
304
  max-width: 70%;
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/views/Chat/styled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,MAAM,CAAC,MAAM,QAAQ,GAGjB,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;YAcD,KAAK,CAAC,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA2BP,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA+CjB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;8BAItB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA2BxB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;gDAUF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwCtE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;wBAyB5B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D7B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD9C,CAAA"}
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/views/Chat/styled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,MAAM,CAAC,MAAM,QAAQ,GAGjB,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;YAcD,KAAK,CAAC,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA2BP,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA+CjB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;8BAItB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA2BxB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;gDAUF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwCtE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;wBAyB5B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D7B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD9C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "2.1.0-beta.1",
3
+ "version": "2.1.1-beta.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,7 +16,7 @@
16
16
  "@citric/core": "^6.4.0",
17
17
  "@stack-spot/portal-components": "^2.26.0",
18
18
  "@citric/icons": "^5.13.0",
19
- "@stack-spot/portal-network": "0.184.0-beta.1",
19
+ "@stack-spot/portal-network": "0.186.0-beta.1",
20
20
  "@citric/ui": "^6.10.2",
21
21
  "@stack-spot/portal-translate": "^2.1.0",
22
22
  "lodash": "^4.17.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "2.1.0-beta.1",
4
- "date": "Fri Oct 03 2025 17:17:22 GMT-0300 (Horário Padrão de Brasília)",
3
+ "version": "2.1.1-beta.1",
4
+ "date": "Thu Oct 16 2025 13:16:47 GMT+0000 (Coordinated Universal Time)",
5
5
  "dependencies": [
6
6
  {
7
7
  "name": "@stack-spot/app-metadata",
@@ -121,7 +121,7 @@
121
121
  },
122
122
  {
123
123
  "name": "@stack-spot/portal-network",
124
- "version": "0.184.0-beta.1(@stack-spot/auth@6.1.0)(@stack-spot/opa@2.5.0(@stack-spot/auth@6.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@tanstack/react-query@5.59.16(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)"
124
+ "version": "0.186.0-beta.1(@stack-spot/auth@6.1.0)(@stack-spot/opa@2.5.0(@stack-spot/auth@6.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@tanstack/react-query@5.59.16(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)"
125
125
  },
126
126
  {
127
127
  "name": "@stack-spot/portal-theme",
@@ -1,5 +1,6 @@
1
- import { AgentInfo, aiClient, ChatResponseWithSteps, StackspotAPIError, StreamCanceledError } from '@stack-spot/portal-network'
1
+ import { AgentInfo, aiClient, ChatResponseWithSteps, ChatStep, StackspotAPIError, StreamCanceledError } from '@stack-spot/portal-network'
2
2
  import { ChatResponse3 } from '@stack-spot/portal-network/api/ai'
3
+ import { findLast } from 'lodash'
3
4
  import { ChatEntry, KnowledgeSource, TextChatEntry } from '../state/ChatEntry'
4
5
  import { ChatState } from '../state/ChatState'
5
6
  import { LabeledWithImage } from '../state/types'
@@ -66,7 +67,7 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
66
67
 
67
68
  //Verify if the last planning in the messages has status awaiting_approval
68
69
  const messages = chat.getMessages()
69
- const lastPlanningAwaiting = messages.slice().reverse().find(item => {
70
+ const lastPlanningAwaiting = findLast(messages, item => {
70
71
  const steps = item.getValue().steps
71
72
  if (steps) {
72
73
  const hasPlanning = steps.find((step) => step.type === 'planning')
@@ -96,6 +97,19 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
96
97
  originalItem?.setValue({ ...originalItemValue as TextChatEntry })
97
98
  }
98
99
  }
100
+
101
+ const updateStepMessage = (step: ChatStep) => {
102
+ if (lastPlanningAwaiting) {
103
+ const originalItem = messages.find((message) => message.id === lastPlanningAwaiting.id)
104
+ const originalItemValue = originalItem?.getValue()
105
+ originalItemValue?.steps?.filter((messageStep) => {
106
+ if (messageStep.id === step.id) {
107
+ messageStep = { ...step }
108
+ }
109
+ })
110
+ originalItem?.setValue({ ...originalItemValue as TextChatEntry })
111
+ }
112
+ }
99
113
 
100
114
  const updateToolStatus = (agentInfo: AgentInfo) => {
101
115
  const executionId = agentInfo.id
@@ -147,17 +161,13 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
147
161
  knowledgeSources = genericSourcesToKnowledgeSources(value.sources)
148
162
  }
149
163
 
150
- // When there is a planning with status awaiting_approval and we receive a new one
151
- // we do not not want to add it again.
152
164
  if (lastPlanningAwaiting && value.steps) {
153
- const hasPlanningAwaiting = value.steps.find((item) => item.type === 'planning' && item.status === 'awaiting_approval')
154
- value.steps = value.steps?.filter(step => {
165
+ value.steps?.map(step => {
155
166
  if (step.type === 'planning') {
156
167
  updatePlanningMessage()
168
+ } else if (step.type === 'step') {
169
+ updateStepMessage(step)
157
170
  }
158
-
159
- return hasPlanningAwaiting ? true : (step.type !== 'planning' && step.type !== 'step' &&
160
- (step.type !== 'answer' || (step.type === 'answer' && step.status === 'pending')))
161
171
  })
162
172
  }
163
173
 
@@ -166,7 +176,8 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
166
176
  }
167
177
 
168
178
  if (value.steps) {
169
- const tool = value.steps.find((item) => item.type === 'tool')
179
+ const tool = findLast(value.steps, (item) => item.type === 'tool')
180
+
170
181
  if (tool && tool.status === 'running') {
171
182
  const messageId = planningToolDictionaryHelper.getMessageIdPlanningStepFromToolExecutionId(tool.id)
172
183
  const originalItem = messages.find((message) => `${message.id}` === messageId)
@@ -174,8 +185,16 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
174
185
  let update = false
175
186
  const step = originalItemValue?.steps?.find(step => step.type === 'step')
176
187
  if (step && step.attempts?.[0].tools?.[0].executionId === tool.id) {
177
- step.attempts = JSON.parse(JSON.stringify(tool.attempts))
178
- update = true
188
+ step.attempts?.map((attempt, i) => {
189
+ const newAttempt = tool.attempts?.[i]
190
+ if (!newAttempt) return
191
+ attempt.tools?.map((origTool, j) => {
192
+ const newTool = newAttempt.tools?.[j]
193
+ if (!newTool || origTool.executionId !== newTool.executionId) return origTool
194
+ update = true
195
+ return { ...origTool, ...newTool }
196
+ })
197
+ })
179
198
  }
180
199
  if (update) {
181
200
  originalItem?.setValue({ ...originalItemValue as TextChatEntry })
@@ -189,6 +208,11 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
189
208
  let finalValue: Partial<ChatResponse3> | undefined
190
209
  try {
191
210
  finalValue = await stream.getValue()
211
+ if (lastPlanningAwaiting) {
212
+ const value = lastPlanningAwaiting.getValue()
213
+ value.content = finalValue.answer || value.content
214
+ lastPlanningAwaiting.setValue(value)
215
+ }
192
216
  // if the streaming feature is not enabled, we only add the chat entry once the streaming has finished
193
217
  if (!chat.get('features').streaming) {
194
218
  chat.pushMessage(botEntry)
@@ -2,6 +2,7 @@ class PlanningToolDictionaryHelper {
2
2
  static instance: PlanningToolDictionaryHelper | undefined
3
3
  private toolExecutionIdPlanningStep: Record<string, string> = {}
4
4
  private toolExecutionIdToolStep: Record<string, string> = {}
5
+ private stepId: Record<string, number> = {}
5
6
 
6
7
  private constructor() {
7
8
  PlanningToolDictionaryHelper.instance = this
@@ -18,6 +19,14 @@ class PlanningToolDictionaryHelper {
18
19
  setMessageIdToolStepToolExecutionId(messageId: string, toolExecutionId: string){
19
20
  this.toolExecutionIdToolStep[toolExecutionId] = messageId
20
21
  }
22
+
23
+ setMessageIdForStepId(messageId: number, stepId: string){
24
+ this.stepId[stepId] = messageId
25
+ }
26
+
27
+ getMessageIdFromStepId(stepId: string){
28
+ return this.stepId[stepId]
29
+ }
21
30
 
22
31
  getMessageIdPlanningStepFromToolExecutionId(toolExecutionId: string){
23
32
  return this.toolExecutionIdPlanningStep[toolExecutionId]
@@ -9,7 +9,7 @@ import { PhoneInput } from 'react-international-phone'
9
9
  import 'react-international-phone/style.css'
10
10
  import { FileDescription } from '../../components/FileDescription'
11
11
  import { Markdown } from '../../components/Markdown'
12
- import { useChatEntry, useCurrentChat, useCurrentChatState, useWidget } from '../../context/hooks'
12
+ import { useChatEntry, useChatMessages, useCurrentChat, useCurrentChatState, useWidget } from '../../context/hooks'
13
13
  import { useMidnightUpdateView } from '../../hooks/midnight-update-view'
14
14
  import { ChatEntry, SerializableAction, TextChatEntry } from '../../state/ChatEntry'
15
15
  import { useDateFormatter } from '../../utils/date'
@@ -17,7 +17,7 @@ import { toolById } from '../../utils/tools'
17
17
  import { AgentInfo } from './AgentInfo'
18
18
  import { useChatScrollToBottomEffect } from './chat-scroll'
19
19
  import { onCopyAll, onCopyCode, onLikeOrDislike } from './events'
20
- import { StepsList, StepsPlaceholder } from './StepsList'
20
+ import { StepsList, StepsPlaceholder, ViewToolsDetails } from './StepsList'
21
21
 
22
22
  export interface CustomRenderResult {
23
23
  /**
@@ -219,7 +219,20 @@ export const ChatMessage = ({ message, isLast, beforeMessage, afterMessage, cust
219
219
  const [copied, setCopied] = useState(false)
220
220
  const [showUserButtonCopy, setShowUserButtonCopy] = useState(false)
221
221
  const isPlanning = useCurrentChatState('isPlaning') ?? false
222
-
222
+
223
+ // when we have a steps but we are not showing any content of the step
224
+ // (because it is a tool and the user has already answered the question)
225
+ // we do not want to show an avatar with empty content, so we hide the entire message
226
+ const toolsStep = entry.steps?.find(s => s.type === 'tool')
227
+ const messages = useChatMessages(chat.id)
228
+ const userHasAlreadyAnswered = useMemo(() => {
229
+ const messageIndex = messages.findIndex((messageItem) => messageItem.id === message.id)
230
+ if (messages.length-1 === messageIndex) return false
231
+ const nextMessage = messages[messageIndex+1].getValue()
232
+ return nextMessage.agentType === 'user'
233
+ }, [messages, messages.length])
234
+ const isMessageHidden = toolsStep && userHasAlreadyAnswered
235
+
223
236
  useChatScrollToBottomEffect(ref, [entry])
224
237
  useMidnightUpdateView()
225
238
 
@@ -344,7 +357,8 @@ export const ChatMessage = ({ message, isLast, beforeMessage, afterMessage, cust
344
357
  widget.set('panel', 'resources')
345
358
  }
346
359
 
347
- return (entry.content || entry.error || !!entry.steps?.length || entry.upload?.length || isPlanning) && (
360
+ return (entry.content || entry.error || !!entry.steps?.length ||
361
+ entry.upload?.length) && (!isMessageHidden || !toolsStep || isPlanning) && (
348
362
  <li key={entry.messageId} className={entry.agentType} ref={ref}>
349
363
  <div className="chat-message-container"
350
364
  onMouseEnter={entry.agentType === 'user' ? () => setShowUserButtonCopy(true) : undefined}
@@ -358,7 +372,8 @@ export const ChatMessage = ({ message, isLast, beforeMessage, afterMessage, cust
358
372
  {entry.badges.map((b, index) => <Badge key={index} colorPalette={b.color ?? 'cyan'} appearance="square">{b.label}</Badge>)}
359
373
  </div>}
360
374
 
361
- {!!entry.steps?.length && <StepsList steps={entry.steps} chatId={chat.id} messageId={message.id} />}
375
+ {!!entry.steps?.length && <StepsList steps={entry.steps} chatId={chat.id} messageId={message.id}
376
+ userHasAlreadyAnswered={userHasAlreadyAnswered} />}
362
377
 
363
378
  {renderContent()}
364
379
 
@@ -420,6 +435,7 @@ export const ChatMessage = ({ message, isLast, beforeMessage, afterMessage, cust
420
435
  </ImageBox>
421
436
  )})}
422
437
  </Button>
438
+ <ViewToolsDetails chatId={chat.id} />
423
439
  </div>}
424
440
 
425
441
  {shouldShowFooter && <div className="message-footer">