@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,43 @@
1
+ import { MJAIAgentSessionBridgeEntity } from '@memberjunction/core-entities';
2
+ import { MJAIAgentSessionBridgeFormComponent } from '../../generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component';
3
+ import * as i0 from "@angular/core";
4
+ type BridgeStatus = MJAIAgentSessionBridgeEntity['Status'];
5
+ /** One node in the lifecycle timeline header. */
6
+ export interface BridgeTimelineStep {
7
+ /** The status this step represents. */
8
+ status: BridgeStatus;
9
+ label: string;
10
+ icon: string;
11
+ /** The timestamp field that marks this step reached, if any. */
12
+ timestamp: Date | null;
13
+ /** 'done' = passed, 'current' = the record's current status, 'pending' = not yet reached. */
14
+ state: 'done' | 'current' | 'pending';
15
+ }
16
+ /**
17
+ * Custom form for 'MJ: AI Agent Session Bridges' (Pattern 2). The live /
18
+ * historical view of a single bridge leg: a readable lifecycle timeline
19
+ * (Scheduled/Pending → Connecting → Connected → Disconnecting → Disconnected,
20
+ * or Failed) built from the status + lifecycle timestamps, then the connection
21
+ * details (Direction / JoinMethod / TurnMode / Address / ExternalConnectionID)
22
+ * and the related participant grid. Mostly read-oriented — these rows are
23
+ * written by the realtime engine, not hand-edited.
24
+ */
25
+ export declare class MJAIAgentSessionBridgeFormComponentExtended extends MJAIAgentSessionBridgeFormComponent {
26
+ record: MJAIAgentSessionBridgeEntity;
27
+ /** Register section state including the custom lifecycle timeline panel. */
28
+ ngOnInit(): Promise<void>;
29
+ /** True when the bridge ended abnormally — surfaced distinctly in the timeline. */
30
+ get IsFailed(): boolean;
31
+ /**
32
+ * The lifecycle timeline steps with per-step state (done / current /
33
+ * pending) and the timestamp that marks each step reached.
34
+ */
35
+ get TimelineSteps(): BridgeTimelineStep[];
36
+ GetStatusIcon(status: string | null): string;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJAIAgentSessionBridgeFormComponentExtended, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJAIAgentSessionBridgeFormComponentExtended, "mj-ai-agent-session-bridge-form", never, {}, {}, never, never, false, never>;
39
+ }
40
+ /** Tree-shake guard — invoked from the custom-forms module loader. */
41
+ export declare function LoadMJAIAgentSessionBridgeFormComponentExtended(): void;
42
+ export {};
43
+ //# sourceMappingURL=session-bridge-form.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-bridge-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/SessionBridges/session-bridge-form.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,mCAAmC,EAAE,MAAM,uFAAuF,CAAC;;AAE5I,KAAK,YAAY,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AAE3D,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IAC/B,uCAAuC;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,6FAA6F;IAC7F,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CACzC;AAOD;;;;;;;;GAQG;AACH,qBAOa,2CAA4C,SAAQ,mCAAmC;IAChF,MAAM,EAAG,4BAA4B,CAAC;IAEtD,4EAA4E;IAC7D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxC,mFAAmF;IACnF,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;;OAGG;IACH,IAAW,aAAa,IAAI,kBAAkB,EAAE,CAgC/C;IAEM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;yCA3D1C,2CAA2C;2CAA3C,2CAA2C;CAuEvD;AAED,sEAAsE;AACtE,wBAAgB,+CAA+C,IAAI,IAAI,CAEtE"}
@@ -0,0 +1,278 @@
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 { MJAIAgentSessionBridgeFormComponent } from '../../generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@memberjunction/ng-base-forms";
13
+ import * as i2 from "@angular/common";
14
+ const _forTrack0 = ($index, $item) => $item.status;
15
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelementStart(0, "span", 6);
17
+ i0.ɵɵtext(1);
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const ctx_r1 = i0.ɵɵnextContext(2);
21
+ i0.ɵɵadvance();
22
+ i0.ɵɵtextInterpolate1("close reason: ", ctx_r1.record.CloseReason);
23
+ } }
24
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "span", 38);
26
+ i0.ɵɵtext(1);
27
+ i0.ɵɵpipe(2, "date");
28
+ i0.ɵɵelementEnd();
29
+ } if (rf & 2) {
30
+ const step_r3 = i0.ɵɵnextContext().$implicit;
31
+ i0.ɵɵadvance();
32
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, step_r3.timestamp, "medium"));
33
+ } }
34
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_For_10_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelementStart(0, "li", 34)(1, "span", 35);
36
+ i0.ɵɵelement(2, "i");
37
+ i0.ɵɵelementEnd();
38
+ i0.ɵɵelementStart(3, "div", 36)(4, "span", 37);
39
+ i0.ɵɵtext(5);
40
+ i0.ɵɵelementEnd();
41
+ i0.ɵɵconditionalCreate(6, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_For_10_Conditional_6_Template, 3, 4, "span", 38);
42
+ i0.ɵɵelementEnd()();
43
+ } if (rf & 2) {
44
+ const step_r3 = ctx.$implicit;
45
+ i0.ɵɵclassProp("done", step_r3.state === "done")("current", step_r3.state === "current")("pending", step_r3.state === "pending");
46
+ i0.ɵɵadvance(2);
47
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", step_r3.icon));
48
+ i0.ɵɵadvance(3);
49
+ i0.ɵɵtextInterpolate(step_r3.label);
50
+ i0.ɵɵadvance();
51
+ i0.ɵɵconditional(step_r3.timestamp ? 6 : -1);
52
+ } }
53
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "div", 9);
55
+ i0.ɵɵelement(1, "i", 39);
56
+ i0.ɵɵtext(2, " This bridge ended abnormally (status ");
57
+ i0.ɵɵelementStart(3, "strong");
58
+ i0.ɵɵtext(4, "Failed");
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵtext(5, "). See the participant rows and Config for diagnostics. ");
61
+ i0.ɵɵelementEnd();
62
+ } }
63
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
64
+ const _r4 = i0.ɵɵgetCurrentView();
65
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 40);
66
+ i0.ɵɵlistener("Navigate", function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_35_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_35_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJAIAgentSessionBridgeParticipants", $event.totalRowCount)); });
67
+ i0.ɵɵelementEnd()();
68
+ } if (rf & 2) {
69
+ const ctx_r1 = i0.ɵɵnextContext(2);
70
+ i0.ɵɵadvance();
71
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Agent Session Bridge Participants", "SessionBridgeID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Agent Session Bridge Participants"))("AllowLoad", ctx_r1.IsSectionExpanded("mJAIAgentSessionBridgeParticipants"))("ShowToolbar", false);
72
+ } }
73
+ function MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
74
+ const _r1 = i0.ɵɵgetCurrentView();
75
+ i0.ɵɵelementStart(0, "mj-record-form-container", 1);
76
+ i0.ɵɵlistener("Navigate", function MJAIAgentSessionBridgeFormComponentExtended_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 MJAIAgentSessionBridgeFormComponentExtended_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 MJAIAgentSessionBridgeFormComponentExtended_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 MJAIAgentSessionBridgeFormComponentExtended_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 MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
77
+ i0.ɵɵelement(1, "mj-form-panel-slot", 2);
78
+ i0.ɵɵelementStart(2, "mj-collapsible-panel", 3)(3, "div", 4);
79
+ i0.ɵɵelement(4, "i");
80
+ i0.ɵɵelementStart(5, "span", 5);
81
+ i0.ɵɵtext(6);
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵconditionalCreate(7, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_7_Template, 2, 1, "span", 6);
84
+ i0.ɵɵelementEnd();
85
+ i0.ɵɵelementStart(8, "ol", 7);
86
+ i0.ɵɵrepeaterCreate(9, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_For_10_Template, 7, 11, "li", 8, _forTrack0);
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵconditionalCreate(11, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_11_Template, 6, 0, "div", 9);
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementStart(12, "mj-collapsible-panel", 10);
91
+ i0.ɵɵelement(13, "mj-form-field", 11)(14, "mj-form-field", 12);
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelementStart(15, "mj-collapsible-panel", 13);
94
+ i0.ɵɵelement(16, "mj-form-field", 14)(17, "mj-form-field", 15)(18, "mj-form-field", 16)(19, "mj-form-field", 17)(20, "mj-form-field", 18)(21, "mj-form-field", 19);
95
+ i0.ɵɵelementEnd();
96
+ i0.ɵɵelementStart(22, "mj-collapsible-panel", 20);
97
+ i0.ɵɵelement(23, "mj-form-field", 21)(24, "mj-form-field", 22)(25, "mj-form-field", 23)(26, "mj-form-field", 24)(27, "mj-form-field", 25);
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵelementStart(28, "mj-collapsible-panel", 26);
100
+ i0.ɵɵelement(29, "mj-form-field", 27)(30, "mj-form-field", 28)(31, "mj-form-field", 29)(32, "mj-form-field", 30);
101
+ i0.ɵɵelementEnd();
102
+ i0.ɵɵelement(33, "mj-form-panel-slot", 31);
103
+ i0.ɵɵelementStart(34, "mj-collapsible-panel", 32);
104
+ i0.ɵɵconditionalCreate(35, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Conditional_35_Template, 2, 4, "div");
105
+ i0.ɵɵelementEnd();
106
+ i0.ɵɵelement(36, "mj-form-panel-slot", 33);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const ctx_r1 = i0.ɵɵnextContext();
110
+ i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
111
+ i0.ɵɵadvance();
112
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
113
+ i0.ɵɵadvance();
114
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", true);
115
+ i0.ɵɵadvance();
116
+ i0.ɵɵclassProp("failed", ctx_r1.IsFailed);
117
+ i0.ɵɵadvance();
118
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", ctx_r1.GetStatusIcon(ctx_r1.record.Status)));
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵtextInterpolate(ctx_r1.record.Status);
121
+ i0.ɵɵadvance();
122
+ i0.ɵɵconditional(ctx_r1.record.CloseReason ? 7 : -1);
123
+ i0.ɵɵadvance(2);
124
+ i0.ɵɵrepeater(ctx_r1.TimelineSteps);
125
+ i0.ɵɵadvance(2);
126
+ i0.ɵɵconditional(ctx_r1.IsFailed ? 11 : -1);
127
+ i0.ɵɵadvance();
128
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
129
+ i0.ɵɵadvance();
130
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
131
+ i0.ɵɵadvance();
132
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
133
+ i0.ɵɵadvance();
134
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
135
+ i0.ɵɵadvance();
136
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
137
+ i0.ɵɵadvance();
138
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
141
+ i0.ɵɵadvance();
142
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
143
+ i0.ɵɵadvance();
144
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
145
+ i0.ɵɵadvance();
146
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
147
+ i0.ɵɵadvance();
148
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
149
+ i0.ɵɵadvance();
150
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
151
+ i0.ɵɵadvance();
152
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
153
+ i0.ɵɵadvance();
154
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
155
+ i0.ɵɵadvance();
156
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
157
+ i0.ɵɵadvance();
158
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
159
+ i0.ɵɵadvance();
160
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
161
+ i0.ɵɵadvance();
162
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
163
+ i0.ɵɵadvance();
164
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
165
+ i0.ɵɵadvance();
166
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
169
+ i0.ɵɵadvance();
170
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
171
+ i0.ɵɵadvance();
172
+ i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJAIAgentSessionBridgeParticipants"))("DefaultExpanded", false);
173
+ i0.ɵɵadvance();
174
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 35 : -1);
175
+ i0.ɵɵadvance();
176
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
177
+ } }
178
+ /** The canonical happy-path lifecycle order for index comparison. */
179
+ const LIFECYCLE_ORDER = [
180
+ 'Scheduled', 'Pending', 'Connecting', 'Connected', 'Disconnecting', 'Disconnected',
181
+ ];
182
+ /**
183
+ * Custom form for 'MJ: AI Agent Session Bridges' (Pattern 2). The live /
184
+ * historical view of a single bridge leg: a readable lifecycle timeline
185
+ * (Scheduled/Pending → Connecting → Connected → Disconnecting → Disconnected,
186
+ * or Failed) built from the status + lifecycle timestamps, then the connection
187
+ * details (Direction / JoinMethod / TurnMode / Address / ExternalConnectionID)
188
+ * and the related participant grid. Mostly read-oriented — these rows are
189
+ * written by the realtime engine, not hand-edited.
190
+ */
191
+ let MJAIAgentSessionBridgeFormComponentExtended = class MJAIAgentSessionBridgeFormComponentExtended extends MJAIAgentSessionBridgeFormComponent {
192
+ /** Register section state including the custom lifecycle timeline panel. */
193
+ async ngOnInit() {
194
+ await super.ngOnInit();
195
+ this.initSections([
196
+ { sectionKey: 'lifecycleTimeline', sectionName: 'Lifecycle', isExpanded: true },
197
+ { sectionKey: 'sessionContext', sectionName: 'Session Context', isExpanded: true },
198
+ { sectionKey: 'connectionDetails', sectionName: 'Connection Details', isExpanded: true },
199
+ { sectionKey: 'lifecycleAndTiming', sectionName: 'Lifecycle and Timing', isExpanded: false },
200
+ { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },
201
+ { sectionKey: 'mJAIAgentSessionBridgeParticipants', sectionName: 'Participants', isExpanded: false },
202
+ ]);
203
+ }
204
+ /** True when the bridge ended abnormally — surfaced distinctly in the timeline. */
205
+ get IsFailed() {
206
+ return this.record?.Status === 'Failed';
207
+ }
208
+ /**
209
+ * The lifecycle timeline steps with per-step state (done / current /
210
+ * pending) and the timestamp that marks each step reached.
211
+ */
212
+ get TimelineSteps() {
213
+ const r = this.record;
214
+ if (!r)
215
+ return [];
216
+ const currentIndex = LIFECYCLE_ORDER.indexOf(r.Status);
217
+ // 'Failed' / 'Scheduled' aren't on the linear path past 'Connecting';
218
+ // treat unknown/terminal-abnormal as "everything up to Connecting is moot".
219
+ const effectiveIndex = currentIndex >= 0 ? currentIndex : -1;
220
+ const defs = [
221
+ { status: 'Scheduled', label: 'Scheduled', icon: 'fa-calendar', timestamp: r.ScheduledStartTime ?? null },
222
+ { status: 'Pending', label: 'Pending', icon: 'fa-clock', timestamp: null },
223
+ { status: 'Connecting', label: 'Connecting', icon: 'fa-plug-circle-bolt', timestamp: null },
224
+ { status: 'Connected', label: 'Connected', icon: 'fa-plug-circle-check', timestamp: r.ConnectedAt ?? null },
225
+ { status: 'Disconnecting', label: 'Disconnecting', icon: 'fa-plug-circle-xmark', timestamp: null },
226
+ { status: 'Disconnected', label: 'Disconnected', icon: 'fa-circle-stop', timestamp: r.DisconnectedAt ?? null },
227
+ ];
228
+ return defs.map((d) => {
229
+ const idx = LIFECYCLE_ORDER.indexOf(d.status);
230
+ let state;
231
+ if (effectiveIndex < 0) {
232
+ state = 'pending';
233
+ }
234
+ else if (idx < effectiveIndex) {
235
+ state = 'done';
236
+ }
237
+ else if (idx === effectiveIndex) {
238
+ state = 'current';
239
+ }
240
+ else {
241
+ state = 'pending';
242
+ }
243
+ return { ...d, state };
244
+ });
245
+ }
246
+ GetStatusIcon(status) {
247
+ switch (status) {
248
+ case 'Connected': return 'fa-plug-circle-check';
249
+ case 'Connecting': return 'fa-plug-circle-bolt';
250
+ case 'Disconnecting': return 'fa-plug-circle-xmark';
251
+ case 'Disconnected': return 'fa-circle-stop';
252
+ case 'Failed': return 'fa-triangle-exclamation';
253
+ case 'Pending': return 'fa-clock';
254
+ case 'Scheduled': return 'fa-calendar';
255
+ default: return 'fa-question-circle';
256
+ }
257
+ }
258
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIAgentSessionBridgeFormComponentExtended_BaseFactory; return function MJAIAgentSessionBridgeFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIAgentSessionBridgeFormComponentExtended_BaseFactory || (ɵMJAIAgentSessionBridgeFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIAgentSessionBridgeFormComponentExtended)))(__ngFactoryType__ || MJAIAgentSessionBridgeFormComponentExtended); }; })(); }
259
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIAgentSessionBridgeFormComponentExtended, selectors: [["mj-ai-agent-session-bridge-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", "lifecycleTimeline", "SectionName", "Lifecycle", "Icon", "fa fa-timeline", 3, "Form", "FormContext", "DefaultExpanded"], [1, "sb-status-line"], [1, "sb-status-text"], [1, "sb-close-reason"], [1, "sb-timeline"], [1, "sb-step", 3, "done", "current", "pending"], [1, "sb-failed-note"], ["SectionKey", "sessionContext", "SectionName", "Session Context", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "AgentSessionID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "connectionDetails", "SectionName", "Connection Details", "Icon", "fa fa-plug", 3, "Form", "FormContext"], ["FieldName", "Direction", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "JoinMethod", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TurnMode", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ExternalConnectionID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Address", "Type", "textarea", "LinkType", "URL", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "BotParticipantID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "lifecycleAndTiming", "SectionName", "Lifecycle and Timing", "Icon", "fa fa-clock", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ScheduledStartTime", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ConnectedAt", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "DisconnectedAt", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CloseReason", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "HostInstanceID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Config", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["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"], ["SectionKey", "mJAIAgentSessionBridgeParticipants", "SectionName", "Participants", "Icon", "fa fa-users", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "sb-step"], [1, "sb-step-dot"], [1, "sb-step-body"], [1, "sb-step-label"], [1, "sb-step-time"], [1, "fa-solid", "fa-triangle-exclamation"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function MJAIAgentSessionBridgeFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
260
+ i0.ɵɵconditionalCreate(0, MJAIAgentSessionBridgeFormComponentExtended_Conditional_0_Template, 37, 111, "mj-record-form-container", 0);
261
+ } if (rf & 2) {
262
+ i0.ɵɵconditional(ctx.record ? 0 : -1);
263
+ } }, dependencies: [i1.MjFormFieldComponent, i1.MjCollapsiblePanelComponent, i1.MjRecordFormContainerComponent, i1.ExplorerEntityDataGridComponent, i1.FormPanelSlotComponent, i2.DatePipe], styles: ["\n\n\n.sb-status-line[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 16px;\n}\n.sb-status-line[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.sb-status-line.failed[_ngcontent-%COMP%], \n.sb-status-line.failed[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.sb-status-line[_ngcontent-%COMP%] .sb-close-reason[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n.sb-timeline[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n}\n.sb-step[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex: 1 1 0;\n min-width: 130px;\n padding: 0 8px 0 0;\n}\n\n\n.sb-step[_ngcontent-%COMP%]::after {\n content: \"\";\n position: absolute;\n top: 13px;\n left: 26px;\n right: -2px;\n height: 2px;\n background: var(--mj-border-default);\n}\n.sb-step[_ngcontent-%COMP%]:last-child::after { display: none; }\n.sb-step.done[_ngcontent-%COMP%]::after { background: var(--mj-brand-primary); }\n\n.sb-step-dot[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 2px solid var(--mj-border-default);\n z-index: 1;\n}\n.sb-step.done[_ngcontent-%COMP%] .sb-step-dot[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n.sb-step.current[_ngcontent-%COMP%] .sb-step-dot[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.sb-step-body[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; padding-top: 2px; min-width: 0; }\n.sb-step-label[_ngcontent-%COMP%] { font-size: 12px; font-weight: 600; color: var(--mj-text-secondary); }\n.sb-step.current[_ngcontent-%COMP%] .sb-step-label[_ngcontent-%COMP%], \n.sb-step.done[_ngcontent-%COMP%] .sb-step-label[_ngcontent-%COMP%] { color: var(--mj-text-primary); }\n.sb-step-time[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-muted); }\n\n.sb-failed-note[_ngcontent-%COMP%] {\n margin-top: 14px;\n font-size: 12px;\n line-height: 1.45;\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.sb-failed-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 6px; }"] }); }
264
+ };
265
+ MJAIAgentSessionBridgeFormComponentExtended = __decorate([
266
+ RegisterClass(BaseFormComponent, 'MJ: AI Agent Session Bridges')
267
+ ], MJAIAgentSessionBridgeFormComponentExtended);
268
+ export { MJAIAgentSessionBridgeFormComponentExtended };
269
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentSessionBridgeFormComponentExtended, [{
270
+ type: Component,
271
+ args: [{ standalone: false, selector: 'mj-ai-agent-session-bridge-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 <!-- Lifecycle timeline -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleTimeline\"\n SectionName=\"Lifecycle\"\n Icon=\"fa fa-timeline\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n\n <div class=\"sb-status-line\" [class.failed]=\"IsFailed\">\n <i class=\"fa-solid {{ GetStatusIcon(record.Status) }}\"></i>\n <span class=\"sb-status-text\">{{ record.Status }}</span>\n @if (record.CloseReason) {\n <span class=\"sb-close-reason\">close reason: {{ record.CloseReason }}</span>\n }\n </div>\n\n <ol class=\"sb-timeline\">\n @for (step of TimelineSteps; track step.status) {\n <li class=\"sb-step\" [class.done]=\"step.state === 'done'\" [class.current]=\"step.state === 'current'\" [class.pending]=\"step.state === 'pending'\">\n <span class=\"sb-step-dot\"><i class=\"fa-solid {{ step.icon }}\"></i></span>\n <div class=\"sb-step-body\">\n <span class=\"sb-step-label\">{{ step.label }}</span>\n @if (step.timestamp) {\n <span class=\"sb-step-time\">{{ step.timestamp | date:'medium' }}</span>\n }\n </div>\n </li>\n }\n </ol>\n\n @if (IsFailed) {\n <div class=\"sb-failed-note\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This bridge ended abnormally (status <strong>Failed</strong>). See the participant rows and Config for diagnostics.\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Session Context -->\n <mj-collapsible-panel\n SectionKey=\"sessionContext\"\n SectionName=\"Session Context\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentSessionID\" 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 <!-- Connection Details -->\n <mj-collapsible-panel\n SectionKey=\"connectionDetails\"\n SectionName=\"Connection Details\"\n Icon=\"fa fa-plug\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Direction\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"JoinMethod\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"TurnMode\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalConnectionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Address\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"URL\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BotParticipantID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Lifecycle and Timing (raw fields) -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleAndTiming\"\n SectionName=\"Lifecycle and Timing\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduledStartTime\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisconnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CloseReason\" Type=\"select\" [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=\"HostInstanceID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Config\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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 <!-- Participants -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridgeParticipants\"\n SectionName=\"Participants\"\n Icon=\"fa fa-users\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridgeParticipants')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridge Participants','SessionBridgeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridge Participants')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridgeParticipants')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridgeParticipants', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\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 Agent Session Bridge \u2014 lifecycle timeline. All colors via design tokens. */\n\n.sb-status-line {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 16px;\n}\n.sb-status-line i { color: var(--mj-brand-primary); }\n.sb-status-line.failed,\n.sb-status-line.failed i { color: var(--mj-status-error); }\n.sb-status-line .sb-close-reason {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n.sb-timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n}\n.sb-step {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex: 1 1 0;\n min-width: 130px;\n padding: 0 8px 0 0;\n}\n/* Connector line between steps */\n.sb-step::after {\n content: \"\";\n position: absolute;\n top: 13px;\n left: 26px;\n right: -2px;\n height: 2px;\n background: var(--mj-border-default);\n}\n.sb-step:last-child::after { display: none; }\n.sb-step.done::after { background: var(--mj-brand-primary); }\n\n.sb-step-dot {\n flex: 0 0 auto;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 2px solid var(--mj-border-default);\n z-index: 1;\n}\n.sb-step.done .sb-step-dot {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n.sb-step.current .sb-step-dot {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n}\n\n.sb-step-body { display: flex; flex-direction: column; gap: 2px; padding-top: 2px; min-width: 0; }\n.sb-step-label { font-size: 12px; font-weight: 600; color: var(--mj-text-secondary); }\n.sb-step.current .sb-step-label,\n.sb-step.done .sb-step-label { color: var(--mj-text-primary); }\n.sb-step-time { font-size: 11px; color: var(--mj-text-muted); }\n\n.sb-failed-note {\n margin-top: 14px;\n font-size: 12px;\n line-height: 1.45;\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.sb-failed-note i { margin-right: 6px; }\n"] }]
272
+ }], null, null); })();
273
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentSessionBridgeFormComponentExtended, { className: "MJAIAgentSessionBridgeFormComponentExtended", filePath: "src/lib/custom/SessionBridges/session-bridge-form.component.ts", lineNumber: 42 }); })();
274
+ /** Tree-shake guard — invoked from the custom-forms module loader. */
275
+ export function LoadMJAIAgentSessionBridgeFormComponentExtended() {
276
+ /* no-op marker */
277
+ }
278
+ //# sourceMappingURL=session-bridge-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-bridge-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SessionBridges/session-bridge-form.component.ts","../../../../src/lib/custom/SessionBridges/session-bridge-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 { MJAIAgentSessionBridgeEntity } from '@memberjunction/core-entities';\nimport { MJAIAgentSessionBridgeFormComponent } from '../../generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component';\n\ntype BridgeStatus = MJAIAgentSessionBridgeEntity['Status'];\n\n/** One node in the lifecycle timeline header. */\nexport interface BridgeTimelineStep {\n /** The status this step represents. */\n status: BridgeStatus;\n label: string;\n icon: string;\n /** The timestamp field that marks this step reached, if any. */\n timestamp: Date | null;\n /** 'done' = passed, 'current' = the record's current status, 'pending' = not yet reached. */\n state: 'done' | 'current' | 'pending';\n}\n\n/** The canonical happy-path lifecycle order for index comparison. */\nconst LIFECYCLE_ORDER: BridgeStatus[] = [\n 'Scheduled', 'Pending', 'Connecting', 'Connected', 'Disconnecting', 'Disconnected',\n];\n\n/**\n * Custom form for 'MJ: AI Agent Session Bridges' (Pattern 2). The live /\n * historical view of a single bridge leg: a readable lifecycle timeline\n * (Scheduled/Pending → Connecting → Connected → Disconnecting → Disconnected,\n * or Failed) built from the status + lifecycle timestamps, then the connection\n * details (Direction / JoinMethod / TurnMode / Address / ExternalConnectionID)\n * and the related participant grid. Mostly read-oriented — these rows are\n * written by the realtime engine, not hand-edited.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Agent Session Bridges')\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-session-bridge-form',\n templateUrl: './session-bridge-form.component.html',\n styleUrls: ['./session-bridge-form.component.css'],\n})\nexport class MJAIAgentSessionBridgeFormComponentExtended extends MJAIAgentSessionBridgeFormComponent {\n public override record!: MJAIAgentSessionBridgeEntity;\n\n /** Register section state including the custom lifecycle timeline panel. */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'lifecycleTimeline', sectionName: 'Lifecycle', isExpanded: true },\n { sectionKey: 'sessionContext', sectionName: 'Session Context', isExpanded: true },\n { sectionKey: 'connectionDetails', sectionName: 'Connection Details', isExpanded: true },\n { sectionKey: 'lifecycleAndTiming', sectionName: 'Lifecycle and Timing', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridgeParticipants', sectionName: 'Participants', isExpanded: false },\n ]);\n }\n\n /** True when the bridge ended abnormally — surfaced distinctly in the timeline. */\n public get IsFailed(): boolean {\n return this.record?.Status === 'Failed';\n }\n\n /**\n * The lifecycle timeline steps with per-step state (done / current /\n * pending) and the timestamp that marks each step reached.\n */\n public get TimelineSteps(): BridgeTimelineStep[] {\n const r = this.record;\n if (!r) return [];\n\n const currentIndex = LIFECYCLE_ORDER.indexOf(r.Status as BridgeStatus);\n // 'Failed' / 'Scheduled' aren't on the linear path past 'Connecting';\n // treat unknown/terminal-abnormal as \"everything up to Connecting is moot\".\n const effectiveIndex = currentIndex >= 0 ? currentIndex : -1;\n\n const defs: Array<{ status: BridgeStatus; label: string; icon: string; timestamp: Date | null }> = [\n { status: 'Scheduled', label: 'Scheduled', icon: 'fa-calendar', timestamp: r.ScheduledStartTime ?? null },\n { status: 'Pending', label: 'Pending', icon: 'fa-clock', timestamp: null },\n { status: 'Connecting', label: 'Connecting', icon: 'fa-plug-circle-bolt', timestamp: null },\n { status: 'Connected', label: 'Connected', icon: 'fa-plug-circle-check', timestamp: r.ConnectedAt ?? null },\n { status: 'Disconnecting', label: 'Disconnecting', icon: 'fa-plug-circle-xmark', timestamp: null },\n { status: 'Disconnected', label: 'Disconnected', icon: 'fa-circle-stop', timestamp: r.DisconnectedAt ?? null },\n ];\n\n return defs.map((d) => {\n const idx = LIFECYCLE_ORDER.indexOf(d.status);\n let state: BridgeTimelineStep['state'];\n if (effectiveIndex < 0) {\n state = 'pending';\n } else if (idx < effectiveIndex) {\n state = 'done';\n } else if (idx === effectiveIndex) {\n state = 'current';\n } else {\n state = 'pending';\n }\n return { ...d, state };\n });\n }\n\n public GetStatusIcon(status: string | null): string {\n switch (status) {\n case 'Connected': return 'fa-plug-circle-check';\n case 'Connecting': return 'fa-plug-circle-bolt';\n case 'Disconnecting': return 'fa-plug-circle-xmark';\n case 'Disconnected': return 'fa-circle-stop';\n case 'Failed': return 'fa-triangle-exclamation';\n case 'Pending': return 'fa-clock';\n case 'Scheduled': return 'fa-calendar';\n default: return 'fa-question-circle';\n }\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIAgentSessionBridgeFormComponentExtended(): 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 <!-- Lifecycle timeline -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleTimeline\"\n SectionName=\"Lifecycle\"\n Icon=\"fa fa-timeline\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n\n <div class=\"sb-status-line\" [class.failed]=\"IsFailed\">\n <i class=\"fa-solid {{ GetStatusIcon(record.Status) }}\"></i>\n <span class=\"sb-status-text\">{{ record.Status }}</span>\n @if (record.CloseReason) {\n <span class=\"sb-close-reason\">close reason: {{ record.CloseReason }}</span>\n }\n </div>\n\n <ol class=\"sb-timeline\">\n @for (step of TimelineSteps; track step.status) {\n <li class=\"sb-step\" [class.done]=\"step.state === 'done'\" [class.current]=\"step.state === 'current'\" [class.pending]=\"step.state === 'pending'\">\n <span class=\"sb-step-dot\"><i class=\"fa-solid {{ step.icon }}\"></i></span>\n <div class=\"sb-step-body\">\n <span class=\"sb-step-label\">{{ step.label }}</span>\n @if (step.timestamp) {\n <span class=\"sb-step-time\">{{ step.timestamp | date:'medium' }}</span>\n }\n </div>\n </li>\n }\n </ol>\n\n @if (IsFailed) {\n <div class=\"sb-failed-note\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This bridge ended abnormally (status <strong>Failed</strong>). See the participant rows and Config for diagnostics.\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Session Context -->\n <mj-collapsible-panel\n SectionKey=\"sessionContext\"\n SectionName=\"Session Context\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentSessionID\" 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 <!-- Connection Details -->\n <mj-collapsible-panel\n SectionKey=\"connectionDetails\"\n SectionName=\"Connection Details\"\n Icon=\"fa fa-plug\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Direction\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"JoinMethod\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"TurnMode\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalConnectionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Address\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"URL\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BotParticipantID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Lifecycle and Timing (raw fields) -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleAndTiming\"\n SectionName=\"Lifecycle and Timing\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduledStartTime\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisconnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CloseReason\" Type=\"select\" [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=\"HostInstanceID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Config\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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 <!-- Participants -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridgeParticipants\"\n SectionName=\"Participants\"\n Icon=\"fa fa-users\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridgeParticipants')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridge Participants','SessionBridgeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridge Participants')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridgeParticipants')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridgeParticipants', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\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"]}
@@ -41,34 +41,40 @@ import * as i39 from "../panels/content-sources/tag-pipeline-configuration.panel
41
41
  import * as i40 from "../panels/content-sources/website-crawler-settings.panel";
42
42
  import * as i41 from "./SearchScopes/searchscope-form.component";
43
43
  import * as i42 from "./SearchScopes/searchscopeprovider-form.component";
44
- import * as i43 from "@angular/common";
45
- import * as i44 from "@angular/forms";
46
- import * as i45 from "@angular/cdk/drag-drop";
47
- import * as i46 from "ag-grid-angular";
48
- import * as i47 from "@memberjunction/ng-ui-components";
49
- import * as i48 from "@memberjunction/ng-link-directives";
50
- import * as i49 from "@memberjunction/ng-join-grid";
51
- import * as i50 from "@memberjunction/ng-base-forms";
52
- import * as i51 from "@memberjunction/ng-tabstrip";
53
- import * as i52 from "@memberjunction/ng-code-editor";
54
- import * as i53 from "@memberjunction/ng-deep-diff";
55
- import * as i54 from "@memberjunction/ng-ai-test-harness";
56
- import * as i55 from "@memberjunction/ng-action-gallery";
57
- import * as i56 from "@memberjunction/ng-testing";
58
- import * as i57 from "@memberjunction/ng-flow-editor";
59
- import * as i58 from "@memberjunction/ng-shared-generic";
60
- import * as i59 from "@memberjunction/ng-entity-relationship-diagram";
61
- import * as i60 from "@memberjunction/ng-list-management";
62
- import * as i61 from "@memberjunction/ng-actions";
63
- import * as i62 from "@memberjunction/ng-agents";
64
- import * as i63 from "@memberjunction/ng-entity-viewer";
65
- import * as i64 from "@memberjunction/ng-markdown";
66
- import * as i65 from "@memberjunction/ng-trees";
67
- import * as i66 from "angular-split";
68
- import * as i67 from "@memberjunction/ng-search";
44
+ import * as i43 from "./AIAgentSessions/ai-agent-session-form.component";
45
+ import * as i44 from "./AIAgentChannels/ai-agent-channel-form.component";
46
+ import * as i45 from "./BridgeProviders/bridge-provider-form.component";
47
+ import * as i46 from "./SessionBridges/session-bridge-form.component";
48
+ import * as i47 from "./BridgeAgentIdentities/bridge-agent-identity-form.component";
49
+ import * as i48 from "../panels/ai-agents/agent-realtime.panel";
50
+ import * as i49 from "@angular/common";
51
+ import * as i50 from "@angular/forms";
52
+ import * as i51 from "@angular/cdk/drag-drop";
53
+ import * as i52 from "ag-grid-angular";
54
+ import * as i53 from "@memberjunction/ng-ui-components";
55
+ import * as i54 from "@memberjunction/ng-link-directives";
56
+ import * as i55 from "@memberjunction/ng-join-grid";
57
+ import * as i56 from "@memberjunction/ng-base-forms";
58
+ import * as i57 from "@memberjunction/ng-tabstrip";
59
+ import * as i58 from "@memberjunction/ng-code-editor";
60
+ import * as i59 from "@memberjunction/ng-deep-diff";
61
+ import * as i60 from "@memberjunction/ng-ai-test-harness";
62
+ import * as i61 from "@memberjunction/ng-action-gallery";
63
+ import * as i62 from "@memberjunction/ng-testing";
64
+ import * as i63 from "@memberjunction/ng-flow-editor";
65
+ import * as i64 from "@memberjunction/ng-shared-generic";
66
+ import * as i65 from "@memberjunction/ng-entity-relationship-diagram";
67
+ import * as i66 from "@memberjunction/ng-list-management";
68
+ import * as i67 from "@memberjunction/ng-actions";
69
+ import * as i68 from "@memberjunction/ng-agents";
70
+ import * as i69 from "@memberjunction/ng-entity-viewer";
71
+ import * as i70 from "@memberjunction/ng-markdown";
72
+ import * as i71 from "@memberjunction/ng-trees";
73
+ import * as i72 from "angular-split";
74
+ import * as i73 from "@memberjunction/ng-search";
69
75
  export declare class MemberJunctionCoreEntityFormsModule {
70
76
  static ɵfac: i0.ɵɵFactoryDeclaration<MemberJunctionCoreEntityFormsModule, never>;
71
- static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunVisualizationComponent, typeof i27.AIAgentRunStepDetailComponent, typeof i28.MJQueryFormComponentExtended, typeof i29.QueryRunDialogComponent, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended], [typeof i43.CommonModule, typeof i44.FormsModule, typeof i44.ReactiveFormsModule, typeof i45.DragDropModule, typeof i46.AgGridModule, typeof i47.MJButtonDirective, typeof i47.MJAccordionPanelComponent, typeof i47.MJAccordionTitleDirective, typeof i47.MJDropdownComponent, typeof i47.MJComboboxComponent, typeof i47.MJSwitchComponent, typeof i47.MJDialogComponent, typeof i47.MJDialogTitlebarComponent, typeof i47.MJDialogActionsComponent, typeof i47.MJNumericInputComponent, typeof i47.MJWindowComponent, typeof i47.MJWindowTitlebarComponent, typeof i47.MJProgressBarComponent, typeof i48.LinkDirectivesModule, typeof i49.JoinGridModule, typeof i50.BaseFormsModule, typeof i51.MJTabStripModule, typeof i52.CodeEditorModule, typeof i53.DeepDiffModule, typeof i54.AITestHarnessModule, typeof i55.ActionGalleryModule, typeof i56.TestingModule, typeof i57.FlowEditorModule, typeof i58.SharedGenericModule, typeof i59.EntityRelationshipDiagramModule, typeof i60.ListManagementModule, typeof i61.ActionsModule, typeof i62.AgentsModule, typeof i63.EntityViewerModule, typeof i64.MarkdownModule, typeof i65.NgTreesModule, typeof i66.AngularSplitModule, typeof i47.MjSlidePanelComponent, typeof i50.MjFormDialogComponent, typeof i67.SearchModule], [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i28.MJQueryFormComponentExtended, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i61.ActionsModule]>;
77
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunVisualizationComponent, typeof i27.AIAgentRunStepDetailComponent, typeof i28.MJQueryFormComponentExtended, typeof i29.QueryRunDialogComponent, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i43.MJAIAgentSessionFormComponentExtended, typeof i44.MJAIAgentChannelFormComponentExtended, typeof i45.MJAIBridgeProviderFormComponentExtended, typeof i46.MJAIAgentSessionBridgeFormComponentExtended, typeof i47.MJAIBridgeAgentIdentityFormComponentExtended, typeof i48.AgentRealtimePanel], [typeof i49.CommonModule, typeof i50.FormsModule, typeof i50.ReactiveFormsModule, typeof i51.DragDropModule, typeof i52.AgGridModule, typeof i53.MJButtonDirective, typeof i53.MJAccordionPanelComponent, typeof i53.MJAccordionTitleDirective, typeof i53.MJDropdownComponent, typeof i53.MJComboboxComponent, typeof i53.MJSwitchComponent, typeof i53.MJDialogComponent, typeof i53.MJDialogTitlebarComponent, typeof i53.MJDialogActionsComponent, typeof i53.MJNumericInputComponent, typeof i53.MJWindowComponent, typeof i53.MJWindowTitlebarComponent, typeof i53.MJProgressBarComponent, typeof i54.LinkDirectivesModule, typeof i55.JoinGridModule, typeof i56.BaseFormsModule, typeof i57.MJTabStripModule, typeof i58.CodeEditorModule, typeof i59.DeepDiffModule, typeof i60.AITestHarnessModule, typeof i61.ActionGalleryModule, typeof i62.TestingModule, typeof i63.FlowEditorModule, typeof i64.SharedGenericModule, typeof i65.EntityRelationshipDiagramModule, typeof i66.ListManagementModule, typeof i67.ActionsModule, typeof i68.AgentsModule, typeof i69.EntityViewerModule, typeof i70.MarkdownModule, typeof i71.NgTreesModule, typeof i72.AngularSplitModule, typeof i53.MjSlidePanelComponent, typeof i56.MjFormDialogComponent, typeof i73.SearchModule], [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i28.MJQueryFormComponentExtended, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i43.MJAIAgentSessionFormComponentExtended, typeof i44.MJAIAgentChannelFormComponentExtended, typeof i45.MJAIBridgeProviderFormComponentExtended, typeof i46.MJAIAgentSessionBridgeFormComponentExtended, typeof i47.MJAIBridgeAgentIdentityFormComponentExtended, typeof i48.AgentRealtimePanel, typeof i67.ActionsModule]>;
72
78
  static ɵinj: i0.ɵɵInjectorDeclaration<MemberJunctionCoreEntityFormsModule>;
73
79
  }
74
80
  //# sourceMappingURL=custom-forms.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,qBA4Ha,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
1
+ {"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA,qBAwIa,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
@@ -73,6 +73,15 @@ import { WebsiteCrawlerSettingsPanel } from "../panels/content-sources/website-c
73
73
  import { MJSearchScopeFormComponentExtended } from "./SearchScopes/searchscope-form.component";
74
74
  import { MJSearchScopeProviderFormComponentExtended } from "./SearchScopes/searchscopeprovider-form.component";
75
75
  import { SearchModule } from "@memberjunction/ng-search";
76
+ import { MJAIAgentSessionFormComponentExtended } from "./AIAgentSessions/ai-agent-session-form.component";
77
+ import { MJAIAgentChannelFormComponentExtended } from "./AIAgentChannels/ai-agent-channel-form.component";
78
+ // Realtime Bridges — custom Extended forms (Pattern 2) for the three major bridge entities.
79
+ import { MJAIBridgeProviderFormComponentExtended } from "./BridgeProviders/bridge-provider-form.component";
80
+ import { MJAIAgentSessionBridgeFormComponentExtended } from "./SessionBridges/session-bridge-form.component";
81
+ import { MJAIBridgeAgentIdentityFormComponentExtended } from "./BridgeAgentIdentities/bridge-agent-identity-form.component";
82
+ // AI Agent "Realtime" panel (Pattern 1 — BaseFormPanel slot). Imported so the
83
+ // @RegisterClassEx decorator runs at module load (Angular tree-shaking guard).
84
+ import { AgentRealtimePanel } from "../panels/ai-agents/agent-realtime.panel";
76
85
  import * as i0 from "@angular/core";
77
86
  import * as i1 from "@angular/common";
78
87
  import * as i2 from "@memberjunction/ng-shared-generic";
@@ -168,6 +177,12 @@ export class MemberJunctionCoreEntityFormsModule {
168
177
  WebsiteCrawlerSettingsPanel,
169
178
  MJSearchScopeFormComponentExtended,
170
179
  MJSearchScopeProviderFormComponentExtended,
180
+ MJAIAgentSessionFormComponentExtended,
181
+ MJAIAgentChannelFormComponentExtended,
182
+ MJAIBridgeProviderFormComponentExtended,
183
+ MJAIAgentSessionBridgeFormComponentExtended,
184
+ MJAIBridgeAgentIdentityFormComponentExtended,
185
+ AgentRealtimePanel,
171
186
  ],
172
187
  imports: [
173
188
  CommonModule,
@@ -240,6 +255,12 @@ export class MemberJunctionCoreEntityFormsModule {
240
255
  WebsiteCrawlerSettingsPanel,
241
256
  MJSearchScopeFormComponentExtended,
242
257
  MJSearchScopeProviderFormComponentExtended,
258
+ MJAIAgentSessionFormComponentExtended,
259
+ MJAIAgentChannelFormComponentExtended,
260
+ MJAIBridgeProviderFormComponentExtended,
261
+ MJAIAgentSessionBridgeFormComponentExtended,
262
+ MJAIBridgeAgentIdentityFormComponentExtended,
263
+ AgentRealtimePanel,
243
264
  ActionsModule
244
265
  ],
245
266
  providers: [
@@ -290,7 +311,13 @@ export class MemberJunctionCoreEntityFormsModule {
290
311
  TagPipelineConfigurationPanel,
291
312
  WebsiteCrawlerSettingsPanel,
292
313
  MJSearchScopeFormComponentExtended,
293
- MJSearchScopeProviderFormComponentExtended], imports: [CommonModule,
314
+ MJSearchScopeProviderFormComponentExtended,
315
+ MJAIAgentSessionFormComponentExtended,
316
+ MJAIAgentChannelFormComponentExtended,
317
+ MJAIBridgeProviderFormComponentExtended,
318
+ MJAIAgentSessionBridgeFormComponentExtended,
319
+ MJAIBridgeAgentIdentityFormComponentExtended,
320
+ AgentRealtimePanel], imports: [CommonModule,
294
321
  FormsModule,
295
322
  ReactiveFormsModule,
296
323
  DragDropModule,
@@ -357,6 +384,12 @@ export class MemberJunctionCoreEntityFormsModule {
357
384
  WebsiteCrawlerSettingsPanel,
358
385
  MJSearchScopeFormComponentExtended,
359
386
  MJSearchScopeProviderFormComponentExtended,
387
+ MJAIAgentSessionFormComponentExtended,
388
+ MJAIAgentChannelFormComponentExtended,
389
+ MJAIBridgeProviderFormComponentExtended,
390
+ MJAIAgentSessionBridgeFormComponentExtended,
391
+ MJAIBridgeAgentIdentityFormComponentExtended,
392
+ AgentRealtimePanel,
360
393
  ActionsModule] }); })();
361
394
  i0.ɵɵsetComponentScope(AIAgentRunTimelineComponent, [i1.NgTemplateOutlet, i2.LoadingComponent, AIAgentRunTimelineComponent,
362
395
  AIAgentRunStepNodeComponent], [i1.AsyncPipe]);