@memberjunction/ng-core-entity-forms 6.1.4 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +387 -107
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +494 -138
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +664 -208
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.d.ts +27 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js +193 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +75 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js +244 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +173 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +883 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +429 -109
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +133 -7
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +1268 -19
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +333 -113
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +549 -169
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.js +5 -1
- package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +2 -2
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
- 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 +446 -138
- 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-cost.service.d.ts +6 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
- 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 +216 -70
- 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 +62 -3
- 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 +140 -42
- 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 +81 -10
- 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 +165 -37
- 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 +121 -14
- 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 +287 -79
- 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 +101 -15
- 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 +281 -97
- 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 +43 -25
- 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 +100 -64
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +32 -30
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +21 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
- package/dist/lib/custom/shared/entity-selector-dialog.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 +62 -26
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.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 +33 -15
- package/dist/lib/generated/Entities/MJCredential/mjcredential.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 +100 -82
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -20
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +122 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +125 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +23 -5
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
- 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 +11 -15
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +43 -7
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +240 -237
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +11 -2
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +122 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +236 -11
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +72 -13
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +577 -78
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +322 -124
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +43 -41
|
@@ -541,14 +541,70 @@ function AIAgentRunStepDetailComponent_ng_template_1_Template(rf, ctx) { if (rf
|
|
|
541
541
|
i0.ɵɵconditional(!snapshot_r14.notes && (!snapshot_r14.tasks || snapshot_r14.tasks.length === 0) ? 3 : -1);
|
|
542
542
|
} }
|
|
543
543
|
export class AIAgentRunStepDetailComponent {
|
|
544
|
+
/** @deprecated Use {@link SelectedTimelineItem}. */
|
|
545
|
+
set selectedTimelineItem(value) {
|
|
546
|
+
this.SelectedTimelineItem = value;
|
|
547
|
+
}
|
|
548
|
+
/** @deprecated Use {@link SelectedTimelineItem}. */
|
|
549
|
+
get selectedTimelineItem() {
|
|
550
|
+
return this.SelectedTimelineItem;
|
|
551
|
+
}
|
|
552
|
+
/** @deprecated Use {@link SelectedItemJsonString}. */
|
|
553
|
+
get selectedItemJsonString() {
|
|
554
|
+
return this.SelectedItemJsonString;
|
|
555
|
+
}
|
|
556
|
+
/** @deprecated Use {@link SelectedItemJsonString}. */
|
|
557
|
+
set selectedItemJsonString(value) {
|
|
558
|
+
this.SelectedItemJsonString = value;
|
|
559
|
+
}
|
|
560
|
+
/** @deprecated Use {@link DetailPaneTab}. */
|
|
561
|
+
get detailPaneTab() {
|
|
562
|
+
return this.DetailPaneTab;
|
|
563
|
+
}
|
|
564
|
+
/** @deprecated Use {@link DetailPaneTab}. */
|
|
565
|
+
set detailPaneTab(value) {
|
|
566
|
+
this.DetailPaneTab = value;
|
|
567
|
+
}
|
|
568
|
+
/** @deprecated Use {@link ScratchpadSubTab}. */
|
|
569
|
+
get scratchpadSubTab() {
|
|
570
|
+
return this.ScratchpadSubTab;
|
|
571
|
+
}
|
|
572
|
+
/** @deprecated Use {@link ScratchpadSubTab}. */
|
|
573
|
+
set scratchpadSubTab(value) {
|
|
574
|
+
this.ScratchpadSubTab = value;
|
|
575
|
+
}
|
|
544
576
|
constructor(cdr) {
|
|
545
577
|
this.cdr = cdr;
|
|
546
|
-
this.
|
|
578
|
+
this.SelectedTimelineItem = null;
|
|
547
579
|
/** The provider the host is on, so the run view reads through the right one. */
|
|
548
580
|
this.Provider = null;
|
|
549
|
-
this.
|
|
550
|
-
|
|
551
|
-
|
|
581
|
+
this.ClosePanel = new EventEmitter();
|
|
582
|
+
/**
|
|
583
|
+
* @deprecated Use {@link ClosePanel}.
|
|
584
|
+
*
|
|
585
|
+
* The same emitter under the old binding name, so a template still binding
|
|
586
|
+
* (closePanel) keeps working. Must stay AFTER ClosePanel: class fields
|
|
587
|
+
* initialise in order, and the other way round this captures undefined.
|
|
588
|
+
*/
|
|
589
|
+
this.closePanel = this.ClosePanel;
|
|
590
|
+
this.NavigateToActionLog = new EventEmitter();
|
|
591
|
+
/**
|
|
592
|
+
* @deprecated Use {@link NavigateToActionLog}.
|
|
593
|
+
*
|
|
594
|
+
* The same emitter under the old binding name, so a template still binding
|
|
595
|
+
* (navigateToActionLog) keeps working. Must stay AFTER NavigateToActionLog: class fields
|
|
596
|
+
* initialise in order, and the other way round this captures undefined.
|
|
597
|
+
*/
|
|
598
|
+
this.navigateToActionLog = this.NavigateToActionLog;
|
|
599
|
+
this.CopyToClipboard = new EventEmitter();
|
|
600
|
+
/**
|
|
601
|
+
* @deprecated Use {@link CopyToClipboard}.
|
|
602
|
+
*
|
|
603
|
+
* The same emitter under the old binding name, so a template still binding
|
|
604
|
+
* (copyToClipboard) keeps working. Must stay AFTER CopyToClipboard: class fields
|
|
605
|
+
* initialise in order, and the other way round this captures undefined.
|
|
606
|
+
*/
|
|
607
|
+
this.copyToClipboard = this.CopyToClipboard;
|
|
552
608
|
/**
|
|
553
609
|
* The user asked to promote this run's graph into a reusable workflow (D17).
|
|
554
610
|
*
|
|
@@ -556,37 +612,45 @@ export class AIAgentRunStepDetailComponent {
|
|
|
556
612
|
* conversion and the `AgentSpecSync` write, which keeps the one place that writes an agent the
|
|
557
613
|
* one place that writes an agent.
|
|
558
614
|
*/
|
|
559
|
-
this.
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
615
|
+
this.SaveAsWorkflowRequested = new EventEmitter();
|
|
616
|
+
/**
|
|
617
|
+
* @deprecated Use {@link SaveAsWorkflowRequested}.
|
|
618
|
+
*
|
|
619
|
+
* The same emitter under the old binding name, so a template still binding
|
|
620
|
+
* (saveAsWorkflowRequested) keeps working. Must stay AFTER SaveAsWorkflowRequested: class fields
|
|
621
|
+
* initialise in order, and the other way round this captures undefined.
|
|
622
|
+
*/
|
|
623
|
+
this.saveAsWorkflowRequested = this.SaveAsWorkflowRequested;
|
|
624
|
+
this.SelectedItemJsonString = '{}';
|
|
625
|
+
this.DetailPaneTab = 'diff';
|
|
626
|
+
this.ScratchpadSubTab = 'diff';
|
|
563
627
|
}
|
|
564
628
|
ngOnChanges() {
|
|
565
|
-
if (this.
|
|
566
|
-
this.
|
|
629
|
+
if (this.SelectedTimelineItem) {
|
|
630
|
+
this.SelectedItemJsonString = this.GetSelectedItemJson();
|
|
567
631
|
// Default to diff tab if step has payload diff, skills for Skill steps (the activation IS
|
|
568
632
|
// the story there), scratchpad if available, otherwise json
|
|
569
|
-
if (this.
|
|
570
|
-
this.
|
|
633
|
+
if (this.ShowStepPayloadDiff) {
|
|
634
|
+
this.DetailPaneTab = 'diff';
|
|
571
635
|
}
|
|
572
|
-
else if (this.
|
|
636
|
+
else if (this.ShowGraphTab) {
|
|
573
637
|
// A TaskGraph step's whole content IS the graph; opening on the JSON would bury the one
|
|
574
638
|
// thing the step exists to show.
|
|
575
|
-
this.
|
|
639
|
+
this.DetailPaneTab = 'graph';
|
|
576
640
|
}
|
|
577
|
-
else if (this.
|
|
578
|
-
this.
|
|
641
|
+
else if (this.ShowSkillsTab && this.SelectedTimelineItem.data?.StepType === 'Skill') {
|
|
642
|
+
this.DetailPaneTab = 'skills';
|
|
579
643
|
}
|
|
580
|
-
else if (this.
|
|
581
|
-
this.
|
|
644
|
+
else if (this.ShowScratchpadTab) {
|
|
645
|
+
this.DetailPaneTab = 'scratchpad';
|
|
582
646
|
}
|
|
583
|
-
else if (this.
|
|
584
|
-
this.
|
|
647
|
+
else if (this.ShowSkillsTab) {
|
|
648
|
+
this.DetailPaneTab = 'skills';
|
|
585
649
|
}
|
|
586
650
|
else {
|
|
587
|
-
this.
|
|
651
|
+
this.DetailPaneTab = 'json';
|
|
588
652
|
}
|
|
589
|
-
this.
|
|
653
|
+
this.ScratchpadSubTab = 'diff';
|
|
590
654
|
this.cdr.detectChanges();
|
|
591
655
|
}
|
|
592
656
|
}
|
|
@@ -606,7 +670,7 @@ export class AIAgentRunStepDetailComponent {
|
|
|
606
670
|
* half-broken.
|
|
607
671
|
*/
|
|
608
672
|
get StepNotice() {
|
|
609
|
-
const item = this.
|
|
673
|
+
const item = this.SelectedTimelineItem;
|
|
610
674
|
if (!item?.data?.IsWorkflowStep)
|
|
611
675
|
return null;
|
|
612
676
|
switch (item.status) {
|
|
@@ -634,17 +698,17 @@ export class AIAgentRunStepDetailComponent {
|
|
|
634
698
|
return null;
|
|
635
699
|
}
|
|
636
700
|
}
|
|
637
|
-
|
|
638
|
-
if (!this.
|
|
701
|
+
GetSelectedItemJson() {
|
|
702
|
+
if (!this.SelectedTimelineItem)
|
|
639
703
|
return '{}';
|
|
640
704
|
// Get all the data from the entity
|
|
641
705
|
let data;
|
|
642
|
-
if (this.
|
|
706
|
+
if (this.SelectedTimelineItem.data instanceof MJAIAgentRunStepEntity) {
|
|
643
707
|
// If it's a step entity, we need to get the full run data
|
|
644
|
-
data = this.
|
|
708
|
+
data = this.SelectedTimelineItem.data.GetAll();
|
|
645
709
|
}
|
|
646
710
|
else {
|
|
647
|
-
data = this.
|
|
711
|
+
data = this.SelectedTimelineItem.data;
|
|
648
712
|
}
|
|
649
713
|
// Apply recursive JSON parsing to the entire data object
|
|
650
714
|
const parseOptions = {
|
|
@@ -655,14 +719,18 @@ export class AIAgentRunStepDetailComponent {
|
|
|
655
719
|
const parsedData = ParseJSONRecursive(data, parseOptions);
|
|
656
720
|
return JSON.stringify(parsedData, null, 2);
|
|
657
721
|
}
|
|
722
|
+
/** @deprecated Use {@link GetSelectedItemJson}. */
|
|
723
|
+
getSelectedItemJson() {
|
|
724
|
+
return this.GetSelectedItemJson();
|
|
725
|
+
}
|
|
658
726
|
/**
|
|
659
727
|
* Check if selected timeline item is a step with payload changes
|
|
660
728
|
*/
|
|
661
|
-
get
|
|
662
|
-
if (!this.
|
|
729
|
+
get ShowStepPayloadDiff() {
|
|
730
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
663
731
|
return false;
|
|
664
732
|
}
|
|
665
|
-
const stepData = this.
|
|
733
|
+
const stepData = this.SelectedTimelineItem.data;
|
|
666
734
|
if (stepData && (stepData.PayloadAtStart?.trim().length > 0
|
|
667
735
|
|| stepData.PayloadAtEnd?.trim().length > 0)) {
|
|
668
736
|
return stepData.PayloadAtStart !== stepData.PayloadAtEnd;
|
|
@@ -671,14 +739,18 @@ export class AIAgentRunStepDetailComponent {
|
|
|
671
739
|
return false;
|
|
672
740
|
}
|
|
673
741
|
}
|
|
742
|
+
/** @deprecated Use {@link ShowStepPayloadDiff}. */
|
|
743
|
+
get showStepPayloadDiff() {
|
|
744
|
+
return this.ShowStepPayloadDiff;
|
|
745
|
+
}
|
|
674
746
|
/**
|
|
675
747
|
* Get parsed PayloadAtStart for the selected step
|
|
676
748
|
*/
|
|
677
|
-
get
|
|
678
|
-
if (!this.
|
|
749
|
+
get StepPayloadAtStartObject() {
|
|
750
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
679
751
|
return null;
|
|
680
752
|
}
|
|
681
|
-
const stepData = this.
|
|
753
|
+
const stepData = this.SelectedTimelineItem.data;
|
|
682
754
|
if (!stepData?.PayloadAtStart)
|
|
683
755
|
return null;
|
|
684
756
|
try {
|
|
@@ -703,14 +775,18 @@ export class AIAgentRunStepDetailComponent {
|
|
|
703
775
|
return null;
|
|
704
776
|
}
|
|
705
777
|
}
|
|
778
|
+
/** @deprecated Use {@link StepPayloadAtStartObject}. */
|
|
779
|
+
get stepPayloadAtStartObject() {
|
|
780
|
+
return this.StepPayloadAtStartObject;
|
|
781
|
+
}
|
|
706
782
|
/**
|
|
707
783
|
* Get parsed PayloadAtEnd for the selected step
|
|
708
784
|
*/
|
|
709
|
-
get
|
|
710
|
-
if (!this.
|
|
785
|
+
get StepPayloadAtEndObject() {
|
|
786
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
711
787
|
return null;
|
|
712
788
|
}
|
|
713
|
-
const stepData = this.
|
|
789
|
+
const stepData = this.SelectedTimelineItem.data;
|
|
714
790
|
if (!stepData?.PayloadAtEnd)
|
|
715
791
|
return null;
|
|
716
792
|
try {
|
|
@@ -735,32 +811,52 @@ export class AIAgentRunStepDetailComponent {
|
|
|
735
811
|
return null;
|
|
736
812
|
}
|
|
737
813
|
}
|
|
814
|
+
/** @deprecated Use {@link StepPayloadAtEndObject}. */
|
|
815
|
+
get stepPayloadAtEndObject() {
|
|
816
|
+
return this.StepPayloadAtEndObject;
|
|
817
|
+
}
|
|
818
|
+
OnClosePanel() {
|
|
819
|
+
this.ClosePanel.emit();
|
|
820
|
+
}
|
|
821
|
+
/** @deprecated Use {@link OnClosePanel}. */
|
|
738
822
|
onClosePanel() {
|
|
739
|
-
this.
|
|
823
|
+
return this.OnClosePanel();
|
|
740
824
|
}
|
|
825
|
+
OnNavigateToActionLog(logId) {
|
|
826
|
+
this.NavigateToActionLog.emit(logId);
|
|
827
|
+
}
|
|
828
|
+
/** @deprecated Use {@link OnNavigateToActionLog}. */
|
|
741
829
|
onNavigateToActionLog(logId) {
|
|
742
|
-
this.
|
|
830
|
+
return this.OnNavigateToActionLog(logId);
|
|
831
|
+
}
|
|
832
|
+
OnCopyToClipboard() {
|
|
833
|
+
this.CopyToClipboard.emit(this.GetSelectedItemJson());
|
|
743
834
|
}
|
|
835
|
+
/** @deprecated Use {@link OnCopyToClipboard}. */
|
|
744
836
|
onCopyToClipboard() {
|
|
745
|
-
this.
|
|
837
|
+
return this.OnCopyToClipboard();
|
|
746
838
|
}
|
|
747
839
|
/**
|
|
748
840
|
* Whether the Skills tab should be shown — true when the step has skill-invocation records
|
|
749
841
|
* on its `Skills` column (Skill steps, Prompt steps with skills in effect, and Actions/
|
|
750
842
|
* Sub-Agent steps whose tool was granted through a skill).
|
|
751
843
|
*/
|
|
844
|
+
get ShowSkillsTab() {
|
|
845
|
+
return this.StepSkillInvocations.length > 0;
|
|
846
|
+
}
|
|
847
|
+
/** @deprecated Use {@link ShowSkillsTab}. */
|
|
752
848
|
get showSkillsTab() {
|
|
753
|
-
return this.
|
|
849
|
+
return this.ShowSkillsTab;
|
|
754
850
|
}
|
|
755
851
|
/**
|
|
756
852
|
* Parsed {@link MJAIAgentRunStepEntity_AgentSkillInvocation} records from the step's `Skills`
|
|
757
853
|
* JSON column. Empty array when the step has no skill linkage or the JSON is malformed.
|
|
758
854
|
*/
|
|
759
|
-
get
|
|
760
|
-
if (!this.
|
|
855
|
+
get StepSkillInvocations() {
|
|
856
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
761
857
|
return [];
|
|
762
858
|
}
|
|
763
|
-
const raw = this.
|
|
859
|
+
const raw = this.SelectedTimelineItem.data?.Skills;
|
|
764
860
|
if (!raw)
|
|
765
861
|
return [];
|
|
766
862
|
try {
|
|
@@ -771,6 +867,10 @@ export class AIAgentRunStepDetailComponent {
|
|
|
771
867
|
return [];
|
|
772
868
|
}
|
|
773
869
|
}
|
|
870
|
+
/** @deprecated Use {@link StepSkillInvocations}. */
|
|
871
|
+
get stepSkillInvocations() {
|
|
872
|
+
return this.StepSkillInvocations;
|
|
873
|
+
}
|
|
774
874
|
/** Human-readable label for an invocation's activation type. */
|
|
775
875
|
GetActivationTypeLabel(inv) {
|
|
776
876
|
return inv.ActivationType === 'requested' ? 'User Requested' : 'Agent Self-Activated';
|
|
@@ -782,8 +882,12 @@ export class AIAgentRunStepDetailComponent {
|
|
|
782
882
|
* single-node graph is just as promotable as a dispatched one. That was the point of recording
|
|
783
883
|
* the fold rather than letting it vanish.
|
|
784
884
|
*/
|
|
885
|
+
get ShowGraphTab() {
|
|
886
|
+
return this.StepTaskGraph !== null;
|
|
887
|
+
}
|
|
888
|
+
/** @deprecated Use {@link ShowGraphTab}. */
|
|
785
889
|
get showGraphTab() {
|
|
786
|
-
return this.
|
|
890
|
+
return this.ShowGraphTab;
|
|
787
891
|
}
|
|
788
892
|
/**
|
|
789
893
|
* The `TaskGraphSpec` recorded on a `TaskGraph` step, or null.
|
|
@@ -791,12 +895,12 @@ export class AIAgentRunStepDetailComponent {
|
|
|
791
895
|
* Read from InputData, falling back to OutputData: the step records the spec on the way in, and
|
|
792
896
|
* a malformed or absent payload simply means no tab rather than a broken panel.
|
|
793
897
|
*/
|
|
794
|
-
get
|
|
795
|
-
if (!this.
|
|
898
|
+
get StepTaskGraph() {
|
|
899
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step')
|
|
796
900
|
return null;
|
|
797
|
-
if (this.
|
|
901
|
+
if (this.SelectedTimelineItem.data?.StepType !== 'TaskGraph')
|
|
798
902
|
return null;
|
|
799
|
-
for (const raw of [this.
|
|
903
|
+
for (const raw of [this.SelectedTimelineItem.data?.InputData, this.SelectedTimelineItem.data?.OutputData]) {
|
|
800
904
|
if (!raw)
|
|
801
905
|
continue;
|
|
802
906
|
try {
|
|
@@ -812,6 +916,10 @@ export class AIAgentRunStepDetailComponent {
|
|
|
812
916
|
}
|
|
813
917
|
return null;
|
|
814
918
|
}
|
|
919
|
+
/** @deprecated Use {@link StepTaskGraph}. */
|
|
920
|
+
get stepTaskGraph() {
|
|
921
|
+
return this.StepTaskGraph;
|
|
922
|
+
}
|
|
815
923
|
/**
|
|
816
924
|
* Where the recorded graph's nodes go on the canvas.
|
|
817
925
|
*
|
|
@@ -821,12 +929,16 @@ export class AIAgentRunStepDetailComponent {
|
|
|
821
929
|
* enormous box at 265%. The positions exist the whole time: a workflow compiled from a Flow agent
|
|
822
930
|
* carries the arrangement its author dragged into place, on every node.
|
|
823
931
|
*/
|
|
824
|
-
get
|
|
825
|
-
const spec = this.
|
|
932
|
+
get StepTaskGraphPositions() {
|
|
933
|
+
const spec = this.StepTaskGraph;
|
|
826
934
|
if (!spec)
|
|
827
935
|
return null;
|
|
828
936
|
return ResolveTaskGraphPositions(spec);
|
|
829
937
|
}
|
|
938
|
+
/** @deprecated Use {@link StepTaskGraphPositions}. */
|
|
939
|
+
get stepTaskGraphPositions() {
|
|
940
|
+
return this.StepTaskGraphPositions;
|
|
941
|
+
}
|
|
830
942
|
/**
|
|
831
943
|
* The graph's parent `MJ: Tasks` row, when this step actually dispatched one.
|
|
832
944
|
*
|
|
@@ -840,8 +952,8 @@ export class AIAgentRunStepDetailComponent {
|
|
|
840
952
|
* rows and no run to show. The spec view is the honest rendering there: it is a plan, and it is
|
|
841
953
|
* drawn as one.
|
|
842
954
|
*/
|
|
843
|
-
get
|
|
844
|
-
const raw = this.
|
|
955
|
+
get StepTaskGraphParentTaskID() {
|
|
956
|
+
const raw = this.SelectedTimelineItem?.data?.OutputData;
|
|
845
957
|
if (!raw)
|
|
846
958
|
return null;
|
|
847
959
|
try {
|
|
@@ -853,11 +965,15 @@ export class AIAgentRunStepDetailComponent {
|
|
|
853
965
|
return null;
|
|
854
966
|
}
|
|
855
967
|
}
|
|
968
|
+
/** @deprecated Use {@link StepTaskGraphParentTaskID}. */
|
|
969
|
+
get stepTaskGraphParentTaskID() {
|
|
970
|
+
return this.StepTaskGraphParentTaskID;
|
|
971
|
+
}
|
|
856
972
|
/** True when the recorded graph was constant-folded rather than dispatched (D9). */
|
|
857
|
-
get
|
|
858
|
-
if (!this.
|
|
973
|
+
get StepTaskGraphWasFolded() {
|
|
974
|
+
if (!this.SelectedTimelineItem)
|
|
859
975
|
return false;
|
|
860
|
-
const raw = this.
|
|
976
|
+
const raw = this.SelectedTimelineItem.data?.InputData;
|
|
861
977
|
if (!raw)
|
|
862
978
|
return false;
|
|
863
979
|
try {
|
|
@@ -868,39 +984,55 @@ export class AIAgentRunStepDetailComponent {
|
|
|
868
984
|
return false;
|
|
869
985
|
}
|
|
870
986
|
}
|
|
987
|
+
/** @deprecated Use {@link StepTaskGraphWasFolded}. */
|
|
988
|
+
get stepTaskGraphWasFolded() {
|
|
989
|
+
return this.StepTaskGraphWasFolded;
|
|
990
|
+
}
|
|
871
991
|
/** Asks the host to save this run's graph as a reusable workflow. */
|
|
872
992
|
RequestSaveAsWorkflow() {
|
|
873
|
-
const spec = this.
|
|
993
|
+
const spec = this.StepTaskGraph;
|
|
874
994
|
if (spec)
|
|
875
|
-
this.
|
|
995
|
+
this.SaveAsWorkflowRequested.emit(spec);
|
|
876
996
|
}
|
|
877
997
|
/**
|
|
878
998
|
* Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)
|
|
879
999
|
*/
|
|
880
|
-
get
|
|
881
|
-
if (!this.
|
|
1000
|
+
get ShowScratchpadTab() {
|
|
1001
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
882
1002
|
return false;
|
|
883
1003
|
}
|
|
884
|
-
return this.
|
|
1004
|
+
return this.StepScratchpadInput !== null || this.StepScratchpadOutput !== null;
|
|
1005
|
+
}
|
|
1006
|
+
/** @deprecated Use {@link ShowScratchpadTab}. */
|
|
1007
|
+
get showScratchpadTab() {
|
|
1008
|
+
return this.ShowScratchpadTab;
|
|
885
1009
|
}
|
|
886
1010
|
/**
|
|
887
1011
|
* Parse scratchpad snapshot from InputData JSON
|
|
888
1012
|
*/
|
|
889
|
-
get
|
|
1013
|
+
get StepScratchpadInput() {
|
|
890
1014
|
return this.extractScratchpadFromField('InputData');
|
|
891
1015
|
}
|
|
1016
|
+
/** @deprecated Use {@link StepScratchpadInput}. */
|
|
1017
|
+
get stepScratchpadInput() {
|
|
1018
|
+
return this.StepScratchpadInput;
|
|
1019
|
+
}
|
|
892
1020
|
/**
|
|
893
1021
|
* Parse scratchpad snapshot from OutputData JSON
|
|
894
1022
|
*/
|
|
895
|
-
get
|
|
1023
|
+
get StepScratchpadOutput() {
|
|
896
1024
|
return this.extractScratchpadFromField('OutputData');
|
|
897
1025
|
}
|
|
1026
|
+
/** @deprecated Use {@link StepScratchpadOutput}. */
|
|
1027
|
+
get stepScratchpadOutput() {
|
|
1028
|
+
return this.StepScratchpadOutput;
|
|
1029
|
+
}
|
|
898
1030
|
/**
|
|
899
1031
|
* Number of tasks that changed between input and output scratchpad snapshots
|
|
900
1032
|
*/
|
|
901
|
-
get
|
|
902
|
-
const input = this.
|
|
903
|
-
const output = this.
|
|
1033
|
+
get ScratchpadTaskChangeCount() {
|
|
1034
|
+
const input = this.StepScratchpadInput;
|
|
1035
|
+
const output = this.StepScratchpadOutput;
|
|
904
1036
|
if (!input && !output)
|
|
905
1037
|
return 0;
|
|
906
1038
|
if (!input || !output)
|
|
@@ -922,11 +1054,15 @@ export class AIAgentRunStepDetailComponent {
|
|
|
922
1054
|
changes++;
|
|
923
1055
|
return changes;
|
|
924
1056
|
}
|
|
1057
|
+
/** @deprecated Use {@link ScratchpadTaskChangeCount}. */
|
|
1058
|
+
get scratchpadTaskChangeCount() {
|
|
1059
|
+
return this.ScratchpadTaskChangeCount;
|
|
1060
|
+
}
|
|
925
1061
|
extractScratchpadFromField(fieldName) {
|
|
926
|
-
if (!this.
|
|
1062
|
+
if (!this.SelectedTimelineItem || this.SelectedTimelineItem.type !== 'step') {
|
|
927
1063
|
return null;
|
|
928
1064
|
}
|
|
929
|
-
const stepData = this.
|
|
1065
|
+
const stepData = this.SelectedTimelineItem.data;
|
|
930
1066
|
const rawValue = stepData?.[fieldName];
|
|
931
1067
|
if (!rawValue)
|
|
932
1068
|
return null;
|
|
@@ -948,7 +1084,7 @@ export class AIAgentRunStepDetailComponent {
|
|
|
948
1084
|
}
|
|
949
1085
|
}
|
|
950
1086
|
static { this.ɵfac = function AIAgentRunStepDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AIAgentRunStepDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
951
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem", Provider: "Provider" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard", saveAsWorkflowRequested: "saveAsWorkflowRequested" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "step-notice"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "detail-graph"], [1, "skills-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], ["Size", "sm", 3, "Variant", "Message"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-diagram-project"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "tab-badge"], [1, "fa-solid", "fa-clipboard-list"], [1, "detail-graph__actions"], ["Variant", "info", "Size", "sm", "Message", "This ran inline as a single step \u2014 a workflow of one needs no scheduling. You can still save it."], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-floppy-disk"], ["Height", "100%", 1, "detail-graph__canvas", 3, "Provider", "ParentTaskID", "WorkflowName"], [1, "detail-graph__canvas", 3, "Spec", "NodePositions", "ReadOnly", "ShowPalette", "ShowLegend"], [1, "skill-invocation-card"], [1, "skill-invocation-header"], [1, "skill-invocation-name"], [1, "skill-invocation-type"], [1, "skill-invocation-reason"], [1, "skill-invocation-provenance"], [1, "provenance-title"], [1, "provenance-row"], [1, "provenance-label"], [1, "provenance-value"], [1, "provenance-value", "provenance-id"], [1, "fa-solid", "fa-quote-left"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad changes in this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-plus", "Title", "Scratchpad created in this step (no prior state)"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad input for this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad output for this step"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "Empty scratchpad"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1087
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { SelectedTimelineItem: "SelectedTimelineItem", selectedTimelineItem: "selectedTimelineItem", Provider: "Provider" }, outputs: { ClosePanel: "ClosePanel", closePanel: "closePanel", NavigateToActionLog: "NavigateToActionLog", navigateToActionLog: "navigateToActionLog", CopyToClipboard: "CopyToClipboard", copyToClipboard: "copyToClipboard", SaveAsWorkflowRequested: "SaveAsWorkflowRequested", saveAsWorkflowRequested: "saveAsWorkflowRequested" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "step-notice"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "detail-graph"], [1, "skills-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], ["Size", "sm", 3, "Variant", "Message"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-diagram-project"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "tab-badge"], [1, "fa-solid", "fa-clipboard-list"], [1, "detail-graph__actions"], ["Variant", "info", "Size", "sm", "Message", "This ran inline as a single step \u2014 a workflow of one needs no scheduling. You can still save it."], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-floppy-disk"], ["Height", "100%", 1, "detail-graph__canvas", 3, "Provider", "ParentTaskID", "WorkflowName"], [1, "detail-graph__canvas", 3, "Spec", "NodePositions", "ReadOnly", "ShowPalette", "ShowLegend"], [1, "skill-invocation-card"], [1, "skill-invocation-header"], [1, "skill-invocation-name"], [1, "skill-invocation-type"], [1, "skill-invocation-reason"], [1, "skill-invocation-provenance"], [1, "provenance-title"], [1, "provenance-row"], [1, "provenance-label"], [1, "provenance-value"], [1, "provenance-value", "provenance-id"], [1, "fa-solid", "fa-quote-left"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad changes in this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-plus", "Title", "Scratchpad created in this step (no prior state)"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad input for this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad output for this step"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "Empty scratchpad"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
952
1088
|
i0.ɵɵconditionalCreate(0, AIAgentRunStepDetailComponent_Conditional_0_Template, 33, 16, "div", 1);
|
|
953
1089
|
i0.ɵɵtemplate(1, AIAgentRunStepDetailComponent_ng_template_1_Template, 4, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
954
1090
|
} if (rf & 2) {
|
|
@@ -958,16 +1094,26 @@ export class AIAgentRunStepDetailComponent {
|
|
|
958
1094
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunStepDetailComponent, [{
|
|
959
1095
|
type: Component,
|
|
960
1096
|
args: [{ standalone: false, selector: 'mj-ai-agent-run-step-detail', template: "@if (selectedTimelineItem) {\n <div class=\"json-detail-pane\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n <!-- Why a workflow step has nothing to show: it never ran. Above the tabs, because it explains\n the emptiness the reader is about to look at. -->\n @if (StepNotice) {\n <div class=\"step-notice\">\n <mj-alert [Variant]=\"StepNotice.Variant\" Size=\"sm\" [Message]=\"StepNotice.Message\"></mj-alert>\n </div>\n }\n <!-- Action-specific link -->\n @if (selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID) {\n <div class=\"action-link\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n }\n <!-- Tab Navigation - Show when we have payload diff or scratchpad data -->\n @if (showStepPayloadDiff || showScratchpadTab || showSkillsTab || showGraphTab) {\n <div class=\"detail-pane-tabs\">\n @if (showGraphTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'graph'\"\n (click)=\"detailPaneTab = 'graph'\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n Workflow\n </button>\n }\n @if (showStepPayloadDiff) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n }\n @if (showSkillsTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'skills'\"\n (click)=\"detailPaneTab = 'skills'\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n Skills\n <span class=\"tab-badge\">{{ stepSkillInvocations.length }}</span>\n </button>\n }\n @if (showScratchpadTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'scratchpad'\"\n (click)=\"detailPaneTab = 'scratchpad'\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n Scratchpad\n @if (scratchpadTaskChangeCount > 0) {\n <span class=\"tab-badge\">{{ scratchpadTaskChangeCount }}</span>\n }\n </button>\n }\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff || showScratchpadTab || showSkillsTab || showGraphTab\">\n <!-- Skills Tab \u2014 skill-invocation observability (activation type, provenance of authority, reason) -->\n @if (detailPaneTab === 'graph' && showGraphTab) {\n <div class=\"detail-graph\">\n <div class=\"detail-graph__actions\">\n @if (stepTaskGraphWasFolded) {\n <!-- The fold is recorded rather than silent (D9), so the reader can see WHY this\n graph never reached the dispatcher instead of inferring it. -->\n <mj-alert Variant=\"info\" Size=\"sm\"\n Message=\"This ran inline as a single step \u2014 a workflow of one needs no scheduling. You can still save it.\">\n </mj-alert>\n }\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"RequestSaveAsWorkflow()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save as Workflow\n </button>\n </div>\n @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 \u2014 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 \u2014 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>", styles: [".json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; /* Allow flexbox to properly size */\n}\n\n/* \n.detail-pane-content.with-tabs {\n // No explicit height needed with flexbox \n} \n*/\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important for flexbox children to respect overflow */\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; /* Allow proper scrolling */\n}\n\n/* Specific styling for mj-code-editor container */\n.json-viewer mj-code-editor {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n/* Tab badge for change count */\n.tab-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n/* Scratchpad content area */\n.scratchpad-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Scratchpad sub-tabs */\n.scratchpad-sub-tabs {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Scratchpad diff and snapshot views */\n.scratchpad-diff-view,\n.scratchpad-snapshot-view {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n/* Scratchpad snapshot rendering */\n.scratchpad-snapshot {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section h4,\n.scratchpad-tasks-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Task list */\n.scratchpad-task-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Task status indicator icon */\n.task-status-indicator {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"] {\n color: var(--mj-text-muted);\n}\n\n/* Task content */\n.task-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n/* Task status badge */\n.task-status-badge {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-status-badge[data-status=\"completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.task-status-badge[data-status=\"in_progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n/* ============================================================\n Skills tab \u2014 skill-invocation observability cards\n ============================================================ */\n.skills-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name i {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason i {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* Workflow tab \u2014 the recorded task graph, read-only, with the Save as Workflow action. */\n.detail-graph {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.detail-graph__actions {\n display: flex;\n align-items: center;\n gap: var(--mj-space-sm, 0.5rem);\n padding: var(--mj-space-sm, 0.5rem);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n/* min-height:0 is what lets the canvas actually shrink inside the flex column. */\n.detail-graph__canvas {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n/* Explanation for a step that never executed \u2014 see StepNotice. Sits above the tabs because it\n accounts for the emptiness the reader is about to look at. */\n.step-notice {\n padding: 0 var(--mj-space-3, 12px) var(--mj-space-2, 8px);\n}\n\n/* The run view fills the tab rather than taking its intrinsic size \u2014 a canvas that stops halfway\n down its pane with dead space beneath reads as a broken layout. */\n.detail-graph {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n}\n\n.detail-graph__canvas {\n flex: 1 1 auto;\n min-height: 0;\n}\n"] }]
|
|
961
|
-
}], () => [{ type: i0.ChangeDetectorRef }], {
|
|
1097
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { SelectedTimelineItem: [{
|
|
1098
|
+
type: Input
|
|
1099
|
+
}], selectedTimelineItem: [{
|
|
962
1100
|
type: Input
|
|
963
1101
|
}], Provider: [{
|
|
964
1102
|
type: Input
|
|
1103
|
+
}], ClosePanel: [{
|
|
1104
|
+
type: Output
|
|
965
1105
|
}], closePanel: [{
|
|
966
1106
|
type: Output
|
|
1107
|
+
}], NavigateToActionLog: [{
|
|
1108
|
+
type: Output
|
|
967
1109
|
}], navigateToActionLog: [{
|
|
968
1110
|
type: Output
|
|
1111
|
+
}], CopyToClipboard: [{
|
|
1112
|
+
type: Output
|
|
969
1113
|
}], copyToClipboard: [{
|
|
970
1114
|
type: Output
|
|
1115
|
+
}], SaveAsWorkflowRequested: [{
|
|
1116
|
+
type: Output
|
|
971
1117
|
}], saveAsWorkflowRequested: [{
|
|
972
1118
|
type: Output
|
|
973
1119
|
}] }); })();
|