@defai.digital/ax-cli 4.0.3 → 4.0.5

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 (60) hide show
  1. package/README.md +61 -2
  2. package/dist/commands/mcp.js +61 -28
  3. package/dist/commands/mcp.js.map +1 -1
  4. package/dist/design/figma-alias.d.ts +5 -0
  5. package/dist/design/figma-alias.js +11 -4
  6. package/dist/design/figma-alias.js.map +1 -1
  7. package/dist/design/figma-audit.js +9 -1
  8. package/dist/design/figma-audit.js.map +1 -1
  9. package/dist/design/figma-client.d.ts +4 -0
  10. package/dist/design/figma-client.js +44 -11
  11. package/dist/design/figma-client.js.map +1 -1
  12. package/dist/design/figma-tokens.js +19 -8
  13. package/dist/design/figma-tokens.js.map +1 -1
  14. package/dist/mcp/automatosx-loader.d.ts +16 -1
  15. package/dist/mcp/automatosx-loader.js +18 -8
  16. package/dist/mcp/automatosx-loader.js.map +1 -1
  17. package/dist/mcp/cancellation.d.ts +3 -0
  18. package/dist/mcp/cancellation.js +22 -3
  19. package/dist/mcp/cancellation.js.map +1 -1
  20. package/dist/mcp/content-length-transport.d.ts +3 -0
  21. package/dist/mcp/content-length-transport.js +32 -1
  22. package/dist/mcp/content-length-transport.js.map +1 -1
  23. package/dist/mcp/progress.d.ts +3 -0
  24. package/dist/mcp/progress.js +22 -4
  25. package/dist/mcp/progress.js.map +1 -1
  26. package/dist/mcp/schema-validator.d.ts +5 -0
  27. package/dist/mcp/schema-validator.js +46 -11
  28. package/dist/mcp/schema-validator.js.map +1 -1
  29. package/dist/mcp/templates.js +4 -1
  30. package/dist/mcp/templates.js.map +1 -1
  31. package/dist/sdk/errors.d.ts +7 -2
  32. package/dist/sdk/errors.js +17 -5
  33. package/dist/sdk/errors.js.map +1 -1
  34. package/dist/sdk/index.d.ts +5 -5
  35. package/dist/sdk/index.js +113 -31
  36. package/dist/sdk/index.js.map +1 -1
  37. package/dist/sdk/progress-reporter.d.ts +8 -0
  38. package/dist/sdk/progress-reporter.js +41 -6
  39. package/dist/sdk/progress-reporter.js.map +1 -1
  40. package/dist/sdk/testing.d.ts +20 -3
  41. package/dist/sdk/testing.js +177 -20
  42. package/dist/sdk/testing.js.map +1 -1
  43. package/dist/sdk/tool-registry.d.ts +32 -1
  44. package/dist/sdk/tool-registry.js +111 -13
  45. package/dist/sdk/tool-registry.js.map +1 -1
  46. package/dist/sdk/unified-logger.d.ts +6 -0
  47. package/dist/sdk/unified-logger.js +48 -8
  48. package/dist/sdk/unified-logger.js.map +1 -1
  49. package/dist/sdk/version.d.ts +1 -1
  50. package/dist/sdk/version.js +20 -6
  51. package/dist/sdk/version.js.map +1 -1
  52. package/dist/tools/design-tool.d.ts +9 -0
  53. package/dist/tools/design-tool.js +72 -35
  54. package/dist/tools/design-tool.js.map +1 -1
  55. package/dist/ui/components/diff-renderer.js +4 -4
  56. package/dist/ui/components/diff-renderer.js.map +1 -1
  57. package/dist/ui/themes/theme-registry.d.ts +3 -1
  58. package/dist/ui/themes/theme-registry.js +5 -3
  59. package/dist/ui/themes/theme-registry.js.map +1 -1
  60. package/package.json +1 -1
@@ -55,14 +55,40 @@ export class ProgressReporter extends EventEmitter {
55
55
  }
56
56
  /**
57
57
  * Report a progress event
58
+ *
59
+ * @param event - Event data (timestamp will be added automatically)
60
+ * @throws Error if required fields (agentId, name, type) are missing or invalid
58
61
  */
59
62
  report(event) {
60
- const fullEvent = {
63
+ // Validate required fields
64
+ if (!event.agentId || typeof event.agentId !== 'string') {
65
+ throw new Error('ProgressReporter.report: agentId is required and must be a string');
66
+ }
67
+ if (!event.name || typeof event.name !== 'string') {
68
+ throw new Error('ProgressReporter.report: name is required and must be a string');
69
+ }
70
+ if (!event.type || !Object.values(ProgressEventType).includes(event.type)) {
71
+ throw new Error('ProgressReporter.report: type is required and must be a valid ProgressEventType');
72
+ }
73
+ // BUG FIX: Deep copy metadata to prevent external mutation of emitted events
74
+ // Without this, external code could modify the metadata after event emission
75
+ // and corrupt the event data that listeners received
76
+ const timestamp = Date.now();
77
+ const clonedMetadata = event.metadata ? { ...event.metadata } : undefined;
78
+ // BUG FIX: Emit separate event objects to each channel
79
+ // If we emit the same object to both 'progress' and event.type, a listener
80
+ // on 'progress' could mutate the event and affect listeners on event.type
81
+ // (or vice versa). Each emission gets its own copy.
82
+ this.emit('progress', {
61
83
  ...event,
62
- timestamp: Date.now(),
63
- };
64
- this.emit('progress', fullEvent);
65
- this.emit(event.type, fullEvent);
84
+ metadata: clonedMetadata ? { ...clonedMetadata } : undefined,
85
+ timestamp,
86
+ });
87
+ this.emit(event.type, {
88
+ ...event,
89
+ metadata: clonedMetadata ? { ...clonedMetadata } : undefined,
90
+ timestamp,
91
+ });
66
92
  }
67
93
  /**
68
94
  * Report task start
@@ -78,13 +104,22 @@ export class ProgressReporter extends EventEmitter {
78
104
  }
79
105
  /**
80
106
  * Report task progress
107
+ *
108
+ * @param agentId - Agent identifier
109
+ * @param name - Task name
110
+ * @param progress - Progress percentage (0-100), will be clamped to valid range
111
+ * @param message - Optional status message
81
112
  */
82
113
  taskProgress(agentId, name, progress, message) {
114
+ // Validate progress is a valid number
115
+ const validProgress = typeof progress === 'number' && !isNaN(progress) && isFinite(progress)
116
+ ? Math.max(0, Math.min(100, progress))
117
+ : 0; // Default to 0 for invalid values
83
118
  this.report({
84
119
  type: ProgressEventType.TASK_PROGRESS,
85
120
  agentId,
86
121
  name,
87
- progress: Math.max(0, Math.min(100, progress)),
122
+ progress: validProgress,
88
123
  message,
89
124
  });
90
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"progress-reporter.js","sourceRoot":"","sources":["../../src/sdk/progress-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress-reporter.js","sourceRoot":"","sources":["../../src/sdk/progress-reporter.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,8 @@ export declare class MockAgent extends EventEmitter {
61
61
  processUserMessageStream(message: string): AsyncGenerator<StreamingChunk>;
62
62
  /**
63
63
  * Get chat history (mock implementation)
64
+ *
65
+ * Returns deep copies of chat entries to prevent external mutation.
64
66
  */
65
67
  getChatHistory(): ChatEntry[];
66
68
  /**
@@ -90,8 +92,9 @@ export declare class MockAgent extends EventEmitter {
90
92
  isBashExecuting(): boolean;
91
93
  /**
92
94
  * Dispose of mock agent
95
+ * Note: Returns void to match LLMAgent.dispose() signature
93
96
  */
94
- dispose(): Promise<void>;
97
+ dispose(): void;
95
98
  /**
96
99
  * Reset mock agent state
97
100
  *
@@ -102,7 +105,8 @@ export declare class MockAgent extends EventEmitter {
102
105
  /**
103
106
  * Set new responses
104
107
  *
105
- * @param responses - New responses to use
108
+ * @param responses - New responses to use (must have at least one response)
109
+ * @throws Error if responses array is empty
106
110
  */
107
111
  setResponses(responses: string[]): void;
108
112
  /**
@@ -253,6 +257,8 @@ export declare class MockMCPServer {
253
257
  disconnect(): Promise<void>;
254
258
  /**
255
259
  * List available tools
260
+ *
261
+ * Returns deep copies of tool definitions to prevent external mutation.
256
262
  */
257
263
  listTools(): Promise<Array<{
258
264
  name: string;
@@ -261,6 +267,10 @@ export declare class MockMCPServer {
261
267
  }>>;
262
268
  /**
263
269
  * Call a tool on the mock server
270
+ *
271
+ * @param name - Tool name to call
272
+ * @param args - Arguments to pass to the tool
273
+ * @throws Error if server not connected, tool not found, or handler throws
264
274
  */
265
275
  callTool(name: string, args: any): Promise<any>;
266
276
  /**
@@ -273,6 +283,9 @@ export declare class MockMCPServer {
273
283
  }>>;
274
284
  /**
275
285
  * Read a resource from the mock server
286
+ *
287
+ * @param uri - Resource URI to read
288
+ * @throws Error if server not connected, resource not found, or handler throws
276
289
  */
277
290
  readResource(uri: string): Promise<string>;
278
291
  /**
@@ -284,6 +297,10 @@ export declare class MockMCPServer {
284
297
  }>>;
285
298
  /**
286
299
  * Execute a prompt
300
+ *
301
+ * @param name - Prompt name to execute
302
+ * @param args - Optional arguments for the prompt
303
+ * @throws Error if server not connected, prompt not found, or handler throws
287
304
  */
288
305
  executePrompt(name: string, args?: any): Promise<any>;
289
306
  /**
@@ -343,7 +360,7 @@ export declare function createMockMCPServer(options: MockMCPServerOptions): Mock
343
360
  * // Now agent is idle
344
361
  * ```
345
362
  */
346
- export declare function waitForAgent(_agent: any, options?: {
363
+ export declare function waitForAgent(agent: any, options?: {
347
364
  timeout?: number;
348
365
  }): Promise<void>;
349
366
  /**
@@ -39,7 +39,10 @@ export class MockAgent extends EventEmitter {
39
39
  */
40
40
  constructor(options = {}) {
41
41
  super();
42
- this.responses = options.responses || ['Mock response'];
42
+ // BUG FIX: Clone responses array to prevent external mutation
43
+ // Without this, the caller could modify the responses array after construction
44
+ // and unexpectedly change the mock's behavior during tests
45
+ this.responses = options.responses ? [...options.responses] : ['Mock response'];
43
46
  }
44
47
  /**
45
48
  * Process a user message (mock implementation)
@@ -60,7 +63,10 @@ export class MockAgent extends EventEmitter {
60
63
  };
61
64
  this.history.push(userEntry);
62
65
  // Get next response (cycle through)
63
- const response = this.responses[this.currentResponseIndex % this.responses.length];
66
+ // Guard against empty responses array to prevent modulo-by-zero
67
+ const response = this.responses.length > 0
68
+ ? this.responses[this.currentResponseIndex % this.responses.length]
69
+ : 'No response configured';
64
70
  this.currentResponseIndex++;
65
71
  // Add assistant response to history
66
72
  const assistantEntry = {
@@ -77,7 +83,13 @@ export class MockAgent extends EventEmitter {
77
83
  this.emit('stream', {
78
84
  type: 'done',
79
85
  });
80
- return [...this.history];
86
+ // BUG FIX: Return deep copies to prevent external mutation of internal history
87
+ // Without this, callers could modify the returned entries and corrupt
88
+ // the mock agent's internal chat history
89
+ return this.history.map(entry => ({
90
+ ...entry,
91
+ timestamp: new Date(entry.timestamp.getTime()),
92
+ }));
81
93
  }
82
94
  /**
83
95
  * Process user message with streaming (mock implementation)
@@ -94,7 +106,10 @@ export class MockAgent extends EventEmitter {
94
106
  };
95
107
  this.history.push(userEntry);
96
108
  // Get next response
97
- const response = this.responses[this.currentResponseIndex % this.responses.length];
109
+ // Guard against empty responses array to prevent modulo-by-zero
110
+ const response = this.responses.length > 0
111
+ ? this.responses[this.currentResponseIndex % this.responses.length]
112
+ : 'No response configured';
98
113
  this.currentResponseIndex++;
99
114
  // Stream the response character by character (for realistic testing)
100
115
  const words = response.split(' ');
@@ -117,10 +132,19 @@ export class MockAgent extends EventEmitter {
117
132
  }
118
133
  /**
119
134
  * Get chat history (mock implementation)
135
+ *
136
+ * Returns deep copies of chat entries to prevent external mutation.
120
137
  */
121
138
  getChatHistory() {
122
139
  this.checkDisposed();
123
- return [...this.history];
140
+ // BUG FIX: Return deep copies to prevent external mutation of internal history
141
+ // Without this, callers could modify the returned entries and corrupt
142
+ // the mock agent's internal chat history (e.g., change timestamps, content)
143
+ return this.history.map(entry => ({
144
+ ...entry,
145
+ // Clone Date objects to prevent mutation
146
+ timestamp: new Date(entry.timestamp.getTime()),
147
+ }));
124
148
  }
125
149
  /**
126
150
  * Execute bash command (mock implementation)
@@ -165,8 +189,9 @@ export class MockAgent extends EventEmitter {
165
189
  }
166
190
  /**
167
191
  * Dispose of mock agent
192
+ * Note: Returns void to match LLMAgent.dispose() signature
168
193
  */
169
- async dispose() {
194
+ dispose() {
170
195
  if (this.disposed)
171
196
  return;
172
197
  this.disposed = true;
@@ -188,11 +213,18 @@ export class MockAgent extends EventEmitter {
188
213
  /**
189
214
  * Set new responses
190
215
  *
191
- * @param responses - New responses to use
216
+ * @param responses - New responses to use (must have at least one response)
217
+ * @throws Error if responses array is empty
192
218
  */
193
219
  setResponses(responses) {
194
220
  this.checkDisposed();
195
- this.responses = responses;
221
+ if (!responses || responses.length === 0) {
222
+ throw new Error('MockAgent.setResponses: responses array must not be empty');
223
+ }
224
+ // BUG FIX: Clone responses array to prevent external mutation
225
+ // Without this, the caller could modify the responses array after setting
226
+ // and unexpectedly change the mock's behavior during tests
227
+ this.responses = [...responses];
196
228
  this.currentResponseIndex = 0;
197
229
  }
198
230
  /**
@@ -248,7 +280,10 @@ export function createMockAgent(responses) {
248
280
  export class MockSettingsManager {
249
281
  settings;
250
282
  constructor(settings = {}) {
251
- this.settings = settings;
283
+ // BUG FIX: Clone settings to prevent external mutation
284
+ // Without this, the caller could modify the settings object after construction
285
+ // and unexpectedly change the mock's behavior during tests
286
+ this.settings = { ...settings };
252
287
  }
253
288
  loadUserSettings() {
254
289
  // No-op for mock
@@ -266,6 +301,11 @@ export class MockSettingsManager {
266
301
  return this.settings.model || 'glm-4.6';
267
302
  }
268
303
  updateUserSetting(key, value) {
304
+ // Validate key is one of the valid settings keys
305
+ const validKeys = ['apiKey', 'baseURL', 'model'];
306
+ if (!validKeys.includes(key)) {
307
+ console.warn(`MockSettingsManager.updateUserSetting: '${key}' is not a recognized setting key`);
308
+ }
269
309
  this.settings[key] = value;
270
310
  }
271
311
  saveUserSettings() {
@@ -324,7 +364,33 @@ export class MockMCPServer {
324
364
  options;
325
365
  connected = false;
326
366
  constructor(options) {
327
- this.options = options;
367
+ // BUG FIX: Deep clone options to prevent external mutation
368
+ // Without this, external code could modify the options after construction
369
+ // (e.g., modify tools array, change handlers) and unexpectedly affect
370
+ // the mock server's behavior during tests
371
+ this.options = {
372
+ name: options.name,
373
+ version: options.version,
374
+ // Clone arrays to prevent external mutation, but keep handler references
375
+ // (handlers are functions and cannot be cloned)
376
+ tools: options.tools ? options.tools.map(t => ({
377
+ name: t.name,
378
+ description: t.description,
379
+ inputSchema: JSON.parse(JSON.stringify(t.inputSchema)),
380
+ handler: t.handler,
381
+ })) : undefined,
382
+ resources: options.resources ? options.resources.map(r => ({
383
+ uri: r.uri,
384
+ name: r.name,
385
+ mimeType: r.mimeType,
386
+ handler: r.handler,
387
+ })) : undefined,
388
+ prompts: options.prompts ? options.prompts.map(p => ({
389
+ name: p.name,
390
+ description: p.description,
391
+ handler: p.handler,
392
+ })) : undefined,
393
+ };
328
394
  }
329
395
  /**
330
396
  * Connect the mock server
@@ -340,19 +406,28 @@ export class MockMCPServer {
340
406
  }
341
407
  /**
342
408
  * List available tools
409
+ *
410
+ * Returns deep copies of tool definitions to prevent external mutation.
343
411
  */
344
412
  async listTools() {
345
413
  if (!this.connected) {
346
414
  throw new Error('Server not connected');
347
415
  }
416
+ // BUG FIX: Deep clone inputSchema to prevent external mutation of internal state
417
+ // Without this, callers could modify the returned schema and corrupt
418
+ // the mock server's tool definitions
348
419
  return (this.options.tools || []).map(tool => ({
349
420
  name: tool.name,
350
421
  description: tool.description,
351
- inputSchema: tool.inputSchema
422
+ inputSchema: JSON.parse(JSON.stringify(tool.inputSchema))
352
423
  }));
353
424
  }
354
425
  /**
355
426
  * Call a tool on the mock server
427
+ *
428
+ * @param name - Tool name to call
429
+ * @param args - Arguments to pass to the tool
430
+ * @throws Error if server not connected, tool not found, or handler throws
356
431
  */
357
432
  async callTool(name, args) {
358
433
  if (!this.connected) {
@@ -362,7 +437,19 @@ export class MockMCPServer {
362
437
  if (!tool) {
363
438
  throw new Error(`Tool not found: ${name}`);
364
439
  }
365
- return await tool.handler(args);
440
+ try {
441
+ // BUG FIX: Clone args before passing to handler to prevent mutation
442
+ // Without this, the handler could modify the caller's args object
443
+ const clonedArgs = args !== null && args !== undefined
444
+ ? JSON.parse(JSON.stringify(args))
445
+ : args;
446
+ return await tool.handler(clonedArgs);
447
+ }
448
+ catch (error) {
449
+ // Wrap handler errors with context
450
+ const message = error instanceof Error ? error.message : 'Unknown error';
451
+ throw new Error(`Tool '${name}' execution failed: ${message}`);
452
+ }
366
453
  }
367
454
  /**
368
455
  * List available resources
@@ -379,6 +466,9 @@ export class MockMCPServer {
379
466
  }
380
467
  /**
381
468
  * Read a resource from the mock server
469
+ *
470
+ * @param uri - Resource URI to read
471
+ * @throws Error if server not connected, resource not found, or handler throws
382
472
  */
383
473
  async readResource(uri) {
384
474
  if (!this.connected) {
@@ -388,7 +478,13 @@ export class MockMCPServer {
388
478
  if (!resource) {
389
479
  throw new Error(`Resource not found: ${uri}`);
390
480
  }
391
- return await resource.handler();
481
+ try {
482
+ return await resource.handler();
483
+ }
484
+ catch (error) {
485
+ const message = error instanceof Error ? error.message : 'Unknown error';
486
+ throw new Error(`Resource '${uri}' read failed: ${message}`);
487
+ }
392
488
  }
393
489
  /**
394
490
  * List available prompts
@@ -404,6 +500,10 @@ export class MockMCPServer {
404
500
  }
405
501
  /**
406
502
  * Execute a prompt
503
+ *
504
+ * @param name - Prompt name to execute
505
+ * @param args - Optional arguments for the prompt
506
+ * @throws Error if server not connected, prompt not found, or handler throws
407
507
  */
408
508
  async executePrompt(name, args) {
409
509
  if (!this.connected) {
@@ -413,7 +513,18 @@ export class MockMCPServer {
413
513
  if (!prompt) {
414
514
  throw new Error(`Prompt not found: ${name}`);
415
515
  }
416
- return await prompt.handler(args);
516
+ try {
517
+ // BUG FIX: Clone args before passing to handler to prevent mutation
518
+ // Without this, the handler could modify the caller's args object
519
+ const clonedArgs = args !== null && args !== undefined
520
+ ? JSON.parse(JSON.stringify(args))
521
+ : args;
522
+ return await prompt.handler(clonedArgs);
523
+ }
524
+ catch (error) {
525
+ const message = error instanceof Error ? error.message : 'Unknown error';
526
+ throw new Error(`Prompt '${name}' execution failed: ${message}`);
527
+ }
417
528
  }
418
529
  /**
419
530
  * Check if server is connected
@@ -478,27 +589,73 @@ export function createMockMCPServer(options) {
478
589
  * // Now agent is idle
479
590
  * ```
480
591
  */
481
- export async function waitForAgent(_agent, options) {
592
+ export async function waitForAgent(agent, options) {
482
593
  return new Promise((resolve, reject) => {
483
594
  const timeout = options?.timeout || 5000;
484
595
  let resolved = false;
596
+ let completionTimer;
597
+ let streamListener;
598
+ let errorListener;
599
+ const cleanup = () => {
600
+ // BUG FIX: Always clean up both timers and event listeners to prevent memory leaks
601
+ if (completionTimer !== undefined) {
602
+ clearTimeout(completionTimer);
603
+ completionTimer = undefined;
604
+ }
605
+ // Remove stream listener if it was added
606
+ if (streamListener && agent && typeof agent.off === 'function') {
607
+ agent.off('stream', streamListener);
608
+ streamListener = undefined;
609
+ }
610
+ // BUG FIX: Remove error listener if it was added
611
+ if (errorListener && agent && typeof agent.off === 'function') {
612
+ agent.off('error', errorListener);
613
+ errorListener = undefined;
614
+ }
615
+ };
485
616
  const timer = setTimeout(() => {
486
617
  if (!resolved) {
487
618
  resolved = true;
619
+ cleanup();
488
620
  reject(new Error(`Agent did not complete within ${timeout}ms`));
489
621
  }
490
622
  }, timeout);
491
- // Wait for agent to emit 'idle' or similar completion event
492
- // For now, just resolve after a short delay
493
- // TODO: Implement proper event listening when LLMAgent has completion events
494
- const completionTimer = setTimeout(() => {
623
+ // BUG FIX: Listen for 'done' stream event instead of arbitrary delay
624
+ // This properly waits for the agent to complete rather than using a fixed timeout
625
+ if (agent && typeof agent.on === 'function') {
626
+ streamListener = (chunk) => {
627
+ if (chunk && chunk.type === 'done' && !resolved) {
628
+ resolved = true;
629
+ clearTimeout(timer);
630
+ cleanup();
631
+ resolve();
632
+ }
633
+ };
634
+ agent.on('stream', streamListener);
635
+ // BUG FIX: Listen for error events so waitForAgent rejects with the actual error
636
+ // Without this, agent errors would be silently ignored and waitForAgent would
637
+ // either timeout or resolve via fallback, hiding the real failure
638
+ errorListener = (error) => {
639
+ if (!resolved) {
640
+ resolved = true;
641
+ clearTimeout(timer);
642
+ cleanup();
643
+ reject(error);
644
+ }
645
+ };
646
+ agent.on('error', errorListener);
647
+ }
648
+ // Fallback: resolve after a short delay if no stream events
649
+ // This handles agents that don't emit stream events
650
+ completionTimer = setTimeout(() => {
495
651
  if (!resolved) {
496
652
  resolved = true;
497
653
  clearTimeout(timer);
654
+ cleanup();
498
655
  resolve();
499
656
  }
500
657
  }, 100);
501
- // BUG FIX: Clean up completion timer if timeout fires first
658
+ // Allow process to exit if these are the only timers
502
659
  timer.unref?.();
503
660
  completionTimer.unref?.();
504
661
  });
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/sdk/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/sdk/testing.ts"],"names":[],"mappings":"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"}
@@ -73,8 +73,21 @@ export declare class ToolRegistry {
73
73
  * Unregister a tool
74
74
  */
75
75
  unregisterTool(toolName: string): boolean;
76
+ /**
77
+ * Deep clone an LLMTool definition to prevent external mutation
78
+ * @internal
79
+ */
80
+ private cloneDefinition;
81
+ /**
82
+ * Deep clone a RegisteredTool to prevent external mutation
83
+ * @internal
84
+ */
85
+ private cloneTool;
76
86
  /**
77
87
  * Get a registered tool
88
+ *
89
+ * Returns a deep copy to prevent external mutation of registry state.
90
+ * Note: The executor function reference is shared (cannot be cloned).
78
91
  */
79
92
  getTool(toolName: string): RegisteredTool | undefined;
80
93
  /**
@@ -83,14 +96,20 @@ export declare class ToolRegistry {
83
96
  hasTool(toolName: string): boolean;
84
97
  /**
85
98
  * Get all tool definitions (OpenAI format)
99
+ *
100
+ * Returns deep copies to prevent external mutation of registry state.
86
101
  */
87
102
  getAllToolDefinitions(): LLMTool[];
88
103
  /**
89
104
  * Get tool definitions from specific source
105
+ *
106
+ * Returns deep copies to prevent external mutation of registry state.
90
107
  */
91
108
  getToolDefinitionsBySource(source: 'ax-cli' | 'automatosx'): LLMTool[];
92
109
  /**
93
110
  * Get tool definitions by tag
111
+ *
112
+ * Returns deep copies to prevent external mutation of registry state.
94
113
  */
95
114
  getToolDefinitionsByTag(tag: string): LLMTool[];
96
115
  /**
@@ -124,6 +143,8 @@ export declare class ToolRegistry {
124
143
  };
125
144
  /**
126
145
  * Export registry as JSON (excluding executors)
146
+ *
147
+ * Returns deep copies to prevent external mutation of registry state.
127
148
  */
128
149
  exportDefinitions(): {
129
150
  tools: Array<{
@@ -146,12 +167,22 @@ export declare class ToolRegistry {
146
167
  export declare function getToolRegistry(): ToolRegistry;
147
168
  /**
148
169
  * Helper: Register multiple tools at once
170
+ *
171
+ * @param source - Source system registering the tools
172
+ * @param tools - Array of tool definitions with executors
173
+ * @returns Object with success status and any errors encountered
149
174
  */
150
175
  export declare function registerTools(source: 'ax-cli' | 'automatosx', tools: Array<{
151
176
  definition: LLMTool;
152
177
  executor: ToolExecutor;
153
178
  options?: ToolRegistrationOptions;
154
- }>): void;
179
+ }>): {
180
+ registered: string[];
181
+ errors: Array<{
182
+ name: string;
183
+ error: string;
184
+ }>;
185
+ };
155
186
  /**
156
187
  * Helper: Create a simple tool executor from a function
157
188
  */