@memberjunction/ng-ai-test-harness 2.55.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 +187 -0
- package/dist/lib/agent-execution-monitor.component.d.ts +273 -0
- package/dist/lib/agent-execution-monitor.component.d.ts.map +1 -0
- package/dist/lib/agent-execution-monitor.component.js +1429 -0
- package/dist/lib/agent-execution-monitor.component.js.map +1 -0
- package/dist/lib/agent-execution-node.component.d.ts +19 -0
- package/dist/lib/agent-execution-node.component.d.ts.map +1 -0
- package/dist/lib/agent-execution-node.component.js +458 -0
- package/dist/lib/agent-execution-node.component.js.map +1 -0
- package/dist/lib/ai-test-harness-dialog.component.d.ts +98 -0
- package/dist/lib/ai-test-harness-dialog.component.d.ts.map +1 -0
- package/dist/lib/ai-test-harness-dialog.component.js +206 -0
- package/dist/lib/ai-test-harness-dialog.component.js.map +1 -0
- package/dist/lib/ai-test-harness-dialog.service.d.ts +32 -0
- package/dist/lib/ai-test-harness-dialog.service.d.ts.map +1 -0
- package/dist/lib/ai-test-harness-dialog.service.js +120 -0
- package/dist/lib/ai-test-harness-dialog.service.js.map +1 -0
- package/dist/lib/ai-test-harness.component.d.ts +631 -0
- package/dist/lib/ai-test-harness.component.d.ts.map +1 -0
- package/dist/lib/ai-test-harness.component.js +3380 -0
- package/dist/lib/ai-test-harness.component.js.map +1 -0
- package/dist/lib/json-viewer-window.component.d.ts +8 -0
- package/dist/lib/json-viewer-window.component.d.ts.map +1 -0
- package/dist/lib/json-viewer-window.component.js +57 -0
- package/dist/lib/json-viewer-window.component.js.map +1 -0
- package/dist/lib/test-harness-dialog.service.d.ts +151 -0
- package/dist/lib/test-harness-dialog.service.d.ts.map +1 -0
- package/dist/lib/test-harness-dialog.service.js +234 -0
- package/dist/lib/test-harness-dialog.service.js.map +1 -0
- package/dist/module.d.ts +25 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +120 -0
- package/dist/module.js.map +1 -0
- package/dist/public-api.d.ts +11 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +13 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, ChangeDetectorRef, AfterViewInit } from '@angular/core';
|
|
2
|
+
import { AIAgentEntity, AIPromptEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { AITestHarnessComponent } from './ai-test-harness.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Configuration data interface for the AI Test Harness Dialog.
|
|
7
|
+
* Provides all necessary options for initializing the dialog with appropriate
|
|
8
|
+
* agent/prompt data, dimensions, and initial variable configurations.
|
|
9
|
+
*/
|
|
10
|
+
export interface AITestHarnessDialogData {
|
|
11
|
+
/** ID of the AI agent to load (alternative to providing agent entity) */
|
|
12
|
+
agentId?: string;
|
|
13
|
+
/** Pre-loaded AI agent entity (alternative to providing agentId) */
|
|
14
|
+
agent?: AIAgentEntity;
|
|
15
|
+
/** ID of the AI prompt to load (alternative to providing prompt entity) */
|
|
16
|
+
promptId?: string;
|
|
17
|
+
/** Pre-loaded AI prompt entity (alternative to providing promptId) */
|
|
18
|
+
prompt?: AIPromptEntity;
|
|
19
|
+
/** Custom dialog title (defaults to agent/prompt name) */
|
|
20
|
+
title?: string;
|
|
21
|
+
/** Dialog width in CSS units or viewport percentage */
|
|
22
|
+
width?: string | number;
|
|
23
|
+
/** Dialog height in CSS units or viewport percentage */
|
|
24
|
+
height?: string | number;
|
|
25
|
+
/** Initial data context variables for agent execution */
|
|
26
|
+
initialDataContext?: Record<string, any>;
|
|
27
|
+
/** Initial template data variables for prompt rendering */
|
|
28
|
+
initialTemplateData?: Record<string, any>;
|
|
29
|
+
/** Initial template variables for prompt execution */
|
|
30
|
+
initialTemplateVariables?: Record<string, any>;
|
|
31
|
+
/** Pre-selected AI model ID for prompt execution */
|
|
32
|
+
selectedModelId?: string;
|
|
33
|
+
/** Mode of operation - 'agent' or 'prompt' */
|
|
34
|
+
mode?: 'agent' | 'prompt';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Dialog wrapper component for the AI Agent Test Harness.
|
|
38
|
+
* Provides a modal dialog interface with proper sizing, header, and close functionality.
|
|
39
|
+
* Automatically loads agent data and initializes the test harness with provided configuration.
|
|
40
|
+
*
|
|
41
|
+
* ## Features:
|
|
42
|
+
* - **Automatic Agent Loading**: Loads agent by ID or uses provided entity
|
|
43
|
+
* - **Configurable Dimensions**: Supports custom dialog sizing
|
|
44
|
+
* - **Initial Data Setup**: Pre-populates data context and template variables
|
|
45
|
+
* - **Clean Dialog Interface**: Professional header with close button
|
|
46
|
+
* - **Responsive Layout**: Adapts to content and screen size
|
|
47
|
+
*
|
|
48
|
+
* ## Usage:
|
|
49
|
+
* This component is typically opened through the `TestHarnessDialogService` rather than directly:
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const dialogRef = this.testHarnessService.openAgentTestHarness({
|
|
52
|
+
* agentId: 'agent-123',
|
|
53
|
+
* initialDataContext: { userId: 'user-456' }
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class AITestHarnessDialogComponent implements OnInit, AfterViewInit {
|
|
58
|
+
private cdr;
|
|
59
|
+
/** Reference to the embedded test harness component */
|
|
60
|
+
testHarness: AITestHarnessComponent;
|
|
61
|
+
/** The loaded AI agent entity for testing */
|
|
62
|
+
agent: AIAgentEntity | null;
|
|
63
|
+
/** The loaded AI prompt entity for testing */
|
|
64
|
+
prompt: AIPromptEntity | null;
|
|
65
|
+
/** The mode of operation - either 'agent' or 'prompt' */
|
|
66
|
+
mode: 'agent' | 'prompt';
|
|
67
|
+
/** Display title for the dialog header */
|
|
68
|
+
title: string;
|
|
69
|
+
/** Configuration data passed from the dialog service */
|
|
70
|
+
data: AITestHarnessDialogData;
|
|
71
|
+
/** Event emitted when the dialog should be closed */
|
|
72
|
+
closeDialog: EventEmitter<void>;
|
|
73
|
+
constructor(cdr: ChangeDetectorRef);
|
|
74
|
+
/**
|
|
75
|
+
* Initializes the dialog component by loading agent/prompt data and configuring
|
|
76
|
+
* the embedded test harness with initial variables and settings.
|
|
77
|
+
*/
|
|
78
|
+
ngOnInit(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* AfterViewInit lifecycle hook to set initial data after view is initialized
|
|
81
|
+
*/
|
|
82
|
+
ngAfterViewInit(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Determines the appropriate variable type for initial data configuration.
|
|
85
|
+
* @param value - The value to analyze for type detection
|
|
86
|
+
* @returns The detected variable type
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
private detectVariableType;
|
|
90
|
+
/**
|
|
91
|
+
* Closes the dialog by emitting the close event.
|
|
92
|
+
* This method is called by the close button in the header.
|
|
93
|
+
*/
|
|
94
|
+
close(): void;
|
|
95
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AITestHarnessDialogComponent, never>;
|
|
96
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AITestHarnessDialogComponent, "mj-ai-test-harness-dialog", never, { "data": { "alias": "data"; "required": false; }; }, { "closeDialog": "closeDialog"; }, never, never, false, never>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ai-test-harness-dialog.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-test-harness-dialog.component.d.ts","sourceRoot":"","sources":["../../src/lib/ai-test-harness-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAa,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;;AAErE;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,sDAAsD;IACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAwEa,4BAA6B,YAAW,MAAM,EAAE,aAAa;IAsB1D,OAAO,CAAC,GAAG;IArBvB,uDAAuD;IACV,WAAW,EAAG,sBAAsB,CAAC;IAElF,6CAA6C;IAC7C,KAAK,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEnC,8CAA8C;IAC9C,MAAM,EAAE,cAAc,GAAG,IAAI,CAAQ;IAErC,yDAAyD;IACzD,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAW;IAEnC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAqB;IAElC,wDAAwD;IAC/C,IAAI,EAAE,uBAAuB,CAAM;IAE5C,qDAAqD;IAC3C,WAAW,qBAA4B;gBAE7B,GAAG,EAAE,iBAAiB;IAE1C;;;OAGG;IACG,QAAQ;IA2Cd;;OAEG;IACH,eAAe,IAAI,IAAI;IA2CvB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,KAAK,IAAI,IAAI;yCAtIJ,4BAA4B;2CAA5B,4BAA4B;CAyIxC"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
+
import { Metadata } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./ai-test-harness.component";
|
|
5
|
+
const _c0 = ["testHarness"];
|
|
6
|
+
/**
|
|
7
|
+
* Dialog wrapper component for the AI Agent Test Harness.
|
|
8
|
+
* Provides a modal dialog interface with proper sizing, header, and close functionality.
|
|
9
|
+
* Automatically loads agent data and initializes the test harness with provided configuration.
|
|
10
|
+
*
|
|
11
|
+
* ## Features:
|
|
12
|
+
* - **Automatic Agent Loading**: Loads agent by ID or uses provided entity
|
|
13
|
+
* - **Configurable Dimensions**: Supports custom dialog sizing
|
|
14
|
+
* - **Initial Data Setup**: Pre-populates data context and template variables
|
|
15
|
+
* - **Clean Dialog Interface**: Professional header with close button
|
|
16
|
+
* - **Responsive Layout**: Adapts to content and screen size
|
|
17
|
+
*
|
|
18
|
+
* ## Usage:
|
|
19
|
+
* This component is typically opened through the `TestHarnessDialogService` rather than directly:
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const dialogRef = this.testHarnessService.openAgentTestHarness({
|
|
22
|
+
* agentId: 'agent-123',
|
|
23
|
+
* initialDataContext: { userId: 'user-456' }
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class AITestHarnessDialogComponent {
|
|
28
|
+
constructor(cdr) {
|
|
29
|
+
this.cdr = cdr;
|
|
30
|
+
/** The loaded AI agent entity for testing */
|
|
31
|
+
this.agent = null;
|
|
32
|
+
/** The loaded AI prompt entity for testing */
|
|
33
|
+
this.prompt = null;
|
|
34
|
+
/** The mode of operation - either 'agent' or 'prompt' */
|
|
35
|
+
this.mode = 'agent';
|
|
36
|
+
/** Display title for the dialog header */
|
|
37
|
+
this.title = 'AI Test Harness';
|
|
38
|
+
/** Configuration data passed from the dialog service */
|
|
39
|
+
this.data = {};
|
|
40
|
+
/** Event emitted when the dialog should be closed */
|
|
41
|
+
this.closeDialog = new EventEmitter();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Initializes the dialog component by loading agent/prompt data and configuring
|
|
45
|
+
* the embedded test harness with initial variables and settings.
|
|
46
|
+
*/
|
|
47
|
+
async ngOnInit() {
|
|
48
|
+
// Set mode from data
|
|
49
|
+
if (this.data.mode) {
|
|
50
|
+
this.mode = this.data.mode;
|
|
51
|
+
}
|
|
52
|
+
if (this.data.title) {
|
|
53
|
+
this.title = this.data.title;
|
|
54
|
+
}
|
|
55
|
+
const md = new Metadata();
|
|
56
|
+
// Load entity based on mode
|
|
57
|
+
if (this.mode === 'agent' || (!this.data.promptId && !this.data.prompt)) {
|
|
58
|
+
// Agent mode
|
|
59
|
+
if (this.data.agentId && !this.data.agent) {
|
|
60
|
+
this.agent = await md.GetEntityObject('AI Agents');
|
|
61
|
+
await this.agent.Load(this.data.agentId);
|
|
62
|
+
if (this.agent) {
|
|
63
|
+
this.title = this.title || `Test Harness: ${this.agent.Name}`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (this.data.agent) {
|
|
67
|
+
this.agent = this.data.agent;
|
|
68
|
+
this.title = this.title || `Test Harness: ${this.agent.Name}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Prompt mode
|
|
73
|
+
this.mode = 'prompt';
|
|
74
|
+
if (this.data.promptId && !this.data.prompt) {
|
|
75
|
+
this.prompt = await md.GetEntityObject('AI Prompts');
|
|
76
|
+
await this.prompt.Load(this.data.promptId);
|
|
77
|
+
if (this.prompt) {
|
|
78
|
+
this.title = this.title || `Test Harness: ${this.prompt.Name}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (this.data.prompt) {
|
|
82
|
+
this.prompt = this.data.prompt;
|
|
83
|
+
this.title = this.title || `Test Harness: ${this.prompt.Name}`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* AfterViewInit lifecycle hook to set initial data after view is initialized
|
|
89
|
+
*/
|
|
90
|
+
ngAfterViewInit() {
|
|
91
|
+
if (this.testHarness) {
|
|
92
|
+
if (this.mode === 'agent') {
|
|
93
|
+
// Agent mode: set agent variables
|
|
94
|
+
if (this.data.initialDataContext) {
|
|
95
|
+
const variables = Object.entries(this.data.initialDataContext).map(([name, value]) => ({
|
|
96
|
+
name,
|
|
97
|
+
value: typeof value === 'object' ? JSON.stringify(value) : String(value),
|
|
98
|
+
type: this.detectVariableType(value)
|
|
99
|
+
}));
|
|
100
|
+
this.testHarness.agentVariables = variables;
|
|
101
|
+
}
|
|
102
|
+
if (this.data.initialTemplateData) {
|
|
103
|
+
const templateVariables = Object.entries(this.data.initialTemplateData).map(([name, value]) => ({
|
|
104
|
+
name,
|
|
105
|
+
value: typeof value === 'object' ? JSON.stringify(value) : String(value),
|
|
106
|
+
type: this.detectVariableType(value)
|
|
107
|
+
}));
|
|
108
|
+
this.testHarness.agentVariables = [...this.testHarness.agentVariables, ...templateVariables];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Prompt mode: set template variables
|
|
113
|
+
if (this.data.initialTemplateVariables) {
|
|
114
|
+
const variables = Object.entries(this.data.initialTemplateVariables).map(([name, value]) => ({
|
|
115
|
+
name,
|
|
116
|
+
value: typeof value === 'object' ? JSON.stringify(value) : String(value),
|
|
117
|
+
type: this.detectVariableType(value)
|
|
118
|
+
}));
|
|
119
|
+
this.testHarness.templateVariables = variables;
|
|
120
|
+
}
|
|
121
|
+
// Set selected model if provided
|
|
122
|
+
if (this.data.selectedModelId) {
|
|
123
|
+
this.testHarness.selectedModelId = this.data.selectedModelId;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Trigger change detection to ensure view updates
|
|
127
|
+
this.cdr.detectChanges();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Determines the appropriate variable type for initial data configuration.
|
|
132
|
+
* @param value - The value to analyze for type detection
|
|
133
|
+
* @returns The detected variable type
|
|
134
|
+
* @private
|
|
135
|
+
*/
|
|
136
|
+
detectVariableType(value) {
|
|
137
|
+
if (typeof value === 'boolean')
|
|
138
|
+
return 'boolean';
|
|
139
|
+
if (typeof value === 'number')
|
|
140
|
+
return 'number';
|
|
141
|
+
if (typeof value === 'object')
|
|
142
|
+
return 'object';
|
|
143
|
+
return 'string';
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Closes the dialog by emitting the close event.
|
|
147
|
+
* This method is called by the close button in the header.
|
|
148
|
+
*/
|
|
149
|
+
close() {
|
|
150
|
+
this.closeDialog.emit();
|
|
151
|
+
}
|
|
152
|
+
static { this.ɵfac = function AITestHarnessDialogComponent_Factory(t) { return new (t || AITestHarnessDialogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
153
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AITestHarnessDialogComponent, selectors: [["mj-ai-test-harness-dialog"]], viewQuery: function AITestHarnessDialogComponent_Query(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
155
|
+
} if (rf & 2) {
|
|
156
|
+
let _t;
|
|
157
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.testHarness = _t.first);
|
|
158
|
+
} }, inputs: { data: "data" }, outputs: { closeDialog: "closeDialog" }, decls: 9, vars: 4, consts: [["testHarness", ""], [1, "test-harness-dialog"], [1, "dialog-header"], [1, "close-button", 3, "click"], [1, "fa-solid", "fa-times"], [1, "dialog-content"], [3, "mode", "entity", "isVisible"]], template: function AITestHarnessDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
159
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
160
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h2");
|
|
161
|
+
i0.ɵɵtext(3);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵelementStart(4, "button", 3);
|
|
164
|
+
i0.ɵɵlistener("click", function AITestHarnessDialogComponent_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.close()); });
|
|
165
|
+
i0.ɵɵelement(5, "i", 4);
|
|
166
|
+
i0.ɵɵelementEnd()();
|
|
167
|
+
i0.ɵɵelementStart(6, "div", 5);
|
|
168
|
+
i0.ɵɵelement(7, "mj-ai-test-harness", 6, 0);
|
|
169
|
+
i0.ɵɵelementEnd()();
|
|
170
|
+
} if (rf & 2) {
|
|
171
|
+
i0.ɵɵadvance(3);
|
|
172
|
+
i0.ɵɵtextInterpolate(ctx.title);
|
|
173
|
+
i0.ɵɵadvance(4);
|
|
174
|
+
i0.ɵɵproperty("mode", ctx.mode)("entity", ctx.mode === "agent" ? ctx.agent : ctx.prompt)("isVisible", true);
|
|
175
|
+
} }, dependencies: [i1.AITestHarnessComponent], styles: [".test-harness-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .dialog-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #e0e0e0;\n background-color: #f5f5f5;\n }\n\n .dialog-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 500;\n }\n\n .close-button[_ngcontent-%COMP%] {\n position: relative;\n top: -4px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: background-color 0.2s;\n }\n \n .close-button[_ngcontent-%COMP%]:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n .dialog-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n padding: 0;\n }\n\n [_nghost-%COMP%] .test-harness-container {\n height: 100%;\n }"] }); }
|
|
176
|
+
}
|
|
177
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AITestHarnessDialogComponent, [{
|
|
178
|
+
type: Component,
|
|
179
|
+
args: [{ selector: 'mj-ai-test-harness-dialog', template: `
|
|
180
|
+
<div class="test-harness-dialog">
|
|
181
|
+
<div class="dialog-header">
|
|
182
|
+
<h2>{{ title }}</h2>
|
|
183
|
+
<button class="close-button" (click)="close()">
|
|
184
|
+
<i class="fa-solid fa-times"></i>
|
|
185
|
+
</button>
|
|
186
|
+
</div>
|
|
187
|
+
<div class="dialog-content">
|
|
188
|
+
<mj-ai-test-harness
|
|
189
|
+
#testHarness
|
|
190
|
+
[mode]="mode"
|
|
191
|
+
[entity]="mode === 'agent' ? agent : prompt"
|
|
192
|
+
[isVisible]="true">
|
|
193
|
+
</mj-ai-test-harness>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
`, styles: ["\n .test-harness-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .dialog-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #e0e0e0;\n background-color: #f5f5f5;\n }\n\n .dialog-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 500;\n }\n\n .close-button {\n position: relative;\n top: -4px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: background-color 0.2s;\n }\n \n .close-button:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n .dialog-content {\n flex: 1;\n overflow: hidden;\n padding: 0;\n }\n\n :host ::ng-deep .test-harness-container {\n height: 100%;\n }\n "] }]
|
|
197
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { testHarness: [{
|
|
198
|
+
type: ViewChild,
|
|
199
|
+
args: ['testHarness', { static: false }]
|
|
200
|
+
}], data: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], closeDialog: [{
|
|
203
|
+
type: Output
|
|
204
|
+
}] }); })();
|
|
205
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AITestHarnessDialogComponent, { className: "AITestHarnessDialogComponent", filePath: "lib/ai-test-harness-dialog.component.ts", lineNumber: 131 }); })();
|
|
206
|
+
//# sourceMappingURL=ai-test-harness-dialog.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-test-harness-dialog.component.js","sourceRoot":"","sources":["../../src/lib/ai-test-harness-dialog.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { TestHarnessDialogService } from './test-harness-dialog.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface TestResult {
|
|
6
|
+
success: boolean;
|
|
7
|
+
result?: any;
|
|
8
|
+
error?: string;
|
|
9
|
+
executionTime?: number;
|
|
10
|
+
tokensUsed?: number;
|
|
11
|
+
cost?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Service for opening AI test harness dialogs for agents and prompts.
|
|
15
|
+
* This service wraps the TestHarnessDialogService to provide a simpler API
|
|
16
|
+
* that matches the expected interface in consuming components.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AITestHarnessDialogService {
|
|
19
|
+
private testHarnessService;
|
|
20
|
+
constructor(testHarnessService: TestHarnessDialogService);
|
|
21
|
+
/**
|
|
22
|
+
* Opens the test harness dialog for an AI Agent
|
|
23
|
+
*/
|
|
24
|
+
openForAgent(agentId: string, viewContainerRef?: ViewContainerRef): Observable<TestResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Opens the test harness dialog for an AI Prompt
|
|
27
|
+
*/
|
|
28
|
+
openForPrompt(promptId: string, viewContainerRef?: ViewContainerRef): Observable<TestResult>;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AITestHarnessDialogService, never>;
|
|
30
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AITestHarnessDialogService>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ai-test-harness-dialog.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-test-harness-dialog.service.d.ts","sourceRoot":"","sources":["../../src/lib/ai-test-harness-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAEzE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAGa,0BAA0B;IACzB,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,wBAAwB;IAEhE;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC;IA+C1F;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC;yCAxDjF,0BAA0B;6CAA1B,0BAA0B;CAuGtC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./test-harness-dialog.service";
|
|
5
|
+
/**
|
|
6
|
+
* Service for opening AI test harness dialogs for agents and prompts.
|
|
7
|
+
* This service wraps the TestHarnessDialogService to provide a simpler API
|
|
8
|
+
* that matches the expected interface in consuming components.
|
|
9
|
+
*/
|
|
10
|
+
export class AITestHarnessDialogService {
|
|
11
|
+
constructor(testHarnessService) {
|
|
12
|
+
this.testHarnessService = testHarnessService;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Opens the test harness dialog for an AI Agent
|
|
16
|
+
*/
|
|
17
|
+
openForAgent(agentId, viewContainerRef) {
|
|
18
|
+
const resultSubject = new Subject();
|
|
19
|
+
try {
|
|
20
|
+
const dialogRef = this.testHarnessService.openAgentTestHarness({
|
|
21
|
+
agentId: agentId,
|
|
22
|
+
title: 'Test AI Agent',
|
|
23
|
+
width: '80vw',
|
|
24
|
+
height: '80vh'
|
|
25
|
+
});
|
|
26
|
+
// Convert dialog close to test result
|
|
27
|
+
dialogRef.result.subscribe({
|
|
28
|
+
next: (result) => {
|
|
29
|
+
if (result) {
|
|
30
|
+
resultSubject.next({
|
|
31
|
+
success: true,
|
|
32
|
+
result: result,
|
|
33
|
+
executionTime: 0
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
resultSubject.next({
|
|
38
|
+
success: false,
|
|
39
|
+
error: 'Test cancelled'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
resultSubject.complete();
|
|
43
|
+
},
|
|
44
|
+
error: (error) => {
|
|
45
|
+
resultSubject.next({
|
|
46
|
+
success: false,
|
|
47
|
+
error: error.message || 'Test failed'
|
|
48
|
+
});
|
|
49
|
+
resultSubject.complete();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
resultSubject.next({
|
|
55
|
+
success: false,
|
|
56
|
+
error: error.message || 'Failed to open test harness'
|
|
57
|
+
});
|
|
58
|
+
resultSubject.complete();
|
|
59
|
+
}
|
|
60
|
+
return resultSubject.asObservable();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Opens the test harness dialog for an AI Prompt
|
|
64
|
+
*/
|
|
65
|
+
openForPrompt(promptId, viewContainerRef) {
|
|
66
|
+
const resultSubject = new Subject();
|
|
67
|
+
try {
|
|
68
|
+
// Use the prompt-specific test harness method
|
|
69
|
+
const dialogRef = this.testHarnessService.openPromptTestHarness({
|
|
70
|
+
promptId: promptId,
|
|
71
|
+
title: 'Test AI Prompt',
|
|
72
|
+
width: '80vw',
|
|
73
|
+
height: '80vh'
|
|
74
|
+
});
|
|
75
|
+
// Convert dialog close to test result
|
|
76
|
+
dialogRef.result.subscribe({
|
|
77
|
+
next: (result) => {
|
|
78
|
+
if (result) {
|
|
79
|
+
resultSubject.next({
|
|
80
|
+
success: true,
|
|
81
|
+
result: result,
|
|
82
|
+
executionTime: 0
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
resultSubject.next({
|
|
87
|
+
success: false,
|
|
88
|
+
error: 'Test cancelled'
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
resultSubject.complete();
|
|
92
|
+
},
|
|
93
|
+
error: (error) => {
|
|
94
|
+
resultSubject.next({
|
|
95
|
+
success: false,
|
|
96
|
+
error: error.message || 'Test failed'
|
|
97
|
+
});
|
|
98
|
+
resultSubject.complete();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
resultSubject.next({
|
|
104
|
+
success: false,
|
|
105
|
+
error: error.message || 'Failed to open test harness'
|
|
106
|
+
});
|
|
107
|
+
resultSubject.complete();
|
|
108
|
+
}
|
|
109
|
+
return resultSubject.asObservable();
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = function AITestHarnessDialogService_Factory(t) { return new (t || AITestHarnessDialogService)(i0.ɵɵinject(i1.TestHarnessDialogService)); }; }
|
|
112
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AITestHarnessDialogService, factory: AITestHarnessDialogService.ɵfac, providedIn: 'root' }); }
|
|
113
|
+
}
|
|
114
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AITestHarnessDialogService, [{
|
|
115
|
+
type: Injectable,
|
|
116
|
+
args: [{
|
|
117
|
+
providedIn: 'root'
|
|
118
|
+
}]
|
|
119
|
+
}], () => [{ type: i1.TestHarnessDialogService }], null); })();
|
|
120
|
+
//# sourceMappingURL=ai-test-harness-dialog.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-test-harness-dialog.service.js","sourceRoot":"","sources":["../../src/lib/ai-test-harness-dialog.service.ts"],"names":[],"mappings":"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"}
|