cozy-search 2.3.3 → 2.5.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.
- package/README.md +18 -4
- package/dist/components/Assistant/AssistantContainer.js +3 -0
- package/dist/components/KnowledgeBase/autoprovision.d.ts +15 -0
- package/dist/components/KnowledgeBase/autoprovision.js +195 -0
- package/dist/components/KnowledgeBase/autoprovision.spec.d.ts +1 -0
- package/dist/components/KnowledgeBase/autoprovision.spec.js +199 -0
- package/dist/components/KnowledgeBase/provisioning.d.ts +4 -2
- package/dist/components/KnowledgeBase/provisioning.js +125 -84
- package/dist/components/KnowledgeBase/provisioning.spec.js +53 -1
- package/dist/components/KnowledgeBase/ragIndexing.d.ts +3 -1
- package/dist/components/KnowledgeBase/ragIndexing.js +123 -65
- package/dist/components/KnowledgeBase/ragIndexing.spec.js +51 -0
- package/dist/components/KnowledgeBase/useAssistantsAutoprovision.d.ts +1 -0
- package/dist/components/KnowledgeBase/useAssistantsAutoprovision.js +25 -0
- package/dist/components/KnowledgeBase/useAssistantsAutoprovision.spec.d.ts +1 -0
- package/dist/components/KnowledgeBase/useAssistantsAutoprovision.spec.js +33 -0
- package/dist/components/KnowledgeBase/useRagIndexTriggers.d.ts +1 -0
- package/dist/components/KnowledgeBase/useRagIndexTriggers.js +27 -0
- package/dist/components/KnowledgeBase/useRagIndexTriggers.spec.d.ts +1 -0
- package/dist/components/KnowledgeBase/useRagIndexTriggers.spec.js +47 -0
- package/dist/components/queries.js +1 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +31 -1
- package/package.json +2 -2
|
@@ -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.setupRagIndexing = exports.migrateAssistantsWithoutFolder = exports.makeRagIndexTriggerAttributes = exports.findRagIndexTriggers = exports.RAG_INDEX_WORKER = exports.RAG_INDEX_FILES_DEBOUNCE = void 0;
|
|
8
|
+
exports.setupRagIndexing = exports.migrateAssistantsWithoutFolder = exports.makeRagIndexTriggerAttributes = exports.findRagIndexTriggers = exports.fetchAssistants = exports.createRagIndexTriggers = exports.RAG_INDEX_WORKER = exports.RAG_INDEX_FILES_DEBOUNCE = void 0;
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
@@ -154,39 +154,61 @@ var findRagIndexTriggers = /*#__PURE__*/function () {
|
|
|
154
154
|
return _ref.apply(this, arguments);
|
|
155
155
|
};
|
|
156
156
|
}();
|
|
157
|
+
|
|
158
|
+
exports.findRagIndexTriggers = findRagIndexTriggers;
|
|
159
|
+
|
|
160
|
+
var fetchAssistants = function fetchAssistants(client) {
|
|
161
|
+
var _buildAllAssistantsQu = (0, _queries.buildAllAssistantsQuery)(),
|
|
162
|
+
definition = _buildAllAssistantsQu.definition,
|
|
163
|
+
options = _buildAllAssistantsQu.options;
|
|
164
|
+
|
|
165
|
+
return client.queryAll(definition(), options);
|
|
166
|
+
};
|
|
157
167
|
/**
|
|
158
168
|
* Gives the root folder to every assistant without a knowledge base
|
|
159
169
|
* folder (the rule is permanent: an assistant always has one). A conflict
|
|
160
170
|
* on one assistant means another session did it: skipped.
|
|
171
|
+
* @param {import('cozy-client').CozyClient} client - The cozy client.
|
|
172
|
+
* @param {Array<object>} [assistants] - The assistants, when already fetched.
|
|
161
173
|
* @returns {Promise<string[]>} The ids of the migrated assistants.
|
|
162
174
|
*/
|
|
163
175
|
|
|
164
176
|
|
|
165
|
-
exports.
|
|
177
|
+
exports.fetchAssistants = fetchAssistants;
|
|
166
178
|
|
|
167
179
|
var migrateAssistantsWithoutFolder = /*#__PURE__*/function () {
|
|
168
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client) {
|
|
169
|
-
var migrated,
|
|
180
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, assistants) {
|
|
181
|
+
var migrated, _iterator2, _step2, assistant, knowledgeBase;
|
|
170
182
|
|
|
171
183
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
172
184
|
while (1) {
|
|
173
185
|
switch (_context2.prev = _context2.next) {
|
|
174
186
|
case 0:
|
|
175
187
|
migrated = [];
|
|
176
|
-
|
|
177
|
-
_context2.
|
|
178
|
-
return client.queryAll(definition(), options);
|
|
188
|
+
_context2.t0 = _createForOfIteratorHelper;
|
|
189
|
+
_context2.t1 = assistants;
|
|
179
190
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
191
|
+
if (_context2.t1) {
|
|
192
|
+
_context2.next = 7;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
_context2.next = 6;
|
|
197
|
+
return fetchAssistants(client);
|
|
198
|
+
|
|
199
|
+
case 6:
|
|
200
|
+
_context2.t1 = _context2.sent;
|
|
201
|
+
|
|
202
|
+
case 7:
|
|
203
|
+
_context2.t2 = _context2.t1;
|
|
204
|
+
_iterator2 = (0, _context2.t0)(_context2.t2);
|
|
205
|
+
_context2.prev = 9;
|
|
184
206
|
|
|
185
207
|
_iterator2.s();
|
|
186
208
|
|
|
187
|
-
case
|
|
209
|
+
case 11:
|
|
188
210
|
if ((_step2 = _iterator2.n()).done) {
|
|
189
|
-
_context2.next =
|
|
211
|
+
_context2.next = 28;
|
|
190
212
|
break;
|
|
191
213
|
}
|
|
192
214
|
|
|
@@ -194,68 +216,68 @@ var migrateAssistantsWithoutFolder = /*#__PURE__*/function () {
|
|
|
194
216
|
knowledgeBase = (0, _knowledgeBase.withRootFolderIfMissing)(assistant.knowledgeBase);
|
|
195
217
|
|
|
196
218
|
if (!(knowledgeBase === assistant.knowledgeBase)) {
|
|
197
|
-
_context2.next =
|
|
219
|
+
_context2.next = 16;
|
|
198
220
|
break;
|
|
199
221
|
}
|
|
200
222
|
|
|
201
|
-
return _context2.abrupt("continue",
|
|
223
|
+
return _context2.abrupt("continue", 26);
|
|
202
224
|
|
|
203
|
-
case
|
|
204
|
-
_context2.prev =
|
|
205
|
-
_context2.next =
|
|
225
|
+
case 16:
|
|
226
|
+
_context2.prev = 16;
|
|
227
|
+
_context2.next = 19;
|
|
206
228
|
return client.save(_objectSpread(_objectSpread({}, assistant), {}, {
|
|
207
229
|
knowledgeBase: knowledgeBase
|
|
208
230
|
}));
|
|
209
231
|
|
|
210
|
-
case
|
|
232
|
+
case 19:
|
|
211
233
|
migrated.push(assistant._id);
|
|
212
|
-
_context2.next =
|
|
234
|
+
_context2.next = 26;
|
|
213
235
|
break;
|
|
214
236
|
|
|
215
|
-
case
|
|
216
|
-
_context2.prev =
|
|
217
|
-
_context2.
|
|
237
|
+
case 22:
|
|
238
|
+
_context2.prev = 22;
|
|
239
|
+
_context2.t3 = _context2["catch"](16);
|
|
218
240
|
|
|
219
|
-
if (!((_context2.
|
|
220
|
-
_context2.next =
|
|
241
|
+
if (!((_context2.t3 === null || _context2.t3 === void 0 ? void 0 : _context2.t3.status) !== 409)) {
|
|
242
|
+
_context2.next = 26;
|
|
221
243
|
break;
|
|
222
244
|
}
|
|
223
245
|
|
|
224
|
-
throw _context2.
|
|
246
|
+
throw _context2.t3;
|
|
225
247
|
|
|
226
|
-
case
|
|
227
|
-
_context2.next =
|
|
248
|
+
case 26:
|
|
249
|
+
_context2.next = 11;
|
|
228
250
|
break;
|
|
229
251
|
|
|
230
|
-
case
|
|
231
|
-
_context2.next =
|
|
252
|
+
case 28:
|
|
253
|
+
_context2.next = 33;
|
|
232
254
|
break;
|
|
233
255
|
|
|
234
|
-
case 27:
|
|
235
|
-
_context2.prev = 27;
|
|
236
|
-
_context2.t1 = _context2["catch"](6);
|
|
237
|
-
|
|
238
|
-
_iterator2.e(_context2.t1);
|
|
239
|
-
|
|
240
256
|
case 30:
|
|
241
257
|
_context2.prev = 30;
|
|
258
|
+
_context2.t4 = _context2["catch"](9);
|
|
259
|
+
|
|
260
|
+
_iterator2.e(_context2.t4);
|
|
261
|
+
|
|
262
|
+
case 33:
|
|
263
|
+
_context2.prev = 33;
|
|
242
264
|
|
|
243
265
|
_iterator2.f();
|
|
244
266
|
|
|
245
|
-
return _context2.finish(
|
|
267
|
+
return _context2.finish(33);
|
|
246
268
|
|
|
247
|
-
case
|
|
269
|
+
case 36:
|
|
248
270
|
return _context2.abrupt("return", migrated);
|
|
249
271
|
|
|
250
|
-
case
|
|
272
|
+
case 37:
|
|
251
273
|
case "end":
|
|
252
274
|
return _context2.stop();
|
|
253
275
|
}
|
|
254
276
|
}
|
|
255
|
-
}, _callee2, null, [[
|
|
277
|
+
}, _callee2, null, [[9, 30, 33, 36], [16, 22]]);
|
|
256
278
|
}));
|
|
257
279
|
|
|
258
|
-
return function migrateAssistantsWithoutFolder(_x2) {
|
|
280
|
+
return function migrateAssistantsWithoutFolder(_x2, _x3) {
|
|
259
281
|
return _ref2.apply(this, arguments);
|
|
260
282
|
};
|
|
261
283
|
}();
|
|
@@ -336,10 +358,44 @@ var ensureTriggers = /*#__PURE__*/function () {
|
|
|
336
358
|
}, _callee3, null, [[15, 20]]);
|
|
337
359
|
}));
|
|
338
360
|
|
|
339
|
-
return function ensureTriggers(
|
|
361
|
+
return function ensureTriggers(_x4, _x5) {
|
|
340
362
|
return _ref3.apply(this, arguments);
|
|
341
363
|
};
|
|
342
364
|
}();
|
|
365
|
+
/**
|
|
366
|
+
* Creates the rag-index triggers the instance lacks, and launches the
|
|
367
|
+
* files one when it is created.
|
|
368
|
+
* @param {import('cozy-client').CozyClient} client - The cozy client.
|
|
369
|
+
* @returns {Promise<string[]>} The `arguments` of the triggers created.
|
|
370
|
+
*/
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
var createRagIndexTriggers = /*#__PURE__*/function () {
|
|
374
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(client) {
|
|
375
|
+
var created;
|
|
376
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
377
|
+
while (1) {
|
|
378
|
+
switch (_context4.prev = _context4.next) {
|
|
379
|
+
case 0:
|
|
380
|
+
created = [];
|
|
381
|
+
_context4.next = 3;
|
|
382
|
+
return ensureTriggers(client, created);
|
|
383
|
+
|
|
384
|
+
case 3:
|
|
385
|
+
return _context4.abrupt("return", created);
|
|
386
|
+
|
|
387
|
+
case 4:
|
|
388
|
+
case "end":
|
|
389
|
+
return _context4.stop();
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}, _callee4);
|
|
393
|
+
}));
|
|
394
|
+
|
|
395
|
+
return function createRagIndexTriggers(_x6) {
|
|
396
|
+
return _ref4.apply(this, arguments);
|
|
397
|
+
};
|
|
398
|
+
}();
|
|
343
399
|
/**
|
|
344
400
|
* Makes the instance ready for the assistants-driven indexing: the files
|
|
345
401
|
* and assistants triggers exist (the files one is launched when created),
|
|
@@ -354,61 +410,63 @@ var ensureTriggers = /*#__PURE__*/function () {
|
|
|
354
410
|
*/
|
|
355
411
|
|
|
356
412
|
|
|
413
|
+
exports.createRagIndexTriggers = createRagIndexTriggers;
|
|
414
|
+
|
|
357
415
|
var setupRagIndexing = /*#__PURE__*/function () {
|
|
358
|
-
var
|
|
416
|
+
var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(client) {
|
|
359
417
|
var result;
|
|
360
|
-
return _regenerator.default.wrap(function
|
|
418
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
361
419
|
while (1) {
|
|
362
|
-
switch (
|
|
420
|
+
switch (_context5.prev = _context5.next) {
|
|
363
421
|
case 0:
|
|
364
422
|
result = {
|
|
365
423
|
triggers: [],
|
|
366
424
|
migrated: [],
|
|
367
425
|
errors: []
|
|
368
426
|
};
|
|
369
|
-
|
|
370
|
-
|
|
427
|
+
_context5.prev = 1;
|
|
428
|
+
_context5.next = 4;
|
|
371
429
|
return ensureTriggers(client, result.triggers);
|
|
372
430
|
|
|
373
431
|
case 4:
|
|
374
|
-
|
|
432
|
+
_context5.next = 10;
|
|
375
433
|
break;
|
|
376
434
|
|
|
377
435
|
case 6:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
warn('cannot set up the rag-index triggers',
|
|
381
|
-
result.errors.push(
|
|
436
|
+
_context5.prev = 6;
|
|
437
|
+
_context5.t0 = _context5["catch"](1);
|
|
438
|
+
warn('cannot set up the rag-index triggers', _context5.t0);
|
|
439
|
+
result.errors.push(_context5.t0);
|
|
382
440
|
|
|
383
441
|
case 10:
|
|
384
|
-
|
|
385
|
-
|
|
442
|
+
_context5.prev = 10;
|
|
443
|
+
_context5.next = 13;
|
|
386
444
|
return migrateAssistantsWithoutFolder(client);
|
|
387
445
|
|
|
388
446
|
case 13:
|
|
389
|
-
result.migrated =
|
|
390
|
-
|
|
447
|
+
result.migrated = _context5.sent;
|
|
448
|
+
_context5.next = 20;
|
|
391
449
|
break;
|
|
392
450
|
|
|
393
451
|
case 16:
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
warn('cannot migrate the assistants without folder',
|
|
397
|
-
result.errors.push(
|
|
452
|
+
_context5.prev = 16;
|
|
453
|
+
_context5.t1 = _context5["catch"](10);
|
|
454
|
+
warn('cannot migrate the assistants without folder', _context5.t1);
|
|
455
|
+
result.errors.push(_context5.t1);
|
|
398
456
|
|
|
399
457
|
case 20:
|
|
400
|
-
return
|
|
458
|
+
return _context5.abrupt("return", result);
|
|
401
459
|
|
|
402
460
|
case 21:
|
|
403
461
|
case "end":
|
|
404
|
-
return
|
|
462
|
+
return _context5.stop();
|
|
405
463
|
}
|
|
406
464
|
}
|
|
407
|
-
},
|
|
465
|
+
}, _callee5, null, [[1, 6], [10, 16]]);
|
|
408
466
|
}));
|
|
409
467
|
|
|
410
|
-
return function setupRagIndexing(
|
|
411
|
-
return
|
|
468
|
+
return function setupRagIndexing(_x7) {
|
|
469
|
+
return _ref5.apply(this, arguments);
|
|
412
470
|
};
|
|
413
471
|
}();
|
|
414
472
|
|
|
@@ -3,6 +3,8 @@ import { Q } from 'cozy-client'
|
|
|
3
3
|
import { ROOT_DIR_ID } from './knowledgeBase'
|
|
4
4
|
import {
|
|
5
5
|
RAG_INDEX_FILES_DEBOUNCE,
|
|
6
|
+
createRagIndexTriggers,
|
|
7
|
+
fetchAssistants,
|
|
6
8
|
findRagIndexTriggers,
|
|
7
9
|
makeRagIndexTriggerAttributes,
|
|
8
10
|
migrateAssistantsWithoutFolder,
|
|
@@ -266,3 +268,52 @@ describe('setupRagIndexing', () => {
|
|
|
266
268
|
expect(triggersCollection.create).not.toHaveBeenCalled()
|
|
267
269
|
})
|
|
268
270
|
})
|
|
271
|
+
|
|
272
|
+
describe('createRagIndexTriggers', () => {
|
|
273
|
+
it('creates the missing triggers and launches the files one', async () => {
|
|
274
|
+
const { client, triggersCollection } = makeClient()
|
|
275
|
+
await expect(createRagIndexTriggers(client)).resolves.toEqual([
|
|
276
|
+
ASSISTANTS,
|
|
277
|
+
FILES
|
|
278
|
+
])
|
|
279
|
+
expect(triggersCollection.create).toHaveBeenCalledTimes(2)
|
|
280
|
+
expect(triggersCollection.launch).toHaveBeenCalledTimes(1)
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
it('creates nothing when both triggers exist', async () => {
|
|
284
|
+
const { client, triggersCollection } = makeClient({
|
|
285
|
+
triggers: [filesTrigger, assistantsTrigger]
|
|
286
|
+
})
|
|
287
|
+
await expect(createRagIndexTriggers(client)).resolves.toEqual([])
|
|
288
|
+
expect(triggersCollection.create).not.toHaveBeenCalled()
|
|
289
|
+
expect(triggersCollection.launch).not.toHaveBeenCalled()
|
|
290
|
+
})
|
|
291
|
+
})
|
|
292
|
+
|
|
293
|
+
describe('fetchAssistants', () => {
|
|
294
|
+
it('lists every assistant', async () => {
|
|
295
|
+
const assistants = [{ _id: 'a' }, { _id: 'b' }]
|
|
296
|
+
const { client } = makeClient({ assistants })
|
|
297
|
+
await expect(fetchAssistants(client)).resolves.toEqual(assistants)
|
|
298
|
+
expect(client.queryAll).toHaveBeenCalledTimes(1)
|
|
299
|
+
})
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
describe('migrateAssistantsWithoutFolder with the assistants given', () => {
|
|
303
|
+
it('does not query them again', async () => {
|
|
304
|
+
const { client } = makeClient()
|
|
305
|
+
const assistants = [
|
|
306
|
+
{ _id: 'bare', _type: ASSISTANTS },
|
|
307
|
+
{
|
|
308
|
+
_id: 'ok',
|
|
309
|
+
_type: ASSISTANTS,
|
|
310
|
+
knowledgeBase: [{ doctype: FILES, dirId: 'dir-1' }]
|
|
311
|
+
}
|
|
312
|
+
]
|
|
313
|
+
await expect(
|
|
314
|
+
migrateAssistantsWithoutFolder(client, assistants)
|
|
315
|
+
).resolves.toEqual(['bare'])
|
|
316
|
+
expect(client.queryAll).not.toHaveBeenCalled()
|
|
317
|
+
expect(client.save).toHaveBeenCalledTimes(1)
|
|
318
|
+
})
|
|
319
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function useAssistantsAutoprovision(): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useAssistantsAutoprovision = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _cozyClient = require("cozy-client");
|
|
11
|
+
|
|
12
|
+
var _autoprovision = require("./autoprovision");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Provisions the flagged assistants when the assistant UI opens, so an
|
|
16
|
+
* instance gets them even if the host app did not do it at startup.
|
|
17
|
+
*/
|
|
18
|
+
var useAssistantsAutoprovision = function useAssistantsAutoprovision() {
|
|
19
|
+
var client = (0, _cozyClient.useClient)();
|
|
20
|
+
(0, _react.useEffect)(function () {
|
|
21
|
+
if (client) (0, _autoprovision.autoprovisionAssistants)(client);
|
|
22
|
+
}, [client]);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.useAssistantsAutoprovision = useAssistantsAutoprovision;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { renderHook } from '@testing-library/react-hooks/dom'
|
|
2
|
+
|
|
3
|
+
import { useClient } from 'cozy-client'
|
|
4
|
+
|
|
5
|
+
import { autoprovisionAssistants } from './autoprovision'
|
|
6
|
+
import { useAssistantsAutoprovision } from './useAssistantsAutoprovision'
|
|
7
|
+
|
|
8
|
+
jest.mock('cozy-client', () => ({ useClient: jest.fn() }))
|
|
9
|
+
jest.mock('./autoprovision', () => ({ autoprovisionAssistants: jest.fn() }))
|
|
10
|
+
|
|
11
|
+
describe('useAssistantsAutoprovision', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
useClient.mockReset()
|
|
14
|
+
autoprovisionAssistants.mockReset().mockResolvedValue(null)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('provisions with the client on mount', () => {
|
|
18
|
+
const client = { id: 'client' }
|
|
19
|
+
useClient.mockReturnValue(client)
|
|
20
|
+
const { rerender } = renderHook(() => useAssistantsAutoprovision())
|
|
21
|
+
rerender()
|
|
22
|
+
|
|
23
|
+
expect(autoprovisionAssistants).toHaveBeenCalledTimes(1)
|
|
24
|
+
expect(autoprovisionAssistants).toHaveBeenCalledWith(client)
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('waits for a client', () => {
|
|
28
|
+
useClient.mockReturnValue(null)
|
|
29
|
+
renderHook(() => useAssistantsAutoprovision())
|
|
30
|
+
|
|
31
|
+
expect(autoprovisionAssistants).not.toHaveBeenCalled()
|
|
32
|
+
})
|
|
33
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function useRagIndexTriggers(): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useRagIndexTriggers = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _cozyClient = require("cozy-client");
|
|
11
|
+
|
|
12
|
+
var _autoprovision = require("./autoprovision");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Ensures the rag-index triggers at startup, when the autoprovision flag
|
|
16
|
+
* lists assistants: the knowledge base folders are then indexed as they
|
|
17
|
+
* change, before the assistant is ever opened. The assistants themselves
|
|
18
|
+
* are provisioned when the assistant opens.
|
|
19
|
+
*/
|
|
20
|
+
var useRagIndexTriggers = function useRagIndexTriggers() {
|
|
21
|
+
var client = (0, _cozyClient.useClient)();
|
|
22
|
+
(0, _react.useEffect)(function () {
|
|
23
|
+
if (client && (0, _autoprovision.autoprovisionEntries)()) (0, _autoprovision.ensureRagIndexTriggers)(client);
|
|
24
|
+
}, [client]);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.useRagIndexTriggers = useRagIndexTriggers;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { renderHook } from '@testing-library/react-hooks/dom'
|
|
2
|
+
|
|
3
|
+
import { useClient } from 'cozy-client'
|
|
4
|
+
|
|
5
|
+
import { autoprovisionEntries, ensureRagIndexTriggers } from './autoprovision'
|
|
6
|
+
import { useRagIndexTriggers } from './useRagIndexTriggers'
|
|
7
|
+
|
|
8
|
+
jest.mock('cozy-client', () => ({ useClient: jest.fn() }))
|
|
9
|
+
jest.mock('./autoprovision', () => ({
|
|
10
|
+
autoprovisionEntries: jest.fn(),
|
|
11
|
+
ensureRagIndexTriggers: jest.fn()
|
|
12
|
+
}))
|
|
13
|
+
|
|
14
|
+
const client = { id: 'client' }
|
|
15
|
+
|
|
16
|
+
describe('useRagIndexTriggers', () => {
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
useClient.mockReset().mockReturnValue(client)
|
|
19
|
+
autoprovisionEntries.mockReset().mockReturnValue([{ name: 'Docs' }])
|
|
20
|
+
ensureRagIndexTriggers.mockReset().mockResolvedValue({
|
|
21
|
+
triggers: [],
|
|
22
|
+
error: null
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('ensures the triggers with the client on mount', () => {
|
|
27
|
+
const { rerender } = renderHook(() => useRagIndexTriggers())
|
|
28
|
+
rerender()
|
|
29
|
+
|
|
30
|
+
expect(ensureRagIndexTriggers).toHaveBeenCalledTimes(1)
|
|
31
|
+
expect(ensureRagIndexTriggers).toHaveBeenCalledWith(client)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('does nothing without flag entries', () => {
|
|
35
|
+
autoprovisionEntries.mockReturnValue(null)
|
|
36
|
+
renderHook(() => useRagIndexTriggers())
|
|
37
|
+
|
|
38
|
+
expect(ensureRagIndexTriggers).not.toHaveBeenCalled()
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('waits for a client', () => {
|
|
42
|
+
useClient.mockReturnValue(null)
|
|
43
|
+
renderHook(() => useRagIndexTriggers())
|
|
44
|
+
|
|
45
|
+
expect(ensureRagIndexTriggers).not.toHaveBeenCalled()
|
|
46
|
+
})
|
|
47
|
+
})
|
|
@@ -23,8 +23,7 @@ exports.ACCOUNTS_DOCTYPE = ACCOUNTS_DOCTYPE;
|
|
|
23
23
|
var EMAIL_DOCTYPE = 'com.linagora.email';
|
|
24
24
|
exports.EMAIL_DOCTYPE = EMAIL_DOCTYPE;
|
|
25
25
|
|
|
26
|
-
var defaultFetchPolicy = _cozyClient.fetchPolicies.olderThan(
|
|
27
|
-
|
|
26
|
+
var defaultFetchPolicy = _cozyClient.fetchPolicies.olderThan(5 * 60 * 1000);
|
|
28
27
|
|
|
29
28
|
var buildFilesByIds = function buildFilesByIds(ids, enabled) {
|
|
30
29
|
return {
|
package/dist/index.d.ts
CHANGED
|
@@ -11,3 +11,6 @@ export { StreamBridge, createCozyRealtimeChatAdapter } from './components/adapte
|
|
|
11
11
|
export { default as AssistantView } from './components/Views/AssistantView';
|
|
12
12
|
export { assistantIdFromName, AUTOPROVISION_FLAG, ensureProvisionedAssistants, getDefaultProvisionedAssistantId } from './components/KnowledgeBase/provisioning';
|
|
13
13
|
export { setupRagIndexing } from './components/KnowledgeBase/ragIndexing';
|
|
14
|
+
export { autoprovisionAssistants, ensureRagIndexTriggers } from './components/KnowledgeBase/autoprovision';
|
|
15
|
+
export { useRagIndexTriggers } from './components/KnowledgeBase/useRagIndexTriggers';
|
|
16
|
+
export { useAssistantsAutoprovision } from './components/KnowledgeBase/useAssistantsAutoprovision';
|
package/dist/index.js
CHANGED
|
@@ -83,6 +83,12 @@ Object.defineProperty(exports, "assistantIdFromName", {
|
|
|
83
83
|
return _provisioning.assistantIdFromName;
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
+
Object.defineProperty(exports, "autoprovisionAssistants", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function get() {
|
|
89
|
+
return _autoprovision.autoprovisionAssistants;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
86
92
|
Object.defineProperty(exports, "createCozyRealtimeChatAdapter", {
|
|
87
93
|
enumerable: true,
|
|
88
94
|
get: function get() {
|
|
@@ -95,6 +101,12 @@ Object.defineProperty(exports, "ensureProvisionedAssistants", {
|
|
|
95
101
|
return _provisioning.ensureProvisionedAssistants;
|
|
96
102
|
}
|
|
97
103
|
});
|
|
104
|
+
Object.defineProperty(exports, "ensureRagIndexTriggers", {
|
|
105
|
+
enumerable: true,
|
|
106
|
+
get: function get() {
|
|
107
|
+
return _autoprovision.ensureRagIndexTriggers;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
98
110
|
Object.defineProperty(exports, "getDefaultProvisionedAssistantId", {
|
|
99
111
|
enumerable: true,
|
|
100
112
|
get: function get() {
|
|
@@ -107,6 +119,18 @@ Object.defineProperty(exports, "setupRagIndexing", {
|
|
|
107
119
|
return _ragIndexing.setupRagIndexing;
|
|
108
120
|
}
|
|
109
121
|
});
|
|
122
|
+
Object.defineProperty(exports, "useAssistantsAutoprovision", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
get: function get() {
|
|
125
|
+
return _useAssistantsAutoprovision.useAssistantsAutoprovision;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
Object.defineProperty(exports, "useRagIndexTriggers", {
|
|
129
|
+
enumerable: true,
|
|
130
|
+
get: function get() {
|
|
131
|
+
return _useRagIndexTriggers.useRagIndexTriggers;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
110
134
|
|
|
111
135
|
var _AssistantLink = _interopRequireDefault(require("./components/Search/AssistantLink"));
|
|
112
136
|
|
|
@@ -132,4 +156,10 @@ var _AssistantView = _interopRequireDefault(require("./components/Views/Assistan
|
|
|
132
156
|
|
|
133
157
|
var _provisioning = require("./components/KnowledgeBase/provisioning");
|
|
134
158
|
|
|
135
|
-
var _ragIndexing = require("./components/KnowledgeBase/ragIndexing");
|
|
159
|
+
var _ragIndexing = require("./components/KnowledgeBase/ragIndexing");
|
|
160
|
+
|
|
161
|
+
var _autoprovision = require("./components/KnowledgeBase/autoprovision");
|
|
162
|
+
|
|
163
|
+
var _useRagIndexTriggers = require("./components/KnowledgeBase/useRagIndexTriggers");
|
|
164
|
+
|
|
165
|
+
var _useAssistantsAutoprovision = require("./components/KnowledgeBase/useAssistantsAutoprovision");
|
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": "2.
|
|
4
|
+
"version": "2.5.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cozy Cloud",
|
|
7
7
|
"url": "https://github.com/cozy"
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"lint": "cd .. && yarn eslint --ext js,jsx,ts packages/cozy-search"
|
|
97
97
|
},
|
|
98
98
|
"types": "dist/index.d.ts",
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "d7d90a7a9805e76249173a0546cdc374cf596cec"
|
|
100
100
|
}
|