@memberjunction/ng-dashboards 3.4.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -339
- package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +103 -44
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +149 -211
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
- package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js +6 -7
- package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +33 -37
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +3 -6
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +34 -27
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +34 -32
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +26 -27
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js +52 -42
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
- package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +193 -189
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
- package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.d.ts +0 -2
- package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +113 -114
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +294 -302
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +151 -155
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +237 -234
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +15 -14
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +3 -6
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +17 -19
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +6 -6
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +0 -4
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +3 -9
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +0 -4
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +3 -9
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +13 -16
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +3 -3
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
- package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -10
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -4
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +3 -9
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +0 -4
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +3 -9
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/Actions/index.d.ts +0 -7
- package/dist/Actions/index.d.ts.map +1 -1
- package/dist/Actions/index.js +0 -8
- package/dist/Actions/index.js.map +1 -1
- package/dist/Communication/communication-dashboard.component.d.ts +0 -1
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +38 -51
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +112 -108
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +210 -201
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +136 -124
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +91 -88
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -122
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +31 -44
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.js +2 -1
- package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -4
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +83 -64
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/index.d.ts +2 -2
- package/dist/DataExplorer/index.d.ts.map +1 -1
- package/dist/DataExplorer/index.js +2 -2
- package/dist/DataExplorer/index.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-application.d.ts +109 -27
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +351 -75
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +48 -12
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +267 -187
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +761 -685
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +340 -316
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +508 -455
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +0 -1
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +0 -11
- package/dist/Lists/index.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
- package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/index.d.ts +5 -5
- package/dist/MCP/index.d.ts.map +1 -1
- package/dist/MCP/index.js +5 -5
- package/dist/MCP/index.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +976 -697
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
- package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
- package/dist/MCP/mcp-filter-panel.component.js +288 -0
- package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
- package/dist/MCP/mcp-resource.component.d.ts +11 -5
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
- package/dist/MCP/mcp-resource.component.js +8 -9
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +16 -19
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +17 -26
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
- package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
- package/dist/MCP/services/mcp-tools.service.js +5 -6
- package/dist/MCP/services/mcp-tools.service.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.js +117 -116
- package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +30 -30
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +42 -35
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +3 -3
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +16 -16
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +3 -3
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +15 -15
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +0 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -8
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.js +521 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/index.d.ts +5 -0
- package/dist/VersionHistory/components/index.d.ts.map +1 -0
- package/dist/VersionHistory/components/index.js +5 -0
- package/dist/VersionHistory/components/index.js.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.js +968 -0
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.js +472 -0
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
- package/dist/VersionHistory/index.d.ts +2 -0
- package/dist/VersionHistory/index.d.ts.map +1 -0
- package/dist/VersionHistory/index.js +2 -0
- package/dist/VersionHistory/index.js.map +1 -0
- package/dist/module.d.ts +42 -36
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +41 -7
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +20 -19
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +22 -120
- package/dist/public-api.js.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.js +2 -1
- package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
- package/package.json +64 -62
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
-
import { RunView,
|
|
2
|
+
import { RunView, LogError, LogStatus } from '@memberjunction/core';
|
|
3
3
|
import * as d3 from 'd3';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@
|
|
6
|
-
import * as i2 from "@memberjunction/ng-shared
|
|
5
|
+
import * as i1 from "@memberjunction/ng-agents";
|
|
6
|
+
import * as i2 from "@memberjunction/ng-shared";
|
|
7
|
+
import * as i3 from "@angular/forms";
|
|
8
|
+
import * as i4 from "@memberjunction/ng-shared-generic";
|
|
7
9
|
const _c0 = ["hierarchyChart"];
|
|
8
10
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
9
11
|
function AgentEditorComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
10
12
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
11
|
-
i0.ɵɵelementStart(0, "button",
|
|
13
|
+
i0.ɵɵelementStart(0, "button", 13);
|
|
12
14
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openCurrentAgentRecord()); });
|
|
13
|
-
i0.ɵɵelement(1, "i",
|
|
15
|
+
i0.ɵɵelement(1, "i", 14);
|
|
14
16
|
i0.ɵɵtext(2, " Open Record ");
|
|
15
17
|
i0.ɵɵelementEnd();
|
|
16
18
|
} }
|
|
17
19
|
function AgentEditorComponent_Conditional_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
i0.ɵɵelementStart(0, "span",
|
|
19
|
-
i0.ɵɵelement(1, "i",
|
|
20
|
+
i0.ɵɵelementStart(0, "span", 15);
|
|
21
|
+
i0.ɵɵelement(1, "i", 16);
|
|
20
22
|
i0.ɵɵtext(2);
|
|
21
23
|
i0.ɵɵelementEnd();
|
|
22
24
|
} if (rf & 2) {
|
|
@@ -28,7 +30,7 @@ function AgentEditorComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
28
30
|
i0.ɵɵelementStart(0, "div", 8)(1, "h2");
|
|
29
31
|
i0.ɵɵtext(2);
|
|
30
32
|
i0.ɵɵelementEnd();
|
|
31
|
-
i0.ɵɵ
|
|
33
|
+
i0.ɵɵconditionalCreate(3, AgentEditorComponent_Conditional_8_Conditional_3_Template, 3, 1, "span", 15);
|
|
32
34
|
i0.ɵɵelementEnd();
|
|
33
35
|
} if (rf & 2) {
|
|
34
36
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -39,19 +41,19 @@ function AgentEditorComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
39
41
|
} }
|
|
40
42
|
function AgentEditorComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
41
43
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "div", 9)(1, "button",
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "button", 17);
|
|
43
45
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_9_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveTab("hierarchy")); });
|
|
44
|
-
i0.ɵɵelement(2, "i",
|
|
46
|
+
i0.ɵɵelement(2, "i", 18);
|
|
45
47
|
i0.ɵɵtext(3, " Hierarchy ");
|
|
46
48
|
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelementStart(4, "button",
|
|
49
|
+
i0.ɵɵelementStart(4, "button", 17);
|
|
48
50
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveTab("prompts")); });
|
|
49
|
-
i0.ɵɵelement(5, "i",
|
|
51
|
+
i0.ɵɵelement(5, "i", 19);
|
|
50
52
|
i0.ɵɵtext(6, " Prompts ");
|
|
51
53
|
i0.ɵɵelementEnd();
|
|
52
|
-
i0.ɵɵelementStart(7, "button",
|
|
54
|
+
i0.ɵɵelementStart(7, "button", 17);
|
|
53
55
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_9_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveTab("properties")); });
|
|
54
|
-
i0.ɵɵelement(8, "i",
|
|
56
|
+
i0.ɵɵelement(8, "i", 20);
|
|
55
57
|
i0.ɵɵtext(9, " Properties ");
|
|
56
58
|
i0.ɵɵelementEnd()();
|
|
57
59
|
} if (rf & 2) {
|
|
@@ -65,22 +67,22 @@ function AgentEditorComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
65
67
|
} }
|
|
66
68
|
function AgentEditorComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
67
69
|
i0.ɵɵelementStart(0, "div", 10);
|
|
68
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
70
|
+
i0.ɵɵelement(1, "mj-loading", 21);
|
|
69
71
|
i0.ɵɵelementEnd();
|
|
70
72
|
} }
|
|
71
73
|
function AgentEditorComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
72
74
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
73
|
-
i0.ɵɵelementStart(0, "div", 11)(1, "div",
|
|
74
|
-
i0.ɵɵelement(2, "i",
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 11)(1, "div", 22);
|
|
76
|
+
i0.ɵɵelement(2, "i", 23);
|
|
75
77
|
i0.ɵɵelementStart(3, "h3");
|
|
76
78
|
i0.ɵɵtext(4, "Error Loading Agent");
|
|
77
79
|
i0.ɵɵelementEnd();
|
|
78
80
|
i0.ɵɵelementStart(5, "p");
|
|
79
81
|
i0.ɵɵtext(6);
|
|
80
82
|
i0.ɵɵelementEnd();
|
|
81
|
-
i0.ɵɵelementStart(7, "button",
|
|
83
|
+
i0.ɵɵelementStart(7, "button", 24);
|
|
82
84
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.loadAgentData()); });
|
|
83
|
-
i0.ɵɵelement(8, "i",
|
|
85
|
+
i0.ɵɵelement(8, "i", 25);
|
|
84
86
|
i0.ɵɵtext(9, " Retry ");
|
|
85
87
|
i0.ɵɵelementEnd()()();
|
|
86
88
|
} if (rf & 2) {
|
|
@@ -89,62 +91,63 @@ function AgentEditorComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
89
91
|
i0.ɵɵtextInterpolate(ctx_r1.error);
|
|
90
92
|
} }
|
|
91
93
|
function AgentEditorComponent_Conditional_12_Conditional_1_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
-
i0.ɵɵelementStart(0, "div",
|
|
93
|
-
i0.ɵɵelement(2, "i",
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "small");
|
|
95
|
+
i0.ɵɵelement(2, "i", 46);
|
|
94
96
|
i0.ɵɵtext(3, " Drag to pan \u2022 Use zoom controls or scroll to zoom \u2022 Click nodes to navigate ");
|
|
95
97
|
i0.ɵɵelementEnd()();
|
|
96
98
|
} }
|
|
97
99
|
function AgentEditorComponent_Conditional_12_Conditional_1_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
98
100
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
99
|
-
i0.ɵɵelementStart(0, "div",
|
|
100
|
-
i0.ɵɵelement(1, "i",
|
|
101
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
102
|
+
i0.ɵɵelement(1, "i", 18);
|
|
101
103
|
i0.ɵɵelementStart(2, "h4");
|
|
102
104
|
i0.ɵɵtext(3, "No Agent Hierarchy");
|
|
103
105
|
i0.ɵɵelementEnd();
|
|
104
106
|
i0.ɵɵelementStart(4, "p");
|
|
105
107
|
i0.ɵɵtext(5, "This agent doesn't have any parent or child agents yet.");
|
|
106
108
|
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵelementStart(6, "button",
|
|
109
|
+
i0.ɵɵelementStart(6, "button", 47);
|
|
108
110
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_12_Conditional_1_Conditional_29_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openCreateSubAgent()); });
|
|
109
|
-
i0.ɵɵelement(7, "i",
|
|
111
|
+
i0.ɵɵelement(7, "i", 33);
|
|
110
112
|
i0.ɵɵtext(8, " Create Sub-Agent ");
|
|
111
113
|
i0.ɵɵelementEnd()();
|
|
112
114
|
} }
|
|
113
115
|
function AgentEditorComponent_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
114
116
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
115
|
-
i0.ɵɵelementStart(0, "div",
|
|
116
|
-
i0.ɵɵelement(3, "i",
|
|
117
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 29)(2, "h3");
|
|
118
|
+
i0.ɵɵelement(3, "i", 18);
|
|
117
119
|
i0.ɵɵtext(4, " Agent Hierarchy ");
|
|
118
120
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(5, "div",
|
|
121
|
+
i0.ɵɵelementStart(5, "div", 30)(6, "div", 31)(7, "button", 32);
|
|
120
122
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_12_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomIn()); });
|
|
121
|
-
i0.ɵɵelement(8, "i",
|
|
123
|
+
i0.ɵɵelement(8, "i", 33);
|
|
122
124
|
i0.ɵɵelementEnd();
|
|
123
|
-
i0.ɵɵelementStart(9, "button",
|
|
125
|
+
i0.ɵɵelementStart(9, "button", 34);
|
|
124
126
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_12_Conditional_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.zoomOut()); });
|
|
125
|
-
i0.ɵɵelement(10, "i",
|
|
127
|
+
i0.ɵɵelement(10, "i", 35);
|
|
126
128
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelementStart(11, "button",
|
|
129
|
+
i0.ɵɵelementStart(11, "button", 36);
|
|
128
130
|
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_12_Conditional_1_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.resetZoom()); });
|
|
129
|
-
i0.ɵɵelement(12, "i",
|
|
131
|
+
i0.ɵɵelement(12, "i", 37);
|
|
130
132
|
i0.ɵɵelementEnd()();
|
|
131
|
-
i0.ɵɵelementStart(13, "div",
|
|
132
|
-
i0.ɵɵelement(15, "div",
|
|
133
|
+
i0.ɵɵelementStart(13, "div", 38)(14, "div", 39);
|
|
134
|
+
i0.ɵɵelement(15, "div", 40);
|
|
133
135
|
i0.ɵɵelementStart(16, "span");
|
|
134
136
|
i0.ɵɵtext(17, "Root");
|
|
135
137
|
i0.ɵɵelementEnd()();
|
|
136
|
-
i0.ɵɵelementStart(18, "div",
|
|
137
|
-
i0.ɵɵelement(19, "div",
|
|
138
|
+
i0.ɵɵelementStart(18, "div", 39);
|
|
139
|
+
i0.ɵɵelement(19, "div", 41);
|
|
138
140
|
i0.ɵɵelementStart(20, "span");
|
|
139
141
|
i0.ɵɵtext(21, "Level 1");
|
|
140
142
|
i0.ɵɵelementEnd()();
|
|
141
|
-
i0.ɵɵelementStart(22, "div",
|
|
142
|
-
i0.ɵɵelement(23, "div",
|
|
143
|
+
i0.ɵɵelementStart(22, "div", 39);
|
|
144
|
+
i0.ɵɵelement(23, "div", 42);
|
|
143
145
|
i0.ɵɵelementStart(24, "span");
|
|
144
146
|
i0.ɵɵtext(25, "Level 2+");
|
|
145
147
|
i0.ɵɵelementEnd()()()()();
|
|
146
|
-
i0.ɵɵelementStart(26, "div",
|
|
147
|
-
i0.ɵɵ
|
|
148
|
+
i0.ɵɵelementStart(26, "div", 43, 0);
|
|
149
|
+
i0.ɵɵconditionalCreate(28, AgentEditorComponent_Conditional_12_Conditional_1_Conditional_28_Template, 4, 0, "div", 44);
|
|
150
|
+
i0.ɵɵconditionalCreate(29, AgentEditorComponent_Conditional_12_Conditional_1_Conditional_29_Template, 9, 0, "div", 45);
|
|
148
151
|
i0.ɵɵelementEnd()();
|
|
149
152
|
} if (rf & 2) {
|
|
150
153
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -154,30 +157,30 @@ function AgentEditorComponent_Conditional_12_Conditional_1_Template(rf, ctx) { i
|
|
|
154
157
|
i0.ɵɵconditional(!ctx_r1.hierarchyData || !ctx_r1.hasChildren() && !ctx_r1.hasParent() ? 29 : -1);
|
|
155
158
|
} }
|
|
156
159
|
function AgentEditorComponent_Conditional_12_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
-
i0.ɵɵelementStart(0, "div",
|
|
158
|
-
i0.ɵɵelement(1, "i",
|
|
160
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
161
|
+
i0.ɵɵelement(1, "i", 19);
|
|
159
162
|
i0.ɵɵelementStart(2, "p");
|
|
160
163
|
i0.ɵɵtext(3, "No prompts configured for this agent");
|
|
161
164
|
i0.ɵɵelementEnd();
|
|
162
|
-
i0.ɵɵelementStart(4, "button",
|
|
163
|
-
i0.ɵɵelement(5, "i",
|
|
165
|
+
i0.ɵɵelementStart(4, "button", 51);
|
|
166
|
+
i0.ɵɵelement(5, "i", 33);
|
|
164
167
|
i0.ɵɵtext(6, " Add First Prompt ");
|
|
165
168
|
i0.ɵɵelementEnd()();
|
|
166
169
|
} }
|
|
167
170
|
function AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "div", 53)(2, "div", 54)(3, "h4");
|
|
169
172
|
i0.ɵɵtext(4);
|
|
170
173
|
i0.ɵɵelementEnd();
|
|
171
|
-
i0.ɵɵelementStart(5, "span",
|
|
174
|
+
i0.ɵɵelementStart(5, "span", 55);
|
|
172
175
|
i0.ɵɵtext(6);
|
|
173
176
|
i0.ɵɵelementEnd()();
|
|
174
|
-
i0.ɵɵelementStart(7, "div",
|
|
175
|
-
i0.ɵɵelement(9, "i",
|
|
177
|
+
i0.ɵɵelementStart(7, "div", 56)(8, "button", 57);
|
|
178
|
+
i0.ɵɵelement(9, "i", 58);
|
|
176
179
|
i0.ɵɵelementEnd();
|
|
177
|
-
i0.ɵɵelementStart(10, "button",
|
|
178
|
-
i0.ɵɵelement(11, "i",
|
|
180
|
+
i0.ɵɵelementStart(10, "button", 59);
|
|
181
|
+
i0.ɵɵelement(11, "i", 60);
|
|
179
182
|
i0.ɵɵelementEnd()()();
|
|
180
|
-
i0.ɵɵelementStart(12, "div",
|
|
183
|
+
i0.ɵɵelementStart(12, "div", 61)(13, "p");
|
|
181
184
|
i0.ɵɵtext(14);
|
|
182
185
|
i0.ɵɵelementEnd()()();
|
|
183
186
|
} if (rf & 2) {
|
|
@@ -190,22 +193,22 @@ function AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_For_1_
|
|
|
190
193
|
i0.ɵɵtextInterpolate(prompt_r7.content);
|
|
191
194
|
} }
|
|
192
195
|
function AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
193
|
-
i0.ɵɵrepeaterCreate(0, AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_For_1_Template, 15, 3, "div",
|
|
196
|
+
i0.ɵɵrepeaterCreate(0, AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_For_1_Template, 15, 3, "div", 52, _forTrack0);
|
|
194
197
|
} if (rf & 2) {
|
|
195
198
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
196
199
|
i0.ɵɵrepeater(ctx_r1.agentPrompts);
|
|
197
200
|
} }
|
|
198
201
|
function AgentEditorComponent_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
i0.ɵɵelementStart(0, "div",
|
|
200
|
-
i0.ɵɵelement(3, "i",
|
|
202
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 29)(2, "h3");
|
|
203
|
+
i0.ɵɵelement(3, "i", 19);
|
|
201
204
|
i0.ɵɵtext(4, " Agent Prompts ");
|
|
202
205
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(5, "button",
|
|
204
|
-
i0.ɵɵelement(6, "i",
|
|
206
|
+
i0.ɵɵelementStart(5, "button", 48);
|
|
207
|
+
i0.ɵɵelement(6, "i", 33);
|
|
205
208
|
i0.ɵɵtext(7, " Add Prompt ");
|
|
206
209
|
i0.ɵɵelementEnd()();
|
|
207
|
-
i0.ɵɵelementStart(8, "div",
|
|
208
|
-
i0.ɵɵ
|
|
210
|
+
i0.ɵɵelementStart(8, "div", 49);
|
|
211
|
+
i0.ɵɵconditionalCreate(9, AgentEditorComponent_Conditional_12_Conditional_2_Conditional_9_Template, 7, 0, "div", 50)(10, AgentEditorComponent_Conditional_12_Conditional_2_Conditional_10_Template, 2, 0);
|
|
209
212
|
i0.ɵɵelementEnd()();
|
|
210
213
|
} if (rf & 2) {
|
|
211
214
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -213,15 +216,15 @@ function AgentEditorComponent_Conditional_12_Conditional_2_Template(rf, ctx) { i
|
|
|
213
216
|
i0.ɵɵconditional(ctx_r1.agentPrompts.length === 0 ? 9 : 10);
|
|
214
217
|
} }
|
|
215
218
|
function AgentEditorComponent_Conditional_12_Conditional_3_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
-
i0.ɵɵelementStart(0, "div",
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 65)(2, "label");
|
|
217
220
|
i0.ɵɵtext(3, "Message Threshold");
|
|
218
221
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵelement(4, "input",
|
|
222
|
+
i0.ɵɵelement(4, "input", 77);
|
|
220
223
|
i0.ɵɵelementEnd();
|
|
221
|
-
i0.ɵɵelementStart(5, "div",
|
|
224
|
+
i0.ɵɵelementStart(5, "div", 65)(6, "label");
|
|
222
225
|
i0.ɵɵtext(7, "Retention Count");
|
|
223
226
|
i0.ɵɵelementEnd();
|
|
224
|
-
i0.ɵɵelement(8, "input",
|
|
227
|
+
i0.ɵɵelement(8, "input", 78);
|
|
225
228
|
i0.ɵɵelementEnd()();
|
|
226
229
|
} if (rf & 2) {
|
|
227
230
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -231,53 +234,53 @@ function AgentEditorComponent_Conditional_12_Conditional_3_Conditional_44_Templa
|
|
|
231
234
|
i0.ɵɵproperty("value", ctx_r1.currentAgent.ContextCompressionMessageRetentionCount);
|
|
232
235
|
} }
|
|
233
236
|
function AgentEditorComponent_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
234
|
-
i0.ɵɵelementStart(0, "div",
|
|
235
|
-
i0.ɵɵelement(3, "i",
|
|
237
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 29)(2, "h3");
|
|
238
|
+
i0.ɵɵelement(3, "i", 20);
|
|
236
239
|
i0.ɵɵtext(4, " Agent Properties ");
|
|
237
240
|
i0.ɵɵelementEnd();
|
|
238
|
-
i0.ɵɵelementStart(5, "button",
|
|
239
|
-
i0.ɵɵelement(6, "i",
|
|
241
|
+
i0.ɵɵelementStart(5, "button", 62);
|
|
242
|
+
i0.ɵɵelement(6, "i", 63);
|
|
240
243
|
i0.ɵɵtext(7, " Save ");
|
|
241
244
|
i0.ɵɵelementEnd()();
|
|
242
|
-
i0.ɵɵelementStart(8, "div",
|
|
245
|
+
i0.ɵɵelementStart(8, "div", 64)(9, "div", 65)(10, "label");
|
|
243
246
|
i0.ɵɵtext(11, "Name");
|
|
244
247
|
i0.ɵɵelementEnd();
|
|
245
|
-
i0.ɵɵelement(12, "input",
|
|
248
|
+
i0.ɵɵelement(12, "input", 66);
|
|
246
249
|
i0.ɵɵelementEnd();
|
|
247
|
-
i0.ɵɵelementStart(13, "div",
|
|
250
|
+
i0.ɵɵelementStart(13, "div", 65)(14, "label");
|
|
248
251
|
i0.ɵɵtext(15, "Description");
|
|
249
252
|
i0.ɵɵelementEnd();
|
|
250
|
-
i0.ɵɵelement(16, "textarea",
|
|
253
|
+
i0.ɵɵelement(16, "textarea", 67);
|
|
251
254
|
i0.ɵɵelementEnd();
|
|
252
|
-
i0.ɵɵelementStart(17, "div",
|
|
255
|
+
i0.ɵɵelementStart(17, "div", 68)(18, "div", 65)(19, "label");
|
|
253
256
|
i0.ɵɵtext(20, "Execution Mode");
|
|
254
257
|
i0.ɵɵelementEnd();
|
|
255
|
-
i0.ɵɵelementStart(21, "select",
|
|
258
|
+
i0.ɵɵelementStart(21, "select", 69)(22, "option", 70);
|
|
256
259
|
i0.ɵɵtext(23, "Sequential");
|
|
257
260
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(24, "option",
|
|
261
|
+
i0.ɵɵelementStart(24, "option", 71);
|
|
259
262
|
i0.ɵɵtext(25, "Parallel");
|
|
260
263
|
i0.ɵɵelementEnd()()();
|
|
261
|
-
i0.ɵɵelementStart(26, "div",
|
|
264
|
+
i0.ɵɵelementStart(26, "div", 65)(27, "label");
|
|
262
265
|
i0.ɵɵtext(28, "Execution Order");
|
|
263
266
|
i0.ɵɵelementEnd();
|
|
264
|
-
i0.ɵɵelement(29, "input",
|
|
267
|
+
i0.ɵɵelement(29, "input", 72);
|
|
265
268
|
i0.ɵɵelementEnd()();
|
|
266
|
-
i0.ɵɵelementStart(30, "div",
|
|
267
|
-
i0.ɵɵelement(32, "input",
|
|
269
|
+
i0.ɵɵelementStart(30, "div", 73)(31, "label", 74);
|
|
270
|
+
i0.ɵɵelement(32, "input", 75)(33, "span", 76);
|
|
268
271
|
i0.ɵɵtext(34, " Expose as Action ");
|
|
269
272
|
i0.ɵɵelementEnd();
|
|
270
273
|
i0.ɵɵelementStart(35, "small");
|
|
271
274
|
i0.ɵɵtext(36, "Allow this agent to be used as an action by other agents");
|
|
272
275
|
i0.ɵɵelementEnd()();
|
|
273
|
-
i0.ɵɵelementStart(37, "div",
|
|
274
|
-
i0.ɵɵelement(39, "input",
|
|
276
|
+
i0.ɵɵelementStart(37, "div", 73)(38, "label", 74);
|
|
277
|
+
i0.ɵɵelement(39, "input", 75)(40, "span", 76);
|
|
275
278
|
i0.ɵɵtext(41, " Enable Context Compression ");
|
|
276
279
|
i0.ɵɵelementEnd();
|
|
277
280
|
i0.ɵɵelementStart(42, "small");
|
|
278
281
|
i0.ɵɵtext(43, "Automatically compress conversation context when threshold is reached");
|
|
279
282
|
i0.ɵɵelementEnd()();
|
|
280
|
-
i0.ɵɵ
|
|
283
|
+
i0.ɵɵconditionalCreate(44, AgentEditorComponent_Conditional_12_Conditional_3_Conditional_44_Template, 9, 2, "div", 68);
|
|
281
284
|
i0.ɵɵelementEnd()();
|
|
282
285
|
} if (rf & 2) {
|
|
283
286
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -298,7 +301,9 @@ function AgentEditorComponent_Conditional_12_Conditional_3_Template(rf, ctx) { i
|
|
|
298
301
|
} }
|
|
299
302
|
function AgentEditorComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
300
303
|
i0.ɵɵelementStart(0, "div", 12);
|
|
301
|
-
i0.ɵɵ
|
|
304
|
+
i0.ɵɵconditionalCreate(1, AgentEditorComponent_Conditional_12_Conditional_1_Template, 30, 2, "div", 26);
|
|
305
|
+
i0.ɵɵconditionalCreate(2, AgentEditorComponent_Conditional_12_Conditional_2_Template, 11, 1, "div", 27);
|
|
306
|
+
i0.ɵɵconditionalCreate(3, AgentEditorComponent_Conditional_12_Conditional_3_Template, 45, 7, "div", 28);
|
|
302
307
|
i0.ɵɵelementEnd();
|
|
303
308
|
} if (rf & 2) {
|
|
304
309
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -309,85 +314,9 @@ function AgentEditorComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
|
309
314
|
i0.ɵɵadvance();
|
|
310
315
|
i0.ɵɵconditional(ctx_r1.activeTab === "properties" ? 3 : -1);
|
|
311
316
|
} }
|
|
312
|
-
function AgentEditorComponent_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
313
|
-
i0.ɵɵelementStart(0, "div", 86);
|
|
314
|
-
i0.ɵɵelement(1, "i", 24);
|
|
315
|
-
i0.ɵɵtext(2);
|
|
316
|
-
i0.ɵɵelementEnd();
|
|
317
|
-
} if (rf & 2) {
|
|
318
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
319
|
-
i0.ɵɵadvance(2);
|
|
320
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.error, " ");
|
|
321
|
-
} }
|
|
322
|
-
function AgentEditorComponent_Conditional_13_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
323
|
-
i0.ɵɵelement(0, "span", 93);
|
|
324
|
-
i0.ɵɵtext(1, " Creating... ");
|
|
325
|
-
} }
|
|
326
|
-
function AgentEditorComponent_Conditional_13_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
-
i0.ɵɵelement(0, "i", 34);
|
|
328
|
-
i0.ɵɵtext(1, " Create Sub-Agent ");
|
|
329
|
-
} }
|
|
330
|
-
function AgentEditorComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
331
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
332
|
-
i0.ɵɵelementStart(0, "div", 80);
|
|
333
|
-
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_13_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCreateSubAgent()); });
|
|
334
|
-
i0.ɵɵelementStart(1, "div", 81);
|
|
335
|
-
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_13_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
336
|
-
i0.ɵɵelementStart(2, "div", 82)(3, "h3");
|
|
337
|
-
i0.ɵɵelement(4, "i", 34);
|
|
338
|
-
i0.ɵɵtext(5, " Create Sub-Agent ");
|
|
339
|
-
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(6, "button", 83);
|
|
341
|
-
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_13_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCreateSubAgent()); });
|
|
342
|
-
i0.ɵɵelement(7, "i", 84);
|
|
343
|
-
i0.ɵɵelementEnd()();
|
|
344
|
-
i0.ɵɵelementStart(8, "div", 85);
|
|
345
|
-
i0.ɵɵtemplate(9, AgentEditorComponent_Conditional_13_Conditional_9_Template, 3, 1, "div", 86);
|
|
346
|
-
i0.ɵɵelementStart(10, "div", 66)(11, "label");
|
|
347
|
-
i0.ɵɵtext(12, "Agent Name *");
|
|
348
|
-
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(13, "input", 87);
|
|
350
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AgentEditorComponent_Conditional_13_Template_input_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.newSubAgentName, $event) || (ctx_r1.newSubAgentName = $event); return i0.ɵɵresetView($event); });
|
|
351
|
-
i0.ɵɵelementEnd()();
|
|
352
|
-
i0.ɵɵelementStart(14, "div", 66)(15, "label");
|
|
353
|
-
i0.ɵɵtext(16, "Description");
|
|
354
|
-
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵelementStart(17, "textarea", 88);
|
|
356
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AgentEditorComponent_Conditional_13_Template_textarea_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.newSubAgentDescription, $event) || (ctx_r1.newSubAgentDescription = $event); return i0.ɵɵresetView($event); });
|
|
357
|
-
i0.ɵɵelementEnd()();
|
|
358
|
-
i0.ɵɵelementStart(18, "div", 89)(19, "strong");
|
|
359
|
-
i0.ɵɵtext(20, "Parent Agent:");
|
|
360
|
-
i0.ɵɵelementEnd();
|
|
361
|
-
i0.ɵɵtext(21);
|
|
362
|
-
i0.ɵɵelementEnd()();
|
|
363
|
-
i0.ɵɵelementStart(22, "div", 90)(23, "button", 91);
|
|
364
|
-
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_13_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCreateSubAgent()); });
|
|
365
|
-
i0.ɵɵtext(24, " Cancel ");
|
|
366
|
-
i0.ɵɵelementEnd();
|
|
367
|
-
i0.ɵɵelementStart(25, "button", 92);
|
|
368
|
-
i0.ɵɵlistener("click", function AgentEditorComponent_Conditional_13_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
369
|
-
i0.ɵɵtemplate(26, AgentEditorComponent_Conditional_13_Conditional_26_Template, 2, 0)(27, AgentEditorComponent_Conditional_13_Conditional_27_Template, 2, 0);
|
|
370
|
-
i0.ɵɵelementEnd()()()();
|
|
371
|
-
} if (rf & 2) {
|
|
372
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
373
|
-
i0.ɵɵadvance(9);
|
|
374
|
-
i0.ɵɵconditional(ctx_r1.error ? 9 : -1);
|
|
375
|
-
i0.ɵɵadvance(4);
|
|
376
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.newSubAgentName);
|
|
377
|
-
i0.ɵɵproperty("disabled", ctx_r1.isLoading);
|
|
378
|
-
i0.ɵɵadvance(4);
|
|
379
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.newSubAgentDescription);
|
|
380
|
-
i0.ɵɵproperty("disabled", ctx_r1.isLoading);
|
|
381
|
-
i0.ɵɵadvance(4);
|
|
382
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.currentAgent == null ? null : ctx_r1.currentAgent.Name, " ");
|
|
383
|
-
i0.ɵɵadvance(2);
|
|
384
|
-
i0.ɵɵproperty("disabled", ctx_r1.isLoading);
|
|
385
|
-
i0.ɵɵadvance(2);
|
|
386
|
-
i0.ɵɵproperty("disabled", !ctx_r1.newSubAgentName.trim() || ctx_r1.isLoading);
|
|
387
|
-
i0.ɵɵadvance();
|
|
388
|
-
i0.ɵɵconditional(ctx_r1.isLoading ? 26 : 27);
|
|
389
|
-
} }
|
|
390
317
|
export class AgentEditorComponent {
|
|
318
|
+
createAgentService;
|
|
319
|
+
navigationService;
|
|
391
320
|
agentId = null;
|
|
392
321
|
close = new EventEmitter();
|
|
393
322
|
openAgent = new EventEmitter();
|
|
@@ -406,16 +335,16 @@ export class AgentEditorComponent {
|
|
|
406
335
|
showHierarchy = true;
|
|
407
336
|
showPrompts = true;
|
|
408
337
|
showProperties = true;
|
|
409
|
-
// Sub-agent creation
|
|
410
|
-
showCreateSubAgent = false;
|
|
411
|
-
newSubAgentName = '';
|
|
412
|
-
newSubAgentDescription = '';
|
|
413
338
|
// D3 variables
|
|
414
339
|
svg;
|
|
415
340
|
g;
|
|
416
341
|
tree;
|
|
417
342
|
root;
|
|
418
343
|
zoom;
|
|
344
|
+
constructor(createAgentService, navigationService) {
|
|
345
|
+
this.createAgentService = createAgentService;
|
|
346
|
+
this.navigationService = navigationService;
|
|
347
|
+
}
|
|
419
348
|
ngOnInit() {
|
|
420
349
|
if (this.agentId) {
|
|
421
350
|
this.loadAgentData();
|
|
@@ -733,54 +662,62 @@ export class AgentEditorComponent {
|
|
|
733
662
|
getExecutionModeIcon(mode) {
|
|
734
663
|
return mode === 'Sequential' ? 'fa-solid fa-list-ol' : 'fa-solid fa-layer-group';
|
|
735
664
|
}
|
|
665
|
+
/**
|
|
666
|
+
* Opens the create sub-agent slide-in panel using the new CreateAgentService.
|
|
667
|
+
* After successful creation, saves the agent and navigates to it.
|
|
668
|
+
*/
|
|
736
669
|
openCreateSubAgent() {
|
|
737
|
-
this.
|
|
738
|
-
|
|
739
|
-
this.newSubAgentDescription = '';
|
|
670
|
+
if (!this.currentAgent)
|
|
671
|
+
return;
|
|
740
672
|
this.error = null;
|
|
673
|
+
this.createAgentService.OpenSubAgentSlideIn(this.currentAgent.ID, this.currentAgent.Name || 'Agent').subscribe({
|
|
674
|
+
next: async (dialogResult) => {
|
|
675
|
+
if (!dialogResult.Cancelled && dialogResult.Result) {
|
|
676
|
+
await this.handleAgentCreated(dialogResult.Result);
|
|
677
|
+
}
|
|
678
|
+
},
|
|
679
|
+
error: (err) => {
|
|
680
|
+
console.error('Error in create sub-agent slide-in:', err);
|
|
681
|
+
this.error = 'Failed to open create sub-agent panel';
|
|
682
|
+
}
|
|
683
|
+
});
|
|
741
684
|
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
async createSubAgent() {
|
|
748
|
-
if (!this.currentAgent || !this.newSubAgentName.trim())
|
|
749
|
-
return;
|
|
685
|
+
/**
|
|
686
|
+
* Handles the result from the create agent slide-in.
|
|
687
|
+
* Saves the agent and navigates to the new record.
|
|
688
|
+
*/
|
|
689
|
+
async handleAgentCreated(result) {
|
|
750
690
|
try {
|
|
751
691
|
this.isLoading = true;
|
|
752
692
|
this.error = null;
|
|
753
|
-
const
|
|
754
|
-
if (!md) {
|
|
755
|
-
throw new Error('Metadata provider not available');
|
|
756
|
-
}
|
|
757
|
-
// Create new AI Agent entity
|
|
758
|
-
const newAgent = await md.GetEntityObject('AI Agents', md.CurrentUser);
|
|
759
|
-
// Set agent properties
|
|
760
|
-
newAgent.Name = this.newSubAgentName.trim();
|
|
761
|
-
newAgent.Description = this.newSubAgentDescription.trim() || '';
|
|
762
|
-
newAgent.ParentID = this.currentAgent.ID;
|
|
763
|
-
// Set default values based on parent agent
|
|
764
|
-
newAgent.ExecutionMode = this.currentAgent.ExecutionMode || 'Sequential';
|
|
765
|
-
newAgent.ExecutionOrder = 1; // Default to 1, could be made configurable
|
|
766
|
-
newAgent.ExposeAsAction = false; // Default to false for sub-agents
|
|
767
|
-
newAgent.EnableContextCompression = this.currentAgent.EnableContextCompression || false;
|
|
768
|
-
newAgent.ContextCompressionMessageThreshold = this.currentAgent.ContextCompressionMessageThreshold || 10;
|
|
769
|
-
newAgent.ContextCompressionMessageRetentionCount = this.currentAgent.ContextCompressionMessageRetentionCount || 5;
|
|
693
|
+
const agent = result.Agent;
|
|
770
694
|
// Save the new agent
|
|
771
|
-
const
|
|
772
|
-
if (
|
|
695
|
+
const saveResult = await agent.Save();
|
|
696
|
+
if (saveResult) {
|
|
773
697
|
LogStatus('Sub-agent created successfully');
|
|
774
|
-
//
|
|
775
|
-
|
|
698
|
+
// Save any linked prompts
|
|
699
|
+
if (result.AgentPrompts && result.AgentPrompts.length > 0) {
|
|
700
|
+
for (const agentPrompt of result.AgentPrompts) {
|
|
701
|
+
// Update the AgentID now that the agent has been saved
|
|
702
|
+
agentPrompt.AgentID = agent.ID;
|
|
703
|
+
await agentPrompt.Save();
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
// Save any linked actions
|
|
707
|
+
if (result.AgentActions && result.AgentActions.length > 0) {
|
|
708
|
+
for (const agentAction of result.AgentActions) {
|
|
709
|
+
// Update the AgentID now that the agent has been saved
|
|
710
|
+
agentAction.AgentID = agent.ID;
|
|
711
|
+
await agentAction.Save();
|
|
712
|
+
}
|
|
713
|
+
}
|
|
776
714
|
// Reload agent data to show the new hierarchy
|
|
777
715
|
await this.loadAgentData();
|
|
778
|
-
// Navigate to the newly created agent
|
|
779
|
-
this.
|
|
716
|
+
// Navigate to the newly created agent record
|
|
717
|
+
this.navigationService.OpenEntityRecord('AI Agents', agent.PrimaryKey);
|
|
780
718
|
}
|
|
781
719
|
else {
|
|
782
|
-
|
|
783
|
-
const errorMessage = newAgent.LatestResult?.Message || 'Unknown error occurred while creating sub-agent';
|
|
720
|
+
const errorMessage = agent.LatestResult?.Message || 'Unknown error occurred while creating sub-agent';
|
|
784
721
|
this.error = `Failed to create sub-agent: ${errorMessage}`;
|
|
785
722
|
LogError('Sub-agent creation failed', undefined, errorMessage);
|
|
786
723
|
}
|
|
@@ -808,23 +745,26 @@ export class AgentEditorComponent {
|
|
|
808
745
|
this.openEntityRecord.emit({ entityName: 'AI Agents', recordId: this.currentAgent.ID });
|
|
809
746
|
}
|
|
810
747
|
}
|
|
811
|
-
static ɵfac = function AgentEditorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentEditorComponent)(); };
|
|
748
|
+
static ɵfac = function AgentEditorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentEditorComponent)(i0.ɵɵdirectiveInject(i1.CreateAgentService), i0.ɵɵdirectiveInject(i2.NavigationService)); };
|
|
812
749
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentEditorComponent, selectors: [["mj-agent-editor"]], viewQuery: function AgentEditorComponent_Query(rf, ctx) { if (rf & 1) {
|
|
813
750
|
i0.ɵɵviewQuery(_c0, 5);
|
|
814
751
|
} if (rf & 2) {
|
|
815
752
|
let _t;
|
|
816
753
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.hierarchyChartRef = _t.first);
|
|
817
|
-
} }, inputs: { agentId: "agentId" }, outputs: { close: "close", openAgent: "openAgent", openEntityRecord: "openEntityRecord" }, decls:
|
|
754
|
+
} }, inputs: { agentId: "agentId" }, outputs: { close: "close", openAgent: "openAgent", openEntityRecord: "openEntityRecord" }, standalone: false, decls: 13, vars: 6, consts: [["hierarchyChart", ""], [1, "agent-editor-container"], [1, "editor-header"], [1, "header-info"], [1, "header-actions"], ["type", "button", "title", "Back to Agent List", 1, "back-btn", 3, "click"], [1, "fa-solid", "fa-arrow-left"], ["type", "button", "title", "Open Agent Record", 1, "open-btn"], [1, "agent-breadcrumb"], [1, "tab-navigation"], [1, "loading-container"], [1, "error-container"], [1, "tab-content"], ["type", "button", "title", "Open Agent Record", 1, "open-btn", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "breadcrumb-item"], [1, "fa-solid", "fa-chevron-right"], ["type", "button", 1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-comment-dots"], [1, "fa-solid", "fa-cog"], ["text", "Loading agent data...", "size", "large"], [1, "error-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "retry-btn", 3, "click"], [1, "fa-solid", "fa-retry"], [1, "hierarchy-section"], [1, "prompts-section"], [1, "properties-section"], [1, "section-header"], [1, "hierarchy-controls"], [1, "zoom-controls"], ["type", "button", "title", "Zoom In", 1, "zoom-btn", 3, "click"], [1, "fa-solid", "fa-plus"], ["type", "button", "title", "Zoom Out", 1, "zoom-btn", 3, "click"], [1, "fa-solid", "fa-minus"], ["type", "button", "title", "Reset Zoom", 1, "zoom-btn", 3, "click"], [1, "fa-solid", "fa-expand"], [1, "hierarchy-legend"], [1, "legend-item"], [1, "legend-rect", "level-0"], [1, "legend-rect", "level-1"], [1, "legend-rect", "level-2"], [1, "hierarchy-chart"], [1, "chart-help"], [1, "empty-hierarchy"], [1, "fa-solid", "fa-hand-pointer"], [1, "create-subagent-btn", 3, "click"], ["title", "Add New Prompt", 1, "add-prompt-btn"], [1, "prompts-list"], [1, "empty-prompts"], [1, "add-first-prompt-btn"], [1, "prompt-card"], [1, "prompt-header"], [1, "prompt-info"], [1, "prompt-type"], [1, "prompt-actions"], ["title", "Edit Prompt", 1, "action-btn"], [1, "fa-solid", "fa-edit"], ["title", "Delete Prompt", 1, "action-btn", "danger"], [1, "fa-solid", "fa-trash"], [1, "prompt-content"], ["title", "Save Changes", 1, "save-btn"], [1, "fa-solid", "fa-save"], [1, "properties-form"], [1, "form-group"], ["type", "text", "placeholder", "Agent name", 1, "form-input", 3, "value"], ["placeholder", "Agent description", "rows", "3", 1, "form-textarea", 3, "value"], [1, "form-row"], [1, "form-select", 3, "value"], ["value", "Sequential"], ["value", "Parallel"], ["type", "number", "min", "0", 1, "form-input", 3, "value"], [1, "form-group", "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", 3, "checked"], [1, "checkmark"], ["type", "number", "min", "1", "placeholder", "Number of messages", 1, "form-input", 3, "value"], ["type", "number", "min", "0", "placeholder", "Messages to keep", 1, "form-input", 3, "value"]], template: function AgentEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
818
755
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "button", 5);
|
|
819
756
|
i0.ɵɵlistener("click", function AgentEditorComponent_Template_button_click_4_listener() { return ctx.closeEditor(); });
|
|
820
757
|
i0.ɵɵelement(5, "i", 6);
|
|
821
758
|
i0.ɵɵtext(6, " Back to Agents ");
|
|
822
759
|
i0.ɵɵelementEnd();
|
|
823
|
-
i0.ɵɵ
|
|
760
|
+
i0.ɵɵconditionalCreate(7, AgentEditorComponent_Conditional_7_Template, 3, 0, "button", 7);
|
|
824
761
|
i0.ɵɵelementEnd();
|
|
825
|
-
i0.ɵɵ
|
|
762
|
+
i0.ɵɵconditionalCreate(8, AgentEditorComponent_Conditional_8_Template, 4, 2, "div", 8);
|
|
826
763
|
i0.ɵɵelementEnd()();
|
|
827
|
-
i0.ɵɵ
|
|
764
|
+
i0.ɵɵconditionalCreate(9, AgentEditorComponent_Conditional_9_Template, 10, 6, "div", 9);
|
|
765
|
+
i0.ɵɵconditionalCreate(10, AgentEditorComponent_Conditional_10_Template, 2, 0, "div", 10);
|
|
766
|
+
i0.ɵɵconditionalCreate(11, AgentEditorComponent_Conditional_11_Template, 10, 1, "div", 11);
|
|
767
|
+
i0.ɵɵconditionalCreate(12, AgentEditorComponent_Conditional_12_Template, 4, 3, "div", 12);
|
|
828
768
|
i0.ɵɵelementEnd();
|
|
829
769
|
} if (rf & 2) {
|
|
830
770
|
i0.ɵɵadvance(7);
|
|
@@ -839,14 +779,12 @@ export class AgentEditorComponent {
|
|
|
839
779
|
i0.ɵɵconditional(ctx.error ? 11 : -1);
|
|
840
780
|
i0.ɵɵadvance();
|
|
841
781
|
i0.ɵɵconditional(!ctx.isLoading && !ctx.error && ctx.currentAgent ? 12 : -1);
|
|
842
|
-
i0.ɵɵadvance();
|
|
843
|
-
i0.ɵɵconditional(ctx.showCreateSubAgent ? 13 : -1);
|
|
844
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NgControlStatus, i1.MaxLengthValidator, i1.NgModel, i2.LoadingComponent], styles: [".agent-editor-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n.editor-header[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 16px 20px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%], .editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n text-decoration: none;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%]:hover, .editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover {\n border-color: #ccc;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%] {\n background: #f8f9fa;\n color: #666;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n color: #333;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover {\n background: #0056b3;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .agent-breadcrumb[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .agent-breadcrumb[_ngcontent-%COMP%] .breadcrumb-item[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn.active[_ngcontent-%COMP%] {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n\n.tab-navigation[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 0 20px;\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%]:hover {\n color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n margin: 0 auto 20px;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #666;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dc3545;\n margin-bottom: 16px;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #333;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: #666;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #dc3545;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover {\n background: #c82333;\n}\n\n.editor-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter[_ngcontent-%COMP%], .bottom-splitter[_ngcontent-%COMP%] {\n height: 100%;\n}\n.main-splitter[_ngcontent-%COMP%] .k-pane[_ngcontent-%COMP%], .bottom-splitter[_ngcontent-%COMP%] .k-pane[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.hierarchy-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #666;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect[_ngcontent-%COMP%] {\n width: 20px;\n height: 12px;\n border-radius: 2px;\n border: 1px solid;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-0[_ngcontent-%COMP%] {\n background: #1976d2;\n border-color: #1565c0;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-1[_ngcontent-%COMP%] {\n background: #388e3c;\n border-color: #2e7d32;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-2[_ngcontent-%COMP%] {\n background: #f57c00;\n border-color: #ef6c00;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 300px;\n overflow: hidden;\n position: relative;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] {\n position: absolute;\n bottom: 10px;\n left: 10px;\n background: rgba(255, 255, 255, 0.9);\n padding: 6px 10px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n z-index: 10;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px 20px;\n text-align: center;\n color: #666;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 20px;\n opacity: 0.5;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 18px;\n color: #333;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] .create-subagent-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px;\n background: #2196f3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] .create-subagent-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.prompts-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-right: 1px solid #f0f0f0;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .add-prompt-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .add-prompt-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px 20px;\n color: #666;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] .add-first-prompt-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] .add-first-prompt-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin-bottom: 12px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-type[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 6px;\n background: #007bff;\n color: white;\n border-radius: 3px;\n text-transform: uppercase;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n background: none;\n border: 1px solid #e0e0e0;\n border-radius: 3px;\n color: #666;\n cursor: pointer;\n font-size: 12px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n border-color: #ccc;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn.danger[_ngcontent-%COMP%]:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-content[_ngcontent-%COMP%] {\n padding: 12px 16px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n}\n\n.properties-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #28a745;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:hover {\n background: #218838;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%], .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 13px;\n background: white;\n box-sizing: border-box;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]:focus, .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]:focus, .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 60px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n margin: 0;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: #666;\n margin-top: 4px;\n margin-left: 24px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.modal-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n padding: 20px;\n box-sizing: border-box;\n}\n\n.create-subagent-modal[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 500px;\n max-height: calc(100vh - 40px);\n min-height: 300px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n position: relative;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] {\n padding: 20px 24px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #666;\n border-radius: 4px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n color: #333;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] {\n padding: 24px;\n flex: 1;\n overflow-y: auto;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%] {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 20px;\n color: #721c24;\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%], .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]:focus, .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]::placeholder, .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]::placeholder {\n color: #999;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .parent-info[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n font-size: 14px;\n color: #666;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .parent-info[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: #333;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] {\n padding: 20px 24px;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%], .create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] {\n padding: 10px 20px;\n border: 1px solid;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%]:disabled, .create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%] {\n background: white;\n border-color: #ddd;\n color: #666;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #ccc;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #1976d2;\n border-color: #1976d2;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] .loading-spinner-sm[_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}"] });
|
|
782
|
+
} }, dependencies: [i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i4.LoadingComponent], styles: [".agent-editor-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n.editor-header[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 16px 20px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%], .editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n text-decoration: none;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%]:hover, .editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover {\n border-color: #ccc;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%] {\n background: #f8f9fa;\n color: #666;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n color: #333;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover {\n background: #0056b3;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .agent-breadcrumb[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n.editor-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .agent-breadcrumb[_ngcontent-%COMP%] .breadcrumb-item[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.editor-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn.active[_ngcontent-%COMP%] {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n\n.tab-navigation[_ngcontent-%COMP%] {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 0 20px;\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%]:hover {\n color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n margin: 0 auto 20px;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3), .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #666;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dc3545;\n margin-bottom: 16px;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #333;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: #666;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #dc3545;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .loading-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .error-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover, .error-container[_ngcontent-%COMP%] .error-content[_ngcontent-%COMP%] .retry-btn[_ngcontent-%COMP%]:hover {\n background: #c82333;\n}\n\n.editor-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter[_ngcontent-%COMP%], .bottom-splitter[_ngcontent-%COMP%] {\n height: 100%;\n}\n.main-splitter[_ngcontent-%COMP%] .k-pane[_ngcontent-%COMP%], .bottom-splitter[_ngcontent-%COMP%] .k-pane[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.hierarchy-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .zoom-controls[_ngcontent-%COMP%] .zoom-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #666;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect[_ngcontent-%COMP%] {\n width: 20px;\n height: 12px;\n border-radius: 2px;\n border: 1px solid;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-0[_ngcontent-%COMP%] {\n background: #1976d2;\n border-color: #1565c0;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-1[_ngcontent-%COMP%] {\n background: #388e3c;\n border-color: #2e7d32;\n}\n.hierarchy-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .hierarchy-controls[_ngcontent-%COMP%] .hierarchy-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] .legend-rect.level-2[_ngcontent-%COMP%] {\n background: #f57c00;\n border-color: #ef6c00;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 300px;\n overflow: hidden;\n position: relative;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] {\n position: absolute;\n bottom: 10px;\n left: 10px;\n background: rgba(255, 255, 255, 0.9);\n padding: 6px 10px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n z-index: 10;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .chart-help[_ngcontent-%COMP%] small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px 20px;\n text-align: center;\n color: #666;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 20px;\n opacity: 0.5;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 18px;\n color: #333;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] .create-subagent-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px;\n background: #2196f3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n.hierarchy-section[_ngcontent-%COMP%] .hierarchy-chart[_ngcontent-%COMP%] .empty-hierarchy[_ngcontent-%COMP%] .create-subagent-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.prompts-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-right: 1px solid #f0f0f0;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .add-prompt-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.prompts-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .add-prompt-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px 20px;\n color: #666;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] .add-first-prompt-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .empty-prompts[_ngcontent-%COMP%] .add-first-prompt-btn[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin-bottom: 12px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-type[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 6px;\n background: #007bff;\n color: white;\n border-radius: 3px;\n text-transform: uppercase;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n background: none;\n border: 1px solid #e0e0e0;\n border-radius: 3px;\n color: #666;\n cursor: pointer;\n font-size: 12px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n border-color: #ccc;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-header[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] .action-btn.danger[_ngcontent-%COMP%]:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-content[_ngcontent-%COMP%] {\n padding: 12px 16px;\n}\n.prompts-section[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-card[_ngcontent-%COMP%] .prompt-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n}\n\n.properties-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #28a745;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.properties-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:hover {\n background: #218838;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%], .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 13px;\n background: white;\n box-sizing: border-box;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]:focus, .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]:focus, .properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 60px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n margin: 0;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-group.checkbox-group[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: #666;\n margin-top: 4px;\n margin-left: 24px;\n}\n.properties-section[_ngcontent-%COMP%] .properties-form[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.modal-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n padding: 20px;\n box-sizing: border-box;\n}\n\n.create-subagent-modal[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 500px;\n max-height: calc(100vh - 40px);\n min-height: 300px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n position: relative;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] {\n padding: 20px 24px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #666;\n border-radius: 4px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n color: #333;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] {\n padding: 24px;\n flex: 1;\n overflow-y: auto;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%] {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 20px;\n color: #721c24;\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%], .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]:focus, .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]::placeholder, .create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%]::placeholder {\n color: #999;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .parent-info[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n font-size: 14px;\n color: #666;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .parent-info[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: #333;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] {\n padding: 20px 24px;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%], .create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] {\n padding: 10px 20px;\n border: 1px solid;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%]:disabled, .create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%] {\n background: white;\n border-color: #ddd;\n color: #666;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .cancel-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #ccc;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #1976d2;\n border-color: #1976d2;\n}\n.create-subagent-modal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%] .loading-spinner-sm[_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}"] });
|
|
845
783
|
}
|
|
846
784
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentEditorComponent, [{
|
|
847
785
|
type: Component,
|
|
848
|
-
args: [{ selector: 'mj-agent-editor', template: "<div class=\"agent-editor-container\">\n <!-- Header -->\n <div class=\"editor-header\">\n <div class=\"header-info\">\n <div class=\"header-actions\">\n <button \n type=\"button\" \n class=\"back-btn\"\n (click)=\"closeEditor()\"\n title=\"Back to Agent List\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Agents\n </button>\n \n @if (currentAgent) {\n <button \n type=\"button\" \n class=\"open-btn\"\n (click)=\"openCurrentAgentRecord()\"\n title=\"Open Agent Record\">\n <i class=\"fa-solid fa-external-link\"></i>\n Open Record\n </button>\n }\n </div>\n \n @if (currentAgent) {\n <div class=\"agent-breadcrumb\">\n <h2>{{ currentAgent.Name }}</h2>\n @if (currentAgent.Parent) {\n <span class=\"breadcrumb-item\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n Child of {{ currentAgent.Parent }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Tab Navigation -->\n @if (!isLoading && !error && currentAgent) {\n <div class=\"tab-navigation\">\n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'hierarchy'\"\n (click)=\"setActiveTab('hierarchy')\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Hierarchy\n </button>\n \n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'prompts'\"\n (click)=\"setActiveTab('prompts')\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Prompts\n </button>\n \n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'properties'\"\n (click)=\"setActiveTab('properties')\">\n <i class=\"fa-solid fa-cog\"></i>\n Properties\n </button>\n </div>\n }\n\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent data...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error) {\n <div class=\"error-container\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <h3>Error Loading Agent</h3>\n <p>{{ error }}</p>\n <button class=\"retry-btn\" (click)=\"loadAgentData()\">\n <i class=\"fa-solid fa-retry\"></i>\n Retry\n </button>\n </div>\n </div>\n }\n\n <!-- Tab Content -->\n @if (!isLoading && !error && currentAgent) {\n <div class=\"tab-content\" >\n \n <!-- Hierarchy Tab -->\n @if (activeTab === 'hierarchy') {\n <div class=\"hierarchy-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-sitemap\"></i>\n Agent Hierarchy\n </h3>\n \n <div class=\"hierarchy-controls\">\n <div class=\"zoom-controls\">\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"zoomIn()\"\n title=\"Zoom In\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"zoomOut()\"\n title=\"Zoom Out\">\n <i class=\"fa-solid fa-minus\"></i>\n </button>\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"resetZoom()\"\n title=\"Reset Zoom\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n \n <div class=\"hierarchy-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-rect level-0\"></div>\n <span>Root</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-rect level-1\"></div>\n <span>Level 1</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-rect level-2\"></div>\n <span>Level 2+</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"hierarchy-chart\" #hierarchyChart >\n <!-- Help text overlay -->\n @if (hierarchyData && (hasChildren() || hasParent())) {\n <div class=\"chart-help\">\n <small>\n <i class=\"fa-solid fa-hand-pointer\"></i>\n Drag to pan \u2022 Use zoom controls or scroll to zoom \u2022 Click nodes to navigate\n </small>\n </div>\n }\n \n <!-- Empty state for hierarchy -->\n @if (!hierarchyData || (!hasChildren() && !hasParent())) {\n <div class=\"empty-hierarchy\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Agent Hierarchy</h4>\n <p>This agent doesn't have any parent or child agents yet.</p>\n <button class=\"create-subagent-btn\" (click)=\"openCreateSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n </button>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Prompts Tab -->\n @if (activeTab === 'prompts') {\n <div class=\"prompts-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-comment-dots\"></i>\n Agent Prompts\n </h3>\n <button class=\"add-prompt-btn\" title=\"Add New Prompt\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Prompt\n </button>\n </div>\n \n <div class=\"prompts-list\">\n @if (agentPrompts.length === 0) {\n <div class=\"empty-prompts\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n <p>No prompts configured for this agent</p>\n <button class=\"add-first-prompt-btn\">\n <i class=\"fa-solid fa-plus\"></i>\n Add First Prompt\n </button>\n </div>\n } @else {\n @for (prompt of agentPrompts; track prompt.id) {\n <div class=\"prompt-card\">\n <div class=\"prompt-header\">\n <div class=\"prompt-info\">\n <h4>{{ prompt.name }}</h4>\n <span class=\"prompt-type\">{{ prompt.type }}</span>\n </div>\n <div class=\"prompt-actions\">\n <button class=\"action-btn\" title=\"Edit Prompt\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"action-btn danger\" title=\"Delete Prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n </div>\n <div class=\"prompt-content\">\n <p>{{ prompt.content }}</p>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n \n <!-- Properties Tab -->\n @if (activeTab === 'properties') {\n <div class=\"properties-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-cog\"></i>\n Agent Properties\n </h3>\n <button class=\"save-btn\" title=\"Save Changes\">\n <i class=\"fa-solid fa-save\"></i>\n Save\n </button>\n </div>\n \n <div class=\"properties-form\">\n <div class=\"form-group\">\n <label>Name</label>\n <input \n type=\"text\" \n class=\"form-input\"\n [value]=\"currentAgent.Name\"\n placeholder=\"Agent name\">\n </div>\n \n <div class=\"form-group\">\n <label>Description</label>\n <textarea \n class=\"form-textarea\"\n [value]=\"currentAgent.Description\"\n placeholder=\"Agent description\"\n rows=\"3\"></textarea>\n </div>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Execution Mode</label>\n <select class=\"form-select\" [value]=\"currentAgent.ExecutionMode\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label>Execution Order</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ExecutionOrder\"\n min=\"0\">\n </div>\n </div>\n \n <div class=\"form-group checkbox-group\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [checked]=\"currentAgent.ExposeAsAction\">\n <span class=\"checkmark\"></span>\n Expose as Action\n </label>\n <small>Allow this agent to be used as an action by other agents</small>\n </div>\n \n <div class=\"form-group checkbox-group\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [checked]=\"currentAgent.EnableContextCompression\">\n <span class=\"checkmark\"></span>\n Enable Context Compression\n </label>\n <small>Automatically compress conversation context when threshold is reached</small>\n </div>\n \n @if (currentAgent.EnableContextCompression) {\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Message Threshold</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ContextCompressionMessageThreshold\"\n min=\"1\"\n placeholder=\"Number of messages\">\n </div>\n \n <div class=\"form-group\">\n <label>Retention Count</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ContextCompressionMessageRetentionCount\"\n min=\"0\"\n placeholder=\"Messages to keep\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Sub-Agent Creation Modal -->\n @if (showCreateSubAgent) {\n <div class=\"modal-overlay\" (click)=\"closeCreateSubAgent()\">\n <div class=\"create-subagent-modal\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-header\">\n <h3>\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n </h3>\n <button class=\"close-btn\" (click)=\"closeCreateSubAgent()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n \n <div class=\"modal-body\">\n @if (error) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </div>\n }\n \n <div class=\"form-group\">\n <label>Agent Name *</label>\n <input \n type=\"text\" \n class=\"form-input\"\n [(ngModel)]=\"newSubAgentName\"\n placeholder=\"Enter agent name...\"\n maxlength=\"255\"\n [disabled]=\"isLoading\">\n </div>\n \n <div class=\"form-group\">\n <label>Description</label>\n <textarea \n class=\"form-textarea\"\n [(ngModel)]=\"newSubAgentDescription\"\n placeholder=\"Describe what this sub-agent will do...\"\n rows=\"4\"\n [disabled]=\"isLoading\"></textarea>\n </div>\n \n <div class=\"parent-info\">\n <strong>Parent Agent:</strong> {{ currentAgent?.Name }}\n </div>\n </div>\n \n <div class=\"modal-footer\">\n <button \n class=\"cancel-btn\" \n (click)=\"closeCreateSubAgent()\"\n [disabled]=\"isLoading\">\n Cancel\n </button>\n <button \n class=\"create-btn\" \n (click)=\"createSubAgent()\"\n [disabled]=\"!newSubAgentName.trim() || isLoading\">\n @if (isLoading) {\n <span class=\"loading-spinner-sm\"></span>\n Creating...\n } @else {\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n }\n </button>\n </div>\n </div>\n </div>\n }\n</div>", styles: [".agent-editor-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n.editor-header {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 16px 20px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.editor-header .header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.editor-header .header-info .header-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.editor-header .header-info .back-btn, .editor-header .header-info .open-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n text-decoration: none;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header .header-info .back-btn:hover, .editor-header .header-info .open-btn:hover {\n border-color: #ccc;\n}\n.editor-header .header-info .back-btn {\n background: #f8f9fa;\n color: #666;\n}\n.editor-header .header-info .back-btn:hover {\n background: #e9ecef;\n color: #333;\n}\n.editor-header .header-info .open-btn {\n background: #007bff;\n color: white;\n}\n.editor-header .header-info .open-btn:hover {\n background: #0056b3;\n}\n.editor-header .header-info .agent-breadcrumb h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n.editor-header .header-info .agent-breadcrumb .breadcrumb-item {\n font-size: 14px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n.editor-header .header-controls {\n display: flex;\n gap: 8px;\n}\n.editor-header .header-controls .control-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header .header-controls .control-btn:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.editor-header .header-controls .control-btn.active {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n\n.tab-navigation {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 0 20px;\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n.tab-navigation .tab-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.tab-navigation .tab-btn:hover {\n color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation .tab-btn.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation .tab-btn i {\n font-size: 16px;\n}\n\n.tab-content {\n flex: 1;\n overflow: hidden;\n}\n\n.loading-container, .error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.loading-container .loading-content, .loading-container .error-content, .error-container .loading-content, .error-container .error-content {\n text-align: center;\n}\n.loading-container .loading-content .loading-spinner, .loading-container .error-content .loading-spinner, .error-container .loading-content .loading-spinner, .error-container .error-content .loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n margin: 0 auto 20px;\n}\n.loading-container .loading-content .spinner-ring, .loading-container .error-content .spinner-ring, .error-container .loading-content .spinner-ring, .error-container .error-content .spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n}\n.loading-container .loading-content .spinner-ring:nth-child(1), .loading-container .error-content .spinner-ring:nth-child(1), .error-container .loading-content .spinner-ring:nth-child(1), .error-container .error-content .spinner-ring:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.loading-container .loading-content .spinner-ring:nth-child(2), .loading-container .error-content .spinner-ring:nth-child(2), .error-container .loading-content .spinner-ring:nth-child(2), .error-container .error-content .spinner-ring:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.loading-container .loading-content .spinner-ring:nth-child(3), .loading-container .error-content .spinner-ring:nth-child(3), .error-container .loading-content .spinner-ring:nth-child(3), .error-container .error-content .spinner-ring:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n.loading-container .loading-content .loading-text, .loading-container .error-content .loading-text, .error-container .loading-content .loading-text, .error-container .error-content .loading-text {\n font-size: 16px;\n color: #666;\n}\n.loading-container .loading-content i, .loading-container .error-content i, .error-container .loading-content i, .error-container .error-content i {\n font-size: 48px;\n color: #dc3545;\n margin-bottom: 16px;\n}\n.loading-container .loading-content h3, .loading-container .error-content h3, .error-container .loading-content h3, .error-container .error-content h3 {\n margin: 0 0 8px 0;\n color: #333;\n}\n.loading-container .loading-content p, .loading-container .error-content p, .error-container .loading-content p, .error-container .error-content p {\n margin: 0 0 16px 0;\n color: #666;\n}\n.loading-container .loading-content .retry-btn, .loading-container .error-content .retry-btn, .error-container .loading-content .retry-btn, .error-container .error-content .retry-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #dc3545;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.loading-container .loading-content .retry-btn:hover, .loading-container .error-content .retry-btn:hover, .error-container .loading-content .retry-btn:hover, .error-container .error-content .retry-btn:hover {\n background: #c82333;\n}\n\n.editor-content {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter, .bottom-splitter {\n height: 100%;\n}\n.main-splitter .k-pane, .bottom-splitter .k-pane {\n overflow: hidden;\n}\n\n.hierarchy-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.hierarchy-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.hierarchy-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.hierarchy-section .section-header .hierarchy-controls {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls {\n display: flex;\n gap: 4px;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn i {\n font-size: 12px;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend {\n display: flex;\n gap: 16px;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #666;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect {\n width: 20px;\n height: 12px;\n border-radius: 2px;\n border: 1px solid;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-0 {\n background: #1976d2;\n border-color: #1565c0;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-1 {\n background: #388e3c;\n border-color: #2e7d32;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-2 {\n background: #f57c00;\n border-color: #ef6c00;\n}\n.hierarchy-section .hierarchy-chart {\n flex: 1;\n min-height: 300px;\n overflow: hidden;\n position: relative;\n}\n.hierarchy-section .hierarchy-chart .chart-help {\n position: absolute;\n bottom: 10px;\n left: 10px;\n background: rgba(255, 255, 255, 0.9);\n padding: 6px 10px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n z-index: 10;\n}\n.hierarchy-section .hierarchy-chart .chart-help small {\n font-size: 11px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.hierarchy-section .hierarchy-chart .chart-help small i {\n color: #2196f3;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px 20px;\n text-align: center;\n color: #666;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy i {\n font-size: 64px;\n margin-bottom: 20px;\n opacity: 0.5;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy h4 {\n margin: 0 0 12px 0;\n font-size: 18px;\n color: #333;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy .create-subagent-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px;\n background: #2196f3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy .create-subagent-btn:hover {\n background: #1976d2;\n}\n\n.prompts-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-right: 1px solid #f0f0f0;\n}\n.prompts-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.prompts-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.prompts-section .section-header .add-prompt-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.prompts-section .section-header .add-prompt-btn:hover {\n background: #1976d2;\n}\n.prompts-section .prompts-list {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.prompts-section .prompts-list .empty-prompts {\n text-align: center;\n padding: 40px 20px;\n color: #666;\n}\n.prompts-section .prompts-list .empty-prompts i {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.prompts-section .prompts-list .empty-prompts p {\n margin: 0 0 20px 0;\n font-size: 14px;\n}\n.prompts-section .prompts-list .empty-prompts .add-first-prompt-btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.prompts-section .prompts-list .empty-prompts .add-first-prompt-btn:hover {\n background: #1976d2;\n}\n.prompts-section .prompts-list .prompt-card {\n background: #f8f9fa;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin-bottom: 12px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header {\n padding: 12px 16px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-info h4 {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-info .prompt-type {\n font-size: 11px;\n padding: 2px 6px;\n background: #007bff;\n color: white;\n border-radius: 3px;\n text-transform: uppercase;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions {\n display: flex;\n gap: 4px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn {\n padding: 4px 8px;\n background: none;\n border: 1px solid #e0e0e0;\n border-radius: 3px;\n color: #666;\n cursor: pointer;\n font-size: 12px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn:hover {\n background: #f0f0f0;\n border-color: #ccc;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn.danger:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n.prompts-section .prompts-list .prompt-card .prompt-content {\n padding: 12px 16px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-content p {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n}\n\n.properties-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.properties-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.properties-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.properties-section .section-header .save-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #28a745;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.properties-section .section-header .save-btn:hover {\n background: #218838;\n}\n.properties-section .properties-form {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n.properties-section .properties-form .form-group {\n margin-bottom: 16px;\n}\n.properties-section .properties-form .form-group label {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n.properties-section .properties-form .form-group .form-input, .properties-section .properties-form .form-group .form-select, .properties-section .properties-form .form-group .form-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 13px;\n background: white;\n box-sizing: border-box;\n}\n.properties-section .properties-form .form-group .form-input:focus, .properties-section .properties-form .form-group .form-select:focus, .properties-section .properties-form .form-group .form-textarea:focus {\n outline: none;\n border-color: #2196f3;\n}\n.properties-section .properties-form .form-group .form-textarea {\n resize: vertical;\n min-height: 60px;\n}\n.properties-section .properties-form .form-group.checkbox-group .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n}\n.properties-section .properties-form .form-group.checkbox-group .checkbox-label input[type=checkbox] {\n width: auto;\n margin: 0;\n}\n.properties-section .properties-form .form-group.checkbox-group small {\n display: block;\n font-size: 11px;\n color: #666;\n margin-top: 4px;\n margin-left: 24px;\n}\n.properties-section .properties-form .form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n padding: 20px;\n box-sizing: border-box;\n}\n\n.create-subagent-modal {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 500px;\n max-height: calc(100vh - 40px);\n min-height: 300px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n position: relative;\n}\n.create-subagent-modal .modal-header {\n padding: 20px 24px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.create-subagent-modal .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.create-subagent-modal .modal-header .close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #666;\n border-radius: 4px;\n}\n.create-subagent-modal .modal-header .close-btn:hover {\n background: #f8f9fa;\n color: #333;\n}\n.create-subagent-modal .modal-body {\n padding: 24px;\n flex: 1;\n overflow-y: auto;\n}\n.create-subagent-modal .modal-body .error-message {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 20px;\n color: #721c24;\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal .modal-body .error-message i {\n color: #dc3545;\n}\n.create-subagent-modal .modal-body .form-group {\n margin-bottom: 20px;\n}\n.create-subagent-modal .modal-body .form-group label {\n display: block;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 8px;\n}\n.create-subagent-modal .modal-body .form-group .form-input, .create-subagent-modal .modal-body .form-group .form-textarea {\n width: 100%;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.create-subagent-modal .modal-body .form-group .form-input:focus, .create-subagent-modal .modal-body .form-group .form-textarea:focus {\n outline: none;\n border-color: #2196f3;\n}\n.create-subagent-modal .modal-body .form-group .form-input::placeholder, .create-subagent-modal .modal-body .form-group .form-textarea::placeholder {\n color: #999;\n}\n.create-subagent-modal .modal-body .form-group .form-textarea {\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n}\n.create-subagent-modal .modal-body .parent-info {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n font-size: 14px;\n color: #666;\n}\n.create-subagent-modal .modal-body .parent-info strong {\n color: #333;\n}\n.create-subagent-modal .modal-footer {\n padding: 20px 24px;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n.create-subagent-modal .modal-footer .cancel-btn, .create-subagent-modal .modal-footer .create-btn {\n padding: 10px 20px;\n border: 1px solid;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.create-subagent-modal .modal-footer .cancel-btn:disabled, .create-subagent-modal .modal-footer .create-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.create-subagent-modal .modal-footer .cancel-btn {\n background: white;\n border-color: #ddd;\n color: #666;\n}\n.create-subagent-modal .modal-footer .cancel-btn:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #ccc;\n}\n.create-subagent-modal .modal-footer .create-btn {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal .modal-footer .create-btn:hover:not(:disabled) {\n background: #1976d2;\n border-color: #1976d2;\n}\n.create-subagent-modal .modal-footer .create-btn .loading-spinner-sm {\n width: 14px;\n height: 14px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n"] }]
|
|
849
|
-
}],
|
|
786
|
+
args: [{ standalone: false, selector: 'mj-agent-editor', template: "<div class=\"agent-editor-container\">\n <!-- Header -->\n <div class=\"editor-header\">\n <div class=\"header-info\">\n <div class=\"header-actions\">\n <button \n type=\"button\" \n class=\"back-btn\"\n (click)=\"closeEditor()\"\n title=\"Back to Agent List\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Agents\n </button>\n \n @if (currentAgent) {\n <button \n type=\"button\" \n class=\"open-btn\"\n (click)=\"openCurrentAgentRecord()\"\n title=\"Open Agent Record\">\n <i class=\"fa-solid fa-external-link\"></i>\n Open Record\n </button>\n }\n </div>\n \n @if (currentAgent) {\n <div class=\"agent-breadcrumb\">\n <h2>{{ currentAgent.Name }}</h2>\n @if (currentAgent.Parent) {\n <span class=\"breadcrumb-item\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n Child of {{ currentAgent.Parent }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Tab Navigation -->\n @if (!isLoading && !error && currentAgent) {\n <div class=\"tab-navigation\">\n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'hierarchy'\"\n (click)=\"setActiveTab('hierarchy')\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Hierarchy\n </button>\n \n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'prompts'\"\n (click)=\"setActiveTab('prompts')\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Prompts\n </button>\n \n <button \n type=\"button\" \n class=\"tab-btn\"\n [class.active]=\"activeTab === 'properties'\"\n (click)=\"setActiveTab('properties')\">\n <i class=\"fa-solid fa-cog\"></i>\n Properties\n </button>\n </div>\n }\n\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent data...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error) {\n <div class=\"error-container\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <h3>Error Loading Agent</h3>\n <p>{{ error }}</p>\n <button class=\"retry-btn\" (click)=\"loadAgentData()\">\n <i class=\"fa-solid fa-retry\"></i>\n Retry\n </button>\n </div>\n </div>\n }\n\n <!-- Tab Content -->\n @if (!isLoading && !error && currentAgent) {\n <div class=\"tab-content\" >\n \n <!-- Hierarchy Tab -->\n @if (activeTab === 'hierarchy') {\n <div class=\"hierarchy-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-sitemap\"></i>\n Agent Hierarchy\n </h3>\n \n <div class=\"hierarchy-controls\">\n <div class=\"zoom-controls\">\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"zoomIn()\"\n title=\"Zoom In\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"zoomOut()\"\n title=\"Zoom Out\">\n <i class=\"fa-solid fa-minus\"></i>\n </button>\n <button \n type=\"button\" \n class=\"zoom-btn\"\n (click)=\"resetZoom()\"\n title=\"Reset Zoom\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n \n <div class=\"hierarchy-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-rect level-0\"></div>\n <span>Root</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-rect level-1\"></div>\n <span>Level 1</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-rect level-2\"></div>\n <span>Level 2+</span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"hierarchy-chart\" #hierarchyChart >\n <!-- Help text overlay -->\n @if (hierarchyData && (hasChildren() || hasParent())) {\n <div class=\"chart-help\">\n <small>\n <i class=\"fa-solid fa-hand-pointer\"></i>\n Drag to pan \u2022 Use zoom controls or scroll to zoom \u2022 Click nodes to navigate\n </small>\n </div>\n }\n \n <!-- Empty state for hierarchy -->\n @if (!hierarchyData || (!hasChildren() && !hasParent())) {\n <div class=\"empty-hierarchy\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Agent Hierarchy</h4>\n <p>This agent doesn't have any parent or child agents yet.</p>\n <button class=\"create-subagent-btn\" (click)=\"openCreateSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n </button>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Prompts Tab -->\n @if (activeTab === 'prompts') {\n <div class=\"prompts-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-comment-dots\"></i>\n Agent Prompts\n </h3>\n <button class=\"add-prompt-btn\" title=\"Add New Prompt\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Prompt\n </button>\n </div>\n \n <div class=\"prompts-list\">\n @if (agentPrompts.length === 0) {\n <div class=\"empty-prompts\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n <p>No prompts configured for this agent</p>\n <button class=\"add-first-prompt-btn\">\n <i class=\"fa-solid fa-plus\"></i>\n Add First Prompt\n </button>\n </div>\n } @else {\n @for (prompt of agentPrompts; track prompt.id) {\n <div class=\"prompt-card\">\n <div class=\"prompt-header\">\n <div class=\"prompt-info\">\n <h4>{{ prompt.name }}</h4>\n <span class=\"prompt-type\">{{ prompt.type }}</span>\n </div>\n <div class=\"prompt-actions\">\n <button class=\"action-btn\" title=\"Edit Prompt\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"action-btn danger\" title=\"Delete Prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n </div>\n <div class=\"prompt-content\">\n <p>{{ prompt.content }}</p>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n \n <!-- Properties Tab -->\n @if (activeTab === 'properties') {\n <div class=\"properties-section\" >\n <div class=\"section-header\">\n <h3>\n <i class=\"fa-solid fa-cog\"></i>\n Agent Properties\n </h3>\n <button class=\"save-btn\" title=\"Save Changes\">\n <i class=\"fa-solid fa-save\"></i>\n Save\n </button>\n </div>\n \n <div class=\"properties-form\">\n <div class=\"form-group\">\n <label>Name</label>\n <input \n type=\"text\" \n class=\"form-input\"\n [value]=\"currentAgent.Name\"\n placeholder=\"Agent name\">\n </div>\n \n <div class=\"form-group\">\n <label>Description</label>\n <textarea \n class=\"form-textarea\"\n [value]=\"currentAgent.Description\"\n placeholder=\"Agent description\"\n rows=\"3\"></textarea>\n </div>\n \n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Execution Mode</label>\n <select class=\"form-select\" [value]=\"currentAgent.ExecutionMode\">\n <option value=\"Sequential\">Sequential</option>\n <option value=\"Parallel\">Parallel</option>\n </select>\n </div>\n \n <div class=\"form-group\">\n <label>Execution Order</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ExecutionOrder\"\n min=\"0\">\n </div>\n </div>\n \n <div class=\"form-group checkbox-group\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [checked]=\"currentAgent.ExposeAsAction\">\n <span class=\"checkmark\"></span>\n Expose as Action\n </label>\n <small>Allow this agent to be used as an action by other agents</small>\n </div>\n \n <div class=\"form-group checkbox-group\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [checked]=\"currentAgent.EnableContextCompression\">\n <span class=\"checkmark\"></span>\n Enable Context Compression\n </label>\n <small>Automatically compress conversation context when threshold is reached</small>\n </div>\n \n @if (currentAgent.EnableContextCompression) {\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Message Threshold</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ContextCompressionMessageThreshold\"\n min=\"1\"\n placeholder=\"Number of messages\">\n </div>\n \n <div class=\"form-group\">\n <label>Retention Count</label>\n <input \n type=\"number\" \n class=\"form-input\"\n [value]=\"currentAgent.ContextCompressionMessageRetentionCount\"\n min=\"0\"\n placeholder=\"Messages to keep\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Sub-Agent creation now uses CreateAgentService slide-in panel -->\n</div>", styles: [".agent-editor-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n}\n\n.editor-header {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 16px 20px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.editor-header .header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.editor-header .header-info .header-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.editor-header .header-info .back-btn, .editor-header .header-info .open-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n text-decoration: none;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header .header-info .back-btn:hover, .editor-header .header-info .open-btn:hover {\n border-color: #ccc;\n}\n.editor-header .header-info .back-btn {\n background: #f8f9fa;\n color: #666;\n}\n.editor-header .header-info .back-btn:hover {\n background: #e9ecef;\n color: #333;\n}\n.editor-header .header-info .open-btn {\n background: #007bff;\n color: white;\n}\n.editor-header .header-info .open-btn:hover {\n background: #0056b3;\n}\n.editor-header .header-info .agent-breadcrumb h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n.editor-header .header-info .agent-breadcrumb .breadcrumb-item {\n font-size: 14px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n}\n.editor-header .header-controls {\n display: flex;\n gap: 8px;\n}\n.editor-header .header-controls .control-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.editor-header .header-controls .control-btn:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.editor-header .header-controls .control-btn.active {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n\n.tab-navigation {\n background: white;\n border-bottom: 1px solid #e0e0e0;\n padding: 0 20px;\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n.tab-navigation .tab-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #666;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.tab-navigation .tab-btn:hover {\n color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation .tab-btn.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: #f8f9fa;\n}\n.tab-navigation .tab-btn i {\n font-size: 16px;\n}\n\n.tab-content {\n flex: 1;\n overflow: hidden;\n}\n\n.loading-container, .error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.loading-container .loading-content, .loading-container .error-content, .error-container .loading-content, .error-container .error-content {\n text-align: center;\n}\n.loading-container .loading-content .loading-spinner, .loading-container .error-content .loading-spinner, .error-container .loading-content .loading-spinner, .error-container .error-content .loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n margin: 0 auto 20px;\n}\n.loading-container .loading-content .spinner-ring, .loading-container .error-content .spinner-ring, .error-container .loading-content .spinner-ring, .error-container .error-content .spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n}\n.loading-container .loading-content .spinner-ring:nth-child(1), .loading-container .error-content .spinner-ring:nth-child(1), .error-container .loading-content .spinner-ring:nth-child(1), .error-container .error-content .spinner-ring:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.loading-container .loading-content .spinner-ring:nth-child(2), .loading-container .error-content .spinner-ring:nth-child(2), .error-container .loading-content .spinner-ring:nth-child(2), .error-container .error-content .spinner-ring:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.loading-container .loading-content .spinner-ring:nth-child(3), .loading-container .error-content .spinner-ring:nth-child(3), .error-container .loading-content .spinner-ring:nth-child(3), .error-container .error-content .spinner-ring:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n.loading-container .loading-content .loading-text, .loading-container .error-content .loading-text, .error-container .loading-content .loading-text, .error-container .error-content .loading-text {\n font-size: 16px;\n color: #666;\n}\n.loading-container .loading-content i, .loading-container .error-content i, .error-container .loading-content i, .error-container .error-content i {\n font-size: 48px;\n color: #dc3545;\n margin-bottom: 16px;\n}\n.loading-container .loading-content h3, .loading-container .error-content h3, .error-container .loading-content h3, .error-container .error-content h3 {\n margin: 0 0 8px 0;\n color: #333;\n}\n.loading-container .loading-content p, .loading-container .error-content p, .error-container .loading-content p, .error-container .error-content p {\n margin: 0 0 16px 0;\n color: #666;\n}\n.loading-container .loading-content .retry-btn, .loading-container .error-content .retry-btn, .error-container .loading-content .retry-btn, .error-container .error-content .retry-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #dc3545;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.loading-container .loading-content .retry-btn:hover, .loading-container .error-content .retry-btn:hover, .error-container .loading-content .retry-btn:hover, .error-container .error-content .retry-btn:hover {\n background: #c82333;\n}\n\n.editor-content {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter, .bottom-splitter {\n height: 100%;\n}\n.main-splitter .k-pane, .bottom-splitter .k-pane {\n overflow: hidden;\n}\n\n.hierarchy-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.hierarchy-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.hierarchy-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.hierarchy-section .section-header .hierarchy-controls {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls {\n display: flex;\n gap: 4px;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n color: #2196f3;\n}\n.hierarchy-section .section-header .hierarchy-controls .zoom-controls .zoom-btn i {\n font-size: 12px;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend {\n display: flex;\n gap: 16px;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #666;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect {\n width: 20px;\n height: 12px;\n border-radius: 2px;\n border: 1px solid;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-0 {\n background: #1976d2;\n border-color: #1565c0;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-1 {\n background: #388e3c;\n border-color: #2e7d32;\n}\n.hierarchy-section .section-header .hierarchy-controls .hierarchy-legend .legend-item .legend-rect.level-2 {\n background: #f57c00;\n border-color: #ef6c00;\n}\n.hierarchy-section .hierarchy-chart {\n flex: 1;\n min-height: 300px;\n overflow: hidden;\n position: relative;\n}\n.hierarchy-section .hierarchy-chart .chart-help {\n position: absolute;\n bottom: 10px;\n left: 10px;\n background: rgba(255, 255, 255, 0.9);\n padding: 6px 10px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n z-index: 10;\n}\n.hierarchy-section .hierarchy-chart .chart-help small {\n font-size: 11px;\n color: #666;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.hierarchy-section .hierarchy-chart .chart-help small i {\n color: #2196f3;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px 20px;\n text-align: center;\n color: #666;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy i {\n font-size: 64px;\n margin-bottom: 20px;\n opacity: 0.5;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy h4 {\n margin: 0 0 12px 0;\n font-size: 18px;\n color: #333;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy .create-subagent-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px;\n background: #2196f3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n}\n.hierarchy-section .hierarchy-chart .empty-hierarchy .create-subagent-btn:hover {\n background: #1976d2;\n}\n\n.prompts-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-right: 1px solid #f0f0f0;\n}\n.prompts-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.prompts-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.prompts-section .section-header .add-prompt-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.prompts-section .section-header .add-prompt-btn:hover {\n background: #1976d2;\n}\n.prompts-section .prompts-list {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.prompts-section .prompts-list .empty-prompts {\n text-align: center;\n padding: 40px 20px;\n color: #666;\n}\n.prompts-section .prompts-list .empty-prompts i {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.prompts-section .prompts-list .empty-prompts p {\n margin: 0 0 20px 0;\n font-size: 14px;\n}\n.prompts-section .prompts-list .empty-prompts .add-first-prompt-btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196f3;\n border: none;\n border-radius: 4px;\n color: white;\n cursor: pointer;\n}\n.prompts-section .prompts-list .empty-prompts .add-first-prompt-btn:hover {\n background: #1976d2;\n}\n.prompts-section .prompts-list .prompt-card {\n background: #f8f9fa;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin-bottom: 12px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header {\n padding: 12px 16px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-info h4 {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-info .prompt-type {\n font-size: 11px;\n padding: 2px 6px;\n background: #007bff;\n color: white;\n border-radius: 3px;\n text-transform: uppercase;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions {\n display: flex;\n gap: 4px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn {\n padding: 4px 8px;\n background: none;\n border: 1px solid #e0e0e0;\n border-radius: 3px;\n color: #666;\n cursor: pointer;\n font-size: 12px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn:hover {\n background: #f0f0f0;\n border-color: #ccc;\n}\n.prompts-section .prompts-list .prompt-card .prompt-header .prompt-actions .action-btn.danger:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n.prompts-section .prompts-list .prompt-card .prompt-content {\n padding: 12px 16px;\n}\n.prompts-section .prompts-list .prompt-card .prompt-content p {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n}\n\n.properties-section {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n}\n.properties-section .section-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.properties-section .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.properties-section .section-header .save-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #28a745;\n border: none;\n border-radius: 4px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n}\n.properties-section .section-header .save-btn:hover {\n background: #218838;\n}\n.properties-section .properties-form {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n.properties-section .properties-form .form-group {\n margin-bottom: 16px;\n}\n.properties-section .properties-form .form-group label {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n.properties-section .properties-form .form-group .form-input, .properties-section .properties-form .form-group .form-select, .properties-section .properties-form .form-group .form-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 13px;\n background: white;\n box-sizing: border-box;\n}\n.properties-section .properties-form .form-group .form-input:focus, .properties-section .properties-form .form-group .form-select:focus, .properties-section .properties-form .form-group .form-textarea:focus {\n outline: none;\n border-color: #2196f3;\n}\n.properties-section .properties-form .form-group .form-textarea {\n resize: vertical;\n min-height: 60px;\n}\n.properties-section .properties-form .form-group.checkbox-group .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n}\n.properties-section .properties-form .form-group.checkbox-group .checkbox-label input[type=checkbox] {\n width: auto;\n margin: 0;\n}\n.properties-section .properties-form .form-group.checkbox-group small {\n display: block;\n font-size: 11px;\n color: #666;\n margin-top: 4px;\n margin-left: 24px;\n}\n.properties-section .properties-form .form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n padding: 20px;\n box-sizing: border-box;\n}\n\n.create-subagent-modal {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 500px;\n max-height: calc(100vh - 40px);\n min-height: 300px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n position: relative;\n}\n.create-subagent-modal .modal-header {\n padding: 20px 24px;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.create-subagent-modal .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.create-subagent-modal .modal-header .close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #666;\n border-radius: 4px;\n}\n.create-subagent-modal .modal-header .close-btn:hover {\n background: #f8f9fa;\n color: #333;\n}\n.create-subagent-modal .modal-body {\n padding: 24px;\n flex: 1;\n overflow-y: auto;\n}\n.create-subagent-modal .modal-body .error-message {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 20px;\n color: #721c24;\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal .modal-body .error-message i {\n color: #dc3545;\n}\n.create-subagent-modal .modal-body .form-group {\n margin-bottom: 20px;\n}\n.create-subagent-modal .modal-body .form-group label {\n display: block;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n margin-bottom: 8px;\n}\n.create-subagent-modal .modal-body .form-group .form-input, .create-subagent-modal .modal-body .form-group .form-textarea {\n width: 100%;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.create-subagent-modal .modal-body .form-group .form-input:focus, .create-subagent-modal .modal-body .form-group .form-textarea:focus {\n outline: none;\n border-color: #2196f3;\n}\n.create-subagent-modal .modal-body .form-group .form-input::placeholder, .create-subagent-modal .modal-body .form-group .form-textarea::placeholder {\n color: #999;\n}\n.create-subagent-modal .modal-body .form-group .form-textarea {\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n}\n.create-subagent-modal .modal-body .parent-info {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n font-size: 14px;\n color: #666;\n}\n.create-subagent-modal .modal-body .parent-info strong {\n color: #333;\n}\n.create-subagent-modal .modal-footer {\n padding: 20px 24px;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n.create-subagent-modal .modal-footer .cancel-btn, .create-subagent-modal .modal-footer .create-btn {\n padding: 10px 20px;\n border: 1px solid;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n}\n.create-subagent-modal .modal-footer .cancel-btn:disabled, .create-subagent-modal .modal-footer .create-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.create-subagent-modal .modal-footer .cancel-btn {\n background: white;\n border-color: #ddd;\n color: #666;\n}\n.create-subagent-modal .modal-footer .cancel-btn:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #ccc;\n}\n.create-subagent-modal .modal-footer .create-btn {\n background: #2196f3;\n border-color: #2196f3;\n color: white;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.create-subagent-modal .modal-footer .create-btn:hover:not(:disabled) {\n background: #1976d2;\n border-color: #1976d2;\n}\n.create-subagent-modal .modal-footer .create-btn .loading-spinner-sm {\n width: 14px;\n height: 14px;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n"] }]
|
|
787
|
+
}], () => [{ type: i1.CreateAgentService }, { type: i2.NavigationService }], { agentId: [{
|
|
850
788
|
type: Input
|
|
851
789
|
}], close: [{
|
|
852
790
|
type: Output
|
|
@@ -858,5 +796,5 @@ export class AgentEditorComponent {
|
|
|
858
796
|
type: ViewChild,
|
|
859
797
|
args: ['hierarchyChart', { static: false }]
|
|
860
798
|
}] }); })();
|
|
861
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentEditorComponent, { className: "AgentEditorComponent", filePath: "src/AI/components/agents/agent-editor.component.ts", lineNumber:
|
|
799
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentEditorComponent, { className: "AgentEditorComponent", filePath: "src/AI/components/agents/agent-editor.component.ts", lineNumber: 31 }); })();
|
|
862
800
|
//# sourceMappingURL=agent-editor.component.js.map
|