@memberjunction/ng-dashboards 5.33.0 → 5.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/AI/components/agents/agent-editor.component.js +2 -2
  2. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  3. package/dist/ComponentStudio/components/workspace/component-preview.component.js +1 -1
  4. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  5. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +28 -8
  6. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  7. package/dist/ComponentStudio/services/component-studio-state.service.js +45 -27
  8. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  9. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +18 -3
  10. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  11. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +51 -11
  12. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  13. package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
  14. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  15. package/dist/Integration/components/widgets/integration-card.component.js +2 -2
  16. package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
  17. package/dist/Integration/components/widgets/run-history-panel.component.js +2 -2
  18. package/dist/Integration/components/widgets/run-history-panel.component.js.map +1 -1
  19. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +134 -1
  20. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  21. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +1227 -24
  22. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  23. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  24. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  25. package/dist/SystemDiagnostics/system-diagnostics.component.js +106 -68
  26. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  27. package/dist/Testing/components/testing-runs.component.js +3 -3
  28. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  29. package/package.json +52 -52
@@ -470,8 +470,8 @@ export class AgentEditorComponent extends BaseAngularComponent {
470
470
  .append('svg')
471
471
  .attr('width', width)
472
472
  .attr('height', height)
473
- .style('background', '#fafafa')
474
- .style('border', '1px solid #e0e0e0');
473
+ .style('background', 'var(--mj-bg-surface-card)')
474
+ .style('border', '1px solid var(--mj-border-default)');
475
475
  // Create zoom behavior with wheel support
476
476
  this.zoom = d3.zoom()
477
477
  .scaleExtent([0.1, 3])
@@ -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, 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';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\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 extends BaseAngularComponent 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 navigationService: NavigationService,\n private createAgentService: CreateAgentService) { super(); }\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 = RunView.FromMetadataProvider(this.ProviderToUse);\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 // Create the agent and all of its linked prompts/actions in one atomic transaction.\n // agent.ID is assigned client-side by NewRecord() so we can use it on child records before submit.\n const md = this.ProviderToUse;\n const tg = await md.CreateTransactionGroup();\n\n agent.TransactionGroup = tg;\n await agent.Save();\n\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n agentPrompt.AgentID = agent.ID;\n agentPrompt.TransactionGroup = tg;\n await agentPrompt.Save();\n }\n }\n\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n agentAction.AgentID = agent.ID;\n agentAction.TransactionGroup = tg;\n await agentAction.Save();\n }\n }\n\n if (await tg.Submit()) {\n LogStatus('Sub-agent created successfully');\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, 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';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\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 extends BaseAngularComponent 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 navigationService: NavigationService,\n private createAgentService: CreateAgentService) { super(); }\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 = RunView.FromMetadataProvider(this.ProviderToUse);\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', 'var(--mj-bg-surface-card)')\n .style('border', '1px solid var(--mj-border-default)');\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 // Create the agent and all of its linked prompts/actions in one atomic transaction.\n // agent.ID is assigned client-side by NewRecord() so we can use it on child records before submit.\n const md = this.ProviderToUse;\n const tg = await md.CreateTransactionGroup();\n\n agent.TransactionGroup = tg;\n await agent.Save();\n\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n agentPrompt.AgentID = agent.ID;\n agentPrompt.TransactionGroup = tg;\n await agentPrompt.Save();\n }\n }\n\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n agentAction.AgentID = agent.ID;\n agentAction.TransactionGroup = tg;\n await agentAction.Save();\n }\n }\n\n if (await tg.Submit()) {\n LogStatus('Sub-agent created successfully');\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>"]}
@@ -289,7 +289,7 @@ export class ComponentPreviewComponent {
289
289
  refreshPreview() {
290
290
  if (!this.State.SelectedComponent)
291
291
  return;
292
- const spec = this.State.GetComponentSpec(this.State.SelectedComponent);
292
+ const spec = this.State.ComponentSpec;
293
293
  // Null out to force React to unmount
294
294
  this.LocalComponentSpec = null;
295
295
  this.cdr.detectChanges();
@@ -1 +1 @@
1
- {"version":3,"file":"component-preview.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts","../../../../src/ComponentStudio/components/workspace/component-preview.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n ViewChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { ReactComponentEvent, MJReactComponent } from '@memberjunction/ng-react';\nimport { CompositeKey } from '@memberjunction/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport {\n ComponentStudioStateService,\n ComponentError\n} from '../../services/component-studio-state.service';\n\n/**\n * Viewport size preset for the component preview\n */\nexport type ViewportSize = 'mobile' | 'tablet' | 'desktop';\n\ninterface ViewportPreset {\n Size: ViewportSize;\n Label: string;\n Icon: string;\n MaxWidth: string;\n}\n\n/**\n * Component Preview - TOP section of CENTER panel.\n * Renders the live React component preview with toolbar controls.\n */\n@Component({\n standalone: false,\n selector: 'mj-component-preview',\n templateUrl: './component-preview.component.html',\n styleUrls: ['./component-preview.component.css']\n})\nexport class ComponentPreviewComponent implements OnInit, OnDestroy {\n\n @ViewChild('reactComponent') ReactComponentRef?: MJReactComponent;\n\n @Output() AskAIToFix = new EventEmitter<ComponentError>();\n\n // --- Viewport ---\n public ActiveViewport: ViewportSize = 'desktop';\n\n public readonly ViewportPresets: ViewportPreset[] = [\n { Size: 'mobile', Label: 'Mobile (375px)', Icon: 'fa-mobile-screen', MaxWidth: '375px' },\n { Size: 'tablet', Label: 'Tablet (768px)', Icon: 'fa-tablet-screen-button', MaxWidth: '768px' },\n { Size: 'desktop', Label: 'Desktop (100%)', Icon: 'fa-desktop', MaxWidth: '100%' }\n ];\n\n // --- Local spec for refresh cycle ---\n public LocalComponentSpec: ComponentSpec | null = null;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.syncSpecFromState();\n\n this.State.StateChanged\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.syncSpecFromState();\n this.cdr.detectChanges();\n });\n\n this.State.RefreshComponent\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.refreshPreview();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ============================================================\n // TOOLBAR ACTIONS\n // ============================================================\n\n public RunSelectedComponent(): void {\n if (this.State.SelectedComponent) {\n this.State.RunComponent(this.State.SelectedComponent);\n }\n }\n\n public StopComponent(): void {\n MJReactComponent.forceClearRegistries();\n this.State.StopComponent();\n }\n\n public RefreshComponent(): void {\n if (this.State.SelectedComponent && this.State.IsRunning) {\n MJReactComponent.forceClearRegistries();\n this.refreshPreview();\n }\n }\n\n public SetViewport(size: ViewportSize): void {\n this.ActiveViewport = size;\n this.cdr.detectChanges();\n }\n\n public SendErrorToAI(): void {\n if (this.State.CurrentError) {\n this.AskAIToFix.emit(this.State.CurrentError);\n this.State.SendErrorToAI.emit(this.State.CurrentError);\n }\n }\n\n // ============================================================\n // VIEWPORT HELPERS\n // ============================================================\n\n public GetActivePreset(): ViewportPreset {\n return this.ViewportPresets.find(p => p.Size === this.ActiveViewport) || this.ViewportPresets[2];\n }\n\n public GetPreviewContainerMaxWidth(): string {\n return this.GetActivePreset().MaxWidth;\n }\n\n // ============================================================\n // REACT COMPONENT EVENTS\n // ============================================================\n\n public OnComponentEvent(event: ReactComponentEvent): void {\n if (event.type === 'error') {\n this.State.CurrentError = {\n type: event.payload?.source || 'Component Error',\n message: event.payload?.error || 'An error occurred while rendering the component',\n technicalDetails: event.payload?.errorInfo || event.payload\n };\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Fires once the React bridge has resolved the full component hierarchy from the\n * registry. The bridge stores the resolved spec (with real dependency code, not\n * registry-reference stubs) on its public `resolvedComponentSpec` field — pull it\n * across so the code-editor tabs can render actual source instead of \"No code available\".\n */\n public OnReactInitialized(): void {\n const resolvedSpec = this.ReactComponentRef?.resolvedComponentSpec;\n if (resolvedSpec) {\n this.State.UpdateWithResolvedSpec(resolvedSpec);\n this.cdr.detectChanges();\n }\n }\n\n public OnOpenEntityRecord(event: { entityName: string; key: CompositeKey }): void {\n SharedService.Instance.OpenEntityRecord(event.entityName, event.key);\n }\n\n // ============================================================\n // STATE HELPERS\n // ============================================================\n\n public GetComponentName(): string {\n if (!this.State.SelectedComponent) return '';\n return this.State.GetComponentName(this.State.SelectedComponent);\n }\n\n public GetComponentDescription(): string | undefined {\n if (!this.State.SelectedComponent) return undefined;\n return this.State.GetComponentDescription(this.State.SelectedComponent);\n }\n\n // ============================================================\n // PRIVATE\n // ============================================================\n\n private syncSpecFromState(): void {\n this.LocalComponentSpec = this.State.ComponentSpec;\n }\n\n /**\n * Refresh the preview by nulling the spec, detecting changes,\n * then restoring the spec after a short delay. The bridge's own\n * `initializeComponent` purges the runtime registry + manager fetch cache\n * for the new spec's keys, so consumers don't need to clear anything here.\n */\n private refreshPreview(): void {\n if (!this.State.SelectedComponent) return;\n\n const spec = this.State.GetComponentSpec(this.State.SelectedComponent);\n\n // Null out to force React to unmount\n this.LocalComponentSpec = null;\n this.cdr.detectChanges();\n\n // Re-set after a brief pause to force fresh mount\n setTimeout(() => {\n this.LocalComponentSpec = spec;\n this.State.ComponentSpec = spec;\n this.State.CurrentError = null;\n try {\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Error during refresh detectChanges:', error);\n }\n }, 10);\n }\n}\n","<div class=\"component-preview\">\n <!-- Toolbar -->\n <div class=\"preview-toolbar\">\n <div class=\"toolbar-left\">\n @if (State.SelectedComponent) {\n @if (State.IsRunning) {\n <button class=\"toolbar-btn stop-btn\" (click)=\"StopComponent()\" title=\"Stop component\">\n <i class=\"fa-solid fa-stop\"></i>\n <span>Stop</span>\n </button>\n <button class=\"toolbar-btn\" (click)=\"RefreshComponent()\" title=\"Refresh component\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n <span>Refresh</span>\n </button>\n } @else {\n <button class=\"toolbar-btn run-btn\" (click)=\"RunSelectedComponent()\" title=\"Run component\">\n <i class=\"fa-solid fa-play\"></i>\n <span>Run</span>\n </button>\n }\n }\n </div>\n\n <div class=\"toolbar-center\">\n <!-- Viewport Size Selector (segmented control) -->\n @if (State.IsRunning) {\n <div class=\"viewport-selector\">\n @for (preset of ViewportPresets; track preset.Size) {\n <button\n class=\"viewport-btn\"\n [class.active]=\"ActiveViewport === preset.Size\"\n (click)=\"SetViewport(preset.Size)\"\n [title]=\"preset.Label\">\n <i class=\"fa-solid\" [ngClass]=\"preset.Icon\"></i>\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"toolbar-right\">\n @if (State.CurrentError) {\n <button class=\"toolbar-btn ai-fix-btn\" (click)=\"SendErrorToAI()\" title=\"Ask AI to fix this error\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Ask AI to Fix</span>\n </button>\n }\n @if (State.IsRunning && State.SelectedComponent) {\n <span class=\"running-indicator\">\n <i class=\"fa-solid fa-circle running-dot\"></i>\n {{ GetComponentName() }}\n </span>\n }\n </div>\n </div>\n\n <!-- Preview Area -->\n <div class=\"preview-area\">\n @if (!State.SelectedComponent) {\n <!-- Empty State: No component selected -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-eye fa-3x\"></i>\n <h3>Select a component to preview</h3>\n <p>Choose a component from the sidebar to see its live preview here.</p>\n </div>\n } @else if (!State.IsRunning) {\n <!-- Component selected but not running -->\n <div class=\"empty-state run-state\">\n <i class=\"fa-solid fa-play-circle fa-3x\"></i>\n <h3>{{ GetComponentName() }}</h3>\n <p>{{ GetComponentDescription() || 'No description available' }}</p>\n <button class=\"run-component-btn\" (click)=\"RunSelectedComponent()\">\n <i class=\"fa-solid fa-play\"></i> Run Component\n </button>\n </div>\n } @else if (LocalComponentSpec) {\n <!-- Live Preview Container -->\n <div class=\"preview-container\"\n [style.max-width]=\"GetPreviewContainerMaxWidth()\"\n [class.mobile]=\"ActiveViewport === 'mobile'\"\n [class.tablet]=\"ActiveViewport === 'tablet'\"\n [class.desktop]=\"ActiveViewport === 'desktop'\">\n <mj-react-component\n #reactComponent\n [component]=\"LocalComponentSpec\"\n (componentEvent)=\"OnComponentEvent($event)\"\n (initialized)=\"OnReactInitialized()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\">\n </mj-react-component>\n </div>\n\n <!-- Error Overlay (inline, does not replace the component) -->\n @if (State.CurrentError) {\n <div class=\"error-overlay\">\n <div class=\"error-overlay-content\">\n <div class=\"error-overlay-header\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span class=\"error-overlay-title\">{{ State.CurrentError.type }}</span>\n </div>\n <p class=\"error-overlay-message\">{{ State.CurrentError.message }}</p>\n <div class=\"error-overlay-actions\">\n <button class=\"toolbar-btn\" (click)=\"RefreshComponent()\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry\n </button>\n <button class=\"toolbar-btn ai-fix-btn\" (click)=\"SendErrorToAI()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Ask AI to Fix\n </button>\n </div>\n </div>\n </div>\n }\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"component-preview.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts","../../../../src/ComponentStudio/components/workspace/component-preview.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n ViewChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { ReactComponentEvent, MJReactComponent } from '@memberjunction/ng-react';\nimport { CompositeKey } from '@memberjunction/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport {\n ComponentStudioStateService,\n ComponentError\n} from '../../services/component-studio-state.service';\n\n/**\n * Viewport size preset for the component preview\n */\nexport type ViewportSize = 'mobile' | 'tablet' | 'desktop';\n\ninterface ViewportPreset {\n Size: ViewportSize;\n Label: string;\n Icon: string;\n MaxWidth: string;\n}\n\n/**\n * Component Preview - TOP section of CENTER panel.\n * Renders the live React component preview with toolbar controls.\n */\n@Component({\n standalone: false,\n selector: 'mj-component-preview',\n templateUrl: './component-preview.component.html',\n styleUrls: ['./component-preview.component.css']\n})\nexport class ComponentPreviewComponent implements OnInit, OnDestroy {\n\n @ViewChild('reactComponent') ReactComponentRef?: MJReactComponent;\n\n @Output() AskAIToFix = new EventEmitter<ComponentError>();\n\n // --- Viewport ---\n public ActiveViewport: ViewportSize = 'desktop';\n\n public readonly ViewportPresets: ViewportPreset[] = [\n { Size: 'mobile', Label: 'Mobile (375px)', Icon: 'fa-mobile-screen', MaxWidth: '375px' },\n { Size: 'tablet', Label: 'Tablet (768px)', Icon: 'fa-tablet-screen-button', MaxWidth: '768px' },\n { Size: 'desktop', Label: 'Desktop (100%)', Icon: 'fa-desktop', MaxWidth: '100%' }\n ];\n\n // --- Local spec for refresh cycle ---\n public LocalComponentSpec: ComponentSpec | null = null;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.syncSpecFromState();\n\n this.State.StateChanged\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.syncSpecFromState();\n this.cdr.detectChanges();\n });\n\n this.State.RefreshComponent\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.refreshPreview();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ============================================================\n // TOOLBAR ACTIONS\n // ============================================================\n\n public RunSelectedComponent(): void {\n if (this.State.SelectedComponent) {\n this.State.RunComponent(this.State.SelectedComponent);\n }\n }\n\n public StopComponent(): void {\n MJReactComponent.forceClearRegistries();\n this.State.StopComponent();\n }\n\n public RefreshComponent(): void {\n if (this.State.SelectedComponent && this.State.IsRunning) {\n MJReactComponent.forceClearRegistries();\n this.refreshPreview();\n }\n }\n\n public SetViewport(size: ViewportSize): void {\n this.ActiveViewport = size;\n this.cdr.detectChanges();\n }\n\n public SendErrorToAI(): void {\n if (this.State.CurrentError) {\n this.AskAIToFix.emit(this.State.CurrentError);\n this.State.SendErrorToAI.emit(this.State.CurrentError);\n }\n }\n\n // ============================================================\n // VIEWPORT HELPERS\n // ============================================================\n\n public GetActivePreset(): ViewportPreset {\n return this.ViewportPresets.find(p => p.Size === this.ActiveViewport) || this.ViewportPresets[2];\n }\n\n public GetPreviewContainerMaxWidth(): string {\n return this.GetActivePreset().MaxWidth;\n }\n\n // ============================================================\n // REACT COMPONENT EVENTS\n // ============================================================\n\n public OnComponentEvent(event: ReactComponentEvent): void {\n if (event.type === 'error') {\n this.State.CurrentError = {\n type: event.payload?.source || 'Component Error',\n message: event.payload?.error || 'An error occurred while rendering the component',\n technicalDetails: event.payload?.errorInfo || event.payload\n };\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Fires once the React bridge has resolved the full component hierarchy from the\n * registry. The bridge stores the resolved spec (with real dependency code, not\n * registry-reference stubs) on its public `resolvedComponentSpec` field — pull it\n * across so the code-editor tabs can render actual source instead of \"No code available\".\n */\n public OnReactInitialized(): void {\n const resolvedSpec = this.ReactComponentRef?.resolvedComponentSpec;\n if (resolvedSpec) {\n this.State.UpdateWithResolvedSpec(resolvedSpec);\n this.cdr.detectChanges();\n }\n }\n\n public OnOpenEntityRecord(event: { entityName: string; key: CompositeKey }): void {\n SharedService.Instance.OpenEntityRecord(event.entityName, event.key);\n }\n\n // ============================================================\n // STATE HELPERS\n // ============================================================\n\n public GetComponentName(): string {\n if (!this.State.SelectedComponent) return '';\n return this.State.GetComponentName(this.State.SelectedComponent);\n }\n\n public GetComponentDescription(): string | undefined {\n if (!this.State.SelectedComponent) return undefined;\n return this.State.GetComponentDescription(this.State.SelectedComponent);\n }\n\n // ============================================================\n // PRIVATE\n // ============================================================\n\n private syncSpecFromState(): void {\n this.LocalComponentSpec = this.State.ComponentSpec;\n }\n\n /**\n * Refresh the preview by nulling the spec, detecting changes,\n * then restoring the spec after a short delay. The bridge's own\n * `initializeComponent` purges the runtime registry + manager fetch cache\n * for the new spec's keys, so consumers don't need to clear anything here.\n */\n private refreshPreview(): void {\n if (!this.State.SelectedComponent) return;\n\n const spec = this.State.ComponentSpec;\n\n // Null out to force React to unmount\n this.LocalComponentSpec = null;\n this.cdr.detectChanges();\n\n // Re-set after a brief pause to force fresh mount\n setTimeout(() => {\n this.LocalComponentSpec = spec;\n this.State.ComponentSpec = spec;\n this.State.CurrentError = null;\n try {\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Error during refresh detectChanges:', error);\n }\n }, 10);\n }\n}\n","<div class=\"component-preview\">\n <!-- Toolbar -->\n <div class=\"preview-toolbar\">\n <div class=\"toolbar-left\">\n @if (State.SelectedComponent) {\n @if (State.IsRunning) {\n <button class=\"toolbar-btn stop-btn\" (click)=\"StopComponent()\" title=\"Stop component\">\n <i class=\"fa-solid fa-stop\"></i>\n <span>Stop</span>\n </button>\n <button class=\"toolbar-btn\" (click)=\"RefreshComponent()\" title=\"Refresh component\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n <span>Refresh</span>\n </button>\n } @else {\n <button class=\"toolbar-btn run-btn\" (click)=\"RunSelectedComponent()\" title=\"Run component\">\n <i class=\"fa-solid fa-play\"></i>\n <span>Run</span>\n </button>\n }\n }\n </div>\n\n <div class=\"toolbar-center\">\n <!-- Viewport Size Selector (segmented control) -->\n @if (State.IsRunning) {\n <div class=\"viewport-selector\">\n @for (preset of ViewportPresets; track preset.Size) {\n <button\n class=\"viewport-btn\"\n [class.active]=\"ActiveViewport === preset.Size\"\n (click)=\"SetViewport(preset.Size)\"\n [title]=\"preset.Label\">\n <i class=\"fa-solid\" [ngClass]=\"preset.Icon\"></i>\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"toolbar-right\">\n @if (State.CurrentError) {\n <button class=\"toolbar-btn ai-fix-btn\" (click)=\"SendErrorToAI()\" title=\"Ask AI to fix this error\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Ask AI to Fix</span>\n </button>\n }\n @if (State.IsRunning && State.SelectedComponent) {\n <span class=\"running-indicator\">\n <i class=\"fa-solid fa-circle running-dot\"></i>\n {{ GetComponentName() }}\n </span>\n }\n </div>\n </div>\n\n <!-- Preview Area -->\n <div class=\"preview-area\">\n @if (!State.SelectedComponent) {\n <!-- Empty State: No component selected -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-eye fa-3x\"></i>\n <h3>Select a component to preview</h3>\n <p>Choose a component from the sidebar to see its live preview here.</p>\n </div>\n } @else if (!State.IsRunning) {\n <!-- Component selected but not running -->\n <div class=\"empty-state run-state\">\n <i class=\"fa-solid fa-play-circle fa-3x\"></i>\n <h3>{{ GetComponentName() }}</h3>\n <p>{{ GetComponentDescription() || 'No description available' }}</p>\n <button class=\"run-component-btn\" (click)=\"RunSelectedComponent()\">\n <i class=\"fa-solid fa-play\"></i> Run Component\n </button>\n </div>\n } @else if (LocalComponentSpec) {\n <!-- Live Preview Container -->\n <div class=\"preview-container\"\n [style.max-width]=\"GetPreviewContainerMaxWidth()\"\n [class.mobile]=\"ActiveViewport === 'mobile'\"\n [class.tablet]=\"ActiveViewport === 'tablet'\"\n [class.desktop]=\"ActiveViewport === 'desktop'\">\n <mj-react-component\n #reactComponent\n [component]=\"LocalComponentSpec\"\n (componentEvent)=\"OnComponentEvent($event)\"\n (initialized)=\"OnReactInitialized()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\">\n </mj-react-component>\n </div>\n\n <!-- Error Overlay (inline, does not replace the component) -->\n @if (State.CurrentError) {\n <div class=\"error-overlay\">\n <div class=\"error-overlay-content\">\n <div class=\"error-overlay-header\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span class=\"error-overlay-title\">{{ State.CurrentError.type }}</span>\n </div>\n <p class=\"error-overlay-message\">{{ State.CurrentError.message }}</p>\n <div class=\"error-overlay-actions\">\n <button class=\"toolbar-btn\" (click)=\"RefreshComponent()\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry\n </button>\n <button class=\"toolbar-btn ai-fix-btn\" (click)=\"SendErrorToAI()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Ask AI to Fix\n </button>\n </div>\n </div>\n </div>\n }\n }\n </div>\n</div>\n"]}
@@ -1,8 +1,24 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { IMetadataProvider } from '@memberjunction/core';
3
- import { MJComponentEntityExtended } from '@memberjunction/core-entities';
4
3
  import { ComponentSpec } from '@memberjunction/interactive-component-types';
5
4
  import * as i0 from "@angular/core";
5
+ /**
6
+ * Lightweight summary of a database component for the browser list.
7
+ * Only contains fields needed for display — Specification and other heavy
8
+ * columns are fetched on demand when a component is selected.
9
+ */
10
+ export interface DbComponentSummary {
11
+ ID: string;
12
+ Name: string;
13
+ Namespace: string | null;
14
+ Version: string | null;
15
+ Type: string | null;
16
+ Status: string | null;
17
+ Description: string | null;
18
+ HasRequiredCustomProps: boolean;
19
+ __mj_UpdatedAt: Date | null;
20
+ isFileLoaded?: false;
21
+ }
6
22
  /**
7
23
  * Interface for components loaded from files, text, or artifacts (not from database)
8
24
  */
@@ -22,9 +38,7 @@ export interface FileLoadedComponent {
22
38
  /**
23
39
  * Union type for both database and file-loaded components
24
40
  */
25
- export type DisplayComponent = (MJComponentEntityExtended & {
26
- isFileLoaded?: false;
27
- }) | FileLoadedComponent;
41
+ export type DisplayComponent = DbComponentSummary | FileLoadedComponent;
28
42
  /**
29
43
  * Category for filtering
30
44
  */
@@ -58,7 +72,7 @@ export interface CodeSection {
58
72
  export declare class ComponentStudioStateService {
59
73
  private _dbComponents;
60
74
  private _fileLoadedComponents;
61
- get DbComponents(): MJComponentEntityExtended[];
75
+ get DbComponents(): DbComponentSummary[];
62
76
  get FileLoadedComponents(): FileLoadedComponent[];
63
77
  /** Combined list of all components (file-loaded first, then DB) */
64
78
  get AllComponents(): DisplayComponent[];
@@ -162,15 +176,21 @@ export declare class ComponentStudioStateService {
162
176
  GetComponentType(component: DisplayComponent): string | undefined;
163
177
  GetComponentStatus(component: DisplayComponent): string | undefined;
164
178
  GetComponentVersion(component: DisplayComponent): string;
165
- GetComponentSpec(component: DisplayComponent): ComponentSpec;
179
+ /**
180
+ * Fetches the full component specification. For file-loaded components, returns
181
+ * the in-memory spec. For database components, loads the full entity record
182
+ * on demand via ComponentMetadataEngine.FindComponentByID() — the lightweight
183
+ * summary loaded at startup does not include the Specification column.
184
+ */
185
+ GetComponentSpec(component: DisplayComponent): Promise<ComponentSpec>;
166
186
  GetComponentId(component: DisplayComponent): string;
167
187
  GetComponentNamespace(component: DisplayComponent): string | undefined;
168
188
  GetComponentFilename(component: DisplayComponent): string | undefined;
169
189
  GetComponentLoadedAt(component: DisplayComponent): Date | undefined;
170
190
  GetComponentUpdatedAt(component: DisplayComponent): Date | undefined;
171
- StartComponent(component: DisplayComponent): void;
191
+ StartComponent(component: DisplayComponent): Promise<void>;
172
192
  StopComponent(): void;
173
- RunComponent(component: DisplayComponent): void;
193
+ RunComponent(component: DisplayComponent): Promise<void>;
174
194
  InitializeEditors(): void;
175
195
  BuildCodeSections(): void;
176
196
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"component-studio-state.service.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-studio-state.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-studio-state.service.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/services/component-studio-state.service.ts"],"names":[],"mappings":"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"}