@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.
- package/dist/__tests__/bridge-provider-features.test.d.ts +2 -0
- package/dist/__tests__/bridge-provider-features.test.d.ts.map +1 -0
- package/dist/__tests__/bridge-provider-features.test.js +70 -0
- package/dist/__tests__/bridge-provider-features.test.js.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts +17 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js +170 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +133 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +1190 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +69 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +911 -562
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts +20 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js +115 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +50 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +75 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts +48 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +256 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +28 -4
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +42 -12
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +6 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +11 -1
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts +43 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts.map +1 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js +278 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +32 -26
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +34 -1
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +284 -180
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +117 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +16 -20
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +185 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +121 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js +94 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +37 -15
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js +90 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +7 -9
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +358 -343
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +426 -366
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +74 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +365 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -0
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MJAIBridgeAgentIdentityEntity } from '@memberjunction/core-entities';
|
|
2
|
+
import { MJAIBridgeAgentIdentityFormComponent } from '../../generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Custom form for 'MJ: AI Bridge Agent Identities' (Pattern 2). An identity
|
|
6
|
+
* binds an agent to a stable address on a bridge provider (an account id, an
|
|
7
|
+
* email, or a phone number) so the platform can route inbound calls / invites
|
|
8
|
+
* to the right agent. Adds a short provisioning hint above the generated
|
|
9
|
+
* field panels; the rest is the standard generated layout.
|
|
10
|
+
*/
|
|
11
|
+
export declare class MJAIBridgeAgentIdentityFormComponentExtended extends MJAIBridgeAgentIdentityFormComponent {
|
|
12
|
+
record: MJAIBridgeAgentIdentityEntity;
|
|
13
|
+
/** Human-readable hint for the current IdentityType. */
|
|
14
|
+
get IdentityTypeHint(): string;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MJAIBridgeAgentIdentityFormComponentExtended, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MJAIBridgeAgentIdentityFormComponentExtended, "mj-ai-bridge-agent-identity-form", never, {}, {}, never, never, false, never>;
|
|
17
|
+
}
|
|
18
|
+
/** Tree-shake guard — invoked from the custom-forms module loader. */
|
|
19
|
+
export declare function LoadMJAIBridgeAgentIdentityFormComponentExtended(): void;
|
|
20
|
+
//# sourceMappingURL=bridge-agent-identity-form.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-agent-identity-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,oCAAoC,EAAE,MAAM,yFAAyF,CAAC;;AAE/I;;;;;;GAMG;AACH,qBAOa,4CAA6C,SAAQ,oCAAoC;IAClF,MAAM,EAAG,6BAA6B,CAAC;IAEvD,wDAAwD;IACxD,IAAW,gBAAgB,IAAI,MAAM,CAWpC;yCAfQ,4CAA4C;2CAA5C,4CAA4C;CAgBxD;AAED,sEAAsE;AACtE,wBAAgB,gDAAgD,IAAI,IAAI,CAEvE"}
|
|
@@ -0,0 +1,115 @@
|
|
|
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 } from '@angular/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
10
|
+
import { MJAIBridgeAgentIdentityFormComponent } from '../../generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@memberjunction/ng-base-forms";
|
|
13
|
+
function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
15
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
16
|
+
i0.ɵɵlistener("Navigate", function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
17
|
+
i0.ɵɵelement(1, "mj-form-panel-slot", 2);
|
|
18
|
+
i0.ɵɵelementStart(2, "mj-collapsible-panel", 3);
|
|
19
|
+
i0.ɵɵelement(3, "mj-form-field", 4)(4, "mj-form-field", 5);
|
|
20
|
+
i0.ɵɵelementEnd();
|
|
21
|
+
i0.ɵɵelementStart(5, "mj-collapsible-panel", 6);
|
|
22
|
+
i0.ɵɵelement(6, "mj-form-field", 7)(7, "mj-form-field", 8)(8, "mj-form-field", 9);
|
|
23
|
+
i0.ɵɵelementStart(9, "div", 10);
|
|
24
|
+
i0.ɵɵelement(10, "i", 11);
|
|
25
|
+
i0.ɵɵelementStart(11, "span");
|
|
26
|
+
i0.ɵɵtext(12);
|
|
27
|
+
i0.ɵɵelementEnd()()();
|
|
28
|
+
i0.ɵɵelementStart(13, "mj-collapsible-panel", 12);
|
|
29
|
+
i0.ɵɵelement(14, "mj-form-field", 13)(15, "mj-form-field", 14);
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
i0.ɵɵelementStart(16, "mj-collapsible-panel", 15);
|
|
32
|
+
i0.ɵɵelement(17, "mj-form-field", 16)(18, "mj-form-field", 17);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
i0.ɵɵelement(19, "mj-form-panel-slot", 18)(20, "mj-form-panel-slot", 19);
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
} if (rf & 2) {
|
|
37
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
38
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
41
|
+
i0.ɵɵadvance();
|
|
42
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
47
|
+
i0.ɵɵadvance();
|
|
48
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
49
|
+
i0.ɵɵadvance();
|
|
50
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
53
|
+
i0.ɵɵadvance();
|
|
54
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
55
|
+
i0.ɵɵadvance(4);
|
|
56
|
+
i0.ɵɵtextInterpolate(ctx_r1.IdentityTypeHint);
|
|
57
|
+
i0.ɵɵadvance();
|
|
58
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
59
|
+
i0.ɵɵadvance();
|
|
60
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
61
|
+
i0.ɵɵadvance();
|
|
62
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
63
|
+
i0.ɵɵadvance();
|
|
64
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
|
|
65
|
+
i0.ɵɵadvance();
|
|
66
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
67
|
+
i0.ɵɵadvance();
|
|
68
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
69
|
+
i0.ɵɵadvance();
|
|
70
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
71
|
+
i0.ɵɵadvance();
|
|
72
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
73
|
+
} }
|
|
74
|
+
/**
|
|
75
|
+
* Custom form for 'MJ: AI Bridge Agent Identities' (Pattern 2). An identity
|
|
76
|
+
* binds an agent to a stable address on a bridge provider (an account id, an
|
|
77
|
+
* email, or a phone number) so the platform can route inbound calls / invites
|
|
78
|
+
* to the right agent. Adds a short provisioning hint above the generated
|
|
79
|
+
* field panels; the rest is the standard generated layout.
|
|
80
|
+
*/
|
|
81
|
+
let MJAIBridgeAgentIdentityFormComponentExtended = class MJAIBridgeAgentIdentityFormComponentExtended extends MJAIBridgeAgentIdentityFormComponent {
|
|
82
|
+
/** Human-readable hint for the current IdentityType. */
|
|
83
|
+
get IdentityTypeHint() {
|
|
84
|
+
switch (this.record?.IdentityType) {
|
|
85
|
+
case 'Email':
|
|
86
|
+
return 'An email address the provider treats as the agent. Invites sent here add the agent to the meeting; provision it as a real mailbox / calendar identity on the platform.';
|
|
87
|
+
case 'PhoneNumber':
|
|
88
|
+
return 'An E.164 phone number routed to the agent. Inbound calls to this number reach the agent; outbound dial uses it as the caller identity. Provision it with the telephony provider.';
|
|
89
|
+
case 'AccountID':
|
|
90
|
+
return "The provider's native account / bot id for the agent. Used when a host adds the agent from inside the platform's own UI. Provision it via the platform's marketplace app.";
|
|
91
|
+
default:
|
|
92
|
+
return 'Provision the identity with the bridge provider before activating it — inbound routing depends on the platform recognizing this value.';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIBridgeAgentIdentityFormComponentExtended_BaseFactory; return function MJAIBridgeAgentIdentityFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIBridgeAgentIdentityFormComponentExtended_BaseFactory || (ɵMJAIBridgeAgentIdentityFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIBridgeAgentIdentityFormComponentExtended)))(__ngFactoryType__ || MJAIBridgeAgentIdentityFormComponentExtended); }; })(); }
|
|
96
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIBridgeAgentIdentityFormComponentExtended, selectors: [["mj-ai-bridge-agent-identity-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "identityAssignment", "SectionName", "Identity Assignment", "Icon", "fa fa-link", 3, "Form", "FormContext"], ["FieldName", "AgentID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "identityDetails", "SectionName", "Identity Details", "Icon", "fa fa-id-card", 3, "Form", "FormContext"], ["FieldName", "IdentityType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IdentityValue", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "DisplayName", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "bai-hint"], [1, "fa-solid", "fa-circle-info"], ["SectionKey", "identityConfiguration", "SectionName", "Identity Configuration", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "IsActive", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Configuration", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"]], template: function MJAIBridgeAgentIdentityFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
+
i0.ɵɵconditionalCreate(0, MJAIBridgeAgentIdentityFormComponentExtended_Conditional_0_Template, 21, 63, "mj-record-form-container", 0);
|
|
98
|
+
} if (rf & 2) {
|
|
99
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
100
|
+
} }, dependencies: [i1.MjFormFieldComponent, i1.MjCollapsiblePanelComponent, i1.MjRecordFormContainerComponent, i1.FormPanelSlotComponent], styles: ["\n\n\n.bai-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.45;\n background: color-mix(in srgb, var(--mj-status-info) 10%, transparent);\n color: var(--mj-status-info-text, var(--mj-text-secondary));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 25%, var(--mj-border-default));\n}\n.bai-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-info, var(--mj-brand-primary));\n margin-top: 2px;\n flex: 0 0 auto;\n}"] }); }
|
|
101
|
+
};
|
|
102
|
+
MJAIBridgeAgentIdentityFormComponentExtended = __decorate([
|
|
103
|
+
RegisterClass(BaseFormComponent, 'MJ: AI Bridge Agent Identities')
|
|
104
|
+
], MJAIBridgeAgentIdentityFormComponentExtended);
|
|
105
|
+
export { MJAIBridgeAgentIdentityFormComponentExtended };
|
|
106
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIBridgeAgentIdentityFormComponentExtended, [{
|
|
107
|
+
type: Component,
|
|
108
|
+
args: [{ standalone: false, selector: 'mj-ai-bridge-agent-identity-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Identity Assignment -->\n <mj-collapsible-panel\n SectionKey=\"identityAssignment\"\n SectionName=\"Identity Assignment\"\n Icon=\"fa fa-link\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Identity Details -->\n <mj-collapsible-panel\n SectionKey=\"identityDetails\"\n SectionName=\"Identity Details\"\n Icon=\"fa fa-id-card\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdentityType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdentityValue\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisplayName\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n\n <div class=\"bai-hint\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>{{ IdentityTypeHint }}</span>\n </div>\n </mj-collapsible-panel>\n\n <!-- Identity Configuration -->\n <mj-collapsible-panel\n SectionKey=\"identityConfiguration\"\n SectionName=\"Identity Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IsActive\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n", styles: ["/* AI Bridge Agent Identity \u2014 provisioning hint. Tokens only. */\n\n.bai-hint {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.45;\n background: color-mix(in srgb, var(--mj-status-info) 10%, transparent);\n color: var(--mj-status-info-text, var(--mj-text-secondary));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 25%, var(--mj-border-default));\n}\n.bai-hint i {\n color: var(--mj-status-info, var(--mj-brand-primary));\n margin-top: 2px;\n flex: 0 0 auto;\n}\n"] }]
|
|
109
|
+
}], null, null); })();
|
|
110
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIBridgeAgentIdentityFormComponentExtended, { className: "MJAIBridgeAgentIdentityFormComponentExtended", filePath: "src/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.ts", lineNumber: 21 }); })();
|
|
111
|
+
/** Tree-shake guard — invoked from the custom-forms module loader. */
|
|
112
|
+
export function LoadMJAIBridgeAgentIdentityFormComponentExtended() {
|
|
113
|
+
/* no-op marker */
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=bridge-agent-identity-form.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-agent-identity-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.ts","../../../../src/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJAIBridgeAgentIdentityEntity } from '@memberjunction/core-entities';\nimport { MJAIBridgeAgentIdentityFormComponent } from '../../generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component';\n\n/**\n * Custom form for 'MJ: AI Bridge Agent Identities' (Pattern 2). An identity\n * binds an agent to a stable address on a bridge provider (an account id, an\n * email, or a phone number) so the platform can route inbound calls / invites\n * to the right agent. Adds a short provisioning hint above the generated\n * field panels; the rest is the standard generated layout.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Bridge Agent Identities')\n@Component({\n standalone: false,\n selector: 'mj-ai-bridge-agent-identity-form',\n templateUrl: './bridge-agent-identity-form.component.html',\n styleUrls: ['./bridge-agent-identity-form.component.css'],\n})\nexport class MJAIBridgeAgentIdentityFormComponentExtended extends MJAIBridgeAgentIdentityFormComponent {\n public override record!: MJAIBridgeAgentIdentityEntity;\n\n /** Human-readable hint for the current IdentityType. */\n public get IdentityTypeHint(): string {\n switch (this.record?.IdentityType) {\n case 'Email':\n return 'An email address the provider treats as the agent. Invites sent here add the agent to the meeting; provision it as a real mailbox / calendar identity on the platform.';\n case 'PhoneNumber':\n return 'An E.164 phone number routed to the agent. Inbound calls to this number reach the agent; outbound dial uses it as the caller identity. Provision it with the telephony provider.';\n case 'AccountID':\n return \"The provider's native account / bot id for the agent. Used when a host adds the agent from inside the platform's own UI. Provision it via the platform's marketplace app.\";\n default:\n return 'Provision the identity with the bridge provider before activating it — inbound routing depends on the platform recognizing this value.';\n }\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIBridgeAgentIdentityFormComponentExtended(): void {\n /* no-op marker */\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Identity Assignment -->\n <mj-collapsible-panel\n SectionKey=\"identityAssignment\"\n SectionName=\"Identity Assignment\"\n Icon=\"fa fa-link\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Identity Details -->\n <mj-collapsible-panel\n SectionKey=\"identityDetails\"\n SectionName=\"Identity Details\"\n Icon=\"fa fa-id-card\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdentityType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdentityValue\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisplayName\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n\n <div class=\"bai-hint\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>{{ IdentityTypeHint }}</span>\n </div>\n </mj-collapsible-panel>\n\n <!-- Identity Configuration -->\n <mj-collapsible-panel\n SectionKey=\"identityConfiguration\"\n SectionName=\"Identity Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IsActive\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { MJAIBridgeProviderEntity_IBridgeProviderFeatures } from '@memberjunction/core-entities';
|
|
2
|
+
/**
|
|
3
|
+
* Pure, framework-free model + helpers for the AI Bridge Provider capability
|
|
4
|
+
* editor. Kept separate from the Angular component so the object↔toggle mapping
|
|
5
|
+
* is unit-testable without an Angular harness.
|
|
6
|
+
*
|
|
7
|
+
* The capability flags live in `AIBridgeProvider.SupportedFeatures` as JSON,
|
|
8
|
+
* exposed via the typed `SupportedFeaturesObject` accessor
|
|
9
|
+
* (`IBridgeProviderFeatures`). Every key is an optional boolean; absent/false
|
|
10
|
+
* both mean "unsupported".
|
|
11
|
+
*/
|
|
12
|
+
/** A single capability flag key on the typed features object. */
|
|
13
|
+
export type BridgeFeatureKey = keyof MJAIBridgeProviderEntity_IBridgeProviderFeatures;
|
|
14
|
+
/** One toggle row in the editor. */
|
|
15
|
+
export interface BridgeFeatureDescriptor {
|
|
16
|
+
key: BridgeFeatureKey;
|
|
17
|
+
label: string;
|
|
18
|
+
description: string;
|
|
19
|
+
}
|
|
20
|
+
/** A labeled group of toggle rows. */
|
|
21
|
+
export interface BridgeFeatureGroup {
|
|
22
|
+
title: string;
|
|
23
|
+
icon: string;
|
|
24
|
+
features: BridgeFeatureDescriptor[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures
|
|
28
|
+
* interface documents them (join methods / media tracks / signals & telephony).
|
|
29
|
+
* Order here is the render order.
|
|
30
|
+
*/
|
|
31
|
+
export declare const BRIDGE_FEATURE_GROUPS: readonly BridgeFeatureGroup[];
|
|
32
|
+
/** Every feature key in render order — handy for counting / iteration. */
|
|
33
|
+
export declare const BRIDGE_FEATURE_KEYS: readonly BridgeFeatureKey[];
|
|
34
|
+
/**
|
|
35
|
+
* Read a single flag from a (possibly null) features object. Absent or false
|
|
36
|
+
* both resolve to false.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isFeatureEnabled(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Return a NEW features object with `key` set to `enabled`. When disabling, the
|
|
41
|
+
* key is omitted entirely (rather than persisted as `false`) so the stored JSON
|
|
42
|
+
* stays minimal — matching the "NULL/omitted = unsupported" convention.
|
|
43
|
+
*
|
|
44
|
+
* Never mutates the input; the typed accessor's cache invalidation depends on a
|
|
45
|
+
* fresh object reference being assigned back through the setter.
|
|
46
|
+
*/
|
|
47
|
+
export declare function setFeature(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey, enabled: boolean): MJAIBridgeProviderEntity_IBridgeProviderFeatures;
|
|
48
|
+
/** Count of enabled flags across all groups — used for the panel header badge. */
|
|
49
|
+
export declare function countEnabledFeatures(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null): number;
|
|
50
|
+
//# sourceMappingURL=bridge-provider-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-provider-features.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gDAAgD,EAAE,MAAM,+BAA+B,CAAC;AAEjG;;;;;;;;;GASG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,gDAAgD,CAAC;AAEtF,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAmCrD,CAAC;AAEX,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EACO,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACtB,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,OAAO,GACjB,gDAAgD,CAQlD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,gDAAgD,GAAG,IAAI,GAClE,MAAM,CAGR"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures
|
|
3
|
+
* interface documents them (join methods / media tracks / signals & telephony).
|
|
4
|
+
* Order here is the render order.
|
|
5
|
+
*/
|
|
6
|
+
export const BRIDGE_FEATURE_GROUPS = [
|
|
7
|
+
{
|
|
8
|
+
title: 'Join methods',
|
|
9
|
+
icon: 'fa-door-open',
|
|
10
|
+
features: [
|
|
11
|
+
{ key: 'OnDemandJoin', label: 'On-demand join', description: 'Join now from a supplied join URL / ID.' },
|
|
12
|
+
{ key: 'ScheduledJoin', label: 'Scheduled join', description: 'Join a known meeting at a future start time.' },
|
|
13
|
+
{ key: 'InviteJoin', label: 'Invite join', description: "Invited like a person via the agent's calendar / email identity." },
|
|
14
|
+
{ key: 'NativeInvite', label: 'Native invite', description: "A host adds the agent from inside the platform's own UI (marketplace app)." },
|
|
15
|
+
{ key: 'InboundRouting', label: 'Inbound routing', description: "Inbound calls / invites to the agent's identity route to the agent." },
|
|
16
|
+
{ key: 'OutboundDial', label: 'Outbound dial', description: 'Telephony: the agent can place outbound calls.' },
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: 'Media tracks',
|
|
21
|
+
icon: 'fa-photo-film',
|
|
22
|
+
features: [
|
|
23
|
+
{ key: 'AudioIn', label: 'Audio in', description: 'The agent hears the meeting / call.' },
|
|
24
|
+
{ key: 'AudioOut', label: 'Audio out', description: 'The agent speaks into the meeting / call.' },
|
|
25
|
+
{ key: 'VideoIn', label: 'Video in', description: "The agent sees participants' video." },
|
|
26
|
+
{ key: 'VideoOut', label: 'Video out', description: 'The agent shows video.' },
|
|
27
|
+
{ key: 'ScreenIn', label: 'Screen in', description: 'The agent sees a shared screen.' },
|
|
28
|
+
{ key: 'ScreenOut', label: 'Screen out', description: 'The agent shares a screen (e.g. a live demo).' },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: 'Signals & telephony',
|
|
33
|
+
icon: 'fa-tower-broadcast',
|
|
34
|
+
features: [
|
|
35
|
+
{ key: 'SpeakerDiarization', label: 'Speaker diarization', description: 'Inbound audio carries per-speaker labels.' },
|
|
36
|
+
{ key: 'DTMF', label: 'DTMF', description: 'Telephony: send / receive DTMF tones.' },
|
|
37
|
+
{ key: 'CallTransfer', label: 'Call transfer', description: 'Telephony: transfer a call to another party.' },
|
|
38
|
+
{ key: 'Recording', label: 'Recording', description: 'Request platform recording (subject to consent handling).' },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
/** Every feature key in render order — handy for counting / iteration. */
|
|
43
|
+
export const BRIDGE_FEATURE_KEYS = BRIDGE_FEATURE_GROUPS.flatMap(g => g.features.map(f => f.key));
|
|
44
|
+
/**
|
|
45
|
+
* Read a single flag from a (possibly null) features object. Absent or false
|
|
46
|
+
* both resolve to false.
|
|
47
|
+
*/
|
|
48
|
+
export function isFeatureEnabled(features, key) {
|
|
49
|
+
return features?.[key] === true;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Return a NEW features object with `key` set to `enabled`. When disabling, the
|
|
53
|
+
* key is omitted entirely (rather than persisted as `false`) so the stored JSON
|
|
54
|
+
* stays minimal — matching the "NULL/omitted = unsupported" convention.
|
|
55
|
+
*
|
|
56
|
+
* Never mutates the input; the typed accessor's cache invalidation depends on a
|
|
57
|
+
* fresh object reference being assigned back through the setter.
|
|
58
|
+
*/
|
|
59
|
+
export function setFeature(features, key, enabled) {
|
|
60
|
+
const next = { ...(features ?? {}) };
|
|
61
|
+
if (enabled) {
|
|
62
|
+
next[key] = true;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
delete next[key];
|
|
66
|
+
}
|
|
67
|
+
return next;
|
|
68
|
+
}
|
|
69
|
+
/** Count of enabled flags across all groups — used for the panel header badge. */
|
|
70
|
+
export function countEnabledFeatures(features) {
|
|
71
|
+
if (!features)
|
|
72
|
+
return 0;
|
|
73
|
+
return BRIDGE_FEATURE_KEYS.reduce((n, key) => (features[key] === true ? n + 1 : n), 0);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=bridge-provider-features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-provider-features.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIBridgeProviderEntity_IBridgeProviderFeatures } from '@memberjunction/core-entities';\n\n/**\n * Pure, framework-free model + helpers for the AI Bridge Provider capability\n * editor. Kept separate from the Angular component so the object↔toggle mapping\n * is unit-testable without an Angular harness.\n *\n * The capability flags live in `AIBridgeProvider.SupportedFeatures` as JSON,\n * exposed via the typed `SupportedFeaturesObject` accessor\n * (`IBridgeProviderFeatures`). Every key is an optional boolean; absent/false\n * both mean \"unsupported\".\n */\n\n/** A single capability flag key on the typed features object. */\nexport type BridgeFeatureKey = keyof MJAIBridgeProviderEntity_IBridgeProviderFeatures;\n\n/** One toggle row in the editor. */\nexport interface BridgeFeatureDescriptor {\n key: BridgeFeatureKey;\n label: string;\n description: string;\n}\n\n/** A labeled group of toggle rows. */\nexport interface BridgeFeatureGroup {\n title: string;\n icon: string;\n features: BridgeFeatureDescriptor[];\n}\n\n/**\n * The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures\n * interface documents them (join methods / media tracks / signals & telephony).\n * Order here is the render order.\n */\nexport const BRIDGE_FEATURE_GROUPS: readonly BridgeFeatureGroup[] = [\n {\n title: 'Join methods',\n icon: 'fa-door-open',\n features: [\n { key: 'OnDemandJoin', label: 'On-demand join', description: 'Join now from a supplied join URL / ID.' },\n { key: 'ScheduledJoin', label: 'Scheduled join', description: 'Join a known meeting at a future start time.' },\n { key: 'InviteJoin', label: 'Invite join', description: \"Invited like a person via the agent's calendar / email identity.\" },\n { key: 'NativeInvite', label: 'Native invite', description: \"A host adds the agent from inside the platform's own UI (marketplace app).\" },\n { key: 'InboundRouting', label: 'Inbound routing', description: \"Inbound calls / invites to the agent's identity route to the agent.\" },\n { key: 'OutboundDial', label: 'Outbound dial', description: 'Telephony: the agent can place outbound calls.' },\n ],\n },\n {\n title: 'Media tracks',\n icon: 'fa-photo-film',\n features: [\n { key: 'AudioIn', label: 'Audio in', description: 'The agent hears the meeting / call.' },\n { key: 'AudioOut', label: 'Audio out', description: 'The agent speaks into the meeting / call.' },\n { key: 'VideoIn', label: 'Video in', description: \"The agent sees participants' video.\" },\n { key: 'VideoOut', label: 'Video out', description: 'The agent shows video.' },\n { key: 'ScreenIn', label: 'Screen in', description: 'The agent sees a shared screen.' },\n { key: 'ScreenOut', label: 'Screen out', description: 'The agent shares a screen (e.g. a live demo).' },\n ],\n },\n {\n title: 'Signals & telephony',\n icon: 'fa-tower-broadcast',\n features: [\n { key: 'SpeakerDiarization', label: 'Speaker diarization', description: 'Inbound audio carries per-speaker labels.' },\n { key: 'DTMF', label: 'DTMF', description: 'Telephony: send / receive DTMF tones.' },\n { key: 'CallTransfer', label: 'Call transfer', description: 'Telephony: transfer a call to another party.' },\n { key: 'Recording', label: 'Recording', description: 'Request platform recording (subject to consent handling).' },\n ],\n },\n] as const;\n\n/** Every feature key in render order — handy for counting / iteration. */\nexport const BRIDGE_FEATURE_KEYS: readonly BridgeFeatureKey[] =\n BRIDGE_FEATURE_GROUPS.flatMap(g => g.features.map(f => f.key));\n\n/**\n * Read a single flag from a (possibly null) features object. Absent or false\n * both resolve to false.\n */\nexport function isFeatureEnabled(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n): boolean {\n return features?.[key] === true;\n}\n\n/**\n * Return a NEW features object with `key` set to `enabled`. When disabling, the\n * key is omitted entirely (rather than persisted as `false`) so the stored JSON\n * stays minimal — matching the \"NULL/omitted = unsupported\" convention.\n *\n * Never mutates the input; the typed accessor's cache invalidation depends on a\n * fresh object reference being assigned back through the setter.\n */\nexport function setFeature(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n enabled: boolean,\n): MJAIBridgeProviderEntity_IBridgeProviderFeatures {\n const next: MJAIBridgeProviderEntity_IBridgeProviderFeatures = { ...(features ?? {}) };\n if (enabled) {\n next[key] = true;\n } else {\n delete next[key];\n }\n return next;\n}\n\n/** Count of enabled flags across all groups — used for the panel header badge. */\nexport function countEnabledFeatures(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n): number {\n if (!features) return 0;\n return BRIDGE_FEATURE_KEYS.reduce((n, key) => (features[key] === true ? n + 1 : n), 0);\n}\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MJAIBridgeProviderEntity } from '@memberjunction/core-entities';
|
|
2
|
+
import { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';
|
|
3
|
+
import { BridgeFeatureGroup, BridgeFeatureKey } from './bridge-provider-features';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Custom form for 'MJ: AI Bridge Providers' (Pattern 2 — full override of the
|
|
7
|
+
* generated form). The standout addition is a **capability editor**: the 16
|
|
8
|
+
* `SupportedFeatures` flags rendered as labeled toggles, grouped into Join
|
|
9
|
+
* methods / Media tracks / Signals & telephony.
|
|
10
|
+
*
|
|
11
|
+
* The toggles bind through the entity's typed `SupportedFeaturesObject`
|
|
12
|
+
* accessor (which serializes to/from the `SupportedFeatures` JSON column). On
|
|
13
|
+
* each toggle we read the current object, produce a fresh object via the pure
|
|
14
|
+
* `setFeature` helper, and write it back through the setter — a fresh reference
|
|
15
|
+
* is required so the accessor's parse-cache invalidates and dirty tracking
|
|
16
|
+
* fires. Disabling omits the key (matching "NULL/omitted = unsupported").
|
|
17
|
+
*
|
|
18
|
+
* The remaining provider fields (Name / Description / BridgeType / DriverClass
|
|
19
|
+
* / Status / Configuration / ConfigSchema) and the related-entity grids keep
|
|
20
|
+
* the generated panels.
|
|
21
|
+
*/
|
|
22
|
+
export declare class MJAIBridgeProviderFormComponentExtended extends MJAIBridgeProviderFormComponent {
|
|
23
|
+
record: MJAIBridgeProviderEntity;
|
|
24
|
+
/** Static editor layout (16 flags, 3 groups). */
|
|
25
|
+
readonly FeatureGroups: readonly BridgeFeatureGroup[];
|
|
26
|
+
/**
|
|
27
|
+
* Register section state for the custom layout. We don't call
|
|
28
|
+
* `super.ngOnInit()`'s `initSections` because this form restructures the
|
|
29
|
+
* sections (adds `supportedFeatures` + `configurationSchema`, splits the
|
|
30
|
+
* generated "Technical Capabilities" panel), so we register our own keys.
|
|
31
|
+
*/
|
|
32
|
+
ngOnInit(): Promise<void>;
|
|
33
|
+
/** Count of enabled capabilities — drives the panel badge. */
|
|
34
|
+
get EnabledFeatureCount(): number;
|
|
35
|
+
/** Read a single capability flag for the template. */
|
|
36
|
+
IsFeatureOn(key: BridgeFeatureKey): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Toggle a capability flag. Reads the current typed object, builds a fresh
|
|
39
|
+
* object with the flag changed, and assigns it back through the typed
|
|
40
|
+
* setter (which re-serializes to the JSON column and marks the field dirty).
|
|
41
|
+
*/
|
|
42
|
+
ToggleFeature(key: BridgeFeatureKey, enabled: boolean): void;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MJAIBridgeProviderFormComponentExtended, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MJAIBridgeProviderFormComponentExtended, "mj-ai-bridge-provider-form", never, {}, {}, never, never, false, never>;
|
|
45
|
+
}
|
|
46
|
+
/** Tree-shake guard — invoked from the custom-forms module loader. */
|
|
47
|
+
export declare function LoadMJAIBridgeProviderFormComponentExtended(): void;
|
|
48
|
+
//# sourceMappingURL=bridge-provider-form.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-provider-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-form.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+EAA+E,CAAC;AAChI,OAAO,EAEH,kBAAkB,EAClB,gBAAgB,EAInB,MAAM,4BAA4B,CAAC;;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAOa,uCAAwC,SAAQ,+BAA+B;IACxE,MAAM,EAAG,wBAAwB,CAAC;IAElD,iDAAiD;IACjD,SAAgB,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAyB;IAErF;;;;;OAKG;IACY,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC,8DAA8D;IAC9D,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAED,sDAAsD;IAC/C,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO;IAIlD;;;;OAIG;IACI,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;yCAzC1D,uCAAuC;2CAAvC,uCAAuC;CAmDnD;AAED,sEAAsE;AACtE,wBAAgB,2CAA2C,IAAI,IAAI,CAElE"}
|