cozy-search 0.23.2 → 0.23.4
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/dist/components/AssistantProvider.d.ts +0 -13
- package/dist/components/AssistantProvider.js +26 -152
- package/dist/components/CozyAssistantRuntimeProvider.js +7 -1
- package/dist/components/Messages/AssistantMessage.js +16 -3
- package/dist/components/Search/AssistantLink.d.ts +3 -3
- package/dist/components/Search/AssistantLink.js +3 -26
- package/dist/components/adapters/CozyRealtimeChatAdapter.js +5 -0
- package/dist/components/adapters/StreamBridge.spec.ts +12 -0
- package/dist/components/helpers.d.ts +0 -2
- package/dist/components/helpers.js +1 -27
- package/package.json +3 -3
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
|
-
export interface AssistantState {
|
|
4
|
-
message: Record<string, string>
|
|
5
|
-
status: 'idle' | 'writing' | 'pending'
|
|
6
|
-
messagesId: string[]
|
|
7
|
-
}
|
|
8
|
-
|
|
9
3
|
export interface TwakeKnowledgeState {
|
|
10
4
|
drive: { id: string; name: string }[]
|
|
11
5
|
mail: { id: string; name: string }[]
|
|
@@ -13,7 +7,6 @@ export interface TwakeKnowledgeState {
|
|
|
13
7
|
}
|
|
14
8
|
|
|
15
9
|
export interface AssistantContextValue {
|
|
16
|
-
assistantState: AssistantState
|
|
17
10
|
isOpenCreateAssistant: boolean
|
|
18
11
|
isOpenDeleteAssistant: boolean
|
|
19
12
|
isOpenEditAssistant: boolean
|
|
@@ -24,12 +17,6 @@ export interface AssistantContextValue {
|
|
|
24
17
|
selectedTwakeKnowledge: TwakeKnowledgeState
|
|
25
18
|
setAssistantIdInAction: (id: string | null) => void
|
|
26
19
|
setIsOpenDeleteAssistant: (isOpen: boolean) => void
|
|
27
|
-
setAssistantState: React.Dispatch<React.SetStateAction<AssistantState>>
|
|
28
|
-
clearAssistant: () => void
|
|
29
|
-
onAssistantExecute: (
|
|
30
|
-
params: { value: string; conversationId: string },
|
|
31
|
-
callback?: () => void
|
|
32
|
-
) => Promise<void>
|
|
33
20
|
setIsOpenCreateAssistant: (isOpen: boolean) => void
|
|
34
21
|
setIsOpenEditAssistant: (isOpen: boolean) => void
|
|
35
22
|
setSelectedAssistantId: (id: string) => void
|
|
@@ -7,38 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.useAssistant = exports.default = exports.AssistantContext = void 0;
|
|
9
9
|
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
11
|
|
|
18
|
-
var _set = _interopRequireDefault(require("lodash/set"));
|
|
19
|
-
|
|
20
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
13
|
|
|
22
|
-
var _reactRouterDom = require("react-router-dom");
|
|
23
|
-
|
|
24
|
-
var _cozyClient = require("cozy-client");
|
|
25
|
-
|
|
26
|
-
var _useRealtime3 = _interopRequireDefault(require("cozy-realtime/dist/useRealtime"));
|
|
27
|
-
|
|
28
14
|
var _constants = require("./constants");
|
|
29
15
|
|
|
30
|
-
var _helpers = require("./helpers");
|
|
31
|
-
|
|
32
|
-
var _queries = require("./queries");
|
|
33
|
-
|
|
34
16
|
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); }
|
|
35
17
|
|
|
36
18
|
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; }
|
|
37
19
|
|
|
38
|
-
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; }
|
|
39
|
-
|
|
40
|
-
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; }
|
|
41
|
-
|
|
42
20
|
var AssistantContext = /*#__PURE__*/_react.default.createContext();
|
|
43
21
|
/**
|
|
44
22
|
* @returns {import('./AssistantProvider').AssistantContextValue}
|
|
@@ -62,153 +40,52 @@ exports.useAssistant = useAssistant;
|
|
|
62
40
|
var AssistantProvider = function AssistantProvider(_ref) {
|
|
63
41
|
var children = _ref.children;
|
|
64
42
|
|
|
65
|
-
var
|
|
66
|
-
conversationId = _useParams.conversationId;
|
|
67
|
-
|
|
68
|
-
var client = (0, _cozyClient.useClient)();
|
|
69
|
-
|
|
70
|
-
var _useState = (0, _react.useState)({
|
|
71
|
-
message: {},
|
|
72
|
-
status: 'idle',
|
|
73
|
-
messagesId: []
|
|
74
|
-
}),
|
|
43
|
+
var _useState = (0, _react.useState)(false),
|
|
75
44
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
76
|
-
|
|
77
|
-
|
|
45
|
+
isOpenCreateAssistant = _useState2[0],
|
|
46
|
+
setIsOpenCreateAssistant = _useState2[1];
|
|
78
47
|
|
|
79
48
|
var _useState3 = (0, _react.useState)(false),
|
|
80
49
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
81
|
-
|
|
82
|
-
|
|
50
|
+
isOpenDeleteAssistant = _useState4[0],
|
|
51
|
+
setIsOpenDeleteAssistant = _useState4[1];
|
|
83
52
|
|
|
84
53
|
var _useState5 = (0, _react.useState)(false),
|
|
85
54
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
86
|
-
|
|
87
|
-
|
|
55
|
+
isOpenEditAssistant = _useState6[0],
|
|
56
|
+
setIsOpenEditAssistant = _useState6[1];
|
|
88
57
|
|
|
89
|
-
var _useState7 = (0, _react.useState)(
|
|
58
|
+
var _useState7 = (0, _react.useState)(null),
|
|
90
59
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
91
|
-
|
|
92
|
-
|
|
60
|
+
assistantIdInAction = _useState8[0],
|
|
61
|
+
setAssistantIdInAction = _useState8[1];
|
|
93
62
|
|
|
94
|
-
var _useState9 = (0, _react.useState)(
|
|
63
|
+
var _useState9 = (0, _react.useState)(_constants.DEFAULT_ASSISTANT._id),
|
|
95
64
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
96
|
-
|
|
97
|
-
|
|
65
|
+
selectedAssistantId = _useState10[0],
|
|
66
|
+
setSelectedAssistantId = _useState10[1];
|
|
98
67
|
|
|
99
|
-
var _useState11 = (0, _react.useState)(
|
|
68
|
+
var _useState11 = (0, _react.useState)(false),
|
|
100
69
|
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var _useState13 = (0, _react.useState)(false),
|
|
105
|
-
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
106
|
-
isOpenSearchConversation = _useState14[0],
|
|
107
|
-
setIsOpenSearchConversation = _useState14[1];
|
|
70
|
+
isOpenSearchConversation = _useState12[0],
|
|
71
|
+
setIsOpenSearchConversation = _useState12[1];
|
|
108
72
|
|
|
109
|
-
var
|
|
73
|
+
var _useState13 = (0, _react.useState)({
|
|
110
74
|
drive: [],
|
|
111
75
|
mail: [],
|
|
112
76
|
chat: []
|
|
113
77
|
}),
|
|
78
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
79
|
+
selectedTwakeKnowledge = _useState14[0],
|
|
80
|
+
setSelectedTwakeKnowledge = _useState14[1];
|
|
81
|
+
|
|
82
|
+
var _useState15 = (0, _react.useState)(null),
|
|
114
83
|
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var _useState17 = (0, _react.useState)(null),
|
|
119
|
-
_useState18 = (0, _slicedToArray2.default)(_useState17, 2),
|
|
120
|
-
openedKnowledgePanel = _useState18[0],
|
|
121
|
-
setOpenedKnowledgePanel = _useState18[1];
|
|
122
|
-
|
|
123
|
-
(0, _useRealtime3.default)(client, (0, _defineProperty2.default)({}, _queries.CHAT_CONVERSATIONS_DOCTYPE, {
|
|
124
|
-
created: function created(res) {
|
|
125
|
-
(0, _helpers.pushMessagesIdInState)(conversationId, res, setAssistantState);
|
|
126
|
-
},
|
|
127
|
-
updated: function updated(res) {
|
|
128
|
-
(0, _helpers.pushMessagesIdInState)(conversationId, res, setAssistantState);
|
|
129
|
-
}
|
|
130
|
-
}), []);
|
|
131
|
-
(0, _useRealtime3.default)(client, (0, _defineProperty2.default)({}, _queries.CHAT_EVENTS_DOCTYPE, {
|
|
132
|
-
created: function created(res) {
|
|
133
|
-
setAssistantState(function (prevState) {
|
|
134
|
-
// to exclude realtime messages if not relevant to the actual conversation
|
|
135
|
-
if (!(0, _helpers.isMessageForThisConversation)(res, prevState.messagesId)) {
|
|
136
|
-
return prevState;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (res.object === 'done') {
|
|
140
|
-
if (prevState.status !== 'idle') {
|
|
141
|
-
return _objectSpread(_objectSpread({}, prevState), {}, {
|
|
142
|
-
status: 'idle'
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (res.object === 'delta') {
|
|
148
|
-
var message = (0, _set.default)(prevState.message, res.position, res.content);
|
|
149
|
-
return _objectSpread(_objectSpread({}, prevState), {}, {
|
|
150
|
-
message: message,
|
|
151
|
-
status: 'writing'
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return prevState;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}), []);
|
|
159
|
-
var clearAssistant = (0, _react.useCallback)(function () {
|
|
160
|
-
return setAssistantState({
|
|
161
|
-
message: {},
|
|
162
|
-
status: 'pending',
|
|
163
|
-
messagesId: []
|
|
164
|
-
});
|
|
165
|
-
}, []);
|
|
166
|
-
var onAssistantExecute = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
167
|
-
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref2, callback) {
|
|
168
|
-
var value, conversationId;
|
|
169
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
170
|
-
while (1) {
|
|
171
|
-
switch (_context.prev = _context.next) {
|
|
172
|
-
case 0:
|
|
173
|
-
value = _ref2.value, conversationId = _ref2.conversationId;
|
|
174
|
-
|
|
175
|
-
if (value) {
|
|
176
|
-
_context.next = 3;
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return _context.abrupt("return");
|
|
181
|
-
|
|
182
|
-
case 3:
|
|
183
|
-
callback === null || callback === void 0 ? void 0 : callback();
|
|
184
|
-
clearAssistant();
|
|
185
|
-
_context.next = 7;
|
|
186
|
-
return client.stackClient.fetchJSON('POST', "/ai/chat/conversations/".concat(conversationId), {
|
|
187
|
-
q: value
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
case 7:
|
|
191
|
-
setAssistantState(function (v) {
|
|
192
|
-
return _objectSpread(_objectSpread({}, v), {}, {
|
|
193
|
-
status: 'pending'
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
case 8:
|
|
198
|
-
case "end":
|
|
199
|
-
return _context.stop();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}, _callee);
|
|
203
|
-
}));
|
|
204
|
-
|
|
205
|
-
return function (_x, _x2) {
|
|
206
|
-
return _ref3.apply(this, arguments);
|
|
207
|
-
};
|
|
208
|
-
}(), [client, clearAssistant]);
|
|
84
|
+
openedKnowledgePanel = _useState16[0],
|
|
85
|
+
setOpenedKnowledgePanel = _useState16[1];
|
|
86
|
+
|
|
209
87
|
var value = (0, _react.useMemo)(function () {
|
|
210
88
|
return {
|
|
211
|
-
assistantState: assistantState,
|
|
212
89
|
isOpenCreateAssistant: isOpenCreateAssistant,
|
|
213
90
|
isOpenDeleteAssistant: isOpenDeleteAssistant,
|
|
214
91
|
isOpenEditAssistant: isOpenEditAssistant,
|
|
@@ -219,9 +96,6 @@ var AssistantProvider = function AssistantProvider(_ref) {
|
|
|
219
96
|
selectedTwakeKnowledge: selectedTwakeKnowledge,
|
|
220
97
|
setAssistantIdInAction: setAssistantIdInAction,
|
|
221
98
|
setIsOpenDeleteAssistant: setIsOpenDeleteAssistant,
|
|
222
|
-
setAssistantState: setAssistantState,
|
|
223
|
-
clearAssistant: clearAssistant,
|
|
224
|
-
onAssistantExecute: onAssistantExecute,
|
|
225
99
|
setIsOpenCreateAssistant: setIsOpenCreateAssistant,
|
|
226
100
|
setIsOpenEditAssistant: setIsOpenEditAssistant,
|
|
227
101
|
setSelectedAssistantId: setSelectedAssistantId,
|
|
@@ -229,7 +103,7 @@ var AssistantProvider = function AssistantProvider(_ref) {
|
|
|
229
103
|
setOpenedKnowledgePanel: setOpenedKnowledgePanel,
|
|
230
104
|
setSelectedTwakeKnowledge: setSelectedTwakeKnowledge
|
|
231
105
|
};
|
|
232
|
-
}, [
|
|
106
|
+
}, [isOpenCreateAssistant, isOpenDeleteAssistant, isOpenEditAssistant, assistantIdInAction, selectedAssistantId, isOpenSearchConversation, openedKnowledgePanel, selectedTwakeKnowledge]);
|
|
233
107
|
return /*#__PURE__*/_react.default.createElement(AssistantContext.Provider, {
|
|
234
108
|
value: value
|
|
235
109
|
}, children);
|
|
@@ -183,7 +183,7 @@ var CozyAssistantRuntimeProviderInner = function CozyAssistantRuntimeProviderInn
|
|
|
183
183
|
(0, _useRealtime3.default)(client, (0, _defineProperty2.default)({}, _queries.CHAT_EVENTS_DOCTYPE, {
|
|
184
184
|
created: function created(res) {
|
|
185
185
|
if (cancelledMessageIdsRef.current.has(res._id)) {
|
|
186
|
-
if (res.object === 'done') {
|
|
186
|
+
if (res.object === 'done' || res.object === 'error') {
|
|
187
187
|
cancelledMessageIdsRef.current.delete(res._id);
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -213,6 +213,12 @@ var CozyAssistantRuntimeProviderInner = function CozyAssistantRuntimeProviderInn
|
|
|
213
213
|
streamBridgeRef.current.onDone(conversationId);
|
|
214
214
|
currentStreamingMessageIdRef.current = null;
|
|
215
215
|
}
|
|
216
|
+
|
|
217
|
+
if (res.object === 'error') {
|
|
218
|
+
log.error('LLM error:', res.message);
|
|
219
|
+
streamBridgeRef.current.onError(conversationId, new Error('LLM error'));
|
|
220
|
+
currentStreamingMessageIdRef.current = null;
|
|
221
|
+
}
|
|
216
222
|
} catch (error) {
|
|
217
223
|
log.error('Error handling chat real-time event:', error);
|
|
218
224
|
}
|
|
@@ -11,6 +11,8 @@ var _react = require("@assistant-ui/react");
|
|
|
11
11
|
|
|
12
12
|
var _react2 = _interopRequireDefault(require("react"));
|
|
13
13
|
|
|
14
|
+
var _Alert = _interopRequireDefault(require("cozy-ui/transpiled/react/Alert"));
|
|
15
|
+
|
|
14
16
|
var _Box = _interopRequireDefault(require("cozy-ui/transpiled/react/Box"));
|
|
15
17
|
|
|
16
18
|
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
@@ -25,6 +27,14 @@ var _TwakeAssistantIcon = require("../AssistantIcon/TwakeAssistantIcon");
|
|
|
25
27
|
|
|
26
28
|
var _Sources = _interopRequireDefault(require("../Conversations/Sources/Sources"));
|
|
27
29
|
|
|
30
|
+
var useIsErrorMessage = function useIsErrorMessage() {
|
|
31
|
+
return (0, _react.useMessage)(function (s) {
|
|
32
|
+
var _s$metadata, _s$metadata$custom;
|
|
33
|
+
|
|
34
|
+
return ((_s$metadata = s.metadata) === null || _s$metadata === void 0 ? void 0 : (_s$metadata$custom = _s$metadata.custom) === null || _s$metadata$custom === void 0 ? void 0 : _s$metadata$custom.isError) === true;
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
28
38
|
var AssistantMessage = function AssistantMessage() {
|
|
29
39
|
var _useI18n = (0, _twakeI18n.useI18n)(),
|
|
30
40
|
t = _useI18n.t;
|
|
@@ -34,13 +44,14 @@ var AssistantMessage = function AssistantMessage() {
|
|
|
34
44
|
|
|
35
45
|
return ((_s$status = s.status) === null || _s$status === void 0 ? void 0 : _s$status.type) === 'requires-action';
|
|
36
46
|
});
|
|
47
|
+
var isError = useIsErrorMessage();
|
|
37
48
|
var messageId = (0, _react.useMessage)(function (s) {
|
|
38
49
|
return s.id;
|
|
39
50
|
});
|
|
40
51
|
var sources = (0, _react.useMessage)(function (s) {
|
|
41
|
-
var _s$
|
|
52
|
+
var _s$metadata2, _s$metadata2$custom;
|
|
42
53
|
|
|
43
|
-
return (_s$
|
|
54
|
+
return (_s$metadata2 = s.metadata) === null || _s$metadata2 === void 0 ? void 0 : (_s$metadata2$custom = _s$metadata2.custom) === null || _s$metadata2$custom === void 0 ? void 0 : _s$metadata2$custom.sources;
|
|
44
55
|
});
|
|
45
56
|
return /*#__PURE__*/_react2.default.createElement(_react.MessagePrimitive.Root, {
|
|
46
57
|
className: "u-mt-1-half u-mr-3"
|
|
@@ -56,7 +67,9 @@ var AssistantMessage = function AssistantMessage() {
|
|
|
56
67
|
}), /*#__PURE__*/_react2.default.createElement(_Typography.default, {
|
|
57
68
|
variant: "h6",
|
|
58
69
|
display: "inline"
|
|
59
|
-
}, t('assistant.message.running'))), /*#__PURE__*/_react2.default.createElement(
|
|
70
|
+
}, t('assistant.message.running'))), isError ? /*#__PURE__*/_react2.default.createElement(_Alert.default, {
|
|
71
|
+
severity: "error"
|
|
72
|
+
}, t('assistant.default_error')) : /*#__PURE__*/_react2.default.createElement(_react.MessagePrimitive.Content, {
|
|
60
73
|
components: {
|
|
61
74
|
Text: _MarkdownText.default
|
|
62
75
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default
|
|
2
|
-
declare function
|
|
1
|
+
export default AssistantLink;
|
|
2
|
+
declare function AssistantLink({ children }: {
|
|
3
3
|
children: any;
|
|
4
|
-
}):
|
|
4
|
+
}): any;
|
|
@@ -1,30 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.default = void 0;
|
|
9
7
|
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
8
|
var _reactRouterDom = require("react-router-dom");
|
|
13
9
|
|
|
14
|
-
var _AssistantProvider = _interopRequireWildcard(require("../AssistantProvider"));
|
|
15
|
-
|
|
16
10
|
var _helpers = require("../helpers");
|
|
17
11
|
|
|
18
|
-
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); }
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
|
|
22
12
|
var AssistantLink = function AssistantLink(_ref) {
|
|
23
13
|
var children = _ref.children;
|
|
24
|
-
|
|
25
|
-
var _useAssistant = (0, _AssistantProvider.useAssistant)(),
|
|
26
|
-
onAssistantExecute = _useAssistant.onAssistantExecute;
|
|
27
|
-
|
|
28
14
|
var navigate = (0, _reactRouterDom.useNavigate)();
|
|
29
15
|
|
|
30
16
|
var _useLocation = (0, _reactRouterDom.useLocation)(),
|
|
@@ -33,22 +19,13 @@ var AssistantLink = function AssistantLink(_ref) {
|
|
|
33
19
|
var openAssistant = function openAssistant() {
|
|
34
20
|
if (!(0, _helpers.isAssistantEnabled)()) return;
|
|
35
21
|
var conversationId = (0, _helpers.makeConversationId)();
|
|
36
|
-
onAssistantExecute({
|
|
37
|
-
value: '',
|
|
38
|
-
conversationId: conversationId
|
|
39
|
-
});
|
|
40
22
|
navigate("assistant/".concat(conversationId, "?returnPath=").concat(pathname));
|
|
41
23
|
};
|
|
42
24
|
|
|
43
|
-
return
|
|
25
|
+
return children({
|
|
44
26
|
openAssistant: openAssistant
|
|
45
|
-
})
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
var AssistantLinkWrapper = function AssistantLinkWrapper(_ref2) {
|
|
49
|
-
var children = _ref2.children;
|
|
50
|
-
return /*#__PURE__*/_react.default.createElement(_AssistantProvider.default, null, /*#__PURE__*/_react.default.createElement(AssistantLink, null, children));
|
|
27
|
+
});
|
|
51
28
|
};
|
|
52
29
|
|
|
53
|
-
var _default =
|
|
30
|
+
var _default = AssistantLink;
|
|
54
31
|
exports.default = _default;
|
|
@@ -48,6 +48,18 @@ describe('StreamBridge', () => {
|
|
|
48
48
|
await expect(iterator.next()).rejects.toThrow('Socket disconnected')
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
+
it('should reject the iterator when an error occurs mid-stream', async () => {
|
|
52
|
+
const iterator = bridge.createStream('convo_1')
|
|
53
|
+
|
|
54
|
+
bridge.onDelta('convo_1', 'partial ')
|
|
55
|
+
const first = await iterator.next()
|
|
56
|
+
expect(first).toEqual({ value: 'partial ', done: false })
|
|
57
|
+
|
|
58
|
+
bridge.onError('convo_1', new Error('LLM unavailable'))
|
|
59
|
+
|
|
60
|
+
await expect(iterator.next()).rejects.toThrow('LLM unavailable')
|
|
61
|
+
})
|
|
62
|
+
|
|
51
63
|
it('should call the cleanup callback and mark the stream complete on cleanup', async () => {
|
|
52
64
|
const cleanupSpy = jest.fn()
|
|
53
65
|
bridge.setCleanupCallback(cleanupSpy)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export function makeConversationId(): string;
|
|
2
|
-
export function pushMessagesIdInState(id: any, res: any, setState: any): void;
|
|
3
|
-
export function isMessageForThisConversation(res: any, messagesId: any): any;
|
|
4
2
|
export function isAssistantEnabled(): any;
|
|
5
3
|
export function sanitizeChatContent(content: string): string;
|
|
6
4
|
export function formatConversationDate(dateString: any, t: any, lang: any): string;
|
|
@@ -5,42 +5,16 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.sanitizeChatContent = exports.
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
exports.sanitizeChatContent = exports.makeConversationId = exports.isAssistantEnabled = exports.getNameOfConversation = exports.getDescriptionOfConversation = exports.formatConversationDate = void 0;
|
|
11
9
|
|
|
12
10
|
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
13
11
|
|
|
14
|
-
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; }
|
|
15
|
-
|
|
16
|
-
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; }
|
|
17
|
-
|
|
18
12
|
var makeConversationId = function makeConversationId() {
|
|
19
13
|
return "".concat(Date.now(), "-").concat(Math.floor(Math.random() * 90000) + 10000);
|
|
20
14
|
};
|
|
21
15
|
|
|
22
16
|
exports.makeConversationId = makeConversationId;
|
|
23
17
|
|
|
24
|
-
var pushMessagesIdInState = function pushMessagesIdInState(id, res, setState) {
|
|
25
|
-
if (id !== res._id) return;
|
|
26
|
-
var messagesId = res.messages.map(function (message) {
|
|
27
|
-
return message.id;
|
|
28
|
-
});
|
|
29
|
-
setState(function (v) {
|
|
30
|
-
return _objectSpread(_objectSpread({}, v), {}, {
|
|
31
|
-
messagesId: messagesId
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
exports.pushMessagesIdInState = pushMessagesIdInState;
|
|
37
|
-
|
|
38
|
-
var isMessageForThisConversation = function isMessageForThisConversation(res, messagesId) {
|
|
39
|
-
return messagesId.includes(res._id);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
exports.isMessageForThisConversation = isMessageForThisConversation;
|
|
43
|
-
|
|
44
18
|
var isAssistantEnabled = function isAssistantEnabled() {
|
|
45
19
|
return (0, _cozyFlags.default)('cozy.assistant.enabled');
|
|
46
20
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cozy-search",
|
|
3
3
|
"description": "UI components about search bar and IA assistant",
|
|
4
|
-
"version": "0.23.
|
|
4
|
+
"version": "0.23.4",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cozy Cloud",
|
|
7
7
|
"url": "https://github.com/cozy"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"cozy-pouch-link": "^54.0.0",
|
|
37
37
|
"cozy-realtime": "^5.9.1",
|
|
38
38
|
"cozy-ui": "^137.0.1",
|
|
39
|
-
"cozy-ui-plus": "^
|
|
39
|
+
"cozy-ui-plus": "^6.0.0",
|
|
40
40
|
"cross-fetch": "^4.0.0",
|
|
41
41
|
"jest": "30.3.0",
|
|
42
42
|
"react": "18.2.0",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
"lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
|
|
95
95
|
},
|
|
96
96
|
"types": "dist/index.d.ts",
|
|
97
|
-
"gitHead": "
|
|
97
|
+
"gitHead": "4c152ef7f2acafb450df245f5ce58638cbdb6be3"
|
|
98
98
|
}
|