@stack-spot/ai-chat-widget 1.9.0 → 1.10.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.
Files changed (115) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/StackspotAIWidget.d.ts.map +1 -1
  3. package/dist/StackspotAIWidget.js +2 -1
  4. package/dist/StackspotAIWidget.js.map +1 -1
  5. package/dist/app-metadata.json +11 -3
  6. package/dist/chat-interceptors/send-message.d.ts.map +1 -1
  7. package/dist/chat-interceptors/send-message.js +3 -1
  8. package/dist/chat-interceptors/send-message.js.map +1 -1
  9. package/dist/components/AnimatedOpacity.d.ts +8 -0
  10. package/dist/components/AnimatedOpacity.d.ts.map +1 -0
  11. package/dist/components/AnimatedOpacity.js +46 -0
  12. package/dist/components/AnimatedOpacity.js.map +1 -0
  13. package/dist/components/Code.d.ts +2 -1
  14. package/dist/components/Code.d.ts.map +1 -1
  15. package/dist/components/Code.js +4 -4
  16. package/dist/components/Code.js.map +1 -1
  17. package/dist/components/Modal.d.ts +9 -0
  18. package/dist/components/Modal.d.ts.map +1 -0
  19. package/dist/components/Modal.js +58 -0
  20. package/dist/components/Modal.js.map +1 -0
  21. package/dist/layout.css +21 -0
  22. package/dist/state/ChatEntry.d.ts +21 -2
  23. package/dist/state/ChatEntry.d.ts.map +1 -1
  24. package/dist/state/ChatEntry.js.map +1 -1
  25. package/dist/state/WidgetState.d.ts +8 -1
  26. package/dist/state/WidgetState.d.ts.map +1 -1
  27. package/dist/state/WidgetState.js.map +1 -1
  28. package/dist/utils/error.d.ts +2 -0
  29. package/dist/utils/error.d.ts.map +1 -0
  30. package/dist/utils/error.js +54 -0
  31. package/dist/utils/error.js.map +1 -0
  32. package/dist/views/Chat/ChatMessage.d.ts +1 -1
  33. package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
  34. package/dist/views/Chat/ChatMessage.js +4 -3
  35. package/dist/views/Chat/ChatMessage.js.map +1 -1
  36. package/dist/views/Chat/StepsList.d.ts +9 -0
  37. package/dist/views/Chat/StepsList.d.ts.map +1 -0
  38. package/dist/views/Chat/StepsList.js +51 -0
  39. package/dist/views/Chat/StepsList.js.map +1 -0
  40. package/dist/views/Chat/styled.d.ts +3 -1
  41. package/dist/views/Chat/styled.d.ts.map +1 -1
  42. package/dist/views/Chat/styled.js +56 -0
  43. package/dist/views/Chat/styled.js.map +1 -1
  44. package/dist/views/Stacks.js +1 -0
  45. package/dist/views/Stacks.js.map +1 -1
  46. package/dist/views/Tools/FlowChart/HandleGroup.d.ts +7 -0
  47. package/dist/views/Tools/FlowChart/HandleGroup.d.ts.map +1 -0
  48. package/dist/views/Tools/FlowChart/HandleGroup.js +4 -0
  49. package/dist/views/Tools/FlowChart/HandleGroup.js.map +1 -0
  50. package/dist/views/Tools/FlowChart/NodeStep.d.ts +7 -0
  51. package/dist/views/Tools/FlowChart/NodeStep.d.ts.map +1 -0
  52. package/dist/views/Tools/FlowChart/NodeStep.js +15 -0
  53. package/dist/views/Tools/FlowChart/NodeStep.js.map +1 -0
  54. package/dist/views/Tools/FlowChart/index.d.ts +9 -0
  55. package/dist/views/Tools/FlowChart/index.d.ts.map +1 -0
  56. package/dist/views/Tools/FlowChart/index.js +52 -0
  57. package/dist/views/Tools/FlowChart/index.js.map +1 -0
  58. package/dist/views/Tools/FlowChart/layout.d.ts +17 -0
  59. package/dist/views/Tools/FlowChart/layout.d.ts.map +1 -0
  60. package/dist/views/Tools/FlowChart/layout.js +40 -0
  61. package/dist/views/Tools/FlowChart/layout.js.map +1 -0
  62. package/dist/views/Tools/FlowChart/styled.d.ts +15 -0
  63. package/dist/views/Tools/FlowChart/styled.d.ts.map +1 -0
  64. package/dist/views/Tools/FlowChart/styled.js +181 -0
  65. package/dist/views/Tools/FlowChart/styled.js.map +1 -0
  66. package/dist/views/Tools/FlowChart/types.d.ts +13 -0
  67. package/dist/views/Tools/FlowChart/types.d.ts.map +1 -0
  68. package/dist/views/Tools/FlowChart/types.js +2 -0
  69. package/dist/views/Tools/FlowChart/types.js.map +1 -0
  70. package/dist/views/Tools/StepModal.d.ts +9 -0
  71. package/dist/views/Tools/StepModal.d.ts.map +1 -0
  72. package/dist/views/Tools/StepModal.js +156 -0
  73. package/dist/views/Tools/StepModal.js.map +1 -0
  74. package/dist/views/Tools/ToolsPanel.d.ts +6 -0
  75. package/dist/views/Tools/ToolsPanel.d.ts.map +1 -0
  76. package/dist/views/Tools/ToolsPanel.js +14 -0
  77. package/dist/views/Tools/ToolsPanel.js.map +1 -0
  78. package/dist/views/Tools/dictionary.d.ts +41 -0
  79. package/dist/views/Tools/dictionary.d.ts.map +1 -0
  80. package/dist/views/Tools/dictionary.js +43 -0
  81. package/dist/views/Tools/dictionary.js.map +1 -0
  82. package/dist/views/Tools/index.d.ts +5 -0
  83. package/dist/views/Tools/index.d.ts.map +1 -0
  84. package/dist/views/Tools/index.js +31 -0
  85. package/dist/views/Tools/index.js.map +1 -0
  86. package/dist/views/Tools/utils.d.ts +6 -0
  87. package/dist/views/Tools/utils.d.ts.map +1 -0
  88. package/dist/views/Tools/utils.js +32 -0
  89. package/dist/views/Tools/utils.js.map +1 -0
  90. package/package.json +5 -3
  91. package/src/StackspotAIWidget.tsx +2 -0
  92. package/src/app-metadata.json +11 -3
  93. package/src/chat-interceptors/send-message.ts +8 -3
  94. package/src/components/AnimatedOpacity.tsx +55 -0
  95. package/src/components/Code.tsx +5 -3
  96. package/src/components/Modal.tsx +87 -0
  97. package/src/layout.css +21 -0
  98. package/src/state/ChatEntry.ts +25 -1
  99. package/src/state/WidgetState.ts +5 -1
  100. package/src/utils/error.ts +56 -0
  101. package/src/views/Chat/ChatMessage.tsx +7 -5
  102. package/src/views/Chat/StepsList.tsx +97 -0
  103. package/src/views/Chat/styled.ts +62 -1
  104. package/src/views/Stacks.tsx +1 -0
  105. package/src/views/Tools/FlowChart/HandleGroup.tsx +12 -0
  106. package/src/views/Tools/FlowChart/NodeStep.tsx +57 -0
  107. package/src/views/Tools/FlowChart/index.tsx +71 -0
  108. package/src/views/Tools/FlowChart/layout.ts +49 -0
  109. package/src/views/Tools/FlowChart/styled.ts +182 -0
  110. package/src/views/Tools/FlowChart/types.ts +14 -0
  111. package/src/views/Tools/StepModal.tsx +247 -0
  112. package/src/views/Tools/ToolsPanel.tsx +24 -0
  113. package/src/views/Tools/dictionary.ts +46 -0
  114. package/src/views/Tools/index.tsx +37 -0
  115. package/src/views/Tools/utils.tsx +34 -0
@@ -0,0 +1,37 @@
1
+ import { Flex } from '@citric/core'
2
+ import { LoadingCircular } from '@citric/ui'
3
+ import { lazy, Suspense, useEffect } from 'react'
4
+ import { useWidget, useWidgetState } from '../../context/hooks'
5
+ import { useRightPanel } from '../../right-panel/hooks'
6
+ import { useToolsDictionary } from './dictionary'
7
+
8
+ const LazyToolsPanel = lazy(() => import('./ToolsPanel'))
9
+
10
+ /**
11
+ * Renders the Stack selection form in the Right Panel if this is the panel that is currently opened.
12
+ */
13
+ export const Tools = () => {
14
+ const t = useToolsDictionary()
15
+ const panel = useWidgetState('panel')
16
+ const message = useWidgetState('currentMessageInToolsPanel')
17
+ const { open } = useRightPanel()
18
+ const widget = useWidget()
19
+
20
+ useEffect(() => {
21
+ if (panel === 'tools' && message) open(
22
+ <Suspense fallback={<Flex alignItems="center" justifyContent="center" flex={1}><LoadingCircular /></Flex>}>
23
+ <LazyToolsPanel key={message.messageId} chatId={message.chatId} messageId={message.messageId} />
24
+ </Suspense>,
25
+ {
26
+ title: t.tools,
27
+ description: t.toolsDescription,
28
+ onClose: () => {
29
+ widget.set('panel', undefined)
30
+ widget.set('currentMessageInToolsPanel', undefined)
31
+ },
32
+ },
33
+ )
34
+ }, [panel, t, message])
35
+
36
+ return null
37
+ }
@@ -0,0 +1,34 @@
1
+ import { IconBox } from '@citric/core'
2
+ import { CheckCircleFill, ListUnordered, PlayFill, TimesCircleFill } from '@citric/icons'
3
+ import { LoadingCircular } from '@citric/ui'
4
+ import { ChatEntryStep } from '../../state/ChatEntry'
5
+
6
+ export function getStatusIcon(status: ChatEntryStep['status']) {
7
+ switch (status) {
8
+ case 'success': return <IconBox colorIcon="success.500"><CheckCircleFill /></IconBox>
9
+ case 'error': return <IconBox colorIcon="danger.500"><TimesCircleFill /></IconBox>
10
+ case 'running': return <LoadingCircular colorScheme="inverse" size="xs" />
11
+ default: return null
12
+ }
13
+ }
14
+
15
+ export function getTypeIcon(type: ChatEntryStep['type']) {
16
+ switch (type) {
17
+ case 'planning': return <ListUnordered />
18
+ default: return <PlayFill />
19
+ }
20
+ }
21
+
22
+ export function getTitle(translation: Record<'planning' | 'step' | 'answer', string>, step: ChatEntryStep | undefined, index: number) {
23
+ if (!step) return ''
24
+ switch (step.type) {
25
+ case 'planning': return translation.planning
26
+ case 'step': return `${translation.step} ${index}`
27
+ case 'answer': return translation.answer
28
+ }
29
+ }
30
+
31
+ export function toPrecision(n: number, precisionDigits = 1) {
32
+ const factor = Math.pow(10, precisionDigits)
33
+ return Math.round(n * factor) / factor
34
+ }