@memberjunction/ng-conversations 5.47.0 → 5.49.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 (44) hide show
  1. package/README.md +37 -0
  2. package/dist/lib/components/composer/ai-composer.component.d.ts +8 -2
  3. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  4. package/dist/lib/components/composer/ai-composer.component.js +16 -3
  5. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  6. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +90 -1
  7. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  8. package/dist/lib/components/conversation/conversation-chat-area.component.js +322 -99
  9. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  10. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +16 -1
  11. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  12. package/dist/lib/components/conversation/conversation-empty-state.component.js +62 -24
  13. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  14. package/dist/lib/components/message/message-input.component.d.ts +48 -1
  15. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  16. package/dist/lib/components/message/message-input.component.js +146 -6
  17. package/dist/lib/components/message/message-input.component.js.map +1 -1
  18. package/dist/lib/components/message/message-item.component.d.ts +13 -1
  19. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  20. package/dist/lib/components/message/message-item.component.js +307 -235
  21. package/dist/lib/components/message/message-item.component.js.map +1 -1
  22. package/dist/lib/components/message/message-list.component.d.ts +18 -1
  23. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  24. package/dist/lib/components/message/message-list.component.js +48 -4
  25. package/dist/lib/components/message/message-list.component.js.map +1 -1
  26. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +2 -2
  27. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -1
  28. package/dist/lib/components/realtime/media/realtime-media-surface.component.js +2 -2
  29. package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -1
  30. package/dist/lib/services/composer-draft-store.d.ts +52 -0
  31. package/dist/lib/services/composer-draft-store.d.ts.map +1 -0
  32. package/dist/lib/services/composer-draft-store.js +123 -0
  33. package/dist/lib/services/composer-draft-store.js.map +1 -0
  34. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  35. package/dist/lib/services/mention-autocomplete.service.js +5 -1
  36. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  37. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  38. package/dist/lib/services/realtime-session.service.js +2 -1
  39. package/dist/lib/services/realtime-session.service.js.map +1 -1
  40. package/dist/public-api.d.ts +1 -0
  41. package/dist/public-api.d.ts.map +1 -1
  42. package/dist/public-api.js +1 -0
  43. package/dist/public-api.js.map +1 -1
  44. package/package.json +29 -29
@@ -0,0 +1,123 @@
1
+ import { UserInfoEngine } from '@memberjunction/core-entities';
2
+ /**
3
+ * Per-user persistence for in-progress (un-sent) composer drafts, so a message the
4
+ * user was writing survives conversation switches, page refreshes, and devices.
5
+ *
6
+ * Storage: ONE `MJ: User Settings` row via {@link UserInfoEngine} (never
7
+ * localStorage — see the root CLAUDE.md persistence rule), key
8
+ * {@link COMPOSER_DRAFTS_SETTING}, value = a JSON map of
9
+ * `'new' | <conversationId-lowercased>` → the SERIALIZED draft (the composer's
10
+ * `getPlainTextWithJsonMentions()` format, so mention pills round-trip losslessly
11
+ * through the editor's rehydrating `writeValue`).
12
+ *
13
+ * Contracts:
14
+ * - Writes while typing are debounced (`SetSettingDebounced`); {@link Flush}
15
+ * persists immediately (blur / conversation switch).
16
+ * - Sending a message calls {@link ClearDraft}, which DELETES the key from the
17
+ * map and persists — the map only ever holds live drafts.
18
+ * - Empty/whitespace drafts are treated as clears; drafts are capped at
19
+ * {@link MAX_DRAFT_LENGTH}; the map keeps at most {@link MAX_DRAFTS} entries
20
+ * (least-recently-updated evicted).
21
+ * - The setting is read ONCE per session (UserInfoEngine's cache makes this a
22
+ * sync hit anyway); the in-memory map is authoritative afterwards. Multi-tab
23
+ * is last-write-wins by design.
24
+ */
25
+ export class ComposerDraftStore {
26
+ /** The single User Setting key holding all drafts. */
27
+ static COMPOSER_DRAFTS_SETTING = 'mj.chat.drafts.v1';
28
+ /** Map key for the new-conversation (not-yet-created) composer. */
29
+ static NEW_CONVERSATION_KEY = 'new';
30
+ /** Most drafts retained; least-recently-updated evicted beyond this. */
31
+ static MAX_DRAFTS = 20;
32
+ /** Per-draft length cap (chars of serialized text). */
33
+ static MAX_DRAFT_LENGTH = 16_000;
34
+ drafts = new Map(); // insertion order = LRU order
35
+ loaded = false;
36
+ /** Normalizes a conversation id (null = the new-conversation composer) to its map key. */
37
+ static KeyFor(conversationId) {
38
+ return conversationId ? conversationId.trim().toLowerCase() : ComposerDraftStore.NEW_CONVERSATION_KEY;
39
+ }
40
+ /** The stored draft for a conversation (or the new-convo composer), if any. */
41
+ GetDraft(conversationId) {
42
+ this.ensureLoaded();
43
+ return this.drafts.get(ComposerDraftStore.KeyFor(conversationId)) ?? null;
44
+ }
45
+ /**
46
+ * Records the current draft (debounced persistence). Empty text clears the
47
+ * entry instead — the map never holds blank drafts.
48
+ */
49
+ SetDraft(conversationId, serializedText) {
50
+ this.ensureLoaded();
51
+ const key = ComposerDraftStore.KeyFor(conversationId);
52
+ const text = (serializedText ?? '').trim().length === 0
53
+ ? ''
54
+ : serializedText.substring(0, ComposerDraftStore.MAX_DRAFT_LENGTH);
55
+ if (text.length === 0) {
56
+ if (!this.drafts.delete(key)) {
57
+ return; // nothing stored and nothing to store — no write needed
58
+ }
59
+ }
60
+ else {
61
+ if (this.drafts.get(key) === text) {
62
+ return; // unchanged — skip the write
63
+ }
64
+ this.drafts.delete(key); // re-insert to refresh LRU position
65
+ this.drafts.set(key, text);
66
+ this.evictBeyondCap();
67
+ }
68
+ console.log(`[Drafts] SetDraft('${key}'): ${text.length} chars → debounced persist (${this.drafts.size} draft(s))`);
69
+ UserInfoEngine.Instance.SetSettingDebounced(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize());
70
+ }
71
+ /** Deletes a conversation's draft (message sent / draft abandoned) and persists immediately. */
72
+ ClearDraft(conversationId) {
73
+ this.ensureLoaded();
74
+ if (this.drafts.delete(ComposerDraftStore.KeyFor(conversationId))) {
75
+ void UserInfoEngine.Instance.SetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize());
76
+ }
77
+ }
78
+ /** Persists the current map immediately (blur / conversation switch / teardown). */
79
+ Flush() {
80
+ if (!this.loaded) {
81
+ return; // nothing ever read or written
82
+ }
83
+ console.log(`[Drafts] Flush: persisting ${this.drafts.size} draft(s) immediately`);
84
+ void UserInfoEngine.Instance.SetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize())
85
+ .then((ok) => { if (!ok)
86
+ console.warn('[Drafts] Flush: SetSetting reported failure'); })
87
+ .catch((e) => console.warn('[Drafts] Flush: SetSetting threw', e));
88
+ }
89
+ ensureLoaded() {
90
+ if (this.loaded) {
91
+ return;
92
+ }
93
+ this.loaded = true;
94
+ try {
95
+ const raw = UserInfoEngine.Instance.GetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING);
96
+ if (raw) {
97
+ const parsed = JSON.parse(raw);
98
+ for (const [key, value] of Object.entries(parsed)) {
99
+ if (typeof value === 'string' && value.trim().length > 0) {
100
+ this.drafts.set(key, value);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ catch {
106
+ // Corrupt/legacy payload — start clean; the next write repairs the row.
107
+ this.drafts.clear();
108
+ }
109
+ }
110
+ evictBeyondCap() {
111
+ while (this.drafts.size > ComposerDraftStore.MAX_DRAFTS) {
112
+ const oldest = this.drafts.keys().next().value;
113
+ if (oldest === undefined) {
114
+ break;
115
+ }
116
+ this.drafts.delete(oldest);
117
+ }
118
+ }
119
+ serialize() {
120
+ return JSON.stringify(Object.fromEntries(this.drafts));
121
+ }
122
+ }
123
+ //# sourceMappingURL=composer-draft-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer-draft-store.js","sourceRoot":"","sources":["../../../src/lib/services/composer-draft-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { UserInfoEngine } from '@memberjunction/core-entities';\n\n/**\n * Per-user persistence for in-progress (un-sent) composer drafts, so a message the\n * user was writing survives conversation switches, page refreshes, and devices.\n *\n * Storage: ONE `MJ: User Settings` row via {@link UserInfoEngine} (never\n * localStorage — see the root CLAUDE.md persistence rule), key\n * {@link COMPOSER_DRAFTS_SETTING}, value = a JSON map of\n * `'new' | <conversationId-lowercased>` → the SERIALIZED draft (the composer's\n * `getPlainTextWithJsonMentions()` format, so mention pills round-trip losslessly\n * through the editor's rehydrating `writeValue`).\n *\n * Contracts:\n * - Writes while typing are debounced (`SetSettingDebounced`); {@link Flush}\n * persists immediately (blur / conversation switch).\n * - Sending a message calls {@link ClearDraft}, which DELETES the key from the\n * map and persists — the map only ever holds live drafts.\n * - Empty/whitespace drafts are treated as clears; drafts are capped at\n * {@link MAX_DRAFT_LENGTH}; the map keeps at most {@link MAX_DRAFTS} entries\n * (least-recently-updated evicted).\n * - The setting is read ONCE per session (UserInfoEngine's cache makes this a\n * sync hit anyway); the in-memory map is authoritative afterwards. Multi-tab\n * is last-write-wins by design.\n */\nexport class ComposerDraftStore {\n /** The single User Setting key holding all drafts. */\n public static readonly COMPOSER_DRAFTS_SETTING = 'mj.chat.drafts.v1';\n /** Map key for the new-conversation (not-yet-created) composer. */\n public static readonly NEW_CONVERSATION_KEY = 'new';\n /** Most drafts retained; least-recently-updated evicted beyond this. */\n public static readonly MAX_DRAFTS = 20;\n /** Per-draft length cap (chars of serialized text). */\n public static readonly MAX_DRAFT_LENGTH = 16_000;\n\n private drafts = new Map<string, string>(); // insertion order = LRU order\n private loaded = false;\n\n /** Normalizes a conversation id (null = the new-conversation composer) to its map key. */\n public static KeyFor(conversationId: string | null | undefined): string {\n return conversationId ? conversationId.trim().toLowerCase() : ComposerDraftStore.NEW_CONVERSATION_KEY;\n }\n\n /** The stored draft for a conversation (or the new-convo composer), if any. */\n public GetDraft(conversationId: string | null | undefined): string | null {\n this.ensureLoaded();\n return this.drafts.get(ComposerDraftStore.KeyFor(conversationId)) ?? null;\n }\n\n /**\n * Records the current draft (debounced persistence). Empty text clears the\n * entry instead — the map never holds blank drafts.\n */\n public SetDraft(conversationId: string | null | undefined, serializedText: string): void {\n this.ensureLoaded();\n const key = ComposerDraftStore.KeyFor(conversationId);\n const text = (serializedText ?? '').trim().length === 0\n ? ''\n : serializedText.substring(0, ComposerDraftStore.MAX_DRAFT_LENGTH);\n if (text.length === 0) {\n if (!this.drafts.delete(key)) {\n return; // nothing stored and nothing to store — no write needed\n }\n } else {\n if (this.drafts.get(key) === text) {\n return; // unchanged — skip the write\n }\n this.drafts.delete(key); // re-insert to refresh LRU position\n this.drafts.set(key, text);\n this.evictBeyondCap();\n }\n console.log(`[Drafts] SetDraft('${key}'): ${text.length} chars → debounced persist (${this.drafts.size} draft(s))`);\n UserInfoEngine.Instance.SetSettingDebounced(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize());\n }\n\n /** Deletes a conversation's draft (message sent / draft abandoned) and persists immediately. */\n public ClearDraft(conversationId: string | null | undefined): void {\n this.ensureLoaded();\n if (this.drafts.delete(ComposerDraftStore.KeyFor(conversationId))) {\n void UserInfoEngine.Instance.SetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize());\n }\n }\n\n /** Persists the current map immediately (blur / conversation switch / teardown). */\n public Flush(): void {\n if (!this.loaded) {\n return; // nothing ever read or written\n }\n console.log(`[Drafts] Flush: persisting ${this.drafts.size} draft(s) immediately`);\n void UserInfoEngine.Instance.SetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING, this.serialize())\n .then((ok) => { if (!ok) console.warn('[Drafts] Flush: SetSetting reported failure'); })\n .catch((e) => console.warn('[Drafts] Flush: SetSetting threw', e));\n }\n\n private ensureLoaded(): void {\n if (this.loaded) {\n return;\n }\n this.loaded = true;\n try {\n const raw = UserInfoEngine.Instance.GetSetting(ComposerDraftStore.COMPOSER_DRAFTS_SETTING);\n if (raw) {\n const parsed = JSON.parse(raw) as Record<string, string>;\n for (const [key, value] of Object.entries(parsed)) {\n if (typeof value === 'string' && value.trim().length > 0) {\n this.drafts.set(key, value);\n }\n }\n }\n } catch {\n // Corrupt/legacy payload — start clean; the next write repairs the row.\n this.drafts.clear();\n }\n }\n\n private evictBeyondCap(): void {\n while (this.drafts.size > ComposerDraftStore.MAX_DRAFTS) {\n const oldest = this.drafts.keys().next().value as string | undefined;\n if (oldest === undefined) {\n break;\n }\n this.drafts.delete(oldest);\n }\n }\n\n private serialize(): string {\n return JSON.stringify(Object.fromEntries(this.drafts));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mention-autocomplete.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAY,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,6BAA6B,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IACvF,SAAS;IAIT,qEAAqE;IACrE,WAAkB,QAAQ,IAAI,0BAA0B,CAEvD;IAED,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAmB;IACvC,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAyB;IAC5C,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D,+EAA+E;IAC/E,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpF;;OAEG;YACW,mBAAmB;IAuCjC;;;;OAIG;YACW,2BAA2B;IAkBzC;;;;OAIG;YACW,2BAA2B;IAUzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,EAAE,OAAO,GAAE,MAAY,GAAG,iBAAiB,EAAE;IA6DvG;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IA2CpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,kBAAkB,IAAI,uBAAuB,EAAE;IAI/C;;OAEG;IACH,iBAAiB,IAAI,QAAQ,EAAE;IAI/B;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAIpC;;OAEG;IACH,mBAAmB,IAAI,SAAS,EAAE;IAIlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACG,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
1
+ {"version":3,"file":"mention-autocomplete.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAY,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,6BAA6B,CAAC;AAEzF;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IACvF,SAAS;IAIT,qEAAqE;IACrE,WAAkB,QAAQ,IAAI,0BAA0B,CAEvD;IAED,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAmB;IACvC,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAyB;IAC5C,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D,+EAA+E;IAC/E,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpF;;OAEG;YACW,mBAAmB;IAuCjC;;;;OAIG;YACW,2BAA2B;IAkBzC;;;;OAIG;YACW,2BAA2B;IAUzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,EAAE,OAAO,GAAE,MAAY,GAAG,iBAAiB,EAAE;IA6DvG;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IA+CpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,kBAAkB,IAAI,uBAAuB,EAAE;IAI/C;;OAEG;IACH,iBAAiB,IAAI,QAAQ,EAAE;IAI/B;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAIpC;;OAEG;IACH,mBAAmB,IAAI,SAAS,EAAE;IAIlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACG,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
@@ -250,7 +250,7 @@ export class MentionAutocompleteService extends BaseSingleton {
250
250
  */
251
251
  getEntityAndQuerySuggestions(query) {
252
252
  const lowerQuery = query.toLowerCase().trim();
253
- const MAX_SUGGESTIONS = 12;
253
+ const MAX_SUGGESTIONS = 50;
254
254
  const entityItems = this.entitiesCache.map(entity => ({
255
255
  label: entity.DisplayNameOrName,
256
256
  score: Math.max(this.calculateMatchScore(entity.Name || '', lowerQuery), this.calculateMatchScore(entity.DisplayName || '', lowerQuery)),
@@ -280,6 +280,10 @@ export class MentionAutocompleteService extends BaseSingleton {
280
280
  .sort((a, b) => {
281
281
  if (b.score !== a.score)
282
282
  return b.score - a.score;
283
+ // When scores tie, prioritize entities over queries
284
+ if (a.suggestion.type !== b.suggestion.type) {
285
+ return a.suggestion.type === 'entity' ? -1 : 1;
286
+ }
283
287
  return a.label.localeCompare(b.label);
284
288
  })
285
289
  .slice(0, MAX_SUGGESTIONS)
@@ -1 +1 @@
1
- {"version":3,"file":"mention-autocomplete.service.js","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { MJAISkillEntity } from '@memberjunction/core-entities';\nimport { UserInfo, Metadata, EntityInfo, QueryInfo, IMetadataProvider } from '@memberjunction/core';\nimport { AIEngineBase, AIAgentPermissionHelper, AISkillPermissionHelper } from '@memberjunction/ai-engine-base';\nimport { BaseSingleton } from '@memberjunction/global';\nimport { MentionSuggestion, MentionSuggestionPreset } from '@memberjunction/ng-composer';\n\n/**\n * Shared engine behind the conversations composer plugins (the agent-mentions /\n * record-mentions / skill-commands `ComposerTriggerProvider`s) and the mention-parsing\n * consumers (message routing, saved-message badge rendering). Loads the\n * permission-filtered agent / user / entity / query / skill caches once per session and\n * serves ranked `MentionSuggestion` lists per trigger char.\n *\n * NOT an Angular DI service — it's a `BaseSingleton` engine so the\n * ClassFactory-instantiated trigger providers (which live outside Angular DI) and the\n * Angular components share ONE instance (one cache warm-up) via\n * `MentionAutocompleteService.Instance`.\n */\nexport class MentionAutocompleteService extends BaseSingleton<MentionAutocompleteService> {\n protected constructor() {\n super();\n }\n\n /** The process-wide shared instance (Global Object Store backed). */\n public static get Instance(): MentionAutocompleteService {\n return super.getInstance<MentionAutocompleteService>();\n }\n\n private agentsCache: MJAIAgentEntityExtended[] = [];\n private usersCache: UserInfo[] = [];\n private entitiesCache: EntityInfo[] = [];\n private queriesCache: QueryInfo[] = [];\n /** Active skills the current user can Run — surfaced under the '/' trigger. */\n private skillsCache: MJAISkillEntity[] = [];\n /** Default icon for a skill with no IconClass of its own. */\n private defaultSkillIcon = 'fa-solid fa-wand-magic-sparkles';\n /** Generic icon for all query mentions, sourced from the 'MJ: Queries' entity. */\n private queriesEntityIcon = 'fa-solid fa-database';\n private isInitialized = false;\n private initializationPromise: Promise<void> | null = null;\n\n /** True once the caches have loaded (agents/users/entities/queries/skills). */\n public get IsInitialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Initialize the service by loading agents and users\n * Prevents concurrent initialization with promise lock\n */\n async initialize(currentUser: UserInfo, provider?: IMetadataProvider): Promise<void> {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n\n // Create initialization promise and store it\n this.initializationPromise = this._initializeInternal(currentUser, provider);\n\n try {\n await this.initializationPromise;\n } finally {\n this.initializationPromise = null;\n }\n }\n\n /**\n * Internal initialization logic\n */\n private async _initializeInternal(currentUser: UserInfo, provider?: IMetadataProvider): Promise<void> {\n try {\n // Load agents from AIEngineBase\n await AIEngineBase.Instance.Config(false);\n\n const allAgents = AIEngineBase.Instance.Agents || [];\n\n // Filter by status, hierarchy, and invocation mode first\n const candidateAgents = allAgents.filter(\n a => !a.ParentID && a.Status === 'Active' && a.InvocationMode !== 'Sub-Agent' && !a.IsRestricted\n );\n\n // Filter by user's 'run' permission — respects open-by-default + explicit permissions\n this.agentsCache = await this.filterAgentsByRunPermission(candidateAgents, currentUser);\n\n // Load users from the system (optional - can be expanded later)\n // For now, we'll just use the current user\n this.usersCache = [currentUser];\n\n // Load entities the current user can read (candidates for #entity mentions)\n this.entitiesCache = this.loadReadableEntities(currentUser, provider);\n\n // Load queries the current user can run (also surfaced under the '#' trigger)\n this.queriesCache = this.loadRunnableQueries(currentUser, provider);\n this.queriesEntityIcon = this.resolveQueriesEntityIcon(provider);\n\n // Load Active skills the current user can Run (surfaced under the '/' trigger). Mirrors the\n // agent filter: open-by-default unless a skill has explicit permission rows. The agent's\n // AcceptsSkills gate is applied server-side at run time, so the picker shows the user's full\n // run-permitted set regardless of which agent ends up handling the message.\n this.skillsCache = await this.filterSkillsByRunPermission(currentUser);\n\n this.isInitialized = true;\n } catch (error) {\n console.error('Failed to initialize MentionAutocompleteService:', error);\n throw error;\n }\n }\n\n /**\n * Filter agents to only those the current user has 'run' permission for.\n * Agents with no permission records are open to everyone (canRun = true).\n * Agents with explicit permission records are checked against the user.\n */\n private async filterAgentsByRunPermission(\n agents: MJAIAgentEntityExtended[],\n user: UserInfo\n ): Promise<MJAIAgentEntityExtended[]> {\n const permitted: MJAIAgentEntityExtended[] = [];\n for (const agent of agents) {\n try {\n const canRun = await AIAgentPermissionHelper.HasPermission(agent.ID, user, 'run');\n if (canRun) {\n permitted.push(agent);\n }\n } catch {\n // Fail closed — exclude agent on error\n }\n }\n return permitted;\n }\n\n /**\n * Filter Active skills to those the current user has 'run' permission for.\n * Skills with no permission records are open to everyone (canRun = true);\n * skills with explicit records are checked against the user (open-by-default).\n */\n private async filterSkillsByRunPermission(user: UserInfo): Promise<MJAISkillEntity[]> {\n try {\n const runnable = await AISkillPermissionHelper.GetAccessibleSkills(user, 'run');\n return runnable.filter(s => s.Status === 'Active');\n } catch {\n // Fail closed — no skills on error.\n return [];\n }\n }\n\n /**\n * Load entities the current user has read permission for.\n * These are the candidates surfaced for #entity mentions.\n */\n private loadReadableEntities(user: UserInfo, provider?: IMetadataProvider): EntityInfo[] {\n try {\n const md = provider ?? new Metadata();\n return (md.Entities || []).filter(entity => {\n try {\n return entity.GetUserPermisions(user).CanRead;\n } catch {\n // Fail closed — exclude entity on permission-check error\n return false;\n }\n });\n } catch (error) {\n console.error('Failed to load entities for mention autocomplete:', error);\n return [];\n }\n }\n\n /**\n * Load queries the current user has run permission for.\n * These are the candidates surfaced for #query mentions.\n */\n private loadRunnableQueries(user: UserInfo, provider?: IMetadataProvider): QueryInfo[] {\n try {\n const md = provider ?? new Metadata();\n return (md.Queries || []).filter(query => {\n try {\n return query.UserCanRun(user);\n } catch {\n // Fail closed — exclude query on permission-check error\n return false;\n }\n });\n } catch (error) {\n console.error('Failed to load queries for mention autocomplete:', error);\n return [];\n }\n }\n\n /**\n * Resolve the generic icon used for all query mentions from the 'MJ: Queries' entity.\n */\n private resolveQueriesEntityIcon(provider?: IMetadataProvider): string {\n try {\n const md = provider ?? new Metadata();\n return md.EntityByName('MJ: Queries')?.Icon || 'fa-solid fa-database';\n } catch {\n return 'fa-solid fa-database';\n }\n }\n\n /**\n * Get suggestions based on search query\n * @param query The search text after @ symbol\n * @param includeUsers Whether to include users in suggestions\n * @returns Filtered and ranked suggestions\n */\n getSuggestions(query: string, includeUsers: boolean = true, trigger: string = '@'): MentionSuggestion[] {\n // The '#' trigger searches entities + queries; '/' searches skills; '@' searches agents + users\n if (trigger === '#') {\n return this.getEntityAndQuerySuggestions(query);\n }\n if (trigger === '/') {\n return this.getSkillSuggestions(query);\n }\n\n const lowerQuery = query.toLowerCase().trim();\n const suggestions: MentionSuggestion[] = [];\n\n // Add agent suggestions\n for (const agent of this.agentsCache) {\n const score = this.calculateMatchScore(agent.Name || '', lowerQuery);\n if (score > 0 || !lowerQuery) {\n suggestions.push({\n type: 'agent',\n id: agent.ID,\n name: agent.Name || 'Unknown',\n displayName: agent.Name || 'Unknown',\n description: agent.Description || undefined,\n imageUrl: agent.LogoURL || undefined, // Agent logo/avatar image\n icon: this.getAgentIcon(agent),\n // Configuration presets ride on the suggestion — the (AI-blind) composer\n // renders a preset picker on the inserted chip when there are 2+.\n presets: this.getAgentPresets(agent.ID)\n });\n }\n }\n\n // Add user suggestions (if enabled)\n if (includeUsers) {\n for (const user of this.usersCache) {\n const score = this.calculateMatchScore(user.Name, lowerQuery);\n if (score > 0 || !lowerQuery) {\n suggestions.push({\n type: 'user',\n id: user.ID,\n name: user.Name,\n displayName: user.Name,\n description: user.Email || undefined\n });\n }\n }\n }\n\n // Sort by relevance: exact match > starts with > contains\n return suggestions.sort((a, b) => {\n const scoreA = this.calculateMatchScore(a.name, lowerQuery);\n const scoreB = this.calculateMatchScore(b.name, lowerQuery);\n if (scoreB !== scoreA) return scoreB - scoreA;\n\n // If scores are equal, sort agents before users\n if (a.type !== b.type) return a.type === 'agent' ? -1 : 1;\n\n // Otherwise alphabetically\n return a.name.localeCompare(b.name);\n });\n }\n\n /**\n * Get entity + query suggestions for #mentions, ranked by query match.\n * Capped to keep the dropdown light (entity/query sets can be large).\n */\n private getEntityAndQuerySuggestions(query: string): MentionSuggestion[] {\n const lowerQuery = query.toLowerCase().trim();\n const MAX_SUGGESTIONS = 12;\n\n const entityItems = this.entitiesCache.map(entity => ({\n label: entity.DisplayNameOrName,\n score: Math.max(\n this.calculateMatchScore(entity.Name || '', lowerQuery),\n this.calculateMatchScore(entity.DisplayName || '', lowerQuery)\n ),\n suggestion: {\n type: 'entity' as const,\n id: entity.ID,\n name: entity.Name,\n displayName: entity.DisplayNameOrName,\n description: entity.Description || undefined,\n icon: entity.Icon || 'fa-solid fa-table'\n }\n }));\n\n const queryItems = this.queriesCache.map(q => ({\n label: q.Name || '',\n score: this.calculateMatchScore(q.Name || '', lowerQuery),\n suggestion: {\n type: 'query' as const,\n id: q.ID,\n name: q.Name || '',\n displayName: q.Name || '',\n description: q.Description || undefined,\n icon: this.queriesEntityIcon\n }\n }));\n\n return [...entityItems, ...queryItems]\n .filter(x => x.score > 0 || !lowerQuery)\n .sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n return a.label.localeCompare(b.label);\n })\n .slice(0, MAX_SUGGESTIONS)\n .map(x => x.suggestion);\n }\n\n /**\n * Get skill suggestions for '/'-mentions, ranked by query match. Each carries the skill's own\n * IconClass/Color (UX metadata) so the dropdown + inserted chip render distinctly per skill.\n */\n private getSkillSuggestions(query: string): MentionSuggestion[] {\n const lowerQuery = query.toLowerCase().trim();\n const MAX_SUGGESTIONS = 12;\n\n return this.skillsCache\n .map(skill => ({\n score: this.calculateMatchScore(skill.Name || '', lowerQuery),\n suggestion: {\n type: 'skill' as const,\n id: skill.ID,\n name: skill.Name || 'Unknown Skill',\n displayName: skill.Name || 'Unknown Skill',\n description: skill.Description || undefined,\n icon: skill.IconClass || this.defaultSkillIcon,\n color: skill.Color || undefined\n }\n }))\n .filter(x => x.score > 0 || !lowerQuery)\n .sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n return a.suggestion.name.localeCompare(b.suggestion.name);\n })\n .slice(0, MAX_SUGGESTIONS)\n .map(x => x.suggestion);\n }\n\n /**\n * Calculate match score for ranking\n * Higher score = better match\n */\n private calculateMatchScore(name: string, query: string): number {\n if (!query) return 1; // Show all if no query\n\n const lowerName = name.toLowerCase();\n const lowerQuery = query.toLowerCase();\n\n // Exact match\n if (lowerName === lowerQuery) return 100;\n\n // Starts with\n if (lowerName.startsWith(lowerQuery)) return 50;\n\n // Contains\n if (lowerName.includes(lowerQuery)) return 25;\n\n // Word boundary match (e.g., \"MA\" matches \"Marketing Agent\")\n const words = lowerName.split(/\\s+/);\n for (const word of words) {\n if (word.startsWith(lowerQuery)) return 40;\n }\n\n return 0; // No match\n }\n\n /**\n * Map an agent's AI Agent Configuration presets into the composer's generic\n * `MentionSuggestionPreset` shape so the chip's preset picker works without the\n * composer knowing anything about agents.\n *\n * IMPORTANT: preset.ID is the AIAgentConfiguration.ID (preset ID), not\n * AIConfigurationID — the backend mapping converts preset ID -> AIConfigurationID.\n */\n private getAgentPresets(agentId: string): MentionSuggestionPreset[] | undefined {\n try {\n const presets = AIEngineBase.Instance.GetAgentConfigurationPresets(agentId, true);\n if (!presets || presets.length === 0) {\n return undefined;\n }\n return presets.map(p => ({\n ID: p.ID,\n Name: p.Name,\n DisplayName: p.DisplayName || undefined,\n Description: p.Description || undefined,\n IsDefault: p.IsDefault\n }));\n } catch {\n // Presets are a chip nicety — never let them break suggestion building\n return undefined;\n }\n }\n\n /**\n * Get icon for agent based on type/name\n */\n private getAgentIcon(agent: MJAIAgentEntityExtended): string {\n // Use agent's icon if available, otherwise default based on type\n if (agent.IconClass) return agent.IconClass;\n\n // Default icons based on agent name patterns\n const name = agent.Name?.toLowerCase() || '';\n if (name.includes('marketing')) return 'fa-megaphone';\n if (name.includes('data') || name.includes('analysis')) return 'fa-chart-line';\n if (name.includes('code') || name.includes('developer')) return 'fa-code';\n if (name.includes('design')) return 'fa-palette';\n if (name.includes('conversation') || name.includes('manager')) return 'fa-comments';\n\n return 'fa-robot'; // Default\n }\n\n /**\n * Get available agents for parsing\n */\n getAvailableAgents(): MJAIAgentEntityExtended[] {\n return this.agentsCache;\n }\n\n /**\n * Get available users for parsing\n */\n getAvailableUsers(): UserInfo[] {\n return this.usersCache;\n }\n\n /**\n * Get available entities for parsing\n */\n getAvailableEntities(): EntityInfo[] {\n return this.entitiesCache;\n }\n\n /**\n * Get available queries for parsing\n */\n getAvailableQueries(): QueryInfo[] {\n return this.queriesCache;\n }\n\n /**\n * Get the generic icon used for all query mentions.\n */\n getQueriesEntityIcon(): string {\n return this.queriesEntityIcon;\n }\n\n /**\n * Refresh the caches\n * Resets initialization state and reloads agents\n */\n async refresh(currentUser: UserInfo): Promise<void> {\n this.isInitialized = false;\n this.initializationPromise = null;\n await this.initialize(currentUser);\n }\n}\n"]}
1
+ {"version":3,"file":"mention-autocomplete.service.js","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { MJAISkillEntity } from '@memberjunction/core-entities';\nimport { UserInfo, Metadata, EntityInfo, QueryInfo, IMetadataProvider } from '@memberjunction/core';\nimport { AIEngineBase, AIAgentPermissionHelper, AISkillPermissionHelper } from '@memberjunction/ai-engine-base';\nimport { BaseSingleton } from '@memberjunction/global';\nimport { MentionSuggestion, MentionSuggestionPreset } from '@memberjunction/ng-composer';\n\n/**\n * Shared engine behind the conversations composer plugins (the agent-mentions /\n * record-mentions / skill-commands `ComposerTriggerProvider`s) and the mention-parsing\n * consumers (message routing, saved-message badge rendering). Loads the\n * permission-filtered agent / user / entity / query / skill caches once per session and\n * serves ranked `MentionSuggestion` lists per trigger char.\n *\n * NOT an Angular DI service — it's a `BaseSingleton` engine so the\n * ClassFactory-instantiated trigger providers (which live outside Angular DI) and the\n * Angular components share ONE instance (one cache warm-up) via\n * `MentionAutocompleteService.Instance`.\n */\nexport class MentionAutocompleteService extends BaseSingleton<MentionAutocompleteService> {\n protected constructor() {\n super();\n }\n\n /** The process-wide shared instance (Global Object Store backed). */\n public static get Instance(): MentionAutocompleteService {\n return super.getInstance<MentionAutocompleteService>();\n }\n\n private agentsCache: MJAIAgentEntityExtended[] = [];\n private usersCache: UserInfo[] = [];\n private entitiesCache: EntityInfo[] = [];\n private queriesCache: QueryInfo[] = [];\n /** Active skills the current user can Run — surfaced under the '/' trigger. */\n private skillsCache: MJAISkillEntity[] = [];\n /** Default icon for a skill with no IconClass of its own. */\n private defaultSkillIcon = 'fa-solid fa-wand-magic-sparkles';\n /** Generic icon for all query mentions, sourced from the 'MJ: Queries' entity. */\n private queriesEntityIcon = 'fa-solid fa-database';\n private isInitialized = false;\n private initializationPromise: Promise<void> | null = null;\n\n /** True once the caches have loaded (agents/users/entities/queries/skills). */\n public get IsInitialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Initialize the service by loading agents and users\n * Prevents concurrent initialization with promise lock\n */\n async initialize(currentUser: UserInfo, provider?: IMetadataProvider): Promise<void> {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n\n // Create initialization promise and store it\n this.initializationPromise = this._initializeInternal(currentUser, provider);\n\n try {\n await this.initializationPromise;\n } finally {\n this.initializationPromise = null;\n }\n }\n\n /**\n * Internal initialization logic\n */\n private async _initializeInternal(currentUser: UserInfo, provider?: IMetadataProvider): Promise<void> {\n try {\n // Load agents from AIEngineBase\n await AIEngineBase.Instance.Config(false);\n\n const allAgents = AIEngineBase.Instance.Agents || [];\n\n // Filter by status, hierarchy, and invocation mode first\n const candidateAgents = allAgents.filter(\n a => !a.ParentID && a.Status === 'Active' && a.InvocationMode !== 'Sub-Agent' && !a.IsRestricted\n );\n\n // Filter by user's 'run' permission — respects open-by-default + explicit permissions\n this.agentsCache = await this.filterAgentsByRunPermission(candidateAgents, currentUser);\n\n // Load users from the system (optional - can be expanded later)\n // For now, we'll just use the current user\n this.usersCache = [currentUser];\n\n // Load entities the current user can read (candidates for #entity mentions)\n this.entitiesCache = this.loadReadableEntities(currentUser, provider);\n\n // Load queries the current user can run (also surfaced under the '#' trigger)\n this.queriesCache = this.loadRunnableQueries(currentUser, provider);\n this.queriesEntityIcon = this.resolveQueriesEntityIcon(provider);\n\n // Load Active skills the current user can Run (surfaced under the '/' trigger). Mirrors the\n // agent filter: open-by-default unless a skill has explicit permission rows. The agent's\n // AcceptsSkills gate is applied server-side at run time, so the picker shows the user's full\n // run-permitted set regardless of which agent ends up handling the message.\n this.skillsCache = await this.filterSkillsByRunPermission(currentUser);\n\n this.isInitialized = true;\n } catch (error) {\n console.error('Failed to initialize MentionAutocompleteService:', error);\n throw error;\n }\n }\n\n /**\n * Filter agents to only those the current user has 'run' permission for.\n * Agents with no permission records are open to everyone (canRun = true).\n * Agents with explicit permission records are checked against the user.\n */\n private async filterAgentsByRunPermission(\n agents: MJAIAgentEntityExtended[],\n user: UserInfo\n ): Promise<MJAIAgentEntityExtended[]> {\n const permitted: MJAIAgentEntityExtended[] = [];\n for (const agent of agents) {\n try {\n const canRun = await AIAgentPermissionHelper.HasPermission(agent.ID, user, 'run');\n if (canRun) {\n permitted.push(agent);\n }\n } catch {\n // Fail closed — exclude agent on error\n }\n }\n return permitted;\n }\n\n /**\n * Filter Active skills to those the current user has 'run' permission for.\n * Skills with no permission records are open to everyone (canRun = true);\n * skills with explicit records are checked against the user (open-by-default).\n */\n private async filterSkillsByRunPermission(user: UserInfo): Promise<MJAISkillEntity[]> {\n try {\n const runnable = await AISkillPermissionHelper.GetAccessibleSkills(user, 'run');\n return runnable.filter(s => s.Status === 'Active');\n } catch {\n // Fail closed — no skills on error.\n return [];\n }\n }\n\n /**\n * Load entities the current user has read permission for.\n * These are the candidates surfaced for #entity mentions.\n */\n private loadReadableEntities(user: UserInfo, provider?: IMetadataProvider): EntityInfo[] {\n try {\n const md = provider ?? new Metadata();\n return (md.Entities || []).filter(entity => {\n try {\n return entity.GetUserPermisions(user).CanRead;\n } catch {\n // Fail closed — exclude entity on permission-check error\n return false;\n }\n });\n } catch (error) {\n console.error('Failed to load entities for mention autocomplete:', error);\n return [];\n }\n }\n\n /**\n * Load queries the current user has run permission for.\n * These are the candidates surfaced for #query mentions.\n */\n private loadRunnableQueries(user: UserInfo, provider?: IMetadataProvider): QueryInfo[] {\n try {\n const md = provider ?? new Metadata();\n return (md.Queries || []).filter(query => {\n try {\n return query.UserCanRun(user);\n } catch {\n // Fail closed — exclude query on permission-check error\n return false;\n }\n });\n } catch (error) {\n console.error('Failed to load queries for mention autocomplete:', error);\n return [];\n }\n }\n\n /**\n * Resolve the generic icon used for all query mentions from the 'MJ: Queries' entity.\n */\n private resolveQueriesEntityIcon(provider?: IMetadataProvider): string {\n try {\n const md = provider ?? new Metadata();\n return md.EntityByName('MJ: Queries')?.Icon || 'fa-solid fa-database';\n } catch {\n return 'fa-solid fa-database';\n }\n }\n\n /**\n * Get suggestions based on search query\n * @param query The search text after @ symbol\n * @param includeUsers Whether to include users in suggestions\n * @returns Filtered and ranked suggestions\n */\n getSuggestions(query: string, includeUsers: boolean = true, trigger: string = '@'): MentionSuggestion[] {\n // The '#' trigger searches entities + queries; '/' searches skills; '@' searches agents + users\n if (trigger === '#') {\n return this.getEntityAndQuerySuggestions(query);\n }\n if (trigger === '/') {\n return this.getSkillSuggestions(query);\n }\n\n const lowerQuery = query.toLowerCase().trim();\n const suggestions: MentionSuggestion[] = [];\n\n // Add agent suggestions\n for (const agent of this.agentsCache) {\n const score = this.calculateMatchScore(agent.Name || '', lowerQuery);\n if (score > 0 || !lowerQuery) {\n suggestions.push({\n type: 'agent',\n id: agent.ID,\n name: agent.Name || 'Unknown',\n displayName: agent.Name || 'Unknown',\n description: agent.Description || undefined,\n imageUrl: agent.LogoURL || undefined, // Agent logo/avatar image\n icon: this.getAgentIcon(agent),\n // Configuration presets ride on the suggestion — the (AI-blind) composer\n // renders a preset picker on the inserted chip when there are 2+.\n presets: this.getAgentPresets(agent.ID)\n });\n }\n }\n\n // Add user suggestions (if enabled)\n if (includeUsers) {\n for (const user of this.usersCache) {\n const score = this.calculateMatchScore(user.Name, lowerQuery);\n if (score > 0 || !lowerQuery) {\n suggestions.push({\n type: 'user',\n id: user.ID,\n name: user.Name,\n displayName: user.Name,\n description: user.Email || undefined\n });\n }\n }\n }\n\n // Sort by relevance: exact match > starts with > contains\n return suggestions.sort((a, b) => {\n const scoreA = this.calculateMatchScore(a.name, lowerQuery);\n const scoreB = this.calculateMatchScore(b.name, lowerQuery);\n if (scoreB !== scoreA) return scoreB - scoreA;\n\n // If scores are equal, sort agents before users\n if (a.type !== b.type) return a.type === 'agent' ? -1 : 1;\n\n // Otherwise alphabetically\n return a.name.localeCompare(b.name);\n });\n }\n\n /**\n * Get entity + query suggestions for #mentions, ranked by query match.\n * Capped to keep the dropdown light (entity/query sets can be large).\n */\n private getEntityAndQuerySuggestions(query: string): MentionSuggestion[] {\n const lowerQuery = query.toLowerCase().trim();\n const MAX_SUGGESTIONS = 50;\n\n const entityItems = this.entitiesCache.map(entity => ({\n label: entity.DisplayNameOrName,\n score: Math.max(\n this.calculateMatchScore(entity.Name || '', lowerQuery),\n this.calculateMatchScore(entity.DisplayName || '', lowerQuery)\n ),\n suggestion: {\n type: 'entity' as const,\n id: entity.ID,\n name: entity.Name,\n displayName: entity.DisplayNameOrName,\n description: entity.Description || undefined,\n icon: entity.Icon || 'fa-solid fa-table'\n }\n }));\n\n const queryItems = this.queriesCache.map(q => ({\n label: q.Name || '',\n score: this.calculateMatchScore(q.Name || '', lowerQuery),\n suggestion: {\n type: 'query' as const,\n id: q.ID,\n name: q.Name || '',\n displayName: q.Name || '',\n description: q.Description || undefined,\n icon: this.queriesEntityIcon\n }\n }));\n\n return [...entityItems, ...queryItems]\n .filter(x => x.score > 0 || !lowerQuery)\n .sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n // When scores tie, prioritize entities over queries\n if (a.suggestion.type !== b.suggestion.type) {\n return a.suggestion.type === 'entity' ? -1 : 1;\n }\n return a.label.localeCompare(b.label);\n })\n .slice(0, MAX_SUGGESTIONS)\n .map(x => x.suggestion);\n }\n\n /**\n * Get skill suggestions for '/'-mentions, ranked by query match. Each carries the skill's own\n * IconClass/Color (UX metadata) so the dropdown + inserted chip render distinctly per skill.\n */\n private getSkillSuggestions(query: string): MentionSuggestion[] {\n const lowerQuery = query.toLowerCase().trim();\n const MAX_SUGGESTIONS = 12;\n\n return this.skillsCache\n .map(skill => ({\n score: this.calculateMatchScore(skill.Name || '', lowerQuery),\n suggestion: {\n type: 'skill' as const,\n id: skill.ID,\n name: skill.Name || 'Unknown Skill',\n displayName: skill.Name || 'Unknown Skill',\n description: skill.Description || undefined,\n icon: skill.IconClass || this.defaultSkillIcon,\n color: skill.Color || undefined\n }\n }))\n .filter(x => x.score > 0 || !lowerQuery)\n .sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n return a.suggestion.name.localeCompare(b.suggestion.name);\n })\n .slice(0, MAX_SUGGESTIONS)\n .map(x => x.suggestion);\n }\n\n /**\n * Calculate match score for ranking\n * Higher score = better match\n */\n private calculateMatchScore(name: string, query: string): number {\n if (!query) return 1; // Show all if no query\n\n const lowerName = name.toLowerCase();\n const lowerQuery = query.toLowerCase();\n\n // Exact match\n if (lowerName === lowerQuery) return 100;\n\n // Starts with\n if (lowerName.startsWith(lowerQuery)) return 50;\n\n // Contains\n if (lowerName.includes(lowerQuery)) return 25;\n\n // Word boundary match (e.g., \"MA\" matches \"Marketing Agent\")\n const words = lowerName.split(/\\s+/);\n for (const word of words) {\n if (word.startsWith(lowerQuery)) return 40;\n }\n\n return 0; // No match\n }\n\n /**\n * Map an agent's AI Agent Configuration presets into the composer's generic\n * `MentionSuggestionPreset` shape so the chip's preset picker works without the\n * composer knowing anything about agents.\n *\n * IMPORTANT: preset.ID is the AIAgentConfiguration.ID (preset ID), not\n * AIConfigurationID — the backend mapping converts preset ID -> AIConfigurationID.\n */\n private getAgentPresets(agentId: string): MentionSuggestionPreset[] | undefined {\n try {\n const presets = AIEngineBase.Instance.GetAgentConfigurationPresets(agentId, true);\n if (!presets || presets.length === 0) {\n return undefined;\n }\n return presets.map(p => ({\n ID: p.ID,\n Name: p.Name,\n DisplayName: p.DisplayName || undefined,\n Description: p.Description || undefined,\n IsDefault: p.IsDefault\n }));\n } catch {\n // Presets are a chip nicety — never let them break suggestion building\n return undefined;\n }\n }\n\n /**\n * Get icon for agent based on type/name\n */\n private getAgentIcon(agent: MJAIAgentEntityExtended): string {\n // Use agent's icon if available, otherwise default based on type\n if (agent.IconClass) return agent.IconClass;\n\n // Default icons based on agent name patterns\n const name = agent.Name?.toLowerCase() || '';\n if (name.includes('marketing')) return 'fa-megaphone';\n if (name.includes('data') || name.includes('analysis')) return 'fa-chart-line';\n if (name.includes('code') || name.includes('developer')) return 'fa-code';\n if (name.includes('design')) return 'fa-palette';\n if (name.includes('conversation') || name.includes('manager')) return 'fa-comments';\n\n return 'fa-robot'; // Default\n }\n\n /**\n * Get available agents for parsing\n */\n getAvailableAgents(): MJAIAgentEntityExtended[] {\n return this.agentsCache;\n }\n\n /**\n * Get available users for parsing\n */\n getAvailableUsers(): UserInfo[] {\n return this.usersCache;\n }\n\n /**\n * Get available entities for parsing\n */\n getAvailableEntities(): EntityInfo[] {\n return this.entitiesCache;\n }\n\n /**\n * Get available queries for parsing\n */\n getAvailableQueries(): QueryInfo[] {\n return this.queriesCache;\n }\n\n /**\n * Get the generic icon used for all query mentions.\n */\n getQueriesEntityIcon(): string {\n return this.queriesEntityIcon;\n }\n\n /**\n * Refresh the caches\n * Resets initialization state and reloads agents\n */\n async refresh(currentUser: UserInfo): Promise<void> {\n this.isInitialized = false;\n this.initializationPromise = null;\n await this.initialize(currentUser);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-session.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/realtime-session.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-session.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/realtime-session.service.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Metadata } from '@memberjunction/core';
4
4
  import { UserInfoEngine } from '@memberjunction/core-entities';
5
5
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
6
6
  import { MJGlobal } from '@memberjunction/global';
7
- import { BaseRealtimeClient, LoadAssemblyAIRealtimeClient, LoadElevenLabsRealtimeClient, LoadGeminiRealtimeClient, LoadOpenAIRealtimeClient, LoadxAIRealtimeClient } from '@memberjunction/ai-realtime-client';
7
+ import { BaseRealtimeClient, LoadAssemblyAIRealtimeClient, LoadElevenLabsRealtimeClient, LoadGeminiRealtimeClient, LoadHuggingFaceRealtimeClient, LoadOpenAIRealtimeClient, LoadxAIRealtimeClient } from '@memberjunction/ai-realtime-client';
8
8
  import { BuildNarrationInstructions } from './narration-template';
9
9
  import { ParseDelegationResultJson } from './delegation-result-parser';
10
10
  import { BaseRealtimeChannelClient } from '../components/realtime/channels/base-realtime-channel-client';
@@ -29,6 +29,7 @@ LoadGeminiRealtimeClient();
29
29
  LoadElevenLabsRealtimeClient();
30
30
  LoadAssemblyAIRealtimeClient();
31
31
  LoadxAIRealtimeClient();
32
+ LoadHuggingFaceRealtimeClient();
32
33
  /**
33
34
  * Drives a **client-direct** real-time voice session: the browser mints an ephemeral
34
35
  * token from the MJ server, then connects DIRECTLY to the realtime provider. Audio