cozy-search 0.27.0 → 0.29.0

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 (39) hide show
  1. package/dist/components/Assistant/AssistantAvatar.js +4 -10
  2. package/dist/components/Assistant/AssistantContainer.js +1 -0
  3. package/dist/components/Assistant/AssistantSelection.js +5 -3
  4. package/dist/components/Assistant/AssistantSelectionItem.js +4 -1
  5. package/dist/components/Assistant/styles.styl +7 -1
  6. package/dist/components/Conversations/ConversationComposer.js +5 -8
  7. package/dist/components/CreateAssistantSteps/ApiKeyStep.d.ts +2 -2
  8. package/dist/components/CreateAssistantSteps/ApiKeyStep.js +20 -19
  9. package/dist/components/CreateAssistantSteps/AssistantDialogContent.js +1 -1
  10. package/dist/components/CreateAssistantSteps/Provider.js +0 -16
  11. package/dist/components/CreateAssistantSteps/ProviderSelectionStep.js +7 -14
  12. package/dist/components/CreateAssistantSteps/helpers.d.ts +1 -0
  13. package/dist/components/CreateAssistantSteps/helpers.js +23 -16
  14. package/dist/components/CreateAssistantSteps/providers.json +7 -15
  15. package/dist/components/CreateAssistantSteps/useAssistantDialog.js +15 -5
  16. package/dist/components/TwakeKnowledges/ChatKnowledge.js +3 -4
  17. package/dist/components/TwakeKnowledges/DriveKnowledge.js +129 -73
  18. package/dist/components/TwakeKnowledges/MailKnowledge.js +54 -34
  19. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.d.ts +6 -0
  20. package/dist/components/TwakeKnowledges/TwakeKnowledgeChip.js +114 -0
  21. package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.js +6 -11
  22. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.d.ts +4 -2
  23. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +22 -57
  24. package/dist/components/TwakeKnowledges/WebSearchChip.d.ts +5 -0
  25. package/dist/components/TwakeKnowledges/WebSearchChip.js +64 -0
  26. package/dist/components/TwakeKnowledges/styles.styl +8 -20
  27. package/dist/components/Views/EditAssistantDialog.js +4 -2
  28. package/dist/components/helpers.js +4 -2
  29. package/dist/components/helpers.spec.js +21 -0
  30. package/dist/locales/en.json +8 -14
  31. package/dist/locales/fr.json +7 -13
  32. package/dist/locales/index.js +27 -53
  33. package/dist/locales/ru.json +6 -13
  34. package/dist/locales/vi.json +6 -13
  35. package/dist/stylesheet.css +15 -21
  36. package/package.json +4 -4
  37. package/dist/assets/anthropic.svg +0 -7
  38. package/dist/components/Conversations/WebsearchButton.d.ts +0 -5
  39. package/dist/components/Conversations/WebsearchButton.js +0 -56
@@ -17,12 +17,8 @@ var _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"))
17
17
 
18
18
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
19
19
 
20
- var _Assistant = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Assistant"));
21
-
22
20
  var _AssistantColor = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/AssistantColor"));
23
21
 
24
- var _constants = require("../constants");
25
-
26
22
  var styles = {
27
23
  "assistant-container": "styles__assistant-container___2WDzp",
28
24
  "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
@@ -34,6 +30,7 @@ var styles = {
34
30
  "menu-item": "styles__menu-item___1jvWN",
35
31
  "create-item": "styles__create-item___3ZARq",
36
32
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
33
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
37
34
  "chip": "styles__chip___16BPR",
38
35
  "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
39
36
  };
@@ -45,17 +42,14 @@ var AssistantAvatar = function AssistantAvatar(_ref) {
45
42
  if (!assistant) return null;
46
43
  var iconClassName = (0, _classnames.default)(styles['assistant-icon'], (0, _defineProperty2.default)({}, styles['assistant-icon--small'], isSmall), className);
47
44
 
48
- if (assistant._id !== _constants.DEFAULT_ASSISTANT._id && !assistant.icon) {
45
+ if (!assistant.icon) {
49
46
  return /*#__PURE__*/_react.default.createElement(_Icon.default, {
50
- icon: _Assistant.default,
47
+ icon: _AssistantColor.default,
51
48
  className: iconClassName
52
49
  });
53
50
  }
54
51
 
55
- return assistant.id === _constants.DEFAULT_ASSISTANT.id ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
56
- icon: _AssistantColor.default,
57
- className: iconClassName
58
- }) : /*#__PURE__*/_react.default.createElement(_Avatar.default, {
52
+ return /*#__PURE__*/_react.default.createElement(_Avatar.default, {
59
53
  src: assistant.icon,
60
54
  alt: assistant.name,
61
55
  size: isSmall ? 12 : 24,
@@ -40,6 +40,7 @@ var styles = {
40
40
  "menu-item": "styles__menu-item___1jvWN",
41
41
  "create-item": "styles__create-item___3ZARq",
42
42
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
43
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
43
44
  "chip": "styles__chip___16BPR",
44
45
  "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
45
46
  };
@@ -60,6 +60,7 @@ var styles = {
60
60
  "menu-item": "styles__menu-item___1jvWN",
61
61
  "create-item": "styles__create-item___3ZARq",
62
62
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
63
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
63
64
  "chip": "styles__chip___16BPR",
64
65
  "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
65
66
  };
@@ -173,11 +174,12 @@ var AssistantSelection = function AssistantSelection(_ref) {
173
174
  className: (0, _classnames.default)(styles['menu-item'], styles['create-item'])
174
175
  }, /*#__PURE__*/_react.default.createElement("div", {
175
176
  className: "u-flex u-flex-items-center"
177
+ }, /*#__PURE__*/_react.default.createElement("div", {
178
+ className: "u-flex u-flex-justify-center u-w-1-half u-mr-half"
176
179
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
177
180
  icon: _Plus.default,
178
- size: 16,
179
- className: "u-mr-half"
180
- }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
181
+ size: 16
182
+ })), /*#__PURE__*/_react.default.createElement(_Typography.default, {
181
183
  variant: "body1"
182
184
  }, t('assistant_create.title'))))));
183
185
  };
@@ -48,6 +48,7 @@ var styles = {
48
48
  "menu-item": "styles__menu-item___1jvWN",
49
49
  "create-item": "styles__create-item___3ZARq",
50
50
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
51
+ "menu-item-actions": "styles__menu-item-actions___1ykUi",
51
52
  "chip": "styles__chip___16BPR",
52
53
  "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
53
54
  };
@@ -123,7 +124,9 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
123
124
  }, isSelected && !isMobile && /*#__PURE__*/_react.default.createElement(_Icon.default, {
124
125
  icon: _Check.default,
125
126
  className: "u-success"
126
- }), !disableActions && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
127
+ }), !disableActions && /*#__PURE__*/_react.default.createElement("div", {
128
+ className: styles['menu-item-actions']
129
+ }, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
127
130
  "aria-label": "Edit assistant",
128
131
  size: "small",
129
132
  className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, styles['menu-item-icon-button'], !isMobile || !isSelected && isMobile), (0, _defineProperty2.default)(_cx, 'u-db', isSelected && isMobile), _cx)),
@@ -44,7 +44,13 @@
44
44
 
45
45
  &:hover
46
46
  .menu-item-icon-button
47
- display block !important
47
+ display inline-flex !important
48
+
49
+ .menu-item-actions
50
+ display flex
51
+ align-items center
52
+ min-width 64px
53
+ justify-content flex-end
48
54
 
49
55
  .menu-item-icon-button
50
56
  display none !important
@@ -29,8 +29,6 @@ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
29
29
 
30
30
  var _ConversationBar = _interopRequireDefault(require("./ConversationBar"));
31
31
 
32
- var _WebsearchButton = _interopRequireDefault(require("./WebsearchButton"));
33
-
34
32
  var _AssistantSelection = _interopRequireDefault(require("../Assistant/AssistantSelection"));
35
33
 
36
34
  var _AssistantProvider = require("../AssistantProvider");
@@ -132,10 +130,7 @@ var ConversationComposer = function ConversationComposer() {
132
130
  onKeyDown: handleKeyDown
133
131
  }), /*#__PURE__*/_react2.default.createElement("div", {
134
132
  className: "u-flex u-flex-items-center u-flex-shrink-0"
135
- }, /*#__PURE__*/_react2.default.createElement(_WebsearchButton.default, {
136
- websearchEnabled: websearchEnabled,
137
- onToggleWebsearch: handleToggleWebsearch
138
- }), /*#__PURE__*/_react2.default.createElement(_Buttons.default, (0, _extends2.default)({
133
+ }, /*#__PURE__*/_react2.default.createElement(_Buttons.default, (0, _extends2.default)({
139
134
  size: "small",
140
135
  className: "u-miw-auto u-w-2 u-h-2 u-bdrs-circle u-flex-shrink-0",
141
136
  classes: {
@@ -159,9 +154,11 @@ var ConversationComposer = function ConversationComposer() {
159
154
  className: (0, _classnames.default)('u-flex u-flex-items-center u-flex-justify-between', styles['composerActions'])
160
155
  }, (0, _cozyFlags.default)('cozy.assistant.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
161
156
  disabled: !isThreadEmpty
162
- }), (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
157
+ }), /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
163
158
  className: "u-ml-auto",
164
- onSelectTwakeKnowledge: setOpenedKnowledgePanel
159
+ onSelectTwakeKnowledge: setOpenedKnowledgePanel,
160
+ websearchEnabled: websearchEnabled,
161
+ onToggleWebsearch: handleToggleWebsearch
165
162
  })));
166
163
  };
167
164
 
@@ -1,6 +1,6 @@
1
1
  export default ApiKeyStep;
2
- declare function ApiKeyStep({ apiKey, selectedProvider, onChange }: {
3
- apiKey: any;
2
+ declare function ApiKeyStep({ formData, selectedProvider, onChange }: {
3
+ formData: any;
4
4
  selectedProvider: any;
5
5
  onChange: any;
6
6
  }): JSX.Element;
@@ -29,12 +29,14 @@ var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
29
29
 
30
30
  var _twakeI18n = require("twake-i18n");
31
31
 
32
+ var _helpers = require("./helpers");
33
+
32
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
35
 
34
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
37
 
36
38
  var ApiKeyStep = function ApiKeyStep(_ref) {
37
- var apiKey = _ref.apiKey,
39
+ var formData = _ref.formData,
38
40
  selectedProvider = _ref.selectedProvider,
39
41
  onChange = _ref.onChange;
40
42
 
@@ -51,11 +53,20 @@ var ApiKeyStep = function ApiKeyStep(_ref) {
51
53
 
52
54
  var _ref2 = selectedProvider || {},
53
55
  id = _ref2.id,
54
- providerName = _ref2.name,
55
- model = _ref2.model,
56
- baseUrl = _ref2.baseUrl;
56
+ providerName = _ref2.name;
57
+
58
+ var _ref3 = formData || {},
59
+ _ref3$model = _ref3.model,
60
+ model = _ref3$model === void 0 ? '' : _ref3$model,
61
+ _ref3$baseUrl = _ref3.baseUrl,
62
+ baseUrl = _ref3$baseUrl === void 0 ? '' : _ref3$baseUrl,
63
+ _ref3$apiKey = _ref3.apiKey,
64
+ apiKey = _ref3$apiKey === void 0 ? '' : _ref3$apiKey,
65
+ _ref3$encryptedApiKey = _ref3.encryptedApiKey,
66
+ encryptedApiKey = _ref3$encryptedApiKey === void 0 ? '' : _ref3$encryptedApiKey;
57
67
 
58
68
  var isCustomModel = id === 'custom';
69
+ var isModelUnsupported = (0, _helpers.checkIfModelUnsupported)(selectedProvider, model);
59
70
  return /*#__PURE__*/_react.default.createElement("div", {
60
71
  className: "u-flex u-flex-column u-gap-1"
61
72
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
@@ -66,18 +77,6 @@ var ApiKeyStep = function ApiKeyStep(_ref) {
66
77
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
67
78
  variant: "h6",
68
79
  className: "u-mb-half"
69
- }, t('assistant_create.steps.configuration.provider.label')), /*#__PURE__*/_react.default.createElement(_TextField.default, {
70
- fullWidth: true,
71
- placeholder: t('assistant_create.steps.configuration.provider.placeholder'),
72
- value: providerName,
73
- onChange: onChange('model'),
74
- variant: "outlined",
75
- type: "text"
76
- })), isCustomModel && /*#__PURE__*/_react.default.createElement("div", {
77
- className: "u-mb-1"
78
- }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
79
- variant: "h6",
80
- className: "u-mb-half"
81
80
  }, t('assistant_create.steps.configuration.url.label')), /*#__PURE__*/_react.default.createElement(_TextField.default, {
82
81
  fullWidth: true,
83
82
  placeholder: t('assistant_create.steps.configuration.url.placeholder'),
@@ -85,7 +84,7 @@ var ApiKeyStep = function ApiKeyStep(_ref) {
85
84
  onChange: onChange('baseUrl'),
86
85
  variant: "outlined",
87
86
  type: "text"
88
- })), !isCustomModel && /*#__PURE__*/_react.default.createElement("div", {
87
+ })), /*#__PURE__*/_react.default.createElement("div", {
89
88
  className: "u-mb-1"
90
89
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
91
90
  variant: "h6",
@@ -96,7 +95,9 @@ var ApiKeyStep = function ApiKeyStep(_ref) {
96
95
  value: model,
97
96
  onChange: onChange('model'),
98
97
  variant: "outlined",
99
- type: "text"
98
+ type: "text",
99
+ error: isModelUnsupported,
100
+ helperText: isModelUnsupported ? t('assistant_create.steps.configuration.model.unsupported') : undefined
100
101
  })), /*#__PURE__*/_react.default.createElement("div", {
101
102
  className: "u-mb-1"
102
103
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
@@ -104,7 +105,7 @@ var ApiKeyStep = function ApiKeyStep(_ref) {
104
105
  className: "u-mb-half"
105
106
  }, t('assistant_create.steps.configuration.api_key.label')), /*#__PURE__*/_react.default.createElement(_TextField.default, {
106
107
  fullWidth: true,
107
- placeholder: t('assistant_create.steps.configuration.api_key.placeholder'),
108
+ placeholder: encryptedApiKey ? '••••••••••••' : t('assistant_create.steps.configuration.api_key.placeholder'),
108
109
  value: apiKey,
109
110
  onChange: onChange('apiKey'),
110
111
  variant: "outlined",
@@ -44,7 +44,7 @@ var AssistantDialogContent = function AssistantDialogContent(_ref) {
44
44
 
45
45
  case _useAssistantDialog.STEPS.API_KEY:
46
46
  return /*#__PURE__*/_react.default.createElement(_ApiKeyStep.default, {
47
- apiKey: formData.apiKey,
47
+ formData: formData,
48
48
  selectedProvider: selectedProvider,
49
49
  onChange: onChange,
50
50
  onModelSelect: onModelSelect
@@ -48,21 +48,6 @@ var styles = {
48
48
  "close-button": "styles__close-button___3jc_w"
49
49
  };
50
50
 
51
- var AnthropicLogo = function AnthropicLogo(props) {
52
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("desc", null, "Anthropic Icon Streamline Icon: https://streamlinehq.com"), /*#__PURE__*/_react.default.createElement("path", {
53
- fill: "#181818",
54
- d: "M13.789 3.932l6.433 16.136h3.528L17.317 3.932h-3.528zM6.325 13.683l2.202-5.67 2.2 5.67H6.326zm.357-9.751L.25 20.068h3.597l1.315-3.389h6.73l1.315 3.39h3.596L10.371 3.931H6.682z"
55
- }));
56
- };
57
-
58
- AnthropicLogo.defaultProps = {
59
- xmlns: "http://www.w3.org/2000/svg",
60
- fill: "none",
61
- viewBox: "0 0 24 24",
62
- height: "24",
63
- width: "24"
64
- };
65
-
66
51
  var GeminiLogo = function GeminiLogo(props) {
67
52
  return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("g", {
68
53
  clipPath: "url(#clip0_20306_34597)"
@@ -478,7 +463,6 @@ var ICONS = {
478
463
  GeminiLogo: GeminiLogo,
479
464
  OpenAILogo: OpenAILogo,
480
465
  MistralLogo: MistralLogo,
481
- AnthropicLogo: AnthropicLogo,
482
466
  MetaLogo: MetaLogo,
483
467
  PlusSmallIcon: _PlusSmall.default
484
468
  };
@@ -42,6 +42,7 @@ var providers = [{
42
42
  id: "openai",
43
43
  name: "OpenAI",
44
44
  models: ["gpt-5.1", "gpt-5-2025-11-14", "o3", "o4-mini", "gpt-5-mini", "gpt-4.1-mini", "sora-v2"],
45
+ unsupportedModels: ["o1", "o1-mini", "o1-preview"],
45
46
  description: "assistant_create.steps.provider_selection.openai.description",
46
47
  icon: "OpenAILogo",
47
48
  baseUrl: "https://api.openai.com/v1",
@@ -54,20 +55,6 @@ var providers = [{
54
55
  icon: "MistralLogo",
55
56
  baseUrl: "https://api.mistral.ai/v1",
56
57
  external: true
57
- }, {
58
- id: "anthropic",
59
- name: "Anthropic",
60
- models: ["claude-4-5-opus-20251124", "claude-4-5-sonnet-20250929", "claude-4-5-haiku-20251015", "claude-3-7-sonnet-20250219"],
61
- description: "assistant_create.steps.provider_selection.anthropic.description",
62
- icon: "AnthropicLogo",
63
- baseUrl: "https://api.anthropic.com/v1",
64
- external: true
65
- }, {
66
- id: "custom",
67
- name: "assistant_create.steps.provider_selection.custom.name",
68
- description: "assistant_create.steps.provider_selection.custom.description",
69
- icon: "PlusSmallIcon",
70
- external: true
71
58
  }, {
72
59
  id: "meta",
73
60
  name: "Meta",
@@ -76,6 +63,12 @@ var providers = [{
76
63
  icon: "MetaLogo",
77
64
  baseUrl: "https://api.llama.com/v1",
78
65
  external: true
66
+ }, {
67
+ id: "custom",
68
+ name: "assistant_create.steps.provider_selection.custom.name",
69
+ description: "assistant_create.steps.provider_selection.custom.description",
70
+ icon: "PlusSmallIcon",
71
+ external: true
79
72
  }];
80
73
  var styles = {
81
74
  "BasicInfoStep": "styles__BasicInfoStep___2r0eM",
@@ -1 +1,2 @@
1
1
  export function getSelectedProviderById(providerId: string): object;
2
+ export function checkIfModelUnsupported(provider: object, model: string): boolean;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getSelectedProviderById = void 0;
8
+ exports.getSelectedProviderById = exports.checkIfModelUnsupported = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -32,6 +32,7 @@ var providers = [{
32
32
  id: "openai",
33
33
  name: "OpenAI",
34
34
  models: ["gpt-5.1", "gpt-5-2025-11-14", "o3", "o4-mini", "gpt-5-mini", "gpt-4.1-mini", "sora-v2"],
35
+ unsupportedModels: ["o1", "o1-mini", "o1-preview"],
35
36
  description: "assistant_create.steps.provider_selection.openai.description",
36
37
  icon: "OpenAILogo",
37
38
  baseUrl: "https://api.openai.com/v1",
@@ -44,20 +45,6 @@ var providers = [{
44
45
  icon: "MistralLogo",
45
46
  baseUrl: "https://api.mistral.ai/v1",
46
47
  external: true
47
- }, {
48
- id: "anthropic",
49
- name: "Anthropic",
50
- models: ["claude-4-5-opus-20251124", "claude-4-5-sonnet-20250929", "claude-4-5-haiku-20251015", "claude-3-7-sonnet-20250219"],
51
- description: "assistant_create.steps.provider_selection.anthropic.description",
52
- icon: "AnthropicLogo",
53
- baseUrl: "https://api.anthropic.com/v1",
54
- external: true
55
- }, {
56
- id: "custom",
57
- name: "assistant_create.steps.provider_selection.custom.name",
58
- description: "assistant_create.steps.provider_selection.custom.description",
59
- icon: "PlusSmallIcon",
60
- external: true
61
48
  }, {
62
49
  id: "meta",
63
50
  name: "Meta",
@@ -66,6 +53,12 @@ var providers = [{
66
53
  icon: "MetaLogo",
67
54
  baseUrl: "https://api.llama.com/v1",
68
55
  external: true
56
+ }, {
57
+ id: "custom",
58
+ name: "assistant_create.steps.provider_selection.custom.name",
59
+ description: "assistant_create.steps.provider_selection.custom.description",
60
+ icon: "PlusSmallIcon",
61
+ external: true
69
62
  }];
70
63
  /**
71
64
  * Get the provider corresponding to a given model name.
@@ -81,5 +74,19 @@ var getSelectedProviderById = function getSelectedProviderById(providerId) {
81
74
  return provider.id === 'custom';
82
75
  }));
83
76
  };
77
+ /**
78
+ * Check whether the given model is unsupported by the provider.
79
+ * @param {object} provider - The provider object.
80
+ * @param {string} model - The model name.
81
+ * @returns {boolean} True if the model is unsupported.
82
+ */
83
+
84
+
85
+ exports.getSelectedProviderById = getSelectedProviderById;
86
+
87
+ var checkIfModelUnsupported = function checkIfModelUnsupported(provider, model) {
88
+ var unsupportedModels = (provider === null || provider === void 0 ? void 0 : provider.unsupportedModels) || [];
89
+ return unsupportedModels.includes(model === null || model === void 0 ? void 0 : model.trim());
90
+ };
84
91
 
85
- exports.getSelectedProviderById = getSelectedProviderById;
92
+ exports.checkIfModelUnsupported = checkIfModelUnsupported;
@@ -20,6 +20,7 @@
20
20
  "id": "openai",
21
21
  "name": "OpenAI",
22
22
  "models": ["gpt-5.1", "gpt-5-2025-11-14", "o3", "o4-mini", "gpt-5-mini", "gpt-4.1-mini", "sora-v2"],
23
+ "unsupportedModels": ["o1", "o1-mini", "o1-preview"],
23
24
  "description": "assistant_create.steps.provider_selection.openai.description",
24
25
  "icon": "OpenAILogo",
25
26
  "baseUrl": "https://api.openai.com/v1",
@@ -35,12 +36,12 @@
35
36
  "external": true
36
37
  },
37
38
  {
38
- "id": "anthropic",
39
- "name": "Anthropic",
40
- "models": ["claude-4-5-opus-20251124", "claude-4-5-sonnet-20250929", "claude-4-5-haiku-20251015", "claude-3-7-sonnet-20250219"],
41
- "description": "assistant_create.steps.provider_selection.anthropic.description",
42
- "icon": "AnthropicLogo",
43
- "baseUrl": "https://api.anthropic.com/v1",
39
+ "id": "meta",
40
+ "name": "Meta",
41
+ "models": ["meta-llama/Llama-4-Scout-17B-16E-Instruct", "meta-llama/Llama-4-Maverick-402B-Instruct", "meta-llama/Llama-3.3-70B-Instruct", "meta-llama/Llama-3.2-90B-Vision-Instruct"],
42
+ "description": "assistant_create.steps.provider_selection.meta.description",
43
+ "icon": "MetaLogo",
44
+ "baseUrl": "https://api.llama.com/v1",
44
45
  "external": true
45
46
  },
46
47
  {
@@ -49,14 +50,5 @@
49
50
  "description": "assistant_create.steps.provider_selection.custom.description",
50
51
  "icon": "PlusSmallIcon",
51
52
  "external": true
52
- },
53
- {
54
- "id": "meta",
55
- "name": "Meta",
56
- "models": ["meta-llama/Llama-4-Scout-17B-16E-Instruct", "meta-llama/Llama-4-Maverick-402B-Instruct", "meta-llama/Llama-3.3-70B-Instruct", "meta-llama/Llama-3.2-90B-Vision-Instruct"],
57
- "description": "assistant_create.steps.provider_selection.meta.description",
58
- "icon": "MetaLogo",
59
- "baseUrl": "https://api.llama.com/v1",
60
- "external": true
61
53
  }
62
54
  ]
@@ -27,6 +27,8 @@ var _locales = require("../../locales");
27
27
 
28
28
  var _constants = require("../constants");
29
29
 
30
+ var _helpers = require("./helpers");
31
+
30
32
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
33
 
32
34
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -117,13 +119,12 @@ var useAssistantDialog = function useAssistantDialog(_ref) {
117
119
  };
118
120
 
119
121
  var handleProviderSelection = function handleProviderSelection(provider) {
120
- var isOpenrag = provider.id === _constants.OPENRAG_MODEL;
121
122
  setFormData(function (prev) {
122
- var _provider$baseUrl;
123
+ var _provider$baseUrl, _provider$models$, _provider$models;
123
124
 
124
125
  return _objectSpread(_objectSpread({}, prev), {}, {
125
126
  baseUrl: (_provider$baseUrl = provider.baseUrl) !== null && _provider$baseUrl !== void 0 ? _provider$baseUrl : '',
126
- model: isOpenrag ? provider.models[0] : '',
127
+ model: (_provider$models$ = (_provider$models = provider.models) === null || _provider$models === void 0 ? void 0 : _provider$models[0]) !== null && _provider$models$ !== void 0 ? _provider$models$ : '',
127
128
  apiKey: '',
128
129
  encryptedApiKey: '',
129
130
  providerId: provider.id
@@ -202,7 +203,7 @@ var useAssistantDialog = function useAssistantDialog(_ref) {
202
203
  }();
203
204
 
204
205
  var isNextDisabled = function isNextDisabled(isAllowToSkipApiKey) {
205
- var _formData$name, _formData$apiKey;
206
+ var _formData$name;
206
207
 
207
208
  switch (step) {
208
209
  case STEPS.BASIC_INFO:
@@ -212,7 +213,16 @@ var useAssistantDialog = function useAssistantDialog(_ref) {
212
213
  return !selectedProvider;
213
214
 
214
215
  case STEPS.API_KEY:
215
- return !((_formData$apiKey = formData.apiKey) !== null && _formData$apiKey !== void 0 && _formData$apiKey.trim()) && !isAllowToSkipApiKey;
216
+ {
217
+ var _formData$apiKey, _formData$model, _formData$baseUrl;
218
+
219
+ var isCustom = (selectedProvider === null || selectedProvider === void 0 ? void 0 : selectedProvider.id) === 'custom';
220
+ var apiKeyMissing = !((_formData$apiKey = formData.apiKey) !== null && _formData$apiKey !== void 0 && _formData$apiKey.trim()) && !isAllowToSkipApiKey;
221
+ var modelMissing = !((_formData$model = formData.model) !== null && _formData$model !== void 0 && _formData$model.trim());
222
+ var baseUrlMissing = isCustom && !((_formData$baseUrl = formData.baseUrl) !== null && _formData$baseUrl !== void 0 && _formData$baseUrl.trim());
223
+ var modelUnsupported = (0, _helpers.checkIfModelUnsupported)(selectedProvider, formData.model);
224
+ return apiKeyMissing || modelMissing || baseUrlMissing || modelUnsupported;
225
+ }
216
226
 
217
227
  default:
218
228
  return false;
@@ -36,14 +36,13 @@ var styles = {
36
36
  "source-panel-footer": "styles__source-panel-footer___i_u77",
37
37
  "section-header": "styles__section-header___3qiTb",
38
38
  "nested-item": "styles__nested-item___1Guh8",
39
+ "drive-tree-item": "styles__drive-tree-item___30uL0",
39
40
  "clear-all-button": "styles__clear-all-button___2lTyP",
40
- "badge": "styles__badge___2cwf5",
41
41
  "date-label": "styles__date-label___3gPZY",
42
+ "mail-preview": "styles__mail-preview___Vm-RW",
42
43
  "chat-header-actions": "styles__chat-header-actions___2nLD5",
43
44
  "header-clear-all": "styles__header-clear-all___3dOMJ",
44
- "knowledge-chips-item": "styles__knowledge-chips-item___1BFkL",
45
- "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6",
46
- "knowledge-chips-counter": "styles__knowledge-chips-counter___3ldy5"
45
+ "knowledge-chips-icon": "styles__knowledge-chips-icon___2AIB6"
47
46
  };
48
47
 
49
48
  var ChatKnowledge = function ChatKnowledge(_ref) {