@memberjunction/ng-core-entity-forms 5.40.2 → 5.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/bridge-provider-features.test.d.ts +2 -0
- package/dist/__tests__/bridge-provider-features.test.d.ts.map +1 -0
- package/dist/__tests__/bridge-provider-features.test.js +70 -0
- package/dist/__tests__/bridge-provider-features.test.js.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts +17 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js +170 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +133 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +1190 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +69 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +911 -562
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts +20 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js +115 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +50 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +75 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts +48 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +256 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +28 -4
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +42 -12
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +6 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +11 -1
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts +43 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts.map +1 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js +278 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +32 -26
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +34 -1
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +284 -180
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +117 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +16 -20
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +185 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +121 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js +94 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +37 -15
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js +90 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +7 -9
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +358 -343
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +426 -366
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +74 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +365 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -0
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
|
@@ -34,10 +34,11 @@ import * as i8 from "@memberjunction/ng-search";
|
|
|
34
34
|
import * as i9 from "@angular/common";
|
|
35
35
|
const _c0 = ["customSectionContainer"];
|
|
36
36
|
const _c1 = () => ({ standalone: true });
|
|
37
|
-
const _forTrack0 = ($index, $item) => $item.ID;
|
|
38
|
-
const _forTrack1 = ($index, $item) => $item.
|
|
39
|
-
const _forTrack2 = ($index, $item) => $item.
|
|
40
|
-
const _forTrack3 = ($index, $item) => $item.
|
|
37
|
+
const _forTrack0 = ($index, $item) => $item.row.ID;
|
|
38
|
+
const _forTrack1 = ($index, $item) => $item.ID;
|
|
39
|
+
const _forTrack2 = ($index, $item) => $item.agent.ID;
|
|
40
|
+
const _forTrack3 = ($index, $item) => $item.ScopeID;
|
|
41
|
+
const _forTrack4 = ($index, $item) => $item.Principal + $item.Level;
|
|
41
42
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
42
43
|
i0.ɵɵelement(0, "img", 114);
|
|
43
44
|
} if (rf & 2) {
|
|
@@ -246,8 +247,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template(rf,
|
|
|
246
247
|
i0.ɵɵconditional(ctx_r1.loadingStates.customSection ? 3 : -1);
|
|
247
248
|
} }
|
|
248
249
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
249
|
-
i0.ɵɵelementStart(0, "span",
|
|
250
|
-
i0.ɵɵelement(1, "i",
|
|
250
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
251
|
+
i0.ɵɵelement(1, "i", 150);
|
|
251
252
|
i0.ɵɵelementEnd();
|
|
252
253
|
} }
|
|
253
254
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -270,20 +271,208 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_
|
|
|
270
271
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount < ctx_r1.totalExecutionHistoryCount ? 2 : -1);
|
|
271
272
|
} }
|
|
272
273
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
-
i0.ɵɵelement(0, "i",
|
|
274
|
+
i0.ɵɵelement(0, "i", 148);
|
|
274
275
|
i0.ɵɵtext(1, " Execution History ");
|
|
275
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
276
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Conditional_3_Template, 4, 2, "span");
|
|
276
277
|
} if (rf & 2) {
|
|
277
278
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
278
279
|
i0.ɵɵadvance(2);
|
|
279
280
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 2 : ctx_r1.executionHistoryCount > 0 ? 3 : -1);
|
|
280
281
|
} }
|
|
282
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
283
|
+
i0.ɵɵelementStart(0, "span", 153);
|
|
284
|
+
i0.ɵɵtext(1);
|
|
285
|
+
i0.ɵɵelementEnd();
|
|
286
|
+
} if (rf & 2) {
|
|
287
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
288
|
+
i0.ɵɵadvance();
|
|
289
|
+
i0.ɵɵtextInterpolate(ctx_r1.totalExecutionHistoryCount);
|
|
290
|
+
} }
|
|
291
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelementStart(0, "span", 153);
|
|
293
|
+
i0.ɵɵtext(1);
|
|
294
|
+
i0.ɵɵelementEnd();
|
|
295
|
+
} if (rf & 2) {
|
|
296
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
297
|
+
i0.ɵɵadvance();
|
|
298
|
+
i0.ɵɵtextInterpolate(ctx_r1.totalSessionCount);
|
|
299
|
+
} }
|
|
281
300
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
-
i0.ɵɵ
|
|
301
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 147)(1, "button", 151);
|
|
303
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("runs")); });
|
|
304
|
+
i0.ɵɵelement(2, "i", 152);
|
|
305
|
+
i0.ɵɵtext(3, " Runs ");
|
|
306
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Conditional_4_Template, 2, 1, "span", 153);
|
|
307
|
+
i0.ɵɵelementEnd();
|
|
308
|
+
i0.ɵɵelementStart(5, "button", 151);
|
|
309
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setExecutionHistoryView("sessions")); });
|
|
310
|
+
i0.ɵɵelement(6, "i", 154);
|
|
311
|
+
i0.ɵɵtext(7, " Sessions ");
|
|
312
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Conditional_8_Template, 2, 1, "span", 153);
|
|
313
|
+
i0.ɵɵelementEnd()();
|
|
314
|
+
} if (rf & 2) {
|
|
315
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
|
+
i0.ɵɵadvance();
|
|
317
|
+
i0.ɵɵclassProp("active", ctx_r1.executionHistoryView === "runs");
|
|
318
|
+
i0.ɵɵadvance(3);
|
|
319
|
+
i0.ɵɵconditional(ctx_r1.totalExecutionHistoryCount > 0 ? 4 : -1);
|
|
320
|
+
i0.ɵɵadvance();
|
|
321
|
+
i0.ɵɵclassProp("active", ctx_r1.executionHistoryView === "sessions");
|
|
322
|
+
i0.ɵɵadvance(3);
|
|
323
|
+
i0.ɵɵconditional(ctx_r1.totalSessionCount > 0 ? 8 : -1);
|
|
324
|
+
} }
|
|
325
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
326
|
+
i0.ɵɵelement(0, "mj-loading", 155);
|
|
327
|
+
} }
|
|
328
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
329
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
330
|
+
i0.ɵɵelement(1, "i", 154);
|
|
331
|
+
i0.ɵɵelementStart(2, "h4");
|
|
332
|
+
i0.ɵɵtext(3, "No Voice Sessions");
|
|
333
|
+
i0.ɵɵelementEnd();
|
|
334
|
+
i0.ɵɵelementStart(4, "p");
|
|
335
|
+
i0.ɵɵtext(5, "This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.");
|
|
336
|
+
i0.ɵɵelementEnd()();
|
|
337
|
+
} }
|
|
338
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelementStart(0, "span", 166);
|
|
340
|
+
i0.ɵɵtext(1, "as co-agent");
|
|
341
|
+
i0.ɵɵelementEnd();
|
|
342
|
+
} }
|
|
343
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
+
i0.ɵɵelementStart(0, "span", 167);
|
|
345
|
+
i0.ɵɵtext(1, "as target");
|
|
346
|
+
i0.ɵɵelementEnd();
|
|
347
|
+
} }
|
|
348
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
350
|
+
i0.ɵɵelement(1, "i", 180);
|
|
351
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
352
|
+
i0.ɵɵtext(3, "Target:");
|
|
353
|
+
i0.ɵɵelementEnd();
|
|
354
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
355
|
+
i0.ɵɵtext(5);
|
|
356
|
+
i0.ɵɵelementEnd()();
|
|
357
|
+
} if (rf & 2) {
|
|
358
|
+
const item_r11 = i0.ɵɵnextContext().$implicit;
|
|
359
|
+
i0.ɵɵadvance(5);
|
|
360
|
+
i0.ɵɵtextInterpolate(item_r11.targetAgentName);
|
|
361
|
+
} }
|
|
362
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
363
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
364
|
+
i0.ɵɵelement(1, "i", 154);
|
|
365
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
366
|
+
i0.ɵɵtext(3, "Co-agent:");
|
|
367
|
+
i0.ɵɵelementEnd();
|
|
368
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
369
|
+
i0.ɵɵtext(5);
|
|
370
|
+
i0.ɵɵelementEnd()();
|
|
371
|
+
} if (rf & 2) {
|
|
372
|
+
const item_r11 = i0.ɵɵnextContext().$implicit;
|
|
373
|
+
i0.ɵɵadvance(5);
|
|
374
|
+
i0.ɵɵtextInterpolate(item_r11.row.Agent);
|
|
375
|
+
} }
|
|
376
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
378
|
+
i0.ɵɵelementStart(0, "div", 159);
|
|
379
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Template_div_click_0_listener() { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSessionRecord(item_r11.row.ID)); });
|
|
380
|
+
i0.ɵɵelementStart(1, "div", 160)(2, "div", 161)(3, "div", 162)(4, "div", 163);
|
|
381
|
+
i0.ɵɵelement(5, "i");
|
|
382
|
+
i0.ɵɵelementEnd();
|
|
383
|
+
i0.ɵɵelementStart(6, "div", 164)(7, "div", 165);
|
|
384
|
+
i0.ɵɵtext(8);
|
|
385
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_9_Template, 2, 0, "span", 166);
|
|
386
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_10_Template, 2, 0, "span", 167);
|
|
387
|
+
i0.ɵɵelementEnd();
|
|
388
|
+
i0.ɵɵelementStart(11, "div", 168);
|
|
389
|
+
i0.ɵɵtext(12);
|
|
390
|
+
i0.ɵɵpipe(13, "date");
|
|
391
|
+
i0.ɵɵelementEnd()()();
|
|
392
|
+
i0.ɵɵelementStart(14, "div", 169)(15, "div", 170)(16, "span", 171);
|
|
393
|
+
i0.ɵɵtext(17);
|
|
394
|
+
i0.ɵɵelementEnd()();
|
|
395
|
+
i0.ɵɵelementStart(18, "div", 170);
|
|
396
|
+
i0.ɵɵelement(19, "i", 172);
|
|
397
|
+
i0.ɵɵelementStart(20, "span", 173);
|
|
398
|
+
i0.ɵɵtext(21, "Duration:");
|
|
399
|
+
i0.ɵɵelementEnd();
|
|
400
|
+
i0.ɵɵelementStart(22, "span", 174);
|
|
401
|
+
i0.ɵɵtext(23);
|
|
402
|
+
i0.ɵɵelementEnd()();
|
|
403
|
+
i0.ɵɵelementStart(24, "div", 170);
|
|
404
|
+
i0.ɵɵelement(25, "i", 175);
|
|
405
|
+
i0.ɵɵelementStart(26, "span", 173);
|
|
406
|
+
i0.ɵɵtext(27, "Channels:");
|
|
407
|
+
i0.ɵɵelementEnd();
|
|
408
|
+
i0.ɵɵelementStart(28, "span", 174);
|
|
409
|
+
i0.ɵɵtext(29);
|
|
410
|
+
i0.ɵɵelementEnd()();
|
|
411
|
+
i0.ɵɵconditionalCreate(30, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_30_Template, 6, 1, "div", 170);
|
|
412
|
+
i0.ɵɵconditionalCreate(31, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Conditional_31_Template, 6, 1, "div", 170);
|
|
413
|
+
i0.ɵɵelementStart(32, "div", 170);
|
|
414
|
+
i0.ɵɵelement(33, "i", 176);
|
|
415
|
+
i0.ɵɵelementStart(34, "span", 173);
|
|
416
|
+
i0.ɵɵtext(35, "User:");
|
|
417
|
+
i0.ɵɵelementEnd();
|
|
418
|
+
i0.ɵɵelementStart(36, "span", 174);
|
|
419
|
+
i0.ɵɵtext(37);
|
|
420
|
+
i0.ɵɵelementEnd()()()();
|
|
421
|
+
i0.ɵɵelementStart(38, "div", 177)(39, "button", 178);
|
|
422
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Template_button_click_39_listener($event) { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openSessionRecord(item_r11.row.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
423
|
+
i0.ɵɵelement(40, "i", 179);
|
|
424
|
+
i0.ɵɵelementEnd()()()();
|
|
425
|
+
} if (rf & 2) {
|
|
426
|
+
const item_r11 = ctx.$implicit;
|
|
427
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
428
|
+
i0.ɵɵadvance(4);
|
|
429
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getSessionStatusColor(item_r11.row.Status));
|
|
430
|
+
i0.ɵɵadvance();
|
|
431
|
+
i0.ɵɵclassMap(ctx_r1.getSessionStatusIcon(item_r11.row.Status));
|
|
432
|
+
i0.ɵɵadvance(3);
|
|
433
|
+
i0.ɵɵtextInterpolate1(" Session #", item_r11.row.ID.substring(0, 8), " ");
|
|
434
|
+
i0.ɵɵadvance();
|
|
435
|
+
i0.ɵɵconditional(item_r11.isCoAgent ? 9 : -1);
|
|
436
|
+
i0.ɵɵadvance();
|
|
437
|
+
i0.ɵɵconditional(item_r11.isTarget ? 10 : -1);
|
|
438
|
+
i0.ɵɵadvance(2);
|
|
439
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 15, item_r11.row.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
440
|
+
i0.ɵɵadvance(4);
|
|
441
|
+
i0.ɵɵattribute("data-status", item_r11.row.Status);
|
|
442
|
+
i0.ɵɵadvance();
|
|
443
|
+
i0.ɵɵtextInterpolate(item_r11.row.Status);
|
|
444
|
+
i0.ɵɵadvance(6);
|
|
445
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatSessionDuration(item_r11));
|
|
446
|
+
i0.ɵɵadvance(6);
|
|
447
|
+
i0.ɵɵtextInterpolate(item_r11.channelCount);
|
|
448
|
+
i0.ɵɵadvance();
|
|
449
|
+
i0.ɵɵconditional(item_r11.isCoAgent && item_r11.targetAgentName ? 30 : -1);
|
|
450
|
+
i0.ɵɵadvance();
|
|
451
|
+
i0.ɵɵconditional(item_r11.isTarget && !item_r11.isCoAgent && item_r11.row.Agent ? 31 : -1);
|
|
452
|
+
i0.ɵɵadvance(6);
|
|
453
|
+
i0.ɵɵtextInterpolate(item_r11.row.User);
|
|
454
|
+
} }
|
|
455
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
i0.ɵɵelementStart(0, "div", 157);
|
|
457
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_For_2_Template, 41, 18, "div", 158, _forTrack0);
|
|
458
|
+
i0.ɵɵelementEnd();
|
|
459
|
+
} if (rf & 2) {
|
|
460
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
461
|
+
i0.ɵɵadvance();
|
|
462
|
+
i0.ɵɵrepeater(ctx_r1.agentSessions);
|
|
283
463
|
} }
|
|
284
464
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
285
|
-
i0.ɵɵ
|
|
286
|
-
|
|
465
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_0_Template, 1, 0, "mj-loading", 155)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_1_Template, 6, 0, "div", 156)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Conditional_2_Template, 3, 0, "div", 157);
|
|
466
|
+
} if (rf & 2) {
|
|
467
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
468
|
+
i0.ɵɵconditional(ctx_r1.loadingSessions ? 0 : ctx_r1.agentSessions.length === 0 ? 1 : 2);
|
|
469
|
+
} }
|
|
470
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
471
|
+
i0.ɵɵelement(0, "mj-loading", 181);
|
|
472
|
+
} }
|
|
473
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
474
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
475
|
+
i0.ɵɵelement(1, "i", 148);
|
|
287
476
|
i0.ɵɵelementStart(2, "h4");
|
|
288
477
|
i0.ɵɵtext(3, "No Execution History");
|
|
289
478
|
i0.ɵɵelementEnd();
|
|
@@ -291,9 +480,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_
|
|
|
291
480
|
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
292
481
|
i0.ɵɵelementEnd()();
|
|
293
482
|
} }
|
|
294
|
-
function
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
i0.ɵɵelement(1, "i",
|
|
483
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
484
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
485
|
+
i0.ɵɵelement(1, "i", 184);
|
|
297
486
|
i0.ɵɵelementStart(2, "h4");
|
|
298
487
|
i0.ɵɵtext(3, "No Matching Results");
|
|
299
488
|
i0.ɵɵelementEnd();
|
|
@@ -301,321 +490,321 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_
|
|
|
301
490
|
i0.ɵɵtext(5);
|
|
302
491
|
i0.ɵɵelementEnd()();
|
|
303
492
|
} if (rf & 2) {
|
|
304
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
493
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
305
494
|
i0.ɵɵadvance(5);
|
|
306
495
|
i0.ɵɵtextInterpolate1("No execution history found matching \"", ctx_r1.executionSearchText, "\"");
|
|
307
496
|
} }
|
|
308
|
-
function
|
|
309
|
-
i0.ɵɵelementStart(0, "div",
|
|
310
|
-
i0.ɵɵelement(1, "i",
|
|
311
|
-
i0.ɵɵelementStart(2, "span",
|
|
497
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
499
|
+
i0.ɵɵelement(1, "i", 193);
|
|
500
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
312
501
|
i0.ɵɵtext(3, "Config:");
|
|
313
502
|
i0.ɵɵelementEnd();
|
|
314
|
-
i0.ɵɵelementStart(4, "span",
|
|
503
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
315
504
|
i0.ɵɵtext(5);
|
|
316
505
|
i0.ɵɵelementEnd()();
|
|
317
506
|
} if (rf & 2) {
|
|
318
|
-
const
|
|
507
|
+
const execution_r14 = i0.ɵɵnextContext().$implicit;
|
|
319
508
|
i0.ɵɵadvance(5);
|
|
320
|
-
i0.ɵɵtextInterpolate(
|
|
509
|
+
i0.ɵɵtextInterpolate(execution_r14.Configuration);
|
|
321
510
|
} }
|
|
322
|
-
function
|
|
323
|
-
i0.ɵɵelementStart(0, "div",
|
|
324
|
-
i0.ɵɵelement(1, "i",
|
|
325
|
-
i0.ɵɵelementStart(2, "span",
|
|
511
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
513
|
+
i0.ɵɵelement(1, "i", 172);
|
|
514
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
326
515
|
i0.ɵɵtext(3, "Duration:");
|
|
327
516
|
i0.ɵɵelementEnd();
|
|
328
|
-
i0.ɵɵelementStart(4, "span",
|
|
517
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
329
518
|
i0.ɵɵtext(5);
|
|
330
519
|
i0.ɵɵelementEnd()();
|
|
331
520
|
} if (rf & 2) {
|
|
332
|
-
const
|
|
333
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
521
|
+
const execution_r14 = i0.ɵɵnextContext().$implicit;
|
|
522
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
334
523
|
i0.ɵɵadvance(5);
|
|
335
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(
|
|
524
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(execution_r14.StartedAt, execution_r14.CompletedAt));
|
|
336
525
|
} }
|
|
337
|
-
function
|
|
338
|
-
i0.ɵɵelementStart(0, "div",
|
|
339
|
-
i0.ɵɵelement(1, "i",
|
|
340
|
-
i0.ɵɵelementStart(2, "span",
|
|
526
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
527
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
528
|
+
i0.ɵɵelement(1, "i", 194);
|
|
529
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
341
530
|
i0.ɵɵtext(3, "Running:");
|
|
342
531
|
i0.ɵɵelementEnd()();
|
|
343
532
|
} }
|
|
344
|
-
function
|
|
345
|
-
i0.ɵɵelementStart(0, "div",
|
|
346
|
-
i0.ɵɵelement(1, "i",
|
|
347
|
-
i0.ɵɵelementStart(2, "span",
|
|
533
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
534
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
535
|
+
i0.ɵɵelement(1, "i", 195);
|
|
536
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
348
537
|
i0.ɵɵtext(3, "Tokens:");
|
|
349
538
|
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelementStart(4, "span",
|
|
539
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
351
540
|
i0.ɵɵtext(5);
|
|
352
541
|
i0.ɵɵelementEnd()();
|
|
353
542
|
} if (rf & 2) {
|
|
354
|
-
const
|
|
355
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
543
|
+
const execution_r14 = i0.ɵɵnextContext().$implicit;
|
|
544
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
356
545
|
i0.ɵɵadvance(5);
|
|
357
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
546
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r14.TotalTokensUsedRollup || execution_r14.TotalTokensUsed));
|
|
358
547
|
} }
|
|
359
|
-
function
|
|
360
|
-
i0.ɵɵelementStart(0, "div",
|
|
361
|
-
i0.ɵɵelement(1, "i",
|
|
362
|
-
i0.ɵɵelementStart(2, "span",
|
|
548
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
549
|
+
i0.ɵɵelementStart(0, "div", 170);
|
|
550
|
+
i0.ɵɵelement(1, "i", 196);
|
|
551
|
+
i0.ɵɵelementStart(2, "span", 173);
|
|
363
552
|
i0.ɵɵtext(3, "Cost:");
|
|
364
553
|
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵelementStart(4, "span",
|
|
554
|
+
i0.ɵɵelementStart(4, "span", 174);
|
|
366
555
|
i0.ɵɵtext(5);
|
|
367
556
|
i0.ɵɵelementEnd()();
|
|
368
557
|
} if (rf & 2) {
|
|
369
|
-
const
|
|
370
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
558
|
+
const execution_r14 = i0.ɵɵnextContext().$implicit;
|
|
559
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
371
560
|
i0.ɵɵadvance(5);
|
|
372
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
561
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r14.TotalCostRollup || execution_r14.TotalCost));
|
|
373
562
|
} }
|
|
374
|
-
function
|
|
375
|
-
i0.ɵɵelementStart(0, "div",
|
|
376
|
-
i0.ɵɵelement(1, "i",
|
|
377
|
-
i0.ɵɵelementStart(2, "div",
|
|
563
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
565
|
+
i0.ɵɵelement(1, "i", 205);
|
|
566
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
378
567
|
i0.ɵɵtext(4, "Completed");
|
|
379
568
|
i0.ɵɵelementEnd();
|
|
380
|
-
i0.ɵɵelementStart(5, "span",
|
|
569
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
381
570
|
i0.ɵɵtext(6);
|
|
382
571
|
i0.ɵɵpipe(7, "date");
|
|
383
572
|
i0.ɵɵelementEnd()()();
|
|
384
573
|
} if (rf & 2) {
|
|
385
|
-
const
|
|
574
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
386
575
|
i0.ɵɵadvance(6);
|
|
387
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1,
|
|
576
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, execution_r14.CompletedAt, "medium"));
|
|
388
577
|
} }
|
|
389
|
-
function
|
|
390
|
-
i0.ɵɵelementStart(0, "div",
|
|
391
|
-
i0.ɵɵelement(1, "i",
|
|
392
|
-
i0.ɵɵelementStart(2, "div",
|
|
578
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
579
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
580
|
+
i0.ɵɵelement(1, "i", 195);
|
|
581
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
393
582
|
i0.ɵɵtext(4, "Direct Tokens");
|
|
394
583
|
i0.ɵɵelementEnd();
|
|
395
|
-
i0.ɵɵelementStart(5, "span",
|
|
584
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
396
585
|
i0.ɵɵtext(6);
|
|
397
586
|
i0.ɵɵelementEnd()()();
|
|
398
587
|
} if (rf & 2) {
|
|
399
|
-
const
|
|
400
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
588
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
589
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
401
590
|
i0.ɵɵadvance(6);
|
|
402
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
591
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r14.TotalTokensUsed));
|
|
403
592
|
} }
|
|
404
|
-
function
|
|
405
|
-
i0.ɵɵelementStart(0, "div",
|
|
593
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
594
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
406
595
|
i0.ɵɵelement(1, "i", 84);
|
|
407
|
-
i0.ɵɵelementStart(2, "div",
|
|
596
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
408
597
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
409
598
|
i0.ɵɵelementEnd();
|
|
410
|
-
i0.ɵɵelementStart(5, "span",
|
|
599
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
411
600
|
i0.ɵɵtext(6);
|
|
412
601
|
i0.ɵɵelementEnd()()();
|
|
413
602
|
} if (rf & 2) {
|
|
414
|
-
const
|
|
415
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
603
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
604
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
416
605
|
i0.ɵɵadvance(6);
|
|
417
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
606
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r14.TotalTokensUsedRollup));
|
|
418
607
|
} }
|
|
419
|
-
function
|
|
420
|
-
i0.ɵɵelementStart(0, "div",
|
|
421
|
-
i0.ɵɵelement(1, "i",
|
|
422
|
-
i0.ɵɵelementStart(2, "div",
|
|
608
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
609
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
610
|
+
i0.ɵɵelement(1, "i", 196);
|
|
611
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
423
612
|
i0.ɵɵtext(4, "Direct Cost");
|
|
424
613
|
i0.ɵɵelementEnd();
|
|
425
|
-
i0.ɵɵelementStart(5, "span",
|
|
614
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
426
615
|
i0.ɵɵtext(6);
|
|
427
616
|
i0.ɵɵelementEnd()()();
|
|
428
617
|
} if (rf & 2) {
|
|
429
|
-
const
|
|
430
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
618
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
619
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
431
620
|
i0.ɵɵadvance(6);
|
|
432
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
621
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r14.TotalCost));
|
|
433
622
|
} }
|
|
434
|
-
function
|
|
435
|
-
i0.ɵɵelementStart(0, "div",
|
|
436
|
-
i0.ɵɵelement(1, "i",
|
|
437
|
-
i0.ɵɵelementStart(2, "div",
|
|
623
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
624
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
625
|
+
i0.ɵɵelement(1, "i", 206);
|
|
626
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
438
627
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
439
628
|
i0.ɵɵelementEnd();
|
|
440
|
-
i0.ɵɵelementStart(5, "span",
|
|
629
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
441
630
|
i0.ɵɵtext(6);
|
|
442
631
|
i0.ɵɵelementEnd()()();
|
|
443
632
|
} if (rf & 2) {
|
|
444
|
-
const
|
|
445
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
633
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
634
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
446
635
|
i0.ɵɵadvance(6);
|
|
447
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
636
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r14.TotalCostRollup));
|
|
448
637
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "div",
|
|
451
|
-
i0.ɵɵelement(1, "i",
|
|
452
|
-
i0.ɵɵelementStart(2, "div",
|
|
638
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
639
|
+
i0.ɵɵelementStart(0, "div", 199);
|
|
640
|
+
i0.ɵɵelement(1, "i", 207);
|
|
641
|
+
i0.ɵɵelementStart(2, "div", 200)(3, "span", 201);
|
|
453
642
|
i0.ɵɵtext(4, "Conversation");
|
|
454
643
|
i0.ɵɵelementEnd();
|
|
455
|
-
i0.ɵɵelementStart(5, "span",
|
|
644
|
+
i0.ɵɵelementStart(5, "span", 202);
|
|
456
645
|
i0.ɵɵtext(6);
|
|
457
646
|
i0.ɵɵelementEnd()()();
|
|
458
647
|
} if (rf & 2) {
|
|
459
|
-
const
|
|
648
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
460
649
|
i0.ɵɵadvance(6);
|
|
461
|
-
i0.ɵɵtextInterpolate1("",
|
|
650
|
+
i0.ɵɵtextInterpolate1("", execution_r14.ConversationID.substring(0, 8), "...");
|
|
462
651
|
} }
|
|
463
|
-
function
|
|
464
|
-
i0.ɵɵelementStart(0, "div",
|
|
465
|
-
i0.ɵɵelement(2, "i",
|
|
652
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
653
|
+
i0.ɵɵelementStart(0, "div", 203)(1, "h5");
|
|
654
|
+
i0.ɵɵelement(2, "i", 208);
|
|
466
655
|
i0.ɵɵtext(3, " Result");
|
|
467
656
|
i0.ɵɵelementEnd();
|
|
468
|
-
i0.ɵɵelement(4, "mj-code-editor",
|
|
657
|
+
i0.ɵɵelement(4, "mj-code-editor", 209);
|
|
469
658
|
i0.ɵɵelementEnd();
|
|
470
659
|
} if (rf & 2) {
|
|
471
|
-
const
|
|
472
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
660
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
661
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
473
662
|
i0.ɵɵadvance(4);
|
|
474
|
-
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(
|
|
663
|
+
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r14, false))("readonly", true)("lineWrapping", true);
|
|
475
664
|
} }
|
|
476
|
-
function
|
|
477
|
-
i0.ɵɵelementStart(0, "div",
|
|
478
|
-
i0.ɵɵelement(2, "i",
|
|
665
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
666
|
+
i0.ɵɵelementStart(0, "div", 204)(1, "h5");
|
|
667
|
+
i0.ɵɵelement(2, "i", 210);
|
|
479
668
|
i0.ɵɵtext(3, " Error");
|
|
480
669
|
i0.ɵɵelementEnd();
|
|
481
|
-
i0.ɵɵelementStart(4, "div",
|
|
670
|
+
i0.ɵɵelementStart(4, "div", 211);
|
|
482
671
|
i0.ɵɵtext(5);
|
|
483
672
|
i0.ɵɵelementEnd()();
|
|
484
673
|
} if (rf & 2) {
|
|
485
|
-
const
|
|
674
|
+
const execution_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
486
675
|
i0.ɵɵadvance(5);
|
|
487
|
-
i0.ɵɵtextInterpolate(
|
|
676
|
+
i0.ɵɵtextInterpolate(execution_r14.ErrorMessage);
|
|
488
677
|
} }
|
|
489
|
-
function
|
|
490
|
-
i0.ɵɵelementStart(0, "div",
|
|
491
|
-
i0.ɵɵelement(4, "i",
|
|
492
|
-
i0.ɵɵelementStart(5, "div",
|
|
678
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
679
|
+
i0.ɵɵelementStart(0, "div", 192)(1, "div", 197)(2, "div", 198)(3, "div", 199);
|
|
680
|
+
i0.ɵɵelement(4, "i", 194);
|
|
681
|
+
i0.ɵɵelementStart(5, "div", 200)(6, "span", 201);
|
|
493
682
|
i0.ɵɵtext(7, "Started");
|
|
494
683
|
i0.ɵɵelementEnd();
|
|
495
|
-
i0.ɵɵelementStart(8, "span",
|
|
684
|
+
i0.ɵɵelementStart(8, "span", 202);
|
|
496
685
|
i0.ɵɵtext(9);
|
|
497
686
|
i0.ɵɵpipe(10, "date");
|
|
498
687
|
i0.ɵɵelementEnd()()();
|
|
499
|
-
i0.ɵɵconditionalCreate(11,
|
|
500
|
-
i0.ɵɵconditionalCreate(12,
|
|
501
|
-
i0.ɵɵconditionalCreate(13,
|
|
502
|
-
i0.ɵɵconditionalCreate(14,
|
|
503
|
-
i0.ɵɵconditionalCreate(15,
|
|
504
|
-
i0.ɵɵconditionalCreate(16,
|
|
688
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_11_Template, 8, 4, "div", 199);
|
|
689
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_12_Template, 7, 1, "div", 199);
|
|
690
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_13_Template, 7, 1, "div", 199);
|
|
691
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_14_Template, 7, 1, "div", 199);
|
|
692
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_15_Template, 7, 1, "div", 199);
|
|
693
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_16_Template, 7, 1, "div", 199);
|
|
505
694
|
i0.ɵɵelementEnd()();
|
|
506
|
-
i0.ɵɵconditionalCreate(17,
|
|
507
|
-
i0.ɵɵconditionalCreate(18,
|
|
695
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_17_Template, 5, 3, "div", 203);
|
|
696
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Conditional_18_Template, 6, 1, "div", 204);
|
|
508
697
|
i0.ɵɵelementEnd();
|
|
509
698
|
} if (rf & 2) {
|
|
510
|
-
const
|
|
699
|
+
const execution_r14 = i0.ɵɵnextContext().$implicit;
|
|
511
700
|
i0.ɵɵadvance(9);
|
|
512
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9,
|
|
701
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9, execution_r14.StartedAt, "medium"));
|
|
513
702
|
i0.ɵɵadvance(2);
|
|
514
|
-
i0.ɵɵconditional(
|
|
703
|
+
i0.ɵɵconditional(execution_r14.CompletedAt ? 11 : -1);
|
|
515
704
|
i0.ɵɵadvance();
|
|
516
|
-
i0.ɵɵconditional(
|
|
705
|
+
i0.ɵɵconditional(execution_r14.TotalTokensUsed ? 12 : -1);
|
|
517
706
|
i0.ɵɵadvance();
|
|
518
|
-
i0.ɵɵconditional(
|
|
707
|
+
i0.ɵɵconditional(execution_r14.TotalTokensUsedRollup && execution_r14.TotalTokensUsedRollup !== execution_r14.TotalTokensUsed ? 13 : -1);
|
|
519
708
|
i0.ɵɵadvance();
|
|
520
|
-
i0.ɵɵconditional(
|
|
709
|
+
i0.ɵɵconditional(execution_r14.TotalCost ? 14 : -1);
|
|
521
710
|
i0.ɵɵadvance();
|
|
522
|
-
i0.ɵɵconditional(
|
|
711
|
+
i0.ɵɵconditional(execution_r14.TotalCostRollup && execution_r14.TotalCostRollup !== execution_r14.TotalCost ? 15 : -1);
|
|
523
712
|
i0.ɵɵadvance();
|
|
524
|
-
i0.ɵɵconditional(
|
|
713
|
+
i0.ɵɵconditional(execution_r14.ConversationID ? 16 : -1);
|
|
525
714
|
i0.ɵɵadvance();
|
|
526
|
-
i0.ɵɵconditional(
|
|
715
|
+
i0.ɵɵconditional(execution_r14.Result ? 17 : -1);
|
|
527
716
|
i0.ɵɵadvance();
|
|
528
|
-
i0.ɵɵconditional(
|
|
717
|
+
i0.ɵɵconditional(execution_r14.ErrorMessage ? 18 : -1);
|
|
529
718
|
} }
|
|
530
|
-
function
|
|
531
|
-
const
|
|
532
|
-
i0.ɵɵelementStart(0, "div",
|
|
533
|
-
i0.ɵɵlistener("click", function
|
|
719
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
720
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
721
|
+
i0.ɵɵelementStart(0, "div", 188)(1, "div", 189);
|
|
722
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Template_div_click_1_listener() { const execution_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r14.ID)); });
|
|
534
723
|
i0.ɵɵelementStart(2, "div", 161)(3, "div", 162)(4, "div", 163);
|
|
535
724
|
i0.ɵɵelement(5, "i");
|
|
536
725
|
i0.ɵɵelementEnd();
|
|
537
726
|
i0.ɵɵelementStart(6, "div", 164)(7, "div", 165);
|
|
538
|
-
i0.ɵɵelement(8, "i",
|
|
727
|
+
i0.ɵɵelement(8, "i", 190);
|
|
539
728
|
i0.ɵɵtext(9);
|
|
540
729
|
i0.ɵɵelementEnd();
|
|
541
|
-
i0.ɵɵelementStart(10, "div",
|
|
730
|
+
i0.ɵɵelementStart(10, "div", 168);
|
|
542
731
|
i0.ɵɵtext(11);
|
|
543
732
|
i0.ɵɵpipe(12, "date");
|
|
544
733
|
i0.ɵɵelementEnd()()();
|
|
545
|
-
i0.ɵɵelementStart(13, "div",
|
|
546
|
-
i0.ɵɵconditionalCreate(14,
|
|
547
|
-
i0.ɵɵconditionalCreate(15,
|
|
548
|
-
i0.ɵɵconditionalCreate(17,
|
|
549
|
-
i0.ɵɵconditionalCreate(18,
|
|
734
|
+
i0.ɵɵelementStart(13, "div", 169);
|
|
735
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_14_Template, 6, 1, "div", 170);
|
|
736
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_15_Template, 6, 1, "div", 170)(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_16_Template, 4, 0, "div", 170);
|
|
737
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_17_Template, 6, 1, "div", 170);
|
|
738
|
+
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_18_Template, 6, 1, "div", 170);
|
|
550
739
|
i0.ɵɵelementEnd()();
|
|
551
|
-
i0.ɵɵelementStart(19, "div",
|
|
552
|
-
i0.ɵɵlistener("click", function
|
|
553
|
-
i0.ɵɵelement(21, "i",
|
|
740
|
+
i0.ɵɵelementStart(19, "div", 177)(20, "button", 191);
|
|
741
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Template_button_click_20_listener($event) { const execution_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r14.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
742
|
+
i0.ɵɵelement(21, "i", 179);
|
|
554
743
|
i0.ɵɵelementEnd()()();
|
|
555
|
-
i0.ɵɵconditionalCreate(22,
|
|
744
|
+
i0.ɵɵconditionalCreate(22, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Conditional_22_Template, 19, 12, "div", 192);
|
|
556
745
|
i0.ɵɵelementEnd();
|
|
557
746
|
} if (rf & 2) {
|
|
558
|
-
const
|
|
559
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
560
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
747
|
+
const execution_r14 = ctx.$implicit;
|
|
748
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
749
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r14.ID]);
|
|
561
750
|
i0.ɵɵadvance(4);
|
|
562
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(
|
|
751
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r14.Status));
|
|
563
752
|
i0.ɵɵadvance();
|
|
564
|
-
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(
|
|
753
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r14.Status));
|
|
565
754
|
i0.ɵɵadvance(3);
|
|
566
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
755
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r14.ID]);
|
|
567
756
|
i0.ɵɵadvance();
|
|
568
|
-
i0.ɵɵtextInterpolate1(" Execution #",
|
|
757
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r14.ID.substring(0, 8), " ");
|
|
569
758
|
i0.ɵɵadvance(2);
|
|
570
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15,
|
|
759
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15, execution_r14.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
571
760
|
i0.ɵɵadvance(3);
|
|
572
|
-
i0.ɵɵconditional(
|
|
761
|
+
i0.ɵɵconditional(execution_r14.Configuration ? 14 : -1);
|
|
573
762
|
i0.ɵɵadvance();
|
|
574
|
-
i0.ɵɵconditional(
|
|
763
|
+
i0.ɵɵconditional(execution_r14.CompletedAt ? 15 : execution_r14.Status === "Running" ? 16 : -1);
|
|
575
764
|
i0.ɵɵadvance(2);
|
|
576
|
-
i0.ɵɵconditional(
|
|
765
|
+
i0.ɵɵconditional(execution_r14.TotalTokensUsedRollup || execution_r14.TotalTokensUsed ? 17 : -1);
|
|
577
766
|
i0.ɵɵadvance();
|
|
578
|
-
i0.ɵɵconditional(
|
|
767
|
+
i0.ɵɵconditional(execution_r14.TotalCostRollup || execution_r14.TotalCost ? 18 : -1);
|
|
579
768
|
i0.ɵɵadvance(4);
|
|
580
|
-
i0.ɵɵconditional(ctx_r1.expandedExecutions[
|
|
769
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r14.ID] ? 22 : -1);
|
|
581
770
|
} }
|
|
582
|
-
function
|
|
583
|
-
i0.ɵɵelement(0, "i",
|
|
771
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
772
|
+
i0.ɵɵelement(0, "i", 218);
|
|
584
773
|
i0.ɵɵtext(1, " Loading... ");
|
|
585
774
|
} }
|
|
586
|
-
function
|
|
775
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
587
776
|
i0.ɵɵtext(0);
|
|
588
|
-
i0.ɵɵelementStart(1, "span",
|
|
777
|
+
i0.ɵɵelementStart(1, "span", 219);
|
|
589
778
|
i0.ɵɵtext(2);
|
|
590
779
|
i0.ɵɵelementEnd();
|
|
591
780
|
} if (rf & 2) {
|
|
592
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
781
|
+
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
593
782
|
i0.ɵɵtextInterpolate2(" Page ", ctx_r1.executionHistoryCurrentPage, " of ", ctx_r1.totalPages, " ");
|
|
594
783
|
i0.ɵɵadvance(2);
|
|
595
784
|
i0.ɵɵtextInterpolate1("(", ctx_r1.totalExecutionHistoryCount, " total)");
|
|
596
785
|
} }
|
|
597
|
-
function
|
|
598
|
-
const
|
|
599
|
-
i0.ɵɵelementStart(0, "div",
|
|
600
|
-
i0.ɵɵlistener("click", function
|
|
601
|
-
i0.ɵɵelement(2, "i",
|
|
786
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
787
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
788
|
+
i0.ɵɵelementStart(0, "div", 187)(1, "button", 212);
|
|
789
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.goToPreviousPage()); });
|
|
790
|
+
i0.ɵɵelement(2, "i", 213);
|
|
602
791
|
i0.ɵɵtext(3, " Previous ");
|
|
603
792
|
i0.ɵɵelementEnd();
|
|
604
|
-
i0.ɵɵelementStart(4, "div",
|
|
605
|
-
i0.ɵɵconditionalCreate(5,
|
|
793
|
+
i0.ɵɵelementStart(4, "div", 214);
|
|
794
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Conditional_5_Template, 2, 0)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Conditional_6_Template, 3, 3);
|
|
606
795
|
i0.ɵɵelementEnd();
|
|
607
|
-
i0.ɵɵelementStart(7, "button",
|
|
608
|
-
i0.ɵɵlistener("click", function
|
|
796
|
+
i0.ɵɵelementStart(7, "button", 212);
|
|
797
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.goToNextPage()); });
|
|
609
798
|
i0.ɵɵtext(8, " Next ");
|
|
610
|
-
i0.ɵɵelement(9, "i",
|
|
799
|
+
i0.ɵɵelement(9, "i", 215);
|
|
611
800
|
i0.ɵɵelementEnd();
|
|
612
|
-
i0.ɵɵelementStart(10, "button",
|
|
613
|
-
i0.ɵɵlistener("click", function
|
|
614
|
-
i0.ɵɵelement(11, "i",
|
|
801
|
+
i0.ɵɵelementStart(10, "button", 216);
|
|
802
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
803
|
+
i0.ɵɵelement(11, "i", 217);
|
|
615
804
|
i0.ɵɵtext(12, " View All in Grid ");
|
|
616
805
|
i0.ɵɵelementEnd()();
|
|
617
806
|
} if (rf & 2) {
|
|
618
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
807
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
619
808
|
i0.ɵɵadvance();
|
|
620
809
|
i0.ɵɵproperty("disabled", !ctx_r1.hasPreviousPage || ctx_r1.isLoadingPage);
|
|
621
810
|
i0.ɵɵadvance(4);
|
|
@@ -623,21 +812,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_
|
|
|
623
812
|
i0.ɵɵadvance(2);
|
|
624
813
|
i0.ɵɵproperty("disabled", !ctx_r1.hasNextPage || ctx_r1.isLoadingPage);
|
|
625
814
|
} }
|
|
626
|
-
function
|
|
627
|
-
const
|
|
628
|
-
i0.ɵɵelementStart(0, "div",
|
|
629
|
-
i0.ɵɵelement(2, "i",
|
|
630
|
-
i0.ɵɵelementStart(3, "input",
|
|
631
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
632
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
815
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
816
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
817
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "div", 183);
|
|
818
|
+
i0.ɵɵelement(2, "i", 184);
|
|
819
|
+
i0.ɵɵelementStart(3, "input", 185);
|
|
820
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.executionSearchText, $event) || (ctx_r1.executionSearchText = $event); return i0.ɵɵresetView($event); });
|
|
821
|
+
i0.ɵɵlistener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onExecutionSearchChange()); });
|
|
633
822
|
i0.ɵɵelementEnd()()();
|
|
634
|
-
i0.ɵɵelementStart(4, "div",
|
|
635
|
-
i0.ɵɵconditionalCreate(5,
|
|
636
|
-
i0.ɵɵrepeaterCreate(6,
|
|
637
|
-
i0.ɵɵconditionalCreate(8,
|
|
823
|
+
i0.ɵɵelementStart(4, "div", 157);
|
|
824
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_5_Template, 6, 1, "div", 156);
|
|
825
|
+
i0.ɵɵrepeaterCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_For_7_Template, 23, 18, "div", 186, _forTrack1);
|
|
826
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Conditional_8_Template, 13, 3, "div", 187);
|
|
638
827
|
i0.ɵɵelementEnd();
|
|
639
828
|
} if (rf & 2) {
|
|
640
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
829
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
641
830
|
i0.ɵɵadvance(3);
|
|
642
831
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.executionSearchText);
|
|
643
832
|
i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(4, _c1));
|
|
@@ -648,21 +837,30 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_
|
|
|
648
837
|
i0.ɵɵadvance(2);
|
|
649
838
|
i0.ɵɵconditional(ctx_r1.totalPages > 1 ? 8 : -1);
|
|
650
839
|
} }
|
|
840
|
+
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_0_Template, 1, 0, "mj-loading", 181)(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_1_Template, 6, 0, "div", 156)(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Conditional_2_Template, 9, 5);
|
|
842
|
+
} if (rf & 2) {
|
|
843
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
844
|
+
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 0 : ctx_r1.executionHistoryCount === 0 ? 1 : 2);
|
|
845
|
+
} }
|
|
651
846
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
652
847
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 10);
|
|
653
848
|
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_ng_template_1_Template, 4, 1, "ng-template", 18);
|
|
654
849
|
i0.ɵɵelementStart(2, "div", 146);
|
|
655
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Template,
|
|
850
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_3_Template, 9, 6, "div", 147);
|
|
851
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_4_Template, 3, 1)(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Conditional_5_Template, 3, 1);
|
|
656
852
|
i0.ɵɵelementEnd()();
|
|
657
853
|
} if (rf & 2) {
|
|
658
854
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
659
855
|
i0.ɵɵproperty("Expanded", ctx_r1.GetSectionExpanded("history", false))("Disabled", ctx_r1.loadingStates.executionHistory);
|
|
660
856
|
i0.ɵɵadvance(3);
|
|
661
|
-
i0.ɵɵconditional(ctx_r1.
|
|
857
|
+
i0.ɵɵconditional(ctx_r1.UserCanViewSessions ? 3 : -1);
|
|
858
|
+
i0.ɵɵadvance();
|
|
859
|
+
i0.ɵɵconditional(ctx_r1.executionHistoryView === "sessions" ? 4 : 5);
|
|
662
860
|
} }
|
|
663
861
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
664
|
-
i0.ɵɵelementStart(0, "span",
|
|
665
|
-
i0.ɵɵelement(1, "i",
|
|
862
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
863
|
+
i0.ɵɵelement(1, "i", 150);
|
|
666
864
|
i0.ɵɵelementEnd();
|
|
667
865
|
} }
|
|
668
866
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -677,37 +875,37 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_
|
|
|
677
875
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
678
876
|
i0.ɵɵelement(0, "i", 88);
|
|
679
877
|
i0.ɵɵtext(1, " Actions ");
|
|
680
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
878
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
681
879
|
} if (rf & 2) {
|
|
682
880
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
683
881
|
i0.ɵɵadvance(2);
|
|
684
882
|
i0.ɵɵconditional(ctx_r1.loadingStates.actions ? 2 : ctx_r1.actionCount > 0 ? 3 : -1);
|
|
685
883
|
} }
|
|
686
884
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
687
|
-
i0.ɵɵelementStart(0, "div",
|
|
688
|
-
i0.ɵɵelement(1, "i",
|
|
885
|
+
i0.ɵɵelementStart(0, "div", 220);
|
|
886
|
+
i0.ɵɵelement(1, "i", 218);
|
|
689
887
|
i0.ɵɵelementStart(2, "p");
|
|
690
888
|
i0.ɵɵtext(3, "Loading actions...");
|
|
691
889
|
i0.ɵɵelementEnd()();
|
|
692
890
|
} }
|
|
693
891
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
694
|
-
const
|
|
695
|
-
i0.ɵɵelementStart(0, "button",
|
|
696
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
697
|
-
i0.ɵɵelement(1, "i",
|
|
892
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
893
|
+
i0.ɵɵelementStart(0, "button", 224);
|
|
894
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
895
|
+
i0.ɵɵelement(1, "i", 225);
|
|
698
896
|
i0.ɵɵtext(2, " Add Action ");
|
|
699
897
|
i0.ɵɵelementEnd();
|
|
700
898
|
} }
|
|
701
899
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
702
|
-
const
|
|
703
|
-
i0.ɵɵelementStart(0, "button",
|
|
704
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
705
|
-
i0.ɵɵelement(1, "i",
|
|
900
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
901
|
+
i0.ɵɵelementStart(0, "button", 227);
|
|
902
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
903
|
+
i0.ɵɵelement(1, "i", 225);
|
|
706
904
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
707
905
|
i0.ɵɵelementEnd();
|
|
708
906
|
} }
|
|
709
907
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
710
|
-
i0.ɵɵelementStart(0, "div",
|
|
908
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
711
909
|
i0.ɵɵelement(1, "i", 88);
|
|
712
910
|
i0.ɵɵelementStart(2, "h4");
|
|
713
911
|
i0.ɵɵtext(3, "No Actions Configured");
|
|
@@ -715,7 +913,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_
|
|
|
715
913
|
i0.ɵɵelementStart(4, "p");
|
|
716
914
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
717
915
|
i0.ɵɵelementEnd();
|
|
718
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Conditional_6_Template, 3, 0, "button",
|
|
916
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Conditional_6_Template, 3, 0, "button", 226);
|
|
719
917
|
i0.ɵɵelementEnd();
|
|
720
918
|
} if (rf & 2) {
|
|
721
919
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -723,75 +921,75 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_
|
|
|
723
921
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? 6 : -1);
|
|
724
922
|
} }
|
|
725
923
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
726
|
-
i0.ɵɵelementStart(0, "div",
|
|
924
|
+
i0.ɵɵelementStart(0, "div", 234);
|
|
727
925
|
i0.ɵɵtext(1);
|
|
728
926
|
i0.ɵɵelementEnd();
|
|
729
927
|
} if (rf & 2) {
|
|
730
|
-
const
|
|
928
|
+
const action_r19 = i0.ɵɵnextContext().$implicit;
|
|
731
929
|
i0.ɵɵadvance();
|
|
732
|
-
i0.ɵɵtextInterpolate(
|
|
930
|
+
i0.ɵɵtextInterpolate(action_r19.Description);
|
|
733
931
|
} }
|
|
734
932
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
735
|
-
i0.ɵɵelementStart(0, "span",
|
|
933
|
+
i0.ɵɵelementStart(0, "span", 236);
|
|
736
934
|
i0.ɵɵtext(1);
|
|
737
935
|
i0.ɵɵelementEnd();
|
|
738
936
|
} if (rf & 2) {
|
|
739
|
-
const
|
|
937
|
+
const action_r19 = i0.ɵɵnextContext().$implicit;
|
|
740
938
|
i0.ɵɵadvance();
|
|
741
|
-
i0.ɵɵtextInterpolate(
|
|
939
|
+
i0.ɵɵtextInterpolate(action_r19.Type);
|
|
742
940
|
} }
|
|
743
941
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
744
|
-
const
|
|
745
|
-
i0.ɵɵelementStart(0, "button",
|
|
746
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
747
|
-
i0.ɵɵelement(1, "i",
|
|
942
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
943
|
+
i0.ɵɵelementStart(0, "button", 240);
|
|
944
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r20); const action_r19 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeAction(action_r19, $event)); });
|
|
945
|
+
i0.ɵɵelement(1, "i", 241);
|
|
748
946
|
i0.ɵɵelementEnd();
|
|
749
947
|
} }
|
|
750
948
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
751
|
-
const
|
|
752
|
-
i0.ɵɵelementStart(0, "div",
|
|
753
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Template_div_click_0_listener() { const
|
|
754
|
-
i0.ɵɵelementStart(1, "div",
|
|
949
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
950
|
+
i0.ɵɵelementStart(0, "div", 230);
|
|
951
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Template_div_click_0_listener() { const action_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: Actions", action_r19.ID)); });
|
|
952
|
+
i0.ɵɵelementStart(1, "div", 231);
|
|
755
953
|
i0.ɵɵelement(2, "i");
|
|
756
954
|
i0.ɵɵelementEnd();
|
|
757
|
-
i0.ɵɵelementStart(3, "div",
|
|
955
|
+
i0.ɵɵelementStart(3, "div", 232)(4, "div", 233);
|
|
758
956
|
i0.ɵɵtext(5);
|
|
759
957
|
i0.ɵɵelementEnd();
|
|
760
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div",
|
|
761
|
-
i0.ɵɵelementStart(7, "div",
|
|
762
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span",
|
|
763
|
-
i0.ɵɵelementStart(9, "span",
|
|
958
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div", 234);
|
|
959
|
+
i0.ɵɵelementStart(7, "div", 235);
|
|
960
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span", 236);
|
|
961
|
+
i0.ɵɵelementStart(9, "span", 237);
|
|
764
962
|
i0.ɵɵelement(10, "i", 133);
|
|
765
963
|
i0.ɵɵtext(11);
|
|
766
964
|
i0.ɵɵelementEnd()()();
|
|
767
|
-
i0.ɵɵelementStart(12, "div",
|
|
768
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button",
|
|
769
|
-
i0.ɵɵelement(14, "i",
|
|
965
|
+
i0.ɵɵelementStart(12, "div", 238);
|
|
966
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button", 239);
|
|
967
|
+
i0.ɵɵelement(14, "i", 217);
|
|
770
968
|
i0.ɵɵelementEnd()();
|
|
771
969
|
} if (rf & 2) {
|
|
772
|
-
const
|
|
970
|
+
const action_r19 = ctx.$implicit;
|
|
773
971
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
774
972
|
i0.ɵɵadvance(2);
|
|
775
|
-
i0.ɵɵclassMap(ctx_r1.getActionIcon(
|
|
973
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r19));
|
|
776
974
|
i0.ɵɵadvance(3);
|
|
777
|
-
i0.ɵɵtextInterpolate(
|
|
975
|
+
i0.ɵɵtextInterpolate(action_r19.Name || "Untitled Action");
|
|
778
976
|
i0.ɵɵadvance();
|
|
779
|
-
i0.ɵɵconditional(
|
|
977
|
+
i0.ɵɵconditional(action_r19.Description ? 6 : -1);
|
|
780
978
|
i0.ɵɵadvance(2);
|
|
781
|
-
i0.ɵɵconditional(
|
|
979
|
+
i0.ɵɵconditional(action_r19.Type ? 8 : -1);
|
|
782
980
|
i0.ɵɵadvance();
|
|
783
|
-
i0.ɵɵclassProp("active",
|
|
981
|
+
i0.ɵɵclassProp("active", action_r19.Status === "Active")("inactive", action_r19.Status !== "Active");
|
|
784
982
|
i0.ɵɵadvance();
|
|
785
|
-
i0.ɵɵclassProp("fa-check-circle",
|
|
983
|
+
i0.ɵɵclassProp("fa-check-circle", action_r19.Status === "Active")("fa-times-circle", action_r19.Status !== "Active");
|
|
786
984
|
i0.ɵɵadvance();
|
|
787
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
985
|
+
i0.ɵɵtextInterpolate1(" ", action_r19.Status, " ");
|
|
788
986
|
i0.ɵɵadvance(2);
|
|
789
987
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteActions ? 13 : -1);
|
|
790
988
|
} }
|
|
791
989
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
792
|
-
const
|
|
793
|
-
i0.ɵɵelementStart(0, "div",
|
|
794
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
990
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
991
|
+
i0.ɵɵelementStart(0, "div", 242);
|
|
992
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Actions", "")); });
|
|
795
993
|
i0.ɵɵelementStart(1, "span");
|
|
796
994
|
i0.ɵɵtext(2);
|
|
797
995
|
i0.ɵɵelementEnd()();
|
|
@@ -801,9 +999,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_
|
|
|
801
999
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
802
1000
|
} }
|
|
803
1001
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
804
|
-
i0.ɵɵelementStart(0, "div",
|
|
805
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div",
|
|
806
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div",
|
|
1002
|
+
i0.ɵɵelementStart(0, "div", 223);
|
|
1003
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_For_2_Template, 15, 15, "div", 228, _forTrack1);
|
|
1004
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Conditional_3_Template, 3, 1, "div", 229);
|
|
807
1005
|
i0.ɵɵelementEnd();
|
|
808
1006
|
} if (rf & 2) {
|
|
809
1007
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -813,10 +1011,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_
|
|
|
813
1011
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
814
1012
|
} }
|
|
815
1013
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
816
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "div",
|
|
817
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_2_Template, 3, 0, "button",
|
|
1014
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 221);
|
|
1015
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_2_Template, 3, 0, "button", 222);
|
|
818
1016
|
i0.ɵɵelementEnd()();
|
|
819
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Template, 7, 1, "div",
|
|
1017
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_3_Template, 7, 1, "div", 156)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Conditional_4_Template, 4, 1, "div", 223);
|
|
820
1018
|
} if (rf & 2) {
|
|
821
1019
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
822
1020
|
i0.ɵɵadvance(2);
|
|
@@ -828,7 +1026,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Template(rf,
|
|
|
828
1026
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 11);
|
|
829
1027
|
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_ng_template_1_Template, 4, 1, "ng-template", 18);
|
|
830
1028
|
i0.ɵɵelementStart(2, "div", 19);
|
|
831
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_3_Template, 4, 0, "div",
|
|
1029
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_3_Template, 4, 0, "div", 220)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Conditional_4_Template, 5, 2);
|
|
832
1030
|
i0.ɵɵelementEnd()();
|
|
833
1031
|
} if (rf & 2) {
|
|
834
1032
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -837,8 +1035,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Template(rf,
|
|
|
837
1035
|
i0.ɵɵconditional(ctx_r1.loadingStates.actions ? 3 : 4);
|
|
838
1036
|
} }
|
|
839
1037
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
840
|
-
i0.ɵɵelementStart(0, "span",
|
|
841
|
-
i0.ɵɵelement(1, "i",
|
|
1038
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
1039
|
+
i0.ɵɵelement(1, "i", 150);
|
|
842
1040
|
i0.ɵɵelementEnd();
|
|
843
1041
|
} }
|
|
844
1042
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -853,27 +1051,27 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_
|
|
|
853
1051
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
854
1052
|
i0.ɵɵelement(0, "i", 84);
|
|
855
1053
|
i0.ɵɵtext(1, " Sub-Agents ");
|
|
856
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1054
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
857
1055
|
} if (rf & 2) {
|
|
858
1056
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
859
1057
|
i0.ɵɵadvance(2);
|
|
860
1058
|
i0.ɵɵconditional(ctx_r1.loadingStates.subAgents ? 2 : ctx_r1.totalSubAgentCount > 0 ? 3 : -1);
|
|
861
1059
|
} }
|
|
862
1060
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
863
|
-
const
|
|
864
|
-
i0.ɵɵelementStart(0, "button",
|
|
865
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
866
|
-
i0.ɵɵelement(1, "i",
|
|
1061
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
1062
|
+
i0.ɵɵelementStart(0, "button", 249);
|
|
1063
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.createChildSubAgent()); });
|
|
1064
|
+
i0.ɵɵelement(1, "i", 247);
|
|
867
1065
|
i0.ɵɵtext(2, " Create Child ");
|
|
868
1066
|
i0.ɵɵelementEnd();
|
|
869
|
-
i0.ɵɵelementStart(3, "button",
|
|
870
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
871
|
-
i0.ɵɵelement(4, "i",
|
|
1067
|
+
i0.ɵɵelementStart(3, "button", 250);
|
|
1068
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.linkRelatedSubAgent()); });
|
|
1069
|
+
i0.ɵɵelement(4, "i", 248);
|
|
872
1070
|
i0.ɵɵtext(5, " Link Related ");
|
|
873
1071
|
i0.ɵɵelementEnd();
|
|
874
1072
|
} }
|
|
875
1073
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
876
|
-
i0.ɵɵelementStart(0, "div",
|
|
1074
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
877
1075
|
i0.ɵɵelement(1, "i", 84);
|
|
878
1076
|
i0.ɵɵelementStart(2, "h4");
|
|
879
1077
|
i0.ɵɵtext(3, "No Sub-Agents");
|
|
@@ -881,16 +1079,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_
|
|
|
881
1079
|
i0.ɵɵelementStart(4, "p");
|
|
882
1080
|
i0.ɵɵtext(5, "Sub-agents help build complex workflows through hierarchical orchestration.");
|
|
883
1081
|
i0.ɵɵelementEnd();
|
|
884
|
-
i0.ɵɵelementStart(6, "div",
|
|
885
|
-
i0.ɵɵelement(8, "i",
|
|
1082
|
+
i0.ɵɵelementStart(6, "div", 251)(7, "div", 252);
|
|
1083
|
+
i0.ɵɵelement(8, "i", 253);
|
|
886
1084
|
i0.ɵɵelementStart(9, "strong");
|
|
887
1085
|
i0.ɵɵtext(10, "Child Sub-Agents");
|
|
888
1086
|
i0.ɵɵelementEnd();
|
|
889
1087
|
i0.ɵɵelementStart(11, "p");
|
|
890
1088
|
i0.ɵɵtext(12, "Share payload structure, dedicated to parent");
|
|
891
1089
|
i0.ɵɵelementEnd()();
|
|
892
|
-
i0.ɵɵelementStart(13, "div",
|
|
893
|
-
i0.ɵɵelement(14, "i",
|
|
1090
|
+
i0.ɵɵelementStart(13, "div", 252);
|
|
1091
|
+
i0.ɵɵelement(14, "i", 254);
|
|
894
1092
|
i0.ɵɵelementStart(15, "strong");
|
|
895
1093
|
i0.ɵɵtext(16, "Related Sub-Agents");
|
|
896
1094
|
i0.ɵɵelementEnd();
|
|
@@ -899,140 +1097,140 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_
|
|
|
899
1097
|
i0.ɵɵelementEnd()()()();
|
|
900
1098
|
} }
|
|
901
1099
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
902
|
-
i0.ɵɵelement(0, "img",
|
|
1100
|
+
i0.ɵɵelement(0, "img", 258);
|
|
903
1101
|
} if (rf & 2) {
|
|
904
|
-
const
|
|
905
|
-
i0.ɵɵproperty("src",
|
|
1102
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
1103
|
+
i0.ɵɵproperty("src", item_r25.agent.LogoURL, i0.ɵɵsanitizeUrl)("alt", item_r25.agent.Name + " logo");
|
|
906
1104
|
} }
|
|
907
1105
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
908
1106
|
i0.ɵɵelement(0, "i");
|
|
909
1107
|
} if (rf & 2) {
|
|
910
|
-
const
|
|
1108
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
911
1109
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
912
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(
|
|
1110
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(item_r25.agent));
|
|
913
1111
|
} }
|
|
914
1112
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
915
|
-
i0.ɵɵelementStart(0, "div",
|
|
1113
|
+
i0.ɵɵelementStart(0, "div", 234);
|
|
916
1114
|
i0.ɵɵtext(1);
|
|
917
1115
|
i0.ɵɵelementEnd();
|
|
918
1116
|
} if (rf & 2) {
|
|
919
|
-
const
|
|
1117
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
920
1118
|
i0.ɵɵadvance();
|
|
921
|
-
i0.ɵɵtextInterpolate(
|
|
1119
|
+
i0.ɵɵtextInterpolate(item_r25.agent.Description);
|
|
922
1120
|
} }
|
|
923
1121
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
924
|
-
i0.ɵɵelementStart(0, "span",
|
|
1122
|
+
i0.ɵɵelementStart(0, "span", 237);
|
|
925
1123
|
i0.ɵɵtext(1);
|
|
926
1124
|
i0.ɵɵelementEnd();
|
|
927
1125
|
} if (rf & 2) {
|
|
928
|
-
const
|
|
1126
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
929
1127
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
930
1128
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
931
1129
|
i0.ɵɵadvance();
|
|
932
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1130
|
+
i0.ɵɵtextInterpolate1(" ", item_r25.agent.Status, " ");
|
|
933
1131
|
} }
|
|
934
1132
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
935
|
-
i0.ɵɵelementStart(0, "span",
|
|
1133
|
+
i0.ɵɵelementStart(0, "span", 236);
|
|
936
1134
|
i0.ɵɵtext(1);
|
|
937
1135
|
i0.ɵɵelementEnd();
|
|
938
1136
|
} if (rf & 2) {
|
|
939
|
-
const
|
|
1137
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
940
1138
|
i0.ɵɵadvance();
|
|
941
|
-
i0.ɵɵtextInterpolate(
|
|
1139
|
+
i0.ɵɵtextInterpolate(item_r25.agent.Type);
|
|
942
1140
|
} }
|
|
943
1141
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
944
|
-
const
|
|
945
|
-
i0.ɵɵelementStart(0, "button",
|
|
946
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
947
|
-
i0.ɵɵelement(1, "i",
|
|
1142
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
1143
|
+
i0.ɵɵelementStart(0, "button", 265);
|
|
1144
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r26); const item_r25 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.configureOutputMapping(item_r25, $event)); });
|
|
1145
|
+
i0.ɵɵelement(1, "i", 266);
|
|
948
1146
|
i0.ɵɵelementEnd();
|
|
949
1147
|
} }
|
|
950
1148
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
951
|
-
const
|
|
952
|
-
i0.ɵɵelementStart(0, "button",
|
|
953
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
954
|
-
i0.ɵɵelement(1, "i",
|
|
1149
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
1150
|
+
i0.ɵɵelementStart(0, "button", 267);
|
|
1151
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r27); const item_r25 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(item_r25.agent, $event)); });
|
|
1152
|
+
i0.ɵɵelement(1, "i", 193);
|
|
955
1153
|
i0.ɵɵelementEnd();
|
|
956
1154
|
} }
|
|
957
1155
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
958
|
-
const
|
|
959
|
-
i0.ɵɵelementStart(0, "button",
|
|
960
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1156
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
1157
|
+
i0.ɵɵelementStart(0, "button", 268);
|
|
1158
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r28); const item_r25 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(item_r25.type === "child" ? ctx_r1.removeChildSubAgent(item_r25, $event) : ctx_r1.unlinkRelatedSubAgent(item_r25, $event)); });
|
|
961
1159
|
i0.ɵɵelement(1, "i");
|
|
962
1160
|
i0.ɵɵelementEnd();
|
|
963
1161
|
} if (rf & 2) {
|
|
964
|
-
const
|
|
965
|
-
i0.ɵɵproperty("title",
|
|
1162
|
+
const item_r25 = i0.ɵɵnextContext(2).$implicit;
|
|
1163
|
+
i0.ɵɵproperty("title", item_r25.type === "child" ? "Delete child sub-agent" : "Unlink related sub-agent");
|
|
966
1164
|
i0.ɵɵadvance();
|
|
967
|
-
i0.ɵɵclassMap(
|
|
1165
|
+
i0.ɵɵclassMap(item_r25.type === "child" ? "fa-solid fa-trash" : "fa-solid fa-unlink");
|
|
968
1166
|
} }
|
|
969
1167
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
970
|
-
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button",
|
|
971
|
-
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button",
|
|
972
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button",
|
|
1168
|
+
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button", 262);
|
|
1169
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button", 263);
|
|
1170
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button", 264);
|
|
973
1171
|
} if (rf & 2) {
|
|
974
|
-
const
|
|
1172
|
+
const item_r25 = i0.ɵɵnextContext().$implicit;
|
|
975
1173
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
976
|
-
i0.ɵɵconditional(
|
|
1174
|
+
i0.ɵɵconditional(item_r25.type === "related" ? 0 : -1);
|
|
977
1175
|
i0.ɵɵadvance();
|
|
978
|
-
i0.ɵɵconditional(
|
|
1176
|
+
i0.ɵɵconditional(item_r25.type === "child" && ctx_r1.UserCanCreateSubAgents ? 1 : -1);
|
|
979
1177
|
i0.ɵɵadvance();
|
|
980
1178
|
i0.ɵɵconditional(ctx_r1.UserCanDeleteSubAgents ? 2 : -1);
|
|
981
1179
|
} }
|
|
982
1180
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
983
|
-
const
|
|
984
|
-
i0.ɵɵelementStart(0, "div",
|
|
985
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Template_div_click_0_listener() { const
|
|
986
|
-
i0.ɵɵelementStart(1, "div",
|
|
1181
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
1182
|
+
i0.ɵɵelementStart(0, "div", 256);
|
|
1183
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Template_div_click_0_listener() { const item_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", item_r25.agent.ID)); });
|
|
1184
|
+
i0.ɵɵelementStart(1, "div", 257);
|
|
987
1185
|
i0.ɵɵelement(2, "i");
|
|
988
1186
|
i0.ɵɵtext(3);
|
|
989
1187
|
i0.ɵɵelementEnd();
|
|
990
|
-
i0.ɵɵelementStart(4, "div",
|
|
991
|
-
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img",
|
|
1188
|
+
i0.ɵɵelementStart(4, "div", 231);
|
|
1189
|
+
i0.ɵɵconditionalCreate(5, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_5_Template, 1, 2, "img", 258)(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_6_Template, 1, 2, "i", 115);
|
|
992
1190
|
i0.ɵɵelementEnd();
|
|
993
|
-
i0.ɵɵelementStart(7, "div",
|
|
1191
|
+
i0.ɵɵelementStart(7, "div", 232)(8, "div", 233);
|
|
994
1192
|
i0.ɵɵtext(9);
|
|
995
1193
|
i0.ɵɵelementEnd();
|
|
996
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div",
|
|
997
|
-
i0.ɵɵelementStart(11, "div",
|
|
998
|
-
i0.ɵɵelement(13, "i",
|
|
1194
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_10_Template, 2, 1, "div", 234);
|
|
1195
|
+
i0.ɵɵelementStart(11, "div", 235)(12, "span", 259);
|
|
1196
|
+
i0.ɵɵelement(13, "i", 260);
|
|
999
1197
|
i0.ɵɵtext(14);
|
|
1000
1198
|
i0.ɵɵelementEnd();
|
|
1001
|
-
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span",
|
|
1002
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span",
|
|
1199
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_15_Template, 2, 3, "span", 261);
|
|
1200
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_16_Template, 2, 1, "span", 236);
|
|
1003
1201
|
i0.ɵɵelementEnd()();
|
|
1004
|
-
i0.ɵɵelementStart(17, "div",
|
|
1202
|
+
i0.ɵɵelementStart(17, "div", 238);
|
|
1005
1203
|
i0.ɵɵconditionalCreate(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Conditional_18_Template, 3, 3);
|
|
1006
|
-
i0.ɵɵelement(19, "i",
|
|
1204
|
+
i0.ɵɵelement(19, "i", 217);
|
|
1007
1205
|
i0.ɵɵelementEnd()();
|
|
1008
1206
|
} if (rf & 2) {
|
|
1009
|
-
const
|
|
1207
|
+
const item_r25 = ctx.$implicit;
|
|
1010
1208
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1011
|
-
i0.ɵɵclassProp("child-sub-agent",
|
|
1209
|
+
i0.ɵɵclassProp("child-sub-agent", item_r25.type === "child")("related-sub-agent", item_r25.type === "related");
|
|
1012
1210
|
i0.ɵɵadvance();
|
|
1013
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getSubAgentBadgeColor(
|
|
1211
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getSubAgentBadgeColor(item_r25));
|
|
1014
1212
|
i0.ɵɵadvance();
|
|
1015
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentBadgeIcon(
|
|
1213
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentBadgeIcon(item_r25));
|
|
1016
1214
|
i0.ɵɵadvance();
|
|
1017
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentBadgeText(
|
|
1215
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentBadgeText(item_r25), " ");
|
|
1018
1216
|
i0.ɵɵadvance(2);
|
|
1019
|
-
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(
|
|
1217
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(item_r25.agent) ? 5 : 6);
|
|
1020
1218
|
i0.ɵɵadvance(4);
|
|
1021
|
-
i0.ɵɵtextInterpolate(
|
|
1219
|
+
i0.ɵɵtextInterpolate(item_r25.agent.Name || "Untitled Sub-Agent");
|
|
1022
1220
|
i0.ɵɵadvance();
|
|
1023
|
-
i0.ɵɵconditional(
|
|
1221
|
+
i0.ɵɵconditional(item_r25.agent.Description ? 10 : -1);
|
|
1024
1222
|
i0.ɵɵadvance(4);
|
|
1025
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentPayloadInfo(
|
|
1223
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentPayloadInfo(item_r25), " ");
|
|
1026
1224
|
i0.ɵɵadvance();
|
|
1027
|
-
i0.ɵɵconditional(
|
|
1225
|
+
i0.ɵɵconditional(item_r25.agent.Status ? 15 : -1);
|
|
1028
1226
|
i0.ɵɵadvance();
|
|
1029
|
-
i0.ɵɵconditional(
|
|
1227
|
+
i0.ɵɵconditional(item_r25.agent.Type ? 16 : -1);
|
|
1030
1228
|
i0.ɵɵadvance(2);
|
|
1031
1229
|
i0.ɵɵconditional(ctx_r1.EditMode ? 18 : -1);
|
|
1032
1230
|
} }
|
|
1033
1231
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1034
|
-
i0.ɵɵelementStart(0, "div",
|
|
1035
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Template, 20, 16, "div",
|
|
1232
|
+
i0.ɵɵelementStart(0, "div", 223);
|
|
1233
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_For_2_Template, 20, 16, "div", 255, _forTrack2);
|
|
1036
1234
|
i0.ɵɵelementEnd();
|
|
1037
1235
|
} if (rf & 2) {
|
|
1038
1236
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1040,28 +1238,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_
|
|
|
1040
1238
|
i0.ɵɵrepeater(ctx_r1.filteredSubAgents);
|
|
1041
1239
|
} }
|
|
1042
1240
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1043
|
-
const
|
|
1241
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
1044
1242
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 12);
|
|
1045
1243
|
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_ng_template_1_Template, 4, 1, "ng-template", 18);
|
|
1046
|
-
i0.ɵɵelementStart(2, "div", 19)(3, "div",
|
|
1047
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(
|
|
1244
|
+
i0.ɵɵelementStart(2, "div", 19)(3, "div", 243)(4, "div", 244)(5, "div", 245)(6, "button", 246);
|
|
1245
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("all")); });
|
|
1048
1246
|
i0.ɵɵelement(7, "i", 94);
|
|
1049
1247
|
i0.ɵɵtext(8);
|
|
1050
1248
|
i0.ɵɵelementEnd();
|
|
1051
|
-
i0.ɵɵelementStart(9, "button",
|
|
1052
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_9_listener() { i0.ɵɵrestoreView(
|
|
1053
|
-
i0.ɵɵelement(10, "i",
|
|
1249
|
+
i0.ɵɵelementStart(9, "button", 246);
|
|
1250
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("child")); });
|
|
1251
|
+
i0.ɵɵelement(10, "i", 247);
|
|
1054
1252
|
i0.ɵɵtext(11);
|
|
1055
1253
|
i0.ɵɵelementEnd();
|
|
1056
|
-
i0.ɵɵelementStart(12, "button",
|
|
1057
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_12_listener() { i0.ɵɵrestoreView(
|
|
1058
|
-
i0.ɵɵelement(13, "i",
|
|
1254
|
+
i0.ɵɵelementStart(12, "button", 246);
|
|
1255
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("related")); });
|
|
1256
|
+
i0.ɵɵelement(13, "i", 248);
|
|
1059
1257
|
i0.ɵɵtext(14);
|
|
1060
1258
|
i0.ɵɵelementEnd()()();
|
|
1061
|
-
i0.ɵɵelementStart(15, "div",
|
|
1259
|
+
i0.ɵɵelementStart(15, "div", 221);
|
|
1062
1260
|
i0.ɵɵconditionalCreate(16, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_16_Template, 6, 0);
|
|
1063
1261
|
i0.ɵɵelementEnd()();
|
|
1064
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_17_Template, 19, 0, "div",
|
|
1262
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_17_Template, 19, 0, "div", 156)(18, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Conditional_18_Template, 3, 0, "div", 223);
|
|
1065
1263
|
i0.ɵɵelementEnd()();
|
|
1066
1264
|
} if (rf & 2) {
|
|
1067
1265
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1084,8 +1282,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template(rf,
|
|
|
1084
1282
|
i0.ɵɵconditional(ctx_r1.totalSubAgentCount === 0 ? 17 : 18);
|
|
1085
1283
|
} }
|
|
1086
1284
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1087
|
-
i0.ɵɵelementStart(0, "span",
|
|
1088
|
-
i0.ɵɵelement(1, "i",
|
|
1285
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
1286
|
+
i0.ɵɵelement(1, "i", 150);
|
|
1089
1287
|
i0.ɵɵelementEnd();
|
|
1090
1288
|
} }
|
|
1091
1289
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1098,18 +1296,18 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template
|
|
|
1098
1296
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.promptCount, ")");
|
|
1099
1297
|
} }
|
|
1100
1298
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1101
|
-
i0.ɵɵelement(0, "i",
|
|
1299
|
+
i0.ɵɵelement(0, "i", 207);
|
|
1102
1300
|
i0.ɵɵtext(1, " Prompts ");
|
|
1103
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1301
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1104
1302
|
} if (rf & 2) {
|
|
1105
1303
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1106
1304
|
i0.ɵɵadvance(2);
|
|
1107
1305
|
i0.ɵɵconditional(ctx_r1.loadingStates.prompts ? 2 : ctx_r1.promptCount > 0 ? 3 : -1);
|
|
1108
1306
|
} }
|
|
1109
1307
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1110
|
-
const
|
|
1111
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1112
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_9_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1308
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
1309
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 275);
|
|
1310
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_9_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
1113
1311
|
i0.ɵɵelementEnd();
|
|
1114
1312
|
} if (rf & 2) {
|
|
1115
1313
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1117,7 +1315,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional
|
|
|
1117
1315
|
i0.ɵɵproperty("Data", ctx_r1.modelSelectionModes)("ValuePrimitive", true);
|
|
1118
1316
|
} }
|
|
1119
1317
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1120
|
-
i0.ɵɵelementStart(0, "span",
|
|
1318
|
+
i0.ɵɵelementStart(0, "span", 274);
|
|
1121
1319
|
i0.ɵɵtext(1);
|
|
1122
1320
|
i0.ɵɵelementEnd();
|
|
1123
1321
|
} if (rf & 2) {
|
|
@@ -1126,31 +1324,31 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional
|
|
|
1126
1324
|
i0.ɵɵtextInterpolate(ctx_r1.record.ModelSelectionMode || "Agent Type");
|
|
1127
1325
|
} }
|
|
1128
1326
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1129
|
-
const
|
|
1130
|
-
i0.ɵɵelementStart(0, "button",
|
|
1131
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1132
|
-
i0.ɵɵelement(1, "i",
|
|
1327
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
1328
|
+
i0.ɵɵelementStart(0, "button", 224);
|
|
1329
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1330
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1133
1331
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
1134
1332
|
i0.ɵɵelementEnd();
|
|
1135
1333
|
} }
|
|
1136
1334
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1137
|
-
const
|
|
1138
|
-
i0.ɵɵelementStart(0, "button",
|
|
1139
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1140
|
-
i0.ɵɵelement(1, "i",
|
|
1335
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
1336
|
+
i0.ɵɵelementStart(0, "button", 227);
|
|
1337
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
1338
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1141
1339
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
1142
1340
|
i0.ɵɵelementEnd();
|
|
1143
1341
|
} }
|
|
1144
1342
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1145
|
-
i0.ɵɵelementStart(0, "div",
|
|
1146
|
-
i0.ɵɵelement(1, "i",
|
|
1343
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
1344
|
+
i0.ɵɵelement(1, "i", 207);
|
|
1147
1345
|
i0.ɵɵelementStart(2, "h4");
|
|
1148
1346
|
i0.ɵɵtext(3, "No Prompts Configured");
|
|
1149
1347
|
i0.ɵɵelementEnd();
|
|
1150
1348
|
i0.ɵɵelementStart(4, "p");
|
|
1151
1349
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
1152
1350
|
i0.ɵɵelementEnd();
|
|
1153
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Conditional_6_Template, 3, 0, "button",
|
|
1351
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Conditional_6_Template, 3, 0, "button", 226);
|
|
1154
1352
|
i0.ɵɵelementEnd();
|
|
1155
1353
|
} if (rf & 2) {
|
|
1156
1354
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1158,74 +1356,74 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional
|
|
|
1158
1356
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? 6 : -1);
|
|
1159
1357
|
} }
|
|
1160
1358
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1161
|
-
i0.ɵɵelementStart(0, "div",
|
|
1359
|
+
i0.ɵɵelementStart(0, "div", 234);
|
|
1162
1360
|
i0.ɵɵtext(1);
|
|
1163
1361
|
i0.ɵɵelementEnd();
|
|
1164
1362
|
} if (rf & 2) {
|
|
1165
|
-
const
|
|
1363
|
+
const prompt_r33 = i0.ɵɵnextContext().$implicit;
|
|
1166
1364
|
i0.ɵɵadvance();
|
|
1167
|
-
i0.ɵɵtextInterpolate2("",
|
|
1365
|
+
i0.ɵɵtextInterpolate2("", prompt_r33.TemplateText.substring(0, 120), "", prompt_r33.TemplateText.length > 120 ? "..." : "");
|
|
1168
1366
|
} }
|
|
1169
1367
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1170
|
-
i0.ɵɵelementStart(0, "span",
|
|
1368
|
+
i0.ɵɵelementStart(0, "span", 236);
|
|
1171
1369
|
i0.ɵɵtext(1);
|
|
1172
1370
|
i0.ɵɵelementEnd();
|
|
1173
1371
|
} if (rf & 2) {
|
|
1174
|
-
const
|
|
1372
|
+
const prompt_r33 = i0.ɵɵnextContext().$implicit;
|
|
1175
1373
|
i0.ɵɵadvance();
|
|
1176
|
-
i0.ɵɵtextInterpolate(
|
|
1374
|
+
i0.ɵɵtextInterpolate(prompt_r33.PromptRole);
|
|
1177
1375
|
} }
|
|
1178
1376
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1179
|
-
const
|
|
1180
|
-
i0.ɵɵelementStart(0, "button",
|
|
1181
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1182
|
-
i0.ɵɵelement(1, "i",
|
|
1377
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
1378
|
+
i0.ɵɵelementStart(0, "button", 267);
|
|
1379
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r34); const prompt_r33 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r33, $event)); });
|
|
1380
|
+
i0.ɵɵelement(1, "i", 193);
|
|
1183
1381
|
i0.ɵɵelementEnd();
|
|
1184
1382
|
} }
|
|
1185
1383
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
1186
|
-
const
|
|
1187
|
-
i0.ɵɵelementStart(0, "button",
|
|
1188
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
1189
|
-
i0.ɵɵelement(1, "i",
|
|
1384
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
1385
|
+
i0.ɵɵelementStart(0, "button", 280);
|
|
1386
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r35); const prompt_r33 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r33, $event)); });
|
|
1387
|
+
i0.ɵɵelement(1, "i", 241);
|
|
1190
1388
|
i0.ɵɵelementEnd();
|
|
1191
1389
|
} }
|
|
1192
1390
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1193
|
-
const
|
|
1194
|
-
i0.ɵɵelementStart(0, "div",
|
|
1195
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Template_div_click_0_listener() { const
|
|
1196
|
-
i0.ɵɵelementStart(1, "div",
|
|
1197
|
-
i0.ɵɵelement(2, "i",
|
|
1391
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
1392
|
+
i0.ɵɵelementStart(0, "div", 277);
|
|
1393
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Template_div_click_0_listener() { const prompt_r33 = i0.ɵɵrestoreView(_r32).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", prompt_r33.ID)); });
|
|
1394
|
+
i0.ɵɵelementStart(1, "div", 231);
|
|
1395
|
+
i0.ɵɵelement(2, "i", 278);
|
|
1198
1396
|
i0.ɵɵelementEnd();
|
|
1199
|
-
i0.ɵɵelementStart(3, "div",
|
|
1397
|
+
i0.ɵɵelementStart(3, "div", 232)(4, "div", 233);
|
|
1200
1398
|
i0.ɵɵtext(5);
|
|
1201
1399
|
i0.ɵɵelementEnd();
|
|
1202
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1203
|
-
i0.ɵɵelementStart(7, "div",
|
|
1204
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1400
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_6_Template, 2, 2, "div", 234);
|
|
1401
|
+
i0.ɵɵelementStart(7, "div", 235);
|
|
1402
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_8_Template, 2, 1, "span", 236);
|
|
1205
1403
|
i0.ɵɵelementEnd()();
|
|
1206
|
-
i0.ɵɵelementStart(9, "div",
|
|
1207
|
-
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button",
|
|
1208
|
-
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button",
|
|
1209
|
-
i0.ɵɵelement(12, "i",
|
|
1404
|
+
i0.ɵɵelementStart(9, "div", 238);
|
|
1405
|
+
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_10_Template, 2, 0, "button", 263);
|
|
1406
|
+
i0.ɵɵconditionalCreate(11, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Conditional_11_Template, 2, 0, "button", 279);
|
|
1407
|
+
i0.ɵɵelement(12, "i", 217);
|
|
1210
1408
|
i0.ɵɵelementEnd()();
|
|
1211
1409
|
} if (rf & 2) {
|
|
1212
|
-
const
|
|
1410
|
+
const prompt_r33 = ctx.$implicit;
|
|
1213
1411
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1214
1412
|
i0.ɵɵadvance(5);
|
|
1215
|
-
i0.ɵɵtextInterpolate(
|
|
1413
|
+
i0.ɵɵtextInterpolate(prompt_r33.Name);
|
|
1216
1414
|
i0.ɵɵadvance();
|
|
1217
|
-
i0.ɵɵconditional(
|
|
1415
|
+
i0.ɵɵconditional(prompt_r33.TemplateText ? 6 : -1);
|
|
1218
1416
|
i0.ɵɵadvance(2);
|
|
1219
|
-
i0.ɵɵconditional(
|
|
1417
|
+
i0.ɵɵconditional(prompt_r33.PromptRole ? 8 : -1);
|
|
1220
1418
|
i0.ɵɵadvance(2);
|
|
1221
1419
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePrompts ? 10 : -1);
|
|
1222
1420
|
i0.ɵɵadvance();
|
|
1223
1421
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeletePrompts ? 11 : -1);
|
|
1224
1422
|
} }
|
|
1225
1423
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1226
|
-
const
|
|
1227
|
-
i0.ɵɵelementStart(0, "div",
|
|
1228
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1424
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
1425
|
+
i0.ɵɵelementStart(0, "div", 242);
|
|
1426
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", "")); });
|
|
1229
1427
|
i0.ɵɵelementStart(1, "span");
|
|
1230
1428
|
i0.ɵɵtext(2);
|
|
1231
1429
|
i0.ɵɵelementEnd()();
|
|
@@ -1235,9 +1433,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional
|
|
|
1235
1433
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
1236
1434
|
} }
|
|
1237
1435
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1238
|
-
i0.ɵɵelementStart(0, "div",
|
|
1239
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Template, 13, 5, "div",
|
|
1240
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Conditional_3_Template, 3, 1, "div",
|
|
1436
|
+
i0.ɵɵelementStart(0, "div", 223);
|
|
1437
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_For_2_Template, 13, 5, "div", 276, _forTrack1);
|
|
1438
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Conditional_3_Template, 3, 1, "div", 229);
|
|
1241
1439
|
i0.ɵɵelementEnd();
|
|
1242
1440
|
} if (rf & 2) {
|
|
1243
1441
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1249,16 +1447,16 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional
|
|
|
1249
1447
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
1250
1448
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 13);
|
|
1251
1449
|
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_ng_template_1_Template, 4, 1, "ng-template", 18);
|
|
1252
|
-
i0.ɵɵelementStart(2, "div", 19)(3, "div", 20)(4, "div",
|
|
1253
|
-
i0.ɵɵelement(7, "i",
|
|
1450
|
+
i0.ɵɵelementStart(2, "div", 19)(3, "div", 20)(4, "div", 269)(5, "div", 270)(6, "label", 271);
|
|
1451
|
+
i0.ɵɵelement(7, "i", 272);
|
|
1254
1452
|
i0.ɵɵtext(8, " Model Selection: ");
|
|
1255
1453
|
i0.ɵɵelementEnd();
|
|
1256
|
-
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_9_Template, 1, 3, "mj-dropdown",
|
|
1454
|
+
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_9_Template, 1, 3, "mj-dropdown", 273)(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_10_Template, 2, 1, "span", 274);
|
|
1257
1455
|
i0.ɵɵelementEnd()();
|
|
1258
|
-
i0.ɵɵelementStart(11, "div",
|
|
1259
|
-
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_12_Template, 3, 0, "button",
|
|
1456
|
+
i0.ɵɵelementStart(11, "div", 221);
|
|
1457
|
+
i0.ɵɵconditionalCreate(12, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_12_Template, 3, 0, "button", 222);
|
|
1260
1458
|
i0.ɵɵelementEnd()();
|
|
1261
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Template, 7, 1, "div",
|
|
1459
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_13_Template, 7, 1, "div", 156)(14, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Conditional_14_Template, 4, 1, "div", 223);
|
|
1262
1460
|
i0.ɵɵelementEnd()();
|
|
1263
1461
|
} if (rf & 2) {
|
|
1264
1462
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1271,8 +1469,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Template(rf
|
|
|
1271
1469
|
i0.ɵɵconditional(ctx_r1.promptCount === 0 ? 13 : 14);
|
|
1272
1470
|
} }
|
|
1273
1471
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1274
|
-
i0.ɵɵelementStart(0, "span",
|
|
1275
|
-
i0.ɵɵelement(1, "i",
|
|
1472
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
1473
|
+
i0.ɵɵelement(1, "i", 150);
|
|
1276
1474
|
i0.ɵɵelementEnd();
|
|
1277
1475
|
} }
|
|
1278
1476
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1285,17 +1483,17 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template
|
|
|
1285
1483
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.learningCycleCount, ")");
|
|
1286
1484
|
} }
|
|
1287
1485
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1288
|
-
i0.ɵɵelement(0, "i",
|
|
1486
|
+
i0.ɵɵelement(0, "i", 281);
|
|
1289
1487
|
i0.ɵɵtext(1, " Learning Cycles ");
|
|
1290
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1488
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1291
1489
|
} if (rf & 2) {
|
|
1292
1490
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1293
1491
|
i0.ɵɵadvance(2);
|
|
1294
1492
|
i0.ɵɵconditional(ctx_r1.loadingStates.learningCycles ? 2 : ctx_r1.learningCycleCount > 0 ? 3 : -1);
|
|
1295
1493
|
} }
|
|
1296
1494
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1297
|
-
i0.ɵɵelementStart(0, "div",
|
|
1298
|
-
i0.ɵɵelement(1, "i",
|
|
1495
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
1496
|
+
i0.ɵɵelement(1, "i", 281);
|
|
1299
1497
|
i0.ɵɵelementStart(2, "h4");
|
|
1300
1498
|
i0.ɵɵtext(3, "No Learning Cycles");
|
|
1301
1499
|
i0.ɵɵelementEnd();
|
|
@@ -1304,55 +1502,55 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional
|
|
|
1304
1502
|
i0.ɵɵelementEnd()();
|
|
1305
1503
|
} }
|
|
1306
1504
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1307
|
-
i0.ɵɵelementStart(0, "span",
|
|
1308
|
-
i0.ɵɵelement(1, "i",
|
|
1505
|
+
i0.ɵɵelementStart(0, "span", 236);
|
|
1506
|
+
i0.ɵɵelement(1, "i", 284);
|
|
1309
1507
|
i0.ɵɵtext(2);
|
|
1310
1508
|
i0.ɵɵpipe(3, "date");
|
|
1311
1509
|
i0.ɵɵelementEnd();
|
|
1312
1510
|
} if (rf & 2) {
|
|
1313
|
-
const
|
|
1511
|
+
const cycle_r38 = i0.ɵɵnextContext().$implicit;
|
|
1314
1512
|
i0.ɵɵadvance(2);
|
|
1315
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1513
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r38.StartedAt, "short"), " ");
|
|
1316
1514
|
} }
|
|
1317
1515
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1318
|
-
i0.ɵɵelementStart(0, "span",
|
|
1516
|
+
i0.ɵɵelementStart(0, "span", 237);
|
|
1319
1517
|
i0.ɵɵtext(1);
|
|
1320
1518
|
i0.ɵɵelementEnd();
|
|
1321
1519
|
} if (rf & 2) {
|
|
1322
|
-
const
|
|
1520
|
+
const cycle_r38 = i0.ɵɵnextContext().$implicit;
|
|
1323
1521
|
i0.ɵɵadvance();
|
|
1324
|
-
i0.ɵɵtextInterpolate(
|
|
1522
|
+
i0.ɵɵtextInterpolate(cycle_r38.Status);
|
|
1325
1523
|
} }
|
|
1326
1524
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1327
|
-
const
|
|
1328
|
-
i0.ɵɵelementStart(0, "div",
|
|
1329
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Template_div_click_0_listener() { const
|
|
1330
|
-
i0.ɵɵelementStart(1, "div",
|
|
1331
|
-
i0.ɵɵelement(2, "i",
|
|
1525
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
1526
|
+
i0.ɵɵelementStart(0, "div", 283);
|
|
1527
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Template_div_click_0_listener() { const cycle_r38 = i0.ɵɵrestoreView(_r37).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", cycle_r38.ID)); });
|
|
1528
|
+
i0.ɵɵelementStart(1, "div", 231);
|
|
1529
|
+
i0.ɵɵelement(2, "i", 281);
|
|
1332
1530
|
i0.ɵɵelementEnd();
|
|
1333
|
-
i0.ɵɵelementStart(3, "div",
|
|
1531
|
+
i0.ɵɵelementStart(3, "div", 232)(4, "div", 233);
|
|
1334
1532
|
i0.ɵɵtext(5);
|
|
1335
1533
|
i0.ɵɵelementEnd();
|
|
1336
|
-
i0.ɵɵelementStart(6, "div",
|
|
1337
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span",
|
|
1338
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1534
|
+
i0.ɵɵelementStart(6, "div", 235);
|
|
1535
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_7_Template, 4, 4, "span", 236);
|
|
1536
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Conditional_8_Template, 2, 1, "span", 237);
|
|
1339
1537
|
i0.ɵɵelementEnd()();
|
|
1340
|
-
i0.ɵɵelementStart(9, "div",
|
|
1341
|
-
i0.ɵɵelement(10, "i",
|
|
1538
|
+
i0.ɵɵelementStart(9, "div", 238);
|
|
1539
|
+
i0.ɵɵelement(10, "i", 217);
|
|
1342
1540
|
i0.ɵɵelementEnd()();
|
|
1343
1541
|
} if (rf & 2) {
|
|
1344
|
-
const
|
|
1542
|
+
const cycle_r38 = ctx.$implicit;
|
|
1345
1543
|
i0.ɵɵadvance(5);
|
|
1346
|
-
i0.ɵɵtextInterpolate1("Learning Cycle ",
|
|
1544
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r38.ID.substring(0, 8));
|
|
1347
1545
|
i0.ɵɵadvance(2);
|
|
1348
|
-
i0.ɵɵconditional(
|
|
1546
|
+
i0.ɵɵconditional(cycle_r38.StartedAt ? 7 : -1);
|
|
1349
1547
|
i0.ɵɵadvance();
|
|
1350
|
-
i0.ɵɵconditional(
|
|
1548
|
+
i0.ɵɵconditional(cycle_r38.Status ? 8 : -1);
|
|
1351
1549
|
} }
|
|
1352
1550
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1353
|
-
const
|
|
1354
|
-
i0.ɵɵelementStart(0, "div",
|
|
1355
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1551
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
1552
|
+
i0.ɵɵelementStart(0, "div", 242);
|
|
1553
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Learning Cycles", "")); });
|
|
1356
1554
|
i0.ɵɵelementStart(1, "span");
|
|
1357
1555
|
i0.ɵɵtext(2);
|
|
1358
1556
|
i0.ɵɵelementEnd()();
|
|
@@ -1362,9 +1560,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional
|
|
|
1362
1560
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
1363
1561
|
} }
|
|
1364
1562
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1365
|
-
i0.ɵɵelementStart(0, "div",
|
|
1366
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Template, 11, 3, "div",
|
|
1367
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Conditional_3_Template, 3, 1, "div",
|
|
1563
|
+
i0.ɵɵelementStart(0, "div", 223);
|
|
1564
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_For_2_Template, 11, 3, "div", 282, _forTrack1);
|
|
1565
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Conditional_3_Template, 3, 1, "div", 229);
|
|
1368
1566
|
i0.ɵɵelementEnd();
|
|
1369
1567
|
} if (rf & 2) {
|
|
1370
1568
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1379,7 +1577,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Template(rf
|
|
|
1379
1577
|
i0.ɵɵelementStart(2, "div", 19)(3, "div", 20)(4, "div", 21);
|
|
1380
1578
|
i0.ɵɵtext(5, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
1381
1579
|
i0.ɵɵelementEnd()();
|
|
1382
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_6_Template, 6, 0, "div",
|
|
1580
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_6_Template, 6, 0, "div", 156)(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Conditional_7_Template, 4, 1, "div", 223);
|
|
1383
1581
|
i0.ɵɵelementEnd()();
|
|
1384
1582
|
} if (rf & 2) {
|
|
1385
1583
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1388,8 +1586,8 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_11_Template(rf
|
|
|
1388
1586
|
i0.ɵɵconditional(ctx_r1.learningCycleCount === 0 ? 6 : 7);
|
|
1389
1587
|
} }
|
|
1390
1588
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1391
|
-
i0.ɵɵelementStart(0, "span",
|
|
1392
|
-
i0.ɵɵelement(1, "i",
|
|
1589
|
+
i0.ɵɵelementStart(0, "span", 149);
|
|
1590
|
+
i0.ɵɵelement(1, "i", 150);
|
|
1393
1591
|
i0.ɵɵelementEnd();
|
|
1394
1592
|
} }
|
|
1395
1593
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -1402,40 +1600,40 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template
|
|
|
1402
1600
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.noteCount, ")");
|
|
1403
1601
|
} }
|
|
1404
1602
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1405
|
-
i0.ɵɵelement(0, "i",
|
|
1603
|
+
i0.ɵɵelement(0, "i", 285);
|
|
1406
1604
|
i0.ɵɵtext(1, " Notes ");
|
|
1407
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1605
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Conditional_2_Template, 2, 0, "span", 149)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
1408
1606
|
} if (rf & 2) {
|
|
1409
1607
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1410
1608
|
i0.ɵɵadvance(2);
|
|
1411
1609
|
i0.ɵɵconditional(ctx_r1.loadingStates.notes ? 2 : ctx_r1.noteCount > 0 ? 3 : -1);
|
|
1412
1610
|
} }
|
|
1413
1611
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1414
|
-
const
|
|
1415
|
-
i0.ɵɵelementStart(0, "button",
|
|
1416
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1417
|
-
i0.ɵɵelement(1, "i",
|
|
1612
|
+
const _r40 = i0.ɵɵgetCurrentView();
|
|
1613
|
+
i0.ɵɵelementStart(0, "button", 224);
|
|
1614
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1615
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1418
1616
|
i0.ɵɵtext(2, " Add Note ");
|
|
1419
1617
|
i0.ɵɵelementEnd();
|
|
1420
1618
|
} }
|
|
1421
1619
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1422
|
-
const
|
|
1423
|
-
i0.ɵɵelementStart(0, "button",
|
|
1424
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1425
|
-
i0.ɵɵelement(1, "i",
|
|
1620
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
1621
|
+
i0.ɵɵelementStart(0, "button", 227);
|
|
1622
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r41); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1623
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1426
1624
|
i0.ɵɵtext(2, " Create First Note ");
|
|
1427
1625
|
i0.ɵɵelementEnd();
|
|
1428
1626
|
} }
|
|
1429
1627
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1430
|
-
i0.ɵɵelementStart(0, "div",
|
|
1431
|
-
i0.ɵɵelement(1, "i",
|
|
1628
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
1629
|
+
i0.ɵɵelement(1, "i", 285);
|
|
1432
1630
|
i0.ɵɵelementStart(2, "h4");
|
|
1433
1631
|
i0.ɵɵtext(3, "No Notes");
|
|
1434
1632
|
i0.ɵɵelementEnd();
|
|
1435
1633
|
i0.ɵɵelementStart(4, "p");
|
|
1436
1634
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
1437
1635
|
i0.ɵɵelementEnd();
|
|
1438
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Conditional_6_Template, 3, 0, "button",
|
|
1636
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Conditional_6_Template, 3, 0, "button", 226);
|
|
1439
1637
|
i0.ɵɵelementEnd();
|
|
1440
1638
|
} if (rf & 2) {
|
|
1441
1639
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1443,55 +1641,55 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional
|
|
|
1443
1641
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? 6 : -1);
|
|
1444
1642
|
} }
|
|
1445
1643
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1446
|
-
i0.ɵɵelementStart(0, "div",
|
|
1644
|
+
i0.ɵɵelementStart(0, "div", 234);
|
|
1447
1645
|
i0.ɵɵtext(1);
|
|
1448
1646
|
i0.ɵɵelementEnd();
|
|
1449
1647
|
} if (rf & 2) {
|
|
1450
|
-
const
|
|
1648
|
+
const note_r43 = i0.ɵɵnextContext().$implicit;
|
|
1451
1649
|
i0.ɵɵadvance();
|
|
1452
|
-
i0.ɵɵtextInterpolate2("",
|
|
1650
|
+
i0.ɵɵtextInterpolate2("", note_r43.Note.substring(0, 100), "", note_r43.Note.length > 100 ? "..." : "");
|
|
1453
1651
|
} }
|
|
1454
1652
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1455
|
-
i0.ɵɵelementStart(0, "span",
|
|
1456
|
-
i0.ɵɵelement(1, "i",
|
|
1653
|
+
i0.ɵɵelementStart(0, "span", 236);
|
|
1654
|
+
i0.ɵɵelement(1, "i", 284);
|
|
1457
1655
|
i0.ɵɵtext(2);
|
|
1458
1656
|
i0.ɵɵpipe(3, "date");
|
|
1459
1657
|
i0.ɵɵelementEnd();
|
|
1460
1658
|
} if (rf & 2) {
|
|
1461
|
-
const
|
|
1659
|
+
const note_r43 = i0.ɵɵnextContext().$implicit;
|
|
1462
1660
|
i0.ɵɵadvance(2);
|
|
1463
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1661
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r43.__mj_CreatedAt, "short"), " ");
|
|
1464
1662
|
} }
|
|
1465
1663
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1466
|
-
const
|
|
1467
|
-
i0.ɵɵelementStart(0, "div",
|
|
1468
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Template_div_click_0_listener() { const
|
|
1469
|
-
i0.ɵɵelementStart(1, "div",
|
|
1470
|
-
i0.ɵɵelement(2, "i",
|
|
1664
|
+
const _r42 = i0.ɵɵgetCurrentView();
|
|
1665
|
+
i0.ɵɵelementStart(0, "div", 287);
|
|
1666
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Template_div_click_0_listener() { const note_r43 = i0.ɵɵrestoreView(_r42).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", note_r43.ID)); });
|
|
1667
|
+
i0.ɵɵelementStart(1, "div", 231);
|
|
1668
|
+
i0.ɵɵelement(2, "i", 285);
|
|
1471
1669
|
i0.ɵɵelementEnd();
|
|
1472
|
-
i0.ɵɵelementStart(3, "div",
|
|
1670
|
+
i0.ɵɵelementStart(3, "div", 232)(4, "div", 233);
|
|
1473
1671
|
i0.ɵɵtext(5);
|
|
1474
1672
|
i0.ɵɵelementEnd();
|
|
1475
|
-
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1476
|
-
i0.ɵɵelementStart(7, "div",
|
|
1477
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span",
|
|
1673
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_6_Template, 2, 2, "div", 234);
|
|
1674
|
+
i0.ɵɵelementStart(7, "div", 235);
|
|
1675
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Conditional_8_Template, 4, 4, "span", 236);
|
|
1478
1676
|
i0.ɵɵelementEnd()();
|
|
1479
|
-
i0.ɵɵelementStart(9, "div",
|
|
1480
|
-
i0.ɵɵelement(10, "i",
|
|
1677
|
+
i0.ɵɵelementStart(9, "div", 238);
|
|
1678
|
+
i0.ɵɵelement(10, "i", 217);
|
|
1481
1679
|
i0.ɵɵelementEnd()();
|
|
1482
1680
|
} if (rf & 2) {
|
|
1483
|
-
const
|
|
1681
|
+
const note_r43 = ctx.$implicit;
|
|
1484
1682
|
i0.ɵɵadvance(5);
|
|
1485
|
-
i0.ɵɵtextInterpolate(
|
|
1683
|
+
i0.ɵɵtextInterpolate(note_r43.Type || "Note");
|
|
1486
1684
|
i0.ɵɵadvance();
|
|
1487
|
-
i0.ɵɵconditional(
|
|
1685
|
+
i0.ɵɵconditional(note_r43.Note ? 6 : -1);
|
|
1488
1686
|
i0.ɵɵadvance(2);
|
|
1489
|
-
i0.ɵɵconditional(
|
|
1687
|
+
i0.ɵɵconditional(note_r43.__mj_CreatedAt ? 8 : -1);
|
|
1490
1688
|
} }
|
|
1491
1689
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1492
|
-
const
|
|
1493
|
-
i0.ɵɵelementStart(0, "div",
|
|
1494
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1690
|
+
const _r44 = i0.ɵɵgetCurrentView();
|
|
1691
|
+
i0.ɵɵelementStart(0, "div", 242);
|
|
1692
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Notes", "")); });
|
|
1495
1693
|
i0.ɵɵelementStart(1, "span");
|
|
1496
1694
|
i0.ɵɵtext(2);
|
|
1497
1695
|
i0.ɵɵelementEnd()();
|
|
@@ -1501,9 +1699,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional
|
|
|
1501
1699
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
1502
1700
|
} }
|
|
1503
1701
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1504
|
-
i0.ɵɵelementStart(0, "div",
|
|
1505
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Template, 11, 3, "div",
|
|
1506
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Conditional_3_Template, 3, 1, "div",
|
|
1702
|
+
i0.ɵɵelementStart(0, "div", 223);
|
|
1703
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_For_2_Template, 11, 3, "div", 286, _forTrack1);
|
|
1704
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Conditional_3_Template, 3, 1, "div", 229);
|
|
1507
1705
|
i0.ɵɵelementEnd();
|
|
1508
1706
|
} if (rf & 2) {
|
|
1509
1707
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1518,10 +1716,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Template(rf
|
|
|
1518
1716
|
i0.ɵɵelementStart(2, "div", 19)(3, "div", 20)(4, "div", 21);
|
|
1519
1717
|
i0.ɵɵtext(5, " Manage notes, documentation, and annotations for this agent. ");
|
|
1520
1718
|
i0.ɵɵelementEnd();
|
|
1521
|
-
i0.ɵɵelementStart(6, "div",
|
|
1522
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_7_Template, 3, 0, "button",
|
|
1719
|
+
i0.ɵɵelementStart(6, "div", 221);
|
|
1720
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_7_Template, 3, 0, "button", 222);
|
|
1523
1721
|
i0.ɵɵelementEnd()();
|
|
1524
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Template, 7, 1, "div",
|
|
1722
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_8_Template, 7, 1, "div", 156)(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Conditional_9_Template, 4, 1, "div", 223);
|
|
1525
1723
|
i0.ɵɵelementEnd()();
|
|
1526
1724
|
} if (rf & 2) {
|
|
1527
1725
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1532,21 +1730,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_12_Template(rf
|
|
|
1532
1730
|
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 8 : 9);
|
|
1533
1731
|
} }
|
|
1534
1732
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1535
|
-
i0.ɵɵelement(0, "i",
|
|
1733
|
+
i0.ɵɵelement(0, "i", 299);
|
|
1536
1734
|
i0.ɵɵtext(1, " Search ");
|
|
1537
1735
|
} }
|
|
1538
1736
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
1539
|
-
i0.ɵɵelementStart(0, "div",
|
|
1737
|
+
i0.ɵɵelementStart(0, "div", 306);
|
|
1540
1738
|
i0.ɵɵtext(1, "Loading permissions\u2026");
|
|
1541
1739
|
i0.ɵɵelementEnd();
|
|
1542
1740
|
} }
|
|
1543
1741
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
1544
|
-
i0.ɵɵelementStart(0, "div",
|
|
1742
|
+
i0.ɵɵelementStart(0, "div", 307);
|
|
1545
1743
|
i0.ɵɵtext(1, " No scopes assigned yet \u2014 permissions will appear here once you add scopes above. ");
|
|
1546
1744
|
i0.ɵɵelementEnd();
|
|
1547
1745
|
} }
|
|
1548
1746
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1549
|
-
i0.ɵɵelementStart(0, "div",
|
|
1747
|
+
i0.ɵɵelementStart(0, "div", 310);
|
|
1550
1748
|
i0.ɵɵtext(1, " No explicit permissions. Access falls back to this agent's ");
|
|
1551
1749
|
i0.ɵɵelementStart(2, "code");
|
|
1552
1750
|
i0.ɵɵtext(3, "SearchScopeAccess");
|
|
@@ -1555,12 +1753,12 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional
|
|
|
1555
1753
|
i0.ɵɵelementEnd();
|
|
1556
1754
|
} }
|
|
1557
1755
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1558
|
-
i0.ɵɵelementStart(0, "li",
|
|
1756
|
+
i0.ɵɵelementStart(0, "li", 312);
|
|
1559
1757
|
i0.ɵɵelement(1, "i", 133);
|
|
1560
1758
|
i0.ɵɵelementStart(2, "strong");
|
|
1561
1759
|
i0.ɵɵtext(3);
|
|
1562
1760
|
i0.ɵɵelementEnd();
|
|
1563
|
-
i0.ɵɵelementStart(4, "span",
|
|
1761
|
+
i0.ɵɵelementStart(4, "span", 306);
|
|
1564
1762
|
i0.ɵɵtext(5);
|
|
1565
1763
|
i0.ɵɵelementEnd();
|
|
1566
1764
|
i0.ɵɵtext(6, " \u2014 ");
|
|
@@ -1568,49 +1766,49 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional
|
|
|
1568
1766
|
i0.ɵɵtext(8);
|
|
1569
1767
|
i0.ɵɵelementEnd()();
|
|
1570
1768
|
} if (rf & 2) {
|
|
1571
|
-
const
|
|
1769
|
+
const p_r47 = ctx.$implicit;
|
|
1572
1770
|
i0.ɵɵadvance();
|
|
1573
|
-
i0.ɵɵclassProp("fa-user",
|
|
1771
|
+
i0.ɵɵclassProp("fa-user", p_r47.PrincipalType === "User")("fa-users", p_r47.PrincipalType === "Role");
|
|
1574
1772
|
i0.ɵɵadvance(2);
|
|
1575
|
-
i0.ɵɵtextInterpolate(
|
|
1773
|
+
i0.ɵɵtextInterpolate(p_r47.Principal);
|
|
1576
1774
|
i0.ɵɵadvance(2);
|
|
1577
|
-
i0.ɵɵtextInterpolate1("(",
|
|
1775
|
+
i0.ɵɵtextInterpolate1("(", p_r47.PrincipalType, ")");
|
|
1578
1776
|
i0.ɵɵadvance(2);
|
|
1579
|
-
i0.ɵɵstyleProp("color",
|
|
1777
|
+
i0.ɵɵstyleProp("color", p_r47.Level === "None" ? "var(--mj-status-error-text)" : "var(--mj-text-primary)");
|
|
1580
1778
|
i0.ɵɵadvance();
|
|
1581
|
-
i0.ɵɵtextInterpolate(
|
|
1779
|
+
i0.ɵɵtextInterpolate(p_r47.Level);
|
|
1582
1780
|
} }
|
|
1583
1781
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1584
|
-
i0.ɵɵelementStart(0, "ul",
|
|
1585
|
-
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li",
|
|
1782
|
+
i0.ɵɵelementStart(0, "ul", 311);
|
|
1783
|
+
i0.ɵɵrepeaterCreate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_4_For_2_Template, 9, 9, "li", 312, _forTrack4);
|
|
1586
1784
|
i0.ɵɵelementEnd();
|
|
1587
1785
|
} if (rf & 2) {
|
|
1588
|
-
const
|
|
1786
|
+
const s_r48 = i0.ɵɵnextContext().$implicit;
|
|
1589
1787
|
i0.ɵɵadvance();
|
|
1590
|
-
i0.ɵɵrepeater(
|
|
1788
|
+
i0.ɵɵrepeater(s_r48.Permissions);
|
|
1591
1789
|
} }
|
|
1592
1790
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
1593
|
-
i0.ɵɵelementStart(0, "div",
|
|
1791
|
+
i0.ɵɵelementStart(0, "div", 308)(1, "div", 309);
|
|
1594
1792
|
i0.ɵɵtext(2);
|
|
1595
1793
|
i0.ɵɵelementEnd();
|
|
1596
|
-
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div",
|
|
1794
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_3_Template, 5, 0, "div", 310)(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Conditional_4_Template, 3, 0, "ul", 311);
|
|
1597
1795
|
i0.ɵɵelementEnd();
|
|
1598
1796
|
} if (rf & 2) {
|
|
1599
|
-
const
|
|
1797
|
+
const s_r48 = ctx.$implicit;
|
|
1600
1798
|
i0.ɵɵadvance(2);
|
|
1601
|
-
i0.ɵɵtextInterpolate(
|
|
1799
|
+
i0.ɵɵtextInterpolate(s_r48.ScopeName);
|
|
1602
1800
|
i0.ɵɵadvance();
|
|
1603
|
-
i0.ɵɵconditional(
|
|
1801
|
+
i0.ɵɵconditional(s_r48.Permissions.length === 0 ? 3 : 4);
|
|
1604
1802
|
} }
|
|
1605
1803
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
1606
|
-
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div",
|
|
1804
|
+
i0.ɵɵrepeaterCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_For_1_Template, 5, 2, "div", 308, _forTrack3);
|
|
1607
1805
|
} if (rf & 2) {
|
|
1608
1806
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1609
1807
|
i0.ɵɵrepeater(ctx_r1.PermissionSummary);
|
|
1610
1808
|
} }
|
|
1611
1809
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
1612
|
-
const
|
|
1613
|
-
i0.ɵɵelementStart(0, "div",
|
|
1810
|
+
const _r46 = i0.ɵɵgetCurrentView();
|
|
1811
|
+
i0.ɵɵelementStart(0, "div", 300)(1, "h4");
|
|
1614
1812
|
i0.ɵɵtext(2, "Assigned Scopes");
|
|
1615
1813
|
i0.ɵɵelementEnd();
|
|
1616
1814
|
i0.ɵɵelementStart(3, "p", 21)(4, "strong");
|
|
@@ -1626,21 +1824,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional
|
|
|
1626
1824
|
i0.ɵɵelementEnd();
|
|
1627
1825
|
i0.ɵɵtext(12, " covers both paths. ");
|
|
1628
1826
|
i0.ɵɵelementEnd()();
|
|
1629
|
-
i0.ɵɵelementStart(13, "mj-search-scope-child-grid",
|
|
1630
|
-
i0.ɵɵlistener("RowsChanged", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Template_mj_search_scope_child_grid_RowsChanged_13_listener() { i0.ɵɵrestoreView(
|
|
1827
|
+
i0.ɵɵelementStart(13, "mj-search-scope-child-grid", 301);
|
|
1828
|
+
i0.ɵɵlistener("RowsChanged", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Template_mj_search_scope_child_grid_RowsChanged_13_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.LoadPermissionSummary()); });
|
|
1631
1829
|
i0.ɵɵelementEnd();
|
|
1632
|
-
i0.ɵɵelementStart(14, "div",
|
|
1633
|
-
i0.ɵɵelement(16, "i",
|
|
1830
|
+
i0.ɵɵelementStart(14, "div", 302)(15, "h4", 303);
|
|
1831
|
+
i0.ɵɵelement(16, "i", 304);
|
|
1634
1832
|
i0.ɵɵtext(17, " Effective scope permissions ");
|
|
1635
1833
|
i0.ɵɵelementEnd();
|
|
1636
|
-
i0.ɵɵelementStart(18, "p",
|
|
1834
|
+
i0.ɵɵelementStart(18, "p", 305);
|
|
1637
1835
|
i0.ɵɵtext(19, " Per-user / per-role grants on the scopes assigned above. Edit grants in ");
|
|
1638
1836
|
i0.ɵɵelementStart(20, "strong");
|
|
1639
1837
|
i0.ɵɵtext(21, "Knowledge Hub Config \u2192 Search Scopes \u2192 Permissions");
|
|
1640
1838
|
i0.ɵɵelementEnd();
|
|
1641
1839
|
i0.ɵɵtext(22, ". ");
|
|
1642
1840
|
i0.ɵɵelementEnd();
|
|
1643
|
-
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_23_Template, 2, 0, "div",
|
|
1841
|
+
i0.ɵɵconditionalCreate(23, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_23_Template, 2, 0, "div", 306)(24, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_24_Template, 2, 0, "div", 307)(25, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Conditional_25_Template, 2, 0);
|
|
1644
1842
|
i0.ɵɵelementEnd();
|
|
1645
1843
|
} if (rf & 2) {
|
|
1646
1844
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1650,7 +1848,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional
|
|
|
1650
1848
|
i0.ɵɵconditional(ctx_r1.IsLoadingPermissions ? 23 : ctx_r1.PermissionSummary.length === 0 ? 24 : 25);
|
|
1651
1849
|
} }
|
|
1652
1850
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1653
|
-
const
|
|
1851
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
1654
1852
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 16);
|
|
1655
1853
|
i0.ɵɵtemplate(1, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_ng_template_1_Template, 2, 0, "ng-template", 18);
|
|
1656
1854
|
i0.ɵɵelementStart(2, "div", 19)(3, "div", 20)(4, "div", 21);
|
|
@@ -1660,34 +1858,34 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template(rf
|
|
|
1660
1858
|
i0.ɵɵelementEnd();
|
|
1661
1859
|
i0.ɵɵtext(8, " and assign the scopes it can use for pre-execution RAG or agent-invoked search. ");
|
|
1662
1860
|
i0.ɵɵelementEnd()();
|
|
1663
|
-
i0.ɵɵelementStart(9, "div",
|
|
1664
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_11_listener() { i0.ɵɵrestoreView(
|
|
1861
|
+
i0.ɵɵelementStart(9, "div", 288)(10, "label", 289)(11, "input", 290);
|
|
1862
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_11_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "All"); });
|
|
1665
1863
|
i0.ɵɵelementEnd();
|
|
1666
|
-
i0.ɵɵelement(12, "i",
|
|
1667
|
-
i0.ɵɵelementStart(13, "div",
|
|
1864
|
+
i0.ɵɵelement(12, "i", 291);
|
|
1865
|
+
i0.ɵɵelementStart(13, "div", 292)(14, "div", 293);
|
|
1668
1866
|
i0.ɵɵtext(15, "All");
|
|
1669
1867
|
i0.ɵɵelementEnd();
|
|
1670
|
-
i0.ɵɵelementStart(16, "div",
|
|
1868
|
+
i0.ɵɵelementStart(16, "div", 294);
|
|
1671
1869
|
i0.ɵɵtext(17, "Can use any scope including Global. No scope restriction.");
|
|
1672
1870
|
i0.ɵɵelementEnd()()();
|
|
1673
|
-
i0.ɵɵelementStart(18, "label",
|
|
1674
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_19_listener() { i0.ɵɵrestoreView(
|
|
1871
|
+
i0.ɵɵelementStart(18, "label", 289)(19, "input", 295);
|
|
1872
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_19_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "Assigned"); });
|
|
1675
1873
|
i0.ɵɵelementEnd();
|
|
1676
|
-
i0.ɵɵelement(20, "i",
|
|
1677
|
-
i0.ɵɵelementStart(21, "div",
|
|
1874
|
+
i0.ɵɵelement(20, "i", 296);
|
|
1875
|
+
i0.ɵɵelementStart(21, "div", 292)(22, "div", 293);
|
|
1678
1876
|
i0.ɵɵtext(23, "Assigned");
|
|
1679
1877
|
i0.ɵɵelementEnd();
|
|
1680
|
-
i0.ɵɵelementStart(24, "div",
|
|
1878
|
+
i0.ɵɵelementStart(24, "div", 294);
|
|
1681
1879
|
i0.ɵɵtext(25, "Can use ONLY scopes listed below. Other scopes are rejected with ACCESS_DENIED.");
|
|
1682
1880
|
i0.ɵɵelementEnd()()();
|
|
1683
|
-
i0.ɵɵelementStart(26, "label",
|
|
1684
|
-
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_27_listener() { i0.ɵɵrestoreView(
|
|
1881
|
+
i0.ɵɵelementStart(26, "label", 289)(27, "input", 297);
|
|
1882
|
+
i0.ɵɵlistener("change", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template_input_change_27_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.record.SearchScopeAccess = "None"); });
|
|
1685
1883
|
i0.ɵɵelementEnd();
|
|
1686
|
-
i0.ɵɵelement(28, "i",
|
|
1687
|
-
i0.ɵɵelementStart(29, "div",
|
|
1884
|
+
i0.ɵɵelement(28, "i", 298);
|
|
1885
|
+
i0.ɵɵelementStart(29, "div", 292)(30, "div", 293);
|
|
1688
1886
|
i0.ɵɵtext(31, "None");
|
|
1689
1887
|
i0.ɵɵelementEnd();
|
|
1690
|
-
i0.ɵɵelementStart(32, "div",
|
|
1888
|
+
i0.ɵɵelementStart(32, "div", 294);
|
|
1691
1889
|
i0.ɵɵtext(33, "No search capability. The Scoped Search action is disabled for this agent.");
|
|
1692
1890
|
i0.ɵɵelementEnd()()()();
|
|
1693
1891
|
i0.ɵɵconditionalCreate(34, MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Conditional_34_Template, 26, 4);
|
|
@@ -1711,21 +1909,21 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_13_Template(rf
|
|
|
1711
1909
|
i0.ɵɵconditional(ctx_r1.record.SearchScopeAccess !== "None" ? 34 : -1);
|
|
1712
1910
|
} }
|
|
1713
1911
|
function MJAIAgentFormComponentExtended_Conditional_0_ng_template_15_Template(rf, ctx) { if (rf & 1) {
|
|
1714
|
-
i0.ɵɵelement(0, "i",
|
|
1912
|
+
i0.ɵɵelement(0, "i", 266);
|
|
1715
1913
|
i0.ɵɵtext(1, " Payload Management ");
|
|
1716
1914
|
} }
|
|
1717
1915
|
function MJAIAgentFormComponentExtended_Conditional_0_ng_template_141_Template(rf, ctx) { if (rf & 1) {
|
|
1718
|
-
i0.ɵɵelement(0, "i",
|
|
1916
|
+
i0.ɵɵelement(0, "i", 304);
|
|
1719
1917
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1720
1918
|
} }
|
|
1721
1919
|
function MJAIAgentFormComponentExtended_Conditional_0_ng_template_152_Template(rf, ctx) { if (rf & 1) {
|
|
1722
|
-
i0.ɵɵelement(0, "i",
|
|
1920
|
+
i0.ɵɵelement(0, "i", 313);
|
|
1723
1921
|
i0.ɵɵtext(1, " Configuration ");
|
|
1724
1922
|
} }
|
|
1725
1923
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_172_Template(rf, ctx) { if (rf & 1) {
|
|
1726
|
-
const
|
|
1727
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1728
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_172_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1924
|
+
const _r49 = i0.ɵɵgetCurrentView();
|
|
1925
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 314);
|
|
1926
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_172_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r49); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
1729
1927
|
i0.ɵɵelementEnd();
|
|
1730
1928
|
} if (rf & 2) {
|
|
1731
1929
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1742,9 +1940,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_173_Template(r
|
|
|
1742
1940
|
i0.ɵɵtextInterpolate(ctx_r1.record.Status || "Not Set");
|
|
1743
1941
|
} }
|
|
1744
1942
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_184_Template(rf, ctx) { if (rf & 1) {
|
|
1745
|
-
const
|
|
1746
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
1747
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_184_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1943
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
1944
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 315);
|
|
1945
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_184_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r50); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
1748
1946
|
i0.ɵɵelementEnd();
|
|
1749
1947
|
} if (rf & 2) {
|
|
1750
1948
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1761,9 +1959,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_185_Template(r
|
|
|
1761
1959
|
i0.ɵɵtextInterpolate(ctx_r1.record.Type || "Not Set");
|
|
1762
1960
|
} }
|
|
1763
1961
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_196_Template(rf, ctx) { if (rf & 1) {
|
|
1764
|
-
const
|
|
1765
|
-
i0.ɵɵelementStart(0, "mj-tree-dropdown",
|
|
1766
|
-
i0.ɵɵlistener("ValueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_196_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1962
|
+
const _r51 = i0.ɵɵgetCurrentView();
|
|
1963
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 316);
|
|
1964
|
+
i0.ɵɵlistener("ValueChange", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_196_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnCategoryChange($event)); });
|
|
1767
1965
|
i0.ɵɵelementEnd();
|
|
1768
1966
|
} if (rf & 2) {
|
|
1769
1967
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1779,7 +1977,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_197_Template(r
|
|
|
1779
1977
|
i0.ɵɵtextInterpolate(ctx_r1.record.Category || "Not Set");
|
|
1780
1978
|
} }
|
|
1781
1979
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1782
|
-
i0.ɵɵelementStart(0, "span",
|
|
1980
|
+
i0.ɵɵelementStart(0, "span", 323);
|
|
1783
1981
|
i0.ɵɵtext(1);
|
|
1784
1982
|
i0.ɵɵelementEnd();
|
|
1785
1983
|
} if (rf & 2) {
|
|
@@ -1788,28 +1986,28 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditiona
|
|
|
1788
1986
|
i0.ɵɵtextInterpolate(ctx_r1.selectedContextCompressionPrompt.Name);
|
|
1789
1987
|
} }
|
|
1790
1988
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1791
|
-
i0.ɵɵelementStart(0, "span",
|
|
1989
|
+
i0.ɵɵelementStart(0, "span", 324);
|
|
1792
1990
|
i0.ɵɵtext(1, "No prompt selected");
|
|
1793
1991
|
i0.ɵɵelementEnd();
|
|
1794
1992
|
} }
|
|
1795
1993
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1796
|
-
const
|
|
1797
|
-
i0.ɵɵelementStart(0, "button",
|
|
1798
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1799
|
-
i0.ɵɵelement(1, "i",
|
|
1994
|
+
const _r53 = i0.ɵɵgetCurrentView();
|
|
1995
|
+
i0.ɵɵelementStart(0, "button", 328);
|
|
1996
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r53); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.clearContextCompressionPrompt()); });
|
|
1997
|
+
i0.ɵɵelement(1, "i", 329);
|
|
1800
1998
|
i0.ɵɵelementEnd();
|
|
1801
1999
|
} }
|
|
1802
2000
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
1803
|
-
const
|
|
1804
|
-
i0.ɵɵelementStart(0, "div",
|
|
1805
|
-
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_2_Template, 2, 1, "span",
|
|
2001
|
+
const _r52 = i0.ɵɵgetCurrentView();
|
|
2002
|
+
i0.ɵɵelementStart(0, "div", 321)(1, "div", 322);
|
|
2003
|
+
i0.ɵɵconditionalCreate(2, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_2_Template, 2, 1, "span", 323)(3, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_3_Template, 2, 0, "span", 324);
|
|
1806
2004
|
i0.ɵɵelementEnd();
|
|
1807
|
-
i0.ɵɵelementStart(4, "div",
|
|
1808
|
-
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
1809
|
-
i0.ɵɵelement(6, "i",
|
|
2005
|
+
i0.ɵɵelementStart(4, "div", 325)(5, "button", 326);
|
|
2006
|
+
i0.ɵɵlistener("click", function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openContextCompressionPromptSelector()); });
|
|
2007
|
+
i0.ɵɵelement(6, "i", 184);
|
|
1810
2008
|
i0.ɵɵtext(7);
|
|
1811
2009
|
i0.ɵɵelementEnd();
|
|
1812
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_8_Template, 2, 0, "button",
|
|
2010
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Conditional_8_Template, 2, 0, "button", 327);
|
|
1813
2011
|
i0.ɵɵelementEnd()();
|
|
1814
2012
|
} if (rf & 2) {
|
|
1815
2013
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1831,7 +2029,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditiona
|
|
|
1831
2029
|
} }
|
|
1832
2030
|
function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Template(rf, ctx) { if (rf & 1) {
|
|
1833
2031
|
i0.ɵɵelementStart(0, "div", 76)(1, "div", 77)(2, "div", 78);
|
|
1834
|
-
i0.ɵɵelement(3, "i",
|
|
2032
|
+
i0.ɵɵelement(3, "i", 317);
|
|
1835
2033
|
i0.ɵɵelementEnd();
|
|
1836
2034
|
i0.ɵɵelementStart(4, "div", 80)(5, "h4");
|
|
1837
2035
|
i0.ɵɵtext(6, "Message Threshold");
|
|
@@ -1840,10 +2038,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Template(r
|
|
|
1840
2038
|
i0.ɵɵtext(8, "Messages before compression triggers");
|
|
1841
2039
|
i0.ɵɵelementEnd()()();
|
|
1842
2040
|
i0.ɵɵelementStart(9, "div", 81);
|
|
1843
|
-
i0.ɵɵelement(10, "mj-form-field",
|
|
2041
|
+
i0.ɵɵelement(10, "mj-form-field", 318);
|
|
1844
2042
|
i0.ɵɵelementEnd()();
|
|
1845
2043
|
i0.ɵɵelementStart(11, "div", 76)(12, "div", 77)(13, "div", 78);
|
|
1846
|
-
i0.ɵɵelement(14, "i",
|
|
2044
|
+
i0.ɵɵelement(14, "i", 319);
|
|
1847
2045
|
i0.ɵɵelementEnd();
|
|
1848
2046
|
i0.ɵɵelementStart(15, "div", 80)(16, "h4");
|
|
1849
2047
|
i0.ɵɵtext(17, "Messages to Keep");
|
|
@@ -1852,10 +2050,10 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Template(r
|
|
|
1852
2050
|
i0.ɵɵtext(19, "Recent messages to retain uncompressed");
|
|
1853
2051
|
i0.ɵɵelementEnd()()();
|
|
1854
2052
|
i0.ɵɵelementStart(20, "div", 81);
|
|
1855
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
2053
|
+
i0.ɵɵelement(21, "mj-form-field", 320);
|
|
1856
2054
|
i0.ɵɵelementEnd()();
|
|
1857
2055
|
i0.ɵɵelementStart(22, "div", 76)(23, "div", 77)(24, "div", 78);
|
|
1858
|
-
i0.ɵɵelement(25, "i",
|
|
2056
|
+
i0.ɵɵelement(25, "i", 278);
|
|
1859
2057
|
i0.ɵɵelementEnd();
|
|
1860
2058
|
i0.ɵɵelementStart(26, "div", 80)(27, "h4");
|
|
1861
2059
|
i0.ɵɵtext(28, "Compression Prompt");
|
|
@@ -1864,7 +2062,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Template(r
|
|
|
1864
2062
|
i0.ɵɵtext(30, "Prompt used for summarization");
|
|
1865
2063
|
i0.ɵɵelementEnd()()();
|
|
1866
2064
|
i0.ɵɵelementStart(31, "div", 81);
|
|
1867
|
-
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Template, 9, 3, "div",
|
|
2065
|
+
i0.ɵɵconditionalCreate(32, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_32_Template, 9, 3, "div", 321)(33, MJAIAgentFormComponentExtended_Conditional_0_Conditional_323_Conditional_33_Template, 2, 1, "span", 83);
|
|
1868
2066
|
i0.ɵɵelementEnd()();
|
|
1869
2067
|
} if (rf & 2) {
|
|
1870
2068
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1884,7 +2082,7 @@ function MJAIAgentFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
1884
2082
|
i0.ɵɵconditionalCreate(4, MJAIAgentFormComponentExtended_Conditional_0_Conditional_4_Template, 10, 3, "div", 7);
|
|
1885
2083
|
i0.ɵɵelementStart(5, "div", 8);
|
|
1886
2084
|
i0.ɵɵconditionalCreate(6, MJAIAgentFormComponentExtended_Conditional_0_Conditional_6_Template, 6, 4, "mj-accordion-panel", 9);
|
|
1887
|
-
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Template, 6,
|
|
2085
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentFormComponentExtended_Conditional_0_Conditional_7_Template, 6, 4, "mj-accordion-panel", 10);
|
|
1888
2086
|
i0.ɵɵconditionalCreate(8, MJAIAgentFormComponentExtended_Conditional_0_Conditional_8_Template, 5, 3, "mj-accordion-panel", 11);
|
|
1889
2087
|
i0.ɵɵconditionalCreate(9, MJAIAgentFormComponentExtended_Conditional_0_Conditional_9_Template, 19, 13, "mj-accordion-panel", 12);
|
|
1890
2088
|
i0.ɵɵconditionalCreate(10, MJAIAgentFormComponentExtended_Conditional_0_Conditional_10_Template, 15, 5, "mj-accordion-panel", 13);
|
|
@@ -2294,9 +2492,9 @@ function MJAIAgentFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
2294
2492
|
i0.ɵɵconditional(ctx_r1.record.EnableContextCompression ? 323 : -1);
|
|
2295
2493
|
} }
|
|
2296
2494
|
function MJAIAgentFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
2297
|
-
const
|
|
2298
|
-
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog",
|
|
2299
|
-
i0.ɵɵlistener("Closed", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_Closed_0_listener() { i0.ɵɵrestoreView(
|
|
2495
|
+
const _r54 = i0.ɵɵgetCurrentView();
|
|
2496
|
+
i0.ɵɵelementStart(0, "mj-agent-permissions-dialog", 330);
|
|
2497
|
+
i0.ɵɵlistener("Closed", function MJAIAgentFormComponentExtended_Conditional_1_Template_mj_agent_permissions_dialog_Closed_0_listener() { i0.ɵɵrestoreView(_r54); 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(_r54); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
2300
2498
|
i0.ɵɵelementEnd();
|
|
2301
2499
|
} if (rf & 2) {
|
|
2302
2500
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2372,6 +2570,12 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
2372
2570
|
/** Search functionality for execution history */
|
|
2373
2571
|
this.executionSearchText = '';
|
|
2374
2572
|
this.filteredExecutions = [];
|
|
2573
|
+
/** Which record type the Execution History section shows: agent runs (default) or realtime voice sessions */
|
|
2574
|
+
this.executionHistoryView = 'runs';
|
|
2575
|
+
/** Voice/realtime sessions where this agent is the co-agent or the delegation target */
|
|
2576
|
+
this.agentSessions = [];
|
|
2577
|
+
this.totalSessionCount = 0;
|
|
2578
|
+
this.loadingSessions = false;
|
|
2375
2579
|
/** Pagination state for execution history */
|
|
2376
2580
|
this.executionHistoryPageSize = 20;
|
|
2377
2581
|
this.executionHistoryCurrentPage = 1;
|
|
@@ -2766,6 +2970,10 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
2766
2970
|
get UserCanViewExecutionHistory() {
|
|
2767
2971
|
return this.checkEntityPermission('MJ: AI Agent Runs', 'Read');
|
|
2768
2972
|
}
|
|
2973
|
+
/** Check if user can view AI Agent Sessions (realtime voice session history) */
|
|
2974
|
+
get UserCanViewSessions() {
|
|
2975
|
+
return this.checkEntityPermission('MJ: AI Agent Sessions', 'Read');
|
|
2976
|
+
}
|
|
2769
2977
|
/** Check if user can create AI Prompts (needed for creating new prompts) */
|
|
2770
2978
|
get UserCanCreateAIPrompts() {
|
|
2771
2979
|
return this.checkEntityPermission('MJ: AI Prompts', 'Create');
|
|
@@ -3024,6 +3232,10 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
3024
3232
|
const permissionRows = results[3]?.Results || [];
|
|
3025
3233
|
this.IsOpenToEveryone = permissionRows.length === 0;
|
|
3026
3234
|
}
|
|
3235
|
+
// Voice/realtime sessions are a peer record type in the Execution
|
|
3236
|
+
// History section — loaded fire-and-forget with their own loading
|
|
3237
|
+
// flag so the runs list renders immediately.
|
|
3238
|
+
void this.loadAgentSessions();
|
|
3027
3239
|
// Create snapshot for cancel/revert functionality
|
|
3028
3240
|
this.createOriginalSnapshot();
|
|
3029
3241
|
}
|
|
@@ -3705,6 +3917,143 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
3705
3917
|
return 'var(--mj-text-muted)';
|
|
3706
3918
|
}
|
|
3707
3919
|
}
|
|
3920
|
+
// ────────────────────────────────────────────────────────────────────
|
|
3921
|
+
// Voice/Realtime Sessions (Execution History peer record type)
|
|
3922
|
+
// ────────────────────────────────────────────────────────────────────
|
|
3923
|
+
/** Switches the Execution History section between agent runs and voice sessions. */
|
|
3924
|
+
setExecutionHistoryView(view) {
|
|
3925
|
+
this.executionHistoryView = view;
|
|
3926
|
+
}
|
|
3927
|
+
/**
|
|
3928
|
+
* Loads the realtime voice sessions this agent participated in — either as
|
|
3929
|
+
* the session's co-agent (AIAgentSession.AgentID = this agent) or as the
|
|
3930
|
+
* delegation target (Config JSON carries targetAgentID = this agent). The
|
|
3931
|
+
* target side can't be expressed as a relational filter, so a pragmatic
|
|
3932
|
+
* LIKE over the Config JSON narrows server-side and the parsed Config
|
|
3933
|
+
* confirms client-side (false positives are filtered out).
|
|
3934
|
+
*/
|
|
3935
|
+
async loadAgentSessions() {
|
|
3936
|
+
if (!this.record?.ID || !this.UserCanViewSessions) {
|
|
3937
|
+
return;
|
|
3938
|
+
}
|
|
3939
|
+
this.loadingSessions = true;
|
|
3940
|
+
try {
|
|
3941
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
3942
|
+
const result = await rv.RunView({
|
|
3943
|
+
EntityName: 'MJ: AI Agent Sessions',
|
|
3944
|
+
Fields: ['ID', 'AgentID', 'Agent', 'UserID', 'User', 'Status', 'ConversationID', 'Conversation',
|
|
3945
|
+
'HostInstanceID', 'Config', 'LastActiveAt', 'ClosedAt', '__mj_CreatedAt'],
|
|
3946
|
+
ExtraFilter: `AgentID='${this.record.ID}' OR Config LIKE '%${this.record.ID}%'`,
|
|
3947
|
+
OrderBy: '__mj_CreatedAt DESC',
|
|
3948
|
+
MaxRows: 50,
|
|
3949
|
+
ResultType: 'simple'
|
|
3950
|
+
});
|
|
3951
|
+
if (result.Success) {
|
|
3952
|
+
const items = (result.Results ?? [])
|
|
3953
|
+
.map(row => this.buildSessionHistoryItem(row))
|
|
3954
|
+
.filter(item => item.isCoAgent || item.isTarget);
|
|
3955
|
+
this.agentSessions = items;
|
|
3956
|
+
this.totalSessionCount = items.length;
|
|
3957
|
+
await this.loadSessionChannelCounts(items);
|
|
3958
|
+
}
|
|
3959
|
+
else {
|
|
3960
|
+
console.error('Failed to load agent sessions:', result.ErrorMessage);
|
|
3961
|
+
}
|
|
3962
|
+
}
|
|
3963
|
+
catch (error) {
|
|
3964
|
+
console.error('Error loading agent sessions:', error);
|
|
3965
|
+
}
|
|
3966
|
+
finally {
|
|
3967
|
+
this.loadingSessions = false;
|
|
3968
|
+
this.cdr.markForCheck();
|
|
3969
|
+
}
|
|
3970
|
+
}
|
|
3971
|
+
/** Decorates a raw session row with its role relative to this agent and the resolved target-agent name. */
|
|
3972
|
+
buildSessionHistoryItem(row) {
|
|
3973
|
+
let targetAgentID = null;
|
|
3974
|
+
if (row.Config) {
|
|
3975
|
+
try {
|
|
3976
|
+
const parsed = JSON.parse(row.Config);
|
|
3977
|
+
if (typeof parsed.targetAgentID === 'string' && parsed.targetAgentID.length > 0) {
|
|
3978
|
+
targetAgentID = parsed.targetAgentID;
|
|
3979
|
+
}
|
|
3980
|
+
}
|
|
3981
|
+
catch {
|
|
3982
|
+
// malformed Config JSON — treat as no target
|
|
3983
|
+
}
|
|
3984
|
+
}
|
|
3985
|
+
const targetAgent = targetAgentID
|
|
3986
|
+
? AIEngineBase.Instance.Agents?.find(a => UUIDsEqual(a.ID, targetAgentID)) ?? null
|
|
3987
|
+
: null;
|
|
3988
|
+
return {
|
|
3989
|
+
row,
|
|
3990
|
+
targetAgentID,
|
|
3991
|
+
targetAgentName: targetAgent?.Name ?? null,
|
|
3992
|
+
isCoAgent: UUIDsEqual(row.AgentID, this.record.ID),
|
|
3993
|
+
isTarget: targetAgentID != null && UUIDsEqual(targetAgentID, this.record.ID),
|
|
3994
|
+
channelCount: 0
|
|
3995
|
+
};
|
|
3996
|
+
}
|
|
3997
|
+
/** Counts channel instances per session in one batched query (sessions list is capped at 50). */
|
|
3998
|
+
async loadSessionChannelCounts(items) {
|
|
3999
|
+
if (items.length === 0)
|
|
4000
|
+
return;
|
|
4001
|
+
const idList = items.map(i => `'${i.row.ID}'`).join(',');
|
|
4002
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
4003
|
+
const result = await rv.RunView({
|
|
4004
|
+
EntityName: 'MJ: AI Agent Session Channels',
|
|
4005
|
+
Fields: ['ID', 'AgentSessionID'],
|
|
4006
|
+
ExtraFilter: `AgentSessionID IN (${idList})`,
|
|
4007
|
+
ResultType: 'simple'
|
|
4008
|
+
});
|
|
4009
|
+
if (result.Success) {
|
|
4010
|
+
const counts = new Map();
|
|
4011
|
+
for (const row of result.Results ?? []) {
|
|
4012
|
+
const key = NormalizeUUID(row.AgentSessionID);
|
|
4013
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
4014
|
+
}
|
|
4015
|
+
for (const item of items) {
|
|
4016
|
+
item.channelCount = counts.get(NormalizeUUID(item.row.ID)) ?? 0;
|
|
4017
|
+
}
|
|
4018
|
+
}
|
|
4019
|
+
}
|
|
4020
|
+
/** Status color for a session lifecycle status (Active / Idle / Closed). */
|
|
4021
|
+
getSessionStatusColor(status) {
|
|
4022
|
+
switch (status) {
|
|
4023
|
+
case 'Active':
|
|
4024
|
+
return 'var(--mj-status-success)';
|
|
4025
|
+
case 'Idle':
|
|
4026
|
+
return 'var(--mj-status-warning)';
|
|
4027
|
+
case 'Closed':
|
|
4028
|
+
return 'var(--mj-text-muted)';
|
|
4029
|
+
default:
|
|
4030
|
+
return 'var(--mj-text-muted)';
|
|
4031
|
+
}
|
|
4032
|
+
}
|
|
4033
|
+
/** Status icon for a session lifecycle status. */
|
|
4034
|
+
getSessionStatusIcon(status) {
|
|
4035
|
+
switch (status) {
|
|
4036
|
+
case 'Active':
|
|
4037
|
+
return 'fa-solid fa-tower-broadcast';
|
|
4038
|
+
case 'Idle':
|
|
4039
|
+
return 'fa-solid fa-moon';
|
|
4040
|
+
case 'Closed':
|
|
4041
|
+
return 'fa-solid fa-circle-stop';
|
|
4042
|
+
default:
|
|
4043
|
+
return 'fa-solid fa-question-circle';
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
/** Session duration: created → closed (terminal) or last-active (still open). */
|
|
4047
|
+
formatSessionDuration(item) {
|
|
4048
|
+
const end = item.row.ClosedAt ?? item.row.LastActiveAt;
|
|
4049
|
+
if (!end)
|
|
4050
|
+
return 'N/A';
|
|
4051
|
+
return this.formatExecutionTimeFromDates(item.row.__mj_CreatedAt, end);
|
|
4052
|
+
}
|
|
4053
|
+
/** Opens an AI Agent Session record (renders via the custom session form). */
|
|
4054
|
+
openSessionRecord(sessionId) {
|
|
4055
|
+
this.sharedService.OpenEntityRecord('MJ: AI Agent Sessions', CompositeKey.FromID(sessionId));
|
|
4056
|
+
}
|
|
3708
4057
|
formatExecutionTimeFromDates(startDate, endDate) {
|
|
3709
4058
|
if (!startDate || !endDate)
|
|
3710
4059
|
return 'N/A';
|
|
@@ -4800,14 +5149,14 @@ let MJAIAgentFormComponentExtended = class MJAIAgentFormComponentExtended extend
|
|
|
4800
5149
|
} if (rf & 2) {
|
|
4801
5150
|
let _t;
|
|
4802
5151
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSectionContainer = _t.first);
|
|
4803
|
-
} }, 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, "form-content"], ["id", "custom", 3, "Expanded"], ["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"], [1, "fa-solid", "fa-sitemap"], ["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-play"], [1, "fa-solid", "fa-layer-group"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "Record"], [1, "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-external-link", 2, "margin-left", "4px", "font-size", "10px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Run this AI agent", 3, "click", "disabled"], ["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"], [1, "panel-content", "custom-agent-type-section"], ["size", "medium", 3, "text"], [1, "fa-solid", "fa-puzzle-piece"], [1, "panel-content", "execution-history-panel"], ["text", "Loading execution history...", "size", "medium"], [1, "empty-state"], [1, "fa-solid", "fa-history"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "12px"], [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"], [1, "execution-history-list"], [1, "execution-card", 3, "expanded"], [1, "pagination-controls"], [1, "execution-card"], [1, "execution-header", 3, "click"], [1, "execution-left-section"], [1, "execution-status"], [1, "status-indicator"], [1, "execution-info"], [1, "execution-title"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "execution-date"], [1, "execution-metrics"], [1, "metric-item"], [1, "execution-actions"], ["title", "View details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "execution-expanded-content"], [1, "fa-solid", "fa-cog"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-stopwatch"], [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, "fa-solid", "fa-spinner", "fa-spin"], [1, "record-count"], [1, "loading-state"], [1, "header-actions"], ["mjButton", "", "variant", "primary", "size", "sm"], [1, "entity-list"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["mjButton", "", "variant", "primary"], ["mjButton", "", "variant", "primary", 3, "click"], [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"], ["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"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [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"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [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) {
|
|
5152
|
+
} }, 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, "form-content"], ["id", "custom", 3, "Expanded"], ["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"], [1, "fa-solid", "fa-sitemap"], ["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-play"], [1, "fa-solid", "fa-layer-group"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "Record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "Record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "Record"], [1, "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-external-link", 2, "margin-left", "4px", "font-size", "10px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Run this AI agent", 3, "click", "disabled"], ["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"], [1, "panel-content", "custom-agent-type-section"], ["size", "medium", 3, "text"], [1, "fa-solid", "fa-puzzle-piece"], [1, "panel-content", "execution-history-panel"], ["role", "tablist", 1, "history-view-toggle"], [1, "fa-solid", "fa-history"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "12px"], ["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"], [1, "empty-state"], [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"], [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"], [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, "fa-solid", "fa-spinner", "fa-spin"], [1, "record-count"], [1, "loading-state"], [1, "header-actions"], ["mjButton", "", "variant", "primary", "size", "sm"], [1, "entity-list"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["mjButton", "", "variant", "primary"], ["mjButton", "", "variant", "primary", 3, "click"], [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"], ["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"], ["name", "modelSelectionMode", "TextField", "text", "ValueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [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"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [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) {
|
|
4804
5153
|
i0.ɵɵconditionalCreate(0, MJAIAgentFormComponentExtended_Conditional_0_Template, 324, 68, "mj-record-form-container", 2);
|
|
4805
5154
|
i0.ɵɵconditionalCreate(1, MJAIAgentFormComponentExtended_Conditional_1_Template, 1, 1, "mj-agent-permissions-dialog", 3);
|
|
4806
5155
|
} if (rf & 2) {
|
|
4807
5156
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
4808
5157
|
i0.ɵɵadvance();
|
|
4809
5158
|
i0.ɵɵconditional(ctx.ShowPermissionsDialog ? 1 : -1);
|
|
4810
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.LoadingComponent, i6.AgentPermissionsDialogComponent, i7.TreeDropdownComponent, i8.SearchScopeChildGridComponent, i9.DatePipe], styles: ["\n\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\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\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\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\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\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\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\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\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\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\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.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\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\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\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\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\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\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\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\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\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\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\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\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\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\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\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\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\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 2px dashed var(--mj-border-default);\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \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\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\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\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\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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.empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\n}\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\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}"] }); }
|
|
5159
|
+
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.LoadingComponent, i6.AgentPermissionsDialogComponent, i7.TreeDropdownComponent, i8.SearchScopeChildGridComponent, i9.DatePipe], styles: ["\n\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\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\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\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\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\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\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\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\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\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\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.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\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\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\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\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\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\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\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\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\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\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\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\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\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\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\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\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\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 2px dashed var(--mj-border-default);\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \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\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\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\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\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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.empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\n}\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\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\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\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}"] }); }
|
|
4811
5160
|
};
|
|
4812
5161
|
MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
4813
5162
|
RegisterClass(BaseFormComponent, 'MJ: AI Agents')
|
|
@@ -4815,10 +5164,10 @@ MJAIAgentFormComponentExtended = MJAIAgentFormComponentExtended_1 = __decorate([
|
|
|
4815
5164
|
export { MJAIAgentFormComponentExtended };
|
|
4816
5165
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentFormComponentExtended, [{
|
|
4817
5166
|
type: Component,
|
|
4818
|
-
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 <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <!-- Custom Agent Type Section (if defined) -->\n @if (record.ID && agentType && agentType.UIFormSectionKey) {\n <mj-accordion-panel id=\"custom\"\n [Expanded]=\"GetSectionExpanded('custom', agentType.UIFormSectionExpandedByDefault)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-puzzle-piece\"></i> {{ agentType.Name }} Configuration\n </ng-template>\n <div class=\"panel-content custom-agent-type-section\" [style.display]=\"'block'\">\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 </mj-accordion-panel>\n }\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 @if (loadingStates.executionHistory) {\n <mj-loading text=\"Loading execution history...\" size=\"medium\"></mj-loading>\n } @else if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-search\"></i>\n <h4>No Matching Results</h4>\n <p>No execution history found matching \"{{ executionSearchText }}\"</p>\n </div>\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 </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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button mjButton variant=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Sub-agents help build complex workflows through hierarchical orchestration.</p>\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 </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button mjButton variant=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button mjButton variant=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\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 </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.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\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/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 2px dashed var(--mj-border-default);\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\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.empty-state-actions {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\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"] }]
|
|
5167
|
+
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 <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <!-- Custom Agent Type Section (if defined) -->\n @if (record.ID && agentType && agentType.UIFormSectionKey) {\n <mj-accordion-panel id=\"custom\"\n [Expanded]=\"GetSectionExpanded('custom', agentType.UIFormSectionExpandedByDefault)\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-puzzle-piece\"></i> {{ agentType.Name }} Configuration\n </ng-template>\n <div class=\"panel-content custom-agent-type-section\" [style.display]=\"'block'\">\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 </mj-accordion-panel>\n }\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-tower-broadcast\"></i>\n <h4>No Voice Sessions</h4>\n <p>This agent hasn't participated in any realtime voice sessions yet \u2014 neither as the co-agent nor as a delegation target.</p>\n </div>\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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-search\"></i>\n <h4>No Matching Results</h4>\n <p>No execution history found matching \"{{ executionSearchText }}\"</p>\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button mjButton variant=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Sub-agents help build complex workflows through hierarchical orchestration.</p>\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 </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button mjButton variant=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\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 style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></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 <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button mjButton variant=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\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 </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.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\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/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 2px dashed var(--mj-border-default);\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: var(--mj-text-secondary);\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\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.empty-state-actions {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\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"] }]
|
|
4819
5168
|
}], null, { customSectionContainer: [{
|
|
4820
5169
|
type: ViewChild,
|
|
4821
5170
|
args: ['customSectionContainer', { read: ViewContainerRef }]
|
|
4822
5171
|
}] }); })();
|
|
4823
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentFormComponentExtended, { className: "MJAIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
5172
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentFormComponentExtended, { className: "MJAIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 115 }); })();
|
|
4824
5173
|
//# sourceMappingURL=ai-agent-form.component.js.map
|