@stack-spot/ai-chat-widget 1.27.1 → 1.28.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.
- package/CHANGELOG.md +7 -0
- package/dist/app-metadata.json +3 -3
- package/dist/chat-interceptors/quick-commands.d.ts.map +1 -1
- package/dist/chat-interceptors/quick-commands.js +19 -1
- package/dist/chat-interceptors/quick-commands.js.map +1 -1
- package/dist/components/AgentCard/dictionary.d.ts +4 -2
- package/dist/components/AgentCard/dictionary.d.ts.map +1 -1
- package/dist/components/AgentCard/dictionary.js +4 -2
- package/dist/components/AgentCard/dictionary.js.map +1 -1
- package/dist/components/Selector/index.d.ts +2 -2
- package/dist/components/Selector/index.d.ts.map +1 -1
- package/dist/components/Selector/index.js +2 -2
- package/dist/components/Selector/index.js.map +1 -1
- package/dist/layout.css +17 -0
- package/dist/state/types.d.ts +1 -1
- package/dist/state/types.d.ts.map +1 -1
- package/dist/utils/tools.d.ts +2 -2
- package/dist/utils/tools.d.ts.map +1 -1
- package/dist/utils/tools.js +3 -6
- package/dist/utils/tools.js.map +1 -1
- package/dist/utils/upload/UploadManager.d.ts +2 -0
- package/dist/utils/upload/UploadManager.d.ts.map +1 -1
- package/dist/utils/upload/UploadManager.js +32 -25
- package/dist/utils/upload/UploadManager.js.map +1 -1
- package/dist/utils/upload/use-paste-upload.d.ts +8 -0
- package/dist/utils/upload/use-paste-upload.d.ts.map +1 -0
- package/dist/utils/upload/use-paste-upload.js +19 -0
- package/dist/utils/upload/use-paste-upload.js.map +1 -0
- package/dist/views/Agents/AgentDescription.d.ts +2 -9
- package/dist/views/Agents/AgentDescription.d.ts.map +1 -1
- package/dist/views/Agents/AgentDescription.js +12 -9
- package/dist/views/Agents/AgentDescription.js.map +1 -1
- package/dist/views/Agents/AgentsPanel.d.ts.map +1 -1
- package/dist/views/Agents/AgentsPanel.js +11 -11
- package/dist/views/Agents/AgentsPanel.js.map +1 -1
- package/dist/views/Agents/AgentsTab.d.ts +2 -2
- package/dist/views/Agents/AgentsTab.d.ts.map +1 -1
- package/dist/views/Agents/AgentsTab.js +6 -6
- package/dist/views/Agents/AgentsTab.js.map +1 -1
- package/dist/views/Agents/useAgentFavorites.d.ts +1 -1
- package/dist/views/Agents/useAgentFavorites.js +4 -4
- package/dist/views/Agents/useAgentFavorites.js.map +1 -1
- package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
- package/dist/views/Chat/ChatMessage.js +3 -3
- package/dist/views/Chat/ChatMessage.js.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -1
- package/dist/views/ChatHistory/HistoryItem.js +8 -5
- package/dist/views/ChatHistory/HistoryItem.js.map +1 -1
- package/dist/views/ChatHistory/utils.d.ts +0 -6
- package/dist/views/ChatHistory/utils.d.ts.map +1 -1
- package/dist/views/ChatHistory/utils.js +1 -16
- package/dist/views/ChatHistory/utils.js.map +1 -1
- package/dist/views/Home/CustomAgent.js +3 -3
- package/dist/views/Home/CustomAgent.js.map +1 -1
- package/dist/views/MessageInput/AgentSelector.js +4 -4
- package/dist/views/MessageInput/AgentSelector.js.map +1 -1
- package/dist/views/MessageInput/ButtonAgent.js +2 -2
- package/dist/views/MessageInput/ButtonAgent.js.map +1 -1
- package/dist/views/MessageInput/QuickCommandSelector.js +4 -4
- package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -1
- package/dist/views/MessageInput/UploadDragNDrop.d.ts +14 -0
- package/dist/views/MessageInput/UploadDragNDrop.d.ts.map +1 -0
- package/dist/views/MessageInput/UploadDragNDrop.js +52 -0
- package/dist/views/MessageInput/UploadDragNDrop.js.map +1 -0
- package/dist/views/MessageInput/dictionary.d.ts +1 -1
- package/dist/views/MessageInput/dictionary.d.ts.map +1 -1
- package/dist/views/MessageInput/dictionary.js +9 -0
- package/dist/views/MessageInput/dictionary.js.map +1 -1
- package/dist/views/MessageInput/index.d.ts.map +1 -1
- package/dist/views/MessageInput/index.js +13 -1
- package/dist/views/MessageInput/index.js.map +1 -1
- package/dist/views/Tools.js +3 -3
- package/dist/views/Tools.js.map +1 -1
- package/dist/views/Workspaces/WorkspacesTab.js +1 -1
- package/package.json +2 -2
- package/src/app-metadata.json +3 -3
- package/src/chat-interceptors/quick-commands.ts +25 -3
- package/src/components/AgentCard/dictionary.ts +4 -2
- package/src/components/Selector/index.tsx +4 -5
- package/src/layout.css +17 -0
- package/src/state/types.ts +1 -1
- package/src/utils/tools.ts +5 -7
- package/src/utils/upload/UploadManager.ts +32 -23
- package/src/utils/upload/use-paste-upload.tsx +30 -0
- package/src/views/Agents/AgentDescription.tsx +19 -25
- package/src/views/Agents/AgentsPanel.tsx +11 -12
- package/src/views/Agents/AgentsTab.tsx +12 -17
- package/src/views/Agents/useAgentFavorites.ts +4 -4
- package/src/views/Chat/ChatMessage.tsx +3 -4
- package/src/views/ChatHistory/HistoryItem.tsx +10 -5
- package/src/views/ChatHistory/utils.ts +1 -18
- package/src/views/Home/CustomAgent.tsx +4 -4
- package/src/views/MessageInput/AgentSelector.tsx +4 -4
- package/src/views/MessageInput/ButtonAgent.tsx +2 -2
- package/src/views/MessageInput/QuickCommandSelector.tsx +4 -4
- package/src/views/MessageInput/UploadDragNDrop.tsx +83 -0
- package/src/views/MessageInput/dictionary.ts +9 -0
- package/src/views/MessageInput/index.tsx +17 -1
- package/src/views/Tools.tsx +4 -3
- package/src/views/Workspaces/WorkspacesTab.tsx +1 -1
|
@@ -8,13 +8,13 @@ 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 useFavorites = () => aiClient.
|
|
11
|
+
const useFavorites = () => aiClient.allQuickCommands.useQuery({ visibility: 'favorite' });
|
|
12
12
|
const [addFavorite, pendingAddFav] = aiClient.addFavoriteQuickCommand.useMutation();
|
|
13
13
|
const [removeFavorite, pendingRemoveFav] = aiClient.removeFavoriteQuickCommand.useMutation();
|
|
14
14
|
const addFavoriteQc = async (idOrSlug) => {
|
|
15
15
|
try {
|
|
16
16
|
await addFavorite({ slug: idOrSlug || '' });
|
|
17
|
-
await aiClient.
|
|
17
|
+
await aiClient.allQuickCommands.invalidate();
|
|
18
18
|
}
|
|
19
19
|
catch (error) {
|
|
20
20
|
// eslint-disable-next-line no-console
|
|
@@ -38,7 +38,7 @@ export const QuickCommandSelector = ({ inputRef, isTrial }) => {
|
|
|
38
38
|
const removeFavoriteQc = async (idOrSlug) => {
|
|
39
39
|
try {
|
|
40
40
|
await removeFavorite({ slug: idOrSlug || '' });
|
|
41
|
-
await aiClient.
|
|
41
|
+
await aiClient.allQuickCommands.invalidate();
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
// eslint-disable-next-line no-console
|
|
@@ -68,7 +68,7 @@ export const QuickCommandSelector = ({ inputRef, isTrial }) => {
|
|
|
68
68
|
inputRef.current.focus();
|
|
69
69
|
}, [chat, inputRef]);
|
|
70
70
|
const getQuickCommands = () => {
|
|
71
|
-
const quickCommands = aiClient.
|
|
71
|
+
const quickCommands = aiClient.allQuickCommands.useQuery({ order: 'a-to-z' });
|
|
72
72
|
const quickCommandsFiltered = quickCommands.filter((qc) => qc.visibility_level.toLowerCase() !== 'workspace');
|
|
73
73
|
const workspaceQuickCommands = workspaceAiClient.workspacesContentsByType.useQuery({ contentType: 'quick_command' });
|
|
74
74
|
const workspaceQuickCommandsWithWorkspaceName = workspaceQuickCommands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickCommandSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAI/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EACiC,EAAE,EAAE;IAC3F,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,MAAM,qBAAqB,GAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,aAAa,CAAA;IAE5E,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"QuickCommandSelector.js","sourceRoot":"","sources":["../../../src/views/MessageInput/QuickCommandSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DragEvent } from 'react';
|
|
2
|
+
export declare function useUploadDragDrop(containerSelector?: string): {
|
|
3
|
+
isDragging: boolean;
|
|
4
|
+
handleDrop: (e: DragEvent) => void;
|
|
5
|
+
handleDragLeave: (e: DragEvent) => void;
|
|
6
|
+
};
|
|
7
|
+
interface UploadDragNDropProps {
|
|
8
|
+
isDragging?: boolean;
|
|
9
|
+
onDrop?: (e: DragEvent) => void;
|
|
10
|
+
onDragLeave?: (e: DragEvent) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare const UploadDragNDrop: ({ isDragging, onDrop, onDragLeave }: UploadDragNDropProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=UploadDragNDrop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadDragNDrop.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadDragNDrop.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAoC,MAAM,OAAO,CAAA;AAInE,wBAAgB,iBAAiB,CAAC,iBAAiB,GAAE,MAA0B;;oBAI1C,SAAS;yBASJ,SAAS;EA2BlD;AAED,UAAU,oBAAoB;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,eAAe,wCAAyC,oBAAoB,mDA4BxF,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconBox } from '@citric/core';
|
|
3
|
+
import { Document } from '@citric/icons';
|
|
4
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
5
|
+
import { useCurrentChat } from '../../context/hooks.js';
|
|
6
|
+
import { useMessageInputDictionary } from './dictionary.js';
|
|
7
|
+
export function useUploadDragDrop(containerSelector = '.chat-container') {
|
|
8
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
9
|
+
const chat = useCurrentChat();
|
|
10
|
+
const handleDrop = useCallback((e) => {
|
|
11
|
+
e.preventDefault();
|
|
12
|
+
e.stopPropagation();
|
|
13
|
+
setIsDragging(false);
|
|
14
|
+
if (e.dataTransfer?.files?.length) {
|
|
15
|
+
chat.uploadManager.add(Array.from(e.dataTransfer.files));
|
|
16
|
+
}
|
|
17
|
+
}, [chat]);
|
|
18
|
+
const handleDragLeave = useCallback((e) => {
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
if (e.currentTarget && !e.currentTarget.contains(e.relatedTarget)) {
|
|
21
|
+
setIsDragging(false);
|
|
22
|
+
}
|
|
23
|
+
}, []);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const container = document.querySelector(containerSelector);
|
|
26
|
+
if (!container)
|
|
27
|
+
return;
|
|
28
|
+
const nativeHandleDragEnter = (e) => {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
setIsDragging(true);
|
|
31
|
+
};
|
|
32
|
+
container.addEventListener('dragenter', nativeHandleDragEnter);
|
|
33
|
+
return () => {
|
|
34
|
+
container.removeEventListener('dragenter', nativeHandleDragEnter);
|
|
35
|
+
};
|
|
36
|
+
}, [containerSelector]);
|
|
37
|
+
return {
|
|
38
|
+
isDragging,
|
|
39
|
+
handleDrop,
|
|
40
|
+
handleDragLeave,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export const UploadDragNDrop = ({ isDragging, onDrop, onDragLeave }) => {
|
|
44
|
+
const t = useMessageInputDictionary();
|
|
45
|
+
if (!isDragging)
|
|
46
|
+
return null;
|
|
47
|
+
return (_jsxs("div", { className: "upload-drag-drop", "data-active": isDragging, role: "dialog", "aria-modal": "true", "aria-labelledby": "upload-drag-drop-title", "aria-describedby": "upload-drag-drop-description", onDrop: onDrop, onDragLeave: onDragLeave, onDragOver: e => {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
}, tabIndex: -1, children: [_jsx(IconBox, { size: "lg", "aria-hidden": true, children: _jsx(Document, {}) }), _jsx("h2", { id: "upload-drag-drop-title", children: t.uploadDragDropTitle }), _jsx("p", { id: "upload-drag-drop-description", children: t.uploadDragDropDescription })] }));
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=UploadDragNDrop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadDragNDrop.js","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadDragNDrop.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const useMessageInputDictionary: () => Record<"code" | "placeholder" | "selected" | "send" | "cancel" | "stack" | "knowledgeSource" | "agent" | "upload" | "remove" | "collapse" | "spot" | "removeConfig" | "removeStack" | "removeWorkspace" | "removeKS" | "removeSelection" | "expand" | "uploadSizeError" | "uploadItemLimitError" | "cantSendBecauseOfUploadError" | "cantSendBecauseOfUploadProgress" | "cantSendBecauseOfEmptyContent" | "chatAgent", string>;
|
|
1
|
+
export declare const useMessageInputDictionary: () => Record<"code" | "placeholder" | "selected" | "send" | "cancel" | "stack" | "knowledgeSource" | "agent" | "upload" | "remove" | "collapse" | "spot" | "typing" | "removeConfig" | "removeStack" | "removeWorkspace" | "removeKS" | "removeSelection" | "expand" | "uploadSizeError" | "uploadItemLimitError" | "uploadError" | "uploadDragging" | "uploadDragDropTitle" | "uploadDragDropDescription" | "cantSendBecauseOfUploadError" | "cantSendBecauseOfUploadProgress" | "cantSendBecauseOfEmptyContent" | "chatAgent", string>;
|
|
2
2
|
//# sourceMappingURL=dictionary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/dictionary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/dictionary.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,yBAAyB,0gBAAiC,CAAA"}
|
|
@@ -8,6 +8,7 @@ const dictionary = {
|
|
|
8
8
|
agent: 'Select agent',
|
|
9
9
|
send: 'Send message',
|
|
10
10
|
placeholder: 'Send a message to $0. For commands, use @ or /',
|
|
11
|
+
typing: 'Type your message...',
|
|
11
12
|
cancel: 'Cancel',
|
|
12
13
|
removeConfig: 'Remove all the configuration',
|
|
13
14
|
removeStack: 'Stop using the current stack',
|
|
@@ -21,6 +22,10 @@ const dictionary = {
|
|
|
21
22
|
collapse: 'Collapse options',
|
|
22
23
|
uploadSizeError: 'The following files were not added to the upload list because they\'re larger than $1:',
|
|
23
24
|
uploadItemLimitError: 'The following files were not added because no more than $1 items may be uploaded at a time:',
|
|
25
|
+
uploadError: 'An error occurred while uploading the file "$0".',
|
|
26
|
+
uploadDragging: 'Drop the file here to upload',
|
|
27
|
+
uploadDragDropTitle: 'Arraste e solte arquivos',
|
|
28
|
+
uploadDragDropDescription: 'Solte arquivos aqui para enviá-los na conversa',
|
|
24
29
|
cantSendBecauseOfUploadError: 'Can\'t send the message because one of the files in the upload list could not be uploaded. Please, retry it or remove it from the list.',
|
|
25
30
|
cantSendBecauseOfUploadProgress: 'Please wait until all files are uploaded before sending the message. You can also cancel the upload by removing it from the list of uploads.',
|
|
26
31
|
cantSendBecauseOfEmptyContent: 'You can\'t send empty messages. Please write some text or upload a file.',
|
|
@@ -34,6 +39,7 @@ const dictionary = {
|
|
|
34
39
|
agent: 'Selecionar agente',
|
|
35
40
|
send: 'Enviar mensagem',
|
|
36
41
|
placeholder: 'Envie uma mensagem para $0. Para comandos, use @ ou /',
|
|
42
|
+
typing: 'Digite sua mensagem...',
|
|
37
43
|
cancel: 'Cancelar',
|
|
38
44
|
removeConfig: 'Remover todas as configurações',
|
|
39
45
|
removeStack: 'Parar de usar a stack atual',
|
|
@@ -48,6 +54,9 @@ const dictionary = {
|
|
|
48
54
|
uploadSizeError: 'Os seguintes arquivos não foram adicionados à lista de upload porque eles são maiores que $0:',
|
|
49
55
|
uploadItemLimitError: 'Os seguintes arquivos não foram adicionados à lista de upload porque é permitido enviar no máximo $0 arquivos por vez:',
|
|
50
56
|
uploadError: 'Ocorreu um erro ao enviar o arquivo "$0".',
|
|
57
|
+
uploadDragging: 'Solte o arquivo aqui para fazer upload',
|
|
58
|
+
uploadDragDropTitle: 'Solte seus arquivos aqui',
|
|
59
|
+
uploadDragDropDescription: 'Arraste ou solte arquivos para compartilhar na conversa',
|
|
51
60
|
unknownUploadError: 'Ocorreu um erro ao enviar os arquivos.',
|
|
52
61
|
cantSendBecauseOfUploadError: 'Não é possível enviar a mensagem, pois um dos arquivos na lista de uploads não pôde ser enviado. Por favor, tente enviá-lo novamente ou remova-o da lista.',
|
|
53
62
|
cantSendBecauseOfUploadProgress: 'Por favor aguarde todos os uploads de arquivos antes de enviar a mensagem. Você pode cancelar o upload removendo o arquivo da lista de uploads.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/views/MessageInput/dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEvE,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,aAAa;QACnB,eAAe,EAAE,0BAA0B;QAC3C,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,8BAA8B;QAC5C,WAAW,EAAE,8BAA8B;QAC3C,eAAe,EAAE,6BAA6B;QAC9C,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,+BAA+B;QAChD,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,kBAAkB;QAC5B,eAAe,EAAE,wFAAwF;QACzG,oBAAoB,EAAE,6FAA6F;QACnH,4BAA4B,EAAE,yIAAyI;QACvK,+BAA+B,EAAE,8IAA8I;QAC/K,6BAA6B,EAAE,0EAA0E;QACzG,SAAS,EAAE,QAAQ;KACpB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,eAAe,EAAE,8BAA8B;QAC/C,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,uDAAuD;QACpE,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,gCAAgC;QAC9C,WAAW,EAAE,6BAA6B;QAC1C,eAAe,EAAE,4BAA4B;QAC7C,QAAQ,EAAE,qCAAqC;QAC/C,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,4BAA4B;QAC7C,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,eAAe,EAAE,+FAA+F;QAChH,oBAAoB,EAAE,wHAAwH;QAC9I,WAAW,EAAE,2CAA2C;QACxD,kBAAkB,EAAE,wCAAwC;QAC5D,4BAA4B,EAAE,4JAA4J;QAC1L,+BAA+B,EAAE,iJAAiJ;QAClL,6BAA6B,EAAE,6FAA6F;QAC5H,SAAS,EAAE,SAAS;KACrB;CACmB,CAAA;AAEtB,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/views/MessageInput/dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEvE,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,aAAa;QACnB,eAAe,EAAE,0BAA0B;QAC3C,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE,sBAAsB;QAC9B,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,8BAA8B;QAC5C,WAAW,EAAE,8BAA8B;QAC3C,eAAe,EAAE,6BAA6B;QAC9C,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,+BAA+B;QAChD,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,kBAAkB;QAC5B,eAAe,EAAE,wFAAwF;QACzG,oBAAoB,EAAE,6FAA6F;QACnH,WAAW,EAAE,kDAAkD;QAC/D,cAAc,EAAE,8BAA8B;QAC9C,mBAAmB,EAAE,0BAA0B;QAC/C,yBAAyB,EAAE,gDAAgD;QAC3E,4BAA4B,EAAE,yIAAyI;QACvK,+BAA+B,EAAE,8IAA8I;QAC/K,6BAA6B,EAAE,0EAA0E;QACzG,SAAS,EAAE,QAAQ;KACpB;IACD,EAAE,EAAE;QACF,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,eAAe,EAAE,8BAA8B;QAC/C,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,uDAAuD;QACpE,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,gCAAgC;QAC9C,WAAW,EAAE,6BAA6B;QAC1C,eAAe,EAAE,4BAA4B;QAC7C,QAAQ,EAAE,qCAAqC;QAC/C,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,4BAA4B;QAC7C,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,eAAe,EAAE,+FAA+F;QAChH,oBAAoB,EAAE,wHAAwH;QAC9I,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,wCAAwC;QACxD,mBAAmB,EAAE,0BAA0B;QAC/C,yBAAyB,EAAE,yDAAyD;QACpF,kBAAkB,EAAE,wCAAwC;QAC5D,4BAA4B,EAAE,4JAA4J;QAC1L,+BAA+B,EAAE,iJAAiJ;QAClL,6BAA6B,EAAE,6FAA6F;QAC5H,SAAS,EAAE,SAAS;KACrB;CACmB,CAAA;AAEtB,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/index.tsx"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,eAAO,MAAM,YAAY,+CA4HxB,CAAA"}
|
|
@@ -9,6 +9,7 @@ import { quickCommandRegex } from '../../regex.js';
|
|
|
9
9
|
import { ChatEntry } from '../../state/ChatEntry.js';
|
|
10
10
|
import { checkIsTrial } from '../../utils/check-is-trial.js';
|
|
11
11
|
import { UploadProvider } from '../../utils/upload/context.js';
|
|
12
|
+
import { usePasteUpload } from '../../utils/upload/use-paste-upload.js';
|
|
12
13
|
import { AgentSelector } from './AgentSelector.js';
|
|
13
14
|
import { ButtonAgent } from './ButtonAgent.js';
|
|
14
15
|
import { ButtonBar } from './ButtonBar.js';
|
|
@@ -18,6 +19,7 @@ import { useMessageInputDictionary } from './dictionary.js';
|
|
|
18
19
|
import { QuickCommandSelector } from './QuickCommandSelector.js';
|
|
19
20
|
import { MAX_INPUT_HEIGHT, MessageInputBox, MIN_INPUT_HEIGHT } from './styled.js';
|
|
20
21
|
import { UploadBar } from './UploadBar.js';
|
|
22
|
+
import { UploadDragNDrop, useUploadDragDrop } from './UploadDragNDrop.js';
|
|
21
23
|
/**
|
|
22
24
|
* This renders the MessageInput part of the layout which includes the progress bar, the actual textarea, the badges telling what is
|
|
23
25
|
* going to be used for the question and the buttons to send, cancel, set the workspace, among others. This also includes the Quick
|
|
@@ -36,6 +38,12 @@ export const MessageInput = () => {
|
|
|
36
38
|
const agentLabel = useCurrentChatState('agent')?.label;
|
|
37
39
|
const { handleKeyDown, handleKeyUp } = useUserEntryHistoryShortcut();
|
|
38
40
|
const isTrial = checkIsTrial();
|
|
41
|
+
const { isDragging, handleDrop, handleDragLeave } = useUploadDragDrop();
|
|
42
|
+
usePasteUpload({
|
|
43
|
+
textAreaRef,
|
|
44
|
+
onUploadFiles: files => chat.uploadManager.add(files),
|
|
45
|
+
enabled: !isLoading,
|
|
46
|
+
});
|
|
39
47
|
const checkSendRequirements = useCallback(() => {
|
|
40
48
|
if (chat.uploadManager.status === 'error') {
|
|
41
49
|
chat.pushMessage(new ChatEntry({
|
|
@@ -96,6 +104,10 @@ export const MessageInput = () => {
|
|
|
96
104
|
if (!isLoading)
|
|
97
105
|
textAreaRef.current?.focus();
|
|
98
106
|
}, [isLoading]);
|
|
99
|
-
return (_jsx(UploadProvider, { value: chat.uploadManager, children: _jsxs(MessageInputBox, { "aria-busy": isLoading, className: "message-input", "$inputFocused": focused, children: [_jsxs("div", { className: "wrapper-action", children: [_jsx(QuickCommandSelector, { inputRef: textAreaRef, isTrial: isTrial }), _jsx(AgentSelector, { inputRef: textAreaRef, isTrial: isTrial }), _jsxs("div", { className: listToClass(['action-box', focused && 'focused', isLoading && 'disabled']), children: [_jsx(ButtonAgent, {}), _jsx(AdaptiveTextArea, { ref: textAreaRef, placeholder:
|
|
107
|
+
return (_jsx(UploadProvider, { value: chat.uploadManager, children: _jsxs(MessageInputBox, { "aria-busy": isLoading, className: "message-input", "$inputFocused": focused, children: [_jsxs("div", { className: "wrapper-action", children: [_jsx(QuickCommandSelector, { inputRef: textAreaRef, isTrial: isTrial }), _jsx(AgentSelector, { inputRef: textAreaRef, isTrial: isTrial }), _jsxs("div", { className: listToClass(['action-box', focused && 'focused', isLoading && 'disabled']), children: [_jsx(ButtonAgent, {}), _jsx(AdaptiveTextArea, { ref: textAreaRef, placeholder: isDragging
|
|
108
|
+
? t.uploadDragging
|
|
109
|
+
: agentLabel
|
|
110
|
+
? interpolate(t.placeholder, agentLabel)
|
|
111
|
+
: t.typing, onChange: e => chat.set('nextMessage', e.target.value), value: value, onFocus: () => setFocused(true), onBlur: () => setFocused(false), onKeyDown: onKeyDown, onKeyUp: handleKeyUp, onIncreaseSize: () => setExpanded(false), onResetSize: () => !expansionLocked.current && setExpanded(true), maxHeight: isMinimized ? MIN_INPUT_HEIGHT : MAX_INPUT_HEIGHT })] })] }), _jsx(ProgressBar, { visible: true, animate: isLoading, backgroundColor: isLoading || !focused ? theme.color.light[500] : theme.color.primary[500] }), _jsx(ContextBar, {}), chat.get('features').upload && _jsx(UploadBar, {}), _jsx(ButtonBar, { onSend: onSend, isLoading: isLoading }), _jsx(UploadDragNDrop, { isDragging: isDragging, onDrop: handleDrop, onDragLeave: handleDragLeave })] }) }));
|
|
100
112
|
};
|
|
101
113
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/MessageInput/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/MessageInput/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/views/Tools.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { agentToolsClient } from '@stack-spot/portal-network';
|
|
3
3
|
import { useTranslate } from '@stack-spot/portal-translate';
|
|
4
4
|
import { useEffect, useMemo } from 'react';
|
|
5
5
|
import styled from 'styled-components';
|
|
@@ -34,8 +34,8 @@ const ToolsPanel = () => {
|
|
|
34
34
|
const chat = widget.chatTabs.getAll().find(c => c.id === chatId);
|
|
35
35
|
return chat?.getMessages().find(m => m.id === messageId)?.getValue();
|
|
36
36
|
}, [messageId]);
|
|
37
|
-
const [
|
|
38
|
-
const tools = useMemo(() => message?.tools?.map(id => toolById(id,
|
|
37
|
+
const [toolKits] = agentToolsClient.tools.useStatefulQuery({}, { enabled: !!message?.agent?.id });
|
|
38
|
+
const tools = useMemo(() => message?.tools?.map(id => toolById(id, toolKits) ?? { id }), [messageId, toolKits]);
|
|
39
39
|
return !!tools?.length && (_jsx(ToolList, { children: tools.map((tool) => (_jsx("li", { children: _jsx(ToolBadge, { name: tool.name || tool.id, image: tool.image, description: tool.description, backgroundColor: "light.500" }) }, tool.id))) }));
|
|
40
40
|
};
|
|
41
41
|
const dictionary = {
|
package/dist/views/Tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tools.js","sourceRoot":"","sources":["../../src/views/Tools.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Tools.js","sourceRoot":"","sources":["../../src/views/Tools.tsx"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export const WorkspaceResources = ({ workspaceId, allKS, agent, stack }) => {
|
|
|
28
28
|
const handleNavigate = (resource) => {
|
|
29
29
|
startTransition(() => {
|
|
30
30
|
if (resource.resourceType === 'agent')
|
|
31
|
-
navigate({ component: 'agent', props: { visibility: '
|
|
31
|
+
navigate({ component: 'agent', props: { visibility: 'workspace', agent, workspaceId, showSubmitButton }, fullScreen: true });
|
|
32
32
|
if (resource.resourceType === 'ks')
|
|
33
33
|
navigate({ component: 'ks', props: { visibility: 'workspace', allKS, workspaceId, showSubmitButton }, fullScreen: true });
|
|
34
34
|
if (resource.resourceType === 'stack')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.28.1-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": "
|
|
16
|
+
"@stack-spot/portal-network": "0.149.0-beta.2",
|
|
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",
|
package/src/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"date": "
|
|
3
|
+
"version": "1.28.1-beta.1",
|
|
4
|
+
"date": "Wed Jul 02 2025 15:15:28 GMT-0300 (Horário Padrão de Brasília)",
|
|
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.
|
|
116
|
+
"version": "0.149.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)"
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
119
|
"name": "@stack-spot/portal-theme",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { aiClient, CancelledError, FixedChatRequest, StackspotAPIError } from '@stack-spot/portal-network'
|
|
2
|
-
import { QuickCommandFetchResponseResult, QuickCommandPromptResponse2, QuickCommandResponse } from '@stack-spot/portal-network/api/ai'
|
|
2
|
+
import { QuickCommandFetchResponseResult, QuickCommandPromptResponse2, QuickCommandResponse, QuickCommandStepFetchResponse } from '@stack-spot/portal-network/api/ai'
|
|
3
3
|
import { Dictionary, interpolate, translate } from '@stack-spot/portal-translate'
|
|
4
4
|
import type { editor } from 'monaco-editor'
|
|
5
5
|
import { ulid } from 'ulid'
|
|
@@ -23,6 +23,7 @@ interface QCContext {
|
|
|
23
23
|
code?: string,
|
|
24
24
|
executionId: string,
|
|
25
25
|
signal: AbortSignal,
|
|
26
|
+
isRemote?: boolean,
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
/**
|
|
@@ -71,7 +72,26 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
|
|
|
71
72
|
*/
|
|
72
73
|
async function runFetchStep(ctx: QCContext, stepIndex: number) {
|
|
73
74
|
const { qc: { slug, steps }, code, context, resultMap, executionId, signal } = ctx
|
|
74
|
-
const step = steps![stepIndex]
|
|
75
|
+
const step = steps![stepIndex] as QuickCommandStepFetchResponse
|
|
76
|
+
if (step.is_remote) {
|
|
77
|
+
ctx.isRemote = true
|
|
78
|
+
|
|
79
|
+
const { data } = await aiClient.fetchStepOfQuickCommandRemotely.mutate({
|
|
80
|
+
slug, stepSlug: step.slug,
|
|
81
|
+
quickCommandsExecutionRequest: { code_selection: code, context, slugs_executions: resultMap, qc_execution_id: executionId },
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
//data is the return of the request in the QC so we do not have full control over the response
|
|
85
|
+
//We handle the usual format with body, status_code and headers, but we might also handle other formats
|
|
86
|
+
const responseData = data as any
|
|
87
|
+
resultMap[step.slug] = {
|
|
88
|
+
status: responseData.status_code || 200,
|
|
89
|
+
data: JSON.stringify(responseData.body) ?? JSON.stringify(responseData),
|
|
90
|
+
headers: responseData.headers ?? {},
|
|
91
|
+
}
|
|
92
|
+
return
|
|
93
|
+
}
|
|
94
|
+
|
|
75
95
|
const { headers, data, method, url } = await aiClient.fetchStepOfQuickCommand.mutate({
|
|
76
96
|
slug,
|
|
77
97
|
stepSlug: step.slug,
|
|
@@ -208,7 +228,7 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
|
|
|
208
228
|
/**
|
|
209
229
|
* This registers a quick command event in the backend (analytics).
|
|
210
230
|
*/
|
|
211
|
-
async function registerAnalyticsEvent({ qc, executionId, code = '', context }: QCContext, status: string, start: number) {
|
|
231
|
+
async function registerAnalyticsEvent({ qc, isRemote, executionId, code = '', context }: QCContext, status: string, start: number) {
|
|
212
232
|
const now = new Date().getTime()
|
|
213
233
|
try {
|
|
214
234
|
await aiClient.createEvent.mutate({
|
|
@@ -221,6 +241,8 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
|
|
|
221
241
|
slug: qc.slug,
|
|
222
242
|
qc_execution_id: executionId,
|
|
223
243
|
id: qc.id,
|
|
244
|
+
//@ts-ignore
|
|
245
|
+
is_remote: isRemote,
|
|
224
246
|
},
|
|
225
247
|
code,
|
|
226
248
|
context,
|
|
@@ -2,7 +2,8 @@ import { Dictionary } from '@stack-spot/portal-translate'
|
|
|
2
2
|
|
|
3
3
|
export const dictionary = {
|
|
4
4
|
en: {
|
|
5
|
-
|
|
5
|
+
'built_in': 'Built-in',
|
|
6
|
+
workspace: 'Spot',
|
|
6
7
|
personal: 'Personal',
|
|
7
8
|
account: 'Account',
|
|
8
9
|
shared: 'Shared',
|
|
@@ -10,7 +11,8 @@ export const dictionary = {
|
|
|
10
11
|
create: 'Create',
|
|
11
12
|
},
|
|
12
13
|
pt: {
|
|
13
|
-
|
|
14
|
+
'built_in': 'Embutido',
|
|
15
|
+
workspace: 'Spot',
|
|
14
16
|
personal: 'Personal',
|
|
15
17
|
account: 'Conta',
|
|
16
18
|
shared: 'Compartilhado',
|
|
@@ -2,7 +2,7 @@ import { IconBox, Text } from '@citric/core'
|
|
|
2
2
|
import { ExternalLink } from '@citric/icons'
|
|
3
3
|
import { IconButton } from '@citric/ui'
|
|
4
4
|
import { useKeyboardControls } from '@stack-spot/portal-components'
|
|
5
|
-
import {
|
|
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
8
|
import { useCurrentChatState } from '../../context/hooks'
|
|
@@ -12,8 +12,7 @@ import { Fading } from '../Fading'
|
|
|
12
12
|
import { FallbackBoundary } from '../FallbackBoundary'
|
|
13
13
|
import { SelectorBox } from './styled'
|
|
14
14
|
|
|
15
|
-
type SectionVisibility =
|
|
16
|
-
|
|
15
|
+
type SectionVisibility = AgentVisibilityLevel
|
|
17
16
|
type SelectorShortcut = '/' | '@'
|
|
18
17
|
|
|
19
18
|
interface Item {
|
|
@@ -268,7 +267,7 @@ const dictionary = {
|
|
|
268
267
|
personal: 'Personal',
|
|
269
268
|
account: 'Account',
|
|
270
269
|
shared: 'Shared',
|
|
271
|
-
'
|
|
270
|
+
'built_in': 'Built-in',
|
|
272
271
|
workspace: 'Spot',
|
|
273
272
|
error: 'Could not load the $0s.',
|
|
274
273
|
noData: 'You don\'t have any $0 yet.',
|
|
@@ -282,7 +281,7 @@ const dictionary = {
|
|
|
282
281
|
account: 'Conta',
|
|
283
282
|
shared: 'Compartilhado',
|
|
284
283
|
workspace: 'Spot',
|
|
285
|
-
'
|
|
284
|
+
'built_in': 'Embutido',
|
|
286
285
|
error: 'Não foi possível carregar os $0s.',
|
|
287
286
|
noData: 'Você ainda não possui $0s.',
|
|
288
287
|
noResults: 'Não $0s para mostrar aqui.',
|
package/src/layout.css
CHANGED
|
@@ -94,6 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
.chat-container {
|
|
97
|
+
position: relative;
|
|
97
98
|
padding: 20px;
|
|
98
99
|
max-width: 1200px;
|
|
99
100
|
width: calc(100% - 40px);
|
|
@@ -186,4 +187,20 @@
|
|
|
186
187
|
border: 1px solid var(--primary-500);
|
|
187
188
|
border-left: none;
|
|
188
189
|
color: var(--light-contrastText);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.upload-drag-drop {
|
|
193
|
+
display: flex;
|
|
194
|
+
background: #00000090;
|
|
195
|
+
position: absolute;
|
|
196
|
+
width: 99%;
|
|
197
|
+
height: 99%;
|
|
198
|
+
top: 0;
|
|
199
|
+
left: 0;
|
|
200
|
+
flex-direction: column;
|
|
201
|
+
justify-content: center;
|
|
202
|
+
align-items: center;
|
|
203
|
+
border: 2px dashed var(--secondary-500);
|
|
204
|
+
z-index: 9999;
|
|
205
|
+
pointer-events: auto;
|
|
189
206
|
}
|
package/src/state/types.ts
CHANGED
package/src/utils/tools.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BuiltinToolkitResponse, BuiltinToolResponse } from '@stack-spot/portal-network/api/agent'
|
|
2
|
+
import { keyBy } from 'lodash'
|
|
2
3
|
|
|
3
4
|
export type ToolWithImage = BuiltinToolResponse & { id: string, image?: string }
|
|
4
5
|
|
|
5
|
-
export function toolById(id: string, toolkits:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (tool.id === id) return { ...tool, id, image: toolkit.image_url }
|
|
9
|
-
}
|
|
10
|
-
}
|
|
6
|
+
export function toolById(id: string, toolkits: BuiltinToolkitResponse[] | undefined): ToolWithImage | undefined {
|
|
7
|
+
const tools = toolkits?.map(({ image_url, tools }) => tools?.map((tool) => ({ ...tool, id: tool.id!, image: image_url! }))).flat()
|
|
8
|
+
return keyBy(tools, 'id')[id]
|
|
11
9
|
}
|
|
@@ -43,31 +43,35 @@ export class UploadManager {
|
|
|
43
43
|
return this.value.some(f => id === f.id)
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
private processFiles(files: FileList | File[]) {
|
|
47
|
+
const newFiles: FileUpload[] = []
|
|
48
|
+
const errors: UploadError[] = []
|
|
49
|
+
for (const f of files ?? []) {
|
|
50
|
+
if (this.maxSize && f.size > this.maxSize.value * Math.pow(1024, unitPower[this.maxSize?.unit])) {
|
|
51
|
+
errors.push(new FileIsTooLarge(f.name, this.maxSize))
|
|
52
|
+
} else if (this.maxItems && this.value.length + newFiles.length === this.maxItems) {
|
|
53
|
+
errors.push(new MaxFilesReached(f.name, this.maxItems))
|
|
54
|
+
} else if (this.hasEquivalentFile(f)) {
|
|
55
|
+
errors.push(new FileAlreadyExists(f.name))
|
|
56
|
+
} else {
|
|
57
|
+
const upload = new FileUpload(f)
|
|
58
|
+
newFiles.push(upload)
|
|
59
|
+
upload.onChange(() => this.runStatusListeners())
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (newFiles.length) {
|
|
63
|
+
this.value = [...this.value, ...newFiles]
|
|
64
|
+
this.runChangeListeners()
|
|
65
|
+
this.runStatusListeners()
|
|
66
|
+
}
|
|
67
|
+
if (errors.length) {
|
|
68
|
+
this.errorListeners.forEach(l => l(errors))
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
46
72
|
private attachEventListeners() {
|
|
47
73
|
const handleChange = () => {
|
|
48
|
-
|
|
49
|
-
const errors: UploadError[] = []
|
|
50
|
-
for (const f of this.input?.files ?? []) {
|
|
51
|
-
if (this.maxSize && f.size > this.maxSize.value * Math.pow(1024, unitPower[this.maxSize?.unit])) {
|
|
52
|
-
errors.push(new FileIsTooLarge(f.name, this.maxSize))
|
|
53
|
-
} else if (this.maxItems && this.value.length + newFiles.length === this.maxItems) {
|
|
54
|
-
errors.push(new MaxFilesReached(f.name, this.maxItems))
|
|
55
|
-
} else if (this.hasEquivalentFile(f)) {
|
|
56
|
-
errors.push(new FileAlreadyExists(f.name))
|
|
57
|
-
} else {
|
|
58
|
-
const upload = new FileUpload(f)
|
|
59
|
-
newFiles.push(upload)
|
|
60
|
-
upload.onChange(() => this.runStatusListeners())
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (newFiles.length) {
|
|
64
|
-
this.value = [...this.value, ...newFiles]
|
|
65
|
-
this.runChangeListeners()
|
|
66
|
-
this.runStatusListeners()
|
|
67
|
-
}
|
|
68
|
-
if (errors.length) {
|
|
69
|
-
this.errorListeners.forEach(l => l(errors))
|
|
70
|
-
}
|
|
74
|
+
this.processFiles(this.input?.files || [])
|
|
71
75
|
this.destroy()
|
|
72
76
|
}
|
|
73
77
|
this.onDestroy = () => this.input?.removeEventListener('change', handleChange)
|
|
@@ -108,6 +112,11 @@ export class UploadManager {
|
|
|
108
112
|
this.runChangeListeners()
|
|
109
113
|
}
|
|
110
114
|
|
|
115
|
+
add(files: File | File[] = []) {
|
|
116
|
+
const fileList = Array.isArray(files) ? files : [files]
|
|
117
|
+
this.processFiles(fileList)
|
|
118
|
+
}
|
|
119
|
+
|
|
111
120
|
remove(file: FileUpload) {
|
|
112
121
|
file.destroy()
|
|
113
122
|
this.value = this.value.filter(f => f !== file)
|