@memberjunction/ng-core-entity-forms 2.80.0 → 2.81.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/lib/custom/AIAgents/add-action-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +4 -4
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +4 -4
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +51 -3
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +706 -164
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +3 -2
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +74 -46
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +4 -4
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +39 -32
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +4 -4
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +29 -25
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +5 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +21 -2
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +6 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +70 -16
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +6 -5
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +8 -22
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +5 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +30 -24
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +8 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +39 -18
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +20 -3
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +227 -64
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +6 -6
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Entity/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Entity/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Query/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Query/sections/details.component.js +40 -4
- package/dist/lib/generated/Entities/Query/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +40 -4
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +5 -0
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +21 -2
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +17 -16
|
@@ -369,11 +369,11 @@ export class PromptSelectorDialogComponent {
|
|
|
369
369
|
i0.ɵɵproperty("disabled", ctx.selectedPrompts.size === 0);
|
|
370
370
|
i0.ɵɵadvance();
|
|
371
371
|
i0.ɵɵconditional(ctx.config.multiSelect ? 11 : 12);
|
|
372
|
-
} }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i4.ButtonComponent, i5.AsyncPipe, i5.DatePipe], styles: [".prompt-selector-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 70vh;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #666;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.search-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-box[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #666;\n z-index: 2;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.search-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 36px !important;\n}\n\n.view-controls[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background-color: #007bff;\n color: white;\n}\n\n\n\n.results-summary[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #f1f3f4;\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 14px;\n color: #666;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.results-count[_ngcontent-%COMP%], .selected-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.selected-count[_ngcontent-%COMP%] {\n color: #007bff;\n font-weight: 500;\n}\n\n\n\n.prompts-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n\n\n.prompts-container.list-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.prompts-container.grid-view[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n}\n\n\n\n.prompt-card[_ngcontent-%COMP%] {\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n display: flex;\n gap: 12px;\n position: relative;\n}\n\n.prompt-card[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);\n}\n\n.prompt-card.selected[_ngcontent-%COMP%] {\n border-color: #007bff;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.25);\n}\n\n.prompt-card.linked[_ngcontent-%COMP%] {\n border-color: #6c757d;\n background: #f8f9fa;\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.prompt-card.linked[_ngcontent-%COMP%]:hover {\n border-color: #6c757d;\n box-shadow: none;\n}\n\n\n\n.selection-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n margin-top: 2px;\n}\n\n.selected-icon[_ngcontent-%COMP%] {\n color: #007bff;\n font-size: 18px;\n}\n\n.unselected-icon[_ngcontent-%COMP%] {\n color: #ccc;\n font-size: 18px;\n}\n\n.linked-icon[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n\n\n.prompt-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n line-height: 1.4;\n flex: 1;\n}\n\n.prompt-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n color: white;\n white-space: nowrap;\n}\n\n.linked-badge[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n background: #6c757d;\n color: white;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.prompt-description[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.prompt-metadata[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #888;\n flex-wrap: wrap;\n}\n\n.metadata-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.metadata-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 12px;\n font-size: 10px;\n}\n\n\n\n.no-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #666;\n text-align: center;\n}\n\n.no-results[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n color: #ccc;\n}\n\n.no-results[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #333;\n}\n\n.no-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #888;\n max-width: 300px;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n@media (max-width: 768px) {\n .prompts-container.grid-view[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .prompt-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .search-section[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n }\n \n .view-controls[_ngcontent-%COMP%] {\n align-self: flex-end;\n }\n}"] }); }
|
|
372
|
+
} }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i4.ButtonComponent, i5.AsyncPipe, i5.DatePipe], styles: [".prompt-selector-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 70vh;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #666;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.search-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-box[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #666;\n z-index: 2;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.search-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 36px !important;\n}\n\n.view-controls[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background-color: #007bff;\n color: white;\n}\n\n\n\n.results-summary[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #f1f3f4;\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 14px;\n color: #666;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.results-count[_ngcontent-%COMP%], .selected-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.selected-count[_ngcontent-%COMP%] {\n color: #007bff;\n font-weight: 500;\n}\n\n\n\n.prompts-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n\n\n.prompts-container.list-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.prompts-container.grid-view[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n}\n\n\n\n.prompt-card[_ngcontent-%COMP%] {\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n display: flex;\n gap: 12px;\n position: relative;\n}\n\n.prompt-card[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);\n}\n\n.prompt-card.selected[_ngcontent-%COMP%] {\n border-color: #007bff;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.25);\n}\n\n.prompt-card.linked[_ngcontent-%COMP%] {\n border-color: #6c757d;\n background: #f8f9fa;\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.prompt-card.linked[_ngcontent-%COMP%]:hover {\n border-color: #6c757d;\n box-shadow: none;\n}\n\n\n\n.selection-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n margin-top: 2px;\n}\n\n.selected-icon[_ngcontent-%COMP%] {\n color: #007bff;\n font-size: 18px;\n}\n\n.unselected-icon[_ngcontent-%COMP%] {\n color: #ccc;\n font-size: 18px;\n}\n\n.linked-icon[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n\n\n.prompt-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n line-height: 1.4;\n flex: 1;\n}\n\n.prompt-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n color: white;\n white-space: nowrap;\n}\n\n.linked-badge[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n background: #6c757d;\n color: white;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.prompt-description[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.prompt-metadata[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #888;\n flex-wrap: wrap;\n}\n\n.metadata-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.metadata-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 12px;\n font-size: 10px;\n}\n\n\n\n.no-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #666;\n text-align: center;\n}\n\n.no-results[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n color: #ccc;\n}\n\n.no-results[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #333;\n}\n\n.no-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #888;\n max-width: 300px;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n@media (max-width: 768px) {\n .prompts-container.grid-view[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .prompt-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .search-section[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n }\n \n .view-controls[_ngcontent-%COMP%] {\n align-self: flex-end;\n }\n}"] }); }
|
|
373
373
|
}
|
|
374
374
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PromptSelectorDialogComponent, [{
|
|
375
375
|
type: Component,
|
|
376
|
-
args: [{ selector: 'mj-prompt-selector-dialog', template: "<!-- Prompt Selector Dialog -->\n<div class=\"prompt-selector-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading prompts...</p>\n </div>\n } @else {\n \n <!-- Search and Controls Header -->\n <div class=\"dialog-header\">\n <div class=\"search-section\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <kendo-textbox \n [formControl]=\"searchControl\"\n placeholder=\"Search prompts by name or description...\"\n class=\"search-input\">\n </kendo-textbox>\n </div>\n \n <div class=\"view-controls\">\n <button kendoButton \n size=\"small\"\n fillMode=\"flat\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"toggleViewMode()\"\n title=\"Toggle between list and grid view\">\n <i class=\"fa-solid\" [class.fa-list]=\"viewMode === 'grid'\" [class.fa-th]=\"viewMode === 'list'\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Results Summary -->\n <div class=\"results-summary\">\n <span class=\"results-count\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n {{ (filteredPrompts$ | async)?.length || 0 }} prompt(s)\n </span>\n @if (config.multiSelect && selectedPrompts.size > 0) {\n <span class=\"selected-count\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ selectedPrompts.size }} selected\n </span>\n }\n </div>\n\n <!-- Prompts List/Grid -->\n <div class=\"prompts-container\" [class.grid-view]=\"viewMode === 'grid'\" [class.list-view]=\"viewMode === 'list'\">\n @if ((filteredPrompts$ | async)?.length === 0) {\n <div class=\"no-results\">\n <i class=\"fa-solid fa-search fa-2x\"></i>\n <h4>No prompts found</h4>\n <p>Try adjusting your search criteria or check that prompts are properly configured.</p>\n </div>\n } @else {\n @for (prompt of filteredPrompts$ | async; track prompt.ID) {\n <div class=\"prompt-card\" \n [class.selected]=\"isPromptSelected(prompt)\"\n [class.linked]=\"isPromptLinked(prompt)\"\n (click)=\"togglePromptSelection(prompt)\">\n \n <!-- Selection indicator -->\n <div class=\"selection-indicator\">\n @if (isPromptLinked(prompt)) {\n <i class=\"fa-solid fa-link linked-icon\" title=\"Already linked to this agent\"></i>\n } @else if (isPromptSelected(prompt)) {\n <i class=\"fa-solid fa-check-circle selected-icon\"></i>\n } @else {\n <i class=\"fa-regular fa-circle unselected-icon\"></i>\n }\n </div>\n\n <!-- Prompt Content -->\n <div class=\"prompt-content\">\n <div class=\"prompt-header\">\n <h4 class=\"prompt-name\">{{ prompt.Name }}</h4>\n <div class=\"prompt-badges\">\n @if (isPromptLinked(prompt)) {\n <span class=\"linked-badge\">\n <i class=\"fa-solid fa-link\"></i>\n Linked\n </span>\n }\n <span class=\"status-badge\" \n [style.background-color]=\"getPromptStatusColor(prompt)\">\n {{ getPromptStatusText(prompt) }}\n </span>\n </div>\n </div>\n\n @if (prompt.Description) {\n <p class=\"prompt-description\">{{ prompt.Description }}</p>\n }\n\n <!-- Prompt Metadata -->\n <div class=\"prompt-metadata\">\n @if (prompt.__mj_CreatedAt) {\n <span class=\"metadata-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n Created {{ prompt.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-left\">\n @if (config.showCreateNew) {\n <button kendoButton \n look=\"flat\"\n (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n }\n </div>\n \n <div class=\"footer-right\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"selectPrompts()\"\n [disabled]=\"selectedPrompts.size === 0\">\n @if (config.multiSelect) {\n <i class=\"fa-solid fa-check\"></i>\n Add {{ selectedPrompts.size }} Prompt{{ selectedPrompts.size === 1 ? '' : 's' }}\n } @else {\n <i class=\"fa-solid fa-check\"></i>\n Select Prompt\n }\n </button>\n </div>\n </div>\n</div>", styles: [".prompt-selector-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 70vh;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #666;\n}\n\n.loading-spinner {\n margin-bottom: 16px;\n}\n\n/* === Header Section === */\n.dialog-header {\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.search-section {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-box {\n flex: 1;\n position: relative;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #666;\n z-index: 2;\n}\n\n.search-input {\n width: 100%;\n}\n\n.search-input input {\n padding-left: 36px !important;\n}\n\n.view-controls button.active {\n background-color: #007bff;\n color: white;\n}\n\n/* === Results Summary === */\n.results-summary {\n padding: 12px 16px;\n background: #f1f3f4;\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 14px;\n color: #666;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.results-count, .selected-count {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.selected-count {\n color: #007bff;\n font-weight: 500;\n}\n\n/* === Prompts Container === */\n.prompts-container {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n/* List View */\n.prompts-container.list-view {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Grid View */\n.prompts-container.grid-view {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n}\n\n/* === Prompt Cards === */\n.prompt-card {\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n display: flex;\n gap: 12px;\n position: relative;\n}\n\n.prompt-card:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);\n}\n\n.prompt-card.selected {\n border-color: #007bff;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.25);\n}\n\n.prompt-card.linked {\n border-color: #6c757d;\n background: #f8f9fa;\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.prompt-card.linked:hover {\n border-color: #6c757d;\n box-shadow: none;\n}\n\n/* === Selection Indicator === */\n.selection-indicator {\n display: flex;\n align-items: flex-start;\n margin-top: 2px;\n}\n\n.selected-icon {\n color: #007bff;\n font-size: 18px;\n}\n\n.unselected-icon {\n color: #ccc;\n font-size: 18px;\n}\n\n.linked-icon {\n color: #6c757d;\n font-size: 18px;\n}\n\n/* === Prompt Content === */\n.prompt-content {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.prompt-name {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n line-height: 1.4;\n flex: 1;\n}\n\n.prompt-badges {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.status-badge {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n color: white;\n white-space: nowrap;\n}\n\n.linked-badge {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n background: #6c757d;\n color: white;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.prompt-description {\n margin: 0 0 12px 0;\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* === Prompt Metadata === */\n.prompt-metadata {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #888;\n flex-wrap: wrap;\n}\n\n.metadata-item {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.metadata-item i {\n width: 12px;\n font-size: 10px;\n}\n\n/* === No Results === */\n.no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #666;\n text-align: center;\n}\n\n.no-results i {\n margin-bottom: 16px;\n color: #ccc;\n}\n\n.no-results h4 {\n margin: 0 0 8px 0;\n color: #333;\n}\n\n.no-results p {\n margin: 0;\n color: #888;\n max-width: 300px;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.footer-left {\n display: flex;\n}\n\n.footer-right {\n display: flex;\n gap: 8px;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .prompts-container.grid-view {\n grid-template-columns: 1fr;\n }\n \n .prompt-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .search-section {\n flex-direction: column;\n gap: 8px;\n }\n \n .view-controls {\n align-self: flex-end;\n }\n}"] }]
|
|
376
|
+
args: [{ selector: 'mj-prompt-selector-dialog', template: "<!-- Prompt Selector Dialog -->\n<div class=\"prompt-selector-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading prompts...</p>\n </div>\n } @else {\n \n <!-- Search and Controls Header -->\n <div class=\"dialog-header\">\n <div class=\"search-section\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <kendo-textbox \n [formControl]=\"searchControl\"\n placeholder=\"Search prompts by name or description...\"\n class=\"search-input\">\n </kendo-textbox>\n </div>\n \n <div class=\"view-controls\">\n <button kendoButton \n size=\"small\"\n fillMode=\"flat\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"toggleViewMode()\"\n title=\"Toggle between list and grid view\">\n <i class=\"fa-solid\" [class.fa-list]=\"viewMode === 'grid'\" [class.fa-th]=\"viewMode === 'list'\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Results Summary -->\n <div class=\"results-summary\">\n <span class=\"results-count\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n {{ (filteredPrompts$ | async)?.length || 0 }} prompt(s)\n </span>\n @if (config.multiSelect && selectedPrompts.size > 0) {\n <span class=\"selected-count\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ selectedPrompts.size }} selected\n </span>\n }\n </div>\n\n <!-- Prompts List/Grid -->\n <div class=\"prompts-container\" [class.grid-view]=\"viewMode === 'grid'\" [class.list-view]=\"viewMode === 'list'\">\n @if ((filteredPrompts$ | async)?.length === 0) {\n <div class=\"no-results\">\n <i class=\"fa-solid fa-search fa-2x\"></i>\n <h4>No prompts found</h4>\n <p>Try adjusting your search criteria or check that prompts are properly configured.</p>\n </div>\n } @else {\n @for (prompt of filteredPrompts$ | async; track prompt.ID) {\n <div class=\"prompt-card\" \n [class.selected]=\"isPromptSelected(prompt)\"\n [class.linked]=\"isPromptLinked(prompt)\"\n (click)=\"togglePromptSelection(prompt)\">\n \n <!-- Selection indicator -->\n <div class=\"selection-indicator\">\n @if (isPromptLinked(prompt)) {\n <i class=\"fa-solid fa-link linked-icon\" title=\"Already linked to this agent\"></i>\n } @else if (isPromptSelected(prompt)) {\n <i class=\"fa-solid fa-check-circle selected-icon\"></i>\n } @else {\n <i class=\"fa-regular fa-circle unselected-icon\"></i>\n }\n </div>\n\n <!-- Prompt Content -->\n <div class=\"prompt-content\">\n <div class=\"prompt-header\">\n <h4 class=\"prompt-name\">{{ prompt.Name }}</h4>\n <div class=\"prompt-badges\">\n @if (isPromptLinked(prompt)) {\n <span class=\"linked-badge\">\n <i class=\"fa-solid fa-link\"></i>\n Linked\n </span>\n }\n <span class=\"status-badge\" \n [style.background-color]=\"getPromptStatusColor(prompt)\">\n {{ getPromptStatusText(prompt) }}\n </span>\n </div>\n </div>\n\n @if (prompt.Description) {\n <p class=\"prompt-description\">{{ prompt.Description }}</p>\n }\n\n <!-- Prompt Metadata -->\n <div class=\"prompt-metadata\">\n @if (prompt.__mj_CreatedAt) {\n <span class=\"metadata-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n Created {{ prompt.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-left\">\n @if (config.showCreateNew) {\n <button kendoButton \n look=\"flat\"\n (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Prompt\n </button>\n }\n </div>\n \n <div class=\"footer-right\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"selectPrompts()\"\n [disabled]=\"selectedPrompts.size === 0\">\n @if (config.multiSelect) {\n <i class=\"fa-solid fa-check\"></i>\n Add {{ selectedPrompts.size }} Prompt{{ selectedPrompts.size === 1 ? '' : 's' }}\n } @else {\n <i class=\"fa-solid fa-check\"></i>\n Select Prompt\n }\n </button>\n </div>\n </div>\n</div>", styles: [".prompt-selector-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 70vh;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #666;\n}\n\n.loading-spinner {\n margin-bottom: 16px;\n}\n\n/* === Header Section === */\n.dialog-header {\n padding: 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.search-section {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-box {\n flex: 1;\n position: relative;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #666;\n z-index: 2;\n}\n\n.search-input {\n width: 100%;\n}\n\n.search-input input {\n padding-left: 36px !important;\n}\n\n.view-controls button.active {\n background-color: #007bff;\n color: white;\n}\n\n/* === Results Summary === */\n.results-summary {\n padding: 12px 16px;\n background: #f1f3f4;\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 14px;\n color: #666;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.results-count, .selected-count {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.selected-count {\n color: #007bff;\n font-weight: 500;\n}\n\n/* === Prompts Container === */\n.prompts-container {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n/* List View */\n.prompts-container.list-view {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Grid View */\n.prompts-container.grid-view {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n}\n\n/* === Prompt Cards === */\n.prompt-card {\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n display: flex;\n gap: 12px;\n position: relative;\n}\n\n.prompt-card:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);\n}\n\n.prompt-card.selected {\n border-color: #007bff;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.25);\n}\n\n.prompt-card.linked {\n border-color: #6c757d;\n background: #f8f9fa;\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.prompt-card.linked:hover {\n border-color: #6c757d;\n box-shadow: none;\n}\n\n/* === Selection Indicator === */\n.selection-indicator {\n display: flex;\n align-items: flex-start;\n margin-top: 2px;\n}\n\n.selected-icon {\n color: #007bff;\n font-size: 18px;\n}\n\n.unselected-icon {\n color: #ccc;\n font-size: 18px;\n}\n\n.linked-icon {\n color: #6c757d;\n font-size: 18px;\n}\n\n/* === Prompt Content === */\n.prompt-content {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.prompt-name {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n line-height: 1.4;\n flex: 1;\n}\n\n.prompt-badges {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.status-badge {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n color: white;\n white-space: nowrap;\n}\n\n.linked-badge {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n background: #6c757d;\n color: white;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.prompt-description {\n margin: 0 0 12px 0;\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* === Prompt Metadata === */\n.prompt-metadata {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #888;\n flex-wrap: wrap;\n}\n\n.metadata-item {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.metadata-item i {\n width: 12px;\n font-size: 10px;\n}\n\n/* === No Results === */\n.no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #666;\n text-align: center;\n}\n\n.no-results i {\n margin-bottom: 16px;\n color: #ccc;\n}\n\n.no-results h4 {\n margin: 0 0 8px 0;\n color: #333;\n}\n\n.no-results p {\n margin: 0;\n color: #888;\n max-width: 300px;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.footer-left {\n display: flex;\n}\n\n.footer-right {\n display: flex;\n gap: 8px;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .prompts-container.grid-view {\n grid-template-columns: 1fr;\n }\n \n .prompt-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .search-section {\n flex-direction: column;\n gap: 8px;\n }\n \n .view-controls {\n align-self: flex-end;\n }\n}"] }]
|
|
377
377
|
}], () => [{ type: i1.DialogRef }, { type: i0.ChangeDetectorRef }], null); })();
|
|
378
378
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PromptSelectorDialogComponent, { className: "PromptSelectorDialogComponent", filePath: "src/lib/custom/AIAgents/prompt-selector-dialog.component.ts", lineNumber: 42 }); })();
|
|
379
379
|
//# sourceMappingURL=prompt-selector-dialog.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/prompt-selector-dialog.component.ts","../../../../src/lib/custom/AIAgents/prompt-selector-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"prompt-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/prompt-selector-dialog.component.ts","../../../../src/lib/custom/AIAgents/prompt-selector-dialog.component.html"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { FormGroup, FormBuilder } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { WindowRef } from '@progress/kendo-angular-dialog';
|
|
4
4
|
import { Subject, BehaviorSubject } from 'rxjs';
|
|
5
5
|
import { AIAgentEntity, AIAgentTypeEntity } from '@memberjunction/core-entities';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -38,7 +38,7 @@ export declare class SubAgentAdvancedSettingsDialogComponent implements OnInit,
|
|
|
38
38
|
value: string;
|
|
39
39
|
}[];
|
|
40
40
|
executionOrderError: string | null;
|
|
41
|
-
constructor(dialogRef:
|
|
41
|
+
constructor(dialogRef: WindowRef, fb: FormBuilder, cdr: ChangeDetectorRef);
|
|
42
42
|
ngOnInit(): void;
|
|
43
43
|
ngOnDestroy(): void;
|
|
44
44
|
private initializeForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-advanced-settings-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"sub-agent-advanced-settings-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAa,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAa,MAAM,MAAM,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAGjF,MAAM,WAAW,gCAAgC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,YAAY,GAAG,UAAU,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,qBAKa,uCAAwC,YAAW,MAAM,EAAE,SAAS;IA4C7E,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IA3Cb,QAAQ,EAAG,aAAa,CAAC;IACzB,YAAY,EAAE,aAAa,EAAE,CAAM;IAGnC,OAAO,CAAC,QAAQ,CAAuB;IAChC,MAAM,mDAA0D;IAGvE,YAAY,EAAG,SAAS,CAAC;IACzB,UAAU,2BAAuC;IACjD,SAAS,2BAAuC;IAGhD,WAAW,uCAAgD;IAG3D,oBAAoB;;;;;QAalB;IAEF,aAAa;;;QAIX;IAGF,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAGhC,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,iBAAiB;IAGhC,QAAQ;IAKR,WAAW;IAKX,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,sBAAsB;YAsBhB,gBAAgB;IAiC9B,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK1C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IASxC,sBAAsB,IAAI,OAAO;IAMjC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAK1C,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM;IAKA,IAAI;yCA7LC,uCAAuC;2CAAvC,uCAAuC;CAiOnD"}
|
|
@@ -335,7 +335,7 @@ export class SubAgentAdvancedSettingsDialogComponent {
|
|
|
335
335
|
this.isSaving$.next(false);
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
|
-
static { this.ɵfac = function SubAgentAdvancedSettingsDialogComponent_Factory(t) { return new (t || SubAgentAdvancedSettingsDialogComponent)(i0.ɵɵdirectiveInject(i1.
|
|
338
|
+
static { this.ɵfac = function SubAgentAdvancedSettingsDialogComponent_Factory(t) { return new (t || SubAgentAdvancedSettingsDialogComponent)(i0.ɵɵdirectiveInject(i1.WindowRef), i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
339
339
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SubAgentAdvancedSettingsDialogComponent, selectors: [["mj-sub-agent-advanced-settings-dialog"]], decls: 14, vars: 14, consts: [[1, "sub-agent-advanced-settings-dialog"], [1, "loading-state"], [1, "advanced-form", 3, "formGroup"], [1, "dialog-footer"], ["kendoButton", "", "look", "flat", 3, "click", "disabled"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "loading-spinner"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-2x"], [1, "form-section"], [1, "section-title"], [1, "fa-solid", "fa-play"], [1, "form-grid"], [1, "form-field"], ["for", "executionOrder"], ["formControlName", "executionOrder", 1, "form-control", 3, "min", "format"], [1, "field-error"], [1, "field-hint"], ["for", "executionMode"], ["formControlName", "executionMode", "textField", "text", "valueField", "value", 1, "form-control", 3, "data", "valuePrimitive"], ["kendoDropDownListItemTemplate", ""], [1, "fa-solid", "fa-robot"], ["for", "typeID"], ["formControlName", "typeID", "textField", "Name", "valueField", "ID", 1, "form-control", 3, "data", "valuePrimitive", "defaultItem"], ["for", "status"], ["formControlName", "status", "textField", "text", "valueField", "value", 1, "form-control", 3, "data", "valuePrimitive"], [1, "fa-solid", "fa-shield-alt"], [1, "form-field", "full-width"], [1, "checkbox-label", "disabled"], ["formControlName", "exposeAsAction", 3, "disabled"], [1, "field-hint", "disabled-hint"], [1, "fa-solid", "fa-info-circle"], [1, "execution-mode-option"], [1, "option-header"], [1, "option-title"], [1, "option-description"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-save"]], template: function SubAgentAdvancedSettingsDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
340
340
|
i0.ɵɵelementStart(0, "div", 0);
|
|
341
341
|
i0.ɵɵtemplate(1, SubAgentAdvancedSettingsDialogComponent_Conditional_1_Template, 5, 0, "div", 1);
|
|
@@ -363,11 +363,11 @@ export class SubAgentAdvancedSettingsDialogComponent {
|
|
|
363
363
|
i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(9, 8, ctx.isSaving$) || false || (i0.ɵɵpipeBind1(10, 10, ctx.isLoading$) || false) || ctx.hasExecutionOrderError());
|
|
364
364
|
i0.ɵɵadvance(3);
|
|
365
365
|
i0.ɵɵconditional(i0.ɵɵpipeBind1(12, 12, ctx.isSaving$) ? 11 : 13);
|
|
366
|
-
} }, dependencies: [i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.NumericTextBoxComponent, i3.CheckBoxComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".sub-agent-advanced-settings-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.advanced-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n\n\nlabel[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n color: #495057;\n cursor: pointer;\n}\n\n.checkbox-label.disabled[_ngcontent-%COMP%] {\n color: #6c757d;\n cursor: not-allowed;\n}\n\n.form-control[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.disabled-hint[_ngcontent-%COMP%] {\n color: #999;\n font-style: italic;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.disabled-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n}\n\n.field-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%], \n.error-border[_ngcontent-%COMP%] {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: #28a745;\n}\n\n\n\n.execution-mode-option[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.option-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.25rem;\n}\n\n.option-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n width: 16px;\n}\n\n.option-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #666;\n line-height: 1.3;\n margin-left: 1.5rem;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[themeColor=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n\n\n\n.form-section[_ngcontent-%COMP%]:first-child .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(2) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(3) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fff3e0, #f8f9fa);\n}\n\n\n\n@media (max-width: 768px) {\n .form-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1;\n }\n \n .advanced-form[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n \n .section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer[_ngcontent-%COMP%] {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n.error-border[_ngcontent-%COMP%] {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }); }
|
|
366
|
+
} }, dependencies: [i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.NumericTextBoxComponent, i3.CheckBoxComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".sub-agent-advanced-settings-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.advanced-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n\n\nlabel[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n color: #495057;\n cursor: pointer;\n}\n\n.checkbox-label.disabled[_ngcontent-%COMP%] {\n color: #6c757d;\n cursor: not-allowed;\n}\n\n.form-control[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.disabled-hint[_ngcontent-%COMP%] {\n color: #999;\n font-style: italic;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.disabled-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n}\n\n.field-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%], \n.error-border[_ngcontent-%COMP%] {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: #28a745;\n}\n\n\n\n.execution-mode-option[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.option-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.25rem;\n}\n\n.option-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n width: 16px;\n}\n\n.option-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #666;\n line-height: 1.3;\n margin-left: 1.5rem;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[themeColor=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n\n\n\n.form-section[_ngcontent-%COMP%]:first-child .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(2) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(3) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fff3e0, #f8f9fa);\n}\n\n\n\n@media (max-width: 768px) {\n .form-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1;\n }\n \n .advanced-form[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n \n .section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer[_ngcontent-%COMP%] {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n.error-border[_ngcontent-%COMP%] {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }); }
|
|
367
367
|
}
|
|
368
368
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubAgentAdvancedSettingsDialogComponent, [{
|
|
369
369
|
type: Component,
|
|
370
|
-
args: [{ selector: 'mj-sub-agent-advanced-settings-dialog', template: "<!-- Sub-Agent Advanced Settings Dialog -->\n<div class=\"sub-agent-advanced-settings-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading sub-agent settings...</p>\n </div>\n } @else {\n \n <!-- Form Content -->\n <form [formGroup]=\"advancedForm\" class=\"advanced-form\">\n \n <!-- Execution Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Execution Order -->\n <div class=\"form-field\">\n <label for=\"executionOrder\">Execution Order *</label>\n <kendo-numerictextbox \n formControlName=\"executionOrder\"\n [min]=\"0\"\n [format]=\"'0'\"\n [class.error-border]=\"hasExecutionOrderError()\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('executionOrder')) {\n <div class=\"field-error\">{{ getFieldError('executionOrder') }}</div>\n }\n @if (hasExecutionOrderError()) {\n <div class=\"field-error\">{{ executionOrderError }}</div>\n }\n <small class=\"field-hint\">Order in which this sub-agent executes among siblings (0 = first). Must be unique among sibling agents.</small>\n </div>\n \n <!-- Execution Mode -->\n <div class=\"form-field\">\n <label for=\"executionMode\">Execution Mode *</label>\n <kendo-dropdownlist \n formControlName=\"executionMode\"\n [data]=\"executionModeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"execution-mode-option\">\n <div class=\"option-header\">\n <i class=\"fa-solid {{ dataItem.icon }}\"></i>\n <span class=\"option-title\">{{ dataItem.text }}</span>\n </div>\n <div class=\"option-description\">{{ dataItem.description }}</div>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (isFieldInvalid('executionMode')) {\n <div class=\"field-error\">{{ getFieldError('executionMode') }}</div>\n }\n <small class=\"field-hint\">{{ getExecutionModeDescription(advancedForm.get('executionMode')?.value) }}</small>\n </div>\n </div>\n </div>\n\n <!-- Agent Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-robot\"></i>\n Agent Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Agent Type -->\n <div class=\"form-field\">\n <label for=\"typeID\">Agent Type</label>\n <kendo-dropdownlist \n formControlName=\"typeID\"\n [data]=\"agentTypes$ | async\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Default Type', ID: null }\"\n class=\"form-control\">\n </kendo-dropdownlist>\n <small class=\"field-hint\">Specialized agent type that defines behavior and capabilities</small>\n </div>\n \n <!-- Status -->\n <div class=\"form-field\">\n <label for=\"status\">Status *</label>\n <kendo-dropdownlist \n formControlName=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n </kendo-dropdownlist>\n @if (isFieldInvalid('status')) {\n <div class=\"field-error\">{{ getFieldError('status') }}</div>\n }\n <small class=\"field-hint\">Current operational status of this sub-agent</small>\n </div>\n </div>\n </div>\n\n <!-- Capability Restrictions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-shield-alt\"></i>\n Capability Restrictions\n </h3>\n \n <div class=\"form-grid\">\n <!-- Expose As Action (Disabled for Sub-Agents) -->\n <div class=\"form-field full-width\">\n <label class=\"checkbox-label disabled\">\n <kendo-checkbox \n formControlName=\"exposeAsAction\"\n [disabled]=\"true\">\n </kendo-checkbox>\n Expose As Action\n </label>\n <small class=\"field-hint disabled-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Sub-agents cannot be exposed as actions. Only root agents (without parents) can be exposed as actions for use by other agents.\n </small>\n </div>\n </div>\n </div>\n </form>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\"\n [disabled]=\"(isSaving$ | async) || false\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"save()\"\n [disabled]=\"((isSaving$ | async) || false) || ((isLoading$ | async) || false) || hasExecutionOrderError()\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Save Settings\n }\n </button>\n </div>\n</div>", styles: [".sub-agent-advanced-settings-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner {\n margin-bottom: 1rem;\n}\n\n.loading-spinner i {\n color: #2196f3;\n}\n\n.loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* === Form Layout === */\n.advanced-form {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title i {\n color: #2196f3;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width {\n grid-column: 1 / -1;\n}\n\n/* === Form Controls === */\nlabel {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n color: #495057;\n cursor: pointer;\n}\n\n.checkbox-label.disabled {\n color: #6c757d;\n cursor: not-allowed;\n}\n\n.form-control {\n width: 100%;\n}\n\n.field-hint {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.disabled-hint {\n color: #999;\n font-style: italic;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.disabled-hint i {\n color: #17a2b8;\n}\n\n.field-error {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n/* === Validation States === */\n.form-control.ng-invalid.ng-touched,\n.error-border {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: #28a745;\n}\n\n/* === Execution Mode Option Template === */\n.execution-mode-option {\n padding: 0.5rem 0;\n}\n\n.option-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.25rem;\n}\n\n.option-header i {\n color: #2196f3;\n width: 16px;\n}\n\n.option-title {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description {\n font-size: 0.8rem;\n color: #666;\n line-height: 1.3;\n margin-left: 1.5rem;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer button {\n min-width: 120px;\n}\n\n.dialog-footer button[themeColor=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Section-Specific Styling === */\n\n/* Execution Configuration */\n.form-section:first-child .section-title {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n/* Agent Configuration */\n.form-section:nth-child(2) .section-title {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n/* Capability Restrictions */\n.form-section:nth-child(3) .section-title {\n background: linear-gradient(135deg, #fff3e0, #f8f9fa);\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .form-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width {\n grid-column: 1;\n }\n \n .advanced-form {\n padding: 1rem;\n }\n \n .section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer button {\n width: 100%;\n }\n}\n\n/* === Error Highlighting === */\n.error-border {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }]
|
|
371
|
-
}], () => [{ type: i1.
|
|
370
|
+
args: [{ selector: 'mj-sub-agent-advanced-settings-dialog', template: "<!-- Sub-Agent Advanced Settings Dialog -->\n<div class=\"sub-agent-advanced-settings-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading sub-agent settings...</p>\n </div>\n } @else {\n \n <!-- Form Content -->\n <form [formGroup]=\"advancedForm\" class=\"advanced-form\">\n \n <!-- Execution Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Execution Order -->\n <div class=\"form-field\">\n <label for=\"executionOrder\">Execution Order *</label>\n <kendo-numerictextbox \n formControlName=\"executionOrder\"\n [min]=\"0\"\n [format]=\"'0'\"\n [class.error-border]=\"hasExecutionOrderError()\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('executionOrder')) {\n <div class=\"field-error\">{{ getFieldError('executionOrder') }}</div>\n }\n @if (hasExecutionOrderError()) {\n <div class=\"field-error\">{{ executionOrderError }}</div>\n }\n <small class=\"field-hint\">Order in which this sub-agent executes among siblings (0 = first). Must be unique among sibling agents.</small>\n </div>\n \n <!-- Execution Mode -->\n <div class=\"form-field\">\n <label for=\"executionMode\">Execution Mode *</label>\n <kendo-dropdownlist \n formControlName=\"executionMode\"\n [data]=\"executionModeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"execution-mode-option\">\n <div class=\"option-header\">\n <i class=\"fa-solid {{ dataItem.icon }}\"></i>\n <span class=\"option-title\">{{ dataItem.text }}</span>\n </div>\n <div class=\"option-description\">{{ dataItem.description }}</div>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (isFieldInvalid('executionMode')) {\n <div class=\"field-error\">{{ getFieldError('executionMode') }}</div>\n }\n <small class=\"field-hint\">{{ getExecutionModeDescription(advancedForm.get('executionMode')?.value) }}</small>\n </div>\n </div>\n </div>\n\n <!-- Agent Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-robot\"></i>\n Agent Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Agent Type -->\n <div class=\"form-field\">\n <label for=\"typeID\">Agent Type</label>\n <kendo-dropdownlist \n formControlName=\"typeID\"\n [data]=\"agentTypes$ | async\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Default Type', ID: null }\"\n class=\"form-control\">\n </kendo-dropdownlist>\n <small class=\"field-hint\">Specialized agent type that defines behavior and capabilities</small>\n </div>\n \n <!-- Status -->\n <div class=\"form-field\">\n <label for=\"status\">Status *</label>\n <kendo-dropdownlist \n formControlName=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n </kendo-dropdownlist>\n @if (isFieldInvalid('status')) {\n <div class=\"field-error\">{{ getFieldError('status') }}</div>\n }\n <small class=\"field-hint\">Current operational status of this sub-agent</small>\n </div>\n </div>\n </div>\n\n <!-- Capability Restrictions Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-shield-alt\"></i>\n Capability Restrictions\n </h3>\n \n <div class=\"form-grid\">\n <!-- Expose As Action (Disabled for Sub-Agents) -->\n <div class=\"form-field full-width\">\n <label class=\"checkbox-label disabled\">\n <kendo-checkbox \n formControlName=\"exposeAsAction\"\n [disabled]=\"true\">\n </kendo-checkbox>\n Expose As Action\n </label>\n <small class=\"field-hint disabled-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Sub-agents cannot be exposed as actions. Only root agents (without parents) can be exposed as actions for use by other agents.\n </small>\n </div>\n </div>\n </div>\n </form>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\"\n [disabled]=\"(isSaving$ | async) || false\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"save()\"\n [disabled]=\"((isSaving$ | async) || false) || ((isLoading$ | async) || false) || hasExecutionOrderError()\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Save Settings\n }\n </button>\n </div>\n</div>", styles: [".sub-agent-advanced-settings-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner {\n margin-bottom: 1rem;\n}\n\n.loading-spinner i {\n color: #2196f3;\n}\n\n.loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* === Form Layout === */\n.advanced-form {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title i {\n color: #2196f3;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width {\n grid-column: 1 / -1;\n}\n\n/* === Form Controls === */\nlabel {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n color: #495057;\n cursor: pointer;\n}\n\n.checkbox-label.disabled {\n color: #6c757d;\n cursor: not-allowed;\n}\n\n.form-control {\n width: 100%;\n}\n\n.field-hint {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.disabled-hint {\n color: #999;\n font-style: italic;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.disabled-hint i {\n color: #17a2b8;\n}\n\n.field-error {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n/* === Validation States === */\n.form-control.ng-invalid.ng-touched,\n.error-border {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: #28a745;\n}\n\n/* === Execution Mode Option Template === */\n.execution-mode-option {\n padding: 0.5rem 0;\n}\n\n.option-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.25rem;\n}\n\n.option-header i {\n color: #2196f3;\n width: 16px;\n}\n\n.option-title {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description {\n font-size: 0.8rem;\n color: #666;\n line-height: 1.3;\n margin-left: 1.5rem;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer button {\n min-width: 120px;\n}\n\n.dialog-footer button[themeColor=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Section-Specific Styling === */\n\n/* Execution Configuration */\n.form-section:first-child .section-title {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n/* Agent Configuration */\n.form-section:nth-child(2) .section-title {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n/* Capability Restrictions */\n.form-section:nth-child(3) .section-title {\n background: linear-gradient(135deg, #fff3e0, #f8f9fa);\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .form-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width {\n grid-column: 1;\n }\n \n .advanced-form {\n padding: 1rem;\n }\n \n .section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer button {\n width: 100%;\n }\n}\n\n/* === Error Highlighting === */\n.error-border {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }]
|
|
371
|
+
}], () => [{ type: i1.WindowRef }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], null); })();
|
|
372
372
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubAgentAdvancedSettingsDialogComponent, { className: "SubAgentAdvancedSettingsDialogComponent", filePath: "src/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.ts", lineNumber: 26 }); })();
|
|
373
373
|
//# sourceMappingURL=sub-agent-advanced-settings-dialog.component.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { WindowRef } from '@progress/kendo-angular-dialog';
|
|
4
4
|
import { Subject, BehaviorSubject } from 'rxjs';
|
|
5
5
|
import { AIAgentEntity, AIAgentTypeEntity } from '@memberjunction/core-entities';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -39,7 +39,7 @@ export declare class SubAgentSelectorDialogComponent implements OnInit, OnDestro
|
|
|
39
39
|
get selectedCount(): number;
|
|
40
40
|
get totalAgentCount(): number;
|
|
41
41
|
get filteredCount(): number;
|
|
42
|
-
constructor(dialogRef:
|
|
42
|
+
constructor(dialogRef: WindowRef, cdr: ChangeDetectorRef);
|
|
43
43
|
ngOnInit(): void;
|
|
44
44
|
ngOnDestroy(): void;
|
|
45
45
|
private initializeData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-selector-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"sub-agent-selector-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAa,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,eAAe,EAA2E,MAAM,MAAM,CAAC;AAEzH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAEjF,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAKa,+BAAgC,YAAW,MAAM,EAAE,SAAS;IAkCrE,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAhCb,MAAM,EAAG,sBAAsB,CAAC;IAGhC,OAAO,CAAC,QAAQ,CAAuB;IAChC,MAAM,yCAAgD;IAG7D,UAAU,sCAA+C;IACzD,WAAW,uCAAgD;IAC3D,eAAe,sCAA+C;IAC9D,eAAe,+BAA+C;IAC9D,UAAU,2BAAuC;IAGjD,aAAa,6BAAuB;IACpC,eAAe,0BAAsC;IAGrD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;gBAGS,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,iBAAiB;IAGhC,QAAQ;IAMR,WAAW;YAKG,cAAc;YAYd,kBAAkB;IAwChC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,uBAAuB;IAgB/B,UAAU,CAAC,MAAM,EAAE,MAAM;IAIzB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB;IAqC5C,WAAW;IAIX,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAO7C,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAWpD,MAAM;IAKN,SAAS;IAQH,iBAAiB;yCAtOZ,+BAA+B;2CAA/B,+BAA+B;CAuP3C"}
|
|
@@ -244,33 +244,37 @@ export class SubAgentSelectorDialogComponent {
|
|
|
244
244
|
}
|
|
245
245
|
async loadAgentsAndTypes() {
|
|
246
246
|
const rv = new RunView();
|
|
247
|
-
// Load
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
247
|
+
// Load both agents and types in a single batch for better performance
|
|
248
|
+
const results = await rv.RunViews([
|
|
249
|
+
// Root agents (index 0)
|
|
250
|
+
{
|
|
251
|
+
EntityName: 'AI Agents',
|
|
252
|
+
ExtraFilter: `ParentID IS NULL AND ID != '${this.config.parentAgentId}' AND Status = 'Active' AND (ExposeAsAction = 0 OR ExposeAsAction IS NULL)`,
|
|
253
|
+
OrderBy: 'Name',
|
|
254
|
+
ResultType: 'entity_object',
|
|
255
|
+
MaxRows: 1000
|
|
256
|
+
},
|
|
257
|
+
// Agent types (index 1)
|
|
258
|
+
{
|
|
259
|
+
EntityName: 'MJ: AI Agent Types',
|
|
260
|
+
ExtraFilter: 'IsActive = 1',
|
|
261
|
+
OrderBy: 'Name',
|
|
262
|
+
ResultType: 'entity_object',
|
|
263
|
+
MaxRows: 1000
|
|
264
|
+
}
|
|
265
|
+
]);
|
|
266
|
+
// Process root agents (index 0)
|
|
267
|
+
if (results[0].Success) {
|
|
268
|
+
const agents = (results[0].Results || []).map(agent => ({
|
|
258
269
|
...agent.GetAll(),
|
|
259
270
|
selected: false,
|
|
260
271
|
typeName: agent.Type || 'Default'
|
|
261
272
|
}));
|
|
262
273
|
this.allAgents$.next(agents);
|
|
263
274
|
}
|
|
264
|
-
//
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
ExtraFilter: 'IsActive = 1',
|
|
268
|
-
OrderBy: 'Name',
|
|
269
|
-
ResultType: 'entity_object',
|
|
270
|
-
MaxRows: 1000
|
|
271
|
-
});
|
|
272
|
-
if (typesResult.Success) {
|
|
273
|
-
this.agentTypes$.next(typesResult.Results || []);
|
|
275
|
+
// Process agent types (index 1)
|
|
276
|
+
if (results[1].Success) {
|
|
277
|
+
this.agentTypes$.next(results[1].Results || []);
|
|
274
278
|
}
|
|
275
279
|
}
|
|
276
280
|
setupFiltering() {
|
|
@@ -389,7 +393,7 @@ export class SubAgentSelectorDialogComponent {
|
|
|
389
393
|
});
|
|
390
394
|
this.dialogRef.close();
|
|
391
395
|
}
|
|
392
|
-
static { this.ɵfac = function SubAgentSelectorDialogComponent_Factory(t) { return new (t || SubAgentSelectorDialogComponent)(i0.ɵɵdirectiveInject(i1.
|
|
396
|
+
static { this.ɵfac = function SubAgentSelectorDialogComponent_Factory(t) { return new (t || SubAgentSelectorDialogComponent)(i0.ɵɵdirectiveInject(i1.WindowRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
393
397
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SubAgentSelectorDialogComponent, selectors: [["mj-sub-agent-selector-dialog"]], decls: 36, vars: 21, consts: [[1, "sub-agent-selector-dialog"], [1, "dialog-header"], [1, "header-info"], [1, "header-description"], [1, "header-stats"], [1, "selection-count"], [1, "total-count"], [1, "controls-section"], [1, "search-controls"], [1, "search-input"], [1, "fa-solid", "fa-search", "search-icon"], ["placeholder", "Search agents by name, description, or type...", 1, "search-field", 3, "formControl"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "clear-search"], [1, "filter-controls"], [1, "type-filter"], ["textField", "Name", "valueField", "ID", 1, "type-dropdown", 3, "valueChange", "value", "valuePrimitive", "defaultItem", "data"], [1, "loading-state"], [1, "content-area"], [1, "dialog-footer"], [1, "footer-left"], ["kendoButton", "", "look", "outline", "themeColor", "primary"], [1, "footer-right"], ["kendoButton", "", "look", "flat", 3, "click"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-2x"], [1, "empty-state"], [1, "agents-grid"], [1, "fa-solid", "fa-robot"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "agent-card", 3, "selected"], [1, "agent-card", 3, "click"], [1, "selection-indicator"], [1, "fa-solid", "fa-check-circle"], [1, "fa-regular", "fa-circle"], [1, "agent-icon"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], [1, "agent-name"], [1, "agent-description"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "type-badge"], [1, "execution-badge"], [1, "status-badge"], ["kendoButton", "", "look", "outline", "themeColor", "primary", 3, "click"], [1, "fa-solid", "fa-plus"]], template: function SubAgentSelectorDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
394
398
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3");
|
|
395
399
|
i0.ɵɵtext(4);
|
|
@@ -449,11 +453,11 @@ export class SubAgentSelectorDialogComponent {
|
|
|
449
453
|
i0.ɵɵproperty("disabled", ctx.selectedCount === 0);
|
|
450
454
|
i0.ɵɵadvance();
|
|
451
455
|
i0.ɵɵconditional(ctx.config.multiSelect ? 34 : 35);
|
|
452
|
-
} }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".sub-agent-selector-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: #212529;\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n.header-description[_ngcontent-%COMP%] {\n margin: 0;\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.25rem;\n font-size: 0.85rem;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n color: #0d6efd;\n font-weight: 600;\n}\n\n.total-count[_ngcontent-%COMP%] {\n color: #6c757d;\n}\n\n\n\n.controls-section[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.search-controls[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.search-input[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #6c757d;\n z-index: 1;\n}\n\n.search-field[_ngcontent-%COMP%] {\n width: 100%;\n padding-left: 40px;\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n z-index: 1;\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.type-filter[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.type-filter[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 500;\n color: #495057;\n}\n\n.type-dropdown[_ngcontent-%COMP%] {\n min-width: 150px;\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0d6efd;\n margin-bottom: 1rem;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n color: #dee2e6;\n margin-bottom: 1rem;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: #495057;\n font-size: 1.1rem;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1rem;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n gap: 1rem;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n border-color: #0d6efd;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.15);\n}\n\n.agent-card.selected[_ngcontent-%COMP%] {\n border-color: #0d6efd;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.2);\n}\n\n.selection-indicator[_ngcontent-%COMP%] {\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 1.1rem;\n}\n\n.selection-indicator[_ngcontent-%COMP%] .fa-check-circle[_ngcontent-%COMP%] {\n color: #198754;\n}\n\n.selection-indicator[_ngcontent-%COMP%] .fa-circle[_ngcontent-%COMP%] {\n color: #dee2e6;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: #0d6efd;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n color: #212529;\n margin-bottom: 0.5rem;\n word-wrap: break-word;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n margin-bottom: 0.75rem;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.status-badge[_ngcontent-%COMP%], \n.type-badge[_ngcontent-%COMP%], \n.execution-badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.75rem;\n font-weight: 500;\n color: white;\n}\n\n
|
|
456
|
+
} }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".sub-agent-selector-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.header-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: #212529;\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n.header-description[_ngcontent-%COMP%] {\n margin: 0;\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.25rem;\n font-size: 0.85rem;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n color: #0d6efd;\n font-weight: 600;\n}\n\n.total-count[_ngcontent-%COMP%] {\n color: #6c757d;\n}\n\n\n\n.controls-section[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.search-controls[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.search-input[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #6c757d;\n z-index: 1;\n}\n\n.search-field[_ngcontent-%COMP%] {\n width: 100%;\n padding-left: 40px;\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n z-index: 1;\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.type-filter[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.type-filter[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 500;\n color: #495057;\n}\n\n.type-dropdown[_ngcontent-%COMP%] {\n min-width: 150px;\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0d6efd;\n margin-bottom: 1rem;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n color: #dee2e6;\n margin-bottom: 1rem;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: #495057;\n font-size: 1.1rem;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1rem;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n gap: 1rem;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n border-color: #0d6efd;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.15);\n}\n\n.agent-card.selected[_ngcontent-%COMP%] {\n border-color: #0d6efd;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.2);\n}\n\n.selection-indicator[_ngcontent-%COMP%] {\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 1.1rem;\n}\n\n.selection-indicator[_ngcontent-%COMP%] .fa-check-circle[_ngcontent-%COMP%] {\n color: #198754;\n}\n\n.selection-indicator[_ngcontent-%COMP%] .fa-circle[_ngcontent-%COMP%] {\n color: #dee2e6;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: #0d6efd;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n color: #212529;\n margin-bottom: 0.5rem;\n word-wrap: break-word;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n margin-bottom: 0.75rem;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.status-badge[_ngcontent-%COMP%], \n.type-badge[_ngcontent-%COMP%], \n.execution-badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.75rem;\n font-weight: 500;\n color: white;\n}\n\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n background: #6f42c1;\n}\n\n.execution-badge[_ngcontent-%COMP%] {\n background: #fd7e14;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n background: white;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.75rem;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n@media (max-width: 768px) {\n .agents-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .dialog-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 1rem;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n align-items: flex-start;\n }\n \n .controls-section[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls[_ngcontent-%COMP%] {\n justify-content: flex-start;\n }\n \n .dialog-footer[_ngcontent-%COMP%] {\n flex-direction: column-reverse;\n gap: 1rem;\n }\n \n .footer-left[_ngcontent-%COMP%], \n .footer-right[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: center;\n }\n}"] }); }
|
|
453
457
|
}
|
|
454
458
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubAgentSelectorDialogComponent, [{
|
|
455
459
|
type: Component,
|
|
456
|
-
args: [{ selector: 'mj-sub-agent-selector-dialog', template: "<!-- Sub-Agent Selector Dialog -->\n<div class=\"sub-agent-selector-dialog\">\n \n <!-- Dialog Header -->\n <div class=\"dialog-header\">\n <div class=\"header-info\">\n <h3>{{ config.title || 'Select Sub-Agents' }}</h3>\n <p class=\"header-description\">\n Choose existing root agents to convert into sub-agents. Only active agents without parents and not exposed as actions can be selected.\n </p>\n </div>\n <div class=\"header-stats\">\n @if (selectedCount > 0) {\n <span class=\"selection-count\">{{ selectedCount }} selected</span>\n }\n <span class=\"total-count\">{{ filteredCount }} of {{ totalAgentCount }} agents</span>\n </div>\n </div>\n\n <!-- Search and Filter Controls -->\n <div class=\"controls-section\">\n <div class=\"search-controls\">\n <div class=\"search-input\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <kendo-textbox \n [formControl]=\"searchControl\"\n placeholder=\"Search agents by name, description, or type...\"\n class=\"search-field\">\n </kendo-textbox>\n @if (searchControl.value) {\n <button kendoButton \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"clearSearch()\"\n class=\"clear-search\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n\n <div class=\"filter-controls\">\n <div class=\"type-filter\">\n <label>Agent Type:</label>\n <kendo-dropdownlist \n [value]=\"selectedTypeId$ | async\"\n (valueChange)=\"selectType($event)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'All Types', ID: 'all' }\"\n [data]=\"agentTypes$ | async\"\n class=\"type-dropdown\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n <p>Loading available agents...</p>\n </div>\n } @else {\n \n <!-- Content Area -->\n <div class=\"content-area\">\n @if (filteredCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-robot\"></i>\n <h4>No agents found</h4>\n @if (totalAgentCount === 0) {\n <p>No eligible root agents are available to become sub-agents.</p>\n } @else {\n <p>Try adjusting your search criteria or selecting a different agent type.</p>\n <button kendoButton (click)=\"clearSearch()\" themeColor=\"primary\">\n Clear Search\n </button>\n }\n </div>\n } @else {\n \n <!-- Agents Grid -->\n <div class=\"agents-grid\">\n @for (agent of (filteredAgents$ | async); track agent.ID) {\n <div class=\"agent-card\" \n [class.selected]=\"agent.selected\"\n (click)=\"toggleAgentSelection(agent)\">\n \n <!-- Selection Indicator -->\n <div class=\"selection-indicator\">\n @if (agent.selected) {\n <i class=\"fa-solid fa-check-circle\"></i>\n } @else {\n <i class=\"fa-regular fa-circle\"></i>\n }\n </div>\n \n <!-- Agent Icon/Logo -->\n <div class=\"agent-icon\">\n @if (agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n \n <!-- Agent Info -->\n <div class=\"agent-info\">\n <div class=\"agent-name\">{{ agent.Name }}</div>\n @if (agent.Description) {\n <div class=\"agent-description\">{{ agent.Description }}</div>\n }\n <div class=\"agent-meta\">\n @if (agent.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getAgentStatusColor(agent)\">\n {{ agent.Status }}\n </span>\n }\n @if (agent.typeName) {\n <span class=\"type-badge\">{{ agent.typeName }}</span>\n }\n @if (agent.ExecutionMode) {\n <span class=\"execution-badge\">{{ agent.ExecutionMode }}</span>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-left\">\n @if (config.showCreateNew) {\n <button kendoButton \n look=\"outline\"\n themeColor=\"primary\"\n (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n </button>\n }\n </div>\n \n <div class=\"footer-right\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"addSelectedAgents()\"\n [disabled]=\"selectedCount === 0\">\n @if (config.multiSelect) {\n Add {{ selectedCount > 0 ? selectedCount + ' ' : '' }}Sub-Agent{{ selectedCount !== 1 ? 's' : '' }}\n } @else {\n Add Sub-Agent\n }\n </button>\n </div>\n </div>\n</div>", styles: [".sub-agent-selector-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* === Dialog Header === */\n.dialog-header {\n padding: 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.header-info h3 {\n margin: 0 0 0.5rem 0;\n color: #212529;\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n.header-description {\n margin: 0;\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n}\n\n.header-stats {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.25rem;\n font-size: 0.85rem;\n}\n\n.selection-count {\n color: #0d6efd;\n font-weight: 600;\n}\n\n.total-count {\n color: #6c757d;\n}\n\n/* === Controls Section === */\n.controls-section {\n padding: 1rem 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.search-controls {\n flex: 1;\n}\n\n.search-input {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n color: #6c757d;\n z-index: 1;\n}\n\n.search-field {\n width: 100%;\n padding-left: 40px;\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n z-index: 1;\n}\n\n.filter-controls {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.type-filter {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.type-filter label {\n font-size: 0.85rem;\n font-weight: 500;\n color: #495057;\n}\n\n.type-dropdown {\n min-width: 150px;\n}\n\n/* === Content Area === */\n.content-area {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-state i {\n color: #0d6efd;\n margin-bottom: 1rem;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1rem;\n}\n\n/* === Empty State === */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.empty-state i {\n font-size: 3rem;\n color: #dee2e6;\n margin-bottom: 1rem;\n}\n\n.empty-state h4 {\n margin: 0 0 0.5rem 0;\n color: #495057;\n font-size: 1.1rem;\n}\n\n.empty-state p {\n margin: 0 0 1rem 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n/* === Agents Grid === */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1rem;\n}\n\n.agent-card {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n gap: 1rem;\n position: relative;\n}\n\n.agent-card:hover {\n border-color: #0d6efd;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.15);\n}\n\n.agent-card.selected {\n border-color: #0d6efd;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.2);\n}\n\n.selection-indicator {\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 1.1rem;\n}\n\n.selection-indicator .fa-check-circle {\n color: #198754;\n}\n\n.selection-indicator .fa-circle {\n color: #dee2e6;\n}\n\n.agent-icon {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n}\n\n.agent-icon i {\n font-size: 1.5rem;\n color: #0d6efd;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 1rem;\n font-weight: 600;\n color: #212529;\n margin-bottom: 0.5rem;\n word-wrap: break-word;\n}\n\n.agent-description {\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n margin-bottom: 0.75rem;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.agent-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.status-badge,\n.type-badge,\n.execution-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.75rem;\n font-weight: 500;\n color: white;\n}\n\n.status-badge {\n /* Color set dynamically via style binding */\n}\n\n.type-badge {\n background: #6f42c1;\n}\n\n.execution-badge {\n background: #fd7e14;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n padding: 1rem 1.5rem;\n background: white;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.footer-left {\n display: flex;\n gap: 0.5rem;\n}\n\n.footer-right {\n display: flex;\n gap: 0.75rem;\n}\n\n.dialog-footer button {\n min-width: 100px;\n}\n\n.dialog-footer button i {\n margin-right: 0.5rem;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .agents-grid {\n grid-template-columns: 1fr;\n }\n \n .dialog-header {\n flex-direction: column;\n gap: 1rem;\n }\n \n .header-stats {\n align-items: flex-start;\n }\n \n .controls-section {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls {\n justify-content: flex-start;\n }\n \n .dialog-footer {\n flex-direction: column-reverse;\n gap: 1rem;\n }\n \n .footer-left,\n .footer-right {\n width: 100%;\n justify-content: center;\n }\n}"] }]
|
|
457
|
-
}], () => [{ type: i1.
|
|
460
|
+
args: [{ selector: 'mj-sub-agent-selector-dialog', template: "<!-- Sub-Agent Selector Dialog -->\n<div class=\"sub-agent-selector-dialog\">\n \n <!-- Dialog Header -->\n <div class=\"dialog-header\">\n <div class=\"header-info\">\n <h3>{{ config.title || 'Select Sub-Agents' }}</h3>\n <p class=\"header-description\">\n Choose existing root agents to convert into sub-agents. Only active agents without parents and not exposed as actions can be selected.\n </p>\n </div>\n <div class=\"header-stats\">\n @if (selectedCount > 0) {\n <span class=\"selection-count\">{{ selectedCount }} selected</span>\n }\n <span class=\"total-count\">{{ filteredCount }} of {{ totalAgentCount }} agents</span>\n </div>\n </div>\n\n <!-- Search and Filter Controls -->\n <div class=\"controls-section\">\n <div class=\"search-controls\">\n <div class=\"search-input\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <kendo-textbox \n [formControl]=\"searchControl\"\n placeholder=\"Search agents by name, description, or type...\"\n class=\"search-field\">\n </kendo-textbox>\n @if (searchControl.value) {\n <button kendoButton \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"clearSearch()\"\n class=\"clear-search\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n\n <div class=\"filter-controls\">\n <div class=\"type-filter\">\n <label>Agent Type:</label>\n <kendo-dropdownlist \n [value]=\"selectedTypeId$ | async\"\n (valueChange)=\"selectType($event)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'All Types', ID: 'all' }\"\n [data]=\"agentTypes$ | async\"\n class=\"type-dropdown\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n <p>Loading available agents...</p>\n </div>\n } @else {\n \n <!-- Content Area -->\n <div class=\"content-area\">\n @if (filteredCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-robot\"></i>\n <h4>No agents found</h4>\n @if (totalAgentCount === 0) {\n <p>No eligible root agents are available to become sub-agents.</p>\n } @else {\n <p>Try adjusting your search criteria or selecting a different agent type.</p>\n <button kendoButton (click)=\"clearSearch()\" themeColor=\"primary\">\n Clear Search\n </button>\n }\n </div>\n } @else {\n \n <!-- Agents Grid -->\n <div class=\"agents-grid\">\n @for (agent of (filteredAgents$ | async); track agent.ID) {\n <div class=\"agent-card\" \n [class.selected]=\"agent.selected\"\n (click)=\"toggleAgentSelection(agent)\">\n \n <!-- Selection Indicator -->\n <div class=\"selection-indicator\">\n @if (agent.selected) {\n <i class=\"fa-solid fa-check-circle\"></i>\n } @else {\n <i class=\"fa-regular fa-circle\"></i>\n }\n </div>\n \n <!-- Agent Icon/Logo -->\n <div class=\"agent-icon\">\n @if (agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n \n <!-- Agent Info -->\n <div class=\"agent-info\">\n <div class=\"agent-name\">{{ agent.Name }}</div>\n @if (agent.Description) {\n <div class=\"agent-description\">{{ agent.Description }}</div>\n }\n <div class=\"agent-meta\">\n @if (agent.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getAgentStatusColor(agent)\">\n {{ agent.Status }}\n </span>\n }\n @if (agent.typeName) {\n <span class=\"type-badge\">{{ agent.typeName }}</span>\n }\n @if (agent.ExecutionMode) {\n <span class=\"execution-badge\">{{ agent.ExecutionMode }}</span>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-left\">\n @if (config.showCreateNew) {\n <button kendoButton \n look=\"outline\"\n themeColor=\"primary\"\n (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Sub-Agent\n </button>\n }\n </div>\n \n <div class=\"footer-right\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"addSelectedAgents()\"\n [disabled]=\"selectedCount === 0\">\n @if (config.multiSelect) {\n Add {{ selectedCount > 0 ? selectedCount + ' ' : '' }}Sub-Agent{{ selectedCount !== 1 ? 's' : '' }}\n } @else {\n Add Sub-Agent\n }\n </button>\n </div>\n </div>\n</div>", styles: [".sub-agent-selector-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Dialog Header === */\n.dialog-header {\n padding: 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.header-info h3 {\n margin: 0 0 0.5rem 0;\n color: #212529;\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n.header-description {\n margin: 0;\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n}\n\n.header-stats {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.25rem;\n font-size: 0.85rem;\n}\n\n.selection-count {\n color: #0d6efd;\n font-weight: 600;\n}\n\n.total-count {\n color: #6c757d;\n}\n\n/* === Controls Section === */\n.controls-section {\n padding: 1rem 1.5rem;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.search-controls {\n flex: 1;\n}\n\n.search-input {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n color: #6c757d;\n z-index: 1;\n}\n\n.search-field {\n width: 100%;\n padding-left: 40px;\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n z-index: 1;\n}\n\n.filter-controls {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n}\n\n.type-filter {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.type-filter label {\n font-size: 0.85rem;\n font-weight: 500;\n color: #495057;\n}\n\n.type-dropdown {\n min-width: 150px;\n}\n\n/* === Content Area === */\n.content-area {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-state i {\n color: #0d6efd;\n margin-bottom: 1rem;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1rem;\n}\n\n/* === Empty State === */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.empty-state i {\n font-size: 3rem;\n color: #dee2e6;\n margin-bottom: 1rem;\n}\n\n.empty-state h4 {\n margin: 0 0 0.5rem 0;\n color: #495057;\n font-size: 1.1rem;\n}\n\n.empty-state p {\n margin: 0 0 1rem 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n/* === Agents Grid === */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1rem;\n}\n\n.agent-card {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n gap: 1rem;\n position: relative;\n}\n\n.agent-card:hover {\n border-color: #0d6efd;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.15);\n}\n\n.agent-card.selected {\n border-color: #0d6efd;\n background: #f8f9ff;\n box-shadow: 0 2px 8px rgba(13, 110, 253, 0.2);\n}\n\n.selection-indicator {\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n font-size: 1.1rem;\n}\n\n.selection-indicator .fa-check-circle {\n color: #198754;\n}\n\n.selection-indicator .fa-circle {\n color: #dee2e6;\n}\n\n.agent-icon {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n}\n\n.agent-icon i {\n font-size: 1.5rem;\n color: #0d6efd;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 1rem;\n font-weight: 600;\n color: #212529;\n margin-bottom: 0.5rem;\n word-wrap: break-word;\n}\n\n.agent-description {\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n margin-bottom: 0.75rem;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.agent-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.status-badge,\n.type-badge,\n.execution-badge {\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.75rem;\n font-weight: 500;\n color: white;\n}\n\n/* Status badge color set dynamically via style binding */\n\n.type-badge {\n background: #6f42c1;\n}\n\n.execution-badge {\n background: #fd7e14;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n padding: 1rem 1.5rem;\n background: white;\n border-top: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.footer-left {\n display: flex;\n gap: 0.5rem;\n}\n\n.footer-right {\n display: flex;\n gap: 0.75rem;\n}\n\n.dialog-footer button {\n min-width: 100px;\n}\n\n.dialog-footer button i {\n margin-right: 0.5rem;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .agents-grid {\n grid-template-columns: 1fr;\n }\n \n .dialog-header {\n flex-direction: column;\n gap: 1rem;\n }\n \n .header-stats {\n align-items: flex-start;\n }\n \n .controls-section {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls {\n justify-content: flex-start;\n }\n \n .dialog-footer {\n flex-direction: column-reverse;\n gap: 1rem;\n }\n \n .footer-left,\n .footer-right {\n width: 100%;\n justify-content: center;\n }\n}"] }]
|
|
461
|
+
}], () => [{ type: i1.WindowRef }, { type: i0.ChangeDetectorRef }], null); })();
|
|
458
462
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubAgentSelectorDialogComponent, { className: "SubAgentSelectorDialogComponent", filePath: "src/lib/custom/AIAgents/sub-agent-selector-dialog.component.ts", lineNumber: 35 }); })();
|
|
459
463
|
//# sourceMappingURL=sub-agent-selector-dialog.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.ts","../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.html"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sub-agent-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.ts","../../../../src/lib/custom/AIAgents/sub-agent-selector-dialog.component.html"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export declare class TemplatesFormExtendedComponent extends TemplateFormComponen
|
|
|
31
31
|
showParamDialog: boolean;
|
|
32
32
|
templateEditorConfig: TemplateEditorConfig;
|
|
33
33
|
private destroy$;
|
|
34
|
+
private activeTimeouts;
|
|
34
35
|
ngOnInit(): Promise<void>;
|
|
35
36
|
ngOnDestroy(): void;
|
|
36
37
|
ngAfterViewInit(): void;
|
|
@@ -52,6 +53,10 @@ export declare class TemplatesFormExtendedComponent extends TemplateFormComponen
|
|
|
52
53
|
*/
|
|
53
54
|
private updateUnsavedChangesFlag;
|
|
54
55
|
onTemplateTextChange(event: any): void;
|
|
56
|
+
/**
|
|
57
|
+
* Helper method to track setTimeout calls for cleanup
|
|
58
|
+
*/
|
|
59
|
+
private setTrackedTimeout;
|
|
55
60
|
/**
|
|
56
61
|
* Manually sync the editor value without triggering change events
|
|
57
62
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/templates-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAa,aAAa,EAAqB,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAA0B,MAAM,+BAA+B,CAAC;AAG9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;AAMlG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;;AAEzF,qBAMa,8BAA+B,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS,EAAE,aAAa;IAC1G,MAAM,EAAG,cAAc,CAAC;IACxB,gBAAgB,EAAE,qBAAqB,EAAE,CAAM;IAC/C,oBAAoB,EAAE,MAAM,CAAK;IACjC,kBAAkB,EAAE,OAAO,CAAS;IACpC,kBAAkB,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IACxD,iBAAiB,EAAE,OAAO,CAAS;IACnC,oBAAoB,EAAE,OAAO,CAAQ;IACrC,wBAAwB,EAAE,OAAO,CAAQ;IACzC,eAAe,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAG1D;IACK,kBAAkB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAM;IAC9D,kBAAkB,EAAE,mBAAmB,EAAE,CAAa;IAEpC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IACvE,OAAO,CAAC,qBAAqB,CAAS;IAC/B,iBAAiB,UAAS;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,eAAe,UAAS;IAGxB,oBAAoB,EAAE,oBAAoB,CAI/C;IAEF,OAAO,CAAC,QAAQ,CAAuB;
|
|
1
|
+
{"version":3,"file":"templates-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/templates-form.component.ts"],"names":[],"mappings":"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"}
|