@stack-spot/ai-chat-widget 1.31.2-beta.1 → 1.32.0-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.
Files changed (56) hide show
  1. package/CHANGELOG.md +25 -7
  2. package/dist/app-metadata.json +3 -3
  3. package/dist/components/RightPanelContentList.d.ts +10 -0
  4. package/dist/components/RightPanelContentList.d.ts.map +1 -0
  5. package/dist/components/RightPanelContentList.js +7 -0
  6. package/dist/components/RightPanelContentList.js.map +1 -0
  7. package/dist/components/Selector/index.d.ts.map +1 -1
  8. package/dist/components/Selector/index.js +3 -2
  9. package/dist/components/Selector/index.js.map +1 -1
  10. package/dist/features.d.ts +15 -0
  11. package/dist/features.d.ts.map +1 -1
  12. package/dist/features.js +1 -0
  13. package/dist/features.js.map +1 -1
  14. package/dist/layout.css +4 -0
  15. package/dist/state/constants.js +1 -1
  16. package/dist/state/constants.js.map +1 -1
  17. package/dist/views/Agents/AgentDescription.js +1 -1
  18. package/dist/views/Agents/AgentDescription.js.map +1 -1
  19. package/dist/views/Agents/AgentsPanel.d.ts.map +1 -1
  20. package/dist/views/Agents/AgentsPanel.js +24 -15
  21. package/dist/views/Agents/AgentsPanel.js.map +1 -1
  22. package/dist/views/Agents/AgentsTab.d.ts +1 -1
  23. package/dist/views/Agents/AgentsTab.d.ts.map +1 -1
  24. package/dist/views/Agents/dictionary.d.ts +1 -1
  25. package/dist/views/KSDocument.d.ts.map +1 -1
  26. package/dist/views/KSDocument.js +2 -1
  27. package/dist/views/KSDocument.js.map +1 -1
  28. package/dist/views/KnowledgeSources.d.ts +1 -1
  29. package/dist/views/KnowledgeSources.d.ts.map +1 -1
  30. package/dist/views/KnowledgeSources.js +24 -11
  31. package/dist/views/KnowledgeSources.js.map +1 -1
  32. package/dist/views/MessageInput/AgentSelector.d.ts.map +1 -1
  33. package/dist/views/MessageInput/AgentSelector.js +6 -2
  34. package/dist/views/MessageInput/AgentSelector.js.map +1 -1
  35. package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +1 -1
  36. package/dist/views/MessageInput/QuickCommandSelector.js +9 -4
  37. package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -1
  38. package/dist/views/Stacks.d.ts +1 -1
  39. package/dist/views/Stacks.d.ts.map +1 -1
  40. package/dist/views/Stacks.js +21 -11
  41. package/dist/views/Stacks.js.map +1 -1
  42. package/package.json +2 -2
  43. package/src/app-metadata.json +3 -3
  44. package/src/components/RightPanelContentList.tsx +15 -0
  45. package/src/components/Selector/index.tsx +8 -6
  46. package/src/features.ts +17 -0
  47. package/src/layout.css +4 -0
  48. package/src/state/constants.ts +1 -1
  49. package/src/views/Agents/AgentDescription.tsx +1 -1
  50. package/src/views/Agents/AgentsPanel.tsx +36 -17
  51. package/src/views/Agents/AgentsTab.tsx +1 -1
  52. package/src/views/KSDocument.tsx +2 -1
  53. package/src/views/KnowledgeSources.tsx +38 -14
  54. package/src/views/MessageInput/AgentSelector.tsx +9 -3
  55. package/src/views/MessageInput/QuickCommandSelector.tsx +18 -5
  56. package/src/views/Stacks.tsx +34 -14
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Flex, IconBox, Image } from '@citric/core';
3
3
  import { Agent } from '@citric/icons';
4
- import { agentToolsClient } from '@stack-spot/portal-network';
4
+ import { agentToolsClient, workspaceAiClient } from '@stack-spot/portal-network';
5
5
  import { useCallback } from 'react';
6
6
  import { Selector } from '../../components/Selector/index.js';
7
- import { useCurrentChat, useCurrentChatState } from '../../context/hooks.js';
7
+ import { useCurrentChat, useCurrentChatState, useWidgetState } from '../../context/hooks.js';
8
8
  import { agentRegex } from '../../regex.js';
9
9
  import { useAgentFavorites } from '../Agents/useAgentFavorites.js';
10
10
  const AgentItem = ({ avatar, name, spaceName }) => {
@@ -14,6 +14,7 @@ const AgentItem = ({ avatar, name, spaceName }) => {
14
14
  export const AgentSelector = ({ inputRef, isTrial }) => {
15
15
  const chat = useCurrentChat();
16
16
  const isAgentEnabled = useCurrentChatState('features').agent;
17
+ const spotId = useWidgetState('features')?.workspaceId;
17
18
  const { useFavorites, onAddFavorite, onRemoveFavorite } = useAgentFavorites();
18
19
  const onSelectItem = useCallback(async (agent) => {
19
20
  const newValue = `@${agent.slug}`;
@@ -32,6 +33,9 @@ export const AgentSelector = ({ inputRef, isTrial }) => {
32
33
  inputRef.current.focus();
33
34
  }, [chat, inputRef]);
34
35
  const getAgents = () => {
36
+ if (spotId) {
37
+ return workspaceAiClient.getAgentFromWorkspaceAi.useQuery({ workspaceId: spotId });
38
+ }
35
39
  if (isTrial) {
36
40
  return agentToolsClient.allAgents.useQuery({ visibilities: ['personal', 'built_in'] });
37
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/AgentSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/AgentSelector.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QuickCommandSelector.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,0BAC/B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAA;CAAE,4CAsGxF,CAAA"}
1
+ {"version":3,"file":"QuickCommandSelector.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,0BAC/B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAA;CAAE,4CAmHxF,CAAA"}
@@ -3,11 +3,12 @@ import { QuickCommand } from '@citric/icons';
3
3
  import { aiClient, workspaceAiClient } from '@stack-spot/portal-network';
4
4
  import { useCallback } from 'react';
5
5
  import { Selector } from '../../components/Selector/index.js';
6
- import { useCurrentChat, useCurrentChatState } from '../../context/hooks.js';
6
+ import { useCurrentChat, useCurrentChatState, useWidgetState } from '../../context/hooks.js';
7
7
  import { quickCommandRegex } from '../../regex.js';
8
8
  export const QuickCommandSelector = ({ inputRef, isTrial }) => {
9
9
  const chat = useCurrentChat();
10
10
  const isQuickCommandEnabled = useCurrentChatState('features').quickCommands;
11
+ const spotId = useWidgetState('features')?.workspaceId;
11
12
  const useFavorites = () => aiClient.allQuickCommands.useQuery({ visibility: 'favorite' });
12
13
  const [addFavorite, pendingAddFav] = aiClient.addFavoriteQuickCommand.useMutation();
13
14
  const [removeFavorite, pendingRemoveFav] = aiClient.removeFavoriteQuickCommand.useMutation();
@@ -68,11 +69,15 @@ export const QuickCommandSelector = ({ inputRef, isTrial }) => {
68
69
  inputRef.current.focus();
69
70
  }, [chat, inputRef]);
70
71
  const getQuickCommands = () => {
72
+ if (spotId) {
73
+ return workspaceAiClient.getQCFromWorkspaceAi.useQuery({ workspaceId: spotId });
74
+ }
71
75
  const quickCommands = aiClient.allQuickCommands.useQuery({ order: 'a-to-z' });
72
76
  const quickCommandsFiltered = quickCommands.filter((qc) => qc.visibility_level.toLowerCase() !== 'workspace');
73
- const workspaceQuickCommands = workspaceAiClient.workspacesContentsByType.useQuery({ contentType: 'quick_command' });
74
- const workspaceQuickCommandsWithWorkspaceName = workspaceQuickCommands
75
- .flatMap(({ qcs, space_name }) => qcs?.map((qc) => ({ ...qc, spaceName: space_name })));
77
+ const workspaceQuickCommands = workspaceAiClient.workspacesContentsByType.useQuery({
78
+ contentType: 'quick_command',
79
+ });
80
+ const workspaceQuickCommandsWithWorkspaceName = workspaceQuickCommands.flatMap(({ qcs, space_name }) => qcs?.map((qc) => ({ ...qc, spaceName: space_name })));
76
81
  return [...quickCommandsFiltered, ...workspaceQuickCommandsWithWorkspaceName];
77
82
  };
78
83
  const QuickCommandItem = ({ slug, description, spaceName }) => _jsxs(_Fragment, { children: [_jsx("p", { className: "selector-description", children: spaceName }), _jsxs("p", { className: "selector-title", children: ["/", slug?.toUpperCase()] }), _jsx("p", { className: "selector-description", children: description })] });
@@ -1 +1 @@
1
- {"version":3,"file":"QuickCommandSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QuickCommandSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { ChatProperties } from '../state/ChatState.js';
5
5
  */
6
6
  export declare const Stacks: () => null;
7
7
  export interface StacksTabProps {
8
- visibility: VisibilityLevelEnum;
8
+ visibility?: VisibilityLevelEnum;
9
9
  workspaceId?: string;
10
10
  stack: React.MutableRefObject<ChatProperties['stack']>;
11
11
  showSubmitButton?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Stacks.d.ts","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAsB,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAY3F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD;;GAEG;AACH,eAAO,MAAM,MAAM,YAclB,CAAA;AA0BD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,SAAS,yDAAiE,cAAc,4CAgHpG,CAAA"}
1
+ {"version":3,"file":"Stacks.d.ts","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAsB,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAc3F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAKnD;;GAEG;AACH,eAAO,MAAM,MAAM,YAclB,CAAA;AA0CD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,SAAS,yDAAiE,cAAc,4CAgHpG,CAAA"}
@@ -8,6 +8,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
8
  import { ButtonFavorite } from '../components/ButtonFavorite.js';
9
9
  import { DescribedRadioGroup } from '../components/form/DescribedRadioGroup.js';
10
10
  import { IconInput } from '../components/IconInput.js';
11
+ import { RightPanelContentList } from '../components/RightPanelContentList.js';
11
12
  import { RightPanelTabs } from '../components/RightPanelTabs.js';
12
13
  import { WorkspaceTabNavigator } from '../components/WorkspaceTabNavigator.js';
13
14
  import { useCurrentChat, useWidget, useWidgetState } from '../context/hooks.js';
@@ -32,20 +33,29 @@ const StacksPanel = () => {
32
33
  const chat = useCurrentChat();
33
34
  const isTrial = checkIsTrial();
34
35
  const stack = useRef(chat.get('stack'));
36
+ const features = useWidgetState('features');
37
+ const isGroupResourcesByScope = features?.groupResourcesByScope;
38
+ const scopes = features?.scopes ?? [];
39
+ const spotId = features?.workspaceId;
35
40
  useEffect(() => {
36
41
  stack.current = chat.get('stack');
37
42
  }, [chat]);
38
- const tabs = useMemo(() => isTrial ? [
39
- { title: t.favorites, content: _jsx(StacksTab, { visibility: "favorite", stack: stack }, "favorites") },
40
- { title: t.personal, content: _jsx(StacksTab, { visibility: "personal", stack: stack }, "personal") },
41
- ] : [
42
- { title: t.favorites, content: _jsx(StacksTab, { visibility: "favorite", stack: stack }, "favorites") },
43
- { title: t.personal, content: _jsx(StacksTab, { visibility: "personal", stack: stack }, "personal") },
44
- { title: t.shared, content: _jsx(StacksTab, { visibility: "shared", stack: stack }, "shared") },
45
- { title: t.spots, content: _jsx(StacksTabWorkspace, { visibility: "workspace", stack: stack }, "workspace") },
46
- { title: t.account, content: _jsx(StacksTab, { visibility: "account", stack: stack }, "account") },
47
- ], [t, isTrial]);
48
- return _jsx(RightPanelTabs, { tabs: tabs }, chat.id);
43
+ const allTabsMap = {
44
+ favorite: { title: t.favorites, content: _jsx(StacksTab, { visibility: "favorite", stack: stack }, "favorites") },
45
+ personal: { title: t.personal, content: _jsx(StacksTab, { visibility: "personal", stack: stack }, "personal") },
46
+ shared: { title: t.shared, content: _jsx(StacksTab, { visibility: "shared", stack: stack }, "shared") },
47
+ workspace: { title: t.spots, content: _jsx(StacksTabWorkspace, { visibility: "workspace", stack: stack }, "workspace") },
48
+ account: { title: t.account, content: _jsx(StacksTab, { visibility: "account", stack: stack }, "account") },
49
+ };
50
+ const defaultScopes = ['favorite', 'personal', 'shared', 'workspace', 'account'];
51
+ const rawScopes = scopes?.length ? scopes : defaultScopes;
52
+ const scopesToRender = isTrial
53
+ ? ['favorite', 'personal']
54
+ : rawScopes;
55
+ const tabs = scopesToRender
56
+ .map(scope => allTabsMap[scope])
57
+ .filter(Boolean);
58
+ return (isGroupResourcesByScope ? (_jsx(RightPanelTabs, { tabs: tabs }, chat.id)) : (_jsx(RightPanelContentList, { children: _jsx(StacksTab, { stack: stack, workspaceId: spotId }) })));
49
59
  };
50
60
  export const StacksTab = ({ visibility, workspaceId, stack, showSubmitButton = true }) => {
51
61
  const t = useTranslate(dictionary);
@@ -1 +1 @@
1
- {"version":3,"file":"Stacks.js","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stacks.js","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.31.2-beta.1",
3
+ "version": "1.32.0-beta.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "@citric/core": "^6.4.0",
14
14
  "@stack-spot/portal-components": "^2.22.1",
15
15
  "@citric/icons": "^5.13.0",
16
- "@stack-spot/portal-network": "0.156.0-beta.2",
16
+ "@stack-spot/portal-network": "^0.160.1",
17
17
  "@citric/ui": "^6.10.2",
18
18
  "@stack-spot/portal-theme": "^1.0.0",
19
19
  "@stack-spot/portal-translate": "^1.1.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.31.2-beta.1",
4
- "date": "Mon Jul 14 2025 23:07:11 GMT+0000 (Coordinated Universal Time)",
3
+ "version": "1.32.0-beta.1",
4
+ "date": "Fri Jul 25 2025 14:37:59 GMT+0000 (Coordinated Universal Time)",
5
5
  "dependencies": [
6
6
  {
7
7
  "name": "@stack-spot/app-metadata",
@@ -113,7 +113,7 @@
113
113
  },
114
114
  {
115
115
  "name": "@stack-spot/portal-network",
116
- "version": "0.156.0-beta.2(@stack-spot/auth@5.3.2)(@stack-spot/opa@2.5.0(@stack-spot/auth@5.3.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@1.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)"
116
+ "version": "0.160.1(@stack-spot/auth@5.3.2)(@stack-spot/opa@2.5.0(@stack-spot/auth@5.3.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@1.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)"
117
117
  },
118
118
  {
119
119
  "name": "@stack-spot/portal-theme",
@@ -0,0 +1,15 @@
1
+ import { ReactElement } from 'react'
2
+ import { RightPanelForm } from './RightPanelForm'
3
+
4
+ interface Props {
5
+ children: ReactElement,
6
+ }
7
+
8
+ /**
9
+ * List content for the right panel.
10
+ */
11
+ export const RightPanelContentList = ({ children }: Props) => (
12
+ <RightPanelForm>
13
+ {children}
14
+ </RightPanelForm>
15
+ )
@@ -5,7 +5,7 @@ import { useKeyboardControls } from '@stack-spot/portal-components'
5
5
  import { AgentVisibilityLevel } from '@stack-spot/portal-network'
6
6
  import { Dictionary, interpolate, useTranslate } from '@stack-spot/portal-translate'
7
7
  import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'
8
- import { useCurrentChatState } from '../../context/hooks'
8
+ import { useCurrentChatState, useWidgetState } from '../../context/hooks'
9
9
  import { getUrlToStackSpotAI } from '../../utils/url'
10
10
  import { ButtonFavorite } from '../ButtonFavorite'
11
11
  import { Fading } from '../Fading'
@@ -112,7 +112,6 @@ const List = <T extends Item>({ selectorConfig, filter, visibility, onSelect, fa
112
112
  const t = useTranslate(dictionary)
113
113
  const items = selectorConfig.useData()
114
114
  const favorites = favorite?.useFavorites?.()
115
-
116
115
  const filtered = useMemo(() => {
117
116
  if (!filter && !visibility) return [...items]
118
117
  const lowerFilter = filter?.toLowerCase() ?? ''
@@ -152,6 +151,7 @@ const SelectorContent = ({ filter, onClose, selectorConfig, favorite }: ContentP
152
151
  const t = useTranslate(dictionary)
153
152
  const ref = useRef<HTMLDivElement>(null)
154
153
  const [visibility, setVisibility] = useState<SectionVisibility | undefined>()
154
+ const isGroupResourcesByScope = useWidgetState('features')?.groupResourcesByScope
155
155
  const { resourceName, icon, onSelect, sections } = selectorConfig
156
156
  const onSelectItem = useCallback((slug: string) => {
157
157
  onSelect(slug)
@@ -184,10 +184,12 @@ const SelectorContent = ({ filter, onClose, selectorConfig, favorite }: ContentP
184
184
  <Text as="h3" className="uppercase"> {resourceName} </Text>
185
185
  </header>
186
186
  <div className="body">
187
- <ul className="tabs">
188
- {createSectionItem()}
189
- {sections.map(createSectionItem)}
190
- </ul>
187
+ {isGroupResourcesByScope && (
188
+ <ul className="tabs">
189
+ {createSectionItem()}
190
+ {sections.map(createSectionItem)}
191
+ </ul>
192
+ )}
191
193
  <FallbackBoundary message={interpolate(t.error, selectorConfig.resourceName)} mini>
192
194
  <List filter={filter} visibility={visibility} selectorConfig={selectorConfig} onSelect={onSelectItem} favorite={favorite} />
193
195
  </FallbackBoundary>
package/src/features.ts CHANGED
@@ -41,11 +41,27 @@ export interface ChatFeatures {
41
41
  streaming: boolean,
42
42
  }
43
43
 
44
+ export type Scope = 'favorite' | 'builtin' | 'personal' | 'shared' | 'workspace' | 'account'
45
+
44
46
  export interface GlobalFeatures {
45
47
  /**
46
48
  * Enables the chat history.
47
49
  */
48
50
  chatHistory: boolean,
51
+ /**
52
+ * When selecting a resource, they're separated by scope (account, personal, workspace, etc.).
53
+ *
54
+ * If this is set, only the scopes in this list will be enabled.
55
+ */
56
+ scopes?: Scope[],
57
+ /**
58
+ * When set, only items(knowledge sources, agents, stacks ai, quick commands) from that workspace will be shown to the user.
59
+ */
60
+ workspaceId?: string,
61
+ /**
62
+ * when set to false it does not show tab by scope, it shows a single list.
63
+ */
64
+ groupResourcesByScope?: boolean,
49
65
  }
50
66
 
51
67
  export type AIWidgetFeatures = ChatFeatures & GlobalFeatures
@@ -68,6 +84,7 @@ export function getFeaturesWithDefaults(features?: Partial<AIWidgetFeatures>): A
68
84
  upload: true,
69
85
  streaming: true,
70
86
  showSourcesInResponse: true,
87
+ groupResourcesByScope: true,
71
88
  ...features,
72
89
  }
73
90
  }
package/src/layout.css CHANGED
@@ -143,6 +143,10 @@
143
143
  display: flex;
144
144
  flex-direction: column;
145
145
 
146
+ code {
147
+ overflow: auto;
148
+ }
149
+
146
150
  &.visible {
147
151
  left: 50%;
148
152
  }
@@ -1,7 +1,7 @@
1
1
  import { FileSize } from './types'
2
2
 
3
3
  export const acceptedFileTypes = [
4
- 'json', 'yaml', 'txt', 'md', 'json', 'yaml', 'pdf', /*'xls', 'xlsx', 'csv',*/ 'cbl', 'cpp', 'cxx', 'cc', 'c', 'hpp', 'hxx', 'hh', 'h',
4
+ 'json', 'yaml', 'txt', 'md', 'json', 'yaml', 'pdf', /*'xls', 'xlsx',*/ 'csv', 'cbl', 'cpp', 'cxx', 'cc', 'c', 'hpp', 'hxx', 'hh', 'h',
5
5
  'cs', 'go', 'html', 'htm', 'kt', 'kts', 'md', 'php', 'proto', 'py', 'java', 'js', 'jsx', 'ts', 'tsx', 'rst', 'rb', 'rs', 'scala', 'swift',
6
6
  'sql', 'yaml', 'yml', 'tf', 'sh', 'ps1', 'psd1', 'psm1', 'bat', 'cmd', 'rego', 'f', 'for', 'r', 'pl', 'vb', 'dart', 'hs', 'lua',
7
7
  'asm', 'groovy', 'gvy', 'gy', 'mat', 'clj', 'lisp', 'm', 'cls', 'css', 'scss', 'json', 'jpg', 'jpeg', 'png',
@@ -28,7 +28,7 @@ export const AgentDescription = ({ agentId }: { agentId?: string }) => {
28
28
  }, [numberOfKnowledgeSources])
29
29
  const tools = useMemo(() => {
30
30
  const result: React.ReactElement[] = []
31
- const builtInTools = agent?.toolkits?.builtin_toolkits?.[0].tools
31
+ const builtInTools = agent?.toolkits?.builtin_toolkits?.[0]?.tools
32
32
  const customToolkits = agent?.toolkits?.custom_toolkits ?? []
33
33
  for (const tool of builtInTools ?? []) {
34
34
  const toolWithImage = toolById(tool.id, toolKits)
@@ -1,11 +1,15 @@
1
1
  import { agentToolsClient } from '@stack-spot/portal-network'
2
- import { useEffect, useMemo, useRef } from 'react'
2
+ import { ReactElement, useEffect, useRef } from 'react'
3
+ import { RightPanelContentList } from '../../components/RightPanelContentList'
3
4
  import { RightPanelTabs } from '../../components/RightPanelTabs'
4
- import { useCurrentChat } from '../../context/hooks'
5
+ import { useCurrentChat, useWidgetState } from '../../context/hooks'
6
+ import { Scope } from '../../features'
5
7
  import { checkIsTrial } from '../../utils/check-is-trial'
6
8
  import { AgentsTab, AgentsTabWorkspace } from './AgentsTab'
7
9
  import { useAgentsDictionary } from './dictionary'
8
10
 
11
+ type TabElement = { title: string, content: ReactElement }
12
+
9
13
  /**
10
14
  * Renders the Agent selection form in the Right Panel if this is the panel that is currently opened.
11
15
  */
@@ -14,6 +18,10 @@ export const AgentsPanel = () => {
14
18
  const chat = useCurrentChat()
15
19
  const isTrial = checkIsTrial()
16
20
  const agent = useRef(chat.get('agent'))
21
+ const features = useWidgetState('features')
22
+ const isGroupResourcesByScope = features?.groupResourcesByScope
23
+ const scopes = features?.scopes ?? []
24
+ const spotId = features?.workspaceId
17
25
 
18
26
  useEffect(() => {
19
27
  if (agentToolsClient.agentDefaultSlug !== chat.get('agent')?.slug) {
@@ -21,19 +29,30 @@ export const AgentsPanel = () => {
21
29
  }
22
30
  }, [chat])
23
31
 
24
- const tabs= useMemo(() => isTrial ? [
25
- { title: t.favorites, content: <AgentsTab key="favorite" visibility="favorite" agent={agent} /> },
26
- { title: t.builtin, content: <AgentsTab key="builtin" visibility="built_in" agent={agent} /> },
27
- { title: t.personal, content: <AgentsTab key="personal" visibility="personal" agent={agent} /> },
28
- ]: [
29
- { title: t.favorites, content: <AgentsTab key="favorite" visibility="favorite" agent={agent} /> },
30
- { title: t.builtin, content: <AgentsTab key="builtin" visibility="built_in" agent={agent} /> },
31
- { title: t.personal, content: <AgentsTab key="personal" visibility="personal" agent={agent} /> },
32
- { title: t.shared, content: <AgentsTab key="shared" visibility="shared" agent={agent} /> },
33
- { title: t.spots, content: <AgentsTabWorkspace key="workspace" visibility="workspace" agent={agent} /> },
34
- { title: t.account, content: <AgentsTab key="account" visibility="account" agent={agent} /> },
35
-
36
- ], [t, isTrial, agent])
37
-
38
- return <RightPanelTabs key={chat.id} tabs={tabs} />
32
+ const allTabsMap: Record<Scope, TabElement> = {
33
+ favorite: { title: t.favorites, content: <AgentsTab key="favorite" visibility="favorite" agent={agent} /> },
34
+ builtin: { title: t.builtin, content: <AgentsTab key="builtin" visibility="built_in" agent={agent} /> },
35
+ personal: { title: t.personal, content: <AgentsTab key="personal" visibility="personal" agent={agent} /> },
36
+ shared: { title: t.shared, content: <AgentsTab key="shared" visibility="shared" agent={agent} /> },
37
+ workspace: { title: t.spots, content: <AgentsTabWorkspace key="workspace" visibility="workspace" agent={agent} /> },
38
+ account: { title: t.account, content: <AgentsTab key="account" visibility="account" agent={agent} /> },
39
+ }
40
+
41
+ const defaultScopes: Scope[] = ['favorite', 'builtin', 'personal', 'shared', 'workspace', 'account']
42
+
43
+ const rawScopes: Scope[] = scopes?.length ? scopes : defaultScopes
44
+
45
+ const scopesToRender: Scope[] = isTrial
46
+ ? ['favorite', 'builtin', 'personal']
47
+ : rawScopes
48
+
49
+ const tabs = scopesToRender
50
+ .map(scope => allTabsMap[scope])
51
+ .filter(Boolean) as TabElement[]
52
+
53
+ return (isGroupResourcesByScope ? (
54
+ <RightPanelTabs key={chat.id} tabs={tabs} />
55
+ ) : (
56
+ <RightPanelContentList><AgentsTab workspaceId={spotId} agent={agent} /></RightPanelContentList>
57
+ ))
39
58
  }
@@ -19,7 +19,7 @@ import { AgentLabel } from './styled'
19
19
  import { useAgentFavorites } from './useAgentFavorites'
20
20
 
21
21
  export interface AgentTabProps {
22
- visibility: AgentVisibilityLevel,
22
+ visibility?: AgentVisibilityLevel,
23
23
  workspaceId?: string,
24
24
  agent: React.MutableRefObject<ChatProperties['agent']>,
25
25
  showSubmitButton?: boolean,
@@ -4,6 +4,7 @@ import { aiClient } from '@stack-spot/portal-network'
4
4
  import { Dictionary, useTranslate } from '@stack-spot/portal-translate'
5
5
  import { useEffect } from 'react'
6
6
  import { Code } from '../components/Code'
7
+ import { FallbackBoundary } from '../components/FallbackBoundary'
7
8
  import { useWidget, useWidgetState } from '../context/hooks'
8
9
  import { useRightPanel } from '../right-panel/hooks'
9
10
  import { extractCodeFromKSDocument } from '../utils/knowledge-source'
@@ -20,7 +21,7 @@ export const KSDocument = () => {
20
21
 
21
22
  useEffect(() => {
22
23
  if (panel === 'ks-details' && ks) open(
23
- <KSDocumentPanel documentId={ks.documentId} slug={ks.slug} />,
24
+ <FallbackBoundary><KSDocumentPanel documentId={ks.documentId} slug={ks.slug} /></FallbackBoundary>,
24
25
  {
25
26
  title: (
26
27
  <Flex flexDirection="row" alignItems="center" flex="1">
@@ -6,26 +6,30 @@ import { KnowledgeSourceItemResponse, VisibilityLevelEnum } from '@stack-spot/po
6
6
  import { WorkspaceResponse } from '@stack-spot/portal-network/api/workspace-ai'
7
7
  import { Dictionary, useTranslate } from '@stack-spot/portal-translate'
8
8
  import { difference, uniqBy } from 'lodash'
9
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
9
+ import React, { ReactElement, useCallback, useEffect, useMemo, useRef, useState } from 'react'
10
10
  import { ButtonFavorite } from '../components/ButtonFavorite'
11
11
  import { NavigationComponent } from '../components/ComponentNavigator'
12
12
  import { DescribedCheckboxGroup } from '../components/form/DescribedCheckboxGroup'
13
13
  import { IconInput } from '../components/IconInput'
14
+ import { RightPanelContentList } from '../components/RightPanelContentList'
14
15
  import { RightPanelTabs } from '../components/RightPanelTabs'
15
16
  import { WorkspaceTabNavigator } from '../components/WorkspaceTabNavigator'
16
17
  import { useCurrentChat, useWidget, useWidgetState } from '../context/hooks'
18
+ import { Scope } from '../features'
17
19
  import { useRightPanel } from '../right-panel/hooks'
18
20
  import { ChatProperties } from '../state/ChatState'
19
21
  import { checkIsTrial } from '../utils/check-is-trial'
20
22
 
21
23
  export interface TabProps {
22
- visibility: VisibilityLevelEnum,
24
+ visibility?: VisibilityLevelEnum,
23
25
  allKS: React.MutableRefObject<ChatProperties['knowledgeSources']>,
24
26
  workspaceId?: string,
25
27
  showSubmitButton?: boolean,
26
28
  onSubmit?: () => void,
27
29
  }
28
30
 
31
+ type TabElement = { title: string, content: ReactElement }
32
+
29
33
  export const KnowledgeSources = () => {
30
34
  const t = useTranslate(dictionary)
31
35
  const panel = useWidgetState('panel')
@@ -51,6 +55,10 @@ const KnowledgeSourcesPanel = () => {
51
55
  const allKS = useRef(chat.get('knowledgeSources') ?? [])
52
56
  const { close } = useRightPanel()
53
57
  const isTrial = checkIsTrial()
58
+ const features = useWidgetState('features')
59
+ const isGroupResourcesByScope = features?.groupResourcesByScope
60
+ const scopes = features?.scopes ?? []
61
+ const spotId = features?.workspaceId
54
62
 
55
63
  const onSubmit = useCallback(() => {
56
64
  chat.set('knowledgeSources', allKS.current)
@@ -61,18 +69,34 @@ const KnowledgeSourcesPanel = () => {
61
69
  allKS.current = chat.get('knowledgeSources') ?? []
62
70
  }, [chat])
63
71
 
64
- const tabs = isTrial ? [
65
- { title: t.favorites, content: <KnowledgeSourcesTab key="favorite" visibility="favorite" allKS={allKS} onSubmit={onSubmit} /> },
66
- { title: t.personal, content: <KnowledgeSourcesTab key="personal" visibility="personal" allKS={allKS} onSubmit={onSubmit} /> },
67
- ]: [
68
- { title: t.favorites, content: <KnowledgeSourcesTab key="favorite" visibility="favorite" allKS={allKS} onSubmit={onSubmit} /> },
69
- { title: t.personal, content: <KnowledgeSourcesTab key="personal" visibility="personal" allKS={allKS} onSubmit={onSubmit} /> },
70
- { title: t.shared, content: <KnowledgeSourcesTab key="shared" visibility="shared" allKS={allKS} onSubmit={onSubmit} /> },
71
- { title: t.spots, content: <KnowledgeSourcesTabWorkspace key="workspace" visibility="workspace" allKS={allKS} onSubmit={onSubmit} /> },
72
- { title: t.account, content: <KnowledgeSourcesTab key="account" visibility="account" allKS={allKS} onSubmit={onSubmit} /> },
73
- ]
74
-
75
- return <RightPanelTabs key={chat.id} tabs={tabs} />
72
+ const allTabsMap: Partial<Record<Scope, TabElement>> = {
73
+ favorite: { title: t.favorites,
74
+ content: <KnowledgeSourcesTab key="favorite" visibility="favorite" allKS={allKS} onSubmit={onSubmit} /> },
75
+ personal: { title: t.personal,
76
+ content: <KnowledgeSourcesTab key="personal" visibility="personal" allKS={allKS} onSubmit={onSubmit} /> },
77
+ shared: { title: t.shared, content: <KnowledgeSourcesTab key="shared" visibility="shared" allKS={allKS} onSubmit={onSubmit} /> },
78
+ workspace: { title: t.spots,
79
+ content: <KnowledgeSourcesTabWorkspace key="workspace" visibility="workspace" allKS={allKS} onSubmit={onSubmit} /> },
80
+ account: { title: t.account, content: <KnowledgeSourcesTab key="account" visibility="account" allKS={allKS} onSubmit={onSubmit} /> },
81
+ }
82
+
83
+ const defaultScopes: Scope[] = ['favorite', 'personal', 'shared', 'workspace', 'account']
84
+
85
+ const rawScopes: Scope[] = scopes?.length ? scopes : defaultScopes
86
+
87
+ const scopesToRender: Scope[] = isTrial
88
+ ? ['favorite', 'personal']
89
+ : rawScopes
90
+
91
+ const tabs = scopesToRender
92
+ .map(scope => allTabsMap[scope])
93
+ .filter(Boolean) as TabElement[]
94
+
95
+ return (isGroupResourcesByScope ? (
96
+ <RightPanelTabs key={chat.id} tabs={tabs} />
97
+ ) : (
98
+ <RightPanelContentList><KnowledgeSourcesTab allKS={allKS} onSubmit={onSubmit} workspaceId={spotId} /></RightPanelContentList>
99
+ ))
76
100
  }
77
101
 
78
102
  export const KnowledgeSourcesTab = ({ visibility, allKS, onSubmit, workspaceId, showSubmitButton = true }: TabProps) => {
@@ -1,9 +1,9 @@
1
1
  import { Flex, IconBox, Image } from '@citric/core'
2
2
  import { Agent } from '@citric/icons'
3
- import { AgentResponseWithBuiltIn, agentToolsClient } from '@stack-spot/portal-network'
3
+ import { AgentResponseWithBuiltIn, agentToolsClient, workspaceAiClient } from '@stack-spot/portal-network'
4
4
  import { useCallback } from 'react'
5
5
  import { Selector } from '../../components/Selector'
6
- import { useCurrentChat, useCurrentChatState } from '../../context/hooks'
6
+ import { useCurrentChat, useCurrentChatState, useWidgetState } from '../../context/hooks'
7
7
  import { agentRegex } from '../../regex'
8
8
  import { useAgentFavorites } from '../Agents/useAgentFavorites'
9
9
 
@@ -27,7 +27,8 @@ export const AgentSelector = ({ inputRef, isTrial }: {
27
27
  }) => {
28
28
  const chat = useCurrentChat()
29
29
  const isAgentEnabled = useCurrentChatState('features').agent
30
-
30
+ const spotId = useWidgetState('features')?.workspaceId
31
+
31
32
  const { useFavorites, onAddFavorite, onRemoveFavorite } = useAgentFavorites()
32
33
 
33
34
  const onSelectItem = useCallback(async (agent: AgentResponseWithBuiltIn) => {
@@ -52,9 +53,14 @@ export const AgentSelector = ({ inputRef, isTrial }: {
52
53
 
53
54
 
54
55
  const getAgents = () => {
56
+ if (spotId) {
57
+ return workspaceAiClient.getAgentFromWorkspaceAi.useQuery({ workspaceId: spotId }) as AgentResponseWithBuiltIn[]
58
+ }
59
+
55
60
  if (isTrial) {
56
61
  return agentToolsClient.allAgents.useQuery({ visibilities: ['personal', 'built_in'] })
57
62
  }
63
+
58
64
  return agentToolsClient.allAgents.useQuery({ visibilities: ['account', 'shared', 'personal', 'built_in', 'workspace'] })
59
65
  }
60
66