@memberjunction/ng-core-entity-forms 6.1.0-edge.1 → 6.1.0-edge.3
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/LICENSE +180 -4
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts +12 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +138 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +20 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +173 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -0
- 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/Actions/action-execution-log-form.component.js +193 -182
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts +12 -0
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -0
- package/dist/lib/custom/Companies/company-header.panel.js +190 -0
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -0
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +21 -0
- package/dist/lib/custom/Companies/company-overview.panel.d.ts.map +1 -0
- package/dist/lib/custom/Companies/company-overview.panel.js +180 -0
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -0
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts +12 -0
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -0
- package/dist/lib/custom/Conversations/conversation-header.panel.js +150 -0
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -0
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +23 -0
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -0
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +199 -0
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -0
- package/dist/lib/custom/Employees/employee-header.panel.d.ts +12 -0
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -0
- package/dist/lib/custom/Employees/employee-header.panel.js +180 -0
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -0
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +21 -0
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts.map +1 -0
- package/dist/lib/custom/Employees/employee-overview.panel.js +180 -0
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +4 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +216 -173
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +40 -0
- package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Files/file-form.component.js +654 -0
- package/dist/lib/custom/Files/file-form.component.js.map +1 -0
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts +101 -0
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts.map +1 -0
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js +1202 -0
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js.map +1 -0
- package/dist/lib/custom/Users/user-header.panel.d.ts +12 -0
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -0
- package/dist/lib/custom/Users/user-header.panel.js +164 -0
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -0
- package/dist/lib/custom/Users/user-overview.panel.d.ts +19 -0
- package/dist/lib/custom/Users/user-overview.panel.d.ts.map +1 -0
- package/dist/lib/custom/Users/user-overview.panel.js +172 -0
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -0
- 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 +49 -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 +272 -157
- 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 +118 -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 +263 -14
- 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 +384 -265
- 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 +98 -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 +403 -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 +33 -29
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +27 -9
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +300 -294
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js +31 -23
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +14 -16
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
- 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/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +123 -117
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +35 -27
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +47 -49
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js +30 -22
- package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js +72 -64
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js +8 -8
- package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +198 -196
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +16 -14
- 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 +162 -146
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +85 -79
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +11 -11
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js +36 -28
- package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +121 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js +36 -28
- package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +13 -13
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +11 -11
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +48 -40
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js +29 -21
- package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.js +108 -0
- package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js +50 -42
- package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +44 -36
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +44 -26
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js +60 -52
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js +28 -20
- package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentProcessRun/mjcontentprocessrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJContentProcessRun/mjcontentprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +77 -79
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +76 -68
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCountry/mjcountry.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJCountry/mjcountry.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 +42 -24
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js +47 -33
- package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +604 -530
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js +42 -40
- package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.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/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +28 -18
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js +10 -8
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +8 -8
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationSourceType/mjintegrationsourcetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJIntegrationSourceType/mjintegrationsourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.js +117 -0
- package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.js +58 -0
- package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +38 -30
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +85 -65
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +21 -23
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +17 -17
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js +29 -21
- package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJStateProvince/mjstateprovince.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJStateProvince/mjstateprovince.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +104 -92
- package/dist/lib/generated/Entities/MJTag/mjtag.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 +69 -29
- 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 +16 -4
- package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +39 -31
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +105 -105
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js +33 -19
- package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js +44 -36
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +290 -285
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +126 -111
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.d.ts +37 -0
- package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.d.ts.map +1 -0
- package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.js +185 -0
- package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.js.map +1 -0
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.d.ts +20 -0
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.d.ts.map +1 -0
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js +87 -0
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js.map +1 -0
- package/dist/public-api.d.ts +12 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +14 -2
- package/dist/public-api.js.map +1 -1
- package/package.json +44 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-run-step-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { TimelineItem } from './ai-agent-run-timeline.component';\nimport { MJAIAgentRunStepEntity, MJAIAgentRunStepEntity_AgentSkillInvocation } from '@memberjunction/core-entities';\nimport type { TaskGraphSpec } from '@memberjunction/ai-core-plus';\nimport { ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\n\ninterface ScratchpadSnapshotView {\n notes: string;\n tasks: Array<{\n id: string;\n title: string;\n status: string;\n notes?: string;\n }>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-step-detail',\n templateUrl: './ai-agent-run-step-detail.component.html',\n styleUrls: ['./ai-agent-run-step-detail.component.css']\n})\nexport class AIAgentRunStepDetailComponent {\n @Input() selectedTimelineItem: TimelineItem | null = null;\n @Output() closePanel = new EventEmitter<void>();\n @Output() navigateToActionLog = new EventEmitter<string>();\n @Output() copyToClipboard = new EventEmitter<string>();\n /**\n * The user asked to promote this run's graph into a reusable workflow (D17).\n *\n * Intent only — this component renders a run, it does not persist agents. The host performs the\n * conversion and the `AgentSpecSync` write, which keeps the one place that writes an agent the\n * one place that writes an agent.\n */\n @Output() saveAsWorkflowRequested = new EventEmitter<TaskGraphSpec>();\n\n selectedItemJsonString = '{}';\n detailPaneTab: 'json' | 'diff' | 'scratchpad' | 'skills' | 'graph' = 'diff';\n scratchpadSubTab: 'input' | 'output' | 'diff' = 'diff';\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges() {\n if (this.selectedTimelineItem) {\n this.selectedItemJsonString = this.getSelectedItemJson();\n // Default to diff tab if step has payload diff, skills for Skill steps (the activation IS\n // the story there), scratchpad if available, otherwise json\n if (this.showStepPayloadDiff) {\n this.detailPaneTab = 'diff';\n } else if (this.showGraphTab) {\n // A TaskGraph step's whole content IS the graph; opening on the JSON would bury the one\n // thing the step exists to show.\n this.detailPaneTab = 'graph';\n } else if (this.showSkillsTab && this.selectedTimelineItem.data?.StepType === 'Skill') {\n this.detailPaneTab = 'skills';\n } else if (this.showScratchpadTab) {\n this.detailPaneTab = 'scratchpad';\n } else if (this.showSkillsTab) {\n this.detailPaneTab = 'skills';\n } else {\n this.detailPaneTab = 'json';\n }\n this.scratchpadSubTab = 'diff';\n this.cdr.detectChanges();\n }\n }\n\n getSelectedItemJson(): string {\n if (!this.selectedTimelineItem) return '{}';\n \n // Get all the data from the entity\n let data;\n if (this.selectedTimelineItem.data instanceof MJAIAgentRunStepEntity) {\n // If it's a step entity, we need to get the full run data\n data = this.selectedTimelineItem.data.GetAll();\n } else {\n data = this.selectedTimelineItem.data;\n }\n \n // Apply recursive JSON parsing to the entire data object\n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n const parsedData = ParseJSONRecursive(data, parseOptions);\n \n return JSON.stringify(parsedData, null, 2);\n }\n\n /**\n * Check if selected timeline item is a step with payload changes\n */\n get showStepPayloadDiff(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (stepData && (stepData.PayloadAtStart?.trim().length > 0 \n || stepData.PayloadAtEnd?.trim().length > 0)) {\n return stepData.PayloadAtStart !== stepData.PayloadAtEnd;\n } else {\n return false;\n }\n }\n\n /**\n * Get parsed PayloadAtStart for the selected step\n */\n get stepPayloadAtStartObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData?.PayloadAtStart) return null;\n \n try {\n // First, check if PayloadAtStart is a JSON string that needs to be parsed\n let payloadData = stepData.PayloadAtStart;\n try {\n // If PayloadAtStart is a JSON string, parse it first\n payloadData = JSON.parse(stepData.PayloadAtStart);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = stepData.PayloadAtStart;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed PayloadAtEnd for the selected step\n */\n get stepPayloadAtEndObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData?.PayloadAtEnd) return null;\n \n try {\n // First, check if PayloadAtEnd is a JSON string that needs to be parsed\n let payloadData = stepData.PayloadAtEnd;\n try {\n // If PayloadAtEnd is a JSON string, parse it first\n payloadData = JSON.parse(stepData.PayloadAtEnd);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = stepData.PayloadAtEnd;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n onClosePanel() {\n this.closePanel.emit();\n }\n\n onNavigateToActionLog(logId: string) {\n this.navigateToActionLog.emit(logId);\n }\n\n onCopyToClipboard() {\n this.copyToClipboard.emit(this.getSelectedItemJson());\n }\n\n /**\n * Whether the Skills tab should be shown — true when the step has skill-invocation records\n * on its `Skills` column (Skill steps, Prompt steps with skills in effect, and Actions/\n * Sub-Agent steps whose tool was granted through a skill).\n */\n get showSkillsTab(): boolean {\n return this.stepSkillInvocations.length > 0;\n }\n\n /**\n * Parsed {@link MJAIAgentRunStepEntity_AgentSkillInvocation} records from the step's `Skills`\n * JSON column. Empty array when the step has no skill linkage or the JSON is malformed.\n */\n get stepSkillInvocations(): MJAIAgentRunStepEntity_AgentSkillInvocation[] {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return [];\n }\n const raw = this.selectedTimelineItem.data?.Skills;\n if (!raw) return [];\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n\n /** Human-readable label for an invocation's activation type. */\n public GetActivationTypeLabel(inv: MJAIAgentRunStepEntity_AgentSkillInvocation): string {\n return inv.ActivationType === 'requested' ? 'User Requested' : 'Agent Self-Activated';\n }\n\n /**\n * Whether the Workflow tab should be shown — true for a `TaskGraph` step that carries a spec.\n *\n * Phase 3 writes this step for EVERY emitted graph, dispatched or constant-folded, so a folded\n * single-node graph is just as promotable as a dispatched one. That was the point of recording\n * the fold rather than letting it vanish.\n */\n get showGraphTab(): boolean {\n return this.stepTaskGraph !== null;\n }\n\n /**\n * The `TaskGraphSpec` recorded on a `TaskGraph` step, or null.\n *\n * Read from InputData, falling back to OutputData: the step records the spec on the way in, and\n * a malformed or absent payload simply means no tab rather than a broken panel.\n */\n get stepTaskGraph(): TaskGraphSpec | null {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') return null;\n if (this.selectedTimelineItem.data?.StepType !== 'TaskGraph') return null;\n\n for (const raw of [this.selectedTimelineItem.data?.InputData, this.selectedTimelineItem.data?.OutputData]) {\n if (!raw) continue;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n const spec = (parsed as { spec?: TaskGraphSpec })?.spec;\n if (spec?.tasks?.length) return spec;\n } catch {\n // A step whose payload cannot be parsed shows no tab, which is honest — better than a\n // canvas rendering half a graph.\n }\n }\n return null;\n }\n\n /** True when the recorded graph was constant-folded rather than dispatched (D9). */\n get stepTaskGraphWasFolded(): boolean {\n if (!this.selectedTimelineItem) return false;\n const raw = this.selectedTimelineItem.data?.InputData;\n if (!raw) return false;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n return (parsed as { folded?: boolean })?.folded === true;\n } catch {\n return false;\n }\n }\n\n /** Asks the host to save this run's graph as a reusable workflow. */\n public RequestSaveAsWorkflow(): void {\n const spec = this.stepTaskGraph;\n if (spec) this.saveAsWorkflowRequested.emit(spec);\n }\n\n /**\n * Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)\n */\n get showScratchpadTab(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n return this.stepScratchpadInput !== null || this.stepScratchpadOutput !== null;\n }\n\n /**\n * Parse scratchpad snapshot from InputData JSON\n */\n get stepScratchpadInput(): ScratchpadSnapshotView | null {\n return this.extractScratchpadFromField('InputData');\n }\n\n /**\n * Parse scratchpad snapshot from OutputData JSON\n */\n get stepScratchpadOutput(): ScratchpadSnapshotView | null {\n return this.extractScratchpadFromField('OutputData');\n }\n\n /**\n * Number of tasks that changed between input and output scratchpad snapshots\n */\n get scratchpadTaskChangeCount(): number {\n const input = this.stepScratchpadInput;\n const output = this.stepScratchpadOutput;\n if (!input && !output) return 0;\n if (!input || !output) return (output?.tasks?.length ?? 0) + (input?.tasks?.length ?? 0);\n\n let changes = 0;\n const inputMap = new Map(input.tasks.map(t => [t.id, t]));\n const outputMap = new Map(output.tasks.map(t => [t.id, t]));\n\n for (const [id, task] of outputMap) {\n const prev = inputMap.get(id);\n if (!prev || prev.status !== task.status || prev.title !== task.title || prev.notes !== task.notes) {\n changes++;\n }\n }\n for (const id of inputMap.keys()) {\n if (!outputMap.has(id)) changes++; // removed tasks\n }\n if (input.notes !== output.notes) changes++;\n return changes;\n }\n\n private extractScratchpadFromField(fieldName: 'InputData' | 'OutputData'): ScratchpadSnapshotView | null {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n\n const stepData = this.selectedTimelineItem.data;\n const rawValue = stepData?.[fieldName];\n if (!rawValue) return null;\n\n try {\n let parsed = rawValue;\n if (typeof parsed === 'string') {\n parsed = JSON.parse(parsed);\n }\n const scratchpad = parsed?.scratchpad;\n if (!scratchpad) return null;\n return {\n notes: scratchpad.notes ?? '',\n tasks: Array.isArray(scratchpad.tasks) ? scratchpad.tasks : []\n };\n } catch {\n return null;\n }\n }\n}","@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 || 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 — 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 — 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 [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>"]}
|
|
1
|
+
{"version":3,"file":"ai-agent-run-step-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { TimelineItem } from './ai-agent-run-timeline.component';\nimport { MJAIAgentRunStepEntity, MJAIAgentRunStepEntity_AgentSkillInvocation } from '@memberjunction/core-entities';\nimport { ResolveTaskGraphPositions, type TaskGraphSpec } from '@memberjunction/ai-core-plus';\nimport type { FlowPosition } from '@memberjunction/ng-flow-editor';\nimport { ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\nimport type { IMetadataProvider } from '@memberjunction/core';\n\ninterface ScratchpadSnapshotView {\n notes: string;\n tasks: Array<{\n id: string;\n title: string;\n status: string;\n notes?: string;\n }>;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-step-detail',\n templateUrl: './ai-agent-run-step-detail.component.html',\n styleUrls: ['./ai-agent-run-step-detail.component.css']\n})\nexport class AIAgentRunStepDetailComponent {\n @Input() selectedTimelineItem: TimelineItem | null = null;\n /** The provider the host is on, so the run view reads through the right one. */\n @Input() Provider: IMetadataProvider | null = null;\n @Output() closePanel = new EventEmitter<void>();\n @Output() navigateToActionLog = new EventEmitter<string>();\n @Output() copyToClipboard = new EventEmitter<string>();\n /**\n * The user asked to promote this run's graph into a reusable workflow (D17).\n *\n * Intent only — this component renders a run, it does not persist agents. The host performs the\n * conversion and the `AgentSpecSync` write, which keeps the one place that writes an agent the\n * one place that writes an agent.\n */\n @Output() saveAsWorkflowRequested = new EventEmitter<TaskGraphSpec>();\n\n selectedItemJsonString = '{}';\n detailPaneTab: 'json' | 'diff' | 'scratchpad' | 'skills' | 'graph' = 'diff';\n scratchpadSubTab: 'input' | 'output' | 'diff' = 'diff';\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges() {\n if (this.selectedTimelineItem) {\n this.selectedItemJsonString = this.getSelectedItemJson();\n // Default to diff tab if step has payload diff, skills for Skill steps (the activation IS\n // the story there), scratchpad if available, otherwise json\n if (this.showStepPayloadDiff) {\n this.detailPaneTab = 'diff';\n } else if (this.showGraphTab) {\n // A TaskGraph step's whole content IS the graph; opening on the JSON would bury the one\n // thing the step exists to show.\n this.detailPaneTab = 'graph';\n } else if (this.showSkillsTab && this.selectedTimelineItem.data?.StepType === 'Skill') {\n this.detailPaneTab = 'skills';\n } else if (this.showScratchpadTab) {\n this.detailPaneTab = 'scratchpad';\n } else if (this.showSkillsTab) {\n this.detailPaneTab = 'skills';\n } else {\n this.detailPaneTab = 'json';\n }\n this.scratchpadSubTab = 'diff';\n this.cdr.detectChanges();\n }\n }\n\n /**\n * What to say about a step that never executed, or null when it ran.\n *\n * **Why this needs saying at all.** A workflow persists every step at submission, before anything\n * runs — the rows are the dispatcher's work queue, and the skip cascade is computed from the graph\n * they form. So a branch the workflow did not take still has a row, and opening it shows a\n * perfectly normal record with empty payloads. Without a word of explanation the reader is left to\n * work out whether that emptiness is a branch that was not chosen, work still queued, or a step\n * that broke silently — three very different situations that look identical in JSON.\n *\n * The distinction between Skipped and Blocked is load-bearing and deliberately preserved here:\n * `Skipped` means the workflow chose another route, `Blocked` means something upstream failed. The\n * dispatcher separated them precisely because conflating them made every conditional workflow look\n * half-broken.\n */\n get StepNotice(): { Variant: 'info' | 'warning' | 'error'; Message: string } | null {\n const item = this.selectedTimelineItem;\n if (!item?.data?.IsWorkflowStep) return null;\n\n switch (item.status) {\n case 'Skipped':\n return {\n Variant: 'info',\n Message: 'This step never ran — the workflow took another route. Its row exists because ' +\n 'every step is created when the workflow is submitted, so the record of the branch ' +\n 'that was not taken survives. Nothing went wrong here.',\n };\n case 'Blocked':\n return {\n Variant: 'error',\n Message: 'This step could not run: something it depended on failed, so no path to it was ' +\n 'left. It is not a branch that lost — it is work that became unreachable.',\n };\n case 'Pending':\n return {\n Variant: 'warning',\n Message: 'This step has not started yet. A workflow runs on the dispatcher and outlives the ' +\n 'agent run that submitted it, so a finished run can still contain steps that are ' +\n 'queued or in flight.',\n };\n default:\n return null;\n }\n }\n\n getSelectedItemJson(): string {\n if (!this.selectedTimelineItem) return '{}';\n \n // Get all the data from the entity\n let data;\n if (this.selectedTimelineItem.data instanceof MJAIAgentRunStepEntity) {\n // If it's a step entity, we need to get the full run data\n data = this.selectedTimelineItem.data.GetAll();\n } else {\n data = this.selectedTimelineItem.data;\n }\n \n // Apply recursive JSON parsing to the entire data object\n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n const parsedData = ParseJSONRecursive(data, parseOptions);\n \n return JSON.stringify(parsedData, null, 2);\n }\n\n /**\n * Check if selected timeline item is a step with payload changes\n */\n get showStepPayloadDiff(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (stepData && (stepData.PayloadAtStart?.trim().length > 0 \n || stepData.PayloadAtEnd?.trim().length > 0)) {\n return stepData.PayloadAtStart !== stepData.PayloadAtEnd;\n } else {\n return false;\n }\n }\n\n /**\n * Get parsed PayloadAtStart for the selected step\n */\n get stepPayloadAtStartObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData?.PayloadAtStart) return null;\n \n try {\n // First, check if PayloadAtStart is a JSON string that needs to be parsed\n let payloadData = stepData.PayloadAtStart;\n try {\n // If PayloadAtStart is a JSON string, parse it first\n payloadData = JSON.parse(stepData.PayloadAtStart);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = stepData.PayloadAtStart;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed PayloadAtEnd for the selected step\n */\n get stepPayloadAtEndObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData?.PayloadAtEnd) return null;\n \n try {\n // First, check if PayloadAtEnd is a JSON string that needs to be parsed\n let payloadData = stepData.PayloadAtEnd;\n try {\n // If PayloadAtEnd is a JSON string, parse it first\n payloadData = JSON.parse(stepData.PayloadAtEnd);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = stepData.PayloadAtEnd;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n onClosePanel() {\n this.closePanel.emit();\n }\n\n onNavigateToActionLog(logId: string) {\n this.navigateToActionLog.emit(logId);\n }\n\n onCopyToClipboard() {\n this.copyToClipboard.emit(this.getSelectedItemJson());\n }\n\n /**\n * Whether the Skills tab should be shown — true when the step has skill-invocation records\n * on its `Skills` column (Skill steps, Prompt steps with skills in effect, and Actions/\n * Sub-Agent steps whose tool was granted through a skill).\n */\n get showSkillsTab(): boolean {\n return this.stepSkillInvocations.length > 0;\n }\n\n /**\n * Parsed {@link MJAIAgentRunStepEntity_AgentSkillInvocation} records from the step's `Skills`\n * JSON column. Empty array when the step has no skill linkage or the JSON is malformed.\n */\n get stepSkillInvocations(): MJAIAgentRunStepEntity_AgentSkillInvocation[] {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return [];\n }\n const raw = this.selectedTimelineItem.data?.Skills;\n if (!raw) return [];\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n\n /** Human-readable label for an invocation's activation type. */\n public GetActivationTypeLabel(inv: MJAIAgentRunStepEntity_AgentSkillInvocation): string {\n return inv.ActivationType === 'requested' ? 'User Requested' : 'Agent Self-Activated';\n }\n\n /**\n * Whether the Workflow tab should be shown — true for a `TaskGraph` step that carries a spec.\n *\n * Phase 3 writes this step for EVERY emitted graph, dispatched or constant-folded, so a folded\n * single-node graph is just as promotable as a dispatched one. That was the point of recording\n * the fold rather than letting it vanish.\n */\n get showGraphTab(): boolean {\n return this.stepTaskGraph !== null;\n }\n\n /**\n * The `TaskGraphSpec` recorded on a `TaskGraph` step, or null.\n *\n * Read from InputData, falling back to OutputData: the step records the spec on the way in, and\n * a malformed or absent payload simply means no tab rather than a broken panel.\n */\n get stepTaskGraph(): TaskGraphSpec | null {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') return null;\n if (this.selectedTimelineItem.data?.StepType !== 'TaskGraph') return null;\n\n for (const raw of [this.selectedTimelineItem.data?.InputData, this.selectedTimelineItem.data?.OutputData]) {\n if (!raw) continue;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n const spec = (parsed as { spec?: TaskGraphSpec })?.spec;\n if (spec?.tasks?.length) return spec;\n } catch {\n // A step whose payload cannot be parsed shows no tab, which is honest — better than a\n // canvas rendering half a graph.\n }\n }\n return null;\n }\n\n /**\n * Where the recorded graph's nodes go on the canvas.\n *\n * Without this the editor receives a spec and no geometry, so every node projects to the origin —\n * all of them, in one place. The canvas then rescues it with a deferred layout pass whose\n * zoom-to-fit measures a bounding box one node wide, and a four-step workflow renders as a single\n * enormous box at 265%. The positions exist the whole time: a workflow compiled from a Flow agent\n * carries the arrangement its author dragged into place, on every node.\n */\n get stepTaskGraphPositions(): Map<string, FlowPosition> | null {\n const spec = this.stepTaskGraph;\n if (!spec) return null;\n return ResolveTaskGraphPositions(spec);\n }\n\n /**\n * The graph's parent `MJ: Tasks` row, when this step actually dispatched one.\n *\n * **This is what turns the panel from a picture of the plan into a picture of the run.** With it,\n * the same `mj-task-graph-run-view` the Workflows app uses reads the Task rows and draws what\n * happened — declined branches hatched, untravelled edges absent, the toolbar available and the\n * legend off. Without it the panel had only the SPEC, so it rendered in design mode: every branch\n * drawn as though it had run, on a canvas that could not know otherwise.\n *\n * Null for a graph that was constant-folded (D9) — it never reached the dispatcher, so there are no\n * rows and no run to show. The spec view is the honest rendering there: it is a plan, and it is\n * drawn as one.\n */\n get stepTaskGraphParentTaskID(): string | null {\n const raw = this.selectedTimelineItem?.data?.OutputData;\n if (!raw) return null;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n const id = (parsed as { parentTaskID?: unknown })?.parentTaskID;\n return typeof id === 'string' && id.length > 0 ? id : null;\n } catch {\n return null;\n }\n }\n\n /** True when the recorded graph was constant-folded rather than dispatched (D9). */\n get stepTaskGraphWasFolded(): boolean {\n if (!this.selectedTimelineItem) return false;\n const raw = this.selectedTimelineItem.data?.InputData;\n if (!raw) return false;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n return (parsed as { folded?: boolean })?.folded === true;\n } catch {\n return false;\n }\n }\n\n /** Asks the host to save this run's graph as a reusable workflow. */\n public RequestSaveAsWorkflow(): void {\n const spec = this.stepTaskGraph;\n if (spec) this.saveAsWorkflowRequested.emit(spec);\n }\n\n /**\n * Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)\n */\n get showScratchpadTab(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n return this.stepScratchpadInput !== null || this.stepScratchpadOutput !== null;\n }\n\n /**\n * Parse scratchpad snapshot from InputData JSON\n */\n get stepScratchpadInput(): ScratchpadSnapshotView | null {\n return this.extractScratchpadFromField('InputData');\n }\n\n /**\n * Parse scratchpad snapshot from OutputData JSON\n */\n get stepScratchpadOutput(): ScratchpadSnapshotView | null {\n return this.extractScratchpadFromField('OutputData');\n }\n\n /**\n * Number of tasks that changed between input and output scratchpad snapshots\n */\n get scratchpadTaskChangeCount(): number {\n const input = this.stepScratchpadInput;\n const output = this.stepScratchpadOutput;\n if (!input && !output) return 0;\n if (!input || !output) return (output?.tasks?.length ?? 0) + (input?.tasks?.length ?? 0);\n\n let changes = 0;\n const inputMap = new Map(input.tasks.map(t => [t.id, t]));\n const outputMap = new Map(output.tasks.map(t => [t.id, t]));\n\n for (const [id, task] of outputMap) {\n const prev = inputMap.get(id);\n if (!prev || prev.status !== task.status || prev.title !== task.title || prev.notes !== task.notes) {\n changes++;\n }\n }\n for (const id of inputMap.keys()) {\n if (!outputMap.has(id)) changes++; // removed tasks\n }\n if (input.notes !== output.notes) changes++;\n return changes;\n }\n\n private extractScratchpadFromField(fieldName: 'InputData' | 'OutputData'): ScratchpadSnapshotView | null {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n\n const stepData = this.selectedTimelineItem.data;\n const rawValue = stepData?.[fieldName];\n if (!rawValue) return null;\n\n try {\n let parsed = rawValue;\n if (typeof parsed === 'string') {\n parsed = JSON.parse(parsed);\n }\n const scratchpad = parsed?.scratchpad;\n if (!scratchpad) return null;\n return {\n notes: scratchpad.notes ?? '',\n tasks: Array.isArray(scratchpad.tasks) ? scratchpad.tasks : []\n };\n } catch {\n return null;\n }\n }\n}","@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 — 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 — 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 @if (stepTaskGraphParentTaskID; as parentTaskID) {\n <!-- The RUN, not the plan. Same component the Workflows app uses, so a workflow is\n drawn identically wherever it is opened from — declined branches hatched,\n untravelled edges absent, toolbar on, legend off. -->\n <mj-task-graph-run-view\n class=\"detail-graph__canvas\"\n [Provider]=\"Provider\"\n [ParentTaskID]=\"parentTaskID\"\n [WorkflowName]=\"stepTaskGraph?.workflowName || 'Workflow'\"\n Height=\"100%\">\n </mj-task-graph-run-view>\n } @else {\n <!-- No dispatcher rows to read: a folded graph never ran. Drawing the spec is the\n honest rendering — it is a plan, and it is drawn as one. -->\n <mj-task-graph-editor\n class=\"detail-graph__canvas\"\n [Spec]=\"stepTaskGraph\"\n [NodePositions]=\"stepTaskGraphPositions\"\n [ReadOnly]=\"true\"\n [ShowPalette]=\"false\"\n [ShowLegend]=\"false\">\n </mj-task-graph-editor>\n }\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>"]}
|
|
@@ -17,6 +17,15 @@ export declare class AIAgentRunStepNodeComponent {
|
|
|
17
17
|
get canExpand(): boolean;
|
|
18
18
|
get canNavigateToEntity(): boolean;
|
|
19
19
|
get entityNavigationText(): string;
|
|
20
|
+
/**
|
|
21
|
+
* The glyph beside a row's status word.
|
|
22
|
+
*
|
|
23
|
+
* Covers BOTH status vocabularies' worth of meaning, because this list used to know only what an
|
|
24
|
+
* `AIAgentRunStep` can be — `Running / Completed / Failed / Cancelled / Paused`. A workflow step is
|
|
25
|
+
* `Pending`, `Skipped` or `Blocked` (and says `Complete`, not `Completed`), so every row belonging
|
|
26
|
+
* to a task graph fell through to the unknown glyph and rendered a question mark. The projection
|
|
27
|
+
* now normalizes the two vocabularies into one; these are the values it can produce.
|
|
28
|
+
*/
|
|
20
29
|
getStatusIcon(status: string): string;
|
|
21
30
|
handleClick(): void;
|
|
22
31
|
handleExpandToggle(event: Event): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-run-step-node.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-node.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;;AAEjE,qBAMa,2BAA2B;IAC7B,IAAI,EAAG,YAAY,CAAC;IACpB,UAAU,UAAS;IAClB,SAAS,6BAAoC;IAC7C,YAAY,sBAA6B;IACzC,gBAAgB;oBAAkC,MAAM;kBAAY,MAAM;OAAM;IAE1F,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"ai-agent-run-step-node.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-node.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;;AAEjE,qBAMa,2BAA2B;IAC7B,IAAI,EAAG,YAAY,CAAC;IACpB,UAAU,UAAS;IAClB,SAAS,6BAAoC;IAC7C,YAAY,sBAA6B;IACzC,gBAAgB;oBAAkC,MAAM;kBAAY,MAAM;OAAM;IAE1F,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAKxB;IAED,IAAI,YAAY,IAAI,OAAO,CAM1B;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,mBAAmB,IAAI,OAAO,CAQjC;IAED,IAAI,oBAAoB,IAAI,MAAM,CAmBjC;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAkBrC,WAAW;IAIX,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAM/B,gBAAgB,CAAC,KAAK,EAAE,KAAK;IA8C7B;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,2CAA2C,EAAE,CASpE;IAED,0EAA0E;IACnE,mBAAmB,CAAC,GAAG,EAAE,2CAA2C,GAAG,MAAM;IAMpF,iBAAiB,IAAI,MAAM;IAyB3B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;yCAlMpB,2BAA2B;2CAA3B,2BAA2B;CAwMvC"}
|
|
@@ -4,9 +4,9 @@ import * as i1 from "@angular/common";
|
|
|
4
4
|
const _forTrack0 = ($index, $item) => $item.SkillID;
|
|
5
5
|
function AIAgentRunStepNodeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
6
6
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
7
|
-
i0.ɵɵelementStart(0, "button",
|
|
7
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
8
8
|
i0.ɵɵlistener("click", function AIAgentRunStepNodeComponent_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleExpandToggle($event)); });
|
|
9
|
-
i0.ɵɵelement(1, "i",
|
|
9
|
+
i0.ɵɵelement(1, "i", 18);
|
|
10
10
|
i0.ɵɵelementEnd();
|
|
11
11
|
} if (rf & 2) {
|
|
12
12
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -16,7 +16,7 @@ function AIAgentRunStepNodeComponent_Conditional_1_Template(rf, ctx) { if (rf &
|
|
|
16
16
|
} }
|
|
17
17
|
function AIAgentRunStepNodeComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
18
18
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
19
|
-
i0.ɵɵelementStart(0, "img",
|
|
19
|
+
i0.ɵɵelementStart(0, "img", 19);
|
|
20
20
|
i0.ɵɵlistener("error", function AIAgentRunStepNodeComponent_Conditional_3_Template_img_error_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLogoError($event)); });
|
|
21
21
|
i0.ɵɵelementEnd();
|
|
22
22
|
} if (rf & 2) {
|
|
@@ -29,8 +29,23 @@ function AIAgentRunStepNodeComponent_Conditional_4_Template(rf, ctx) { if (rf &
|
|
|
29
29
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
30
30
|
i0.ɵɵproperty("ngClass", ctx_r1.item.icon);
|
|
31
31
|
} }
|
|
32
|
-
function
|
|
33
|
-
i0.ɵɵelementStart(0, "
|
|
32
|
+
function AIAgentRunStepNodeComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "span", 7);
|
|
34
|
+
i0.ɵɵtext(1);
|
|
35
|
+
i0.ɵɵpipe(2, "date");
|
|
36
|
+
i0.ɵɵelementEnd();
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r1.item.startTime, "h:mm:ss.SSS a"));
|
|
41
|
+
} }
|
|
42
|
+
function AIAgentRunStepNodeComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "span", 8);
|
|
44
|
+
i0.ɵɵtext(1, "\u2014");
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
} }
|
|
47
|
+
function AIAgentRunStepNodeComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
34
49
|
i0.ɵɵtext(1);
|
|
35
50
|
i0.ɵɵelementEnd();
|
|
36
51
|
} if (rf & 2) {
|
|
@@ -38,11 +53,11 @@ function AIAgentRunStepNodeComponent_Conditional_14_Template(rf, ctx) { if (rf &
|
|
|
38
53
|
i0.ɵɵadvance();
|
|
39
54
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAdditionalInfo(), " ");
|
|
40
55
|
} }
|
|
41
|
-
function
|
|
42
|
-
i0.ɵɵelementStart(0, "span",
|
|
43
|
-
i0.ɵɵelement(1, "i",
|
|
56
|
+
function AIAgentRunStepNodeComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
58
|
+
i0.ɵɵelement(1, "i", 21);
|
|
44
59
|
i0.ɵɵtext(2);
|
|
45
|
-
i0.ɵɵelementStart(3, "span",
|
|
60
|
+
i0.ɵɵelementStart(3, "span", 22);
|
|
46
61
|
i0.ɵɵtext(4);
|
|
47
62
|
i0.ɵɵelementEnd()();
|
|
48
63
|
} if (rf & 2) {
|
|
@@ -55,18 +70,18 @@ function AIAgentRunStepNodeComponent_Conditional_15_For_2_Template(rf, ctx) { if
|
|
|
55
70
|
i0.ɵɵadvance(2);
|
|
56
71
|
i0.ɵɵtextInterpolate(inv_r4.ActivationType === "requested" ? "user" : "auto");
|
|
57
72
|
} }
|
|
58
|
-
function
|
|
59
|
-
i0.ɵɵelementStart(0, "div",
|
|
60
|
-
i0.ɵɵrepeaterCreate(1,
|
|
73
|
+
function AIAgentRunStepNodeComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
75
|
+
i0.ɵɵrepeaterCreate(1, AIAgentRunStepNodeComponent_Conditional_14_For_2_Template, 5, 4, "span", 20, _forTrack0);
|
|
61
76
|
i0.ɵɵelementEnd();
|
|
62
77
|
} if (rf & 2) {
|
|
63
78
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
64
79
|
i0.ɵɵadvance();
|
|
65
80
|
i0.ɵɵrepeater(ctx_r1.SkillInvocations);
|
|
66
81
|
} }
|
|
67
|
-
function
|
|
68
|
-
i0.ɵɵelementStart(0, "span",
|
|
69
|
-
i0.ɵɵelement(1, "i",
|
|
82
|
+
function AIAgentRunStepNodeComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "span", 13);
|
|
84
|
+
i0.ɵɵelement(1, "i", 23);
|
|
70
85
|
i0.ɵɵtext(2);
|
|
71
86
|
i0.ɵɵelementEnd();
|
|
72
87
|
} if (rf & 2) {
|
|
@@ -74,12 +89,12 @@ function AIAgentRunStepNodeComponent_Conditional_17_Template(rf, ctx) { if (rf &
|
|
|
74
89
|
i0.ɵɵadvance(2);
|
|
75
90
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.item.duration, " ");
|
|
76
91
|
} }
|
|
77
|
-
function
|
|
92
|
+
function AIAgentRunStepNodeComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
78
93
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
79
|
-
i0.ɵɵelementStart(0, "button",
|
|
80
|
-
i0.ɵɵlistener("click", function
|
|
81
|
-
i0.ɵɵelement(1, "i",
|
|
82
|
-
i0.ɵɵelementStart(2, "span",
|
|
94
|
+
i0.ɵɵelementStart(0, "button", 24);
|
|
95
|
+
i0.ɵɵlistener("click", function AIAgentRunStepNodeComponent_Conditional_21_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToRecord($event)); });
|
|
96
|
+
i0.ɵɵelement(1, "i", 25);
|
|
97
|
+
i0.ɵɵelementStart(2, "span", 26);
|
|
83
98
|
i0.ɵɵtext(3);
|
|
84
99
|
i0.ɵɵelementEnd()();
|
|
85
100
|
} if (rf & 2) {
|
|
@@ -99,13 +114,17 @@ export class AIAgentRunStepNodeComponent {
|
|
|
99
114
|
return !!this.item.children && this.item.children.length > 0;
|
|
100
115
|
}
|
|
101
116
|
get isSubAgent() {
|
|
102
|
-
|
|
117
|
+
// A TaskGraph step expands too: it stands in for a whole graph of Task rows, and without the
|
|
118
|
+
// affordance the run stops at "Task Graph: X" with no way to see what actually ran.
|
|
119
|
+
return this.item.type === 'subrun' ||
|
|
120
|
+
(this.item.type === 'step' && (this.item.data?.StepType === 'Sub-Agent' || this.item.data?.StepType === 'TaskGraph'));
|
|
103
121
|
}
|
|
104
122
|
get isParentStep() {
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
// STRUCTURAL, not type-gated. Anything holding children can be opened — a loop's iterations, a
|
|
124
|
+
// workflow's steps, a nested run. The old test required `type === 'step'`, so a ForEach that
|
|
125
|
+
// came from a task graph rendered its children into the model and then offered no way to reach
|
|
126
|
+
// them: the work existed, was loaded, and was unreachable.
|
|
127
|
+
return !this.isSubAgent && this.hasChildren;
|
|
109
128
|
}
|
|
110
129
|
get canExpand() {
|
|
111
130
|
// Can expand if it's a sub-agent OR if it's a parent step with children
|
|
@@ -131,19 +150,37 @@ export class AIAgentRunStepNodeComponent {
|
|
|
131
150
|
return 'View Prompt Run';
|
|
132
151
|
case 'sub-agent':
|
|
133
152
|
return 'View Agent Run';
|
|
153
|
+
case 'taskgraph':
|
|
154
|
+
return 'View Workflow Run';
|
|
134
155
|
default:
|
|
135
156
|
return 'View Details';
|
|
136
157
|
}
|
|
137
158
|
}
|
|
138
159
|
return "";
|
|
139
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* The glyph beside a row's status word.
|
|
163
|
+
*
|
|
164
|
+
* Covers BOTH status vocabularies' worth of meaning, because this list used to know only what an
|
|
165
|
+
* `AIAgentRunStep` can be — `Running / Completed / Failed / Cancelled / Paused`. A workflow step is
|
|
166
|
+
* `Pending`, `Skipped` or `Blocked` (and says `Complete`, not `Completed`), so every row belonging
|
|
167
|
+
* to a task graph fell through to the unknown glyph and rendered a question mark. The projection
|
|
168
|
+
* now normalizes the two vocabularies into one; these are the values it can produce.
|
|
169
|
+
*/
|
|
140
170
|
getStatusIcon(status) {
|
|
141
171
|
const iconMap = {
|
|
142
172
|
'Running': 'fa-circle-notch fa-spin',
|
|
143
173
|
'Completed': 'fa-check-circle',
|
|
144
174
|
'Failed': 'fa-times-circle',
|
|
145
175
|
'Cancelled': 'fa-ban',
|
|
146
|
-
'Paused': 'fa-pause-circle'
|
|
176
|
+
'Paused': 'fa-pause-circle',
|
|
177
|
+
// A branch the workflow did not take. Not a failure and not a pause — deliberately its own
|
|
178
|
+
// glyph, because reading it as either sends someone hunting for a problem that never happened.
|
|
179
|
+
'Skipped': 'fa-diamond-turn-right',
|
|
180
|
+
'Pending': 'fa-hourglass-half',
|
|
181
|
+
// Failure-driven unsatisfiability: something upstream broke and this can no longer run.
|
|
182
|
+
'Blocked': 'fa-circle-exclamation',
|
|
183
|
+
'Waiting': 'fa-user-clock'
|
|
147
184
|
};
|
|
148
185
|
return iconMap[status] || 'fa-question-circle';
|
|
149
186
|
}
|
|
@@ -247,7 +284,7 @@ export class AIAgentRunStepNodeComponent {
|
|
|
247
284
|
this.item.logoUrl = undefined;
|
|
248
285
|
}
|
|
249
286
|
static { this.ɵfac = function AIAgentRunStepNodeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AIAgentRunStepNodeComponent)(); }; }
|
|
250
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepNodeComponent, selectors: [["mj-ai-agent-run-step-node"]], inputs: { item: "item", isSelected: "isSelected" }, outputs: { itemClick: "itemClick", expandToggle: "expandToggle", navigateToEntity: "navigateToEntity" }, standalone: false, decls:
|
|
287
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepNodeComponent, selectors: [["mj-ai-agent-run-step-node"]], inputs: { item: "item", isSelected: "isSelected" }, outputs: { itemClick: "itemClick", expandToggle: "expandToggle", navigateToEntity: "navigateToEntity" }, standalone: false, decls: 22, vars: 21, consts: [[1, "timeline-item", 3, "click"], [1, "expand-toggle"], [1, "timeline-marker"], [1, "timeline-marker-logo", 3, "src", "alt"], [1, "fas", 3, "ngClass"], [1, "timeline-content"], [1, "timeline-header"], [1, "timeline-time"], ["title", "This step has not started", 1, "timeline-time", "timeline-time--none"], [1, "timeline-subtitle"], [1, "timeline-additional-info"], [1, "timeline-skills"], [1, "timeline-meta"], [1, "duration"], [1, "status"], [1, "timeline-actions"], [1, "btn-link", 3, "title"], [1, "expand-toggle", 3, "click"], [1, "fas"], [1, "timeline-marker-logo", 3, "error", "src", "alt"], [1, "skill-chip", 3, "title"], [1, "fas", "fa-wand-magic-sparkles"], [1, "skill-chip-mode"], [1, "fas", "fa-clock"], [1, "btn-link", 3, "click", "title"], [1, "fas", "fa-external-link-alt"], [1, "action-text"]], template: function AIAgentRunStepNodeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
251
288
|
i0.ɵɵelementStart(0, "div", 0);
|
|
252
289
|
i0.ɵɵlistener("click", function AIAgentRunStepNodeComponent_Template_div_click_0_listener() { return ctx.handleClick(); });
|
|
253
290
|
i0.ɵɵconditionalCreate(1, AIAgentRunStepNodeComponent_Conditional_1_Template, 2, 5, "button", 1);
|
|
@@ -258,28 +295,26 @@ export class AIAgentRunStepNodeComponent {
|
|
|
258
295
|
i0.ɵɵelementStart(5, "div", 5)(6, "div", 6)(7, "h4");
|
|
259
296
|
i0.ɵɵtext(8);
|
|
260
297
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵ
|
|
262
|
-
i0.ɵɵ
|
|
263
|
-
i0.ɵɵ
|
|
264
|
-
i0.ɵɵ
|
|
265
|
-
i0.ɵɵelementStart(12, "div", 8);
|
|
266
|
-
i0.ɵɵtext(13);
|
|
298
|
+
i0.ɵɵconditionalCreate(9, AIAgentRunStepNodeComponent_Conditional_9_Template, 3, 4, "span", 7)(10, AIAgentRunStepNodeComponent_Conditional_10_Template, 2, 0, "span", 8);
|
|
299
|
+
i0.ɵɵelementEnd();
|
|
300
|
+
i0.ɵɵelementStart(11, "div", 9);
|
|
301
|
+
i0.ɵɵtext(12);
|
|
267
302
|
i0.ɵɵelementEnd();
|
|
268
|
-
i0.ɵɵconditionalCreate(
|
|
269
|
-
i0.ɵɵconditionalCreate(
|
|
270
|
-
i0.ɵɵelementStart(
|
|
271
|
-
i0.ɵɵconditionalCreate(
|
|
272
|
-
i0.ɵɵelementStart(
|
|
273
|
-
i0.ɵɵelement(
|
|
274
|
-
i0.ɵɵtext(
|
|
303
|
+
i0.ɵɵconditionalCreate(13, AIAgentRunStepNodeComponent_Conditional_13_Template, 2, 1, "div", 10);
|
|
304
|
+
i0.ɵɵconditionalCreate(14, AIAgentRunStepNodeComponent_Conditional_14_Template, 3, 0, "div", 11);
|
|
305
|
+
i0.ɵɵelementStart(15, "div", 12);
|
|
306
|
+
i0.ɵɵconditionalCreate(16, AIAgentRunStepNodeComponent_Conditional_16_Template, 3, 1, "span", 13);
|
|
307
|
+
i0.ɵɵelementStart(17, "span", 14);
|
|
308
|
+
i0.ɵɵelement(18, "i", 4);
|
|
309
|
+
i0.ɵɵtext(19);
|
|
275
310
|
i0.ɵɵelementEnd()()();
|
|
276
|
-
i0.ɵɵelementStart(
|
|
277
|
-
i0.ɵɵconditionalCreate(
|
|
311
|
+
i0.ɵɵelementStart(20, "div", 15);
|
|
312
|
+
i0.ɵɵconditionalCreate(21, AIAgentRunStepNodeComponent_Conditional_21_Template, 4, 2, "button", 16);
|
|
278
313
|
i0.ɵɵelementEnd()();
|
|
279
314
|
} if (rf & 2) {
|
|
280
315
|
i0.ɵɵstyleProp("margin-left", ctx.item.level * 24, "px");
|
|
281
316
|
i0.ɵɵclassProp("selected", ctx.isSelected);
|
|
282
|
-
i0.ɵɵattribute("data-status", ctx.item.status)("data-type", ctx.item.type);
|
|
317
|
+
i0.ɵɵattribute("data-status", ctx.item.status)("data-type", ctx.item.type)("data-provenance", ctx.item.provenance);
|
|
283
318
|
i0.ɵɵadvance();
|
|
284
319
|
i0.ɵɵconditional(ctx.canExpand ? 1 : -1);
|
|
285
320
|
i0.ɵɵadvance();
|
|
@@ -290,16 +325,16 @@ export class AIAgentRunStepNodeComponent {
|
|
|
290
325
|
i0.ɵɵconditional(!ctx.item.logoUrl ? 4 : -1);
|
|
291
326
|
i0.ɵɵadvance(4);
|
|
292
327
|
i0.ɵɵtextInterpolate(ctx.item.title);
|
|
293
|
-
i0.ɵɵadvance(
|
|
294
|
-
i0.ɵɵ
|
|
328
|
+
i0.ɵɵadvance();
|
|
329
|
+
i0.ɵɵconditional(ctx.item.startTime ? 9 : 10);
|
|
295
330
|
i0.ɵɵadvance(3);
|
|
296
331
|
i0.ɵɵtextInterpolate(ctx.item.subtitle);
|
|
297
332
|
i0.ɵɵadvance();
|
|
298
|
-
i0.ɵɵconditional(ctx.getAdditionalInfo() ?
|
|
333
|
+
i0.ɵɵconditional(ctx.getAdditionalInfo() ? 13 : -1);
|
|
299
334
|
i0.ɵɵadvance();
|
|
300
|
-
i0.ɵɵconditional(ctx.SkillInvocations.length > 0 ?
|
|
335
|
+
i0.ɵɵconditional(ctx.SkillInvocations.length > 0 ? 14 : -1);
|
|
301
336
|
i0.ɵɵadvance(2);
|
|
302
|
-
i0.ɵɵconditional(ctx.item.duration ?
|
|
337
|
+
i0.ɵɵconditional(ctx.item.duration ? 16 : -1);
|
|
303
338
|
i0.ɵɵadvance();
|
|
304
339
|
i0.ɵɵattribute("data-status", ctx.item.status);
|
|
305
340
|
i0.ɵɵadvance();
|
|
@@ -307,12 +342,12 @@ export class AIAgentRunStepNodeComponent {
|
|
|
307
342
|
i0.ɵɵadvance();
|
|
308
343
|
i0.ɵɵtextInterpolate1(" ", ctx.item.status, " ");
|
|
309
344
|
i0.ɵɵadvance(2);
|
|
310
|
-
i0.ɵɵconditional(ctx.canNavigateToEntity ?
|
|
311
|
-
} }, dependencies: [i1.NgClass, i1.DatePipe], styles: [".timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px;\n padding-left: 22px; \n\n margin-bottom: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-sunken);\n transform: translateX(2px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: 0 0 0 1px var(--mj-brand-primary);\n}\n\n\n\n.expand-toggle[_ngcontent-%COMP%] {\n position: absolute;\n left: -34px;\n top: 12px;\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n}\n\n.expand-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.expand-toggle[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.timeline-marker[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n position: relative;\n overflow: hidden;\n}\n\n.timeline-marker-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n background: var(--mj-text-disabled);\n}\n\n\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 4px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n white-space: nowrap;\n margin-left: 12px;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.timeline-additional-info[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n font-style: italic;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 500;\n}\n\n.status[data-status=\"Running\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 11px;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\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.btn-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.action-text[_ngcontent-%COMP%] {\n display: none;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover .action-text[_ngcontent-%COMP%] {\n display: inline;\n}\n\n\n\n.timeline-item[data-type=\"subrun\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-type=\"action\"][_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.timeline-item[data-type=\"prompt\"][_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n\n\n\n.timeline-skills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.skill-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n\n\n.skill-chip[data-activation=\"auto\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.skill-chip-mode[_ngcontent-%COMP%] {\n font-size: 9px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.75;\n padding-left: 4px;\n border-left: 1px solid color-mix(in srgb, currentColor 30%, transparent);\n}"] }); }
|
|
345
|
+
i0.ɵɵconditional(ctx.canNavigateToEntity ? 21 : -1);
|
|
346
|
+
} }, dependencies: [i1.NgClass, i1.DatePipe], styles: [".timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px;\n padding-left: 22px; \n\n margin-bottom: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-sunken);\n transform: translateX(2px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: 0 0 0 1px var(--mj-brand-primary);\n}\n\n\n\n.expand-toggle[_ngcontent-%COMP%] {\n position: absolute;\n left: -34px;\n top: 12px;\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n}\n\n.expand-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.expand-toggle[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.timeline-marker[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n position: relative;\n overflow: hidden;\n}\n\n.timeline-marker-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n background: var(--mj-text-disabled);\n}\n\n\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 4px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n white-space: nowrap;\n margin-left: 12px;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.timeline-additional-info[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n font-style: italic;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 500;\n}\n\n.status[data-status=\"Running\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.status[data-status=\"Blocked\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Waiting\"][_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.status[data-status=\"Skipped\"][_ngcontent-%COMP%], \n.status[data-status=\"Pending\"][_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n\n\n\n\n\n\n\n\n\n.timeline-item[data-status=\"Skipped\"][_ngcontent-%COMP%] {\n background-image: repeating-linear-gradient(\n 135deg,\n transparent,\n transparent 6px,\n color-mix(in srgb, var(--mj-text-disabled) 14%, transparent) 6px,\n color-mix(in srgb, var(--mj-text-disabled) 14%, transparent) 12px\n );\n}\n\n.timeline-item[data-status=\"Skipped\"][_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.timeline-item[data-status=\"Skipped\"][_ngcontent-%COMP%] .timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n text-decoration: line-through;\n text-decoration-color: var(--mj-text-disabled);\n text-decoration-thickness: 1px;\n}\n\n\n\n.timeline-item[data-status=\"Pending\"][_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n opacity: 0.75;\n}\n\n\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 11px;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\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.btn-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.action-text[_ngcontent-%COMP%] {\n display: none;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover .action-text[_ngcontent-%COMP%] {\n display: inline;\n}\n\n\n\n.timeline-item[data-type=\"subrun\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-type=\"action\"][_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.timeline-item[data-type=\"prompt\"][_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n\n\n\n\n\n\n\n\n\n\n.timeline-item[data-type=\"taskgraph\"][_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-info);\n background: color-mix(in srgb, var(--mj-status-info) 6%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-provenance=\"workflow\"][_ngcontent-%COMP%]:not([data-type=\"taskgraph\"]) {\n border-left: 3px solid color-mix(in srgb, var(--mj-status-info) 55%, transparent);\n}\n\n\n\n\n.timeline-skills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.skill-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n\n\n.skill-chip[data-activation=\"auto\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.skill-chip-mode[_ngcontent-%COMP%] {\n font-size: 9px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.75;\n padding-left: 4px;\n border-left: 1px solid color-mix(in srgb, currentColor 30%, transparent);\n}\n\n\n\n\n.timeline-time--none[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}"] }); }
|
|
312
347
|
}
|
|
313
348
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunStepNodeComponent, [{
|
|
314
349
|
type: Component,
|
|
315
|
-
args: [{ standalone: false, selector: 'mj-ai-agent-run-step-node', template: "<div class=\"timeline-item\"\n [class.selected]=\"isSelected\"\n [attr.data-status]=\"item.status\"\n [attr.data-type]=\"item.type\"\n [style.margin-left.px]=\"item.level * 24\"\n (click)=\"handleClick()\">\n\n <!-- Expand/Collapse Button for Sub-Agents and Parent Steps -->\n @if (canExpand) {\n <button class=\"expand-toggle\"\n (click)=\"handleExpandToggle($event)\"\n [attr.aria-expanded]=\"item.isExpanded\">\n <i class=\"fas\"\n [class.fa-chevron-right]=\"!item.isExpanded\"\n [class.fa-chevron-down]=\"item.isExpanded\"></i>\n </button>\n }\n\n <!-- Timeline Marker -->\n <div class=\"timeline-marker\" [attr.data-color]=\"item.color\">\n @if (item.logoUrl) {\n <img\n [src]=\"item.logoUrl\"\n [alt]=\"item.title\"\n class=\"timeline-marker-logo\"\n (error)=\"onLogoError($event)\" />\n }\n @if (!item.logoUrl) {\n <i class=\"fas\" [ngClass]=\"item.icon\"></i>\n }\n </div>\n\n <!-- Timeline Content -->\n <div class=\"timeline-content\">\n <div class=\"timeline-header\">\n <h4>{{ item.title }}</h4>\n <span class=\"timeline-time\">{{ item.startTime | date:'h:mm:ss.SSS a' }}</span>\n </div>\n\n <div class=\"timeline-subtitle\">{{ item.subtitle }}</div>\n\n @if (getAdditionalInfo()) {\n <div class=\"timeline-additional-info\">\n {{ getAdditionalInfo() }}\n </div>\n }\n\n @if (SkillInvocations.length > 0) {\n <div class=\"timeline-skills\">\n @for (inv of SkillInvocations; track inv.SkillID) {\n <span class=\"skill-chip\" [attr.data-activation]=\"inv.ActivationType\" [title]=\"GetSkillChipTooltip(inv)\">\n <i class=\"fas fa-wand-magic-sparkles\"></i>\n {{ inv.SkillName }}\n <span class=\"skill-chip-mode\">{{ inv.ActivationType === 'requested' ? 'user' : 'auto' }}</span>\n </span>\n }\n </div>\n }\n\n <div class=\"timeline-meta\">\n @if (item.duration) {\n <span class=\"duration\">\n <i class=\"fas fa-clock\"></i> {{ item.duration }}\n </span>\n }\n <span class=\"status\" [attr.data-status]=\"item.status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(item.status)\"></i>\n {{ item.status }}\n </span>\n </div>\n </div>\n\n <!-- Timeline Actions -->\n <div class=\"timeline-actions\">\n @if (canNavigateToEntity) {\n <button class=\"btn-link\"\n (click)=\"navigateToRecord($event)\"\n [title]=\"entityNavigationText\">\n <i class=\"fas fa-external-link-alt\"></i>\n <span class=\"action-text\">{{ entityNavigationText }}</span>\n </button>\n }\n </div>\n</div>", styles: [".timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px;\n padding-left: 22px; /* Add extra padding to accommodate expand button */\n margin-bottom: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n\n.timeline-item:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-sunken);\n transform: translateX(2px);\n}\n\n.timeline-item.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: 0 0 0 1px var(--mj-brand-primary);\n}\n\n/* Expand/Collapse Button */\n.expand-toggle {\n position: absolute;\n left: -34px;\n top: 12px;\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n}\n\n.expand-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.expand-toggle i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Timeline Marker */\n.timeline-marker {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n position: relative;\n overflow: hidden;\n}\n\n.timeline-marker-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n\n.timeline-marker[data-color=\"info\"] {\n background: var(--mj-brand-primary);\n}\n\n.timeline-marker[data-color=\"success\"] {\n background: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n background: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n background: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n background: var(--mj-text-disabled);\n}\n\n/* Timeline Content */\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 4px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.timeline-time {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n white-space: nowrap;\n margin-left: 12px;\n}\n\n.timeline-subtitle {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.timeline-additional-info {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n font-style: italic;\n}\n\n.timeline-meta {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 500;\n}\n\n.status[data-status=\"Running\"] {\n color: var(--mj-brand-primary);\n}\n\n.status[data-status=\"Completed\"] {\n color: var(--mj-status-success);\n}\n\n.status[data-status=\"Failed\"] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Cancelled\"] {\n color: var(--mj-status-warning);\n}\n\n/* Timeline Actions */\n.timeline-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 11px;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\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.btn-link i {\n font-size: 10px;\n}\n\n.action-text {\n display: none;\n}\n\n.timeline-item:hover .action-text {\n display: inline;\n}\n\n/* Type-specific styling */\n.timeline-item[data-type=\"subrun\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-type=\"action\"] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.timeline-item[data-type=\"prompt\"] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n/* ============================================================\n Skill observability \u2014 badges on steps touched by skills\n ============================================================ */\n.timeline-skills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.skill-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n/* Agent self-activation gets a warning accent \u2014 it expanded its own tool surface */\n.skill-chip[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.skill-chip-mode {\n font-size: 9px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.75;\n padding-left: 4px;\n border-left: 1px solid color-mix(in srgb, currentColor 30%, transparent);\n}\n"] }]
|
|
350
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-run-step-node', template: "<div class=\"timeline-item\"\n [class.selected]=\"isSelected\"\n [attr.data-status]=\"item.status\"\n [attr.data-type]=\"item.type\"\n [attr.data-provenance]=\"item.provenance\"\n [style.margin-left.px]=\"item.level * 24\"\n (click)=\"handleClick()\">\n\n <!-- Expand/Collapse Button for Sub-Agents and Parent Steps -->\n @if (canExpand) {\n <button class=\"expand-toggle\"\n (click)=\"handleExpandToggle($event)\"\n [attr.aria-expanded]=\"item.isExpanded\">\n <i class=\"fas\"\n [class.fa-chevron-right]=\"!item.isExpanded\"\n [class.fa-chevron-down]=\"item.isExpanded\"></i>\n </button>\n }\n\n <!-- Timeline Marker -->\n <div class=\"timeline-marker\" [attr.data-color]=\"item.color\">\n @if (item.logoUrl) {\n <img\n [src]=\"item.logoUrl\"\n [alt]=\"item.title\"\n class=\"timeline-marker-logo\"\n (error)=\"onLogoError($event)\" />\n }\n @if (!item.logoUrl) {\n <i class=\"fas\" [ngClass]=\"item.icon\"></i>\n }\n </div>\n\n <!-- Timeline Content -->\n <div class=\"timeline-content\">\n <div class=\"timeline-header\">\n <h4>{{ item.title }}</h4>\n @if (item.startTime) {\n <span class=\"timeline-time\">{{ item.startTime | date:'h:mm:ss.SSS a' }}</span>\n } @else {\n <span class=\"timeline-time timeline-time--none\" title=\"This step has not started\">—</span>\n }\n </div>\n\n <div class=\"timeline-subtitle\">{{ item.subtitle }}</div>\n\n @if (getAdditionalInfo()) {\n <div class=\"timeline-additional-info\">\n {{ getAdditionalInfo() }}\n </div>\n }\n\n @if (SkillInvocations.length > 0) {\n <div class=\"timeline-skills\">\n @for (inv of SkillInvocations; track inv.SkillID) {\n <span class=\"skill-chip\" [attr.data-activation]=\"inv.ActivationType\" [title]=\"GetSkillChipTooltip(inv)\">\n <i class=\"fas fa-wand-magic-sparkles\"></i>\n {{ inv.SkillName }}\n <span class=\"skill-chip-mode\">{{ inv.ActivationType === 'requested' ? 'user' : 'auto' }}</span>\n </span>\n }\n </div>\n }\n\n <div class=\"timeline-meta\">\n @if (item.duration) {\n <span class=\"duration\">\n <i class=\"fas fa-clock\"></i> {{ item.duration }}\n </span>\n }\n <span class=\"status\" [attr.data-status]=\"item.status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(item.status)\"></i>\n {{ item.status }}\n </span>\n </div>\n </div>\n\n <!-- Timeline Actions -->\n <div class=\"timeline-actions\">\n @if (canNavigateToEntity) {\n <button class=\"btn-link\"\n (click)=\"navigateToRecord($event)\"\n [title]=\"entityNavigationText\">\n <i class=\"fas fa-external-link-alt\"></i>\n <span class=\"action-text\">{{ entityNavigationText }}</span>\n </button>\n }\n </div>\n</div>", styles: [".timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 12px;\n padding-left: 22px; /* Add extra padding to accommodate expand button */\n margin-bottom: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n position: relative;\n}\n\n.timeline-item:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-sunken);\n transform: translateX(2px);\n}\n\n.timeline-item.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: 0 0 0 1px var(--mj-brand-primary);\n}\n\n/* Expand/Collapse Button */\n.expand-toggle {\n position: absolute;\n left: -34px;\n top: 12px;\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n}\n\n.expand-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.expand-toggle i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Timeline Marker */\n.timeline-marker {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n position: relative;\n overflow: hidden;\n}\n\n.timeline-marker-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n\n.timeline-marker[data-color=\"info\"] {\n background: var(--mj-brand-primary);\n}\n\n.timeline-marker[data-color=\"success\"] {\n background: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n background: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n background: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n background: var(--mj-text-disabled);\n}\n\n/* Timeline Content */\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 4px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.timeline-time {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-family: monospace;\n white-space: nowrap;\n margin-left: 12px;\n}\n\n.timeline-subtitle {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.timeline-additional-info {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n font-style: italic;\n}\n\n.timeline-meta {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 500;\n}\n\n.status[data-status=\"Running\"] {\n color: var(--mj-brand-primary);\n}\n\n.status[data-status=\"Completed\"] {\n color: var(--mj-status-success);\n}\n\n.status[data-status=\"Failed\"] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Cancelled\"] {\n color: var(--mj-status-warning);\n}\n\n.status[data-status=\"Blocked\"] {\n color: var(--mj-status-error);\n}\n\n.status[data-status=\"Waiting\"] {\n color: var(--mj-status-warning);\n}\n\n.status[data-status=\"Skipped\"],\n.status[data-status=\"Pending\"] {\n color: var(--mj-text-secondary);\n}\n\n/* ============================================================\n Work that never ran\n ============================================================\n A timeline is a record of what happened, so a step that did not happen must not read like one that\n did. `Skipped` was rendered in the same weight and colour as everything else and distinguished\n only by the word itself \u2014 so a workflow that took one of two branches looked, at a glance, like a\n workflow where everything ran.\n\n Hatching says \"no-op\" before any text is read; the dimmed content says it is still a real record\n you can open. The row stays fully clickable \u2014 the detail panel is where the explanation lives. */\n.timeline-item[data-status=\"Skipped\"] {\n background-image: repeating-linear-gradient(\n 135deg,\n transparent,\n transparent 6px,\n color-mix(in srgb, var(--mj-text-disabled) 14%, transparent) 6px,\n color-mix(in srgb, var(--mj-text-disabled) 14%, transparent) 12px\n );\n}\n\n.timeline-item[data-status=\"Skipped\"] .timeline-content {\n opacity: 0.6;\n}\n\n.timeline-item[data-status=\"Skipped\"] .timeline-header h4 {\n text-decoration: line-through;\n text-decoration-color: var(--mj-text-disabled);\n text-decoration-thickness: 1px;\n}\n\n/* Never-started work keeps its colour but recedes: it may yet run, so it is not struck through. */\n.timeline-item[data-status=\"Pending\"] .timeline-content {\n opacity: 0.75;\n}\n\n/* Timeline Actions */\n.timeline-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 11px;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\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.btn-link i {\n font-size: 10px;\n}\n\n.action-text {\n display: none;\n}\n\n.timeline-item:hover .action-text {\n display: inline;\n}\n\n/* Type-specific styling */\n.timeline-item[data-type=\"subrun\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-type=\"action\"] {\n border-left: 3px solid var(--mj-status-success);\n}\n\n.timeline-item[data-type=\"prompt\"] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n/* Dispatcher provenance.\n A workflow step ran on the task-graph dispatcher and OUTLIVES the agent run that submitted it \u2014\n genuinely a different thing from a step the run executed itself. Someone reading a failure needs\n to know which they are looking at before they know where to go next.\n\n Keyed on PROVENANCE rather than on type, so a workflow's action still renders as an action \u2014\n same icon, same status treatment, same navigation as every other action row \u2014 and merely carries\n the rail that says where it ran. Keying this on type is what turned every workflow step into an\n undifferentiated box and threw away the displayer it should have had. */\n.timeline-item[data-type=\"taskgraph\"] {\n border-left: 3px solid var(--mj-status-info);\n background: color-mix(in srgb, var(--mj-status-info) 6%, var(--mj-bg-surface));\n}\n\n.timeline-item[data-provenance=\"workflow\"]:not([data-type=\"taskgraph\"]) {\n border-left: 3px solid color-mix(in srgb, var(--mj-status-info) 55%, transparent);\n}\n/* ============================================================\n Skill observability \u2014 badges on steps touched by skills\n ============================================================ */\n.timeline-skills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n}\n\n.skill-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n/* Agent self-activation gets a warning accent \u2014 it expanded its own tool surface */\n.skill-chip[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.skill-chip-mode {\n font-size: 9px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.75;\n padding-left: 4px;\n border-left: 1px solid color-mix(in srgb, currentColor 30%, transparent);\n}\n\n/* A step that has not started shows an em dash, not a time. Muted so the eye skips it \u2014 the\n absence of a timestamp is the information, and it should not read as a value. */\n.timeline-time--none {\n color: var(--mj-text-disabled);\n}\n"] }]
|
|
316
351
|
}], null, { item: [{
|
|
317
352
|
type: Input
|
|
318
353
|
}], isSelected: [{
|