@memberjunction/ng-core-entity-forms 6.2.0 → 6.3.0-edge.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/README.md +5 -6
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -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 +862 -812
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +821 -763
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +502 -453
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +3 -3
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +836 -801
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +355 -338
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +493 -444
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +118 -74
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +471 -451
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +3 -3
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +276 -216
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -1
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +44 -36
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +452 -443
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +2 -2
- package/dist/lib/shared/phone-hero.d.ts +17 -0
- package/dist/lib/shared/phone-hero.d.ts.map +1 -0
- package/dist/lib/shared/phone-hero.js +30 -0
- package/dist/lib/shared/phone-hero.js.map +1 -0
- package/dist/lib/shared/phone-sections-state.d.ts +28 -0
- package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
- package/dist/lib/shared/phone-sections-state.js +38 -0
- package/dist/lib/shared/phone-sections-state.js.map +1 -0
- package/package.json +50 -50
|
@@ -23,6 +23,7 @@ import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
|
23
23
|
import { ActionEngineBase } from '@memberjunction/actions-base';
|
|
24
24
|
import { PromptSelectorDialogComponent } from './prompt-selector-dialog.component';
|
|
25
25
|
import { CreateAgentService } from '@memberjunction/ng-agents';
|
|
26
|
+
import { JoinHeroSummary } from '../../shared/phone-hero';
|
|
26
27
|
import * as i0 from "@angular/core";
|
|
27
28
|
import * as i1 from "@angular/forms";
|
|
28
29
|
import * as i2 from "@memberjunction/ng-ui-components";
|
|
@@ -41,7 +42,7 @@ const _forTrack2 = ($index, $item) => $item.agent.ID;
|
|
|
41
42
|
const _forTrack3 = ($index, $item) => $item.ScopeID;
|
|
42
43
|
const _forTrack4 = ($index, $item) => $item.Principal + $item.Level;
|
|
43
44
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
-
i0.ɵɵelement(0, "img",
|
|
45
|
+
i0.ɵɵelement(0, "img", 15);
|
|
45
46
|
} if (rf & 2) {
|
|
46
47
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
47
48
|
i0.ɵɵproperty("src", ctx_r1.record.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.record.Name + " logo");
|
|
@@ -54,7 +55,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
54
55
|
} }
|
|
55
56
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
56
57
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
57
|
-
i0.ɵɵelementStart(0, "input",
|
|
58
|
+
i0.ɵɵelementStart(0, "input", 28);
|
|
58
59
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
59
60
|
i0.ɵɵelementEnd();
|
|
60
61
|
} if (rf & 2) {
|
|
@@ -62,7 +63,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
62
63
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
63
64
|
} }
|
|
64
65
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
i0.ɵɵelementStart(0, "h1",
|
|
66
|
+
i0.ɵɵelementStart(0, "h1", 19);
|
|
66
67
|
i0.ɵɵtext(1);
|
|
67
68
|
i0.ɵɵelementEnd();
|
|
68
69
|
} if (rf & 2) {
|
|
@@ -71,8 +72,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
71
72
|
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled AI Agent");
|
|
72
73
|
} }
|
|
73
74
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
-
i0.ɵɵelementStart(0, "span",
|
|
75
|
-
i0.ɵɵelement(1, "i",
|
|
75
|
+
i0.ɵɵelementStart(0, "span", 29);
|
|
76
|
+
i0.ɵɵelement(1, "i", 30);
|
|
76
77
|
i0.ɵɵtext(2);
|
|
77
78
|
i0.ɵɵelementEnd();
|
|
78
79
|
} if (rf & 2) {
|
|
@@ -82,7 +83,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
82
83
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
83
84
|
} }
|
|
84
85
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
85
|
-
i0.ɵɵelementStart(0, "span",
|
|
86
|
+
i0.ɵɵelementStart(0, "span", 22);
|
|
86
87
|
i0.ɵɵtext(1);
|
|
87
88
|
i0.ɵɵelementEnd();
|
|
88
89
|
} if (rf & 2) {
|
|
@@ -92,11 +93,11 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
92
93
|
} }
|
|
93
94
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
94
95
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
95
|
-
i0.ɵɵelementStart(0, "span",
|
|
96
|
+
i0.ɵɵelementStart(0, "span", 31);
|
|
96
97
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_14_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToParentAgent()); });
|
|
97
|
-
i0.ɵɵelement(1, "i",
|
|
98
|
+
i0.ɵɵelement(1, "i", 32);
|
|
98
99
|
i0.ɵɵtext(2);
|
|
99
|
-
i0.ɵɵelement(3, "i",
|
|
100
|
+
i0.ɵɵelement(3, "i", 33);
|
|
100
101
|
i0.ɵɵelementEnd();
|
|
101
102
|
} if (rf & 2) {
|
|
102
103
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -106,14 +107,14 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
106
107
|
} }
|
|
107
108
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
108
109
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
109
|
-
i0.ɵɵelementStart(0, "button",
|
|
110
|
+
i0.ɵɵelementStart(0, "button", 34);
|
|
110
111
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
111
|
-
i0.ɵɵelement(1, "i",
|
|
112
|
+
i0.ɵɵelement(1, "i", 35);
|
|
112
113
|
i0.ɵɵtext(2, " Run ");
|
|
113
114
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(3, "button",
|
|
115
|
+
i0.ɵɵelementStart(3, "button", 36);
|
|
115
116
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openPermissionsDialog()); });
|
|
116
|
-
i0.ɵɵelement(4, "i",
|
|
117
|
+
i0.ɵɵelement(4, "i", 37);
|
|
117
118
|
i0.ɵɵtext(5);
|
|
118
119
|
i0.ɵɵelementEnd();
|
|
119
120
|
} if (rf & 2) {
|
|
@@ -127,30 +128,48 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_
|
|
|
127
128
|
i0.ɵɵadvance();
|
|
128
129
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.IsOpenToEveryone ? "Open" : "Restricted", " ");
|
|
129
130
|
} }
|
|
131
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
133
|
+
i0.ɵɵelementStart(0, "button", 38);
|
|
134
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleHeroDetails()); });
|
|
135
|
+
i0.ɵɵelementStart(1, "span", 39);
|
|
136
|
+
i0.ɵɵtext(2);
|
|
137
|
+
i0.ɵɵelementEnd();
|
|
138
|
+
i0.ɵɵelement(3, "i", 40);
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
} if (rf & 2) {
|
|
141
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
142
|
+
i0.ɵɵattribute("aria-expanded", ctx_r1.HeroDetailsOpen);
|
|
143
|
+
i0.ɵɵadvance(2);
|
|
144
|
+
i0.ɵɵtextInterpolate(ctx_r1.HeroSummary);
|
|
145
|
+
} }
|
|
130
146
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
131
147
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
132
|
-
i0.ɵɵelementStart(0, "div",
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "button", 11);
|
|
133
149
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleHeaderCollapsed()); });
|
|
134
|
-
i0.ɵɵelement(3, "i",
|
|
150
|
+
i0.ɵɵelement(3, "i", 12);
|
|
135
151
|
i0.ɵɵelementEnd();
|
|
136
|
-
i0.ɵɵelementStart(4, "div",
|
|
137
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_6_Template, 1, 2, "img",
|
|
152
|
+
i0.ɵɵelementStart(4, "div", 13)(5, "div", 14);
|
|
153
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_6_Template, 1, 2, "img", 15)(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_7_Template, 1, 2, "i", 16);
|
|
138
154
|
i0.ɵɵelementEnd();
|
|
139
|
-
i0.ɵɵelementStart(8, "div",
|
|
140
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_9_Template, 1, 1, "input",
|
|
141
|
-
i0.ɵɵelementStart(11, "div",
|
|
142
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_12_Template, 3, 3, "span",
|
|
143
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_13_Template, 2, 1, "span",
|
|
144
|
-
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_14_Template, 4, 3, "span",
|
|
155
|
+
i0.ɵɵelementStart(8, "div", 17);
|
|
156
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_9_Template, 1, 1, "input", 18)(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_10_Template, 2, 1, "h1", 19);
|
|
157
|
+
i0.ɵɵelementStart(11, "div", 20);
|
|
158
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_12_Template, 3, 3, "span", 21);
|
|
159
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_13_Template, 2, 1, "span", 22);
|
|
160
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_14_Template, 4, 3, "span", 23);
|
|
145
161
|
i0.ɵɵelementEnd()()();
|
|
146
|
-
i0.ɵɵelementStart(15, "div",
|
|
162
|
+
i0.ɵɵelementStart(15, "div", 24);
|
|
147
163
|
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_16_Template, 6, 9);
|
|
148
|
-
i0.ɵɵelementStart(17, "button",
|
|
164
|
+
i0.ɵɵelementStart(17, "button", 25);
|
|
149
165
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
150
|
-
i0.ɵɵelement(18, "i",
|
|
151
|
-
i0.ɵɵelementEnd()()()
|
|
166
|
+
i0.ɵɵelement(18, "i", 26);
|
|
167
|
+
i0.ɵɵelementEnd()()();
|
|
168
|
+
i0.ɵɵconditionalCreate(19, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_19_Template, 4, 2, "button", 27);
|
|
169
|
+
i0.ɵɵelementEnd();
|
|
152
170
|
} if (rf & 2) {
|
|
153
171
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
172
|
+
i0.ɵɵclassProp("hero-view", !ctx_r1.EditMode)("hero-compact", !ctx_r1.EditMode && !ctx_r1.HeroDetailsOpen);
|
|
154
173
|
i0.ɵɵadvance(6);
|
|
155
174
|
i0.ɵɵconditional(ctx_r1.hasLogoURL() ? 6 : 7);
|
|
156
175
|
i0.ɵɵadvance(3);
|
|
@@ -163,9 +182,11 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template(rf,
|
|
|
163
182
|
i0.ɵɵconditional(ctx_r1.record.Parent ? 14 : -1);
|
|
164
183
|
i0.ɵɵadvance(2);
|
|
165
184
|
i0.ɵɵconditional(ctx_r1.record.ID ? 16 : -1);
|
|
185
|
+
i0.ɵɵadvance(3);
|
|
186
|
+
i0.ɵɵconditional(!ctx_r1.EditMode && ctx_r1.HeroSummary ? 19 : -1);
|
|
166
187
|
} }
|
|
167
188
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
-
i0.ɵɵelementStart(0, "span",
|
|
189
|
+
i0.ɵɵelementStart(0, "span", 47);
|
|
169
190
|
i0.ɵɵtext(1);
|
|
170
191
|
i0.ɵɵelementEnd();
|
|
171
192
|
} if (rf & 2) {
|
|
@@ -175,14 +196,14 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_
|
|
|
175
196
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
176
197
|
} }
|
|
177
198
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
-
const
|
|
179
|
-
i0.ɵɵelementStart(0, "button",
|
|
180
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
181
|
-
i0.ɵɵelement(1, "i",
|
|
199
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
200
|
+
i0.ɵɵelementStart(0, "button", 48);
|
|
201
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
202
|
+
i0.ɵɵelement(1, "i", 35);
|
|
182
203
|
i0.ɵɵelementEnd();
|
|
183
|
-
i0.ɵɵelementStart(2, "button",
|
|
184
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template_button_click_2_listener() { i0.ɵɵrestoreView(
|
|
185
|
-
i0.ɵɵelement(3, "i",
|
|
204
|
+
i0.ɵɵelementStart(2, "button", 49);
|
|
205
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openPermissionsDialog()); });
|
|
206
|
+
i0.ɵɵelement(3, "i", 37);
|
|
186
207
|
i0.ɵɵelementEnd();
|
|
187
208
|
} if (rf & 2) {
|
|
188
209
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -194,20 +215,20 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_
|
|
|
194
215
|
i0.ɵɵclassProp("fa-lock-open", ctx_r1.IsOpenToEveryone)("fa-lock", !ctx_r1.IsOpenToEveryone);
|
|
195
216
|
} }
|
|
196
217
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
197
|
-
const
|
|
198
|
-
i0.ɵɵelementStart(0, "div", 7)(1, "button",
|
|
199
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
200
|
-
i0.ɵɵelement(2, "i",
|
|
218
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 7)(1, "button", 41);
|
|
220
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleHeaderCollapsed()); });
|
|
221
|
+
i0.ɵɵelement(2, "i", 42);
|
|
201
222
|
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(3, "span",
|
|
223
|
+
i0.ɵɵelementStart(3, "span", 43);
|
|
203
224
|
i0.ɵɵtext(4);
|
|
204
225
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_5_Template, 2, 3, "span",
|
|
206
|
-
i0.ɵɵelement(6, "div",
|
|
226
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_5_Template, 2, 3, "span", 44);
|
|
227
|
+
i0.ɵɵelement(6, "div", 45);
|
|
207
228
|
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Conditional_7_Template, 4, 8);
|
|
208
|
-
i0.ɵɵelementStart(8, "button",
|
|
209
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template_button_click_8_listener() { i0.ɵɵrestoreView(
|
|
210
|
-
i0.ɵɵelement(9, "i",
|
|
229
|
+
i0.ɵɵelementStart(8, "button", 46);
|
|
230
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
231
|
+
i0.ɵɵelement(9, "i", 26);
|
|
211
232
|
i0.ɵɵelementEnd()();
|
|
212
233
|
} if (rf & 2) {
|
|
213
234
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -220,28 +241,33 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template(rf,
|
|
|
220
241
|
} }
|
|
221
242
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
222
243
|
i0.ɵɵelementStart(0, "div", 8);
|
|
223
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
244
|
+
i0.ɵɵelement(1, "mj-loading", 50);
|
|
224
245
|
i0.ɵɵelementEnd();
|
|
225
246
|
} }
|
|
226
247
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
const
|
|
228
|
-
i0.ɵɵelementStart(0, "div",
|
|
229
|
-
i0.ɵɵlistener("
|
|
248
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
249
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "mj-section-picker", 151);
|
|
250
|
+
i0.ɵɵlistener("ActiveKeyChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template_mj_section_picker_ActiveKeyChange_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnSectionPicked($event)); });
|
|
251
|
+
i0.ɵɵelementEnd();
|
|
252
|
+
i0.ɵɵelementStart(2, "mj-tab-nav", 152);
|
|
253
|
+
i0.ɵɵlistener("TabChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template_mj_tab_nav_TabChange_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnFormTabChange($event)); });
|
|
230
254
|
i0.ɵɵelementEnd()();
|
|
231
255
|
} if (rf & 2) {
|
|
232
256
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
233
257
|
i0.ɵɵadvance();
|
|
258
|
+
i0.ɵɵproperty("Items", ctx_r1.SectionPickerItems)("ActiveKey", ctx_r1.ActiveFormTab || "");
|
|
259
|
+
i0.ɵɵadvance();
|
|
234
260
|
i0.ɵɵproperty("Tabs", ctx_r1.FormTabs)("ActiveKey", ctx_r1.ActiveFormTab || "");
|
|
235
261
|
} }
|
|
236
262
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
237
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
263
|
+
i0.ɵɵelement(0, "mj-loading", 154);
|
|
238
264
|
} if (rf & 2) {
|
|
239
265
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
240
266
|
i0.ɵɵproperty("text", i0.ɵɵinterpolate1("Loading ", ctx_r1.agentType == null ? null : ctx_r1.agentType.Name, " configuration..."));
|
|
241
267
|
} }
|
|
242
268
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
243
|
-
i0.ɵɵelementStart(0, "div",
|
|
244
|
-
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Conditional_1_Template, 1, 2, "mj-loading",
|
|
269
|
+
i0.ɵɵelementStart(0, "div", 153);
|
|
270
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Conditional_1_Template, 1, 2, "mj-loading", 154);
|
|
245
271
|
i0.ɵɵelementContainer(2, null, 1);
|
|
246
272
|
i0.ɵɵelementEnd();
|
|
247
273
|
} if (rf & 2) {
|
|
@@ -251,12 +277,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
251
277
|
i0.ɵɵconditional(ctx_r1.loadingStates.customSection ? 1 : -1);
|
|
252
278
|
} }
|
|
253
279
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
-
const
|
|
255
|
-
i0.ɵɵelementStart(0, "div",
|
|
256
|
-
i0.ɵɵlistener("RecordOpenRequested", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template_mj_agent_invocations_RecordOpenRequested_1_listener($event) { i0.ɵɵrestoreView(
|
|
280
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
281
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "mj-agent-invocations", 156);
|
|
282
|
+
i0.ɵɵlistener("RecordOpenRequested", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template_mj_agent_invocations_RecordOpenRequested_1_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnInvocationOpenRequested($event)); });
|
|
257
283
|
i0.ɵɵelementEnd()();
|
|
258
|
-
i0.ɵɵelementStart(2, "div",
|
|
259
|
-
i0.ɵɵelement(3, "mj-agent-rubrics",
|
|
284
|
+
i0.ɵɵelementStart(2, "div", 157);
|
|
285
|
+
i0.ɵɵelement(3, "mj-agent-rubrics", 158);
|
|
260
286
|
i0.ɵɵelementEnd();
|
|
261
287
|
} if (rf & 2) {
|
|
262
288
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -270,7 +296,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
270
296
|
} }
|
|
271
297
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
272
298
|
i0.ɵɵelementStart(0, "span");
|
|
273
|
-
i0.ɵɵelement(1, "i",
|
|
299
|
+
i0.ɵɵelement(1, "i", 162);
|
|
274
300
|
i0.ɵɵelementEnd();
|
|
275
301
|
} }
|
|
276
302
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -293,7 +319,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
293
319
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount < ctx_r1.totalExecutionHistoryCount ? 2 : -1);
|
|
294
320
|
} }
|
|
295
321
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
296
|
-
i0.ɵɵelement(0, "i",
|
|
322
|
+
i0.ɵɵelement(0, "i", 161);
|
|
297
323
|
i0.ɵɵtext(1, " Execution History ");
|
|
298
324
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_3_Template, 4, 2, "span");
|
|
299
325
|
} if (rf & 2) {
|
|
@@ -302,7 +328,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
302
328
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 2 : ctx_r1.executionHistoryCount > 0 ? 3 : -1);
|
|
303
329
|
} }
|
|
304
330
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
-
i0.ɵɵelementStart(0, "span",
|
|
331
|
+
i0.ɵɵelementStart(0, "span", 165);
|
|
306
332
|
i0.ɵɵtext(1);
|
|
307
333
|
i0.ɵɵelementEnd();
|
|
308
334
|
} if (rf & 2) {
|
|
@@ -311,7 +337,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
311
337
|
i0.ɵɵtextInterpolate(ctx_r1.totalExecutionHistoryCount);
|
|
312
338
|
} }
|
|
313
339
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
314
|
-
i0.ɵɵelementStart(0, "span",
|
|
340
|
+
i0.ɵɵelementStart(0, "span", 165);
|
|
315
341
|
i0.ɵɵtext(1);
|
|
316
342
|
i0.ɵɵelementEnd();
|
|
317
343
|
} if (rf & 2) {
|
|
@@ -320,18 +346,18 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
320
346
|
i0.ɵɵtextInterpolate(ctx_r1.totalSessionCount);
|
|
321
347
|
} }
|
|
322
348
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
323
|
-
const
|
|
324
|
-
i0.ɵɵelementStart(0, "div",
|
|
325
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
326
|
-
i0.ɵɵelement(2, "i",
|
|
349
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
350
|
+
i0.ɵɵelementStart(0, "div", 160)(1, "button", 163);
|
|
351
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("runs")); });
|
|
352
|
+
i0.ɵɵelement(2, "i", 164);
|
|
327
353
|
i0.ɵɵtext(3, " Runs ");
|
|
328
|
-
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template, 2, 1, "span",
|
|
354
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template, 2, 1, "span", 165);
|
|
329
355
|
i0.ɵɵelementEnd();
|
|
330
|
-
i0.ɵɵelementStart(5, "button",
|
|
331
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
332
|
-
i0.ɵɵelement(6, "i",
|
|
356
|
+
i0.ɵɵelementStart(5, "button", 163);
|
|
357
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("sessions")); });
|
|
358
|
+
i0.ɵɵelement(6, "i", 166);
|
|
333
359
|
i0.ɵɵtext(7, " Sessions ");
|
|
334
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template, 2, 1, "span",
|
|
360
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template, 2, 1, "span", 165);
|
|
335
361
|
i0.ɵɵelementEnd()();
|
|
336
362
|
} if (rf & 2) {
|
|
337
363
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -345,131 +371,131 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
345
371
|
i0.ɵɵconditional(ctx_r1.totalSessionCount > 0 ? 8 : -1);
|
|
346
372
|
} }
|
|
347
373
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
348
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
374
|
+
i0.ɵɵelement(0, "mj-loading", 167);
|
|
349
375
|
} }
|
|
350
376
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
351
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
377
|
+
i0.ɵɵelement(0, "mj-empty-state", 168);
|
|
352
378
|
} }
|
|
353
379
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
354
|
-
i0.ɵɵelementStart(0, "span",
|
|
380
|
+
i0.ɵɵelementStart(0, "span", 178);
|
|
355
381
|
i0.ɵɵtext(1, "as co-agent");
|
|
356
382
|
i0.ɵɵelementEnd();
|
|
357
383
|
} }
|
|
358
384
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
359
|
-
i0.ɵɵelementStart(0, "span",
|
|
385
|
+
i0.ɵɵelementStart(0, "span", 179);
|
|
360
386
|
i0.ɵɵtext(1, "as target");
|
|
361
387
|
i0.ɵɵelementEnd();
|
|
362
388
|
} }
|
|
363
389
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
-
i0.ɵɵelementStart(0, "div",
|
|
365
|
-
i0.ɵɵelement(1, "i",
|
|
366
|
-
i0.ɵɵelementStart(2, "span",
|
|
390
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
391
|
+
i0.ɵɵelement(1, "i", 192);
|
|
392
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
367
393
|
i0.ɵɵtext(3, "Target:");
|
|
368
394
|
i0.ɵɵelementEnd();
|
|
369
|
-
i0.ɵɵelementStart(4, "span",
|
|
395
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
370
396
|
i0.ɵɵtext(5);
|
|
371
397
|
i0.ɵɵelementEnd()();
|
|
372
398
|
} if (rf & 2) {
|
|
373
|
-
const
|
|
399
|
+
const item_r15 = i0.ɵɵnextContext().$implicit;
|
|
374
400
|
i0.ɵɵadvance(5);
|
|
375
|
-
i0.ɵɵtextInterpolate(
|
|
401
|
+
i0.ɵɵtextInterpolate(item_r15.targetAgentName);
|
|
376
402
|
} }
|
|
377
403
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
378
|
-
i0.ɵɵelementStart(0, "div",
|
|
379
|
-
i0.ɵɵelement(1, "i",
|
|
380
|
-
i0.ɵɵelementStart(2, "span",
|
|
404
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
405
|
+
i0.ɵɵelement(1, "i", 166);
|
|
406
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
381
407
|
i0.ɵɵtext(3, "Co-agent:");
|
|
382
408
|
i0.ɵɵelementEnd();
|
|
383
|
-
i0.ɵɵelementStart(4, "span",
|
|
409
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
384
410
|
i0.ɵɵtext(5);
|
|
385
411
|
i0.ɵɵelementEnd()();
|
|
386
412
|
} if (rf & 2) {
|
|
387
|
-
const
|
|
413
|
+
const item_r15 = i0.ɵɵnextContext().$implicit;
|
|
388
414
|
i0.ɵɵadvance(5);
|
|
389
|
-
i0.ɵɵtextInterpolate(
|
|
415
|
+
i0.ɵɵtextInterpolate(item_r15.row.Agent);
|
|
390
416
|
} }
|
|
391
417
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
392
|
-
const
|
|
393
|
-
i0.ɵɵelementStart(0, "div",
|
|
394
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template_div_click_0_listener() { const
|
|
395
|
-
i0.ɵɵelementStart(1, "div",
|
|
418
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
419
|
+
i0.ɵɵelementStart(0, "div", 171);
|
|
420
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template_div_click_0_listener() { const item_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.openSessionRecord(item_r15.row.ID)); });
|
|
421
|
+
i0.ɵɵelementStart(1, "div", 172)(2, "div", 173)(3, "div", 174)(4, "div", 175);
|
|
396
422
|
i0.ɵɵelement(5, "i");
|
|
397
423
|
i0.ɵɵelementEnd();
|
|
398
|
-
i0.ɵɵelementStart(6, "div",
|
|
424
|
+
i0.ɵɵelementStart(6, "div", 176)(7, "div", 177);
|
|
399
425
|
i0.ɵɵtext(8);
|
|
400
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template, 2, 0, "span",
|
|
401
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template, 2, 0, "span",
|
|
426
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template, 2, 0, "span", 178);
|
|
427
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template, 2, 0, "span", 179);
|
|
402
428
|
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵelementStart(11, "div",
|
|
429
|
+
i0.ɵɵelementStart(11, "div", 180);
|
|
404
430
|
i0.ɵɵtext(12);
|
|
405
431
|
i0.ɵɵpipe(13, "date");
|
|
406
432
|
i0.ɵɵelementEnd()()();
|
|
407
|
-
i0.ɵɵelementStart(14, "div",
|
|
433
|
+
i0.ɵɵelementStart(14, "div", 181)(15, "div", 182)(16, "span", 183);
|
|
408
434
|
i0.ɵɵtext(17);
|
|
409
435
|
i0.ɵɵelementEnd()();
|
|
410
|
-
i0.ɵɵelementStart(18, "div",
|
|
411
|
-
i0.ɵɵelement(19, "i",
|
|
412
|
-
i0.ɵɵelementStart(20, "span",
|
|
436
|
+
i0.ɵɵelementStart(18, "div", 182);
|
|
437
|
+
i0.ɵɵelement(19, "i", 184);
|
|
438
|
+
i0.ɵɵelementStart(20, "span", 185);
|
|
413
439
|
i0.ɵɵtext(21, "Duration:");
|
|
414
440
|
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵelementStart(22, "span",
|
|
441
|
+
i0.ɵɵelementStart(22, "span", 186);
|
|
416
442
|
i0.ɵɵtext(23);
|
|
417
443
|
i0.ɵɵelementEnd()();
|
|
418
|
-
i0.ɵɵelementStart(24, "div",
|
|
419
|
-
i0.ɵɵelement(25, "i",
|
|
420
|
-
i0.ɵɵelementStart(26, "span",
|
|
444
|
+
i0.ɵɵelementStart(24, "div", 182);
|
|
445
|
+
i0.ɵɵelement(25, "i", 187);
|
|
446
|
+
i0.ɵɵelementStart(26, "span", 185);
|
|
421
447
|
i0.ɵɵtext(27, "Channels:");
|
|
422
448
|
i0.ɵɵelementEnd();
|
|
423
|
-
i0.ɵɵelementStart(28, "span",
|
|
449
|
+
i0.ɵɵelementStart(28, "span", 186);
|
|
424
450
|
i0.ɵɵtext(29);
|
|
425
451
|
i0.ɵɵelementEnd()();
|
|
426
|
-
i0.ɵɵconditionalCreate(30, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template, 6, 1, "div",
|
|
427
|
-
i0.ɵɵconditionalCreate(31, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template, 6, 1, "div",
|
|
428
|
-
i0.ɵɵelementStart(32, "div",
|
|
429
|
-
i0.ɵɵelement(33, "i",
|
|
430
|
-
i0.ɵɵelementStart(34, "span",
|
|
452
|
+
i0.ɵɵconditionalCreate(30, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template, 6, 1, "div", 182);
|
|
453
|
+
i0.ɵɵconditionalCreate(31, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template, 6, 1, "div", 182);
|
|
454
|
+
i0.ɵɵelementStart(32, "div", 182);
|
|
455
|
+
i0.ɵɵelement(33, "i", 188);
|
|
456
|
+
i0.ɵɵelementStart(34, "span", 185);
|
|
431
457
|
i0.ɵɵtext(35, "User:");
|
|
432
458
|
i0.ɵɵelementEnd();
|
|
433
|
-
i0.ɵɵelementStart(36, "span",
|
|
459
|
+
i0.ɵɵelementStart(36, "span", 186);
|
|
434
460
|
i0.ɵɵtext(37);
|
|
435
461
|
i0.ɵɵelementEnd()()()();
|
|
436
|
-
i0.ɵɵelementStart(38, "div",
|
|
437
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template_button_click_39_listener($event) { const
|
|
438
|
-
i0.ɵɵelement(40, "i",
|
|
462
|
+
i0.ɵɵelementStart(38, "div", 189)(39, "button", 190);
|
|
463
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template_button_click_39_listener($event) { const item_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.openSessionRecord(item_r15.row.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
464
|
+
i0.ɵɵelement(40, "i", 191);
|
|
439
465
|
i0.ɵɵelementEnd()()()();
|
|
440
466
|
} if (rf & 2) {
|
|
441
|
-
const
|
|
467
|
+
const item_r15 = ctx.$implicit;
|
|
442
468
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
443
469
|
i0.ɵɵadvance(4);
|
|
444
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getSessionStatusColor(
|
|
470
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getSessionStatusColor(item_r15.row.Status));
|
|
445
471
|
i0.ɵɵadvance();
|
|
446
|
-
i0.ɵɵclassMap(ctx_r1.getSessionStatusIcon(
|
|
472
|
+
i0.ɵɵclassMap(ctx_r1.getSessionStatusIcon(item_r15.row.Status));
|
|
447
473
|
i0.ɵɵadvance(3);
|
|
448
|
-
i0.ɵɵtextInterpolate1(" Session #",
|
|
474
|
+
i0.ɵɵtextInterpolate1(" Session #", item_r15.row.ID.substring(0, 8), " ");
|
|
449
475
|
i0.ɵɵadvance();
|
|
450
|
-
i0.ɵɵconditional(
|
|
476
|
+
i0.ɵɵconditional(item_r15.isCoAgent ? 9 : -1);
|
|
451
477
|
i0.ɵɵadvance();
|
|
452
|
-
i0.ɵɵconditional(
|
|
478
|
+
i0.ɵɵconditional(item_r15.isTarget ? 10 : -1);
|
|
453
479
|
i0.ɵɵadvance(2);
|
|
454
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 15,
|
|
480
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 15, item_r15.row.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
455
481
|
i0.ɵɵadvance(4);
|
|
456
|
-
i0.ɵɵattribute("data-status",
|
|
482
|
+
i0.ɵɵattribute("data-status", item_r15.row.Status);
|
|
457
483
|
i0.ɵɵadvance();
|
|
458
|
-
i0.ɵɵtextInterpolate(
|
|
484
|
+
i0.ɵɵtextInterpolate(item_r15.row.Status);
|
|
459
485
|
i0.ɵɵadvance(6);
|
|
460
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatSessionDuration(
|
|
486
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatSessionDuration(item_r15));
|
|
461
487
|
i0.ɵɵadvance(6);
|
|
462
|
-
i0.ɵɵtextInterpolate(
|
|
488
|
+
i0.ɵɵtextInterpolate(item_r15.channelCount);
|
|
463
489
|
i0.ɵɵadvance();
|
|
464
|
-
i0.ɵɵconditional(
|
|
490
|
+
i0.ɵɵconditional(item_r15.isCoAgent && item_r15.targetAgentName ? 30 : -1);
|
|
465
491
|
i0.ɵɵadvance();
|
|
466
|
-
i0.ɵɵconditional(
|
|
492
|
+
i0.ɵɵconditional(item_r15.isTarget && !item_r15.isCoAgent && item_r15.row.Agent ? 31 : -1);
|
|
467
493
|
i0.ɵɵadvance(6);
|
|
468
|
-
i0.ɵɵtextInterpolate(
|
|
494
|
+
i0.ɵɵtextInterpolate(item_r15.row.User);
|
|
469
495
|
} }
|
|
470
496
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
471
|
-
i0.ɵɵelementStart(0, "div",
|
|
472
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template, 41, 18, "div",
|
|
497
|
+
i0.ɵɵelementStart(0, "div", 169);
|
|
498
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template, 41, 18, "div", 170, _forTrack0);
|
|
473
499
|
i0.ɵɵelementEnd();
|
|
474
500
|
} if (rf & 2) {
|
|
475
501
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -477,305 +503,305 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
477
503
|
i0.ɵɵrepeater(ctx_r1.agentSessions);
|
|
478
504
|
} }
|
|
479
505
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
480
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template, 1, 0, "mj-loading",
|
|
506
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template, 1, 0, "mj-loading", 167)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_1_Template, 1, 0, "mj-empty-state", 168)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_Template, 3, 0, "div", 169);
|
|
481
507
|
} if (rf & 2) {
|
|
482
508
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
483
509
|
i0.ɵɵconditional(ctx_r1.loadingSessions ? 0 : ctx_r1.agentSessions.length === 0 ? 1 : 2);
|
|
484
510
|
} }
|
|
485
511
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
512
|
+
i0.ɵɵelement(0, "mj-loading", 193);
|
|
487
513
|
} }
|
|
488
514
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
515
|
+
i0.ɵɵelement(0, "mj-empty-state", 194);
|
|
490
516
|
} }
|
|
491
517
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
492
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
518
|
+
i0.ɵɵelement(0, "mj-empty-state", 199);
|
|
493
519
|
} if (rf & 2) {
|
|
494
520
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
495
521
|
i0.ɵɵproperty("Message", ctx_r1.ExecutionSearchEmptyMessage);
|
|
496
522
|
} }
|
|
497
523
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
498
|
-
i0.ɵɵelementStart(0, "div",
|
|
499
|
-
i0.ɵɵelement(1, "i",
|
|
500
|
-
i0.ɵɵelementStart(2, "span",
|
|
524
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
525
|
+
i0.ɵɵelement(1, "i", 207);
|
|
526
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
501
527
|
i0.ɵɵtext(3, "Config:");
|
|
502
528
|
i0.ɵɵelementEnd();
|
|
503
|
-
i0.ɵɵelementStart(4, "span",
|
|
529
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
504
530
|
i0.ɵɵtext(5);
|
|
505
531
|
i0.ɵɵelementEnd()();
|
|
506
532
|
} if (rf & 2) {
|
|
507
|
-
const
|
|
533
|
+
const execution_r18 = i0.ɵɵnextContext().$implicit;
|
|
508
534
|
i0.ɵɵadvance(5);
|
|
509
|
-
i0.ɵɵtextInterpolate(
|
|
535
|
+
i0.ɵɵtextInterpolate(execution_r18.Configuration);
|
|
510
536
|
} }
|
|
511
537
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
-
i0.ɵɵelementStart(0, "div",
|
|
513
|
-
i0.ɵɵelement(1, "i",
|
|
514
|
-
i0.ɵɵelementStart(2, "span",
|
|
538
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
539
|
+
i0.ɵɵelement(1, "i", 184);
|
|
540
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
515
541
|
i0.ɵɵtext(3, "Duration:");
|
|
516
542
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(4, "span",
|
|
543
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
518
544
|
i0.ɵɵtext(5);
|
|
519
545
|
i0.ɵɵelementEnd()();
|
|
520
546
|
} if (rf & 2) {
|
|
521
|
-
const
|
|
547
|
+
const execution_r18 = i0.ɵɵnextContext().$implicit;
|
|
522
548
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
523
549
|
i0.ɵɵadvance(5);
|
|
524
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(
|
|
550
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(execution_r18.StartedAt, execution_r18.CompletedAt));
|
|
525
551
|
} }
|
|
526
552
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
527
|
-
i0.ɵɵelementStart(0, "div",
|
|
528
|
-
i0.ɵɵelement(1, "i",
|
|
529
|
-
i0.ɵɵelementStart(2, "span",
|
|
553
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
554
|
+
i0.ɵɵelement(1, "i", 208);
|
|
555
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
530
556
|
i0.ɵɵtext(3, "Running:");
|
|
531
557
|
i0.ɵɵelementEnd()();
|
|
532
558
|
} }
|
|
533
559
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
534
|
-
i0.ɵɵelementStart(0, "div",
|
|
535
|
-
i0.ɵɵelement(1, "i",
|
|
536
|
-
i0.ɵɵelementStart(2, "span",
|
|
560
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
561
|
+
i0.ɵɵelement(1, "i", 209);
|
|
562
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
537
563
|
i0.ɵɵtext(3, "Tokens:");
|
|
538
564
|
i0.ɵɵelementEnd();
|
|
539
|
-
i0.ɵɵelementStart(4, "span",
|
|
565
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
540
566
|
i0.ɵɵtext(5);
|
|
541
567
|
i0.ɵɵelementEnd()();
|
|
542
568
|
} if (rf & 2) {
|
|
543
|
-
const
|
|
569
|
+
const execution_r18 = i0.ɵɵnextContext().$implicit;
|
|
544
570
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
545
571
|
i0.ɵɵadvance(5);
|
|
546
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
572
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r18.TotalTokensUsedRollup || execution_r18.TotalTokensUsed));
|
|
547
573
|
} }
|
|
548
574
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
549
|
-
i0.ɵɵelementStart(0, "div",
|
|
550
|
-
i0.ɵɵelement(1, "i",
|
|
551
|
-
i0.ɵɵelementStart(2, "span",
|
|
575
|
+
i0.ɵɵelementStart(0, "div", 182);
|
|
576
|
+
i0.ɵɵelement(1, "i", 210);
|
|
577
|
+
i0.ɵɵelementStart(2, "span", 185);
|
|
552
578
|
i0.ɵɵtext(3, "Cost:");
|
|
553
579
|
i0.ɵɵelementEnd();
|
|
554
|
-
i0.ɵɵelementStart(4, "span",
|
|
580
|
+
i0.ɵɵelementStart(4, "span", 186);
|
|
555
581
|
i0.ɵɵtext(5);
|
|
556
582
|
i0.ɵɵelementEnd()();
|
|
557
583
|
} if (rf & 2) {
|
|
558
|
-
const
|
|
584
|
+
const execution_r18 = i0.ɵɵnextContext().$implicit;
|
|
559
585
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
560
586
|
i0.ɵɵadvance(5);
|
|
561
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
587
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r18.TotalCostRollup || execution_r18.TotalCost));
|
|
562
588
|
} }
|
|
563
589
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
-
i0.ɵɵelementStart(0, "div",
|
|
565
|
-
i0.ɵɵelement(1, "i",
|
|
566
|
-
i0.ɵɵelementStart(2, "div",
|
|
590
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
591
|
+
i0.ɵɵelement(1, "i", 219);
|
|
592
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
567
593
|
i0.ɵɵtext(4, "Completed");
|
|
568
594
|
i0.ɵɵelementEnd();
|
|
569
|
-
i0.ɵɵelementStart(5, "span",
|
|
595
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
570
596
|
i0.ɵɵtext(6);
|
|
571
597
|
i0.ɵɵpipe(7, "date");
|
|
572
598
|
i0.ɵɵelementEnd()()();
|
|
573
599
|
} if (rf & 2) {
|
|
574
|
-
const
|
|
600
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
575
601
|
i0.ɵɵadvance(6);
|
|
576
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1,
|
|
602
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, execution_r18.CompletedAt, "medium"));
|
|
577
603
|
} }
|
|
578
604
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
579
|
-
i0.ɵɵelementStart(0, "div",
|
|
580
|
-
i0.ɵɵelement(1, "i",
|
|
581
|
-
i0.ɵɵelementStart(2, "div",
|
|
605
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
606
|
+
i0.ɵɵelement(1, "i", 209);
|
|
607
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
582
608
|
i0.ɵɵtext(4, "Direct Tokens");
|
|
583
609
|
i0.ɵɵelementEnd();
|
|
584
|
-
i0.ɵɵelementStart(5, "span",
|
|
610
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
585
611
|
i0.ɵɵtext(6);
|
|
586
612
|
i0.ɵɵelementEnd()()();
|
|
587
613
|
} if (rf & 2) {
|
|
588
|
-
const
|
|
614
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
589
615
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
590
616
|
i0.ɵɵadvance(6);
|
|
591
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
617
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r18.TotalTokensUsed));
|
|
592
618
|
} }
|
|
593
619
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
594
|
-
i0.ɵɵelementStart(0, "div",
|
|
595
|
-
i0.ɵɵelement(1, "i",
|
|
596
|
-
i0.ɵɵelementStart(2, "div",
|
|
620
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
621
|
+
i0.ɵɵelement(1, "i", 32);
|
|
622
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
597
623
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
598
624
|
i0.ɵɵelementEnd();
|
|
599
|
-
i0.ɵɵelementStart(5, "span",
|
|
625
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
600
626
|
i0.ɵɵtext(6);
|
|
601
627
|
i0.ɵɵelementEnd()()();
|
|
602
628
|
} if (rf & 2) {
|
|
603
|
-
const
|
|
629
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
604
630
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
605
631
|
i0.ɵɵadvance(6);
|
|
606
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
632
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r18.TotalTokensUsedRollup));
|
|
607
633
|
} }
|
|
608
634
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
609
|
-
i0.ɵɵelementStart(0, "div",
|
|
610
|
-
i0.ɵɵelement(1, "i",
|
|
611
|
-
i0.ɵɵelementStart(2, "div",
|
|
635
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
636
|
+
i0.ɵɵelement(1, "i", 210);
|
|
637
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
612
638
|
i0.ɵɵtext(4, "Direct Cost");
|
|
613
639
|
i0.ɵɵelementEnd();
|
|
614
|
-
i0.ɵɵelementStart(5, "span",
|
|
640
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
615
641
|
i0.ɵɵtext(6);
|
|
616
642
|
i0.ɵɵelementEnd()()();
|
|
617
643
|
} if (rf & 2) {
|
|
618
|
-
const
|
|
644
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
619
645
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
620
646
|
i0.ɵɵadvance(6);
|
|
621
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
647
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r18.TotalCost));
|
|
622
648
|
} }
|
|
623
649
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
624
|
-
i0.ɵɵelementStart(0, "div",
|
|
625
|
-
i0.ɵɵelement(1, "i",
|
|
626
|
-
i0.ɵɵelementStart(2, "div",
|
|
650
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
651
|
+
i0.ɵɵelement(1, "i", 220);
|
|
652
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
627
653
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
628
654
|
i0.ɵɵelementEnd();
|
|
629
|
-
i0.ɵɵelementStart(5, "span",
|
|
655
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
630
656
|
i0.ɵɵtext(6);
|
|
631
657
|
i0.ɵɵelementEnd()()();
|
|
632
658
|
} if (rf & 2) {
|
|
633
|
-
const
|
|
659
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
634
660
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
635
661
|
i0.ɵɵadvance(6);
|
|
636
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
662
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r18.TotalCostRollup));
|
|
637
663
|
} }
|
|
638
664
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
639
|
-
i0.ɵɵelementStart(0, "div",
|
|
640
|
-
i0.ɵɵelement(1, "i",
|
|
641
|
-
i0.ɵɵelementStart(2, "div",
|
|
665
|
+
i0.ɵɵelementStart(0, "div", 213);
|
|
666
|
+
i0.ɵɵelement(1, "i", 221);
|
|
667
|
+
i0.ɵɵelementStart(2, "div", 214)(3, "span", 215);
|
|
642
668
|
i0.ɵɵtext(4, "Conversation");
|
|
643
669
|
i0.ɵɵelementEnd();
|
|
644
|
-
i0.ɵɵelementStart(5, "span",
|
|
670
|
+
i0.ɵɵelementStart(5, "span", 216);
|
|
645
671
|
i0.ɵɵtext(6);
|
|
646
672
|
i0.ɵɵelementEnd()()();
|
|
647
673
|
} if (rf & 2) {
|
|
648
|
-
const
|
|
674
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
649
675
|
i0.ɵɵadvance(6);
|
|
650
|
-
i0.ɵɵtextInterpolate1("",
|
|
676
|
+
i0.ɵɵtextInterpolate1("", execution_r18.ConversationID.substring(0, 8), "...");
|
|
651
677
|
} }
|
|
652
678
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
653
|
-
i0.ɵɵelementStart(0, "div",
|
|
654
|
-
i0.ɵɵelement(2, "i",
|
|
679
|
+
i0.ɵɵelementStart(0, "div", 217)(1, "h5");
|
|
680
|
+
i0.ɵɵelement(2, "i", 222);
|
|
655
681
|
i0.ɵɵtext(3, " Result");
|
|
656
682
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵelement(4, "mj-code-editor",
|
|
683
|
+
i0.ɵɵelement(4, "mj-code-editor", 223);
|
|
658
684
|
i0.ɵɵelementEnd();
|
|
659
685
|
} if (rf & 2) {
|
|
660
|
-
const
|
|
686
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
661
687
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
662
688
|
i0.ɵɵadvance(4);
|
|
663
|
-
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(
|
|
689
|
+
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r18, false))("readonly", true)("lineWrapping", true);
|
|
664
690
|
} }
|
|
665
691
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
666
|
-
i0.ɵɵelementStart(0, "div",
|
|
667
|
-
i0.ɵɵelement(2, "i",
|
|
692
|
+
i0.ɵɵelementStart(0, "div", 218)(1, "h5");
|
|
693
|
+
i0.ɵɵelement(2, "i", 224);
|
|
668
694
|
i0.ɵɵtext(3, " Error");
|
|
669
695
|
i0.ɵɵelementEnd();
|
|
670
|
-
i0.ɵɵelementStart(4, "div",
|
|
696
|
+
i0.ɵɵelementStart(4, "div", 225);
|
|
671
697
|
i0.ɵɵtext(5);
|
|
672
698
|
i0.ɵɵelementEnd()();
|
|
673
699
|
} if (rf & 2) {
|
|
674
|
-
const
|
|
700
|
+
const execution_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
675
701
|
i0.ɵɵadvance(5);
|
|
676
|
-
i0.ɵɵtextInterpolate(
|
|
702
|
+
i0.ɵɵtextInterpolate(execution_r18.ErrorMessage);
|
|
677
703
|
} }
|
|
678
704
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
679
|
-
i0.ɵɵelementStart(0, "div",
|
|
680
|
-
i0.ɵɵelement(4, "i",
|
|
681
|
-
i0.ɵɵelementStart(5, "div",
|
|
705
|
+
i0.ɵɵelementStart(0, "div", 206)(1, "div", 211)(2, "div", 212)(3, "div", 213);
|
|
706
|
+
i0.ɵɵelement(4, "i", 208);
|
|
707
|
+
i0.ɵɵelementStart(5, "div", 214)(6, "span", 215);
|
|
682
708
|
i0.ɵɵtext(7, "Started");
|
|
683
709
|
i0.ɵɵelementEnd();
|
|
684
|
-
i0.ɵɵelementStart(8, "span",
|
|
710
|
+
i0.ɵɵelementStart(8, "span", 216);
|
|
685
711
|
i0.ɵɵtext(9);
|
|
686
712
|
i0.ɵɵpipe(10, "date");
|
|
687
713
|
i0.ɵɵelementEnd()()();
|
|
688
|
-
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template, 8, 4, "div",
|
|
689
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template, 7, 1, "div",
|
|
690
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template, 7, 1, "div",
|
|
691
|
-
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template, 7, 1, "div",
|
|
692
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template, 7, 1, "div",
|
|
693
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template, 7, 1, "div",
|
|
714
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template, 8, 4, "div", 213);
|
|
715
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template, 7, 1, "div", 213);
|
|
716
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template, 7, 1, "div", 213);
|
|
717
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template, 7, 1, "div", 213);
|
|
718
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template, 7, 1, "div", 213);
|
|
719
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template, 7, 1, "div", 213);
|
|
694
720
|
i0.ɵɵelementEnd()();
|
|
695
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template, 5, 3, "div",
|
|
696
|
-
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template, 6, 1, "div",
|
|
721
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template, 5, 3, "div", 217);
|
|
722
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template, 6, 1, "div", 218);
|
|
697
723
|
i0.ɵɵelementEnd();
|
|
698
724
|
} if (rf & 2) {
|
|
699
|
-
const
|
|
725
|
+
const execution_r18 = i0.ɵɵnextContext().$implicit;
|
|
700
726
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
701
727
|
i0.ɵɵadvance(9);
|
|
702
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9,
|
|
728
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9, execution_r18.StartedAt, "medium"));
|
|
703
729
|
i0.ɵɵadvance(2);
|
|
704
|
-
i0.ɵɵconditional(
|
|
730
|
+
i0.ɵɵconditional(execution_r18.CompletedAt ? 11 : -1);
|
|
705
731
|
i0.ɵɵadvance();
|
|
706
|
-
i0.ɵɵconditional(
|
|
732
|
+
i0.ɵɵconditional(execution_r18.TotalTokensUsed ? 12 : -1);
|
|
707
733
|
i0.ɵɵadvance();
|
|
708
|
-
i0.ɵɵconditional(
|
|
734
|
+
i0.ɵɵconditional(execution_r18.TotalTokensUsedRollup && execution_r18.TotalTokensUsedRollup !== execution_r18.TotalTokensUsed ? 13 : -1);
|
|
709
735
|
i0.ɵɵadvance();
|
|
710
|
-
i0.ɵɵconditional(
|
|
736
|
+
i0.ɵɵconditional(execution_r18.TotalCost ? 14 : -1);
|
|
711
737
|
i0.ɵɵadvance();
|
|
712
|
-
i0.ɵɵconditional(
|
|
738
|
+
i0.ɵɵconditional(execution_r18.TotalCostRollup && execution_r18.TotalCostRollup !== execution_r18.TotalCost ? 15 : -1);
|
|
713
739
|
i0.ɵɵadvance();
|
|
714
|
-
i0.ɵɵconditional(
|
|
740
|
+
i0.ɵɵconditional(execution_r18.ConversationID ? 16 : -1);
|
|
715
741
|
i0.ɵɵadvance();
|
|
716
|
-
i0.ɵɵconditional(ctx_r1.HasExecutionResult(
|
|
742
|
+
i0.ɵɵconditional(ctx_r1.HasExecutionResult(execution_r18) ? 17 : -1);
|
|
717
743
|
i0.ɵɵadvance();
|
|
718
|
-
i0.ɵɵconditional(
|
|
744
|
+
i0.ɵɵconditional(execution_r18.ErrorMessage ? 18 : -1);
|
|
719
745
|
} }
|
|
720
746
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
721
|
-
const
|
|
722
|
-
i0.ɵɵelementStart(0, "div",
|
|
723
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template_div_click_1_listener() { const
|
|
724
|
-
i0.ɵɵelementStart(2, "div",
|
|
747
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
748
|
+
i0.ɵɵelementStart(0, "div", 202)(1, "div", 203);
|
|
749
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template_div_click_1_listener() { const execution_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r18.ID)); });
|
|
750
|
+
i0.ɵɵelementStart(2, "div", 173)(3, "div", 174)(4, "div", 175);
|
|
725
751
|
i0.ɵɵelement(5, "i");
|
|
726
752
|
i0.ɵɵelementEnd();
|
|
727
|
-
i0.ɵɵelementStart(6, "div",
|
|
728
|
-
i0.ɵɵelement(8, "i",
|
|
753
|
+
i0.ɵɵelementStart(6, "div", 176)(7, "div", 177);
|
|
754
|
+
i0.ɵɵelement(8, "i", 204);
|
|
729
755
|
i0.ɵɵtext(9);
|
|
730
756
|
i0.ɵɵelementEnd();
|
|
731
|
-
i0.ɵɵelementStart(10, "div",
|
|
757
|
+
i0.ɵɵelementStart(10, "div", 180);
|
|
732
758
|
i0.ɵɵtext(11);
|
|
733
759
|
i0.ɵɵpipe(12, "date");
|
|
734
760
|
i0.ɵɵelementEnd()()();
|
|
735
|
-
i0.ɵɵelementStart(13, "div",
|
|
736
|
-
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template, 6, 1, "div",
|
|
737
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template, 6, 1, "div",
|
|
738
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template, 6, 1, "div",
|
|
739
|
-
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template, 6, 1, "div",
|
|
761
|
+
i0.ɵɵelementStart(13, "div", 181);
|
|
762
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template, 6, 1, "div", 182);
|
|
763
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template, 6, 1, "div", 182)(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_16_Template, 4, 0, "div", 182);
|
|
764
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template, 6, 1, "div", 182);
|
|
765
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template, 6, 1, "div", 182);
|
|
740
766
|
i0.ɵɵelementEnd()();
|
|
741
|
-
i0.ɵɵelementStart(19, "div",
|
|
742
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template_button_click_20_listener($event) { const
|
|
743
|
-
i0.ɵɵelement(21, "i",
|
|
767
|
+
i0.ɵɵelementStart(19, "div", 189)(20, "button", 205);
|
|
768
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template_button_click_20_listener($event) { const execution_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.openExecutionRecord(execution_r18.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
769
|
+
i0.ɵɵelement(21, "i", 191);
|
|
744
770
|
i0.ɵɵelementEnd()()();
|
|
745
|
-
i0.ɵɵconditionalCreate(22, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template, 19, 12, "div",
|
|
771
|
+
i0.ɵɵconditionalCreate(22, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template, 19, 12, "div", 206);
|
|
746
772
|
i0.ɵɵelementEnd();
|
|
747
773
|
} if (rf & 2) {
|
|
748
|
-
const
|
|
774
|
+
const execution_r18 = ctx.$implicit;
|
|
749
775
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
750
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
776
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r18.ID]);
|
|
751
777
|
i0.ɵɵadvance(4);
|
|
752
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(
|
|
778
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r18.Status));
|
|
753
779
|
i0.ɵɵadvance();
|
|
754
|
-
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(
|
|
780
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r18.Status));
|
|
755
781
|
i0.ɵɵadvance(3);
|
|
756
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
782
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r18.ID]);
|
|
757
783
|
i0.ɵɵadvance();
|
|
758
|
-
i0.ɵɵtextInterpolate1(" Execution #",
|
|
784
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r18.ID.substring(0, 8), " ");
|
|
759
785
|
i0.ɵɵadvance(2);
|
|
760
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15,
|
|
786
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15, execution_r18.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
761
787
|
i0.ɵɵadvance(3);
|
|
762
|
-
i0.ɵɵconditional(
|
|
788
|
+
i0.ɵɵconditional(execution_r18.Configuration ? 14 : -1);
|
|
763
789
|
i0.ɵɵadvance();
|
|
764
|
-
i0.ɵɵconditional(
|
|
790
|
+
i0.ɵɵconditional(execution_r18.CompletedAt ? 15 : execution_r18.Status === "Running" ? 16 : -1);
|
|
765
791
|
i0.ɵɵadvance(2);
|
|
766
|
-
i0.ɵɵconditional(
|
|
792
|
+
i0.ɵɵconditional(execution_r18.TotalTokensUsedRollup || execution_r18.TotalTokensUsed ? 17 : -1);
|
|
767
793
|
i0.ɵɵadvance();
|
|
768
|
-
i0.ɵɵconditional(
|
|
794
|
+
i0.ɵɵconditional(execution_r18.TotalCostRollup || execution_r18.TotalCost ? 18 : -1);
|
|
769
795
|
i0.ɵɵadvance(4);
|
|
770
|
-
i0.ɵɵconditional(ctx_r1.expandedExecutions[
|
|
796
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r18.ID] ? 22 : -1);
|
|
771
797
|
} }
|
|
772
798
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
773
|
-
i0.ɵɵelement(0, "i",
|
|
799
|
+
i0.ɵɵelement(0, "i", 162);
|
|
774
800
|
i0.ɵɵtext(1, " Loading... ");
|
|
775
801
|
} }
|
|
776
802
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
777
803
|
i0.ɵɵtext(0);
|
|
778
|
-
i0.ɵɵelementStart(1, "span",
|
|
804
|
+
i0.ɵɵelementStart(1, "span", 232);
|
|
779
805
|
i0.ɵɵtext(2);
|
|
780
806
|
i0.ɵɵelementEnd();
|
|
781
807
|
} if (rf & 2) {
|
|
@@ -785,23 +811,23 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
785
811
|
i0.ɵɵtextInterpolate1("(", ctx_r1.totalExecutionHistoryCount, " total)");
|
|
786
812
|
} }
|
|
787
813
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
788
|
-
const
|
|
789
|
-
i0.ɵɵelementStart(0, "div",
|
|
790
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
791
|
-
i0.ɵɵelement(2, "i",
|
|
814
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
815
|
+
i0.ɵɵelementStart(0, "div", 201)(1, "button", 226);
|
|
816
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.goToPreviousPage()); });
|
|
817
|
+
i0.ɵɵelement(2, "i", 227);
|
|
792
818
|
i0.ɵɵtext(3, " Previous ");
|
|
793
819
|
i0.ɵɵelementEnd();
|
|
794
|
-
i0.ɵɵelementStart(4, "div",
|
|
820
|
+
i0.ɵɵelementStart(4, "div", 228);
|
|
795
821
|
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_5_Template, 2, 0)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_6_Template, 3, 3);
|
|
796
822
|
i0.ɵɵelementEnd();
|
|
797
|
-
i0.ɵɵelementStart(7, "button",
|
|
798
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(
|
|
823
|
+
i0.ɵɵelementStart(7, "button", 226);
|
|
824
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.goToNextPage()); });
|
|
799
825
|
i0.ɵɵtext(8, " Next ");
|
|
800
|
-
i0.ɵɵelement(9, "i",
|
|
826
|
+
i0.ɵɵelement(9, "i", 229);
|
|
801
827
|
i0.ɵɵelementEnd();
|
|
802
|
-
i0.ɵɵelementStart(10, "button",
|
|
803
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
804
|
-
i0.ɵɵelement(11, "i",
|
|
828
|
+
i0.ɵɵelementStart(10, "button", 230);
|
|
829
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
830
|
+
i0.ɵɵelement(11, "i", 231);
|
|
805
831
|
i0.ɵɵtext(12, " View All in Grid ");
|
|
806
832
|
i0.ɵɵelementEnd()();
|
|
807
833
|
} if (rf & 2) {
|
|
@@ -814,17 +840,17 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
814
840
|
i0.ɵɵproperty("disabled", !ctx_r1.hasNextPage || ctx_r1.isLoadingPage);
|
|
815
841
|
} }
|
|
816
842
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
817
|
-
const
|
|
818
|
-
i0.ɵɵelementStart(0, "div",
|
|
819
|
-
i0.ɵɵelement(2, "i",
|
|
820
|
-
i0.ɵɵelementStart(3, "input",
|
|
821
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(
|
|
822
|
-
i0.ɵɵlistener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(
|
|
843
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
844
|
+
i0.ɵɵelementStart(0, "div", 195)(1, "div", 196);
|
|
845
|
+
i0.ɵɵelement(2, "i", 197);
|
|
846
|
+
i0.ɵɵelementStart(3, "input", 198);
|
|
847
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(5); i0.ɵɵtwoWayBindingSet(ctx_r1.executionSearchText, $event) || (ctx_r1.executionSearchText = $event); return i0.ɵɵresetView($event); });
|
|
848
|
+
i0.ɵɵlistener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onExecutionSearchChange()); });
|
|
823
849
|
i0.ɵɵelementEnd()()();
|
|
824
|
-
i0.ɵɵelementStart(4, "div",
|
|
825
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template, 1, 1, "mj-empty-state",
|
|
826
|
-
i0.ɵɵrepeaterCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template, 23, 18, "div",
|
|
827
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template, 13, 3, "div",
|
|
850
|
+
i0.ɵɵelementStart(4, "div", 169);
|
|
851
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template, 1, 1, "mj-empty-state", 199);
|
|
852
|
+
i0.ɵɵrepeaterCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template, 23, 18, "div", 200, _forTrack1);
|
|
853
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template, 13, 3, "div", 201);
|
|
828
854
|
i0.ɵɵelementEnd();
|
|
829
855
|
} if (rf & 2) {
|
|
830
856
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -839,16 +865,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
839
865
|
i0.ɵɵconditional(ctx_r1.totalPages > 1 ? 8 : -1);
|
|
840
866
|
} }
|
|
841
867
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
842
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template, 1, 0, "mj-loading",
|
|
868
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template, 1, 0, "mj-loading", 193)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_1_Template, 1, 0, "mj-empty-state", 194)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template, 9, 5);
|
|
843
869
|
} if (rf & 2) {
|
|
844
870
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
845
871
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 0 : ctx_r1.executionHistoryCount === 0 ? 1 : 2);
|
|
846
872
|
} }
|
|
847
873
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
848
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
849
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template, 4, 1, "ng-template",
|
|
850
|
-
i0.ɵɵelementStart(2, "div",
|
|
851
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template, 9, 6, "div",
|
|
874
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 54);
|
|
875
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
876
|
+
i0.ɵɵelementStart(2, "div", 159);
|
|
877
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template, 9, 6, "div", 160);
|
|
852
878
|
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Template, 3, 1)(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Template, 3, 1);
|
|
853
879
|
i0.ɵɵelementEnd()();
|
|
854
880
|
} if (rf & 2) {
|
|
@@ -861,7 +887,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
861
887
|
} }
|
|
862
888
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
863
889
|
i0.ɵɵelementStart(0, "span");
|
|
864
|
-
i0.ɵɵelement(1, "i",
|
|
890
|
+
i0.ɵɵelement(1, "i", 162);
|
|
865
891
|
i0.ɵɵelementEnd();
|
|
866
892
|
} }
|
|
867
893
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -874,7 +900,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
874
900
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.actionCount, ")");
|
|
875
901
|
} }
|
|
876
902
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
877
|
-
i0.ɵɵelement(0, "i",
|
|
903
|
+
i0.ɵɵelement(0, "i", 131);
|
|
878
904
|
i0.ɵɵtext(1, " Actions ");
|
|
879
905
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
880
906
|
} if (rf & 2) {
|
|
@@ -883,99 +909,99 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
883
909
|
i0.ɵɵconditional(ctx_r1.loadingStates.actions ? 2 : ctx_r1.actionCount > 0 ? 3 : -1);
|
|
884
910
|
} }
|
|
885
911
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
886
|
-
i0.ɵɵelementStart(0, "div",
|
|
887
|
-
i0.ɵɵelement(1, "i",
|
|
912
|
+
i0.ɵɵelementStart(0, "div", 233);
|
|
913
|
+
i0.ɵɵelement(1, "i", 162);
|
|
888
914
|
i0.ɵɵelementStart(2, "p");
|
|
889
915
|
i0.ɵɵtext(3, "Loading actions...");
|
|
890
916
|
i0.ɵɵelementEnd()();
|
|
891
917
|
} }
|
|
892
918
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
893
|
-
const
|
|
894
|
-
i0.ɵɵelementStart(0, "button",
|
|
895
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
896
|
-
i0.ɵɵelement(1, "i",
|
|
919
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
920
|
+
i0.ɵɵelementStart(0, "button", 238);
|
|
921
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
922
|
+
i0.ɵɵelement(1, "i", 239);
|
|
897
923
|
i0.ɵɵtext(2, " Add Action ");
|
|
898
924
|
i0.ɵɵelementEnd();
|
|
899
925
|
} }
|
|
900
926
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
901
|
-
const
|
|
902
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
903
|
-
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(
|
|
927
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
928
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 240);
|
|
929
|
+
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
904
930
|
i0.ɵɵelementEnd();
|
|
905
931
|
} if (rf & 2) {
|
|
906
932
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
907
933
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? "Configure First Action" : "");
|
|
908
934
|
} }
|
|
909
935
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
910
|
-
i0.ɵɵelementStart(0, "div",
|
|
936
|
+
i0.ɵɵelementStart(0, "div", 247);
|
|
911
937
|
i0.ɵɵtext(1);
|
|
912
938
|
i0.ɵɵelementEnd();
|
|
913
939
|
} if (rf & 2) {
|
|
914
|
-
const
|
|
940
|
+
const action_r23 = i0.ɵɵnextContext().$implicit;
|
|
915
941
|
i0.ɵɵadvance();
|
|
916
|
-
i0.ɵɵtextInterpolate(
|
|
942
|
+
i0.ɵɵtextInterpolate(action_r23.Description);
|
|
917
943
|
} }
|
|
918
944
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
919
|
-
i0.ɵɵelementStart(0, "span",
|
|
945
|
+
i0.ɵɵelementStart(0, "span", 249);
|
|
920
946
|
i0.ɵɵtext(1);
|
|
921
947
|
i0.ɵɵelementEnd();
|
|
922
948
|
} if (rf & 2) {
|
|
923
|
-
const
|
|
949
|
+
const action_r23 = i0.ɵɵnextContext().$implicit;
|
|
924
950
|
i0.ɵɵadvance();
|
|
925
|
-
i0.ɵɵtextInterpolate(
|
|
951
|
+
i0.ɵɵtextInterpolate(action_r23.Type);
|
|
926
952
|
} }
|
|
927
953
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
928
|
-
const
|
|
929
|
-
i0.ɵɵelementStart(0, "button",
|
|
930
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
931
|
-
i0.ɵɵelement(1, "i",
|
|
954
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
955
|
+
i0.ɵɵelementStart(0, "button", 253);
|
|
956
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r24); const action_r23 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.removeAction(action_r23, $event)); });
|
|
957
|
+
i0.ɵɵelement(1, "i", 254);
|
|
932
958
|
i0.ɵɵelementEnd();
|
|
933
959
|
} }
|
|
934
960
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
935
|
-
const
|
|
936
|
-
i0.ɵɵelementStart(0, "div",
|
|
937
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template_div_click_0_listener() { const
|
|
938
|
-
i0.ɵɵelementStart(1, "div",
|
|
961
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
962
|
+
i0.ɵɵelementStart(0, "div", 243);
|
|
963
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template_div_click_0_listener() { const action_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: Actions", action_r23.ID)); });
|
|
964
|
+
i0.ɵɵelementStart(1, "div", 244);
|
|
939
965
|
i0.ɵɵelement(2, "i");
|
|
940
966
|
i0.ɵɵelementEnd();
|
|
941
|
-
i0.ɵɵelementStart(3, "div",
|
|
967
|
+
i0.ɵɵelementStart(3, "div", 245)(4, "div", 246);
|
|
942
968
|
i0.ɵɵtext(5);
|
|
943
969
|
i0.ɵɵelementEnd();
|
|
944
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div",
|
|
945
|
-
i0.ɵɵelementStart(7, "div",
|
|
946
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span",
|
|
947
|
-
i0.ɵɵelementStart(9, "span",
|
|
948
|
-
i0.ɵɵelement(10, "i",
|
|
970
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div", 247);
|
|
971
|
+
i0.ɵɵelementStart(7, "div", 248);
|
|
972
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span", 249);
|
|
973
|
+
i0.ɵɵelementStart(9, "span", 250);
|
|
974
|
+
i0.ɵɵelement(10, "i", 37);
|
|
949
975
|
i0.ɵɵtext(11);
|
|
950
976
|
i0.ɵɵelementEnd()()();
|
|
951
|
-
i0.ɵɵelementStart(12, "div",
|
|
952
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button",
|
|
953
|
-
i0.ɵɵelement(14, "i",
|
|
977
|
+
i0.ɵɵelementStart(12, "div", 251);
|
|
978
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button", 252);
|
|
979
|
+
i0.ɵɵelement(14, "i", 231);
|
|
954
980
|
i0.ɵɵelementEnd()();
|
|
955
981
|
} if (rf & 2) {
|
|
956
|
-
const
|
|
982
|
+
const action_r23 = ctx.$implicit;
|
|
957
983
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
958
984
|
i0.ɵɵadvance(2);
|
|
959
|
-
i0.ɵɵclassMap(ctx_r1.getActionIcon(
|
|
985
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r23));
|
|
960
986
|
i0.ɵɵadvance(3);
|
|
961
|
-
i0.ɵɵtextInterpolate(
|
|
987
|
+
i0.ɵɵtextInterpolate(action_r23.Name || "Untitled Action");
|
|
962
988
|
i0.ɵɵadvance();
|
|
963
|
-
i0.ɵɵconditional(
|
|
989
|
+
i0.ɵɵconditional(action_r23.Description ? 6 : -1);
|
|
964
990
|
i0.ɵɵadvance(2);
|
|
965
|
-
i0.ɵɵconditional(
|
|
991
|
+
i0.ɵɵconditional(action_r23.Type ? 8 : -1);
|
|
966
992
|
i0.ɵɵadvance();
|
|
967
|
-
i0.ɵɵclassProp("active",
|
|
993
|
+
i0.ɵɵclassProp("active", action_r23.Status === "Active")("inactive", action_r23.Status !== "Active");
|
|
968
994
|
i0.ɵɵadvance();
|
|
969
|
-
i0.ɵɵclassProp("fa-check-circle",
|
|
995
|
+
i0.ɵɵclassProp("fa-check-circle", action_r23.Status === "Active")("fa-times-circle", action_r23.Status !== "Active");
|
|
970
996
|
i0.ɵɵadvance();
|
|
971
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
997
|
+
i0.ɵɵtextInterpolate1(" ", action_r23.Status, " ");
|
|
972
998
|
i0.ɵɵadvance(2);
|
|
973
999
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteActions ? 13 : -1);
|
|
974
1000
|
} }
|
|
975
1001
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
976
|
-
const
|
|
977
|
-
i0.ɵɵelementStart(0, "div",
|
|
978
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1002
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
1003
|
+
i0.ɵɵelementStart(0, "div", 255);
|
|
1004
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Actions", "")); });
|
|
979
1005
|
i0.ɵɵelementStart(1, "span");
|
|
980
1006
|
i0.ɵɵtext(2);
|
|
981
1007
|
i0.ɵɵelementEnd()();
|
|
@@ -985,9 +1011,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
985
1011
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
986
1012
|
} }
|
|
987
1013
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
988
|
-
i0.ɵɵelementStart(0, "div",
|
|
989
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div",
|
|
990
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div",
|
|
1014
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
1015
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div", 241, _forTrack1);
|
|
1016
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div", 242);
|
|
991
1017
|
i0.ɵɵelementEnd();
|
|
992
1018
|
} if (rf & 2) {
|
|
993
1019
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -997,10 +1023,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
997
1023
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
998
1024
|
} }
|
|
999
1025
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1000
|
-
i0.ɵɵelementStart(0, "div",
|
|
1001
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template, 3, 0, "button",
|
|
1026
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "div", 234);
|
|
1027
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template, 3, 0, "button", 235);
|
|
1002
1028
|
i0.ɵɵelementEnd()();
|
|
1003
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template, 1, 1, "mj-empty-state",
|
|
1029
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template, 1, 1, "mj-empty-state", 236)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Template, 4, 1, "div", 237);
|
|
1004
1030
|
} if (rf & 2) {
|
|
1005
1031
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1006
1032
|
i0.ɵɵadvance(2);
|
|
@@ -1009,10 +1035,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1009
1035
|
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 3 : 4);
|
|
1010
1036
|
} }
|
|
1011
1037
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1012
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1013
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template, 4, 1, "ng-template",
|
|
1014
|
-
i0.ɵɵelementStart(2, "div",
|
|
1015
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template, 4, 0, "div",
|
|
1038
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
|
|
1039
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
1040
|
+
i0.ɵɵelementStart(2, "div", 63);
|
|
1041
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template, 4, 0, "div", 233)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Template, 5, 2);
|
|
1016
1042
|
i0.ɵɵelementEnd()();
|
|
1017
1043
|
} if (rf & 2) {
|
|
1018
1044
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1022,7 +1048,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1022
1048
|
} }
|
|
1023
1049
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1024
1050
|
i0.ɵɵelementStart(0, "span");
|
|
1025
|
-
i0.ɵɵelement(1, "i",
|
|
1051
|
+
i0.ɵɵelement(1, "i", 162);
|
|
1026
1052
|
i0.ɵɵelementEnd();
|
|
1027
1053
|
} }
|
|
1028
1054
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1035,7 +1061,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1035
1061
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.totalSubAgentCount, ")");
|
|
1036
1062
|
} }
|
|
1037
1063
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1038
|
-
i0.ɵɵelement(0, "i",
|
|
1064
|
+
i0.ɵɵelement(0, "i", 32);
|
|
1039
1065
|
i0.ɵɵtext(1, " Sub-Agents ");
|
|
1040
1066
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1041
1067
|
} if (rf & 2) {
|
|
@@ -1044,29 +1070,29 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1044
1070
|
i0.ɵɵconditional(ctx_r1.loadingStates.subAgents ? 2 : ctx_r1.totalSubAgentCount > 0 ? 3 : -1);
|
|
1045
1071
|
} }
|
|
1046
1072
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1047
|
-
const
|
|
1048
|
-
i0.ɵɵelementStart(0, "button",
|
|
1049
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1050
|
-
i0.ɵɵelement(1, "i",
|
|
1073
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
1074
|
+
i0.ɵɵelementStart(0, "button", 263);
|
|
1075
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createChildSubAgent()); });
|
|
1076
|
+
i0.ɵɵelement(1, "i", 260);
|
|
1051
1077
|
i0.ɵɵtext(2, " Create Child ");
|
|
1052
1078
|
i0.ɵɵelementEnd();
|
|
1053
|
-
i0.ɵɵelementStart(3, "button",
|
|
1054
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
1055
|
-
i0.ɵɵelement(4, "i",
|
|
1079
|
+
i0.ɵɵelementStart(3, "button", 264);
|
|
1080
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.linkRelatedSubAgent()); });
|
|
1081
|
+
i0.ɵɵelement(4, "i", 261);
|
|
1056
1082
|
i0.ɵɵtext(5, " Link Related ");
|
|
1057
1083
|
i0.ɵɵelementEnd();
|
|
1058
1084
|
} }
|
|
1059
1085
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1060
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1061
|
-
i0.ɵɵelement(3, "i",
|
|
1086
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 262)(1, "div", 265)(2, "div", 266);
|
|
1087
|
+
i0.ɵɵelement(3, "i", 267);
|
|
1062
1088
|
i0.ɵɵelementStart(4, "strong");
|
|
1063
1089
|
i0.ɵɵtext(5, "Child Sub-Agents");
|
|
1064
1090
|
i0.ɵɵelementEnd();
|
|
1065
1091
|
i0.ɵɵelementStart(6, "p");
|
|
1066
1092
|
i0.ɵɵtext(7, "Share payload structure, dedicated to parent");
|
|
1067
1093
|
i0.ɵɵelementEnd()();
|
|
1068
|
-
i0.ɵɵelementStart(8, "div",
|
|
1069
|
-
i0.ɵɵelement(9, "i",
|
|
1094
|
+
i0.ɵɵelementStart(8, "div", 266);
|
|
1095
|
+
i0.ɵɵelement(9, "i", 268);
|
|
1070
1096
|
i0.ɵɵelementStart(10, "strong");
|
|
1071
1097
|
i0.ɵɵtext(11, "Related Sub-Agents");
|
|
1072
1098
|
i0.ɵɵelementEnd();
|
|
@@ -1075,140 +1101,140 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1075
1101
|
i0.ɵɵelementEnd()()()();
|
|
1076
1102
|
} }
|
|
1077
1103
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1078
|
-
i0.ɵɵelement(0, "img",
|
|
1104
|
+
i0.ɵɵelement(0, "img", 272);
|
|
1079
1105
|
} if (rf & 2) {
|
|
1080
|
-
const
|
|
1081
|
-
i0.ɵɵproperty("src",
|
|
1106
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1107
|
+
i0.ɵɵproperty("src", item_r29.agent.LogoURL, i0.ɵɵsanitizeUrl)("alt", item_r29.agent.Name + " logo");
|
|
1082
1108
|
} }
|
|
1083
1109
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1084
1110
|
i0.ɵɵelement(0, "i");
|
|
1085
1111
|
} if (rf & 2) {
|
|
1086
|
-
const
|
|
1112
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1087
1113
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1088
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(
|
|
1114
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(item_r29.agent));
|
|
1089
1115
|
} }
|
|
1090
1116
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1091
|
-
i0.ɵɵelementStart(0, "div",
|
|
1117
|
+
i0.ɵɵelementStart(0, "div", 247);
|
|
1092
1118
|
i0.ɵɵtext(1);
|
|
1093
1119
|
i0.ɵɵelementEnd();
|
|
1094
1120
|
} if (rf & 2) {
|
|
1095
|
-
const
|
|
1121
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1096
1122
|
i0.ɵɵadvance();
|
|
1097
|
-
i0.ɵɵtextInterpolate(
|
|
1123
|
+
i0.ɵɵtextInterpolate(item_r29.agent.Description);
|
|
1098
1124
|
} }
|
|
1099
1125
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
1100
|
-
i0.ɵɵelementStart(0, "span",
|
|
1126
|
+
i0.ɵɵelementStart(0, "span", 250);
|
|
1101
1127
|
i0.ɵɵtext(1);
|
|
1102
1128
|
i0.ɵɵelementEnd();
|
|
1103
1129
|
} if (rf & 2) {
|
|
1104
|
-
const
|
|
1130
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1105
1131
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1106
1132
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
1107
1133
|
i0.ɵɵadvance();
|
|
1108
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1134
|
+
i0.ɵɵtextInterpolate1(" ", item_r29.agent.Status, " ");
|
|
1109
1135
|
} }
|
|
1110
1136
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1111
|
-
i0.ɵɵelementStart(0, "span",
|
|
1137
|
+
i0.ɵɵelementStart(0, "span", 249);
|
|
1112
1138
|
i0.ɵɵtext(1);
|
|
1113
1139
|
i0.ɵɵelementEnd();
|
|
1114
1140
|
} if (rf & 2) {
|
|
1115
|
-
const
|
|
1141
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1116
1142
|
i0.ɵɵadvance();
|
|
1117
|
-
i0.ɵɵtextInterpolate(
|
|
1143
|
+
i0.ɵɵtextInterpolate(item_r29.agent.Type);
|
|
1118
1144
|
} }
|
|
1119
1145
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1120
|
-
const
|
|
1121
|
-
i0.ɵɵelementStart(0, "button",
|
|
1122
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1123
|
-
i0.ɵɵelement(1, "i",
|
|
1146
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
1147
|
+
i0.ɵɵelementStart(0, "button", 279);
|
|
1148
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r30); const item_r29 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureOutputMapping(item_r29, $event)); });
|
|
1149
|
+
i0.ɵɵelement(1, "i", 280);
|
|
1124
1150
|
i0.ɵɵelementEnd();
|
|
1125
1151
|
} }
|
|
1126
1152
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1127
|
-
const
|
|
1128
|
-
i0.ɵɵelementStart(0, "button",
|
|
1129
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1130
|
-
i0.ɵɵelement(1, "i",
|
|
1153
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
1154
|
+
i0.ɵɵelementStart(0, "button", 281);
|
|
1155
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r31); const item_r29 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(item_r29.agent, $event)); });
|
|
1156
|
+
i0.ɵɵelement(1, "i", 207);
|
|
1131
1157
|
i0.ɵɵelementEnd();
|
|
1132
1158
|
} }
|
|
1133
1159
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1134
|
-
const
|
|
1135
|
-
i0.ɵɵelementStart(0, "button",
|
|
1136
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1160
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
1161
|
+
i0.ɵɵelementStart(0, "button", 282);
|
|
1162
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r32); const item_r29 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(item_r29.type === "child" ? ctx_r1.removeChildSubAgent(item_r29, $event) : ctx_r1.unlinkRelatedSubAgent(item_r29, $event)); });
|
|
1137
1163
|
i0.ɵɵelement(1, "i");
|
|
1138
1164
|
i0.ɵɵelementEnd();
|
|
1139
1165
|
} if (rf & 2) {
|
|
1140
|
-
const
|
|
1141
|
-
i0.ɵɵproperty("title",
|
|
1166
|
+
const item_r29 = i0.ɵɵnextContext(2).$implicit;
|
|
1167
|
+
i0.ɵɵproperty("title", item_r29.type === "child" ? "Delete child sub-agent" : "Unlink related sub-agent");
|
|
1142
1168
|
i0.ɵɵadvance();
|
|
1143
|
-
i0.ɵɵclassMap(
|
|
1169
|
+
i0.ɵɵclassMap(item_r29.type === "child" ? "fa-solid fa-trash" : "fa-solid fa-unlink");
|
|
1144
1170
|
} }
|
|
1145
1171
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1146
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button",
|
|
1147
|
-
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button",
|
|
1148
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button",
|
|
1172
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button", 276);
|
|
1173
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button", 277);
|
|
1174
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button", 278);
|
|
1149
1175
|
} if (rf & 2) {
|
|
1150
|
-
const
|
|
1176
|
+
const item_r29 = i0.ɵɵnextContext().$implicit;
|
|
1151
1177
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1152
|
-
i0.ɵɵconditional(
|
|
1178
|
+
i0.ɵɵconditional(item_r29.type === "related" ? 0 : -1);
|
|
1153
1179
|
i0.ɵɵadvance();
|
|
1154
|
-
i0.ɵɵconditional(
|
|
1180
|
+
i0.ɵɵconditional(item_r29.type === "child" && ctx_r1.UserCanCreateSubAgents ? 1 : -1);
|
|
1155
1181
|
i0.ɵɵadvance();
|
|
1156
1182
|
i0.ɵɵconditional(ctx_r1.UserCanDeleteSubAgents ? 2 : -1);
|
|
1157
1183
|
} }
|
|
1158
1184
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1159
|
-
const
|
|
1160
|
-
i0.ɵɵelementStart(0, "div",
|
|
1161
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template_div_click_0_listener() { const
|
|
1162
|
-
i0.ɵɵelementStart(1, "div",
|
|
1185
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
1186
|
+
i0.ɵɵelementStart(0, "div", 270);
|
|
1187
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template_div_click_0_listener() { const item_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", item_r29.agent.ID)); });
|
|
1188
|
+
i0.ɵɵelementStart(1, "div", 271);
|
|
1163
1189
|
i0.ɵɵelement(2, "i");
|
|
1164
1190
|
i0.ɵɵtext(3);
|
|
1165
1191
|
i0.ɵɵelementEnd();
|
|
1166
|
-
i0.ɵɵelementStart(4, "div",
|
|
1167
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img",
|
|
1192
|
+
i0.ɵɵelementStart(4, "div", 244);
|
|
1193
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img", 272)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_6_Template, 1, 2, "i", 16);
|
|
1168
1194
|
i0.ɵɵelementEnd();
|
|
1169
|
-
i0.ɵɵelementStart(7, "div",
|
|
1195
|
+
i0.ɵɵelementStart(7, "div", 245)(8, "div", 246);
|
|
1170
1196
|
i0.ɵɵtext(9);
|
|
1171
1197
|
i0.ɵɵelementEnd();
|
|
1172
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div",
|
|
1173
|
-
i0.ɵɵelementStart(11, "div",
|
|
1174
|
-
i0.ɵɵelement(13, "i",
|
|
1198
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div", 247);
|
|
1199
|
+
i0.ɵɵelementStart(11, "div", 248)(12, "span", 273);
|
|
1200
|
+
i0.ɵɵelement(13, "i", 274);
|
|
1175
1201
|
i0.ɵɵtext(14);
|
|
1176
1202
|
i0.ɵɵelementEnd();
|
|
1177
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span",
|
|
1178
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span",
|
|
1203
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span", 275);
|
|
1204
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span", 249);
|
|
1179
1205
|
i0.ɵɵelementEnd()();
|
|
1180
|
-
i0.ɵɵelementStart(17, "div",
|
|
1206
|
+
i0.ɵɵelementStart(17, "div", 251);
|
|
1181
1207
|
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Template, 3, 3);
|
|
1182
|
-
i0.ɵɵelement(19, "i",
|
|
1208
|
+
i0.ɵɵelement(19, "i", 231);
|
|
1183
1209
|
i0.ɵɵelementEnd()();
|
|
1184
1210
|
} if (rf & 2) {
|
|
1185
|
-
const
|
|
1211
|
+
const item_r29 = ctx.$implicit;
|
|
1186
1212
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1187
|
-
i0.ɵɵclassProp("child-sub-agent",
|
|
1213
|
+
i0.ɵɵclassProp("child-sub-agent", item_r29.type === "child")("related-sub-agent", item_r29.type === "related");
|
|
1188
1214
|
i0.ɵɵadvance();
|
|
1189
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getSubAgentBadgeColor(
|
|
1215
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getSubAgentBadgeColor(item_r29));
|
|
1190
1216
|
i0.ɵɵadvance();
|
|
1191
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentBadgeIcon(
|
|
1217
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentBadgeIcon(item_r29));
|
|
1192
1218
|
i0.ɵɵadvance();
|
|
1193
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentBadgeText(
|
|
1219
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentBadgeText(item_r29), " ");
|
|
1194
1220
|
i0.ɵɵadvance(2);
|
|
1195
|
-
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(
|
|
1221
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(item_r29.agent) ? 5 : 6);
|
|
1196
1222
|
i0.ɵɵadvance(4);
|
|
1197
|
-
i0.ɵɵtextInterpolate(
|
|
1223
|
+
i0.ɵɵtextInterpolate(item_r29.agent.Name || "Untitled Sub-Agent");
|
|
1198
1224
|
i0.ɵɵadvance();
|
|
1199
|
-
i0.ɵɵconditional(
|
|
1225
|
+
i0.ɵɵconditional(item_r29.agent.Description ? 10 : -1);
|
|
1200
1226
|
i0.ɵɵadvance(4);
|
|
1201
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentPayloadInfo(
|
|
1227
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentPayloadInfo(item_r29), " ");
|
|
1202
1228
|
i0.ɵɵadvance();
|
|
1203
|
-
i0.ɵɵconditional(
|
|
1229
|
+
i0.ɵɵconditional(item_r29.agent.Status ? 15 : -1);
|
|
1204
1230
|
i0.ɵɵadvance();
|
|
1205
|
-
i0.ɵɵconditional(
|
|
1231
|
+
i0.ɵɵconditional(item_r29.agent.Type ? 16 : -1);
|
|
1206
1232
|
i0.ɵɵadvance(2);
|
|
1207
1233
|
i0.ɵɵconditional(ctx_r1.EditMode ? 18 : -1);
|
|
1208
1234
|
} }
|
|
1209
1235
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1210
|
-
i0.ɵɵelementStart(0, "div",
|
|
1211
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template, 20, 16, "div",
|
|
1236
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
1237
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template, 20, 16, "div", 269, _forTrack2);
|
|
1212
1238
|
i0.ɵɵelementEnd();
|
|
1213
1239
|
} if (rf & 2) {
|
|
1214
1240
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1216,28 +1242,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1216
1242
|
i0.ɵɵrepeater(ctx_r1.filteredSubAgents);
|
|
1217
1243
|
} }
|
|
1218
1244
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1219
|
-
const
|
|
1220
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1221
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Template, 4, 1, "ng-template",
|
|
1222
|
-
i0.ɵɵelementStart(2, "div",
|
|
1223
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(
|
|
1224
|
-
i0.ɵɵelement(7, "i",
|
|
1245
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
1246
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
1247
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
1248
|
+
i0.ɵɵelementStart(2, "div", 63)(3, "div", 256)(4, "div", 257)(5, "div", 258)(6, "button", 259);
|
|
1249
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("all")); });
|
|
1250
|
+
i0.ɵɵelement(7, "i", 136);
|
|
1225
1251
|
i0.ɵɵtext(8);
|
|
1226
1252
|
i0.ɵɵelementEnd();
|
|
1227
|
-
i0.ɵɵelementStart(9, "button",
|
|
1228
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_9_listener() { i0.ɵɵrestoreView(
|
|
1229
|
-
i0.ɵɵelement(10, "i",
|
|
1253
|
+
i0.ɵɵelementStart(9, "button", 259);
|
|
1254
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("child")); });
|
|
1255
|
+
i0.ɵɵelement(10, "i", 260);
|
|
1230
1256
|
i0.ɵɵtext(11);
|
|
1231
1257
|
i0.ɵɵelementEnd();
|
|
1232
|
-
i0.ɵɵelementStart(12, "button",
|
|
1233
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(
|
|
1234
|
-
i0.ɵɵelement(13, "i",
|
|
1258
|
+
i0.ɵɵelementStart(12, "button", 259);
|
|
1259
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("related")); });
|
|
1260
|
+
i0.ɵɵelement(13, "i", 261);
|
|
1235
1261
|
i0.ɵɵtext(14);
|
|
1236
1262
|
i0.ɵɵelementEnd()()();
|
|
1237
|
-
i0.ɵɵelementStart(15, "div",
|
|
1263
|
+
i0.ɵɵelementStart(15, "div", 234);
|
|
1238
1264
|
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template, 6, 0);
|
|
1239
1265
|
i0.ɵɵelementEnd()();
|
|
1240
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template, 14, 0, "mj-empty-state",
|
|
1266
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template, 14, 0, "mj-empty-state", 262)(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_Template, 3, 0, "div", 237);
|
|
1241
1267
|
i0.ɵɵelementEnd()();
|
|
1242
1268
|
} if (rf & 2) {
|
|
1243
1269
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1261,7 +1287,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1261
1287
|
} }
|
|
1262
1288
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1263
1289
|
i0.ɵɵelementStart(0, "span");
|
|
1264
|
-
i0.ɵɵelement(1, "i",
|
|
1290
|
+
i0.ɵɵelement(1, "i", 162);
|
|
1265
1291
|
i0.ɵɵelementEnd();
|
|
1266
1292
|
} }
|
|
1267
1293
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1274,7 +1300,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1274
1300
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.promptCount, ")");
|
|
1275
1301
|
} }
|
|
1276
1302
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1277
|
-
i0.ɵɵelement(0, "i",
|
|
1303
|
+
i0.ɵɵelement(0, "i", 221);
|
|
1278
1304
|
i0.ɵɵtext(1, " Prompts ");
|
|
1279
1305
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1280
1306
|
} if (rf & 2) {
|
|
@@ -1283,9 +1309,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1283
1309
|
i0.ɵɵconditional(ctx_r1.loadingStates.prompts ? 2 : ctx_r1.promptCount > 0 ? 3 : -1);
|
|
1284
1310
|
} }
|
|
1285
1311
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1286
|
-
const
|
|
1287
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1288
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1312
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
1313
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 290);
|
|
1314
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
1289
1315
|
i0.ɵɵelementEnd();
|
|
1290
1316
|
} if (rf & 2) {
|
|
1291
1317
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1293,7 +1319,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1293
1319
|
i0.ɵɵproperty("Data", ctx_r1.modelSelectionModes)("ValuePrimitive", true);
|
|
1294
1320
|
} }
|
|
1295
1321
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1296
|
-
i0.ɵɵelementStart(0, "span",
|
|
1322
|
+
i0.ɵɵelementStart(0, "span", 288);
|
|
1297
1323
|
i0.ɵɵtext(1);
|
|
1298
1324
|
i0.ɵɵelementEnd();
|
|
1299
1325
|
} if (rf & 2) {
|
|
@@ -1302,91 +1328,91 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1302
1328
|
i0.ɵɵtextInterpolate(ctx_r1.record.ModelSelectionMode || "Agent Type");
|
|
1303
1329
|
} }
|
|
1304
1330
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1305
|
-
const
|
|
1306
|
-
i0.ɵɵelementStart(0, "button",
|
|
1307
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1308
|
-
i0.ɵɵelement(1, "i",
|
|
1331
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
1332
|
+
i0.ɵɵelementStart(0, "button", 238);
|
|
1333
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1334
|
+
i0.ɵɵelement(1, "i", 239);
|
|
1309
1335
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
1310
1336
|
i0.ɵɵelementEnd();
|
|
1311
1337
|
} }
|
|
1312
1338
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1313
|
-
const
|
|
1314
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1315
|
-
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(
|
|
1339
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
1340
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 291);
|
|
1341
|
+
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1316
1342
|
i0.ɵɵelementEnd();
|
|
1317
1343
|
} if (rf & 2) {
|
|
1318
1344
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1319
1345
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? "Create First Prompt" : "");
|
|
1320
1346
|
} }
|
|
1321
1347
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1322
|
-
i0.ɵɵelementStart(0, "div",
|
|
1348
|
+
i0.ɵɵelementStart(0, "div", 247);
|
|
1323
1349
|
i0.ɵɵtext(1);
|
|
1324
1350
|
i0.ɵɵelementEnd();
|
|
1325
1351
|
} if (rf & 2) {
|
|
1326
|
-
const
|
|
1352
|
+
const prompt_r37 = i0.ɵɵnextContext().$implicit;
|
|
1327
1353
|
i0.ɵɵadvance();
|
|
1328
|
-
i0.ɵɵtextInterpolate2("",
|
|
1354
|
+
i0.ɵɵtextInterpolate2("", prompt_r37.TemplateText.substring(0, 120), "", prompt_r37.TemplateText.length > 120 ? "..." : "");
|
|
1329
1355
|
} }
|
|
1330
1356
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1331
|
-
i0.ɵɵelementStart(0, "span",
|
|
1357
|
+
i0.ɵɵelementStart(0, "span", 249);
|
|
1332
1358
|
i0.ɵɵtext(1);
|
|
1333
1359
|
i0.ɵɵelementEnd();
|
|
1334
1360
|
} if (rf & 2) {
|
|
1335
|
-
const
|
|
1361
|
+
const prompt_r37 = i0.ɵɵnextContext().$implicit;
|
|
1336
1362
|
i0.ɵɵadvance();
|
|
1337
|
-
i0.ɵɵtextInterpolate(
|
|
1363
|
+
i0.ɵɵtextInterpolate(prompt_r37.PromptRole);
|
|
1338
1364
|
} }
|
|
1339
1365
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1340
|
-
const
|
|
1341
|
-
i0.ɵɵelementStart(0, "button",
|
|
1342
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1343
|
-
i0.ɵɵelement(1, "i",
|
|
1366
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
1367
|
+
i0.ɵɵelementStart(0, "button", 281);
|
|
1368
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r38); const prompt_r37 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r37, $event)); });
|
|
1369
|
+
i0.ɵɵelement(1, "i", 207);
|
|
1344
1370
|
i0.ɵɵelementEnd();
|
|
1345
1371
|
} }
|
|
1346
1372
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1347
|
-
const
|
|
1348
|
-
i0.ɵɵelementStart(0, "button",
|
|
1349
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1350
|
-
i0.ɵɵelement(1, "i",
|
|
1373
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
1374
|
+
i0.ɵɵelementStart(0, "button", 296);
|
|
1375
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r39); const prompt_r37 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r37, $event)); });
|
|
1376
|
+
i0.ɵɵelement(1, "i", 254);
|
|
1351
1377
|
i0.ɵɵelementEnd();
|
|
1352
1378
|
} }
|
|
1353
1379
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1354
|
-
const
|
|
1355
|
-
i0.ɵɵelementStart(0, "div",
|
|
1356
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template_div_click_0_listener() { const
|
|
1357
|
-
i0.ɵɵelementStart(1, "div",
|
|
1358
|
-
i0.ɵɵelement(2, "i",
|
|
1380
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
1381
|
+
i0.ɵɵelementStart(0, "div", 293);
|
|
1382
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template_div_click_0_listener() { const prompt_r37 = i0.ɵɵrestoreView(_r36).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", prompt_r37.ID)); });
|
|
1383
|
+
i0.ɵɵelementStart(1, "div", 244);
|
|
1384
|
+
i0.ɵɵelement(2, "i", 294);
|
|
1359
1385
|
i0.ɵɵelementEnd();
|
|
1360
|
-
i0.ɵɵelementStart(3, "div",
|
|
1386
|
+
i0.ɵɵelementStart(3, "div", 245)(4, "div", 246);
|
|
1361
1387
|
i0.ɵɵtext(5);
|
|
1362
1388
|
i0.ɵɵelementEnd();
|
|
1363
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1364
|
-
i0.ɵɵelementStart(7, "div",
|
|
1365
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1389
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div", 247);
|
|
1390
|
+
i0.ɵɵelementStart(7, "div", 248);
|
|
1391
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span", 249);
|
|
1366
1392
|
i0.ɵɵelementEnd()();
|
|
1367
|
-
i0.ɵɵelementStart(9, "div",
|
|
1368
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button",
|
|
1369
|
-
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button",
|
|
1370
|
-
i0.ɵɵelement(12, "i",
|
|
1393
|
+
i0.ɵɵelementStart(9, "div", 251);
|
|
1394
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button", 277);
|
|
1395
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button", 295);
|
|
1396
|
+
i0.ɵɵelement(12, "i", 231);
|
|
1371
1397
|
i0.ɵɵelementEnd()();
|
|
1372
1398
|
} if (rf & 2) {
|
|
1373
|
-
const
|
|
1399
|
+
const prompt_r37 = ctx.$implicit;
|
|
1374
1400
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1375
1401
|
i0.ɵɵadvance(5);
|
|
1376
|
-
i0.ɵɵtextInterpolate(
|
|
1402
|
+
i0.ɵɵtextInterpolate(prompt_r37.Name);
|
|
1377
1403
|
i0.ɵɵadvance();
|
|
1378
|
-
i0.ɵɵconditional(
|
|
1404
|
+
i0.ɵɵconditional(prompt_r37.TemplateText ? 6 : -1);
|
|
1379
1405
|
i0.ɵɵadvance(2);
|
|
1380
|
-
i0.ɵɵconditional(
|
|
1406
|
+
i0.ɵɵconditional(prompt_r37.PromptRole ? 8 : -1);
|
|
1381
1407
|
i0.ɵɵadvance(2);
|
|
1382
1408
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePrompts ? 10 : -1);
|
|
1383
1409
|
i0.ɵɵadvance();
|
|
1384
1410
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeletePrompts ? 11 : -1);
|
|
1385
1411
|
} }
|
|
1386
1412
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1387
|
-
const
|
|
1388
|
-
i0.ɵɵelementStart(0, "div",
|
|
1389
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1413
|
+
const _r40 = i0.ɵɵgetCurrentView();
|
|
1414
|
+
i0.ɵɵelementStart(0, "div", 255);
|
|
1415
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", "")); });
|
|
1390
1416
|
i0.ɵɵelementStart(1, "span");
|
|
1391
1417
|
i0.ɵɵtext(2);
|
|
1392
1418
|
i0.ɵɵelementEnd()();
|
|
@@ -1396,9 +1422,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1396
1422
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
1397
1423
|
} }
|
|
1398
1424
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1399
|
-
i0.ɵɵelementStart(0, "div",
|
|
1400
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template, 13, 5, "div",
|
|
1401
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template, 3, 1, "div",
|
|
1425
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
1426
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template, 13, 5, "div", 292, _forTrack1);
|
|
1427
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template, 3, 1, "div", 242);
|
|
1402
1428
|
i0.ɵɵelementEnd();
|
|
1403
1429
|
} if (rf & 2) {
|
|
1404
1430
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1408,18 +1434,18 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1408
1434
|
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
1409
1435
|
} }
|
|
1410
1436
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1411
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1412
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template, 4, 1, "ng-template",
|
|
1413
|
-
i0.ɵɵelementStart(2, "div",
|
|
1414
|
-
i0.ɵɵelement(7, "i",
|
|
1437
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 57);
|
|
1438
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
1439
|
+
i0.ɵɵelementStart(2, "div", 63)(3, "div", 64)(4, "div", 283)(5, "div", 284)(6, "label", 285);
|
|
1440
|
+
i0.ɵɵelement(7, "i", 286);
|
|
1415
1441
|
i0.ɵɵtext(8, " Model Selection: ");
|
|
1416
1442
|
i0.ɵɵelementEnd();
|
|
1417
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template, 1, 3, "mj-dropdown",
|
|
1443
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template, 1, 3, "mj-dropdown", 287)(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_10_Template, 2, 1, "span", 288);
|
|
1418
1444
|
i0.ɵɵelementEnd()();
|
|
1419
|
-
i0.ɵɵelementStart(11, "div",
|
|
1420
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template, 3, 0, "button",
|
|
1445
|
+
i0.ɵɵelementStart(11, "div", 234);
|
|
1446
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template, 3, 0, "button", 235);
|
|
1421
1447
|
i0.ɵɵelementEnd()();
|
|
1422
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template, 1, 1, "mj-empty-state",
|
|
1448
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template, 1, 1, "mj-empty-state", 289)(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Template, 4, 1, "div", 237);
|
|
1423
1449
|
i0.ɵɵelementEnd()();
|
|
1424
1450
|
} if (rf & 2) {
|
|
1425
1451
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1433,7 +1459,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1433
1459
|
} }
|
|
1434
1460
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1435
1461
|
i0.ɵɵelementStart(0, "span");
|
|
1436
|
-
i0.ɵɵelement(1, "i",
|
|
1462
|
+
i0.ɵɵelement(1, "i", 162);
|
|
1437
1463
|
i0.ɵɵelementEnd();
|
|
1438
1464
|
} }
|
|
1439
1465
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1446,7 +1472,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1446
1472
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.learningCycleCount, ")");
|
|
1447
1473
|
} }
|
|
1448
1474
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1449
|
-
i0.ɵɵelement(0, "i",
|
|
1475
|
+
i0.ɵɵelement(0, "i", 298);
|
|
1450
1476
|
i0.ɵɵtext(1, " Learning Cycles ");
|
|
1451
1477
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1452
1478
|
} if (rf & 2) {
|
|
@@ -1455,58 +1481,58 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1455
1481
|
i0.ɵɵconditional(ctx_r1.loadingStates.learningCycles ? 2 : ctx_r1.learningCycleCount > 0 ? 3 : -1);
|
|
1456
1482
|
} }
|
|
1457
1483
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1458
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
1484
|
+
i0.ɵɵelement(0, "mj-empty-state", 297);
|
|
1459
1485
|
} }
|
|
1460
1486
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1461
|
-
i0.ɵɵelementStart(0, "span",
|
|
1462
|
-
i0.ɵɵelement(1, "i",
|
|
1487
|
+
i0.ɵɵelementStart(0, "span", 249);
|
|
1488
|
+
i0.ɵɵelement(1, "i", 301);
|
|
1463
1489
|
i0.ɵɵtext(2);
|
|
1464
1490
|
i0.ɵɵpipe(3, "date");
|
|
1465
1491
|
i0.ɵɵelementEnd();
|
|
1466
1492
|
} if (rf & 2) {
|
|
1467
|
-
const
|
|
1493
|
+
const cycle_r42 = i0.ɵɵnextContext().$implicit;
|
|
1468
1494
|
i0.ɵɵadvance(2);
|
|
1469
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1495
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r42.StartedAt, "short"), " ");
|
|
1470
1496
|
} }
|
|
1471
1497
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1472
|
-
i0.ɵɵelementStart(0, "span",
|
|
1498
|
+
i0.ɵɵelementStart(0, "span", 250);
|
|
1473
1499
|
i0.ɵɵtext(1);
|
|
1474
1500
|
i0.ɵɵelementEnd();
|
|
1475
1501
|
} if (rf & 2) {
|
|
1476
|
-
const
|
|
1502
|
+
const cycle_r42 = i0.ɵɵnextContext().$implicit;
|
|
1477
1503
|
i0.ɵɵadvance();
|
|
1478
|
-
i0.ɵɵtextInterpolate(
|
|
1504
|
+
i0.ɵɵtextInterpolate(cycle_r42.Status);
|
|
1479
1505
|
} }
|
|
1480
1506
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1481
|
-
const
|
|
1482
|
-
i0.ɵɵelementStart(0, "div",
|
|
1483
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template_div_click_0_listener() { const
|
|
1484
|
-
i0.ɵɵelementStart(1, "div",
|
|
1485
|
-
i0.ɵɵelement(2, "i",
|
|
1507
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
1508
|
+
i0.ɵɵelementStart(0, "div", 300);
|
|
1509
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template_div_click_0_listener() { const cycle_r42 = i0.ɵɵrestoreView(_r41).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", cycle_r42.ID)); });
|
|
1510
|
+
i0.ɵɵelementStart(1, "div", 244);
|
|
1511
|
+
i0.ɵɵelement(2, "i", 298);
|
|
1486
1512
|
i0.ɵɵelementEnd();
|
|
1487
|
-
i0.ɵɵelementStart(3, "div",
|
|
1513
|
+
i0.ɵɵelementStart(3, "div", 245)(4, "div", 246);
|
|
1488
1514
|
i0.ɵɵtext(5);
|
|
1489
1515
|
i0.ɵɵelementEnd();
|
|
1490
|
-
i0.ɵɵelementStart(6, "div",
|
|
1491
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span",
|
|
1492
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1516
|
+
i0.ɵɵelementStart(6, "div", 248);
|
|
1517
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span", 249);
|
|
1518
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span", 250);
|
|
1493
1519
|
i0.ɵɵelementEnd()();
|
|
1494
|
-
i0.ɵɵelementStart(9, "div",
|
|
1495
|
-
i0.ɵɵelement(10, "i",
|
|
1520
|
+
i0.ɵɵelementStart(9, "div", 251);
|
|
1521
|
+
i0.ɵɵelement(10, "i", 231);
|
|
1496
1522
|
i0.ɵɵelementEnd()();
|
|
1497
1523
|
} if (rf & 2) {
|
|
1498
|
-
const
|
|
1524
|
+
const cycle_r42 = ctx.$implicit;
|
|
1499
1525
|
i0.ɵɵadvance(5);
|
|
1500
|
-
i0.ɵɵtextInterpolate1("Learning Cycle ",
|
|
1526
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r42.ID.substring(0, 8));
|
|
1501
1527
|
i0.ɵɵadvance(2);
|
|
1502
|
-
i0.ɵɵconditional(
|
|
1528
|
+
i0.ɵɵconditional(cycle_r42.StartedAt ? 7 : -1);
|
|
1503
1529
|
i0.ɵɵadvance();
|
|
1504
|
-
i0.ɵɵconditional(
|
|
1530
|
+
i0.ɵɵconditional(cycle_r42.Status ? 8 : -1);
|
|
1505
1531
|
} }
|
|
1506
1532
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1507
|
-
const
|
|
1508
|
-
i0.ɵɵelementStart(0, "div",
|
|
1509
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1533
|
+
const _r43 = i0.ɵɵgetCurrentView();
|
|
1534
|
+
i0.ɵɵelementStart(0, "div", 255);
|
|
1535
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", "")); });
|
|
1510
1536
|
i0.ɵɵelementStart(1, "span");
|
|
1511
1537
|
i0.ɵɵtext(2);
|
|
1512
1538
|
i0.ɵɵelementEnd()();
|
|
@@ -1516,9 +1542,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1516
1542
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
1517
1543
|
} }
|
|
1518
1544
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1519
|
-
i0.ɵɵelementStart(0, "div",
|
|
1520
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template, 11, 3, "div",
|
|
1521
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template, 3, 1, "div",
|
|
1545
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
1546
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template, 11, 3, "div", 299, _forTrack1);
|
|
1547
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template, 3, 1, "div", 242);
|
|
1522
1548
|
i0.ɵɵelementEnd();
|
|
1523
1549
|
} if (rf & 2) {
|
|
1524
1550
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1528,12 +1554,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1528
1554
|
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
1529
1555
|
} }
|
|
1530
1556
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1531
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1532
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template, 4, 1, "ng-template",
|
|
1533
|
-
i0.ɵɵelementStart(2, "div",
|
|
1557
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 58);
|
|
1558
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
1559
|
+
i0.ɵɵelementStart(2, "div", 63)(3, "div", 64)(4, "div", 65);
|
|
1534
1560
|
i0.ɵɵtext(5, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
1535
1561
|
i0.ɵɵelementEnd()();
|
|
1536
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template, 1, 0, "mj-empty-state",
|
|
1562
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template, 1, 0, "mj-empty-state", 297)(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Template, 4, 1, "div", 237);
|
|
1537
1563
|
i0.ɵɵelementEnd()();
|
|
1538
1564
|
} if (rf & 2) {
|
|
1539
1565
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1543,7 +1569,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1543
1569
|
} }
|
|
1544
1570
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1545
1571
|
i0.ɵɵelementStart(0, "span");
|
|
1546
|
-
i0.ɵɵelement(1, "i",
|
|
1572
|
+
i0.ɵɵelement(1, "i", 162);
|
|
1547
1573
|
i0.ɵɵelementEnd();
|
|
1548
1574
|
} }
|
|
1549
1575
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1556,7 +1582,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1556
1582
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.noteCount, ")");
|
|
1557
1583
|
} }
|
|
1558
1584
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1559
|
-
i0.ɵɵelement(0, "i",
|
|
1585
|
+
i0.ɵɵelement(0, "i", 303);
|
|
1560
1586
|
i0.ɵɵtext(1, " Notes ");
|
|
1561
1587
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_2_Template, 2, 0, "span")(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1562
1588
|
} if (rf & 2) {
|
|
@@ -1565,72 +1591,72 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1565
1591
|
i0.ɵɵconditional(ctx_r1.loadingStates.notes ? 2 : ctx_r1.noteCount > 0 ? 3 : -1);
|
|
1566
1592
|
} }
|
|
1567
1593
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1568
|
-
const
|
|
1569
|
-
i0.ɵɵelementStart(0, "button",
|
|
1570
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1571
|
-
i0.ɵɵelement(1, "i",
|
|
1594
|
+
const _r44 = i0.ɵɵgetCurrentView();
|
|
1595
|
+
i0.ɵɵelementStart(0, "button", 238);
|
|
1596
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1597
|
+
i0.ɵɵelement(1, "i", 239);
|
|
1572
1598
|
i0.ɵɵtext(2, " Add Note ");
|
|
1573
1599
|
i0.ɵɵelementEnd();
|
|
1574
1600
|
} }
|
|
1575
1601
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1576
|
-
const
|
|
1577
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1578
|
-
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(
|
|
1602
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
1603
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 304);
|
|
1604
|
+
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1579
1605
|
i0.ɵɵelementEnd();
|
|
1580
1606
|
} if (rf & 2) {
|
|
1581
1607
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1582
1608
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? "Create First Note" : "");
|
|
1583
1609
|
} }
|
|
1584
1610
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1585
|
-
i0.ɵɵelementStart(0, "div",
|
|
1611
|
+
i0.ɵɵelementStart(0, "div", 247);
|
|
1586
1612
|
i0.ɵɵtext(1);
|
|
1587
1613
|
i0.ɵɵelementEnd();
|
|
1588
1614
|
} if (rf & 2) {
|
|
1589
|
-
const
|
|
1615
|
+
const note_r47 = i0.ɵɵnextContext().$implicit;
|
|
1590
1616
|
i0.ɵɵadvance();
|
|
1591
|
-
i0.ɵɵtextInterpolate2("",
|
|
1617
|
+
i0.ɵɵtextInterpolate2("", note_r47.Note.substring(0, 100), "", note_r47.Note.length > 100 ? "..." : "");
|
|
1592
1618
|
} }
|
|
1593
1619
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1594
|
-
i0.ɵɵelementStart(0, "span",
|
|
1595
|
-
i0.ɵɵelement(1, "i",
|
|
1620
|
+
i0.ɵɵelementStart(0, "span", 249);
|
|
1621
|
+
i0.ɵɵelement(1, "i", 301);
|
|
1596
1622
|
i0.ɵɵtext(2);
|
|
1597
1623
|
i0.ɵɵpipe(3, "date");
|
|
1598
1624
|
i0.ɵɵelementEnd();
|
|
1599
1625
|
} if (rf & 2) {
|
|
1600
|
-
const
|
|
1626
|
+
const note_r47 = i0.ɵɵnextContext().$implicit;
|
|
1601
1627
|
i0.ɵɵadvance(2);
|
|
1602
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1628
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r47.__mj_CreatedAt, "short"), " ");
|
|
1603
1629
|
} }
|
|
1604
1630
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1605
|
-
const
|
|
1606
|
-
i0.ɵɵelementStart(0, "div",
|
|
1607
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template_div_click_0_listener() { const
|
|
1608
|
-
i0.ɵɵelementStart(1, "div",
|
|
1609
|
-
i0.ɵɵelement(2, "i",
|
|
1631
|
+
const _r46 = i0.ɵɵgetCurrentView();
|
|
1632
|
+
i0.ɵɵelementStart(0, "div", 306);
|
|
1633
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template_div_click_0_listener() { const note_r47 = i0.ɵɵrestoreView(_r46).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", note_r47.ID)); });
|
|
1634
|
+
i0.ɵɵelementStart(1, "div", 244);
|
|
1635
|
+
i0.ɵɵelement(2, "i", 303);
|
|
1610
1636
|
i0.ɵɵelementEnd();
|
|
1611
|
-
i0.ɵɵelementStart(3, "div",
|
|
1637
|
+
i0.ɵɵelementStart(3, "div", 245)(4, "div", 246);
|
|
1612
1638
|
i0.ɵɵtext(5);
|
|
1613
1639
|
i0.ɵɵelementEnd();
|
|
1614
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1615
|
-
i0.ɵɵelementStart(7, "div",
|
|
1616
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span",
|
|
1640
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div", 247);
|
|
1641
|
+
i0.ɵɵelementStart(7, "div", 248);
|
|
1642
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span", 249);
|
|
1617
1643
|
i0.ɵɵelementEnd()();
|
|
1618
|
-
i0.ɵɵelementStart(9, "div",
|
|
1619
|
-
i0.ɵɵelement(10, "i",
|
|
1644
|
+
i0.ɵɵelementStart(9, "div", 251);
|
|
1645
|
+
i0.ɵɵelement(10, "i", 231);
|
|
1620
1646
|
i0.ɵɵelementEnd()();
|
|
1621
1647
|
} if (rf & 2) {
|
|
1622
|
-
const
|
|
1648
|
+
const note_r47 = ctx.$implicit;
|
|
1623
1649
|
i0.ɵɵadvance(5);
|
|
1624
|
-
i0.ɵɵtextInterpolate(
|
|
1650
|
+
i0.ɵɵtextInterpolate(note_r47.Type || "Note");
|
|
1625
1651
|
i0.ɵɵadvance();
|
|
1626
|
-
i0.ɵɵconditional(
|
|
1652
|
+
i0.ɵɵconditional(note_r47.Note ? 6 : -1);
|
|
1627
1653
|
i0.ɵɵadvance(2);
|
|
1628
|
-
i0.ɵɵconditional(
|
|
1654
|
+
i0.ɵɵconditional(note_r47.__mj_CreatedAt ? 8 : -1);
|
|
1629
1655
|
} }
|
|
1630
1656
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1631
|
-
const
|
|
1632
|
-
i0.ɵɵelementStart(0, "div",
|
|
1633
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1657
|
+
const _r48 = i0.ɵɵgetCurrentView();
|
|
1658
|
+
i0.ɵɵelementStart(0, "div", 255);
|
|
1659
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", "")); });
|
|
1634
1660
|
i0.ɵɵelementStart(1, "span");
|
|
1635
1661
|
i0.ɵɵtext(2);
|
|
1636
1662
|
i0.ɵɵelementEnd()();
|
|
@@ -1640,9 +1666,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1640
1666
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
1641
1667
|
} }
|
|
1642
1668
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1643
|
-
i0.ɵɵelementStart(0, "div",
|
|
1644
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template, 11, 3, "div",
|
|
1645
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template, 3, 1, "div",
|
|
1669
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
1670
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template, 11, 3, "div", 305, _forTrack1);
|
|
1671
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template, 3, 1, "div", 242);
|
|
1646
1672
|
i0.ɵɵelementEnd();
|
|
1647
1673
|
} if (rf & 2) {
|
|
1648
1674
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1652,15 +1678,15 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1652
1678
|
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
1653
1679
|
} }
|
|
1654
1680
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1655
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1656
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template, 4, 1, "ng-template",
|
|
1657
|
-
i0.ɵɵelementStart(2, "div",
|
|
1681
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 59);
|
|
1682
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template, 4, 1, "ng-template", 62);
|
|
1683
|
+
i0.ɵɵelementStart(2, "div", 63)(3, "div", 64)(4, "div", 65);
|
|
1658
1684
|
i0.ɵɵtext(5, " Manage notes, documentation, and annotations for this agent. ");
|
|
1659
1685
|
i0.ɵɵelementEnd();
|
|
1660
|
-
i0.ɵɵelementStart(6, "div",
|
|
1661
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template, 3, 0, "button",
|
|
1686
|
+
i0.ɵɵelementStart(6, "div", 234);
|
|
1687
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template, 3, 0, "button", 235);
|
|
1662
1688
|
i0.ɵɵelementEnd()();
|
|
1663
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template, 1, 1, "mj-empty-state",
|
|
1689
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template, 1, 1, "mj-empty-state", 302)(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Template, 4, 1, "div", 237);
|
|
1664
1690
|
i0.ɵɵelementEnd()();
|
|
1665
1691
|
} if (rf & 2) {
|
|
1666
1692
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1671,21 +1697,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1671
1697
|
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 8 : 9);
|
|
1672
1698
|
} }
|
|
1673
1699
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1674
|
-
i0.ɵɵelement(0, "i",
|
|
1700
|
+
i0.ɵɵelement(0, "i", 318);
|
|
1675
1701
|
i0.ɵɵtext(1, " Search ");
|
|
1676
1702
|
} }
|
|
1677
1703
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1678
|
-
i0.ɵɵelementStart(0, "div",
|
|
1704
|
+
i0.ɵɵelementStart(0, "div", 325);
|
|
1679
1705
|
i0.ɵɵtext(1, "Loading permissions\u2026");
|
|
1680
1706
|
i0.ɵɵelementEnd();
|
|
1681
1707
|
} }
|
|
1682
1708
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
1683
|
-
i0.ɵɵelementStart(0, "div",
|
|
1709
|
+
i0.ɵɵelementStart(0, "div", 326);
|
|
1684
1710
|
i0.ɵɵtext(1, " No scopes assigned yet \u2014 permissions will appear here once you add scopes above. ");
|
|
1685
1711
|
i0.ɵɵelementEnd();
|
|
1686
1712
|
} }
|
|
1687
1713
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1688
|
-
i0.ɵɵelementStart(0, "div",
|
|
1714
|
+
i0.ɵɵelementStart(0, "div", 329);
|
|
1689
1715
|
i0.ɵɵtext(1, " No explicit permissions. Users need a Search grant (directly or through a role) unless this agent's access is ");
|
|
1690
1716
|
i0.ɵɵelementStart(2, "code");
|
|
1691
1717
|
i0.ɵɵtext(3, "All");
|
|
@@ -1694,12 +1720,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1694
1720
|
i0.ɵɵelementEnd();
|
|
1695
1721
|
} }
|
|
1696
1722
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1697
|
-
i0.ɵɵelementStart(0, "li",
|
|
1698
|
-
i0.ɵɵelement(1, "i",
|
|
1723
|
+
i0.ɵɵelementStart(0, "li", 331);
|
|
1724
|
+
i0.ɵɵelement(1, "i", 37);
|
|
1699
1725
|
i0.ɵɵelementStart(2, "strong");
|
|
1700
1726
|
i0.ɵɵtext(3);
|
|
1701
1727
|
i0.ɵɵelementEnd();
|
|
1702
|
-
i0.ɵɵelementStart(4, "span",
|
|
1728
|
+
i0.ɵɵelementStart(4, "span", 325);
|
|
1703
1729
|
i0.ɵɵtext(5);
|
|
1704
1730
|
i0.ɵɵelementEnd();
|
|
1705
1731
|
i0.ɵɵtext(6, " \u2014 ");
|
|
@@ -1707,52 +1733,52 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1707
1733
|
i0.ɵɵtext(8);
|
|
1708
1734
|
i0.ɵɵelementEnd()();
|
|
1709
1735
|
} if (rf & 2) {
|
|
1710
|
-
const
|
|
1736
|
+
const p_r51 = ctx.$implicit;
|
|
1711
1737
|
i0.ɵɵadvance();
|
|
1712
|
-
i0.ɵɵclassProp("fa-user",
|
|
1738
|
+
i0.ɵɵclassProp("fa-user", p_r51.PrincipalType === "User")("fa-users", p_r51.PrincipalType === "Role");
|
|
1713
1739
|
i0.ɵɵadvance(2);
|
|
1714
|
-
i0.ɵɵtextInterpolate(
|
|
1740
|
+
i0.ɵɵtextInterpolate(p_r51.Principal);
|
|
1715
1741
|
i0.ɵɵadvance(2);
|
|
1716
|
-
i0.ɵɵtextInterpolate1("(",
|
|
1742
|
+
i0.ɵɵtextInterpolate1("(", p_r51.PrincipalType, ")");
|
|
1717
1743
|
i0.ɵɵadvance(2);
|
|
1718
|
-
i0.ɵɵstyleProp("color",
|
|
1744
|
+
i0.ɵɵstyleProp("color", p_r51.Level === "None" ? "var(--mj-status-error-text)" : "var(--mj-text-primary)");
|
|
1719
1745
|
i0.ɵɵadvance();
|
|
1720
|
-
i0.ɵɵtextInterpolate(
|
|
1746
|
+
i0.ɵɵtextInterpolate(p_r51.Level);
|
|
1721
1747
|
} }
|
|
1722
1748
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1723
|
-
i0.ɵɵelementStart(0, "ul",
|
|
1724
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li",
|
|
1749
|
+
i0.ɵɵelementStart(0, "ul", 330);
|
|
1750
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li", 331, _forTrack4);
|
|
1725
1751
|
i0.ɵɵelementEnd();
|
|
1726
1752
|
} if (rf & 2) {
|
|
1727
|
-
const
|
|
1753
|
+
const s_r52 = i0.ɵɵnextContext().$implicit;
|
|
1728
1754
|
i0.ɵɵadvance();
|
|
1729
|
-
i0.ɵɵrepeater(
|
|
1755
|
+
i0.ɵɵrepeater(s_r52.Permissions);
|
|
1730
1756
|
} }
|
|
1731
1757
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
1732
|
-
i0.ɵɵelementStart(0, "div",
|
|
1758
|
+
i0.ɵɵelementStart(0, "div", 327)(1, "div", 328);
|
|
1733
1759
|
i0.ɵɵtext(2);
|
|
1734
1760
|
i0.ɵɵelementEnd();
|
|
1735
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div",
|
|
1761
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div", 329)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_Template, 3, 0, "ul", 330);
|
|
1736
1762
|
i0.ɵɵelementEnd();
|
|
1737
1763
|
} if (rf & 2) {
|
|
1738
|
-
const
|
|
1764
|
+
const s_r52 = ctx.$implicit;
|
|
1739
1765
|
i0.ɵɵadvance(2);
|
|
1740
|
-
i0.ɵɵtextInterpolate(
|
|
1766
|
+
i0.ɵɵtextInterpolate(s_r52.ScopeName);
|
|
1741
1767
|
i0.ɵɵadvance();
|
|
1742
|
-
i0.ɵɵconditional(
|
|
1768
|
+
i0.ɵɵconditional(s_r52.Permissions.length === 0 ? 3 : 4);
|
|
1743
1769
|
} }
|
|
1744
1770
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
1745
|
-
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div",
|
|
1771
|
+
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div", 327, _forTrack3);
|
|
1746
1772
|
} if (rf & 2) {
|
|
1747
1773
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1748
1774
|
i0.ɵɵrepeater(ctx_r1.PermissionSummary);
|
|
1749
1775
|
} }
|
|
1750
1776
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
1751
|
-
const
|
|
1752
|
-
i0.ɵɵelementStart(0, "div",
|
|
1777
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
1778
|
+
i0.ɵɵelementStart(0, "div", 319)(1, "h4");
|
|
1753
1779
|
i0.ɵɵtext(2, "Assigned Scopes");
|
|
1754
1780
|
i0.ɵɵelementEnd();
|
|
1755
|
-
i0.ɵɵelementStart(3, "p",
|
|
1781
|
+
i0.ɵɵelementStart(3, "p", 65)(4, "strong");
|
|
1756
1782
|
i0.ɵɵtext(5, "Pre-Execution");
|
|
1757
1783
|
i0.ɵɵelementEnd();
|
|
1758
1784
|
i0.ɵɵtext(6, " scopes are searched before the first LLM call, for users who may search them. ");
|
|
@@ -1765,21 +1791,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1765
1791
|
i0.ɵɵelementEnd();
|
|
1766
1792
|
i0.ɵɵtext(12, " covers both paths. ");
|
|
1767
1793
|
i0.ɵɵelementEnd()();
|
|
1768
|
-
i0.ɵɵelementStart(13, "mj-search-scope-child-grid",
|
|
1769
|
-
i0.ɵɵlistener("RowsChanged", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template_mj_search_scope_child_grid_RowsChanged_13_listener() { i0.ɵɵrestoreView(
|
|
1794
|
+
i0.ɵɵelementStart(13, "mj-search-scope-child-grid", 320);
|
|
1795
|
+
i0.ɵɵlistener("RowsChanged", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template_mj_search_scope_child_grid_RowsChanged_13_listener() { i0.ɵɵrestoreView(_r50); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.LoadPermissionSummary()); });
|
|
1770
1796
|
i0.ɵɵelementEnd();
|
|
1771
|
-
i0.ɵɵelementStart(14, "div",
|
|
1772
|
-
i0.ɵɵelement(16, "i",
|
|
1797
|
+
i0.ɵɵelementStart(14, "div", 321)(15, "h4", 322);
|
|
1798
|
+
i0.ɵɵelement(16, "i", 323);
|
|
1773
1799
|
i0.ɵɵtext(17, " Effective scope permissions ");
|
|
1774
1800
|
i0.ɵɵelementEnd();
|
|
1775
|
-
i0.ɵɵelementStart(18, "p",
|
|
1801
|
+
i0.ɵɵelementStart(18, "p", 324);
|
|
1776
1802
|
i0.ɵɵtext(19, " Per-user / per-role grants on the scopes assigned above. Edit grants in ");
|
|
1777
1803
|
i0.ɵɵelementStart(20, "strong");
|
|
1778
1804
|
i0.ɵɵtext(21, "Knowledge Hub Config \u2192 Search Scopes \u2192 Permissions");
|
|
1779
1805
|
i0.ɵɵelementEnd();
|
|
1780
1806
|
i0.ɵɵtext(22, ". ");
|
|
1781
1807
|
i0.ɵɵelementEnd();
|
|
1782
|
-
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template, 2, 0, "div",
|
|
1808
|
+
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template, 2, 0, "div", 325)(24, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_24_Template, 2, 0, "div", 326)(25, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_Template, 2, 0);
|
|
1783
1809
|
i0.ɵɵelementEnd();
|
|
1784
1810
|
} if (rf & 2) {
|
|
1785
1811
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1789,44 +1815,44 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1789
1815
|
i0.ɵɵconditional(ctx_r1.IsLoadingPermissions ? 23 : ctx_r1.PermissionSummary.length === 0 ? 24 : 25);
|
|
1790
1816
|
} }
|
|
1791
1817
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1792
|
-
const
|
|
1793
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1794
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template, 2, 0, "ng-template",
|
|
1795
|
-
i0.ɵɵelementStart(2, "div",
|
|
1818
|
+
const _r49 = i0.ɵɵgetCurrentView();
|
|
1819
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 60);
|
|
1820
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template, 2, 0, "ng-template", 62);
|
|
1821
|
+
i0.ɵɵelementStart(2, "div", 63)(3, "div", 64)(4, "div", 65);
|
|
1796
1822
|
i0.ɵɵtext(5, " Control this agent's access to ");
|
|
1797
1823
|
i0.ɵɵelementStart(6, "strong");
|
|
1798
1824
|
i0.ɵɵtext(7, "Scoped Search");
|
|
1799
1825
|
i0.ɵɵelementEnd();
|
|
1800
1826
|
i0.ɵɵtext(8, " and assign the scopes it can use for pre-execution RAG or agent-invoked search. ");
|
|
1801
1827
|
i0.ɵɵelementEnd()();
|
|
1802
|
-
i0.ɵɵelementStart(9, "div",
|
|
1803
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_11_listener() { i0.ɵɵrestoreView(
|
|
1828
|
+
i0.ɵɵelementStart(9, "div", 307)(10, "label", 308)(11, "input", 309);
|
|
1829
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_11_listener() { i0.ɵɵrestoreView(_r49); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "All"); });
|
|
1804
1830
|
i0.ɵɵelementEnd();
|
|
1805
|
-
i0.ɵɵelement(12, "i",
|
|
1806
|
-
i0.ɵɵelementStart(13, "div",
|
|
1831
|
+
i0.ɵɵelement(12, "i", 310);
|
|
1832
|
+
i0.ɵɵelementStart(13, "div", 311)(14, "div", 312);
|
|
1807
1833
|
i0.ɵɵtext(15, "All");
|
|
1808
1834
|
i0.ɵɵelementEnd();
|
|
1809
|
-
i0.ɵɵelementStart(16, "div",
|
|
1835
|
+
i0.ɵɵelementStart(16, "div", 313);
|
|
1810
1836
|
i0.ɵɵtext(17, "Can use any scope including Global. No scope restriction.");
|
|
1811
1837
|
i0.ɵɵelementEnd()()();
|
|
1812
|
-
i0.ɵɵelementStart(18, "label",
|
|
1813
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_19_listener() { i0.ɵɵrestoreView(
|
|
1838
|
+
i0.ɵɵelementStart(18, "label", 308)(19, "input", 314);
|
|
1839
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_19_listener() { i0.ɵɵrestoreView(_r49); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "Assigned"); });
|
|
1814
1840
|
i0.ɵɵelementEnd();
|
|
1815
|
-
i0.ɵɵelement(20, "i",
|
|
1816
|
-
i0.ɵɵelementStart(21, "div",
|
|
1841
|
+
i0.ɵɵelement(20, "i", 315);
|
|
1842
|
+
i0.ɵɵelementStart(21, "div", 311)(22, "div", 312);
|
|
1817
1843
|
i0.ɵɵtext(23, "Assigned");
|
|
1818
1844
|
i0.ɵɵelementEnd();
|
|
1819
|
-
i0.ɵɵelementStart(24, "div",
|
|
1845
|
+
i0.ɵɵelementStart(24, "div", 313);
|
|
1820
1846
|
i0.ɵɵtext(25, "Can use ONLY scopes listed below, for users with a Search grant on the scope (directly or through a role). Other scopes are rejected with ACCESS_DENIED.");
|
|
1821
1847
|
i0.ɵɵelementEnd()()();
|
|
1822
|
-
i0.ɵɵelementStart(26, "label",
|
|
1823
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_27_listener() { i0.ɵɵrestoreView(
|
|
1848
|
+
i0.ɵɵelementStart(26, "label", 308)(27, "input", 316);
|
|
1849
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_27_listener() { i0.ɵɵrestoreView(_r49); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "None"); });
|
|
1824
1850
|
i0.ɵɵelementEnd();
|
|
1825
|
-
i0.ɵɵelement(28, "i",
|
|
1826
|
-
i0.ɵɵelementStart(29, "div",
|
|
1851
|
+
i0.ɵɵelement(28, "i", 317);
|
|
1852
|
+
i0.ɵɵelementStart(29, "div", 311)(30, "div", 312);
|
|
1827
1853
|
i0.ɵɵtext(31, "None");
|
|
1828
1854
|
i0.ɵɵelementEnd();
|
|
1829
|
-
i0.ɵɵelementStart(32, "div",
|
|
1855
|
+
i0.ɵɵelementStart(32, "div", 313);
|
|
1830
1856
|
i0.ɵɵtext(33, "No search capability. The Scoped Search action and pre-execution retrieval are disabled for this agent.");
|
|
1831
1857
|
i0.ɵɵelementEnd()()()();
|
|
1832
1858
|
i0.ɵɵconditionalCreate(34, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template, 26, 4);
|
|
@@ -1850,21 +1876,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1850
1876
|
i0.ɵɵconditional(ctx_r1.record.SearchScopeAccess !== "None" ? 34 : -1);
|
|
1851
1877
|
} }
|
|
1852
1878
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
1853
|
-
i0.ɵɵelement(0, "i",
|
|
1879
|
+
i0.ɵɵelement(0, "i", 280);
|
|
1854
1880
|
i0.ɵɵtext(1, " Payload Management ");
|
|
1855
1881
|
} }
|
|
1856
1882
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template(rf, ctx) { if (rf & 1) {
|
|
1857
|
-
i0.ɵɵelement(0, "i",
|
|
1883
|
+
i0.ɵɵelement(0, "i", 323);
|
|
1858
1884
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1859
1885
|
} }
|
|
1860
1886
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template(rf, ctx) { if (rf & 1) {
|
|
1861
|
-
i0.ɵɵelement(0, "i",
|
|
1887
|
+
i0.ɵɵelement(0, "i", 332);
|
|
1862
1888
|
i0.ɵɵtext(1, " Configuration ");
|
|
1863
1889
|
} }
|
|
1864
1890
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template(rf, ctx) { if (rf & 1) {
|
|
1865
|
-
const
|
|
1866
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1867
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1891
|
+
const _r53 = i0.ɵɵgetCurrentView();
|
|
1892
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 333);
|
|
1893
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r53); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
1868
1894
|
i0.ɵɵelementEnd();
|
|
1869
1895
|
} if (rf & 2) {
|
|
1870
1896
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1872,7 +1898,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1872
1898
|
i0.ɵɵproperty("Data", ctx_r1.statusOptions)("ValuePrimitive", true);
|
|
1873
1899
|
} }
|
|
1874
1900
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_170_Template(rf, ctx) { if (rf & 1) {
|
|
1875
|
-
i0.ɵɵelementStart(0, "span",
|
|
1901
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
1876
1902
|
i0.ɵɵtext(1);
|
|
1877
1903
|
i0.ɵɵelementEnd();
|
|
1878
1904
|
} if (rf & 2) {
|
|
@@ -1881,9 +1907,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1881
1907
|
i0.ɵɵtextInterpolate(ctx_r1.record.Status || "Not Set");
|
|
1882
1908
|
} }
|
|
1883
1909
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template(rf, ctx) { if (rf & 1) {
|
|
1884
|
-
const
|
|
1885
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1886
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1910
|
+
const _r54 = i0.ɵɵgetCurrentView();
|
|
1911
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 334);
|
|
1912
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
1887
1913
|
i0.ɵɵelementEnd();
|
|
1888
1914
|
} if (rf & 2) {
|
|
1889
1915
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1891,7 +1917,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1891
1917
|
i0.ɵɵproperty("Data", ctx_r1.agentTypes)("ValuePrimitive", true);
|
|
1892
1918
|
} }
|
|
1893
1919
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_182_Template(rf, ctx) { if (rf & 1) {
|
|
1894
|
-
i0.ɵɵelementStart(0, "span",
|
|
1920
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
1895
1921
|
i0.ɵɵtext(1);
|
|
1896
1922
|
i0.ɵɵelementEnd();
|
|
1897
1923
|
} if (rf & 2) {
|
|
@@ -1900,16 +1926,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1900
1926
|
i0.ɵɵtextInterpolate(ctx_r1.record.Type || "Not Set");
|
|
1901
1927
|
} }
|
|
1902
1928
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template(rf, ctx) { if (rf & 1) {
|
|
1903
|
-
const
|
|
1904
|
-
i0.ɵɵelementStart(0, "mj-tree-dropdown",
|
|
1905
|
-
i0.ɵɵlistener("ValueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1929
|
+
const _r55 = i0.ɵɵgetCurrentView();
|
|
1930
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 335);
|
|
1931
|
+
i0.ɵɵlistener("ValueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r55); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnCategoryChange($event)); });
|
|
1906
1932
|
i0.ɵɵelementEnd();
|
|
1907
1933
|
} if (rf & 2) {
|
|
1908
1934
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1909
1935
|
i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("Value", ctx_r1.SelectedCategoryKey)("Clearable", true)("EnableSearch", true);
|
|
1910
1936
|
} }
|
|
1911
1937
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_194_Template(rf, ctx) { if (rf & 1) {
|
|
1912
|
-
i0.ɵɵelementStart(0, "span",
|
|
1938
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
1913
1939
|
i0.ɵɵtext(1);
|
|
1914
1940
|
i0.ɵɵelementEnd();
|
|
1915
1941
|
} if (rf & 2) {
|
|
@@ -1918,7 +1944,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1918
1944
|
i0.ɵɵtextInterpolate(ctx_r1.record.Category || "Not Set");
|
|
1919
1945
|
} }
|
|
1920
1946
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1921
|
-
i0.ɵɵelementStart(0, "span",
|
|
1947
|
+
i0.ɵɵelementStart(0, "span", 342);
|
|
1922
1948
|
i0.ɵɵtext(1);
|
|
1923
1949
|
i0.ɵɵelementEnd();
|
|
1924
1950
|
} if (rf & 2) {
|
|
@@ -1927,28 +1953,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1927
1953
|
i0.ɵɵtextInterpolate(ctx_r1.selectedContextCompressionPrompt.Name);
|
|
1928
1954
|
} }
|
|
1929
1955
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1930
|
-
i0.ɵɵelementStart(0, "span",
|
|
1956
|
+
i0.ɵɵelementStart(0, "span", 343);
|
|
1931
1957
|
i0.ɵɵtext(1, "No prompt selected");
|
|
1932
1958
|
i0.ɵɵelementEnd();
|
|
1933
1959
|
} }
|
|
1934
1960
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1935
|
-
const
|
|
1936
|
-
i0.ɵɵelementStart(0, "button",
|
|
1937
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1938
|
-
i0.ɵɵelement(1, "i",
|
|
1961
|
+
const _r57 = i0.ɵɵgetCurrentView();
|
|
1962
|
+
i0.ɵɵelementStart(0, "button", 347);
|
|
1963
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r57); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.clearContextCompressionPrompt()); });
|
|
1964
|
+
i0.ɵɵelement(1, "i", 348);
|
|
1939
1965
|
i0.ɵɵelementEnd();
|
|
1940
1966
|
} }
|
|
1941
1967
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
1942
|
-
const
|
|
1943
|
-
i0.ɵɵelementStart(0, "div",
|
|
1944
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template, 2, 1, "span",
|
|
1968
|
+
const _r56 = i0.ɵɵgetCurrentView();
|
|
1969
|
+
i0.ɵɵelementStart(0, "div", 340)(1, "div", 341);
|
|
1970
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template, 2, 1, "span", 342)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_3_Template, 2, 0, "span", 343);
|
|
1945
1971
|
i0.ɵɵelementEnd();
|
|
1946
|
-
i0.ɵɵelementStart(4, "div",
|
|
1947
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
1948
|
-
i0.ɵɵelement(6, "i",
|
|
1972
|
+
i0.ɵɵelementStart(4, "div", 344)(5, "button", 345);
|
|
1973
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r56); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openContextCompressionPromptSelector()); });
|
|
1974
|
+
i0.ɵɵelement(6, "i", 197);
|
|
1949
1975
|
i0.ɵɵtext(7);
|
|
1950
1976
|
i0.ɵɵelementEnd();
|
|
1951
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template, 2, 0, "button",
|
|
1977
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template, 2, 0, "button", 346);
|
|
1952
1978
|
i0.ɵɵelementEnd()();
|
|
1953
1979
|
} if (rf & 2) {
|
|
1954
1980
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1960,7 +1986,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1960
1986
|
i0.ɵɵconditional(ctx_r1.selectedContextCompressionPrompt ? 8 : -1);
|
|
1961
1987
|
} }
|
|
1962
1988
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1963
|
-
i0.ɵɵelementStart(0, "span",
|
|
1989
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
1964
1990
|
i0.ɵɵtext(1);
|
|
1965
1991
|
i0.ɵɵelementEnd();
|
|
1966
1992
|
} if (rf & 2) {
|
|
@@ -1969,41 +1995,41 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1969
1995
|
i0.ɵɵtextInterpolate((ctx_r1.selectedContextCompressionPrompt == null ? null : ctx_r1.selectedContextCompressionPrompt.Name) || ctx_r1.record.ContextCompressionPrompt || "Not Set");
|
|
1970
1996
|
} }
|
|
1971
1997
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Template(rf, ctx) { if (rf & 1) {
|
|
1972
|
-
i0.ɵɵelementStart(0, "div",
|
|
1973
|
-
i0.ɵɵelement(3, "i",
|
|
1998
|
+
i0.ɵɵelementStart(0, "div", 120)(1, "div", 121)(2, "div", 122);
|
|
1999
|
+
i0.ɵɵelement(3, "i", 336);
|
|
1974
2000
|
i0.ɵɵelementEnd();
|
|
1975
|
-
i0.ɵɵelementStart(4, "div",
|
|
2001
|
+
i0.ɵɵelementStart(4, "div", 124)(5, "h4");
|
|
1976
2002
|
i0.ɵɵtext(6, "Message Threshold");
|
|
1977
2003
|
i0.ɵɵelementEnd();
|
|
1978
2004
|
i0.ɵɵelementStart(7, "p");
|
|
1979
2005
|
i0.ɵɵtext(8, "Messages before compression triggers");
|
|
1980
2006
|
i0.ɵɵelementEnd()()();
|
|
1981
|
-
i0.ɵɵelementStart(9, "div",
|
|
1982
|
-
i0.ɵɵelement(10, "mj-form-field",
|
|
2007
|
+
i0.ɵɵelementStart(9, "div", 125);
|
|
2008
|
+
i0.ɵɵelement(10, "mj-form-field", 337);
|
|
1983
2009
|
i0.ɵɵelementEnd()();
|
|
1984
|
-
i0.ɵɵelementStart(11, "div",
|
|
1985
|
-
i0.ɵɵelement(14, "i",
|
|
2010
|
+
i0.ɵɵelementStart(11, "div", 120)(12, "div", 121)(13, "div", 122);
|
|
2011
|
+
i0.ɵɵelement(14, "i", 338);
|
|
1986
2012
|
i0.ɵɵelementEnd();
|
|
1987
|
-
i0.ɵɵelementStart(15, "div",
|
|
2013
|
+
i0.ɵɵelementStart(15, "div", 124)(16, "h4");
|
|
1988
2014
|
i0.ɵɵtext(17, "Messages to Keep");
|
|
1989
2015
|
i0.ɵɵelementEnd();
|
|
1990
2016
|
i0.ɵɵelementStart(18, "p");
|
|
1991
2017
|
i0.ɵɵtext(19, "Recent messages to retain uncompressed");
|
|
1992
2018
|
i0.ɵɵelementEnd()()();
|
|
1993
|
-
i0.ɵɵelementStart(20, "div",
|
|
1994
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
2019
|
+
i0.ɵɵelementStart(20, "div", 125);
|
|
2020
|
+
i0.ɵɵelement(21, "mj-form-field", 339);
|
|
1995
2021
|
i0.ɵɵelementEnd()();
|
|
1996
|
-
i0.ɵɵelementStart(22, "div",
|
|
1997
|
-
i0.ɵɵelement(25, "i",
|
|
2022
|
+
i0.ɵɵelementStart(22, "div", 120)(23, "div", 121)(24, "div", 122);
|
|
2023
|
+
i0.ɵɵelement(25, "i", 294);
|
|
1998
2024
|
i0.ɵɵelementEnd();
|
|
1999
|
-
i0.ɵɵelementStart(26, "div",
|
|
2025
|
+
i0.ɵɵelementStart(26, "div", 124)(27, "h4");
|
|
2000
2026
|
i0.ɵɵtext(28, "Compression Prompt");
|
|
2001
2027
|
i0.ɵɵelementEnd();
|
|
2002
2028
|
i0.ɵɵelementStart(29, "p");
|
|
2003
2029
|
i0.ɵɵtext(30, "Prompt used for summarization");
|
|
2004
2030
|
i0.ɵɵelementEnd()()();
|
|
2005
|
-
i0.ɵɵelementStart(31, "div",
|
|
2006
|
-
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template, 9, 3, "div",
|
|
2031
|
+
i0.ɵɵelementStart(31, "div", 125);
|
|
2032
|
+
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template, 9, 3, "div", 340)(33, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_33_Template, 2, 1, "span", 127);
|
|
2007
2033
|
i0.ɵɵelementEnd()();
|
|
2008
2034
|
} if (rf & 2) {
|
|
2009
2035
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -2015,37 +2041,37 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
2015
2041
|
i0.ɵɵconditional(ctx_r1.EditMode ? 32 : 33);
|
|
2016
2042
|
} }
|
|
2017
2043
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
2018
|
-
const
|
|
2019
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template,
|
|
2020
|
-
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Template, 4, 3, "div",
|
|
2044
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
2045
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template, 3, 4, "div", 51);
|
|
2046
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Template, 4, 3, "div", 52);
|
|
2021
2047
|
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template, 4, 13);
|
|
2022
|
-
i0.ɵɵelementStart(3, "div",
|
|
2023
|
-
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template, 6, 4, "mj-accordion-panel",
|
|
2024
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template, 5, 3, "mj-accordion-panel",
|
|
2025
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template, 19, 13, "mj-accordion-panel",
|
|
2026
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template, 15, 5, "mj-accordion-panel",
|
|
2027
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template, 8, 3, "mj-accordion-panel",
|
|
2028
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template, 10, 4, "mj-accordion-panel",
|
|
2029
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template, 35, 14, "mj-accordion-panel",
|
|
2030
|
-
i0.ɵɵelementStart(11, "mj-accordion-panel",
|
|
2031
|
-
i0.ɵɵtemplate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template, 2, 0, "ng-template",
|
|
2032
|
-
i0.ɵɵelementStart(13, "div",
|
|
2048
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
2049
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template, 6, 4, "mj-accordion-panel", 54);
|
|
2050
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template, 5, 3, "mj-accordion-panel", 55);
|
|
2051
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template, 19, 13, "mj-accordion-panel", 56);
|
|
2052
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template, 15, 5, "mj-accordion-panel", 57);
|
|
2053
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template, 8, 3, "mj-accordion-panel", 58);
|
|
2054
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template, 10, 4, "mj-accordion-panel", 59);
|
|
2055
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template, 35, 14, "mj-accordion-panel", 60);
|
|
2056
|
+
i0.ɵɵelementStart(11, "mj-accordion-panel", 61);
|
|
2057
|
+
i0.ɵɵtemplate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template, 2, 0, "ng-template", 62);
|
|
2058
|
+
i0.ɵɵelementStart(13, "div", 63)(14, "div", 64)(15, "div", 65);
|
|
2033
2059
|
i0.ɵɵtext(16, " Configure how this agent handles data payloads, path routing, and validation between parent and child agents. ");
|
|
2034
2060
|
i0.ɵɵelementEnd()();
|
|
2035
|
-
i0.ɵɵelementStart(17, "div",
|
|
2036
|
-
i0.ɵɵelement(19, "i",
|
|
2061
|
+
i0.ɵɵelementStart(17, "div", 66)(18, "h3", 67);
|
|
2062
|
+
i0.ɵɵelement(19, "i", 68);
|
|
2037
2063
|
i0.ɵɵtext(20, " Payload Scope ");
|
|
2038
2064
|
i0.ɵɵelementEnd();
|
|
2039
|
-
i0.ɵɵelementStart(21, "div",
|
|
2065
|
+
i0.ɵɵelementStart(21, "div", 69)(22, "div", 70)(23, "label", 71);
|
|
2040
2066
|
i0.ɵɵtext(24, "Payload Scope Path");
|
|
2041
2067
|
i0.ɵɵelementEnd();
|
|
2042
|
-
i0.ɵɵelementStart(25, "p",
|
|
2068
|
+
i0.ɵɵelementStart(25, "p", 72);
|
|
2043
2069
|
i0.ɵɵtext(26, " Specify a path within the parent payload that this sub-agent should operate on. Leave empty to receive the entire payload. ");
|
|
2044
2070
|
i0.ɵɵelementEnd()();
|
|
2045
|
-
i0.ɵɵelementStart(27, "div",
|
|
2046
|
-
i0.ɵɵelement(28, "mj-form-field",
|
|
2047
|
-
i0.ɵɵelementStart(29, "div",
|
|
2048
|
-
i0.ɵɵelement(30, "i",
|
|
2071
|
+
i0.ɵɵelementStart(27, "div", 73);
|
|
2072
|
+
i0.ɵɵelement(28, "mj-form-field", 74);
|
|
2073
|
+
i0.ɵɵelementStart(29, "div", 75);
|
|
2074
|
+
i0.ɵɵelement(30, "i", 76);
|
|
2049
2075
|
i0.ɵɵelementStart(31, "span");
|
|
2050
2076
|
i0.ɵɵtext(32, "Example: ");
|
|
2051
2077
|
i0.ɵɵelementStart(33, "code");
|
|
@@ -2055,24 +2081,24 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
2055
2081
|
i0.ɵɵelementStart(36, "code");
|
|
2056
2082
|
i0.ɵɵtext(37, "/analysis/results");
|
|
2057
2083
|
i0.ɵɵelementEnd()()()()()();
|
|
2058
|
-
i0.ɵɵelementStart(38, "div",
|
|
2059
|
-
i0.ɵɵelement(40, "i",
|
|
2084
|
+
i0.ɵɵelementStart(38, "div", 66)(39, "h3", 67);
|
|
2085
|
+
i0.ɵɵelement(40, "i", 77);
|
|
2060
2086
|
i0.ɵɵtext(41, " Path Configuration ");
|
|
2061
2087
|
i0.ɵɵelementEnd();
|
|
2062
|
-
i0.ɵɵelementStart(42, "div",
|
|
2063
|
-
i0.ɵɵelement(46, "i",
|
|
2088
|
+
i0.ɵɵelementStart(42, "div", 78)(43, "div", 79)(44, "div", 80)(45, "div", 81);
|
|
2089
|
+
i0.ɵɵelement(46, "i", 82);
|
|
2064
2090
|
i0.ɵɵelementEnd();
|
|
2065
|
-
i0.ɵɵelementStart(47, "div",
|
|
2091
|
+
i0.ɵɵelementStart(47, "div", 83)(48, "h4");
|
|
2066
2092
|
i0.ɵɵtext(49, "Downstream Paths");
|
|
2067
2093
|
i0.ɵɵelementEnd();
|
|
2068
2094
|
i0.ɵɵelementStart(50, "p");
|
|
2069
2095
|
i0.ɵɵtext(51, "JSON array of paths to pass to sub-agents");
|
|
2070
2096
|
i0.ɵɵelementEnd()()();
|
|
2071
|
-
i0.ɵɵelementStart(52, "div",
|
|
2072
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_54_listener($event) { i0.ɵɵrestoreView(
|
|
2097
|
+
i0.ɵɵelementStart(52, "div", 84)(53, "div", 85)(54, "mj-code-editor", 86);
|
|
2098
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_54_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadDownstreamPaths", $event)); });
|
|
2073
2099
|
i0.ɵɵelementEnd()();
|
|
2074
|
-
i0.ɵɵelementStart(55, "div",
|
|
2075
|
-
i0.ɵɵelement(56, "i",
|
|
2100
|
+
i0.ɵɵelementStart(55, "div", 87);
|
|
2101
|
+
i0.ɵɵelement(56, "i", 88);
|
|
2076
2102
|
i0.ɵɵtext(57, " Use ");
|
|
2077
2103
|
i0.ɵɵelementStart(58, "code");
|
|
2078
2104
|
i0.ɵɵtext(59, "[\"*\"]");
|
|
@@ -2081,271 +2107,271 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
2081
2107
|
i0.ɵɵelementStart(61, "code");
|
|
2082
2108
|
i0.ɵɵtext(62, "[\"user.id\", \"order.*\"]");
|
|
2083
2109
|
i0.ɵɵelementEnd()()()();
|
|
2084
|
-
i0.ɵɵelementStart(63, "div",
|
|
2085
|
-
i0.ɵɵelement(66, "i",
|
|
2110
|
+
i0.ɵɵelementStart(63, "div", 79)(64, "div", 80)(65, "div", 89);
|
|
2111
|
+
i0.ɵɵelement(66, "i", 90);
|
|
2086
2112
|
i0.ɵɵelementEnd();
|
|
2087
|
-
i0.ɵɵelementStart(67, "div",
|
|
2113
|
+
i0.ɵɵelementStart(67, "div", 83)(68, "h4");
|
|
2088
2114
|
i0.ɵɵtext(69, "Upstream Paths");
|
|
2089
2115
|
i0.ɵɵelementEnd();
|
|
2090
2116
|
i0.ɵɵelementStart(70, "p");
|
|
2091
2117
|
i0.ɵɵtext(71, "JSON array of paths sub-agents can write back");
|
|
2092
2118
|
i0.ɵɵelementEnd()()();
|
|
2093
|
-
i0.ɵɵelementStart(72, "div",
|
|
2094
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_74_listener($event) { i0.ɵɵrestoreView(
|
|
2119
|
+
i0.ɵɵelementStart(72, "div", 84)(73, "div", 85)(74, "mj-code-editor", 86);
|
|
2120
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_74_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadUpstreamPaths", $event)); });
|
|
2095
2121
|
i0.ɵɵelementEnd()();
|
|
2096
|
-
i0.ɵɵelementStart(75, "div",
|
|
2097
|
-
i0.ɵɵelement(76, "i",
|
|
2122
|
+
i0.ɵɵelementStart(75, "div", 87);
|
|
2123
|
+
i0.ɵɵelement(76, "i", 88);
|
|
2098
2124
|
i0.ɵɵtext(77, " Use ");
|
|
2099
2125
|
i0.ɵɵelementStart(78, "code");
|
|
2100
2126
|
i0.ɵɵtext(79, "[\"*\"]");
|
|
2101
2127
|
i0.ɵɵelementEnd();
|
|
2102
2128
|
i0.ɵɵtext(80, " to allow all writes or limit to specific paths ");
|
|
2103
2129
|
i0.ɵɵelementEnd()()();
|
|
2104
|
-
i0.ɵɵelementStart(81, "div",
|
|
2105
|
-
i0.ɵɵelement(84, "i",
|
|
2130
|
+
i0.ɵɵelementStart(81, "div", 79)(82, "div", 80)(83, "div", 91);
|
|
2131
|
+
i0.ɵɵelement(84, "i", 92);
|
|
2106
2132
|
i0.ɵɵelementEnd();
|
|
2107
|
-
i0.ɵɵelementStart(85, "div",
|
|
2133
|
+
i0.ɵɵelementStart(85, "div", 83)(86, "h4");
|
|
2108
2134
|
i0.ɵɵtext(87, "Self Read Paths");
|
|
2109
2135
|
i0.ɵɵelementEnd();
|
|
2110
2136
|
i0.ɵɵelementStart(88, "p");
|
|
2111
2137
|
i0.ɵɵtext(89, "JSON array of paths this agent can read");
|
|
2112
2138
|
i0.ɵɵelementEnd()()();
|
|
2113
|
-
i0.ɵɵelementStart(90, "div",
|
|
2114
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_92_listener($event) { i0.ɵɵrestoreView(
|
|
2139
|
+
i0.ɵɵelementStart(90, "div", 84)(91, "div", 85)(92, "mj-code-editor", 86);
|
|
2140
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_92_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfReadPaths", $event)); });
|
|
2115
2141
|
i0.ɵɵelementEnd()();
|
|
2116
|
-
i0.ɵɵelementStart(93, "div",
|
|
2117
|
-
i0.ɵɵelement(94, "i",
|
|
2142
|
+
i0.ɵɵelementStart(93, "div", 87);
|
|
2143
|
+
i0.ɵɵelement(94, "i", 88);
|
|
2118
2144
|
i0.ɵɵtext(95, " Paths this agent's prompts can read from the payload ");
|
|
2119
2145
|
i0.ɵɵelementEnd()()();
|
|
2120
|
-
i0.ɵɵelementStart(96, "div",
|
|
2121
|
-
i0.ɵɵelement(99, "i",
|
|
2146
|
+
i0.ɵɵelementStart(96, "div", 79)(97, "div", 80)(98, "div", 93);
|
|
2147
|
+
i0.ɵɵelement(99, "i", 94);
|
|
2122
2148
|
i0.ɵɵelementEnd();
|
|
2123
|
-
i0.ɵɵelementStart(100, "div",
|
|
2149
|
+
i0.ɵɵelementStart(100, "div", 83)(101, "h4");
|
|
2124
2150
|
i0.ɵɵtext(102, "Self Write Paths");
|
|
2125
2151
|
i0.ɵɵelementEnd();
|
|
2126
2152
|
i0.ɵɵelementStart(103, "p");
|
|
2127
2153
|
i0.ɵɵtext(104, "JSON array of paths this agent can write to");
|
|
2128
2154
|
i0.ɵɵelementEnd()()();
|
|
2129
|
-
i0.ɵɵelementStart(105, "div",
|
|
2130
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_107_listener($event) { i0.ɵɵrestoreView(
|
|
2155
|
+
i0.ɵɵelementStart(105, "div", 84)(106, "div", 85)(107, "mj-code-editor", 86);
|
|
2156
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_107_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfWritePaths", $event)); });
|
|
2131
2157
|
i0.ɵɵelementEnd()();
|
|
2132
|
-
i0.ɵɵelementStart(108, "div",
|
|
2133
|
-
i0.ɵɵelement(109, "i",
|
|
2158
|
+
i0.ɵɵelementStart(108, "div", 87);
|
|
2159
|
+
i0.ɵɵelement(109, "i", 88);
|
|
2134
2160
|
i0.ɵɵtext(110, " Paths this agent's prompts can write back to the payload ");
|
|
2135
2161
|
i0.ɵɵelementEnd()()()()();
|
|
2136
|
-
i0.ɵɵelementStart(111, "div",
|
|
2137
|
-
i0.ɵɵelement(113, "i",
|
|
2162
|
+
i0.ɵɵelementStart(111, "div", 66)(112, "h3", 67);
|
|
2163
|
+
i0.ɵɵelement(113, "i", 95);
|
|
2138
2164
|
i0.ɵɵtext(114, " Final Payload Validation ");
|
|
2139
2165
|
i0.ɵɵelementEnd();
|
|
2140
|
-
i0.ɵɵelementStart(115, "div",
|
|
2166
|
+
i0.ɵɵelementStart(115, "div", 96)(116, "div", 97)(117, "div", 98)(118, "label", 99);
|
|
2141
2167
|
i0.ɵɵtext(119, "Validation Mode");
|
|
2142
2168
|
i0.ɵɵelementEnd();
|
|
2143
|
-
i0.ɵɵelementStart(120, "p",
|
|
2169
|
+
i0.ɵɵelementStart(120, "p", 100);
|
|
2144
2170
|
i0.ɵɵtext(121, "How to handle validation failures");
|
|
2145
2171
|
i0.ɵɵelementEnd();
|
|
2146
|
-
i0.ɵɵelement(122, "mj-form-field",
|
|
2172
|
+
i0.ɵɵelement(122, "mj-form-field", 101);
|
|
2147
2173
|
i0.ɵɵelementEnd();
|
|
2148
|
-
i0.ɵɵelementStart(123, "div",
|
|
2174
|
+
i0.ɵɵelementStart(123, "div", 98)(124, "label", 99);
|
|
2149
2175
|
i0.ɵɵtext(125, "Max Retries");
|
|
2150
2176
|
i0.ɵɵelementEnd();
|
|
2151
|
-
i0.ɵɵelementStart(126, "p",
|
|
2177
|
+
i0.ɵɵelementStart(126, "p", 100);
|
|
2152
2178
|
i0.ɵɵtext(127, "Maximum validation retry attempts");
|
|
2153
2179
|
i0.ɵɵelementEnd();
|
|
2154
|
-
i0.ɵɵelement(128, "mj-form-field",
|
|
2180
|
+
i0.ɵɵelement(128, "mj-form-field", 102);
|
|
2155
2181
|
i0.ɵɵelementEnd()();
|
|
2156
|
-
i0.ɵɵelementStart(129, "div",
|
|
2157
|
-
i0.ɵɵelement(131, "i",
|
|
2182
|
+
i0.ɵɵelementStart(129, "div", 103)(130, "label", 104);
|
|
2183
|
+
i0.ɵɵelement(131, "i", 105);
|
|
2158
2184
|
i0.ɵɵtext(132, " Validation Schema ");
|
|
2159
2185
|
i0.ɵɵelementEnd();
|
|
2160
|
-
i0.ɵɵelementStart(133, "p",
|
|
2186
|
+
i0.ɵɵelementStart(133, "p", 106);
|
|
2161
2187
|
i0.ɵɵtext(134, " JSON schema or validation rules for the final payload structure ");
|
|
2162
2188
|
i0.ɵɵelementEnd();
|
|
2163
|
-
i0.ɵɵelementStart(135, "div",
|
|
2164
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_136_listener($event) { i0.ɵɵrestoreView(
|
|
2189
|
+
i0.ɵɵelementStart(135, "div", 107)(136, "mj-code-editor", 108);
|
|
2190
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_136_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("FinalPayloadValidation", $event)); });
|
|
2165
2191
|
i0.ɵɵelementEnd()()()()()()();
|
|
2166
|
-
i0.ɵɵelementStart(137, "mj-accordion-panel",
|
|
2167
|
-
i0.ɵɵtemplate(138, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template, 2, 0, "ng-template",
|
|
2168
|
-
i0.ɵɵelementStart(139, "div",
|
|
2192
|
+
i0.ɵɵelementStart(137, "mj-accordion-panel", 109);
|
|
2193
|
+
i0.ɵɵtemplate(138, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template, 2, 0, "ng-template", 62);
|
|
2194
|
+
i0.ɵɵelementStart(139, "div", 63)(140, "div", 64)(141, "div", 65);
|
|
2169
2195
|
i0.ɵɵtext(142, " Set limits to prevent runaway agent executions and control resource usage. ");
|
|
2170
2196
|
i0.ɵɵelementEnd()();
|
|
2171
|
-
i0.ɵɵelementStart(143, "div",
|
|
2172
|
-
i0.ɵɵelement(144, "mj-form-field",
|
|
2197
|
+
i0.ɵɵelementStart(143, "div", 110);
|
|
2198
|
+
i0.ɵɵelement(144, "mj-form-field", 111)(145, "mj-form-field", 112)(146, "mj-form-field", 113)(147, "mj-form-field", 114);
|
|
2173
2199
|
i0.ɵɵelementEnd()()();
|
|
2174
|
-
i0.ɵɵelementStart(148, "mj-accordion-panel",
|
|
2175
|
-
i0.ɵɵtemplate(149, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template, 2, 0, "ng-template",
|
|
2176
|
-
i0.ɵɵelementStart(150, "div",
|
|
2200
|
+
i0.ɵɵelementStart(148, "mj-accordion-panel", 115);
|
|
2201
|
+
i0.ɵɵtemplate(149, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template, 2, 0, "ng-template", 62);
|
|
2202
|
+
i0.ɵɵelementStart(150, "div", 63)(151, "div", 64)(152, "div", 65);
|
|
2177
2203
|
i0.ɵɵtext(153, " Configure agent behavior, execution settings, and advanced features. ");
|
|
2178
2204
|
i0.ɵɵelementEnd()();
|
|
2179
|
-
i0.ɵɵelementStart(154, "div",
|
|
2180
|
-
i0.ɵɵelement(156, "i",
|
|
2205
|
+
i0.ɵɵelementStart(154, "div", 116)(155, "h3", 117);
|
|
2206
|
+
i0.ɵɵelement(156, "i", 118);
|
|
2181
2207
|
i0.ɵɵtext(157, " Identity & Behavior ");
|
|
2182
2208
|
i0.ɵɵelementEnd();
|
|
2183
|
-
i0.ɵɵelementStart(158, "div",
|
|
2184
|
-
i0.ɵɵelement(162, "i",
|
|
2209
|
+
i0.ɵɵelementStart(158, "div", 119)(159, "div", 120)(160, "div", 121)(161, "div", 122);
|
|
2210
|
+
i0.ɵɵelement(162, "i", 123);
|
|
2185
2211
|
i0.ɵɵelementEnd();
|
|
2186
|
-
i0.ɵɵelementStart(163, "div",
|
|
2212
|
+
i0.ɵɵelementStart(163, "div", 124)(164, "h4");
|
|
2187
2213
|
i0.ɵɵtext(165, "Agent Status");
|
|
2188
2214
|
i0.ɵɵelementEnd();
|
|
2189
2215
|
i0.ɵɵelementStart(166, "p");
|
|
2190
2216
|
i0.ɵɵtext(167, "Current availability and operational status");
|
|
2191
2217
|
i0.ɵɵelementEnd()()();
|
|
2192
|
-
i0.ɵɵelementStart(168, "div",
|
|
2193
|
-
i0.ɵɵconditionalCreate(169, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template, 1, 3, "mj-dropdown",
|
|
2218
|
+
i0.ɵɵelementStart(168, "div", 125);
|
|
2219
|
+
i0.ɵɵconditionalCreate(169, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template, 1, 3, "mj-dropdown", 126)(170, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_170_Template, 2, 1, "span", 127);
|
|
2194
2220
|
i0.ɵɵelementEnd()();
|
|
2195
|
-
i0.ɵɵelementStart(171, "div",
|
|
2196
|
-
i0.ɵɵelement(174, "i",
|
|
2221
|
+
i0.ɵɵelementStart(171, "div", 120)(172, "div", 121)(173, "div", 122);
|
|
2222
|
+
i0.ɵɵelement(174, "i", 32);
|
|
2197
2223
|
i0.ɵɵelementEnd();
|
|
2198
|
-
i0.ɵɵelementStart(175, "div",
|
|
2224
|
+
i0.ɵɵelementStart(175, "div", 124)(176, "h4");
|
|
2199
2225
|
i0.ɵɵtext(177, "Agent Type");
|
|
2200
2226
|
i0.ɵɵelementEnd();
|
|
2201
2227
|
i0.ɵɵelementStart(178, "p");
|
|
2202
2228
|
i0.ɵɵtext(179, "Category and system-level behavior");
|
|
2203
2229
|
i0.ɵɵelementEnd()()();
|
|
2204
|
-
i0.ɵɵelementStart(180, "div",
|
|
2205
|
-
i0.ɵɵconditionalCreate(181, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template, 1, 3, "mj-dropdown",
|
|
2230
|
+
i0.ɵɵelementStart(180, "div", 125);
|
|
2231
|
+
i0.ɵɵconditionalCreate(181, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template, 1, 3, "mj-dropdown", 128)(182, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_182_Template, 2, 1, "span", 127);
|
|
2206
2232
|
i0.ɵɵelementEnd()();
|
|
2207
|
-
i0.ɵɵelementStart(183, "div",
|
|
2208
|
-
i0.ɵɵelement(186, "i",
|
|
2233
|
+
i0.ɵɵelementStart(183, "div", 120)(184, "div", 121)(185, "div", 122);
|
|
2234
|
+
i0.ɵɵelement(186, "i", 129);
|
|
2209
2235
|
i0.ɵɵelementEnd();
|
|
2210
|
-
i0.ɵɵelementStart(187, "div",
|
|
2236
|
+
i0.ɵɵelementStart(187, "div", 124)(188, "h4");
|
|
2211
2237
|
i0.ɵɵtext(189, "Category");
|
|
2212
2238
|
i0.ɵɵelementEnd();
|
|
2213
2239
|
i0.ɵɵelementStart(190, "p");
|
|
2214
2240
|
i0.ɵɵtext(191, "Organizational category for this agent");
|
|
2215
2241
|
i0.ɵɵelementEnd()()();
|
|
2216
|
-
i0.ɵɵelementStart(192, "div",
|
|
2217
|
-
i0.ɵɵconditionalCreate(193, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template, 1, 4, "mj-tree-dropdown",
|
|
2242
|
+
i0.ɵɵelementStart(192, "div", 125);
|
|
2243
|
+
i0.ɵɵconditionalCreate(193, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template, 1, 4, "mj-tree-dropdown", 130)(194, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_194_Template, 2, 1, "span", 127);
|
|
2218
2244
|
i0.ɵɵelementEnd()();
|
|
2219
|
-
i0.ɵɵelementStart(195, "div",
|
|
2220
|
-
i0.ɵɵelement(198, "i",
|
|
2245
|
+
i0.ɵɵelementStart(195, "div", 120)(196, "div", 121)(197, "div", 122);
|
|
2246
|
+
i0.ɵɵelement(198, "i", 131);
|
|
2221
2247
|
i0.ɵɵelementEnd();
|
|
2222
|
-
i0.ɵɵelementStart(199, "div",
|
|
2248
|
+
i0.ɵɵelementStart(199, "div", 124)(200, "h4");
|
|
2223
2249
|
i0.ɵɵtext(201, "Expose as Action");
|
|
2224
2250
|
i0.ɵɵelementEnd();
|
|
2225
2251
|
i0.ɵɵelementStart(202, "p");
|
|
2226
2252
|
i0.ɵɵtext(203, "Make available as an action for other agents");
|
|
2227
2253
|
i0.ɵɵelementEnd()()();
|
|
2228
|
-
i0.ɵɵelementStart(204, "div",
|
|
2229
|
-
i0.ɵɵelement(205, "mj-form-field",
|
|
2254
|
+
i0.ɵɵelementStart(204, "div", 125);
|
|
2255
|
+
i0.ɵɵelement(205, "mj-form-field", 132);
|
|
2230
2256
|
i0.ɵɵelementEnd()();
|
|
2231
|
-
i0.ɵɵelementStart(206, "div",
|
|
2232
|
-
i0.ɵɵelement(209, "i",
|
|
2257
|
+
i0.ɵɵelementStart(206, "div", 133)(207, "div", 121)(208, "div", 122);
|
|
2258
|
+
i0.ɵɵelement(209, "i", 134);
|
|
2233
2259
|
i0.ɵɵelementEnd();
|
|
2234
|
-
i0.ɵɵelementStart(210, "div",
|
|
2260
|
+
i0.ɵɵelementStart(210, "div", 124)(211, "h4");
|
|
2235
2261
|
i0.ɵɵtext(212, "Description");
|
|
2236
2262
|
i0.ɵɵelementEnd();
|
|
2237
2263
|
i0.ɵɵelementStart(213, "p");
|
|
2238
2264
|
i0.ɵɵtext(214, "Detailed agent description and purpose");
|
|
2239
2265
|
i0.ɵɵelementEnd()()();
|
|
2240
|
-
i0.ɵɵelementStart(215, "div",
|
|
2241
|
-
i0.ɵɵelement(216, "mj-form-field",
|
|
2266
|
+
i0.ɵɵelementStart(215, "div", 125);
|
|
2267
|
+
i0.ɵɵelement(216, "mj-form-field", 135);
|
|
2242
2268
|
i0.ɵɵelementEnd()()()();
|
|
2243
|
-
i0.ɵɵelementStart(217, "div",
|
|
2244
|
-
i0.ɵɵelement(219, "i",
|
|
2269
|
+
i0.ɵɵelementStart(217, "div", 116)(218, "h3", 117);
|
|
2270
|
+
i0.ɵɵelement(219, "i", 35);
|
|
2245
2271
|
i0.ɵɵtext(220, " Execution Settings ");
|
|
2246
2272
|
i0.ɵɵelementEnd();
|
|
2247
|
-
i0.ɵɵelementStart(221, "div",
|
|
2248
|
-
i0.ɵɵelement(225, "i",
|
|
2273
|
+
i0.ɵɵelementStart(221, "div", 119)(222, "div", 120)(223, "div", 121)(224, "div", 122);
|
|
2274
|
+
i0.ɵɵelement(225, "i", 136);
|
|
2249
2275
|
i0.ɵɵelementEnd();
|
|
2250
|
-
i0.ɵɵelementStart(226, "div",
|
|
2276
|
+
i0.ɵɵelementStart(226, "div", 124)(227, "h4");
|
|
2251
2277
|
i0.ɵɵtext(228, "Execution Mode");
|
|
2252
2278
|
i0.ɵɵelementEnd();
|
|
2253
2279
|
i0.ɵɵelementStart(229, "p");
|
|
2254
2280
|
i0.ɵɵtext(230, "How sub-agents are executed");
|
|
2255
2281
|
i0.ɵɵelementEnd()()();
|
|
2256
|
-
i0.ɵɵelementStart(231, "div",
|
|
2257
|
-
i0.ɵɵelement(232, "mj-form-field",
|
|
2282
|
+
i0.ɵɵelementStart(231, "div", 125);
|
|
2283
|
+
i0.ɵɵelement(232, "mj-form-field", 137);
|
|
2258
2284
|
i0.ɵɵelementEnd()();
|
|
2259
|
-
i0.ɵɵelementStart(233, "div",
|
|
2260
|
-
i0.ɵɵelement(236, "i",
|
|
2285
|
+
i0.ɵɵelementStart(233, "div", 120)(234, "div", 121)(235, "div", 122);
|
|
2286
|
+
i0.ɵɵelement(236, "i", 138);
|
|
2261
2287
|
i0.ɵɵelementEnd();
|
|
2262
|
-
i0.ɵɵelementStart(237, "div",
|
|
2288
|
+
i0.ɵɵelementStart(237, "div", 124)(238, "h4");
|
|
2263
2289
|
i0.ɵɵtext(239, "Execution Order");
|
|
2264
2290
|
i0.ɵɵelementEnd();
|
|
2265
2291
|
i0.ɵɵelementStart(240, "p");
|
|
2266
2292
|
i0.ɵɵtext(241, "Order when run with siblings");
|
|
2267
2293
|
i0.ɵɵelementEnd()()();
|
|
2268
|
-
i0.ɵɵelementStart(242, "div",
|
|
2269
|
-
i0.ɵɵelement(243, "mj-form-field",
|
|
2294
|
+
i0.ɵɵelementStart(242, "div", 125);
|
|
2295
|
+
i0.ɵɵelement(243, "mj-form-field", 139);
|
|
2270
2296
|
i0.ɵɵelementEnd()();
|
|
2271
|
-
i0.ɵɵelementStart(244, "div",
|
|
2272
|
-
i0.ɵɵelement(247, "i",
|
|
2297
|
+
i0.ɵɵelementStart(244, "div", 120)(245, "div", 121)(246, "div", 122);
|
|
2298
|
+
i0.ɵɵelement(247, "i", 140);
|
|
2273
2299
|
i0.ɵɵelementEnd();
|
|
2274
|
-
i0.ɵɵelementStart(248, "div",
|
|
2300
|
+
i0.ɵɵelementStart(248, "div", 124)(249, "h4");
|
|
2275
2301
|
i0.ɵɵtext(250, "Default Effort Level");
|
|
2276
2302
|
i0.ɵɵelementEnd();
|
|
2277
2303
|
i0.ɵɵelementStart(251, "p");
|
|
2278
2304
|
i0.ɵɵtext(252, "Default effort level for all prompts (1-100)");
|
|
2279
2305
|
i0.ɵɵelementEnd()()();
|
|
2280
|
-
i0.ɵɵelementStart(253, "div",
|
|
2281
|
-
i0.ɵɵelement(254, "mj-form-field",
|
|
2282
|
-
i0.ɵɵelementStart(255, "div",
|
|
2283
|
-
i0.ɵɵelement(256, "i",
|
|
2306
|
+
i0.ɵɵelementStart(253, "div", 125);
|
|
2307
|
+
i0.ɵɵelement(254, "mj-form-field", 141);
|
|
2308
|
+
i0.ɵɵelementStart(255, "div", 142);
|
|
2309
|
+
i0.ɵɵelement(256, "i", 88);
|
|
2284
2310
|
i0.ɵɵtext(257, " Higher values request more thorough reasoning (1=minimal, 100=maximum) ");
|
|
2285
2311
|
i0.ɵɵelementEnd()()();
|
|
2286
|
-
i0.ɵɵelementStart(258, "div",
|
|
2287
|
-
i0.ɵɵelement(261, "i",
|
|
2312
|
+
i0.ɵɵelementStart(258, "div", 120)(259, "div", 121)(260, "div", 122);
|
|
2313
|
+
i0.ɵɵelement(261, "i", 105);
|
|
2288
2314
|
i0.ɵɵelementEnd();
|
|
2289
|
-
i0.ɵɵelementStart(262, "div",
|
|
2315
|
+
i0.ɵɵelementStart(262, "div", 124)(263, "h4");
|
|
2290
2316
|
i0.ɵɵtext(264, "Driver Class");
|
|
2291
2317
|
i0.ɵɵelementEnd();
|
|
2292
2318
|
i0.ɵɵelementStart(265, "p");
|
|
2293
2319
|
i0.ɵɵtext(266, "Custom implementation class");
|
|
2294
2320
|
i0.ɵɵelementEnd()()();
|
|
2295
|
-
i0.ɵɵelementStart(267, "div",
|
|
2296
|
-
i0.ɵɵelement(268, "mj-form-field",
|
|
2321
|
+
i0.ɵɵelementStart(267, "div", 125);
|
|
2322
|
+
i0.ɵɵelement(268, "mj-form-field", 143);
|
|
2297
2323
|
i0.ɵɵelementEnd()()()();
|
|
2298
|
-
i0.ɵɵelementStart(269, "div",
|
|
2299
|
-
i0.ɵɵelement(271, "i",
|
|
2324
|
+
i0.ɵɵelementStart(269, "div", 116)(270, "h3", 117);
|
|
2325
|
+
i0.ɵɵelement(271, "i", 144);
|
|
2300
2326
|
i0.ɵɵtext(272, " Visual Identity ");
|
|
2301
2327
|
i0.ɵɵelementEnd();
|
|
2302
|
-
i0.ɵɵelementStart(273, "div",
|
|
2303
|
-
i0.ɵɵelement(277, "i",
|
|
2328
|
+
i0.ɵɵelementStart(273, "div", 119)(274, "div", 120)(275, "div", 121)(276, "div", 122);
|
|
2329
|
+
i0.ɵɵelement(277, "i", 145);
|
|
2304
2330
|
i0.ɵɵelementEnd();
|
|
2305
|
-
i0.ɵɵelementStart(278, "div",
|
|
2331
|
+
i0.ɵɵelementStart(278, "div", 124)(279, "h4");
|
|
2306
2332
|
i0.ɵɵtext(280, "Icon Class");
|
|
2307
2333
|
i0.ɵɵelementEnd();
|
|
2308
2334
|
i0.ɵɵelementStart(281, "p");
|
|
2309
2335
|
i0.ɵɵtext(282, "Font Awesome icon class");
|
|
2310
2336
|
i0.ɵɵelementEnd()()();
|
|
2311
|
-
i0.ɵɵelementStart(283, "div",
|
|
2312
|
-
i0.ɵɵelement(284, "mj-form-field",
|
|
2313
|
-
i0.ɵɵelementStart(285, "div",
|
|
2314
|
-
i0.ɵɵelement(286, "i",
|
|
2337
|
+
i0.ɵɵelementStart(283, "div", 125);
|
|
2338
|
+
i0.ɵɵelement(284, "mj-form-field", 146);
|
|
2339
|
+
i0.ɵɵelementStart(285, "div", 142);
|
|
2340
|
+
i0.ɵɵelement(286, "i", 88);
|
|
2315
2341
|
i0.ɵɵtext(287, " Example: ");
|
|
2316
2342
|
i0.ɵɵelementStart(288, "code");
|
|
2317
2343
|
i0.ɵɵtext(289, "fa-solid fa-robot");
|
|
2318
2344
|
i0.ɵɵelementEnd()()()();
|
|
2319
|
-
i0.ɵɵelementStart(290, "div",
|
|
2320
|
-
i0.ɵɵelement(293, "i",
|
|
2345
|
+
i0.ɵɵelementStart(290, "div", 120)(291, "div", 121)(292, "div", 122);
|
|
2346
|
+
i0.ɵɵelement(293, "i", 147);
|
|
2321
2347
|
i0.ɵɵelementEnd();
|
|
2322
|
-
i0.ɵɵelementStart(294, "div",
|
|
2348
|
+
i0.ɵɵelementStart(294, "div", 124)(295, "h4");
|
|
2323
2349
|
i0.ɵɵtext(296, "Logo URL");
|
|
2324
2350
|
i0.ɵɵelementEnd();
|
|
2325
2351
|
i0.ɵɵelementStart(297, "p");
|
|
2326
2352
|
i0.ɵɵtext(298, "URL for agent logo image");
|
|
2327
2353
|
i0.ɵɵelementEnd()()();
|
|
2328
|
-
i0.ɵɵelementStart(299, "div",
|
|
2329
|
-
i0.ɵɵelement(300, "mj-form-field",
|
|
2330
|
-
i0.ɵɵelementStart(301, "div",
|
|
2331
|
-
i0.ɵɵelement(302, "i",
|
|
2354
|
+
i0.ɵɵelementStart(299, "div", 125);
|
|
2355
|
+
i0.ɵɵelement(300, "mj-form-field", 148);
|
|
2356
|
+
i0.ɵɵelementStart(301, "div", 142);
|
|
2357
|
+
i0.ɵɵelement(302, "i", 88);
|
|
2332
2358
|
i0.ɵɵtext(303, " Takes precedence over Icon Class ");
|
|
2333
2359
|
i0.ɵɵelementEnd()()()()();
|
|
2334
|
-
i0.ɵɵelementStart(304, "div",
|
|
2335
|
-
i0.ɵɵelement(306, "i",
|
|
2360
|
+
i0.ɵɵelementStart(304, "div", 116)(305, "h3", 117);
|
|
2361
|
+
i0.ɵɵelement(306, "i", 149);
|
|
2336
2362
|
i0.ɵɵtext(307, " Context Compression ");
|
|
2337
2363
|
i0.ɵɵelementEnd();
|
|
2338
|
-
i0.ɵɵelementStart(308, "div",
|
|
2339
|
-
i0.ɵɵelement(312, "i",
|
|
2364
|
+
i0.ɵɵelementStart(308, "div", 119)(309, "div", 133)(310, "div", 121)(311, "div", 122);
|
|
2365
|
+
i0.ɵɵelement(312, "i", 123);
|
|
2340
2366
|
i0.ɵɵelementEnd();
|
|
2341
|
-
i0.ɵɵelementStart(313, "div",
|
|
2367
|
+
i0.ɵɵelementStart(313, "div", 124)(314, "h4");
|
|
2342
2368
|
i0.ɵɵtext(315, "Enable Context Compression");
|
|
2343
2369
|
i0.ɵɵelementEnd();
|
|
2344
2370
|
i0.ɵɵelementStart(316, "p");
|
|
2345
2371
|
i0.ɵɵtext(317, "Automatically compress conversation context when message threshold is reached");
|
|
2346
2372
|
i0.ɵɵelementEnd()()();
|
|
2347
|
-
i0.ɵɵelementStart(318, "div",
|
|
2348
|
-
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_form_field_valueChange_319_listener($event) { i0.ɵɵrestoreView(
|
|
2373
|
+
i0.ɵɵelementStart(318, "div", 125)(319, "mj-form-field", 150);
|
|
2374
|
+
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_form_field_valueChange_319_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContextCompressionToggle($event)); });
|
|
2349
2375
|
i0.ɵɵelementEnd()()();
|
|
2350
2376
|
i0.ɵɵconditionalCreate(320, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Template, 34, 5);
|
|
2351
2377
|
i0.ɵɵelementEnd()()()()();
|
|
@@ -2434,7 +2460,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
2434
2460
|
i0.ɵɵelementStart(0, "mj-record-form-container", 4);
|
|
2435
2461
|
i0.ɵɵlistener("Navigate", function MJAIAgentFormComponentExtended_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 MJAIAgentFormComponentExtended_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 MJAIAgentFormComponentExtended_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 MJAIAgentFormComponentExtended_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 MJAIAgentFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
2436
2462
|
i0.ɵɵelementStart(1, "form", 5, 0);
|
|
2437
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template,
|
|
2463
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Template, 20, 11, "div", 6);
|
|
2438
2464
|
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template, 10, 3, "div", 7);
|
|
2439
2465
|
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_5_Template, 2, 0, "div", 8)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template, 321, 66);
|
|
2440
2466
|
i0.ɵɵelementEnd()();
|
|
@@ -2449,9 +2475,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
2449
2475
|
i0.ɵɵconditional(ctx_r1.IsFormInitializing ? 5 : 6);
|
|
2450
2476
|
} }
|
|
2451
2477
|
function MJAIAgentFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
2452
|
-
const
|
|
2453
|
-
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog",
|
|
2454
|
-
i0.ɵɵlistener("Closed", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_Closed_0_listener() { i0.ɵɵrestoreView(
|
|
2478
|
+
const _r58 = i0.ɵɵgetCurrentView();
|
|
2479
|
+
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog", 349);
|
|
2480
|
+
i0.ɵɵlistener("Closed", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_Closed_0_listener() { i0.ɵɵrestoreView(_r58); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onPermissionsDialogClosed()); })("PermissionsChanged", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_PermissionsChanged_0_listener() { i0.ɵɵrestoreView(_r58); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
2455
2481
|
i0.ɵɵelementEnd();
|
|
2456
2482
|
} if (rf & 2) {
|
|
2457
2483
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2605,6 +2631,8 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
2605
2631
|
this.ActiveFormTab = null;
|
|
2606
2632
|
/** Tab chrome, recomputed only when the agent type or record identity changes. */
|
|
2607
2633
|
this.FormTabs = [];
|
|
2634
|
+
/** Phone hero (6A): whether the summary line is expanded to show the rest of the hero. */
|
|
2635
|
+
this.HeroDetailsOpen = false;
|
|
2608
2636
|
// === Dropdown Data ===
|
|
2609
2637
|
/** Model selection mode options for the dropdown */
|
|
2610
2638
|
this.ModelSelectionModes = [
|
|
@@ -3070,6 +3098,28 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
3070
3098
|
this.FormTabs = plan.Tabs;
|
|
3071
3099
|
this.ActiveFormTab = plan.ActiveKey;
|
|
3072
3100
|
}
|
|
3101
|
+
/** The form tabs as `mj-section-picker` items: tab order, a numeric badge as the count. */
|
|
3102
|
+
get SectionPickerItems() {
|
|
3103
|
+
return this.FormTabs.map((t) => ({ Key: t.key, Title: t.label, Icon: t.icon, Count: typeof t.badge === 'number' ? t.badge : null }));
|
|
3104
|
+
}
|
|
3105
|
+
/** A pick from the phone section sheet; goes through OnFormTabChange. An unknown key is ignored. */
|
|
3106
|
+
OnSectionPicked(key) {
|
|
3107
|
+
if (this.FormTabs.some((t) => t.key === key))
|
|
3108
|
+
this.OnFormTabChange(key);
|
|
3109
|
+
}
|
|
3110
|
+
/** Toggles the phone hero between its compact identity row and the full hero. */
|
|
3111
|
+
ToggleHeroDetails() {
|
|
3112
|
+
this.HeroDetailsOpen = !this.HeroDetailsOpen;
|
|
3113
|
+
this.cdr.markForCheck();
|
|
3114
|
+
}
|
|
3115
|
+
/** The phone hero's one-line summary: agent type, parent, and who can run it. */
|
|
3116
|
+
get HeroSummary() {
|
|
3117
|
+
return JoinHeroSummary([
|
|
3118
|
+
this.record.Type ? `${this.record.Type} agent` : null,
|
|
3119
|
+
this.record.Parent ? `Child of ${this.record.Parent}` : null,
|
|
3120
|
+
this.IsOpenToEveryone ? 'Open to everyone' : 'Restricted',
|
|
3121
|
+
]);
|
|
3122
|
+
}
|
|
3073
3123
|
OnFormTabChange(key) {
|
|
3074
3124
|
this.ActiveFormTab = key;
|
|
3075
3125
|
this.persistPreferences();
|
|
@@ -5791,14 +5841,14 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
5791
5841
|
} if (rf & 2) {
|
|
5792
5842
|
let _t;
|
|
5793
5843
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomSectionContainer = _t.first);
|
|
5794
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["form", "ngForm"], ["customSectionContainer", ""], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Agent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form"], [1, "agent-header"], [1, "agent-header-mini"], [1, "agent-form-loading"], [1, "agent-header-content"], ["title", "Minimize header", 1, "agent-header-toggle", 3, "click"], [1, "fa-solid", "fa-chevron-up"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["type", "text", "name", "agentName", "placeholder", "Enter agent name...", 1, "mj-input", "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent", "clickable", 3, "title"], [1, "agent-actions"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], ["type", "text", "name", "agentName", "placeholder", "Enter agent name...", 1, "mj-input", "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "parent-agent", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-external-link", 2, "margin-left", "4px", "font-size", "10px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["mjButton", "", "size", "lg", 3, "click", "title"], [1, "fa-solid"], ["title", "Expand header", 1, "agent-header-mini-expand", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "agent-header-mini-name"], [1, "agent-header-mini-status", 3, "background-color"], [1, "agent-header-mini-spacer"], ["title", "Refresh", 1, "agent-header-mini-btn", 3, "click"], [1, "agent-header-mini-status"], ["title", "Run agent", 1, "agent-header-mini-btn", "agent-header-mini-btn--primary", 3, "click", "disabled"], [1, "agent-header-mini-btn", 3, "click", "title"], ["text", "Loading agent...", "size", "medium"], [1, "agent-tabbar"], [1, "agent-pane", "agent-pane--designer", 3, "agent-pane--hidden"], [1, "form-content", "agent-pane"], ["id", "history", 3, "Expanded", "Disabled"], ["id", "actions", 3, "Expanded", "Disabled"], ["id", "subagents", 3, "Expanded", "Disabled"], ["id", "prompts", 3, "Expanded", "Disabled"], ["id", "learning", 3, "Expanded", "Disabled"], ["id", "notes", 3, "Expanded", "Disabled"], ["id", "search", 3, "Expanded"], ["id", "payload", 3, "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "section-header"], [1, "section-description"], [1, "payload-section"], [1, "payload-section-title"], [1, "fa-solid", "fa-target"], [1, "payload-field-container"], [1, "payload-field-info"], [1, "payload-field-label"], [1, "payload-field-description"], [1, "payload-field-input"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "payload-field-example"], [1, "fa-solid", "fa-lightbulb"], [1, "fa-solid", "fa-route"], [1, "payload-paths-grid"], [1, "payload-path-card"], [1, "payload-path-header"], [1, "payload-path-icon", "downstream"], [1, "fa-solid", "fa-arrow-down"], [1, "payload-path-info"], [1, "payload-path-content"], [1, "json-editor-container"], ["language", "json", 2, "height", "100px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "payload-path-hint"], [1, "fa-solid", "fa-info-circle"], [1, "payload-path-icon", "upstream"], [1, "fa-solid", "fa-arrow-up"], [1, "payload-path-icon", "self-read"], [1, "fa-solid", "fa-eye"], [1, "payload-path-icon", "self-write"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-shield-check"], [1, "payload-validation-container"], [1, "payload-validation-settings"], [1, "validation-field-group"], [1, "validation-field-label"], [1, "validation-field-description"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "payload-validation-schema"], [1, "validation-schema-label"], [1, "fa-solid", "fa-code"], [1, "validation-schema-description"], [1, "validation-schema-editor"], ["language", "json", 2, "height", "200px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], ["id", "guardrails", 3, "Expanded"], [1, "form-fields-grid"], ["FieldName", "MaxCostPerRun", "Type", "numerictextbox", "Caption", "Max Cost ($)", "Description", "Maximum cost per run", 3, "EditMode", "Record"], ["FieldName", "MaxTokensPerRun", "Type", "numerictextbox", "Caption", "Max Tokens", "Description", "Maximum tokens per run", 3, "EditMode", "Record"], ["FieldName", "MaxIterationsPerRun", "Type", "numerictextbox", "Caption", "Max Iterations", "Description", "Maximum prompt iterations", 3, "EditMode", "Record"], ["FieldName", "MaxTimePerRun", "Type", "numerictextbox", "Caption", "Max Time (seconds)", "Description", "Maximum execution time", 3, "EditMode", "Record"], ["id", "config", 3, "Expanded"], [1, "config-section"], [1, "config-section-title"], [1, "fa-solid", "fa-id-card"], [1, "config-grid"], [1, "config-card"], [1, "config-card-header"], [1, "config-card-icon"], [1, "fa-solid", "fa-toggle-on"], [1, "config-card-info"], [1, "config-card-content"], ["TextField", "text", "ValueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModel", "Data", "ValuePrimitive"], [1, "config-field-display"], ["TextField", "Name", "ValueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModel", "Data", "ValuePrimitive"], [1, "fa-solid", "fa-folder-tree"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "Select a category...", 3, "BranchConfig", "Value", "Clearable", "EnableSearch"], [1, "fa-solid", "fa-bolt"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card", "full-width"], [1, "fa-solid", "fa-align-left"], ["FieldName", "Description", "Type", "textarea", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "fa-solid", "fa-layer-group"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "Record"], [3, "TabChange", "Tabs", "ActiveKey"], [1, "agent-pane", "agent-pane--designer"], ["size", "medium", 3, "text"], [1, "agent-pane", "agent-pane--invocations"], [3, "RecordOpenRequested", "Provider", "AgentID", "Active", "ExposeAsAction", "ParentAgentName", "ParentAgentID"], [1, "agent-pane", "agent-pane--rubrics"], [3, "Provider", "AgentID", "Active"], [1, "panel-content", "execution-history-panel"], ["role", "tablist", 1, "history-view-toggle"], [1, "fa-solid", "fa-history"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "history-toggle-option", 3, "click"], [1, "fa-solid", "fa-person-running"], [1, "history-toggle-count"], [1, "fa-solid", "fa-tower-broadcast"], ["text", "Loading sessions...", "size", "medium"], ["Icon", "fa-solid fa-tower-broadcast", "Title", "No Voice Sessions", "Message", "This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.", "Size", "compact"], [1, "execution-history-list"], ["title", "Open session", 1, "execution-card", "session-card"], ["title", "Open session", 1, "execution-card", "session-card", 3, "click"], [1, "execution-header"], [1, "execution-left-section"], [1, "execution-status"], [1, "status-indicator"], [1, "execution-info"], [1, "execution-title"], [1, "session-role-chip"], [1, "session-role-chip", "session-role-chip--target"], [1, "execution-date"], [1, "execution-metrics"], [1, "metric-item"], [1, "session-status-pill"], [1, "fa-solid", "fa-stopwatch"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-plug"], [1, "fa-solid", "fa-user"], [1, "execution-actions"], ["title", "View session details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "fa-solid", "fa-bullseye"], ["text", "Loading execution history...", "size", "medium"], ["Icon", "fa-solid fa-clock-rotate-left", "Title", "No Execution History", "Message", "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.", "Size", "compact"], [1, "execution-search-bar"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by Run ID...", 1, "mj-input", 3, "ngModelChange", "ngModel", "ngModelOptions"], ["Variant", "no-results", "Title", "No Matching Results", "Size", "compact", 3, "Message"], [1, "execution-card", 3, "expanded"], [1, "pagination-controls"], [1, "execution-card"], [1, "execution-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], ["title", "View details", 1, "action-btn", 3, "click"], [1, "execution-expanded-content"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-microchip"], [1, "fa-solid", "fa-dollar-sign"], [1, "detailed-metrics"], [1, "metrics-grid"], [1, "metric-detail"], [1, "metric-info"], [1, "metric-title"], [1, "metric-data"], [1, "result-section"], [1, "error-section"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-calculator"], [1, "fa-solid", "fa-comments"], [1, "fa-solid", "fa-file-text"], ["language", "json", 2, "max-height", "200px", "width", "100%", 3, "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["mjButton", "", "variant", "outline", 1, "page-nav-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "view-all-btn", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "record-count"], [1, "loading-state"], [1, "header-actions"], ["mjButton", "", "variant", "primary", "size", "sm"], ["Icon", "fa-solid fa-bolt", "Title", "No Actions Configured", "Message", "Add actions to enable this agent to perform specific tasks and operations.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], [1, "entity-list"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["Icon", "fa-solid fa-bolt", "Title", "No Actions Configured", "Message", "Add actions to enable this agent to perform specific tasks and operations.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "action-item"], [1, "view-more-item"], [1, "entity-item", "action-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "status-tag"], [1, "item-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove action", 1, "error-action"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove action", 1, "error-action", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "view-more-item", 3, "click"], [1, "section-header", "sub-agent-filter-header"], [1, "filter-controls"], [1, "mj-button-group"], ["mjButton", "", "size", "sm", 3, "click"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-share-nodes"], ["Icon", "fa-solid fa-sitemap", "Title", "No Sub-Agents", "Message", "Sub-agents help build complex workflows through hierarchical orchestration.", "Size", "compact"], ["mjButton", "", "variant", "primary", "size", "sm", "title", "Create a new child sub-agent that shares this agent's payload", 3, "click"], ["mjButton", "", "size", "sm", "title", "Link an existing agent as a related sub-agent with payload mapping", 3, "click"], [1, "empty-state-info"], [1, "info-card"], [1, "fa-solid", "fa-link", 2, "color", "var(--mj-status-info)"], [1, "fa-solid", "fa-share-nodes", 2, "color", "var(--mj-brand-primary)"], [1, "entity-item", "sub-agent-item", 3, "child-sub-agent", "related-sub-agent"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "sub-agent-type-badge"], [1, "sub-agent-logo", 3, "src", "alt"], [1, "meta-tag", "payload-info"], [1, "fa-solid", "fa-database"], [1, "status-tag", 3, "background-color"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Configure output mapping"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Advanced settings"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "error-action", 3, "title"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Configure output mapping", 3, "click"], [1, "fa-solid", "fa-exchange-alt"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Advanced settings", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "error-action", 3, "click", "title"], [1, "prompt-controls"], [1, "model-selection-mode"], [1, "model-selection-label"], [1, "fa-solid", "fa-sliders"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModel", "Data", "ValuePrimitive"], [1, "model-selection-value"], ["Icon", "fa-solid fa-comments", "Title", "No Prompts Configured", "Message", "Add prompts to define how this agent processes requests and generates responses.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["Icon", "fa-solid fa-comments", "Title", "No Prompts Configured", "Message", "Add prompts to define how this agent processes requests and generates responses.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "prompt-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove prompt", 1, "error-action"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove prompt", 1, "error-action", 3, "click"], ["Icon", "fa-solid fa-brain", "Title", "No Learning Cycles", "Message", "Learning cycles will appear here as the agent processes requests and improves over time.", "Size", "compact"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], ["Icon", "fa-solid fa-sticky-note", "Title", "No Notes", "Message", "Add notes to document important information, observations, or instructions for this agent.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], [1, "fa-solid", "fa-sticky-note"], ["Icon", "fa-solid fa-sticky-note", "Title", "No Notes", "Message", "Add notes to document important information, observations, or instructions for this agent.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "agent-search-access"], [1, "agent-search-access-option"], ["type", "radio", "name", "SearchScopeAccess", "value", "All", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-globe"], [1, "agent-search-access-text"], [1, "agent-search-access-title"], [1, "agent-search-access-desc"], ["type", "radio", "name", "SearchScopeAccess", "value", "Assigned", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-user-check"], ["type", "radio", "name", "SearchScopeAccess", "value", "None", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-magnifying-glass"], [1, "agent-search-grid-header"], ["ChildEntityName", "MJ: AI Agent Search Scopes", "ParentFieldName", "AgentID", "AddButtonLabel", "+ Assign another scope", "EmptyMessage", "No scopes assigned yet. Assign at least one if this agent will use Scoped Search.", 3, "RowsChanged", "ParentID", "Columns", "Disabled"], [1, "agent-search-section", 2, "margin-top", "16px"], [2, "margin", "0 0 8px 0"], [1, "fa-solid", "fa-shield-halved"], [1, "section-description", 2, "margin-bottom", "8px"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)", "font-style", "italic"], [2, "margin-bottom", "12px", "padding", "8px 12px", "background", "var(--mj-bg-surface-card)", "border", "1px solid var(--mj-border-subtle)", "border-radius", "4px"], [2, "font-weight", "600", "margin-bottom", "4px"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em"], [2, "margin", "4px 0 0 16px", "padding", "0"], [2, "font-size", "0.9em", "padding", "2px 0"], [1, "fa-solid", "fa-cogs"], ["TextField", "text", "ValueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["TextField", "Name", "ValueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "Select a category...", 3, "ValueChange", "BranchConfig", "Value", "Clearable", "EnableSearch"], [1, "fa-solid", "fa-hashtag"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-save"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "prompt-selector-container"], [1, "prompt-display"], [1, "prompt-name"], [1, "no-prompt"], [1, "prompt-actions"], ["type", "button", "mjButton", "", "variant", "outline", "size", "sm", 1, "prompt-select-btn", 3, "click"], ["type", "button", "mjButton", "", "variant", "flat", "size", "sm", "title", "Clear selection", 1, "prompt-clear-btn"], ["type", "button", "mjButton", "", "variant", "flat", "size", "sm", "title", "Clear selection", 1, "prompt-clear-btn", 3, "click"], [1, "fa-solid", "fa-times"], [3, "Closed", "PermissionsChanged", "Agent"]], template: function MJAIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
5844
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["form", "ngForm"], ["customSectionContainer", ""], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Agent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form"], [1, "agent-header", "phone-hero", 3, "hero-view", "hero-compact"], [1, "agent-header-mini"], [1, "agent-form-loading"], [1, "agent-header", "phone-hero"], [1, "agent-header-content"], ["title", "Minimize header", 1, "agent-header-toggle", "phone-hero-hide", 3, "click"], [1, "fa-solid", "fa-chevron-up"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["type", "text", "name", "agentName", "placeholder", "Enter agent name...", 1, "mj-input", "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode", "phone-hero-detail"], [1, "parent-agent", "clickable", "phone-hero-detail", 3, "title"], [1, "agent-actions"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Refresh all data", 1, "phone-hero-detail", 3, "click"], [1, "fa-solid", "fa-refresh"], ["type", "button", 1, "phone-hero-summary"], ["type", "text", "name", "agentName", "placeholder", "Enter agent name...", 1, "mj-input", "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "parent-agent", "clickable", "phone-hero-detail", 3, "click", "title"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-external-link", 2, "margin-left", "4px", "font-size", "10px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Run this AI agent", 1, "phone-hero-run", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["mjButton", "", "size", "lg", 1, "phone-hero-detail", 3, "click", "title"], [1, "fa-solid"], ["type", "button", 1, "phone-hero-summary", 3, "click"], [1, "phone-hero-summary-text"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], ["title", "Expand header", 1, "agent-header-mini-expand", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "agent-header-mini-name"], [1, "agent-header-mini-status", 3, "background-color"], [1, "agent-header-mini-spacer"], ["title", "Refresh", 1, "agent-header-mini-btn", 3, "click"], [1, "agent-header-mini-status"], ["title", "Run agent", 1, "agent-header-mini-btn", "agent-header-mini-btn--primary", 3, "click", "disabled"], [1, "agent-header-mini-btn", 3, "click", "title"], ["text", "Loading agent...", "size", "medium"], [1, "agent-tabbar"], [1, "agent-pane", "agent-pane--designer", 3, "agent-pane--hidden"], [1, "form-content", "agent-pane"], ["id", "history", 3, "Expanded", "Disabled"], ["id", "actions", 3, "Expanded", "Disabled"], ["id", "subagents", 3, "Expanded", "Disabled"], ["id", "prompts", 3, "Expanded", "Disabled"], ["id", "learning", 3, "Expanded", "Disabled"], ["id", "notes", 3, "Expanded", "Disabled"], ["id", "search", 3, "Expanded"], ["id", "payload", 3, "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "section-header"], [1, "section-description"], [1, "payload-section"], [1, "payload-section-title"], [1, "fa-solid", "fa-target"], [1, "payload-field-container"], [1, "payload-field-info"], [1, "payload-field-label"], [1, "payload-field-description"], [1, "payload-field-input"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "payload-field-example"], [1, "fa-solid", "fa-lightbulb"], [1, "fa-solid", "fa-route"], [1, "payload-paths-grid"], [1, "payload-path-card"], [1, "payload-path-header"], [1, "payload-path-icon", "downstream"], [1, "fa-solid", "fa-arrow-down"], [1, "payload-path-info"], [1, "payload-path-content"], [1, "json-editor-container"], ["language", "json", 2, "height", "100px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "payload-path-hint"], [1, "fa-solid", "fa-info-circle"], [1, "payload-path-icon", "upstream"], [1, "fa-solid", "fa-arrow-up"], [1, "payload-path-icon", "self-read"], [1, "fa-solid", "fa-eye"], [1, "payload-path-icon", "self-write"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-shield-check"], [1, "payload-validation-container"], [1, "payload-validation-settings"], [1, "validation-field-group"], [1, "validation-field-label"], [1, "validation-field-description"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "payload-validation-schema"], [1, "validation-schema-label"], [1, "fa-solid", "fa-code"], [1, "validation-schema-description"], [1, "validation-schema-editor"], ["language", "json", 2, "height", "200px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], ["id", "guardrails", 3, "Expanded"], [1, "form-fields-grid"], ["FieldName", "MaxCostPerRun", "Type", "numerictextbox", "Caption", "Max Cost ($)", "Description", "Maximum cost per run", 3, "EditMode", "Record"], ["FieldName", "MaxTokensPerRun", "Type", "numerictextbox", "Caption", "Max Tokens", "Description", "Maximum tokens per run", 3, "EditMode", "Record"], ["FieldName", "MaxIterationsPerRun", "Type", "numerictextbox", "Caption", "Max Iterations", "Description", "Maximum prompt iterations", 3, "EditMode", "Record"], ["FieldName", "MaxTimePerRun", "Type", "numerictextbox", "Caption", "Max Time (seconds)", "Description", "Maximum execution time", 3, "EditMode", "Record"], ["id", "config", 3, "Expanded"], [1, "config-section"], [1, "config-section-title"], [1, "fa-solid", "fa-id-card"], [1, "config-grid"], [1, "config-card"], [1, "config-card-header"], [1, "config-card-icon"], [1, "fa-solid", "fa-toggle-on"], [1, "config-card-info"], [1, "config-card-content"], ["TextField", "text", "ValueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModel", "Data", "ValuePrimitive"], [1, "config-field-display"], ["TextField", "Name", "ValueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModel", "Data", "ValuePrimitive"], [1, "fa-solid", "fa-folder-tree"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "Select a category...", 3, "BranchConfig", "Value", "Clearable", "EnableSearch"], [1, "fa-solid", "fa-bolt"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card", "full-width"], [1, "fa-solid", "fa-align-left"], ["FieldName", "Description", "Type", "textarea", "Caption", "", 2, "width", "100%", 3, "EditMode", "Record"], [1, "fa-solid", "fa-layer-group"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "Record"], [1, "phone-section-picker", 3, "ActiveKeyChange", "Items", "ActiveKey"], [3, "TabChange", "Tabs", "ActiveKey"], [1, "agent-pane", "agent-pane--designer"], ["size", "medium", 3, "text"], [1, "agent-pane", "agent-pane--invocations"], [3, "RecordOpenRequested", "Provider", "AgentID", "Active", "ExposeAsAction", "ParentAgentName", "ParentAgentID"], [1, "agent-pane", "agent-pane--rubrics"], [3, "Provider", "AgentID", "Active"], [1, "panel-content", "execution-history-panel"], ["role", "tablist", 1, "history-view-toggle"], [1, "fa-solid", "fa-history"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "history-toggle-option", 3, "click"], [1, "fa-solid", "fa-person-running"], [1, "history-toggle-count"], [1, "fa-solid", "fa-tower-broadcast"], ["text", "Loading sessions...", "size", "medium"], ["Icon", "fa-solid fa-tower-broadcast", "Title", "No Voice Sessions", "Message", "This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.", "Size", "compact"], [1, "execution-history-list"], ["title", "Open session", 1, "execution-card", "session-card"], ["title", "Open session", 1, "execution-card", "session-card", 3, "click"], [1, "execution-header"], [1, "execution-left-section"], [1, "execution-status"], [1, "status-indicator"], [1, "execution-info"], [1, "execution-title"], [1, "session-role-chip"], [1, "session-role-chip", "session-role-chip--target"], [1, "execution-date"], [1, "execution-metrics"], [1, "metric-item"], [1, "session-status-pill"], [1, "fa-solid", "fa-stopwatch"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-plug"], [1, "fa-solid", "fa-user"], [1, "execution-actions"], ["title", "View session details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "fa-solid", "fa-bullseye"], ["text", "Loading execution history...", "size", "medium"], ["Icon", "fa-solid fa-clock-rotate-left", "Title", "No Execution History", "Message", "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.", "Size", "compact"], [1, "execution-search-bar"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by Run ID...", 1, "mj-input", 3, "ngModelChange", "ngModel", "ngModelOptions"], ["Variant", "no-results", "Title", "No Matching Results", "Size", "compact", 3, "Message"], [1, "execution-card", 3, "expanded"], [1, "pagination-controls"], [1, "execution-card"], [1, "execution-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], ["title", "View details", 1, "action-btn", 3, "click"], [1, "execution-expanded-content"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-microchip"], [1, "fa-solid", "fa-dollar-sign"], [1, "detailed-metrics"], [1, "metrics-grid"], [1, "metric-detail"], [1, "metric-info"], [1, "metric-title"], [1, "metric-data"], [1, "result-section"], [1, "error-section"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-calculator"], [1, "fa-solid", "fa-comments"], [1, "fa-solid", "fa-file-text"], ["language", "json", 2, "max-height", "200px", "width", "100%", 3, "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["mjButton", "", "variant", "outline", 1, "page-nav-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "view-all-btn", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "record-count"], [1, "loading-state"], [1, "header-actions"], ["mjButton", "", "variant", "primary", "size", "sm"], ["Icon", "fa-solid fa-bolt", "Title", "No Actions Configured", "Message", "Add actions to enable this agent to perform specific tasks and operations.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], [1, "entity-list"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["Icon", "fa-solid fa-bolt", "Title", "No Actions Configured", "Message", "Add actions to enable this agent to perform specific tasks and operations.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "action-item"], [1, "view-more-item"], [1, "entity-item", "action-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "status-tag"], [1, "item-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove action", 1, "error-action"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove action", 1, "error-action", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "view-more-item", 3, "click"], [1, "section-header", "sub-agent-filter-header"], [1, "filter-controls"], [1, "mj-button-group"], ["mjButton", "", "size", "sm", 3, "click"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-share-nodes"], ["Icon", "fa-solid fa-sitemap", "Title", "No Sub-Agents", "Message", "Sub-agents help build complex workflows through hierarchical orchestration.", "Size", "compact"], ["mjButton", "", "variant", "primary", "size", "sm", "title", "Create a new child sub-agent that shares this agent's payload", 3, "click"], ["mjButton", "", "size", "sm", "title", "Link an existing agent as a related sub-agent with payload mapping", 3, "click"], [1, "empty-state-info"], [1, "info-card"], [1, "fa-solid", "fa-link", 2, "color", "var(--mj-status-info)"], [1, "fa-solid", "fa-share-nodes", 2, "color", "var(--mj-brand-primary)"], [1, "entity-item", "sub-agent-item", 3, "child-sub-agent", "related-sub-agent"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "sub-agent-type-badge"], [1, "sub-agent-logo", 3, "src", "alt"], [1, "meta-tag", "payload-info"], [1, "fa-solid", "fa-database"], [1, "status-tag", 3, "background-color"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Configure output mapping"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Advanced settings"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "error-action", 3, "title"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Configure output mapping", 3, "click"], [1, "fa-solid", "fa-exchange-alt"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Advanced settings", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "error-action", 3, "click", "title"], [1, "prompt-controls"], [1, "model-selection-mode"], [1, "model-selection-label"], [1, "fa-solid", "fa-sliders"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModel", "Data", "ValuePrimitive"], [1, "model-selection-value"], ["Icon", "fa-solid fa-comments", "Title", "No Prompts Configured", "Message", "Add prompts to define how this agent processes requests and generates responses.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["Icon", "fa-solid fa-comments", "Title", "No Prompts Configured", "Message", "Add prompts to define how this agent processes requests and generates responses.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "prompt-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove prompt", 1, "error-action"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Remove prompt", 1, "error-action", 3, "click"], ["Icon", "fa-solid fa-brain", "Title", "No Learning Cycles", "Message", "Learning cycles will appear here as the agent processes requests and improves over time.", "Size", "compact"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], ["Icon", "fa-solid fa-sticky-note", "Title", "No Notes", "Message", "Add notes to document important information, observations, or instructions for this agent.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "ActionText"], [1, "fa-solid", "fa-sticky-note"], ["Icon", "fa-solid fa-sticky-note", "Title", "No Notes", "Message", "Add notes to document important information, observations, or instructions for this agent.", "ActionIcon", "fa-solid fa-plus", "Size", "compact", 3, "Action", "ActionText"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "agent-search-access"], [1, "agent-search-access-option"], ["type", "radio", "name", "SearchScopeAccess", "value", "All", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-globe"], [1, "agent-search-access-text"], [1, "agent-search-access-title"], [1, "agent-search-access-desc"], ["type", "radio", "name", "SearchScopeAccess", "value", "Assigned", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-user-check"], ["type", "radio", "name", "SearchScopeAccess", "value", "None", 3, "change", "checked", "disabled"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-magnifying-glass"], [1, "agent-search-grid-header"], ["ChildEntityName", "MJ: AI Agent Search Scopes", "ParentFieldName", "AgentID", "AddButtonLabel", "+ Assign another scope", "EmptyMessage", "No scopes assigned yet. Assign at least one if this agent will use Scoped Search.", 3, "RowsChanged", "ParentID", "Columns", "Disabled"], [1, "agent-search-section", 2, "margin-top", "16px"], [2, "margin", "0 0 8px 0"], [1, "fa-solid", "fa-shield-halved"], [1, "section-description", 2, "margin-bottom", "8px"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)", "font-style", "italic"], [2, "margin-bottom", "12px", "padding", "8px 12px", "background", "var(--mj-bg-surface-card)", "border", "1px solid var(--mj-border-subtle)", "border-radius", "4px"], [2, "font-weight", "600", "margin-bottom", "4px"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em"], [2, "margin", "4px 0 0 16px", "padding", "0"], [2, "font-size", "0.9em", "padding", "2px 0"], [1, "fa-solid", "fa-cogs"], ["TextField", "text", "ValueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["TextField", "Name", "ValueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "Select a category...", 3, "ValueChange", "BranchConfig", "Value", "Clearable", "EnableSearch"], [1, "fa-solid", "fa-hashtag"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-save"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "prompt-selector-container"], [1, "prompt-display"], [1, "prompt-name"], [1, "no-prompt"], [1, "prompt-actions"], ["type", "button", "mjButton", "", "variant", "outline", "size", "sm", 1, "prompt-select-btn", 3, "click"], ["type", "button", "mjButton", "", "variant", "flat", "size", "sm", "title", "Clear selection", 1, "prompt-clear-btn"], ["type", "button", "mjButton", "", "variant", "flat", "size", "sm", "title", "Clear selection", 1, "prompt-clear-btn", 3, "click"], [1, "fa-solid", "fa-times"], [3, "Closed", "PermissionsChanged", "Agent"]], template: function MJAIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
5795
5845
|
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Template, 7, 7, "mj-record-form-container", 2);
|
|
5796
5846
|
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_1_Template, 1, 1, "mj-agent-permissions-dialog", 3);
|
|
5797
5847
|
} if (rf & 2) {
|
|
5798
5848
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
5799
5849
|
i0.ɵɵadvance();
|
|
5800
5850
|
i0.ɵɵconditional(ctx.ShowPermissionsDialog ? 1 : -1);
|
|
5801
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJTabNavComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.LoadingComponent, i6.AgentPermissionsDialogComponent, i6.AgentInvocationsComponent, i6.AgentRubricsComponent, i7.TreeDropdownComponent, i8.SearchScopeChildGridComponent, i9.DatePipe], styles: ["\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n transition: padding 0.2s ease;\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n\n.agent-header-toggle[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n padding: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-toggle[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n flex-shrink: 0;\n transition: all 0.2s ease;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n\n.agent-header-mini[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 12px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n height: 32px;\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.agent-header-mini-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n\n.agent-header-mini-status[_ngcontent-%COMP%] {\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.agent-header-mini-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.agent-header-mini-btn--primary[_ngcontent-%COMP%] {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-header-mini-btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) {\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) 50%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] img.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 16px !important;\n font-weight: 500 !important;\n height: 30px !important;\n width: 100% !important;\n max-width: 350px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-text-primary);\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n\n.prompt-controls[_ngcontent-%COMP%] {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n gap: 8px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-text-secondary);\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: var(--mj-status-error);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n padding: 8px 12px;\n}\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n border: 1px solid var(--mj-border-default);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-bg-surface-sunken);\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: var(--mj-text-primary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n display: none; \n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-brand-primary);\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 90%, transparent);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid var(--mj-bg-surface-sunken);\n border-top: 4px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n}\n\n.item-icon[_ngcontent-%COMP%] img.sub-agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-tag.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-tag.inactive[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n\n.pagination-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n margin-top: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.page-nav-btn[_ngcontent-%COMP%] {\n min-width: 120px;\n font-weight: 500;\n}\n\n.page-nav-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.page-nav-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 0 16px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n min-width: 200px;\n text-align: center;\n}\n\n.page-info[_ngcontent-%COMP%] .record-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: normal;\n}\n\n.page-info[_ngcontent-%COMP%] .fa-spinner[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.view-all-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n\n.payload-config-section[_ngcontent-%COMP%], \n.payload-paths-section[_ngcontent-%COMP%], \n.payload-validation-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.subsection-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.subsection-divider[_ngcontent-%COMP%] {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.payload-config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 16px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: normal;\n color: var(--mj-text-muted);\n margin-left: auto;\n}\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n border-color: var(--mj-brand-primary);\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-text-muted);\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 4px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: var(--mj-text-muted);\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.timeline-item.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-item[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: var(--mj-text-muted);\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n.timeline-expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.result-content[_ngcontent-%COMP%], \n.error-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n\n.result-section[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.execution-details[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-all;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n@media (max-width: 768px) {\n \n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n\n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n\n \n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n\n \n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n\n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n\n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n\n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n \n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n\n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n\n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n\n \n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n \n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n\n.execution-search-bar[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n padding: 0 4px;\n}\n\n.execution-search-bar[_ngcontent-%COMP%] .fa-search[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n font-size: 14px;\n}\n\n\n.execution-history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 8px;\n}\n\n.execution-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.execution-header[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.execution-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; \n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 6px 10px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.metric-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.execution-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\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.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n.execution-expanded-content[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n background: var(--mj-bg-surface-card);\n animation: _ngcontent-%COMP%_slideDown 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.metric-detail[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n\n@media (max-width: 768px) {\n .execution-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .execution-left-section[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .execution-metrics[_ngcontent-%COMP%] {\n margin-left: 0; \n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n\n .metric-item[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 4px 8px;\n }\n\n .metrics-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.payload-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.payload-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n\n.payload-field-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.payload-field-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.payload-field-example[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.9rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n\n.payload-paths-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.payload-path-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.payload-path-icon.upstream[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-read[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-write[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.payload-path-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.payload-path-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n.payload-path-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n.payload-validation-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.validation-field-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.validation-schema-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n\n.config-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.config-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.config-card-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.config-card-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.config-card-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n\n.config-field-input[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 250px;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field {\n width: 100% !important;\n}\n\n.config-field-display[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n\n.prompt-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.prompt-clear-btn[_ngcontent-%COMP%] {\n min-width: 32px;\n}\n\n.config-card-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n\n@media (max-width: 768px) {\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .payload-paths-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .payload-section-title[_ngcontent-%COMP%], \n .config-section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .payload-path-header[_ngcontent-%COMP%], \n .config-card-header[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n\n .payload-path-content[_ngcontent-%COMP%], \n .config-card-content[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n}\n\n\n\n\n\n\n.sub-agent-filter-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n.sub-agent-type-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n\n.sub-agent-item[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item.related-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n\n.payload-info[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n\n.empty-state-info[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n\n@media (max-width: 768px) {\n .sub-agent-filter-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-controls[_ngcontent-%COMP%], \n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: center;\n }\n\n .empty-state-info[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.agent-search-access[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n margin: 8px 0 20px;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 24px 28px 1fr;\n align-items: start;\n gap: 10px;\n padding: 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.agent-search-access-option.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n accent-color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n text-align: center;\n margin-top: 2px;\n}\n\n.agent-search-access-text[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.agent-search-access-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.agent-search-access-desc[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.agent-search-grid-header[_ngcontent-%COMP%] {\n margin: 8px 0 12px;\n}\n\n.agent-search-grid-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n@media (max-width: 768px) {\n .agent-search-access[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.history-view-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 2px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 3px;\n margin-bottom: 14px;\n}\n\n.history-toggle-option[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 6px 16px;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.history-toggle-option[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.history-toggle-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-card);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active[_ngcontent-%COMP%] .history-toggle-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.session-card[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.session-role-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n padding: 1px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.session-role-chip--target[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n color: var(--mj-status-info);\n}\n\n.session-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.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n\n\n\n\n\n\n.agent-tabbar[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 12px 0;\n background: var(--mj-bg-page);\n}\n\n.agent-pane[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.agent-pane--hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n.agent-pane--designer[_ngcontent-%COMP%] {\n overflow: hidden;\n padding: 8px 12px 12px;\n background: var(--mj-bg-page);\n}\n\n\n\n.agent-pane--designer[_ngcontent-%COMP%] > ng-component[_ngcontent-%COMP%], \n.agent-pane--designer[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n.agent-pane--invocations[_ngcontent-%COMP%] {\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n}\n\n\n\n\n.agent-form-loading[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 240px;\n padding: 32px;\n background: var(--mj-bg-page);\n}"] }); }
|
|
5851
|
+
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJTabNavComponent, i2.MJSectionPickerComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.LoadingComponent, i6.AgentPermissionsDialogComponent, i6.AgentInvocationsComponent, i6.AgentRubricsComponent, i7.TreeDropdownComponent, i8.SearchScopeChildGridComponent, i9.DatePipe], styles: ["\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n transition: padding 0.2s ease;\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n\n.agent-header-toggle[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n padding: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-toggle[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n flex-shrink: 0;\n transition: all 0.2s ease;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n\n.agent-header-mini[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 12px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n height: 32px;\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-expand[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.agent-header-mini-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n\n.agent-header-mini-status[_ngcontent-%COMP%] {\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.agent-header-mini-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.agent-header-mini-btn--primary[_ngcontent-%COMP%] {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-header-mini-btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) {\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) 50%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.agent-header-mini-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] img.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 16px !important;\n font-weight: 500 !important;\n height: 30px !important;\n width: 100% !important;\n max-width: 350px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-text-primary);\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n\n.prompt-controls[_ngcontent-%COMP%] {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n gap: 8px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-text-secondary);\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: var(--mj-status-error);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n padding: 8px 12px;\n}\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n border: 1px solid var(--mj-border-default);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-bg-surface-sunken);\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: var(--mj-text-primary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n display: none; \n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-brand-primary);\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 90%, transparent);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid var(--mj-bg-surface-sunken);\n border-top: 4px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n}\n\n.item-icon[_ngcontent-%COMP%] img.sub-agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-tag.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-tag.inactive[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n\n.pagination-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n margin-top: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.page-nav-btn[_ngcontent-%COMP%] {\n min-width: 120px;\n font-weight: 500;\n}\n\n.page-nav-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.page-nav-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 0 16px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n min-width: 200px;\n text-align: center;\n}\n\n.page-info[_ngcontent-%COMP%] .record-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: normal;\n}\n\n.page-info[_ngcontent-%COMP%] .fa-spinner[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.view-all-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n\n.payload-config-section[_ngcontent-%COMP%], \n.payload-paths-section[_ngcontent-%COMP%], \n.payload-validation-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.subsection-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.subsection-divider[_ngcontent-%COMP%] {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.payload-config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 16px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: normal;\n color: var(--mj-text-muted);\n margin-left: auto;\n}\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n border-color: var(--mj-brand-primary);\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-text-muted);\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 4px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: var(--mj-text-muted);\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.timeline-item.expanded[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-item[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: var(--mj-text-muted);\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n.timeline-expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.result-content[_ngcontent-%COMP%], \n.error-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n\n.result-section[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.execution-details[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-all;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n@media (max-width: 768px) {\n \n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n\n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n\n \n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n\n \n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n\n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n\n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n\n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n \n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n\n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n\n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n\n \n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n \n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n\n.execution-search-bar[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n padding: 0 4px;\n}\n\n.execution-search-bar[_ngcontent-%COMP%] .fa-search[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n font-size: 14px;\n}\n\n\n.execution-history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 8px;\n}\n\n.execution-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.execution-header[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.execution-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; \n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 6px 10px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.metric-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.execution-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\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.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n.execution-expanded-content[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n background: var(--mj-bg-surface-card);\n animation: _ngcontent-%COMP%_slideDown 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.metric-detail[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n\n@media (max-width: 768px) {\n .execution-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .execution-left-section[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .execution-metrics[_ngcontent-%COMP%] {\n margin-left: 0; \n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n\n .metric-item[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 4px 8px;\n }\n\n .metrics-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.payload-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.payload-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n\n.payload-field-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.payload-field-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.payload-field-example[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.9rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n\n.payload-paths-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.payload-path-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.payload-path-icon.upstream[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-read[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-write[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.payload-path-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.payload-path-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n.payload-path-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n.payload-validation-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.validation-field-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.validation-schema-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n}\n\n\n.config-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.config-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.config-card-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.config-card-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.config-card-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n\n.config-field-input[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 250px;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field {\n width: 100% !important;\n}\n\n.config-field-display[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n\n.prompt-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.prompt-clear-btn[_ngcontent-%COMP%] {\n min-width: 32px;\n}\n\n.config-card-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n\n@media (max-width: 768px) {\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .payload-paths-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .payload-section-title[_ngcontent-%COMP%], \n .config-section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .payload-path-header[_ngcontent-%COMP%], \n .config-card-header[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n\n .payload-path-content[_ngcontent-%COMP%], \n .config-card-content[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n}\n\n\n\n\n\n\n.sub-agent-filter-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n.sub-agent-type-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n\n.sub-agent-item[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item.related-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n\n.payload-info[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n\n.empty-state-info[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n\n@media (max-width: 768px) {\n .sub-agent-filter-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-controls[_ngcontent-%COMP%], \n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: center;\n }\n\n .empty-state-info[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.agent-search-access[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n margin: 8px 0 20px;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 24px 28px 1fr;\n align-items: start;\n gap: 10px;\n padding: 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.agent-search-access-option.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n accent-color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.agent-search-access-option[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n text-align: center;\n margin-top: 2px;\n}\n\n.agent-search-access-text[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.agent-search-access-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.agent-search-access-desc[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.agent-search-grid-header[_ngcontent-%COMP%] {\n margin: 8px 0 12px;\n}\n\n.agent-search-grid-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n@media (max-width: 768px) {\n .agent-search-access[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.history-view-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 2px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 3px;\n margin-bottom: 14px;\n}\n\n.history-toggle-option[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 6px 16px;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.history-toggle-option[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.history-toggle-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-card);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active[_ngcontent-%COMP%] .history-toggle-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.session-card[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.session-role-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n padding: 1px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.session-role-chip--target[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n color: var(--mj-status-info);\n}\n\n.session-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.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n\n\n\n\n\n\n.agent-tabbar[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 12px 0;\n background: var(--mj-bg-page);\n}\n\n\n.agent-tabbar[_ngcontent-%COMP%] .phone-section-picker[_ngcontent-%COMP%] {\n display: none;\n}\n\n@media (max-width: 768px) {\n .agent-tabbar[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .agent-tabbar[_ngcontent-%COMP%] mj-tab-nav[_ngcontent-%COMP%] {\n display: none;\n }\n\n .agent-tabbar[_ngcontent-%COMP%] .phone-section-picker[_ngcontent-%COMP%] {\n display: block;\n }\n}\n\n\n\n@media (max-width: 768px) {\n .agent-header.phone-hero.hero-view[_ngcontent-%COMP%] .agent-overview[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n gap: 10px;\n width: 100%;\n }\n\n .agent-header.phone-hero.hero-view[_ngcontent-%COMP%] .agent-info[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .agent-header.phone-hero.hero-view[_ngcontent-%COMP%] .agent-name[_ngcontent-%COMP%] {\n overflow-wrap: anywhere;\n }\n\n .agent-header.phone-hero.hero-view[_ngcontent-%COMP%] .agent-meta[_ngcontent-%COMP%] {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n }\n}\n\n.agent-pane[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.agent-pane--hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n.agent-pane--designer[_ngcontent-%COMP%] {\n overflow: hidden;\n padding: 8px 12px 12px;\n background: var(--mj-bg-page);\n}\n\n\n\n.agent-pane--designer[_ngcontent-%COMP%] > ng-component[_ngcontent-%COMP%], \n.agent-pane--designer[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n.agent-pane--invocations[_ngcontent-%COMP%] {\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n}\n\n\n\n\n.agent-form-loading[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 240px;\n padding: 32px;\n background: var(--mj-bg-page);\n}", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n.phone-hero-summary[_ngcontent-%COMP%], \n.phone-hero-only[_ngcontent-%COMP%] {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero[_ngcontent-%COMP%] {\n padding: 12px !important;\n }\n\n \n .phone-hero.hero-compact[_ngcontent-%COMP%] .phone-hero-detail[_ngcontent-%COMP%], \n .phone-hero.hero-view[_ngcontent-%COMP%] .phone-hero-hide[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .phone-hero-only[_ngcontent-%COMP%] {\n display: inline-flex;\n }\n\n \n .phone-hero[_ngcontent-%COMP%] .phone-hero-stats[_ngcontent-%COMP%] {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status[_ngcontent-%COMP%] {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n \n .phone-hero-status[data-status=\"running\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"][_ngcontent-%COMP%] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .phone-hero[_ngcontent-%COMP%] .phone-hero-run[_ngcontent-%COMP%] {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n \n\n .phone-hero-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"][_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transition: none;\n }\n}"] }); }
|
|
5802
5852
|
};
|
|
5803
5853
|
MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
5804
5854
|
RegisterClass(BaseFormComponent, 'MJ: AI Agents')
|
|
@@ -5806,10 +5856,10 @@ MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
|
5806
5856
|
export { MJAIAgentFormComponentExtended };
|
|
5807
5857
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentFormComponentExtended, [{
|
|
5808
5858
|
type: Component,
|
|
5809
|
-
args: [{ standalone: false, selector: 'mj-ai-agent-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 <form class=\"record-form\" #form=\"ngForm\">\n <!-- Agent Header \u2014 expanded view -->\n @if (!HeaderCollapsed) {\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <button class=\"agent-header-toggle\" (click)=\"ToggleHeaderCollapsed()\"\n title=\"Minimize header\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input agent-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"agentName\"\n placeholder=\"Enter agent name...\">\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.Type) {\n <span class=\"execution-mode\">\n Agent Type: {{ record.Type }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent clickable\"\n (click)=\"navigateToParentAgent()\"\n title=\"Open parent agent: {{ record.Parent }}\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n <i class=\"fa-solid fa-external-link\" style=\"margin-left: 4px; font-size: 10px;\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button mjButton variant=\"primary\" size=\"lg\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n <button mjButton size=\"lg\"\n (click)=\"openPermissionsDialog()\"\n [title]=\"IsOpenToEveryone ? 'Open to everyone \u2014 click to manage permissions' : 'Restricted \u2014 click to manage permissions'\">\n <i class=\"fa-solid\" [class.fa-lock-open]=\"IsOpenToEveryone\" [class.fa-lock]=\"!IsOpenToEveryone\"\n [style.color]=\"IsOpenToEveryone ? 'var(--mj-status-success)' : null\"></i>\n {{ IsOpenToEveryone ? 'Open' : 'Restricted' }}\n </button>\n }\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n <!-- Agent Header \u2014 minimized floating bar -->\n @if (HeaderCollapsed) {\n <div class=\"agent-header-mini\">\n <button class=\"agent-header-mini-expand\" (click)=\"ToggleHeaderCollapsed()\"\n title=\"Expand header\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n <span class=\"agent-header-mini-name\">{{ record.Name || 'Untitled AI Agent' }}</span>\n @if (record.Status) {\n <span class=\"agent-header-mini-status\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ record.Status }}\n </span>\n }\n <div class=\"agent-header-mini-spacer\"></div>\n @if (record.ID) {\n <button class=\"agent-header-mini-btn agent-header-mini-btn--primary\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n <button class=\"agent-header-mini-btn\"\n (click)=\"openPermissionsDialog()\"\n [title]=\"IsOpenToEveryone ? 'Open to everyone' : 'Restricted'\">\n <i class=\"fa-solid\" [class.fa-lock-open]=\"IsOpenToEveryone\" [class.fa-lock]=\"!IsOpenToEveryone\"\n [style.color]=\"IsOpenToEveryone ? 'var(--mj-status-success)' : null\"></i>\n </button>\n }\n <button class=\"agent-header-mini-btn\"\n (click)=\"refreshRelatedData()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n }\n <!-- The tab strip and every pane depend on the agent's TYPE, which loads asynchronously.\n Without this the form rendered its header over an empty area for the whole load \u2014\n no tabs, no designer, and the details pane hidden because no tab was active yet. -->\n @if (IsFormInitializing) {\n <div class=\"agent-form-loading\">\n <mj-loading text=\"Loading agent...\" size=\"medium\"></mj-loading>\n </div>\n } @else {\n <!-- Tabs, not accordions. For an agent type that ships a designer, the diagram IS the agent;\n leaving it as one collapsed panel among eleven made the record's most important view its\n least reachable one. Invocations is offered for every agent, because \"what runs this when\n I'm not looking?\" is a question you can ask of any of them. -->\n @if (FormTabs.length > 1) {\n <div class=\"agent-tabbar\">\n <mj-tab-nav [Tabs]=\"FormTabs\" [ActiveKey]=\"ActiveFormTab || ''\" (TabChange)=\"OnFormTabChange($event)\"></mj-tab-nav>\n </div>\n }\n\n @if (HasDesignerTab) {\n <!-- Hidden with CSS rather than removed with @if: the designer holds UNSAVED edits, and\n destroying it on a tab switch would discard them without a word. Keeping it mounted also\n means the canvas keeps its zoom and node positions across trips to Details. -->\n <div class=\"agent-pane agent-pane--designer\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'designer'\">\n @if (loadingStates.customSection) {\n <mj-loading text=\"Loading {{ agentType?.Name }} configuration...\" size=\"medium\"></mj-loading>\n }\n <ng-container #customSectionContainer></ng-container>\n </div>\n }\n\n @if (record.ID) {\n <div class=\"agent-pane agent-pane--invocations\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'invocations'\">\n <mj-agent-invocations\n [Provider]=\"Provider\"\n [AgentID]=\"record.ID\"\n [Active]=\"ActiveFormTab === 'invocations'\"\n [ExposeAsAction]=\"record.ExposeAsAction\"\n [ParentAgentName]=\"record.Parent\"\n [ParentAgentID]=\"record.ParentID\"\n (RecordOpenRequested)=\"OnInvocationOpenRequested($event)\">\n </mj-agent-invocations>\n </div>\n <div class=\"agent-pane agent-pane--rubrics\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'rubrics'\">\n <mj-agent-rubrics\n [Provider]=\"Provider\"\n [AgentID]=\"record.ID\"\n [Active]=\"ActiveFormTab === 'rubrics'\">\n </mj-agent-rubrics>\n </div>\n }\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content agent-pane\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'details'\">\n <!-- Requests & History -->\n @if (record.ID) {\n <mj-accordion-panel id=\"history\"\n [Expanded]=\"GetSectionExpanded('history', false)\"\n [Disabled]=\"loadingStates.executionHistory\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History\n @if (loadingStates.executionHistory) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (executionHistoryCount > 0) {\n <span> ({{ executionHistoryCount }}@if (executionHistoryCount < totalExecutionHistoryCount) { of {{ totalExecutionHistoryCount }}})</span>\n }\n </ng-template>\n <div class=\"panel-content execution-history-panel\">\n <!-- Segmented toggle: agent runs vs. realtime voice sessions -->\n @if (UserCanViewSessions) {\n <div class=\"history-view-toggle\" role=\"tablist\">\n <button type=\"button\" class=\"history-toggle-option\"\n [class.active]=\"executionHistoryView === 'runs'\"\n (click)=\"setExecutionHistoryView('runs')\">\n <i class=\"fa-solid fa-person-running\"></i> Runs\n @if (totalExecutionHistoryCount > 0) {\n <span class=\"history-toggle-count\">{{ totalExecutionHistoryCount }}</span>\n }\n </button>\n <button type=\"button\" class=\"history-toggle-option\"\n [class.active]=\"executionHistoryView === 'sessions'\"\n (click)=\"setExecutionHistoryView('sessions')\">\n <i class=\"fa-solid fa-tower-broadcast\"></i> Sessions\n @if (totalSessionCount > 0) {\n <span class=\"history-toggle-count\">{{ totalSessionCount }}</span>\n }\n </button>\n </div>\n }\n @if (executionHistoryView === 'sessions') {\n <!-- Voice/realtime sessions list -->\n @if (loadingSessions) {\n <mj-loading text=\"Loading sessions...\" size=\"medium\"></mj-loading>\n } @else if (agentSessions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-tower-broadcast\"\n Title=\"No Voice Sessions\"\n Message=\"This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.\"\n Size=\"compact\" />\n } @else {\n <div class=\"execution-history-list\">\n @for (item of agentSessions; track item.row.ID) {\n <div class=\"execution-card session-card\" (click)=\"openSessionRecord(item.row.ID)\" title=\"Open session\">\n <div class=\"execution-header\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getSessionStatusColor(item.row.Status)\">\n <i [class]=\"getSessionStatusIcon(item.row.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n Session #{{ item.row.ID.substring(0, 8) }}\n @if (item.isCoAgent) {\n <span class=\"session-role-chip\">as co-agent</span>\n }\n @if (item.isTarget) {\n <span class=\"session-role-chip session-role-chip--target\">as target</span>\n }\n </div>\n <div class=\"execution-date\">{{ item.row.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n <div class=\"execution-metrics\">\n <div class=\"metric-item\">\n <span class=\"session-status-pill\" [attr.data-status]=\"item.row.Status\">{{ item.row.Status }}</span>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatSessionDuration(item) }}</span>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-plug\"></i>\n <span class=\"metric-label\">Channels:</span>\n <span class=\"metric-value\">{{ item.channelCount }}</span>\n </div>\n @if (item.isCoAgent && item.targetAgentName) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bullseye\"></i>\n <span class=\"metric-label\">Target:</span>\n <span class=\"metric-value\">{{ item.targetAgentName }}</span>\n </div>\n }\n @if (item.isTarget && !item.isCoAgent && item.row.Agent) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tower-broadcast\"></i>\n <span class=\"metric-label\">Co-agent:</span>\n <span class=\"metric-value\">{{ item.row.Agent }}</span>\n </div>\n }\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-user\"></i>\n <span class=\"metric-label\">User:</span>\n <span class=\"metric-value\">{{ item.row.User }}</span>\n </div>\n </div>\n </div>\n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openSessionRecord(item.row.ID); $event.stopPropagation()\" title=\"View session details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n @if (loadingStates.executionHistory) {\n <mj-loading text=\"Loading execution history...\" size=\"medium\"></mj-loading>\n } @else if (executionHistoryCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-clock-rotate-left\"\n Title=\"No Execution History\"\n Message=\"This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.\"\n Size=\"compact\" />\n } @else {\n <!-- Search Bar -->\n <div class=\"execution-search-bar\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"executionSearchText\"\n (ngModelChange)=\"onExecutionSearchChange()\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"Search by Run ID...\">\n </div>\n </div>\n <div class=\"execution-history-list\">\n @if (filteredExecutions.length === 0) {\n <mj-empty-state\n Variant=\"no-results\"\n Title=\"No Matching Results\"\n [Message]=\"ExecutionSearchEmptyMessage\"\n Size=\"compact\" />\n }\n @for (execution of filteredExecutions; track execution.ID) {\n <div class=\"execution-card\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n </div>\n <div class=\"execution-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n <div class=\"execution-metrics\">\n @if (execution.Configuration) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <span class=\"metric-label\">Config:</span>\n <span class=\"metric-value\">{{ execution.Configuration }}</span>\n </div>\n }\n @if (execution.CompletedAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}</span>\n </div>\n } @else if (execution.Status === 'Running') {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span class=\"metric-label\">Running:</span>\n <!-- <span class=\"metric-value\">{{ execution.StartedAt | runningTime }}</span> -->\n </div>\n }\n @if (execution.TotalTokensUsedRollup || execution.TotalTokensUsed) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"metric-label\">Tokens:</span>\n <span class=\"metric-value\">{{ formatTokenCount(execution.TotalTokensUsedRollup || execution.TotalTokensUsed) }}</span>\n </div>\n }\n @if (execution.TotalCostRollup || execution.TotalCost) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <span class=\"metric-label\">Cost:</span>\n <span class=\"metric-value\">${{ formatCost(execution.TotalCostRollup || execution.TotalCost) }}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\" title=\"View details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"execution-expanded-content\">\n <!-- Detailed Metrics -->\n <div class=\"detailed-metrics\">\n <div class=\"metrics-grid\">\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Started</span>\n <span class=\"metric-data\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Completed</span>\n <span class=\"metric-data\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n </div>\n }\n @if (execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-microchip\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Tokens</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsed) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalTokensUsedRollup && execution.TotalTokensUsedRollup !== execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsedRollup) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Cost</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCost) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalCostRollup && execution.TotalCostRollup !== execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-calculator\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCostRollup) }}</span>\n </div>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-comments\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Conversation</span>\n <span class=\"metric-data\">{{ execution.ConversationID.substring(0, 8) }}...</span>\n </div>\n </div>\n }\n </div>\n </div>\n @if (HasExecutionResult(execution)) {\n <div class=\"result-section\">\n <h5><i class=\"fa-solid fa-file-text\"></i> Result</h5>\n <mj-code-editor\n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Pagination Controls -->\n @if (totalPages > 1) {\n <div class=\"pagination-controls\">\n <button mjButton\n variant=\"outline\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"!hasPreviousPage || isLoadingPage\"\n class=\"page-nav-btn\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n Previous\n </button>\n <div class=\"page-info\">\n @if (isLoadingPage) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading...\n } @else {\n Page {{ executionHistoryCurrentPage }} of {{ totalPages }}\n <span class=\"record-count\">({{ totalExecutionHistoryCount }} total)</span>\n }\n </div>\n <button mjButton\n variant=\"outline\"\n (click)=\"goToNextPage()\"\n [disabled]=\"!hasNextPage || isLoadingPage\"\n class=\"page-nav-btn\">\n Next\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\"\n class=\"view-all-btn\">\n <i class=\"fa-solid fa-external-link\"></i>\n View All in Grid\n </button>\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Actions -->\n @if (record.ID) {\n <mj-accordion-panel id=\"actions\"\n [Expanded]=\"GetSectionExpanded('actions', false)\"\n [Disabled]=\"loadingStates.actions\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions\n @if (loadingStates.actions) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (actionCount > 0) {\n <span> ({{ actionCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n @if (loadingStates.actions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading actions...</p>\n </div>\n } @else {\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n @if (actionCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-bolt\"\n Title=\"No Actions Configured\"\n Message=\"Add actions to enable this agent to perform specific tasks and operations.\"\n [ActionText]=\"(EditMode && UserCanCreateActions) ? 'Configure First Action' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"configureActions()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('MJ: Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\"\n class=\"error-action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Sub-Agents (Unified View with Filter) -->\n @if (record.ID) {\n <mj-accordion-panel id=\"subagents\"\n [Expanded]=\"GetSectionExpanded('subagents', false)\"\n [Disabled]=\"loadingStates.subAgents\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents\n @if (loadingStates.subAgents) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (totalSubAgentCount > 0) {\n <span> ({{ totalSubAgentCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <!-- Filter Controls -->\n <div class=\"section-header sub-agent-filter-header\">\n <div class=\"filter-controls\">\n <div class=\"mj-button-group\">\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'all'\"\n (click)=\"setSubAgentFilter('all')\">\n <i class=\"fa-solid fa-layer-group\"></i>\n All ({{ totalSubAgentCount }})\n </button>\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'child'\"\n (click)=\"setSubAgentFilter('child')\">\n <i class=\"fa-solid fa-link\"></i>\n Child ({{ childSubAgentCount }})\n </button>\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'related'\"\n (click)=\"setSubAgentFilter('related')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Related ({{ relatedSubAgentCount }})\n </button>\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button mjButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"createChildSubAgent()\"\n title=\"Create a new child sub-agent that shares this agent's payload\">\n <i class=\"fa-solid fa-link\"></i>\n Create Child\n </button>\n <button mjButton\n size=\"sm\"\n (click)=\"linkRelatedSubAgent()\"\n title=\"Link an existing agent as a related sub-agent with payload mapping\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Link Related\n </button>\n }\n </div>\n </div>\n <!-- Empty State -->\n @if (totalSubAgentCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-sitemap\"\n Title=\"No Sub-Agents\"\n Message=\"Sub-agents help build complex workflows through hierarchical orchestration.\"\n Size=\"compact\">\n <div class=\"empty-state-info\">\n <div class=\"info-card\">\n <i class=\"fa-solid fa-link\" style=\"color: var(--mj-status-info);\"></i>\n <strong>Child Sub-Agents</strong>\n <p>Share payload structure, dedicated to parent</p>\n </div>\n <div class=\"info-card\">\n <i class=\"fa-solid fa-share-nodes\" style=\"color: var(--mj-brand-primary);\"></i>\n <strong>Related Sub-Agents</strong>\n <p>Reusable agents with payload mapping</p>\n </div>\n </div>\n </mj-empty-state>\n } @else {\n <!-- Unified Sub-Agent List -->\n <div class=\"entity-list\">\n @for (item of filteredSubAgents; track item.agent.ID) {\n <div class=\"entity-item sub-agent-item\"\n [class.child-sub-agent]=\"item.type === 'child'\"\n [class.related-sub-agent]=\"item.type === 'related'\"\n (click)=\"navigateToEntity('MJ: AI Agents', item.agent.ID)\">\n <!-- Type Badge -->\n <div class=\"sub-agent-type-badge\"\n [style.background-color]=\"getSubAgentBadgeColor(item)\">\n <i [class]=\"getSubAgentBadgeIcon(item)\"></i>\n {{ getSubAgentBadgeText(item) }}\n </div>\n <!-- Agent Icon -->\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(item.agent)) {\n <img [src]=\"item.agent.LogoURL\"\n [alt]=\"item.agent.Name + ' logo'\"\n class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(item.agent)\"></i>\n }\n </div>\n <!-- Agent Content -->\n <div class=\"item-content\">\n <div class=\"item-title\">{{ item.agent.Name || 'Untitled Sub-Agent' }}</div>\n @if (item.agent.Description) {\n <div class=\"item-preview\">{{ item.agent.Description }}</div>\n }\n <div class=\"item-meta\">\n <!-- Payload Info -->\n <span class=\"meta-tag payload-info\">\n <i class=\"fa-solid fa-database\"></i>\n {{ getSubAgentPayloadInfo(item) }}\n </span>\n <!-- Status -->\n @if (item.agent.Status) {\n <span class=\"status-tag\"\n [style.background-color]=\"getStatusBadgeColor()\">\n {{ item.agent.Status }}\n </span>\n }\n <!-- Agent Type -->\n @if (item.agent.Type) {\n <span class=\"meta-tag\">{{ item.agent.Type }}</span>\n }\n </div>\n </div>\n <!-- Actions -->\n <div class=\"item-actions\">\n @if (EditMode) {\n <!-- Output Mapping Config (Related only) -->\n @if (item.type === 'related') {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"configureOutputMapping(item, $event)\"\n title=\"Configure output mapping\">\n <i class=\"fa-solid fa-exchange-alt\"></i>\n </button>\n }\n <!-- Advanced Settings (Child only) -->\n @if (item.type === 'child' && UserCanCreateSubAgents) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openSubAgentAdvancedSettings(item.agent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n <!-- Remove/Unlink -->\n @if (UserCanDeleteSubAgents) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"item.type === 'child' ? removeChildSubAgent(item, $event) : unlinkRelatedSubAgent(item, $event)\"\n [title]=\"item.type === 'child' ? 'Delete child sub-agent' : 'Unlink related sub-agent'\"\n class=\"error-action\">\n <i [class]=\"item.type === 'child' ? 'fa-solid fa-trash' : 'fa-solid fa-unlink'\"></i>\n </button>\n }\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <mj-accordion-panel id=\"prompts\"\n [Expanded]=\"GetSectionExpanded('prompts', false)\"\n [Disabled]=\"loadingStates.prompts\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts\n @if (loadingStates.prompts) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (promptCount > 0) {\n <span> ({{ promptCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [Data]=\"modelSelectionModes\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n @if (promptCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-comments\"\n Title=\"No Prompts Configured\"\n Message=\"Add prompts to define how this agent processes requests and generates responses.\"\n [ActionText]=\"(EditMode && UserCanCreateNewPrompts) ? 'Create First Prompt' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addPrompt()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\"\n class=\"error-action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <mj-accordion-panel id=\"learning\"\n [Expanded]=\"GetSectionExpanded('learning', false)\"\n [Disabled]=\"loadingStates.learningCycles\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles\n @if (loadingStates.learningCycles) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (learningCycleCount > 0) {\n <span> ({{ learningCycleCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n @if (learningCycleCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-brain\"\n Title=\"No Learning Cycles\"\n Message=\"Learning cycles will appear here as the agent processes requests and improves over time.\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('MJ: AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <mj-accordion-panel id=\"notes\"\n [Expanded]=\"GetSectionExpanded('notes', false)\"\n [Disabled]=\"loadingStates.notes\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes\n @if (loadingStates.notes) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (noteCount > 0) {\n <span> ({{ noteCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n @if (noteCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-sticky-note\"\n Title=\"No Notes\"\n Message=\"Add notes to document important information, observations, or instructions for this agent.\"\n [ActionText]=\"(EditMode && UserCanCreateNotes) ? 'Create First Note' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addNote()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('MJ: AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Search -->\n @if (record.ID) {\n <mj-accordion-panel id=\"search\"\n [Expanded]=\"GetSectionExpanded('search', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-magnifying-glass\"></i> Search\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Control this agent's access to <strong>Scoped Search</strong> and assign the scopes it can use for pre-execution RAG or agent-invoked search.\n </div>\n </div>\n\n <!-- Scope Access mode -->\n <div class=\"agent-search-access\">\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'All'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"All\" [checked]=\"record.SearchScopeAccess === 'All'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'All'\">\n <i class=\"fa-solid fa-globe\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">All</div>\n <div class=\"agent-search-access-desc\">Can use any scope including Global. No scope restriction.</div>\n </div>\n </label>\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'Assigned'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"Assigned\" [checked]=\"record.SearchScopeAccess === 'Assigned'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'Assigned'\">\n <i class=\"fa-solid fa-user-check\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">Assigned</div>\n <div class=\"agent-search-access-desc\">Can use ONLY scopes listed below, for users with a Search grant on the scope (directly or through a role). Other scopes are rejected with ACCESS_DENIED.</div>\n </div>\n </label>\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'None'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"None\" [checked]=\"record.SearchScopeAccess === 'None'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'None'\">\n <i class=\"fa-solid fa-ban\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">None</div>\n <div class=\"agent-search-access-desc\">No search capability. The Scoped Search action and pre-execution retrieval are disabled for this agent.</div>\n </div>\n </label>\n </div>\n\n <!-- Assigned scopes grid -->\n @if (record.SearchScopeAccess !== 'None') {\n <div class=\"agent-search-grid-header\">\n <h4>Assigned Scopes</h4>\n <p class=\"section-description\">\n <strong>Pre-Execution</strong> scopes are searched before the first LLM call, for users who may search them.\n <strong>Agent-Invoked</strong> scopes are callable via the Scoped Search tool during execution.\n <strong>Both</strong> covers both paths.\n </p>\n </div>\n <mj-search-scope-child-grid\n [ParentID]=\"record.ID\"\n ChildEntityName=\"MJ: AI Agent Search Scopes\"\n ParentFieldName=\"AgentID\"\n [Columns]=\"AgentSearchScopeColumns\"\n [Disabled]=\"!EditMode\"\n AddButtonLabel=\"+ Assign another scope\"\n EmptyMessage=\"No scopes assigned yet. Assign at least one if this agent will use Scoped Search.\"\n (RowsChanged)=\"LoadPermissionSummary()\">\n </mj-search-scope-child-grid>\n\n <!-- Phase 2A: read-only audit summary of who has\n permission on each of this agent's assigned scopes.\n Editing happens in the Knowledge Hub Config dashboard\n (see \"Permissions\" subtab under Search Scopes). -->\n <div class=\"agent-search-section\" style=\"margin-top: 16px;\">\n <h4 style=\"margin: 0 0 8px 0;\">\n <i class=\"fa-solid fa-shield-halved\"></i> Effective scope permissions\n </h4>\n <p class=\"section-description\" style=\"margin-bottom: 8px;\">\n Per-user / per-role grants on the scopes assigned above. Edit grants in\n <strong>Knowledge Hub Config → Search Scopes → Permissions</strong>.\n </p>\n @if (IsLoadingPermissions) {\n <div style=\"color: var(--mj-text-muted);\">Loading permissions…</div>\n } @else if (PermissionSummary.length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">\n No scopes assigned yet \u2014 permissions will appear here once you add scopes above.\n </div>\n } @else {\n @for (s of PermissionSummary; track s.ScopeID) {\n <div style=\"margin-bottom: 12px; padding: 8px 12px; background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-subtle); border-radius: 4px;\">\n <div style=\"font-weight: 600; margin-bottom: 4px;\">{{ s.ScopeName }}</div>\n @if (s.Permissions.length === 0) {\n <div style=\"color: var(--mj-text-muted); font-size: 0.9em;\">\n No explicit permissions. Users need a Search grant (directly or through a role) unless this agent's access is <code>All</code>.\n </div>\n } @else {\n <ul style=\"margin: 4px 0 0 16px; padding: 0;\">\n @for (p of s.Permissions; track p.Principal + p.Level) {\n <li style=\"font-size: 0.9em; padding: 2px 0;\">\n <i class=\"fa-solid\" [class.fa-user]=\"p.PrincipalType === 'User'\" [class.fa-users]=\"p.PrincipalType === 'Role'\"></i>\n <strong>{{ p.Principal }}</strong>\n <span style=\"color: var(--mj-text-muted);\">({{ p.PrincipalType }})</span>\n — <span [style.color]=\"p.Level === 'None' ? 'var(--mj-status-error-text)' : 'var(--mj-text-primary)'\">{{ p.Level }}</span>\n </li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Payload -->\n <mj-accordion-panel id=\"payload\"\n [Expanded]=\"GetSectionExpanded('payload', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-exchange-alt\"></i> Payload Management\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads, path routing, and validation between parent and child agents.\n </div>\n </div>\n <!-- Payload Scope Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-target\"></i>\n Payload Scope\n </h3>\n <div class=\"payload-field-container\">\n <div class=\"payload-field-info\">\n <label class=\"payload-field-label\">Payload Scope Path</label>\n <p class=\"payload-field-description\">\n Specify a path within the parent payload that this sub-agent should operate on.\n Leave empty to receive the entire payload.\n </p>\n </div>\n <div class=\"payload-field-input\">\n <mj-form-field\n FieldName=\"PayloadScope\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n <div class=\"payload-field-example\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Example: <code>/customer/profile</code> or <code>/analysis/results</code></span>\n </div>\n </div>\n </div>\n </div>\n <!-- Path Configuration Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-route\"></i>\n Path Configuration\n </h3>\n <div class=\"payload-paths-grid\">\n <!-- Downstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon downstream\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Downstream Paths</h4>\n <p>JSON array of paths to pass to sub-agents</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadDownstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to pass entire payload or specify paths like <code>[\"user.id\", \"order.*\"]</code>\n </div>\n </div>\n </div>\n <!-- Upstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon upstream\">\n <i class=\"fa-solid fa-arrow-up\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Upstream Paths</h4>\n <p>JSON array of paths sub-agents can write back</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadUpstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to allow all writes or limit to specific paths\n </div>\n </div>\n </div>\n <!-- Self Read Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-read\">\n <i class=\"fa-solid fa-eye\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Read Paths</h4>\n <p>JSON array of paths this agent can read</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can read from the payload\n </div>\n </div>\n </div>\n <!-- Self Write Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-write\">\n <i class=\"fa-solid fa-pen\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Write Paths</h4>\n <p>JSON array of paths this agent can write to</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can write back to the payload\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Validation Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Final Payload Validation\n </h3>\n <div class=\"payload-validation-container\">\n <div class=\"payload-validation-settings\">\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Validation Mode</label>\n <p class=\"validation-field-description\">How to handle validation failures</p>\n <mj-form-field\n FieldName=\"FinalPayloadValidationMode\"\n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Max Retries</label>\n <p class=\"validation-field-description\">Maximum validation retry attempts</p>\n <mj-form-field\n FieldName=\"FinalPayloadValidationMaxRetries\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"payload-validation-schema\">\n <label class=\"validation-schema-label\">\n <i class=\"fa-solid fa-code\"></i>\n Validation Schema\n </label>\n <p class=\"validation-schema-description\">\n JSON schema or validation rules for the final payload structure\n </p>\n <div class=\"validation-schema-editor\">\n <mj-code-editor\n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Execution Guardrails (New Separate Panel) -->\n <mj-accordion-panel id=\"guardrails\"\n [Expanded]=\"GetSectionExpanded('guardrails', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n <div class=\"form-fields-grid\">\n <mj-form-field\n FieldName=\"MaxCostPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxTokensPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxIterationsPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxTimePerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Configuration (Settings Panel) -->\n <mj-accordion-panel id=\"config\"\n [Expanded]=\"GetSectionExpanded('config', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-cogs\"></i> Configuration\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure agent behavior, execution settings, and advanced features.\n </div>\n </div>\n <!-- Identity & Behavior Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-id-card\"></i>\n Identity & Behavior\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Status</h4>\n <p>Current availability and operational status</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n name=\"agentStatus\"\n class=\"config-field-input\">\n </mj-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Status || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Type</h4>\n <p>Category and system-level behavior</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.TypeID\"\n [Data]=\"agentTypes\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n name=\"agentTypeID\"\n class=\"config-field-input\">\n </mj-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Type || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Category</h4>\n <p>Organizational category for this agent</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"Select a category...\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"OnCategoryChange($event)\">\n </mj-tree-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Category || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Expose as Action</h4>\n <p>Make available as an action for other agents</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExposeAsAction\"\n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-align-left\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Description</h4>\n <p>Detailed agent description and purpose</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"Description\"\n Type=\"textarea\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n <!-- Execution Settings Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Settings\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Mode</h4>\n <p>How sub-agents are executed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExecutionMode\"\n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sort-numeric-down\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Order</h4>\n <p>Order when run with siblings</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExecutionOrder\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Default Effort Level</h4>\n <p>Default effort level for all prompts (1-100)</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"DefaultPromptEffortLevel\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Higher values request more thorough reasoning (1=minimal, 100=maximum)\n </div>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-code\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Driver Class</h4>\n <p>Custom implementation class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"DriverClass\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n <!-- Visual Identity Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-palette\"></i>\n Visual Identity\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-icons\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Icon Class</h4>\n <p>Font Awesome icon class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"IconClass\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Example: <code>fa-solid fa-robot</code>\n </div>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-image\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Logo URL</h4>\n <p>URL for agent logo image</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"LogoURL\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Takes precedence over Icon Class\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Context Compression Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-compress\"></i>\n Context Compression\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Enable Context Compression</h4>\n <p>Automatically compress conversation context when message threshold is reached</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"EnableContextCompression\"\n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n </div>\n </div>\n @if (record.EnableContextCompression) {\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-hashtag\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Message Threshold</h4>\n <p>Messages before compression triggers</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ContextCompressionMessageThreshold\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-save\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Messages to Keep</h4>\n <p>Recent messages to retain uncompressed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ContextCompressionMessageRetentionCount\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Compression Prompt</h4>\n <p>Prompt used for summarization</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <div class=\"prompt-selector-container\">\n <div class=\"prompt-display\">\n @if (selectedContextCompressionPrompt) {\n <span class=\"prompt-name\">{{ selectedContextCompressionPrompt.Name }}</span>\n } @else {\n <span class=\"no-prompt\">No prompt selected</span>\n }\n </div>\n <div class=\"prompt-actions\">\n <button type=\"button\"\n mjButton\n variant=\"outline\"\n size=\"sm\"\n (click)=\"openContextCompressionPromptSelector()\"\n class=\"prompt-select-btn\">\n <i class=\"fa-solid fa-search\"></i>\n {{ selectedContextCompressionPrompt ? 'Change' : 'Select' }} Prompt\n </button>\n @if (selectedContextCompressionPrompt) {\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"clearContextCompressionPrompt()\"\n class=\"prompt-clear-btn\"\n title=\"Clear selection\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n } @else {\n <span class=\"config-field-display\">{{ selectedContextCompressionPrompt?.Name || record.ContextCompressionPrompt || 'Not Set' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n </div>\n }\n </form>\n</mj-record-form-container>\n}\n\n<!-- Permissions Dialog (from @memberjunction/ng-agents) -->\n@if (ShowPermissionsDialog) {\n <mj-agent-permissions-dialog\n [Agent]=\"record\"\n (Closed)=\"onPermissionsDialogClosed()\"\n (PermissionsChanged)=\"refreshRelatedData()\">\n </mj-agent-permissions-dialog>\n}", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n transition: padding 0.2s ease;\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n/* Header collapse toggle button */\n.agent-header-toggle {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n padding: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-toggle i {\n font-size: 10px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 36px;\n height: 36px;\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n flex-shrink: 0;\n transition: all 0.2s ease;\n}\n\n.agent-icon-wrapper i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n/* \u2500\u2500 Minimized Floating Header Bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.agent-header-mini {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 12px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n height: 32px;\n}\n\n.agent-header-mini-expand {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-expand:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-expand i {\n font-size: 9px;\n}\n\n.agent-header-mini-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n\n.agent-header-mini-status {\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.agent-header-mini-spacer {\n flex: 1;\n}\n\n.agent-header-mini-btn {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-btn:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.agent-header-mini-btn--primary {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-header-mini-btn--primary:hover:not(:disabled) {\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) 50%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.agent-header-mini-btn i {\n font-size: 11px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 16px !important;\n font-weight: 500 !important;\n height: 30px !important;\n width: 100% !important;\n max-width: 350px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-badge.active {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge.pending {\n background: var(--mj-status-warning);\n color: var(--mj-text-primary);\n}\n\n.status-badge.disabled {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.parent-agent.clickable:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: row;\n gap: 8px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);\n}\n\n.action-button.primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-button.primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.action-button.secondary {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.action-button.secondary:hover {\n background: var(--mj-text-secondary);\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: var(--mj-status-error);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n padding: 8px 12px;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: var(--mj-bg-surface);\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n border: 1px solid var(--mj-border-default);\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-bg-surface-sunken);\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: var(--mj-text-primary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.section-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 90%, transparent);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid var(--mj-bg-surface-sunken);\n border-top: 4px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: var(--mj-bg-surface);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: var(--mj-brand-primary);\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: var(--mj-status-success);\n}\n\n.action-item .item-icon {\n background: var(--mj-status-warning);\n}\n\n.sub-agent-item .item-icon {\n background: var(--mj-brand-primary);\n}\n\n.model-item .item-icon {\n background: var(--mj-brand-primary);\n}\n\n.learning-item .item-icon {\n background: var(--mj-status-error);\n}\n\n.note-item .item-icon {\n background: var(--mj-status-warning);\n}\n\n.item-icon i {\n color: var(--mj-text-muted);\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: var(--mj-text-inverse);\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.priority-tag {\n color: var(--mj-text-inverse);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-tag.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-tag.inactive {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: var(--mj-brand-primary);\n}\n\n.view-more-item {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n/* Pagination Controls */\n.pagination-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n margin-top: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.page-nav-btn {\n min-width: 120px;\n font-weight: 500;\n}\n\n.page-nav-btn i {\n font-size: 12px;\n}\n\n.page-nav-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-info {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 0 16px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n min-width: 200px;\n text-align: center;\n}\n\n.page-info .record-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: normal;\n}\n\n.page-info .fa-spinner {\n margin-right: 8px;\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn {\n color: var(--mj-text-muted);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.view-all-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn i {\n margin-right: 4px;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: var(--mj-brand-primary);\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: var(--mj-text-muted);\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: var(--mj-text-muted);\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: var(--mj-brand-primary);\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker i {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n border-color: var(--mj-brand-primary);\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: var(--mj-brand-primary);\n}\n\n.prompt-card .card-icon {\n background: var(--mj-status-success);\n}\n\n.action-card .card-icon {\n background: var(--mj-status-warning);\n}\n\n.card-icon i {\n font-size: 18px;\n color: var(--mj-text-muted);\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: var(--mj-text-inverse);\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 4px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.inactive {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: var(--mj-text-muted);\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.timeline-item.expanded {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n}\n\n.timeline-item.view-all:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: var(--mj-text-muted);\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: var(--mj-text-muted);\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: var(--mj-status-error);\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: var(--mj-status-error);\n}\n\n.result-content,\n.error-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n\n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n\n .action-button {\n flex: 1;\n justify-content: center;\n }\n\n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n\n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n\n .panel-content {\n padding: 20px 16px;\n }\n\n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n\n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n }\n\n .item-icon i {\n font-size: 16px;\n }\n\n .item-title {\n font-size: 15px;\n }\n\n .item-preview {\n font-size: 13px;\n }\n\n .item-meta {\n gap: 8px;\n }\n\n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n\n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n\n .timeline-marker i {\n font-size: 12px;\n }\n\n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .timeline-date {\n align-self: flex-start;\n }\n\n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n/* Execution History Search Bar */\n.execution-search-bar {\n margin-bottom: 16px;\n padding: 0 4px;\n}\n\n.execution-search-bar .fa-search {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n font-size: 14px;\n}\n\n/* New Execution History Card Design */\n.execution-history-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 8px;\n}\n\n.execution-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.execution-header {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.status-indicator i {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.execution-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.execution-metrics {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; /* Align with execution title text, accounting for status indicator + gap */\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 6px 10px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.metric-item i {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.metric-label {\n font-weight: 500;\n}\n\n.metric-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.execution-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\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.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.expand-icon {\n transition: transform 0.2s ease;\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n/* Execution Expanded Content */\n.execution-expanded-content {\n padding: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n background: var(--mj-bg-surface-card);\n animation: slideDown 0.2s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics {\n margin-bottom: 20px;\n}\n\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.metric-detail i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-section {\n margin-top: 16px;\n}\n\n.result-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: var(--mj-status-error);\n}\n\n.error-content {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n/* Responsive adjustments for execution history */\n@media (max-width: 768px) {\n .execution-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .execution-left-section {\n width: 100%;\n }\n\n .execution-metrics {\n margin-left: 0; /* Remove left margin on mobile */\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n\n .metric-item {\n font-size: 11px;\n padding: 4px 8px;\n }\n\n .metrics-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* === PAYLOAD MANAGEMENT SECTION === */\n.payload-section {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.payload-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title i {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n/* Payload Scope Styling */\n.payload-field-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.payload-field-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.payload-field-example i {\n color: var(--mj-status-warning);\n font-size: 0.9rem;\n}\n\n.payload-field-example code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n/* Path Configuration Grid */\n.payload-paths-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.payload-path-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.payload-path-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream {\n background: var(--mj-status-success);\n}\n\n.payload-path-icon.upstream {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-read {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-write {\n background: var(--mj-status-warning);\n}\n\n.payload-path-icon i {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.payload-path-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.payload-path-info p {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-content {\n padding: 1rem;\n}\n\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container:hover {\n border-color: var(--mj-brand-primary);\n}\n\n.payload-path-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-hint i {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n/* Payload Validation Container */\n.payload-validation-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.validation-field-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label i {\n color: var(--mj-brand-primary);\n}\n\n.validation-schema-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor:hover {\n border-color: var(--mj-brand-primary);\n}\n\n/* === CONFIGURATION SECTION === */\n.config-section {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.config-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title i {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.full-width {\n grid-column: 1 / -1;\n}\n\n.config-card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon i {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.config-card-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.config-card-info p {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.config-card-content {\n padding: 1rem;\n}\n\n/* Custom field styling for config cards */\n.config-field-input {\n width: 100%;\n min-width: 250px;\n}\n\n.config-card-content ::ng-deep mj-form-field {\n width: 100% !important;\n}\n\n.config-field-display {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n/* Prompt selector styling */\n.prompt-selector-container {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.prompt-name {\n color: var(--mj-text-secondary);\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt {\n color: var(--mj-text-muted);\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn {\n white-space: nowrap;\n}\n\n.prompt-clear-btn {\n min-width: 32px;\n}\n\n.config-card-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint i {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n/* === RESPONSIVE DESIGN === */\n@media (max-width: 768px) {\n .payload-field-container,\n .payload-validation-container {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .payload-paths-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .config-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .payload-section-title,\n .config-section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .payload-path-header,\n .config-card-header {\n padding: 0.75rem;\n }\n\n .payload-path-content,\n .config-card-content {\n padding: 0.75rem;\n }\n\n .payload-field-container,\n .payload-validation-container {\n padding: 1rem;\n }\n}\n\n/* ===================================\n Unified Sub-Agents with Filtering\n =================================== */\n\n/* Filter Controls */\n.sub-agent-filter-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* Sub-Agent Type Badge */\n.sub-agent-type-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n/* Sub-Agent Item Styling */\n.sub-agent-item {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item.related-sub-agent {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item:hover {\n transform: translateX(4px);\n}\n\n/* Payload Info Tag */\n.payload-info {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n/* Empty State Info Cards */\n.empty-state-info {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card strong {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card p {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n/* Responsive adjustments for sub-agent filters */\n@media (max-width: 768px) {\n .sub-agent-filter-header {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-controls,\n .header-actions {\n width: 100%;\n justify-content: center;\n }\n\n .empty-state-info {\n grid-template-columns: 1fr;\n }\n}\n\n/* ===== Search Scope Access (mockup #5) ===== */\n.agent-search-access {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n margin: 8px 0 20px;\n}\n\n.agent-search-access-option {\n display: grid;\n grid-template-columns: 24px 28px 1fr;\n align-items: start;\n gap: 10px;\n padding: 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n\n.agent-search-access-option:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.agent-search-access-option.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-search-access-option input[type=\"radio\"] {\n accent-color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.agent-search-access-option > i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n text-align: center;\n margin-top: 2px;\n}\n\n.agent-search-access-text {\n min-width: 0;\n}\n\n.agent-search-access-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.agent-search-access-desc {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.agent-search-grid-header {\n margin: 8px 0 12px;\n}\n\n.agent-search-grid-header h4 {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n@media (max-width: 768px) {\n .agent-search-access {\n grid-template-columns: 1fr;\n }\n}\n\n/* \u2500\u2500 Execution History: Runs | Sessions segmented toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.history-view-toggle {\n display: inline-flex;\n gap: 2px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 3px;\n margin-bottom: 14px;\n}\n\n.history-toggle-option {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 6px 16px;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.history-toggle-option:hover {\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.history-toggle-count {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active .history-toggle-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 Voice session rows in Execution History \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.session-card {\n cursor: pointer;\n}\n\n.session-role-chip {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n padding: 1px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.session-role-chip--target {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n color: var(--mj-status-info);\n}\n\n.session-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.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n/* \u2500\u2500 Form 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\n Panes are hidden with `display: none`, never removed from the DOM. The\n designer pane holds UNSAVED canvas edits; @if-ing it away on a tab switch\n would discard them silently, and would also throw away the canvas's zoom and\n node positions on every trip to Details. */\n\n.agent-tabbar {\n flex: 0 0 auto;\n padding: 8px 12px 0;\n background: var(--mj-bg-page);\n}\n\n.agent-pane {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.agent-pane--hidden {\n display: none;\n}\n\n.agent-pane--designer {\n overflow: hidden;\n padding: 8px 12px 12px;\n background: var(--mj-bg-page);\n}\n\n/* The designer's dynamically-created section has no height of its own, so without\n this the flow canvas collapses to zero and renders as an empty strip. */\n.agent-pane--designer > ng-component,\n.agent-pane--designer > * {\n flex: 1;\n min-height: 0;\n}\n\n.agent-pane--invocations {\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n}\n\n/* Initial load: the form's header renders as soon as the record arrives, but the tab strip and\n every pane wait on the agent TYPE. This fills that window so the page reads as loading rather\n than as broken. */\n.agent-form-loading {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 240px;\n padding: 32px;\n background: var(--mj-bg-page);\n}\n"] }]
|
|
5859
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-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 <form class=\"record-form\" #form=\"ngForm\">\n <!-- Agent Header \u2014 expanded view -->\n @if (!HeaderCollapsed) {\n <div class=\"agent-header phone-hero\" [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\">\n <div class=\"agent-header-content\">\n <button class=\"agent-header-toggle phone-hero-hide\" (click)=\"ToggleHeaderCollapsed()\"\n title=\"Minimize header\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input agent-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"agentName\"\n placeholder=\"Enter agent name...\">\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.Type) {\n <span class=\"execution-mode phone-hero-detail\">\n Agent Type: {{ record.Type }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent clickable phone-hero-detail\"\n (click)=\"navigateToParentAgent()\"\n title=\"Open parent agent: {{ record.Parent }}\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n <i class=\"fa-solid fa-external-link\" style=\"margin-left: 4px; font-size: 10px;\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button mjButton variant=\"primary\" size=\"lg\" class=\"phone-hero-run\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n <button mjButton size=\"lg\" class=\"phone-hero-detail\"\n (click)=\"openPermissionsDialog()\"\n [title]=\"IsOpenToEveryone ? 'Open to everyone \u2014 click to manage permissions' : 'Restricted \u2014 click to manage permissions'\">\n <i class=\"fa-solid\" [class.fa-lock-open]=\"IsOpenToEveryone\" [class.fa-lock]=\"!IsOpenToEveryone\"\n [style.color]=\"IsOpenToEveryone ? 'var(--mj-status-success)' : null\"></i>\n {{ IsOpenToEveryone ? 'Open' : 'Restricted' }}\n </button>\n }\n <button mjButton variant=\"outline\" size=\"sm\" class=\"phone-hero-detail\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n @if (!EditMode && HeroSummary) {\n <button type=\"button\" class=\"phone-hero-summary\" [attr.aria-expanded]=\"HeroDetailsOpen\" (click)=\"ToggleHeroDetails()\">\n <span class=\"phone-hero-summary-text\">{{ HeroSummary }}</span>\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n <!-- Agent Header \u2014 minimized floating bar -->\n @if (HeaderCollapsed) {\n <div class=\"agent-header-mini\">\n <button class=\"agent-header-mini-expand\" (click)=\"ToggleHeaderCollapsed()\"\n title=\"Expand header\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n <span class=\"agent-header-mini-name\">{{ record.Name || 'Untitled AI Agent' }}</span>\n @if (record.Status) {\n <span class=\"agent-header-mini-status\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ record.Status }}\n </span>\n }\n <div class=\"agent-header-mini-spacer\"></div>\n @if (record.ID) {\n <button class=\"agent-header-mini-btn agent-header-mini-btn--primary\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n <button class=\"agent-header-mini-btn\"\n (click)=\"openPermissionsDialog()\"\n [title]=\"IsOpenToEveryone ? 'Open to everyone' : 'Restricted'\">\n <i class=\"fa-solid\" [class.fa-lock-open]=\"IsOpenToEveryone\" [class.fa-lock]=\"!IsOpenToEveryone\"\n [style.color]=\"IsOpenToEveryone ? 'var(--mj-status-success)' : null\"></i>\n </button>\n }\n <button class=\"agent-header-mini-btn\"\n (click)=\"refreshRelatedData()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n }\n <!-- The tab strip and every pane depend on the agent's TYPE, which loads asynchronously.\n Without this the form rendered its header over an empty area for the whole load \u2014\n no tabs, no designer, and the details pane hidden because no tab was active yet. -->\n @if (IsFormInitializing) {\n <div class=\"agent-form-loading\">\n <mj-loading text=\"Loading agent...\" size=\"medium\"></mj-loading>\n </div>\n } @else {\n <!-- Tabs, not accordions. For an agent type that ships a designer, the diagram IS the agent;\n leaving it as one collapsed panel among eleven made the record's most important view its\n least reachable one. Invocations is offered for every agent, because \"what runs this when\n I'm not looking?\" is a question you can ask of any of them. -->\n @if (FormTabs.length > 1) {\n <div class=\"agent-tabbar\">\n <!-- Phone: the tabs become one button that opens the Sections sheet -->\n <mj-section-picker class=\"phone-section-picker\"\n [Items]=\"SectionPickerItems\"\n [ActiveKey]=\"ActiveFormTab || ''\"\n (ActiveKeyChange)=\"OnSectionPicked($event)\"></mj-section-picker>\n <mj-tab-nav [Tabs]=\"FormTabs\" [ActiveKey]=\"ActiveFormTab || ''\" (TabChange)=\"OnFormTabChange($event)\"></mj-tab-nav>\n </div>\n }\n\n @if (HasDesignerTab) {\n <!-- Hidden with CSS rather than removed with @if: the designer holds UNSAVED edits, and\n destroying it on a tab switch would discard them without a word. Keeping it mounted also\n means the canvas keeps its zoom and node positions across trips to Details. -->\n <div class=\"agent-pane agent-pane--designer\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'designer'\">\n @if (loadingStates.customSection) {\n <mj-loading text=\"Loading {{ agentType?.Name }} configuration...\" size=\"medium\"></mj-loading>\n }\n <ng-container #customSectionContainer></ng-container>\n </div>\n }\n\n @if (record.ID) {\n <div class=\"agent-pane agent-pane--invocations\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'invocations'\">\n <mj-agent-invocations\n [Provider]=\"Provider\"\n [AgentID]=\"record.ID\"\n [Active]=\"ActiveFormTab === 'invocations'\"\n [ExposeAsAction]=\"record.ExposeAsAction\"\n [ParentAgentName]=\"record.Parent\"\n [ParentAgentID]=\"record.ParentID\"\n (RecordOpenRequested)=\"OnInvocationOpenRequested($event)\">\n </mj-agent-invocations>\n </div>\n <div class=\"agent-pane agent-pane--rubrics\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'rubrics'\">\n <mj-agent-rubrics\n [Provider]=\"Provider\"\n [AgentID]=\"record.ID\"\n [Active]=\"ActiveFormTab === 'rubrics'\">\n </mj-agent-rubrics>\n </div>\n }\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content agent-pane\" [class.agent-pane--hidden]=\"ActiveFormTab !== 'details'\">\n <!-- Requests & History -->\n @if (record.ID) {\n <mj-accordion-panel id=\"history\"\n [Expanded]=\"GetSectionExpanded('history', false)\"\n [Disabled]=\"loadingStates.executionHistory\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History\n @if (loadingStates.executionHistory) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (executionHistoryCount > 0) {\n <span> ({{ executionHistoryCount }}@if (executionHistoryCount < totalExecutionHistoryCount) { of {{ totalExecutionHistoryCount }}})</span>\n }\n </ng-template>\n <div class=\"panel-content execution-history-panel\">\n <!-- Segmented toggle: agent runs vs. realtime voice sessions -->\n @if (UserCanViewSessions) {\n <div class=\"history-view-toggle\" role=\"tablist\">\n <button type=\"button\" class=\"history-toggle-option\"\n [class.active]=\"executionHistoryView === 'runs'\"\n (click)=\"setExecutionHistoryView('runs')\">\n <i class=\"fa-solid fa-person-running\"></i> Runs\n @if (totalExecutionHistoryCount > 0) {\n <span class=\"history-toggle-count\">{{ totalExecutionHistoryCount }}</span>\n }\n </button>\n <button type=\"button\" class=\"history-toggle-option\"\n [class.active]=\"executionHistoryView === 'sessions'\"\n (click)=\"setExecutionHistoryView('sessions')\">\n <i class=\"fa-solid fa-tower-broadcast\"></i> Sessions\n @if (totalSessionCount > 0) {\n <span class=\"history-toggle-count\">{{ totalSessionCount }}</span>\n }\n </button>\n </div>\n }\n @if (executionHistoryView === 'sessions') {\n <!-- Voice/realtime sessions list -->\n @if (loadingSessions) {\n <mj-loading text=\"Loading sessions...\" size=\"medium\"></mj-loading>\n } @else if (agentSessions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-tower-broadcast\"\n Title=\"No Voice Sessions\"\n Message=\"This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.\"\n Size=\"compact\" />\n } @else {\n <div class=\"execution-history-list\">\n @for (item of agentSessions; track item.row.ID) {\n <div class=\"execution-card session-card\" (click)=\"openSessionRecord(item.row.ID)\" title=\"Open session\">\n <div class=\"execution-header\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getSessionStatusColor(item.row.Status)\">\n <i [class]=\"getSessionStatusIcon(item.row.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n Session #{{ item.row.ID.substring(0, 8) }}\n @if (item.isCoAgent) {\n <span class=\"session-role-chip\">as co-agent</span>\n }\n @if (item.isTarget) {\n <span class=\"session-role-chip session-role-chip--target\">as target</span>\n }\n </div>\n <div class=\"execution-date\">{{ item.row.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n <div class=\"execution-metrics\">\n <div class=\"metric-item\">\n <span class=\"session-status-pill\" [attr.data-status]=\"item.row.Status\">{{ item.row.Status }}</span>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatSessionDuration(item) }}</span>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-plug\"></i>\n <span class=\"metric-label\">Channels:</span>\n <span class=\"metric-value\">{{ item.channelCount }}</span>\n </div>\n @if (item.isCoAgent && item.targetAgentName) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bullseye\"></i>\n <span class=\"metric-label\">Target:</span>\n <span class=\"metric-value\">{{ item.targetAgentName }}</span>\n </div>\n }\n @if (item.isTarget && !item.isCoAgent && item.row.Agent) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tower-broadcast\"></i>\n <span class=\"metric-label\">Co-agent:</span>\n <span class=\"metric-value\">{{ item.row.Agent }}</span>\n </div>\n }\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-user\"></i>\n <span class=\"metric-label\">User:</span>\n <span class=\"metric-value\">{{ item.row.User }}</span>\n </div>\n </div>\n </div>\n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openSessionRecord(item.row.ID); $event.stopPropagation()\" title=\"View session details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n @if (loadingStates.executionHistory) {\n <mj-loading text=\"Loading execution history...\" size=\"medium\"></mj-loading>\n } @else if (executionHistoryCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-clock-rotate-left\"\n Title=\"No Execution History\"\n Message=\"This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.\"\n Size=\"compact\" />\n } @else {\n <!-- Search Bar -->\n <div class=\"execution-search-bar\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"executionSearchText\"\n (ngModelChange)=\"onExecutionSearchChange()\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"Search by Run ID...\">\n </div>\n </div>\n <div class=\"execution-history-list\">\n @if (filteredExecutions.length === 0) {\n <mj-empty-state\n Variant=\"no-results\"\n Title=\"No Matching Results\"\n [Message]=\"ExecutionSearchEmptyMessage\"\n Size=\"compact\" />\n }\n @for (execution of filteredExecutions; track execution.ID) {\n <div class=\"execution-card\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n </div>\n <div class=\"execution-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n <div class=\"execution-metrics\">\n @if (execution.Configuration) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <span class=\"metric-label\">Config:</span>\n <span class=\"metric-value\">{{ execution.Configuration }}</span>\n </div>\n }\n @if (execution.CompletedAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}</span>\n </div>\n } @else if (execution.Status === 'Running') {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span class=\"metric-label\">Running:</span>\n <!-- <span class=\"metric-value\">{{ execution.StartedAt | runningTime }}</span> -->\n </div>\n }\n @if (execution.TotalTokensUsedRollup || execution.TotalTokensUsed) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"metric-label\">Tokens:</span>\n <span class=\"metric-value\">{{ formatTokenCount(execution.TotalTokensUsedRollup || execution.TotalTokensUsed) }}</span>\n </div>\n }\n @if (execution.TotalCostRollup || execution.TotalCost) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <span class=\"metric-label\">Cost:</span>\n <span class=\"metric-value\">${{ formatCost(execution.TotalCostRollup || execution.TotalCost) }}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\" title=\"View details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"execution-expanded-content\">\n <!-- Detailed Metrics -->\n <div class=\"detailed-metrics\">\n <div class=\"metrics-grid\">\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Started</span>\n <span class=\"metric-data\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Completed</span>\n <span class=\"metric-data\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n </div>\n }\n @if (execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-microchip\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Tokens</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsed) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalTokensUsedRollup && execution.TotalTokensUsedRollup !== execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsedRollup) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Cost</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCost) }}</span>\n </div>\n </div>\n }\n @if (execution.TotalCostRollup && execution.TotalCostRollup !== execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-calculator\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCostRollup) }}</span>\n </div>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-comments\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Conversation</span>\n <span class=\"metric-data\">{{ execution.ConversationID.substring(0, 8) }}...</span>\n </div>\n </div>\n }\n </div>\n </div>\n @if (HasExecutionResult(execution)) {\n <div class=\"result-section\">\n <h5><i class=\"fa-solid fa-file-text\"></i> Result</h5>\n <mj-code-editor\n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Pagination Controls -->\n @if (totalPages > 1) {\n <div class=\"pagination-controls\">\n <button mjButton\n variant=\"outline\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"!hasPreviousPage || isLoadingPage\"\n class=\"page-nav-btn\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n Previous\n </button>\n <div class=\"page-info\">\n @if (isLoadingPage) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading...\n } @else {\n Page {{ executionHistoryCurrentPage }} of {{ totalPages }}\n <span class=\"record-count\">({{ totalExecutionHistoryCount }} total)</span>\n }\n </div>\n <button mjButton\n variant=\"outline\"\n (click)=\"goToNextPage()\"\n [disabled]=\"!hasNextPage || isLoadingPage\"\n class=\"page-nav-btn\">\n Next\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\"\n class=\"view-all-btn\">\n <i class=\"fa-solid fa-external-link\"></i>\n View All in Grid\n </button>\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Actions -->\n @if (record.ID) {\n <mj-accordion-panel id=\"actions\"\n [Expanded]=\"GetSectionExpanded('actions', false)\"\n [Disabled]=\"loadingStates.actions\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions\n @if (loadingStates.actions) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (actionCount > 0) {\n <span> ({{ actionCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n @if (loadingStates.actions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading actions...</p>\n </div>\n } @else {\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n @if (actionCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-bolt\"\n Title=\"No Actions Configured\"\n Message=\"Add actions to enable this agent to perform specific tasks and operations.\"\n [ActionText]=\"(EditMode && UserCanCreateActions) ? 'Configure First Action' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"configureActions()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('MJ: Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\"\n class=\"error-action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Sub-Agents (Unified View with Filter) -->\n @if (record.ID) {\n <mj-accordion-panel id=\"subagents\"\n [Expanded]=\"GetSectionExpanded('subagents', false)\"\n [Disabled]=\"loadingStates.subAgents\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents\n @if (loadingStates.subAgents) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (totalSubAgentCount > 0) {\n <span> ({{ totalSubAgentCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <!-- Filter Controls -->\n <div class=\"section-header sub-agent-filter-header\">\n <div class=\"filter-controls\">\n <div class=\"mj-button-group\">\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'all'\"\n (click)=\"setSubAgentFilter('all')\">\n <i class=\"fa-solid fa-layer-group\"></i>\n All ({{ totalSubAgentCount }})\n </button>\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'child'\"\n (click)=\"setSubAgentFilter('child')\">\n <i class=\"fa-solid fa-link\"></i>\n Child ({{ childSubAgentCount }})\n </button>\n <button mjButton\n size=\"sm\"\n [class.active]=\"subAgentFilter === 'related'\"\n (click)=\"setSubAgentFilter('related')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Related ({{ relatedSubAgentCount }})\n </button>\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button mjButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"createChildSubAgent()\"\n title=\"Create a new child sub-agent that shares this agent's payload\">\n <i class=\"fa-solid fa-link\"></i>\n Create Child\n </button>\n <button mjButton\n size=\"sm\"\n (click)=\"linkRelatedSubAgent()\"\n title=\"Link an existing agent as a related sub-agent with payload mapping\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Link Related\n </button>\n }\n </div>\n </div>\n <!-- Empty State -->\n @if (totalSubAgentCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-sitemap\"\n Title=\"No Sub-Agents\"\n Message=\"Sub-agents help build complex workflows through hierarchical orchestration.\"\n Size=\"compact\">\n <div class=\"empty-state-info\">\n <div class=\"info-card\">\n <i class=\"fa-solid fa-link\" style=\"color: var(--mj-status-info);\"></i>\n <strong>Child Sub-Agents</strong>\n <p>Share payload structure, dedicated to parent</p>\n </div>\n <div class=\"info-card\">\n <i class=\"fa-solid fa-share-nodes\" style=\"color: var(--mj-brand-primary);\"></i>\n <strong>Related Sub-Agents</strong>\n <p>Reusable agents with payload mapping</p>\n </div>\n </div>\n </mj-empty-state>\n } @else {\n <!-- Unified Sub-Agent List -->\n <div class=\"entity-list\">\n @for (item of filteredSubAgents; track item.agent.ID) {\n <div class=\"entity-item sub-agent-item\"\n [class.child-sub-agent]=\"item.type === 'child'\"\n [class.related-sub-agent]=\"item.type === 'related'\"\n (click)=\"navigateToEntity('MJ: AI Agents', item.agent.ID)\">\n <!-- Type Badge -->\n <div class=\"sub-agent-type-badge\"\n [style.background-color]=\"getSubAgentBadgeColor(item)\">\n <i [class]=\"getSubAgentBadgeIcon(item)\"></i>\n {{ getSubAgentBadgeText(item) }}\n </div>\n <!-- Agent Icon -->\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(item.agent)) {\n <img [src]=\"item.agent.LogoURL\"\n [alt]=\"item.agent.Name + ' logo'\"\n class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(item.agent)\"></i>\n }\n </div>\n <!-- Agent Content -->\n <div class=\"item-content\">\n <div class=\"item-title\">{{ item.agent.Name || 'Untitled Sub-Agent' }}</div>\n @if (item.agent.Description) {\n <div class=\"item-preview\">{{ item.agent.Description }}</div>\n }\n <div class=\"item-meta\">\n <!-- Payload Info -->\n <span class=\"meta-tag payload-info\">\n <i class=\"fa-solid fa-database\"></i>\n {{ getSubAgentPayloadInfo(item) }}\n </span>\n <!-- Status -->\n @if (item.agent.Status) {\n <span class=\"status-tag\"\n [style.background-color]=\"getStatusBadgeColor()\">\n {{ item.agent.Status }}\n </span>\n }\n <!-- Agent Type -->\n @if (item.agent.Type) {\n <span class=\"meta-tag\">{{ item.agent.Type }}</span>\n }\n </div>\n </div>\n <!-- Actions -->\n <div class=\"item-actions\">\n @if (EditMode) {\n <!-- Output Mapping Config (Related only) -->\n @if (item.type === 'related') {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"configureOutputMapping(item, $event)\"\n title=\"Configure output mapping\">\n <i class=\"fa-solid fa-exchange-alt\"></i>\n </button>\n }\n <!-- Advanced Settings (Child only) -->\n @if (item.type === 'child' && UserCanCreateSubAgents) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openSubAgentAdvancedSettings(item.agent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n <!-- Remove/Unlink -->\n @if (UserCanDeleteSubAgents) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"item.type === 'child' ? removeChildSubAgent(item, $event) : unlinkRelatedSubAgent(item, $event)\"\n [title]=\"item.type === 'child' ? 'Delete child sub-agent' : 'Unlink related sub-agent'\"\n class=\"error-action\">\n <i [class]=\"item.type === 'child' ? 'fa-solid fa-trash' : 'fa-solid fa-unlink'\"></i>\n </button>\n }\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <mj-accordion-panel id=\"prompts\"\n [Expanded]=\"GetSectionExpanded('prompts', false)\"\n [Disabled]=\"loadingStates.prompts\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts\n @if (loadingStates.prompts) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (promptCount > 0) {\n <span> ({{ promptCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [Data]=\"modelSelectionModes\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n @if (promptCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-comments\"\n Title=\"No Prompts Configured\"\n Message=\"Add prompts to define how this agent processes requests and generates responses.\"\n [ActionText]=\"(EditMode && UserCanCreateNewPrompts) ? 'Create First Prompt' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addPrompt()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\"\n class=\"error-action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <mj-accordion-panel id=\"learning\"\n [Expanded]=\"GetSectionExpanded('learning', false)\"\n [Disabled]=\"loadingStates.learningCycles\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles\n @if (loadingStates.learningCycles) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (learningCycleCount > 0) {\n <span> ({{ learningCycleCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n @if (learningCycleCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-brain\"\n Title=\"No Learning Cycles\"\n Message=\"Learning cycles will appear here as the agent processes requests and improves over time.\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('MJ: AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <mj-accordion-panel id=\"notes\"\n [Expanded]=\"GetSectionExpanded('notes', false)\"\n [Disabled]=\"loadingStates.notes\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes\n @if (loadingStates.notes) {\n <span><i class=\"fa-solid fa-spinner fa-spin\"></i></span>\n } @else if (noteCount > 0) {\n <span> ({{ noteCount }})</span>\n }\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n @if (noteCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-sticky-note\"\n Title=\"No Notes\"\n Message=\"Add notes to document important information, observations, or instructions for this agent.\"\n [ActionText]=\"(EditMode && UserCanCreateNotes) ? 'Create First Note' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addNote()\"\n Size=\"compact\" />\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('MJ: AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Search -->\n @if (record.ID) {\n <mj-accordion-panel id=\"search\"\n [Expanded]=\"GetSectionExpanded('search', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-magnifying-glass\"></i> Search\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Control this agent's access to <strong>Scoped Search</strong> and assign the scopes it can use for pre-execution RAG or agent-invoked search.\n </div>\n </div>\n\n <!-- Scope Access mode -->\n <div class=\"agent-search-access\">\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'All'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"All\" [checked]=\"record.SearchScopeAccess === 'All'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'All'\">\n <i class=\"fa-solid fa-globe\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">All</div>\n <div class=\"agent-search-access-desc\">Can use any scope including Global. No scope restriction.</div>\n </div>\n </label>\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'Assigned'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"Assigned\" [checked]=\"record.SearchScopeAccess === 'Assigned'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'Assigned'\">\n <i class=\"fa-solid fa-user-check\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">Assigned</div>\n <div class=\"agent-search-access-desc\">Can use ONLY scopes listed below, for users with a Search grant on the scope (directly or through a role). Other scopes are rejected with ACCESS_DENIED.</div>\n </div>\n </label>\n <label class=\"agent-search-access-option\" [class.active]=\"record.SearchScopeAccess === 'None'\">\n <input type=\"radio\" name=\"SearchScopeAccess\" value=\"None\" [checked]=\"record.SearchScopeAccess === 'None'\" [disabled]=\"!EditMode\" (change)=\"record.SearchScopeAccess = 'None'\">\n <i class=\"fa-solid fa-ban\"></i>\n <div class=\"agent-search-access-text\">\n <div class=\"agent-search-access-title\">None</div>\n <div class=\"agent-search-access-desc\">No search capability. The Scoped Search action and pre-execution retrieval are disabled for this agent.</div>\n </div>\n </label>\n </div>\n\n <!-- Assigned scopes grid -->\n @if (record.SearchScopeAccess !== 'None') {\n <div class=\"agent-search-grid-header\">\n <h4>Assigned Scopes</h4>\n <p class=\"section-description\">\n <strong>Pre-Execution</strong> scopes are searched before the first LLM call, for users who may search them.\n <strong>Agent-Invoked</strong> scopes are callable via the Scoped Search tool during execution.\n <strong>Both</strong> covers both paths.\n </p>\n </div>\n <mj-search-scope-child-grid\n [ParentID]=\"record.ID\"\n ChildEntityName=\"MJ: AI Agent Search Scopes\"\n ParentFieldName=\"AgentID\"\n [Columns]=\"AgentSearchScopeColumns\"\n [Disabled]=\"!EditMode\"\n AddButtonLabel=\"+ Assign another scope\"\n EmptyMessage=\"No scopes assigned yet. Assign at least one if this agent will use Scoped Search.\"\n (RowsChanged)=\"LoadPermissionSummary()\">\n </mj-search-scope-child-grid>\n\n <!-- Phase 2A: read-only audit summary of who has\n permission on each of this agent's assigned scopes.\n Editing happens in the Knowledge Hub Config dashboard\n (see \"Permissions\" subtab under Search Scopes). -->\n <div class=\"agent-search-section\" style=\"margin-top: 16px;\">\n <h4 style=\"margin: 0 0 8px 0;\">\n <i class=\"fa-solid fa-shield-halved\"></i> Effective scope permissions\n </h4>\n <p class=\"section-description\" style=\"margin-bottom: 8px;\">\n Per-user / per-role grants on the scopes assigned above. Edit grants in\n <strong>Knowledge Hub Config → Search Scopes → Permissions</strong>.\n </p>\n @if (IsLoadingPermissions) {\n <div style=\"color: var(--mj-text-muted);\">Loading permissions…</div>\n } @else if (PermissionSummary.length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">\n No scopes assigned yet \u2014 permissions will appear here once you add scopes above.\n </div>\n } @else {\n @for (s of PermissionSummary; track s.ScopeID) {\n <div style=\"margin-bottom: 12px; padding: 8px 12px; background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-subtle); border-radius: 4px;\">\n <div style=\"font-weight: 600; margin-bottom: 4px;\">{{ s.ScopeName }}</div>\n @if (s.Permissions.length === 0) {\n <div style=\"color: var(--mj-text-muted); font-size: 0.9em;\">\n No explicit permissions. Users need a Search grant (directly or through a role) unless this agent's access is <code>All</code>.\n </div>\n } @else {\n <ul style=\"margin: 4px 0 0 16px; padding: 0;\">\n @for (p of s.Permissions; track p.Principal + p.Level) {\n <li style=\"font-size: 0.9em; padding: 2px 0;\">\n <i class=\"fa-solid\" [class.fa-user]=\"p.PrincipalType === 'User'\" [class.fa-users]=\"p.PrincipalType === 'Role'\"></i>\n <strong>{{ p.Principal }}</strong>\n <span style=\"color: var(--mj-text-muted);\">({{ p.PrincipalType }})</span>\n — <span [style.color]=\"p.Level === 'None' ? 'var(--mj-status-error-text)' : 'var(--mj-text-primary)'\">{{ p.Level }}</span>\n </li>\n }\n </ul>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n <!-- Payload -->\n <mj-accordion-panel id=\"payload\"\n [Expanded]=\"GetSectionExpanded('payload', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-exchange-alt\"></i> Payload Management\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads, path routing, and validation between parent and child agents.\n </div>\n </div>\n <!-- Payload Scope Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-target\"></i>\n Payload Scope\n </h3>\n <div class=\"payload-field-container\">\n <div class=\"payload-field-info\">\n <label class=\"payload-field-label\">Payload Scope Path</label>\n <p class=\"payload-field-description\">\n Specify a path within the parent payload that this sub-agent should operate on.\n Leave empty to receive the entire payload.\n </p>\n </div>\n <div class=\"payload-field-input\">\n <mj-form-field\n FieldName=\"PayloadScope\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n <div class=\"payload-field-example\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Example: <code>/customer/profile</code> or <code>/analysis/results</code></span>\n </div>\n </div>\n </div>\n </div>\n <!-- Path Configuration Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-route\"></i>\n Path Configuration\n </h3>\n <div class=\"payload-paths-grid\">\n <!-- Downstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon downstream\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Downstream Paths</h4>\n <p>JSON array of paths to pass to sub-agents</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadDownstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to pass entire payload or specify paths like <code>[\"user.id\", \"order.*\"]</code>\n </div>\n </div>\n </div>\n <!-- Upstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon upstream\">\n <i class=\"fa-solid fa-arrow-up\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Upstream Paths</h4>\n <p>JSON array of paths sub-agents can write back</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadUpstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to allow all writes or limit to specific paths\n </div>\n </div>\n </div>\n <!-- Self Read Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-read\">\n <i class=\"fa-solid fa-eye\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Read Paths</h4>\n <p>JSON array of paths this agent can read</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can read from the payload\n </div>\n </div>\n </div>\n <!-- Self Write Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-write\">\n <i class=\"fa-solid fa-pen\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Write Paths</h4>\n <p>JSON array of paths this agent can write to</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor\n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can write back to the payload\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Validation Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Final Payload Validation\n </h3>\n <div class=\"payload-validation-container\">\n <div class=\"payload-validation-settings\">\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Validation Mode</label>\n <p class=\"validation-field-description\">How to handle validation failures</p>\n <mj-form-field\n FieldName=\"FinalPayloadValidationMode\"\n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Max Retries</label>\n <p class=\"validation-field-description\">Maximum validation retry attempts</p>\n <mj-form-field\n FieldName=\"FinalPayloadValidationMaxRetries\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"payload-validation-schema\">\n <label class=\"validation-schema-label\">\n <i class=\"fa-solid fa-code\"></i>\n Validation Schema\n </label>\n <p class=\"validation-schema-description\">\n JSON schema or validation rules for the final payload structure\n </p>\n <div class=\"validation-schema-editor\">\n <mj-code-editor\n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Execution Guardrails (New Separate Panel) -->\n <mj-accordion-panel id=\"guardrails\"\n [Expanded]=\"GetSectionExpanded('guardrails', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n <div class=\"form-fields-grid\">\n <mj-form-field\n FieldName=\"MaxCostPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxTokensPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxIterationsPerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <mj-form-field\n FieldName=\"MaxTimePerRun\"\n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Configuration (Settings Panel) -->\n <mj-accordion-panel id=\"config\"\n [Expanded]=\"GetSectionExpanded('config', false)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-cogs\"></i> Configuration\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure agent behavior, execution settings, and advanced features.\n </div>\n </div>\n <!-- Identity & Behavior Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-id-card\"></i>\n Identity & Behavior\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Status</h4>\n <p>Current availability and operational status</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n name=\"agentStatus\"\n class=\"config-field-input\">\n </mj-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Status || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Type</h4>\n <p>Category and system-level behavior</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.TypeID\"\n [Data]=\"agentTypes\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n name=\"agentTypeID\"\n class=\"config-field-input\">\n </mj-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Type || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Category</h4>\n <p>Organizational category for this agent</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"Select a category...\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"OnCategoryChange($event)\">\n </mj-tree-dropdown>\n } @else {\n <span class=\"config-field-display\">{{ record.Category || 'Not Set' }}</span>\n }\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Expose as Action</h4>\n <p>Make available as an action for other agents</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExposeAsAction\"\n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-align-left\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Description</h4>\n <p>Detailed agent description and purpose</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"Description\"\n Type=\"textarea\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n <!-- Execution Settings Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Settings\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Mode</h4>\n <p>How sub-agents are executed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExecutionMode\"\n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sort-numeric-down\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Order</h4>\n <p>Order when run with siblings</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ExecutionOrder\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Default Effort Level</h4>\n <p>Default effort level for all prompts (1-100)</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"DefaultPromptEffortLevel\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Higher values request more thorough reasoning (1=minimal, 100=maximum)\n </div>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-code\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Driver Class</h4>\n <p>Custom implementation class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"DriverClass\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n <!-- Visual Identity Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-palette\"></i>\n Visual Identity\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-icons\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Icon Class</h4>\n <p>Font Awesome icon class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"IconClass\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Example: <code>fa-solid fa-robot</code>\n </div>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-image\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Logo URL</h4>\n <p>URL for agent logo image</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"LogoURL\"\n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Takes precedence over Icon Class\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Context Compression Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-compress\"></i>\n Context Compression\n </h3>\n <div class=\"config-grid\">\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Enable Context Compression</h4>\n <p>Automatically compress conversation context when message threshold is reached</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"EnableContextCompression\"\n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n </div>\n </div>\n @if (record.EnableContextCompression) {\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-hashtag\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Message Threshold</h4>\n <p>Messages before compression triggers</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ContextCompressionMessageThreshold\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-save\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Messages to Keep</h4>\n <p>Recent messages to retain uncompressed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field\n FieldName=\"ContextCompressionMessageRetentionCount\"\n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [Record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Compression Prompt</h4>\n <p>Prompt used for summarization</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <div class=\"prompt-selector-container\">\n <div class=\"prompt-display\">\n @if (selectedContextCompressionPrompt) {\n <span class=\"prompt-name\">{{ selectedContextCompressionPrompt.Name }}</span>\n } @else {\n <span class=\"no-prompt\">No prompt selected</span>\n }\n </div>\n <div class=\"prompt-actions\">\n <button type=\"button\"\n mjButton\n variant=\"outline\"\n size=\"sm\"\n (click)=\"openContextCompressionPromptSelector()\"\n class=\"prompt-select-btn\">\n <i class=\"fa-solid fa-search\"></i>\n {{ selectedContextCompressionPrompt ? 'Change' : 'Select' }} Prompt\n </button>\n @if (selectedContextCompressionPrompt) {\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"clearContextCompressionPrompt()\"\n class=\"prompt-clear-btn\"\n title=\"Clear selection\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n } @else {\n <span class=\"config-field-display\">{{ selectedContextCompressionPrompt?.Name || record.ContextCompressionPrompt || 'Not Set' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n </div>\n }\n </form>\n</mj-record-form-container>\n}\n\n<!-- Permissions Dialog (from @memberjunction/ng-agents) -->\n@if (ShowPermissionsDialog) {\n <mj-agent-permissions-dialog\n [Agent]=\"record\"\n (Closed)=\"onPermissionsDialogClosed()\"\n (PermissionsChanged)=\"refreshRelatedData()\">\n </mj-agent-permissions-dialog>\n}", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n transition: padding 0.2s ease;\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n/* Header collapse toggle button */\n.agent-header-toggle {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n flex-shrink: 0;\n padding: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-toggle i {\n font-size: 10px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 36px;\n height: 36px;\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n flex-shrink: 0;\n transition: all 0.2s ease;\n}\n\n.agent-icon-wrapper i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n/* \u2500\u2500 Minimized Floating Header Bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.agent-header-mini {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 12px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n height: 32px;\n}\n\n.agent-header-mini-expand {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 22px;\n height: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-disabled);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-expand:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-expand i {\n font-size: 9px;\n}\n\n.agent-header-mini-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n\n.agent-header-mini-status {\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.agent-header-mini-spacer {\n flex: 1;\n}\n\n.agent-header-mini-btn {\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--mj-text-muted);\n padding: 0;\n flex-shrink: 0;\n transition: all 0.15s ease;\n}\n\n.agent-header-mini-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border-color: var(--mj-border-strong);\n}\n\n.agent-header-mini-btn:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.agent-header-mini-btn--primary {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-header-mini-btn--primary:hover:not(:disabled) {\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) 50%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.agent-header-mini-btn i {\n font-size: 11px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 16px !important;\n font-weight: 500 !important;\n height: 30px !important;\n width: 100% !important;\n max-width: 350px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-badge.active {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge.pending {\n background: var(--mj-status-warning);\n color: var(--mj-text-primary);\n}\n\n.status-badge.disabled {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.parent-agent.clickable:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: row;\n gap: 8px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);\n}\n\n.action-button.primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-button.primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.action-button.secondary {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.action-button.secondary:hover {\n background: var(--mj-text-secondary);\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: var(--mj-status-error);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n padding: 8px 12px;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: var(--mj-bg-surface);\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n border: 1px solid var(--mj-border-default);\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-bg-surface-sunken);\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: var(--mj-text-primary);\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.section-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 90%, transparent);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid var(--mj-bg-surface-sunken);\n border-top: 4px solid var(--mj-brand-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: var(--mj-bg-surface);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: var(--mj-brand-primary);\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: var(--mj-status-success);\n}\n\n.action-item .item-icon {\n background: var(--mj-status-warning);\n}\n\n.sub-agent-item .item-icon {\n background: var(--mj-brand-primary);\n}\n\n.model-item .item-icon {\n background: var(--mj-brand-primary);\n}\n\n.learning-item .item-icon {\n background: var(--mj-status-error);\n}\n\n.note-item .item-icon {\n background: var(--mj-status-warning);\n}\n\n.item-icon i {\n color: var(--mj-text-muted);\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: var(--mj-text-inverse);\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.priority-tag {\n color: var(--mj-text-inverse);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-tag.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-tag.inactive {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: var(--mj-brand-primary);\n}\n\n.view-more-item {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n/* Pagination Controls */\n.pagination-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n margin-top: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.page-nav-btn {\n min-width: 120px;\n font-weight: 500;\n}\n\n.page-nav-btn i {\n font-size: 12px;\n}\n\n.page-nav-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-info {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 0 16px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n min-width: 200px;\n text-align: center;\n}\n\n.page-info .record-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: normal;\n}\n\n.page-info .fa-spinner {\n margin-right: 8px;\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn {\n color: var(--mj-text-muted);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.view-all-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.view-all-btn i {\n margin-right: 4px;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: var(--mj-brand-primary);\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: var(--mj-text-muted);\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: var(--mj-text-muted);\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: var(--mj-brand-primary);\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker i {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n border-color: var(--mj-brand-primary);\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: var(--mj-brand-primary);\n}\n\n.prompt-card .card-icon {\n background: var(--mj-status-success);\n}\n\n.action-card .card-icon {\n background: var(--mj-status-warning);\n}\n\n.card-icon i {\n font-size: 18px;\n color: var(--mj-text-muted);\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: var(--mj-text-inverse);\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 4px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.inactive {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: var(--mj-text-muted);\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.timeline-item.expanded {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: var(--mj-bg-surface-card);\n border: 2px dashed var(--mj-border-default);\n}\n\n.timeline-item.view-all:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: var(--mj-border-default);\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: var(--mj-text-muted);\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: var(--mj-text-muted);\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: var(--mj-text-muted);\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: var(--mj-status-error);\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: var(--mj-status-error);\n}\n\n.result-content,\n.error-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n\n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n\n .action-button {\n flex: 1;\n justify-content: center;\n }\n\n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n\n .panel-content {\n padding: 20px 16px;\n }\n\n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n\n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n }\n\n .item-icon i {\n font-size: 16px;\n }\n\n .item-title {\n font-size: 15px;\n }\n\n .item-preview {\n font-size: 13px;\n }\n\n .item-meta {\n gap: 8px;\n }\n\n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n\n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n\n .timeline-marker i {\n font-size: 12px;\n }\n\n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .timeline-date {\n align-self: flex-start;\n }\n\n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n\n/* Execution History Search Bar */\n.execution-search-bar {\n margin-bottom: 16px;\n padding: 0 4px;\n}\n\n.execution-search-bar .fa-search {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n font-size: 14px;\n}\n\n/* New Execution History Card Design */\n.execution-history-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 8px;\n}\n\n.execution-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.execution-header {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.status-indicator i {\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.execution-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.execution-metrics {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; /* Align with execution title text, accounting for status indicator + gap */\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 6px 10px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.metric-item i {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.metric-label {\n font-weight: 500;\n}\n\n.metric-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.execution-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\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.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n transform: translateY(-1px);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.expand-icon {\n transition: transform 0.2s ease;\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n/* Execution Expanded Content */\n.execution-expanded-content {\n padding: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n background: var(--mj-bg-surface-card);\n animation: slideDown 0.2s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics {\n margin-bottom: 20px;\n}\n\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.metric-detail i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.result-section {\n margin-top: 16px;\n}\n\n.result-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: var(--mj-status-error);\n}\n\n.error-content {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n/* Responsive adjustments for execution history */\n@media (max-width: 768px) {\n .execution-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .execution-left-section {\n width: 100%;\n }\n\n .execution-metrics {\n margin-left: 0; /* Remove left margin on mobile */\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n\n .metric-item {\n font-size: 11px;\n padding: 4px 8px;\n }\n\n .metrics-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* === PAYLOAD MANAGEMENT SECTION === */\n.payload-section {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.payload-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title i {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n/* Payload Scope Styling */\n.payload-field-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.payload-field-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.payload-field-example i {\n color: var(--mj-status-warning);\n font-size: 0.9rem;\n}\n\n.payload-field-example code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n/* Path Configuration Grid */\n.payload-paths-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.payload-path-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.payload-path-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream {\n background: var(--mj-status-success);\n}\n\n.payload-path-icon.upstream {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-read {\n background: var(--mj-brand-primary);\n}\n\n.payload-path-icon.self-write {\n background: var(--mj-status-warning);\n}\n\n.payload-path-icon i {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.payload-path-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.payload-path-info p {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-content {\n padding: 1rem;\n}\n\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container:hover {\n border-color: var(--mj-brand-primary);\n}\n\n.payload-path-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.payload-path-hint i {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n/* Payload Validation Container */\n.payload-validation-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n}\n\n.validation-field-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label i {\n color: var(--mj-brand-primary);\n}\n\n.validation-schema-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor:hover {\n border-color: var(--mj-brand-primary);\n}\n\n/* === CONFIGURATION SECTION === */\n.config-section {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.config-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title i {\n color: var(--mj-brand-primary);\n font-size: 1.2rem;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.full-width {\n grid-column: 1 / -1;\n}\n\n.config-card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon i {\n color: var(--mj-text-inverse);\n font-size: 1.2rem;\n}\n\n.config-card-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.config-card-info p {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.config-card-content {\n padding: 1rem;\n}\n\n/* Custom field styling for config cards */\n.config-field-input {\n width: 100%;\n min-width: 250px;\n}\n\n.config-card-content ::ng-deep mj-form-field {\n width: 100% !important;\n}\n\n.config-field-display {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n/* Prompt selector styling */\n.prompt-selector-container {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.prompt-name {\n color: var(--mj-text-secondary);\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt {\n color: var(--mj-text-muted);\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn {\n white-space: nowrap;\n}\n\n.prompt-clear-btn {\n min-width: 32px;\n}\n\n.config-card-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint i {\n color: var(--mj-brand-primary);\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n}\n\n\n/* === RESPONSIVE DESIGN === */\n@media (max-width: 768px) {\n .payload-field-container,\n .payload-validation-container {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .payload-paths-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .config-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .payload-section-title,\n .config-section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .payload-path-header,\n .config-card-header {\n padding: 0.75rem;\n }\n\n .payload-path-content,\n .config-card-content {\n padding: 0.75rem;\n }\n\n .payload-field-container,\n .payload-validation-container {\n padding: 1rem;\n }\n}\n\n/* ===================================\n Unified Sub-Agents with Filtering\n =================================== */\n\n/* Filter Controls */\n.sub-agent-filter-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* Sub-Agent Type Badge */\n.sub-agent-type-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n/* Sub-Agent Item Styling */\n.sub-agent-item {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item.related-sub-agent {\n border-left: 4px solid var(--mj-brand-primary);\n}\n\n.sub-agent-item:hover {\n transform: translateX(4px);\n}\n\n/* Payload Info Tag */\n.payload-info {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n/* Empty State Info Cards */\n.empty-state-info {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card strong {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card p {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n/* Responsive adjustments for sub-agent filters */\n@media (max-width: 768px) {\n .sub-agent-filter-header {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-controls,\n .header-actions {\n width: 100%;\n justify-content: center;\n }\n\n .empty-state-info {\n grid-template-columns: 1fr;\n }\n}\n\n/* ===== Search Scope Access (mockup #5) ===== */\n.agent-search-access {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n margin: 8px 0 20px;\n}\n\n.agent-search-access-option {\n display: grid;\n grid-template-columns: 24px 28px 1fr;\n align-items: start;\n gap: 10px;\n padding: 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n transition: background 120ms ease, border-color 120ms ease;\n}\n\n.agent-search-access-option:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.agent-search-access-option.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.agent-search-access-option input[type=\"radio\"] {\n accent-color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.agent-search-access-option > i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n text-align: center;\n margin-top: 2px;\n}\n\n.agent-search-access-text {\n min-width: 0;\n}\n\n.agent-search-access-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.agent-search-access-desc {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n line-height: 1.3;\n}\n\n.agent-search-grid-header {\n margin: 8px 0 12px;\n}\n\n.agent-search-grid-header h4 {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n@media (max-width: 768px) {\n .agent-search-access {\n grid-template-columns: 1fr;\n }\n}\n\n/* \u2500\u2500 Execution History: Runs | Sessions segmented toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.history-view-toggle {\n display: inline-flex;\n gap: 2px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 3px;\n margin-bottom: 14px;\n}\n\n.history-toggle-option {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 6px 16px;\n border: none;\n border-radius: 8px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.history-toggle-option:hover {\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.history-toggle-count {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 7px;\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n}\n\n.history-toggle-option.active .history-toggle-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 Voice session rows in Execution History \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.session-card {\n cursor: pointer;\n}\n\n.session-role-chip {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n padding: 1px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.session-role-chip--target {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n color: var(--mj-status-info);\n}\n\n.session-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.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-success) 25%, transparent);\n}\n\n.session-status-pill[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 border-color: color-mix(in srgb, var(--mj-status-warning) 25%, transparent);\n}\n\n/* \u2500\u2500 Form 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\n Panes are hidden with `display: none`, never removed from the DOM. The\n designer pane holds UNSAVED canvas edits; @if-ing it away on a tab switch\n would discard them silently, and would also throw away the canvas's zoom and\n node positions on every trip to Details. */\n\n.agent-tabbar {\n flex: 0 0 auto;\n padding: 8px 12px 0;\n background: var(--mj-bg-page);\n}\n\n/* Phone section picker: hidden until the 768px rule swaps it in for the tab nav */\n.agent-tabbar .phone-section-picker {\n display: none;\n}\n\n@media (max-width: 768px) {\n .agent-tabbar {\n padding: 4px 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .agent-tabbar mj-tab-nav {\n display: none;\n }\n\n .agent-tabbar .phone-section-picker {\n display: block;\n }\n}\n\n/* Phone hero (6A): one identity row, icon beside the name and status, instead of the older\n phone rule's icon-above-name stack. Scoped to .phone-hero so edit mode keeps that layout. */\n@media (max-width: 768px) {\n .agent-header.phone-hero.hero-view .agent-overview {\n flex-direction: row;\n align-items: center;\n gap: 10px;\n width: 100%;\n }\n\n .agent-header.phone-hero.hero-view .agent-info {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .agent-header.phone-hero.hero-view .agent-name {\n overflow-wrap: anywhere;\n }\n\n .agent-header.phone-hero.hero-view .agent-meta {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n }\n}\n\n.agent-pane {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.agent-pane--hidden {\n display: none;\n}\n\n.agent-pane--designer {\n overflow: hidden;\n padding: 8px 12px 12px;\n background: var(--mj-bg-page);\n}\n\n/* The designer's dynamically-created section has no height of its own, so without\n this the flow canvas collapses to zero and renders as an empty strip. */\n.agent-pane--designer > ng-component,\n.agent-pane--designer > * {\n flex: 1;\n min-height: 0;\n}\n\n.agent-pane--invocations {\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--mj-bg-page);\n}\n\n/* Initial load: the form's header renders as soon as the record arrives, but the tab strip and\n every pane wait on the agent TYPE. This fills that window so the page reads as loading rather\n than as broken. */\n.agent-form-loading {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 240px;\n padding: 32px;\n background: var(--mj-bg-page);\n}\n", "/* ============================================\n PHONE HERO (design call 6A), shared by the custom forms that own a hero.\n Under 768px the hero keeps icon, name, status and the primary action. Anything tagged\n .phone-hero-detail hides while the hero is compact and comes back when the summary line is\n tapped. Edit mode is untouched: the host only gets .hero-compact / .hero-view in view mode.\n Host: .phone-hero [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\"\n Tags: .phone-hero-detail hidden while compact\n .phone-hero-hide hidden in view mode (said elsewhere on the phone hero)\n .phone-hero-only shown only on phones\n .phone-hero-top a title + action row that stacks\n .phone-hero-actions / .phone-hero-run the primary action, full width at 44px\n .phone-hero-stats a metric row that reflows to a 2-up grid when the hero is expanded\n .phone-hero-status a status chip in the identity row (with .phone-hero-only)\n ============================================ */\n.phone-hero-summary,\n.phone-hero-only {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero {\n padding: 12px !important;\n }\n\n /* !important: several heroes carry inline display/padding styles on these rows */\n .phone-hero.hero-compact .phone-hero-detail,\n .phone-hero.hero-view .phone-hero-hide {\n display: none !important;\n }\n\n .phone-hero-only {\n display: inline-flex;\n }\n\n /* Lower specificity than the compact rule above, so a compact hero still hides it */\n .phone-hero .phone-hero-stats {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n /* data-status comes from RunStatusKind(); the -text / -bg pairs keep contrast in both themes */\n .phone-hero-status[data-status=\"running\"] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions {\n width: 100%;\n }\n\n .phone-hero .phone-hero-run {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n /* Inherits the hero's text colour, so it reads on light heroes and on the brand-blue\n Queries hero alike; a muted token would be grey on blue. */\n .phone-hero-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary > i {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"] > i {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary > i {\n transition: none;\n }\n}\n"] }]
|
|
5810
5860
|
}], null, { CustomSectionContainer: [{
|
|
5811
5861
|
type: ViewChild,
|
|
5812
5862
|
args: ['customSectionContainer', { read: ViewContainerRef }]
|
|
5813
5863
|
}] }); })();
|
|
5814
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentFormComponentExtended, { className: "MJAIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
5864
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentFormComponentExtended, { className: "MJAIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 118 }); })();
|
|
5815
5865
|
//# sourceMappingURL=ai-agent-form.component.js.map
|