@defai.digital/automatosx 5.11.0 → 5.11.1
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/CHANGELOG.md +33 -0
- package/README.md +1 -1
- package/dist/index.js +9 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [5.11.1] - 2025-10-29
|
|
6
|
+
|
|
7
|
+
### 🐛 Bug Fixes
|
|
8
|
+
|
|
9
|
+
**Critical Memory Leak Fix** - SpecProgressRenderer event listener cleanup
|
|
10
|
+
|
|
11
|
+
#### 🔧 Fix Details
|
|
12
|
+
|
|
13
|
+
**Problem:**
|
|
14
|
+
- Event listener registered in `SpecProgressRenderer` constructor was never removed
|
|
15
|
+
- Caused memory leak as renderer remained in memory after `stop()` was called
|
|
16
|
+
- Multiple listener instances accumulated on repeated spec executions
|
|
17
|
+
- Renderer could not be garbage collected
|
|
18
|
+
|
|
19
|
+
**Solution:** (`src/cli/renderers/spec-progress-renderer.ts`)
|
|
20
|
+
- Added `eventListener` private property to store listener reference
|
|
21
|
+
- Modified constructor to store listener before registering with event emitter
|
|
22
|
+
- Implemented proper cleanup in `stop()` method using `removeListener('*', listener)`
|
|
23
|
+
- Set listener reference to null for proper garbage collection
|
|
24
|
+
|
|
25
|
+
**Impact:**
|
|
26
|
+
- Proper memory cleanup after spec execution completes
|
|
27
|
+
- No listener accumulation on repeated runs
|
|
28
|
+
- Renderer can be garbage collected when no longer needed
|
|
29
|
+
- All 2,197 tests passing after fix
|
|
30
|
+
|
|
31
|
+
**Location:**
|
|
32
|
+
- `src/cli/renderers/spec-progress-renderer.ts:45` - Added `eventListener` property
|
|
33
|
+
- `src/cli/renderers/spec-progress-renderer.ts:59-62` - Store listener reference
|
|
34
|
+
- `src/cli/renderers/spec-progress-renderer.ts:271-275` - Remove listener in `stop()`
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
5
38
|
## [5.11.0] - 2025-10-29
|
|
6
39
|
|
|
7
40
|
### ✨ Features & Enhancements
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ AutomatosX is a local-first CLI that transforms stateless AI assistants into a p
|
|
|
13
13
|
[](https://www.microsoft.com/windows)
|
|
14
14
|
[](https://ubuntu.com)
|
|
15
15
|
|
|
16
|
-
**Status**: ✅ Production Ready · **v5.11.
|
|
16
|
+
**Status**: ✅ Production Ready · **v5.11.1** · October 2025 · 19 Specialized Agents · 100% Resource Leak Free · Spec-Driven Development
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
package/dist/index.js
CHANGED
|
@@ -34479,6 +34479,7 @@ var SpecProgressRenderer = class {
|
|
|
34479
34479
|
failedCount = 0;
|
|
34480
34480
|
currentLevel = 0;
|
|
34481
34481
|
taskStartTimes = /* @__PURE__ */ new Map();
|
|
34482
|
+
eventListener = null;
|
|
34482
34483
|
/**
|
|
34483
34484
|
* Create SpecProgressRenderer
|
|
34484
34485
|
*
|
|
@@ -34489,9 +34490,10 @@ var SpecProgressRenderer = class {
|
|
|
34489
34490
|
this.executor = executor;
|
|
34490
34491
|
this.quiet = options.quiet || false;
|
|
34491
34492
|
if (this.executor.events && !this.quiet) {
|
|
34492
|
-
this.
|
|
34493
|
+
this.eventListener = (event) => {
|
|
34493
34494
|
this.handleEvent(event);
|
|
34494
|
-
}
|
|
34495
|
+
};
|
|
34496
|
+
this.executor.events.onAny(this.eventListener);
|
|
34495
34497
|
}
|
|
34496
34498
|
}
|
|
34497
34499
|
/**
|
|
@@ -34654,13 +34656,17 @@ Level ${event.level + 1}/${event.totalLevels}:`));
|
|
|
34654
34656
|
/**
|
|
34655
34657
|
* Stop rendering
|
|
34656
34658
|
*
|
|
34657
|
-
* Cleans up spinner and resets state.
|
|
34659
|
+
* Cleans up spinner, removes event listeners, and resets state.
|
|
34658
34660
|
*/
|
|
34659
34661
|
stop() {
|
|
34660
34662
|
if (this.spinner) {
|
|
34661
34663
|
this.spinner.stop();
|
|
34662
34664
|
this.spinner = null;
|
|
34663
34665
|
}
|
|
34666
|
+
if (this.eventListener && this.executor.events) {
|
|
34667
|
+
this.executor.events.removeListener("*", this.eventListener);
|
|
34668
|
+
this.eventListener = null;
|
|
34669
|
+
}
|
|
34664
34670
|
}
|
|
34665
34671
|
};
|
|
34666
34672
|
|