@defai.digital/automatosx 6.5.5 β 6.5.6
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 +83 -0
- package/README.md +9 -10
- package/dist/index.js +26 -14
- package/examples/specs/automatosx-release.ax.yaml +380 -0
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,89 @@
|
|
|
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
|
+
## [6.5.6] - 2025-11-01
|
|
6
|
+
|
|
7
|
+
### β¨ Features
|
|
8
|
+
|
|
9
|
+
#### Spec-Kit Integration - 100% Complete π
|
|
10
|
+
|
|
11
|
+
**MILESTONE**: AutomatosX Spec-Kit is now **100% complete** with the implementation of RegenerationDetector!
|
|
12
|
+
|
|
13
|
+
The missing 12.5% has been implemented, bringing Spec-Kit from 87.5% to 100% completion. This completes Phase 3.4 of the Spec-Kit roadmap.
|
|
14
|
+
|
|
15
|
+
**What's New:**
|
|
16
|
+
|
|
17
|
+
**RegenerationDetector** (`src/core/spec/RegenerationDetector.ts`)
|
|
18
|
+
- Automatic spec change detection using SHA-256 hash comparison
|
|
19
|
+
- Detects when a spec has changed since DAG was generated
|
|
20
|
+
- Interactive regeneration prompts with user confirmation
|
|
21
|
+
- Prevents execution of stale/outdated DAGs
|
|
22
|
+
- Graceful error handling for missing files and invalid JSON
|
|
23
|
+
|
|
24
|
+
**Key Methods:**
|
|
25
|
+
```typescript
|
|
26
|
+
class RegenerationDetector {
|
|
27
|
+
// Check if spec hash matches DAG hash
|
|
28
|
+
async needsRegeneration(specPath: string, dagPath: string): Promise<RegenerationCheckResult>
|
|
29
|
+
|
|
30
|
+
// Prompt user for regeneration confirmation
|
|
31
|
+
async promptRegeneration(specPath: string): Promise<boolean>
|
|
32
|
+
|
|
33
|
+
// Calculate SHA-256 hash of content
|
|
34
|
+
calculateHash(content: string): string
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Features:**
|
|
39
|
+
- β
SHA-256 hash calculation (same algorithm as DagGenerator)
|
|
40
|
+
- β
Hash comparison between spec and DAG
|
|
41
|
+
- β
User-friendly regeneration prompts
|
|
42
|
+
- β
Graceful handling of missing files
|
|
43
|
+
- β
JSON parse error handling
|
|
44
|
+
- β
Comprehensive logging with logger.debug/info/warn/error
|
|
45
|
+
- β
Singleton pattern for consistent instance
|
|
46
|
+
- β
TypeScript strict mode compliance
|
|
47
|
+
|
|
48
|
+
**Testing:**
|
|
49
|
+
- 17 comprehensive unit tests added (`tests/unit/regeneration-detector.test.ts`)
|
|
50
|
+
- Tests cover: hash calculation, change detection, file errors, edge cases
|
|
51
|
+
- All tests passing β
|
|
52
|
+
- Test coverage includes special characters, large files, empty content
|
|
53
|
+
|
|
54
|
+
**Files Changed:**
|
|
55
|
+
- `src/core/spec/RegenerationDetector.ts` (new, 209 lines)
|
|
56
|
+
- `src/core/spec/index.ts` (added exports)
|
|
57
|
+
- `tests/unit/regeneration-detector.test.ts` (new, 17 tests)
|
|
58
|
+
- `README.md` (updated 87.5% β 100%)
|
|
59
|
+
- `CHANGELOG.md` (this entry)
|
|
60
|
+
|
|
61
|
+
**Impact:**
|
|
62
|
+
- Spec-Kit integration is now **feature-complete**
|
|
63
|
+
- All 8 planned components are implemented
|
|
64
|
+
- Users will be able to detect spec changes automatically
|
|
65
|
+
- Foundation ready for v6.6.0 features (Cost-Aware Router, Enhanced Parallel Execution)
|
|
66
|
+
|
|
67
|
+
**Spec-Kit Components (8/8 Complete):**
|
|
68
|
+
1. β
PlanGenerator - Execution plan generation
|
|
69
|
+
2. β
DagGenerator - DAG with change detection hash
|
|
70
|
+
3. β
ScaffoldGenerator - Project structure generation
|
|
71
|
+
4. β
TestGenerator - Test suite generation
|
|
72
|
+
5. β
PolicyParser - Policy YAML parsing
|
|
73
|
+
6. β
PolicyEvaluator - Provider selection by policy
|
|
74
|
+
7. β
RouterTraceLogger - JSONL trace logging
|
|
75
|
+
8. β
**RegenerationDetector - Spec change detection (NEW)**
|
|
76
|
+
|
|
77
|
+
**Next Steps:**
|
|
78
|
+
- v6.6.0: Integrate RegenerationDetector with CLI (`ax spec run` auto-detection)
|
|
79
|
+
- v6.6.0: Add `--force-regen` and `--skip-regen-check` flags
|
|
80
|
+
- v6.6.0: Implement Cost-Aware Router
|
|
81
|
+
- v6.6.0: Enhanced Parallel Execution
|
|
82
|
+
|
|
83
|
+
**Credits:**
|
|
84
|
+
Implementation completed through "ultrathinking" analysis and direct implementation after slow ax agent iteration. RegenerationDetector follows existing AutomatosX patterns from DagGenerator, SpecLoader, and PolicyEvaluator.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
5
88
|
## [6.5.5] - 2025-11-01
|
|
6
89
|
|
|
7
90
|
### π Bug Fixes
|
package/README.md
CHANGED
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
AutomatosX is the only AI CLI that combines declarative workflow specs, policy-driven cost optimization, and a persistent AI workforce. Write a YAML spec, and AutomatosX generates your entire projectβplans, infrastructure, tests, and executionβwhile remembering everything and optimizing every API call.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@defai.digital/automatosx)
|
|
8
|
+
[](https://www.npmjs.com/package/@defai.digital/automatosx)
|
|
8
9
|
[](LICENSE)
|
|
9
10
|
[](https://www.typescriptlang.org/)
|
|
10
|
-
[](#)
|
|
11
12
|
[](https://www.apple.com/macos)
|
|
12
13
|
[](https://www.microsoft.com/windows)
|
|
13
14
|
[](https://ubuntu.com)
|
|
14
15
|
|
|
15
|
-
**Status**: β
**Production Ready v6.
|
|
16
|
+
**Status**: β
**Production Ready v6.5.6** | Nov 2025 | 23 Specialized Agents | Spec-Kit 100% Complete | Policy-Driven Routing | Auto-Generation
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
@@ -815,8 +816,8 @@ ax run dag.json
|
|
|
815
816
|
|
|
816
817
|
## π¦ Production Readiness
|
|
817
818
|
|
|
818
|
-
β
**
|
|
819
|
-
β
**2,
|
|
819
|
+
β
**100% Complete** - Spec-Kit integration fully implemented
|
|
820
|
+
β
**2,425+ Tests Passing** - Comprehensive test coverage
|
|
820
821
|
β
**TypeScript Strict Mode** - Type-safe codebase
|
|
821
822
|
β
**Zero Resource Leaks** - Clean shutdown guaranteed
|
|
822
823
|
β
**Cross-Platform** - macOS, Windows, Ubuntu
|
|
@@ -847,12 +848,13 @@ ax --version # v6.0.1
|
|
|
847
848
|
|
|
848
849
|
## πΊοΈ Roadmap
|
|
849
850
|
|
|
850
|
-
### Completed (v6.0.0 - v6.
|
|
851
|
-
- β
Spec-Kit Integration (
|
|
851
|
+
### Completed (v6.0.0 - v6.5.6)
|
|
852
|
+
- β
Spec-Kit Integration (100%)
|
|
852
853
|
- β
Plan generation
|
|
853
854
|
- β
DAG generation
|
|
854
855
|
- β
Scaffold generation
|
|
855
856
|
- β
Test generation
|
|
857
|
+
- β
Regeneration Detector (v6.5.6)
|
|
856
858
|
- β
Policy-Driven Routing
|
|
857
859
|
- β
Cost/latency/privacy constraints
|
|
858
860
|
- β
Provider metadata registry
|
|
@@ -862,10 +864,7 @@ ax --version # v6.0.1
|
|
|
862
864
|
- β
Real-time following
|
|
863
865
|
- β
Color-coded CLI
|
|
864
866
|
|
|
865
|
-
### Coming Soon (v6.
|
|
866
|
-
- β³ Regeneration Detector
|
|
867
|
-
- Automatic spec change detection
|
|
868
|
-
- Regeneration prompts
|
|
867
|
+
### Coming Soon (v6.6.0)
|
|
869
868
|
- β³ Cost-Aware Router
|
|
870
869
|
- Pre-execution cost warnings
|
|
871
870
|
- Budget protection
|
package/dist/index.js
CHANGED
|
@@ -8803,7 +8803,7 @@ var PRECOMPILED_CONFIG = {
|
|
|
8803
8803
|
"iterateMode": {
|
|
8804
8804
|
"enabled": false,
|
|
8805
8805
|
"defaults": {
|
|
8806
|
-
"maxDurationMinutes":
|
|
8806
|
+
"maxDurationMinutes": 300,
|
|
8807
8807
|
"maxIterationsPerStage": 50,
|
|
8808
8808
|
"maxIterationsPerRun": 200,
|
|
8809
8809
|
"maxAutoResponsesPerStage": 30,
|
|
@@ -14843,6 +14843,13 @@ var Router = class {
|
|
|
14843
14843
|
});
|
|
14844
14844
|
}
|
|
14845
14845
|
this.healthCheckIntervalMs = config.healthCheckInterval;
|
|
14846
|
+
Promise.resolve().then(() => (init_process_manager(), process_manager_exports)).then(({ processManager: processManager2 }) => {
|
|
14847
|
+
processManager2.onShutdown(async () => {
|
|
14848
|
+
this.destroy();
|
|
14849
|
+
});
|
|
14850
|
+
}).catch(() => {
|
|
14851
|
+
logger.debug("Router: process-manager not available for shutdown handler");
|
|
14852
|
+
});
|
|
14846
14853
|
if (config.healthCheckInterval) {
|
|
14847
14854
|
this.startHealthChecks(config.healthCheckInterval);
|
|
14848
14855
|
if (this.providers.length > 0) {
|
|
@@ -14851,13 +14858,6 @@ var Router = class {
|
|
|
14851
14858
|
});
|
|
14852
14859
|
}
|
|
14853
14860
|
}
|
|
14854
|
-
Promise.resolve().then(() => (init_process_manager(), process_manager_exports)).then(({ processManager: processManager2 }) => {
|
|
14855
|
-
processManager2.onShutdown(async () => {
|
|
14856
|
-
this.destroy();
|
|
14857
|
-
});
|
|
14858
|
-
}).catch(() => {
|
|
14859
|
-
logger.debug("Router: process-manager not available for shutdown handler");
|
|
14860
|
-
});
|
|
14861
14861
|
}
|
|
14862
14862
|
/**
|
|
14863
14863
|
* Warm up provider availability caches immediately.
|
|
@@ -16930,6 +16930,8 @@ var SessionManager = class _SessionManager {
|
|
|
16930
16930
|
saveTimeout;
|
|
16931
16931
|
/** Pending save promise (for flushing) */
|
|
16932
16932
|
pendingSave;
|
|
16933
|
+
/** Flag indicating another save was requested during pending save */
|
|
16934
|
+
saveNeeded = false;
|
|
16933
16935
|
/** Maximum metadata size (10 KB) */
|
|
16934
16936
|
MAX_METADATA_SIZE = 10 * 1024;
|
|
16935
16937
|
/** Maximum tasks per session (prevent unbounded growth) */
|
|
@@ -17705,14 +17707,18 @@ var SessionManager = class _SessionManager {
|
|
|
17705
17707
|
}
|
|
17706
17708
|
this.saveTimeout = setTimeout(() => {
|
|
17707
17709
|
if (this.pendingSave) {
|
|
17708
|
-
this.
|
|
17709
|
-
this.saveToFile();
|
|
17710
|
-
}).catch(() => {
|
|
17711
|
-
this.saveToFile();
|
|
17712
|
-
});
|
|
17710
|
+
this.saveNeeded = true;
|
|
17713
17711
|
return;
|
|
17714
17712
|
}
|
|
17715
|
-
this.
|
|
17713
|
+
this.saveNeeded = false;
|
|
17714
|
+
const executeNextSave = async () => {
|
|
17715
|
+
await this.doSave();
|
|
17716
|
+
if (this.saveNeeded) {
|
|
17717
|
+
this.saveNeeded = false;
|
|
17718
|
+
return executeNextSave();
|
|
17719
|
+
}
|
|
17720
|
+
};
|
|
17721
|
+
this.pendingSave = executeNextSave().catch((err) => {
|
|
17716
17722
|
logger.error("Debounced save failed", {
|
|
17717
17723
|
error: err.message
|
|
17718
17724
|
});
|
|
@@ -26371,6 +26377,7 @@ Complexity Score: ${complexity.score}/10
|
|
|
26371
26377
|
const claudeConfig = tempConfig.providers["claude-code"];
|
|
26372
26378
|
if (!claudeConfig) {
|
|
26373
26379
|
console.error(chalk29.red("\u2717 Claude provider not configured"));
|
|
26380
|
+
rl.close();
|
|
26374
26381
|
process.exit(1);
|
|
26375
26382
|
}
|
|
26376
26383
|
const claudeProviderConfig = {
|
|
@@ -26413,6 +26420,11 @@ Complexity Score: ${complexity.score}/10
|
|
|
26413
26420
|
} catch (error) {
|
|
26414
26421
|
rl.close();
|
|
26415
26422
|
console.log(chalk29.gray("\n\u2192 Continuing with standard ax run...\n"));
|
|
26423
|
+
} finally {
|
|
26424
|
+
try {
|
|
26425
|
+
rl.close();
|
|
26426
|
+
} catch {
|
|
26427
|
+
}
|
|
26416
26428
|
}
|
|
26417
26429
|
}
|
|
26418
26430
|
}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
|
|
3
|
+
metadata:
|
|
4
|
+
id: automatosx-release
|
|
5
|
+
name: AutomatosX Release Workflow
|
|
6
|
+
description: |
|
|
7
|
+
Complete release orchestration for AutomatosX using Spec-Kit.
|
|
8
|
+
Demonstrates "dogfooding" - using AutomatosX to manage its own releases.
|
|
9
|
+
|
|
10
|
+
This spec covers the entire release process:
|
|
11
|
+
- Pre-flight validation
|
|
12
|
+
- Version bumping and synchronization
|
|
13
|
+
- CHANGELOG updates
|
|
14
|
+
- Building and testing
|
|
15
|
+
- Git operations (commit, tag, push)
|
|
16
|
+
- GitHub release creation
|
|
17
|
+
- CI/CD monitoring
|
|
18
|
+
|
|
19
|
+
tags:
|
|
20
|
+
- release
|
|
21
|
+
- ci-cd
|
|
22
|
+
- automation
|
|
23
|
+
- dogfooding
|
|
24
|
+
author: AutomatosX Team
|
|
25
|
+
created: "2025-11-01"
|
|
26
|
+
|
|
27
|
+
# Policy: Use most reliable providers for release automation
|
|
28
|
+
policy:
|
|
29
|
+
goal: reliability
|
|
30
|
+
constraints:
|
|
31
|
+
latency:
|
|
32
|
+
p95: 5000 # 5s max latency
|
|
33
|
+
reliability:
|
|
34
|
+
minAvailability: 0.99 # 99% availability required
|
|
35
|
+
maxErrorRate: 0.01 # 1% max error rate
|
|
36
|
+
|
|
37
|
+
# Actors: Specialized agents for each release stage
|
|
38
|
+
actors:
|
|
39
|
+
- id: validator
|
|
40
|
+
agent: quality
|
|
41
|
+
description: Validates release readiness (tests, build, git status)
|
|
42
|
+
delegation:
|
|
43
|
+
maxDepth: 1
|
|
44
|
+
|
|
45
|
+
- id: version-manager
|
|
46
|
+
agent: backend
|
|
47
|
+
description: Handles version bumping and synchronization
|
|
48
|
+
delegation:
|
|
49
|
+
maxDepth: 1
|
|
50
|
+
|
|
51
|
+
- id: changelog-writer
|
|
52
|
+
agent: documentation
|
|
53
|
+
description: Updates and validates CHANGELOG entries
|
|
54
|
+
delegation:
|
|
55
|
+
maxDepth: 1
|
|
56
|
+
|
|
57
|
+
- id: builder
|
|
58
|
+
agent: backend
|
|
59
|
+
description: Builds and tests the project
|
|
60
|
+
delegation:
|
|
61
|
+
maxDepth: 1
|
|
62
|
+
|
|
63
|
+
- id: git-operator
|
|
64
|
+
agent: devops
|
|
65
|
+
description: Handles git operations (commit, tag, push)
|
|
66
|
+
delegation:
|
|
67
|
+
maxDepth: 1
|
|
68
|
+
|
|
69
|
+
- id: release-publisher
|
|
70
|
+
agent: devops
|
|
71
|
+
description: Creates GitHub releases and monitors CI/CD
|
|
72
|
+
delegation:
|
|
73
|
+
maxDepth: 2
|
|
74
|
+
|
|
75
|
+
# Execution stages
|
|
76
|
+
stages:
|
|
77
|
+
# Stage 1: Pre-flight validation
|
|
78
|
+
- id: preflight
|
|
79
|
+
actor: validator
|
|
80
|
+
description: "Pre-flight validation checks"
|
|
81
|
+
prompt: |
|
|
82
|
+
Run comprehensive pre-flight validation checks for AutomatosX release:
|
|
83
|
+
|
|
84
|
+
CHECKS REQUIRED:
|
|
85
|
+
1. Git status is clean (no uncommitted changes)
|
|
86
|
+
2. On main branch
|
|
87
|
+
3. All tests pass (npm test)
|
|
88
|
+
4. TypeScript compiles (npm run typecheck)
|
|
89
|
+
5. Build succeeds (npm run build)
|
|
90
|
+
6. No npm audit vulnerabilities (moderate+)
|
|
91
|
+
7. package.json has required fields
|
|
92
|
+
|
|
93
|
+
Use the existing tools/check-release.js script to perform validation.
|
|
94
|
+
|
|
95
|
+
OUTPUT FORMAT:
|
|
96
|
+
- List each check with β (pass) or β (fail)
|
|
97
|
+
- If any checks fail, provide detailed error messages
|
|
98
|
+
- Recommend fixes for failed checks
|
|
99
|
+
- Return READY or NOT_READY status
|
|
100
|
+
timeout: 300000 # 5 minutes
|
|
101
|
+
saveToMemory: true
|
|
102
|
+
dependencies: []
|
|
103
|
+
|
|
104
|
+
# Stage 2: Version determination
|
|
105
|
+
- id: version-bump
|
|
106
|
+
actor: version-manager
|
|
107
|
+
description: "Determine and apply version bump"
|
|
108
|
+
prompt: |
|
|
109
|
+
Determine version bump type and update package.json:
|
|
110
|
+
|
|
111
|
+
CURRENT VERSION: ${preflight.currentVersion}
|
|
112
|
+
|
|
113
|
+
BUMP TYPE RULES:
|
|
114
|
+
- patch: Bug fixes, minor improvements (x.x.X)
|
|
115
|
+
- minor: New features, backwards compatible (x.X.0)
|
|
116
|
+
- major: Breaking changes (X.0.0)
|
|
117
|
+
|
|
118
|
+
TASKS:
|
|
119
|
+
1. Analyze recent commits to suggest bump type
|
|
120
|
+
2. Apply version bump using npm version
|
|
121
|
+
3. Run tools/sync-all-versions.js to update all references
|
|
122
|
+
4. Verify version sync in README.md and CLAUDE.md
|
|
123
|
+
|
|
124
|
+
OUTPUT:
|
|
125
|
+
- Current version
|
|
126
|
+
- New version
|
|
127
|
+
- Bump type
|
|
128
|
+
- Files updated
|
|
129
|
+
timeout: 120000 # 2 minutes
|
|
130
|
+
saveToMemory: true
|
|
131
|
+
dependencies: [preflight]
|
|
132
|
+
|
|
133
|
+
# Stage 3: CHANGELOG update
|
|
134
|
+
- id: changelog
|
|
135
|
+
actor: changelog-writer
|
|
136
|
+
description: "Validate or generate CHANGELOG entry"
|
|
137
|
+
prompt: |
|
|
138
|
+
Validate CHANGELOG.md has entry for new version:
|
|
139
|
+
|
|
140
|
+
NEW VERSION: ${version-bump.newVersion}
|
|
141
|
+
|
|
142
|
+
TASKS:
|
|
143
|
+
1. Check if CHANGELOG.md contains ## [${version-bump.newVersion}]
|
|
144
|
+
2. If missing, extract recent changes from git commits
|
|
145
|
+
3. Generate CHANGELOG entry following existing format
|
|
146
|
+
4. Include:
|
|
147
|
+
- Features (feat: commits)
|
|
148
|
+
- Bug fixes (fix: commits)
|
|
149
|
+
- Breaking changes (BREAKING CHANGE)
|
|
150
|
+
- Documentation updates (docs: commits)
|
|
151
|
+
5. Add proper date and version header
|
|
152
|
+
|
|
153
|
+
CHANGELOG FORMAT:
|
|
154
|
+
```markdown
|
|
155
|
+
## [X.Y.Z] - YYYY-MM-DD
|
|
156
|
+
|
|
157
|
+
### Features
|
|
158
|
+
- Description of feature
|
|
159
|
+
|
|
160
|
+
### Bug Fixes
|
|
161
|
+
- Description of fix
|
|
162
|
+
|
|
163
|
+
### Documentation
|
|
164
|
+
- Description of doc update
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
OUTPUT:
|
|
168
|
+
- CHANGELOG status (exists/created)
|
|
169
|
+
- Entry preview
|
|
170
|
+
timeout: 180000 # 3 minutes
|
|
171
|
+
saveToMemory: true
|
|
172
|
+
dependencies: [version-bump]
|
|
173
|
+
|
|
174
|
+
# Stage 4: Build and test
|
|
175
|
+
- id: build-test
|
|
176
|
+
actor: builder
|
|
177
|
+
description: "Build and test with new version"
|
|
178
|
+
prompt: |
|
|
179
|
+
Build and test the project with new version:
|
|
180
|
+
|
|
181
|
+
VERSION: ${version-bump.newVersion}
|
|
182
|
+
|
|
183
|
+
TASKS:
|
|
184
|
+
1. Run npm run build
|
|
185
|
+
2. Verify build output in dist/
|
|
186
|
+
3. Run full test suite (npm test)
|
|
187
|
+
4. Verify all tests pass
|
|
188
|
+
5. Check for any warnings or errors
|
|
189
|
+
|
|
190
|
+
VALIDATION:
|
|
191
|
+
- Build must succeed (exit code 0)
|
|
192
|
+
- All tests must pass (exit code 0)
|
|
193
|
+
- No TypeScript errors
|
|
194
|
+
- No critical warnings
|
|
195
|
+
|
|
196
|
+
OUTPUT:
|
|
197
|
+
- Build status
|
|
198
|
+
- Test results summary
|
|
199
|
+
- Any warnings/errors
|
|
200
|
+
timeout: 600000 # 10 minutes
|
|
201
|
+
saveToMemory: true
|
|
202
|
+
dependencies: [changelog]
|
|
203
|
+
|
|
204
|
+
# Stage 5: Git commit and tag
|
|
205
|
+
- id: git-commit
|
|
206
|
+
actor: git-operator
|
|
207
|
+
description: "Commit changes and create git tag"
|
|
208
|
+
prompt: |
|
|
209
|
+
Commit release changes and create git tag:
|
|
210
|
+
|
|
211
|
+
VERSION: ${version-bump.newVersion}
|
|
212
|
+
|
|
213
|
+
TASKS:
|
|
214
|
+
1. Stage changes:
|
|
215
|
+
- package.json
|
|
216
|
+
- README.md
|
|
217
|
+
- CHANGELOG.md
|
|
218
|
+
- CLAUDE.md
|
|
219
|
+
2. Create commit with message:
|
|
220
|
+
"chore: Release v${version-bump.newVersion}"
|
|
221
|
+
3. Create annotated git tag: v${version-bump.newVersion}
|
|
222
|
+
4. Verify commit and tag created
|
|
223
|
+
|
|
224
|
+
GIT COMMIT MESSAGE FORMAT:
|
|
225
|
+
```
|
|
226
|
+
chore: Release v${version-bump.newVersion}
|
|
227
|
+
|
|
228
|
+
Auto-generated release commit
|
|
229
|
+
|
|
230
|
+
- Updated package.json to v${version-bump.newVersion}
|
|
231
|
+
- Updated CHANGELOG.md
|
|
232
|
+
- Synced version references
|
|
233
|
+
- Verified build and tests passing
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
OUTPUT:
|
|
237
|
+
- Commit SHA
|
|
238
|
+
- Tag name
|
|
239
|
+
- Staged files
|
|
240
|
+
timeout: 60000 # 1 minute
|
|
241
|
+
saveToMemory: true
|
|
242
|
+
dependencies: [build-test]
|
|
243
|
+
|
|
244
|
+
# Stage 6: Push to GitHub
|
|
245
|
+
- id: git-push
|
|
246
|
+
actor: git-operator
|
|
247
|
+
description: "Push commit and tags to GitHub"
|
|
248
|
+
prompt: |
|
|
249
|
+
Push release commit and tag to GitHub:
|
|
250
|
+
|
|
251
|
+
VERSION: ${version-bump.newVersion}
|
|
252
|
+
COMMIT: ${git-commit.commitSHA}
|
|
253
|
+
|
|
254
|
+
TASKS:
|
|
255
|
+
1. Push main branch: git push origin main
|
|
256
|
+
2. Push tag: git push origin v${version-bump.newVersion}
|
|
257
|
+
3. Verify push succeeded
|
|
258
|
+
4. Get remote commit SHA for verification
|
|
259
|
+
|
|
260
|
+
SAFETY CHECKS:
|
|
261
|
+
- Verify we're on main branch
|
|
262
|
+
- Verify remote is correct (origin -> github.com/defai-digital/automatosx)
|
|
263
|
+
- Confirm push to main branch (interactive confirmation)
|
|
264
|
+
|
|
265
|
+
OUTPUT:
|
|
266
|
+
- Push status
|
|
267
|
+
- Remote commit SHA
|
|
268
|
+
- Tag on remote
|
|
269
|
+
timeout: 120000 # 2 minutes
|
|
270
|
+
saveToMemory: true
|
|
271
|
+
dependencies: [git-commit]
|
|
272
|
+
|
|
273
|
+
# Stage 7: Create GitHub release
|
|
274
|
+
- id: github-release
|
|
275
|
+
actor: release-publisher
|
|
276
|
+
description: "Create GitHub release with notes"
|
|
277
|
+
prompt: |
|
|
278
|
+
Create GitHub release using gh CLI:
|
|
279
|
+
|
|
280
|
+
VERSION: ${version-bump.newVersion}
|
|
281
|
+
TAG: v${version-bump.newVersion}
|
|
282
|
+
|
|
283
|
+
TASKS:
|
|
284
|
+
1. Extract release notes from CHANGELOG.md for v${version-bump.newVersion}
|
|
285
|
+
2. Create GitHub release using gh CLI:
|
|
286
|
+
gh release create v${version-bump.newVersion} \
|
|
287
|
+
--title "v${version-bump.newVersion}" \
|
|
288
|
+
--notes <extracted-notes>
|
|
289
|
+
3. Verify release created successfully
|
|
290
|
+
4. Get release URL
|
|
291
|
+
|
|
292
|
+
RELEASE NOTES FORMAT:
|
|
293
|
+
- Extract section from CHANGELOG.md between version headers
|
|
294
|
+
- Include Features, Bug Fixes, Documentation sections
|
|
295
|
+
- Format as markdown
|
|
296
|
+
- Add installation instructions
|
|
297
|
+
|
|
298
|
+
OUTPUT:
|
|
299
|
+
- Release URL
|
|
300
|
+
- Release status
|
|
301
|
+
- Release notes preview
|
|
302
|
+
timeout: 180000 # 3 minutes
|
|
303
|
+
saveToMemory: true
|
|
304
|
+
dependencies: [git-push]
|
|
305
|
+
|
|
306
|
+
# Stage 8: Monitor CI/CD
|
|
307
|
+
- id: cicd-monitor
|
|
308
|
+
actor: release-publisher
|
|
309
|
+
description: "Monitor GitHub Actions workflow"
|
|
310
|
+
prompt: |
|
|
311
|
+
Monitor GitHub Actions workflow for release:
|
|
312
|
+
|
|
313
|
+
VERSION: ${version-bump.newVersion}
|
|
314
|
+
RELEASE: ${github-release.releaseURL}
|
|
315
|
+
|
|
316
|
+
TASKS:
|
|
317
|
+
1. Wait for GitHub Actions workflow to start (10-15 seconds)
|
|
318
|
+
2. Get latest workflow run ID: gh run list --limit 1
|
|
319
|
+
3. Monitor workflow status: gh run view <run-id>
|
|
320
|
+
4. Wait for workflow completion or timeout (15 minutes)
|
|
321
|
+
5. Report final status
|
|
322
|
+
|
|
323
|
+
EXPECTED WORKFLOW:
|
|
324
|
+
- Build and test
|
|
325
|
+
- Publish to npm
|
|
326
|
+
- Create npm release
|
|
327
|
+
|
|
328
|
+
OUTPUT:
|
|
329
|
+
- Workflow status (pending/running/completed/failed)
|
|
330
|
+
- Workflow URL
|
|
331
|
+
- npm publish status
|
|
332
|
+
- Any errors or warnings
|
|
333
|
+
timeout: 1200000 # 20 minutes
|
|
334
|
+
saveToMemory: true
|
|
335
|
+
dependencies: [github-release]
|
|
336
|
+
|
|
337
|
+
# Observability
|
|
338
|
+
observability:
|
|
339
|
+
metrics:
|
|
340
|
+
enabled: true
|
|
341
|
+
labels:
|
|
342
|
+
project: automatosx
|
|
343
|
+
workflow: release
|
|
344
|
+
type: automation
|
|
345
|
+
|
|
346
|
+
audit:
|
|
347
|
+
enabled: true
|
|
348
|
+
retention: 90 # 90 days
|
|
349
|
+
|
|
350
|
+
tracing:
|
|
351
|
+
enabled: true
|
|
352
|
+
samplingRate: 1.0 # Capture all release executions
|
|
353
|
+
|
|
354
|
+
# Retry and error handling
|
|
355
|
+
execution:
|
|
356
|
+
parallel: false # Sequential execution
|
|
357
|
+
continueOnError: false # Stop on first error
|
|
358
|
+
|
|
359
|
+
retry:
|
|
360
|
+
enabled: true
|
|
361
|
+
maxRetries: 2
|
|
362
|
+
backoffMs: 5000
|
|
363
|
+
|
|
364
|
+
# Expected outputs
|
|
365
|
+
outputs:
|
|
366
|
+
version:
|
|
367
|
+
description: "Released version number"
|
|
368
|
+
from: version-bump.newVersion
|
|
369
|
+
|
|
370
|
+
releaseURL:
|
|
371
|
+
description: "GitHub release URL"
|
|
372
|
+
from: github-release.releaseURL
|
|
373
|
+
|
|
374
|
+
npmURL:
|
|
375
|
+
description: "npm package URL"
|
|
376
|
+
value: "https://www.npmjs.com/package/@defai.digital/automatosx"
|
|
377
|
+
|
|
378
|
+
status:
|
|
379
|
+
description: "Overall release status"
|
|
380
|
+
from: cicd-monitor.workflowStatus
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defai.digital/automatosx",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.6",
|
|
4
4
|
"description": "AI Agent Orchestration Platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -51,10 +51,12 @@
|
|
|
51
51
|
"check:timers": "bash tools/check-timer-cleanup.sh",
|
|
52
52
|
"prepare": "[ -n \"$CI\" ] || husky",
|
|
53
53
|
"commit": "cz",
|
|
54
|
-
"release": "
|
|
55
|
-
"release:
|
|
56
|
-
"release:
|
|
57
|
-
"release:
|
|
54
|
+
"release": "node tools/release.js",
|
|
55
|
+
"release:patch": "node tools/release.js patch",
|
|
56
|
+
"release:minor": "node tools/release.js minor",
|
|
57
|
+
"release:major": "node tools/release.js major",
|
|
58
|
+
"release:spec": "ax spec run examples/specs/automatosx-release.ax.yaml",
|
|
59
|
+
"release:standard": "standard-version",
|
|
58
60
|
"release:beta": "standard-version --prerelease beta",
|
|
59
61
|
"release:rc": "standard-version --prerelease rc",
|
|
60
62
|
"release:first": "standard-version --first-release"
|