cozy-search 0.23.0 → 0.23.2
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/Assistant/AssistantContainer.js +1 -1
- package/dist/components/Conversations/ConversationActions.js +1 -1
- package/dist/components/Conversations/ConversationComposer.js +2 -2
- package/dist/components/Conversations/Sources/Sources.js +11 -1
- package/dist/components/CozyAssistantRuntimeProvider.js +4 -0
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/adapters/CozyRealtimeChatAdapter.js +26 -13
- package/dist/components/adapters/StreamBridge.d.ts +16 -0
- package/dist/components/adapters/StreamBridge.js +29 -4
- package/package.json +2 -2
|
@@ -59,7 +59,7 @@ var AssistantContainer = function AssistantContainer() {
|
|
|
59
59
|
className: "u-w-5 u-pb-0-t u-pb-1"
|
|
60
60
|
}), /*#__PURE__*/_react.default.createElement(_PrettyScrollbar.default, {
|
|
61
61
|
className: "u-flex-auto u-flex u-flex-column u-pb-0-t u-pb-1 u-ov-hidden"
|
|
62
|
-
}, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))), openedKnowledgePanel && (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react.default.createElement("div", {
|
|
62
|
+
}, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.assistant.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))), openedKnowledgePanel && (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled') && /*#__PURE__*/_react.default.createElement("div", {
|
|
63
63
|
className: (0, _classnames.default)('u-h-100 u-maw-7 u-pl-half', styles["knowledge-panel--".concat(theme)])
|
|
64
64
|
}, /*#__PURE__*/_react.default.createElement(_TwakeKnowledgePanel.default, {
|
|
65
65
|
onClose: function onClose() {
|
|
@@ -182,7 +182,7 @@ var ConversationActions = function ConversationActions(_ref) {
|
|
|
182
182
|
};
|
|
183
183
|
}();
|
|
184
184
|
|
|
185
|
-
var actions = (0, _Actions.makeActions)([_rename.rename, (0, _cozyFlags.default)('cozy.conversation-sharing.enabled') && _share.share, _delete.remove].filter(Boolean), {
|
|
185
|
+
var actions = (0, _Actions.makeActions)([_rename.rename, (0, _cozyFlags.default)('cozy.assistant.conversation-sharing.enabled') && _share.share, _delete.remove].filter(Boolean), {
|
|
186
186
|
t: t,
|
|
187
187
|
onRename: handleOpenRename,
|
|
188
188
|
onDelete: function onDelete() {
|
|
@@ -83,9 +83,9 @@ var ConversationComposer = function ConversationComposer() {
|
|
|
83
83
|
onSend: handleSend
|
|
84
84
|
}), /*#__PURE__*/_react2.default.createElement("div", {
|
|
85
85
|
className: "u-flex u-flex-items-center u-flex-justify-between u-mt-1"
|
|
86
|
-
}, (0, _cozyFlags.default)('cozy.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
|
|
86
|
+
}, (0, _cozyFlags.default)('cozy.assistant.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
|
|
87
87
|
disabled: !isThreadEmpty
|
|
88
|
-
}), (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
|
|
88
|
+
}), (0, _cozyFlags.default)('cozy.assistant.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
|
|
89
89
|
onSelectTwakeKnowledge: setOpenedKnowledgePanel
|
|
90
90
|
})));
|
|
91
91
|
};
|
|
@@ -70,8 +70,18 @@ var Sources = function Sources(_ref) {
|
|
|
70
70
|
}, []);
|
|
71
71
|
(0, _react.useEffect)(function () {
|
|
72
72
|
if (showSources) {
|
|
73
|
+
var _ref$current2;
|
|
74
|
+
|
|
75
|
+
var innerContainer = (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.closest('.cozyDialogContent');
|
|
76
|
+
|
|
77
|
+
if (!innerContainer) {
|
|
78
|
+
var _ref$current3;
|
|
79
|
+
|
|
80
|
+
(_ref$current3 = ref.current) === null || _ref$current3 === void 0 ? void 0 : _ref$current3.scrollIntoView(false);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
73
84
|
var sourcesBottom = ref.current.getBoundingClientRect().bottom;
|
|
74
|
-
var innerContainer = document.getElementsByClassName('cozyDialogContent')[0];
|
|
75
85
|
var innerContainerBottom = innerContainer.getBoundingClientRect().bottom;
|
|
76
86
|
|
|
77
87
|
if (sourcesBottom > innerContainerBottom) {
|
|
@@ -205,6 +205,10 @@ var CozyAssistantRuntimeProviderInner = function CozyAssistantRuntimeProviderInn
|
|
|
205
205
|
streamBridgeRef.current.onDelta(conversationId, res.content, res.position);
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
if (res.object === 'sources') {
|
|
209
|
+
streamBridgeRef.current.onSources(conversationId, res.content);
|
|
210
|
+
}
|
|
211
|
+
|
|
208
212
|
if (res.object === 'done') {
|
|
209
213
|
streamBridgeRef.current.onDone(conversationId);
|
|
210
214
|
currentStreamingMessageIdRef.current = null;
|
|
@@ -128,7 +128,7 @@ var Sidebar = function Sidebar(_ref) {
|
|
|
128
128
|
icon: _Burger.default,
|
|
129
129
|
"aria-hidden": "true"
|
|
130
130
|
})
|
|
131
|
-
})), /*#__PURE__*/_react.default.createElement("div", null, sidebarOpen && (0, _cozyFlags.default)('cozy.search-conversation.enabled') && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
131
|
+
})), /*#__PURE__*/_react.default.createElement("div", null, sidebarOpen && (0, _cozyFlags.default)('cozy.assistant.search-conversation.enabled') && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
132
132
|
size: "medium",
|
|
133
133
|
className: "u-bdrs-6",
|
|
134
134
|
onClick: onToggleSearch,
|
|
@@ -9,6 +9,8 @@ exports.createCozyRealtimeChatAdapter = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
12
14
|
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
13
15
|
|
|
14
16
|
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
@@ -17,6 +19,10 @@ var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
|
|
|
17
19
|
|
|
18
20
|
var _helpers = require("../helpers");
|
|
19
21
|
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
20
26
|
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
21
27
|
|
|
22
28
|
function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
|
|
@@ -58,7 +64,7 @@ var createCozyRealtimeChatAdapter = function createCozyRealtimeChatAdapter(optio
|
|
|
58
64
|
var messages = _ref.messages,
|
|
59
65
|
abortSignal = _ref.abortSignal;
|
|
60
66
|
return (0, _wrapAsyncGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
61
|
-
var client, conversationId, streamBridge, assistantId, userQuery, stream, fullText, wasAborted, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, sanitizedText, finalText;
|
|
67
|
+
var client, conversationId, streamBridge, assistantId, userQuery, stream, fullText, wasAborted, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, sanitizedText, finalText, sources;
|
|
62
68
|
|
|
63
69
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
64
70
|
while (1) {
|
|
@@ -185,13 +191,14 @@ var createCozyRealtimeChatAdapter = function createCozyRealtimeChatAdapter(optio
|
|
|
185
191
|
|
|
186
192
|
case 48:
|
|
187
193
|
if (wasAborted) {
|
|
188
|
-
_context.next =
|
|
194
|
+
_context.next = 54;
|
|
189
195
|
break;
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
finalText = (0, _helpers.sanitizeChatContent)(fullText);
|
|
193
|
-
|
|
194
|
-
|
|
199
|
+
sources = streamBridge.getSources(conversationId);
|
|
200
|
+
_context.next = 53;
|
|
201
|
+
return _objectSpread({
|
|
195
202
|
content: [{
|
|
196
203
|
type: 'text',
|
|
197
204
|
text: finalText
|
|
@@ -200,21 +207,27 @@ var createCozyRealtimeChatAdapter = function createCozyRealtimeChatAdapter(optio
|
|
|
200
207
|
type: 'complete',
|
|
201
208
|
reason: 'stop'
|
|
202
209
|
}
|
|
203
|
-
}
|
|
210
|
+
}, sources ? {
|
|
211
|
+
metadata: {
|
|
212
|
+
custom: {
|
|
213
|
+
sources: sources
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
} : {});
|
|
204
217
|
|
|
205
|
-
case
|
|
218
|
+
case 53:
|
|
206
219
|
streamBridge.cleanup(conversationId);
|
|
207
220
|
|
|
208
|
-
case
|
|
209
|
-
_context.next =
|
|
221
|
+
case 54:
|
|
222
|
+
_context.next = 62;
|
|
210
223
|
break;
|
|
211
224
|
|
|
212
|
-
case
|
|
213
|
-
_context.prev =
|
|
225
|
+
case 56:
|
|
226
|
+
_context.prev = 56;
|
|
214
227
|
_context.t1 = _context["catch"](6);
|
|
215
228
|
log.error('Error:', _context.t1);
|
|
216
229
|
streamBridge.cleanup(conversationId);
|
|
217
|
-
_context.next =
|
|
230
|
+
_context.next = 62;
|
|
218
231
|
return {
|
|
219
232
|
content: [{
|
|
220
233
|
type: 'text',
|
|
@@ -226,12 +239,12 @@ var createCozyRealtimeChatAdapter = function createCozyRealtimeChatAdapter(optio
|
|
|
226
239
|
}
|
|
227
240
|
};
|
|
228
241
|
|
|
229
|
-
case
|
|
242
|
+
case 62:
|
|
230
243
|
case "end":
|
|
231
244
|
return _context.stop();
|
|
232
245
|
}
|
|
233
246
|
}
|
|
234
|
-
}, _callee, null, [[6,
|
|
247
|
+
}, _callee, null, [[6, 56], [15, 34, 38, 48], [39,, 43, 47]]);
|
|
235
248
|
}))();
|
|
236
249
|
}
|
|
237
250
|
};
|
|
@@ -10,6 +10,7 @@ export declare class StreamBridge {
|
|
|
10
10
|
private cleanupCallback;
|
|
11
11
|
private positionBuffers;
|
|
12
12
|
private nextPositions;
|
|
13
|
+
private sourcesMap;
|
|
13
14
|
/**
|
|
14
15
|
* Sets a callback to be invoked when cleanup is called.
|
|
15
16
|
* This allows the provider to mark the current message as cancelled.
|
|
@@ -31,6 +32,21 @@ export declare class StreamBridge {
|
|
|
31
32
|
* Completes the stream for the conversation.
|
|
32
33
|
*/
|
|
33
34
|
onDone(conversationId: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Called when a 'sources' event is received from WebSocket.
|
|
37
|
+
* Stores sources for the conversation to be retrieved by the adapter.
|
|
38
|
+
*/
|
|
39
|
+
onSources(conversationId: string, sources: Array<{
|
|
40
|
+
id: string;
|
|
41
|
+
doctype?: string;
|
|
42
|
+
}>): void;
|
|
43
|
+
/**
|
|
44
|
+
* Returns stored sources for a conversation.
|
|
45
|
+
*/
|
|
46
|
+
getSources(conversationId: string): Array<{
|
|
47
|
+
id: string;
|
|
48
|
+
doctype?: string;
|
|
49
|
+
}> | undefined;
|
|
34
50
|
/**
|
|
35
51
|
* Called when an error occurs.
|
|
36
52
|
* Errors the stream for the conversation.
|
|
@@ -27,6 +27,7 @@ var StreamBridge = /*#__PURE__*/function () {
|
|
|
27
27
|
(0, _defineProperty2.default)(this, "cleanupCallback", null);
|
|
28
28
|
(0, _defineProperty2.default)(this, "positionBuffers", new Map());
|
|
29
29
|
(0, _defineProperty2.default)(this, "nextPositions", new Map());
|
|
30
|
+
(0, _defineProperty2.default)(this, "sourcesMap", new Map());
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
(0, _createClass2.default)(StreamBridge, [{
|
|
@@ -200,6 +201,26 @@ var StreamBridge = /*#__PURE__*/function () {
|
|
|
200
201
|
this.nextPositions.delete(conversationId);
|
|
201
202
|
}
|
|
202
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Called when a 'sources' event is received from WebSocket.
|
|
206
|
+
* Stores sources for the conversation to be retrieved by the adapter.
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
}, {
|
|
210
|
+
key: "onSources",
|
|
211
|
+
value: function onSources(conversationId, sources) {
|
|
212
|
+
if (!this.streams.has(conversationId)) return;
|
|
213
|
+
this.sourcesMap.set(conversationId, sources);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Returns stored sources for a conversation.
|
|
217
|
+
*/
|
|
218
|
+
|
|
219
|
+
}, {
|
|
220
|
+
key: "getSources",
|
|
221
|
+
value: function getSources(conversationId) {
|
|
222
|
+
return this.sourcesMap.get(conversationId);
|
|
223
|
+
}
|
|
203
224
|
/**
|
|
204
225
|
* Called when an error occurs.
|
|
205
226
|
* Errors the stream for the conversation.
|
|
@@ -212,9 +233,11 @@ var StreamBridge = /*#__PURE__*/function () {
|
|
|
212
233
|
|
|
213
234
|
if (stream) {
|
|
214
235
|
stream.error(error);
|
|
215
|
-
this.positionBuffers.delete(conversationId);
|
|
216
|
-
this.nextPositions.delete(conversationId);
|
|
217
236
|
}
|
|
237
|
+
|
|
238
|
+
this.positionBuffers.delete(conversationId);
|
|
239
|
+
this.nextPositions.delete(conversationId);
|
|
240
|
+
this.sourcesMap.delete(conversationId);
|
|
218
241
|
}
|
|
219
242
|
/**
|
|
220
243
|
* Cleans up the stream for a conversation.
|
|
@@ -233,9 +256,11 @@ var StreamBridge = /*#__PURE__*/function () {
|
|
|
233
256
|
|
|
234
257
|
stream.complete();
|
|
235
258
|
this.streams.delete(conversationId);
|
|
236
|
-
this.positionBuffers.delete(conversationId);
|
|
237
|
-
this.nextPositions.delete(conversationId);
|
|
238
259
|
}
|
|
260
|
+
|
|
261
|
+
this.positionBuffers.delete(conversationId);
|
|
262
|
+
this.nextPositions.delete(conversationId);
|
|
263
|
+
this.sourcesMap.delete(conversationId);
|
|
239
264
|
}
|
|
240
265
|
/**
|
|
241
266
|
* Checks if there's an active stream for a conversation.
|
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.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cozy Cloud",
|
|
7
7
|
"url": "https://github.com/cozy"
|
|
@@ -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": "447d3d18c58cda9265ae8f73733993ea05be9fbb"
|
|
98
98
|
}
|