@memberjunction/ng-core-entity-forms 2.54.0 → 2.56.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.
Files changed (91) hide show
  1. package/README.md +1 -206
  2. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +31 -5
  3. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  4. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +558 -502
  5. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  6. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +36 -0
  7. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -0
  8. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +325 -0
  9. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -0
  10. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +41 -0
  11. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -0
  12. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +87 -0
  13. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -0
  14. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +6 -0
  15. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +656 -235
  17. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +9 -2
  19. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +549 -511
  21. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  22. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +1 -0
  23. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  24. package/dist/lib/custom/Actions/action-execution-log-form.component.js +4 -0
  25. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  26. package/dist/lib/custom/Actions/action-form.component.d.ts +5 -0
  27. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  28. package/dist/lib/custom/Actions/action-form.component.js +9 -2
  29. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  30. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +5 -4
  31. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  32. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +150 -72
  33. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  34. package/dist/lib/custom/custom-forms.module.d.ts +31 -35
  35. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  36. package/dist/lib/custom/custom-forms.module.js +23 -43
  37. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  38. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +11 -12
  39. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  40. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
  41. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +13 -4
  42. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
  43. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +7 -8
  44. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  45. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +7 -8
  46. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  47. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +7 -8
  48. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  49. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +11 -12
  50. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +11 -12
  52. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  53. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +11 -12
  54. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  55. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
  56. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +139 -4
  57. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
  58. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +11 -12
  59. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  60. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
  61. package/dist/lib/generated/Entities/Action/sections/details.component.js +13 -4
  62. package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -1
  63. package/dist/public-api.d.ts +2 -3
  64. package/dist/public-api.d.ts.map +1 -1
  65. package/dist/public-api.js +3 -16
  66. package/dist/public-api.js.map +1 -1
  67. package/package.json +13 -12
  68. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts +0 -273
  69. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts.map +0 -1
  70. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js +0 -1429
  71. package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js.map +0 -1
  72. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts +0 -19
  73. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts.map +0 -1
  74. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js +0 -458
  75. package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js.map +0 -1
  76. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts +0 -78
  77. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts.map +0 -1
  78. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js +0 -157
  79. package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js.map +0 -1
  80. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts +0 -631
  81. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts.map +0 -1
  82. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js +0 -3380
  83. package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js.map +0 -1
  84. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts +0 -8
  85. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts.map +0 -1
  86. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js +0 -57
  87. package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js.map +0 -1
  88. package/dist/lib/custom/test-harness-dialog.service.d.ts +0 -111
  89. package/dist/lib/custom/test-harness-dialog.service.d.ts.map +0 -1
  90. package/dist/lib/custom/test-harness-dialog.service.js +0 -211
  91. package/dist/lib/custom/test-harness-dialog.service.js.map +0 -1
@@ -1,631 +0,0 @@
1
- import { EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges, AfterViewChecked, ViewContainerRef, ChangeDetectorRef } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
4
- import { WindowService } from '@progress/kendo-angular-dialog';
5
- import { AIAgentEntity, AIPromptEntity } from '@memberjunction/core-entities';
6
- import { ChatMessage } from '@memberjunction/ai';
7
- import * as i0 from "@angular/core";
8
- /**
9
- * Supported modes for the test harness
10
- */
11
- export type TestHarnessMode = 'agent' | 'prompt';
12
- /**
13
- * Result interface for AI agent execution operations.
14
- * Contains comprehensive information about the execution outcome, timing, and data.
15
- */
16
- /**
17
- * Represents a variable in the data context or template data for agent execution.
18
- * Used to pass dynamic data to agents during testing and execution.
19
- */
20
- export interface DataContextVariable {
21
- /** Variable name used in agent prompts and templates */
22
- name: string;
23
- /** String representation of the variable value */
24
- value: string;
25
- /** Data type for proper conversion during execution */
26
- type: 'string' | 'number' | 'boolean' | 'object';
27
- }
28
- /**
29
- * Enhanced chat message interface extending the base ChatMessage from @memberjunction/ai.
30
- * Includes additional properties for streaming, timing, error handling, and content management.
31
- */
32
- export interface ConversationMessage extends ChatMessage {
33
- /** Unique identifier for this message */
34
- id: string;
35
- /** Timestamp when the message was created */
36
- timestamp: Date;
37
- /** Whether this message is currently being streamed */
38
- isStreaming?: boolean;
39
- /** Accumulated content during streaming (temporary) */
40
- streamingContent?: string;
41
- /** Total execution time for AI-generated messages */
42
- executionTime?: number;
43
- /** Associated agent run ID for tracking */
44
- agentRunId?: string;
45
- /** Error message if processing failed */
46
- error?: string;
47
- /** Original unprocessed content from the AI model */
48
- rawContent?: string;
49
- /** Whether to display raw content instead of processed content */
50
- showRaw?: boolean;
51
- /** Timestamp when streaming started (for elapsed time calculation) */
52
- streamingStartTime?: number;
53
- /** Current elapsed time during streaming */
54
- elapsedTime?: number;
55
- /** Whether JSON raw section is expanded in collapsible view */
56
- showJsonRaw?: boolean;
57
- /** Execution history data for this message (agent mode) */
58
- executionData?: any;
59
- /** Payload data from agent execution to display separately */
60
- payload?: any;
61
- /** Whether the payload section is collapsed */
62
- payloadCollapsed?: boolean;
63
- }
64
- /**
65
- * Represents a saved conversation session with complete state information.
66
- * Includes all messages, context data, and metadata for restoration.
67
- */
68
- export interface SavedConversation {
69
- /** Unique identifier for the saved conversation */
70
- id: string;
71
- /** User-provided name for the conversation */
72
- name: string;
73
- /** ID of the agent used in this conversation */
74
- agentId: string;
75
- /** Name of the agent for display purposes */
76
- agentName: string;
77
- /** Complete message history */
78
- messages: ConversationMessage[];
79
- /** Data context variables used during the conversation */
80
- dataContext: Record<string, any>;
81
- /** Template data variables used during the conversation (agent mode) */
82
- templateData: Record<string, any>;
83
- /** Template variables used during the conversation (prompt mode) */
84
- templateVariables?: Record<string, any>;
85
- /** Advanced parameters used during the conversation (prompt mode) */
86
- advancedParams?: any;
87
- /** Selected model ID (prompt mode) */
88
- selectedModelId?: string;
89
- /** Selected vendor ID (prompt mode) */
90
- selectedVendorId?: string;
91
- /** Skip validation setting (prompt mode) */
92
- skipValidation?: boolean;
93
- /** When the conversation was first created */
94
- createdAt: Date;
95
- /** When the conversation was last modified */
96
- updatedAt: Date;
97
- }
98
- /**
99
- * Comprehensive test harness component for AI Agent development and testing.
100
- * Provides a full-featured chat interface with conversation management, data context configuration,
101
- * template data management, streaming responses, conversation persistence, and import/export capabilities.
102
- *
103
- * ## Key Features:
104
- * - **Interactive Chat**: Real-time conversation with AI agents
105
- * - **Streaming Support**: Live streaming of agent responses with elapsed time tracking
106
- * - **Data Context Management**: Configure variables passed to agent during execution
107
- * - **Template Data Management**: Manage template variables for agent prompts
108
- * - **Conversation Persistence**: Save/load conversations with full state restoration
109
- * - **Import/Export**: JSON-based conversation backup and sharing
110
- * - **Content Formatting**: Automatic detection and rendering of Markdown, JSON, and plain text
111
- * - **Raw Content Toggle**: View both processed and raw AI responses
112
- * - **Error Handling**: Comprehensive error display and user feedback
113
- *
114
- * ## Usage:
115
- * ```html
116
- * <mj-ai-agent-test-harness
117
- * [aiAgent]="myAgent"
118
- * [isVisible]="true"
119
- * (visibilityChange)="onVisibilityChanged($event)">
120
- * </mj-ai-agent-test-harness>
121
- * ```
122
- *
123
- * @example
124
- * ```typescript
125
- * // Using with agent entity
126
- * const agent = await metadata.GetEntityObject<AIAgentEntity>('AI Agents');
127
- * await agent.Load('agent-id');
128
- * this.testHarness.aiAgent = agent;
129
- * this.testHarness.isVisible = true;
130
- * ```
131
- */
132
- export declare class AITestHarnessComponent implements OnInit, OnDestroy, OnChanges, AfterViewChecked {
133
- private sanitizer;
134
- private windowService;
135
- private viewContainerRef;
136
- private cdr;
137
- private router;
138
- /**
139
- * Creates a new AI Test Harness component instance.
140
- * @param sanitizer - Angular DomSanitizer for safe HTML rendering of formatted content
141
- * @param windowService - Kendo WindowService for creating modal windows
142
- * @param viewContainerRef - Angular ViewContainerRef for window positioning
143
- * @param cdr - Angular ChangeDetectorRef for managing change detection
144
- */
145
- constructor(sanitizer: DomSanitizer, windowService: WindowService, viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, router: Router);
146
- /** The mode of operation - either 'agent' or 'prompt' */
147
- mode: TestHarnessMode;
148
- /** The entity to test - either an AI Agent or AI Prompt */
149
- entity: AIAgentEntity | AIPromptEntity | null;
150
- /** @deprecated Use 'entity' instead. Kept for backward compatibility. */
151
- get aiAgent(): AIAgentEntity | null;
152
- set aiAgent(value: AIAgentEntity | null);
153
- private _isVisible;
154
- /**
155
- * Controls the visibility of the test harness. When set to true, automatically resets the harness state.
156
- * This property is typically controlled by parent components or dialog wrappers.
157
- */
158
- get isVisible(): boolean;
159
- set isVisible(value: boolean);
160
- /** Event emitted when the visibility state changes, allowing parent components to react */
161
- visibilityChange: EventEmitter<boolean>;
162
- /** Reference to the scrollable messages container for auto-scrolling functionality */
163
- private messagesContainer;
164
- /** Reference to the hidden file input element for conversation import functionality */
165
- private fileInput;
166
- /** Reference to the message input textarea */
167
- private messageInput;
168
- /** Reference to the save dialog input */
169
- private saveDialogInput?;
170
- /** Complete array of all messages in the current conversation session */
171
- conversationMessages: ConversationMessage[];
172
- /** Current text input by the user (bound to textarea) */
173
- currentUserMessage: string;
174
- /** Whether an agent execution is currently in progress */
175
- isExecuting: boolean;
176
- /** Unified variables for agent execution (combines data context and template data) */
177
- agentVariables: DataContextVariable[];
178
- /** Variables for prompt template rendering */
179
- templateVariables: DataContextVariable[];
180
- /** Selected AI model for prompt execution */
181
- selectedModelId: string;
182
- /** Selected AI vendor for prompt execution */
183
- selectedVendorId: string;
184
- /** Available AI vendors for the selected model */
185
- availableVendors: any[];
186
- /** Default model for the prompt (cached for display) */
187
- private defaultModelName;
188
- /** Maximum tokens for prompt execution */
189
- maxTokens: number | null;
190
- /** Whether to skip validation when running prompts */
191
- skipValidation: boolean;
192
- /** Advanced LLM Parameters */
193
- advancedParams: {
194
- temperature: number | null;
195
- topP: number | null;
196
- topK: number | null;
197
- minP: number | null;
198
- frequencyPenalty: number | null;
199
- presencePenalty: number | null;
200
- seed: number | null;
201
- stopSequences: string[];
202
- includeLogProbs: boolean;
203
- topLogProbs: number;
204
- };
205
- /** Raw stop sequences input for textarea */
206
- stopSequencesText: string;
207
- /** Whether advanced parameters panel is expanded */
208
- advancedParamsExpanded: boolean;
209
- /** Available AI models for prompt execution */
210
- availableModels: any[];
211
- /** Available response format options */
212
- protected responseFormatOptions: {
213
- text: string;
214
- value: string;
215
- }[];
216
- /** Selected response format for prompt execution */
217
- selectedResponseFormat: {
218
- text: string;
219
- value: string;
220
- };
221
- /** Whether the configuration sidebar is currently visible */
222
- showSidebar: boolean;
223
- /** Currently active tab in the sidebar */
224
- activeTab: 'agentVariables' | 'executionMonitor' | 'templateVariables' | 'modelSettings' | 'savedConversations';
225
- /** Array of saved conversation sessions loaded from localStorage */
226
- savedConversations: SavedConversation[];
227
- /** ID of the currently active/loaded conversation, if any */
228
- currentConversationId: string | null;
229
- /** Flag to control JSON dialog visibility */
230
- showJsonDialog: boolean;
231
- /** Current JSON content to display in the dialog */
232
- currentJsonContent: string;
233
- /** Reference to the JSON window when open */
234
- private jsonWindowRef;
235
- /** Mode for the execution monitor component */
236
- executionMonitorMode: 'live' | 'historical';
237
- /** Current execution data for the monitor */
238
- currentExecutionData: any;
239
- /** Agent conversation state tracking */
240
- private agentConversationState;
241
- private lastAgentReturnValue;
242
- private subAgentHistory;
243
- /** Whether to show the save conversation dialog */
244
- showSaveDialog: boolean;
245
- /** Name for the new conversation being saved */
246
- newConversationName: string;
247
- /** Temporary name for the dialog input to avoid binding conflicts */
248
- tempConversationName: string;
249
- /** Whether to show the load confirmation dialog */
250
- showLoadConfirmDialog: boolean;
251
- /** Conversation pending to be loaded */
252
- private pendingLoadConversation;
253
- /** Reference to the current message for JSON display */
254
- private currentJsonMessage;
255
- /** Subject for component destruction cleanup */
256
- private destroy$;
257
- /** Flag indicating that auto-scroll is needed on next view check */
258
- private scrollNeeded;
259
- /** Interval handle for elapsed time counter during streaming */
260
- private elapsedTimeInterval;
261
- /** MemberJunction metadata instance for entity operations */
262
- private _metadata;
263
- /** Track if input has been focused to prevent repeated focusing */
264
- private _hasFocused;
265
- /** Subscription to MJGlobal events for streaming updates */
266
- private _mjGlobalEventSub;
267
- /** Direct GraphQL subscription for agent execution streaming */
268
- private _agentStreamSub;
269
- /**
270
- * Component initialization. Loads saved conversations, sets up event subscriptions,
271
- * and initializes the harness to a clean state.
272
- */
273
- ngOnInit(): void;
274
- /**
275
- * Responds to input property changes, particularly when entity is set/changed
276
- */
277
- ngOnChanges(changes: SimpleChanges): void;
278
- /**
279
- * Component cleanup. Destroys subscriptions and clears any active intervals
280
- * to prevent memory leaks.
281
- */
282
- ngOnDestroy(): void;
283
- /**
284
- * Post-view check hook that handles auto-scrolling to the bottom of the message container
285
- * when new content is added.
286
- */
287
- ngAfterViewChecked(): void;
288
- private subscribeToEvents;
289
- /**
290
- * Loads available AI models for prompt execution.
291
- * Only called when the harness is in prompt mode.
292
- */
293
- private loadAvailableModels;
294
- /** Default model object for the prompt (cached for vendor lookup) */
295
- private defaultModel;
296
- /**
297
- * Gets the default model name for a prompt based on its configuration
298
- */
299
- private getDefaultModelName;
300
- /**
301
- * Loads the vendors for the default model
302
- */
303
- private loadDefaultVendor;
304
- /**
305
- * Handles model selection change and loads available vendors for the selected model
306
- */
307
- onModelSelectionChange(): void;
308
- /**
309
- * Loads available vendors for the selected model
310
- */
311
- private loadVendorsForModel;
312
- /**
313
- * Loads default parameter values from the AI prompt entity
314
- */
315
- private loadPromptDefaults;
316
- /**
317
- * Loads template parameters from the prompt's template and pre-populates
318
- * the template variables with their default values
319
- */
320
- private loadTemplateParameters;
321
- /**
322
- * Maps template parameter types to variable types
323
- */
324
- private getVariableTypeFromParamType;
325
- /**
326
- * Resets all model settings to the prompt defaults
327
- */
328
- resetToPromptDefaults(): void;
329
- /**
330
- * Resets the test harness to its initial state, clearing all conversations,
331
- * variables, and UI state. Called automatically when the harness becomes visible.
332
- */
333
- resetHarness(): void;
334
- /**
335
- * Starts a new conversation
336
- */
337
- newConversation(): void;
338
- /**
339
- * Closes the test harness by setting visibility to false and emitting the change event.
340
- * Used by dialog implementations and close buttons.
341
- */
342
- close(): void;
343
- /**
344
- * Toggles the visibility of the configuration sidebar.
345
- * Allows users to show/hide the data context and conversation management panels.
346
- */
347
- toggleSidebar(): void;
348
- /**
349
- * Switches to the specified tab in the configuration sidebar.
350
- * @param tab - The tab to activate
351
- */
352
- selectTab(tab: 'agentVariables' | 'executionMonitor' | 'templateVariables' | 'modelSettings' | 'savedConversations'): void;
353
- /**
354
- * Shows the execution history for a specific message
355
- * @param message - The message to show execution history for
356
- */
357
- showMessageExecutionHistory(message: ConversationMessage): void;
358
- /**
359
- * Extract sub-agent nodes from execution tree
360
- */
361
- private extractSubAgentNodes;
362
- /**
363
- * Sends the current user message to the AI agent and initiates execution.
364
- * Handles message validation, conversation updates, UI state management, and agent execution.
365
- * Automatically clears the input field and triggers auto-scroll after sending.
366
- *
367
- * @example
368
- * ```typescript
369
- * // Called when user presses Enter or clicks Send button
370
- * await this.sendMessage();
371
- * ```
372
- */
373
- sendMessage(): Promise<void>;
374
- private executeAgent;
375
- private executePrompt;
376
- private startTypingAnimation;
377
- private buildDataContext;
378
- private buildTemplateData;
379
- private buildTemplateVariables;
380
- private convertVariableValue;
381
- /**
382
- * Adds a new empty agent variable to the collection.
383
- * Agent variables are passed to the agent during execution for dynamic content and template rendering.
384
- */
385
- addAgentVariable(): void;
386
- /**
387
- * Removes an agent variable at the specified index.
388
- * @param index - Zero-based index of the variable to remove
389
- */
390
- removeAgentVariable(index: number): void;
391
- /**
392
- * Adds a new empty template variable to the collection (prompt mode only).
393
- * Template variables are used for prompt template rendering.
394
- */
395
- addTemplateVariable(): void;
396
- /**
397
- * Removes a template variable at the specified index (prompt mode only).
398
- * @param index - Zero-based index of the variable to remove
399
- */
400
- removeTemplateVariable(index: number): void;
401
- /**
402
- * Clears the current conversation after user confirmation.
403
- * Resets both the message history and the current conversation ID.
404
- */
405
- clearConversation(): void;
406
- private scrollToBottom;
407
- private generateMessageId;
408
- private loadSavedConversations;
409
- /**
410
- * Gets the storage key for saved conversations based on entity type and ID
411
- */
412
- private getStorageKey;
413
- /**
414
- * Saves the current conversation to localStorage with user-provided name.
415
- * Handles both creating new conversations and updating existing ones.
416
- * Automatically limits storage to 50 conversations to prevent excessive memory usage.
417
- *
418
- * @example
419
- * ```typescript
420
- * // User clicks save button
421
- * this.saveConversation(); // Prompts for name and saves
422
- * ```
423
- */
424
- saveConversation(): void;
425
- updateTempConversation(): void;
426
- /**
427
- * Handles the save dialog confirmation
428
- */
429
- confirmSaveConversation(): void;
430
- /**
431
- * Cancels the save dialog
432
- */
433
- cancelSaveDialog(): void;
434
- /**
435
- * Saves conversations to localStorage
436
- */
437
- private saveConversationsToStorage;
438
- private autoSaveConversation;
439
- loadConversation(conversation: SavedConversation): void;
440
- /**
441
- * Confirms loading a conversation after dialog confirmation
442
- */
443
- confirmLoadConversation(): void;
444
- /**
445
- * Cancels loading a conversation
446
- */
447
- cancelLoadConversation(): void;
448
- /**
449
- * Actually loads the conversation
450
- */
451
- private doLoadConversation;
452
- deleteConversation(conversation: SavedConversation, event: Event): Promise<void>;
453
- exportConversation(): void;
454
- importConversation(): void;
455
- onFileSelected(event: Event): void;
456
- /**
457
- * Handles keyboard input in the message textarea.
458
- * Sends message on Enter (without Shift) and allows multi-line input with Shift+Enter.
459
- * @param event - Keyboard event from the textarea
460
- */
461
- handleKeyPress(event: KeyboardEvent): void;
462
- /**
463
- * Generates CSS class names for message display based on message properties.
464
- * @param message - The conversation message to generate classes for
465
- * @returns Space-separated CSS class string for styling
466
- */
467
- getMessageClass(message: ConversationMessage): string;
468
- /**
469
- * Formats a Date object into a user-friendly time string.
470
- * @param date - Date object to format
471
- * @returns Formatted time string in HH:MM format
472
- */
473
- formatTimestamp(date: Date): string;
474
- /**
475
- * Formats execution time from milliseconds into a human-readable string.
476
- * Automatically selects appropriate units (minutes, seconds, or milliseconds).
477
- * @param milliseconds - Execution time in milliseconds
478
- * @returns Formatted time string (e.g., "2m 30.5s", "1.23s", "500ms")
479
- */
480
- formatExecutionTime(milliseconds: number): string;
481
- formatElapsedTime(milliseconds: number): string;
482
- private startElapsedTimeCounter;
483
- /**
484
- * Shows the raw JSON dialog for a specific message
485
- * @param message - The message to show raw JSON for
486
- */
487
- showRawJsonDialog(message: ConversationMessage): void;
488
- /**
489
- * Creates a summary of the execution tree for easier viewing
490
- * @param executionTree - The execution tree to summarize
491
- * @returns A human-readable summary of the execution
492
- */
493
- private summarizeExecutionTree;
494
- /**
495
- * Get the last run ID from conversation messages
496
- */
497
- getLastRunId(): string | null;
498
- /**
499
- * Navigate to the run details form
500
- */
501
- navigateToRun(event: {
502
- runId: string;
503
- runType: 'agent' | 'prompt';
504
- }): void;
505
- /**
506
- * Copies the message content to clipboard.
507
- * @param message - The message to copy
508
- */
509
- copyMessage(message: ConversationMessage): Promise<void>;
510
- /**
511
- * Focuses the message input textarea.
512
- */
513
- private focusMessageInput;
514
- /**
515
- * Determines if the provided content is valid JSON.
516
- * @param content - String content to test
517
- * @returns True if content can be parsed as JSON, false otherwise
518
- */
519
- isJsonContent(content: string): boolean;
520
- /**
521
- * Formats JSON content with proper indentation for display.
522
- * @param content - JSON string to format
523
- * @returns Formatted JSON string or original content if parsing fails
524
- */
525
- formatJson(content: any): string;
526
- /**
527
- * Toggles the collapsed state of a message's payload section
528
- * @param message - The message to toggle payload visibility for
529
- */
530
- togglePayloadCollapse(message: ConversationMessage): void;
531
- /**
532
- * Formats streaming content with markdown rendering
533
- * @param message - The message containing streaming content
534
- * @returns SafeHtml formatted content
535
- */
536
- getFormattedStreamingContent(message: ConversationMessage): SafeHtml;
537
- /**
538
- * Automatically detects the content type of a message for appropriate rendering.
539
- * Uses pattern matching to identify JSON, Markdown, or plain text content.
540
- * @param content - Content string to analyze
541
- * @returns Detected content type ('markdown', 'json', or 'text')
542
- */
543
- detectContentType(content: string): 'markdown' | 'json' | 'text';
544
- renderMarkdown(content: string): SafeHtml;
545
- getFormattedContent(message: ConversationMessage): SafeHtml;
546
- /**
547
- * Renders JSON content using an inline code editor component
548
- */
549
- private renderJsonWithCodeEditor;
550
- /**
551
- * Escapes HTML content for use in attributes
552
- */
553
- private escapeHtmlAttribute;
554
- /**
555
- * Renders JSON content with human-readable content prominently displayed
556
- * and raw JSON in a collapsible section below with proper text wrapping.
557
- */
558
- /**
559
- * Gets a summary of the execution for tooltip display
560
- * @param message - The message to get execution summary for
561
- * @returns A brief summary of the execution steps
562
- */
563
- getExecutionSummary(message: ConversationMessage): string;
564
- /**
565
- * Closes the JSON dialog
566
- */
567
- closeJsonDialog(): void;
568
- /**
569
- * Copies the JSON content to clipboard
570
- */
571
- copyJsonContent(): void;
572
- /**
573
- * Extracts human-readable content from JSON responses.
574
- * Prioritizes userMessage field first, then checks other common fields.
575
- * @param jsonStr - JSON string to extract content from
576
- * @returns Extracted human-readable content or null if none found
577
- */
578
- private extractHumanReadableContent;
579
- /**
580
- * Checks if a message contains JSON content that has extractable human-readable content.
581
- * Used to determine if the raw toggle should be shown.
582
- * @param message - The conversation message to check
583
- * @returns True if the message has extractable content different from raw JSON
584
- */
585
- hasExtractableContent(message: ConversationMessage): boolean;
586
- /**
587
- * Determines whether to show the raw toggle button for a message.
588
- * Combines the logic for raw content availability and extractable content.
589
- * @param message - The conversation message to check
590
- * @returns True if the raw toggle should be displayed
591
- */
592
- showRawToggle(message: ConversationMessage): boolean;
593
- private escapeHtml;
594
- /**
595
- * Formats JSON for proper display with text wrapping instead of wide code blocks.
596
- * Creates a structured, readable format that respects container width.
597
- */
598
- private formatJsonForDisplay;
599
- /**
600
- * Creates formatted HTML for JSON display with proper indentation and wrapping.
601
- */
602
- private createJsonDisplayHtml;
603
- /**
604
- * Type guard to check if entity is an AI Agent
605
- */
606
- private isAgentEntity;
607
- /**
608
- * Type guard to check if entity is an AI Prompt
609
- */
610
- private isPromptEntity;
611
- /**
612
- * Gets the display name of the current entity
613
- */
614
- getEntityName(): string;
615
- /**
616
- * Updates stop sequences from the textarea input
617
- */
618
- updateStopSequences(): void;
619
- /**
620
- * Toggles the advanced parameters expansion panel
621
- */
622
- toggleAdvancedParams(): void;
623
- /**
624
- * Navigates to the AI Agent Run form to view detailed execution information
625
- * @param agentRunId - The ID of the agent run to view
626
- */
627
- navigateToAgentRun(agentRunId: string): void;
628
- static ɵfac: i0.ɵɵFactoryDeclaration<AITestHarnessComponent, never>;
629
- static ɵcmp: i0.ɵɵComponentDeclaration<AITestHarnessComponent, "mj-ai-test-harness", never, { "mode": { "alias": "mode"; "required": false; }; "entity": { "alias": "entity"; "required": false; }; "aiAgent": { "alias": "aiAgent"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; }, { "visibilityChange": "visibilityChange"; }, never, never, false, never>;
630
- }
631
- //# sourceMappingURL=ai-test-harness.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-test-harness.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-test-harness/ai-test-harness.component.ts"],"names":[],"mappings":"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"}