@memberjunction/ng-core-entity-forms 2.75.0 → 2.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +109 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +2020 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +32 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +413 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +9 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +84 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +34 -6
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +656 -520
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +223 -221
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +51 -49
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js +5 -3
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +160 -158
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +3 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +49 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +211 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +33 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +265 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +4 -8
- 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 +47 -163
- 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 +71 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +931 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +6 -4
- 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 +202 -297
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +30 -25
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +31 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +34 -14
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +80 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +277 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +59 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +31 -4
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +16 -6
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +19 -9
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +294 -285
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +183 -110
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +21 -17
package/README.md
CHANGED
|
@@ -252,3 +252,127 @@ Each entity form typically follows this structure:
|
|
|
252
252
|
- @memberjunction/ng-notifications
|
|
253
253
|
- @memberjunction/graphql-dataprovider
|
|
254
254
|
|
|
255
|
+
## AI Agent Type UI Customization
|
|
256
|
+
|
|
257
|
+
### Overview
|
|
258
|
+
|
|
259
|
+
The AI Agent Type UI Customization feature allows AI Agent Types to define custom form sections or complete form overrides in the AI Agent form UI. This enables different agent types (like Flow, Analysis, Support, etc.) to have specialized UI components tailored to their specific configuration needs.
|
|
260
|
+
|
|
261
|
+
### Database Schema
|
|
262
|
+
|
|
263
|
+
The `AIAgentType` table includes three columns for UI customization (added in v2.76):
|
|
264
|
+
|
|
265
|
+
- `UIFormSectionKey` (NVARCHAR(500) NULL) - Registration key for custom form section component
|
|
266
|
+
- `UIFormKey` (NVARCHAR(500) NULL) - Registration key for complete form override component
|
|
267
|
+
- `UIFormSectionExpandedByDefault` (BIT NOT NULL DEFAULT 1) - Whether custom section starts expanded
|
|
268
|
+
|
|
269
|
+
### Implementation Details
|
|
270
|
+
|
|
271
|
+
#### Dynamic Component Loading
|
|
272
|
+
|
|
273
|
+
The AI Agent form (`ai-agent-form.component.ts`) implements dynamic loading:
|
|
274
|
+
- Loads the agent type when the form initializes
|
|
275
|
+
- Checks for `UIFormSectionKey` on the agent type
|
|
276
|
+
- Dynamically loads and instantiates the custom section component
|
|
277
|
+
- Propagates `EditMode` changes to the custom section
|
|
278
|
+
|
|
279
|
+
#### Component Registration
|
|
280
|
+
|
|
281
|
+
Custom form sections must:
|
|
282
|
+
- Extend `BaseFormSectionComponent`
|
|
283
|
+
- Use `@RegisterClass` decorator with key pattern: `AI Agents.{SectionKey}`
|
|
284
|
+
- Implement standard form section lifecycle
|
|
285
|
+
|
|
286
|
+
Example:
|
|
287
|
+
```typescript
|
|
288
|
+
@RegisterClass(BaseFormSectionComponent, 'AI Agents.FlowAgentSection')
|
|
289
|
+
export class FlowAgentFormSectionComponent extends BaseFormSectionComponent {
|
|
290
|
+
// Implementation
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
#### Flow Agent Example
|
|
295
|
+
|
|
296
|
+
The `FlowAgentFormSectionComponent` demonstrates a complete implementation:
|
|
297
|
+
- Loads AIAgentStep and AIAgentStepPath entities for the agent
|
|
298
|
+
- Displays workflow steps and paths in a structured view
|
|
299
|
+
- Shows starting steps with special highlighting
|
|
300
|
+
- Provides refresh functionality in edit mode
|
|
301
|
+
- Includes status indicators (Active/Pending/Disabled)
|
|
302
|
+
- Shows action input/output mappings
|
|
303
|
+
|
|
304
|
+
### Usage Guide
|
|
305
|
+
|
|
306
|
+
#### Creating a Custom Form Section
|
|
307
|
+
|
|
308
|
+
1. **Create the Component**
|
|
309
|
+
```typescript
|
|
310
|
+
@Component({
|
|
311
|
+
selector: 'mj-custom-agent-section',
|
|
312
|
+
template: `...`,
|
|
313
|
+
styles: [`...`]
|
|
314
|
+
})
|
|
315
|
+
@RegisterClass(BaseFormSectionComponent, 'AI Agents.CustomSection')
|
|
316
|
+
export class CustomAgentSectionComponent extends BaseFormSectionComponent {
|
|
317
|
+
// Access this.record for the current AIAgentEntity
|
|
318
|
+
// Use this.EditMode to determine read/write state
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
2. **Register in Module**
|
|
323
|
+
- Add to declarations and exports in `custom-forms.module.ts`
|
|
324
|
+
- Export from `public-api.ts` if needed externally
|
|
325
|
+
|
|
326
|
+
3. **Update Agent Type**
|
|
327
|
+
```sql
|
|
328
|
+
UPDATE AIAgentType
|
|
329
|
+
SET UIFormSectionKey = 'CustomSection',
|
|
330
|
+
UIFormSectionExpandedByDefault = 1
|
|
331
|
+
WHERE Name = 'YourAgentType';
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
#### Complete Form Override
|
|
335
|
+
|
|
336
|
+
For complete form replacement (not just a section), use `UIFormKey`:
|
|
337
|
+
```sql
|
|
338
|
+
UPDATE AIAgentType
|
|
339
|
+
SET UIFormKey = 'CustomCompleteForm'
|
|
340
|
+
WHERE Name = 'YourAgentType';
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
The custom form component should extend `BaseFormComponent` instead.
|
|
344
|
+
|
|
345
|
+
### Architecture
|
|
346
|
+
|
|
347
|
+
#### Component Hierarchy
|
|
348
|
+
```
|
|
349
|
+
AIAgentFormComponent (generated)
|
|
350
|
+
└── AIAgentFormComponentExtended (custom)
|
|
351
|
+
└── Dynamic Custom Section (via ViewContainerRef)
|
|
352
|
+
└── FlowAgentFormSectionComponent (or other custom section)
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
#### Data Flow
|
|
356
|
+
1. Form loads agent record
|
|
357
|
+
2. Form queries agent type for UI customization keys
|
|
358
|
+
3. Form uses MJGlobal.ClassFactory to resolve component class
|
|
359
|
+
4. Form creates component instance in ViewContainerRef
|
|
360
|
+
5. Form passes record and EditMode to custom component
|
|
361
|
+
6. Custom component manages its own UI and data loading
|
|
362
|
+
|
|
363
|
+
### Best Practices
|
|
364
|
+
|
|
365
|
+
1. **Lazy Loading**: Custom sections should load their data only when needed
|
|
366
|
+
2. **Error Handling**: Handle data loading errors gracefully with user feedback
|
|
367
|
+
3. **Edit Mode**: Respect EditMode for read-only vs editable states
|
|
368
|
+
4. **Performance**: Use batch queries (RunViews) for loading related data
|
|
369
|
+
5. **Styling**: Follow existing MJ UI patterns and styles
|
|
370
|
+
6. **Type Safety**: Always use proper entity types, never `any`
|
|
371
|
+
|
|
372
|
+
### Future Enhancements
|
|
373
|
+
|
|
374
|
+
1. **Visual Flow Editor**: Integrate a proper flow visualization library (when Angular 18 compatible)
|
|
375
|
+
2. **Drag & Drop**: Allow visual workflow editing with drag and drop
|
|
376
|
+
3. **Conditional UI**: Show/hide sections based on agent configuration
|
|
377
|
+
4. **Template Library**: Pre-built custom sections for common agent types
|
|
378
|
+
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { OnInit, OnDestroy, ElementRef, SimpleChanges, OnChanges, AfterViewInit, EventEmitter } from '@angular/core';
|
|
2
|
+
import { AIAgentStepEntity, AIAgentStepPathEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { DialogService } from '@progress/kendo-angular-dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class FlowAgentDiagramComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {
|
|
6
|
+
private dialogService;
|
|
7
|
+
reteContainer: ElementRef<HTMLDivElement>;
|
|
8
|
+
constructor(dialogService: DialogService);
|
|
9
|
+
agentId: string | null;
|
|
10
|
+
steps: AIAgentStepEntity[];
|
|
11
|
+
paths: AIAgentStepPathEntity[];
|
|
12
|
+
EditMode: boolean;
|
|
13
|
+
stepsChanged: EventEmitter<void>;
|
|
14
|
+
pathsChanged: EventEmitter<void>;
|
|
15
|
+
loading: boolean;
|
|
16
|
+
error: string | null;
|
|
17
|
+
selectedItem: {
|
|
18
|
+
type: 'step' | 'path';
|
|
19
|
+
id: string;
|
|
20
|
+
} | null;
|
|
21
|
+
selectedStep: AIAgentStepEntity | null;
|
|
22
|
+
selectedPath: AIAgentStepPathEntity | null;
|
|
23
|
+
connectionMode: boolean;
|
|
24
|
+
connectionSourceStepId: string | null;
|
|
25
|
+
tempConnection: {
|
|
26
|
+
path: string;
|
|
27
|
+
} | null;
|
|
28
|
+
contextMenu: {
|
|
29
|
+
visible: boolean;
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
type: "path" | "step" | null;
|
|
33
|
+
targetId: string | null;
|
|
34
|
+
};
|
|
35
|
+
stepTypes: string[];
|
|
36
|
+
stepStatuses: string[];
|
|
37
|
+
panZoom: {
|
|
38
|
+
scale: number;
|
|
39
|
+
translateX: number;
|
|
40
|
+
translateY: number;
|
|
41
|
+
isPanning: boolean;
|
|
42
|
+
startX: number;
|
|
43
|
+
startY: number;
|
|
44
|
+
};
|
|
45
|
+
private destroy$;
|
|
46
|
+
private nodeElements;
|
|
47
|
+
private connectionElements;
|
|
48
|
+
private positionChanges$;
|
|
49
|
+
private dragState;
|
|
50
|
+
ngOnInit(): void;
|
|
51
|
+
ngAfterViewInit(): void;
|
|
52
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
53
|
+
ngOnDestroy(): void;
|
|
54
|
+
private initializeDiagram;
|
|
55
|
+
private createNodeElement;
|
|
56
|
+
private createConnectionElement;
|
|
57
|
+
private createNodesAndConnections;
|
|
58
|
+
private arrangeNodes;
|
|
59
|
+
private updateConnections;
|
|
60
|
+
private fitToView;
|
|
61
|
+
private truncateText;
|
|
62
|
+
private cleanup;
|
|
63
|
+
private onNodeMouseDown;
|
|
64
|
+
private onMouseMove;
|
|
65
|
+
private onMouseUp;
|
|
66
|
+
private saveStepPosition;
|
|
67
|
+
addNewStep(): Promise<void>;
|
|
68
|
+
autoArrange(): Promise<void>;
|
|
69
|
+
private onNodeClick;
|
|
70
|
+
private onPathClick;
|
|
71
|
+
private selectStep;
|
|
72
|
+
private selectPath;
|
|
73
|
+
private clearSelection;
|
|
74
|
+
closeProperties(): void;
|
|
75
|
+
connectFromStep(): void;
|
|
76
|
+
cancelConnectionMode(): void;
|
|
77
|
+
private handleConnectionCreation;
|
|
78
|
+
onSvgClick(event: MouseEvent): void;
|
|
79
|
+
onSvgContextMenu(event: MouseEvent): void;
|
|
80
|
+
onDocumentClick(event: MouseEvent): void;
|
|
81
|
+
onDocumentMouseMove(event: MouseEvent): void;
|
|
82
|
+
private updateTempConnection;
|
|
83
|
+
saveStepProperties(): Promise<void>;
|
|
84
|
+
savePathProperties(): Promise<void>;
|
|
85
|
+
private showConfirmDialog;
|
|
86
|
+
deleteSelectedStep(): Promise<void>;
|
|
87
|
+
deleteSelectedPath(): Promise<void>;
|
|
88
|
+
getStepName(stepId: string): string;
|
|
89
|
+
zoomIn(): void;
|
|
90
|
+
zoomOut(): void;
|
|
91
|
+
resetZoom(): void;
|
|
92
|
+
onWheel(event: WheelEvent): void;
|
|
93
|
+
onSvgMouseDown(event: MouseEvent): void;
|
|
94
|
+
onSvgMouseMove(event: MouseEvent): void;
|
|
95
|
+
onSvgMouseUp(event: MouseEvent): void;
|
|
96
|
+
private updateTransform;
|
|
97
|
+
private onNodeContextMenu;
|
|
98
|
+
private onPathContextMenu;
|
|
99
|
+
connectFromContextMenu(): void;
|
|
100
|
+
deleteFromContextMenu(): void;
|
|
101
|
+
deletePathFromContextMenu(): void;
|
|
102
|
+
private onSocketMouseDown;
|
|
103
|
+
private onSocketMouseEnter;
|
|
104
|
+
private onSocketMouseLeave;
|
|
105
|
+
private onSocketMouseUp;
|
|
106
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FlowAgentDiagramComponent, never>;
|
|
107
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FlowAgentDiagramComponent, "mj-flow-agent-diagram", never, { "agentId": { "alias": "agentId"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "paths": { "alias": "paths"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; }, { "stepsChanged": "stepsChanged"; "pathsChanged": "pathsChanged"; }, never, never, false, never>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=flow-agent-diagram.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-agent-diagram.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.ts"],"names":[],"mappings":"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"}
|