@memberjunction/ng-core-entity-forms 5.40.2 → 5.42.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 +302 -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.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +12 -16
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +45 -31
- 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/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +36 -18
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- 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/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +34 -16
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
- 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/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +138 -66
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +37 -35
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +33 -21
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +141 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +102 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js.map +1 -0
- 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/MJScheduledJobRun/mjscheduledjobrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.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 +179 -107
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +365 -343
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +404 -323
- 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,1190 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, inject } from '@angular/core';
|
|
8
|
+
import { CompositeKey, RunView } from '@memberjunction/core';
|
|
9
|
+
import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
10
|
+
import { BaseFormComponent, CUSTOM_LAYOUT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';
|
|
11
|
+
import { SharedService, NavigationService } from '@memberjunction/ng-shared';
|
|
12
|
+
import { ApplicationManager } from '@memberjunction/ng-base-application';
|
|
13
|
+
import { MJAIAgentSessionFormComponent } from '../../generated/Entities/MJAIAgentSession/mjaiagentsession.form.component';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/common";
|
|
16
|
+
import * as i2 from "@angular/forms";
|
|
17
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
18
|
+
import * as i4 from "@memberjunction/ng-base-forms";
|
|
19
|
+
import * as i5 from "@memberjunction/ng-code-editor";
|
|
20
|
+
import * as i6 from "@memberjunction/ng-shared-generic";
|
|
21
|
+
const _forTrack0 = ($index, $item) => $item.id;
|
|
22
|
+
const _forTrack1 = ($index, $item) => $item.row.ID;
|
|
23
|
+
const _forTrack2 = ($index, $item) => $item.ID;
|
|
24
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
26
|
+
i0.ɵɵelementStart(0, "span", 10)(1, "a", 23);
|
|
27
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_11_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
|
|
28
|
+
i0.ɵɵtext(2);
|
|
29
|
+
i0.ɵɵelementEnd()();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
32
|
+
i0.ɵɵadvance(2);
|
|
33
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Agent", " ");
|
|
34
|
+
} }
|
|
35
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
37
|
+
i0.ɵɵelement(0, "i", 45);
|
|
38
|
+
i0.ɵɵelementStart(1, "span", 10)(2, "a", 23);
|
|
39
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_12_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("AI Agents", ctx_r1.TargetAgentID)); });
|
|
40
|
+
i0.ɵɵtext(3);
|
|
41
|
+
i0.ɵɵelementEnd()();
|
|
42
|
+
} if (rf & 2) {
|
|
43
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
44
|
+
i0.ɵɵadvance(3);
|
|
45
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.TargetAgentName || "Target agent", " ");
|
|
46
|
+
} }
|
|
47
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
49
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
50
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.NavigateToConversation()); });
|
|
51
|
+
i0.ɵɵelement(1, "i", 40);
|
|
52
|
+
i0.ɵɵelementStart(2, "span");
|
|
53
|
+
i0.ɵɵtext(3);
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
i0.ɵɵelement(4, "i", 47);
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
} if (rf & 2) {
|
|
58
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
59
|
+
i0.ɵɵadvance(3);
|
|
60
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Conversation || "Conversation");
|
|
61
|
+
} }
|
|
62
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "span", 21);
|
|
64
|
+
i0.ɵɵtext(2, "Closed");
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
i0.ɵɵelementStart(3, "span", 22);
|
|
67
|
+
i0.ɵɵtext(4);
|
|
68
|
+
i0.ɵɵpipe(5, "date");
|
|
69
|
+
i0.ɵɵelementEnd()();
|
|
70
|
+
} if (rf & 2) {
|
|
71
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
72
|
+
i0.ɵɵadvance(4);
|
|
73
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.record.ClosedAt, "medium"));
|
|
74
|
+
} }
|
|
75
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "span", 21);
|
|
77
|
+
i0.ɵɵtext(2, "Last Active");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(3, "span", 22);
|
|
80
|
+
i0.ɵɵtext(4);
|
|
81
|
+
i0.ɵɵpipe(5, "date");
|
|
82
|
+
i0.ɵɵelementEnd()();
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
85
|
+
i0.ɵɵadvance(4);
|
|
86
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.record.LastActiveAt, "medium"));
|
|
87
|
+
} }
|
|
88
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
|
|
89
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "span", 21);
|
|
90
|
+
i0.ɵɵtext(2, "Tokens");
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
i0.ɵɵelementStart(3, "span", 22);
|
|
93
|
+
i0.ɵɵtext(4);
|
|
94
|
+
i0.ɵɵpipe(5, "number");
|
|
95
|
+
i0.ɵɵelementEnd()();
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
98
|
+
i0.ɵɵadvance(4);
|
|
99
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.SessionTokens, "1.0-0"));
|
|
100
|
+
} }
|
|
101
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "span", 21);
|
|
103
|
+
i0.ɵɵtext(2, "Cost");
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(3, "span", 48);
|
|
106
|
+
i0.ɵɵtext(4);
|
|
107
|
+
i0.ɵɵpipe(5, "number");
|
|
108
|
+
i0.ɵɵelementEnd()();
|
|
109
|
+
} if (rf & 2) {
|
|
110
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
111
|
+
i0.ɵɵadvance(4);
|
|
112
|
+
i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(5, 1, ctx_r1.SessionCost, "1.2-4"));
|
|
113
|
+
} }
|
|
114
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_62_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
116
|
+
i0.ɵɵelementStart(0, "a", 23);
|
|
117
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_62_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("AI Agents", ctx_r1.TargetAgentID)); });
|
|
118
|
+
i0.ɵɵtext(1);
|
|
119
|
+
i0.ɵɵelementEnd();
|
|
120
|
+
} if (rf & 2) {
|
|
121
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
122
|
+
i0.ɵɵadvance();
|
|
123
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.TargetAgentName || "Unknown", " ");
|
|
124
|
+
} }
|
|
125
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_63_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
127
|
+
i0.ɵɵtext(1, "None");
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
} }
|
|
130
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_77_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
132
|
+
i0.ɵɵelementStart(0, "a", 23);
|
|
133
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_77_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("MJ: AI Agent Sessions", ctx_r1.record.LastSessionID)); });
|
|
134
|
+
i0.ɵɵtext(1, " Resumed from prior session ");
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
} }
|
|
137
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_78_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
139
|
+
i0.ɵɵtext(1, "None (new session)");
|
|
140
|
+
i0.ɵɵelementEnd();
|
|
141
|
+
} }
|
|
142
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_83_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
144
|
+
i0.ɵɵtext(1);
|
|
145
|
+
i0.ɵɵelementEnd();
|
|
146
|
+
} if (rf & 2) {
|
|
147
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
148
|
+
i0.ɵɵadvance();
|
|
149
|
+
i0.ɵɵtextInterpolate(ctx_r1.RunTree.length);
|
|
150
|
+
} }
|
|
151
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_87_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
153
|
+
i0.ɵɵtext(1);
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
} if (rf & 2) {
|
|
156
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
157
|
+
i0.ɵɵadvance();
|
|
158
|
+
i0.ɵɵtextInterpolate(ctx_r1.Channels.length);
|
|
159
|
+
} }
|
|
160
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_91_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
162
|
+
i0.ɵɵtext(1);
|
|
163
|
+
i0.ɵɵelementEnd();
|
|
164
|
+
} if (rf & 2) {
|
|
165
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
166
|
+
i0.ɵɵadvance();
|
|
167
|
+
i0.ɵɵtextInterpolate(ctx_r1.Transcript.length);
|
|
168
|
+
} }
|
|
169
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_96_Template(rf, ctx) { if (rf & 1) {
|
|
170
|
+
i0.ɵɵelement(0, "mj-loading", 43);
|
|
171
|
+
} }
|
|
172
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_97_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 44);
|
|
174
|
+
i0.ɵɵelement(1, "i", 49);
|
|
175
|
+
i0.ɵɵelementStart(2, "p");
|
|
176
|
+
i0.ɵɵtext(3);
|
|
177
|
+
i0.ɵɵelementEnd()();
|
|
178
|
+
} if (rf & 2) {
|
|
179
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
180
|
+
i0.ɵɵadvance(3);
|
|
181
|
+
i0.ɵɵtextInterpolate(ctx_r1.LoadError);
|
|
182
|
+
} }
|
|
183
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
185
|
+
i0.ɵɵelement(1, "i", 53);
|
|
186
|
+
i0.ɵɵelementStart(2, "h4");
|
|
187
|
+
i0.ɵɵtext(3, "No Runs");
|
|
188
|
+
i0.ɵɵelementEnd();
|
|
189
|
+
i0.ɵɵelementStart(4, "p");
|
|
190
|
+
i0.ɵɵtext(5, "No agent runs have been recorded for this session yet.");
|
|
191
|
+
i0.ɵɵelementEnd()();
|
|
192
|
+
} }
|
|
193
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
194
|
+
i0.ɵɵelement(0, "i", 57);
|
|
195
|
+
} }
|
|
196
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
197
|
+
i0.ɵɵelement(0, "i", 7);
|
|
198
|
+
} }
|
|
199
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
i0.ɵɵelement(0, "i", 58);
|
|
201
|
+
} }
|
|
202
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
204
|
+
i0.ɵɵelement(1, "i", 68);
|
|
205
|
+
i0.ɵɵtext(2);
|
|
206
|
+
i0.ɵɵpipe(3, "number");
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
} if (rf & 2) {
|
|
209
|
+
const node_r9 = i0.ɵɵnextContext().$implicit;
|
|
210
|
+
i0.ɵɵadvance(2);
|
|
211
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, node_r9.tokens, "1.0-0"), " tok");
|
|
212
|
+
} }
|
|
213
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
215
|
+
i0.ɵɵelement(1, "i", 69);
|
|
216
|
+
i0.ɵɵtext(2);
|
|
217
|
+
i0.ɵɵpipe(3, "number");
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
} if (rf & 2) {
|
|
220
|
+
const node_r9 = i0.ɵɵnextContext().$implicit;
|
|
221
|
+
i0.ɵɵadvance(2);
|
|
222
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, node_r9.cost, "1.2-4"));
|
|
223
|
+
} }
|
|
224
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
225
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
227
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Template_div_click_0_listener() { const node_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord(node_r9.entityName, node_r9.id)); });
|
|
228
|
+
i0.ɵɵelementStart(1, "div", 56);
|
|
229
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_2_Template, 1, 0, "i", 57)(3, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_3_Template, 1, 0, "i", 7)(4, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_4_Template, 1, 0, "i", 58);
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
i0.ɵɵelementStart(5, "div", 59)(6, "div", 60)(7, "h4", 61);
|
|
232
|
+
i0.ɵɵtext(8);
|
|
233
|
+
i0.ɵɵelementEnd();
|
|
234
|
+
i0.ɵɵelementStart(9, "span", 62);
|
|
235
|
+
i0.ɵɵtext(10);
|
|
236
|
+
i0.ɵɵpipe(11, "date");
|
|
237
|
+
i0.ɵɵelementEnd()();
|
|
238
|
+
i0.ɵɵelementStart(12, "div", 63);
|
|
239
|
+
i0.ɵɵtext(13);
|
|
240
|
+
i0.ɵɵelementEnd();
|
|
241
|
+
i0.ɵɵelementStart(14, "div", 64)(15, "span", 65);
|
|
242
|
+
i0.ɵɵelement(16, "i", 15);
|
|
243
|
+
i0.ɵɵtext(17);
|
|
244
|
+
i0.ɵɵelementEnd();
|
|
245
|
+
i0.ɵɵelementStart(18, "span", 66);
|
|
246
|
+
i0.ɵɵelement(19, "i", 67);
|
|
247
|
+
i0.ɵɵtext(20);
|
|
248
|
+
i0.ɵɵelementEnd();
|
|
249
|
+
i0.ɵɵconditionalCreate(21, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_21_Template, 4, 4, "span", 66);
|
|
250
|
+
i0.ɵɵconditionalCreate(22, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Conditional_22_Template, 4, 4, "span", 66);
|
|
251
|
+
i0.ɵɵelementEnd()()();
|
|
252
|
+
} if (rf & 2) {
|
|
253
|
+
const node_r9 = ctx.$implicit;
|
|
254
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
255
|
+
i0.ɵɵstyleProp("margin-left", node_r9.depth * 36, "px");
|
|
256
|
+
i0.ɵɵclassProp("run-node--child", node_r9.depth > 0);
|
|
257
|
+
i0.ɵɵadvance();
|
|
258
|
+
i0.ɵɵclassProp("run-marker--coagent", node_r9.isCoAgentRun)("run-marker--prompt", node_r9.kind === "promptRun");
|
|
259
|
+
i0.ɵɵadvance();
|
|
260
|
+
i0.ɵɵconditional(node_r9.kind === "promptRun" ? 2 : node_r9.isCoAgentRun ? 3 : 4);
|
|
261
|
+
i0.ɵɵadvance(6);
|
|
262
|
+
i0.ɵɵtextInterpolate(node_r9.title);
|
|
263
|
+
i0.ɵɵadvance(2);
|
|
264
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(11, 18, node_r9.startedAt, "h:mm:ss a"));
|
|
265
|
+
i0.ɵɵadvance(3);
|
|
266
|
+
i0.ɵɵtextInterpolate(node_r9.subtitle);
|
|
267
|
+
i0.ɵɵadvance(2);
|
|
268
|
+
i0.ɵɵattribute("data-status", node_r9.status);
|
|
269
|
+
i0.ɵɵadvance();
|
|
270
|
+
i0.ɵɵproperty("ngClass", ctx_r1.GetRunStatusIcon(node_r9.status));
|
|
271
|
+
i0.ɵɵadvance();
|
|
272
|
+
i0.ɵɵtextInterpolate1(" ", node_r9.status, " ");
|
|
273
|
+
i0.ɵɵadvance(3);
|
|
274
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatDuration(node_r9.startedAt, node_r9.completedAt), " ");
|
|
275
|
+
i0.ɵɵadvance();
|
|
276
|
+
i0.ɵɵconditional(node_r9.tokens != null && node_r9.tokens > 0 ? 21 : -1);
|
|
277
|
+
i0.ɵɵadvance();
|
|
278
|
+
i0.ɵɵconditional(node_r9.cost != null && node_r9.cost > 0 ? 22 : -1);
|
|
279
|
+
} }
|
|
280
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
281
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
282
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_For_2_Template, 23, 21, "div", 54, _forTrack0);
|
|
283
|
+
i0.ɵɵelementEnd();
|
|
284
|
+
} if (rf & 2) {
|
|
285
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
286
|
+
i0.ɵɵadvance();
|
|
287
|
+
i0.ɵɵrepeater(ctx_r1.RunTree);
|
|
288
|
+
} }
|
|
289
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
291
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_1_Template, 6, 0, "div", 51)(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Conditional_2_Template, 3, 0, "div", 52);
|
|
292
|
+
i0.ɵɵelementEnd();
|
|
293
|
+
} if (rf & 2) {
|
|
294
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
295
|
+
i0.ɵɵadvance();
|
|
296
|
+
i0.ɵɵconditional(ctx_r1.RunTree.length === 0 ? 1 : 2);
|
|
297
|
+
} }
|
|
298
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
300
|
+
i0.ɵɵelement(1, "i", 71);
|
|
301
|
+
i0.ɵɵelementStart(2, "h4");
|
|
302
|
+
i0.ɵɵtext(3, "No Channels");
|
|
303
|
+
i0.ɵɵelementEnd();
|
|
304
|
+
i0.ɵɵelementStart(4, "p");
|
|
305
|
+
i0.ɵɵtext(5, "No channel instances were attached to this session.");
|
|
306
|
+
i0.ɵɵelementEnd()();
|
|
307
|
+
} }
|
|
308
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
309
|
+
i0.ɵɵelementStart(0, "span", 76);
|
|
310
|
+
i0.ɵɵtext(1);
|
|
311
|
+
i0.ɵɵelementEnd();
|
|
312
|
+
} if (rf & 2) {
|
|
313
|
+
const channel_r11 = i0.ɵɵnextContext().$implicit;
|
|
314
|
+
i0.ɵɵattribute("data-transport", channel_r11.transportType);
|
|
315
|
+
i0.ɵɵadvance();
|
|
316
|
+
i0.ɵɵtextInterpolate(channel_r11.transportType);
|
|
317
|
+
} }
|
|
318
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
319
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
320
|
+
i0.ɵɵtext(1, "\u2014");
|
|
321
|
+
i0.ɵɵelementEnd();
|
|
322
|
+
} }
|
|
323
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
i0.ɵɵtext(0);
|
|
325
|
+
i0.ɵɵpipe(1, "date");
|
|
326
|
+
} if (rf & 2) {
|
|
327
|
+
const channel_r11 = i0.ɵɵnextContext().$implicit;
|
|
328
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(1, 1, channel_r11.row.DisconnectedAt, "h:mm:ss a"), " ");
|
|
329
|
+
} }
|
|
330
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
331
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
332
|
+
i0.ɵɵtext(1, "\u2014");
|
|
333
|
+
i0.ɵɵelementEnd();
|
|
334
|
+
} }
|
|
335
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
337
|
+
i0.ɵɵelementStart(0, "tr", 74);
|
|
338
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Template_tr_click_0_listener() { const channel_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("MJ: AI Agent Session Channels", channel_r11.row.ID)); });
|
|
339
|
+
i0.ɵɵelementStart(1, "td")(2, "span", 75);
|
|
340
|
+
i0.ɵɵelement(3, "i", 15);
|
|
341
|
+
i0.ɵɵtext(4);
|
|
342
|
+
i0.ɵɵelementEnd()();
|
|
343
|
+
i0.ɵɵelementStart(5, "td");
|
|
344
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_6_Template, 2, 2, "span", 76)(7, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_7_Template, 2, 0, "span", 31);
|
|
345
|
+
i0.ɵɵelementEnd();
|
|
346
|
+
i0.ɵɵelementStart(8, "td")(9, "span", 77);
|
|
347
|
+
i0.ɵɵtext(10);
|
|
348
|
+
i0.ɵɵelementEnd()();
|
|
349
|
+
i0.ɵɵelementStart(11, "td", 78);
|
|
350
|
+
i0.ɵɵtext(12);
|
|
351
|
+
i0.ɵɵpipe(13, "date");
|
|
352
|
+
i0.ɵɵelementEnd();
|
|
353
|
+
i0.ɵɵelementStart(14, "td", 78);
|
|
354
|
+
i0.ɵɵtext(15);
|
|
355
|
+
i0.ɵɵpipe(16, "date");
|
|
356
|
+
i0.ɵɵelementEnd();
|
|
357
|
+
i0.ɵɵelementStart(17, "td", 78);
|
|
358
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_18_Template, 2, 4)(19, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Conditional_19_Template, 2, 0, "span", 31);
|
|
359
|
+
i0.ɵɵelementEnd();
|
|
360
|
+
i0.ɵɵelementStart(20, "td", 79);
|
|
361
|
+
i0.ɵɵtext(21);
|
|
362
|
+
i0.ɵɵelementEnd()();
|
|
363
|
+
} if (rf & 2) {
|
|
364
|
+
const channel_r11 = ctx.$implicit;
|
|
365
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
366
|
+
i0.ɵɵadvance(3);
|
|
367
|
+
i0.ɵɵproperty("ngClass", ctx_r1.GetChannelIcon(channel_r11.row.Channel));
|
|
368
|
+
i0.ɵɵadvance();
|
|
369
|
+
i0.ɵɵtextInterpolate1(" ", channel_r11.row.Channel, " ");
|
|
370
|
+
i0.ɵɵadvance(2);
|
|
371
|
+
i0.ɵɵconditional(channel_r11.transportType ? 6 : 7);
|
|
372
|
+
i0.ɵɵadvance(3);
|
|
373
|
+
i0.ɵɵattribute("data-status", channel_r11.row.Status);
|
|
374
|
+
i0.ɵɵadvance();
|
|
375
|
+
i0.ɵɵtextInterpolate(channel_r11.row.Status);
|
|
376
|
+
i0.ɵɵadvance(2);
|
|
377
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 10, channel_r11.row.__mj_CreatedAt, "h:mm:ss a"));
|
|
378
|
+
i0.ɵɵadvance(3);
|
|
379
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(16, 13, channel_r11.row.LastActiveAt, "h:mm:ss a"));
|
|
380
|
+
i0.ɵɵadvance(3);
|
|
381
|
+
i0.ɵɵconditional(channel_r11.row.DisconnectedAt ? 18 : 19);
|
|
382
|
+
i0.ɵɵadvance(2);
|
|
383
|
+
i0.ɵɵproperty("title", channel_r11.row.SocketUrl || "");
|
|
384
|
+
i0.ɵɵadvance();
|
|
385
|
+
i0.ɵɵtextInterpolate1(" ", channel_r11.row.SocketUrl || "\u2014", " ");
|
|
386
|
+
} }
|
|
387
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
i0.ɵɵelementStart(0, "div", 70)(1, "table", 72)(2, "thead")(3, "tr")(4, "th");
|
|
389
|
+
i0.ɵɵtext(5, "Channel");
|
|
390
|
+
i0.ɵɵelementEnd();
|
|
391
|
+
i0.ɵɵelementStart(6, "th");
|
|
392
|
+
i0.ɵɵtext(7, "Transport");
|
|
393
|
+
i0.ɵɵelementEnd();
|
|
394
|
+
i0.ɵɵelementStart(8, "th");
|
|
395
|
+
i0.ɵɵtext(9, "Status");
|
|
396
|
+
i0.ɵɵelementEnd();
|
|
397
|
+
i0.ɵɵelementStart(10, "th");
|
|
398
|
+
i0.ɵɵtext(11, "Connected");
|
|
399
|
+
i0.ɵɵelementEnd();
|
|
400
|
+
i0.ɵɵelementStart(12, "th");
|
|
401
|
+
i0.ɵɵtext(13, "Last Active");
|
|
402
|
+
i0.ɵɵelementEnd();
|
|
403
|
+
i0.ɵɵelementStart(14, "th");
|
|
404
|
+
i0.ɵɵtext(15, "Disconnected");
|
|
405
|
+
i0.ɵɵelementEnd();
|
|
406
|
+
i0.ɵɵelementStart(16, "th");
|
|
407
|
+
i0.ɵɵtext(17, "Socket");
|
|
408
|
+
i0.ɵɵelementEnd()()();
|
|
409
|
+
i0.ɵɵelementStart(18, "tbody");
|
|
410
|
+
i0.ɵɵrepeaterCreate(19, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_For_20_Template, 22, 16, "tr", 73, _forTrack1);
|
|
411
|
+
i0.ɵɵelementEnd()()();
|
|
412
|
+
} if (rf & 2) {
|
|
413
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
414
|
+
i0.ɵɵadvance(19);
|
|
415
|
+
i0.ɵɵrepeater(ctx_r1.Channels);
|
|
416
|
+
} }
|
|
417
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
419
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_1_Template, 6, 0, "div", 51)(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Conditional_2_Template, 21, 0, "div", 70);
|
|
420
|
+
i0.ɵɵelementEnd();
|
|
421
|
+
} if (rf & 2) {
|
|
422
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
423
|
+
i0.ɵɵadvance();
|
|
424
|
+
i0.ɵɵconditional(ctx_r1.Channels.length === 0 ? 1 : 2);
|
|
425
|
+
} }
|
|
426
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
428
|
+
i0.ɵɵelement(1, "i", 81);
|
|
429
|
+
i0.ɵɵelementStart(2, "h4");
|
|
430
|
+
i0.ɵɵtext(3, "No Transcript");
|
|
431
|
+
i0.ɵɵelementEnd();
|
|
432
|
+
i0.ɵɵelementStart(4, "p");
|
|
433
|
+
i0.ɵɵtext(5, "No conversation messages were stamped with this session.");
|
|
434
|
+
i0.ɵɵelementEnd()();
|
|
435
|
+
} }
|
|
436
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
437
|
+
i0.ɵɵelement(0, "i", 85);
|
|
438
|
+
} }
|
|
439
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
440
|
+
i0.ɵɵelement(0, "i", 86);
|
|
441
|
+
} }
|
|
442
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
443
|
+
i0.ɵɵelement(0, "i", 58);
|
|
444
|
+
} }
|
|
445
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
446
|
+
i0.ɵɵtext(0);
|
|
447
|
+
} if (rf & 2) {
|
|
448
|
+
const turn_r12 = i0.ɵɵnextContext().$implicit;
|
|
449
|
+
i0.ɵɵtextInterpolate1(" ", turn_r12.User || "User", " ");
|
|
450
|
+
} }
|
|
451
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
452
|
+
i0.ɵɵtext(0);
|
|
453
|
+
} if (rf & 2) {
|
|
454
|
+
const turn_r12 = i0.ɵɵnextContext().$implicit;
|
|
455
|
+
i0.ɵɵtextInterpolate1(" ", turn_r12.Agent || "Agent", " ");
|
|
456
|
+
} }
|
|
457
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
458
|
+
i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
|
|
459
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_2_Template, 1, 0, "i", 85)(3, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_3_Template, 1, 0, "i", 86)(4, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_4_Template, 1, 0, "i", 58);
|
|
460
|
+
i0.ɵɵelementEnd();
|
|
461
|
+
i0.ɵɵelementStart(5, "div", 87)(6, "div", 88);
|
|
462
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_7_Template, 1, 1)(8, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Conditional_8_Template, 1, 1);
|
|
463
|
+
i0.ɵɵelementStart(9, "span", 89);
|
|
464
|
+
i0.ɵɵtext(10);
|
|
465
|
+
i0.ɵɵpipe(11, "date");
|
|
466
|
+
i0.ɵɵelementEnd()();
|
|
467
|
+
i0.ɵɵelementStart(12, "div", 90);
|
|
468
|
+
i0.ɵɵtext(13);
|
|
469
|
+
i0.ɵɵelementEnd()()();
|
|
470
|
+
} if (rf & 2) {
|
|
471
|
+
const turn_r12 = ctx.$implicit;
|
|
472
|
+
i0.ɵɵclassProp("turn--user", turn_r12.Role === "User")("turn--error", turn_r12.Role === "Error");
|
|
473
|
+
i0.ɵɵadvance(2);
|
|
474
|
+
i0.ɵɵconditional(turn_r12.Role === "User" ? 2 : turn_r12.Role === "Error" ? 3 : 4);
|
|
475
|
+
i0.ɵɵadvance(5);
|
|
476
|
+
i0.ɵɵconditional(turn_r12.Role === "User" ? 7 : 8);
|
|
477
|
+
i0.ɵɵadvance(3);
|
|
478
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(11, 8, turn_r12.__mj_CreatedAt, "h:mm:ss a"));
|
|
479
|
+
i0.ɵɵadvance(3);
|
|
480
|
+
i0.ɵɵtextInterpolate(turn_r12.Message);
|
|
481
|
+
} }
|
|
482
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
483
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
484
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_For_2_Template, 14, 11, "div", 82, _forTrack2);
|
|
485
|
+
i0.ɵɵelementEnd();
|
|
486
|
+
} if (rf & 2) {
|
|
487
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
488
|
+
i0.ɵɵadvance();
|
|
489
|
+
i0.ɵɵrepeater(ctx_r1.Transcript);
|
|
490
|
+
} }
|
|
491
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
492
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
493
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_1_Template, 6, 0, "div", 51)(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Conditional_2_Template, 3, 0, "div", 80);
|
|
494
|
+
i0.ɵɵelementEnd();
|
|
495
|
+
} if (rf & 2) {
|
|
496
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
497
|
+
i0.ɵɵadvance();
|
|
498
|
+
i0.ɵɵconditional(ctx_r1.Transcript.length === 0 ? 1 : 2);
|
|
499
|
+
} }
|
|
500
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
+
i0.ɵɵelement(0, "i", 41);
|
|
502
|
+
i0.ɵɵtext(1, " Session Record ");
|
|
503
|
+
} }
|
|
504
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
506
|
+
i0.ɵɵelementStart(0, "a", 23);
|
|
507
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_25_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("MJ: Conversations", ctx_r1.record.ConversationID)); });
|
|
508
|
+
i0.ɵɵtext(1);
|
|
509
|
+
i0.ɵɵelementEnd();
|
|
510
|
+
} if (rf & 2) {
|
|
511
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
512
|
+
i0.ɵɵadvance();
|
|
513
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Conversation || ctx_r1.record.ConversationID, " ");
|
|
514
|
+
} }
|
|
515
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
516
|
+
i0.ɵɵelementStart(0, "span");
|
|
517
|
+
i0.ɵɵtext(1, "N/A");
|
|
518
|
+
i0.ɵɵelementEnd();
|
|
519
|
+
} }
|
|
520
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
521
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
522
|
+
i0.ɵɵelementStart(0, "a", 23);
|
|
523
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_36_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("MJ: AI Agent Sessions", ctx_r1.record.LastSessionID)); });
|
|
524
|
+
i0.ɵɵtext(1);
|
|
525
|
+
i0.ɵɵelementEnd();
|
|
526
|
+
} if (rf & 2) {
|
|
527
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
528
|
+
i0.ɵɵadvance();
|
|
529
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.LastSessionID, " ");
|
|
530
|
+
} }
|
|
531
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
+
i0.ɵɵelementStart(0, "span");
|
|
533
|
+
i0.ɵɵtext(1, "None (root)");
|
|
534
|
+
i0.ɵɵelementEnd();
|
|
535
|
+
} }
|
|
536
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_55_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
537
|
+
i0.ɵɵelement(0, "i", 98);
|
|
538
|
+
i0.ɵɵtext(1, " Config (Session State JSON) ");
|
|
539
|
+
} }
|
|
540
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 91);
|
|
542
|
+
i0.ɵɵtemplate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_55_ng_template_1_Template, 2, 0, "ng-template", 92);
|
|
543
|
+
i0.ɵɵelementStart(2, "div", 96);
|
|
544
|
+
i0.ɵɵelement(3, "mj-code-editor", 97);
|
|
545
|
+
i0.ɵɵelementEnd()();
|
|
546
|
+
} if (rf & 2) {
|
|
547
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
548
|
+
i0.ɵɵproperty("Expanded", false);
|
|
549
|
+
i0.ɵɵadvance(3);
|
|
550
|
+
i0.ɵɵproperty("ngModel", ctx_r1.PrettyConfig)("language", "json")("readonly", true);
|
|
551
|
+
} }
|
|
552
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
553
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
554
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "mj-accordion-panel", 91);
|
|
555
|
+
i0.ɵɵtemplate(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_ng_template_2_Template, 2, 0, "ng-template", 92);
|
|
556
|
+
i0.ɵɵelementStart(3, "div", 93)(4, "div", 94)(5, "label");
|
|
557
|
+
i0.ɵɵtext(6, "ID");
|
|
558
|
+
i0.ɵɵelementEnd();
|
|
559
|
+
i0.ɵɵelementStart(7, "span", 78);
|
|
560
|
+
i0.ɵɵtext(8);
|
|
561
|
+
i0.ɵɵelementEnd()();
|
|
562
|
+
i0.ɵɵelementStart(9, "div", 94)(10, "label");
|
|
563
|
+
i0.ɵɵtext(11, "Agent (Co-Agent)");
|
|
564
|
+
i0.ɵɵelementEnd();
|
|
565
|
+
i0.ɵɵelementStart(12, "span")(13, "a", 23);
|
|
566
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Template_a_click_13_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
|
|
567
|
+
i0.ɵɵtext(14);
|
|
568
|
+
i0.ɵɵelementEnd()()();
|
|
569
|
+
i0.ɵɵelementStart(15, "div", 94)(16, "label");
|
|
570
|
+
i0.ɵɵtext(17, "User");
|
|
571
|
+
i0.ɵɵelementEnd();
|
|
572
|
+
i0.ɵɵelementStart(18, "span")(19, "a", 23);
|
|
573
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Template_a_click_19_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("Users", ctx_r1.record.UserID)); });
|
|
574
|
+
i0.ɵɵtext(20);
|
|
575
|
+
i0.ɵɵelementEnd()()();
|
|
576
|
+
i0.ɵɵelementStart(21, "div", 94)(22, "label");
|
|
577
|
+
i0.ɵɵtext(23, "Conversation");
|
|
578
|
+
i0.ɵɵelementEnd();
|
|
579
|
+
i0.ɵɵelementStart(24, "span");
|
|
580
|
+
i0.ɵɵconditionalCreate(25, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_25_Template, 2, 1, "a", 30)(26, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_26_Template, 2, 0, "span");
|
|
581
|
+
i0.ɵɵelementEnd()();
|
|
582
|
+
i0.ɵɵelementStart(27, "div", 94)(28, "label");
|
|
583
|
+
i0.ɵɵtext(29, "Status");
|
|
584
|
+
i0.ɵɵelementEnd();
|
|
585
|
+
i0.ɵɵelementStart(30, "span", 95);
|
|
586
|
+
i0.ɵɵtext(31);
|
|
587
|
+
i0.ɵɵelementEnd()();
|
|
588
|
+
i0.ɵɵelementStart(32, "div", 94)(33, "label");
|
|
589
|
+
i0.ɵɵtext(34, "Prior Session");
|
|
590
|
+
i0.ɵɵelementEnd();
|
|
591
|
+
i0.ɵɵelementStart(35, "span");
|
|
592
|
+
i0.ɵɵconditionalCreate(36, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_36_Template, 2, 1, "a", 30)(37, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_37_Template, 2, 0, "span");
|
|
593
|
+
i0.ɵɵelementEnd()();
|
|
594
|
+
i0.ɵɵelementStart(38, "div", 94)(39, "label");
|
|
595
|
+
i0.ɵɵtext(40, "Host Instance");
|
|
596
|
+
i0.ɵɵelementEnd();
|
|
597
|
+
i0.ɵɵelementStart(41, "span", 78);
|
|
598
|
+
i0.ɵɵtext(42);
|
|
599
|
+
i0.ɵɵelementEnd()();
|
|
600
|
+
i0.ɵɵelementStart(43, "div", 94)(44, "label");
|
|
601
|
+
i0.ɵɵtext(45, "Last Active At");
|
|
602
|
+
i0.ɵɵelementEnd();
|
|
603
|
+
i0.ɵɵelementStart(46, "span");
|
|
604
|
+
i0.ɵɵtext(47);
|
|
605
|
+
i0.ɵɵpipe(48, "date");
|
|
606
|
+
i0.ɵɵelementEnd()();
|
|
607
|
+
i0.ɵɵelementStart(49, "div", 94)(50, "label");
|
|
608
|
+
i0.ɵɵtext(51, "Closed At");
|
|
609
|
+
i0.ɵɵelementEnd();
|
|
610
|
+
i0.ɵɵelementStart(52, "span");
|
|
611
|
+
i0.ɵɵtext(53);
|
|
612
|
+
i0.ɵɵpipe(54, "date");
|
|
613
|
+
i0.ɵɵelementEnd()()()();
|
|
614
|
+
i0.ɵɵconditionalCreate(55, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Conditional_55_Template, 4, 4, "mj-accordion-panel", 91);
|
|
615
|
+
i0.ɵɵelementEnd();
|
|
616
|
+
} if (rf & 2) {
|
|
617
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
618
|
+
i0.ɵɵadvance();
|
|
619
|
+
i0.ɵɵproperty("Expanded", true);
|
|
620
|
+
i0.ɵɵadvance(7);
|
|
621
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.ID);
|
|
622
|
+
i0.ɵɵadvance(6);
|
|
623
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "N/A", " ");
|
|
624
|
+
i0.ɵɵadvance(6);
|
|
625
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.User, " ");
|
|
626
|
+
i0.ɵɵadvance(5);
|
|
627
|
+
i0.ɵɵconditional(ctx_r1.record.ConversationID ? 25 : 26);
|
|
628
|
+
i0.ɵɵadvance(5);
|
|
629
|
+
i0.ɵɵattribute("data-status", ctx_r1.record.Status);
|
|
630
|
+
i0.ɵɵadvance();
|
|
631
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Status);
|
|
632
|
+
i0.ɵɵadvance(5);
|
|
633
|
+
i0.ɵɵconditional(ctx_r1.record.LastSessionID ? 36 : 37);
|
|
634
|
+
i0.ɵɵadvance(6);
|
|
635
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.HostInstanceID || "N/A");
|
|
636
|
+
i0.ɵɵadvance(5);
|
|
637
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(48, 12, ctx_r1.record.LastActiveAt, "medium"));
|
|
638
|
+
i0.ɵɵadvance(6);
|
|
639
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.ClosedAt ? i0.ɵɵpipeBind2(54, 15, ctx_r1.record.ClosedAt, "medium") : "Still open");
|
|
640
|
+
i0.ɵɵadvance(2);
|
|
641
|
+
i0.ɵɵconditional(ctx_r1.record.Config_ ? 55 : -1);
|
|
642
|
+
} }
|
|
643
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Template(rf, ctx) { if (rf & 1) {
|
|
644
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_0_Template, 3, 1, "div", 50);
|
|
645
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_1_Template, 3, 1, "div", 50);
|
|
646
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_2_Template, 3, 1, "div", 50);
|
|
647
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Conditional_3_Template, 56, 18, "div", 50);
|
|
648
|
+
} if (rf & 2) {
|
|
649
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
650
|
+
i0.ɵɵconditional(ctx_r1.ActiveTab === "runs" ? 0 : -1);
|
|
651
|
+
i0.ɵɵadvance();
|
|
652
|
+
i0.ɵɵconditional(ctx_r1.ActiveTab === "channels" ? 1 : -1);
|
|
653
|
+
i0.ɵɵadvance();
|
|
654
|
+
i0.ɵɵconditional(ctx_r1.ActiveTab === "transcript" ? 2 : -1);
|
|
655
|
+
i0.ɵɵadvance();
|
|
656
|
+
i0.ɵɵconditional(ctx_r1.ActiveTab === "details" ? 3 : -1);
|
|
657
|
+
} }
|
|
658
|
+
function MJAIAgentSessionFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
659
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
660
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
661
|
+
i0.ɵɵlistener("Navigate", function MJAIAgentSessionFormComponentExtended_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 MJAIAgentSessionFormComponentExtended_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 MJAIAgentSessionFormComponentExtended_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 MJAIAgentSessionFormComponentExtended_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 MJAIAgentSessionFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
662
|
+
i0.ɵɵelementStart(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "div", 5)(5, "div", 6);
|
|
663
|
+
i0.ɵɵelement(6, "i", 7);
|
|
664
|
+
i0.ɵɵelementEnd();
|
|
665
|
+
i0.ɵɵelementStart(7, "div", 8)(8, "h2");
|
|
666
|
+
i0.ɵɵtext(9, "AI Agent Session");
|
|
667
|
+
i0.ɵɵelementEnd();
|
|
668
|
+
i0.ɵɵelementStart(10, "div", 9);
|
|
669
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_11_Template, 3, 1, "span", 10);
|
|
670
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_12_Template, 4, 1);
|
|
671
|
+
i0.ɵɵelementStart(13, "span", 11);
|
|
672
|
+
i0.ɵɵtext(14);
|
|
673
|
+
i0.ɵɵelementEnd();
|
|
674
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_15_Template, 5, 1, "span", 12);
|
|
675
|
+
i0.ɵɵelementEnd()()();
|
|
676
|
+
i0.ɵɵelementStart(16, "div", 13)(17, "div", 14);
|
|
677
|
+
i0.ɵɵelement(18, "i", 15);
|
|
678
|
+
i0.ɵɵtext(19);
|
|
679
|
+
i0.ɵɵelementEnd();
|
|
680
|
+
i0.ɵɵelementStart(20, "div", 16)(21, "button", 17);
|
|
681
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RefreshData()); });
|
|
682
|
+
i0.ɵɵelement(22, "i", 18);
|
|
683
|
+
i0.ɵɵelementEnd()()()();
|
|
684
|
+
i0.ɵɵelementStart(23, "div", 19)(24, "div", 20)(25, "span", 21);
|
|
685
|
+
i0.ɵɵtext(26, "User");
|
|
686
|
+
i0.ɵɵelementEnd();
|
|
687
|
+
i0.ɵɵelementStart(27, "span", 22)(28, "a", 23);
|
|
688
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_a_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenEntityRecord("Users", ctx_r1.record.UserID)); });
|
|
689
|
+
i0.ɵɵtext(29);
|
|
690
|
+
i0.ɵɵelementEnd()()();
|
|
691
|
+
i0.ɵɵelementStart(30, "div", 20)(31, "span", 21);
|
|
692
|
+
i0.ɵɵtext(32, "Started");
|
|
693
|
+
i0.ɵɵelementEnd();
|
|
694
|
+
i0.ɵɵelementStart(33, "span", 22);
|
|
695
|
+
i0.ɵɵtext(34);
|
|
696
|
+
i0.ɵɵpipe(35, "date");
|
|
697
|
+
i0.ɵɵelementEnd()();
|
|
698
|
+
i0.ɵɵconditionalCreate(36, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_36_Template, 6, 4, "div", 20)(37, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_37_Template, 6, 4, "div", 20);
|
|
699
|
+
i0.ɵɵelementStart(38, "div", 20)(39, "span", 21);
|
|
700
|
+
i0.ɵɵtext(40, "Duration");
|
|
701
|
+
i0.ɵɵelementEnd();
|
|
702
|
+
i0.ɵɵelementStart(41, "span", 22);
|
|
703
|
+
i0.ɵɵtext(42);
|
|
704
|
+
i0.ɵɵelementEnd()();
|
|
705
|
+
i0.ɵɵelementStart(43, "div", 20)(44, "span", 21);
|
|
706
|
+
i0.ɵɵtext(45, "Channels");
|
|
707
|
+
i0.ɵɵelementEnd();
|
|
708
|
+
i0.ɵɵelementStart(46, "span", 22);
|
|
709
|
+
i0.ɵɵtext(47);
|
|
710
|
+
i0.ɵɵelementEnd()();
|
|
711
|
+
i0.ɵɵelementStart(48, "div", 20)(49, "span", 21);
|
|
712
|
+
i0.ɵɵtext(50, "Delegated Runs");
|
|
713
|
+
i0.ɵɵelementEnd();
|
|
714
|
+
i0.ɵɵelementStart(51, "span", 22);
|
|
715
|
+
i0.ɵɵtext(52);
|
|
716
|
+
i0.ɵɵelementEnd()();
|
|
717
|
+
i0.ɵɵconditionalCreate(53, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_53_Template, 6, 4, "div", 20);
|
|
718
|
+
i0.ɵɵconditionalCreate(54, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_54_Template, 6, 4, "div", 20);
|
|
719
|
+
i0.ɵɵelementEnd();
|
|
720
|
+
i0.ɵɵelementStart(55, "div", 24)(56, "div", 25);
|
|
721
|
+
i0.ɵɵelement(57, "i", 26);
|
|
722
|
+
i0.ɵɵelementStart(58, "div", 27)(59, "div", 28);
|
|
723
|
+
i0.ɵɵtext(60, "Target Agent");
|
|
724
|
+
i0.ɵɵelementEnd();
|
|
725
|
+
i0.ɵɵelementStart(61, "div", 29);
|
|
726
|
+
i0.ɵɵconditionalCreate(62, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_62_Template, 2, 1, "a", 30)(63, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_63_Template, 2, 0, "span", 31);
|
|
727
|
+
i0.ɵɵelementEnd()()();
|
|
728
|
+
i0.ɵɵelementStart(64, "div", 25);
|
|
729
|
+
i0.ɵɵelement(65, "i", 32);
|
|
730
|
+
i0.ɵɵelementStart(66, "div", 27)(67, "div", 28);
|
|
731
|
+
i0.ɵɵtext(68, "Host Instance");
|
|
732
|
+
i0.ɵɵelementEnd();
|
|
733
|
+
i0.ɵɵelementStart(69, "div", 33);
|
|
734
|
+
i0.ɵɵtext(70);
|
|
735
|
+
i0.ɵɵelementEnd()()();
|
|
736
|
+
i0.ɵɵelementStart(71, "div", 25);
|
|
737
|
+
i0.ɵɵelement(72, "i", 34);
|
|
738
|
+
i0.ɵɵelementStart(73, "div", 27)(74, "div", 28);
|
|
739
|
+
i0.ɵɵtext(75, "Continuation");
|
|
740
|
+
i0.ɵɵelementEnd();
|
|
741
|
+
i0.ɵɵelementStart(76, "div", 29);
|
|
742
|
+
i0.ɵɵconditionalCreate(77, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_77_Template, 2, 0, "a", 30)(78, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_78_Template, 2, 0, "span", 31);
|
|
743
|
+
i0.ɵɵelementEnd()()()()();
|
|
744
|
+
i0.ɵɵelementStart(79, "div", 35)(80, "button", 36);
|
|
745
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_button_click_80_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ChangeTab("runs")); });
|
|
746
|
+
i0.ɵɵelement(81, "i", 37);
|
|
747
|
+
i0.ɵɵtext(82, " Runs ");
|
|
748
|
+
i0.ɵɵconditionalCreate(83, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_83_Template, 2, 1, "span", 38);
|
|
749
|
+
i0.ɵɵelementEnd();
|
|
750
|
+
i0.ɵɵelementStart(84, "button", 36);
|
|
751
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_button_click_84_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ChangeTab("channels")); });
|
|
752
|
+
i0.ɵɵelement(85, "i", 39);
|
|
753
|
+
i0.ɵɵtext(86, " Channels ");
|
|
754
|
+
i0.ɵɵconditionalCreate(87, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_87_Template, 2, 1, "span", 38);
|
|
755
|
+
i0.ɵɵelementEnd();
|
|
756
|
+
i0.ɵɵelementStart(88, "button", 36);
|
|
757
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_button_click_88_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ChangeTab("transcript")); });
|
|
758
|
+
i0.ɵɵelement(89, "i", 40);
|
|
759
|
+
i0.ɵɵtext(90, " Transcript ");
|
|
760
|
+
i0.ɵɵconditionalCreate(91, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_91_Template, 2, 1, "span", 38);
|
|
761
|
+
i0.ɵɵelementEnd();
|
|
762
|
+
i0.ɵɵelementStart(92, "button", 36);
|
|
763
|
+
i0.ɵɵlistener("click", function MJAIAgentSessionFormComponentExtended_Conditional_0_Template_button_click_92_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ChangeTab("details")); });
|
|
764
|
+
i0.ɵɵelement(93, "i", 41);
|
|
765
|
+
i0.ɵɵtext(94, " Details ");
|
|
766
|
+
i0.ɵɵelementEnd()();
|
|
767
|
+
i0.ɵɵelementStart(95, "div", 42);
|
|
768
|
+
i0.ɵɵconditionalCreate(96, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_96_Template, 1, 0, "mj-loading", 43)(97, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_97_Template, 4, 1, "div", 44)(98, MJAIAgentSessionFormComponentExtended_Conditional_0_Conditional_98_Template, 4, 4);
|
|
769
|
+
i0.ɵɵelementEnd()()();
|
|
770
|
+
} if (rf & 2) {
|
|
771
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
772
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1)("ToolbarConfig", ctx_r1.ToolbarConfig)("WidthMode", "full-width");
|
|
773
|
+
i0.ɵɵadvance(11);
|
|
774
|
+
i0.ɵɵconditional(ctx_r1.record.AgentID ? 11 : -1);
|
|
775
|
+
i0.ɵɵadvance();
|
|
776
|
+
i0.ɵɵconditional(ctx_r1.TargetAgentID ? 12 : -1);
|
|
777
|
+
i0.ɵɵadvance(2);
|
|
778
|
+
i0.ɵɵtextInterpolate(ctx_r1.ShortSessionId);
|
|
779
|
+
i0.ɵɵadvance();
|
|
780
|
+
i0.ɵɵconditional(ctx_r1.record.ConversationID ? 15 : -1);
|
|
781
|
+
i0.ɵɵadvance(2);
|
|
782
|
+
i0.ɵɵattribute("data-status", ctx_r1.record.Status);
|
|
783
|
+
i0.ɵɵadvance();
|
|
784
|
+
i0.ɵɵproperty("ngClass", ctx_r1.GetStatusIcon(ctx_r1.record.Status));
|
|
785
|
+
i0.ɵɵadvance();
|
|
786
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
787
|
+
i0.ɵɵadvance(10);
|
|
788
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.User);
|
|
789
|
+
i0.ɵɵadvance(5);
|
|
790
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(35, 34, ctx_r1.record.__mj_CreatedAt, "medium"));
|
|
791
|
+
i0.ɵɵadvance(2);
|
|
792
|
+
i0.ɵɵconditional(ctx_r1.record.ClosedAt ? 36 : 37);
|
|
793
|
+
i0.ɵɵadvance(6);
|
|
794
|
+
i0.ɵɵtextInterpolate(ctx_r1.SessionDuration);
|
|
795
|
+
i0.ɵɵadvance(5);
|
|
796
|
+
i0.ɵɵtextInterpolate(ctx_r1.Channels.length);
|
|
797
|
+
i0.ɵɵadvance(5);
|
|
798
|
+
i0.ɵɵtextInterpolate(ctx_r1.DelegatedRunCount);
|
|
799
|
+
i0.ɵɵadvance();
|
|
800
|
+
i0.ɵɵconditional(ctx_r1.SessionTokens != null && ctx_r1.SessionTokens > 0 ? 53 : -1);
|
|
801
|
+
i0.ɵɵadvance();
|
|
802
|
+
i0.ɵɵconditional(ctx_r1.SessionCost != null && ctx_r1.SessionCost > 0 ? 54 : -1);
|
|
803
|
+
i0.ɵɵadvance(8);
|
|
804
|
+
i0.ɵɵconditional(ctx_r1.TargetAgentID ? 62 : 63);
|
|
805
|
+
i0.ɵɵadvance(8);
|
|
806
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.HostInstanceID || "\u2014");
|
|
807
|
+
i0.ɵɵadvance(7);
|
|
808
|
+
i0.ɵɵconditional(ctx_r1.record.LastSessionID ? 77 : 78);
|
|
809
|
+
i0.ɵɵadvance(3);
|
|
810
|
+
i0.ɵɵclassProp("active", ctx_r1.ActiveTab === "runs");
|
|
811
|
+
i0.ɵɵadvance(3);
|
|
812
|
+
i0.ɵɵconditional(ctx_r1.RunTree.length > 0 ? 83 : -1);
|
|
813
|
+
i0.ɵɵadvance();
|
|
814
|
+
i0.ɵɵclassProp("active", ctx_r1.ActiveTab === "channels");
|
|
815
|
+
i0.ɵɵadvance(3);
|
|
816
|
+
i0.ɵɵconditional(ctx_r1.Channels.length > 0 ? 87 : -1);
|
|
817
|
+
i0.ɵɵadvance();
|
|
818
|
+
i0.ɵɵclassProp("active", ctx_r1.ActiveTab === "transcript");
|
|
819
|
+
i0.ɵɵadvance(3);
|
|
820
|
+
i0.ɵɵconditional(ctx_r1.Transcript.length > 0 ? 91 : -1);
|
|
821
|
+
i0.ɵɵadvance();
|
|
822
|
+
i0.ɵɵclassProp("active", ctx_r1.ActiveTab === "details");
|
|
823
|
+
i0.ɵɵadvance(4);
|
|
824
|
+
i0.ɵɵconditional(ctx_r1.Loading ? 96 : ctx_r1.LoadError ? 97 : 98);
|
|
825
|
+
} }
|
|
826
|
+
/**
|
|
827
|
+
* Custom form for 'MJ: AI Agent Sessions' — the observability surface for
|
|
828
|
+
* long-lived realtime (voice) agent sessions. Mirrors the AI Agent Run form's
|
|
829
|
+
* visual language: header with icon / status badge / stats, config bar, and
|
|
830
|
+
* tabbed panes for the delegated run tree, channels, transcript, and details.
|
|
831
|
+
*/
|
|
832
|
+
let MJAIAgentSessionFormComponentExtended = class MJAIAgentSessionFormComponentExtended extends MJAIAgentSessionFormComponent {
|
|
833
|
+
constructor() {
|
|
834
|
+
super(...arguments);
|
|
835
|
+
/** Hide the generated-section controls — this form has a fully custom layout. */
|
|
836
|
+
this.ToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;
|
|
837
|
+
// UI state
|
|
838
|
+
this.ActiveTab = 'runs';
|
|
839
|
+
this.Loading = false;
|
|
840
|
+
this.LoadError = null;
|
|
841
|
+
// Loaded data
|
|
842
|
+
this.RunTree = [];
|
|
843
|
+
this.Channels = [];
|
|
844
|
+
this.Transcript = [];
|
|
845
|
+
this.DelegatedRunCount = 0;
|
|
846
|
+
this.TargetAgentID = null;
|
|
847
|
+
this.TargetAgentName = null;
|
|
848
|
+
this.CoAgentPromptRun = null;
|
|
849
|
+
this.SessionTokens = null;
|
|
850
|
+
this.SessionCost = null;
|
|
851
|
+
this.sessionConfig = {};
|
|
852
|
+
this.cachedPrettyConfig = null;
|
|
853
|
+
this.navigationService = inject(NavigationService);
|
|
854
|
+
this.appManager = inject(ApplicationManager);
|
|
855
|
+
}
|
|
856
|
+
/** Sessions read best full-width, like the agent-run form. */
|
|
857
|
+
getDefaultFormWidthMode() { return 'full-width'; }
|
|
858
|
+
async ngOnInit() {
|
|
859
|
+
await super.ngOnInit();
|
|
860
|
+
if (this.record?.ID) {
|
|
861
|
+
this.sessionConfig = this.parseSessionConfig(this.record.Config_);
|
|
862
|
+
await this.loadSessionData();
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
// ────────────────────────────────────────────────────────────────────
|
|
866
|
+
// Data loading
|
|
867
|
+
// ────────────────────────────────────────────────────────────────────
|
|
868
|
+
/** Parses the session's Config JSON; returns an empty config on any error. */
|
|
869
|
+
parseSessionConfig(raw) {
|
|
870
|
+
if (!raw)
|
|
871
|
+
return {};
|
|
872
|
+
try {
|
|
873
|
+
const parsed = JSON.parse(raw);
|
|
874
|
+
return {
|
|
875
|
+
targetAgentID: typeof parsed.targetAgentID === 'string' ? parsed.targetAgentID : undefined,
|
|
876
|
+
coAgentRunID: typeof parsed.coAgentRunID === 'string' ? parsed.coAgentRunID : undefined,
|
|
877
|
+
promptRunID: typeof parsed.promptRunID === 'string' ? parsed.promptRunID : undefined
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
catch {
|
|
881
|
+
return {};
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
/**
|
|
885
|
+
* Loads everything the form shows in a single batched RunViews round trip:
|
|
886
|
+
* the session's run tree, its channel instances (+ channel definitions for
|
|
887
|
+
* transport), the transcript, and — when the Config carries observability
|
|
888
|
+
* ids — the co-agent prompt run and target agent name.
|
|
889
|
+
*/
|
|
890
|
+
async loadSessionData() {
|
|
891
|
+
this.Loading = true;
|
|
892
|
+
this.LoadError = null;
|
|
893
|
+
try {
|
|
894
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
895
|
+
const sessionId = this.record.ID;
|
|
896
|
+
const results = await rv.RunViews([
|
|
897
|
+
{
|
|
898
|
+
EntityName: 'MJ: AI Agent Runs',
|
|
899
|
+
Fields: ['ID', 'AgentID', 'Agent', 'ParentRunID', 'Status', 'StartedAt', 'CompletedAt',
|
|
900
|
+
'TotalTokensUsed', 'TotalCost', 'TotalTokensUsedRollup', 'TotalCostRollup'],
|
|
901
|
+
ExtraFilter: `AgentSessionID='${sessionId}'`,
|
|
902
|
+
OrderBy: 'StartedAt ASC',
|
|
903
|
+
ResultType: 'simple'
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
EntityName: 'MJ: AI Agent Session Channels',
|
|
907
|
+
Fields: ['ID', 'ChannelID', 'Channel', 'Status', 'SocketUrl', '__mj_CreatedAt', 'LastActiveAt', 'DisconnectedAt'],
|
|
908
|
+
ExtraFilter: `AgentSessionID='${sessionId}'`,
|
|
909
|
+
OrderBy: '__mj_CreatedAt ASC',
|
|
910
|
+
ResultType: 'simple'
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
EntityName: 'MJ: AI Agent Channels',
|
|
914
|
+
Fields: ['ID', 'Name', 'TransportType'],
|
|
915
|
+
ResultType: 'simple'
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
EntityName: 'MJ: Conversation Details',
|
|
919
|
+
Fields: ['ID', 'Role', 'Message', 'Agent', 'User', '__mj_CreatedAt'],
|
|
920
|
+
ExtraFilter: `AgentSessionID='${sessionId}'`,
|
|
921
|
+
OrderBy: '__mj_CreatedAt ASC',
|
|
922
|
+
ResultType: 'simple'
|
|
923
|
+
},
|
|
924
|
+
// Co-agent model leg — only meaningful when Config carries promptRunID;
|
|
925
|
+
// an impossible filter keeps the batch shape stable when it doesn't.
|
|
926
|
+
{
|
|
927
|
+
EntityName: 'MJ: AI Prompt Runs',
|
|
928
|
+
Fields: ['ID', 'Model', 'Status', 'RunAt', 'CompletedAt', 'TokensUsed', 'TokensPrompt', 'TokensCompletion', 'TotalCost'],
|
|
929
|
+
ExtraFilter: this.sessionConfig.promptRunID ? `ID='${this.sessionConfig.promptRunID}'` : `1=0`,
|
|
930
|
+
ResultType: 'simple'
|
|
931
|
+
},
|
|
932
|
+
// Target agent name resolution from Config.targetAgentID
|
|
933
|
+
{
|
|
934
|
+
EntityName: 'MJ: AI Agents',
|
|
935
|
+
Fields: ['ID', 'Name'],
|
|
936
|
+
ExtraFilter: this.sessionConfig.targetAgentID ? `ID='${this.sessionConfig.targetAgentID}'` : `1=0`,
|
|
937
|
+
ResultType: 'simple'
|
|
938
|
+
}
|
|
939
|
+
]);
|
|
940
|
+
const runs = (results[0]?.Success ? results[0].Results : []);
|
|
941
|
+
const channelRows = (results[1]?.Success ? results[1].Results : []);
|
|
942
|
+
const channelDefs = (results[2]?.Success ? results[2].Results : []);
|
|
943
|
+
this.Transcript = (results[3]?.Success ? results[3].Results : []);
|
|
944
|
+
const promptRuns = (results[4]?.Success ? results[4].Results : []);
|
|
945
|
+
const targetAgents = (results[5]?.Success ? results[5].Results : []);
|
|
946
|
+
this.CoAgentPromptRun = promptRuns.length > 0 ? promptRuns[0] : null;
|
|
947
|
+
this.TargetAgentID = this.sessionConfig.targetAgentID ?? null;
|
|
948
|
+
this.TargetAgentName = targetAgents.length > 0 ? targetAgents[0].Name : null;
|
|
949
|
+
this.Channels = channelRows.map(row => ({
|
|
950
|
+
row,
|
|
951
|
+
transportType: channelDefs.find(d => UUIDsEqual(d.ID, row.ChannelID))?.TransportType ?? null
|
|
952
|
+
}));
|
|
953
|
+
this.RunTree = this.buildRunTree(runs);
|
|
954
|
+
this.DelegatedRunCount = runs.filter(r => r.ParentRunID != null).length;
|
|
955
|
+
this.computeSessionUsage(runs);
|
|
956
|
+
}
|
|
957
|
+
catch (error) {
|
|
958
|
+
console.error('Error loading agent session data:', error);
|
|
959
|
+
this.LoadError = 'Failed to load session data';
|
|
960
|
+
}
|
|
961
|
+
finally {
|
|
962
|
+
this.Loading = false;
|
|
963
|
+
this.cdr.markForCheck();
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
/**
|
|
967
|
+
* Flattens the session's runs into a depth-first tree: root runs (no
|
|
968
|
+
* ParentRunID, or parent outside the session) first, children nested by
|
|
969
|
+
* ParentRunID. The co-agent run (Config.coAgentRunID) gets its streaming
|
|
970
|
+
* prompt run inserted directly beneath it as a 'promptRun' leg.
|
|
971
|
+
*/
|
|
972
|
+
buildRunTree(runs) {
|
|
973
|
+
const items = [];
|
|
974
|
+
const byParent = new Map();
|
|
975
|
+
const idSet = new Set(runs.map(r => r.ID.toUpperCase()));
|
|
976
|
+
const roots = [];
|
|
977
|
+
for (const run of runs) {
|
|
978
|
+
if (run.ParentRunID && idSet.has(run.ParentRunID.toUpperCase())) {
|
|
979
|
+
const key = run.ParentRunID.toUpperCase();
|
|
980
|
+
const list = byParent.get(key) ?? [];
|
|
981
|
+
list.push(run);
|
|
982
|
+
byParent.set(key, list);
|
|
983
|
+
}
|
|
984
|
+
else {
|
|
985
|
+
roots.push(run);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
const visit = (run, depth) => {
|
|
989
|
+
const isCoAgent = this.sessionConfig.coAgentRunID != null && UUIDsEqual(run.ID, this.sessionConfig.coAgentRunID);
|
|
990
|
+
items.push(this.runToTreeItem(run, depth, isCoAgent));
|
|
991
|
+
if (isCoAgent && this.CoAgentPromptRun) {
|
|
992
|
+
items.push(this.promptRunToTreeItem(this.CoAgentPromptRun, depth + 1));
|
|
993
|
+
}
|
|
994
|
+
for (const child of byParent.get(run.ID.toUpperCase()) ?? []) {
|
|
995
|
+
visit(child, depth + 1);
|
|
996
|
+
}
|
|
997
|
+
};
|
|
998
|
+
for (const root of roots) {
|
|
999
|
+
visit(root, 0);
|
|
1000
|
+
}
|
|
1001
|
+
return items;
|
|
1002
|
+
}
|
|
1003
|
+
runToTreeItem(run, depth, isCoAgent) {
|
|
1004
|
+
const shortId = run.ID.substring(0, 8);
|
|
1005
|
+
return {
|
|
1006
|
+
kind: 'run',
|
|
1007
|
+
id: run.ID,
|
|
1008
|
+
entityName: 'MJ: AI Agent Runs',
|
|
1009
|
+
title: isCoAgent
|
|
1010
|
+
? `${run.Agent ?? 'Co-Agent'} · session run`
|
|
1011
|
+
: `${run.Agent ?? 'Agent'} · delegated run`,
|
|
1012
|
+
subtitle: isCoAgent
|
|
1013
|
+
? `AIAgentRun #${shortId} · one long-lived run for this session`
|
|
1014
|
+
: `AIAgentRun #${shortId} · ParentRunID #${run.ParentRunID?.substring(0, 8) ?? '—'} · invoked via target-agent tool`,
|
|
1015
|
+
status: run.Status,
|
|
1016
|
+
startedAt: run.StartedAt,
|
|
1017
|
+
completedAt: run.CompletedAt,
|
|
1018
|
+
tokens: run.TotalTokensUsedRollup ?? run.TotalTokensUsed,
|
|
1019
|
+
cost: run.TotalCostRollup ?? run.TotalCost,
|
|
1020
|
+
depth,
|
|
1021
|
+
isCoAgentRun: isCoAgent
|
|
1022
|
+
};
|
|
1023
|
+
}
|
|
1024
|
+
promptRunToTreeItem(pr, depth) {
|
|
1025
|
+
return {
|
|
1026
|
+
kind: 'promptRun',
|
|
1027
|
+
id: pr.ID,
|
|
1028
|
+
entityName: 'MJ: AI Prompt Runs',
|
|
1029
|
+
title: `Model leg · ${pr.Model}`,
|
|
1030
|
+
subtitle: `AIPromptRun #${pr.ID.substring(0, 8)} · ${pr.TokensPrompt ?? 0} in · ${pr.TokensCompletion ?? 0} out · usage checkpointed incrementally`,
|
|
1031
|
+
status: pr.Status,
|
|
1032
|
+
startedAt: pr.RunAt,
|
|
1033
|
+
completedAt: pr.CompletedAt,
|
|
1034
|
+
tokens: pr.TokensUsed,
|
|
1035
|
+
cost: pr.TotalCost,
|
|
1036
|
+
depth,
|
|
1037
|
+
isCoAgentRun: false
|
|
1038
|
+
};
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* Session-level tokens/cost for the header stats: prefer the co-agent run's
|
|
1042
|
+
* rollups (covers delegated children), fall back to the prompt run's
|
|
1043
|
+
* incremental usage when the run rollups haven't been finalized yet.
|
|
1044
|
+
*/
|
|
1045
|
+
computeSessionUsage(runs) {
|
|
1046
|
+
const coAgentRun = this.sessionConfig.coAgentRunID
|
|
1047
|
+
? runs.find(r => UUIDsEqual(r.ID, this.sessionConfig.coAgentRunID)) ?? null
|
|
1048
|
+
: null;
|
|
1049
|
+
const runTokens = coAgentRun ? (coAgentRun.TotalTokensUsedRollup ?? coAgentRun.TotalTokensUsed) : null;
|
|
1050
|
+
const runCost = coAgentRun ? (coAgentRun.TotalCostRollup ?? coAgentRun.TotalCost) : null;
|
|
1051
|
+
this.SessionTokens = runTokens ?? this.CoAgentPromptRun?.TokensUsed ?? null;
|
|
1052
|
+
this.SessionCost = runCost ?? this.CoAgentPromptRun?.TotalCost ?? null;
|
|
1053
|
+
}
|
|
1054
|
+
// ────────────────────────────────────────────────────────────────────
|
|
1055
|
+
// Display helpers
|
|
1056
|
+
// ────────────────────────────────────────────────────────────────────
|
|
1057
|
+
ChangeTab(tab) {
|
|
1058
|
+
this.ActiveTab = tab;
|
|
1059
|
+
}
|
|
1060
|
+
GetStatusIcon(status) {
|
|
1061
|
+
switch (status) {
|
|
1062
|
+
case 'Active': return 'fa-tower-broadcast';
|
|
1063
|
+
case 'Idle': return 'fa-moon';
|
|
1064
|
+
case 'Closed': return 'fa-circle-stop';
|
|
1065
|
+
default: return 'fa-question-circle';
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
GetRunStatusIcon(status) {
|
|
1069
|
+
switch (status) {
|
|
1070
|
+
case 'Running': return 'fa-circle-notch fa-spin';
|
|
1071
|
+
case 'Completed': return 'fa-check-circle';
|
|
1072
|
+
case 'Failed': return 'fa-times-circle';
|
|
1073
|
+
case 'Cancelled': return 'fa-ban';
|
|
1074
|
+
case 'Paused': return 'fa-pause-circle';
|
|
1075
|
+
case 'AwaitingFeedback': return 'fa-hourglass-half';
|
|
1076
|
+
case 'Pending': return 'fa-clock';
|
|
1077
|
+
default: return 'fa-question-circle';
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
GetChannelIcon(channelName) {
|
|
1081
|
+
switch (channelName) {
|
|
1082
|
+
case 'VoiceAudio': return 'fa-microphone-lines';
|
|
1083
|
+
case 'TextChat': return 'fa-comment';
|
|
1084
|
+
case 'ClientControl': return 'fa-sliders';
|
|
1085
|
+
case 'Whiteboard': return 'fa-chalkboard';
|
|
1086
|
+
case 'Video': return 'fa-video';
|
|
1087
|
+
default: return 'fa-plug';
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
/** Short, readable session id (first segment of the UUID). */
|
|
1091
|
+
get ShortSessionId() {
|
|
1092
|
+
return this.record?.ID ? `sess_${this.record.ID.substring(0, 8).toLowerCase()}` : '';
|
|
1093
|
+
}
|
|
1094
|
+
/** Created → ClosedAt (terminal) or LastActiveAt (still open) duration. */
|
|
1095
|
+
get SessionDuration() {
|
|
1096
|
+
if (!this.record)
|
|
1097
|
+
return '';
|
|
1098
|
+
const start = this.toDate(this.record.__mj_CreatedAt);
|
|
1099
|
+
const end = this.toDate(this.record.ClosedAt) ?? this.toDate(this.record.LastActiveAt);
|
|
1100
|
+
if (!start || !end)
|
|
1101
|
+
return '—';
|
|
1102
|
+
return this.FormatDuration(start, end);
|
|
1103
|
+
}
|
|
1104
|
+
FormatDuration(start, end) {
|
|
1105
|
+
const s = this.toDate(start);
|
|
1106
|
+
const e = this.toDate(end);
|
|
1107
|
+
if (!s)
|
|
1108
|
+
return '—';
|
|
1109
|
+
if (!e)
|
|
1110
|
+
return 'Running...';
|
|
1111
|
+
const ms = e.getTime() - s.getTime();
|
|
1112
|
+
if (ms < 0)
|
|
1113
|
+
return '—';
|
|
1114
|
+
if (ms < 1000)
|
|
1115
|
+
return `${ms}ms`;
|
|
1116
|
+
if (ms < 60000)
|
|
1117
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
1118
|
+
if (ms < 3600000)
|
|
1119
|
+
return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
|
|
1120
|
+
return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;
|
|
1121
|
+
}
|
|
1122
|
+
toDate(value) {
|
|
1123
|
+
if (value == null)
|
|
1124
|
+
return null;
|
|
1125
|
+
const d = value instanceof Date ? value : new Date(value);
|
|
1126
|
+
return isNaN(d.getTime()) ? null : d;
|
|
1127
|
+
}
|
|
1128
|
+
/** Pretty-printed session Config JSON for the Details tab (cached). */
|
|
1129
|
+
get PrettyConfig() {
|
|
1130
|
+
if (!this.record?.Config_)
|
|
1131
|
+
return '';
|
|
1132
|
+
if (this.cachedPrettyConfig !== null)
|
|
1133
|
+
return this.cachedPrettyConfig;
|
|
1134
|
+
try {
|
|
1135
|
+
this.cachedPrettyConfig = JSON.stringify(JSON.parse(this.record.Config_), null, 2);
|
|
1136
|
+
}
|
|
1137
|
+
catch {
|
|
1138
|
+
this.cachedPrettyConfig = this.record.Config_;
|
|
1139
|
+
}
|
|
1140
|
+
return this.cachedPrettyConfig;
|
|
1141
|
+
}
|
|
1142
|
+
// ────────────────────────────────────────────────────────────────────
|
|
1143
|
+
// Navigation
|
|
1144
|
+
// ────────────────────────────────────────────────────────────────────
|
|
1145
|
+
OpenEntityRecord(entityName, recordId) {
|
|
1146
|
+
if (recordId) {
|
|
1147
|
+
SharedService.Instance.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
/** Opens the linked conversation in the Chat app (same pattern as the agent-run form). */
|
|
1151
|
+
NavigateToConversation() {
|
|
1152
|
+
if (!this.record?.ConversationID)
|
|
1153
|
+
return;
|
|
1154
|
+
const chatApp = this.appManager.GetAllApps().find(app => app.Name === 'Chat');
|
|
1155
|
+
if (!chatApp) {
|
|
1156
|
+
// Fall back to the raw conversation record when the Chat app isn't installed
|
|
1157
|
+
this.OpenEntityRecord('MJ: Conversations', this.record.ConversationID);
|
|
1158
|
+
return;
|
|
1159
|
+
}
|
|
1160
|
+
this.navigationService.OpenNavItemByName('Conversations',
|
|
1161
|
+
// realtimeSessionId opens the SESSION REVIEW overlay directly on arrival
|
|
1162
|
+
// (the chat wrapper consumes it once) — not just the containing chat.
|
|
1163
|
+
{ conversationId: this.record.ConversationID, realtimeSessionId: this.record.ID }, chatApp.ID);
|
|
1164
|
+
}
|
|
1165
|
+
RefreshData() {
|
|
1166
|
+
if (!this.record?.ID)
|
|
1167
|
+
return;
|
|
1168
|
+
this.cachedPrettyConfig = null;
|
|
1169
|
+
this.record.Load(this.record.ID).then(() => {
|
|
1170
|
+
this.sessionConfig = this.parseSessionConfig(this.record.Config_);
|
|
1171
|
+
void this.loadSessionData();
|
|
1172
|
+
});
|
|
1173
|
+
}
|
|
1174
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIAgentSessionFormComponentExtended_BaseFactory; return function MJAIAgentSessionFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIAgentSessionFormComponentExtended_BaseFactory || (ɵMJAIAgentSessionFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIAgentSessionFormComponentExtended)))(__ngFactoryType__ || MJAIAgentSessionFormComponentExtended); }; })(); }
|
|
1175
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIAgentSessionFormComponentExtended, selectors: [["mj-ai-agent-session-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", "ai-agent-session-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "fas", "fa-tower-broadcast"], [1, "header-info"], [1, "meta-info"], [1, "agent-name"], [1, "run-id"], ["title", "Open conversation in Chat app", 1, "conversation-pill"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "configuration-bar"], [1, "config-item"], [1, "fas", "fa-bullseye"], [1, "config-content"], [1, "config-label"], [1, "config-value"], ["href", "javascript:void(0)", 1, "entity-link"], [1, "muted"], [1, "fas", "fa-server"], [1, "config-value", "mono"], [1, "fas", "fa-link"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-diagram-project"], [1, "tab-count"], [1, "fas", "fa-plug"], [1, "fas", "fa-comments"], [1, "fas", "fa-info-circle"], [1, "content-area"], ["text", "Loading session data...", "size", "medium"], [1, "error-state"], [1, "fas", "fa-arrow-right-long", "target-arrow"], ["title", "Open conversation in Chat app", 1, "conversation-pill", 3, "click"], [1, "fas", "fa-external-link-alt", "pill-action"], [1, "value", "success"], [1, "fas", "fa-exclamation-triangle", "fa-2x"], [1, "tab-content"], [1, "empty-state"], [1, "run-tree"], [1, "fas", "fa-diagram-project", "fa-2x"], ["title", "Open record", 1, "run-node", 3, "run-node--child", "margin-left"], ["title", "Open record", 1, "run-node", 3, "click"], [1, "run-marker"], [1, "fas", "fa-microchip"], [1, "fas", "fa-robot"], [1, "run-body"], [1, "run-headrow"], [1, "run-title"], [1, "run-time"], [1, "run-sub"], [1, "run-foot"], [1, "run-status"], [1, "run-chip"], [1, "fas", "fa-clock"], [1, "fas", "fa-coins"], [1, "fas", "fa-dollar-sign"], [1, "channels-grid-wrap"], [1, "fas", "fa-plug", "fa-2x"], [1, "channels-grid"], ["title", "Open record"], ["title", "Open record", 3, "click"], [1, "cell-strong"], [1, "transport-pill"], [1, "channel-status-pill"], [1, "mono"], [1, "mono", "socket-cell", 3, "title"], [1, "transcript-thread"], [1, "fas", "fa-comments", "fa-2x"], [1, "turn", 3, "turn--user", "turn--error"], [1, "turn"], [1, "turn-avatar"], [1, "fas", "fa-user"], [1, "fas", "fa-triangle-exclamation"], [1, "turn-main"], [1, "turn-meta"], [1, "turn-time"], [1, "turn-bubble"], [3, "Expanded"], ["mjAccordionTitle", ""], [1, "details-grid"], [1, "detail-item"], [1, "status-badge", "small"], [1, "config-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [1, "fas", "fa-code"]], template: function MJAIAgentSessionFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1176
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentSessionFormComponentExtended_Conditional_0_Template, 99, 37, "mj-record-form-container", 0);
|
|
1177
|
+
} if (rf & 2) {
|
|
1178
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
1179
|
+
} }, dependencies: [i1.NgClass, i2.NgControlStatus, i2.NgModel, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.MjRecordFormContainerComponent, i5.CodeEditorComponent, i6.LoadingComponent, i1.DecimalPipe, i1.DatePipe], styles: [".ai-agent-session-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.target-arrow[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.conversation-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.conversation-pill[_ngcontent-%COMP%] .pill-action[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.6;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Active\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Idle\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Closed\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.configuration-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n flex-wrap: wrap;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.mono[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 13px;\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n.tab-count[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.tab-content[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n.run-tree[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-width: 1000px;\n}\n\n.run-node[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 14px 18px;\n box-shadow: var(--mj-shadow-sm);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.run-node[_ngcontent-%COMP%]:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-border-default));\n transform: translateX(2px);\n}\n\n.run-node--child[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n}\n\n.run-marker[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.run-marker--coagent[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.run-marker--prompt[_ngcontent-%COMP%] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.run-body[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-headrow[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.run-time[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.run-sub[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-foot[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.run-status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.run-status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.run-status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.run-status[data-status=\"Cancelled\"][_ngcontent-%COMP%], \n.run-status[data-status=\"AwaitingFeedback\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.run-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 12px;\n padding: 2px 10px;\n}\n\n\n\n.channels-grid-wrap[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: auto;\n}\n\n.channels-grid[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13.5px;\n}\n\n.channels-grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 10px 14px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.channels-grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n vertical-align: middle;\n}\n\n.channels-grid[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.channels-grid[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.channels-grid[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.cell-strong[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.cell-strong[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.transport-pill[_ngcontent-%COMP%], \n.channel-status-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.transport-pill[data-transport=\"WebRTC\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n border-color: color-mix(in srgb, var(--mj-status-info) 25%, transparent);\n}\n\n.transport-pill[data-transport=\"WebSocket\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Connected\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Connecting\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n border-color: color-mix(in srgb, var(--mj-status-info) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n.socket-cell[_ngcontent-%COMP%] {\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.transcript-thread[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n max-width: 860px;\n margin: 0 auto;\n}\n\n.turn[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.turn--user[_ngcontent-%COMP%] {\n flex-direction: row-reverse;\n}\n\n.turn-avatar[_ngcontent-%COMP%] {\n width: 34px;\n height: 34px;\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.turn--user[_ngcontent-%COMP%] .turn-avatar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-default);\n}\n\n.turn--error[_ngcontent-%COMP%] .turn-avatar[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 25%, transparent);\n}\n\n.turn-main[_ngcontent-%COMP%] {\n max-width: 70%;\n min-width: 0;\n}\n\n.turn--user[_ngcontent-%COMP%] .turn-main[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.turn-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.turn-time[_ngcontent-%COMP%] {\n font-weight: 400;\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.turn-bubble[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n border-top-left-radius: 4px;\n padding: 10px 14px;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.turn--user[_ngcontent-%COMP%] .turn-bubble[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 12px;\n border-top-right-radius: 4px;\n}\n\n.turn--error[_ngcontent-%COMP%] .turn-bubble[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 25%, transparent);\n color: var(--mj-status-error-text);\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n cursor: pointer;\n}\n\n.entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .turn-main[_ngcontent-%COMP%] {\n max-width: 90%;\n }\n}"] }); }
|
|
1180
|
+
};
|
|
1181
|
+
MJAIAgentSessionFormComponentExtended = __decorate([
|
|
1182
|
+
RegisterClass(BaseFormComponent, 'MJ: AI Agent Sessions')
|
|
1183
|
+
], MJAIAgentSessionFormComponentExtended);
|
|
1184
|
+
export { MJAIAgentSessionFormComponentExtended };
|
|
1185
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentSessionFormComponentExtended, [{
|
|
1186
|
+
type: Component,
|
|
1187
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-session-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <div class=\"record-form ai-agent-session-form\">\n <!-- Header (mirrors the AI Agent Run form header) -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-tower-broadcast\"></i>\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Session</h2>\n <div class=\"meta-info\">\n @if (record.AgentID) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('AI Agents', record.AgentID)\">\n {{ record.Agent || 'Agent' }}\n </a>\n </span>\n }\n @if (TargetAgentID) {\n <i class=\"fas fa-arrow-right-long target-arrow\"></i>\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('AI Agents', TargetAgentID)\">\n {{ TargetAgentName || 'Target agent' }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ ShortSessionId }}</span>\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"NavigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>{{ record.Conversation || 'Conversation' }}</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"GetStatusIcon(record.Status)\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"RefreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">User</span>\n <span class=\"value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('Users', record.UserID)\">{{ record.User }}</a>\n </span>\n </div>\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.__mj_CreatedAt | date:'medium' }}</span>\n </div>\n @if (record.ClosedAt) {\n <div class=\"stat\">\n <span class=\"label\">Closed</span>\n <span class=\"value\">{{ record.ClosedAt | date:'medium' }}</span>\n </div>\n } @else {\n <div class=\"stat\">\n <span class=\"label\">Last Active</span>\n <span class=\"value\">{{ record.LastActiveAt | date:'medium' }}</span>\n </div>\n }\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ SessionDuration }}</span>\n </div>\n <div class=\"stat\">\n <span class=\"label\">Channels</span>\n <span class=\"value\">{{ Channels.length }}</span>\n </div>\n <div class=\"stat\">\n <span class=\"label\">Delegated Runs</span>\n <span class=\"value\">{{ DelegatedRunCount }}</span>\n </div>\n @if (SessionTokens != null && SessionTokens > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n <span class=\"value\">{{ SessionTokens | number:'1.0-0' }}</span>\n </div>\n }\n @if (SessionCost != null && SessionCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n <span class=\"value success\">${{ SessionCost | number:'1.2-4' }}</span>\n </div>\n }\n </div>\n\n <!-- Config bar: target agent / host instance / continuation -->\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-bullseye\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Target Agent</div>\n <div class=\"config-value\">\n @if (TargetAgentID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('AI Agents', TargetAgentID)\">\n {{ TargetAgentName || 'Unknown' }}\n </a>\n } @else {\n <span class=\"muted\">None</span>\n }\n </div>\n </div>\n </div>\n <div class=\"config-item\">\n <i class=\"fas fa-server\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Host Instance</div>\n <div class=\"config-value mono\">{{ record.HostInstanceID || '\u2014' }}</div>\n </div>\n </div>\n <div class=\"config-item\">\n <i class=\"fas fa-link\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Continuation</div>\n <div class=\"config-value\">\n @if (record.LastSessionID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('MJ: AI Agent Sessions', record.LastSessionID)\">\n Resumed from prior session\n </a>\n } @else {\n <span class=\"muted\">None (new session)</span>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"ActiveTab === 'runs'\" (click)=\"ChangeTab('runs')\">\n <i class=\"fas fa-diagram-project\"></i> Runs\n @if (RunTree.length > 0) { <span class=\"tab-count\">{{ RunTree.length }}</span> }\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'channels'\" (click)=\"ChangeTab('channels')\">\n <i class=\"fas fa-plug\"></i> Channels\n @if (Channels.length > 0) { <span class=\"tab-count\">{{ Channels.length }}</span> }\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'transcript'\" (click)=\"ChangeTab('transcript')\">\n <i class=\"fas fa-comments\"></i> Transcript\n @if (Transcript.length > 0) { <span class=\"tab-count\">{{ Transcript.length }}</span> }\n </button>\n <button class=\"tab\" [class.active]=\"ActiveTab === 'details'\" (click)=\"ChangeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n @if (Loading) {\n <mj-loading text=\"Loading session data...\" size=\"medium\"></mj-loading>\n } @else if (LoadError) {\n <div class=\"error-state\">\n <i class=\"fas fa-exclamation-triangle fa-2x\"></i>\n <p>{{ LoadError }}</p>\n </div>\n } @else {\n\n <!-- Runs tab: the session's delegated run tree -->\n @if (ActiveTab === 'runs') {\n <div class=\"tab-content\">\n @if (RunTree.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fas fa-diagram-project fa-2x\"></i>\n <h4>No Runs</h4>\n <p>No agent runs have been recorded for this session yet.</p>\n </div>\n } @else {\n <div class=\"run-tree\">\n @for (node of RunTree; track node.id) {\n <div class=\"run-node\"\n [class.run-node--child]=\"node.depth > 0\"\n [style.margin-left.px]=\"node.depth * 36\"\n (click)=\"OpenEntityRecord(node.entityName, node.id)\"\n title=\"Open record\">\n <div class=\"run-marker\"\n [class.run-marker--coagent]=\"node.isCoAgentRun\"\n [class.run-marker--prompt]=\"node.kind === 'promptRun'\">\n @if (node.kind === 'promptRun') {\n <i class=\"fas fa-microchip\"></i>\n } @else if (node.isCoAgentRun) {\n <i class=\"fas fa-tower-broadcast\"></i>\n } @else {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"run-body\">\n <div class=\"run-headrow\">\n <h4 class=\"run-title\">{{ node.title }}</h4>\n <span class=\"run-time\">{{ node.startedAt | date:'h:mm:ss a' }}</span>\n </div>\n <div class=\"run-sub\">{{ node.subtitle }}</div>\n <div class=\"run-foot\">\n <span class=\"run-status\" [attr.data-status]=\"node.status\">\n <i class=\"fas\" [ngClass]=\"GetRunStatusIcon(node.status)\"></i> {{ node.status }}\n </span>\n <span class=\"run-chip\">\n <i class=\"fas fa-clock\"></i> {{ FormatDuration(node.startedAt, node.completedAt) }}\n </span>\n @if (node.tokens != null && node.tokens > 0) {\n <span class=\"run-chip\"><i class=\"fas fa-coins\"></i> {{ node.tokens | number:'1.0-0' }} tok</span>\n }\n @if (node.cost != null && node.cost > 0) {\n <span class=\"run-chip\"><i class=\"fas fa-dollar-sign\"></i> {{ node.cost | number:'1.2-4' }}</span>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Channels tab -->\n @if (ActiveTab === 'channels') {\n <div class=\"tab-content\">\n @if (Channels.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fas fa-plug fa-2x\"></i>\n <h4>No Channels</h4>\n <p>No channel instances were attached to this session.</p>\n </div>\n } @else {\n <div class=\"channels-grid-wrap\">\n <table class=\"channels-grid\">\n <thead>\n <tr>\n <th>Channel</th>\n <th>Transport</th>\n <th>Status</th>\n <th>Connected</th>\n <th>Last Active</th>\n <th>Disconnected</th>\n <th>Socket</th>\n </tr>\n </thead>\n <tbody>\n @for (channel of Channels; track channel.row.ID) {\n <tr (click)=\"OpenEntityRecord('MJ: AI Agent Session Channels', channel.row.ID)\" title=\"Open record\">\n <td>\n <span class=\"cell-strong\">\n <i class=\"fas\" [ngClass]=\"GetChannelIcon(channel.row.Channel)\"></i>\n {{ channel.row.Channel }}\n </span>\n </td>\n <td>\n @if (channel.transportType) {\n <span class=\"transport-pill\" [attr.data-transport]=\"channel.transportType\">{{ channel.transportType }}</span>\n } @else {\n <span class=\"muted\">\u2014</span>\n }\n </td>\n <td>\n <span class=\"channel-status-pill\" [attr.data-status]=\"channel.row.Status\">{{ channel.row.Status }}</span>\n </td>\n <td class=\"mono\">{{ channel.row.__mj_CreatedAt | date:'h:mm:ss a' }}</td>\n <td class=\"mono\">{{ channel.row.LastActiveAt | date:'h:mm:ss a' }}</td>\n <td class=\"mono\">\n @if (channel.row.DisconnectedAt) {\n {{ channel.row.DisconnectedAt | date:'h:mm:ss a' }}\n } @else {\n <span class=\"muted\">\u2014</span>\n }\n </td>\n <td class=\"mono socket-cell\" [title]=\"channel.row.SocketUrl || ''\">\n {{ channel.row.SocketUrl || '\u2014' }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n <!-- Transcript tab -->\n @if (ActiveTab === 'transcript') {\n <div class=\"tab-content\">\n @if (Transcript.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fas fa-comments fa-2x\"></i>\n <h4>No Transcript</h4>\n <p>No conversation messages were stamped with this session.</p>\n </div>\n } @else {\n <div class=\"transcript-thread\">\n @for (turn of Transcript; track turn.ID) {\n <div class=\"turn\" [class.turn--user]=\"turn.Role === 'User'\" [class.turn--error]=\"turn.Role === 'Error'\">\n <div class=\"turn-avatar\">\n @if (turn.Role === 'User') {\n <i class=\"fas fa-user\"></i>\n } @else if (turn.Role === 'Error') {\n <i class=\"fas fa-triangle-exclamation\"></i>\n } @else {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"turn-main\">\n <div class=\"turn-meta\">\n @if (turn.Role === 'User') {\n {{ turn.User || 'User' }}\n } @else {\n {{ turn.Agent || 'Agent' }}\n }\n <span class=\"turn-time\">{{ turn.__mj_CreatedAt | date:'h:mm:ss a' }}</span>\n </div>\n <div class=\"turn-bubble\">{{ turn.Message }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Details tab -->\n @if (ActiveTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> Session Record\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>ID</label>\n <span class=\"mono\">{{ record.ID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Agent (Co-Agent)</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('AI Agents', record.AgentID)\">\n {{ record.Agent || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('Users', record.UserID)\">\n {{ record.User }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.Conversation || record.ConversationID }}\n </a>\n } @else {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"record.Status\">{{ record.Status }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prior Session</label>\n <span>\n @if (record.LastSessionID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"OpenEntityRecord('MJ: AI Agent Sessions', record.LastSessionID)\">\n {{ record.LastSessionID }}\n </a>\n } @else {\n <span>None (root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Host Instance</label>\n <span class=\"mono\">{{ record.HostInstanceID || 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Last Active At</label>\n <span>{{ record.LastActiveAt | date:'medium' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Closed At</label>\n <span>{{ record.ClosedAt ? (record.ClosedAt | date:'medium') : 'Still open' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n\n @if (record.Config_) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Config (Session State JSON)\n </ng-template>\n <div class=\"config-viewer\">\n <mj-code-editor\n [ngModel]=\"PrettyConfig\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n }\n </div>\n </div>\n</mj-record-form-container>\n}\n", styles: [".ai-agent-session-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* \u2500\u2500 Header (mirrors the AI Agent Run form) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n\n.agent-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.target-arrow {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.conversation-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.conversation-pill .pill-action {\n font-size: 9px;\n opacity: 0.6;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Active\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Idle\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Closed\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat .value.success {\n color: var(--mj-status-success);\n}\n\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n flex-wrap: wrap;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.muted {\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.mono {\n font-family: monospace;\n font-size: 13px;\n}\n\n/* \u2500\u2500 Tabs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n.tab-count {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.tab.active .tab-count {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Content area \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.content-area {\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content {\n padding: 20px;\n}\n\n.tab-content mj-accordion-panel {\n display: block;\n margin-bottom: 8px;\n}\n\n.empty-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* \u2500\u2500 Run tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.run-tree {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-width: 1000px;\n}\n\n.run-node {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 14px 18px;\n box-shadow: var(--mj-shadow-sm);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.run-node:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-border-default));\n transform: translateX(2px);\n}\n\n.run-node--child {\n background: var(--mj-bg-surface-card);\n}\n\n.run-marker {\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.run-marker--coagent {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.run-marker--prompt {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.run-body {\n flex: 1;\n min-width: 0;\n}\n\n.run-headrow {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.run-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.run-time {\n font-size: 12px;\n font-family: monospace;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n.run-sub {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-foot {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 8px;\n flex-wrap: wrap;\n}\n\n.run-status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.run-status[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.run-status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.run-status[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.run-status[data-status=\"Cancelled\"],\n.run-status[data-status=\"AwaitingFeedback\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.run-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 12px;\n padding: 2px 10px;\n}\n\n/* \u2500\u2500 Channels grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.channels-grid-wrap {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: auto;\n}\n\n.channels-grid {\n width: 100%;\n border-collapse: collapse;\n font-size: 13.5px;\n}\n\n.channels-grid th {\n text-align: left;\n padding: 10px 14px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n}\n\n.channels-grid td {\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n vertical-align: middle;\n}\n\n.channels-grid tbody tr {\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.channels-grid tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.channels-grid tbody tr:last-child td {\n border-bottom: none;\n}\n\n.cell-strong {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.cell-strong i {\n color: var(--mj-brand-primary);\n}\n\n.transport-pill,\n.channel-status-pill {\n display: inline-flex;\n align-items: center;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n}\n\n.transport-pill[data-transport=\"WebRTC\"] {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n border-color: color-mix(in srgb, var(--mj-status-info) 25%, transparent);\n}\n\n.transport-pill[data-transport=\"WebSocket\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Connected\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Connecting\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n border-color: color-mix(in srgb, var(--mj-status-info) 25%, transparent);\n}\n\n.channel-status-pill[data-status=\"Paused\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n.socket-cell {\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u2500\u2500 Transcript \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.transcript-thread {\n display: flex;\n flex-direction: column;\n gap: 16px;\n max-width: 860px;\n margin: 0 auto;\n}\n\n.turn {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.turn--user {\n flex-direction: row-reverse;\n}\n\n.turn-avatar {\n width: 34px;\n height: 34px;\n flex-shrink: 0;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.turn--user .turn-avatar {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-default);\n}\n\n.turn--error .turn-avatar {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 25%, transparent);\n}\n\n.turn-main {\n max-width: 70%;\n min-width: 0;\n}\n\n.turn--user .turn-main {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.turn-meta {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.turn-time {\n font-weight: 400;\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.turn-bubble {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n border-top-left-radius: 4px;\n padding: 10px 14px;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.turn--user .turn-bubble {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 12px;\n border-top-right-radius: 4px;\n}\n\n.turn--error .turn-bubble {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 25%, transparent);\n color: var(--mj-status-error-text);\n}\n\n/* \u2500\u2500 Details tab \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-viewer {\n padding: 20px;\n}\n\n/* \u2500\u2500 Shared entity link \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n cursor: pointer;\n}\n\n.entity-link:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .turn-main {\n max-width: 90%;\n }\n}\n"] }]
|
|
1188
|
+
}], null, null); })();
|
|
1189
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentSessionFormComponentExtended, { className: "MJAIAgentSessionFormComponentExtended", filePath: "src/lib/custom/AIAgentSessions/ai-agent-session-form.component.ts", lineNumber: 118 }); })();
|
|
1190
|
+
//# sourceMappingURL=ai-agent-session-form.component.js.map
|