@memberjunction/ng-core-entity-forms 5.40.1 → 5.41.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 (122) hide show
  1. package/dist/__tests__/bridge-provider-features.test.d.ts +2 -0
  2. package/dist/__tests__/bridge-provider-features.test.d.ts.map +1 -0
  3. package/dist/__tests__/bridge-provider-features.test.js +70 -0
  4. package/dist/__tests__/bridge-provider-features.test.js.map +1 -0
  5. package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts +17 -0
  6. package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts.map +1 -0
  7. package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js +170 -0
  8. package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js.map +1 -0
  9. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +133 -0
  10. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -0
  11. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +1190 -0
  12. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -0
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +69 -0
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +911 -562
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  17. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  18. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +2 -2
  19. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  20. package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts +20 -0
  21. package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts.map +1 -0
  22. package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js +115 -0
  23. package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js.map +1 -0
  24. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +50 -0
  25. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -0
  26. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +75 -0
  27. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -0
  28. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts +48 -0
  29. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts.map +1 -0
  30. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +256 -0
  31. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -0
  32. package/dist/lib/custom/Entities/entity-form.component.d.ts +28 -4
  33. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  34. package/dist/lib/custom/Entities/entity-form.component.js +42 -12
  35. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  36. package/dist/lib/custom/Lists/list-form.component.d.ts +6 -0
  37. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/Lists/list-form.component.js +11 -1
  39. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  40. package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts +43 -0
  41. package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts.map +1 -0
  42. package/dist/lib/custom/SessionBridges/session-bridge-form.component.js +278 -0
  43. package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -0
  44. package/dist/lib/custom/custom-forms.module.d.ts +32 -26
  45. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  46. package/dist/lib/custom/custom-forms.module.js +34 -1
  47. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +284 -180
  50. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts +10 -0
  52. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts.map +1 -0
  53. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +117 -0
  54. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -0
  55. package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts +10 -0
  56. package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts.map +1 -0
  57. package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js +82 -0
  58. package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js.map +1 -0
  59. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +27 -25
  60. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
  61. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  62. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +16 -20
  63. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  64. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts +10 -0
  65. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -0
  66. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +185 -0
  67. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -0
  68. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts +10 -0
  69. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts.map +1 -0
  70. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +121 -0
  71. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -0
  72. package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts +10 -0
  73. package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts.map +1 -0
  74. package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js +94 -0
  75. package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js.map +1 -0
  76. package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts +10 -0
  77. package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts.map +1 -0
  78. package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js +86 -0
  79. package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js.map +1 -0
  80. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.d.ts.map +1 -1
  81. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +37 -15
  82. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
  83. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts +10 -0
  84. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts.map +1 -0
  85. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js +86 -0
  86. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js.map +1 -0
  87. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts +10 -0
  88. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -0
  89. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +143 -0
  90. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -0
  91. package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts +10 -0
  92. package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts.map +1 -0
  93. package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js +76 -0
  94. package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js.map +1 -0
  95. package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts +10 -0
  96. package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts.map +1 -0
  97. package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js +90 -0
  98. package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js.map +1 -0
  99. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  100. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +28 -10
  101. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  103. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +7 -9
  104. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  105. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +27 -25
  106. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
  107. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  108. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
  109. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  110. package/dist/lib/generated/generated-forms.module.d.ts +358 -343
  111. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  112. package/dist/lib/generated/generated-forms.module.js +426 -366
  113. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  114. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +74 -0
  115. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -0
  116. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +365 -0
  117. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -0
  118. package/dist/public-api.d.ts +2 -0
  119. package/dist/public-api.d.ts.map +1 -1
  120. package/dist/public-api.js +2 -0
  121. package/dist/public-api.js.map +1 -1
  122. package/package.json +36 -36
@@ -0,0 +1,365 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component, inject, ChangeDetectorRef } from '@angular/core';
8
+ import { CompositeKey, RunView } from '@memberjunction/core';
9
+ import { RegisterClassEx, UUIDsEqual } from '@memberjunction/global';
10
+ import { BaseFormPanel } from '@memberjunction/ng-base-forms';
11
+ import { SharedService } from '@memberjunction/ng-shared';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@memberjunction/ng-base-forms";
14
+ import * as i2 from "@memberjunction/ng-shared-generic";
15
+ const _forTrack0 = ($index, $item) => $item.ID;
16
+ function AgentRealtimePanel_Conditional_1_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelement(0, "mj-loading", 1);
18
+ } }
19
+ function AgentRealtimePanel_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "div", 2);
21
+ i0.ɵɵelement(1, "i", 3);
22
+ i0.ɵɵtext(2);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const ctx_r0 = i0.ɵɵnextContext();
26
+ i0.ɵɵadvance(2);
27
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.LoadError);
28
+ } }
29
+ function AgentRealtimePanel_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 9);
31
+ i0.ɵɵtext(1, "No co-agent pairings reference this agent.");
32
+ i0.ɵɵelementEnd();
33
+ } }
34
+ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelementStart(0, "span", 21);
36
+ i0.ɵɵtext(1, "voices");
37
+ i0.ɵɵelementEnd();
38
+ i0.ɵɵtext(2);
39
+ } if (rf & 2) {
40
+ const p_r3 = i0.ɵɵnextContext().$implicit;
41
+ const ctx_r0 = i0.ɵɵnextContext(3);
42
+ i0.ɵɵadvance(2);
43
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.OtherAgentName(p_r3), " ");
44
+ } }
45
+ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
46
+ i0.ɵɵelementStart(0, "span", 21);
47
+ i0.ɵɵtext(1, "voiced by");
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵtext(2);
50
+ } if (rf & 2) {
51
+ const p_r3 = i0.ɵɵnextContext().$implicit;
52
+ const ctx_r0 = i0.ɵɵnextContext(3);
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.OtherAgentName(p_r3), " ");
55
+ } }
56
+ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵtext(0, " \u00B7 ");
58
+ i0.ɵɵelementStart(1, "span", 22);
59
+ i0.ɵɵtext(2, "default");
60
+ i0.ɵɵelementEnd();
61
+ } }
62
+ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
63
+ const _r2 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "button", 15);
65
+ i0.ɵɵlistener("click", function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template_button_click_0_listener() { const p_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenPairing(p_r3)); });
66
+ i0.ɵɵelementStart(1, "span", 16);
67
+ i0.ɵɵelement(2, "i");
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(3, "span", 17)(4, "span", 18);
70
+ i0.ɵɵtext(5);
71
+ i0.ɵɵconditionalCreate(6, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_6_Template, 3, 1)(7, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_7_Template, 3, 1);
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(8, "span", 19);
74
+ i0.ɵɵtext(9);
75
+ i0.ɵɵconditionalCreate(10, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_10_Template, 3, 0);
76
+ i0.ɵɵelementEnd()();
77
+ i0.ɵɵelementStart(11, "span", 20);
78
+ i0.ɵɵtext(12);
79
+ i0.ɵɵelementEnd()();
80
+ } if (rf & 2) {
81
+ const p_r3 = ctx.$implicit;
82
+ const ctx_r0 = i0.ɵɵnextContext(3);
83
+ i0.ɵɵadvance(2);
84
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", ctx_r0.PairingTypeIcon(p_r3.Type)));
85
+ i0.ɵɵadvance(3);
86
+ i0.ɵɵtextInterpolate1(" ", p_r3.Type, " ");
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵconditional(p_r3.role === "as-coagent" ? 6 : 7);
89
+ i0.ɵɵadvance(3);
90
+ i0.ɵɵtextInterpolate1(" seq ", p_r3.Sequence, " ");
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵconditional(p_r3.IsDefault ? 10 : -1);
93
+ i0.ɵɵadvance();
94
+ i0.ɵɵclassProp("active", p_r3.Status === "Active");
95
+ i0.ɵɵadvance();
96
+ i0.ɵɵtextInterpolate(p_r3.Status);
97
+ } }
98
+ function AgentRealtimePanel_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelementStart(0, "div", 10);
100
+ i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template, 13, 10, "button", 14, _forTrack0);
101
+ i0.ɵɵelementEnd();
102
+ } if (rf & 2) {
103
+ const ctx_r0 = i0.ɵɵnextContext(2);
104
+ i0.ɵɵadvance();
105
+ i0.ɵɵrepeater(ctx_r0.Pairings);
106
+ } }
107
+ function AgentRealtimePanel_Conditional_3_Conditional_18_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelementStart(0, "div", 9);
109
+ i0.ɵɵtext(1, "No bridge identities provisioned for this agent.");
110
+ i0.ɵɵelementEnd();
111
+ } }
112
+ function AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
113
+ const _r4 = i0.ɵɵgetCurrentView();
114
+ i0.ɵɵelementStart(0, "button", 15);
115
+ i0.ɵɵlistener("click", function AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template_button_click_0_listener() { const i_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenIdentity(i_r5)); });
116
+ i0.ɵɵelementStart(1, "span", 16);
117
+ i0.ɵɵelement(2, "i");
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵelementStart(3, "span", 17)(4, "span", 18);
120
+ i0.ɵɵtext(5);
121
+ i0.ɵɵelementEnd();
122
+ i0.ɵɵelementStart(6, "span", 19);
123
+ i0.ɵɵtext(7);
124
+ i0.ɵɵelementEnd()();
125
+ i0.ɵɵelementStart(8, "span", 20);
126
+ i0.ɵɵtext(9);
127
+ i0.ɵɵelementEnd()();
128
+ } if (rf & 2) {
129
+ const i_r5 = ctx.$implicit;
130
+ const ctx_r0 = i0.ɵɵnextContext(3);
131
+ i0.ɵɵadvance(2);
132
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", ctx_r0.IdentityTypeIcon(i_r5.IdentityType)));
133
+ i0.ɵɵadvance(3);
134
+ i0.ɵɵtextInterpolate(i_r5.DisplayName || i_r5.IdentityValue);
135
+ i0.ɵɵadvance(2);
136
+ i0.ɵɵtextInterpolate2("", i_r5.IdentityType, " \u00B7 ", i_r5.Provider);
137
+ i0.ɵɵadvance();
138
+ i0.ɵɵclassProp("active", i_r5.IsActive);
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵtextInterpolate(i_r5.IsActive ? "Active" : "Inactive");
141
+ } }
142
+ function AgentRealtimePanel_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵelementStart(0, "div", 10);
144
+ i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template, 10, 9, "button", 14, _forTrack0);
145
+ i0.ɵɵelementEnd();
146
+ } if (rf & 2) {
147
+ const ctx_r0 = i0.ɵɵnextContext(2);
148
+ i0.ɵɵadvance();
149
+ i0.ɵɵrepeater(ctx_r0.Identities);
150
+ } }
151
+ function AgentRealtimePanel_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵelementStart(0, "pre", 13);
153
+ i0.ɵɵtext(1);
154
+ i0.ɵɵelementEnd();
155
+ } if (rf & 2) {
156
+ const ctx_r0 = i0.ɵɵnextContext(2);
157
+ i0.ɵɵadvance();
158
+ i0.ɵɵtextInterpolate(ctx_r0.PrettyTypeConfiguration);
159
+ } }
160
+ function AgentRealtimePanel_Conditional_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
161
+ i0.ɵɵelementStart(0, "div", 9);
162
+ i0.ɵɵtext(1, "No type configuration set \u2014 this agent uses its type's defaults.");
163
+ i0.ɵɵelementEnd();
164
+ } }
165
+ function AgentRealtimePanel_Conditional_3_Template(rf, ctx) { if (rf & 1) {
166
+ i0.ɵɵelementStart(0, "p", 4);
167
+ i0.ɵɵtext(1, " A one-place summary of this agent's realtime / bridge setup \u2014 its co-agent pairings, its type-level realtime configuration, and the bridge identities that route inbound calls and invites to it. ");
168
+ i0.ɵɵelementEnd();
169
+ i0.ɵɵelementStart(2, "div", 5)(3, "div", 6);
170
+ i0.ɵɵelement(4, "i", 7);
171
+ i0.ɵɵelementStart(5, "span");
172
+ i0.ɵɵtext(6, "Co-agent pairings");
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵelementStart(7, "span", 8);
175
+ i0.ɵɵtext(8);
176
+ i0.ɵɵelementEnd()();
177
+ i0.ɵɵconditionalCreate(9, AgentRealtimePanel_Conditional_3_Conditional_9_Template, 2, 0, "div", 9)(10, AgentRealtimePanel_Conditional_3_Conditional_10_Template, 3, 0, "div", 10);
178
+ i0.ɵɵelementEnd();
179
+ i0.ɵɵelementStart(11, "div", 5)(12, "div", 6);
180
+ i0.ɵɵelement(13, "i", 11);
181
+ i0.ɵɵelementStart(14, "span");
182
+ i0.ɵɵtext(15, "Bridge identities");
183
+ i0.ɵɵelementEnd();
184
+ i0.ɵɵelementStart(16, "span", 8);
185
+ i0.ɵɵtext(17);
186
+ i0.ɵɵelementEnd()();
187
+ i0.ɵɵconditionalCreate(18, AgentRealtimePanel_Conditional_3_Conditional_18_Template, 2, 0, "div", 9)(19, AgentRealtimePanel_Conditional_3_Conditional_19_Template, 3, 0, "div", 10);
188
+ i0.ɵɵelementEnd();
189
+ i0.ɵɵelementStart(20, "div", 5)(21, "div", 6);
190
+ i0.ɵɵelement(22, "i", 12);
191
+ i0.ɵɵelementStart(23, "span");
192
+ i0.ɵɵtext(24, "Type configuration");
193
+ i0.ɵɵelementEnd()();
194
+ i0.ɵɵconditionalCreate(25, AgentRealtimePanel_Conditional_3_Conditional_25_Template, 2, 1, "pre", 13)(26, AgentRealtimePanel_Conditional_3_Conditional_26_Template, 2, 0, "div", 9);
195
+ i0.ɵɵelementEnd();
196
+ } if (rf & 2) {
197
+ const ctx_r0 = i0.ɵɵnextContext();
198
+ i0.ɵɵadvance(8);
199
+ i0.ɵɵtextInterpolate(ctx_r0.Pairings.length);
200
+ i0.ɵɵadvance();
201
+ i0.ɵɵconditional(ctx_r0.Pairings.length === 0 ? 9 : 10);
202
+ i0.ɵɵadvance(8);
203
+ i0.ɵɵtextInterpolate(ctx_r0.Identities.length);
204
+ i0.ɵɵadvance();
205
+ i0.ɵɵconditional(ctx_r0.Identities.length === 0 ? 18 : 19);
206
+ i0.ɵɵadvance(7);
207
+ i0.ɵɵconditional(ctx_r0.PrettyTypeConfiguration ? 25 : 26);
208
+ } }
209
+ /**
210
+ * AI Agent "Realtime" panel (Pattern 1 — BaseFormPanel slot). A read-only
211
+ * summary that puts an agent's realtime / bridge setup in one place:
212
+ * - its co-agent pairings (rows where this agent is the co-agent OR the
213
+ * voiced target, from 'MJ: AI Agent Co Agents'),
214
+ * - its `TypeConfiguration` (the agent's typed realtime config layer),
215
+ * - its bridge agent identities ('MJ: AI Bridge Agent Identities' for this
216
+ * agent).
217
+ *
218
+ * Registers against the 'AI Agents' entity, `after-fields` slot. The AI Agent
219
+ * form is a full custom override whose template doesn't emit the `after-fields`
220
+ * marker, so this panel falls through to the container's always-present
221
+ * `after-everything` slot and mounts at the bottom of the form — functional,
222
+ * just lower than ideal until the custom form emits the slot marker.
223
+ *
224
+ * Provider-correct: all RunViews are scoped to the host form's `ProviderToUse`.
225
+ */
226
+ let AgentRealtimePanel = class AgentRealtimePanel extends BaseFormPanel {
227
+ constructor() {
228
+ super(...arguments);
229
+ this.cdr = inject(ChangeDetectorRef);
230
+ this.Loading = false;
231
+ this.LoadError = null;
232
+ this.Pairings = [];
233
+ this.Identities = [];
234
+ this.prettyTypeConfigCache = undefined;
235
+ }
236
+ async ngOnInit() {
237
+ await this.loadData();
238
+ }
239
+ /** Pretty-printed TypeConfiguration JSON (cached, falls back to raw on parse error). */
240
+ get PrettyTypeConfiguration() {
241
+ if (this.prettyTypeConfigCache !== undefined)
242
+ return this.prettyTypeConfigCache;
243
+ const raw = this.Record?.TypeConfiguration ?? null;
244
+ if (!raw) {
245
+ this.prettyTypeConfigCache = null;
246
+ return null;
247
+ }
248
+ try {
249
+ this.prettyTypeConfigCache = JSON.stringify(JSON.parse(raw), null, 2);
250
+ }
251
+ catch {
252
+ this.prettyTypeConfigCache = raw;
253
+ }
254
+ return this.prettyTypeConfigCache;
255
+ }
256
+ get HasAnything() {
257
+ return this.Pairings.length > 0 || this.Identities.length > 0 || this.PrettyTypeConfiguration != null;
258
+ }
259
+ /**
260
+ * Loads the agent's pairings + bridge identities in one batched round trip,
261
+ * scoped to the host form's provider. TypeConfiguration is read straight off
262
+ * the already-loaded record (no query needed).
263
+ */
264
+ async loadData() {
265
+ const agentId = this.Record?.ID;
266
+ if (!agentId)
267
+ return;
268
+ this.Loading = true;
269
+ this.LoadError = null;
270
+ try {
271
+ const rv = RunView.FromMetadataProvider(this.FormComponent.ProviderToUse);
272
+ const results = await rv.RunViews([
273
+ {
274
+ EntityName: 'MJ: AI Agent Co Agents',
275
+ Fields: ['ID', 'CoAgentID', 'CoAgent', 'TargetAgentID', 'TargetAgent', 'Type', 'IsDefault', 'Sequence', 'Status'],
276
+ ExtraFilter: `CoAgentID='${agentId}' OR TargetAgentID='${agentId}'`,
277
+ OrderBy: 'Sequence ASC',
278
+ ResultType: 'simple',
279
+ },
280
+ {
281
+ EntityName: 'MJ: AI Bridge Agent Identities',
282
+ Fields: ['ID', 'IdentityType', 'IdentityValue', 'DisplayName', 'Provider', 'IsActive'],
283
+ ExtraFilter: `AgentID='${agentId}'`,
284
+ OrderBy: 'Provider ASC',
285
+ ResultType: 'simple',
286
+ },
287
+ ]);
288
+ const pairings = (results[0]?.Success ? results[0].Results : []);
289
+ this.Pairings = pairings.map((p) => ({
290
+ ...p,
291
+ role: UUIDsEqual(p.CoAgentID, agentId) ? 'as-coagent' : 'as-target',
292
+ }));
293
+ this.Identities = (results[1]?.Success ? results[1].Results : []);
294
+ }
295
+ catch (error) {
296
+ console.error('Error loading agent realtime panel data:', error);
297
+ this.LoadError = 'Failed to load realtime setup.';
298
+ }
299
+ finally {
300
+ this.Loading = false;
301
+ this.cdr.markForCheck();
302
+ }
303
+ }
304
+ PairingTypeIcon(type) {
305
+ switch (type) {
306
+ case 'CoAgent': return 'fa-microphone-lines';
307
+ case 'Delegate': return 'fa-share-from-square';
308
+ case 'Fallback': return 'fa-life-ring';
309
+ case 'Observer': return 'fa-eye';
310
+ case 'Peer': return 'fa-people-arrows';
311
+ case 'Reviewer': return 'fa-clipboard-check';
312
+ default: return 'fa-link';
313
+ }
314
+ }
315
+ IdentityTypeIcon(type) {
316
+ switch (type) {
317
+ case 'Email': return 'fa-envelope';
318
+ case 'PhoneNumber': return 'fa-phone';
319
+ case 'AccountID': return 'fa-id-badge';
320
+ default: return 'fa-id-card';
321
+ }
322
+ }
323
+ /** The "other" agent in a pairing (the one that isn't the agent on this form). */
324
+ OtherAgentName(p) {
325
+ return p.role === 'as-coagent' ? (p.TargetAgent ?? 'this agent') : (p.CoAgent ?? 'unknown co-agent');
326
+ }
327
+ OpenPairing(p) {
328
+ SharedService.Instance.OpenEntityRecord('MJ: AI Agent Co Agents', CompositeKey.FromID(p.ID));
329
+ }
330
+ OpenIdentity(i) {
331
+ SharedService.Instance.OpenEntityRecord('MJ: AI Bridge Agent Identities', CompositeKey.FromID(i.ID));
332
+ }
333
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵAgentRealtimePanel_BaseFactory; return function AgentRealtimePanel_Factory(__ngFactoryType__) { return (ɵAgentRealtimePanel_BaseFactory || (ɵAgentRealtimePanel_BaseFactory = i0.ɵɵgetInheritedFactory(AgentRealtimePanel)))(__ngFactoryType__ || AgentRealtimePanel); }; })(); }
334
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentRealtimePanel, selectors: [["mj-ai-agent-realtime-panel"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 3, consts: [["SectionKey", "agentRealtime", "SectionName", "Realtime", "Icon", "fa fa-tower-broadcast", 3, "Form", "FormContext"], ["text", "Loading realtime setup..."], [1, "rt-error"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "rt-intro"], [1, "rt-section"], [1, "rt-section-header"], [1, "fa-solid", "fa-people-arrows"], [1, "rt-count"], [1, "rt-empty"], [1, "rt-list"], [1, "fa-solid", "fa-id-card"], [1, "fa-solid", "fa-gears"], [1, "rt-config"], ["type", "button", 1, "rt-row"], ["type", "button", 1, "rt-row", 3, "click"], [1, "rt-row-icon"], [1, "rt-row-main"], [1, "rt-row-title"], [1, "rt-row-sub"], [1, "rt-status"], [1, "rt-rel"], [1, "rt-tag"]], template: function AgentRealtimePanel_Template(rf, ctx) { if (rf & 1) {
335
+ i0.ɵɵelementStart(0, "mj-collapsible-panel", 0);
336
+ i0.ɵɵconditionalCreate(1, AgentRealtimePanel_Conditional_1_Template, 1, 0, "mj-loading", 1)(2, AgentRealtimePanel_Conditional_2_Template, 3, 1, "div", 2)(3, AgentRealtimePanel_Conditional_3_Template, 27, 5);
337
+ i0.ɵɵelementEnd();
338
+ } if (rf & 2) {
339
+ i0.ɵɵproperty("Form", ctx.FormComponent)("FormContext", ctx.FormContext);
340
+ i0.ɵɵadvance();
341
+ i0.ɵɵconditional(ctx.Loading ? 1 : ctx.LoadError ? 2 : 3);
342
+ } }, dependencies: [i1.MjCollapsiblePanelComponent, i2.LoadingComponent], styles: ["\n\n\n\n.rt-intro[_ngcontent-%COMP%] {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.rt-error[_ngcontent-%COMP%] {\n font-size: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n.rt-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 6px; }\n\n.rt-section[_ngcontent-%COMP%] { margin-bottom: 18px; }\n.rt-section[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n\n.rt-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.rt-section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.rt-count[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n padding: 1px 8px;\n}\n\n.rt-empty[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 8px 0;\n}\n\n.rt-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.rt-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n text-align: left;\n padding: 10px 14px;\n border: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-primary);\n transition: background 0.12s;\n}\n.rt-row[_ngcontent-%COMP%]:first-child { border-top: 0; }\n.rt-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n\n.rt-row-icon[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.rt-row-main[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.rt-row-title[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; }\n.rt-row-title[_ngcontent-%COMP%] .rt-rel[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-weight: 400; }\n.rt-row-sub[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-muted); }\n.rt-tag[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-brand-primary);\n}\n\n.rt-status[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 9px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.rt-status.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 14%, transparent);\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.rt-config[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-family: ui-monospace, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 360px;\n overflow: auto;\n}"] }); }
343
+ };
344
+ AgentRealtimePanel = __decorate([
345
+ RegisterClassEx(BaseFormPanel, {
346
+ key: 'ai-agents:realtime',
347
+ skipNullKeyWarning: true,
348
+ metadata: {
349
+ entity: 'AI Agents',
350
+ slot: 'after-fields',
351
+ sortKey: 40,
352
+ },
353
+ })
354
+ ], AgentRealtimePanel);
355
+ export { AgentRealtimePanel };
356
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentRealtimePanel, [{
357
+ type: Component,
358
+ args: [{ standalone: false, selector: 'mj-ai-agent-realtime-panel', template: "<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <div class=\"rt-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ LoadError }}</div>\n } @else {\n <p class=\"rt-intro\">\n A one-place summary of this agent's realtime / bridge setup \u2014 its co-agent pairings, its\n type-level realtime configuration, and the bridge identities that route inbound calls and invites to it.\n </p>\n\n <!-- Co-agent pairings -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-people-arrows\"></i>\n <span>Co-agent pairings</span>\n <span class=\"rt-count\">{{ Pairings.length }}</span>\n </div>\n @if (Pairings.length === 0) {\n <div class=\"rt-empty\">No co-agent pairings reference this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (p of Pairings; track p.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenPairing(p)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ PairingTypeIcon(p.Type) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">\n {{ p.Type }}\n @if (p.role === 'as-coagent') {\n <span class=\"rt-rel\">voices</span> {{ OtherAgentName(p) }}\n } @else {\n <span class=\"rt-rel\">voiced by</span> {{ OtherAgentName(p) }}\n }\n </span>\n <span class=\"rt-row-sub\">\n seq {{ p.Sequence }}\n @if (p.IsDefault) { \u00B7 <span class=\"rt-tag\">default</span> }\n </span>\n </span>\n <span class=\"rt-status\" [class.active]=\"p.Status === 'Active'\">{{ p.Status }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Bridge identities -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-id-card\"></i>\n <span>Bridge identities</span>\n <span class=\"rt-count\">{{ Identities.length }}</span>\n </div>\n @if (Identities.length === 0) {\n <div class=\"rt-empty\">No bridge identities provisioned for this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (i of Identities; track i.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenIdentity(i)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ IdentityTypeIcon(i.IdentityType) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">{{ i.DisplayName || i.IdentityValue }}</span>\n <span class=\"rt-row-sub\">{{ i.IdentityType }} \u00B7 {{ i.Provider }}</span>\n </span>\n <span class=\"rt-status\" [class.active]=\"i.IsActive\">{{ i.IsActive ? 'Active' : 'Inactive' }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Type configuration -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <span>Type configuration</span>\n </div>\n @if (PrettyTypeConfiguration) {\n <pre class=\"rt-config\">{{ PrettyTypeConfiguration }}</pre>\n } @else {\n <div class=\"rt-empty\">No type configuration set \u2014 this agent uses its type's defaults.</div>\n }\n </div>\n }\n</mj-collapsible-panel>\n", styles: ["/* AI Agent Realtime panel \u2014 read-only summary of pairings / identities / type config.\n Tokens only. */\n\n.rt-intro {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.rt-error {\n font-size: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error-text, var(--mj-status-error));\n}\n.rt-error i { margin-right: 6px; }\n\n.rt-section { margin-bottom: 18px; }\n.rt-section:last-child { margin-bottom: 0; }\n\n.rt-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.rt-section-header i { color: var(--mj-brand-primary); }\n.rt-count {\n margin-left: auto;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n padding: 1px 8px;\n}\n\n.rt-empty {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 8px 0;\n}\n\n.rt-list {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.rt-row {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n text-align: left;\n padding: 10px 14px;\n border: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-primary);\n transition: background 0.12s;\n}\n.rt-row:first-child { border-top: 0; }\n.rt-row:hover { background: var(--mj-bg-surface-hover); }\n\n.rt-row-icon {\n flex: 0 0 auto;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.rt-row-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.rt-row-title { font-size: 13px; font-weight: 600; }\n.rt-row-title .rt-rel { color: var(--mj-text-muted); font-weight: 400; }\n.rt-row-sub { font-size: 11px; color: var(--mj-text-muted); }\n.rt-tag {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-brand-primary);\n}\n\n.rt-status {\n flex: 0 0 auto;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 9px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.rt-status.active {\n background: color-mix(in srgb, var(--mj-status-success) 14%, transparent);\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.rt-config {\n margin: 0;\n padding: 12px 14px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-family: ui-monospace, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 360px;\n overflow: auto;\n}\n"] }]
359
+ }], null, null); })();
360
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentRealtimePanel, { className: "AgentRealtimePanel", filePath: "src/lib/panels/ai-agents/agent-realtime.panel.ts", lineNumber: 65 }); })();
361
+ /** Tree-shake guard — invoked from the panels module loader. */
362
+ export function LoadAgentRealtimePanel() {
363
+ /* no-op marker */
364
+ }
365
+ //# sourceMappingURL=agent-realtime.panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-realtime.panel.js","sourceRoot":"","sources":["../../../../src/lib/panels/ai-agents/agent-realtime.panel.ts","../../../../src/lib/panels/ai-agents/agent-realtime.panel.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;;;;;ICGlD,gCAA0D;;;IAE1D,8BAAsB;IAAA,uBAAgD;IAAC,YAAe;IAAA,iBAAM;;;IAArB,eAAe;IAAf,4CAAe;;;IAe9E,8BAAsB;IAAA,0DAA0C;IAAA,iBAAM;;;IAU9C,gCAAqB;IAAA,sBAAM;IAAA,iBAAO;IAAC,YACvC;;;;IADuC,eACvC;IADuC,4DACvC;;;IACI,gCAAqB;IAAA,yBAAS;IAAA,iBAAO;IAAC,YAC1C;;;;IAD0C,eAC1C;IAD0C,4DAC1C;;;IAIoB,wBAAE;IAAA,gCAAqB;IAAA,uBAAO;IAAA,iBAAO;;;;IAbrE,kCAA8D;IAAzB,mOAAS,wBAAc,KAAC;IACzD,gCAA0B;IAAA,oBAAsD;IAAA,iBAAO;IAEnF,AADJ,gCAA0B,eACK;IACvB,YACA;IAEE,AAFF,6GAA+B,uFAEtB;IAGb,iBAAO;IACP,gCAAyB;IACrB,YACA;IAAA,+GAAmB;IAE3B,AADI,iBAAO,EACJ;IACP,iCAA+D;IAAA,aAAc;IACjF,AADiF,iBAAO,EAC/E;;;;IAhBwB,eAA8C;IAA9C,cAAA,iEAA8C,CAAA;IAGnE,eACA;IADA,0CACA;IAAA,cAIC;IAJD,oDAIC;IAGD,eACA;IADA,kDACA;IAAA,cAA2D;IAA3D,0CAA2D;IAG3C,cAAsC;IAAtC,kDAAsC;IAAC,cAAc;IAAd,iCAAc;;;IAlBzF,+BAAqB;IACjB,wHAmBC;IACL,iBAAM;;;IApBF,cAmBC;IAnBD,8BAmBC;;;IAaL,8BAAsB;IAAA,gEAAgD;IAAA,iBAAM;;;;IAIpE,kCAA+D;IAA1B,mOAAS,yBAAe,KAAC;IAC1D,gCAA0B;IAAA,oBAA+D;IAAA,iBAAO;IAE5F,AADJ,gCAA0B,eACK;IAAA,YAAsC;IAAA,iBAAO;IACxE,gCAAyB;IAAA,YAAuC;IACpE,AADoE,iBAAO,EACpE;IACP,gCAAoD;IAAA,YAAwC;IAChG,AADgG,iBAAO,EAC9F;;;;IANwB,eAAuD;IAAvD,cAAA,0EAAuD,CAAA;IAErD,eAAsC;IAAtC,4DAAsC;IACxC,eAAuC;IAAvC,uEAAuC;IAE5C,cAA2B;IAA3B,uCAA2B;IAAC,cAAwC;IAAxC,2DAAwC;;;IARxG,+BAAqB;IACjB,uHASC;IACL,iBAAM;;;IAVF,cASC;IATD,gCASC;;;IAYL,+BAAuB;IAAA,YAA6B;IAAA,iBAAM;;;IAAnC,cAA6B;IAA7B,oDAA6B;;;IAEpD,8BAAsB;IAAA,qFAAgE;IAAA,iBAAM;;;IA1EpG,4BAAoB;IAChB,wNAEJ;IAAA,iBAAI;IAIA,AADJ,8BAAwB,aACW;IAC3B,uBAAyC;IACzC,4BAAM;IAAA,iCAAiB;IAAA,iBAAO;IAC9B,+BAAuB;IAAA,YAAqB;IAChD,AADgD,iBAAO,EACjD;IAGJ,AAFF,kGAA6B,+EAEpB;IAwBb,iBAAM;IAIF,AADJ,+BAAwB,cACW;IAC3B,yBAAmC;IACnC,6BAAM;IAAA,kCAAiB;IAAA,iBAAO;IAC9B,gCAAuB;IAAA,aAAuB;IAClD,AADkD,iBAAO,EACnD;IAGJ,AAFF,oGAA+B,+EAEtB;IAcb,iBAAM;IAIF,AADJ,+BAAwB,cACW;IAC3B,yBAAiC;IACjC,6BAAM;IAAA,mCAAkB;IAC5B,AAD4B,iBAAO,EAC7B;IAGJ,AAFF,qGAA+B,8EAEtB;IAGb,iBAAM;;;IAlEyB,eAAqB;IAArB,4CAAqB;IAEhD,cAyBC;IAzBD,uDAyBC;IAQ0B,eAAuB;IAAvB,8CAAuB;IAElD,cAeC;IAfD,0DAeC;IASD,eAIC;IAJD,0DAIC;;ADvDb;;;;;;;;;;;;;;;;GAgBG;AAgBI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,aAA8B;IAA/D;;QACK,QAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEjC,YAAO,GAAG,KAAK,CAAC;QAChB,cAAS,GAAkB,IAAI,CAAC;QAChC,aAAQ,GAAwB,EAAE,CAAC;QACnC,eAAU,GAAwB,EAAE,CAAC;QAEpC,0BAAqB,GAA8B,SAAS,CAAC;KAwGxE;IAtGG,KAAK,CAAC,QAAQ;QACV,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,wFAAwF;IACxF,IAAW,uBAAuB;QAC9B,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC;QAChF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC;IAC1G,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,QAAQ;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAC9B;oBACI,UAAU,EAAE,wBAAwB;oBACpC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;oBACjH,WAAW,EAAE,cAAc,OAAO,uBAAuB,OAAO,GAAG;oBACnE,OAAO,EAAE,cAAc;oBACvB,UAAU,EAAE,QAAQ;iBACvB;gBACD;oBACI,UAAU,EAAE,gCAAgC;oBAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;oBACtF,WAAW,EAAE,YAAY,OAAO,GAAG;oBACnC,OAAO,EAAE,cAAc;oBACvB,UAAU,EAAE,QAAQ;iBACvB;aACJ,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAA2C,CAAC;YAC3G,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,GAAG,CAAC;gBACJ,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;aACtE,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAwB,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,gCAAgC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAEM,eAAe,CAAC,IAAY;QAC/B,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,SAAS,CAAC,CAAC,OAAO,qBAAqB,CAAC;YAC7C,KAAK,UAAU,CAAC,CAAC,OAAO,sBAAsB,CAAC;YAC/C,KAAK,UAAU,CAAC,CAAC,OAAO,cAAc,CAAC;YACvC,KAAK,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,OAAO,kBAAkB,CAAC;YACvC,KAAK,UAAU,CAAC,CAAC,OAAO,oBAAoB,CAAC;YAC7C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC9B,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,IAAY;QAChC,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,OAAO,CAAC,CAAC,OAAO,aAAa,CAAC;YACnC,KAAK,aAAa,CAAC,CAAC,OAAO,UAAU,CAAC;YACtC,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC;YACvC,OAAO,CAAC,CAAC,OAAO,YAAY,CAAC;QACjC,CAAC;IACL,CAAC;IAED,kFAAkF;IAC3E,cAAc,CAAC,CAAoB;QACtC,OAAO,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;IACzG,CAAC;IAEM,WAAW,CAAC,CAAoB;QACnC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IAEM,YAAY,CAAC,CAAoB;QACpC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gCAAgC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;4PA/GQ,kBAAkB,yBAAlB,kBAAkB;oEAAlB,kBAAkB;YChE/B,+CAKgC;YAM1B,AAFA,AAFF,2FAAe,8DAES,qDAEf;YA+Eb,iBAAuB;;YArFnB,AADA,wCAAsB,gCACK;YAE3B,cAkFC;YAlFD,yDAkFC;;;ADzBQ,kBAAkB;IAf9B,eAAe,CAAC,aAAa,EAAE;QAC5B,GAAG,EAAE,oBAAoB;QACzB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE;YACN,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE;SACd;KACJ,CAAC;GAOW,kBAAkB,CAgH9B;;iFAhHY,kBAAkB;cAN9B,SAAS;6BACM,KAAK,YACP,4BAA4B;;kFAI7B,kBAAkB;AAkH/B,gEAAgE;AAChE,MAAM,UAAU,sBAAsB;IAClC,kBAAkB;AACtB,CAAC","sourcesContent":["import { Component, OnInit, inject, ChangeDetectorRef } from '@angular/core';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { RegisterClassEx, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJAIAgentEntity } from '@memberjunction/core-entities';\nimport { SharedService } from '@memberjunction/ng-shared';\n\n/** Read-only co-agent pairing row for the summary list. */\ninterface CoAgentPairingRow {\n ID: string;\n CoAgentID: string;\n CoAgent: string | null;\n TargetAgentID: string | null;\n TargetAgent: string | null;\n Type: string;\n IsDefault: boolean;\n Sequence: number;\n Status: string;\n /** 'as-coagent' = this agent IS the co-agent; 'as-target' = this agent is the voiced target. */\n role: 'as-coagent' | 'as-target';\n}\n\n/** Read-only bridge identity row for the summary list. */\ninterface BridgeIdentityRow {\n ID: string;\n IdentityType: string;\n IdentityValue: string;\n DisplayName: string | null;\n Provider: string;\n IsActive: boolean;\n}\n\n/**\n * AI Agent \"Realtime\" panel (Pattern 1 — BaseFormPanel slot). A read-only\n * summary that puts an agent's realtime / bridge setup in one place:\n * - its co-agent pairings (rows where this agent is the co-agent OR the\n * voiced target, from 'MJ: AI Agent Co Agents'),\n * - its `TypeConfiguration` (the agent's typed realtime config layer),\n * - its bridge agent identities ('MJ: AI Bridge Agent Identities' for this\n * agent).\n *\n * Registers against the 'AI Agents' entity, `after-fields` slot. The AI Agent\n * form is a full custom override whose template doesn't emit the `after-fields`\n * marker, so this panel falls through to the container's always-present\n * `after-everything` slot and mounts at the bottom of the form — functional,\n * just lower than ideal until the custom form emits the slot marker.\n *\n * Provider-correct: all RunViews are scoped to the host form's `ProviderToUse`.\n */\n@RegisterClassEx(BaseFormPanel, {\n key: 'ai-agents:realtime',\n skipNullKeyWarning: true,\n metadata: {\n entity: 'AI Agents',\n slot: 'after-fields',\n sortKey: 40,\n },\n})\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-realtime-panel',\n templateUrl: './agent-realtime.panel.html',\n styleUrls: ['./agent-realtime.panel.css'],\n})\nexport class AgentRealtimePanel extends BaseFormPanel<MJAIAgentEntity> implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n public Loading = false;\n public LoadError: string | null = null;\n public Pairings: CoAgentPairingRow[] = [];\n public Identities: BridgeIdentityRow[] = [];\n\n private prettyTypeConfigCache: string | null | undefined = undefined;\n\n async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n /** Pretty-printed TypeConfiguration JSON (cached, falls back to raw on parse error). */\n public get PrettyTypeConfiguration(): string | null {\n if (this.prettyTypeConfigCache !== undefined) return this.prettyTypeConfigCache;\n const raw = this.Record?.TypeConfiguration ?? null;\n if (!raw) {\n this.prettyTypeConfigCache = null;\n return null;\n }\n try {\n this.prettyTypeConfigCache = JSON.stringify(JSON.parse(raw), null, 2);\n } catch {\n this.prettyTypeConfigCache = raw;\n }\n return this.prettyTypeConfigCache;\n }\n\n public get HasAnything(): boolean {\n return this.Pairings.length > 0 || this.Identities.length > 0 || this.PrettyTypeConfiguration != null;\n }\n\n /**\n * Loads the agent's pairings + bridge identities in one batched round trip,\n * scoped to the host form's provider. TypeConfiguration is read straight off\n * the already-loaded record (no query needed).\n */\n private async loadData(): Promise<void> {\n const agentId = this.Record?.ID;\n if (!agentId) return;\n\n this.Loading = true;\n this.LoadError = null;\n try {\n const rv = RunView.FromMetadataProvider(this.FormComponent.ProviderToUse);\n const results = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Co Agents',\n Fields: ['ID', 'CoAgentID', 'CoAgent', 'TargetAgentID', 'TargetAgent', 'Type', 'IsDefault', 'Sequence', 'Status'],\n ExtraFilter: `CoAgentID='${agentId}' OR TargetAgentID='${agentId}'`,\n OrderBy: 'Sequence ASC',\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: AI Bridge Agent Identities',\n Fields: ['ID', 'IdentityType', 'IdentityValue', 'DisplayName', 'Provider', 'IsActive'],\n ExtraFilter: `AgentID='${agentId}'`,\n OrderBy: 'Provider ASC',\n ResultType: 'simple',\n },\n ]);\n\n const pairings = (results[0]?.Success ? results[0].Results : []) as Array<Omit<CoAgentPairingRow, 'role'>>;\n this.Pairings = pairings.map((p) => ({\n ...p,\n role: UUIDsEqual(p.CoAgentID, agentId) ? 'as-coagent' : 'as-target',\n }));\n this.Identities = (results[1]?.Success ? results[1].Results : []) as BridgeIdentityRow[];\n } catch (error) {\n console.error('Error loading agent realtime panel data:', error);\n this.LoadError = 'Failed to load realtime setup.';\n } finally {\n this.Loading = false;\n this.cdr.markForCheck();\n }\n }\n\n public PairingTypeIcon(type: string): string {\n switch (type) {\n case 'CoAgent': return 'fa-microphone-lines';\n case 'Delegate': return 'fa-share-from-square';\n case 'Fallback': return 'fa-life-ring';\n case 'Observer': return 'fa-eye';\n case 'Peer': return 'fa-people-arrows';\n case 'Reviewer': return 'fa-clipboard-check';\n default: return 'fa-link';\n }\n }\n\n public IdentityTypeIcon(type: string): string {\n switch (type) {\n case 'Email': return 'fa-envelope';\n case 'PhoneNumber': return 'fa-phone';\n case 'AccountID': return 'fa-id-badge';\n default: return 'fa-id-card';\n }\n }\n\n /** The \"other\" agent in a pairing (the one that isn't the agent on this form). */\n public OtherAgentName(p: CoAgentPairingRow): string {\n return p.role === 'as-coagent' ? (p.TargetAgent ?? 'this agent') : (p.CoAgent ?? 'unknown co-agent');\n }\n\n public OpenPairing(p: CoAgentPairingRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Agent Co Agents', CompositeKey.FromID(p.ID));\n }\n\n public OpenIdentity(i: BridgeIdentityRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Bridge Agent Identities', CompositeKey.FromID(i.ID));\n }\n}\n\n/** Tree-shake guard — invoked from the panels module loader. */\nexport function LoadAgentRealtimePanel(): void {\n /* no-op marker */\n}\n","<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <div class=\"rt-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ LoadError }}</div>\n } @else {\n <p class=\"rt-intro\">\n A one-place summary of this agent's realtime / bridge setup — its co-agent pairings, its\n type-level realtime configuration, and the bridge identities that route inbound calls and invites to it.\n </p>\n\n <!-- Co-agent pairings -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-people-arrows\"></i>\n <span>Co-agent pairings</span>\n <span class=\"rt-count\">{{ Pairings.length }}</span>\n </div>\n @if (Pairings.length === 0) {\n <div class=\"rt-empty\">No co-agent pairings reference this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (p of Pairings; track p.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenPairing(p)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ PairingTypeIcon(p.Type) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">\n {{ p.Type }}\n @if (p.role === 'as-coagent') {\n <span class=\"rt-rel\">voices</span> {{ OtherAgentName(p) }}\n } @else {\n <span class=\"rt-rel\">voiced by</span> {{ OtherAgentName(p) }}\n }\n </span>\n <span class=\"rt-row-sub\">\n seq {{ p.Sequence }}\n @if (p.IsDefault) { · <span class=\"rt-tag\">default</span> }\n </span>\n </span>\n <span class=\"rt-status\" [class.active]=\"p.Status === 'Active'\">{{ p.Status }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Bridge identities -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-id-card\"></i>\n <span>Bridge identities</span>\n <span class=\"rt-count\">{{ Identities.length }}</span>\n </div>\n @if (Identities.length === 0) {\n <div class=\"rt-empty\">No bridge identities provisioned for this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (i of Identities; track i.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenIdentity(i)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ IdentityTypeIcon(i.IdentityType) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">{{ i.DisplayName || i.IdentityValue }}</span>\n <span class=\"rt-row-sub\">{{ i.IdentityType }} · {{ i.Provider }}</span>\n </span>\n <span class=\"rt-status\" [class.active]=\"i.IsActive\">{{ i.IsActive ? 'Active' : 'Inactive' }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Type configuration -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <span>Type configuration</span>\n </div>\n @if (PrettyTypeConfiguration) {\n <pre class=\"rt-config\">{{ PrettyTypeConfiguration }}</pre>\n } @else {\n <div class=\"rt-empty\">No type configuration set — this agent uses its type's defaults.</div>\n }\n </div>\n }\n</mj-collapsible-panel>\n"]}
@@ -17,6 +17,8 @@ export { MJTestSuiteFormComponentExtended } from './lib/custom/Tests/test-suite-
17
17
  export { MJTestRunFeedbackFormComponentExtended } from './lib/custom/Tests/test-run-feedback-form.component';
18
18
  export { MJTestRubricFormComponentExtended } from './lib/custom/Tests/test-rubric-form.component';
19
19
  export { MJListFormComponentExtended } from './lib/custom/Lists/list-form.component';
20
+ export { MJAIAgentSessionFormComponentExtended } from './lib/custom/AIAgentSessions/ai-agent-session-form.component';
21
+ export { MJAIAgentChannelFormComponentExtended } from './lib/custom/AIAgentChannels/ai-agent-channel-form.component';
20
22
  export { TemplateEditorComponent } from './lib/shared/components/template-editor.component';
21
23
  export { ChatMessageViewerComponent } from './lib/custom/AIPromptRuns/chat-message-viewer.component';
22
24
  export { AIAgentRunTimelineComponent } from './lib/custom/ai-agent-run/ai-agent-run-timeline.component';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAIA,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AAGjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kCAAkC,EAAE,MAAM,wDAAwD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,yCAAyC,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,sCAAsC,EAAE,MAAM,qDAAqD,CAAC;AAC7G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAGrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAGxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAGvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAIA,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AAGjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kCAAkC,EAAE,MAAM,wDAAwD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,yCAAyC,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,sCAAsC,EAAE,MAAM,qDAAqD,CAAC;AAC7G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AACrH,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AAGrH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAGxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAGvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC"}
@@ -21,6 +21,8 @@ export { MJTestSuiteFormComponentExtended } from './lib/custom/Tests/test-suite-
21
21
  export { MJTestRunFeedbackFormComponentExtended } from './lib/custom/Tests/test-run-feedback-form.component';
22
22
  export { MJTestRubricFormComponentExtended } from './lib/custom/Tests/test-rubric-form.component';
23
23
  export { MJListFormComponentExtended } from './lib/custom/Lists/list-form.component';
24
+ export { MJAIAgentSessionFormComponentExtended } from './lib/custom/AIAgentSessions/ai-agent-session-form.component';
25
+ export { MJAIAgentChannelFormComponentExtended } from './lib/custom/AIAgentChannels/ai-agent-channel-form.component';
24
26
  // Custom form supporting components
25
27
  export { TemplateEditorComponent } from './lib/shared/components/template-editor.component';
26
28
  export { ChatMessageViewerComponent } from './lib/custom/AIPromptRuns/chat-message-viewer.component';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AAEjD,qFAAqF;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kCAAkC,EAAE,MAAM,wDAAwD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,yCAAyC,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,sCAAsC,EAAE,MAAM,qDAAqD,CAAC;AAC7G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAErF,oCAAoC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,sCAAsC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,wBAAwB;AACxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AACtH,4EAA4E;AAE5E,gFAAgF","sourcesContent":["/*\n * Public API Surface of ng-core-entity-forms\n */\n\nexport * from './lib/generated/generated-forms.module';\nexport * from './lib/custom/custom-forms.module';\n\n// Custom entity form components (must be individually exported for manifest builder)\nexport { MJEntityFormComponentExtended } from './lib/custom/Entities/entity-form.component';\nexport { MJEntityActionFormComponentExtended } from './lib/custom/EntityActions/entityaction.form.component';\nexport { MJTemplateFormComponentExtended } from './lib/custom/Templates/templates-form.component';\nexport { MJAIPromptFormComponentExtended } from './lib/custom/AIPrompts/ai-prompt-form.component';\nexport { MJAIAgentFormComponentExtended } from './lib/custom/AIAgents/ai-agent-form.component';\nexport { MJAIPromptRunFormComponentExtended } from './lib/custom/AIPromptRuns/ai-prompt-run-form.component';\nexport { MJActionFormComponentExtended } from './lib/custom/Actions/action-form.component';\nexport { MJActionExecutionLogFormComponentExtended } from './lib/custom/Actions/action-execution-log-form.component';\nexport { MJAIAgentRunFormComponentExtended } from './lib/custom/ai-agent-run/ai-agent-run.component';\nexport { MJQueryFormComponentExtended } from './lib/custom/Queries/query-form.component';\nexport { MJTestRunFormComponentExtended } from './lib/custom/Tests/test-run-form.component';\nexport { MJTestFormComponentExtended } from './lib/custom/Tests/test-form.component';\nexport { MJTestSuiteRunFormComponentExtended } from './lib/custom/Tests/test-suite-run-form.component';\nexport { MJTestSuiteFormComponentExtended } from './lib/custom/Tests/test-suite-form.component';\nexport { MJTestRunFeedbackFormComponentExtended } from './lib/custom/Tests/test-run-feedback-form.component';\nexport { MJTestRubricFormComponentExtended } from './lib/custom/Tests/test-rubric-form.component';\nexport { MJListFormComponentExtended } from './lib/custom/Lists/list-form.component';\n\n// Custom form supporting components\nexport { TemplateEditorComponent } from './lib/shared/components/template-editor.component';\nexport { ChatMessageViewerComponent } from './lib/custom/AIPromptRuns/chat-message-viewer.component';\nexport { AIAgentRunTimelineComponent } from './lib/custom/ai-agent-run/ai-agent-run-timeline.component';\nexport { AIAgentRunStepNodeComponent } from './lib/custom/ai-agent-run/ai-agent-run-step-node.component';\nexport { AIAgentRunAnalyticsComponent } from './lib/custom/ai-agent-run/ai-agent-run-analytics.component';\nexport { EntityLinkPillComponent } from './lib/custom/Tests/entity-link-pill.component';\n\n// Agent Dialog components and service\nexport { NewAgentDialogComponent } from './lib/custom/AIAgents/new-agent-dialog.component';\nexport { NewAgentDialogService } from './lib/custom/AIAgents/new-agent-dialog.service';\n\n// Flow Agent components\nexport { FlowAgentFormSectionComponent } from './lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component';\n// NOTE: Flow editor components have moved to @memberjunction/ng-flow-editor\n\n// NOTE: Action Test Harness components have moved to @memberjunction/ng-actions\n "]}
1
+ {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AAEjD,qFAAqF;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kCAAkC,EAAE,MAAM,wDAAwD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,yCAAyC,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,sCAAsC,EAAE,MAAM,qDAAqD,CAAC;AAC7G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AACrH,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AAErH,oCAAoC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,sCAAsC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,wBAAwB;AACxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AACtH,4EAA4E;AAE5E,gFAAgF","sourcesContent":["/*\n * Public API Surface of ng-core-entity-forms\n */\n\nexport * from './lib/generated/generated-forms.module';\nexport * from './lib/custom/custom-forms.module';\n\n// Custom entity form components (must be individually exported for manifest builder)\nexport { MJEntityFormComponentExtended } from './lib/custom/Entities/entity-form.component';\nexport { MJEntityActionFormComponentExtended } from './lib/custom/EntityActions/entityaction.form.component';\nexport { MJTemplateFormComponentExtended } from './lib/custom/Templates/templates-form.component';\nexport { MJAIPromptFormComponentExtended } from './lib/custom/AIPrompts/ai-prompt-form.component';\nexport { MJAIAgentFormComponentExtended } from './lib/custom/AIAgents/ai-agent-form.component';\nexport { MJAIPromptRunFormComponentExtended } from './lib/custom/AIPromptRuns/ai-prompt-run-form.component';\nexport { MJActionFormComponentExtended } from './lib/custom/Actions/action-form.component';\nexport { MJActionExecutionLogFormComponentExtended } from './lib/custom/Actions/action-execution-log-form.component';\nexport { MJAIAgentRunFormComponentExtended } from './lib/custom/ai-agent-run/ai-agent-run.component';\nexport { MJQueryFormComponentExtended } from './lib/custom/Queries/query-form.component';\nexport { MJTestRunFormComponentExtended } from './lib/custom/Tests/test-run-form.component';\nexport { MJTestFormComponentExtended } from './lib/custom/Tests/test-form.component';\nexport { MJTestSuiteRunFormComponentExtended } from './lib/custom/Tests/test-suite-run-form.component';\nexport { MJTestSuiteFormComponentExtended } from './lib/custom/Tests/test-suite-form.component';\nexport { MJTestRunFeedbackFormComponentExtended } from './lib/custom/Tests/test-run-feedback-form.component';\nexport { MJTestRubricFormComponentExtended } from './lib/custom/Tests/test-rubric-form.component';\nexport { MJListFormComponentExtended } from './lib/custom/Lists/list-form.component';\nexport { MJAIAgentSessionFormComponentExtended } from './lib/custom/AIAgentSessions/ai-agent-session-form.component';\nexport { MJAIAgentChannelFormComponentExtended } from './lib/custom/AIAgentChannels/ai-agent-channel-form.component';\n\n// Custom form supporting components\nexport { TemplateEditorComponent } from './lib/shared/components/template-editor.component';\nexport { ChatMessageViewerComponent } from './lib/custom/AIPromptRuns/chat-message-viewer.component';\nexport { AIAgentRunTimelineComponent } from './lib/custom/ai-agent-run/ai-agent-run-timeline.component';\nexport { AIAgentRunStepNodeComponent } from './lib/custom/ai-agent-run/ai-agent-run-step-node.component';\nexport { AIAgentRunAnalyticsComponent } from './lib/custom/ai-agent-run/ai-agent-run-analytics.component';\nexport { EntityLinkPillComponent } from './lib/custom/Tests/entity-link-pill.component';\n\n// Agent Dialog components and service\nexport { NewAgentDialogComponent } from './lib/custom/AIAgents/new-agent-dialog.component';\nexport { NewAgentDialogService } from './lib/custom/AIAgents/new-agent-dialog.service';\n\n// Flow Agent components\nexport { FlowAgentFormSectionComponent } from './lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component';\n// NOTE: Flow editor components have moved to @memberjunction/ng-flow-editor\n\n// NOTE: Action Test Harness components have moved to @memberjunction/ng-actions\n "]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-core-entity-forms",
3
- "version": "5.40.1",
3
+ "version": "5.41.0",
4
4
  "description": "MemberJunction Core Entity Angular Forms",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -29,41 +29,41 @@
29
29
  "@angular/router": "21.1.3",
30
30
  "@codemirror/language": "latest",
31
31
  "@codemirror/language-data": "^6.5.2",
32
- "@memberjunction/actions-base": "5.40.1",
33
- "@memberjunction/ai": "5.40.1",
34
- "@memberjunction/ai-core-plus": "5.40.1",
35
- "@memberjunction/ai-engine-base": "5.40.1",
36
- "@memberjunction/core": "5.40.1",
37
- "@memberjunction/core-entities": "5.40.1",
38
- "@memberjunction/global": "5.40.1",
39
- "@memberjunction/graphql-dataprovider": "5.40.1",
40
- "@memberjunction/ng-action-gallery": "5.40.1",
41
- "@memberjunction/ng-actions": "5.40.1",
42
- "@memberjunction/ng-agents": "5.40.1",
43
- "@memberjunction/ng-ai-test-harness": "5.40.1",
44
- "@memberjunction/ng-base-application": "5.40.1",
45
- "@memberjunction/ng-base-forms": "5.40.1",
46
- "@memberjunction/ng-base-types": "5.40.1",
47
- "@memberjunction/ng-code-editor": "5.40.1",
48
- "@memberjunction/ng-deep-diff": "5.40.1",
49
- "@memberjunction/ng-entity-relationship-diagram": "5.40.1",
50
- "@memberjunction/ng-entity-viewer": "5.40.1",
51
- "@memberjunction/ng-flow-editor": "5.40.1",
52
- "@memberjunction/ng-join-grid": "5.40.1",
53
- "@memberjunction/ng-link-directives": "5.40.1",
54
- "@memberjunction/ng-list-management": "5.40.1",
55
- "@memberjunction/ng-markdown": "5.40.1",
56
- "@memberjunction/ng-notifications": "5.40.1",
57
- "@memberjunction/ng-search": "5.40.1",
58
- "@memberjunction/ng-shared": "5.40.1",
59
- "@memberjunction/ng-shared-generic": "5.40.1",
60
- "@memberjunction/ng-tabstrip": "5.40.1",
61
- "@memberjunction/ng-testing": "5.40.1",
62
- "@memberjunction/ng-timeline": "5.40.1",
63
- "@memberjunction/ng-trees": "5.40.1",
64
- "@memberjunction/ng-ui-components": "5.40.1",
65
- "@memberjunction/ng-versions": "5.40.1",
66
- "@memberjunction/templates-base-types": "5.40.1",
32
+ "@memberjunction/actions-base": "5.41.0",
33
+ "@memberjunction/ai": "5.41.0",
34
+ "@memberjunction/ai-core-plus": "5.41.0",
35
+ "@memberjunction/ai-engine-base": "5.41.0",
36
+ "@memberjunction/core": "5.41.0",
37
+ "@memberjunction/core-entities": "5.41.0",
38
+ "@memberjunction/global": "5.41.0",
39
+ "@memberjunction/graphql-dataprovider": "5.41.0",
40
+ "@memberjunction/ng-action-gallery": "5.41.0",
41
+ "@memberjunction/ng-actions": "5.41.0",
42
+ "@memberjunction/ng-agents": "5.41.0",
43
+ "@memberjunction/ng-ai-test-harness": "5.41.0",
44
+ "@memberjunction/ng-base-application": "5.41.0",
45
+ "@memberjunction/ng-base-forms": "5.41.0",
46
+ "@memberjunction/ng-base-types": "5.41.0",
47
+ "@memberjunction/ng-code-editor": "5.41.0",
48
+ "@memberjunction/ng-deep-diff": "5.41.0",
49
+ "@memberjunction/ng-entity-relationship-diagram": "5.41.0",
50
+ "@memberjunction/ng-entity-viewer": "5.41.0",
51
+ "@memberjunction/ng-flow-editor": "5.41.0",
52
+ "@memberjunction/ng-join-grid": "5.41.0",
53
+ "@memberjunction/ng-link-directives": "5.41.0",
54
+ "@memberjunction/ng-list-management": "5.41.0",
55
+ "@memberjunction/ng-markdown": "5.41.0",
56
+ "@memberjunction/ng-notifications": "5.41.0",
57
+ "@memberjunction/ng-search": "5.41.0",
58
+ "@memberjunction/ng-shared": "5.41.0",
59
+ "@memberjunction/ng-shared-generic": "5.41.0",
60
+ "@memberjunction/ng-tabstrip": "5.41.0",
61
+ "@memberjunction/ng-testing": "5.41.0",
62
+ "@memberjunction/ng-timeline": "5.41.0",
63
+ "@memberjunction/ng-trees": "5.41.0",
64
+ "@memberjunction/ng-ui-components": "5.41.0",
65
+ "@memberjunction/ng-versions": "5.41.0",
66
+ "@memberjunction/templates-base-types": "5.41.0",
67
67
  "@types/d3": "^7.4.3",
68
68
  "ag-grid-angular": "^35.0.1",
69
69
  "ag-grid-community": "^35.0.1",