@memberjunction/ng-core-entity-forms 6.1.0-edge.0 → 6.1.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +19 -2
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +50 -9
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts +59 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.js +53 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +54 -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 +1300 -1143
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +9 -9
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +25 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +228 -170
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +60 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +372 -188
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +9 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +86 -51
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +73 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +133 -7
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +49 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +383 -264
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +10 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +25 -3
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +21 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +11 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +28 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +120 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.d.ts +90 -0
- package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js +326 -0
- package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +14 -13
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +8 -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 +59 -41
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/{MJReportSnapshot/mjreportsnapshot.form.component.d.ts.map → MJAIAgentHarness/mjaiagentharness.form.component.d.ts.map} +1 -1
- package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.js +90 -0
- package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.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 +105 -83
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +184 -164
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +25 -23
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +15 -13
- package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +43 -25
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +31 -31
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +11 -11
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +5 -23
- package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +31 -49
- 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 +38 -56
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js +7 -25
- package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js +38 -36
- package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.js +7 -13
- package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js +12 -10
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +15 -33
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js +6 -25
- package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js +6 -25
- package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +45 -25
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +68 -24
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js +20 -6
- package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.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 +372 -462
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +375 -389
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +158 -215
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +43 -42
- package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js +0 -83
- package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js +0 -161
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js +0 -113
- package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.js +0 -72
- package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.js +0 -72
- package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.js +0 -78
- package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js +0 -135
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.js +0 -76
- package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js +0 -121
- package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js +0 -87
- package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.d.ts +0 -10
- package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.d.ts.map +0 -1
- package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.js +0 -80
- package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { MJAIAgentRunStepEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { ResolveTaskGraphPositions } from '@memberjunction/ai-core-plus';
|
|
3
4
|
import { ParseJSONRecursive } from '@memberjunction/global';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common";
|
|
@@ -7,35 +8,56 @@ import * as i2 from "@angular/forms";
|
|
|
7
8
|
import * as i3 from "@memberjunction/ng-ui-components";
|
|
8
9
|
import * as i4 from "@memberjunction/ng-code-editor";
|
|
9
10
|
import * as i5 from "@memberjunction/ng-deep-diff";
|
|
11
|
+
import * as i6 from "@memberjunction/ng-task-graph-editor";
|
|
10
12
|
const _c0 = a0 => ({ $implicit: a0 });
|
|
11
13
|
const _forTrack0 = ($index, $item) => $item.SkillID;
|
|
12
14
|
const _forTrack1 = ($index, $item) => $item.id;
|
|
13
15
|
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
17
|
+
i0.ɵɵelement(1, "mj-alert", 19);
|
|
18
|
+
i0.ɵɵelementEnd();
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
21
|
+
i0.ɵɵadvance();
|
|
22
|
+
i0.ɵɵproperty("Variant", ctx_r1.StepNotice.Variant)("Message", ctx_r1.StepNotice.Message);
|
|
23
|
+
} }
|
|
24
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
14
25
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
15
|
-
i0.ɵɵelementStart(0, "div",
|
|
16
|
-
i0.ɵɵlistener("click", function
|
|
17
|
-
i0.ɵɵelement(2, "i",
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 11)(1, "button", 20);
|
|
27
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onNavigateToActionLog(ctx_r1.selectedTimelineItem.data.ID)); });
|
|
28
|
+
i0.ɵɵelement(2, "i", 21);
|
|
18
29
|
i0.ɵɵtext(3, " View Action Execution Log ");
|
|
19
30
|
i0.ɵɵelementEnd()();
|
|
20
31
|
} }
|
|
21
|
-
function
|
|
32
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
22
33
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
23
|
-
i0.ɵɵelementStart(0, "button",
|
|
24
|
-
i0.ɵɵlistener("click", function
|
|
25
|
-
i0.ɵɵelement(1, "i",
|
|
34
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
35
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "graph"); });
|
|
36
|
+
i0.ɵɵelement(1, "i", 25);
|
|
37
|
+
i0.ɵɵtext(2, " Workflow ");
|
|
38
|
+
i0.ɵɵelementEnd();
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
41
|
+
i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "graph");
|
|
42
|
+
} }
|
|
43
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
45
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
46
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "diff"); });
|
|
47
|
+
i0.ɵɵelement(1, "i", 26);
|
|
26
48
|
i0.ɵɵtext(2, " Payload Changes ");
|
|
27
49
|
i0.ɵɵelementEnd();
|
|
28
50
|
} if (rf & 2) {
|
|
29
51
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
30
52
|
i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "diff");
|
|
31
53
|
} }
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
i0.ɵɵelementStart(0, "button",
|
|
35
|
-
i0.ɵɵlistener("click", function
|
|
36
|
-
i0.ɵɵelement(1, "i",
|
|
54
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
56
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
57
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "skills"); });
|
|
58
|
+
i0.ɵɵelement(1, "i", 27);
|
|
37
59
|
i0.ɵɵtext(2, " Skills ");
|
|
38
|
-
i0.ɵɵelementStart(3, "span",
|
|
60
|
+
i0.ɵɵelementStart(3, "span", 28);
|
|
39
61
|
i0.ɵɵtext(4);
|
|
40
62
|
i0.ɵɵelementEnd()();
|
|
41
63
|
} if (rf & 2) {
|
|
@@ -44,8 +66,8 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_
|
|
|
44
66
|
i0.ɵɵadvance(4);
|
|
45
67
|
i0.ɵɵtextInterpolate(ctx_r1.stepSkillInvocations.length);
|
|
46
68
|
} }
|
|
47
|
-
function
|
|
48
|
-
i0.ɵɵelementStart(0, "span",
|
|
69
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵelementStart(0, "span", 28);
|
|
49
71
|
i0.ɵɵtext(1);
|
|
50
72
|
i0.ɵɵelementEnd();
|
|
51
73
|
} if (rf & 2) {
|
|
@@ -53,13 +75,13 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_
|
|
|
53
75
|
i0.ɵɵadvance();
|
|
54
76
|
i0.ɵɵtextInterpolate(ctx_r1.scratchpadTaskChangeCount);
|
|
55
77
|
} }
|
|
56
|
-
function
|
|
57
|
-
const
|
|
58
|
-
i0.ɵɵelementStart(0, "button",
|
|
59
|
-
i0.ɵɵlistener("click", function
|
|
60
|
-
i0.ɵɵelement(1, "i",
|
|
78
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
79
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
80
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
81
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "scratchpad"); });
|
|
82
|
+
i0.ɵɵelement(1, "i", 29);
|
|
61
83
|
i0.ɵɵtext(2, " Scratchpad ");
|
|
62
|
-
i0.ɵɵconditionalCreate(3,
|
|
84
|
+
i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_4_Conditional_3_Template, 2, 1, "span", 28);
|
|
63
85
|
i0.ɵɵelementEnd();
|
|
64
86
|
} if (rf & 2) {
|
|
65
87
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -67,217 +89,241 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_
|
|
|
67
89
|
i0.ɵɵadvance(3);
|
|
68
90
|
i0.ɵɵconditional(ctx_r1.scratchpadTaskChangeCount > 0 ? 3 : -1);
|
|
69
91
|
} }
|
|
70
|
-
function
|
|
92
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
71
93
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "div",
|
|
73
|
-
i0.ɵɵconditionalCreate(1,
|
|
74
|
-
i0.ɵɵconditionalCreate(2,
|
|
75
|
-
i0.ɵɵconditionalCreate(3,
|
|
76
|
-
i0.ɵɵ
|
|
77
|
-
i0.ɵɵ
|
|
78
|
-
i0.ɵɵ
|
|
79
|
-
i0.ɵɵ
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
95
|
+
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_1_Template, 3, 2, "button", 22);
|
|
96
|
+
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_2_Template, 3, 2, "button", 22);
|
|
97
|
+
i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_3_Template, 5, 3, "button", 22);
|
|
98
|
+
i0.ɵɵconditionalCreate(4, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Conditional_4_Template, 4, 3, "button", 22);
|
|
99
|
+
i0.ɵɵelementStart(5, "button", 23);
|
|
100
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "json"); });
|
|
101
|
+
i0.ɵɵelement(6, "i", 24);
|
|
102
|
+
i0.ɵɵtext(7, " Full JSON ");
|
|
80
103
|
i0.ɵɵelementEnd()();
|
|
81
104
|
} if (rf & 2) {
|
|
82
105
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
83
106
|
i0.ɵɵadvance();
|
|
84
|
-
i0.ɵɵconditional(ctx_r1.
|
|
107
|
+
i0.ɵɵconditional(ctx_r1.showGraphTab ? 1 : -1);
|
|
85
108
|
i0.ɵɵadvance();
|
|
86
|
-
i0.ɵɵconditional(ctx_r1.
|
|
109
|
+
i0.ɵɵconditional(ctx_r1.showStepPayloadDiff ? 2 : -1);
|
|
87
110
|
i0.ɵɵadvance();
|
|
88
|
-
i0.ɵɵconditional(ctx_r1.
|
|
111
|
+
i0.ɵɵconditional(ctx_r1.showSkillsTab ? 3 : -1);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵconditional(ctx_r1.showScratchpadTab ? 4 : -1);
|
|
89
114
|
i0.ɵɵadvance();
|
|
90
115
|
i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "json");
|
|
91
116
|
} }
|
|
92
|
-
function
|
|
93
|
-
i0.ɵɵ
|
|
94
|
-
|
|
117
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelement(0, "mj-alert", 31);
|
|
119
|
+
} }
|
|
120
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
122
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "div", 30);
|
|
123
|
+
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_2_Template, 1, 0, "mj-alert", 31);
|
|
124
|
+
i0.ɵɵelementStart(3, "button", 32);
|
|
125
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RequestSaveAsWorkflow()); });
|
|
126
|
+
i0.ɵɵelement(4, "i", 33);
|
|
127
|
+
i0.ɵɵtext(5, " Save as Workflow ");
|
|
128
|
+
i0.ɵɵelementEnd()();
|
|
129
|
+
i0.ɵɵelement(6, "mj-task-graph-editor", 34);
|
|
130
|
+
i0.ɵɵelementEnd();
|
|
131
|
+
} if (rf & 2) {
|
|
132
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
133
|
+
i0.ɵɵadvance(2);
|
|
134
|
+
i0.ɵɵconditional(ctx_r1.stepTaskGraphWasFolded ? 2 : -1);
|
|
135
|
+
i0.ɵɵadvance(4);
|
|
136
|
+
i0.ɵɵproperty("Spec", ctx_r1.stepTaskGraph)("NodePositions", ctx_r1.stepTaskGraphPositions)("ReadOnly", true)("ShowPalette", false);
|
|
137
|
+
} }
|
|
138
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
140
|
+
i0.ɵɵelement(1, "i", 46);
|
|
95
141
|
i0.ɵɵtext(2);
|
|
96
142
|
i0.ɵɵelementEnd();
|
|
97
143
|
} if (rf & 2) {
|
|
98
|
-
const
|
|
144
|
+
const inv_r10 = i0.ɵɵnextContext().$implicit;
|
|
99
145
|
i0.ɵɵadvance(2);
|
|
100
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
146
|
+
i0.ɵɵtextInterpolate1(" ", inv_r10.Reason, " ");
|
|
101
147
|
} }
|
|
102
|
-
function
|
|
103
|
-
i0.ɵɵelementStart(0, "div",
|
|
104
|
-
i0.ɵɵelement(3, "i",
|
|
148
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "span", 37);
|
|
150
|
+
i0.ɵɵelement(3, "i", 27);
|
|
105
151
|
i0.ɵɵtext(4);
|
|
106
152
|
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵelementStart(5, "span",
|
|
153
|
+
i0.ɵɵelementStart(5, "span", 38);
|
|
108
154
|
i0.ɵɵtext(6);
|
|
109
155
|
i0.ɵɵelementEnd()();
|
|
110
|
-
i0.ɵɵconditionalCreate(7,
|
|
111
|
-
i0.ɵɵelementStart(8, "div",
|
|
156
|
+
i0.ɵɵconditionalCreate(7, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_For_2_Conditional_7_Template, 3, 1, "div", 39);
|
|
157
|
+
i0.ɵɵelementStart(8, "div", 40)(9, "div", 41);
|
|
112
158
|
i0.ɵɵtext(10, "Provenance of Authority");
|
|
113
159
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(11, "div",
|
|
160
|
+
i0.ɵɵelementStart(11, "div", 42)(12, "span", 43);
|
|
115
161
|
i0.ɵɵtext(13, "Requested By");
|
|
116
162
|
i0.ɵɵelementEnd();
|
|
117
|
-
i0.ɵɵelementStart(14, "span",
|
|
163
|
+
i0.ɵɵelementStart(14, "span", 44);
|
|
118
164
|
i0.ɵɵtext(15);
|
|
119
165
|
i0.ɵɵelementEnd()();
|
|
120
|
-
i0.ɵɵelementStart(16, "div",
|
|
166
|
+
i0.ɵɵelementStart(16, "div", 42)(17, "span", 43);
|
|
121
167
|
i0.ɵɵtext(18, "Agent AcceptsSkills");
|
|
122
168
|
i0.ɵɵelementEnd();
|
|
123
|
-
i0.ɵɵelementStart(19, "span",
|
|
169
|
+
i0.ɵɵelementStart(19, "span", 44);
|
|
124
170
|
i0.ɵɵtext(20);
|
|
125
171
|
i0.ɵɵelementEnd()();
|
|
126
|
-
i0.ɵɵelementStart(21, "div",
|
|
172
|
+
i0.ɵɵelementStart(21, "div", 42)(22, "span", 43);
|
|
127
173
|
i0.ɵɵtext(23, "Skill ActivationMode");
|
|
128
174
|
i0.ɵɵelementEnd();
|
|
129
|
-
i0.ɵɵelementStart(24, "span",
|
|
175
|
+
i0.ɵɵelementStart(24, "span", 44);
|
|
130
176
|
i0.ɵɵtext(25);
|
|
131
177
|
i0.ɵɵelementEnd()();
|
|
132
|
-
i0.ɵɵelementStart(26, "div",
|
|
178
|
+
i0.ɵɵelementStart(26, "div", 42)(27, "span", 43);
|
|
133
179
|
i0.ɵɵtext(28, "Agent SkillActivationMode");
|
|
134
180
|
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵelementStart(29, "span",
|
|
181
|
+
i0.ɵɵelementStart(29, "span", 44);
|
|
136
182
|
i0.ɵɵtext(30);
|
|
137
183
|
i0.ɵɵelementEnd()();
|
|
138
|
-
i0.ɵɵelementStart(31, "div",
|
|
184
|
+
i0.ɵɵelementStart(31, "div", 42)(32, "span", 43);
|
|
139
185
|
i0.ɵɵtext(33, "Skill ID");
|
|
140
186
|
i0.ɵɵelementEnd();
|
|
141
|
-
i0.ɵɵelementStart(34, "span",
|
|
187
|
+
i0.ɵɵelementStart(34, "span", 45);
|
|
142
188
|
i0.ɵɵtext(35);
|
|
143
189
|
i0.ɵɵelementEnd()()()();
|
|
144
190
|
} if (rf & 2) {
|
|
145
|
-
const
|
|
191
|
+
const inv_r10 = ctx.$implicit;
|
|
146
192
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
147
|
-
i0.ɵɵattribute("data-activation",
|
|
193
|
+
i0.ɵɵattribute("data-activation", inv_r10.ActivationType);
|
|
148
194
|
i0.ɵɵadvance(4);
|
|
149
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
195
|
+
i0.ɵɵtextInterpolate1(" ", inv_r10.SkillName, " ");
|
|
150
196
|
i0.ɵɵadvance();
|
|
151
|
-
i0.ɵɵattribute("data-activation",
|
|
197
|
+
i0.ɵɵattribute("data-activation", inv_r10.ActivationType);
|
|
152
198
|
i0.ɵɵadvance();
|
|
153
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.GetActivationTypeLabel(
|
|
199
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.GetActivationTypeLabel(inv_r10), " ");
|
|
154
200
|
i0.ɵɵadvance();
|
|
155
|
-
i0.ɵɵconditional(
|
|
201
|
+
i0.ɵɵconditional(inv_r10.Reason ? 7 : -1);
|
|
156
202
|
i0.ɵɵadvance(8);
|
|
157
|
-
i0.ɵɵtextInterpolate(
|
|
203
|
+
i0.ɵɵtextInterpolate(inv_r10.Provenance.RequestedBy === "user-request" ? "User (/skill mention)" : "Agent decision");
|
|
158
204
|
i0.ɵɵadvance(5);
|
|
159
|
-
i0.ɵɵtextInterpolate(
|
|
205
|
+
i0.ɵɵtextInterpolate(inv_r10.Provenance.AgentAcceptsSkills);
|
|
160
206
|
i0.ɵɵadvance(5);
|
|
161
|
-
i0.ɵɵtextInterpolate(
|
|
207
|
+
i0.ɵɵtextInterpolate(inv_r10.Provenance.SkillActivationMode);
|
|
162
208
|
i0.ɵɵadvance(5);
|
|
163
|
-
i0.ɵɵtextInterpolate(
|
|
209
|
+
i0.ɵɵtextInterpolate(inv_r10.Provenance.AgentSkillActivationMode);
|
|
164
210
|
i0.ɵɵadvance(5);
|
|
165
|
-
i0.ɵɵtextInterpolate(
|
|
211
|
+
i0.ɵɵtextInterpolate(inv_r10.SkillID);
|
|
166
212
|
} }
|
|
167
|
-
function
|
|
168
|
-
i0.ɵɵelementStart(0, "div",
|
|
169
|
-
i0.ɵɵrepeaterCreate(1,
|
|
213
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
i0.ɵɵelementStart(0, "div", 15);
|
|
215
|
+
i0.ɵɵrepeaterCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_For_2_Template, 36, 10, "div", 35, _forTrack0);
|
|
170
216
|
i0.ɵɵelementEnd();
|
|
171
217
|
} if (rf & 2) {
|
|
172
218
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
173
219
|
i0.ɵɵadvance();
|
|
174
220
|
i0.ɵɵrepeater(ctx_r1.stepSkillInvocations);
|
|
175
221
|
} }
|
|
176
|
-
function
|
|
177
|
-
i0.ɵɵelementStart(0, "div",
|
|
178
|
-
i0.ɵɵelement(1, "mj-deep-diff",
|
|
222
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "div", 16);
|
|
224
|
+
i0.ɵɵelement(1, "mj-deep-diff", 47);
|
|
179
225
|
i0.ɵɵelementEnd();
|
|
180
226
|
} if (rf & 2) {
|
|
181
227
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
182
228
|
i0.ɵɵadvance();
|
|
183
229
|
i0.ɵɵproperty("oldValue", ctx_r1.stepPayloadAtStartObject)("newValue", ctx_r1.stepPayloadAtEndObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 8)("maxStringLength", 150)("treatNullAsUndefined", true);
|
|
184
230
|
} }
|
|
185
|
-
function
|
|
186
|
-
i0.ɵɵelement(0, "mj-deep-diff",
|
|
231
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
+
i0.ɵɵelement(0, "mj-deep-diff", 47);
|
|
187
233
|
} if (rf & 2) {
|
|
188
234
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
189
235
|
i0.ɵɵproperty("oldValue", ctx_r1.stepScratchpadInput)("newValue", ctx_r1.stepScratchpadOutput)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", true)("maxDepth", 6)("maxStringLength", 300)("treatNullAsUndefined", true);
|
|
190
236
|
} }
|
|
191
|
-
function
|
|
237
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
192
238
|
i0.ɵɵelementContainer(0);
|
|
193
239
|
} }
|
|
194
|
-
function
|
|
195
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
196
|
-
i0.ɵɵelementStart(1, "div",
|
|
197
|
-
i0.ɵɵtemplate(2,
|
|
240
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
241
|
+
i0.ɵɵelement(0, "mj-empty-state", 56);
|
|
242
|
+
i0.ɵɵelementStart(1, "div", 57);
|
|
243
|
+
i0.ɵɵtemplate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_2_ng_container_2_Template, 1, 0, "ng-container", 58);
|
|
198
244
|
i0.ɵɵelementEnd();
|
|
199
245
|
} if (rf & 2) {
|
|
200
246
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
201
|
-
const
|
|
247
|
+
const scratchpadSnapshotTpl_r12 = i0.ɵɵreference(2);
|
|
202
248
|
i0.ɵɵadvance(2);
|
|
203
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
249
|
+
i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
|
|
204
250
|
} }
|
|
205
|
-
function
|
|
206
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
251
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelement(0, "mj-empty-state", 55);
|
|
207
253
|
} }
|
|
208
|
-
function
|
|
209
|
-
i0.ɵɵelementStart(0, "div",
|
|
210
|
-
i0.ɵɵconditionalCreate(1,
|
|
254
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
255
|
+
i0.ɵɵelementStart(0, "div", 53);
|
|
256
|
+
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_1_Template, 1, 9, "mj-deep-diff", 47)(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_2_Template, 3, 4)(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Conditional_3_Template, 1, 0, "mj-empty-state", 55);
|
|
211
257
|
i0.ɵɵelementEnd();
|
|
212
258
|
} if (rf & 2) {
|
|
213
259
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
214
260
|
i0.ɵɵadvance();
|
|
215
261
|
i0.ɵɵconditional(ctx_r1.stepScratchpadInput && ctx_r1.stepScratchpadOutput ? 1 : ctx_r1.stepScratchpadOutput ? 2 : 3);
|
|
216
262
|
} }
|
|
217
|
-
function
|
|
263
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
218
264
|
i0.ɵɵelementContainer(0);
|
|
219
265
|
} }
|
|
220
|
-
function
|
|
221
|
-
i0.ɵɵtemplate(0,
|
|
266
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 58);
|
|
222
268
|
} if (rf & 2) {
|
|
223
269
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
224
|
-
const
|
|
225
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
270
|
+
const scratchpadSnapshotTpl_r12 = i0.ɵɵreference(2);
|
|
271
|
+
i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadInput));
|
|
226
272
|
} }
|
|
227
|
-
function
|
|
228
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
273
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
+
i0.ɵɵelement(0, "mj-empty-state", 59);
|
|
229
275
|
} }
|
|
230
|
-
function
|
|
231
|
-
i0.ɵɵelementStart(0, "div",
|
|
232
|
-
i0.ɵɵconditionalCreate(1,
|
|
276
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
277
|
+
i0.ɵɵelementStart(0, "div", 54);
|
|
278
|
+
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Conditional_2_Template, 1, 0, "mj-empty-state", 59);
|
|
233
279
|
i0.ɵɵelementEnd();
|
|
234
280
|
} if (rf & 2) {
|
|
235
281
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
236
282
|
i0.ɵɵadvance();
|
|
237
283
|
i0.ɵɵconditional(ctx_r1.stepScratchpadInput ? 1 : 2);
|
|
238
284
|
} }
|
|
239
|
-
function
|
|
285
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
240
286
|
i0.ɵɵelementContainer(0);
|
|
241
287
|
} }
|
|
242
|
-
function
|
|
243
|
-
i0.ɵɵtemplate(0,
|
|
288
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
289
|
+
i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 58);
|
|
244
290
|
} if (rf & 2) {
|
|
245
291
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
246
|
-
const
|
|
247
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
292
|
+
const scratchpadSnapshotTpl_r12 = i0.ɵɵreference(2);
|
|
293
|
+
i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r12)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
|
|
248
294
|
} }
|
|
249
|
-
function
|
|
250
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
295
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
296
|
+
i0.ɵɵelement(0, "mj-empty-state", 60);
|
|
251
297
|
} }
|
|
252
|
-
function
|
|
253
|
-
i0.ɵɵelementStart(0, "div",
|
|
254
|
-
i0.ɵɵconditionalCreate(1,
|
|
298
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
+
i0.ɵɵelementStart(0, "div", 54);
|
|
300
|
+
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Conditional_2_Template, 1, 0, "mj-empty-state", 60);
|
|
255
301
|
i0.ɵɵelementEnd();
|
|
256
302
|
} if (rf & 2) {
|
|
257
303
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
258
304
|
i0.ɵɵadvance();
|
|
259
305
|
i0.ɵɵconditional(ctx_r1.stepScratchpadOutput ? 1 : 2);
|
|
260
306
|
} }
|
|
261
|
-
function
|
|
262
|
-
const
|
|
263
|
-
i0.ɵɵelementStart(0, "div",
|
|
264
|
-
i0.ɵɵlistener("click", function
|
|
265
|
-
i0.ɵɵelement(3, "i",
|
|
307
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
309
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 48)(2, "button", 49);
|
|
310
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "diff"); });
|
|
311
|
+
i0.ɵɵelement(3, "i", 50);
|
|
266
312
|
i0.ɵɵtext(4, " Diff ");
|
|
267
313
|
i0.ɵɵelementEnd();
|
|
268
|
-
i0.ɵɵelementStart(5, "button",
|
|
269
|
-
i0.ɵɵlistener("click", function
|
|
270
|
-
i0.ɵɵelement(6, "i",
|
|
314
|
+
i0.ɵɵelementStart(5, "button", 49);
|
|
315
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "input"); });
|
|
316
|
+
i0.ɵɵelement(6, "i", 51);
|
|
271
317
|
i0.ɵɵtext(7, " Input ");
|
|
272
318
|
i0.ɵɵelementEnd();
|
|
273
|
-
i0.ɵɵelementStart(8, "button",
|
|
274
|
-
i0.ɵɵlistener("click", function
|
|
275
|
-
i0.ɵɵelement(9, "i",
|
|
319
|
+
i0.ɵɵelementStart(8, "button", 49);
|
|
320
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "output"); });
|
|
321
|
+
i0.ɵɵelement(9, "i", 52);
|
|
276
322
|
i0.ɵɵtext(10, " Output ");
|
|
277
323
|
i0.ɵɵelementEnd()();
|
|
278
|
-
i0.ɵɵconditionalCreate(11,
|
|
279
|
-
i0.ɵɵconditionalCreate(12,
|
|
280
|
-
i0.ɵɵconditionalCreate(13,
|
|
324
|
+
i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_11_Template, 4, 1, "div", 53);
|
|
325
|
+
i0.ɵɵconditionalCreate(12, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_12_Template, 3, 1, "div", 54);
|
|
326
|
+
i0.ɵɵconditionalCreate(13, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Conditional_13_Template, 3, 1, "div", 54);
|
|
281
327
|
i0.ɵɵelementEnd();
|
|
282
328
|
} if (rf & 2) {
|
|
283
329
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -294,14 +340,14 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template(rf,
|
|
|
294
340
|
i0.ɵɵadvance();
|
|
295
341
|
i0.ɵɵconditional(ctx_r1.scratchpadSubTab === "output" ? 13 : -1);
|
|
296
342
|
} }
|
|
297
|
-
function
|
|
298
|
-
const
|
|
299
|
-
i0.ɵɵelementStart(0, "div",
|
|
300
|
-
i0.ɵɵlistener("click", function
|
|
301
|
-
i0.ɵɵelement(3, "i",
|
|
343
|
+
function AIAgentRunStepDetailComponent_Conditional_0_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
345
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 61)(2, "button", 62);
|
|
346
|
+
i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_32_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCopyToClipboard()); });
|
|
347
|
+
i0.ɵɵelement(3, "i", 63);
|
|
302
348
|
i0.ɵɵelementEnd()();
|
|
303
|
-
i0.ɵɵelementStart(4, "mj-code-editor",
|
|
304
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
349
|
+
i0.ɵɵelementStart(4, "mj-code-editor", 64);
|
|
350
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_32_Template_mj_code_editor_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedItemJsonString, $event) || (ctx_r1.selectedItemJsonString = $event); return i0.ɵɵresetView($event); });
|
|
305
351
|
i0.ɵɵelementEnd()();
|
|
306
352
|
} if (rf & 2) {
|
|
307
353
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -337,13 +383,15 @@ function AIAgentRunStepDetailComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
337
383
|
i0.ɵɵelementStart(22, "span");
|
|
338
384
|
i0.ɵɵtext(23);
|
|
339
385
|
i0.ɵɵelementEnd()()();
|
|
340
|
-
i0.ɵɵconditionalCreate(24, AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template,
|
|
341
|
-
i0.ɵɵconditionalCreate(25, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template,
|
|
342
|
-
i0.ɵɵ
|
|
343
|
-
i0.ɵɵ
|
|
344
|
-
i0.ɵɵconditionalCreate(28, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template,
|
|
345
|
-
i0.ɵɵconditionalCreate(29, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template,
|
|
346
|
-
i0.ɵɵconditionalCreate(30, AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template,
|
|
386
|
+
i0.ɵɵconditionalCreate(24, AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template, 2, 2, "div", 10);
|
|
387
|
+
i0.ɵɵconditionalCreate(25, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template, 4, 0, "div", 11);
|
|
388
|
+
i0.ɵɵconditionalCreate(26, AIAgentRunStepDetailComponent_Conditional_0_Conditional_26_Template, 8, 6, "div", 12);
|
|
389
|
+
i0.ɵɵelementStart(27, "div", 13);
|
|
390
|
+
i0.ɵɵconditionalCreate(28, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template, 7, 5, "div", 14);
|
|
391
|
+
i0.ɵɵconditionalCreate(29, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template, 3, 0, "div", 15);
|
|
392
|
+
i0.ɵɵconditionalCreate(30, AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template, 2, 9, "div", 16);
|
|
393
|
+
i0.ɵɵconditionalCreate(31, AIAgentRunStepDetailComponent_Conditional_0_Conditional_31_Template, 14, 9, "div", 17);
|
|
394
|
+
i0.ɵɵconditionalCreate(32, AIAgentRunStepDetailComponent_Conditional_0_Conditional_32_Template, 5, 3, "div", 18);
|
|
347
395
|
i0.ɵɵelementEnd()()();
|
|
348
396
|
} if (rf & 2) {
|
|
349
397
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -360,120 +408,124 @@ function AIAgentRunStepDetailComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
360
408
|
i0.ɵɵadvance(5);
|
|
361
409
|
i0.ɵɵtextInterpolate(ctx_r1.selectedTimelineItem.duration || "N/A");
|
|
362
410
|
i0.ɵɵadvance();
|
|
363
|
-
i0.ɵɵconditional(ctx_r1.
|
|
411
|
+
i0.ɵɵconditional(ctx_r1.StepNotice ? 24 : -1);
|
|
412
|
+
i0.ɵɵadvance();
|
|
413
|
+
i0.ɵɵconditional(ctx_r1.selectedTimelineItem.type === "action" && (ctx_r1.selectedTimelineItem.data == null ? null : ctx_r1.selectedTimelineItem.data.ID) ? 25 : -1);
|
|
414
|
+
i0.ɵɵadvance();
|
|
415
|
+
i0.ɵɵconditional(ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab || ctx_r1.showSkillsTab || ctx_r1.showGraphTab ? 26 : -1);
|
|
364
416
|
i0.ɵɵadvance();
|
|
365
|
-
i0.ɵɵ
|
|
417
|
+
i0.ɵɵclassProp("with-tabs", ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab || ctx_r1.showSkillsTab || ctx_r1.showGraphTab);
|
|
366
418
|
i0.ɵɵadvance();
|
|
367
|
-
i0.ɵɵ
|
|
419
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "graph" && ctx_r1.showGraphTab ? 28 : -1);
|
|
368
420
|
i0.ɵɵadvance();
|
|
369
|
-
i0.ɵɵconditional(ctx_r1.detailPaneTab === "skills" && ctx_r1.showSkillsTab ?
|
|
421
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "skills" && ctx_r1.showSkillsTab ? 29 : -1);
|
|
370
422
|
i0.ɵɵadvance();
|
|
371
|
-
i0.ɵɵconditional(ctx_r1.detailPaneTab === "diff" && ctx_r1.showStepPayloadDiff ?
|
|
423
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "diff" && ctx_r1.showStepPayloadDiff ? 30 : -1);
|
|
372
424
|
i0.ɵɵadvance();
|
|
373
|
-
i0.ɵɵconditional(ctx_r1.detailPaneTab === "scratchpad" && ctx_r1.showScratchpadTab ?
|
|
425
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "scratchpad" && ctx_r1.showScratchpadTab ? 31 : -1);
|
|
374
426
|
i0.ɵɵadvance();
|
|
375
|
-
i0.ɵɵconditional(ctx_r1.detailPaneTab === "json" || !ctx_r1.showStepPayloadDiff && !ctx_r1.showScratchpadTab ?
|
|
427
|
+
i0.ɵɵconditional(ctx_r1.detailPaneTab === "json" || !ctx_r1.showStepPayloadDiff && !ctx_r1.showScratchpadTab ? 32 : -1);
|
|
376
428
|
} }
|
|
377
429
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
378
|
-
i0.ɵɵelementStart(0, "div",
|
|
379
|
-
i0.ɵɵelement(2, "i",
|
|
430
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "h4");
|
|
431
|
+
i0.ɵɵelement(2, "i", 68);
|
|
380
432
|
i0.ɵɵtext(3, " Notes");
|
|
381
433
|
i0.ɵɵelementEnd();
|
|
382
|
-
i0.ɵɵelementStart(4, "div",
|
|
434
|
+
i0.ɵɵelementStart(4, "div", 69);
|
|
383
435
|
i0.ɵɵtext(5);
|
|
384
436
|
i0.ɵɵelementEnd()();
|
|
385
437
|
} if (rf & 2) {
|
|
386
|
-
const
|
|
438
|
+
const snapshot_r14 = i0.ɵɵnextContext().$implicit;
|
|
387
439
|
i0.ɵɵadvance(5);
|
|
388
|
-
i0.ɵɵtextInterpolate(
|
|
440
|
+
i0.ɵɵtextInterpolate(snapshot_r14.notes);
|
|
389
441
|
} }
|
|
390
442
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template(rf, ctx) { if (rf & 1) {
|
|
391
|
-
i0.ɵɵelement(0, "i",
|
|
443
|
+
i0.ɵɵelement(0, "i", 74);
|
|
392
444
|
} }
|
|
393
445
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_3_Template(rf, ctx) { if (rf & 1) {
|
|
394
|
-
i0.ɵɵelement(0, "i",
|
|
446
|
+
i0.ɵɵelement(0, "i", 75);
|
|
395
447
|
} }
|
|
396
448
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
397
|
-
i0.ɵɵelement(0, "i",
|
|
449
|
+
i0.ɵɵelement(0, "i", 76);
|
|
398
450
|
} }
|
|
399
451
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
-
i0.ɵɵelement(0, "i",
|
|
452
|
+
i0.ɵɵelement(0, "i", 77);
|
|
401
453
|
} }
|
|
402
454
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
403
|
-
i0.ɵɵelementStart(0, "span",
|
|
455
|
+
i0.ɵɵelementStart(0, "span", 81);
|
|
404
456
|
i0.ɵɵtext(1);
|
|
405
457
|
i0.ɵɵelementEnd();
|
|
406
458
|
} if (rf & 2) {
|
|
407
|
-
const
|
|
459
|
+
const task_r15 = i0.ɵɵnextContext().$implicit;
|
|
408
460
|
i0.ɵɵadvance();
|
|
409
|
-
i0.ɵɵtextInterpolate(
|
|
461
|
+
i0.ɵɵtextInterpolate(task_r15.notes);
|
|
410
462
|
} }
|
|
411
463
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
412
|
-
i0.ɵɵelementStart(0, "div",
|
|
413
|
-
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template, 1, 0, "i",
|
|
464
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "span", 73);
|
|
465
|
+
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template, 1, 0, "i", 74)(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_3_Template, 1, 0, "i", 75)(4, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_4_Template, 1, 0, "i", 76)(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_5_Template, 1, 0, "i", 77);
|
|
414
466
|
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵelementStart(6, "div",
|
|
467
|
+
i0.ɵɵelementStart(6, "div", 78)(7, "span", 79);
|
|
416
468
|
i0.ɵɵtext(8);
|
|
417
469
|
i0.ɵɵelementEnd();
|
|
418
|
-
i0.ɵɵelementStart(9, "span",
|
|
470
|
+
i0.ɵɵelementStart(9, "span", 80);
|
|
419
471
|
i0.ɵɵtext(10);
|
|
420
472
|
i0.ɵɵelementEnd();
|
|
421
|
-
i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template, 2, 1, "span",
|
|
473
|
+
i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template, 2, 1, "span", 81);
|
|
422
474
|
i0.ɵɵelementEnd();
|
|
423
|
-
i0.ɵɵelementStart(12, "span",
|
|
475
|
+
i0.ɵɵelementStart(12, "span", 82);
|
|
424
476
|
i0.ɵɵtext(13);
|
|
425
477
|
i0.ɵɵelementEnd()();
|
|
426
478
|
} if (rf & 2) {
|
|
427
479
|
let tmp_16_0;
|
|
428
|
-
const
|
|
429
|
-
i0.ɵɵattribute("data-status",
|
|
480
|
+
const task_r15 = ctx.$implicit;
|
|
481
|
+
i0.ɵɵattribute("data-status", task_r15.status);
|
|
430
482
|
i0.ɵɵadvance();
|
|
431
|
-
i0.ɵɵattribute("data-status",
|
|
483
|
+
i0.ɵɵattribute("data-status", task_r15.status);
|
|
432
484
|
i0.ɵɵadvance();
|
|
433
|
-
i0.ɵɵconditional((tmp_16_0 =
|
|
485
|
+
i0.ɵɵconditional((tmp_16_0 = task_r15.status) === "completed" ? 2 : tmp_16_0 === "in_progress" ? 3 : tmp_16_0 === "blocked" ? 4 : 5);
|
|
434
486
|
i0.ɵɵadvance(6);
|
|
435
|
-
i0.ɵɵtextInterpolate(
|
|
487
|
+
i0.ɵɵtextInterpolate(task_r15.id);
|
|
436
488
|
i0.ɵɵadvance(2);
|
|
437
|
-
i0.ɵɵtextInterpolate(
|
|
489
|
+
i0.ɵɵtextInterpolate(task_r15.title);
|
|
438
490
|
i0.ɵɵadvance();
|
|
439
|
-
i0.ɵɵconditional(
|
|
491
|
+
i0.ɵɵconditional(task_r15.notes ? 11 : -1);
|
|
440
492
|
i0.ɵɵadvance();
|
|
441
|
-
i0.ɵɵattribute("data-status",
|
|
493
|
+
i0.ɵɵattribute("data-status", task_r15.status);
|
|
442
494
|
i0.ɵɵadvance();
|
|
443
|
-
i0.ɵɵtextInterpolate(
|
|
495
|
+
i0.ɵɵtextInterpolate(task_r15.status);
|
|
444
496
|
} }
|
|
445
497
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
446
|
-
i0.ɵɵelementStart(0, "div",
|
|
447
|
-
i0.ɵɵelement(2, "i",
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "h4");
|
|
499
|
+
i0.ɵɵelement(2, "i", 70);
|
|
448
500
|
i0.ɵɵtext(3);
|
|
449
501
|
i0.ɵɵelementEnd();
|
|
450
|
-
i0.ɵɵelementStart(4, "div",
|
|
451
|
-
i0.ɵɵrepeaterCreate(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template, 14, 8, "div",
|
|
502
|
+
i0.ɵɵelementStart(4, "div", 71);
|
|
503
|
+
i0.ɵɵrepeaterCreate(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template, 14, 8, "div", 72, _forTrack1);
|
|
452
504
|
i0.ɵɵelementEnd()();
|
|
453
505
|
} if (rf & 2) {
|
|
454
|
-
const
|
|
506
|
+
const snapshot_r14 = i0.ɵɵnextContext().$implicit;
|
|
455
507
|
i0.ɵɵadvance(3);
|
|
456
|
-
i0.ɵɵtextInterpolate1(" Tasks (",
|
|
508
|
+
i0.ɵɵtextInterpolate1(" Tasks (", snapshot_r14.tasks.length, ")");
|
|
457
509
|
i0.ɵɵadvance(2);
|
|
458
|
-
i0.ɵɵrepeater(
|
|
510
|
+
i0.ɵɵrepeater(snapshot_r14.tasks);
|
|
459
511
|
} }
|
|
460
512
|
function AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
461
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
513
|
+
i0.ɵɵelement(0, "mj-empty-state", 67);
|
|
462
514
|
} }
|
|
463
515
|
function AIAgentRunStepDetailComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
464
|
-
i0.ɵɵelementStart(0, "div",
|
|
465
|
-
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template, 6, 1, "div",
|
|
466
|
-
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template, 7, 1, "div",
|
|
467
|
-
i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template, 1, 0, "mj-empty-state",
|
|
516
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
517
|
+
i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template, 6, 1, "div", 65);
|
|
518
|
+
i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template, 7, 1, "div", 66);
|
|
519
|
+
i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template, 1, 0, "mj-empty-state", 67);
|
|
468
520
|
i0.ɵɵelementEnd();
|
|
469
521
|
} if (rf & 2) {
|
|
470
|
-
const
|
|
522
|
+
const snapshot_r14 = ctx.$implicit;
|
|
471
523
|
i0.ɵɵadvance();
|
|
472
|
-
i0.ɵɵconditional(
|
|
524
|
+
i0.ɵɵconditional(snapshot_r14.notes ? 1 : -1);
|
|
473
525
|
i0.ɵɵadvance();
|
|
474
|
-
i0.ɵɵconditional((
|
|
526
|
+
i0.ɵɵconditional((snapshot_r14.tasks == null ? null : snapshot_r14.tasks.length) > 0 ? 2 : -1);
|
|
475
527
|
i0.ɵɵadvance();
|
|
476
|
-
i0.ɵɵconditional(!
|
|
528
|
+
i0.ɵɵconditional(!snapshot_r14.notes && (!snapshot_r14.tasks || snapshot_r14.tasks.length === 0) ? 3 : -1);
|
|
477
529
|
} }
|
|
478
530
|
export class AIAgentRunStepDetailComponent {
|
|
479
531
|
constructor(cdr) {
|
|
@@ -482,6 +534,14 @@ export class AIAgentRunStepDetailComponent {
|
|
|
482
534
|
this.closePanel = new EventEmitter();
|
|
483
535
|
this.navigateToActionLog = new EventEmitter();
|
|
484
536
|
this.copyToClipboard = new EventEmitter();
|
|
537
|
+
/**
|
|
538
|
+
* The user asked to promote this run's graph into a reusable workflow (D17).
|
|
539
|
+
*
|
|
540
|
+
* Intent only — this component renders a run, it does not persist agents. The host performs the
|
|
541
|
+
* conversion and the `AgentSpecSync` write, which keeps the one place that writes an agent the
|
|
542
|
+
* one place that writes an agent.
|
|
543
|
+
*/
|
|
544
|
+
this.saveAsWorkflowRequested = new EventEmitter();
|
|
485
545
|
this.selectedItemJsonString = '{}';
|
|
486
546
|
this.detailPaneTab = 'diff';
|
|
487
547
|
this.scratchpadSubTab = 'diff';
|
|
@@ -494,6 +554,11 @@ export class AIAgentRunStepDetailComponent {
|
|
|
494
554
|
if (this.showStepPayloadDiff) {
|
|
495
555
|
this.detailPaneTab = 'diff';
|
|
496
556
|
}
|
|
557
|
+
else if (this.showGraphTab) {
|
|
558
|
+
// A TaskGraph step's whole content IS the graph; opening on the JSON would bury the one
|
|
559
|
+
// thing the step exists to show.
|
|
560
|
+
this.detailPaneTab = 'graph';
|
|
561
|
+
}
|
|
497
562
|
else if (this.showSkillsTab && this.selectedTimelineItem.data?.StepType === 'Skill') {
|
|
498
563
|
this.detailPaneTab = 'skills';
|
|
499
564
|
}
|
|
@@ -510,6 +575,50 @@ export class AIAgentRunStepDetailComponent {
|
|
|
510
575
|
this.cdr.detectChanges();
|
|
511
576
|
}
|
|
512
577
|
}
|
|
578
|
+
/**
|
|
579
|
+
* What to say about a step that never executed, or null when it ran.
|
|
580
|
+
*
|
|
581
|
+
* **Why this needs saying at all.** A workflow persists every step at submission, before anything
|
|
582
|
+
* runs — the rows are the dispatcher's work queue, and the skip cascade is computed from the graph
|
|
583
|
+
* they form. So a branch the workflow did not take still has a row, and opening it shows a
|
|
584
|
+
* perfectly normal record with empty payloads. Without a word of explanation the reader is left to
|
|
585
|
+
* work out whether that emptiness is a branch that was not chosen, work still queued, or a step
|
|
586
|
+
* that broke silently — three very different situations that look identical in JSON.
|
|
587
|
+
*
|
|
588
|
+
* The distinction between Skipped and Blocked is load-bearing and deliberately preserved here:
|
|
589
|
+
* `Skipped` means the workflow chose another route, `Blocked` means something upstream failed. The
|
|
590
|
+
* dispatcher separated them precisely because conflating them made every conditional workflow look
|
|
591
|
+
* half-broken.
|
|
592
|
+
*/
|
|
593
|
+
get StepNotice() {
|
|
594
|
+
const item = this.selectedTimelineItem;
|
|
595
|
+
if (!item?.data?.IsWorkflowStep)
|
|
596
|
+
return null;
|
|
597
|
+
switch (item.status) {
|
|
598
|
+
case 'Skipped':
|
|
599
|
+
return {
|
|
600
|
+
Variant: 'info',
|
|
601
|
+
Message: 'This step never ran — the workflow took another route. Its row exists because ' +
|
|
602
|
+
'every step is created when the workflow is submitted, so the record of the branch ' +
|
|
603
|
+
'that was not taken survives. Nothing went wrong here.',
|
|
604
|
+
};
|
|
605
|
+
case 'Blocked':
|
|
606
|
+
return {
|
|
607
|
+
Variant: 'error',
|
|
608
|
+
Message: 'This step could not run: something it depended on failed, so no path to it was ' +
|
|
609
|
+
'left. It is not a branch that lost — it is work that became unreachable.',
|
|
610
|
+
};
|
|
611
|
+
case 'Pending':
|
|
612
|
+
return {
|
|
613
|
+
Variant: 'warning',
|
|
614
|
+
Message: 'This step has not started yet. A workflow runs on the dispatcher and outlives the ' +
|
|
615
|
+
'agent run that submitted it, so a finished run can still contain steps that are ' +
|
|
616
|
+
'queued or in flight.',
|
|
617
|
+
};
|
|
618
|
+
default:
|
|
619
|
+
return null;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
513
622
|
getSelectedItemJson() {
|
|
514
623
|
if (!this.selectedTimelineItem)
|
|
515
624
|
return '{}';
|
|
@@ -651,6 +760,79 @@ export class AIAgentRunStepDetailComponent {
|
|
|
651
760
|
GetActivationTypeLabel(inv) {
|
|
652
761
|
return inv.ActivationType === 'requested' ? 'User Requested' : 'Agent Self-Activated';
|
|
653
762
|
}
|
|
763
|
+
/**
|
|
764
|
+
* Whether the Workflow tab should be shown — true for a `TaskGraph` step that carries a spec.
|
|
765
|
+
*
|
|
766
|
+
* Phase 3 writes this step for EVERY emitted graph, dispatched or constant-folded, so a folded
|
|
767
|
+
* single-node graph is just as promotable as a dispatched one. That was the point of recording
|
|
768
|
+
* the fold rather than letting it vanish.
|
|
769
|
+
*/
|
|
770
|
+
get showGraphTab() {
|
|
771
|
+
return this.stepTaskGraph !== null;
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* The `TaskGraphSpec` recorded on a `TaskGraph` step, or null.
|
|
775
|
+
*
|
|
776
|
+
* Read from InputData, falling back to OutputData: the step records the spec on the way in, and
|
|
777
|
+
* a malformed or absent payload simply means no tab rather than a broken panel.
|
|
778
|
+
*/
|
|
779
|
+
get stepTaskGraph() {
|
|
780
|
+
if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step')
|
|
781
|
+
return null;
|
|
782
|
+
if (this.selectedTimelineItem.data?.StepType !== 'TaskGraph')
|
|
783
|
+
return null;
|
|
784
|
+
for (const raw of [this.selectedTimelineItem.data?.InputData, this.selectedTimelineItem.data?.OutputData]) {
|
|
785
|
+
if (!raw)
|
|
786
|
+
continue;
|
|
787
|
+
try {
|
|
788
|
+
const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
|
|
789
|
+
const spec = parsed?.spec;
|
|
790
|
+
if (spec?.tasks?.length)
|
|
791
|
+
return spec;
|
|
792
|
+
}
|
|
793
|
+
catch {
|
|
794
|
+
// A step whose payload cannot be parsed shows no tab, which is honest — better than a
|
|
795
|
+
// canvas rendering half a graph.
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
return null;
|
|
799
|
+
}
|
|
800
|
+
/**
|
|
801
|
+
* Where the recorded graph's nodes go on the canvas.
|
|
802
|
+
*
|
|
803
|
+
* Without this the editor receives a spec and no geometry, so every node projects to the origin —
|
|
804
|
+
* all of them, in one place. The canvas then rescues it with a deferred layout pass whose
|
|
805
|
+
* zoom-to-fit measures a bounding box one node wide, and a four-step workflow renders as a single
|
|
806
|
+
* enormous box at 265%. The positions exist the whole time: a workflow compiled from a Flow agent
|
|
807
|
+
* carries the arrangement its author dragged into place, on every node.
|
|
808
|
+
*/
|
|
809
|
+
get stepTaskGraphPositions() {
|
|
810
|
+
const spec = this.stepTaskGraph;
|
|
811
|
+
if (!spec)
|
|
812
|
+
return null;
|
|
813
|
+
return ResolveTaskGraphPositions(spec);
|
|
814
|
+
}
|
|
815
|
+
/** True when the recorded graph was constant-folded rather than dispatched (D9). */
|
|
816
|
+
get stepTaskGraphWasFolded() {
|
|
817
|
+
if (!this.selectedTimelineItem)
|
|
818
|
+
return false;
|
|
819
|
+
const raw = this.selectedTimelineItem.data?.InputData;
|
|
820
|
+
if (!raw)
|
|
821
|
+
return false;
|
|
822
|
+
try {
|
|
823
|
+
const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
|
|
824
|
+
return parsed?.folded === true;
|
|
825
|
+
}
|
|
826
|
+
catch {
|
|
827
|
+
return false;
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
/** Asks the host to save this run's graph as a reusable workflow. */
|
|
831
|
+
RequestSaveAsWorkflow() {
|
|
832
|
+
const spec = this.stepTaskGraph;
|
|
833
|
+
if (spec)
|
|
834
|
+
this.saveAsWorkflowRequested.emit(spec);
|
|
835
|
+
}
|
|
654
836
|
/**
|
|
655
837
|
* Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)
|
|
656
838
|
*/
|
|
@@ -725,16 +907,16 @@ export class AIAgentRunStepDetailComponent {
|
|
|
725
907
|
}
|
|
726
908
|
}
|
|
727
909
|
static { this.ɵfac = function AIAgentRunStepDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AIAgentRunStepDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
728
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "skills-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "tab-badge"], [1, "fa-solid", "fa-clipboard-list"], [1, "skill-invocation-card"], [1, "skill-invocation-header"], [1, "skill-invocation-name"], [1, "skill-invocation-type"], [1, "skill-invocation-reason"], [1, "skill-invocation-provenance"], [1, "provenance-title"], [1, "provenance-row"], [1, "provenance-label"], [1, "provenance-value"], [1, "provenance-value", "provenance-id"], [1, "fa-solid", "fa-quote-left"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad changes in this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-plus", "Title", "Scratchpad created in this step (no prior state)"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad input for this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad output for this step"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "Empty scratchpad"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
729
|
-
i0.ɵɵconditionalCreate(0, AIAgentRunStepDetailComponent_Conditional_0_Template,
|
|
910
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard", saveAsWorkflowRequested: "saveAsWorkflowRequested" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "step-notice"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "detail-graph"], [1, "skills-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], ["Size", "sm", 3, "Variant", "Message"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-diagram-project"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "tab-badge"], [1, "fa-solid", "fa-clipboard-list"], [1, "detail-graph__actions"], ["Variant", "info", "Size", "sm", "Message", "This ran inline as a single step \u2014 a workflow of one needs no scheduling. You can still save it."], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-floppy-disk"], [1, "detail-graph__canvas", 3, "Spec", "NodePositions", "ReadOnly", "ShowPalette"], [1, "skill-invocation-card"], [1, "skill-invocation-header"], [1, "skill-invocation-name"], [1, "skill-invocation-type"], [1, "skill-invocation-reason"], [1, "skill-invocation-provenance"], [1, "provenance-title"], [1, "provenance-row"], [1, "provenance-label"], [1, "provenance-value"], [1, "provenance-value", "provenance-id"], [1, "fa-solid", "fa-quote-left"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad changes in this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-plus", "Title", "Scratchpad created in this step (no prior state)"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad input for this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad output for this step"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "Empty scratchpad"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
911
|
+
i0.ɵɵconditionalCreate(0, AIAgentRunStepDetailComponent_Conditional_0_Template, 33, 16, "div", 1);
|
|
730
912
|
i0.ɵɵtemplate(1, AIAgentRunStepDetailComponent_ng_template_1_Template, 4, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
731
913
|
} if (rf & 2) {
|
|
732
914
|
i0.ɵɵconditional(ctx.selectedTimelineItem ? 0 : -1);
|
|
733
|
-
} }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i4.CodeEditorComponent, i5.DeepDiffComponent], styles: [".json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\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.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; \n\n}\n\n\n\n\n\n\n\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; \n\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; \n\n}\n\n\n\n.json-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.tab-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n\n\n.scratchpad-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.scratchpad-sub-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.scratchpad-diff-view[_ngcontent-%COMP%], \n.scratchpad-snapshot-view[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n\n\n.scratchpad-snapshot[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.scratchpad-tasks-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.scratchpad-task-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.task-status-indicator[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"][_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.task-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n\n\n.task-status-badge[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-status-badge[data-status=\"completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.task-status-badge[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n\n\n\n\n.skills-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"][_ngcontent-%COMP%] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}"] }); }
|
|
915
|
+
} }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i3.MJAlertComponent, i3.MJButtonDirective, i4.CodeEditorComponent, i5.DeepDiffComponent, i6.TaskGraphEditorComponent], styles: [".json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\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.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; \n\n}\n\n\n\n\n\n\n\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; \n\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; \n\n}\n\n\n\n.json-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.tab-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n\n\n.scratchpad-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.scratchpad-sub-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.scratchpad-diff-view[_ngcontent-%COMP%], \n.scratchpad-snapshot-view[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n\n\n.scratchpad-snapshot[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.scratchpad-tasks-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.scratchpad-task-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.task-status-indicator[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"][_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.task-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n\n\n.task-status-badge[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-status-badge[data-status=\"completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.task-status-badge[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n\n\n\n\n.skills-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"][_ngcontent-%COMP%] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.detail-graph[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.detail-graph__actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-sm, 0.5rem);\n padding: var(--mj-space-sm, 0.5rem);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n\n\n.detail-graph__canvas[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n\n\n\n.step-notice[_ngcontent-%COMP%] {\n padding: 0 var(--mj-space-3, 12px) var(--mj-space-2, 8px);\n}"] }); }
|
|
734
916
|
}
|
|
735
917
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunStepDetailComponent, [{
|
|
736
918
|
type: Component,
|
|
737
|
-
args: [{ standalone: false, selector: 'mj-ai-agent-run-step-detail', template: "@if (selectedTimelineItem) {\n <div class=\"json-detail-pane\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n <!-- Action-specific link -->\n @if (selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID) {\n <div class=\"action-link\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n }\n <!-- Tab Navigation - Show when we have payload diff or scratchpad data -->\n @if (showStepPayloadDiff || showScratchpadTab || showSkillsTab) {\n <div class=\"detail-pane-tabs\">\n @if (showStepPayloadDiff) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n }\n @if (showSkillsTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'skills'\"\n (click)=\"detailPaneTab = 'skills'\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n Skills\n <span class=\"tab-badge\">{{ stepSkillInvocations.length }}</span>\n </button>\n }\n @if (showScratchpadTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'scratchpad'\"\n (click)=\"detailPaneTab = 'scratchpad'\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n Scratchpad\n @if (scratchpadTaskChangeCount > 0) {\n <span class=\"tab-badge\">{{ scratchpadTaskChangeCount }}</span>\n }\n </button>\n }\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff || showScratchpadTab || showSkillsTab\">\n <!-- Skills Tab \u2014 skill-invocation observability (activation type, provenance of authority, reason) -->\n @if (detailPaneTab === 'skills' && showSkillsTab) {\n <div class=\"skills-content\">\n @for (inv of stepSkillInvocations; track inv.SkillID) {\n <div class=\"skill-invocation-card\" [attr.data-activation]=\"inv.ActivationType\">\n <div class=\"skill-invocation-header\">\n <span class=\"skill-invocation-name\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ inv.SkillName }}\n </span>\n <span class=\"skill-invocation-type\" [attr.data-activation]=\"inv.ActivationType\">\n {{ GetActivationTypeLabel(inv) }}\n </span>\n </div>\n @if (inv.Reason) {\n <div class=\"skill-invocation-reason\">\n <i class=\"fa-solid fa-quote-left\"></i>\n {{ inv.Reason }}\n </div>\n }\n <div class=\"skill-invocation-provenance\">\n <div class=\"provenance-title\">Provenance of Authority</div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Requested By</span>\n <span class=\"provenance-value\">{{ inv.Provenance.RequestedBy === 'user-request' ? 'User (/skill mention)' : 'Agent decision' }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent AcceptsSkills</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentAcceptsSkills }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.SkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent SkillActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentSkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ID</span>\n <span class=\"provenance-value provenance-id\">{{ inv.SkillID }}</span>\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Payload Diff Tab -->\n @if (detailPaneTab === 'diff' && showStepPayloadDiff) {\n <div class=\"step-payload-diff\">\n <mj-deep-diff\n [oldValue]=\"stepPayloadAtStartObject\"\n [newValue]=\"stepPayloadAtEndObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"8\"\n [maxStringLength]=\"150\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n </div>\n }\n <!-- Scratchpad Tab -->\n @if (detailPaneTab === 'scratchpad' && showScratchpadTab) {\n <div class=\"scratchpad-content\">\n <div class=\"scratchpad-sub-tabs\">\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'diff'\"\n (click)=\"scratchpadSubTab = 'diff'\">\n <i class=\"fa-solid fa-code-compare\"></i> Diff\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'input'\"\n (click)=\"scratchpadSubTab = 'input'\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i> Input\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'output'\"\n (click)=\"scratchpadSubTab = 'output'\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i> Output\n </button>\n </div>\n <!-- Scratchpad Diff Sub-Tab -->\n @if (scratchpadSubTab === 'diff') {\n <div class=\"scratchpad-diff-view\">\n @if (stepScratchpadInput && stepScratchpadOutput) {\n <mj-deep-diff\n [oldValue]=\"stepScratchpadInput\"\n [newValue]=\"stepScratchpadOutput\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"true\"\n [maxDepth]=\"6\"\n [maxStringLength]=\"300\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else if (stepScratchpadOutput) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-plus\"\n Title=\"Scratchpad created in this step (no prior state)\" />\n <div class=\"scratchpad-snapshot\">\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n </div>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad changes in this step\" />\n }\n </div>\n }\n <!-- Scratchpad Input Sub-Tab -->\n @if (scratchpadSubTab === 'input') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadInput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadInput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad input for this step\" />\n }\n </div>\n }\n <!-- Scratchpad Output Sub-Tab -->\n @if (scratchpadSubTab === 'output') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadOutput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad output for this step\" />\n }\n </div>\n }\n </div>\n }\n <!-- Full JSON Tab -->\n @if (detailPaneTab === 'json' || (!showStepPayloadDiff && !showScratchpadTab)) {\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"selectedItemJsonString\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n}\n\n<!-- Reusable scratchpad snapshot template -->\n<ng-template #scratchpadSnapshotTpl let-snapshot>\n <div class=\"scratchpad-snapshot\">\n @if (snapshot.notes) {\n <div class=\"scratchpad-notes-section\">\n <h4><i class=\"fa-solid fa-note-sticky\"></i> Notes</h4>\n <div class=\"scratchpad-notes-content\">{{ snapshot.notes }}</div>\n </div>\n }\n @if (snapshot.tasks?.length > 0) {\n <div class=\"scratchpad-tasks-section\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Tasks ({{ snapshot.tasks.length }})</h4>\n <div class=\"scratchpad-task-list\">\n @for (task of snapshot.tasks; track task.id) {\n <div class=\"scratchpad-task-item\" [attr.data-status]=\"task.status\">\n <span class=\"task-status-indicator\" [attr.data-status]=\"task.status\">\n @switch (task.status) {\n @case ('completed') { <i class=\"fa-solid fa-circle-check\"></i> }\n @case ('in_progress') { <i class=\"fa-solid fa-spinner\"></i> }\n @case ('blocked') { <i class=\"fa-solid fa-circle-xmark\"></i> }\n @default { <i class=\"fa-regular fa-circle\"></i> }\n }\n </span>\n <div class=\"task-content\">\n <span class=\"task-id\">{{ task.id }}</span>\n <span class=\"task-title\">{{ task.title }}</span>\n @if (task.notes) {\n <span class=\"task-notes\">{{ task.notes }}</span>\n }\n </div>\n <span class=\"task-status-badge\" [attr.data-status]=\"task.status\">{{ task.status }}</span>\n </div>\n }\n </div>\n </div>\n }\n @if (!snapshot.notes && (!snapshot.tasks || snapshot.tasks.length === 0)) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"Empty scratchpad\" />\n }\n </div>\n</ng-template>", styles: [".json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\n}\n\n.json-pane-header h3 {\n margin: 0;\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.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; /* Allow flexbox to properly size */\n}\n\n/* \n.detail-pane-content.with-tabs {\n // No explicit height needed with flexbox \n} \n*/\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important for flexbox children to respect overflow */\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; /* Allow proper scrolling */\n}\n\n/* Specific styling for mj-code-editor container */\n.json-viewer mj-code-editor {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n/* Tab badge for change count */\n.tab-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n/* Scratchpad content area */\n.scratchpad-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Scratchpad sub-tabs */\n.scratchpad-sub-tabs {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Scratchpad diff and snapshot views */\n.scratchpad-diff-view,\n.scratchpad-snapshot-view {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n/* Scratchpad snapshot rendering */\n.scratchpad-snapshot {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section h4,\n.scratchpad-tasks-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Task list */\n.scratchpad-task-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Task status indicator icon */\n.task-status-indicator {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"] {\n color: var(--mj-text-muted);\n}\n\n/* Task content */\n.task-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n/* Task status badge */\n.task-status-badge {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-status-badge[data-status=\"completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.task-status-badge[data-status=\"in_progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n/* ============================================================\n Skills tab \u2014 skill-invocation observability cards\n ============================================================ */\n.skills-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name i {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason i {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n"] }]
|
|
919
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-run-step-detail', template: "@if (selectedTimelineItem) {\n <div class=\"json-detail-pane\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n <!-- Why a workflow step has nothing to show: it never ran. Above the tabs, because it explains\n the emptiness the reader is about to look at. -->\n @if (StepNotice) {\n <div class=\"step-notice\">\n <mj-alert [Variant]=\"StepNotice.Variant\" Size=\"sm\" [Message]=\"StepNotice.Message\"></mj-alert>\n </div>\n }\n <!-- Action-specific link -->\n @if (selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID) {\n <div class=\"action-link\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n }\n <!-- Tab Navigation - Show when we have payload diff or scratchpad data -->\n @if (showStepPayloadDiff || showScratchpadTab || showSkillsTab || showGraphTab) {\n <div class=\"detail-pane-tabs\">\n @if (showGraphTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'graph'\"\n (click)=\"detailPaneTab = 'graph'\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Workflow\n </button>\n }\n @if (showStepPayloadDiff) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n }\n @if (showSkillsTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'skills'\"\n (click)=\"detailPaneTab = 'skills'\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n Skills\n <span class=\"tab-badge\">{{ stepSkillInvocations.length }}</span>\n </button>\n }\n @if (showScratchpadTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'scratchpad'\"\n (click)=\"detailPaneTab = 'scratchpad'\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n Scratchpad\n @if (scratchpadTaskChangeCount > 0) {\n <span class=\"tab-badge\">{{ scratchpadTaskChangeCount }}</span>\n }\n </button>\n }\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff || showScratchpadTab || showSkillsTab || showGraphTab\">\n <!-- Skills Tab \u2014 skill-invocation observability (activation type, provenance of authority, reason) -->\n @if (detailPaneTab === 'graph' && showGraphTab) {\n <div class=\"detail-graph\">\n <div class=\"detail-graph__actions\">\n @if (stepTaskGraphWasFolded) {\n <!-- The fold is recorded rather than silent (D9), so the reader can see WHY this\n graph never reached the dispatcher instead of inferring it. -->\n <mj-alert Variant=\"info\" Size=\"sm\"\n Message=\"This ran inline as a single step \u2014 a workflow of one needs no scheduling. You can still save it.\">\n </mj-alert>\n }\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"RequestSaveAsWorkflow()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save as Workflow\n </button>\n </div>\n <mj-task-graph-editor\n class=\"detail-graph__canvas\"\n [Spec]=\"stepTaskGraph\"\n [NodePositions]=\"stepTaskGraphPositions\"\n [ReadOnly]=\"true\"\n [ShowPalette]=\"false\">\n </mj-task-graph-editor>\n </div>\n }\n @if (detailPaneTab === 'skills' && showSkillsTab) {\n <div class=\"skills-content\">\n @for (inv of stepSkillInvocations; track inv.SkillID) {\n <div class=\"skill-invocation-card\" [attr.data-activation]=\"inv.ActivationType\">\n <div class=\"skill-invocation-header\">\n <span class=\"skill-invocation-name\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ inv.SkillName }}\n </span>\n <span class=\"skill-invocation-type\" [attr.data-activation]=\"inv.ActivationType\">\n {{ GetActivationTypeLabel(inv) }}\n </span>\n </div>\n @if (inv.Reason) {\n <div class=\"skill-invocation-reason\">\n <i class=\"fa-solid fa-quote-left\"></i>\n {{ inv.Reason }}\n </div>\n }\n <div class=\"skill-invocation-provenance\">\n <div class=\"provenance-title\">Provenance of Authority</div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Requested By</span>\n <span class=\"provenance-value\">{{ inv.Provenance.RequestedBy === 'user-request' ? 'User (/skill mention)' : 'Agent decision' }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent AcceptsSkills</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentAcceptsSkills }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.SkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent SkillActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentSkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ID</span>\n <span class=\"provenance-value provenance-id\">{{ inv.SkillID }}</span>\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Payload Diff Tab -->\n @if (detailPaneTab === 'diff' && showStepPayloadDiff) {\n <div class=\"step-payload-diff\">\n <mj-deep-diff\n [oldValue]=\"stepPayloadAtStartObject\"\n [newValue]=\"stepPayloadAtEndObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"8\"\n [maxStringLength]=\"150\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n </div>\n }\n <!-- Scratchpad Tab -->\n @if (detailPaneTab === 'scratchpad' && showScratchpadTab) {\n <div class=\"scratchpad-content\">\n <div class=\"scratchpad-sub-tabs\">\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'diff'\"\n (click)=\"scratchpadSubTab = 'diff'\">\n <i class=\"fa-solid fa-code-compare\"></i> Diff\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'input'\"\n (click)=\"scratchpadSubTab = 'input'\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i> Input\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'output'\"\n (click)=\"scratchpadSubTab = 'output'\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i> Output\n </button>\n </div>\n <!-- Scratchpad Diff Sub-Tab -->\n @if (scratchpadSubTab === 'diff') {\n <div class=\"scratchpad-diff-view\">\n @if (stepScratchpadInput && stepScratchpadOutput) {\n <mj-deep-diff\n [oldValue]=\"stepScratchpadInput\"\n [newValue]=\"stepScratchpadOutput\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"true\"\n [maxDepth]=\"6\"\n [maxStringLength]=\"300\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else if (stepScratchpadOutput) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-plus\"\n Title=\"Scratchpad created in this step (no prior state)\" />\n <div class=\"scratchpad-snapshot\">\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n </div>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad changes in this step\" />\n }\n </div>\n }\n <!-- Scratchpad Input Sub-Tab -->\n @if (scratchpadSubTab === 'input') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadInput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadInput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad input for this step\" />\n }\n </div>\n }\n <!-- Scratchpad Output Sub-Tab -->\n @if (scratchpadSubTab === 'output') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadOutput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad output for this step\" />\n }\n </div>\n }\n </div>\n }\n <!-- Full JSON Tab -->\n @if (detailPaneTab === 'json' || (!showStepPayloadDiff && !showScratchpadTab)) {\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"selectedItemJsonString\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n}\n\n<!-- Reusable scratchpad snapshot template -->\n<ng-template #scratchpadSnapshotTpl let-snapshot>\n <div class=\"scratchpad-snapshot\">\n @if (snapshot.notes) {\n <div class=\"scratchpad-notes-section\">\n <h4><i class=\"fa-solid fa-note-sticky\"></i> Notes</h4>\n <div class=\"scratchpad-notes-content\">{{ snapshot.notes }}</div>\n </div>\n }\n @if (snapshot.tasks?.length > 0) {\n <div class=\"scratchpad-tasks-section\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Tasks ({{ snapshot.tasks.length }})</h4>\n <div class=\"scratchpad-task-list\">\n @for (task of snapshot.tasks; track task.id) {\n <div class=\"scratchpad-task-item\" [attr.data-status]=\"task.status\">\n <span class=\"task-status-indicator\" [attr.data-status]=\"task.status\">\n @switch (task.status) {\n @case ('completed') { <i class=\"fa-solid fa-circle-check\"></i> }\n @case ('in_progress') { <i class=\"fa-solid fa-spinner\"></i> }\n @case ('blocked') { <i class=\"fa-solid fa-circle-xmark\"></i> }\n @default { <i class=\"fa-regular fa-circle\"></i> }\n }\n </span>\n <div class=\"task-content\">\n <span class=\"task-id\">{{ task.id }}</span>\n <span class=\"task-title\">{{ task.title }}</span>\n @if (task.notes) {\n <span class=\"task-notes\">{{ task.notes }}</span>\n }\n </div>\n <span class=\"task-status-badge\" [attr.data-status]=\"task.status\">{{ task.status }}</span>\n </div>\n }\n </div>\n </div>\n }\n @if (!snapshot.notes && (!snapshot.tasks || snapshot.tasks.length === 0)) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"Empty scratchpad\" />\n }\n </div>\n</ng-template>", styles: [".json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\n}\n\n.json-pane-header h3 {\n margin: 0;\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.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; /* Allow flexbox to properly size */\n}\n\n/* \n.detail-pane-content.with-tabs {\n // No explicit height needed with flexbox \n} \n*/\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important for flexbox children to respect overflow */\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; /* Allow proper scrolling */\n}\n\n/* Specific styling for mj-code-editor container */\n.json-viewer mj-code-editor {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n/* Tab badge for change count */\n.tab-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n/* Scratchpad content area */\n.scratchpad-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Scratchpad sub-tabs */\n.scratchpad-sub-tabs {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Scratchpad diff and snapshot views */\n.scratchpad-diff-view,\n.scratchpad-snapshot-view {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n/* Scratchpad snapshot rendering */\n.scratchpad-snapshot {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section h4,\n.scratchpad-tasks-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Task list */\n.scratchpad-task-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Task status indicator icon */\n.task-status-indicator {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"] {\n color: var(--mj-text-muted);\n}\n\n/* Task content */\n.task-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n/* Task status badge */\n.task-status-badge {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-status-badge[data-status=\"completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.task-status-badge[data-status=\"in_progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n/* ============================================================\n Skills tab \u2014 skill-invocation observability cards\n ============================================================ */\n.skills-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name i {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason i {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* Workflow tab \u2014 the recorded task graph, read-only, with the Save as Workflow action. */\n.detail-graph {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.detail-graph__actions {\n display: flex;\n align-items: center;\n gap: var(--mj-space-sm, 0.5rem);\n padding: var(--mj-space-sm, 0.5rem);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n/* min-height:0 is what lets the canvas actually shrink inside the flex column. */\n.detail-graph__canvas {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n/* Explanation for a step that never executed \u2014 see StepNotice. Sits above the tabs because it\n accounts for the emptiness the reader is about to look at. */\n.step-notice {\n padding: 0 var(--mj-space-3, 12px) var(--mj-space-2, 8px);\n}\n"] }]
|
|
738
920
|
}], () => [{ type: i0.ChangeDetectorRef }], { selectedTimelineItem: [{
|
|
739
921
|
type: Input
|
|
740
922
|
}], closePanel: [{
|
|
@@ -743,6 +925,8 @@ export class AIAgentRunStepDetailComponent {
|
|
|
743
925
|
type: Output
|
|
744
926
|
}], copyToClipboard: [{
|
|
745
927
|
type: Output
|
|
928
|
+
}], saveAsWorkflowRequested: [{
|
|
929
|
+
type: Output
|
|
746
930
|
}] }); })();
|
|
747
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentRunStepDetailComponent, { className: "AIAgentRunStepDetailComponent", filePath: "src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts", lineNumber:
|
|
931
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentRunStepDetailComponent, { className: "AIAgentRunStepDetailComponent", filePath: "src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts", lineNumber: 24 }); })();
|
|
748
932
|
//# sourceMappingURL=ai-agent-run-step-detail.component.js.map
|