@memberjunction/ng-dashboards 5.4.0 → 5.5.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/dist/AI/components/agents/agent-configuration.component.js +4 -4
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +5 -4
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +3 -3
- 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 +8 -7
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +3 -3
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +4 -4
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +3 -2
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +4 -3
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +3 -3
- 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 +3 -2
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +2 -2
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +2 -2
- package/dist/Actions/components/explorer/action-explorer.component.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 +3 -2
- 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 +3 -2
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +2 -2
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +6 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +19 -6
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -0
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +13 -4
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -0
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +13 -9
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +11 -11
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +13 -9
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +11 -11
- 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 +4 -3
- package/dist/DashboardBrowser/dashboard-share-dialog.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 +4 -3
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +6 -6
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +4 -1
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +9 -8
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-application.js +2 -2
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +3 -3
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +1 -0
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +17 -14
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +2 -2
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +1 -0
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +15 -12
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +3 -2
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +8 -7
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +22 -22
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +2 -0
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +14 -10
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +2 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +1 -0
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +22 -18
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +1 -0
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +14 -10
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +6 -6
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +2 -2
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +3 -3
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/package.json +38 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-editor.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-editor.component.ts","../../../../src/AI/components/agents/agent-editor.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { RunView, Metadata, LogError, LogStatus } from '@memberjunction/core';\nimport { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { CreateAgentService, CreateAgentResult } from '@memberjunction/ng-agents';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport * as d3 from 'd3';\n\ninterface AgentHierarchyNode {\n id: string;\n name: string;\n agent: MJAIAgentEntityExtended;\n children?: AgentHierarchyNode[];\n parent?: AgentHierarchyNode;\n x?: number;\n y?: number;\n}\n\ninterface AgentPrompt {\n id: string;\n name: string;\n content: string;\n type: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-agent-editor',\n templateUrl: './agent-editor.component.html',\n styleUrls: ['./agent-editor.component.css']\n})\nexport class AgentEditorComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() agentId: string | null = null;\n @Output() close = new EventEmitter<void>();\n @Output() openAgent = new EventEmitter<string>();\n @Output() openEntityRecord = new EventEmitter<{entityName: string, recordId: string}>();\n\n @ViewChild('hierarchyChart', { static: false }) hierarchyChartRef!: ElementRef;\n\n public isLoading = false;\n public error: string | null = null;\n public currentAgent: MJAIAgentEntityExtended | null = null;\n public allAgents: MJAIAgentEntityExtended[] = [];\n public hierarchyData: AgentHierarchyNode | null = null;\n public selectedNode: AgentHierarchyNode | null = null;\n public agentPrompts: AgentPrompt[] = [];\n\n // Tab settings\n public activeTab: 'hierarchy' | 'prompts' | 'properties' = 'hierarchy';\n \n // Legacy layout settings (keeping for compatibility)\n public showHierarchy = true;\n public showPrompts = true;\n public showProperties = true;\n \n // D3 variables\n private svg: any;\n private g: any;\n private tree: any;\n private root: any;\n private zoom: any;\n\n constructor(\n private createAgentService: CreateAgentService,\n private navigationService: NavigationService\n ) {}\n\n ngOnInit(): void {\n if (this.agentId) {\n this.loadAgentData();\n }\n }\n\n ngAfterViewInit(): void {\n // Chart initialization now happens after data loading in loadAgentData()\n }\n\n ngOnDestroy(): void {\n // Cleanup D3\n if (this.svg) {\n this.svg.remove();\n }\n }\n\n public async loadAgentData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n\n // Load all agents to build hierarchy\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: 'MJ: AI Agents',\n ExtraFilter: '',\n OrderBy: 'Name',\n MaxRows: 1000\n });\n\n this.allAgents = result.Results as MJAIAgentEntityExtended[];\n this.currentAgent = this.allAgents.find(a => a.ID === this.agentId) || null;\n\n if (this.currentAgent) {\n this.buildHierarchy();\n this.loadAgentPrompts();\n \n // Initialize chart after data is loaded\n setTimeout(() => {\n if (this.hierarchyChartRef) {\n this.initializeChart();\n }\n }, 100);\n }\n } catch (error) {\n console.error('Error loading agent data:', error);\n this.error = 'Failed to load agent data';\n } finally {\n this.isLoading = false;\n }\n }\n\n private buildHierarchy(): void {\n if (!this.currentAgent) return;\n\n // Find the root of the hierarchy that contains our current agent\n const rootAgent = this.findRootAgent(this.currentAgent);\n \n this.hierarchyData = this.buildHierarchyTree(rootAgent);\n this.selectedNode = this.findNodeInHierarchy(this.hierarchyData, this.currentAgent.ID);\n }\n\n private findRootAgent(agent: MJAIAgentEntityExtended): MJAIAgentEntityExtended {\n let current = agent;\n while (current.ParentID) {\n const parent = this.allAgents.find(a => a.ID === current.ParentID);\n if (!parent) break;\n current = parent;\n }\n return current;\n }\n\n private buildHierarchyTree(agent: MJAIAgentEntityExtended): AgentHierarchyNode {\n const children = this.allAgents\n .filter(a => a.ParentID === agent.ID)\n .map(child => this.buildHierarchyTree(child));\n\n const node: AgentHierarchyNode = {\n id: agent.ID,\n name: agent.Name || 'Unnamed Agent',\n agent: agent,\n children: children\n };\n\n // Set parent references\n if (node.children) {\n node.children.forEach(child => child.parent = node);\n }\n\n return node;\n }\n\n private findNodeInHierarchy(node: AgentHierarchyNode, agentId: string): AgentHierarchyNode | null {\n if (node.id === agentId) return node;\n \n if (node.children) {\n for (const child of node.children) {\n const found = this.findNodeInHierarchy(child, agentId);\n if (found) return found;\n }\n }\n \n return null;\n }\n\n private async loadAgentPrompts(): Promise<void> {\n if (!this.currentAgent) return;\n \n try {\n // This would load prompts associated with the agent\n // For now, using mock data structure\n this.agentPrompts = [\n { id: '1', name: 'System Prompt', content: 'Default system instructions...', type: 'system' },\n { id: '2', name: 'User Prompt', content: 'User interaction template...', type: 'user' }\n ];\n } catch (error) {\n console.error('Error loading agent prompts:', error);\n }\n }\n\n private initializeChart(): void {\n if (!this.hierarchyChartRef?.nativeElement) {\n return;\n }\n\n const container = this.hierarchyChartRef.nativeElement;\n const width = container.clientWidth || 800;\n const height = container.clientHeight || 600;\n\n // Clear any existing SVG\n d3.select(container).selectAll('*').remove();\n\n // Create SVG with zoom/pan functionality\n this.svg = d3.select(container)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .style('background', '#fafafa')\n .style('border', '1px solid #e0e0e0');\n\n // Create zoom behavior with wheel support\n this.zoom = d3.zoom()\n .scaleExtent([0.1, 3])\n .wheelDelta((event: any) => -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1))\n .on('zoom', (event) => {\n this.g.attr('transform', event.transform);\n });\n\n // Apply zoom to SVG\n this.svg.call(this.zoom);\n\n // Create main group for chart content\n this.g = this.svg.append('g');\n\n // Create tree layout with proper spacing - use nodeSize for fixed spacing\n this.tree = d3.tree()\n .nodeSize([150, 100]) // Fixed node spacing: 150px horizontal, 100px vertical\n .separation((a: any, b: any) => a.parent === b.parent ? 1 : 1.5);\n\n this.renderHierarchy();\n }\n\n private renderHierarchy(): void {\n if (!this.hierarchyData || !this.g || !this.tree) {\n return;\n }\n\n // Create hierarchy\n this.root = d3.hierarchy(this.hierarchyData);\n this.tree(this.root);\n\n // Clear previous render\n this.g.selectAll('*').remove();\n\n // Get container dimensions\n const container = this.hierarchyChartRef.nativeElement;\n const containerWidth = container.clientWidth || 800;\n \n // Calculate the tree bounds after layout\n const treeBounds = this.getTreeBounds(this.root);\n \n // Calculate centering offsets\n const offsetX = (containerWidth - treeBounds.width) / 2 - treeBounds.minX;\n const offsetY = 150; // Top margin for the tree\n \n // Apply transform to center the tree properly\n this.g.attr('transform', `translate(${offsetX}, ${offsetY})`);\n\n // Draw links\n this.g.selectAll('.link')\n .data(this.root.links())\n .enter().append('path')\n .attr('class', 'link')\n .attr('d', d3.linkVertical()\n .x((d: any) => d.x)\n .y((d: any) => d.y))\n .style('fill', 'none')\n .style('stroke', '#999')\n .style('stroke-width', '2px')\n .style('stroke-opacity', 0.6);\n\n // Draw nodes\n const nodes = this.g.selectAll('.node')\n .data(this.root.descendants())\n .enter().append('g')\n .attr('class', 'node')\n .attr('transform', (d: any) => `translate(${d.x}, ${d.y})`)\n .style('cursor', 'pointer')\n .on('click', (_event: any, d: any) => this.onNodeClick(d.data));\n\n // Add rectangles for nodes\n const nodeWidth = 120;\n const nodeHeight = 40;\n \n nodes.append('rect')\n .attr('x', -nodeWidth / 2)\n .attr('y', -nodeHeight / 2)\n .attr('width', nodeWidth)\n .attr('height', nodeHeight)\n .attr('rx', 6)\n .attr('ry', 6)\n .style('fill', (d: any) => this.getNodeColor(d))\n .style('stroke', (d: any) => this.getNodeStrokeColor(d))\n .style('stroke-width', (d: any) => d.data.id === this.currentAgent?.ID ? '3px' : '2px')\n .style('opacity', 0.9);\n\n // Add node labels (agent names)\n nodes.append('text')\n .attr('dy', -2)\n .attr('text-anchor', 'middle')\n .style('font-size', '11px')\n .style('font-weight', (d: any) => d.data.id === this.currentAgent?.ID ? 'bold' : '500')\n .style('fill', '#333')\n .style('pointer-events', 'none')\n .text((d: any) => {\n const name = d.data.name;\n return name.length > 14 ? name.substring(0, 11) + '...' : name;\n });\n\n // Add execution mode labels\n nodes.append('text')\n .attr('dy', 12)\n .attr('text-anchor', 'middle')\n .style('font-size', '9px')\n .style('fill', '#666')\n .style('pointer-events', 'none')\n .text((d: any) => d.data.agent.ExecutionMode);\n\n // Add level indicators\n nodes.append('text')\n .attr('x', nodeWidth / 2 - 8)\n .attr('y', -nodeHeight / 2 + 12)\n .attr('text-anchor', 'middle')\n .style('font-size', '8px')\n .style('font-weight', 'bold')\n .style('fill', '#fff')\n .style('pointer-events', 'none')\n .text((d: any) => `L${d.depth}`);\n }\n\n private getTreeBounds(root: any): { width: number, height: number, minX: number, maxX: number, minY: number, maxY: number } {\n let minX = Infinity, maxX = -Infinity;\n let minY = Infinity, maxY = -Infinity;\n \n root.descendants().forEach((d: any) => {\n minX = Math.min(minX, d.x);\n maxX = Math.max(maxX, d.x);\n minY = Math.min(minY, d.y);\n maxY = Math.max(maxY, d.y);\n });\n \n return {\n width: maxX - minX,\n height: maxY - minY,\n minX,\n maxX,\n minY,\n maxY\n };\n }\n\n private getNodeColor(d: any): string {\n const level = d.depth;\n const isCurrentAgent = d.data.id === this.currentAgent?.ID;\n \n // Level-based color scheme\n const levelColors = [\n '#1976d2', // Level 0 (root) - Blue\n '#388e3c', // Level 1 - Green \n '#f57c00', // Level 2 - Orange\n '#7b1fa2', // Level 3 - Purple\n '#c2185b', // Level 4 - Pink\n '#5d4037' // Level 5+ - Brown\n ];\n \n const baseColor = levelColors[Math.min(level, levelColors.length - 1)];\n \n // Highlight current agent with brighter color\n if (isCurrentAgent) {\n return baseColor;\n }\n \n // Make non-current agents slightly lighter\n return this.lightenColor(baseColor, 0.3);\n }\n\n private getNodeStrokeColor(d: any): string {\n const isCurrentAgent = d.data.id === this.currentAgent?.ID;\n if (isCurrentAgent) {\n return '#000';\n }\n return '#666';\n }\n\n private lightenColor(color: string, factor: number): string {\n // Simple color lightening function\n const hex = color.replace('#', '');\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n \n const newR = Math.min(255, Math.floor(r + (255 - r) * factor));\n const newG = Math.min(255, Math.floor(g + (255 - g) * factor));\n const newB = Math.min(255, Math.floor(b + (255 - b) * factor));\n \n return `rgb(${newR}, ${newG}, ${newB})`;\n }\n\n public onNodeClick(node: AgentHierarchyNode): void {\n if (node.id !== this.currentAgent?.ID) {\n this.openAgent.emit(node.id);\n }\n }\n\n public zoomIn(): void {\n if (this.svg && this.zoom) {\n this.svg.transition().call(\n this.zoom.scaleBy, 1.5\n );\n }\n }\n\n public zoomOut(): void {\n if (this.svg && this.zoom) {\n this.svg.transition().call(\n this.zoom.scaleBy, 1 / 1.5\n );\n }\n }\n\n public resetZoom(): void {\n if (this.svg && this.zoom) {\n // Reset to initial centered position\n this.svg.transition().call(\n this.zoom.transform,\n d3.zoomIdentity\n );\n }\n }\n\n public navigateToAgent(agentId: string): void {\n this.openAgent.emit(agentId);\n }\n\n public closeEditor(): void {\n this.close.emit();\n }\n\n public setActiveTab(tab: 'hierarchy' | 'prompts' | 'properties'): void {\n this.activeTab = tab;\n }\n\n public getExecutionModeColor(mode: string): string {\n return mode === 'Sequential' ? '#2196f3' : '#4caf50';\n }\n\n public getExecutionModeIcon(mode: string): string {\n return mode === 'Sequential' ? 'fa-solid fa-list-ol' : 'fa-solid fa-layer-group';\n }\n\n /**\n * Opens the create sub-agent slide-in panel using the new CreateAgentService.\n * After successful creation, saves the agent and navigates to it.\n */\n public openCreateSubAgent(): void {\n if (!this.currentAgent) return;\n\n this.error = null;\n\n this.createAgentService.OpenSubAgentSlideIn(\n this.currentAgent.ID,\n this.currentAgent.Name || 'Agent'\n ).subscribe({\n next: async (dialogResult) => {\n if (!dialogResult.Cancelled && dialogResult.Result) {\n await this.handleAgentCreated(dialogResult.Result);\n }\n },\n error: (err) => {\n console.error('Error in create sub-agent slide-in:', err);\n this.error = 'Failed to open create sub-agent panel';\n }\n });\n }\n\n /**\n * Handles the result from the create agent slide-in.\n * Saves the agent and navigates to the new record.\n */\n private async handleAgentCreated(result: CreateAgentResult): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n\n const agent = result.Agent;\n\n // Save the new agent\n const saveResult = await agent.Save();\n\n if (saveResult) {\n LogStatus('Sub-agent created successfully');\n\n // Save any linked prompts\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n // Update the AgentID now that the agent has been saved\n agentPrompt.AgentID = agent.ID;\n await agentPrompt.Save();\n }\n }\n\n // Save any linked actions\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n // Update the AgentID now that the agent has been saved\n agentAction.AgentID = agent.ID;\n await agentAction.Save();\n }\n }\n\n // Reload agent data to show the new hierarchy\n await this.loadAgentData();\n\n // Navigate to the newly created agent record\n this.navigationService.OpenEntityRecord('MJ: AI Agents', agent.PrimaryKey);\n } else {\n const errorMessage = agent.LatestResult?.Message || 'Unknown error occurred while creating sub-agent';\n this.error = `Failed to create sub-agent: ${errorMessage}`;\n LogError('Sub-agent creation failed', undefined, errorMessage);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'An unexpected error occurred';\n this.error = `Failed to create sub-agent: ${errorMessage}`;\n LogError('Error creating sub-agent', undefined, error);\n } finally {\n this.isLoading = false;\n }\n }\n\n public hasChildren(): boolean {\n return this.selectedNode?.children && this.selectedNode.children.length > 0 || false;\n }\n\n public hasParent(): boolean {\n return this.selectedNode?.parent !== undefined;\n }\n\n public getChildCount(): number {\n return this.selectedNode?.children?.length || 0;\n }\n\n public openCurrentAgentRecord(): void {\n if (this.currentAgent) {\n this.openEntityRecord.emit({ entityName: 'MJ: AI Agents', recordId: this.currentAgent.ID });\n }\n }\n}","<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 • Use zoom controls or scroll to zoom • 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>"]}
|
|
1
|
+
{"version":3,"file":"agent-editor.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-editor.component.ts","../../../../src/AI/components/agents/agent-editor.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { RunView, Metadata, LogError, LogStatus } from '@memberjunction/core';\nimport { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { CreateAgentService, CreateAgentResult } from '@memberjunction/ng-agents';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport * as d3 from 'd3';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface AgentHierarchyNode {\n id: string;\n name: string;\n agent: MJAIAgentEntityExtended;\n children?: AgentHierarchyNode[];\n parent?: AgentHierarchyNode;\n x?: number;\n y?: number;\n}\n\ninterface AgentPrompt {\n id: string;\n name: string;\n content: string;\n type: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-agent-editor',\n templateUrl: './agent-editor.component.html',\n styleUrls: ['./agent-editor.component.css']\n})\nexport class AgentEditorComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() agentId: string | null = null;\n @Output() close = new EventEmitter<void>();\n @Output() openAgent = new EventEmitter<string>();\n @Output() openEntityRecord = new EventEmitter<{entityName: string, recordId: string}>();\n\n @ViewChild('hierarchyChart', { static: false }) hierarchyChartRef!: ElementRef;\n\n public isLoading = false;\n public error: string | null = null;\n public currentAgent: MJAIAgentEntityExtended | null = null;\n public allAgents: MJAIAgentEntityExtended[] = [];\n public hierarchyData: AgentHierarchyNode | null = null;\n public selectedNode: AgentHierarchyNode | null = null;\n public agentPrompts: AgentPrompt[] = [];\n\n // Tab settings\n public activeTab: 'hierarchy' | 'prompts' | 'properties' = 'hierarchy';\n \n // Legacy layout settings (keeping for compatibility)\n public showHierarchy = true;\n public showPrompts = true;\n public showProperties = true;\n \n // D3 variables\n private svg: any;\n private g: any;\n private tree: any;\n private root: any;\n private zoom: any;\n\n constructor(\n private createAgentService: CreateAgentService,\n private navigationService: NavigationService\n ) {}\n\n ngOnInit(): void {\n if (this.agentId) {\n this.loadAgentData();\n }\n }\n\n ngAfterViewInit(): void {\n // Chart initialization now happens after data loading in loadAgentData()\n }\n\n ngOnDestroy(): void {\n // Cleanup D3\n if (this.svg) {\n this.svg.remove();\n }\n }\n\n public async loadAgentData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n\n // Load all agents to build hierarchy\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: 'MJ: AI Agents',\n ExtraFilter: '',\n OrderBy: 'Name',\n MaxRows: 1000\n });\n\n this.allAgents = result.Results as MJAIAgentEntityExtended[];\n this.currentAgent = this.allAgents.find(a => UUIDsEqual(a.ID, this.agentId)) || null;\n\n if (this.currentAgent) {\n this.buildHierarchy();\n this.loadAgentPrompts();\n \n // Initialize chart after data is loaded\n setTimeout(() => {\n if (this.hierarchyChartRef) {\n this.initializeChart();\n }\n }, 100);\n }\n } catch (error) {\n console.error('Error loading agent data:', error);\n this.error = 'Failed to load agent data';\n } finally {\n this.isLoading = false;\n }\n }\n\n private buildHierarchy(): void {\n if (!this.currentAgent) return;\n\n // Find the root of the hierarchy that contains our current agent\n const rootAgent = this.findRootAgent(this.currentAgent);\n \n this.hierarchyData = this.buildHierarchyTree(rootAgent);\n this.selectedNode = this.findNodeInHierarchy(this.hierarchyData, this.currentAgent.ID);\n }\n\n private findRootAgent(agent: MJAIAgentEntityExtended): MJAIAgentEntityExtended {\n let current = agent;\n while (current.ParentID) {\n const parent = this.allAgents.find(a => UUIDsEqual(a.ID, current.ParentID));\n if (!parent) break;\n current = parent;\n }\n return current;\n }\n\n private buildHierarchyTree(agent: MJAIAgentEntityExtended): AgentHierarchyNode {\n const children = this.allAgents\n .filter(a => UUIDsEqual(a.ParentID, agent.ID))\n .map(child => this.buildHierarchyTree(child));\n\n const node: AgentHierarchyNode = {\n id: agent.ID,\n name: agent.Name || 'Unnamed Agent',\n agent: agent,\n children: children\n };\n\n // Set parent references\n if (node.children) {\n node.children.forEach(child => child.parent = node);\n }\n\n return node;\n }\n\n private findNodeInHierarchy(node: AgentHierarchyNode, agentId: string): AgentHierarchyNode | null {\n if (node.id === agentId) return node;\n \n if (node.children) {\n for (const child of node.children) {\n const found = this.findNodeInHierarchy(child, agentId);\n if (found) return found;\n }\n }\n \n return null;\n }\n\n private async loadAgentPrompts(): Promise<void> {\n if (!this.currentAgent) return;\n \n try {\n // This would load prompts associated with the agent\n // For now, using mock data structure\n this.agentPrompts = [\n { id: '1', name: 'System Prompt', content: 'Default system instructions...', type: 'system' },\n { id: '2', name: 'User Prompt', content: 'User interaction template...', type: 'user' }\n ];\n } catch (error) {\n console.error('Error loading agent prompts:', error);\n }\n }\n\n private initializeChart(): void {\n if (!this.hierarchyChartRef?.nativeElement) {\n return;\n }\n\n const container = this.hierarchyChartRef.nativeElement;\n const width = container.clientWidth || 800;\n const height = container.clientHeight || 600;\n\n // Clear any existing SVG\n d3.select(container).selectAll('*').remove();\n\n // Create SVG with zoom/pan functionality\n this.svg = d3.select(container)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .style('background', '#fafafa')\n .style('border', '1px solid #e0e0e0');\n\n // Create zoom behavior with wheel support\n this.zoom = d3.zoom()\n .scaleExtent([0.1, 3])\n .wheelDelta((event: any) => -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1))\n .on('zoom', (event) => {\n this.g.attr('transform', event.transform);\n });\n\n // Apply zoom to SVG\n this.svg.call(this.zoom);\n\n // Create main group for chart content\n this.g = this.svg.append('g');\n\n // Create tree layout with proper spacing - use nodeSize for fixed spacing\n this.tree = d3.tree()\n .nodeSize([150, 100]) // Fixed node spacing: 150px horizontal, 100px vertical\n .separation((a: any, b: any) => a.parent === b.parent ? 1 : 1.5);\n\n this.renderHierarchy();\n }\n\n private renderHierarchy(): void {\n if (!this.hierarchyData || !this.g || !this.tree) {\n return;\n }\n\n // Create hierarchy\n this.root = d3.hierarchy(this.hierarchyData);\n this.tree(this.root);\n\n // Clear previous render\n this.g.selectAll('*').remove();\n\n // Get container dimensions\n const container = this.hierarchyChartRef.nativeElement;\n const containerWidth = container.clientWidth || 800;\n \n // Calculate the tree bounds after layout\n const treeBounds = this.getTreeBounds(this.root);\n \n // Calculate centering offsets\n const offsetX = (containerWidth - treeBounds.width) / 2 - treeBounds.minX;\n const offsetY = 150; // Top margin for the tree\n \n // Apply transform to center the tree properly\n this.g.attr('transform', `translate(${offsetX}, ${offsetY})`);\n\n // Draw links\n this.g.selectAll('.link')\n .data(this.root.links())\n .enter().append('path')\n .attr('class', 'link')\n .attr('d', d3.linkVertical()\n .x((d: any) => d.x)\n .y((d: any) => d.y))\n .style('fill', 'none')\n .style('stroke', '#999')\n .style('stroke-width', '2px')\n .style('stroke-opacity', 0.6);\n\n // Draw nodes\n const nodes = this.g.selectAll('.node')\n .data(this.root.descendants())\n .enter().append('g')\n .attr('class', 'node')\n .attr('transform', (d: any) => `translate(${d.x}, ${d.y})`)\n .style('cursor', 'pointer')\n .on('click', (_event: any, d: any) => this.onNodeClick(d.data));\n\n // Add rectangles for nodes\n const nodeWidth = 120;\n const nodeHeight = 40;\n \n nodes.append('rect')\n .attr('x', -nodeWidth / 2)\n .attr('y', -nodeHeight / 2)\n .attr('width', nodeWidth)\n .attr('height', nodeHeight)\n .attr('rx', 6)\n .attr('ry', 6)\n .style('fill', (d: any) => this.getNodeColor(d))\n .style('stroke', (d: any) => this.getNodeStrokeColor(d))\n .style('stroke-width', (d: any) => d.data.id === this.currentAgent?.ID ? '3px' : '2px')\n .style('opacity', 0.9);\n\n // Add node labels (agent names)\n nodes.append('text')\n .attr('dy', -2)\n .attr('text-anchor', 'middle')\n .style('font-size', '11px')\n .style('font-weight', (d: any) => d.data.id === this.currentAgent?.ID ? 'bold' : '500')\n .style('fill', '#333')\n .style('pointer-events', 'none')\n .text((d: any) => {\n const name = d.data.name;\n return name.length > 14 ? name.substring(0, 11) + '...' : name;\n });\n\n // Add execution mode labels\n nodes.append('text')\n .attr('dy', 12)\n .attr('text-anchor', 'middle')\n .style('font-size', '9px')\n .style('fill', '#666')\n .style('pointer-events', 'none')\n .text((d: any) => d.data.agent.ExecutionMode);\n\n // Add level indicators\n nodes.append('text')\n .attr('x', nodeWidth / 2 - 8)\n .attr('y', -nodeHeight / 2 + 12)\n .attr('text-anchor', 'middle')\n .style('font-size', '8px')\n .style('font-weight', 'bold')\n .style('fill', '#fff')\n .style('pointer-events', 'none')\n .text((d: any) => `L${d.depth}`);\n }\n\n private getTreeBounds(root: any): { width: number, height: number, minX: number, maxX: number, minY: number, maxY: number } {\n let minX = Infinity, maxX = -Infinity;\n let minY = Infinity, maxY = -Infinity;\n \n root.descendants().forEach((d: any) => {\n minX = Math.min(minX, d.x);\n maxX = Math.max(maxX, d.x);\n minY = Math.min(minY, d.y);\n maxY = Math.max(maxY, d.y);\n });\n \n return {\n width: maxX - minX,\n height: maxY - minY,\n minX,\n maxX,\n minY,\n maxY\n };\n }\n\n private getNodeColor(d: any): string {\n const level = d.depth;\n const isCurrentAgent = d.data.id === this.currentAgent?.ID;\n \n // Level-based color scheme\n const levelColors = [\n '#1976d2', // Level 0 (root) - Blue\n '#388e3c', // Level 1 - Green \n '#f57c00', // Level 2 - Orange\n '#7b1fa2', // Level 3 - Purple\n '#c2185b', // Level 4 - Pink\n '#5d4037' // Level 5+ - Brown\n ];\n \n const baseColor = levelColors[Math.min(level, levelColors.length - 1)];\n \n // Highlight current agent with brighter color\n if (isCurrentAgent) {\n return baseColor;\n }\n \n // Make non-current agents slightly lighter\n return this.lightenColor(baseColor, 0.3);\n }\n\n private getNodeStrokeColor(d: any): string {\n const isCurrentAgent = d.data.id === this.currentAgent?.ID;\n if (isCurrentAgent) {\n return '#000';\n }\n return '#666';\n }\n\n private lightenColor(color: string, factor: number): string {\n // Simple color lightening function\n const hex = color.replace('#', '');\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n \n const newR = Math.min(255, Math.floor(r + (255 - r) * factor));\n const newG = Math.min(255, Math.floor(g + (255 - g) * factor));\n const newB = Math.min(255, Math.floor(b + (255 - b) * factor));\n \n return `rgb(${newR}, ${newG}, ${newB})`;\n }\n\n public onNodeClick(node: AgentHierarchyNode): void {\n if (node.id !== this.currentAgent?.ID) {\n this.openAgent.emit(node.id);\n }\n }\n\n public zoomIn(): void {\n if (this.svg && this.zoom) {\n this.svg.transition().call(\n this.zoom.scaleBy, 1.5\n );\n }\n }\n\n public zoomOut(): void {\n if (this.svg && this.zoom) {\n this.svg.transition().call(\n this.zoom.scaleBy, 1 / 1.5\n );\n }\n }\n\n public resetZoom(): void {\n if (this.svg && this.zoom) {\n // Reset to initial centered position\n this.svg.transition().call(\n this.zoom.transform,\n d3.zoomIdentity\n );\n }\n }\n\n public navigateToAgent(agentId: string): void {\n this.openAgent.emit(agentId);\n }\n\n public closeEditor(): void {\n this.close.emit();\n }\n\n public setActiveTab(tab: 'hierarchy' | 'prompts' | 'properties'): void {\n this.activeTab = tab;\n }\n\n public getExecutionModeColor(mode: string): string {\n return mode === 'Sequential' ? '#2196f3' : '#4caf50';\n }\n\n public getExecutionModeIcon(mode: string): string {\n return mode === 'Sequential' ? 'fa-solid fa-list-ol' : 'fa-solid fa-layer-group';\n }\n\n /**\n * Opens the create sub-agent slide-in panel using the new CreateAgentService.\n * After successful creation, saves the agent and navigates to it.\n */\n public openCreateSubAgent(): void {\n if (!this.currentAgent) return;\n\n this.error = null;\n\n this.createAgentService.OpenSubAgentSlideIn(\n this.currentAgent.ID,\n this.currentAgent.Name || 'Agent'\n ).subscribe({\n next: async (dialogResult) => {\n if (!dialogResult.Cancelled && dialogResult.Result) {\n await this.handleAgentCreated(dialogResult.Result);\n }\n },\n error: (err) => {\n console.error('Error in create sub-agent slide-in:', err);\n this.error = 'Failed to open create sub-agent panel';\n }\n });\n }\n\n /**\n * Handles the result from the create agent slide-in.\n * Saves the agent and navigates to the new record.\n */\n private async handleAgentCreated(result: CreateAgentResult): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n\n const agent = result.Agent;\n\n // Save the new agent\n const saveResult = await agent.Save();\n\n if (saveResult) {\n LogStatus('Sub-agent created successfully');\n\n // Save any linked prompts\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n // Update the AgentID now that the agent has been saved\n agentPrompt.AgentID = agent.ID;\n await agentPrompt.Save();\n }\n }\n\n // Save any linked actions\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n // Update the AgentID now that the agent has been saved\n agentAction.AgentID = agent.ID;\n await agentAction.Save();\n }\n }\n\n // Reload agent data to show the new hierarchy\n await this.loadAgentData();\n\n // Navigate to the newly created agent record\n this.navigationService.OpenEntityRecord('MJ: AI Agents', agent.PrimaryKey);\n } else {\n const errorMessage = agent.LatestResult?.Message || 'Unknown error occurred while creating sub-agent';\n this.error = `Failed to create sub-agent: ${errorMessage}`;\n LogError('Sub-agent creation failed', undefined, errorMessage);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'An unexpected error occurred';\n this.error = `Failed to create sub-agent: ${errorMessage}`;\n LogError('Error creating sub-agent', undefined, error);\n } finally {\n this.isLoading = false;\n }\n }\n\n public hasChildren(): boolean {\n return this.selectedNode?.children && this.selectedNode.children.length > 0 || false;\n }\n\n public hasParent(): boolean {\n return this.selectedNode?.parent !== undefined;\n }\n\n public getChildCount(): number {\n return this.selectedNode?.children?.length || 0;\n }\n\n public openCurrentAgentRecord(): void {\n if (this.currentAgent) {\n this.openEntityRecord.emit({ entityName: 'MJ: AI Agents', recordId: this.currentAgent.ID });\n }\n }\n}","<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 • Use zoom controls or scroll to zoom • 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>"]}
|
|
@@ -11,7 +11,7 @@ import { UserInfoEngine } from '@memberjunction/core-entities';
|
|
|
11
11
|
import { Metadata, CompositeKey } from '@memberjunction/core';
|
|
12
12
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
13
13
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
14
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
14
|
+
import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "@memberjunction/ng-shared";
|
|
17
17
|
import * as i2 from "@angular/forms";
|
|
@@ -1110,11 +1110,11 @@ let ModelManagementComponent = class ModelManagementComponent extends BaseResour
|
|
|
1110
1110
|
return false;
|
|
1111
1111
|
}
|
|
1112
1112
|
// Vendor filter
|
|
1113
|
-
if (this.selectedVendor !== 'all' && model.VendorID
|
|
1113
|
+
if (this.selectedVendor !== 'all' && !UUIDsEqual(model.VendorID, this.selectedVendor)) {
|
|
1114
1114
|
return false;
|
|
1115
1115
|
}
|
|
1116
1116
|
// Type filter
|
|
1117
|
-
if (this.selectedType !== 'all' && model.AIModelTypeID
|
|
1117
|
+
if (this.selectedType !== 'all' && !UUIDsEqual(model.AIModelTypeID, this.selectedType)) {
|
|
1118
1118
|
return false;
|
|
1119
1119
|
}
|
|
1120
1120
|
// Status filter
|