@stack-spot/ai-chat-widget 1.35.0 → 1.36.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.
- package/CHANGELOG.md +31 -1
- package/dist/app-metadata.json +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout.css +1 -1
- package/dist/views/Home/index.d.ts.map +1 -1
- package/dist/views/Home/index.js +3 -1
- package/dist/views/Home/index.js.map +1 -1
- package/dist/views/MessageInput/UploadBar.d.ts.map +1 -1
- package/dist/views/MessageInput/UploadBar.js +38 -2
- package/dist/views/MessageInput/UploadBar.js.map +1 -1
- 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 +4 -0
- package/dist/views/MessageInput/dictionary.js.map +1 -1
- package/package.json +1 -1
- package/src/app-metadata.json +2 -2
- package/src/index.ts +2 -1
- package/src/layout.css +1 -1
- package/src/views/Home/index.tsx +3 -1
- package/src/views/MessageInput/UploadBar.tsx +49 -1
- package/src/views/MessageInput/dictionary.ts +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.36.0-beta.1](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget-beta@v1.35.0-beta.1...ai-chat-widget-beta@v1.36.0-beta.1) (2025-08-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* 2721 context upload file ([#248](https://github.com/stack-spot/portal-ai-chat-widget/issues/248)) ([f7b8d0b](https://github.com/stack-spot/portal-ai-chat-widget/commit/f7b8d0b99cdf93fa1386d9d2d52d72515404979f))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Adds prompt length validation to message input ([#215](https://github.com/stack-spot/portal-ai-chat-widget/issues/215)) ([cd752f1](https://github.com/stack-spot/portal-ai-chat-widget/commit/cd752f1d569072e0396322ae947a0ae413e01807))
|
|
14
|
+
* conflicts branch with beta-relise ([e100471](https://github.com/stack-spot/portal-ai-chat-widget/commit/e100471ec084f3ed585316068844e385b9062844))
|
|
15
|
+
|
|
3
16
|
## [1.35.0](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.34.0...ai-chat-widget@v1.35.0) (2025-08-05)
|
|
4
17
|
|
|
5
18
|
|
|
@@ -25,7 +38,24 @@
|
|
|
25
38
|
### Features
|
|
26
39
|
|
|
27
40
|
* add visibility filter for recently used agents ([#247](https://github.com/stack-spot/portal-ai-chat-widget/issues/247)) ([bc85769](https://github.com/stack-spot/portal-ai-chat-widget/commit/bc85769b7863f4bca2202852804e4b603fca9f7b))
|
|
28
|
-
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Bug Fixes
|
|
44
|
+
|
|
45
|
+
* 850 qc conditional next step beta release ([#252](https://github.com/stack-spot/portal-ai-chat-widget/issues/252)) ([68531b1](https://github.com/stack-spot/portal-ai-chat-widget/commit/68531b19ec8c0d0b4cde2ddc0f5f7c3ac43c31cc))
|
|
46
|
+
|
|
47
|
+
## [1.33.0-beta.1](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget-beta@v1.32.0-beta.1...ai-chat-widget-beta@v1.33.0-beta.1) (2025-07-30)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Features
|
|
51
|
+
|
|
52
|
+
* add filters to show contents in chat ([#240](https://github.com/stack-spot/portal-ai-chat-widget/issues/240)) ([95dd865](https://github.com/stack-spot/portal-ai-chat-widget/commit/95dd8659e623e0eeb6afb6d3380e83e9c4bb2b86))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Bug Fixes
|
|
56
|
+
|
|
57
|
+
* agent chat history ([#242](https://github.com/stack-spot/portal-ai-chat-widget/issues/242)) ([c1ed38b](https://github.com/stack-spot/portal-ai-chat-widget/commit/c1ed38b64e064a53c0b0394b96ba5e3f6d11f3f2))
|
|
58
|
+
* update network lib ([#245](https://github.com/stack-spot/portal-ai-chat-widget/issues/245)) ([8341240](https://github.com/stack-spot/portal-ai-chat-widget/commit/83412402296f22e8fb61c6079f13cf94066ae886))
|
|
29
59
|
|
|
30
60
|
## [1.32.1](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.32.0...ai-chat-widget@v1.32.1) (2025-07-28)
|
|
31
61
|
|
package/dist/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"date": "Tue Aug 05 2025
|
|
3
|
+
"version": "1.36.0-beta.1",
|
|
4
|
+
"date": "Tue Aug 05 2025 23:09:33 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
package/dist/index.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export type { ChatAction } from './state/ChatEntry.js';
|
|
|
10
10
|
export { ChatState } from './state/ChatState.js';
|
|
11
11
|
export type { MessageInterceptor } from './state/ChatState.js';
|
|
12
12
|
export { ChatTabsController } from './state/ChatTabsController.js';
|
|
13
|
+
export { acceptedFileTypes } from './state/constants.js';
|
|
13
14
|
export { ObservableState } from './state/ObservableState.js';
|
|
14
15
|
export type { Labeled, LabeledAgent, LabeledWithImage } from './state/types.js';
|
|
15
16
|
export { WidgetState } from './state/WidgetState.js';
|
|
16
17
|
export { defaultLanguage, languages } from './utils/programming-languages.js';
|
|
17
|
-
export { acceptedFileTypes } from './state/constants.js';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,8 +8,8 @@ export { StackspotAIWidget } from './StackspotAIWidget.js';
|
|
|
8
8
|
export { ChatEntry } from './state/ChatEntry.js';
|
|
9
9
|
export { ChatState } from './state/ChatState.js';
|
|
10
10
|
export { ChatTabsController } from './state/ChatTabsController.js';
|
|
11
|
+
export { acceptedFileTypes } from './state/constants.js';
|
|
11
12
|
export { ObservableState } from './state/ObservableState.js';
|
|
12
13
|
export { WidgetState } from './state/WidgetState.js';
|
|
13
14
|
export { defaultLanguage, languages } from './utils/programming-languages.js';
|
|
14
|
-
export { acceptedFileTypes } from './state/constants.js';
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAE3I,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAE3I,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA"}
|
package/dist/layout.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Home/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Home/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAenC;;;;GAIG;AACH,eAAO,MAAM,IAAI,gDAAiD,SAAS,4CAkB1E,CAAA"}
|
package/dist/views/Home/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { FadingOverflow } from '@stack-spot/portal-components/FadingOverflow';
|
|
3
|
+
import { agentToolsClient } from '@stack-spot/portal-network';
|
|
3
4
|
import { styled } from 'styled-components';
|
|
4
5
|
import { AgentCard } from '../../components/AgentCard/index.js';
|
|
5
6
|
import { AgentCardCreate } from '../../components/AgentCard/AgentCardCreate.js';
|
|
@@ -27,6 +28,7 @@ const AgentList = styled.ul `
|
|
|
27
28
|
export const Home = ({ initialAgents, urlCreateAgent, ...props }) => {
|
|
28
29
|
const agent = useCurrentChatState('agent');
|
|
29
30
|
const isAgentEnabled = useCurrentChatState('features').agent;
|
|
30
|
-
|
|
31
|
+
const [canCreateAgent] = agentToolsClient.createAgent.useAllowed();
|
|
32
|
+
return (_jsxs(FallbackBoundary, { children: [agent && !agent.builtIn ? _jsx(CustomAgent, {}) : _jsx(BuiltInAgent, { ...props }), !!initialAgents && isAgentEnabled && (_jsx(FadingOverflow, { enableHorizontalScrollWithVerticalWheel: true, sides: ['left', 'right'], scroll: "arrows", children: _jsxs(AgentList, { className: "agent-list", children: [canCreateAgent && urlCreateAgent && _jsx("li", { children: _jsx(AgentCardCreate, { urlCreateAgent: urlCreateAgent }) }), initialAgents.map((agent) => _jsx("li", { children: _jsx(AgentCard, { agent: agent }) }, agent.id))] }) }))] }));
|
|
31
33
|
};
|
|
32
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/Home/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;CAW1B,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,EAAa,EAAE,EAAE;IAC7E,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/Home/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;CAW1B,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,EAAa,EAAE,EAAE;IAC7E,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAA;IAC5D,MAAM,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;IAElE,OAAO,CACL,MAAC,gBAAgB,eACd,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC,CAAC,KAAC,YAAY,OAAK,KAAK,GAAI,EACvE,CAAC,CAAC,aAAa,IAAI,cAAc,IAAI,CACpC,KAAC,cAAc,IAAC,uCAAuC,QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAC,QAAQ,YAC/F,MAAC,SAAS,IAAC,SAAS,EAAC,YAAY,aAC9B,cAAc,IAAI,cAAc,IAAI,uBAAI,KAAC,eAAe,IAAC,cAAc,EAAE,cAAc,GAAI,GAAK,EAChG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAmB,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI,IAArC,KAAK,CAAC,EAAE,CAAkC,CAAC,IACxE,GACG,CAClB,IACgB,CACpB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadBar.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadBar.tsx"],"names":[],"mappings":"AAiCA,eAAO,MAAM,SAAS,+
|
|
1
|
+
{"version":3,"file":"UploadBar.d.ts","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadBar.tsx"],"names":[],"mappings":"AAiCA,eAAO,MAAM,SAAS,+CAmFrB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { listToClass } from '@stack-spot/portal-theme';
|
|
3
3
|
import { interpolate } from '@stack-spot/portal-translate';
|
|
4
|
-
import { useMemo } from 'react';
|
|
4
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import { FadingOverflow } from '../../components/FadingOverflow.js';
|
|
6
6
|
import { FileDescription } from '../../components/FileDescription.js';
|
|
7
7
|
import { useCurrentChat } from '../../context/hooks.js';
|
|
@@ -24,6 +24,27 @@ export const UploadBar = () => {
|
|
|
24
24
|
const t = useMessageInputDictionary();
|
|
25
25
|
const chat = useCurrentChat();
|
|
26
26
|
const visible = !!uploads.length;
|
|
27
|
+
const [ariaMessage, setAriaMessage] = useState('');
|
|
28
|
+
const prevUploadsRef = useRef([]);
|
|
29
|
+
const announcedUploadsRef = useRef(new Set());
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const prevUploads = prevUploadsRef.current;
|
|
32
|
+
const newUploads = uploads.filter(up => !prevUploads.some(prev => prev.id === up.id));
|
|
33
|
+
newUploads.forEach((up) => {
|
|
34
|
+
if (!announcedUploadsRef.current.has(up.id)) {
|
|
35
|
+
setAriaMessage(t.uploadingStatus);
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
setAriaMessage(t.uploadSuccessStatus);
|
|
38
|
+
setTimeout(() => setAriaMessage(''), 2000);
|
|
39
|
+
}, 1000);
|
|
40
|
+
announcedUploadsRef.current.add(up.id);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
if (uploads.some(up => up.status === 'error')) {
|
|
44
|
+
setAriaMessage('Falha ao anexar o arquivo');
|
|
45
|
+
setTimeout(() => setAriaMessage(''), 2000);
|
|
46
|
+
}
|
|
47
|
+
}, [uploads]);
|
|
27
48
|
useUploadErrorEffect((errors) => {
|
|
28
49
|
const sizeErrors = errors.filter(e => e instanceof FileIsTooLarge);
|
|
29
50
|
const maxItemsErrors = errors.filter(e => e instanceof MaxFilesReached);
|
|
@@ -41,7 +62,22 @@ export const UploadBar = () => {
|
|
|
41
62
|
if (!lines.length)
|
|
42
63
|
return;
|
|
43
64
|
chat.pushMessage(new ChatEntry({ agentType: 'system', type: 'md', content: lines.join('\n\n') }));
|
|
65
|
+
if (lines.length) {
|
|
66
|
+
setAriaMessage(lines.join(' '));
|
|
67
|
+
setTimeout(() => setAriaMessage(''), 2000);
|
|
68
|
+
chat.pushMessage(new ChatEntry({ agentType: 'system', type: 'md', content: lines.join('\n\n') }));
|
|
69
|
+
}
|
|
44
70
|
});
|
|
45
|
-
return (_jsxs("div", { className: listToClass(['info-bar', 'upload-bar', visible && 'visible']), children: [_jsx("div", {
|
|
71
|
+
return (_jsxs("div", { className: listToClass(['info-bar', 'upload-bar', visible && 'visible']), children: [_jsx("div", { "aria-live": "polite", "aria-atomic": "true", style: {
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
width: 1,
|
|
74
|
+
height: 1,
|
|
75
|
+
margin: -1,
|
|
76
|
+
padding: 0,
|
|
77
|
+
overflow: 'hidden',
|
|
78
|
+
clip: 'rect(0 0 0 0)',
|
|
79
|
+
whiteSpace: 'nowrap',
|
|
80
|
+
border: 0,
|
|
81
|
+
}, children: ariaMessage }), _jsx("div", { className: "space" }), _jsx("div", { className: "content", children: _jsx(FadingOverflow, { className: "list-overflow", scroll: "arrows", enableHorizontalScrollWithVerticalWheel: true, children: _jsx("ul", { children: listItems }) }) })] }));
|
|
46
82
|
};
|
|
47
83
|
//# sourceMappingURL=UploadBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadBar.js","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"UploadBar.js","sourceRoot":"","sources":["../../../src/views/MessageInput/UploadBar.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" | "typing" | "removeConfig" | "removeStack" | "removeWorkspace" | "removeKS" | "removeSelection" | "expand" | "uploadSizeError" | "uploadItemLimitError" | "uploadError" | "uploadDragging" | "uploadDragDropTitle" | "uploadDragDropDescription" | "unknownUploadError" | "cantSendBecauseOfUploadError" | "cantSendBecauseOfUploadProgress" | "cantSendBecauseOfEmptyContent" | "cantSendBecausePromptMaxLength" | "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" | "unknownUploadError" | "cantSendBecauseOfUploadError" | "cantSendBecauseOfUploadProgress" | "cantSendBecauseOfEmptyContent" | "cantSendBecausePromptMaxLength" | "chatAgent" | "uploadingStatus" | "uploadSuccessStatus", 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":"AA2EA,eAAO,MAAM,yBAAyB,gnBAAiC,CAAA"}
|
|
@@ -32,6 +32,8 @@ const dictionary = {
|
|
|
32
32
|
cantSendBecauseOfEmptyContent: 'You can\'t send empty messages. Please write some text or upload a file.',
|
|
33
33
|
cantSendBecausePromptMaxLength: 'You can\'t send messages longer than $0 characters. Please, shorten your message.',
|
|
34
34
|
chatAgent: 'Agents',
|
|
35
|
+
uploadingStatus: 'Checking file security',
|
|
36
|
+
uploadSuccessStatus: 'File sent successfully',
|
|
35
37
|
},
|
|
36
38
|
pt: {
|
|
37
39
|
stack: 'Selecionar stack',
|
|
@@ -65,6 +67,8 @@ const dictionary = {
|
|
|
65
67
|
cantSendBecauseOfEmptyContent: 'Não é possível enviar mensagens vazias. Por favor, escreva algum texto ou envie um arquivo.',
|
|
66
68
|
cantSendBecausePromptMaxLength: 'Você não pode enviar mensagens com mais de $0 caracteres. Por favor, reduza sua mensagem.',
|
|
67
69
|
chatAgent: 'Agentes',
|
|
70
|
+
uploadingStatus: 'Verificando segurança do arquivo',
|
|
71
|
+
uploadSuccessStatus: 'Arquivo anexado com sucesso',
|
|
68
72
|
},
|
|
69
73
|
};
|
|
70
74
|
export const useMessageInputDictionary = () => useTranslate(dictionary);
|
|
@@ -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,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,sBAAsB;QAC3C,yBAAyB,EAAE,iDAAiD;QAC5E,kBAAkB,EAAE,8CAA8C;QAClE,4BAA4B,EAAE,yIAAyI;QACvK,+BAA+B,EAAE,8IAA8I;QAC/K,6BAA6B,EAAE,0EAA0E;QACzG,8BAA8B,EAAE,mFAAmF;QACnH,SAAS,EAAE,QAAQ;
|
|
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,sBAAsB;QAC3C,yBAAyB,EAAE,iDAAiD;QAC5E,kBAAkB,EAAE,8CAA8C;QAClE,4BAA4B,EAAE,yIAAyI;QACvK,+BAA+B,EAAE,8IAA8I;QAC/K,6BAA6B,EAAE,0EAA0E;QACzG,8BAA8B,EAAE,mFAAmF;QACnH,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,wBAAwB;QACzC,mBAAmB,EAAE,wBAAwB;KAC9C;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,8BAA8B,EAAE,2FAA2F;QAC3H,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,kCAAkC;QACnD,mBAAmB,EAAE,6BAA6B;KACnD;CACmB,CAAA;AAEtB,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA"}
|
package/package.json
CHANGED
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": "Tue Aug 05 2025
|
|
3
|
+
"version": "1.36.0-beta.1",
|
|
4
|
+
"date": "Tue Aug 05 2025 23:09:33 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
package/src/index.ts
CHANGED
|
@@ -12,8 +12,9 @@ export type { ChatAction } from './state/ChatEntry'
|
|
|
12
12
|
export { ChatState } from './state/ChatState'
|
|
13
13
|
export type { MessageInterceptor } from './state/ChatState'
|
|
14
14
|
export { ChatTabsController } from './state/ChatTabsController'
|
|
15
|
+
export { acceptedFileTypes } from './state/constants'
|
|
15
16
|
export { ObservableState } from './state/ObservableState'
|
|
16
17
|
export type { Labeled, LabeledAgent, LabeledWithImage } from './state/types'
|
|
17
18
|
export { WidgetState } from './state/WidgetState'
|
|
18
19
|
export { defaultLanguage, languages } from './utils/programming-languages'
|
|
19
|
-
|
|
20
|
+
|
package/src/layout.css
CHANGED
package/src/views/Home/index.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FadingOverflow } from '@stack-spot/portal-components/FadingOverflow'
|
|
2
|
+
import { agentToolsClient } from '@stack-spot/portal-network'
|
|
2
3
|
import { styled } from 'styled-components'
|
|
3
4
|
import { AgentCard } from '../../components/AgentCard'
|
|
4
5
|
import { AgentCardCreate } from '../../components/AgentCard/AgentCardCreate'
|
|
@@ -29,6 +30,7 @@ const AgentList = styled.ul`
|
|
|
29
30
|
export const Home = ({ initialAgents, urlCreateAgent, ...props }: HomeProps) => {
|
|
30
31
|
const agent = useCurrentChatState('agent')
|
|
31
32
|
const isAgentEnabled = useCurrentChatState('features').agent
|
|
33
|
+
const [canCreateAgent] = agentToolsClient.createAgent.useAllowed()
|
|
32
34
|
|
|
33
35
|
return (
|
|
34
36
|
<FallbackBoundary>
|
|
@@ -36,7 +38,7 @@ export const Home = ({ initialAgents, urlCreateAgent, ...props }: HomeProps) =>
|
|
|
36
38
|
{!!initialAgents && isAgentEnabled && (
|
|
37
39
|
<FadingOverflow enableHorizontalScrollWithVerticalWheel sides={['left', 'right']} scroll="arrows">
|
|
38
40
|
<AgentList className="agent-list">
|
|
39
|
-
{urlCreateAgent && <li><AgentCardCreate urlCreateAgent={urlCreateAgent} /></li>}
|
|
41
|
+
{canCreateAgent && urlCreateAgent && <li><AgentCardCreate urlCreateAgent={urlCreateAgent} /></li>}
|
|
40
42
|
{initialAgents.map((agent) => <li key={agent.id}><AgentCard agent={agent} /></li>)}
|
|
41
43
|
</AgentList>
|
|
42
44
|
</FadingOverflow>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { listToClass } from '@stack-spot/portal-theme'
|
|
2
2
|
import { interpolate } from '@stack-spot/portal-translate'
|
|
3
|
-
import { useMemo } from 'react'
|
|
3
|
+
import { useEffect, useMemo, useRef, useState } from 'react'
|
|
4
4
|
import { FadingOverflow } from '../../components/FadingOverflow'
|
|
5
5
|
import { FileDescription } from '../../components/FileDescription'
|
|
6
6
|
import { useCurrentChat } from '../../context/hooks'
|
|
@@ -37,6 +37,30 @@ export const UploadBar = () => {
|
|
|
37
37
|
const t = useMessageInputDictionary()
|
|
38
38
|
const chat = useCurrentChat()
|
|
39
39
|
const visible = !!uploads.length
|
|
40
|
+
const [ariaMessage, setAriaMessage] = useState('')
|
|
41
|
+
const prevUploadsRef = useRef<FileUpload[]>([])
|
|
42
|
+
const announcedUploadsRef = useRef<Set<string>>(new Set())
|
|
43
|
+
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
const prevUploads = prevUploadsRef.current
|
|
46
|
+
const newUploads = uploads.filter(
|
|
47
|
+
up => !prevUploads.some(prev => prev.id === up.id),
|
|
48
|
+
)
|
|
49
|
+
newUploads.forEach((up) => {
|
|
50
|
+
if (!announcedUploadsRef.current.has(up.id)) {
|
|
51
|
+
setAriaMessage(t.uploadingStatus)
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
setAriaMessage(t.uploadSuccessStatus)
|
|
54
|
+
setTimeout(() => setAriaMessage(''), 2000)
|
|
55
|
+
}, 1000)
|
|
56
|
+
announcedUploadsRef.current.add(up.id)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
if (uploads.some(up => up.status === 'error')) {
|
|
60
|
+
setAriaMessage('Falha ao anexar o arquivo')
|
|
61
|
+
setTimeout(() => setAriaMessage(''), 2000)
|
|
62
|
+
}
|
|
63
|
+
}, [uploads])
|
|
40
64
|
|
|
41
65
|
useUploadErrorEffect((errors) => {
|
|
42
66
|
const sizeErrors = errors.filter(e => e instanceof FileIsTooLarge)
|
|
@@ -54,10 +78,34 @@ export const UploadBar = () => {
|
|
|
54
78
|
}
|
|
55
79
|
if (!lines.length) return
|
|
56
80
|
chat.pushMessage(new ChatEntry({ agentType: 'system', type: 'md', content: lines.join('\n\n') }))
|
|
81
|
+
|
|
82
|
+
if (lines.length) {
|
|
83
|
+
setAriaMessage(lines.join(' '))
|
|
84
|
+
setTimeout(() => setAriaMessage(''), 2000)
|
|
85
|
+
chat.pushMessage(new ChatEntry({ agentType: 'system', type: 'md', content: lines.join('\n\n') }))
|
|
86
|
+
}
|
|
57
87
|
})
|
|
58
88
|
|
|
89
|
+
|
|
59
90
|
return (
|
|
60
91
|
<div className={listToClass(['info-bar', 'upload-bar', visible && 'visible'])}>
|
|
92
|
+
<div
|
|
93
|
+
aria-live="polite"
|
|
94
|
+
aria-atomic="true"
|
|
95
|
+
style={{
|
|
96
|
+
position: 'absolute',
|
|
97
|
+
width: 1,
|
|
98
|
+
height: 1,
|
|
99
|
+
margin: -1,
|
|
100
|
+
padding: 0,
|
|
101
|
+
overflow: 'hidden',
|
|
102
|
+
clip: 'rect(0 0 0 0)',
|
|
103
|
+
whiteSpace: 'nowrap',
|
|
104
|
+
border: 0,
|
|
105
|
+
}}
|
|
106
|
+
>
|
|
107
|
+
{ariaMessage}
|
|
108
|
+
</div>
|
|
61
109
|
<div className="space"></div>
|
|
62
110
|
<div className="content">
|
|
63
111
|
<FadingOverflow className="list-overflow" scroll="arrows" enableHorizontalScrollWithVerticalWheel>
|
|
@@ -33,6 +33,8 @@ const dictionary = {
|
|
|
33
33
|
cantSendBecauseOfEmptyContent: 'You can\'t send empty messages. Please write some text or upload a file.',
|
|
34
34
|
cantSendBecausePromptMaxLength: 'You can\'t send messages longer than $0 characters. Please, shorten your message.',
|
|
35
35
|
chatAgent: 'Agents',
|
|
36
|
+
uploadingStatus: 'Checking file security',
|
|
37
|
+
uploadSuccessStatus: 'File sent successfully',
|
|
36
38
|
},
|
|
37
39
|
pt: {
|
|
38
40
|
stack: 'Selecionar stack',
|
|
@@ -66,6 +68,8 @@ const dictionary = {
|
|
|
66
68
|
cantSendBecauseOfEmptyContent: 'Não é possível enviar mensagens vazias. Por favor, escreva algum texto ou envie um arquivo.',
|
|
67
69
|
cantSendBecausePromptMaxLength: 'Você não pode enviar mensagens com mais de $0 caracteres. Por favor, reduza sua mensagem.',
|
|
68
70
|
chatAgent: 'Agentes',
|
|
71
|
+
uploadingStatus: 'Verificando segurança do arquivo',
|
|
72
|
+
uploadSuccessStatus: 'Arquivo anexado com sucesso',
|
|
69
73
|
},
|
|
70
74
|
} satisfies Dictionary
|
|
71
75
|
|