@onereach/idw-init-account-resources 0.19.7 → 0.20.1

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 (51) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/dist/assets/skills/index.js +0 -39
  4. package/dist/assets/skills/index.js.map +1 -1
  5. package/dist/index.js +4 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/initializers/rdb.js +247 -18
  8. package/dist/initializers/rdb.js.map +1 -1
  9. package/package.json +2 -2
  10. package/src/assets/skills/index.ts +0 -41
  11. package/src/index.ts +4 -2
  12. package/src/initializers/rdb.ts +230 -8
  13. package/dist/assets/skills/ai_data_insights.js +0 -21
  14. package/dist/assets/skills/ai_data_insights.js.map +0 -1
  15. package/dist/assets/skills/ai_vision.js +0 -21
  16. package/dist/assets/skills/ai_vision.js.map +0 -1
  17. package/dist/assets/skills/automatic_meeting_reschedule.js +0 -21
  18. package/dist/assets/skills/automatic_meeting_reschedule.js.map +0 -1
  19. package/dist/assets/skills/create_email.js +0 -21
  20. package/dist/assets/skills/create_email.js.map +0 -1
  21. package/dist/assets/skills/create_invoice.js +0 -21
  22. package/dist/assets/skills/create_invoice.js.map +0 -1
  23. package/dist/assets/skills/customer_sentiment_analysis.js +0 -21
  24. package/dist/assets/skills/customer_sentiment_analysis.js.map +0 -1
  25. package/dist/assets/skills/employee_onboarding_training.js +0 -21
  26. package/dist/assets/skills/employee_onboarding_training.js.map +0 -1
  27. package/dist/assets/skills/hr_request_pto.js +0 -21
  28. package/dist/assets/skills/hr_request_pto.js.map +0 -1
  29. package/dist/assets/skills/manage_knowledge.js +0 -24
  30. package/dist/assets/skills/manage_knowledge.js.map +0 -1
  31. package/dist/assets/skills/request_triage.js +0 -21
  32. package/dist/assets/skills/request_triage.js.map +0 -1
  33. package/dist/assets/skills/sales_forecasting.js +0 -21
  34. package/dist/assets/skills/sales_forecasting.js.map +0 -1
  35. package/dist/assets/skills/schedule_appointment_web.js +0 -21
  36. package/dist/assets/skills/schedule_appointment_web.js.map +0 -1
  37. package/dist/assets/skills/social_media_management.js +0 -21
  38. package/dist/assets/skills/social_media_management.js.map +0 -1
  39. package/src/assets/skills/ai_data_insights.ts +0 -20
  40. package/src/assets/skills/ai_vision.ts +0 -20
  41. package/src/assets/skills/automatic_meeting_reschedule.ts +0 -20
  42. package/src/assets/skills/create_email.ts +0 -20
  43. package/src/assets/skills/create_invoice.ts +0 -20
  44. package/src/assets/skills/customer_sentiment_analysis.ts +0 -19
  45. package/src/assets/skills/employee_onboarding_training.ts +0 -20
  46. package/src/assets/skills/hr_request_pto.ts +0 -20
  47. package/src/assets/skills/manage_knowledge.ts +0 -25
  48. package/src/assets/skills/request_triage.ts +0 -20
  49. package/src/assets/skills/sales_forecasting.ts +0 -19
  50. package/src/assets/skills/schedule_appointment_web.ts +0 -20
  51. package/src/assets/skills/social_media_management.ts +0 -19
@@ -1,9 +1,17 @@
1
+ import { Files } from '@or-sdk/files';
2
+ import { IdwApiV2, SkillItem } from '@or-sdk/idw';
3
+ import { randomUUID } from 'crypto';
1
4
  import path from 'path';
2
5
  import { Sequelize } from 'sequelize';
3
6
 
4
- import { UnlabelledDomain } from '../assets/domains';
7
+ import { UnlabelledDomain, domains } from '../assets/domains';
5
8
  import { datasources, models } from '../assets/models';
6
- import { DatasourceDefinition, DiscovyreService, IdwModel, IdwModelDefinition, InitRdbResourcesConfig } from '../types';
9
+ import { skills } from '../assets/skills';
10
+ import {
11
+ DomainDefinition, SkillDefinition, DatasourceDefinition, DiscovyreService,
12
+ IdwModel, IdwModelDefinition, InitRdbResourcesConfig,
13
+ } from '../types';
14
+ import { encodeAccountId } from '../utils/encodeAccountId';
7
15
  import { DB_NAME, OrPgClient } from '../utils/OrPgClient';
8
16
  import { setupUmzug } from '../utils/umzugSetup';
9
17
 
@@ -12,8 +20,12 @@ export class InitRdbResources {
12
20
  private discoveryUrl: string;
13
21
  private pgClient: OrPgClient;
14
22
 
23
+ private idwApi: IdwApiV2;
24
+ private filesApi: Files;
25
+
15
26
  private mcpApi!: string;
16
27
  private accPart!: string;
28
+ private chatUrl!: string;
17
29
 
18
30
  constructor({ token, discoveryUrl }: InitRdbResourcesConfig) {
19
31
  this.token = token;
@@ -23,14 +35,27 @@ export class InitRdbResources {
23
35
  token: this.token,
24
36
  discoveryUrl: this.discoveryUrl,
25
37
  });
38
+
39
+ this.idwApi = new IdwApiV2({
40
+ token,
41
+ discoveryUrl,
42
+ });
43
+
44
+ this.filesApi = new Files({
45
+ token,
46
+ discoveryUrl,
47
+ });
26
48
  }
27
49
 
28
- public async init(): Promise<void> {
50
+ public async init(data: { files: Record<string, string>; }): Promise<void> {
51
+ const { files } = data;
52
+
29
53
  const { services } =
30
54
  await fetch(`${this.discoveryUrl}/api/v2/services`).then(res => res.json());
31
55
 
32
56
  const sdkApiUrl = services.find((service: DiscovyreService) => service.serviceKey === 'sdk-api').url;
33
57
  this.mcpApi = services.find((service: DiscovyreService) => service.serviceKey === 'mcp-api').url;
58
+ this.chatUrl = services.find((service: DiscovyreService) => service.serviceKey === 'rwc')?.url?.replace('rwc.', 'chat.');
34
59
 
35
60
  const { accountId } = await fetch(`${sdkApiUrl}/auth/token`, {
36
61
  headers: { Authorization: this.token },
@@ -58,7 +83,13 @@ export class InitRdbResources {
58
83
  throw new Error('Migration failed', { cause: error });
59
84
  }
60
85
 
61
- await this.upsertDefaultData(sequelize, models, datasources);
86
+ await this.upsertDefaultData(sequelize, {
87
+ models,
88
+ datasources,
89
+ domains,
90
+ skills,
91
+ files,
92
+ }, accountId);
62
93
  await this.linkOldKnowledgesToDefaultDomain(sequelize);
63
94
 
64
95
  await sequelize.close();
@@ -66,9 +97,23 @@ export class InitRdbResources {
66
97
 
67
98
  private async upsertDefaultData(
68
99
  sequelize: Sequelize,
69
- models: IdwModelDefinition[] = [],
70
- datasources: DatasourceDefinition[] = [],
100
+ data: {
101
+ models: IdwModelDefinition[],
102
+ datasources: DatasourceDefinition[],
103
+ domains: DomainDefinition[],
104
+ skills: SkillDefinition[],
105
+ files: Record<string, string>,
106
+ },
107
+ accountId: string,
71
108
  ) {
109
+ const { models, datasources, domains, skills } = data;
110
+ await this.setDatasources(sequelize, models, datasources);
111
+ await this.setSkillsAndDomains(sequelize, domains, skills, data.files, accountId);
112
+ await this.removeDeletedSkills(sequelize, skills);
113
+ }
114
+
115
+ private async setDatasources(sequelize: Sequelize, models: IdwModelDefinition[] = [],
116
+ datasources: DatasourceDefinition[] = []) {
72
117
  try {
73
118
  await sequelize.transaction(async (transaction) => {
74
119
  // Upsert datasources
@@ -175,9 +220,109 @@ export class InitRdbResources {
175
220
  });
176
221
 
177
222
  // eslint-disable-next-line no-console
178
- console.log('Default data successfully upserted.');
223
+ console.log('Default datasources successfully upserted.');
224
+ } catch (error) {
225
+ console.error('Error upserting default datasources data:', error);
226
+ }
227
+ }
228
+
229
+ private async setSkillsAndDomains(sequelize: Sequelize,
230
+ domains: DomainDefinition[] = [],
231
+ skills: SkillDefinition[] = [],
232
+ files: Record<string, string>,
233
+ accountId: string) {
234
+ try {
235
+ await sequelize.transaction(async (transaction) => {
236
+ let index = 0;
237
+ const domainMap: Record<string, string> = {};
238
+
239
+ for (const domain of domains) {
240
+ const [domainResult] = await sequelize.query(
241
+ `
242
+ INSERT INTO domains (id, account_id, slug, name, abbreviation, image, created_at, updated_at)
243
+ VALUES (:id, :accountId, :slug, :name, :abbreviation, :image, :created_at, :updated_at)
244
+ ON CONFLICT (slug) DO UPDATE
245
+ SET abbreviation = EXCLUDED.abbreviation,
246
+ updated_at = NOW()
247
+ RETURNING id;
248
+ `,
249
+ {
250
+ replacements: {
251
+ id: randomUUID(),
252
+ accountId,
253
+ slug: this.slugify(domain.name),
254
+ name: domain.name,
255
+ abbreviation: domain.abbreviation,
256
+ image: `/domains/img-${index}.png`,
257
+ created_at: new Date(),
258
+ updated_at: new Date(),
259
+ },
260
+ transaction,
261
+ },
262
+ );
263
+ index++;
264
+ domainMap[domain.name] = (domainResult[0] as { id: string; }).id;
265
+ }
266
+
267
+ const transformedSkills = skills.map((skill) => this.mapSkillData(skill, files, accountId));
268
+ for (const skill of transformedSkills) {
269
+ const [skillResult] = await sequelize.query(
270
+ `
271
+ INSERT INTO skills (id, account_id, slug, name, description, meta, url, created_at, updated_at)
272
+ VALUES (:id, :accountId, :slug, :name, :description, :meta, :url, :created_at, :updated_at)
273
+ ON CONFLICT (slug) DO UPDATE
274
+ SET description = EXCLUDED.description,
275
+ meta = EXCLUDED.meta,
276
+ url = EXCLUDED.url,
277
+ updated_at = NOW()
278
+ RETURNING id;
279
+ `,
280
+ {
281
+ replacements: {
282
+ id: randomUUID(),
283
+ accountId,
284
+ slug: this.slugify(skill.name),
285
+ name: skill.name,
286
+ description: skill.description,
287
+ meta: JSON.stringify(skill.meta),
288
+ url: skill.url,
289
+ created_at: new Date(),
290
+ updated_at: new Date(),
291
+ },
292
+ transaction,
293
+ },
294
+ );
295
+ const skillId = (skillResult[0] as { id: string; }).id;
296
+
297
+ // delete old relations
298
+ await sequelize.query(
299
+ 'DELETE FROM domain_skills WHERE skill = :skill_id;',
300
+ {
301
+ replacements: { skill_id: skillId },
302
+ transaction,
303
+ },
304
+ );
305
+
306
+ await sequelize.query(
307
+ `
308
+ INSERT INTO domain_skills (id, skill, domain)
309
+ VALUES (:id, :skill, :domain)`,
310
+ {
311
+ replacements: {
312
+ id: randomUUID(),
313
+ skill: skillId,
314
+ domain: domainMap[skill.domain],
315
+ },
316
+ transaction,
317
+ },
318
+ );
319
+ }
320
+ });
321
+
322
+ // eslint-disable-next-line no-console
323
+ console.log('Default skills and domains successfully upserted.');
179
324
  } catch (error) {
180
- console.error('Error upserting default data:', error);
325
+ console.error('Error upserting default skills and domains data:', error);
181
326
  }
182
327
  }
183
328
 
@@ -223,4 +368,81 @@ export class InitRdbResources {
223
368
  // BigInt -> base36 string (lowercase [0-9a-z])
224
369
  return n.toString(36);
225
370
  }
371
+
372
+ private async removeDeletedSkills(sequelize: Sequelize, skillDefinitions: SkillDefinition[]) {
373
+ const [skills] = (await sequelize.query('SELECT * FROM skills')) as SkillItem[][];
374
+
375
+ const isSystem = (skill: SkillItem) => (skill.meta?.skill as { isSystem?: boolean; })?.isSystem;
376
+ const isDeleted = (skill: SkillItem) => !skillDefinitions.find((item) => item.name === skill.name);
377
+
378
+ const deletedSystemSkills = skills.filter((skill) => isSystem(skill) && isDeleted(skill));
379
+ await Promise.all(deletedSystemSkills.map((skill) => this.idwApi.deleteSkill(skill.id)));
380
+
381
+ await Promise.all(
382
+ deletedSystemSkills.map((skill) => sequelize.query('' +
383
+ 'DELETE FROM skills WHERE id = :skill_id',
384
+ { replacements: { skill_id: skill.id } }),
385
+ ),
386
+ );
387
+
388
+ const DOCUMENTATION_FOLDER = 'IDW/docs';
389
+
390
+ await Promise.all(
391
+ deletedSystemSkills.map((skill) =>
392
+ this.filesApi
393
+ .deleteFile(`${DOCUMENTATION_FOLDER}/${skill.slug}.pdf`, true)
394
+ .catch((err) => {
395
+ console.warn(`Failed to delete file for skill "${skill.slug}":`, err.message);
396
+ return null;
397
+ }),
398
+ ),
399
+ );
400
+ };
401
+
402
+ private slugify(string: string): string {
403
+ const result = String(string)
404
+ .normalize('NFKD') // split accented characters into their base characters and diacritical marks
405
+ .replace(/[\u0300-\u036f]/g, '') // remove all the accents, which happen to be all in the \u03xx UNICODE block.
406
+ .trim() // trim leading or trailing whitespace
407
+ .toLowerCase() // convert to lowercase
408
+ .replace(/[^a-z0-9 -]/g, '') // remove non-alphanumeric characters
409
+ .replace(/\s+/g, '-') // replace spaces with hyphens
410
+ .replace(/-+/g, '-') // remove consecutive hyphens
411
+ .replace(/^-+|-+$/g, ''); // remove leading/trailing hyphens
412
+
413
+ const alphanumCount = (result.match(/[a-z0-9]/g) || []).length;
414
+
415
+ if (alphanumCount < 2) {
416
+ throw new Error('Slug must have at least 2 alphanumeric characters');
417
+ }
418
+
419
+ return result;
420
+ };
421
+
422
+ private mapSkillData(skillDefinition: SkillDefinition, files: Record<string, string>, account_id: string) {
423
+ const encodedAccountId = encodeAccountId(account_id);
424
+ return {
425
+ slug: this.slugify(skillDefinition.name),
426
+ name: skillDefinition.name,
427
+ description: skillDefinition.description,
428
+ url: `${this.chatUrl}/${encodedAccountId}/${skillDefinition.meta.chatId}`,
429
+ domain: skillDefinition.domain ?? UnlabelledDomain.name,
430
+ meta: {
431
+ chat: {
432
+ id: skillDefinition.meta.chatId,
433
+ },
434
+ skill: {
435
+ advanced: skillDefinition.advanced,
436
+ disabled: skillDefinition.disabled,
437
+ editable: skillDefinition.editable,
438
+ userRole: skillDefinition.forRoles,
439
+ forUsers: skillDefinition.forUsers,
440
+ prompt: skillDefinition.meta.prompt,
441
+ promptParams: skillDefinition.meta.promptParams,
442
+ isSystem: skillDefinition.isSystem ?? true,
443
+ docUrl: files[skillDefinition.uid],
444
+ },
445
+ },
446
+ };
447
+ }
226
448
  }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aiDataInsightsSkill = void 0;
4
- exports.aiDataInsightsSkill = {
5
- uid: 'ai-data-insights',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'AI Data Insights',
8
- description: 'With this skill you can use generative AI techniques to generate, interact with, and visualize data related to your business',
9
- abbreviation: 'DI',
10
- number: 11,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'ai-data-insights',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=ai_data_insights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai_data_insights.js","sourceRoot":"","sources":["../../../src/assets/skills/ai_data_insights.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAoB;IAClD,GAAG,EAAE,kBAAkB;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,8HAA8H;IAChI,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.aiVisionSkill = void 0;
4
- exports.aiVisionSkill = {
5
- uid: 'ai-vision',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'AI Vision',
8
- description: 'With this skill you can apply a vision language model to your own images to create actionable insights by automatically detecting objects, scenes, activities, and other useful data in the images',
9
- abbreviation: 'AV',
10
- number: 12,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'ai-vision',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=ai_vision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai_vision.js","sourceRoot":"","sources":["../../../src/assets/skills/ai_vision.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAoB;IAC5C,GAAG,EAAE,WAAW;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,oMAAoM;IACtM,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.meetingRescheduleSkill = void 0;
4
- exports.meetingRescheduleSkill = {
5
- uid: 'automatic-meeting-reschedule',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Automatic Meeting Reschedule',
8
- description: 'With this skill you will never miss a meeting due to scheduling conflicts. It suggests new times and updates participants via email and calendars, keeping everyone in sync effortlessly',
9
- abbreviation: 'MR',
10
- number: 13,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'automatic-meeting-reschedule',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=automatic_meeting_reschedule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automatic_meeting_reschedule.js","sourceRoot":"","sources":["../../../src/assets/skills/automatic_meeting_reschedule.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAoB;IACrD,GAAG,EAAE,8BAA8B;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,8BAA8B;IACpC,WAAW,EACT,0LAA0L;IAC5L,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,8BAA8B;QACtC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createEmailSkill = void 0;
4
- exports.createEmailSkill = {
5
- uid: 'create-email',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Create Email',
8
- description: 'With this skill you can automate the email process, allowing you to personalize, process, and send AI-generated emails with ease',
9
- abbreviation: 'CE',
10
- number: 14,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'create-email',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=create_email.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create_email.js","sourceRoot":"","sources":["../../../src/assets/skills/create_email.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,GAAG,EAAE,cAAc;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,kIAAkI;IACpI,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createInvoiceSkill = void 0;
4
- exports.createInvoiceSkill = {
5
- uid: 'create-invoice',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Create Invoice',
8
- description: 'With this skill you can effortlessly generate and personalize invoices for your business needs, with the option to seamlessly add line items and make conversational updates to the invoice',
9
- abbreviation: 'CI',
10
- number: 23,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'create-invoice',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=create_invoice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create_invoice.js","sourceRoot":"","sources":["../../../src/assets/skills/create_invoice.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAoB;IACjD,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,6LAA6L;IAC/L,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.customerSentimentAnalysisSkill = void 0;
4
- exports.customerSentimentAnalysisSkill = {
5
- uid: 'customer-sentiment-analysis',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Customer Sentiment Analysis',
8
- description: 'With this skill you can evaluate and interpret emotions from customer feedback',
9
- abbreviation: 'SA',
10
- number: 19,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'customer-sentiment-analysis',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=customer_sentiment_analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"customer_sentiment_analysis.js","sourceRoot":"","sources":["../../../src/assets/skills/customer_sentiment_analysis.ts"],"names":[],"mappings":";;;AAEa,QAAA,8BAA8B,GAAoB;IAC7D,GAAG,EAAE,6BAA6B;IAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,gFAAgF;IAC7F,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,6BAA6B;QACrC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.employeeOnboardingSkill = void 0;
4
- exports.employeeOnboardingSkill = {
5
- uid: 'employee-onboarding-training',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Employee Onboarding & Training',
8
- description: 'Explore how our automation tool revolutionizes onboarding by guiding new hires through a smooth transition into their roles. Watch how it automates communication, paperwork, and meeting scheduling. Experience firsthand the way our system enhances the onboarding journey by gathering feedback to constantly elevate satisfaction and results',
9
- abbreviation: 'EO',
10
- number: 16,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'employee-onboarding-training',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=employee_onboarding_training.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"employee_onboarding_training.js","sourceRoot":"","sources":["../../../src/assets/skills/employee_onboarding_training.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAoB;IACtD,GAAG,EAAE,8BAA8B;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,oVAAoV;IACtV,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,8BAA8B;QACtC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hrRequestSkill = void 0;
4
- exports.hrRequestSkill = {
5
- uid: 'hr-request-pto',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'HR Request PTO',
8
- description: 'With this skill planning time off is simple. It guides you through requesting PTO, choosing a cover, and secures your manager\'s approval, with confirmations sent across IDW and email for full visibility',
9
- abbreviation: 'HR',
10
- number: 15,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'hr-request-pto',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=hr_request_pto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hr_request_pto.js","sourceRoot":"","sources":["../../../src/assets/skills/hr_request_pto.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAoB;IAC7C,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,6MAA6M;IAC/M,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.manageKnowledgeSkill = void 0;
4
- exports.manageKnowledgeSkill = {
5
- uid: 'manage-knowledge',
6
- forRoles: ['admin', 'user'],
7
- name: 'Manage Knowledge',
8
- description: 'The Manage Knowledge Skill enables IDW users to create, share, and edit notes/knowledge entries within the organization. With this skill, you can add new knowledge, update existing entries, and ensure that content is accurate and useful for answering user questions. This feature is ideal for maintaining a robust knowledge base that can be accessed by others, allowing teams to find the right answers quickly and efficiently.',
9
- abbreviation: 'MK',
10
- number: 5,
11
- domain: 'Administration',
12
- editable: false,
13
- meta: {
14
- chatId: 'manage-knowledge',
15
- prompt: undefined,
16
- promptParams: undefined,
17
- },
18
- passages: [
19
- {
20
- content: 'The Manage Knowledge Skill enables users to create, share, and edit notes/knowledge entries within the organization. With this skill, you can add new knowledge, update existing entries, and ensure that content is accurate and useful for answering user questions. This feature is ideal for maintaining a robust knowledge base that can be accessed by others, allowing teams to find the right answers quickly and efficiently.',
21
- },
22
- ],
23
- };
24
- //# sourceMappingURL=manage_knowledge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manage_knowledge.js","sourceRoot":"","sources":["../../../src/assets/skills/manage_knowledge.ts"],"names":[],"mappings":";;;AAGa,QAAA,oBAAoB,GAAoB;IACnD,GAAG,EAAE,kBAAkB;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,4aAA4a;IACzb,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,KAAK;IAEf,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IAED,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,waAAwa;SAClb;KACF;CACF,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requestTriageSkill = void 0;
4
- exports.requestTriageSkill = {
5
- uid: 'request-triage',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Request Triage',
8
- description: 'With this skill you can categorize and prioritize user-submitted tickets by summarizing content and offering actionable recommendations, facilitating streamlined request management',
9
- abbreviation: 'RT',
10
- number: 24,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'request-triage',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=request_triage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request_triage.js","sourceRoot":"","sources":["../../../src/assets/skills/request_triage.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAoB;IACjD,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,sLAAsL;IACxL,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.salesForecastingSkill = void 0;
4
- exports.salesForecastingSkill = {
5
- uid: 'sales-forecasting',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Sales Forecasting',
8
- description: 'With this skill you can predict sales with historical data and market analysis',
9
- abbreviation: 'SF',
10
- number: 17,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'sales-forecasting',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=sales_forecasting.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sales_forecasting.js","sourceRoot":"","sources":["../../../src/assets/skills/sales_forecasting.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAoB;IACpD,GAAG,EAAE,mBAAmB;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,gFAAgF;IAC7F,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scheduleAppointmentSkill = void 0;
4
- exports.scheduleAppointmentSkill = {
5
- uid: 'schedule-appointment-web',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Schedule Appointment by Web',
8
- description: 'With this skill you can create a web-based appointment scheduling solution using generative AI, enabling clients to easily book appointments and receive reminders via SMS or email',
9
- abbreviation: 'SA',
10
- number: 22,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'schedule-appointment-web',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=schedule_appointment_web.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedule_appointment_web.js","sourceRoot":"","sources":["../../../src/assets/skills/schedule_appointment_web.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAoB;IACvD,GAAG,EAAE,0BAA0B;IAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,qLAAqL;IACvL,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.socialMediaManagementSkill = void 0;
4
- exports.socialMediaManagementSkill = {
5
- uid: 'social-media-management',
6
- forRoles: ['admin', 'user', 'anonymous'],
7
- name: 'Social Media Management',
8
- description: 'With this skill you can optimize business presence across various social platforms',
9
- abbreviation: 'SM',
10
- number: 18,
11
- domain: 'Coming soon',
12
- disabled: true,
13
- editable: false,
14
- meta: {
15
- chatId: 'social-media-management',
16
- prompt: undefined,
17
- promptParams: undefined,
18
- },
19
- passages: [],
20
- };
21
- //# sourceMappingURL=social_media_management.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"social_media_management.js","sourceRoot":"","sources":["../../../src/assets/skills/social_media_management.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAoB;IACzD,GAAG,EAAE,yBAAyB;IAC9B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IACxC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,oFAAoF;IACjG,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE;QACJ,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE,EAAE;CACb,CAAC"}