cozy-search 2.2.30 → 2.3.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 (36) hide show
  1. package/README.md +44 -0
  2. package/dist/components/Assistant/AssistantSelection.js +1 -1
  3. package/dist/components/CozyAssistantRuntimeProvider.js +20 -9
  4. package/dist/components/KnowledgeBase/KnowledgeBaseChip.d.ts +2 -1
  5. package/dist/components/KnowledgeBase/KnowledgeBaseChip.js +2 -1
  6. package/dist/components/KnowledgeBase/KnowledgeBaseSection.js +1 -1
  7. package/dist/components/KnowledgeBase/conversationAssistant.d.ts +6 -0
  8. package/dist/components/KnowledgeBase/conversationAssistant.js +42 -0
  9. package/dist/components/KnowledgeBase/conversationAssistant.spec.d.ts +1 -0
  10. package/dist/components/KnowledgeBase/conversationAssistant.spec.js +80 -0
  11. package/dist/components/KnowledgeBase/knowledgeBase.d.ts +8 -0
  12. package/dist/components/KnowledgeBase/knowledgeBase.js +57 -11
  13. package/dist/components/KnowledgeBase/knowledgeBase.spec.js +92 -0
  14. package/dist/components/KnowledgeBase/provisioning.d.ts +24 -0
  15. package/dist/components/KnowledgeBase/provisioning.js +645 -0
  16. package/dist/components/KnowledgeBase/provisioning.spec.d.ts +1 -0
  17. package/dist/components/KnowledgeBase/provisioning.spec.js +489 -0
  18. package/dist/components/KnowledgeBase/ragIndexing.d.ts +21 -0
  19. package/dist/components/KnowledgeBase/ragIndexing.js +415 -0
  20. package/dist/components/KnowledgeBase/ragIndexing.spec.d.ts +1 -0
  21. package/dist/components/KnowledgeBase/ragIndexing.spec.js +268 -0
  22. package/dist/components/KnowledgeBase/useDefaultAssistantId.d.ts +1 -0
  23. package/dist/components/KnowledgeBase/useDefaultAssistantId.js +38 -0
  24. package/dist/components/KnowledgeBase/useDefaultAssistantId.spec.d.ts +1 -0
  25. package/dist/components/KnowledgeBase/useDefaultAssistantId.spec.js +69 -0
  26. package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.d.ts +1 -0
  27. package/dist/components/KnowledgeBase/useSelectedAssistantKnowledgeBase.js +6 -2
  28. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +2 -0
  29. package/dist/components/Views/CreateAssistantDialog.js +6 -12
  30. package/dist/components/Views/DeleteAssistantDialog.js +20 -12
  31. package/dist/components/Views/EditAssistantDialog.js +13 -7
  32. package/dist/components/queries.d.ts +8 -0
  33. package/dist/components/queries.js +21 -2
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.js +35 -1
  36. package/package.json +2 -2
@@ -0,0 +1,645 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.resolveProvisionedFolder = exports.isMagicFolderId = exports.getDefaultProvisionedAssistantId = exports.ensureProvisionedAssistants = exports.createOpenragAccount = exports.assistantIdFromName = exports.AUTOPROVISION_FLAG = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _cozyClient = require("cozy-client");
15
+
16
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
17
+
18
+ var _knowledgeBase = require("./knowledgeBase");
19
+
20
+ var _helpers = require("../CreateAssistantSteps/helpers");
21
+
22
+ var _queries = require("../queries");
23
+
24
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
25
+
26
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
+
28
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
29
+
30
+ var AUTOPROVISION_FLAG = 'rag.assistants.autoprovision';
31
+ exports.AUTOPROVISION_FLAG = AUTOPROVISION_FLAG;
32
+ var ASSISTANTS_DOCTYPE = 'io.cozy.ai.chat.assistants';
33
+ var APPS_DOCTYPE = 'io.cozy.apps';
34
+ var OPENRAG_PROVIDER_ID = 'openrag'; // Some magic folders nest: io.cozy.apps/administrative/papers is one id.
35
+
36
+ var MAGIC_FOLDER_ID = /^io\.cozy\.apps\/.+$/;
37
+ /**
38
+ * Derives the CouchDB _id of a provisioned assistant from its name: only
39
+ * [a-z0-9-] survive, so the id is URL-safe and never starts with "_".
40
+ */
41
+
42
+ var assistantIdFromName = function assistantIdFromName(name) {
43
+ return String(name || '').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
44
+ };
45
+ /**
46
+ * The assistant new conversations start on: the first entry of the
47
+ * autoprovision flag marked `default: true`, by its derived id. Null when
48
+ * none is configured; the sentinel assistant is used then.
49
+ * @returns {string|null}
50
+ */
51
+
52
+
53
+ exports.assistantIdFromName = assistantIdFromName;
54
+
55
+ var getDefaultProvisionedAssistantId = function getDefaultProvisionedAssistantId() {
56
+ var entries = (0, _cozyFlags.default)(AUTOPROVISION_FLAG);
57
+ if (!Array.isArray(entries)) return null;
58
+
59
+ var _iterator = _createForOfIteratorHelper(entries),
60
+ _step;
61
+
62
+ try {
63
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
64
+ var entry = _step.value;
65
+ if ((entry === null || entry === void 0 ? void 0 : entry.default) !== true) continue;
66
+ var id = assistantIdFromName(entry.name);
67
+ if (id) return id;
68
+ }
69
+ } catch (err) {
70
+ _iterator.e(err);
71
+ } finally {
72
+ _iterator.f();
73
+ }
74
+
75
+ return null;
76
+ };
77
+
78
+ exports.getDefaultProvisionedAssistantId = getDefaultProvisionedAssistantId;
79
+
80
+ var isMagicFolderId = function isMagicFolderId(dirId) {
81
+ return MAGIC_FOLDER_ID.test(String(dirId || ''));
82
+ };
83
+
84
+ exports.isMagicFolderId = isMagicFolderId;
85
+
86
+ var isNotFound = function isNotFound(error) {
87
+ return (error === null || error === void 0 ? void 0 : error.status) === 404;
88
+ };
89
+
90
+ var isLiveDirectory = function isLiveDirectory(file) {
91
+ return !!file && file.type === 'directory' && !file.trashed && !(file.path || '').startsWith('/.cozy_trash');
92
+ };
93
+
94
+ var warn = function warn() {
95
+ var _console;
96
+
97
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
98
+ args[_key] = arguments[_key];
99
+ }
100
+
101
+ // eslint-disable-next-line no-console
102
+ (_console = console).warn.apply(_console, ['cozy-search provisioning:'].concat(args));
103
+ };
104
+ /**
105
+ * Resolves the knowledge base folder of a flag entry. dirId wins over
106
+ * dirName and never falls back to it. Returns the dir id, or null.
107
+ */
108
+
109
+
110
+ var resolveProvisionedFolder = /*#__PURE__*/function () {
111
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, _ref) {
112
+ var dirId, dirName, folder, _yield$client$collect, file;
113
+
114
+ return _regenerator.default.wrap(function _callee$(_context) {
115
+ while (1) {
116
+ switch (_context.prev = _context.next) {
117
+ case 0:
118
+ dirId = _ref.dirId, dirName = _ref.dirName;
119
+
120
+ if (!dirId) {
121
+ _context.next = 27;
122
+ break;
123
+ }
124
+
125
+ if (!(0, _knowledgeBase.isRootDirId)(dirId)) {
126
+ _context.next = 4;
127
+ break;
128
+ }
129
+
130
+ return _context.abrupt("return", dirId);
131
+
132
+ case 4:
133
+ if (!isMagicFolderId(dirId)) {
134
+ _context.next = 10;
135
+ break;
136
+ }
137
+
138
+ _context.next = 7;
139
+ return _cozyClient.models.folder.getReferencedFolder(client, {
140
+ _type: APPS_DOCTYPE,
141
+ _id: dirId
142
+ });
143
+
144
+ case 7:
145
+ folder = _context.sent;
146
+ if (!folder) warn("magic folder ".concat(dirId, " has no directory yet"));
147
+ return _context.abrupt("return", folder ? folder._id : null);
148
+
149
+ case 10:
150
+ _context.prev = 10;
151
+ _context.next = 13;
152
+ return client.collection(_queries.FILES_DOCTYPE).statById(dirId);
153
+
154
+ case 13:
155
+ _yield$client$collect = _context.sent;
156
+ file = _yield$client$collect.data;
157
+
158
+ if (!isLiveDirectory(file)) {
159
+ _context.next = 17;
160
+ break;
161
+ }
162
+
163
+ return _context.abrupt("return", file._id);
164
+
165
+ case 17:
166
+ warn("folder ".concat(dirId, " is not a live directory"));
167
+ return _context.abrupt("return", null);
168
+
169
+ case 21:
170
+ _context.prev = 21;
171
+ _context.t0 = _context["catch"](10);
172
+
173
+ if (!isNotFound(_context.t0)) {
174
+ _context.next = 26;
175
+ break;
176
+ }
177
+
178
+ warn("folder ".concat(dirId, " does not exist"));
179
+ return _context.abrupt("return", null);
180
+
181
+ case 26:
182
+ throw _context.t0;
183
+
184
+ case 27:
185
+ return _context.abrupt("return", client.collection(_queries.FILES_DOCTYPE).ensureDirectoryExists("/".concat(dirName)));
186
+
187
+ case 28:
188
+ case "end":
189
+ return _context.stop();
190
+ }
191
+ }
192
+ }, _callee, null, [[10, 21]]);
193
+ }));
194
+
195
+ return function resolveProvisionedFolder(_x, _x2) {
196
+ return _ref2.apply(this, arguments);
197
+ };
198
+ }();
199
+ /**
200
+ * Creates an openrag provider account. One per assistant, like the UI
201
+ * (cozy-client's createAssistant) does: deleting an assistant deletes its
202
+ * account, so a shared one would break the others.
203
+ */
204
+
205
+
206
+ exports.resolveProvisionedFolder = resolveProvisionedFolder;
207
+
208
+ var createOpenragAccount = /*#__PURE__*/function () {
209
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client) {
210
+ var provider, _yield$client$save, account;
211
+
212
+ return _regenerator.default.wrap(function _callee2$(_context2) {
213
+ while (1) {
214
+ switch (_context2.prev = _context2.next) {
215
+ case 0:
216
+ provider = (0, _helpers.getSelectedProviderById)(OPENRAG_PROVIDER_ID);
217
+ _context2.next = 3;
218
+ return client.save({
219
+ _type: _queries.ACCOUNTS_DOCTYPE,
220
+ account_type: OPENRAG_PROVIDER_ID,
221
+ identifier: 'accountName',
222
+ auth: {
223
+ accountName: provider.name
224
+ },
225
+ data: {
226
+ model: provider.models[0]
227
+ }
228
+ });
229
+
230
+ case 3:
231
+ _yield$client$save = _context2.sent;
232
+ account = _yield$client$save.data;
233
+ return _context2.abrupt("return", account);
234
+
235
+ case 6:
236
+ case "end":
237
+ return _context2.stop();
238
+ }
239
+ }
240
+ }, _callee2);
241
+ }));
242
+
243
+ return function createOpenragAccount(_x3) {
244
+ return _ref3.apply(this, arguments);
245
+ };
246
+ }();
247
+
248
+ exports.createOpenragAccount = createOpenragAccount;
249
+
250
+ var getAssistant = /*#__PURE__*/function () {
251
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, id) {
252
+ var _buildAssistantByIdQu, definition, options, _yield$client$query, data;
253
+
254
+ return _regenerator.default.wrap(function _callee3$(_context3) {
255
+ while (1) {
256
+ switch (_context3.prev = _context3.next) {
257
+ case 0:
258
+ _context3.prev = 0;
259
+ _buildAssistantByIdQu = (0, _queries.buildAssistantByIdQuery)(id), definition = _buildAssistantByIdQu.definition, options = _buildAssistantByIdQu.options;
260
+ _context3.next = 4;
261
+ return client.query(definition(), {
262
+ as: options.as
263
+ });
264
+
265
+ case 4:
266
+ _yield$client$query = _context3.sent;
267
+ data = _yield$client$query.data;
268
+ return _context3.abrupt("return", data || null);
269
+
270
+ case 9:
271
+ _context3.prev = 9;
272
+ _context3.t0 = _context3["catch"](0);
273
+
274
+ if (!isNotFound(_context3.t0)) {
275
+ _context3.next = 13;
276
+ break;
277
+ }
278
+
279
+ return _context3.abrupt("return", null);
280
+
281
+ case 13:
282
+ throw _context3.t0;
283
+
284
+ case 14:
285
+ case "end":
286
+ return _context3.stop();
287
+ }
288
+ }
289
+ }, _callee3, null, [[0, 9]]);
290
+ }));
291
+
292
+ return function getAssistant(_x4, _x5) {
293
+ return _ref4.apply(this, arguments);
294
+ };
295
+ }();
296
+
297
+ var createProvisionedAssistant = /*#__PURE__*/function () {
298
+ var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(client, id, entry, dirId) {
299
+ var account;
300
+ return _regenerator.default.wrap(function _callee4$(_context4) {
301
+ while (1) {
302
+ switch (_context4.prev = _context4.next) {
303
+ case 0:
304
+ _context4.next = 2;
305
+ return createOpenragAccount(client);
306
+
307
+ case 2:
308
+ account = _context4.sent;
309
+ _context4.prev = 3;
310
+ _context4.next = 6;
311
+ return client.save({
312
+ _type: ASSISTANTS_DOCTYPE,
313
+ _id: id,
314
+ name: entry.name,
315
+ prompt: entry.prompt || '',
316
+ icon: entry.icon || null,
317
+ relationships: {
318
+ provider: {
319
+ data: {
320
+ _type: _queries.ACCOUNTS_DOCTYPE,
321
+ _id: account._id,
322
+ metadata: {
323
+ providerId: OPENRAG_PROVIDER_ID
324
+ }
325
+ }
326
+ }
327
+ }
328
+ });
329
+
330
+ case 6:
331
+ _context4.next = 15;
332
+ break;
333
+
334
+ case 8:
335
+ _context4.prev = 8;
336
+ _context4.t0 = _context4["catch"](3);
337
+ _context4.next = 12;
338
+ return client.destroy(account).catch(function () {});
339
+
340
+ case 12:
341
+ if (!((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.status) === 409)) {
342
+ _context4.next = 14;
343
+ break;
344
+ }
345
+
346
+ return _context4.abrupt("return", false);
347
+
348
+ case 14:
349
+ throw _context4.t0;
350
+
351
+ case 15:
352
+ _context4.next = 17;
353
+ return (0, _knowledgeBase.saveKnowledgeBase)(client, id, [{
354
+ doctype: _queries.FILES_DOCTYPE,
355
+ dirId: dirId
356
+ }]);
357
+
358
+ case 17:
359
+ return _context4.abrupt("return", true);
360
+
361
+ case 18:
362
+ case "end":
363
+ return _context4.stop();
364
+ }
365
+ }
366
+ }, _callee4, null, [[3, 8]]);
367
+ }));
368
+
369
+ return function createProvisionedAssistant(_x6, _x7, _x8, _x9) {
370
+ return _ref5.apply(this, arguments);
371
+ };
372
+ }();
373
+
374
+ var validate = function validate(entry) {
375
+ var id = assistantIdFromName(entry === null || entry === void 0 ? void 0 : entry.name);
376
+ if (!id) return {
377
+ id: '',
378
+ reason: 'invalid name'
379
+ };
380
+
381
+ if (!entry.dirId && !entry.dirName) {
382
+ return {
383
+ id: id,
384
+ reason: 'dirId or dirName is required'
385
+ };
386
+ }
387
+
388
+ return {
389
+ id: id
390
+ };
391
+ };
392
+ /**
393
+ * Provisions the assistants described by the rag.assistants.autoprovision
394
+ * flag. Idempotent: an existing assistant is left alone, or gets the flag's
395
+ * folder back when it lost it or fell back to the root. Two entries whose
396
+ * names derive to the same id would fight over one assistant: the second
397
+ * one is skipped.
398
+ * @param {import('cozy-client').CozyClient} client - The cozy client.
399
+ * @param {Array<{name: string, dirName?: string, dirId?: string, prompt?: string, icon?: string|null, default?: boolean}>} configs - The flag entries.
400
+ * @returns {Promise<{created: string[], ensured: string[], skipped: {id: string, reason: string}[]}>} What was created, ensured and skipped.
401
+ */
402
+
403
+
404
+ var ensureProvisionedAssistants = /*#__PURE__*/function () {
405
+ var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(client, configs) {
406
+ var result, seen, _iterator2, _step2, entry, _validate, id, reason, assistant, created, dirId, wanted, current, live;
407
+
408
+ return _regenerator.default.wrap(function _callee5$(_context5) {
409
+ while (1) {
410
+ switch (_context5.prev = _context5.next) {
411
+ case 0:
412
+ result = {
413
+ created: [],
414
+ ensured: [],
415
+ skipped: []
416
+ };
417
+
418
+ if (!(!Array.isArray(configs) || configs.length === 0)) {
419
+ _context5.next = 3;
420
+ break;
421
+ }
422
+
423
+ return _context5.abrupt("return", result);
424
+
425
+ case 3:
426
+ seen = new Set();
427
+ _iterator2 = _createForOfIteratorHelper(configs);
428
+ _context5.prev = 5;
429
+
430
+ _iterator2.s();
431
+
432
+ case 7:
433
+ if ((_step2 = _iterator2.n()).done) {
434
+ _context5.next = 70;
435
+ break;
436
+ }
437
+
438
+ entry = _step2.value;
439
+ _validate = validate(entry), id = _validate.id, reason = _validate.reason;
440
+
441
+ if (!reason) {
442
+ _context5.next = 13;
443
+ break;
444
+ }
445
+
446
+ result.skipped.push({
447
+ id: id,
448
+ reason: reason
449
+ });
450
+ return _context5.abrupt("continue", 68);
451
+
452
+ case 13:
453
+ if (!seen.has(id)) {
454
+ _context5.next = 16;
455
+ break;
456
+ }
457
+
458
+ result.skipped.push({
459
+ id: id,
460
+ reason: 'duplicate assistant id'
461
+ });
462
+ return _context5.abrupt("continue", 68);
463
+
464
+ case 16:
465
+ seen.add(id);
466
+ _context5.prev = 17;
467
+ _context5.next = 20;
468
+ return getAssistant(client, id);
469
+
470
+ case 20:
471
+ assistant = _context5.sent;
472
+ created = false;
473
+
474
+ if (assistant) {
475
+ _context5.next = 40;
476
+ break;
477
+ }
478
+
479
+ _context5.next = 25;
480
+ return resolveProvisionedFolder(client, entry);
481
+
482
+ case 25:
483
+ dirId = _context5.sent;
484
+
485
+ if (dirId) {
486
+ _context5.next = 29;
487
+ break;
488
+ }
489
+
490
+ result.skipped.push({
491
+ id: id,
492
+ reason: 'folder could not be resolved'
493
+ });
494
+ return _context5.abrupt("continue", 68);
495
+
496
+ case 29:
497
+ _context5.next = 31;
498
+ return createProvisionedAssistant(client, id, entry, dirId);
499
+
500
+ case 31:
501
+ created = _context5.sent;
502
+
503
+ if (!created) {
504
+ _context5.next = 36;
505
+ break;
506
+ }
507
+
508
+ _context5.t0 = {
509
+ _id: id,
510
+ knowledgeBase: [{
511
+ doctype: _queries.FILES_DOCTYPE,
512
+ dirId: dirId
513
+ }]
514
+ };
515
+ _context5.next = 39;
516
+ break;
517
+
518
+ case 36:
519
+ _context5.next = 38;
520
+ return getAssistant(client, id);
521
+
522
+ case 38:
523
+ _context5.t0 = _context5.sent;
524
+
525
+ case 39:
526
+ assistant = _context5.t0;
527
+
528
+ case 40:
529
+ if (!created) {
530
+ _context5.next = 43;
531
+ break;
532
+ }
533
+
534
+ // saveKnowledgeBase already saved the knowledge base.
535
+ result.created.push(id);
536
+ return _context5.abrupt("continue", 68);
537
+
538
+ case 43:
539
+ _context5.next = 45;
540
+ return resolveProvisionedFolder(client, entry);
541
+
542
+ case 45:
543
+ wanted = _context5.sent;
544
+
545
+ if (wanted) {
546
+ _context5.next = 49;
547
+ break;
548
+ }
549
+
550
+ result.skipped.push({
551
+ id: id,
552
+ reason: 'folder could not be resolved'
553
+ });
554
+ return _context5.abrupt("continue", 68);
555
+
556
+ case 49:
557
+ current = (0, _knowledgeBase.getKnowledgeBaseDirId)(assistant);
558
+
559
+ if (!(current === null || (0, _knowledgeBase.isRootDirId)(current) && !(0, _knowledgeBase.isRootDirId)(wanted))) {
560
+ _context5.next = 55;
561
+ break;
562
+ }
563
+
564
+ _context5.next = 53;
565
+ return (0, _knowledgeBase.saveKnowledgeBase)(client, id, [{
566
+ doctype: _queries.FILES_DOCTYPE,
567
+ dirId: wanted
568
+ }]);
569
+
570
+ case 53:
571
+ result.ensured.push(id);
572
+ return _context5.abrupt("continue", 68);
573
+
574
+ case 55:
575
+ _context5.next = 57;
576
+ return resolveProvisionedFolder(client, {
577
+ dirId: current
578
+ });
579
+
580
+ case 57:
581
+ live = _context5.sent;
582
+
583
+ if (live) {
584
+ _context5.next = 61;
585
+ break;
586
+ }
587
+
588
+ result.skipped.push({
589
+ id: id,
590
+ reason: "folder ".concat(current, " is missing or trashed")
591
+ });
592
+ return _context5.abrupt("continue", 68);
593
+
594
+ case 61:
595
+ result.ensured.push(id);
596
+ _context5.next = 68;
597
+ break;
598
+
599
+ case 64:
600
+ _context5.prev = 64;
601
+ _context5.t1 = _context5["catch"](17);
602
+ warn("entry ".concat(id, " failed"), _context5.t1);
603
+ result.skipped.push({
604
+ id: id,
605
+ reason: (_context5.t1 === null || _context5.t1 === void 0 ? void 0 : _context5.t1.message) || String(_context5.t1)
606
+ });
607
+
608
+ case 68:
609
+ _context5.next = 7;
610
+ break;
611
+
612
+ case 70:
613
+ _context5.next = 75;
614
+ break;
615
+
616
+ case 72:
617
+ _context5.prev = 72;
618
+ _context5.t2 = _context5["catch"](5);
619
+
620
+ _iterator2.e(_context5.t2);
621
+
622
+ case 75:
623
+ _context5.prev = 75;
624
+
625
+ _iterator2.f();
626
+
627
+ return _context5.finish(75);
628
+
629
+ case 78:
630
+ return _context5.abrupt("return", result);
631
+
632
+ case 79:
633
+ case "end":
634
+ return _context5.stop();
635
+ }
636
+ }
637
+ }, _callee5, null, [[5, 72, 75, 78], [17, 64]]);
638
+ }));
639
+
640
+ return function ensureProvisionedAssistants(_x10, _x11) {
641
+ return _ref6.apply(this, arguments);
642
+ };
643
+ }();
644
+
645
+ exports.ensureProvisionedAssistants = ensureProvisionedAssistants;