@memberjunction/ng-core-entity-forms 6.2.0-edge.0 → 6.2.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/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-form-tabs.d.ts +1 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-form-tabs.js +2 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -1
- package/dist/lib/custom/AIAgents/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 +1322 -783
- 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 +694 -252
- 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/pending-records.d.ts +11 -0
- package/dist/lib/custom/AIPrompts/pending-records.d.ts.map +1 -0
- package/dist/lib/custom/AIPrompts/pending-records.js +21 -0
- package/dist/lib/custom/AIPrompts/pending-records.js.map +1 -0
- package/dist/lib/custom/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 +217 -29
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +734 -285
- 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-view-models.d.ts +31 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +52 -16
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +107 -10
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +291 -101
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- 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 +129 -4
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +904 -90
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts +37 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js +399 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts +69 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js +587 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts +67 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js +534 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts +25 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js +299 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts +31 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js +395 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js.map +1 -0
- package/dist/lib/custom/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 +153 -19
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +434 -217
- 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 +223 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +951 -530
- 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 +395 -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 +1719 -1007
- 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 +3 -3
- 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 +140 -15
- 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 +326 -100
- 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 +56 -48
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +60 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/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/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +61 -43
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +37 -19
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +78 -52
- 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/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +156 -84
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/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/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js +135 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js +155 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js +183 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js +120 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js +103 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js +171 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +209 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +436 -422
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +44 -2
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/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 +45 -19
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +95 -43
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +20 -16
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +73 -65
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts +116 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts.map +1 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js +820 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js.map +1 -0
- package/dist/lib/shared/components/template-editor.component.d.ts +158 -15
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +389 -127
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +5 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +47 -42
|
@@ -60,10 +60,10 @@ function makeStepNode(step, promptRuns) {
|
|
|
60
60
|
}
|
|
61
61
|
const icon = stepIcon(step, type);
|
|
62
62
|
return {
|
|
63
|
-
|
|
64
|
-
model,
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
Id: -1, Name: step.StepName || `Step ${step.StepNumber}`, Type: type, Status: step.Status,
|
|
64
|
+
Model: model, RealDur: durationSeconds(step.StartedAt, step.CompletedAt),
|
|
65
|
+
T0: 0, T1: 0, Tmid: 0, R0: 0, R1: 0, Depth: 0, Heat: 0,
|
|
66
|
+
Parent: null, Children: [], Raw: step, IconClass: icon.iconClass, LogoUrl: icon.logoUrl
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
@@ -78,12 +78,12 @@ async function attachStepTree(parent, steps, promptRuns, helper) {
|
|
|
78
78
|
const node = byId.get(s.ID);
|
|
79
79
|
if (s.ParentID && byId.has(s.ParentID)) {
|
|
80
80
|
const par = byId.get(s.ParentID);
|
|
81
|
-
node.
|
|
82
|
-
par.
|
|
81
|
+
node.Parent = par;
|
|
82
|
+
par.Children.push(node);
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
85
|
-
node.
|
|
86
|
-
parent.
|
|
85
|
+
node.Parent = parent;
|
|
86
|
+
parent.Children.push(node);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
// Recurse into sub-agent steps (their child steps need a separate load).
|
|
@@ -103,44 +103,44 @@ async function attachStepTree(parent, steps, promptRuns, helper) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
function calcDur(n) {
|
|
106
|
-
if (n.
|
|
107
|
-
n.
|
|
108
|
-
return n.
|
|
106
|
+
if (n.Children.length)
|
|
107
|
+
n.RealDur = n.Children.reduce((s, c) => s + calcDur(c), 0);
|
|
108
|
+
return n.RealDur;
|
|
109
109
|
}
|
|
110
110
|
function assignT(n, t0, t1) {
|
|
111
|
-
n.
|
|
112
|
-
n.
|
|
113
|
-
n.
|
|
114
|
-
if (n.
|
|
115
|
-
const tot = n.
|
|
111
|
+
n.T0 = t0;
|
|
112
|
+
n.T1 = t1;
|
|
113
|
+
n.Tmid = (t0 + t1) / 2;
|
|
114
|
+
if (n.Children.length) {
|
|
115
|
+
const tot = n.Children.reduce((s, c) => s + comp(c.RealDur), 0) || 1;
|
|
116
116
|
let cur = t0;
|
|
117
|
-
for (const c of n.
|
|
118
|
-
const w = (t1 - t0) * comp(c.
|
|
117
|
+
for (const c of n.Children) {
|
|
118
|
+
const w = (t1 - t0) * comp(c.RealDur) / tot;
|
|
119
119
|
assignT(c, cur, cur + w);
|
|
120
120
|
cur += w;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
function assignReal(n, r0) {
|
|
125
|
-
n.
|
|
126
|
-
if (n.
|
|
125
|
+
n.R0 = r0;
|
|
126
|
+
if (n.Children.length) {
|
|
127
127
|
let cur = r0;
|
|
128
|
-
for (const c of n.
|
|
128
|
+
for (const c of n.Children) {
|
|
129
129
|
assignReal(c, cur);
|
|
130
|
-
cur = c.
|
|
130
|
+
cur = c.R1;
|
|
131
131
|
}
|
|
132
|
-
n.
|
|
132
|
+
n.R1 = cur;
|
|
133
133
|
}
|
|
134
134
|
else {
|
|
135
|
-
n.
|
|
135
|
+
n.R1 = r0 + n.RealDur;
|
|
136
136
|
}
|
|
137
|
-
return n.
|
|
137
|
+
return n.R1;
|
|
138
138
|
}
|
|
139
139
|
function flatten(n, depth, out) {
|
|
140
|
-
n.
|
|
141
|
-
n.
|
|
140
|
+
n.Depth = depth;
|
|
141
|
+
n.Id = out.length;
|
|
142
142
|
out.push(n);
|
|
143
|
-
n.
|
|
143
|
+
n.Children.forEach(c => flatten(c, depth + 1, out));
|
|
144
144
|
}
|
|
145
145
|
function heatTier(d, maxLeaf) {
|
|
146
146
|
const r = d / (maxLeaf || 1);
|
|
@@ -151,18 +151,22 @@ function heatTier(d, maxLeaf) {
|
|
|
151
151
|
* sub-agent tree (via the helper's cached `loadSubAgentData`) so the zoomed-out
|
|
152
152
|
* view shows the entire run at once.
|
|
153
153
|
*/
|
|
154
|
-
export async function
|
|
154
|
+
export async function BuildFlowModel(rootName, rootStatus, rootIcon, helper) {
|
|
155
155
|
const { steps, promptRuns } = helper.getCurrentData();
|
|
156
156
|
const root = {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
Id: -1, Name: rootName || 'Agent run', Type: 'agent', Status: rootStatus,
|
|
158
|
+
Model: null, RealDur: 0, T0: 0, T1: 1, Tmid: 0.5, R0: 0, R1: 0, Depth: 0, Heat: 0,
|
|
159
|
+
Parent: null, Children: [], Raw: null,
|
|
160
|
+
IconClass: rootIcon.iconClass || 'fa-robot', LogoUrl: rootIcon.logoUrl
|
|
161
161
|
};
|
|
162
162
|
if (steps.length) {
|
|
163
163
|
await attachStepTree(root, steps, promptRuns, helper);
|
|
164
164
|
}
|
|
165
|
-
return
|
|
165
|
+
return FinalizeFlowModel(root);
|
|
166
|
+
}
|
|
167
|
+
/** @deprecated Use {@link BuildFlowModel}. */
|
|
168
|
+
export async function buildFlowModel(rootName, rootStatus, rootIcon, helper) {
|
|
169
|
+
return BuildFlowModel(rootName, rootStatus, rootIcon, helper);
|
|
166
170
|
}
|
|
167
171
|
/**
|
|
168
172
|
* Durations, playback window, wall-clock and heat — the normalization every FlowModel shares.
|
|
@@ -172,68 +176,92 @@ export async function buildFlowModel(rootName, rootStatus, rootIcon, helper) {
|
|
|
172
176
|
* into looking like different products — different bar widths, different heat thresholds — for the
|
|
173
177
|
* same run.
|
|
174
178
|
*/
|
|
175
|
-
export function
|
|
179
|
+
export function FinalizeFlowModel(root) {
|
|
176
180
|
calcDur(root);
|
|
177
181
|
assignT(root, 0, 1);
|
|
178
182
|
assignReal(root, 0);
|
|
179
183
|
const nodes = [];
|
|
180
184
|
flatten(root, 0, nodes);
|
|
181
|
-
nodes.forEach(n => { n.
|
|
182
|
-
const leaves = nodes.filter(n => n.
|
|
183
|
-
const maxLeafDur = Math.max(0.001, ...leaves.map(n => n.
|
|
184
|
-
nodes.forEach(n => { n.
|
|
185
|
+
nodes.forEach(n => { n.Tmid = (n.T0 + n.T1) / 2; });
|
|
186
|
+
const leaves = nodes.filter(n => n.Children.length === 0).sort((a, b) => a.T0 - b.T0);
|
|
187
|
+
const maxLeafDur = Math.max(0.001, ...leaves.map(n => n.RealDur));
|
|
188
|
+
nodes.forEach(n => { n.Heat = heatTier(n.RealDur, maxLeafDur); });
|
|
185
189
|
return {
|
|
186
|
-
root, nodes, leaves,
|
|
187
|
-
|
|
190
|
+
Root: root, Nodes: nodes, Leaves: leaves, Total: root.RealDur,
|
|
191
|
+
MaxDepth: Math.max(0, ...nodes.map(n => n.Depth)), MaxLeafDur: maxLeafDur
|
|
188
192
|
};
|
|
189
193
|
}
|
|
194
|
+
/** @deprecated Use {@link FinalizeFlowModel}. */
|
|
195
|
+
export function finalizeFlowModel(root) {
|
|
196
|
+
return FinalizeFlowModel(root);
|
|
197
|
+
}
|
|
190
198
|
/* ----------------------------- shared lookups ----------------------------- */
|
|
191
|
-
export function
|
|
192
|
-
const L = model.
|
|
199
|
+
export function ActiveLeaf(model, p) {
|
|
200
|
+
const L = model.Leaves;
|
|
193
201
|
if (!L.length)
|
|
194
|
-
return model.
|
|
202
|
+
return model.Root;
|
|
195
203
|
if (p <= 0)
|
|
196
204
|
return L[0];
|
|
197
205
|
if (p >= 1)
|
|
198
206
|
return L[L.length - 1];
|
|
199
|
-
return L.find(l => p >= l.
|
|
207
|
+
return L.find(l => p >= l.T0 && p < l.T1) ?? L[L.length - 1];
|
|
200
208
|
}
|
|
201
|
-
|
|
209
|
+
/** @deprecated Use {@link ActiveLeaf}. */
|
|
210
|
+
export function activeLeaf(model, p) {
|
|
211
|
+
return ActiveLeaf(model, p);
|
|
212
|
+
}
|
|
213
|
+
export function Ancestors(n) {
|
|
202
214
|
const out = [];
|
|
203
215
|
let c = n;
|
|
204
216
|
while (c) {
|
|
205
217
|
out.unshift(c);
|
|
206
|
-
c = c.
|
|
218
|
+
c = c.Parent;
|
|
207
219
|
}
|
|
208
220
|
return out;
|
|
209
221
|
}
|
|
210
|
-
|
|
211
|
-
|
|
222
|
+
/** @deprecated Use {@link Ancestors}. */
|
|
223
|
+
export function ancestors(n) {
|
|
224
|
+
return Ancestors(n);
|
|
225
|
+
}
|
|
226
|
+
export function AgentOf(n) {
|
|
227
|
+
let c = n.Parent;
|
|
212
228
|
while (c) {
|
|
213
|
-
if (c.
|
|
229
|
+
if (c.Type === 'agent' || c.Type === 'subagent')
|
|
214
230
|
return c;
|
|
215
|
-
c = c.
|
|
231
|
+
c = c.Parent;
|
|
216
232
|
}
|
|
217
233
|
return n;
|
|
218
234
|
}
|
|
235
|
+
/** @deprecated Use {@link AgentOf}. */
|
|
236
|
+
export function agentOf(n) {
|
|
237
|
+
return AgentOf(n);
|
|
238
|
+
}
|
|
219
239
|
/** "Execute Sub-Agent: Query Strategist" → "Query Strategist". */
|
|
240
|
+
export function AgentShortName(a) {
|
|
241
|
+
const i = a.Name.indexOf(': ');
|
|
242
|
+
return i >= 0 ? a.Name.slice(i + 2) : a.Name;
|
|
243
|
+
}
|
|
244
|
+
/** @deprecated Use {@link AgentShortName}. */
|
|
220
245
|
export function agentShortName(a) {
|
|
221
|
-
|
|
222
|
-
return i >= 0 ? a.name.slice(i + 2) : a.name;
|
|
246
|
+
return AgentShortName(a);
|
|
223
247
|
}
|
|
224
248
|
/**
|
|
225
249
|
* Label with the owning agent's prefix stripped — child step names tend to be
|
|
226
250
|
* "Query Strategist: Execute Agent Prompt"; on a view that already shows which
|
|
227
251
|
* agent/line a node belongs to, the prefix is pure noise that causes overlap.
|
|
228
252
|
*/
|
|
229
|
-
export function
|
|
230
|
-
const a =
|
|
253
|
+
export function DisplayName(n) {
|
|
254
|
+
const a = AgentOf(n);
|
|
231
255
|
if (a && a !== n) {
|
|
232
|
-
const short =
|
|
233
|
-
if (short && n.
|
|
234
|
-
return n.
|
|
256
|
+
const short = AgentShortName(a);
|
|
257
|
+
if (short && n.Name.startsWith(short + ':'))
|
|
258
|
+
return n.Name.slice(short.length + 1).trim();
|
|
235
259
|
}
|
|
236
|
-
return n.
|
|
260
|
+
return n.Name;
|
|
261
|
+
}
|
|
262
|
+
/** @deprecated Use {@link DisplayName}. */
|
|
263
|
+
export function displayName(n) {
|
|
264
|
+
return DisplayName(n);
|
|
237
265
|
}
|
|
238
266
|
/**
|
|
239
267
|
* Aggressively abbreviated label for tight surfaces (subway stations, flame bars,
|
|
@@ -243,10 +271,10 @@ export function displayName(n) {
|
|
|
243
271
|
* "Execute Action: Search Query Catalog"→ "Search Query Catalog"
|
|
244
272
|
* "Agent Validation" → "Validation"
|
|
245
273
|
*/
|
|
246
|
-
export function
|
|
247
|
-
if (n.
|
|
248
|
-
return `${
|
|
249
|
-
let s =
|
|
274
|
+
export function ShortLabel(n) {
|
|
275
|
+
if (n.Type === 'subagent')
|
|
276
|
+
return `${AgentShortName(n)} Sub-Agent`;
|
|
277
|
+
let s = DisplayName(n);
|
|
250
278
|
s = s.replace(/^Execute Action:\s*/i, '').replace(/^Execute Sub-Agent:\s*/i, '');
|
|
251
279
|
if (/^Execute Agent Prompt$/i.test(s))
|
|
252
280
|
s = 'Prompt';
|
|
@@ -256,7 +284,11 @@ export function shortLabel(n) {
|
|
|
256
284
|
s = 'Data Preload';
|
|
257
285
|
return s;
|
|
258
286
|
}
|
|
259
|
-
|
|
287
|
+
/** @deprecated Use {@link ShortLabel}. */
|
|
288
|
+
export function shortLabel(n) {
|
|
289
|
+
return ShortLabel(n);
|
|
290
|
+
}
|
|
291
|
+
export function FormatDuration(seconds) {
|
|
260
292
|
if (seconds < 1)
|
|
261
293
|
return `${Math.round(seconds * 1000)}ms`;
|
|
262
294
|
if (seconds < 60)
|
|
@@ -265,4 +297,8 @@ export function formatDuration(seconds) {
|
|
|
265
297
|
return `${Math.floor(seconds / 60)}m ${Math.round(seconds % 60)}s`;
|
|
266
298
|
return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m`;
|
|
267
299
|
}
|
|
300
|
+
/** @deprecated Use {@link FormatDuration}. */
|
|
301
|
+
export function formatDuration(seconds) {
|
|
302
|
+
return FormatDuration(seconds);
|
|
303
|
+
}
|
|
268
304
|
//# sourceMappingURL=agent-run-flow.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-flow.model.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/agent-run-flow.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIAgentRunStepEntity, MJAIPromptRunEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { AIAgentRunDataHelper } from '../ai-agent-run-data.service';\n\n/** Root-agent icon, resolved by the caller from the run's agent metadata. */\nexport interface RootIcon { iconClass: string; logoUrl: string | null; }\n\n/**\n * Shared, framework-agnostic flow model for the Agent Run \"Flow\" visualizations.\n *\n * One adapter (`buildFlowModel`) turns the raw step / sub-run / prompt-run data\n * from {@link AIAgentRunDataHelper} into a normalized {@link FlowNode} tree that\n * every renderer (Flame Cascade, Subway Lines, Constellation, …) consumes.\n *\n * Two clocks are baked into each node:\n * - **playback time** (`t0`/`t1`, range 0..1): compressed so every step gets\n * visible airtime regardless of real duration. This is what the scrubber drives.\n * - **real time** (`r0`/`r1`, seconds): the true cumulative wall-clock, used for\n * the digital clock readout and the narration rail.\n *\n * True duration is therefore never encoded as literal playback width — renderers\n * surface it through a *visual* channel (heat glow, node size, sweep speed).\n */\nexport type FlowNodeType =\n | 'agent' | 'subagent' | 'prompt' | 'action' | 'decision' | 'loop' | 'validation' | 'other';\n\nexport interface FlowNode {\n /** Stable index within the flattened model (renderer scratch keys off this). */\n id: number;\n name: string;\n type: FlowNodeType;\n status: string;\n model: string | null;\n /** Real duration in seconds (container nodes = sum of children). */\n realDur: number;\n /** Normalized playback window [0..1]. */\n t0: number;\n t1: number;\n tmid: number;\n /** Real cumulative wall-clock window in seconds. */\n r0: number;\n r1: number;\n depth: number;\n /** Relative heat tier 0..3 (3 = among the longest steps in this run). */\n heat: 0 | 1 | 2 | 3;\n parent: FlowNode | null;\n children: FlowNode[];\n /** Underlying step entity (null for the synthetic root, and for task-graph nodes). */\n raw: MJAIAgentRunStepEntity | null;\n /**\n * Which record this node came from, whatever entity that is.\n *\n * `raw` is typed to a run STEP, so a workflow's steps — which are `MJ: Tasks` rows — could never\n * be represented by it. This generic reference is what lets one model hold both, and what lets a\n * click open the right record either way.\n */\n source?: { entity: string; id: string } | null;\n /** Font Awesome class (e.g. 'fa-brain'); sub-agents resolve their agent's icon. */\n iconClass: string;\n /** Agent logo image URL when available (sub-agents / root), else null. */\n logoUrl: string | null;\n}\n\nexport interface FlowModel {\n root: FlowNode;\n nodes: FlowNode[];\n leaves: FlowNode[];\n total: number;\n maxDepth: number;\n maxLeafDur: number;\n}\n\n/** Categorical data-visualization palette (per CLAUDE.md, chart colors may be literal). */\nexport const FLOW_COLORS: Record<FlowNodeType, string> = {\n agent: '#11a8e6', subagent: '#f59e0b', prompt: '#3b82f6', action: '#22c55e',\n decision: '#ef4444', loop: '#a855f7', validation: '#14b8a6', other: '#94a3b8'\n};\n\nexport const FLOW_EMOJI: Record<FlowNodeType, string> = {\n agent: '🤖', subagent: '🤖', prompt: '💬', action: '⚙️',\n decision: '🔀', loop: '🔁', validation: '✓', other: '•'\n};\n\n/** Font Awesome icon per type — mirrors the Timeline's step icons. */\nexport const FLOW_ICON: Record<FlowNodeType, string> = {\n agent: 'fa-robot', subagent: 'fa-robot', prompt: 'fa-brain', action: 'fa-wrench',\n decision: 'fa-code-branch', loop: 'fa-repeat', validation: 'fa-square-check', other: 'fa-circle'\n};\n\nexport const FLOW_LABEL: Record<FlowNodeType, string> = {\n agent: 'Agent run', subagent: 'Sub-agent', prompt: 'Prompt', action: 'Action',\n decision: 'Decision', loop: 'Loop', validation: 'Validation', other: 'Step'\n};\n\nfunction flowType(stepType: string | null | undefined): FlowNodeType {\n switch (stepType) {\n case 'Prompt': return 'prompt';\n case 'Actions':\n case 'Tool': return 'action';\n case 'Sub-Agent': return 'subagent';\n case 'Decision': return 'decision';\n case 'ForEach':\n case 'While': return 'loop';\n case 'Validation': return 'validation';\n default: return 'other';\n }\n}\n\n/** Compression curve: longer steps still get more airtime, but sub-linearly. */\nfunction comp(d: number): number { return Math.pow(Math.max(d, 0.001), 0.55); }\n\nfunction durationSeconds(start: Date | null | undefined, end: Date | null | undefined): number {\n if (!start) return 0.1;\n const s = new Date(start).getTime();\n const e = end ? new Date(end).getTime() : Date.now();\n return Math.max(0.05, (e - s) / 1000);\n}\n\n/** Resolve a step's icon: sub-agents use their agent's logo/icon, else the type icon. */\nfunction stepIcon(step: MJAIAgentRunStepEntity, type: FlowNodeType): { iconClass: string; logoUrl: string | null } {\n if (step.StepType === 'Sub-Agent' && step.TargetID) {\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, step.TargetID!));\n if (agent?.LogoURL) return { iconClass: 'fa-robot', logoUrl: agent.LogoURL };\n if (agent?.IconClass) return { iconClass: agent.IconClass, logoUrl: null };\n }\n return { iconClass: FLOW_ICON[type], logoUrl: null };\n}\n\nfunction makeStepNode(step: MJAIAgentRunStepEntity, promptRuns: MJAIPromptRunEntity[]): FlowNode {\n const type = flowType(step.StepType);\n let model: string | null = null;\n if (type === 'prompt' && step.TargetLogID) {\n const pr = promptRuns.find(p => UUIDsEqual(p.ID, step.TargetLogID!));\n model = pr?.Model ?? null;\n }\n const icon = stepIcon(step, type);\n return {\n id: -1, name: step.StepName || `Step ${step.StepNumber}`, type, status: step.Status,\n model, realDur: durationSeconds(step.StartedAt, step.CompletedAt),\n t0: 0, t1: 0, tmid: 0, r0: 0, r1: 0, depth: 0, heat: 0,\n parent: null, children: [], raw: step, iconClass: icon.iconClass, logoUrl: icon.logoUrl\n };\n}\n\n/**\n * Recursively attach a level of steps to `parent`, nesting both loop bodies\n * (`ParentID`) and sub-agent runs (`Sub-Agent` step → its own run's steps).\n */\nasync function attachStepTree(\n parent: FlowNode,\n steps: MJAIAgentRunStepEntity[],\n promptRuns: MJAIPromptRunEntity[],\n helper: AIAgentRunDataHelper\n): Promise<void> {\n const byId = new Map<string, FlowNode>();\n steps.forEach(s => byId.set(s.ID, makeStepNode(s, promptRuns)));\n\n // Nest loop bodies via ParentID; everything else hangs off `parent`.\n for (const s of steps) {\n const node = byId.get(s.ID)!;\n if (s.ParentID && byId.has(s.ParentID)) {\n const par = byId.get(s.ParentID)!;\n node.parent = par; par.children.push(node);\n } else {\n node.parent = parent; parent.children.push(node);\n }\n }\n\n // Recurse into sub-agent steps (their child steps need a separate load).\n for (const s of steps) {\n if (s.StepType === 'Sub-Agent' && s.TargetLogID) {\n const node = byId.get(s.ID)!;\n try {\n const sub = await helper.loadSubAgentData(s.TargetLogID);\n if (sub.steps?.length) {\n await attachStepTree(node, sub.steps, sub.promptRuns, helper);\n }\n } catch {\n // Sub-agent load failed — leave it as a leaf with its own timing.\n }\n }\n }\n}\n\nfunction calcDur(n: FlowNode): number {\n if (n.children.length) n.realDur = n.children.reduce((s, c) => s + calcDur(c), 0);\n return n.realDur;\n}\n\nfunction assignT(n: FlowNode, t0: number, t1: number): void {\n n.t0 = t0; n.t1 = t1; n.tmid = (t0 + t1) / 2;\n if (n.children.length) {\n const tot = n.children.reduce((s, c) => s + comp(c.realDur), 0) || 1;\n let cur = t0;\n for (const c of n.children) {\n const w = (t1 - t0) * comp(c.realDur) / tot;\n assignT(c, cur, cur + w); cur += w;\n }\n }\n}\n\nfunction assignReal(n: FlowNode, r0: number): number {\n n.r0 = r0;\n if (n.children.length) {\n let cur = r0;\n for (const c of n.children) { assignReal(c, cur); cur = c.r1; }\n n.r1 = cur;\n } else {\n n.r1 = r0 + n.realDur;\n }\n return n.r1;\n}\n\nfunction flatten(n: FlowNode, depth: number, out: FlowNode[]): void {\n n.depth = depth; n.id = out.length; out.push(n);\n n.children.forEach(c => flatten(c, depth + 1, out));\n}\n\nfunction heatTier(d: number, maxLeaf: number): 0 | 1 | 2 | 3 {\n const r = d / (maxLeaf || 1);\n return r >= 0.66 ? 3 : r >= 0.33 ? 2 : r >= 0.12 ? 1 : 0;\n}\n\n/**\n * Build the full normalized flow model for an agent run. Eagerly walks the whole\n * sub-agent tree (via the helper's cached `loadSubAgentData`) so the zoomed-out\n * view shows the entire run at once.\n */\nexport async function buildFlowModel(\n rootName: string,\n rootStatus: string,\n rootIcon: RootIcon,\n helper: AIAgentRunDataHelper\n): Promise<FlowModel> {\n const { steps, promptRuns } = helper.getCurrentData();\n\n const root: FlowNode = {\n id: -1, name: rootName || 'Agent run', type: 'agent', status: rootStatus,\n model: null, realDur: 0, t0: 0, t1: 1, tmid: 0.5, r0: 0, r1: 0, depth: 0, heat: 0,\n parent: null, children: [], raw: null,\n iconClass: rootIcon.iconClass || 'fa-robot', logoUrl: rootIcon.logoUrl\n };\n\n if (steps.length) {\n await attachStepTree(root, steps, promptRuns, helper);\n }\n\n return finalizeFlowModel(root);\n}\n\n/**\n * Durations, playback window, wall-clock and heat — the normalization every FlowModel shares.\n *\n * Extracted so a model built from the run TREE goes through the identical pipeline as one built\n * from raw step rows. Re-deriving any of it in a second builder is how the two sources would drift\n * into looking like different products — different bar widths, different heat thresholds — for the\n * same run.\n */\nexport function finalizeFlowModel(root: FlowNode): FlowModel {\n calcDur(root);\n assignT(root, 0, 1);\n assignReal(root, 0);\n\n const nodes: FlowNode[] = [];\n flatten(root, 0, nodes);\n nodes.forEach(n => { n.tmid = (n.t0 + n.t1) / 2; });\n\n const leaves = nodes.filter(n => n.children.length === 0).sort((a, b) => a.t0 - b.t0);\n const maxLeafDur = Math.max(0.001, ...leaves.map(n => n.realDur));\n nodes.forEach(n => { n.heat = heatTier(n.realDur, maxLeafDur); });\n\n return {\n root, nodes, leaves, total: root.realDur,\n maxDepth: Math.max(0, ...nodes.map(n => n.depth)), maxLeafDur\n };\n}\n\n/* ----------------------------- shared lookups ----------------------------- */\n\nexport function activeLeaf(model: FlowModel, p: number): FlowNode {\n const L = model.leaves;\n if (!L.length) return model.root;\n if (p <= 0) return L[0];\n if (p >= 1) return L[L.length - 1];\n return L.find(l => p >= l.t0 && p < l.t1) ?? L[L.length - 1];\n}\n\nexport function ancestors(n: FlowNode): FlowNode[] {\n const out: FlowNode[] = []; let c: FlowNode | null = n;\n while (c) { out.unshift(c); c = c.parent; }\n return out;\n}\n\nexport function agentOf(n: FlowNode): FlowNode {\n let c = n.parent;\n while (c) { if (c.type === 'agent' || c.type === 'subagent') return c; c = c.parent; }\n return n;\n}\n\n/** \"Execute Sub-Agent: Query Strategist\" → \"Query Strategist\". */\nexport function agentShortName(a: FlowNode): string {\n const i = a.name.indexOf(': ');\n return i >= 0 ? a.name.slice(i + 2) : a.name;\n}\n\n/**\n * Label with the owning agent's prefix stripped — child step names tend to be\n * \"Query Strategist: Execute Agent Prompt\"; on a view that already shows which\n * agent/line a node belongs to, the prefix is pure noise that causes overlap.\n */\nexport function displayName(n: FlowNode): string {\n const a = agentOf(n);\n if (a && a !== n) {\n const short = agentShortName(a);\n if (short && n.name.startsWith(short + ':')) return n.name.slice(short.length + 1).trim();\n }\n return n.name;\n}\n\n/**\n * Aggressively abbreviated label for tight surfaces (subway stations, flame bars,\n * stars). Strips the agent prefix, then collapses the verbose MJ step phrasing:\n * \"Execute Sub-Agent: Query Strategist\" → \"Query Strategist Sub-Agent\"\n * \"Execute Agent Prompt\" → \"Prompt\"\n * \"Execute Action: Search Query Catalog\"→ \"Search Query Catalog\"\n * \"Agent Validation\" → \"Validation\"\n */\nexport function shortLabel(n: FlowNode): string {\n if (n.type === 'subagent') return `${agentShortName(n)} Sub-Agent`;\n let s = displayName(n);\n s = s.replace(/^Execute Action:\\s*/i, '').replace(/^Execute Sub-Agent:\\s*/i, '');\n if (/^Execute Agent Prompt$/i.test(s)) s = 'Prompt';\n else if (/^Agent Validation$/i.test(s)) s = 'Validation';\n else if (/^Data Source Preloading$/i.test(s)) s = 'Data Preload';\n return s;\n}\n\nexport function formatDuration(seconds: number): string {\n if (seconds < 1) return `${Math.round(seconds * 1000)}ms`;\n if (seconds < 60) return `${seconds < 10 ? seconds.toFixed(1) : Math.round(seconds)}s`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m ${Math.round(seconds % 60)}s`;\n return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-run-flow.model.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/agent-run-flow.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIAgentRunStepEntity, MJAIPromptRunEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { AIAgentRunDataHelper } from '../ai-agent-run-data.service';\n\n/** Root-agent icon, resolved by the caller from the run's agent metadata. */\nexport interface RootIcon { iconClass: string; logoUrl: string | null; } // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined\n\n/**\n * Shared, framework-agnostic flow model for the Agent Run \"Flow\" visualizations.\n *\n * One adapter (`buildFlowModel`) turns the raw step / sub-run / prompt-run data\n * from {@link AIAgentRunDataHelper} into a normalized {@link FlowNode} tree that\n * every renderer (Flame Cascade, Subway Lines, Constellation, …) consumes.\n *\n * Two clocks are baked into each node:\n * - **playback time** (`t0`/`t1`, range 0..1): compressed so every step gets\n * visible airtime regardless of real duration. This is what the scrubber drives.\n * - **real time** (`r0`/`r1`, seconds): the true cumulative wall-clock, used for\n * the digital clock readout and the narration rail.\n *\n * True duration is therefore never encoded as literal playback width — renderers\n * surface it through a *visual* channel (heat glow, node size, sweep speed).\n */\nexport type FlowNodeType =\n | 'agent' | 'subagent' | 'prompt' | 'action' | 'decision' | 'loop' | 'validation' | 'other';\n\nexport interface FlowNode {\n /** Stable index within the flattened model (renderer scratch keys off this). */\n Id: number;\n Name: string;\n Type: FlowNodeType;\n Status: string;\n Model: string | null;\n /** Real duration in seconds (container nodes = sum of children). */\n RealDur: number;\n /** Normalized playback window [0..1]. */\n T0: number;\n T1: number;\n Tmid: number;\n /** Real cumulative wall-clock window in seconds. */\n R0: number;\n R1: number;\n Depth: number;\n /** Relative heat tier 0..3 (3 = among the longest steps in this run). */\n Heat: 0 | 1 | 2 | 3;\n Parent: FlowNode | null;\n Children: FlowNode[];\n /** Underlying step entity (null for the synthetic root, and for task-graph nodes). */\n Raw: MJAIAgentRunStepEntity | null;\n /**\n * Which record this node came from, whatever entity that is.\n *\n * `raw` is typed to a run STEP, so a workflow's steps — which are `MJ: Tasks` rows — could never\n * be represented by it. This generic reference is what lets one model hold both, and what lets a\n * click open the right record either way.\n */\n Source?: { entity: string; id: string } | null;\n /** Font Awesome class (e.g. 'fa-brain'); sub-agents resolve their agent's icon. */\n IconClass: string;\n /** Agent logo image URL when available (sub-agents / root), else null. */\n LogoUrl: string | null;\n}\n\nexport interface FlowModel {\n Root: FlowNode;\n Nodes: FlowNode[];\n Leaves: FlowNode[];\n Total: number;\n MaxDepth: number;\n MaxLeafDur: number;\n}\n\n/** Categorical data-visualization palette (per CLAUDE.md, chart colors may be literal). */\nexport const FLOW_COLORS: Record<FlowNodeType, string> = {\n agent: '#11a8e6', subagent: '#f59e0b', prompt: '#3b82f6', action: '#22c55e',\n decision: '#ef4444', loop: '#a855f7', validation: '#14b8a6', other: '#94a3b8'\n};\n\nexport const FLOW_EMOJI: Record<FlowNodeType, string> = {\n agent: '🤖', subagent: '🤖', prompt: '💬', action: '⚙️',\n decision: '🔀', loop: '🔁', validation: '✓', other: '•'\n};\n\n/** Font Awesome icon per type — mirrors the Timeline's step icons. */\nexport const FLOW_ICON: Record<FlowNodeType, string> = {\n agent: 'fa-robot', subagent: 'fa-robot', prompt: 'fa-brain', action: 'fa-wrench',\n decision: 'fa-code-branch', loop: 'fa-repeat', validation: 'fa-square-check', other: 'fa-circle'\n};\n\nexport const FLOW_LABEL: Record<FlowNodeType, string> = {\n agent: 'Agent run', subagent: 'Sub-agent', prompt: 'Prompt', action: 'Action',\n decision: 'Decision', loop: 'Loop', validation: 'Validation', other: 'Step'\n};\n\nfunction flowType(stepType: string | null | undefined): FlowNodeType {\n switch (stepType) {\n case 'Prompt': return 'prompt';\n case 'Actions':\n case 'Tool': return 'action';\n case 'Sub-Agent': return 'subagent';\n case 'Decision': return 'decision';\n case 'ForEach':\n case 'While': return 'loop';\n case 'Validation': return 'validation';\n default: return 'other';\n }\n}\n\n/** Compression curve: longer steps still get more airtime, but sub-linearly. */\nfunction comp(d: number): number { return Math.pow(Math.max(d, 0.001), 0.55); }\n\nfunction durationSeconds(start: Date | null | undefined, end: Date | null | undefined): number {\n if (!start) return 0.1;\n const s = new Date(start).getTime();\n const e = end ? new Date(end).getTime() : Date.now();\n return Math.max(0.05, (e - s) / 1000);\n}\n\n/** Resolve a step's icon: sub-agents use their agent's logo/icon, else the type icon. */\nfunction stepIcon(step: MJAIAgentRunStepEntity, type: FlowNodeType): { iconClass: string; logoUrl: string | null } {\n if (step.StepType === 'Sub-Agent' && step.TargetID) {\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, step.TargetID!));\n if (agent?.LogoURL) return { iconClass: 'fa-robot', logoUrl: agent.LogoURL };\n if (agent?.IconClass) return { iconClass: agent.IconClass, logoUrl: null };\n }\n return { iconClass: FLOW_ICON[type], logoUrl: null };\n}\n\nfunction makeStepNode(step: MJAIAgentRunStepEntity, promptRuns: MJAIPromptRunEntity[]): FlowNode {\n const type = flowType(step.StepType);\n let model: string | null = null;\n if (type === 'prompt' && step.TargetLogID) {\n const pr = promptRuns.find(p => UUIDsEqual(p.ID, step.TargetLogID!));\n model = pr?.Model ?? null;\n }\n const icon = stepIcon(step, type);\n return {\n Id: -1, Name: step.StepName || `Step ${step.StepNumber}`, Type: type, Status: step.Status,\n Model: model, RealDur: durationSeconds(step.StartedAt, step.CompletedAt),\n T0: 0, T1: 0, Tmid: 0, R0: 0, R1: 0, Depth: 0, Heat: 0,\n Parent: null, Children: [], Raw: step, IconClass: icon.iconClass, LogoUrl: icon.logoUrl\n };\n}\n\n/**\n * Recursively attach a level of steps to `parent`, nesting both loop bodies\n * (`ParentID`) and sub-agent runs (`Sub-Agent` step → its own run's steps).\n */\nasync function attachStepTree(\n parent: FlowNode,\n steps: MJAIAgentRunStepEntity[],\n promptRuns: MJAIPromptRunEntity[],\n helper: AIAgentRunDataHelper\n): Promise<void> {\n const byId = new Map<string, FlowNode>();\n steps.forEach(s => byId.set(s.ID, makeStepNode(s, promptRuns)));\n\n // Nest loop bodies via ParentID; everything else hangs off `parent`.\n for (const s of steps) {\n const node = byId.get(s.ID)!;\n if (s.ParentID && byId.has(s.ParentID)) {\n const par = byId.get(s.ParentID)!;\n node.Parent = par; par.Children.push(node);\n } else {\n node.Parent = parent; parent.Children.push(node);\n }\n }\n\n // Recurse into sub-agent steps (their child steps need a separate load).\n for (const s of steps) {\n if (s.StepType === 'Sub-Agent' && s.TargetLogID) {\n const node = byId.get(s.ID)!;\n try {\n const sub = await helper.loadSubAgentData(s.TargetLogID);\n if (sub.steps?.length) {\n await attachStepTree(node, sub.steps, sub.promptRuns, helper);\n }\n } catch {\n // Sub-agent load failed — leave it as a leaf with its own timing.\n }\n }\n }\n}\n\nfunction calcDur(n: FlowNode): number {\n if (n.Children.length) n.RealDur = n.Children.reduce((s, c) => s + calcDur(c), 0);\n return n.RealDur;\n}\n\nfunction assignT(n: FlowNode, t0: number, t1: number): void {\n n.T0 = t0; n.T1 = t1; n.Tmid = (t0 + t1) / 2;\n if (n.Children.length) {\n const tot = n.Children.reduce((s, c) => s + comp(c.RealDur), 0) || 1;\n let cur = t0;\n for (const c of n.Children) {\n const w = (t1 - t0) * comp(c.RealDur) / tot;\n assignT(c, cur, cur + w); cur += w;\n }\n }\n}\n\nfunction assignReal(n: FlowNode, r0: number): number {\n n.R0 = r0;\n if (n.Children.length) {\n let cur = r0;\n for (const c of n.Children) { assignReal(c, cur); cur = c.R1; }\n n.R1 = cur;\n } else {\n n.R1 = r0 + n.RealDur;\n }\n return n.R1;\n}\n\nfunction flatten(n: FlowNode, depth: number, out: FlowNode[]): void {\n n.Depth = depth; n.Id = out.length; out.push(n);\n n.Children.forEach(c => flatten(c, depth + 1, out));\n}\n\nfunction heatTier(d: number, maxLeaf: number): 0 | 1 | 2 | 3 {\n const r = d / (maxLeaf || 1);\n return r >= 0.66 ? 3 : r >= 0.33 ? 2 : r >= 0.12 ? 1 : 0;\n}\n\n/**\n * Build the full normalized flow model for an agent run. Eagerly walks the whole\n * sub-agent tree (via the helper's cached `loadSubAgentData`) so the zoomed-out\n * view shows the entire run at once.\n */\nexport async function BuildFlowModel(\n rootName: string,\n rootStatus: string,\n rootIcon: RootIcon,\n helper: AIAgentRunDataHelper\n): Promise<FlowModel> {\n const { steps, promptRuns } = helper.getCurrentData();\n\n const root: FlowNode = {\n Id: -1, Name: rootName || 'Agent run', Type: 'agent', Status: rootStatus,\n Model: null, RealDur: 0, T0: 0, T1: 1, Tmid: 0.5, R0: 0, R1: 0, Depth: 0, Heat: 0,\n Parent: null, Children: [], Raw: null,\n IconClass: rootIcon.iconClass || 'fa-robot', LogoUrl: rootIcon.logoUrl\n };\n\n if (steps.length) {\n await attachStepTree(root, steps, promptRuns, helper);\n }\n\n return FinalizeFlowModel(root);\n}\n\n/** @deprecated Use {@link BuildFlowModel}. */\nexport async function buildFlowModel(\n rootName: string,\n rootStatus: string,\n rootIcon: RootIcon,\n helper: AIAgentRunDataHelper\n): Promise<FlowModel> {\n return BuildFlowModel(rootName, rootStatus, rootIcon, helper);\n}\n\n/**\n * Durations, playback window, wall-clock and heat — the normalization every FlowModel shares.\n *\n * Extracted so a model built from the run TREE goes through the identical pipeline as one built\n * from raw step rows. Re-deriving any of it in a second builder is how the two sources would drift\n * into looking like different products — different bar widths, different heat thresholds — for the\n * same run.\n */\nexport function FinalizeFlowModel(root: FlowNode): FlowModel {\n calcDur(root);\n assignT(root, 0, 1);\n assignReal(root, 0);\n\n const nodes: FlowNode[] = [];\n flatten(root, 0, nodes);\n nodes.forEach(n => { n.Tmid = (n.T0 + n.T1) / 2; });\n\n const leaves = nodes.filter(n => n.Children.length === 0).sort((a, b) => a.T0 - b.T0);\n const maxLeafDur = Math.max(0.001, ...leaves.map(n => n.RealDur));\n nodes.forEach(n => { n.Heat = heatTier(n.RealDur, maxLeafDur); });\n\n return {\n Root: root, Nodes: nodes, Leaves: leaves, Total: root.RealDur,\n MaxDepth: Math.max(0, ...nodes.map(n => n.Depth)), MaxLeafDur: maxLeafDur\n };\n}\n\n/** @deprecated Use {@link FinalizeFlowModel}. */\nexport function finalizeFlowModel(root: FlowNode): FlowModel {\n return FinalizeFlowModel(root);\n}\n\n/* ----------------------------- shared lookups ----------------------------- */\n\nexport function ActiveLeaf(model: FlowModel, p: number): FlowNode {\n const L = model.Leaves;\n if (!L.length) return model.Root;\n if (p <= 0) return L[0];\n if (p >= 1) return L[L.length - 1];\n return L.find(l => p >= l.T0 && p < l.T1) ?? L[L.length - 1];\n}\n\n/** @deprecated Use {@link ActiveLeaf}. */\nexport function activeLeaf(model: FlowModel, p: number): FlowNode {\n return ActiveLeaf(model, p);\n}\n\nexport function Ancestors(n: FlowNode): FlowNode[] {\n const out: FlowNode[] = []; let c: FlowNode | null = n;\n while (c) { out.unshift(c); c = c.Parent; }\n return out;\n}\n\n/** @deprecated Use {@link Ancestors}. */\nexport function ancestors(n: FlowNode): FlowNode[] {\n return Ancestors(n);\n}\n\nexport function AgentOf(n: FlowNode): FlowNode {\n let c = n.Parent;\n while (c) { if (c.Type === 'agent' || c.Type === 'subagent') return c; c = c.Parent; }\n return n;\n}\n\n/** @deprecated Use {@link AgentOf}. */\nexport function agentOf(n: FlowNode): FlowNode {\n return AgentOf(n);\n}\n\n/** \"Execute Sub-Agent: Query Strategist\" → \"Query Strategist\". */\nexport function AgentShortName(a: FlowNode): string {\n const i = a.Name.indexOf(': ');\n return i >= 0 ? a.Name.slice(i + 2) : a.Name;\n}\n\n/** @deprecated Use {@link AgentShortName}. */\nexport function agentShortName(a: FlowNode): string {\n return AgentShortName(a);\n}\n\n/**\n * Label with the owning agent's prefix stripped — child step names tend to be\n * \"Query Strategist: Execute Agent Prompt\"; on a view that already shows which\n * agent/line a node belongs to, the prefix is pure noise that causes overlap.\n */\nexport function DisplayName(n: FlowNode): string {\n const a = AgentOf(n);\n if (a && a !== n) {\n const short = AgentShortName(a);\n if (short && n.Name.startsWith(short + ':')) return n.Name.slice(short.length + 1).trim();\n }\n return n.Name;\n}\n\n/** @deprecated Use {@link DisplayName}. */\nexport function displayName(n: FlowNode): string {\n return DisplayName(n);\n}\n\n/**\n * Aggressively abbreviated label for tight surfaces (subway stations, flame bars,\n * stars). Strips the agent prefix, then collapses the verbose MJ step phrasing:\n * \"Execute Sub-Agent: Query Strategist\" → \"Query Strategist Sub-Agent\"\n * \"Execute Agent Prompt\" → \"Prompt\"\n * \"Execute Action: Search Query Catalog\"→ \"Search Query Catalog\"\n * \"Agent Validation\" → \"Validation\"\n */\nexport function ShortLabel(n: FlowNode): string {\n if (n.Type === 'subagent') return `${AgentShortName(n)} Sub-Agent`;\n let s = DisplayName(n);\n s = s.replace(/^Execute Action:\\s*/i, '').replace(/^Execute Sub-Agent:\\s*/i, '');\n if (/^Execute Agent Prompt$/i.test(s)) s = 'Prompt';\n else if (/^Agent Validation$/i.test(s)) s = 'Validation';\n else if (/^Data Source Preloading$/i.test(s)) s = 'Data Preload';\n return s;\n}\n\n/** @deprecated Use {@link ShortLabel}. */\nexport function shortLabel(n: FlowNode): string {\n return ShortLabel(n);\n}\n\nexport function FormatDuration(seconds: number): string {\n if (seconds < 1) return `${Math.round(seconds * 1000)}ms`;\n if (seconds < 60) return `${seconds < 10 ? seconds.toFixed(1) : Math.round(seconds)}s`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m ${Math.round(seconds % 60)}s`;\n return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m`;\n}\n\n/** @deprecated Use {@link FormatDuration}. */\nexport function formatDuration(seconds: number): string {\n return FormatDuration(seconds);\n}\n"]}
|
|
@@ -8,7 +8,19 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
* Labels stay clutter-free (root + top level + active by default, hover to reveal).
|
|
9
9
|
*/
|
|
10
10
|
export declare class ConstellationComponent {
|
|
11
|
-
|
|
11
|
+
SvgRef: ElementRef<SVGSVGElement>;
|
|
12
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
13
|
+
get svgRef(): ElementRef<SVGSVGElement>;
|
|
14
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
15
|
+
set svgRef(value: ElementRef<SVGSVGElement>);
|
|
16
|
+
NodeSelected: EventEmitter<FlowNode>;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Use {@link NodeSelected}.
|
|
19
|
+
*
|
|
20
|
+
* The same emitter under the old binding name, so a template still binding
|
|
21
|
+
* (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields
|
|
22
|
+
* initialise in order, and the other way round this captures undefined.
|
|
23
|
+
*/
|
|
12
24
|
nodeSelected: EventEmitter<FlowNode>;
|
|
13
25
|
private _model;
|
|
14
26
|
private built;
|
|
@@ -33,6 +45,6 @@ export declare class ConstellationComponent {
|
|
|
33
45
|
private build;
|
|
34
46
|
private update;
|
|
35
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConstellationComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConstellationComponent, "mj-agent-flow-constellation", never, { "Model": { "alias": "Model"; "required": false; }; }, { "nodeSelected": "nodeSelected"; }, never, never, false, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConstellationComponent, "mj-agent-flow-constellation", never, { "Model": { "alias": "Model"; "required": false; }; }, { "NodeSelected": "NodeSelected"; "nodeSelected": "nodeSelected"; }, never, never, false, never>;
|
|
37
49
|
}
|
|
38
50
|
//# sourceMappingURL=constellation.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constellation.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/constellation.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAiB,YAAY,EAAoE,MAAM,eAAe,CAAC;AACrJ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAA2B,MAAM,wBAAwB,CAAC;;AAQtF;;;;;GAKG;AACH,qBAQa,sBAAsB;IACG,MAAM,EAAG,UAAU,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"constellation.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/constellation.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAiB,YAAY,EAAoE,MAAM,eAAe,CAAC;AACrJ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAA2B,MAAM,wBAAwB,CAAC;;AAQtF;;;;;GAKG;AACH,qBAQa,sBAAsB;IACG,MAAM,EAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEvE,sCAAsC;IACtC,IAAI,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,CAEtC;IACD,sCAAsC;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAE1C;IACS,YAAY,yBAAgC;IAEtD;;;;;;OAMG;IACO,YAAY,yBAAqB;IAE3C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,EAAE,CAAC,CAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAO;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAO;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAO;IAEnB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACpC,MAAM,IAAI,IAAI;IACd,OAAO,IAAI,IAAI;IACf,QAAQ,IAAI,IAAI;IAChB,WAAW,IAAI,IAAI;IAC1B,WAAW,IAAI,IAAI;IAEnB,IAAa,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,EAAwD;IAEvF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAM1C,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,KAAK;IA0Eb,OAAO,CAAC,MAAM;yCAnIH,sBAAsB;2CAAtB,sBAAsB;CA0KlC"}
|