@memberjunction/ng-core-entity-forms 6.2.0-edge.1 → 6.2.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts +1 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-form-tabs.js +2 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +528 -521
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +10 -16
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/pending-records.d.ts +11 -0
- package/dist/lib/custom/AIPrompts/pending-records.d.ts.map +1 -0
- package/dist/lib/custom/AIPrompts/pending-records.js +21 -0
- package/dist/lib/custom/AIPrompts/pending-records.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +240 -147
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +19 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +50 -8
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts +37 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js +399 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts +69 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js +587 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts +67 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js +534 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts +25 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js +299 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts +31 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js +395 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js.map +1 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts +13 -4
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +110 -113
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +6 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +402 -361
- package/dist/lib/custom/Tests/test-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 +704 -664
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +56 -48
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +60 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +61 -43
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +37 -19
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.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 +31 -13
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +156 -84
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js +135 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js +155 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js +183 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js +120 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js +103 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js +171 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +172 -118
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +436 -422
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +44 -2
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts +116 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts.map +1 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js +820 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js.map +1 -0
- package/dist/lib/shared/components/template-editor.component.d.ts +25 -1
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +67 -3
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +5 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +47 -43
|
@@ -225,7 +225,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_5_Template(rf,
|
|
|
225
225
|
} }
|
|
226
226
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
227
227
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
228
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "mj-tab-nav",
|
|
228
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "mj-tab-nav", 146);
|
|
229
229
|
i0.ɵɵlistener("TabChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template_mj_tab_nav_TabChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnFormTabChange($event)); });
|
|
230
230
|
i0.ɵɵelementEnd()();
|
|
231
231
|
} if (rf & 2) {
|
|
@@ -234,14 +234,14 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
234
234
|
i0.ɵɵproperty("Tabs", ctx_r1.FormTabs)("ActiveKey", ctx_r1.ActiveFormTab || "");
|
|
235
235
|
} }
|
|
236
236
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
237
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
237
|
+
i0.ɵɵelement(0, "mj-loading", 148);
|
|
238
238
|
} if (rf & 2) {
|
|
239
239
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
240
240
|
i0.ɵɵproperty("text", i0.ɵɵinterpolate1("Loading ", ctx_r1.agentType == null ? null : ctx_r1.agentType.Name, " configuration..."));
|
|
241
241
|
} }
|
|
242
242
|
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",
|
|
243
|
+
i0.ɵɵelementStart(0, "div", 147);
|
|
244
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Conditional_1_Template, 1, 2, "mj-loading", 148);
|
|
245
245
|
i0.ɵɵelementContainer(2, null, 1);
|
|
246
246
|
i0.ɵɵelementEnd();
|
|
247
247
|
} if (rf & 2) {
|
|
@@ -252,18 +252,25 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
252
252
|
} }
|
|
253
253
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
254
254
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
255
|
-
i0.ɵɵelementStart(0, "div",
|
|
255
|
+
i0.ɵɵelementStart(0, "div", 149)(1, "mj-agent-invocations", 150);
|
|
256
256
|
i0.ɵɵlistener("RecordOpenRequested", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template_mj_agent_invocations_RecordOpenRequested_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnInvocationOpenRequested($event)); });
|
|
257
257
|
i0.ɵɵelementEnd()();
|
|
258
|
+
i0.ɵɵelementStart(2, "div", 151);
|
|
259
|
+
i0.ɵɵelement(3, "mj-agent-rubrics", 152);
|
|
260
|
+
i0.ɵɵelementEnd();
|
|
258
261
|
} if (rf & 2) {
|
|
259
262
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
260
263
|
i0.ɵɵclassProp("agent-pane--hidden", ctx_r1.ActiveFormTab !== "invocations");
|
|
261
264
|
i0.ɵɵadvance();
|
|
262
265
|
i0.ɵɵproperty("Provider", ctx_r1.Provider)("AgentID", ctx_r1.record.ID)("Active", ctx_r1.ActiveFormTab === "invocations")("ExposeAsAction", ctx_r1.record.ExposeAsAction)("ParentAgentName", ctx_r1.record.Parent)("ParentAgentID", ctx_r1.record.ParentID);
|
|
266
|
+
i0.ɵɵadvance();
|
|
267
|
+
i0.ɵɵclassProp("agent-pane--hidden", ctx_r1.ActiveFormTab !== "rubrics");
|
|
268
|
+
i0.ɵɵadvance();
|
|
269
|
+
i0.ɵɵproperty("Provider", ctx_r1.Provider)("AgentID", ctx_r1.record.ID)("Active", ctx_r1.ActiveFormTab === "rubrics");
|
|
263
270
|
} }
|
|
264
271
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
265
272
|
i0.ɵɵelementStart(0, "span");
|
|
266
|
-
i0.ɵɵelement(1, "i",
|
|
273
|
+
i0.ɵɵelement(1, "i", 156);
|
|
267
274
|
i0.ɵɵelementEnd();
|
|
268
275
|
} }
|
|
269
276
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -286,7 +293,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
286
293
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount < ctx_r1.totalExecutionHistoryCount ? 2 : -1);
|
|
287
294
|
} }
|
|
288
295
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
289
|
-
i0.ɵɵelement(0, "i",
|
|
296
|
+
i0.ɵɵelement(0, "i", 155);
|
|
290
297
|
i0.ɵɵtext(1, " Execution History ");
|
|
291
298
|
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");
|
|
292
299
|
} if (rf & 2) {
|
|
@@ -295,7 +302,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
295
302
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 2 : ctx_r1.executionHistoryCount > 0 ? 3 : -1);
|
|
296
303
|
} }
|
|
297
304
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
298
|
-
i0.ɵɵelementStart(0, "span",
|
|
305
|
+
i0.ɵɵelementStart(0, "span", 159);
|
|
299
306
|
i0.ɵɵtext(1);
|
|
300
307
|
i0.ɵɵelementEnd();
|
|
301
308
|
} if (rf & 2) {
|
|
@@ -304,7 +311,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
304
311
|
i0.ɵɵtextInterpolate(ctx_r1.totalExecutionHistoryCount);
|
|
305
312
|
} }
|
|
306
313
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
307
|
-
i0.ɵɵelementStart(0, "span",
|
|
314
|
+
i0.ɵɵelementStart(0, "span", 159);
|
|
308
315
|
i0.ɵɵtext(1);
|
|
309
316
|
i0.ɵɵelementEnd();
|
|
310
317
|
} if (rf & 2) {
|
|
@@ -314,17 +321,17 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
314
321
|
} }
|
|
315
322
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
316
323
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
317
|
-
i0.ɵɵelementStart(0, "div",
|
|
324
|
+
i0.ɵɵelementStart(0, "div", 154)(1, "button", 157);
|
|
318
325
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("runs")); });
|
|
319
|
-
i0.ɵɵelement(2, "i",
|
|
326
|
+
i0.ɵɵelement(2, "i", 158);
|
|
320
327
|
i0.ɵɵtext(3, " Runs ");
|
|
321
|
-
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template, 2, 1, "span",
|
|
328
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_4_Template, 2, 1, "span", 159);
|
|
322
329
|
i0.ɵɵelementEnd();
|
|
323
|
-
i0.ɵɵelementStart(5, "button",
|
|
330
|
+
i0.ɵɵelementStart(5, "button", 157);
|
|
324
331
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("sessions")); });
|
|
325
|
-
i0.ɵɵelement(6, "i",
|
|
332
|
+
i0.ɵɵelement(6, "i", 160);
|
|
326
333
|
i0.ɵɵtext(7, " Sessions ");
|
|
327
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template, 2, 1, "span",
|
|
334
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Conditional_8_Template, 2, 1, "span", 159);
|
|
328
335
|
i0.ɵɵelementEnd()();
|
|
329
336
|
} if (rf & 2) {
|
|
330
337
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -338,28 +345,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
338
345
|
i0.ɵɵconditional(ctx_r1.totalSessionCount > 0 ? 8 : -1);
|
|
339
346
|
} }
|
|
340
347
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
348
|
+
i0.ɵɵelement(0, "mj-loading", 161);
|
|
342
349
|
} }
|
|
343
350
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
351
|
+
i0.ɵɵelement(0, "mj-empty-state", 162);
|
|
345
352
|
} }
|
|
346
353
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
347
|
-
i0.ɵɵelementStart(0, "span",
|
|
354
|
+
i0.ɵɵelementStart(0, "span", 172);
|
|
348
355
|
i0.ɵɵtext(1, "as co-agent");
|
|
349
356
|
i0.ɵɵelementEnd();
|
|
350
357
|
} }
|
|
351
358
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
352
|
-
i0.ɵɵelementStart(0, "span",
|
|
359
|
+
i0.ɵɵelementStart(0, "span", 173);
|
|
353
360
|
i0.ɵɵtext(1, "as target");
|
|
354
361
|
i0.ɵɵelementEnd();
|
|
355
362
|
} }
|
|
356
363
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
357
|
-
i0.ɵɵelementStart(0, "div",
|
|
358
|
-
i0.ɵɵelement(1, "i",
|
|
359
|
-
i0.ɵɵelementStart(2, "span",
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
365
|
+
i0.ɵɵelement(1, "i", 186);
|
|
366
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
360
367
|
i0.ɵɵtext(3, "Target:");
|
|
361
368
|
i0.ɵɵelementEnd();
|
|
362
|
-
i0.ɵɵelementStart(4, "span",
|
|
369
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
363
370
|
i0.ɵɵtext(5);
|
|
364
371
|
i0.ɵɵelementEnd()();
|
|
365
372
|
} if (rf & 2) {
|
|
@@ -368,12 +375,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
368
375
|
i0.ɵɵtextInterpolate(item_r14.targetAgentName);
|
|
369
376
|
} }
|
|
370
377
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
371
|
-
i0.ɵɵelementStart(0, "div",
|
|
372
|
-
i0.ɵɵelement(1, "i",
|
|
373
|
-
i0.ɵɵelementStart(2, "span",
|
|
378
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
379
|
+
i0.ɵɵelement(1, "i", 160);
|
|
380
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
374
381
|
i0.ɵɵtext(3, "Co-agent:");
|
|
375
382
|
i0.ɵɵelementEnd();
|
|
376
|
-
i0.ɵɵelementStart(4, "span",
|
|
383
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
377
384
|
i0.ɵɵtext(5);
|
|
378
385
|
i0.ɵɵelementEnd()();
|
|
379
386
|
} if (rf & 2) {
|
|
@@ -383,52 +390,52 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
383
390
|
} }
|
|
384
391
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
385
392
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
386
|
-
i0.ɵɵelementStart(0, "div",
|
|
393
|
+
i0.ɵɵelementStart(0, "div", 165);
|
|
387
394
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template_div_click_0_listener() { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.openSessionRecord(item_r14.row.ID)); });
|
|
388
|
-
i0.ɵɵelementStart(1, "div",
|
|
395
|
+
i0.ɵɵelementStart(1, "div", 166)(2, "div", 167)(3, "div", 168)(4, "div", 169);
|
|
389
396
|
i0.ɵɵelement(5, "i");
|
|
390
397
|
i0.ɵɵelementEnd();
|
|
391
|
-
i0.ɵɵelementStart(6, "div",
|
|
398
|
+
i0.ɵɵelementStart(6, "div", 170)(7, "div", 171);
|
|
392
399
|
i0.ɵɵtext(8);
|
|
393
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template, 2, 0, "span",
|
|
394
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template, 2, 0, "span",
|
|
400
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_9_Template, 2, 0, "span", 172);
|
|
401
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_10_Template, 2, 0, "span", 173);
|
|
395
402
|
i0.ɵɵelementEnd();
|
|
396
|
-
i0.ɵɵelementStart(11, "div",
|
|
403
|
+
i0.ɵɵelementStart(11, "div", 174);
|
|
397
404
|
i0.ɵɵtext(12);
|
|
398
405
|
i0.ɵɵpipe(13, "date");
|
|
399
406
|
i0.ɵɵelementEnd()()();
|
|
400
|
-
i0.ɵɵelementStart(14, "div",
|
|
407
|
+
i0.ɵɵelementStart(14, "div", 175)(15, "div", 176)(16, "span", 177);
|
|
401
408
|
i0.ɵɵtext(17);
|
|
402
409
|
i0.ɵɵelementEnd()();
|
|
403
|
-
i0.ɵɵelementStart(18, "div",
|
|
404
|
-
i0.ɵɵelement(19, "i",
|
|
405
|
-
i0.ɵɵelementStart(20, "span",
|
|
410
|
+
i0.ɵɵelementStart(18, "div", 176);
|
|
411
|
+
i0.ɵɵelement(19, "i", 178);
|
|
412
|
+
i0.ɵɵelementStart(20, "span", 179);
|
|
406
413
|
i0.ɵɵtext(21, "Duration:");
|
|
407
414
|
i0.ɵɵelementEnd();
|
|
408
|
-
i0.ɵɵelementStart(22, "span",
|
|
415
|
+
i0.ɵɵelementStart(22, "span", 180);
|
|
409
416
|
i0.ɵɵtext(23);
|
|
410
417
|
i0.ɵɵelementEnd()();
|
|
411
|
-
i0.ɵɵelementStart(24, "div",
|
|
412
|
-
i0.ɵɵelement(25, "i",
|
|
413
|
-
i0.ɵɵelementStart(26, "span",
|
|
418
|
+
i0.ɵɵelementStart(24, "div", 176);
|
|
419
|
+
i0.ɵɵelement(25, "i", 181);
|
|
420
|
+
i0.ɵɵelementStart(26, "span", 179);
|
|
414
421
|
i0.ɵɵtext(27, "Channels:");
|
|
415
422
|
i0.ɵɵelementEnd();
|
|
416
|
-
i0.ɵɵelementStart(28, "span",
|
|
423
|
+
i0.ɵɵelementStart(28, "span", 180);
|
|
417
424
|
i0.ɵɵtext(29);
|
|
418
425
|
i0.ɵɵelementEnd()();
|
|
419
|
-
i0.ɵɵconditionalCreate(30, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template, 6, 1, "div",
|
|
420
|
-
i0.ɵɵconditionalCreate(31, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template, 6, 1, "div",
|
|
421
|
-
i0.ɵɵelementStart(32, "div",
|
|
422
|
-
i0.ɵɵelement(33, "i",
|
|
423
|
-
i0.ɵɵelementStart(34, "span",
|
|
426
|
+
i0.ɵɵconditionalCreate(30, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_30_Template, 6, 1, "div", 176);
|
|
427
|
+
i0.ɵɵconditionalCreate(31, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Conditional_31_Template, 6, 1, "div", 176);
|
|
428
|
+
i0.ɵɵelementStart(32, "div", 176);
|
|
429
|
+
i0.ɵɵelement(33, "i", 182);
|
|
430
|
+
i0.ɵɵelementStart(34, "span", 179);
|
|
424
431
|
i0.ɵɵtext(35, "User:");
|
|
425
432
|
i0.ɵɵelementEnd();
|
|
426
|
-
i0.ɵɵelementStart(36, "span",
|
|
433
|
+
i0.ɵɵelementStart(36, "span", 180);
|
|
427
434
|
i0.ɵɵtext(37);
|
|
428
435
|
i0.ɵɵelementEnd()()()();
|
|
429
|
-
i0.ɵɵelementStart(38, "div",
|
|
436
|
+
i0.ɵɵelementStart(38, "div", 183)(39, "button", 184);
|
|
430
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 item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.openSessionRecord(item_r14.row.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
431
|
-
i0.ɵɵelement(40, "i",
|
|
438
|
+
i0.ɵɵelement(40, "i", 185);
|
|
432
439
|
i0.ɵɵelementEnd()()()();
|
|
433
440
|
} if (rf & 2) {
|
|
434
441
|
const item_r14 = ctx.$implicit;
|
|
@@ -461,8 +468,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
461
468
|
i0.ɵɵtextInterpolate(item_r14.row.User);
|
|
462
469
|
} }
|
|
463
470
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
464
|
-
i0.ɵɵelementStart(0, "div",
|
|
465
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template, 41, 18, "div",
|
|
471
|
+
i0.ɵɵelementStart(0, "div", 163);
|
|
472
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_For_2_Template, 41, 18, "div", 164, _forTrack0);
|
|
466
473
|
i0.ɵɵelementEnd();
|
|
467
474
|
} if (rf & 2) {
|
|
468
475
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -470,30 +477,30 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
470
477
|
i0.ɵɵrepeater(ctx_r1.agentSessions);
|
|
471
478
|
} }
|
|
472
479
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template, 1, 0, "mj-loading",
|
|
480
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_0_Template, 1, 0, "mj-loading", 161)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_1_Template, 1, 0, "mj-empty-state", 162)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_4_Conditional_2_Template, 3, 0, "div", 163);
|
|
474
481
|
} if (rf & 2) {
|
|
475
482
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
476
483
|
i0.ɵɵconditional(ctx_r1.loadingSessions ? 0 : ctx_r1.agentSessions.length === 0 ? 1 : 2);
|
|
477
484
|
} }
|
|
478
485
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
479
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
486
|
+
i0.ɵɵelement(0, "mj-loading", 187);
|
|
480
487
|
} }
|
|
481
488
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
482
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
489
|
+
i0.ɵɵelement(0, "mj-empty-state", 188);
|
|
483
490
|
} }
|
|
484
491
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
485
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
492
|
+
i0.ɵɵelement(0, "mj-empty-state", 193);
|
|
486
493
|
} if (rf & 2) {
|
|
487
494
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
488
495
|
i0.ɵɵproperty("Message", ctx_r1.ExecutionSearchEmptyMessage);
|
|
489
496
|
} }
|
|
490
497
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
491
|
-
i0.ɵɵelementStart(0, "div",
|
|
492
|
-
i0.ɵɵelement(1, "i",
|
|
493
|
-
i0.ɵɵelementStart(2, "span",
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
499
|
+
i0.ɵɵelement(1, "i", 201);
|
|
500
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
494
501
|
i0.ɵɵtext(3, "Config:");
|
|
495
502
|
i0.ɵɵelementEnd();
|
|
496
|
-
i0.ɵɵelementStart(4, "span",
|
|
503
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
497
504
|
i0.ɵɵtext(5);
|
|
498
505
|
i0.ɵɵelementEnd()();
|
|
499
506
|
} if (rf & 2) {
|
|
@@ -502,12 +509,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
502
509
|
i0.ɵɵtextInterpolate(execution_r17.Configuration);
|
|
503
510
|
} }
|
|
504
511
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
-
i0.ɵɵelementStart(0, "div",
|
|
506
|
-
i0.ɵɵelement(1, "i",
|
|
507
|
-
i0.ɵɵelementStart(2, "span",
|
|
512
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
513
|
+
i0.ɵɵelement(1, "i", 178);
|
|
514
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
508
515
|
i0.ɵɵtext(3, "Duration:");
|
|
509
516
|
i0.ɵɵelementEnd();
|
|
510
|
-
i0.ɵɵelementStart(4, "span",
|
|
517
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
511
518
|
i0.ɵɵtext(5);
|
|
512
519
|
i0.ɵɵelementEnd()();
|
|
513
520
|
} if (rf & 2) {
|
|
@@ -517,19 +524,19 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
517
524
|
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(execution_r17.StartedAt, execution_r17.CompletedAt));
|
|
518
525
|
} }
|
|
519
526
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
-
i0.ɵɵelementStart(0, "div",
|
|
521
|
-
i0.ɵɵelement(1, "i",
|
|
522
|
-
i0.ɵɵelementStart(2, "span",
|
|
527
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
528
|
+
i0.ɵɵelement(1, "i", 202);
|
|
529
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
523
530
|
i0.ɵɵtext(3, "Running:");
|
|
524
531
|
i0.ɵɵelementEnd()();
|
|
525
532
|
} }
|
|
526
533
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
527
|
-
i0.ɵɵelementStart(0, "div",
|
|
528
|
-
i0.ɵɵelement(1, "i",
|
|
529
|
-
i0.ɵɵelementStart(2, "span",
|
|
534
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
535
|
+
i0.ɵɵelement(1, "i", 203);
|
|
536
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
530
537
|
i0.ɵɵtext(3, "Tokens:");
|
|
531
538
|
i0.ɵɵelementEnd();
|
|
532
|
-
i0.ɵɵelementStart(4, "span",
|
|
539
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
533
540
|
i0.ɵɵtext(5);
|
|
534
541
|
i0.ɵɵelementEnd()();
|
|
535
542
|
} if (rf & 2) {
|
|
@@ -539,12 +546,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
539
546
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r17.TotalTokensUsedRollup || execution_r17.TotalTokensUsed));
|
|
540
547
|
} }
|
|
541
548
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
542
|
-
i0.ɵɵelementStart(0, "div",
|
|
543
|
-
i0.ɵɵelement(1, "i",
|
|
544
|
-
i0.ɵɵelementStart(2, "span",
|
|
549
|
+
i0.ɵɵelementStart(0, "div", 176);
|
|
550
|
+
i0.ɵɵelement(1, "i", 204);
|
|
551
|
+
i0.ɵɵelementStart(2, "span", 179);
|
|
545
552
|
i0.ɵɵtext(3, "Cost:");
|
|
546
553
|
i0.ɵɵelementEnd();
|
|
547
|
-
i0.ɵɵelementStart(4, "span",
|
|
554
|
+
i0.ɵɵelementStart(4, "span", 180);
|
|
548
555
|
i0.ɵɵtext(5);
|
|
549
556
|
i0.ɵɵelementEnd()();
|
|
550
557
|
} if (rf & 2) {
|
|
@@ -554,12 +561,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
554
561
|
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r17.TotalCostRollup || execution_r17.TotalCost));
|
|
555
562
|
} }
|
|
556
563
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
557
|
-
i0.ɵɵelementStart(0, "div",
|
|
558
|
-
i0.ɵɵelement(1, "i",
|
|
559
|
-
i0.ɵɵelementStart(2, "div",
|
|
564
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
565
|
+
i0.ɵɵelement(1, "i", 213);
|
|
566
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
560
567
|
i0.ɵɵtext(4, "Completed");
|
|
561
568
|
i0.ɵɵelementEnd();
|
|
562
|
-
i0.ɵɵelementStart(5, "span",
|
|
569
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
563
570
|
i0.ɵɵtext(6);
|
|
564
571
|
i0.ɵɵpipe(7, "date");
|
|
565
572
|
i0.ɵɵelementEnd()()();
|
|
@@ -569,12 +576,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
569
576
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, execution_r17.CompletedAt, "medium"));
|
|
570
577
|
} }
|
|
571
578
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
-
i0.ɵɵelementStart(0, "div",
|
|
573
|
-
i0.ɵɵelement(1, "i",
|
|
574
|
-
i0.ɵɵelementStart(2, "div",
|
|
579
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
580
|
+
i0.ɵɵelement(1, "i", 203);
|
|
581
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
575
582
|
i0.ɵɵtext(4, "Direct Tokens");
|
|
576
583
|
i0.ɵɵelementEnd();
|
|
577
|
-
i0.ɵɵelementStart(5, "span",
|
|
584
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
578
585
|
i0.ɵɵtext(6);
|
|
579
586
|
i0.ɵɵelementEnd()()();
|
|
580
587
|
} if (rf & 2) {
|
|
@@ -584,12 +591,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
584
591
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r17.TotalTokensUsed));
|
|
585
592
|
} }
|
|
586
593
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
587
|
-
i0.ɵɵelementStart(0, "div",
|
|
594
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
588
595
|
i0.ɵɵelement(1, "i", 30);
|
|
589
|
-
i0.ɵɵelementStart(2, "div",
|
|
596
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
590
597
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
591
598
|
i0.ɵɵelementEnd();
|
|
592
|
-
i0.ɵɵelementStart(5, "span",
|
|
599
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
593
600
|
i0.ɵɵtext(6);
|
|
594
601
|
i0.ɵɵelementEnd()()();
|
|
595
602
|
} if (rf & 2) {
|
|
@@ -599,12 +606,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
599
606
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r17.TotalTokensUsedRollup));
|
|
600
607
|
} }
|
|
601
608
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
602
|
-
i0.ɵɵelementStart(0, "div",
|
|
603
|
-
i0.ɵɵelement(1, "i",
|
|
604
|
-
i0.ɵɵelementStart(2, "div",
|
|
609
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
610
|
+
i0.ɵɵelement(1, "i", 204);
|
|
611
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
605
612
|
i0.ɵɵtext(4, "Direct Cost");
|
|
606
613
|
i0.ɵɵelementEnd();
|
|
607
|
-
i0.ɵɵelementStart(5, "span",
|
|
614
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
608
615
|
i0.ɵɵtext(6);
|
|
609
616
|
i0.ɵɵelementEnd()()();
|
|
610
617
|
} if (rf & 2) {
|
|
@@ -614,12 +621,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
614
621
|
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r17.TotalCost));
|
|
615
622
|
} }
|
|
616
623
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
617
|
-
i0.ɵɵelementStart(0, "div",
|
|
618
|
-
i0.ɵɵelement(1, "i",
|
|
619
|
-
i0.ɵɵelementStart(2, "div",
|
|
624
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
625
|
+
i0.ɵɵelement(1, "i", 214);
|
|
626
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
620
627
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
621
628
|
i0.ɵɵelementEnd();
|
|
622
|
-
i0.ɵɵelementStart(5, "span",
|
|
629
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
623
630
|
i0.ɵɵtext(6);
|
|
624
631
|
i0.ɵɵelementEnd()()();
|
|
625
632
|
} if (rf & 2) {
|
|
@@ -629,12 +636,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
629
636
|
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r17.TotalCostRollup));
|
|
630
637
|
} }
|
|
631
638
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
632
|
-
i0.ɵɵelementStart(0, "div",
|
|
633
|
-
i0.ɵɵelement(1, "i",
|
|
634
|
-
i0.ɵɵelementStart(2, "div",
|
|
639
|
+
i0.ɵɵelementStart(0, "div", 207);
|
|
640
|
+
i0.ɵɵelement(1, "i", 215);
|
|
641
|
+
i0.ɵɵelementStart(2, "div", 208)(3, "span", 209);
|
|
635
642
|
i0.ɵɵtext(4, "Conversation");
|
|
636
643
|
i0.ɵɵelementEnd();
|
|
637
|
-
i0.ɵɵelementStart(5, "span",
|
|
644
|
+
i0.ɵɵelementStart(5, "span", 210);
|
|
638
645
|
i0.ɵɵtext(6);
|
|
639
646
|
i0.ɵɵelementEnd()()();
|
|
640
647
|
} if (rf & 2) {
|
|
@@ -643,11 +650,11 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
643
650
|
i0.ɵɵtextInterpolate1("", execution_r17.ConversationID.substring(0, 8), "...");
|
|
644
651
|
} }
|
|
645
652
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
646
|
-
i0.ɵɵelementStart(0, "div",
|
|
647
|
-
i0.ɵɵelement(2, "i",
|
|
653
|
+
i0.ɵɵelementStart(0, "div", 211)(1, "h5");
|
|
654
|
+
i0.ɵɵelement(2, "i", 216);
|
|
648
655
|
i0.ɵɵtext(3, " Result");
|
|
649
656
|
i0.ɵɵelementEnd();
|
|
650
|
-
i0.ɵɵelement(4, "mj-code-editor",
|
|
657
|
+
i0.ɵɵelement(4, "mj-code-editor", 217);
|
|
651
658
|
i0.ɵɵelementEnd();
|
|
652
659
|
} if (rf & 2) {
|
|
653
660
|
const execution_r17 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -656,11 +663,11 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
656
663
|
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r17, false))("readonly", true)("lineWrapping", true);
|
|
657
664
|
} }
|
|
658
665
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
659
|
-
i0.ɵɵelementStart(0, "div",
|
|
660
|
-
i0.ɵɵelement(2, "i",
|
|
666
|
+
i0.ɵɵelementStart(0, "div", 212)(1, "h5");
|
|
667
|
+
i0.ɵɵelement(2, "i", 218);
|
|
661
668
|
i0.ɵɵtext(3, " Error");
|
|
662
669
|
i0.ɵɵelementEnd();
|
|
663
|
-
i0.ɵɵelementStart(4, "div",
|
|
670
|
+
i0.ɵɵelementStart(4, "div", 219);
|
|
664
671
|
i0.ɵɵtext(5);
|
|
665
672
|
i0.ɵɵelementEnd()();
|
|
666
673
|
} if (rf & 2) {
|
|
@@ -669,24 +676,24 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
669
676
|
i0.ɵɵtextInterpolate(execution_r17.ErrorMessage);
|
|
670
677
|
} }
|
|
671
678
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
672
|
-
i0.ɵɵelementStart(0, "div",
|
|
673
|
-
i0.ɵɵelement(4, "i",
|
|
674
|
-
i0.ɵɵelementStart(5, "div",
|
|
679
|
+
i0.ɵɵelementStart(0, "div", 200)(1, "div", 205)(2, "div", 206)(3, "div", 207);
|
|
680
|
+
i0.ɵɵelement(4, "i", 202);
|
|
681
|
+
i0.ɵɵelementStart(5, "div", 208)(6, "span", 209);
|
|
675
682
|
i0.ɵɵtext(7, "Started");
|
|
676
683
|
i0.ɵɵelementEnd();
|
|
677
|
-
i0.ɵɵelementStart(8, "span",
|
|
684
|
+
i0.ɵɵelementStart(8, "span", 210);
|
|
678
685
|
i0.ɵɵtext(9);
|
|
679
686
|
i0.ɵɵpipe(10, "date");
|
|
680
687
|
i0.ɵɵelementEnd()()();
|
|
681
|
-
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template, 8, 4, "div",
|
|
682
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template, 7, 1, "div",
|
|
683
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template, 7, 1, "div",
|
|
684
|
-
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template, 7, 1, "div",
|
|
685
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template, 7, 1, "div",
|
|
686
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template, 7, 1, "div",
|
|
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", 207);
|
|
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", 207);
|
|
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", 207);
|
|
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", 207);
|
|
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", 207);
|
|
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", 207);
|
|
687
694
|
i0.ɵɵelementEnd()();
|
|
688
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template, 5, 3, "div",
|
|
689
|
-
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template, 6, 1, "div",
|
|
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", 211);
|
|
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", 212);
|
|
690
697
|
i0.ɵɵelementEnd();
|
|
691
698
|
} if (rf & 2) {
|
|
692
699
|
const execution_r17 = i0.ɵɵnextContext().$implicit;
|
|
@@ -711,30 +718,30 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
711
718
|
} }
|
|
712
719
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
713
720
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
714
|
-
i0.ɵɵelementStart(0, "div",
|
|
721
|
+
i0.ɵɵelementStart(0, "div", 196)(1, "div", 197);
|
|
715
722
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template_div_click_1_listener() { const execution_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r17.ID)); });
|
|
716
|
-
i0.ɵɵelementStart(2, "div",
|
|
723
|
+
i0.ɵɵelementStart(2, "div", 167)(3, "div", 168)(4, "div", 169);
|
|
717
724
|
i0.ɵɵelement(5, "i");
|
|
718
725
|
i0.ɵɵelementEnd();
|
|
719
|
-
i0.ɵɵelementStart(6, "div",
|
|
720
|
-
i0.ɵɵelement(8, "i",
|
|
726
|
+
i0.ɵɵelementStart(6, "div", 170)(7, "div", 171);
|
|
727
|
+
i0.ɵɵelement(8, "i", 198);
|
|
721
728
|
i0.ɵɵtext(9);
|
|
722
729
|
i0.ɵɵelementEnd();
|
|
723
|
-
i0.ɵɵelementStart(10, "div",
|
|
730
|
+
i0.ɵɵelementStart(10, "div", 174);
|
|
724
731
|
i0.ɵɵtext(11);
|
|
725
732
|
i0.ɵɵpipe(12, "date");
|
|
726
733
|
i0.ɵɵelementEnd()()();
|
|
727
|
-
i0.ɵɵelementStart(13, "div",
|
|
728
|
-
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template, 6, 1, "div",
|
|
729
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template, 6, 1, "div",
|
|
730
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template, 6, 1, "div",
|
|
731
|
-
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template, 6, 1, "div",
|
|
734
|
+
i0.ɵɵelementStart(13, "div", 175);
|
|
735
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_14_Template, 6, 1, "div", 176);
|
|
736
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_15_Template, 6, 1, "div", 176)(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_16_Template, 4, 0, "div", 176);
|
|
737
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_17_Template, 6, 1, "div", 176);
|
|
738
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_18_Template, 6, 1, "div", 176);
|
|
732
739
|
i0.ɵɵelementEnd()();
|
|
733
|
-
i0.ɵɵelementStart(19, "div",
|
|
740
|
+
i0.ɵɵelementStart(19, "div", 183)(20, "button", 199);
|
|
734
741
|
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_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.openExecutionRecord(execution_r17.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
735
|
-
i0.ɵɵelement(21, "i",
|
|
742
|
+
i0.ɵɵelement(21, "i", 185);
|
|
736
743
|
i0.ɵɵelementEnd()()();
|
|
737
|
-
i0.ɵɵconditionalCreate(22, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template, 19, 12, "div",
|
|
744
|
+
i0.ɵɵconditionalCreate(22, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Conditional_22_Template, 19, 12, "div", 200);
|
|
738
745
|
i0.ɵɵelementEnd();
|
|
739
746
|
} if (rf & 2) {
|
|
740
747
|
const execution_r17 = ctx.$implicit;
|
|
@@ -762,12 +769,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
762
769
|
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r17.ID] ? 22 : -1);
|
|
763
770
|
} }
|
|
764
771
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
765
|
-
i0.ɵɵelement(0, "i",
|
|
772
|
+
i0.ɵɵelement(0, "i", 156);
|
|
766
773
|
i0.ɵɵtext(1, " Loading... ");
|
|
767
774
|
} }
|
|
768
775
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
769
776
|
i0.ɵɵtext(0);
|
|
770
|
-
i0.ɵɵelementStart(1, "span",
|
|
777
|
+
i0.ɵɵelementStart(1, "span", 226);
|
|
771
778
|
i0.ɵɵtext(2);
|
|
772
779
|
i0.ɵɵelementEnd();
|
|
773
780
|
} if (rf & 2) {
|
|
@@ -778,22 +785,22 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
778
785
|
} }
|
|
779
786
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
780
787
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
781
|
-
i0.ɵɵelementStart(0, "div",
|
|
788
|
+
i0.ɵɵelementStart(0, "div", 195)(1, "button", 220);
|
|
782
789
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.goToPreviousPage()); });
|
|
783
|
-
i0.ɵɵelement(2, "i",
|
|
790
|
+
i0.ɵɵelement(2, "i", 221);
|
|
784
791
|
i0.ɵɵtext(3, " Previous ");
|
|
785
792
|
i0.ɵɵelementEnd();
|
|
786
|
-
i0.ɵɵelementStart(4, "div",
|
|
793
|
+
i0.ɵɵelementStart(4, "div", 222);
|
|
787
794
|
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);
|
|
788
795
|
i0.ɵɵelementEnd();
|
|
789
|
-
i0.ɵɵelementStart(7, "button",
|
|
796
|
+
i0.ɵɵelementStart(7, "button", 220);
|
|
790
797
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.goToNextPage()); });
|
|
791
798
|
i0.ɵɵtext(8, " Next ");
|
|
792
|
-
i0.ɵɵelement(9, "i",
|
|
799
|
+
i0.ɵɵelement(9, "i", 223);
|
|
793
800
|
i0.ɵɵelementEnd();
|
|
794
|
-
i0.ɵɵelementStart(10, "button",
|
|
801
|
+
i0.ɵɵelementStart(10, "button", 224);
|
|
795
802
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
796
|
-
i0.ɵɵelement(11, "i",
|
|
803
|
+
i0.ɵɵelement(11, "i", 225);
|
|
797
804
|
i0.ɵɵtext(12, " View All in Grid ");
|
|
798
805
|
i0.ɵɵelementEnd()();
|
|
799
806
|
} if (rf & 2) {
|
|
@@ -807,16 +814,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
807
814
|
} }
|
|
808
815
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
809
816
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
810
|
-
i0.ɵɵelementStart(0, "div",
|
|
811
|
-
i0.ɵɵelement(2, "i",
|
|
812
|
-
i0.ɵɵelementStart(3, "input",
|
|
817
|
+
i0.ɵɵelementStart(0, "div", 189)(1, "div", 190);
|
|
818
|
+
i0.ɵɵelement(2, "i", 191);
|
|
819
|
+
i0.ɵɵelementStart(3, "input", 192);
|
|
813
820
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); i0.ɵɵtwoWayBindingSet(ctx_r1.executionSearchText, $event) || (ctx_r1.executionSearchText = $event); return i0.ɵɵresetView($event); });
|
|
814
821
|
i0.ɵɵlistener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onExecutionSearchChange()); });
|
|
815
822
|
i0.ɵɵelementEnd()()();
|
|
816
|
-
i0.ɵɵelementStart(4, "div",
|
|
817
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template, 1, 1, "mj-empty-state",
|
|
818
|
-
i0.ɵɵrepeaterCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template, 23, 18, "div",
|
|
819
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template, 13, 3, "div",
|
|
823
|
+
i0.ɵɵelementStart(4, "div", 163);
|
|
824
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_5_Template, 1, 1, "mj-empty-state", 193);
|
|
825
|
+
i0.ɵɵrepeaterCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_For_7_Template, 23, 18, "div", 194, _forTrack1);
|
|
826
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Conditional_8_Template, 13, 3, "div", 195);
|
|
820
827
|
i0.ɵɵelementEnd();
|
|
821
828
|
} if (rf & 2) {
|
|
822
829
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -831,16 +838,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
831
838
|
i0.ɵɵconditional(ctx_r1.totalPages > 1 ? 8 : -1);
|
|
832
839
|
} }
|
|
833
840
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
834
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template, 1, 0, "mj-loading",
|
|
841
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_0_Template, 1, 0, "mj-loading", 187)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_1_Template, 1, 0, "mj-empty-state", 188)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_5_Conditional_2_Template, 9, 5);
|
|
835
842
|
} if (rf & 2) {
|
|
836
843
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
837
844
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 0 : ctx_r1.executionHistoryCount === 0 ? 1 : 2);
|
|
838
845
|
} }
|
|
839
846
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
840
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
841
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template, 4, 1, "ng-template",
|
|
842
|
-
i0.ɵɵelementStart(2, "div",
|
|
843
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template, 9, 6, "div",
|
|
847
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 49);
|
|
848
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
849
|
+
i0.ɵɵelementStart(2, "div", 153);
|
|
850
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Conditional_3_Template, 9, 6, "div", 154);
|
|
844
851
|
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);
|
|
845
852
|
i0.ɵɵelementEnd()();
|
|
846
853
|
} if (rf & 2) {
|
|
@@ -853,7 +860,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
853
860
|
} }
|
|
854
861
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
855
862
|
i0.ɵɵelementStart(0, "span");
|
|
856
|
-
i0.ɵɵelement(1, "i",
|
|
863
|
+
i0.ɵɵelement(1, "i", 156);
|
|
857
864
|
i0.ɵɵelementEnd();
|
|
858
865
|
} }
|
|
859
866
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -866,7 +873,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
866
873
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.actionCount, ")");
|
|
867
874
|
} }
|
|
868
875
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
869
|
-
i0.ɵɵelement(0, "i",
|
|
876
|
+
i0.ɵɵelement(0, "i", 126);
|
|
870
877
|
i0.ɵɵtext(1, " Actions ");
|
|
871
878
|
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");
|
|
872
879
|
} if (rf & 2) {
|
|
@@ -875,23 +882,23 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
875
882
|
i0.ɵɵconditional(ctx_r1.loadingStates.actions ? 2 : ctx_r1.actionCount > 0 ? 3 : -1);
|
|
876
883
|
} }
|
|
877
884
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
878
|
-
i0.ɵɵelementStart(0, "div",
|
|
879
|
-
i0.ɵɵelement(1, "i",
|
|
885
|
+
i0.ɵɵelementStart(0, "div", 227);
|
|
886
|
+
i0.ɵɵelement(1, "i", 156);
|
|
880
887
|
i0.ɵɵelementStart(2, "p");
|
|
881
888
|
i0.ɵɵtext(3, "Loading actions...");
|
|
882
889
|
i0.ɵɵelementEnd()();
|
|
883
890
|
} }
|
|
884
891
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
885
892
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
886
|
-
i0.ɵɵelementStart(0, "button",
|
|
893
|
+
i0.ɵɵelementStart(0, "button", 232);
|
|
887
894
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
888
|
-
i0.ɵɵelement(1, "i",
|
|
895
|
+
i0.ɵɵelement(1, "i", 233);
|
|
889
896
|
i0.ɵɵtext(2, " Add Action ");
|
|
890
897
|
i0.ɵɵelementEnd();
|
|
891
898
|
} }
|
|
892
899
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
893
900
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
894
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
901
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 234);
|
|
895
902
|
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
896
903
|
i0.ɵɵelementEnd();
|
|
897
904
|
} if (rf & 2) {
|
|
@@ -899,7 +906,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
899
906
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? "Configure First Action" : "");
|
|
900
907
|
} }
|
|
901
908
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
902
|
-
i0.ɵɵelementStart(0, "div",
|
|
909
|
+
i0.ɵɵelementStart(0, "div", 241);
|
|
903
910
|
i0.ɵɵtext(1);
|
|
904
911
|
i0.ɵɵelementEnd();
|
|
905
912
|
} if (rf & 2) {
|
|
@@ -908,7 +915,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
908
915
|
i0.ɵɵtextInterpolate(action_r22.Description);
|
|
909
916
|
} }
|
|
910
917
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
911
|
-
i0.ɵɵelementStart(0, "span",
|
|
918
|
+
i0.ɵɵelementStart(0, "span", 243);
|
|
912
919
|
i0.ɵɵtext(1);
|
|
913
920
|
i0.ɵɵelementEnd();
|
|
914
921
|
} if (rf & 2) {
|
|
@@ -918,31 +925,31 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
918
925
|
} }
|
|
919
926
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
920
927
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
921
|
-
i0.ɵɵelementStart(0, "button",
|
|
928
|
+
i0.ɵɵelementStart(0, "button", 247);
|
|
922
929
|
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(_r23); const action_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.removeAction(action_r22, $event)); });
|
|
923
|
-
i0.ɵɵelement(1, "i",
|
|
930
|
+
i0.ɵɵelement(1, "i", 248);
|
|
924
931
|
i0.ɵɵelementEnd();
|
|
925
932
|
} }
|
|
926
933
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
927
934
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
928
|
-
i0.ɵɵelementStart(0, "div",
|
|
935
|
+
i0.ɵɵelementStart(0, "div", 237);
|
|
929
936
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template_div_click_0_listener() { const action_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: Actions", action_r22.ID)); });
|
|
930
|
-
i0.ɵɵelementStart(1, "div",
|
|
937
|
+
i0.ɵɵelementStart(1, "div", 238);
|
|
931
938
|
i0.ɵɵelement(2, "i");
|
|
932
939
|
i0.ɵɵelementEnd();
|
|
933
|
-
i0.ɵɵelementStart(3, "div",
|
|
940
|
+
i0.ɵɵelementStart(3, "div", 239)(4, "div", 240);
|
|
934
941
|
i0.ɵɵtext(5);
|
|
935
942
|
i0.ɵɵelementEnd();
|
|
936
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div",
|
|
937
|
-
i0.ɵɵelementStart(7, "div",
|
|
938
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span",
|
|
939
|
-
i0.ɵɵelementStart(9, "span",
|
|
943
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div", 241);
|
|
944
|
+
i0.ɵɵelementStart(7, "div", 242);
|
|
945
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span", 243);
|
|
946
|
+
i0.ɵɵelementStart(9, "span", 244);
|
|
940
947
|
i0.ɵɵelement(10, "i", 35);
|
|
941
948
|
i0.ɵɵtext(11);
|
|
942
949
|
i0.ɵɵelementEnd()()();
|
|
943
|
-
i0.ɵɵelementStart(12, "div",
|
|
944
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button",
|
|
945
|
-
i0.ɵɵelement(14, "i",
|
|
950
|
+
i0.ɵɵelementStart(12, "div", 245);
|
|
951
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button", 246);
|
|
952
|
+
i0.ɵɵelement(14, "i", 225);
|
|
946
953
|
i0.ɵɵelementEnd()();
|
|
947
954
|
} if (rf & 2) {
|
|
948
955
|
const action_r22 = ctx.$implicit;
|
|
@@ -966,7 +973,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
966
973
|
} }
|
|
967
974
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
968
975
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
969
|
-
i0.ɵɵelementStart(0, "div",
|
|
976
|
+
i0.ɵɵelementStart(0, "div", 249);
|
|
970
977
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Actions", "")); });
|
|
971
978
|
i0.ɵɵelementStart(1, "span");
|
|
972
979
|
i0.ɵɵtext(2);
|
|
@@ -977,9 +984,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
977
984
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
978
985
|
} }
|
|
979
986
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
980
|
-
i0.ɵɵelementStart(0, "div",
|
|
981
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div",
|
|
982
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div",
|
|
987
|
+
i0.ɵɵelementStart(0, "div", 231);
|
|
988
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div", 235, _forTrack1);
|
|
989
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div", 236);
|
|
983
990
|
i0.ɵɵelementEnd();
|
|
984
991
|
} if (rf & 2) {
|
|
985
992
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -989,10 +996,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
989
996
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
990
997
|
} }
|
|
991
998
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
992
|
-
i0.ɵɵelementStart(0, "div",
|
|
993
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template, 3, 0, "button",
|
|
999
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "div", 228);
|
|
1000
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_2_Template, 3, 0, "button", 229);
|
|
994
1001
|
i0.ɵɵelementEnd()();
|
|
995
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template, 1, 1, "mj-empty-state",
|
|
1002
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_3_Template, 1, 1, "mj-empty-state", 230)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Conditional_4_Template, 4, 1, "div", 231);
|
|
996
1003
|
} if (rf & 2) {
|
|
997
1004
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
998
1005
|
i0.ɵɵadvance(2);
|
|
@@ -1001,10 +1008,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1001
1008
|
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 3 : 4);
|
|
1002
1009
|
} }
|
|
1003
1010
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1004
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1005
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template, 4, 1, "ng-template",
|
|
1006
|
-
i0.ɵɵelementStart(2, "div",
|
|
1007
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template, 4, 0, "div",
|
|
1011
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 50);
|
|
1012
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
1013
|
+
i0.ɵɵelementStart(2, "div", 58);
|
|
1014
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_3_Template, 4, 0, "div", 227)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Conditional_4_Template, 5, 2);
|
|
1008
1015
|
i0.ɵɵelementEnd()();
|
|
1009
1016
|
} if (rf & 2) {
|
|
1010
1017
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1014,7 +1021,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1014
1021
|
} }
|
|
1015
1022
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1016
1023
|
i0.ɵɵelementStart(0, "span");
|
|
1017
|
-
i0.ɵɵelement(1, "i",
|
|
1024
|
+
i0.ɵɵelement(1, "i", 156);
|
|
1018
1025
|
i0.ɵɵelementEnd();
|
|
1019
1026
|
} }
|
|
1020
1027
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1037,28 +1044,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1037
1044
|
} }
|
|
1038
1045
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1039
1046
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
1040
|
-
i0.ɵɵelementStart(0, "button",
|
|
1047
|
+
i0.ɵɵelementStart(0, "button", 257);
|
|
1041
1048
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createChildSubAgent()); });
|
|
1042
|
-
i0.ɵɵelement(1, "i",
|
|
1049
|
+
i0.ɵɵelement(1, "i", 254);
|
|
1043
1050
|
i0.ɵɵtext(2, " Create Child ");
|
|
1044
1051
|
i0.ɵɵelementEnd();
|
|
1045
|
-
i0.ɵɵelementStart(3, "button",
|
|
1052
|
+
i0.ɵɵelementStart(3, "button", 258);
|
|
1046
1053
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.linkRelatedSubAgent()); });
|
|
1047
|
-
i0.ɵɵelement(4, "i",
|
|
1054
|
+
i0.ɵɵelement(4, "i", 255);
|
|
1048
1055
|
i0.ɵɵtext(5, " Link Related ");
|
|
1049
1056
|
i0.ɵɵelementEnd();
|
|
1050
1057
|
} }
|
|
1051
1058
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1052
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1053
|
-
i0.ɵɵelement(3, "i",
|
|
1059
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 256)(1, "div", 259)(2, "div", 260);
|
|
1060
|
+
i0.ɵɵelement(3, "i", 261);
|
|
1054
1061
|
i0.ɵɵelementStart(4, "strong");
|
|
1055
1062
|
i0.ɵɵtext(5, "Child Sub-Agents");
|
|
1056
1063
|
i0.ɵɵelementEnd();
|
|
1057
1064
|
i0.ɵɵelementStart(6, "p");
|
|
1058
1065
|
i0.ɵɵtext(7, "Share payload structure, dedicated to parent");
|
|
1059
1066
|
i0.ɵɵelementEnd()();
|
|
1060
|
-
i0.ɵɵelementStart(8, "div",
|
|
1061
|
-
i0.ɵɵelement(9, "i",
|
|
1067
|
+
i0.ɵɵelementStart(8, "div", 260);
|
|
1068
|
+
i0.ɵɵelement(9, "i", 262);
|
|
1062
1069
|
i0.ɵɵelementStart(10, "strong");
|
|
1063
1070
|
i0.ɵɵtext(11, "Related Sub-Agents");
|
|
1064
1071
|
i0.ɵɵelementEnd();
|
|
@@ -1067,7 +1074,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1067
1074
|
i0.ɵɵelementEnd()()()();
|
|
1068
1075
|
} }
|
|
1069
1076
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1070
|
-
i0.ɵɵelement(0, "img",
|
|
1077
|
+
i0.ɵɵelement(0, "img", 266);
|
|
1071
1078
|
} if (rf & 2) {
|
|
1072
1079
|
const item_r28 = i0.ɵɵnextContext().$implicit;
|
|
1073
1080
|
i0.ɵɵproperty("src", item_r28.agent.LogoURL, i0.ɵɵsanitizeUrl)("alt", item_r28.agent.Name + " logo");
|
|
@@ -1080,7 +1087,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1080
1087
|
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(item_r28.agent));
|
|
1081
1088
|
} }
|
|
1082
1089
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1083
|
-
i0.ɵɵelementStart(0, "div",
|
|
1090
|
+
i0.ɵɵelementStart(0, "div", 241);
|
|
1084
1091
|
i0.ɵɵtext(1);
|
|
1085
1092
|
i0.ɵɵelementEnd();
|
|
1086
1093
|
} if (rf & 2) {
|
|
@@ -1089,7 +1096,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1089
1096
|
i0.ɵɵtextInterpolate(item_r28.agent.Description);
|
|
1090
1097
|
} }
|
|
1091
1098
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
1092
|
-
i0.ɵɵelementStart(0, "span",
|
|
1099
|
+
i0.ɵɵelementStart(0, "span", 244);
|
|
1093
1100
|
i0.ɵɵtext(1);
|
|
1094
1101
|
i0.ɵɵelementEnd();
|
|
1095
1102
|
} if (rf & 2) {
|
|
@@ -1100,7 +1107,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1100
1107
|
i0.ɵɵtextInterpolate1(" ", item_r28.agent.Status, " ");
|
|
1101
1108
|
} }
|
|
1102
1109
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1103
|
-
i0.ɵɵelementStart(0, "span",
|
|
1110
|
+
i0.ɵɵelementStart(0, "span", 243);
|
|
1104
1111
|
i0.ɵɵtext(1);
|
|
1105
1112
|
i0.ɵɵelementEnd();
|
|
1106
1113
|
} if (rf & 2) {
|
|
@@ -1110,21 +1117,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1110
1117
|
} }
|
|
1111
1118
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1112
1119
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1113
|
-
i0.ɵɵelementStart(0, "button",
|
|
1120
|
+
i0.ɵɵelementStart(0, "button", 273);
|
|
1114
1121
|
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(_r29); const item_r28 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureOutputMapping(item_r28, $event)); });
|
|
1115
|
-
i0.ɵɵelement(1, "i",
|
|
1122
|
+
i0.ɵɵelement(1, "i", 274);
|
|
1116
1123
|
i0.ɵɵelementEnd();
|
|
1117
1124
|
} }
|
|
1118
1125
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1119
1126
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
1120
|
-
i0.ɵɵelementStart(0, "button",
|
|
1127
|
+
i0.ɵɵelementStart(0, "button", 275);
|
|
1121
1128
|
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(_r30); const item_r28 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(item_r28.agent, $event)); });
|
|
1122
|
-
i0.ɵɵelement(1, "i",
|
|
1129
|
+
i0.ɵɵelement(1, "i", 201);
|
|
1123
1130
|
i0.ɵɵelementEnd();
|
|
1124
1131
|
} }
|
|
1125
1132
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1126
1133
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1127
|
-
i0.ɵɵelementStart(0, "button",
|
|
1134
|
+
i0.ɵɵelementStart(0, "button", 276);
|
|
1128
1135
|
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(_r31); const item_r28 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(item_r28.type === "child" ? ctx_r1.removeChildSubAgent(item_r28, $event) : ctx_r1.unlinkRelatedSubAgent(item_r28, $event)); });
|
|
1129
1136
|
i0.ɵɵelement(1, "i");
|
|
1130
1137
|
i0.ɵɵelementEnd();
|
|
@@ -1135,9 +1142,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1135
1142
|
i0.ɵɵclassMap(item_r28.type === "child" ? "fa-solid fa-trash" : "fa-solid fa-unlink");
|
|
1136
1143
|
} }
|
|
1137
1144
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1138
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button",
|
|
1139
|
-
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button",
|
|
1140
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button",
|
|
1145
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button", 270);
|
|
1146
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button", 271);
|
|
1147
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button", 272);
|
|
1141
1148
|
} if (rf & 2) {
|
|
1142
1149
|
const item_r28 = i0.ɵɵnextContext().$implicit;
|
|
1143
1150
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -1149,29 +1156,29 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1149
1156
|
} }
|
|
1150
1157
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1151
1158
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
1152
|
-
i0.ɵɵelementStart(0, "div",
|
|
1159
|
+
i0.ɵɵelementStart(0, "div", 264);
|
|
1153
1160
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template_div_click_0_listener() { const item_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", item_r28.agent.ID)); });
|
|
1154
|
-
i0.ɵɵelementStart(1, "div",
|
|
1161
|
+
i0.ɵɵelementStart(1, "div", 265);
|
|
1155
1162
|
i0.ɵɵelement(2, "i");
|
|
1156
1163
|
i0.ɵɵtext(3);
|
|
1157
1164
|
i0.ɵɵelementEnd();
|
|
1158
|
-
i0.ɵɵelementStart(4, "div",
|
|
1159
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img",
|
|
1165
|
+
i0.ɵɵelementStart(4, "div", 238);
|
|
1166
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img", 266)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_6_Template, 1, 2, "i", 15);
|
|
1160
1167
|
i0.ɵɵelementEnd();
|
|
1161
|
-
i0.ɵɵelementStart(7, "div",
|
|
1168
|
+
i0.ɵɵelementStart(7, "div", 239)(8, "div", 240);
|
|
1162
1169
|
i0.ɵɵtext(9);
|
|
1163
1170
|
i0.ɵɵelementEnd();
|
|
1164
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div",
|
|
1165
|
-
i0.ɵɵelementStart(11, "div",
|
|
1166
|
-
i0.ɵɵelement(13, "i",
|
|
1171
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div", 241);
|
|
1172
|
+
i0.ɵɵelementStart(11, "div", 242)(12, "span", 267);
|
|
1173
|
+
i0.ɵɵelement(13, "i", 268);
|
|
1167
1174
|
i0.ɵɵtext(14);
|
|
1168
1175
|
i0.ɵɵelementEnd();
|
|
1169
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span",
|
|
1170
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span",
|
|
1176
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span", 269);
|
|
1177
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span", 243);
|
|
1171
1178
|
i0.ɵɵelementEnd()();
|
|
1172
|
-
i0.ɵɵelementStart(17, "div",
|
|
1179
|
+
i0.ɵɵelementStart(17, "div", 245);
|
|
1173
1180
|
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Conditional_18_Template, 3, 3);
|
|
1174
|
-
i0.ɵɵelement(19, "i",
|
|
1181
|
+
i0.ɵɵelement(19, "i", 225);
|
|
1175
1182
|
i0.ɵɵelementEnd()();
|
|
1176
1183
|
} if (rf & 2) {
|
|
1177
1184
|
const item_r28 = ctx.$implicit;
|
|
@@ -1199,8 +1206,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1199
1206
|
i0.ɵɵconditional(ctx_r1.EditMode ? 18 : -1);
|
|
1200
1207
|
} }
|
|
1201
1208
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1202
|
-
i0.ɵɵelementStart(0, "div",
|
|
1203
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template, 20, 16, "div",
|
|
1209
|
+
i0.ɵɵelementStart(0, "div", 231);
|
|
1210
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_For_2_Template, 20, 16, "div", 263, _forTrack2);
|
|
1204
1211
|
i0.ɵɵelementEnd();
|
|
1205
1212
|
} if (rf & 2) {
|
|
1206
1213
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1209,27 +1216,27 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1209
1216
|
} }
|
|
1210
1217
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1211
1218
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
1212
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1213
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Template, 4, 1, "ng-template",
|
|
1214
|
-
i0.ɵɵelementStart(2, "div",
|
|
1219
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 51);
|
|
1220
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
1221
|
+
i0.ɵɵelementStart(2, "div", 58)(3, "div", 250)(4, "div", 251)(5, "div", 252)(6, "button", 253);
|
|
1215
1222
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("all")); });
|
|
1216
|
-
i0.ɵɵelement(7, "i",
|
|
1223
|
+
i0.ɵɵelement(7, "i", 131);
|
|
1217
1224
|
i0.ɵɵtext(8);
|
|
1218
1225
|
i0.ɵɵelementEnd();
|
|
1219
|
-
i0.ɵɵelementStart(9, "button",
|
|
1226
|
+
i0.ɵɵelementStart(9, "button", 253);
|
|
1220
1227
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("child")); });
|
|
1221
|
-
i0.ɵɵelement(10, "i",
|
|
1228
|
+
i0.ɵɵelement(10, "i", 254);
|
|
1222
1229
|
i0.ɵɵtext(11);
|
|
1223
1230
|
i0.ɵɵelementEnd();
|
|
1224
|
-
i0.ɵɵelementStart(12, "button",
|
|
1231
|
+
i0.ɵɵelementStart(12, "button", 253);
|
|
1225
1232
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("related")); });
|
|
1226
|
-
i0.ɵɵelement(13, "i",
|
|
1233
|
+
i0.ɵɵelement(13, "i", 255);
|
|
1227
1234
|
i0.ɵɵtext(14);
|
|
1228
1235
|
i0.ɵɵelementEnd()()();
|
|
1229
|
-
i0.ɵɵelementStart(15, "div",
|
|
1236
|
+
i0.ɵɵelementStart(15, "div", 228);
|
|
1230
1237
|
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_16_Template, 6, 0);
|
|
1231
1238
|
i0.ɵɵelementEnd()();
|
|
1232
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template, 14, 0, "mj-empty-state",
|
|
1239
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_17_Template, 14, 0, "mj-empty-state", 256)(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Conditional_18_Template, 3, 0, "div", 231);
|
|
1233
1240
|
i0.ɵɵelementEnd()();
|
|
1234
1241
|
} if (rf & 2) {
|
|
1235
1242
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1253,7 +1260,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1253
1260
|
} }
|
|
1254
1261
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1255
1262
|
i0.ɵɵelementStart(0, "span");
|
|
1256
|
-
i0.ɵɵelement(1, "i",
|
|
1263
|
+
i0.ɵɵelement(1, "i", 156);
|
|
1257
1264
|
i0.ɵɵelementEnd();
|
|
1258
1265
|
} }
|
|
1259
1266
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1266,7 +1273,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1266
1273
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.promptCount, ")");
|
|
1267
1274
|
} }
|
|
1268
1275
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1269
|
-
i0.ɵɵelement(0, "i",
|
|
1276
|
+
i0.ɵɵelement(0, "i", 215);
|
|
1270
1277
|
i0.ɵɵtext(1, " Prompts ");
|
|
1271
1278
|
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");
|
|
1272
1279
|
} if (rf & 2) {
|
|
@@ -1276,7 +1283,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1276
1283
|
} }
|
|
1277
1284
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1278
1285
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
1279
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1286
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 284);
|
|
1280
1287
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
1281
1288
|
i0.ɵɵelementEnd();
|
|
1282
1289
|
} if (rf & 2) {
|
|
@@ -1285,7 +1292,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1285
1292
|
i0.ɵɵproperty("Data", ctx_r1.modelSelectionModes)("ValuePrimitive", true);
|
|
1286
1293
|
} }
|
|
1287
1294
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1288
|
-
i0.ɵɵelementStart(0, "span",
|
|
1295
|
+
i0.ɵɵelementStart(0, "span", 282);
|
|
1289
1296
|
i0.ɵɵtext(1);
|
|
1290
1297
|
i0.ɵɵelementEnd();
|
|
1291
1298
|
} if (rf & 2) {
|
|
@@ -1295,15 +1302,15 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1295
1302
|
} }
|
|
1296
1303
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1297
1304
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
1298
|
-
i0.ɵɵelementStart(0, "button",
|
|
1305
|
+
i0.ɵɵelementStart(0, "button", 232);
|
|
1299
1306
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1300
|
-
i0.ɵɵelement(1, "i",
|
|
1307
|
+
i0.ɵɵelement(1, "i", 233);
|
|
1301
1308
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
1302
1309
|
i0.ɵɵelementEnd();
|
|
1303
1310
|
} }
|
|
1304
1311
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1305
1312
|
const _r34 = i0.ɵɵgetCurrentView();
|
|
1306
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1313
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 285);
|
|
1307
1314
|
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1308
1315
|
i0.ɵɵelementEnd();
|
|
1309
1316
|
} if (rf & 2) {
|
|
@@ -1311,7 +1318,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1311
1318
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? "Create First Prompt" : "");
|
|
1312
1319
|
} }
|
|
1313
1320
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1314
|
-
i0.ɵɵelementStart(0, "div",
|
|
1321
|
+
i0.ɵɵelementStart(0, "div", 241);
|
|
1315
1322
|
i0.ɵɵtext(1);
|
|
1316
1323
|
i0.ɵɵelementEnd();
|
|
1317
1324
|
} if (rf & 2) {
|
|
@@ -1320,7 +1327,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1320
1327
|
i0.ɵɵtextInterpolate2("", prompt_r36.TemplateText.substring(0, 120), "", prompt_r36.TemplateText.length > 120 ? "..." : "");
|
|
1321
1328
|
} }
|
|
1322
1329
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1323
|
-
i0.ɵɵelementStart(0, "span",
|
|
1330
|
+
i0.ɵɵelementStart(0, "span", 243);
|
|
1324
1331
|
i0.ɵɵtext(1);
|
|
1325
1332
|
i0.ɵɵelementEnd();
|
|
1326
1333
|
} if (rf & 2) {
|
|
@@ -1330,36 +1337,36 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1330
1337
|
} }
|
|
1331
1338
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1332
1339
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
1333
|
-
i0.ɵɵelementStart(0, "button",
|
|
1340
|
+
i0.ɵɵelementStart(0, "button", 275);
|
|
1334
1341
|
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(_r37); const prompt_r36 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r36, $event)); });
|
|
1335
|
-
i0.ɵɵelement(1, "i",
|
|
1342
|
+
i0.ɵɵelement(1, "i", 201);
|
|
1336
1343
|
i0.ɵɵelementEnd();
|
|
1337
1344
|
} }
|
|
1338
1345
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1339
1346
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1340
|
-
i0.ɵɵelementStart(0, "button",
|
|
1347
|
+
i0.ɵɵelementStart(0, "button", 290);
|
|
1341
1348
|
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(_r38); const prompt_r36 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r36, $event)); });
|
|
1342
|
-
i0.ɵɵelement(1, "i",
|
|
1349
|
+
i0.ɵɵelement(1, "i", 248);
|
|
1343
1350
|
i0.ɵɵelementEnd();
|
|
1344
1351
|
} }
|
|
1345
1352
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1346
1353
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
1347
|
-
i0.ɵɵelementStart(0, "div",
|
|
1354
|
+
i0.ɵɵelementStart(0, "div", 287);
|
|
1348
1355
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template_div_click_0_listener() { const prompt_r36 = i0.ɵɵrestoreView(_r35).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", prompt_r36.ID)); });
|
|
1349
|
-
i0.ɵɵelementStart(1, "div",
|
|
1350
|
-
i0.ɵɵelement(2, "i",
|
|
1356
|
+
i0.ɵɵelementStart(1, "div", 238);
|
|
1357
|
+
i0.ɵɵelement(2, "i", 288);
|
|
1351
1358
|
i0.ɵɵelementEnd();
|
|
1352
|
-
i0.ɵɵelementStart(3, "div",
|
|
1359
|
+
i0.ɵɵelementStart(3, "div", 239)(4, "div", 240);
|
|
1353
1360
|
i0.ɵɵtext(5);
|
|
1354
1361
|
i0.ɵɵelementEnd();
|
|
1355
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1356
|
-
i0.ɵɵelementStart(7, "div",
|
|
1357
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1362
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div", 241);
|
|
1363
|
+
i0.ɵɵelementStart(7, "div", 242);
|
|
1364
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span", 243);
|
|
1358
1365
|
i0.ɵɵelementEnd()();
|
|
1359
|
-
i0.ɵɵelementStart(9, "div",
|
|
1360
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button",
|
|
1361
|
-
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button",
|
|
1362
|
-
i0.ɵɵelement(12, "i",
|
|
1366
|
+
i0.ɵɵelementStart(9, "div", 245);
|
|
1367
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button", 271);
|
|
1368
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button", 289);
|
|
1369
|
+
i0.ɵɵelement(12, "i", 225);
|
|
1363
1370
|
i0.ɵɵelementEnd()();
|
|
1364
1371
|
} if (rf & 2) {
|
|
1365
1372
|
const prompt_r36 = ctx.$implicit;
|
|
@@ -1377,7 +1384,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1377
1384
|
} }
|
|
1378
1385
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1379
1386
|
const _r39 = i0.ɵɵgetCurrentView();
|
|
1380
|
-
i0.ɵɵelementStart(0, "div",
|
|
1387
|
+
i0.ɵɵelementStart(0, "div", 249);
|
|
1381
1388
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", "")); });
|
|
1382
1389
|
i0.ɵɵelementStart(1, "span");
|
|
1383
1390
|
i0.ɵɵtext(2);
|
|
@@ -1388,9 +1395,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1388
1395
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
1389
1396
|
} }
|
|
1390
1397
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1391
|
-
i0.ɵɵelementStart(0, "div",
|
|
1392
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template, 13, 5, "div",
|
|
1393
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template, 3, 1, "div",
|
|
1398
|
+
i0.ɵɵelementStart(0, "div", 231);
|
|
1399
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_For_2_Template, 13, 5, "div", 286, _forTrack1);
|
|
1400
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Conditional_3_Template, 3, 1, "div", 236);
|
|
1394
1401
|
i0.ɵɵelementEnd();
|
|
1395
1402
|
} if (rf & 2) {
|
|
1396
1403
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1400,18 +1407,18 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1400
1407
|
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
1401
1408
|
} }
|
|
1402
1409
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1403
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1404
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template, 4, 1, "ng-template",
|
|
1405
|
-
i0.ɵɵelementStart(2, "div",
|
|
1406
|
-
i0.ɵɵelement(7, "i",
|
|
1410
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 52);
|
|
1411
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
1412
|
+
i0.ɵɵelementStart(2, "div", 58)(3, "div", 59)(4, "div", 277)(5, "div", 278)(6, "label", 279);
|
|
1413
|
+
i0.ɵɵelement(7, "i", 280);
|
|
1407
1414
|
i0.ɵɵtext(8, " Model Selection: ");
|
|
1408
1415
|
i0.ɵɵelementEnd();
|
|
1409
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template, 1, 3, "mj-dropdown",
|
|
1416
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_9_Template, 1, 3, "mj-dropdown", 281)(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_10_Template, 2, 1, "span", 282);
|
|
1410
1417
|
i0.ɵɵelementEnd()();
|
|
1411
|
-
i0.ɵɵelementStart(11, "div",
|
|
1412
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template, 3, 0, "button",
|
|
1418
|
+
i0.ɵɵelementStart(11, "div", 228);
|
|
1419
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_12_Template, 3, 0, "button", 229);
|
|
1413
1420
|
i0.ɵɵelementEnd()();
|
|
1414
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template, 1, 1, "mj-empty-state",
|
|
1421
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_13_Template, 1, 1, "mj-empty-state", 283)(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Conditional_14_Template, 4, 1, "div", 231);
|
|
1415
1422
|
i0.ɵɵelementEnd()();
|
|
1416
1423
|
} if (rf & 2) {
|
|
1417
1424
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1425,7 +1432,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1425
1432
|
} }
|
|
1426
1433
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1427
1434
|
i0.ɵɵelementStart(0, "span");
|
|
1428
|
-
i0.ɵɵelement(1, "i",
|
|
1435
|
+
i0.ɵɵelement(1, "i", 156);
|
|
1429
1436
|
i0.ɵɵelementEnd();
|
|
1430
1437
|
} }
|
|
1431
1438
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1438,7 +1445,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1438
1445
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.learningCycleCount, ")");
|
|
1439
1446
|
} }
|
|
1440
1447
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1441
|
-
i0.ɵɵelement(0, "i",
|
|
1448
|
+
i0.ɵɵelement(0, "i", 292);
|
|
1442
1449
|
i0.ɵɵtext(1, " Learning Cycles ");
|
|
1443
1450
|
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");
|
|
1444
1451
|
} if (rf & 2) {
|
|
@@ -1447,11 +1454,11 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1447
1454
|
i0.ɵɵconditional(ctx_r1.loadingStates.learningCycles ? 2 : ctx_r1.learningCycleCount > 0 ? 3 : -1);
|
|
1448
1455
|
} }
|
|
1449
1456
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1450
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
1457
|
+
i0.ɵɵelement(0, "mj-empty-state", 291);
|
|
1451
1458
|
} }
|
|
1452
1459
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1453
|
-
i0.ɵɵelementStart(0, "span",
|
|
1454
|
-
i0.ɵɵelement(1, "i",
|
|
1460
|
+
i0.ɵɵelementStart(0, "span", 243);
|
|
1461
|
+
i0.ɵɵelement(1, "i", 295);
|
|
1455
1462
|
i0.ɵɵtext(2);
|
|
1456
1463
|
i0.ɵɵpipe(3, "date");
|
|
1457
1464
|
i0.ɵɵelementEnd();
|
|
@@ -1461,7 +1468,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1461
1468
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r41.StartedAt, "short"), " ");
|
|
1462
1469
|
} }
|
|
1463
1470
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1464
|
-
i0.ɵɵelementStart(0, "span",
|
|
1471
|
+
i0.ɵɵelementStart(0, "span", 244);
|
|
1465
1472
|
i0.ɵɵtext(1);
|
|
1466
1473
|
i0.ɵɵelementEnd();
|
|
1467
1474
|
} if (rf & 2) {
|
|
@@ -1471,20 +1478,20 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1471
1478
|
} }
|
|
1472
1479
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1473
1480
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
1474
|
-
i0.ɵɵelementStart(0, "div",
|
|
1481
|
+
i0.ɵɵelementStart(0, "div", 294);
|
|
1475
1482
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template_div_click_0_listener() { const cycle_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", cycle_r41.ID)); });
|
|
1476
|
-
i0.ɵɵelementStart(1, "div",
|
|
1477
|
-
i0.ɵɵelement(2, "i",
|
|
1483
|
+
i0.ɵɵelementStart(1, "div", 238);
|
|
1484
|
+
i0.ɵɵelement(2, "i", 292);
|
|
1478
1485
|
i0.ɵɵelementEnd();
|
|
1479
|
-
i0.ɵɵelementStart(3, "div",
|
|
1486
|
+
i0.ɵɵelementStart(3, "div", 239)(4, "div", 240);
|
|
1480
1487
|
i0.ɵɵtext(5);
|
|
1481
1488
|
i0.ɵɵelementEnd();
|
|
1482
|
-
i0.ɵɵelementStart(6, "div",
|
|
1483
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span",
|
|
1484
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1489
|
+
i0.ɵɵelementStart(6, "div", 242);
|
|
1490
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span", 243);
|
|
1491
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span", 244);
|
|
1485
1492
|
i0.ɵɵelementEnd()();
|
|
1486
|
-
i0.ɵɵelementStart(9, "div",
|
|
1487
|
-
i0.ɵɵelement(10, "i",
|
|
1493
|
+
i0.ɵɵelementStart(9, "div", 245);
|
|
1494
|
+
i0.ɵɵelement(10, "i", 225);
|
|
1488
1495
|
i0.ɵɵelementEnd()();
|
|
1489
1496
|
} if (rf & 2) {
|
|
1490
1497
|
const cycle_r41 = ctx.$implicit;
|
|
@@ -1497,7 +1504,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1497
1504
|
} }
|
|
1498
1505
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1499
1506
|
const _r42 = i0.ɵɵgetCurrentView();
|
|
1500
|
-
i0.ɵɵelementStart(0, "div",
|
|
1507
|
+
i0.ɵɵelementStart(0, "div", 249);
|
|
1501
1508
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", "")); });
|
|
1502
1509
|
i0.ɵɵelementStart(1, "span");
|
|
1503
1510
|
i0.ɵɵtext(2);
|
|
@@ -1508,9 +1515,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1508
1515
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
1509
1516
|
} }
|
|
1510
1517
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1511
|
-
i0.ɵɵelementStart(0, "div",
|
|
1512
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template, 11, 3, "div",
|
|
1513
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template, 3, 1, "div",
|
|
1518
|
+
i0.ɵɵelementStart(0, "div", 231);
|
|
1519
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_For_2_Template, 11, 3, "div", 293, _forTrack1);
|
|
1520
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Conditional_3_Template, 3, 1, "div", 236);
|
|
1514
1521
|
i0.ɵɵelementEnd();
|
|
1515
1522
|
} if (rf & 2) {
|
|
1516
1523
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1520,12 +1527,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1520
1527
|
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
1521
1528
|
} }
|
|
1522
1529
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1523
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1524
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template, 4, 1, "ng-template",
|
|
1525
|
-
i0.ɵɵelementStart(2, "div",
|
|
1530
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 53);
|
|
1531
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
1532
|
+
i0.ɵɵelementStart(2, "div", 58)(3, "div", 59)(4, "div", 60);
|
|
1526
1533
|
i0.ɵɵtext(5, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
1527
1534
|
i0.ɵɵelementEnd()();
|
|
1528
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template, 1, 0, "mj-empty-state",
|
|
1535
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_6_Template, 1, 0, "mj-empty-state", 291)(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Conditional_7_Template, 4, 1, "div", 231);
|
|
1529
1536
|
i0.ɵɵelementEnd()();
|
|
1530
1537
|
} if (rf & 2) {
|
|
1531
1538
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1535,7 +1542,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1535
1542
|
} }
|
|
1536
1543
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1537
1544
|
i0.ɵɵelementStart(0, "span");
|
|
1538
|
-
i0.ɵɵelement(1, "i",
|
|
1545
|
+
i0.ɵɵelement(1, "i", 156);
|
|
1539
1546
|
i0.ɵɵelementEnd();
|
|
1540
1547
|
} }
|
|
1541
1548
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1548,7 +1555,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1548
1555
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.noteCount, ")");
|
|
1549
1556
|
} }
|
|
1550
1557
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1551
|
-
i0.ɵɵelement(0, "i",
|
|
1558
|
+
i0.ɵɵelement(0, "i", 297);
|
|
1552
1559
|
i0.ɵɵtext(1, " Notes ");
|
|
1553
1560
|
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");
|
|
1554
1561
|
} if (rf & 2) {
|
|
@@ -1558,15 +1565,15 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1558
1565
|
} }
|
|
1559
1566
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1560
1567
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
1561
|
-
i0.ɵɵelementStart(0, "button",
|
|
1568
|
+
i0.ɵɵelementStart(0, "button", 232);
|
|
1562
1569
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1563
|
-
i0.ɵɵelement(1, "i",
|
|
1570
|
+
i0.ɵɵelement(1, "i", 233);
|
|
1564
1571
|
i0.ɵɵtext(2, " Add Note ");
|
|
1565
1572
|
i0.ɵɵelementEnd();
|
|
1566
1573
|
} }
|
|
1567
1574
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1568
1575
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
1569
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
1576
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 298);
|
|
1570
1577
|
i0.ɵɵlistener("Action", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1571
1578
|
i0.ɵɵelementEnd();
|
|
1572
1579
|
} if (rf & 2) {
|
|
@@ -1574,7 +1581,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1574
1581
|
i0.ɵɵproperty("ActionText", ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? "Create First Note" : "");
|
|
1575
1582
|
} }
|
|
1576
1583
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1577
|
-
i0.ɵɵelementStart(0, "div",
|
|
1584
|
+
i0.ɵɵelementStart(0, "div", 241);
|
|
1578
1585
|
i0.ɵɵtext(1);
|
|
1579
1586
|
i0.ɵɵelementEnd();
|
|
1580
1587
|
} if (rf & 2) {
|
|
@@ -1583,8 +1590,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1583
1590
|
i0.ɵɵtextInterpolate2("", note_r46.Note.substring(0, 100), "", note_r46.Note.length > 100 ? "..." : "");
|
|
1584
1591
|
} }
|
|
1585
1592
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1586
|
-
i0.ɵɵelementStart(0, "span",
|
|
1587
|
-
i0.ɵɵelement(1, "i",
|
|
1593
|
+
i0.ɵɵelementStart(0, "span", 243);
|
|
1594
|
+
i0.ɵɵelement(1, "i", 295);
|
|
1588
1595
|
i0.ɵɵtext(2);
|
|
1589
1596
|
i0.ɵɵpipe(3, "date");
|
|
1590
1597
|
i0.ɵɵelementEnd();
|
|
@@ -1595,20 +1602,20 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1595
1602
|
} }
|
|
1596
1603
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1597
1604
|
const _r45 = i0.ɵɵgetCurrentView();
|
|
1598
|
-
i0.ɵɵelementStart(0, "div",
|
|
1605
|
+
i0.ɵɵelementStart(0, "div", 300);
|
|
1599
1606
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template_div_click_0_listener() { const note_r46 = i0.ɵɵrestoreView(_r45).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", note_r46.ID)); });
|
|
1600
|
-
i0.ɵɵelementStart(1, "div",
|
|
1601
|
-
i0.ɵɵelement(2, "i",
|
|
1607
|
+
i0.ɵɵelementStart(1, "div", 238);
|
|
1608
|
+
i0.ɵɵelement(2, "i", 297);
|
|
1602
1609
|
i0.ɵɵelementEnd();
|
|
1603
|
-
i0.ɵɵelementStart(3, "div",
|
|
1610
|
+
i0.ɵɵelementStart(3, "div", 239)(4, "div", 240);
|
|
1604
1611
|
i0.ɵɵtext(5);
|
|
1605
1612
|
i0.ɵɵelementEnd();
|
|
1606
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1607
|
-
i0.ɵɵelementStart(7, "div",
|
|
1608
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span",
|
|
1613
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div", 241);
|
|
1614
|
+
i0.ɵɵelementStart(7, "div", 242);
|
|
1615
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span", 243);
|
|
1609
1616
|
i0.ɵɵelementEnd()();
|
|
1610
|
-
i0.ɵɵelementStart(9, "div",
|
|
1611
|
-
i0.ɵɵelement(10, "i",
|
|
1617
|
+
i0.ɵɵelementStart(9, "div", 245);
|
|
1618
|
+
i0.ɵɵelement(10, "i", 225);
|
|
1612
1619
|
i0.ɵɵelementEnd()();
|
|
1613
1620
|
} if (rf & 2) {
|
|
1614
1621
|
const note_r46 = ctx.$implicit;
|
|
@@ -1621,7 +1628,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1621
1628
|
} }
|
|
1622
1629
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1623
1630
|
const _r47 = i0.ɵɵgetCurrentView();
|
|
1624
|
-
i0.ɵɵelementStart(0, "div",
|
|
1631
|
+
i0.ɵɵelementStart(0, "div", 249);
|
|
1625
1632
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", "")); });
|
|
1626
1633
|
i0.ɵɵelementStart(1, "span");
|
|
1627
1634
|
i0.ɵɵtext(2);
|
|
@@ -1632,9 +1639,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1632
1639
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
1633
1640
|
} }
|
|
1634
1641
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1635
|
-
i0.ɵɵelementStart(0, "div",
|
|
1636
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template, 11, 3, "div",
|
|
1637
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template, 3, 1, "div",
|
|
1642
|
+
i0.ɵɵelementStart(0, "div", 231);
|
|
1643
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_For_2_Template, 11, 3, "div", 299, _forTrack1);
|
|
1644
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Conditional_3_Template, 3, 1, "div", 236);
|
|
1638
1645
|
i0.ɵɵelementEnd();
|
|
1639
1646
|
} if (rf & 2) {
|
|
1640
1647
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1644,15 +1651,15 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1644
1651
|
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
1645
1652
|
} }
|
|
1646
1653
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1647
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1648
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template, 4, 1, "ng-template",
|
|
1649
|
-
i0.ɵɵelementStart(2, "div",
|
|
1654
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 54);
|
|
1655
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_ng_template_1_Template, 4, 1, "ng-template", 57);
|
|
1656
|
+
i0.ɵɵelementStart(2, "div", 58)(3, "div", 59)(4, "div", 60);
|
|
1650
1657
|
i0.ɵɵtext(5, " Manage notes, documentation, and annotations for this agent. ");
|
|
1651
1658
|
i0.ɵɵelementEnd();
|
|
1652
|
-
i0.ɵɵelementStart(6, "div",
|
|
1653
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template, 3, 0, "button",
|
|
1659
|
+
i0.ɵɵelementStart(6, "div", 228);
|
|
1660
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_7_Template, 3, 0, "button", 229);
|
|
1654
1661
|
i0.ɵɵelementEnd()();
|
|
1655
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template, 1, 1, "mj-empty-state",
|
|
1662
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_8_Template, 1, 1, "mj-empty-state", 296)(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Conditional_9_Template, 4, 1, "div", 231);
|
|
1656
1663
|
i0.ɵɵelementEnd()();
|
|
1657
1664
|
} if (rf & 2) {
|
|
1658
1665
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1663,21 +1670,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1663
1670
|
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 8 : 9);
|
|
1664
1671
|
} }
|
|
1665
1672
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1666
|
-
i0.ɵɵelement(0, "i",
|
|
1673
|
+
i0.ɵɵelement(0, "i", 312);
|
|
1667
1674
|
i0.ɵɵtext(1, " Search ");
|
|
1668
1675
|
} }
|
|
1669
1676
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1670
|
-
i0.ɵɵelementStart(0, "div",
|
|
1677
|
+
i0.ɵɵelementStart(0, "div", 319);
|
|
1671
1678
|
i0.ɵɵtext(1, "Loading permissions\u2026");
|
|
1672
1679
|
i0.ɵɵelementEnd();
|
|
1673
1680
|
} }
|
|
1674
1681
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
1675
|
-
i0.ɵɵelementStart(0, "div",
|
|
1682
|
+
i0.ɵɵelementStart(0, "div", 320);
|
|
1676
1683
|
i0.ɵɵtext(1, " No scopes assigned yet \u2014 permissions will appear here once you add scopes above. ");
|
|
1677
1684
|
i0.ɵɵelementEnd();
|
|
1678
1685
|
} }
|
|
1679
1686
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1680
|
-
i0.ɵɵelementStart(0, "div",
|
|
1687
|
+
i0.ɵɵelementStart(0, "div", 323);
|
|
1681
1688
|
i0.ɵɵtext(1, " No explicit permissions. Access falls back to this agent's ");
|
|
1682
1689
|
i0.ɵɵelementStart(2, "code");
|
|
1683
1690
|
i0.ɵɵtext(3, "SearchScopeAccess");
|
|
@@ -1686,12 +1693,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1686
1693
|
i0.ɵɵelementEnd();
|
|
1687
1694
|
} }
|
|
1688
1695
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1689
|
-
i0.ɵɵelementStart(0, "li",
|
|
1696
|
+
i0.ɵɵelementStart(0, "li", 325);
|
|
1690
1697
|
i0.ɵɵelement(1, "i", 35);
|
|
1691
1698
|
i0.ɵɵelementStart(2, "strong");
|
|
1692
1699
|
i0.ɵɵtext(3);
|
|
1693
1700
|
i0.ɵɵelementEnd();
|
|
1694
|
-
i0.ɵɵelementStart(4, "span",
|
|
1701
|
+
i0.ɵɵelementStart(4, "span", 319);
|
|
1695
1702
|
i0.ɵɵtext(5);
|
|
1696
1703
|
i0.ɵɵelementEnd();
|
|
1697
1704
|
i0.ɵɵtext(6, " \u2014 ");
|
|
@@ -1712,8 +1719,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1712
1719
|
i0.ɵɵtextInterpolate(p_r50.Level);
|
|
1713
1720
|
} }
|
|
1714
1721
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1715
|
-
i0.ɵɵelementStart(0, "ul",
|
|
1716
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li",
|
|
1722
|
+
i0.ɵɵelementStart(0, "ul", 324);
|
|
1723
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li", 325, _forTrack4);
|
|
1717
1724
|
i0.ɵɵelementEnd();
|
|
1718
1725
|
} if (rf & 2) {
|
|
1719
1726
|
const s_r51 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1721,10 +1728,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1721
1728
|
i0.ɵɵrepeater(s_r51.Permissions);
|
|
1722
1729
|
} }
|
|
1723
1730
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
1724
|
-
i0.ɵɵelementStart(0, "div",
|
|
1731
|
+
i0.ɵɵelementStart(0, "div", 321)(1, "div", 322);
|
|
1725
1732
|
i0.ɵɵtext(2);
|
|
1726
1733
|
i0.ɵɵelementEnd();
|
|
1727
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div",
|
|
1734
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div", 323)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Conditional_4_Template, 3, 0, "ul", 324);
|
|
1728
1735
|
i0.ɵɵelementEnd();
|
|
1729
1736
|
} if (rf & 2) {
|
|
1730
1737
|
const s_r51 = ctx.$implicit;
|
|
@@ -1734,17 +1741,17 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1734
1741
|
i0.ɵɵconditional(s_r51.Permissions.length === 0 ? 3 : 4);
|
|
1735
1742
|
} }
|
|
1736
1743
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
1737
|
-
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div",
|
|
1744
|
+
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div", 321, _forTrack3);
|
|
1738
1745
|
} if (rf & 2) {
|
|
1739
1746
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1740
1747
|
i0.ɵɵrepeater(ctx_r1.PermissionSummary);
|
|
1741
1748
|
} }
|
|
1742
1749
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
1743
1750
|
const _r49 = i0.ɵɵgetCurrentView();
|
|
1744
|
-
i0.ɵɵelementStart(0, "div",
|
|
1751
|
+
i0.ɵɵelementStart(0, "div", 313)(1, "h4");
|
|
1745
1752
|
i0.ɵɵtext(2, "Assigned Scopes");
|
|
1746
1753
|
i0.ɵɵelementEnd();
|
|
1747
|
-
i0.ɵɵelementStart(3, "p",
|
|
1754
|
+
i0.ɵɵelementStart(3, "p", 60)(4, "strong");
|
|
1748
1755
|
i0.ɵɵtext(5, "Pre-Execution");
|
|
1749
1756
|
i0.ɵɵelementEnd();
|
|
1750
1757
|
i0.ɵɵtext(6, " scopes are injected automatically before the first LLM call. ");
|
|
@@ -1757,21 +1764,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1757
1764
|
i0.ɵɵelementEnd();
|
|
1758
1765
|
i0.ɵɵtext(12, " covers both paths. ");
|
|
1759
1766
|
i0.ɵɵelementEnd()();
|
|
1760
|
-
i0.ɵɵelementStart(13, "mj-search-scope-child-grid",
|
|
1767
|
+
i0.ɵɵelementStart(13, "mj-search-scope-child-grid", 314);
|
|
1761
1768
|
i0.ɵɵlistener("RowsChanged", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template_mj_search_scope_child_grid_RowsChanged_13_listener() { i0.ɵɵrestoreView(_r49); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.LoadPermissionSummary()); });
|
|
1762
1769
|
i0.ɵɵelementEnd();
|
|
1763
|
-
i0.ɵɵelementStart(14, "div",
|
|
1764
|
-
i0.ɵɵelement(16, "i",
|
|
1770
|
+
i0.ɵɵelementStart(14, "div", 315)(15, "h4", 316);
|
|
1771
|
+
i0.ɵɵelement(16, "i", 317);
|
|
1765
1772
|
i0.ɵɵtext(17, " Effective scope permissions ");
|
|
1766
1773
|
i0.ɵɵelementEnd();
|
|
1767
|
-
i0.ɵɵelementStart(18, "p",
|
|
1774
|
+
i0.ɵɵelementStart(18, "p", 318);
|
|
1768
1775
|
i0.ɵɵtext(19, " Per-user / per-role grants on the scopes assigned above. Edit grants in ");
|
|
1769
1776
|
i0.ɵɵelementStart(20, "strong");
|
|
1770
1777
|
i0.ɵɵtext(21, "Knowledge Hub Config \u2192 Search Scopes \u2192 Permissions");
|
|
1771
1778
|
i0.ɵɵelementEnd();
|
|
1772
1779
|
i0.ɵɵtext(22, ". ");
|
|
1773
1780
|
i0.ɵɵelementEnd();
|
|
1774
|
-
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template, 2, 0, "div",
|
|
1781
|
+
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_23_Template, 2, 0, "div", 319)(24, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_24_Template, 2, 0, "div", 320)(25, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Conditional_25_Template, 2, 0);
|
|
1775
1782
|
i0.ɵɵelementEnd();
|
|
1776
1783
|
} if (rf & 2) {
|
|
1777
1784
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1782,43 +1789,43 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1782
1789
|
} }
|
|
1783
1790
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1784
1791
|
const _r48 = i0.ɵɵgetCurrentView();
|
|
1785
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1786
|
-
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template, 2, 0, "ng-template",
|
|
1787
|
-
i0.ɵɵelementStart(2, "div",
|
|
1792
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
|
|
1793
|
+
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
1794
|
+
i0.ɵɵelementStart(2, "div", 58)(3, "div", 59)(4, "div", 60);
|
|
1788
1795
|
i0.ɵɵtext(5, " Control this agent's access to ");
|
|
1789
1796
|
i0.ɵɵelementStart(6, "strong");
|
|
1790
1797
|
i0.ɵɵtext(7, "Scoped Search");
|
|
1791
1798
|
i0.ɵɵelementEnd();
|
|
1792
1799
|
i0.ɵɵtext(8, " and assign the scopes it can use for pre-execution RAG or agent-invoked search. ");
|
|
1793
1800
|
i0.ɵɵelementEnd()();
|
|
1794
|
-
i0.ɵɵelementStart(9, "div",
|
|
1801
|
+
i0.ɵɵelementStart(9, "div", 301)(10, "label", 302)(11, "input", 303);
|
|
1795
1802
|
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_11_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "All"); });
|
|
1796
1803
|
i0.ɵɵelementEnd();
|
|
1797
|
-
i0.ɵɵelement(12, "i",
|
|
1798
|
-
i0.ɵɵelementStart(13, "div",
|
|
1804
|
+
i0.ɵɵelement(12, "i", 304);
|
|
1805
|
+
i0.ɵɵelementStart(13, "div", 305)(14, "div", 306);
|
|
1799
1806
|
i0.ɵɵtext(15, "All");
|
|
1800
1807
|
i0.ɵɵelementEnd();
|
|
1801
|
-
i0.ɵɵelementStart(16, "div",
|
|
1808
|
+
i0.ɵɵelementStart(16, "div", 307);
|
|
1802
1809
|
i0.ɵɵtext(17, "Can use any scope including Global. No scope restriction.");
|
|
1803
1810
|
i0.ɵɵelementEnd()()();
|
|
1804
|
-
i0.ɵɵelementStart(18, "label",
|
|
1811
|
+
i0.ɵɵelementStart(18, "label", 302)(19, "input", 308);
|
|
1805
1812
|
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_19_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "Assigned"); });
|
|
1806
1813
|
i0.ɵɵelementEnd();
|
|
1807
|
-
i0.ɵɵelement(20, "i",
|
|
1808
|
-
i0.ɵɵelementStart(21, "div",
|
|
1814
|
+
i0.ɵɵelement(20, "i", 309);
|
|
1815
|
+
i0.ɵɵelementStart(21, "div", 305)(22, "div", 306);
|
|
1809
1816
|
i0.ɵɵtext(23, "Assigned");
|
|
1810
1817
|
i0.ɵɵelementEnd();
|
|
1811
|
-
i0.ɵɵelementStart(24, "div",
|
|
1818
|
+
i0.ɵɵelementStart(24, "div", 307);
|
|
1812
1819
|
i0.ɵɵtext(25, "Can use ONLY scopes listed below. Other scopes are rejected with ACCESS_DENIED.");
|
|
1813
1820
|
i0.ɵɵelementEnd()()();
|
|
1814
|
-
i0.ɵɵelementStart(26, "label",
|
|
1821
|
+
i0.ɵɵelementStart(26, "label", 302)(27, "input", 310);
|
|
1815
1822
|
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template_input_change_27_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "None"); });
|
|
1816
1823
|
i0.ɵɵelementEnd();
|
|
1817
|
-
i0.ɵɵelement(28, "i",
|
|
1818
|
-
i0.ɵɵelementStart(29, "div",
|
|
1824
|
+
i0.ɵɵelement(28, "i", 311);
|
|
1825
|
+
i0.ɵɵelementStart(29, "div", 305)(30, "div", 306);
|
|
1819
1826
|
i0.ɵɵtext(31, "None");
|
|
1820
1827
|
i0.ɵɵelementEnd();
|
|
1821
|
-
i0.ɵɵelementStart(32, "div",
|
|
1828
|
+
i0.ɵɵelementStart(32, "div", 307);
|
|
1822
1829
|
i0.ɵɵtext(33, "No search capability. The Scoped Search action is disabled for this agent.");
|
|
1823
1830
|
i0.ɵɵelementEnd()()()();
|
|
1824
1831
|
i0.ɵɵconditionalCreate(34, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Conditional_34_Template, 26, 4);
|
|
@@ -1842,20 +1849,20 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1842
1849
|
i0.ɵɵconditional(ctx_r1.record.SearchScopeAccess !== "None" ? 34 : -1);
|
|
1843
1850
|
} }
|
|
1844
1851
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
1845
|
-
i0.ɵɵelement(0, "i",
|
|
1852
|
+
i0.ɵɵelement(0, "i", 274);
|
|
1846
1853
|
i0.ɵɵtext(1, " Payload Management ");
|
|
1847
1854
|
} }
|
|
1848
1855
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template(rf, ctx) { if (rf & 1) {
|
|
1849
|
-
i0.ɵɵelement(0, "i",
|
|
1856
|
+
i0.ɵɵelement(0, "i", 317);
|
|
1850
1857
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1851
1858
|
} }
|
|
1852
1859
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template(rf, ctx) { if (rf & 1) {
|
|
1853
|
-
i0.ɵɵelement(0, "i",
|
|
1860
|
+
i0.ɵɵelement(0, "i", 326);
|
|
1854
1861
|
i0.ɵɵtext(1, " Configuration ");
|
|
1855
1862
|
} }
|
|
1856
1863
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template(rf, ctx) { if (rf & 1) {
|
|
1857
1864
|
const _r52 = i0.ɵɵgetCurrentView();
|
|
1858
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1865
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 327);
|
|
1859
1866
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
1860
1867
|
i0.ɵɵelementEnd();
|
|
1861
1868
|
} if (rf & 2) {
|
|
@@ -1864,7 +1871,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1864
1871
|
i0.ɵɵproperty("Data", ctx_r1.statusOptions)("ValuePrimitive", true);
|
|
1865
1872
|
} }
|
|
1866
1873
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_170_Template(rf, ctx) { if (rf & 1) {
|
|
1867
|
-
i0.ɵɵelementStart(0, "span",
|
|
1874
|
+
i0.ɵɵelementStart(0, "span", 122);
|
|
1868
1875
|
i0.ɵɵtext(1);
|
|
1869
1876
|
i0.ɵɵelementEnd();
|
|
1870
1877
|
} if (rf & 2) {
|
|
@@ -1874,7 +1881,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1874
1881
|
} }
|
|
1875
1882
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template(rf, ctx) { if (rf & 1) {
|
|
1876
1883
|
const _r53 = i0.ɵɵgetCurrentView();
|
|
1877
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1884
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 328);
|
|
1878
1885
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r53); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
1879
1886
|
i0.ɵɵelementEnd();
|
|
1880
1887
|
} if (rf & 2) {
|
|
@@ -1883,7 +1890,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1883
1890
|
i0.ɵɵproperty("Data", ctx_r1.agentTypes)("ValuePrimitive", true);
|
|
1884
1891
|
} }
|
|
1885
1892
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_182_Template(rf, ctx) { if (rf & 1) {
|
|
1886
|
-
i0.ɵɵelementStart(0, "span",
|
|
1893
|
+
i0.ɵɵelementStart(0, "span", 122);
|
|
1887
1894
|
i0.ɵɵtext(1);
|
|
1888
1895
|
i0.ɵɵelementEnd();
|
|
1889
1896
|
} if (rf & 2) {
|
|
@@ -1893,7 +1900,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1893
1900
|
} }
|
|
1894
1901
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template(rf, ctx) { if (rf & 1) {
|
|
1895
1902
|
const _r54 = i0.ɵɵgetCurrentView();
|
|
1896
|
-
i0.ɵɵelementStart(0, "mj-tree-dropdown",
|
|
1903
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 329);
|
|
1897
1904
|
i0.ɵɵlistener("ValueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnCategoryChange($event)); });
|
|
1898
1905
|
i0.ɵɵelementEnd();
|
|
1899
1906
|
} if (rf & 2) {
|
|
@@ -1901,7 +1908,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1901
1908
|
i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("Value", ctx_r1.SelectedCategoryKey)("Clearable", true)("EnableSearch", true);
|
|
1902
1909
|
} }
|
|
1903
1910
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_194_Template(rf, ctx) { if (rf & 1) {
|
|
1904
|
-
i0.ɵɵelementStart(0, "span",
|
|
1911
|
+
i0.ɵɵelementStart(0, "span", 122);
|
|
1905
1912
|
i0.ɵɵtext(1);
|
|
1906
1913
|
i0.ɵɵelementEnd();
|
|
1907
1914
|
} if (rf & 2) {
|
|
@@ -1910,7 +1917,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1910
1917
|
i0.ɵɵtextInterpolate(ctx_r1.record.Category || "Not Set");
|
|
1911
1918
|
} }
|
|
1912
1919
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1913
|
-
i0.ɵɵelementStart(0, "span",
|
|
1920
|
+
i0.ɵɵelementStart(0, "span", 336);
|
|
1914
1921
|
i0.ɵɵtext(1);
|
|
1915
1922
|
i0.ɵɵelementEnd();
|
|
1916
1923
|
} if (rf & 2) {
|
|
@@ -1919,28 +1926,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1919
1926
|
i0.ɵɵtextInterpolate(ctx_r1.selectedContextCompressionPrompt.Name);
|
|
1920
1927
|
} }
|
|
1921
1928
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1922
|
-
i0.ɵɵelementStart(0, "span",
|
|
1929
|
+
i0.ɵɵelementStart(0, "span", 337);
|
|
1923
1930
|
i0.ɵɵtext(1, "No prompt selected");
|
|
1924
1931
|
i0.ɵɵelementEnd();
|
|
1925
1932
|
} }
|
|
1926
1933
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1927
1934
|
const _r56 = i0.ɵɵgetCurrentView();
|
|
1928
|
-
i0.ɵɵelementStart(0, "button",
|
|
1935
|
+
i0.ɵɵelementStart(0, "button", 341);
|
|
1929
1936
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r56); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.clearContextCompressionPrompt()); });
|
|
1930
|
-
i0.ɵɵelement(1, "i",
|
|
1937
|
+
i0.ɵɵelement(1, "i", 342);
|
|
1931
1938
|
i0.ɵɵelementEnd();
|
|
1932
1939
|
} }
|
|
1933
1940
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
1934
1941
|
const _r55 = i0.ɵɵgetCurrentView();
|
|
1935
|
-
i0.ɵɵelementStart(0, "div",
|
|
1936
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template, 2, 1, "span",
|
|
1942
|
+
i0.ɵɵelementStart(0, "div", 334)(1, "div", 335);
|
|
1943
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_2_Template, 2, 1, "span", 336)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_3_Template, 2, 0, "span", 337);
|
|
1937
1944
|
i0.ɵɵelementEnd();
|
|
1938
|
-
i0.ɵɵelementStart(4, "div",
|
|
1945
|
+
i0.ɵɵelementStart(4, "div", 338)(5, "button", 339);
|
|
1939
1946
|
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r55); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openContextCompressionPromptSelector()); });
|
|
1940
|
-
i0.ɵɵelement(6, "i",
|
|
1947
|
+
i0.ɵɵelement(6, "i", 191);
|
|
1941
1948
|
i0.ɵɵtext(7);
|
|
1942
1949
|
i0.ɵɵelementEnd();
|
|
1943
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template, 2, 0, "button",
|
|
1950
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Conditional_8_Template, 2, 0, "button", 340);
|
|
1944
1951
|
i0.ɵɵelementEnd()();
|
|
1945
1952
|
} if (rf & 2) {
|
|
1946
1953
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1952,7 +1959,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1952
1959
|
i0.ɵɵconditional(ctx_r1.selectedContextCompressionPrompt ? 8 : -1);
|
|
1953
1960
|
} }
|
|
1954
1961
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1955
|
-
i0.ɵɵelementStart(0, "span",
|
|
1962
|
+
i0.ɵɵelementStart(0, "span", 122);
|
|
1956
1963
|
i0.ɵɵtext(1);
|
|
1957
1964
|
i0.ɵɵelementEnd();
|
|
1958
1965
|
} if (rf & 2) {
|
|
@@ -1961,41 +1968,41 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_
|
|
|
1961
1968
|
i0.ɵɵtextInterpolate((ctx_r1.selectedContextCompressionPrompt == null ? null : ctx_r1.selectedContextCompressionPrompt.Name) || ctx_r1.record.ContextCompressionPrompt || "Not Set");
|
|
1962
1969
|
} }
|
|
1963
1970
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Template(rf, ctx) { if (rf & 1) {
|
|
1964
|
-
i0.ɵɵelementStart(0, "div",
|
|
1965
|
-
i0.ɵɵelement(3, "i",
|
|
1971
|
+
i0.ɵɵelementStart(0, "div", 115)(1, "div", 116)(2, "div", 117);
|
|
1972
|
+
i0.ɵɵelement(3, "i", 330);
|
|
1966
1973
|
i0.ɵɵelementEnd();
|
|
1967
|
-
i0.ɵɵelementStart(4, "div",
|
|
1974
|
+
i0.ɵɵelementStart(4, "div", 119)(5, "h4");
|
|
1968
1975
|
i0.ɵɵtext(6, "Message Threshold");
|
|
1969
1976
|
i0.ɵɵelementEnd();
|
|
1970
1977
|
i0.ɵɵelementStart(7, "p");
|
|
1971
1978
|
i0.ɵɵtext(8, "Messages before compression triggers");
|
|
1972
1979
|
i0.ɵɵelementEnd()()();
|
|
1973
|
-
i0.ɵɵelementStart(9, "div",
|
|
1974
|
-
i0.ɵɵelement(10, "mj-form-field",
|
|
1980
|
+
i0.ɵɵelementStart(9, "div", 120);
|
|
1981
|
+
i0.ɵɵelement(10, "mj-form-field", 331);
|
|
1975
1982
|
i0.ɵɵelementEnd()();
|
|
1976
|
-
i0.ɵɵelementStart(11, "div",
|
|
1977
|
-
i0.ɵɵelement(14, "i",
|
|
1983
|
+
i0.ɵɵelementStart(11, "div", 115)(12, "div", 116)(13, "div", 117);
|
|
1984
|
+
i0.ɵɵelement(14, "i", 332);
|
|
1978
1985
|
i0.ɵɵelementEnd();
|
|
1979
|
-
i0.ɵɵelementStart(15, "div",
|
|
1986
|
+
i0.ɵɵelementStart(15, "div", 119)(16, "h4");
|
|
1980
1987
|
i0.ɵɵtext(17, "Messages to Keep");
|
|
1981
1988
|
i0.ɵɵelementEnd();
|
|
1982
1989
|
i0.ɵɵelementStart(18, "p");
|
|
1983
1990
|
i0.ɵɵtext(19, "Recent messages to retain uncompressed");
|
|
1984
1991
|
i0.ɵɵelementEnd()()();
|
|
1985
|
-
i0.ɵɵelementStart(20, "div",
|
|
1986
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
1992
|
+
i0.ɵɵelementStart(20, "div", 120);
|
|
1993
|
+
i0.ɵɵelement(21, "mj-form-field", 333);
|
|
1987
1994
|
i0.ɵɵelementEnd()();
|
|
1988
|
-
i0.ɵɵelementStart(22, "div",
|
|
1989
|
-
i0.ɵɵelement(25, "i",
|
|
1995
|
+
i0.ɵɵelementStart(22, "div", 115)(23, "div", 116)(24, "div", 117);
|
|
1996
|
+
i0.ɵɵelement(25, "i", 288);
|
|
1990
1997
|
i0.ɵɵelementEnd();
|
|
1991
|
-
i0.ɵɵelementStart(26, "div",
|
|
1998
|
+
i0.ɵɵelementStart(26, "div", 119)(27, "h4");
|
|
1992
1999
|
i0.ɵɵtext(28, "Compression Prompt");
|
|
1993
2000
|
i0.ɵɵelementEnd();
|
|
1994
2001
|
i0.ɵɵelementStart(29, "p");
|
|
1995
2002
|
i0.ɵɵtext(30, "Prompt used for summarization");
|
|
1996
2003
|
i0.ɵɵelementEnd()()();
|
|
1997
|
-
i0.ɵɵelementStart(31, "div",
|
|
1998
|
-
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template, 9, 3, "div",
|
|
2004
|
+
i0.ɵɵelementStart(31, "div", 120);
|
|
2005
|
+
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_32_Template, 9, 3, "div", 334)(33, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Conditional_33_Template, 2, 1, "span", 122);
|
|
1999
2006
|
i0.ɵɵelementEnd()();
|
|
2000
2007
|
} if (rf & 2) {
|
|
2001
2008
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -2010,34 +2017,34 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
2010
2017
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
2011
2018
|
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_0_Template, 2, 2, "div", 46);
|
|
2012
2019
|
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_1_Template, 4, 3, "div", 47);
|
|
2013
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template,
|
|
2014
|
-
i0.ɵɵelementStart(3, "div",
|
|
2015
|
-
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template, 6, 4, "mj-accordion-panel",
|
|
2016
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template, 5, 3, "mj-accordion-panel",
|
|
2017
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template, 19, 13, "mj-accordion-panel",
|
|
2018
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template, 15, 5, "mj-accordion-panel",
|
|
2019
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template, 8, 3, "mj-accordion-panel",
|
|
2020
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template, 10, 4, "mj-accordion-panel",
|
|
2021
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template, 35, 14, "mj-accordion-panel",
|
|
2022
|
-
i0.ɵɵelementStart(11, "mj-accordion-panel",
|
|
2023
|
-
i0.ɵɵtemplate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template, 2, 0, "ng-template",
|
|
2024
|
-
i0.ɵɵelementStart(13, "div",
|
|
2020
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_2_Template, 4, 13);
|
|
2021
|
+
i0.ɵɵelementStart(3, "div", 48);
|
|
2022
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_4_Template, 6, 4, "mj-accordion-panel", 49);
|
|
2023
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_5_Template, 5, 3, "mj-accordion-panel", 50);
|
|
2024
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_6_Template, 19, 13, "mj-accordion-panel", 51);
|
|
2025
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_7_Template, 15, 5, "mj-accordion-panel", 52);
|
|
2026
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_8_Template, 8, 3, "mj-accordion-panel", 53);
|
|
2027
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_9_Template, 10, 4, "mj-accordion-panel", 54);
|
|
2028
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_10_Template, 35, 14, "mj-accordion-panel", 55);
|
|
2029
|
+
i0.ɵɵelementStart(11, "mj-accordion-panel", 56);
|
|
2030
|
+
i0.ɵɵtemplate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_12_Template, 2, 0, "ng-template", 57);
|
|
2031
|
+
i0.ɵɵelementStart(13, "div", 58)(14, "div", 59)(15, "div", 60);
|
|
2025
2032
|
i0.ɵɵtext(16, " Configure how this agent handles data payloads, path routing, and validation between parent and child agents. ");
|
|
2026
2033
|
i0.ɵɵelementEnd()();
|
|
2027
|
-
i0.ɵɵelementStart(17, "div",
|
|
2028
|
-
i0.ɵɵelement(19, "i",
|
|
2034
|
+
i0.ɵɵelementStart(17, "div", 61)(18, "h3", 62);
|
|
2035
|
+
i0.ɵɵelement(19, "i", 63);
|
|
2029
2036
|
i0.ɵɵtext(20, " Payload Scope ");
|
|
2030
2037
|
i0.ɵɵelementEnd();
|
|
2031
|
-
i0.ɵɵelementStart(21, "div",
|
|
2038
|
+
i0.ɵɵelementStart(21, "div", 64)(22, "div", 65)(23, "label", 66);
|
|
2032
2039
|
i0.ɵɵtext(24, "Payload Scope Path");
|
|
2033
2040
|
i0.ɵɵelementEnd();
|
|
2034
|
-
i0.ɵɵelementStart(25, "p",
|
|
2041
|
+
i0.ɵɵelementStart(25, "p", 67);
|
|
2035
2042
|
i0.ɵɵtext(26, " Specify a path within the parent payload that this sub-agent should operate on. Leave empty to receive the entire payload. ");
|
|
2036
2043
|
i0.ɵɵelementEnd()();
|
|
2037
|
-
i0.ɵɵelementStart(27, "div",
|
|
2038
|
-
i0.ɵɵelement(28, "mj-form-field",
|
|
2039
|
-
i0.ɵɵelementStart(29, "div",
|
|
2040
|
-
i0.ɵɵelement(30, "i",
|
|
2044
|
+
i0.ɵɵelementStart(27, "div", 68);
|
|
2045
|
+
i0.ɵɵelement(28, "mj-form-field", 69);
|
|
2046
|
+
i0.ɵɵelementStart(29, "div", 70);
|
|
2047
|
+
i0.ɵɵelement(30, "i", 71);
|
|
2041
2048
|
i0.ɵɵelementStart(31, "span");
|
|
2042
2049
|
i0.ɵɵtext(32, "Example: ");
|
|
2043
2050
|
i0.ɵɵelementStart(33, "code");
|
|
@@ -2047,24 +2054,24 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
2047
2054
|
i0.ɵɵelementStart(36, "code");
|
|
2048
2055
|
i0.ɵɵtext(37, "/analysis/results");
|
|
2049
2056
|
i0.ɵɵelementEnd()()()()()();
|
|
2050
|
-
i0.ɵɵelementStart(38, "div",
|
|
2051
|
-
i0.ɵɵelement(40, "i",
|
|
2057
|
+
i0.ɵɵelementStart(38, "div", 61)(39, "h3", 62);
|
|
2058
|
+
i0.ɵɵelement(40, "i", 72);
|
|
2052
2059
|
i0.ɵɵtext(41, " Path Configuration ");
|
|
2053
2060
|
i0.ɵɵelementEnd();
|
|
2054
|
-
i0.ɵɵelementStart(42, "div",
|
|
2055
|
-
i0.ɵɵelement(46, "i",
|
|
2061
|
+
i0.ɵɵelementStart(42, "div", 73)(43, "div", 74)(44, "div", 75)(45, "div", 76);
|
|
2062
|
+
i0.ɵɵelement(46, "i", 77);
|
|
2056
2063
|
i0.ɵɵelementEnd();
|
|
2057
|
-
i0.ɵɵelementStart(47, "div",
|
|
2064
|
+
i0.ɵɵelementStart(47, "div", 78)(48, "h4");
|
|
2058
2065
|
i0.ɵɵtext(49, "Downstream Paths");
|
|
2059
2066
|
i0.ɵɵelementEnd();
|
|
2060
2067
|
i0.ɵɵelementStart(50, "p");
|
|
2061
2068
|
i0.ɵɵtext(51, "JSON array of paths to pass to sub-agents");
|
|
2062
2069
|
i0.ɵɵelementEnd()()();
|
|
2063
|
-
i0.ɵɵelementStart(52, "div",
|
|
2070
|
+
i0.ɵɵelementStart(52, "div", 79)(53, "div", 80)(54, "mj-code-editor", 81);
|
|
2064
2071
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_54_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadDownstreamPaths", $event)); });
|
|
2065
2072
|
i0.ɵɵelementEnd()();
|
|
2066
|
-
i0.ɵɵelementStart(55, "div",
|
|
2067
|
-
i0.ɵɵelement(56, "i",
|
|
2073
|
+
i0.ɵɵelementStart(55, "div", 82);
|
|
2074
|
+
i0.ɵɵelement(56, "i", 83);
|
|
2068
2075
|
i0.ɵɵtext(57, " Use ");
|
|
2069
2076
|
i0.ɵɵelementStart(58, "code");
|
|
2070
2077
|
i0.ɵɵtext(59, "[\"*\"]");
|
|
@@ -2073,270 +2080,270 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
2073
2080
|
i0.ɵɵelementStart(61, "code");
|
|
2074
2081
|
i0.ɵɵtext(62, "[\"user.id\", \"order.*\"]");
|
|
2075
2082
|
i0.ɵɵelementEnd()()()();
|
|
2076
|
-
i0.ɵɵelementStart(63, "div",
|
|
2077
|
-
i0.ɵɵelement(66, "i",
|
|
2083
|
+
i0.ɵɵelementStart(63, "div", 74)(64, "div", 75)(65, "div", 84);
|
|
2084
|
+
i0.ɵɵelement(66, "i", 85);
|
|
2078
2085
|
i0.ɵɵelementEnd();
|
|
2079
|
-
i0.ɵɵelementStart(67, "div",
|
|
2086
|
+
i0.ɵɵelementStart(67, "div", 78)(68, "h4");
|
|
2080
2087
|
i0.ɵɵtext(69, "Upstream Paths");
|
|
2081
2088
|
i0.ɵɵelementEnd();
|
|
2082
2089
|
i0.ɵɵelementStart(70, "p");
|
|
2083
2090
|
i0.ɵɵtext(71, "JSON array of paths sub-agents can write back");
|
|
2084
2091
|
i0.ɵɵelementEnd()()();
|
|
2085
|
-
i0.ɵɵelementStart(72, "div",
|
|
2092
|
+
i0.ɵɵelementStart(72, "div", 79)(73, "div", 80)(74, "mj-code-editor", 81);
|
|
2086
2093
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_74_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadUpstreamPaths", $event)); });
|
|
2087
2094
|
i0.ɵɵelementEnd()();
|
|
2088
|
-
i0.ɵɵelementStart(75, "div",
|
|
2089
|
-
i0.ɵɵelement(76, "i",
|
|
2095
|
+
i0.ɵɵelementStart(75, "div", 82);
|
|
2096
|
+
i0.ɵɵelement(76, "i", 83);
|
|
2090
2097
|
i0.ɵɵtext(77, " Use ");
|
|
2091
2098
|
i0.ɵɵelementStart(78, "code");
|
|
2092
2099
|
i0.ɵɵtext(79, "[\"*\"]");
|
|
2093
2100
|
i0.ɵɵelementEnd();
|
|
2094
2101
|
i0.ɵɵtext(80, " to allow all writes or limit to specific paths ");
|
|
2095
2102
|
i0.ɵɵelementEnd()()();
|
|
2096
|
-
i0.ɵɵelementStart(81, "div",
|
|
2097
|
-
i0.ɵɵelement(84, "i",
|
|
2103
|
+
i0.ɵɵelementStart(81, "div", 74)(82, "div", 75)(83, "div", 86);
|
|
2104
|
+
i0.ɵɵelement(84, "i", 87);
|
|
2098
2105
|
i0.ɵɵelementEnd();
|
|
2099
|
-
i0.ɵɵelementStart(85, "div",
|
|
2106
|
+
i0.ɵɵelementStart(85, "div", 78)(86, "h4");
|
|
2100
2107
|
i0.ɵɵtext(87, "Self Read Paths");
|
|
2101
2108
|
i0.ɵɵelementEnd();
|
|
2102
2109
|
i0.ɵɵelementStart(88, "p");
|
|
2103
2110
|
i0.ɵɵtext(89, "JSON array of paths this agent can read");
|
|
2104
2111
|
i0.ɵɵelementEnd()()();
|
|
2105
|
-
i0.ɵɵelementStart(90, "div",
|
|
2112
|
+
i0.ɵɵelementStart(90, "div", 79)(91, "div", 80)(92, "mj-code-editor", 81);
|
|
2106
2113
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_92_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfReadPaths", $event)); });
|
|
2107
2114
|
i0.ɵɵelementEnd()();
|
|
2108
|
-
i0.ɵɵelementStart(93, "div",
|
|
2109
|
-
i0.ɵɵelement(94, "i",
|
|
2115
|
+
i0.ɵɵelementStart(93, "div", 82);
|
|
2116
|
+
i0.ɵɵelement(94, "i", 83);
|
|
2110
2117
|
i0.ɵɵtext(95, " Paths this agent's prompts can read from the payload ");
|
|
2111
2118
|
i0.ɵɵelementEnd()()();
|
|
2112
|
-
i0.ɵɵelementStart(96, "div",
|
|
2113
|
-
i0.ɵɵelement(99, "i",
|
|
2119
|
+
i0.ɵɵelementStart(96, "div", 74)(97, "div", 75)(98, "div", 88);
|
|
2120
|
+
i0.ɵɵelement(99, "i", 89);
|
|
2114
2121
|
i0.ɵɵelementEnd();
|
|
2115
|
-
i0.ɵɵelementStart(100, "div",
|
|
2122
|
+
i0.ɵɵelementStart(100, "div", 78)(101, "h4");
|
|
2116
2123
|
i0.ɵɵtext(102, "Self Write Paths");
|
|
2117
2124
|
i0.ɵɵelementEnd();
|
|
2118
2125
|
i0.ɵɵelementStart(103, "p");
|
|
2119
2126
|
i0.ɵɵtext(104, "JSON array of paths this agent can write to");
|
|
2120
2127
|
i0.ɵɵelementEnd()()();
|
|
2121
|
-
i0.ɵɵelementStart(105, "div",
|
|
2128
|
+
i0.ɵɵelementStart(105, "div", 79)(106, "div", 80)(107, "mj-code-editor", 81);
|
|
2122
2129
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_107_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfWritePaths", $event)); });
|
|
2123
2130
|
i0.ɵɵelementEnd()();
|
|
2124
|
-
i0.ɵɵelementStart(108, "div",
|
|
2125
|
-
i0.ɵɵelement(109, "i",
|
|
2131
|
+
i0.ɵɵelementStart(108, "div", 82);
|
|
2132
|
+
i0.ɵɵelement(109, "i", 83);
|
|
2126
2133
|
i0.ɵɵtext(110, " Paths this agent's prompts can write back to the payload ");
|
|
2127
2134
|
i0.ɵɵelementEnd()()()()();
|
|
2128
|
-
i0.ɵɵelementStart(111, "div",
|
|
2129
|
-
i0.ɵɵelement(113, "i",
|
|
2135
|
+
i0.ɵɵelementStart(111, "div", 61)(112, "h3", 62);
|
|
2136
|
+
i0.ɵɵelement(113, "i", 90);
|
|
2130
2137
|
i0.ɵɵtext(114, " Final Payload Validation ");
|
|
2131
2138
|
i0.ɵɵelementEnd();
|
|
2132
|
-
i0.ɵɵelementStart(115, "div",
|
|
2139
|
+
i0.ɵɵelementStart(115, "div", 91)(116, "div", 92)(117, "div", 93)(118, "label", 94);
|
|
2133
2140
|
i0.ɵɵtext(119, "Validation Mode");
|
|
2134
2141
|
i0.ɵɵelementEnd();
|
|
2135
|
-
i0.ɵɵelementStart(120, "p",
|
|
2142
|
+
i0.ɵɵelementStart(120, "p", 95);
|
|
2136
2143
|
i0.ɵɵtext(121, "How to handle validation failures");
|
|
2137
2144
|
i0.ɵɵelementEnd();
|
|
2138
|
-
i0.ɵɵelement(122, "mj-form-field",
|
|
2145
|
+
i0.ɵɵelement(122, "mj-form-field", 96);
|
|
2139
2146
|
i0.ɵɵelementEnd();
|
|
2140
|
-
i0.ɵɵelementStart(123, "div",
|
|
2147
|
+
i0.ɵɵelementStart(123, "div", 93)(124, "label", 94);
|
|
2141
2148
|
i0.ɵɵtext(125, "Max Retries");
|
|
2142
2149
|
i0.ɵɵelementEnd();
|
|
2143
|
-
i0.ɵɵelementStart(126, "p",
|
|
2150
|
+
i0.ɵɵelementStart(126, "p", 95);
|
|
2144
2151
|
i0.ɵɵtext(127, "Maximum validation retry attempts");
|
|
2145
2152
|
i0.ɵɵelementEnd();
|
|
2146
|
-
i0.ɵɵelement(128, "mj-form-field",
|
|
2153
|
+
i0.ɵɵelement(128, "mj-form-field", 97);
|
|
2147
2154
|
i0.ɵɵelementEnd()();
|
|
2148
|
-
i0.ɵɵelementStart(129, "div",
|
|
2149
|
-
i0.ɵɵelement(131, "i",
|
|
2155
|
+
i0.ɵɵelementStart(129, "div", 98)(130, "label", 99);
|
|
2156
|
+
i0.ɵɵelement(131, "i", 100);
|
|
2150
2157
|
i0.ɵɵtext(132, " Validation Schema ");
|
|
2151
2158
|
i0.ɵɵelementEnd();
|
|
2152
|
-
i0.ɵɵelementStart(133, "p",
|
|
2159
|
+
i0.ɵɵelementStart(133, "p", 101);
|
|
2153
2160
|
i0.ɵɵtext(134, " JSON schema or validation rules for the final payload structure ");
|
|
2154
2161
|
i0.ɵɵelementEnd();
|
|
2155
|
-
i0.ɵɵelementStart(135, "div",
|
|
2162
|
+
i0.ɵɵelementStart(135, "div", 102)(136, "mj-code-editor", 103);
|
|
2156
2163
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_code_editor_valueChange_136_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("FinalPayloadValidation", $event)); });
|
|
2157
2164
|
i0.ɵɵelementEnd()()()()()()();
|
|
2158
|
-
i0.ɵɵelementStart(137, "mj-accordion-panel",
|
|
2159
|
-
i0.ɵɵtemplate(138, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template, 2, 0, "ng-template",
|
|
2160
|
-
i0.ɵɵelementStart(139, "div",
|
|
2165
|
+
i0.ɵɵelementStart(137, "mj-accordion-panel", 104);
|
|
2166
|
+
i0.ɵɵtemplate(138, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_138_Template, 2, 0, "ng-template", 57);
|
|
2167
|
+
i0.ɵɵelementStart(139, "div", 58)(140, "div", 59)(141, "div", 60);
|
|
2161
2168
|
i0.ɵɵtext(142, " Set limits to prevent runaway agent executions and control resource usage. ");
|
|
2162
2169
|
i0.ɵɵelementEnd()();
|
|
2163
|
-
i0.ɵɵelementStart(143, "div",
|
|
2164
|
-
i0.ɵɵelement(144, "mj-form-field",
|
|
2170
|
+
i0.ɵɵelementStart(143, "div", 105);
|
|
2171
|
+
i0.ɵɵelement(144, "mj-form-field", 106)(145, "mj-form-field", 107)(146, "mj-form-field", 108)(147, "mj-form-field", 109);
|
|
2165
2172
|
i0.ɵɵelementEnd()()();
|
|
2166
|
-
i0.ɵɵelementStart(148, "mj-accordion-panel",
|
|
2167
|
-
i0.ɵɵtemplate(149, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template, 2, 0, "ng-template",
|
|
2168
|
-
i0.ɵɵelementStart(150, "div",
|
|
2173
|
+
i0.ɵɵelementStart(148, "mj-accordion-panel", 110);
|
|
2174
|
+
i0.ɵɵtemplate(149, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_ng_template_149_Template, 2, 0, "ng-template", 57);
|
|
2175
|
+
i0.ɵɵelementStart(150, "div", 58)(151, "div", 59)(152, "div", 60);
|
|
2169
2176
|
i0.ɵɵtext(153, " Configure agent behavior, execution settings, and advanced features. ");
|
|
2170
2177
|
i0.ɵɵelementEnd()();
|
|
2171
|
-
i0.ɵɵelementStart(154, "div",
|
|
2172
|
-
i0.ɵɵelement(156, "i",
|
|
2178
|
+
i0.ɵɵelementStart(154, "div", 111)(155, "h3", 112);
|
|
2179
|
+
i0.ɵɵelement(156, "i", 113);
|
|
2173
2180
|
i0.ɵɵtext(157, " Identity & Behavior ");
|
|
2174
2181
|
i0.ɵɵelementEnd();
|
|
2175
|
-
i0.ɵɵelementStart(158, "div",
|
|
2176
|
-
i0.ɵɵelement(162, "i",
|
|
2182
|
+
i0.ɵɵelementStart(158, "div", 114)(159, "div", 115)(160, "div", 116)(161, "div", 117);
|
|
2183
|
+
i0.ɵɵelement(162, "i", 118);
|
|
2177
2184
|
i0.ɵɵelementEnd();
|
|
2178
|
-
i0.ɵɵelementStart(163, "div",
|
|
2185
|
+
i0.ɵɵelementStart(163, "div", 119)(164, "h4");
|
|
2179
2186
|
i0.ɵɵtext(165, "Agent Status");
|
|
2180
2187
|
i0.ɵɵelementEnd();
|
|
2181
2188
|
i0.ɵɵelementStart(166, "p");
|
|
2182
2189
|
i0.ɵɵtext(167, "Current availability and operational status");
|
|
2183
2190
|
i0.ɵɵelementEnd()()();
|
|
2184
|
-
i0.ɵɵelementStart(168, "div",
|
|
2185
|
-
i0.ɵɵconditionalCreate(169, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template, 1, 3, "mj-dropdown",
|
|
2191
|
+
i0.ɵɵelementStart(168, "div", 120);
|
|
2192
|
+
i0.ɵɵconditionalCreate(169, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_169_Template, 1, 3, "mj-dropdown", 121)(170, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_170_Template, 2, 1, "span", 122);
|
|
2186
2193
|
i0.ɵɵelementEnd()();
|
|
2187
|
-
i0.ɵɵelementStart(171, "div",
|
|
2194
|
+
i0.ɵɵelementStart(171, "div", 115)(172, "div", 116)(173, "div", 117);
|
|
2188
2195
|
i0.ɵɵelement(174, "i", 30);
|
|
2189
2196
|
i0.ɵɵelementEnd();
|
|
2190
|
-
i0.ɵɵelementStart(175, "div",
|
|
2197
|
+
i0.ɵɵelementStart(175, "div", 119)(176, "h4");
|
|
2191
2198
|
i0.ɵɵtext(177, "Agent Type");
|
|
2192
2199
|
i0.ɵɵelementEnd();
|
|
2193
2200
|
i0.ɵɵelementStart(178, "p");
|
|
2194
2201
|
i0.ɵɵtext(179, "Category and system-level behavior");
|
|
2195
2202
|
i0.ɵɵelementEnd()()();
|
|
2196
|
-
i0.ɵɵelementStart(180, "div",
|
|
2197
|
-
i0.ɵɵconditionalCreate(181, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template, 1, 3, "mj-dropdown",
|
|
2203
|
+
i0.ɵɵelementStart(180, "div", 120);
|
|
2204
|
+
i0.ɵɵconditionalCreate(181, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_181_Template, 1, 3, "mj-dropdown", 123)(182, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_182_Template, 2, 1, "span", 122);
|
|
2198
2205
|
i0.ɵɵelementEnd()();
|
|
2199
|
-
i0.ɵɵelementStart(183, "div",
|
|
2200
|
-
i0.ɵɵelement(186, "i",
|
|
2206
|
+
i0.ɵɵelementStart(183, "div", 115)(184, "div", 116)(185, "div", 117);
|
|
2207
|
+
i0.ɵɵelement(186, "i", 124);
|
|
2201
2208
|
i0.ɵɵelementEnd();
|
|
2202
|
-
i0.ɵɵelementStart(187, "div",
|
|
2209
|
+
i0.ɵɵelementStart(187, "div", 119)(188, "h4");
|
|
2203
2210
|
i0.ɵɵtext(189, "Category");
|
|
2204
2211
|
i0.ɵɵelementEnd();
|
|
2205
2212
|
i0.ɵɵelementStart(190, "p");
|
|
2206
2213
|
i0.ɵɵtext(191, "Organizational category for this agent");
|
|
2207
2214
|
i0.ɵɵelementEnd()()();
|
|
2208
|
-
i0.ɵɵelementStart(192, "div",
|
|
2209
|
-
i0.ɵɵconditionalCreate(193, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template, 1, 4, "mj-tree-dropdown",
|
|
2215
|
+
i0.ɵɵelementStart(192, "div", 120);
|
|
2216
|
+
i0.ɵɵconditionalCreate(193, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_193_Template, 1, 4, "mj-tree-dropdown", 125)(194, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_194_Template, 2, 1, "span", 122);
|
|
2210
2217
|
i0.ɵɵelementEnd()();
|
|
2211
|
-
i0.ɵɵelementStart(195, "div",
|
|
2212
|
-
i0.ɵɵelement(198, "i",
|
|
2218
|
+
i0.ɵɵelementStart(195, "div", 115)(196, "div", 116)(197, "div", 117);
|
|
2219
|
+
i0.ɵɵelement(198, "i", 126);
|
|
2213
2220
|
i0.ɵɵelementEnd();
|
|
2214
|
-
i0.ɵɵelementStart(199, "div",
|
|
2221
|
+
i0.ɵɵelementStart(199, "div", 119)(200, "h4");
|
|
2215
2222
|
i0.ɵɵtext(201, "Expose as Action");
|
|
2216
2223
|
i0.ɵɵelementEnd();
|
|
2217
2224
|
i0.ɵɵelementStart(202, "p");
|
|
2218
2225
|
i0.ɵɵtext(203, "Make available as an action for other agents");
|
|
2219
2226
|
i0.ɵɵelementEnd()()();
|
|
2220
|
-
i0.ɵɵelementStart(204, "div",
|
|
2221
|
-
i0.ɵɵelement(205, "mj-form-field",
|
|
2227
|
+
i0.ɵɵelementStart(204, "div", 120);
|
|
2228
|
+
i0.ɵɵelement(205, "mj-form-field", 127);
|
|
2222
2229
|
i0.ɵɵelementEnd()();
|
|
2223
|
-
i0.ɵɵelementStart(206, "div",
|
|
2224
|
-
i0.ɵɵelement(209, "i",
|
|
2230
|
+
i0.ɵɵelementStart(206, "div", 128)(207, "div", 116)(208, "div", 117);
|
|
2231
|
+
i0.ɵɵelement(209, "i", 129);
|
|
2225
2232
|
i0.ɵɵelementEnd();
|
|
2226
|
-
i0.ɵɵelementStart(210, "div",
|
|
2233
|
+
i0.ɵɵelementStart(210, "div", 119)(211, "h4");
|
|
2227
2234
|
i0.ɵɵtext(212, "Description");
|
|
2228
2235
|
i0.ɵɵelementEnd();
|
|
2229
2236
|
i0.ɵɵelementStart(213, "p");
|
|
2230
2237
|
i0.ɵɵtext(214, "Detailed agent description and purpose");
|
|
2231
2238
|
i0.ɵɵelementEnd()()();
|
|
2232
|
-
i0.ɵɵelementStart(215, "div",
|
|
2233
|
-
i0.ɵɵelement(216, "mj-form-field",
|
|
2239
|
+
i0.ɵɵelementStart(215, "div", 120);
|
|
2240
|
+
i0.ɵɵelement(216, "mj-form-field", 130);
|
|
2234
2241
|
i0.ɵɵelementEnd()()()();
|
|
2235
|
-
i0.ɵɵelementStart(217, "div",
|
|
2242
|
+
i0.ɵɵelementStart(217, "div", 111)(218, "h3", 112);
|
|
2236
2243
|
i0.ɵɵelement(219, "i", 33);
|
|
2237
2244
|
i0.ɵɵtext(220, " Execution Settings ");
|
|
2238
2245
|
i0.ɵɵelementEnd();
|
|
2239
|
-
i0.ɵɵelementStart(221, "div",
|
|
2240
|
-
i0.ɵɵelement(225, "i",
|
|
2246
|
+
i0.ɵɵelementStart(221, "div", 114)(222, "div", 115)(223, "div", 116)(224, "div", 117);
|
|
2247
|
+
i0.ɵɵelement(225, "i", 131);
|
|
2241
2248
|
i0.ɵɵelementEnd();
|
|
2242
|
-
i0.ɵɵelementStart(226, "div",
|
|
2249
|
+
i0.ɵɵelementStart(226, "div", 119)(227, "h4");
|
|
2243
2250
|
i0.ɵɵtext(228, "Execution Mode");
|
|
2244
2251
|
i0.ɵɵelementEnd();
|
|
2245
2252
|
i0.ɵɵelementStart(229, "p");
|
|
2246
2253
|
i0.ɵɵtext(230, "How sub-agents are executed");
|
|
2247
2254
|
i0.ɵɵelementEnd()()();
|
|
2248
|
-
i0.ɵɵelementStart(231, "div",
|
|
2249
|
-
i0.ɵɵelement(232, "mj-form-field",
|
|
2255
|
+
i0.ɵɵelementStart(231, "div", 120);
|
|
2256
|
+
i0.ɵɵelement(232, "mj-form-field", 132);
|
|
2250
2257
|
i0.ɵɵelementEnd()();
|
|
2251
|
-
i0.ɵɵelementStart(233, "div",
|
|
2252
|
-
i0.ɵɵelement(236, "i",
|
|
2258
|
+
i0.ɵɵelementStart(233, "div", 115)(234, "div", 116)(235, "div", 117);
|
|
2259
|
+
i0.ɵɵelement(236, "i", 133);
|
|
2253
2260
|
i0.ɵɵelementEnd();
|
|
2254
|
-
i0.ɵɵelementStart(237, "div",
|
|
2261
|
+
i0.ɵɵelementStart(237, "div", 119)(238, "h4");
|
|
2255
2262
|
i0.ɵɵtext(239, "Execution Order");
|
|
2256
2263
|
i0.ɵɵelementEnd();
|
|
2257
2264
|
i0.ɵɵelementStart(240, "p");
|
|
2258
2265
|
i0.ɵɵtext(241, "Order when run with siblings");
|
|
2259
2266
|
i0.ɵɵelementEnd()()();
|
|
2260
|
-
i0.ɵɵelementStart(242, "div",
|
|
2261
|
-
i0.ɵɵelement(243, "mj-form-field",
|
|
2267
|
+
i0.ɵɵelementStart(242, "div", 120);
|
|
2268
|
+
i0.ɵɵelement(243, "mj-form-field", 134);
|
|
2262
2269
|
i0.ɵɵelementEnd()();
|
|
2263
|
-
i0.ɵɵelementStart(244, "div",
|
|
2264
|
-
i0.ɵɵelement(247, "i",
|
|
2270
|
+
i0.ɵɵelementStart(244, "div", 115)(245, "div", 116)(246, "div", 117);
|
|
2271
|
+
i0.ɵɵelement(247, "i", 135);
|
|
2265
2272
|
i0.ɵɵelementEnd();
|
|
2266
|
-
i0.ɵɵelementStart(248, "div",
|
|
2273
|
+
i0.ɵɵelementStart(248, "div", 119)(249, "h4");
|
|
2267
2274
|
i0.ɵɵtext(250, "Default Effort Level");
|
|
2268
2275
|
i0.ɵɵelementEnd();
|
|
2269
2276
|
i0.ɵɵelementStart(251, "p");
|
|
2270
2277
|
i0.ɵɵtext(252, "Default effort level for all prompts (1-100)");
|
|
2271
2278
|
i0.ɵɵelementEnd()()();
|
|
2272
|
-
i0.ɵɵelementStart(253, "div",
|
|
2273
|
-
i0.ɵɵelement(254, "mj-form-field",
|
|
2274
|
-
i0.ɵɵelementStart(255, "div",
|
|
2275
|
-
i0.ɵɵelement(256, "i",
|
|
2279
|
+
i0.ɵɵelementStart(253, "div", 120);
|
|
2280
|
+
i0.ɵɵelement(254, "mj-form-field", 136);
|
|
2281
|
+
i0.ɵɵelementStart(255, "div", 137);
|
|
2282
|
+
i0.ɵɵelement(256, "i", 83);
|
|
2276
2283
|
i0.ɵɵtext(257, " Higher values request more thorough reasoning (1=minimal, 100=maximum) ");
|
|
2277
2284
|
i0.ɵɵelementEnd()()();
|
|
2278
|
-
i0.ɵɵelementStart(258, "div",
|
|
2279
|
-
i0.ɵɵelement(261, "i",
|
|
2285
|
+
i0.ɵɵelementStart(258, "div", 115)(259, "div", 116)(260, "div", 117);
|
|
2286
|
+
i0.ɵɵelement(261, "i", 100);
|
|
2280
2287
|
i0.ɵɵelementEnd();
|
|
2281
|
-
i0.ɵɵelementStart(262, "div",
|
|
2288
|
+
i0.ɵɵelementStart(262, "div", 119)(263, "h4");
|
|
2282
2289
|
i0.ɵɵtext(264, "Driver Class");
|
|
2283
2290
|
i0.ɵɵelementEnd();
|
|
2284
2291
|
i0.ɵɵelementStart(265, "p");
|
|
2285
2292
|
i0.ɵɵtext(266, "Custom implementation class");
|
|
2286
2293
|
i0.ɵɵelementEnd()()();
|
|
2287
|
-
i0.ɵɵelementStart(267, "div",
|
|
2288
|
-
i0.ɵɵelement(268, "mj-form-field",
|
|
2294
|
+
i0.ɵɵelementStart(267, "div", 120);
|
|
2295
|
+
i0.ɵɵelement(268, "mj-form-field", 138);
|
|
2289
2296
|
i0.ɵɵelementEnd()()()();
|
|
2290
|
-
i0.ɵɵelementStart(269, "div",
|
|
2291
|
-
i0.ɵɵelement(271, "i",
|
|
2297
|
+
i0.ɵɵelementStart(269, "div", 111)(270, "h3", 112);
|
|
2298
|
+
i0.ɵɵelement(271, "i", 139);
|
|
2292
2299
|
i0.ɵɵtext(272, " Visual Identity ");
|
|
2293
2300
|
i0.ɵɵelementEnd();
|
|
2294
|
-
i0.ɵɵelementStart(273, "div",
|
|
2295
|
-
i0.ɵɵelement(277, "i",
|
|
2301
|
+
i0.ɵɵelementStart(273, "div", 114)(274, "div", 115)(275, "div", 116)(276, "div", 117);
|
|
2302
|
+
i0.ɵɵelement(277, "i", 140);
|
|
2296
2303
|
i0.ɵɵelementEnd();
|
|
2297
|
-
i0.ɵɵelementStart(278, "div",
|
|
2304
|
+
i0.ɵɵelementStart(278, "div", 119)(279, "h4");
|
|
2298
2305
|
i0.ɵɵtext(280, "Icon Class");
|
|
2299
2306
|
i0.ɵɵelementEnd();
|
|
2300
2307
|
i0.ɵɵelementStart(281, "p");
|
|
2301
2308
|
i0.ɵɵtext(282, "Font Awesome icon class");
|
|
2302
2309
|
i0.ɵɵelementEnd()()();
|
|
2303
|
-
i0.ɵɵelementStart(283, "div",
|
|
2304
|
-
i0.ɵɵelement(284, "mj-form-field",
|
|
2305
|
-
i0.ɵɵelementStart(285, "div",
|
|
2306
|
-
i0.ɵɵelement(286, "i",
|
|
2310
|
+
i0.ɵɵelementStart(283, "div", 120);
|
|
2311
|
+
i0.ɵɵelement(284, "mj-form-field", 141);
|
|
2312
|
+
i0.ɵɵelementStart(285, "div", 137);
|
|
2313
|
+
i0.ɵɵelement(286, "i", 83);
|
|
2307
2314
|
i0.ɵɵtext(287, " Example: ");
|
|
2308
2315
|
i0.ɵɵelementStart(288, "code");
|
|
2309
2316
|
i0.ɵɵtext(289, "fa-solid fa-robot");
|
|
2310
2317
|
i0.ɵɵelementEnd()()()();
|
|
2311
|
-
i0.ɵɵelementStart(290, "div",
|
|
2312
|
-
i0.ɵɵelement(293, "i",
|
|
2318
|
+
i0.ɵɵelementStart(290, "div", 115)(291, "div", 116)(292, "div", 117);
|
|
2319
|
+
i0.ɵɵelement(293, "i", 142);
|
|
2313
2320
|
i0.ɵɵelementEnd();
|
|
2314
|
-
i0.ɵɵelementStart(294, "div",
|
|
2321
|
+
i0.ɵɵelementStart(294, "div", 119)(295, "h4");
|
|
2315
2322
|
i0.ɵɵtext(296, "Logo URL");
|
|
2316
2323
|
i0.ɵɵelementEnd();
|
|
2317
2324
|
i0.ɵɵelementStart(297, "p");
|
|
2318
2325
|
i0.ɵɵtext(298, "URL for agent logo image");
|
|
2319
2326
|
i0.ɵɵelementEnd()()();
|
|
2320
|
-
i0.ɵɵelementStart(299, "div",
|
|
2321
|
-
i0.ɵɵelement(300, "mj-form-field",
|
|
2322
|
-
i0.ɵɵelementStart(301, "div",
|
|
2323
|
-
i0.ɵɵelement(302, "i",
|
|
2327
|
+
i0.ɵɵelementStart(299, "div", 120);
|
|
2328
|
+
i0.ɵɵelement(300, "mj-form-field", 143);
|
|
2329
|
+
i0.ɵɵelementStart(301, "div", 137);
|
|
2330
|
+
i0.ɵɵelement(302, "i", 83);
|
|
2324
2331
|
i0.ɵɵtext(303, " Takes precedence over Icon Class ");
|
|
2325
2332
|
i0.ɵɵelementEnd()()()()();
|
|
2326
|
-
i0.ɵɵelementStart(304, "div",
|
|
2327
|
-
i0.ɵɵelement(306, "i",
|
|
2333
|
+
i0.ɵɵelementStart(304, "div", 111)(305, "h3", 112);
|
|
2334
|
+
i0.ɵɵelement(306, "i", 144);
|
|
2328
2335
|
i0.ɵɵtext(307, " Context Compression ");
|
|
2329
2336
|
i0.ɵɵelementEnd();
|
|
2330
|
-
i0.ɵɵelementStart(308, "div",
|
|
2331
|
-
i0.ɵɵelement(312, "i",
|
|
2337
|
+
i0.ɵɵelementStart(308, "div", 114)(309, "div", 128)(310, "div", 116)(311, "div", 117);
|
|
2338
|
+
i0.ɵɵelement(312, "i", 118);
|
|
2332
2339
|
i0.ɵɵelementEnd();
|
|
2333
|
-
i0.ɵɵelementStart(313, "div",
|
|
2340
|
+
i0.ɵɵelementStart(313, "div", 119)(314, "h4");
|
|
2334
2341
|
i0.ɵɵtext(315, "Enable Context Compression");
|
|
2335
2342
|
i0.ɵɵelementEnd();
|
|
2336
2343
|
i0.ɵɵelementStart(316, "p");
|
|
2337
2344
|
i0.ɵɵtext(317, "Automatically compress conversation context when message threshold is reached");
|
|
2338
2345
|
i0.ɵɵelementEnd()()();
|
|
2339
|
-
i0.ɵɵelementStart(318, "div",
|
|
2346
|
+
i0.ɵɵelementStart(318, "div", 120)(319, "mj-form-field", 145);
|
|
2340
2347
|
i0.ɵɵlistener("valueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template_mj_form_field_valueChange_319_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContextCompressionToggle($event)); });
|
|
2341
2348
|
i0.ɵɵelementEnd()()();
|
|
2342
2349
|
i0.ɵɵconditionalCreate(320, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Conditional_320_Template, 34, 5);
|
|
@@ -2442,7 +2449,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
2442
2449
|
} }
|
|
2443
2450
|
function MJAIAgentFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
2444
2451
|
const _r57 = i0.ɵɵgetCurrentView();
|
|
2445
|
-
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog",
|
|
2452
|
+
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog", 343);
|
|
2446
2453
|
i0.ɵɵlistener("Closed", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_Closed_0_listener() { i0.ɵɵrestoreView(_r57); 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(_r57); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
2447
2454
|
i0.ɵɵelementEnd();
|
|
2448
2455
|
} if (rf & 2) {
|
|
@@ -5760,14 +5767,14 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
5760
5767
|
} if (rf & 2) {
|
|
5761
5768
|
let _t;
|
|
5762
5769
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomSectionContainer = _t.first);
|
|
5763
|
-
} }, 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, "agent-pane", "agent-pane--invocations", 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, "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) {
|
|
5770
|
+
} }, 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) {
|
|
5764
5771
|
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Template, 7, 7, "mj-record-form-container", 2);
|
|
5765
5772
|
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_1_Template, 1, 1, "mj-agent-permissions-dialog", 3);
|
|
5766
5773
|
} if (rf & 2) {
|
|
5767
5774
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
5768
5775
|
i0.ɵɵadvance();
|
|
5769
5776
|
i0.ɵɵconditional(ctx.ShowPermissionsDialog ? 1 : -1);
|
|
5770
|
-
} }, 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, 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}"] }); }
|
|
5777
|
+
} }, 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}"] }); }
|
|
5771
5778
|
};
|
|
5772
5779
|
MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
5773
5780
|
RegisterClass(BaseFormComponent, 'MJ: AI Agents')
|
|
@@ -5775,7 +5782,7 @@ MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
|
5775
5782
|
export { MJAIAgentFormComponentExtended };
|
|
5776
5783
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentFormComponentExtended, [{
|
|
5777
5784
|
type: Component,
|
|
5778
|
-
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 }\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 (execution.Result) {\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. 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 is 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 injected automatically before the first LLM call.\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. Access falls back to this agent's <code>SearchScopeAccess</code> setting.\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"] }]
|
|
5785
|
+
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 (execution.Result) {\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. 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 is 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 injected automatically before the first LLM call.\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. Access falls back to this agent's <code>SearchScopeAccess</code> setting.\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"] }]
|
|
5779
5786
|
}], null, { CustomSectionContainer: [{
|
|
5780
5787
|
type: ViewChild,
|
|
5781
5788
|
args: ['customSectionContainer', { read: ViewContainerRef }]
|