@defai.digital/ax-cli 4.0.4 → 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.
- package/README.md +35 -2
- package/dist/commands/mcp.js +61 -28
- package/dist/commands/mcp.js.map +1 -1
- package/dist/design/figma-alias.d.ts +5 -0
- package/dist/design/figma-alias.js +11 -4
- package/dist/design/figma-alias.js.map +1 -1
- package/dist/design/figma-audit.js +9 -1
- package/dist/design/figma-audit.js.map +1 -1
- package/dist/design/figma-client.d.ts +4 -0
- package/dist/design/figma-client.js +44 -11
- package/dist/design/figma-client.js.map +1 -1
- package/dist/design/figma-tokens.js +19 -8
- package/dist/design/figma-tokens.js.map +1 -1
- package/dist/mcp/automatosx-loader.d.ts +16 -1
- package/dist/mcp/automatosx-loader.js +18 -8
- package/dist/mcp/automatosx-loader.js.map +1 -1
- package/dist/mcp/cancellation.d.ts +3 -0
- package/dist/mcp/cancellation.js +22 -3
- package/dist/mcp/cancellation.js.map +1 -1
- package/dist/mcp/content-length-transport.d.ts +3 -0
- package/dist/mcp/content-length-transport.js +32 -1
- package/dist/mcp/content-length-transport.js.map +1 -1
- package/dist/mcp/progress.d.ts +3 -0
- package/dist/mcp/progress.js +22 -4
- package/dist/mcp/progress.js.map +1 -1
- package/dist/mcp/schema-validator.d.ts +5 -0
- package/dist/mcp/schema-validator.js +46 -11
- package/dist/mcp/schema-validator.js.map +1 -1
- package/dist/mcp/templates.js +4 -1
- package/dist/mcp/templates.js.map +1 -1
- package/dist/sdk/index.js +58 -9
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/progress-reporter.js +18 -5
- package/dist/sdk/progress-reporter.js.map +1 -1
- package/dist/sdk/testing.d.ts +5 -1
- package/dist/sdk/testing.js +123 -17
- package/dist/sdk/testing.js.map +1 -1
- package/dist/sdk/tool-registry.d.ts +21 -0
- package/dist/sdk/tool-registry.js +77 -13
- package/dist/sdk/tool-registry.js.map +1 -1
- package/dist/sdk/unified-logger.d.ts +2 -0
- package/dist/sdk/unified-logger.js +24 -5
- package/dist/sdk/unified-logger.js.map +1 -1
- package/dist/sdk/version.d.ts +1 -1
- package/dist/sdk/version.js +1 -1
- package/dist/sdk/version.js.map +1 -1
- package/dist/tools/design-tool.d.ts +9 -0
- package/dist/tools/design-tool.js +72 -35
- package/dist/tools/design-tool.js.map +1 -1
- package/package.json +1 -1
package/dist/sdk/testing.js
CHANGED
|
@@ -39,7 +39,10 @@ export class MockAgent extends EventEmitter {
|
|
|
39
39
|
*/
|
|
40
40
|
constructor(options = {}) {
|
|
41
41
|
super();
|
|
42
|
-
|
|
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)
|
|
@@ -80,7 +83,13 @@ export class MockAgent extends EventEmitter {
|
|
|
80
83
|
this.emit('stream', {
|
|
81
84
|
type: 'done',
|
|
82
85
|
});
|
|
83
|
-
|
|
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
|
+
}));
|
|
84
93
|
}
|
|
85
94
|
/**
|
|
86
95
|
* Process user message with streaming (mock implementation)
|
|
@@ -123,10 +132,19 @@ export class MockAgent extends EventEmitter {
|
|
|
123
132
|
}
|
|
124
133
|
/**
|
|
125
134
|
* Get chat history (mock implementation)
|
|
135
|
+
*
|
|
136
|
+
* Returns deep copies of chat entries to prevent external mutation.
|
|
126
137
|
*/
|
|
127
138
|
getChatHistory() {
|
|
128
139
|
this.checkDisposed();
|
|
129
|
-
|
|
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
|
+
}));
|
|
130
148
|
}
|
|
131
149
|
/**
|
|
132
150
|
* Execute bash command (mock implementation)
|
|
@@ -203,7 +221,10 @@ export class MockAgent extends EventEmitter {
|
|
|
203
221
|
if (!responses || responses.length === 0) {
|
|
204
222
|
throw new Error('MockAgent.setResponses: responses array must not be empty');
|
|
205
223
|
}
|
|
206
|
-
|
|
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];
|
|
207
228
|
this.currentResponseIndex = 0;
|
|
208
229
|
}
|
|
209
230
|
/**
|
|
@@ -259,7 +280,10 @@ export function createMockAgent(responses) {
|
|
|
259
280
|
export class MockSettingsManager {
|
|
260
281
|
settings;
|
|
261
282
|
constructor(settings = {}) {
|
|
262
|
-
|
|
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 };
|
|
263
287
|
}
|
|
264
288
|
loadUserSettings() {
|
|
265
289
|
// No-op for mock
|
|
@@ -340,7 +364,33 @@ export class MockMCPServer {
|
|
|
340
364
|
options;
|
|
341
365
|
connected = false;
|
|
342
366
|
constructor(options) {
|
|
343
|
-
|
|
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
|
+
};
|
|
344
394
|
}
|
|
345
395
|
/**
|
|
346
396
|
* Connect the mock server
|
|
@@ -356,15 +406,20 @@ export class MockMCPServer {
|
|
|
356
406
|
}
|
|
357
407
|
/**
|
|
358
408
|
* List available tools
|
|
409
|
+
*
|
|
410
|
+
* Returns deep copies of tool definitions to prevent external mutation.
|
|
359
411
|
*/
|
|
360
412
|
async listTools() {
|
|
361
413
|
if (!this.connected) {
|
|
362
414
|
throw new Error('Server not connected');
|
|
363
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
|
|
364
419
|
return (this.options.tools || []).map(tool => ({
|
|
365
420
|
name: tool.name,
|
|
366
421
|
description: tool.description,
|
|
367
|
-
inputSchema: tool.inputSchema
|
|
422
|
+
inputSchema: JSON.parse(JSON.stringify(tool.inputSchema))
|
|
368
423
|
}));
|
|
369
424
|
}
|
|
370
425
|
/**
|
|
@@ -383,7 +438,12 @@ export class MockMCPServer {
|
|
|
383
438
|
throw new Error(`Tool not found: ${name}`);
|
|
384
439
|
}
|
|
385
440
|
try {
|
|
386
|
-
|
|
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);
|
|
387
447
|
}
|
|
388
448
|
catch (error) {
|
|
389
449
|
// Wrap handler errors with context
|
|
@@ -454,7 +514,12 @@ export class MockMCPServer {
|
|
|
454
514
|
throw new Error(`Prompt not found: ${name}`);
|
|
455
515
|
}
|
|
456
516
|
try {
|
|
457
|
-
|
|
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);
|
|
458
523
|
}
|
|
459
524
|
catch (error) {
|
|
460
525
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
@@ -524,28 +589,69 @@ export function createMockMCPServer(options) {
|
|
|
524
589
|
* // Now agent is idle
|
|
525
590
|
* ```
|
|
526
591
|
*/
|
|
527
|
-
export async function waitForAgent(
|
|
592
|
+
export async function waitForAgent(agent, options) {
|
|
528
593
|
return new Promise((resolve, reject) => {
|
|
529
594
|
const timeout = options?.timeout || 5000;
|
|
530
595
|
let resolved = false;
|
|
531
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
|
+
};
|
|
532
616
|
const timer = setTimeout(() => {
|
|
533
617
|
if (!resolved) {
|
|
534
618
|
resolved = true;
|
|
535
|
-
|
|
536
|
-
if (completionTimer !== undefined) {
|
|
537
|
-
clearTimeout(completionTimer);
|
|
538
|
-
}
|
|
619
|
+
cleanup();
|
|
539
620
|
reject(new Error(`Agent did not complete within ${timeout}ms`));
|
|
540
621
|
}
|
|
541
622
|
}, timeout);
|
|
542
|
-
//
|
|
543
|
-
//
|
|
544
|
-
|
|
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
|
|
545
650
|
completionTimer = setTimeout(() => {
|
|
546
651
|
if (!resolved) {
|
|
547
652
|
resolved = true;
|
|
548
653
|
clearTimeout(timer);
|
|
654
|
+
cleanup();
|
|
549
655
|
resolve();
|
|
550
656
|
}
|
|
551
657
|
}, 100);
|
package/dist/sdk/testing.js.map
CHANGED
|
@@ -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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IACjC,SAAS,CAAW;IACpB,oBAAoB,GAAG,CAAC,CAAC;IACzB,OAAO,GAAgB,EAAE,CAAC;IAC1B,QAAQ,GAAG,KAAK,CAAC;IAEzB;;;;OAIG;IACH,YAAY,UAGR,EAAE;QACJ,KAAK,EAAE,CAAC;QACR,8DAA8D;QAC9D,+EAA+E;QAC/E,2DAA2D;QAC3D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACtC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,8BAA8B;QAC9B,MAAM,SAAS,GAAc;YAC3B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,oCAAoC;QACpC,gEAAgE;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,wBAAwB,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,oCAAoC;QACpC,MAAM,cAAc,GAAc;YAChC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElC,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ;SACA,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,EAAE,MAAM;SACK,CAAC,CAAC;QAErB,+EAA+E;QAC/E,sEAAsE;QACtE,yCAAyC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,KAAK;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC/C,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,CAAC,wBAAwB,CAAC,OAAe;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,8BAA8B;QAC9B,MAAM,SAAS,GAAc;YAC3B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,oBAAoB;QACpB,gEAAgE;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,wBAAwB,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,qEAAqE;QACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM;gBACJ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,GAAG,GAAG;aACF,CAAC;QACtB,CAAC;QAED,oCAAoC;QACpC,MAAM,cAAc,GAAc;YAChC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElC,MAAM;YACJ,IAAI,EAAE,MAAM;SACK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,+EAA+E;QAC/E,sEAAsE;QACtE,4EAA4E;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,KAAK;YACR,yCAAyC;YACzC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC/C,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,4BAA4B,OAAO,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAqB;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAmB;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,8DAA8D;QAC9D,0EAA0E;QAC1E,2DAA2D;QAC3D,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,mBAAmB;IACtB,QAAQ,CAId;IAEF,YAAY,WAIR,EAAE;QACJ,uDAAuD;QACvD,+EAA+E;QAC/E,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB;QACd,iBAAiB;IACnB,CAAC;IAED,mBAAmB;QACjB,iBAAiB;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,KAAc;QAC3C,iDAAiD;QACjD,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,2CAA2C,GAAG,mCAAmC,CAAC,CAAC;QAClG,CAAC;QACA,IAAI,CAAC,QAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,gBAAgB;QACd,iBAAiB;IACnB,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAIlC;IACC,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,CAAuB;IAC9B,SAAS,GAAY,KAAK,CAAC;IAEnC,YAAY,OAA6B;QACvC,2DAA2D;QAC3D,0EAA0E;QAC1E,sEAAsE;QACtE,0CAA0C;QAC1C,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,yEAAyE;YACzE,gDAAgD;YAChD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACf,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,iFAAiF;QACjF,qEAAqE;QACrE,qCAAqC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAS;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;gBACpD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mCAAmC;YACnC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrD,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAU;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC;YACH,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;gBACpD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO;YACxC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;YAC1C,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;YAClD,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAU,EACV,OAA8B;IAE9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,eAA0D,CAAC;QAC/D,IAAI,cAAkD,CAAC;QACvD,IAAI,aAAmD,CAAC;QAExD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,mFAAmF;YACnF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,YAAY,CAAC,eAAe,CAAC,CAAC;gBAC9B,eAAe,GAAG,SAAS,CAAC;YAC9B,CAAC;YACD,yCAAyC;YACzC,IAAI,cAAc,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACpC,cAAc,GAAG,SAAS,CAAC;YAC7B,CAAC;YACD,iDAAiD;YACjD,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9D,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClC,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,qEAAqE;QACrE,kFAAkF;QAClF,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YAC5C,cAAc,GAAG,CAAC,KAAU,EAAE,EAAE;gBAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChD,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAEnC,iFAAiF;YACjF,8EAA8E;YAC9E,kEAAkE;YAClE,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,4DAA4D;QAC5D,oDAAoD;QACpD,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,qDAAqD;QACrD,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,MAAe,EAAE,KAAc;IACpF,OAAO;QACL,OAAO;QACP,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -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<{
|
|
@@ -51,12 +51,15 @@ export class ToolRegistry {
|
|
|
51
51
|
oldSourceSet.delete(toolName);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
// BUG FIX: Clone definition and tags to prevent external mutation of registry state
|
|
55
|
+
// Without this, external code could modify the definition/tags after registration
|
|
56
|
+
// and corrupt the internal registry state
|
|
54
57
|
const registeredTool = {
|
|
55
|
-
definition,
|
|
58
|
+
definition: this.cloneDefinition(definition),
|
|
56
59
|
executor,
|
|
57
60
|
registeredBy: source,
|
|
58
61
|
registeredAt: Date.now(),
|
|
59
|
-
tags: options.tags,
|
|
62
|
+
tags: options.tags ? [...options.tags] : undefined,
|
|
60
63
|
};
|
|
61
64
|
this.tools.set(toolName, registeredTool);
|
|
62
65
|
const sourceSet = this.toolsBySource.get(source);
|
|
@@ -79,11 +82,43 @@ export class ToolRegistry {
|
|
|
79
82
|
}
|
|
80
83
|
return true;
|
|
81
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Deep clone an LLMTool definition to prevent external mutation
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
cloneDefinition(def) {
|
|
90
|
+
return {
|
|
91
|
+
type: def.type,
|
|
92
|
+
function: {
|
|
93
|
+
name: def.function.name,
|
|
94
|
+
description: def.function.description,
|
|
95
|
+
parameters: JSON.parse(JSON.stringify(def.function.parameters)),
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Deep clone a RegisteredTool to prevent external mutation
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
cloneTool(tool) {
|
|
104
|
+
return {
|
|
105
|
+
definition: this.cloneDefinition(tool.definition),
|
|
106
|
+
executor: tool.executor, // Executor is a function, can't be cloned
|
|
107
|
+
registeredBy: tool.registeredBy,
|
|
108
|
+
registeredAt: tool.registeredAt,
|
|
109
|
+
tags: tool.tags ? [...tool.tags] : undefined,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
82
112
|
/**
|
|
83
113
|
* Get a registered tool
|
|
114
|
+
*
|
|
115
|
+
* Returns a deep copy to prevent external mutation of registry state.
|
|
116
|
+
* Note: The executor function reference is shared (cannot be cloned).
|
|
84
117
|
*/
|
|
85
118
|
getTool(toolName) {
|
|
86
|
-
|
|
119
|
+
const tool = this.tools.get(toolName);
|
|
120
|
+
// BUG FIX: Return deep copy to prevent external mutation
|
|
121
|
+
return tool ? this.cloneTool(tool) : undefined;
|
|
87
122
|
}
|
|
88
123
|
/**
|
|
89
124
|
* Check if a tool is registered
|
|
@@ -93,27 +128,36 @@ export class ToolRegistry {
|
|
|
93
128
|
}
|
|
94
129
|
/**
|
|
95
130
|
* Get all tool definitions (OpenAI format)
|
|
131
|
+
*
|
|
132
|
+
* Returns deep copies to prevent external mutation of registry state.
|
|
96
133
|
*/
|
|
97
134
|
getAllToolDefinitions() {
|
|
98
|
-
|
|
135
|
+
// BUG FIX: Return deep copies to prevent external mutation
|
|
136
|
+
return Array.from(this.tools.values()).map(tool => this.cloneDefinition(tool.definition));
|
|
99
137
|
}
|
|
100
138
|
/**
|
|
101
139
|
* Get tool definitions from specific source
|
|
140
|
+
*
|
|
141
|
+
* Returns deep copies to prevent external mutation of registry state.
|
|
102
142
|
*/
|
|
103
143
|
getToolDefinitionsBySource(source) {
|
|
104
144
|
const toolNames = this.toolsBySource.get(source) || new Set();
|
|
145
|
+
// BUG FIX: Return deep copies to prevent external mutation
|
|
105
146
|
return Array.from(toolNames)
|
|
106
147
|
.map(name => this.tools.get(name))
|
|
107
148
|
.filter((tool) => tool !== undefined)
|
|
108
|
-
.map(tool => tool.definition);
|
|
149
|
+
.map(tool => this.cloneDefinition(tool.definition));
|
|
109
150
|
}
|
|
110
151
|
/**
|
|
111
152
|
* Get tool definitions by tag
|
|
153
|
+
*
|
|
154
|
+
* Returns deep copies to prevent external mutation of registry state.
|
|
112
155
|
*/
|
|
113
156
|
getToolDefinitionsByTag(tag) {
|
|
157
|
+
// BUG FIX: Return deep copies to prevent external mutation
|
|
114
158
|
return Array.from(this.tools.values())
|
|
115
159
|
.filter(tool => tool.tags?.includes(tag))
|
|
116
|
-
.map(tool => tool.definition);
|
|
160
|
+
.map(tool => this.cloneDefinition(tool.definition));
|
|
117
161
|
}
|
|
118
162
|
/**
|
|
119
163
|
* Execute a tool
|
|
@@ -127,7 +171,16 @@ export class ToolRegistry {
|
|
|
127
171
|
};
|
|
128
172
|
}
|
|
129
173
|
try {
|
|
130
|
-
|
|
174
|
+
// BUG FIX: Clone args and context before passing to executor
|
|
175
|
+
// This prevents the executor from mutating the caller's objects
|
|
176
|
+
// which could cause subtle bugs if the caller reuses them
|
|
177
|
+
const clonedArgs = JSON.parse(JSON.stringify(args));
|
|
178
|
+
const clonedContext = {
|
|
179
|
+
source: context.source,
|
|
180
|
+
agentId: context.agentId,
|
|
181
|
+
metadata: context.metadata ? { ...context.metadata } : undefined,
|
|
182
|
+
};
|
|
183
|
+
const result = await tool.executor(clonedArgs, clonedContext);
|
|
131
184
|
return result;
|
|
132
185
|
}
|
|
133
186
|
catch (error) {
|
|
@@ -204,14 +257,17 @@ export class ToolRegistry {
|
|
|
204
257
|
}
|
|
205
258
|
/**
|
|
206
259
|
* Export registry as JSON (excluding executors)
|
|
260
|
+
*
|
|
261
|
+
* Returns deep copies to prevent external mutation of registry state.
|
|
207
262
|
*/
|
|
208
263
|
exportDefinitions() {
|
|
264
|
+
// BUG FIX: Return deep copies to prevent external mutation
|
|
209
265
|
const tools = Array.from(this.tools.entries()).map(([name, tool]) => ({
|
|
210
266
|
name,
|
|
211
|
-
definition: tool.definition,
|
|
267
|
+
definition: this.cloneDefinition(tool.definition),
|
|
212
268
|
registeredBy: tool.registeredBy,
|
|
213
269
|
registeredAt: tool.registeredAt,
|
|
214
|
-
tags: tool.tags,
|
|
270
|
+
tags: tool.tags ? [...tool.tags] : undefined,
|
|
215
271
|
}));
|
|
216
272
|
return {
|
|
217
273
|
tools,
|
|
@@ -236,14 +292,22 @@ export function registerTools(source, tools) {
|
|
|
236
292
|
const registry = getToolRegistry();
|
|
237
293
|
const registered = [];
|
|
238
294
|
const errors = [];
|
|
239
|
-
for (
|
|
295
|
+
for (let i = 0; i < tools.length; i++) {
|
|
296
|
+
const tool = tools[i];
|
|
297
|
+
// BUG FIX: Safely extract tool name to prevent crashes on malformed input
|
|
298
|
+
// Without this, accessing definition.function.name on null/undefined would throw
|
|
299
|
+
// and crash registration for all remaining tools
|
|
300
|
+
const toolName = tool?.definition?.function?.name ?? `unknown-tool-${i}`;
|
|
240
301
|
try {
|
|
241
|
-
|
|
242
|
-
|
|
302
|
+
if (!tool || !tool.definition || !tool.executor) {
|
|
303
|
+
throw new Error('Tool definition and executor are required');
|
|
304
|
+
}
|
|
305
|
+
registry.registerTool(source, tool.definition, tool.executor, tool.options);
|
|
306
|
+
registered.push(toolName);
|
|
243
307
|
}
|
|
244
308
|
catch (error) {
|
|
245
309
|
errors.push({
|
|
246
|
-
name:
|
|
310
|
+
name: toolName,
|
|
247
311
|
error: error instanceof Error ? error.message : 'Unknown error',
|
|
248
312
|
});
|
|
249
313
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/sdk/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuDH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,QAAQ,GAAwB,IAAI,CAAC;IAE5C,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,aAAa,GAA6B,IAAI,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAEpF;QACE,yBAAyB;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC1B,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9B,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CACV,MAA+B,EAC/B,UAAmB,EACnB,QAAsB,EACtB,UAAmC,EAAE;QAErC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE1C,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,kEAAkE,CACpF,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACvE,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAmB;YACrC,UAAU;
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/sdk/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuDH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,QAAQ,GAAwB,IAAI,CAAC;IAE5C,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,aAAa,GAA6B,IAAI,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAEpF;QACE,yBAAyB;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC1B,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9B,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CACV,MAA+B,EAC/B,UAAmB,EACnB,QAAsB,EACtB,UAAmC,EAAE;QAErC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE1C,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,kEAAkE,CACpF,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACvE,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,kFAAkF;QAClF,0CAA0C;QAC1C,MAAM,cAAc,GAAmB;YACrC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YAC5C,QAAQ;YACR,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,GAAY;QAClC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE;gBACR,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI;gBACvB,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW;gBACrC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAChE;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,IAAoB;QACpC,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,0CAA0C;YACnE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,yDAAyD;QACzD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,qBAAqB;QACnB,2DAA2D;QAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,MAA+B;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAC9D,2DAA2D;QAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aACzB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACjC,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;aAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,GAAW;QACjC,2DAA2D;QAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,IAA6B,EAC7B,OAA6B;QAO7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS,QAAQ,yBAAyB;aAClD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,6DAA6D;YAC7D,gEAAgE;YAChE,0DAA0D;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,MAAM,aAAa,GAAyB;gBAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAC9D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gDAAgD;YAChD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK;gBACzC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnE,CAAC,CAAC,yBAAyB,CAAC;YAE9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,wDAAwD;gBACxD,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,YAAY,EAAE,KAAK,CAAC,OAAO;oBAC3B,UAAU,EAAE,KAAK,CAAC,KAAK;iBACxB,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAA+B;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAgC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,wCAAwC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QAKN,MAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACtB,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC;gBACrD,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC;aAC9D;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QAcf,2DAA2D;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7C,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;SACvB,CAAC;IACJ,CAAC;;AAGH;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA+B,EAC/B,KAIE;IAEF,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAA2C,EAAE,CAAC;IAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,0EAA0E;QAC1E,iFAAiF;QACjF,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,gBAAgB,CAAC,EAAE,CAAC;QAEzE,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YACD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAoG;IAEpG,OAAO,KAAK,EAAE,IAA6B,EAAE,QAA8B,EAAE,EAAE;QAC7E,OAAO,OAAO,CAAC,IAAS,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -102,6 +102,8 @@ export declare class UnifiedLogger extends EventEmitter {
|
|
|
102
102
|
private trimLogs;
|
|
103
103
|
/**
|
|
104
104
|
* Get all logs (optionally filtered)
|
|
105
|
+
*
|
|
106
|
+
* Returns deep copies of log entries to prevent external mutation of internal state.
|
|
105
107
|
*/
|
|
106
108
|
getLogs(filter?: LogFilter): LogEntry[];
|
|
107
109
|
/**
|
|
@@ -68,12 +68,15 @@ export class UnifiedLogger extends EventEmitter {
|
|
|
68
68
|
if (level < this.minLevel) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
+
// BUG FIX: Clone data to prevent external mutation of stored log entries
|
|
72
|
+
// Without this, external code could modify the data object after logging
|
|
73
|
+
// and corrupt the internal log state
|
|
71
74
|
const entry = {
|
|
72
75
|
timestamp: Date.now(),
|
|
73
76
|
level,
|
|
74
77
|
source,
|
|
75
78
|
message,
|
|
76
|
-
data,
|
|
79
|
+
data: data ? { ...data } : undefined,
|
|
77
80
|
error: error ? {
|
|
78
81
|
message: error.message,
|
|
79
82
|
stack: error.stack,
|
|
@@ -88,9 +91,16 @@ export class UnifiedLogger extends EventEmitter {
|
|
|
88
91
|
}
|
|
89
92
|
// Add to logs
|
|
90
93
|
this.logs.push(entry);
|
|
91
|
-
// Emit event
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
// BUG FIX: Emit separate copies of the entry to each event channel
|
|
95
|
+
// The stored entry must not be shared with listeners, as listeners could
|
|
96
|
+
// mutate it and corrupt internal state. Each emission gets its own copy.
|
|
97
|
+
const emitEntry = () => ({
|
|
98
|
+
...entry,
|
|
99
|
+
data: entry.data ? { ...entry.data } : undefined,
|
|
100
|
+
error: entry.error ? { ...entry.error } : undefined,
|
|
101
|
+
});
|
|
102
|
+
this.emit('log', emitEntry());
|
|
103
|
+
this.emit(LogLevel[level].toLowerCase(), emitEntry());
|
|
94
104
|
}
|
|
95
105
|
/**
|
|
96
106
|
* Log debug message
|
|
@@ -126,6 +136,8 @@ export class UnifiedLogger extends EventEmitter {
|
|
|
126
136
|
}
|
|
127
137
|
/**
|
|
128
138
|
* Get all logs (optionally filtered)
|
|
139
|
+
*
|
|
140
|
+
* Returns deep copies of log entries to prevent external mutation of internal state.
|
|
129
141
|
*/
|
|
130
142
|
getLogs(filter) {
|
|
131
143
|
let filtered = [...this.logs];
|
|
@@ -157,7 +169,14 @@ export class UnifiedLogger extends EventEmitter {
|
|
|
157
169
|
filtered = filtered.filter(log => log.timestamp <= until);
|
|
158
170
|
}
|
|
159
171
|
}
|
|
160
|
-
|
|
172
|
+
// BUG FIX: Return deep copies to prevent external mutation of internal log entries
|
|
173
|
+
// Without this, external code could modify the returned entries and corrupt internal state
|
|
174
|
+
return filtered.map(log => ({
|
|
175
|
+
...log,
|
|
176
|
+
// Deep copy optional nested objects
|
|
177
|
+
data: log.data ? { ...log.data } : undefined,
|
|
178
|
+
error: log.error ? { ...log.error } : undefined,
|
|
179
|
+
}));
|
|
161
180
|
}
|
|
162
181
|
/**
|
|
163
182
|
* Get recent logs (last N entries)
|