@howlil/ez-agents 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +157 -110
- package/README.zh-CN.md +84 -84
- package/agents/ez-plan-checker.md +2 -2
- package/agents/ez-research-synthesizer.md +1 -1
- package/agents/ez-ui-auditor.md +0 -2
- package/agents/ez-ui-checker.md +2 -4
- package/agents/ez-ui-researcher.md +0 -2
- package/agents/ez-verifier.md +1 -1
- package/bin/install.js +211 -211
- package/commands/ez/debug.md +1 -1
- package/commands/ez/map-codebase.md +1 -1
- package/commands/ez/reapply-patches.md +3 -3
- package/commands/ez/research-phase.md +1 -1
- package/{get-shit-done → ez-agents}/bin/ez-tools.cjs +1 -1
- package/{get-shit-done → ez-agents}/bin/lib/assistant-adapter.cjs +205 -205
- package/{get-shit-done → ez-agents}/bin/lib/audit-exec.cjs +150 -150
- package/{get-shit-done → ez-agents}/bin/lib/auth.cjs +175 -175
- package/{get-shit-done → ez-agents}/bin/lib/circuit-breaker.cjs +118 -118
- package/{get-shit-done → ez-agents}/bin/lib/commands.cjs +666 -666
- package/{get-shit-done → ez-agents}/bin/lib/config.cjs +183 -183
- package/{get-shit-done → ez-agents}/bin/lib/core.cjs +495 -495
- package/{get-shit-done → ez-agents}/bin/lib/file-lock.cjs +236 -236
- package/{get-shit-done → ez-agents}/bin/lib/frontmatter.cjs +299 -299
- package/{get-shit-done → ez-agents}/bin/lib/fs-utils.cjs +153 -153
- package/{get-shit-done → ez-agents}/bin/lib/git-utils.cjs +203 -203
- package/{get-shit-done → ez-agents}/bin/lib/health-check.cjs +163 -163
- package/{get-shit-done → ez-agents}/bin/lib/index.cjs +113 -113
- package/{get-shit-done → ez-agents}/bin/lib/init.cjs +710 -710
- package/{get-shit-done → ez-agents}/bin/lib/logger.cjs +117 -117
- package/{get-shit-done → ez-agents}/bin/lib/milestone.cjs +241 -241
- package/{get-shit-done → ez-agents}/bin/lib/model-provider.cjs +146 -146
- package/{get-shit-done → ez-agents}/bin/lib/phase.cjs +908 -908
- package/{get-shit-done → ez-agents}/bin/lib/retry.cjs +119 -119
- package/{get-shit-done → ez-agents}/bin/lib/roadmap.cjs +305 -305
- package/{get-shit-done → ez-agents}/bin/lib/safe-exec.cjs +128 -128
- package/{get-shit-done → ez-agents}/bin/lib/safe-path.cjs +130 -130
- package/{get-shit-done → ez-agents}/bin/lib/state.cjs +721 -721
- package/{get-shit-done → ez-agents}/bin/lib/temp-file.cjs +239 -239
- package/{get-shit-done → ez-agents}/bin/lib/template.cjs +222 -222
- package/{get-shit-done → ez-agents}/bin/lib/test-file-lock.cjs +112 -112
- package/{get-shit-done → ez-agents}/bin/lib/test-graceful.cjs +93 -93
- package/{get-shit-done → ez-agents}/bin/lib/test-logger.cjs +60 -60
- package/{get-shit-done → ez-agents}/bin/lib/test-safe-exec.cjs +38 -38
- package/{get-shit-done → ez-agents}/bin/lib/test-safe-path.cjs +33 -33
- package/{get-shit-done → ez-agents}/bin/lib/test-temp-file.cjs +125 -125
- package/{get-shit-done → ez-agents}/bin/lib/timeout-exec.cjs +62 -62
- package/{get-shit-done → ez-agents}/bin/lib/verify.cjs +820 -820
- package/{get-shit-done → ez-agents}/references/checkpoints.md +776 -776
- package/{get-shit-done → ez-agents}/references/questioning.md +162 -162
- package/{get-shit-done → ez-agents}/references/tdd.md +263 -263
- package/{get-shit-done → ez-agents}/templates/codebase/concerns.md +310 -310
- package/{get-shit-done → ez-agents}/templates/codebase/conventions.md +307 -307
- package/{get-shit-done → ez-agents}/templates/codebase/integrations.md +280 -280
- package/{get-shit-done → ez-agents}/templates/codebase/stack.md +186 -186
- package/{get-shit-done → ez-agents}/templates/codebase/testing.md +480 -480
- package/{get-shit-done → ez-agents}/templates/config.json +37 -37
- package/{get-shit-done → ez-agents}/templates/continue-here.md +78 -78
- package/{get-shit-done → ez-agents}/templates/milestone-archive.md +123 -123
- package/{get-shit-done → ez-agents}/templates/milestone.md +115 -115
- package/{get-shit-done → ez-agents}/templates/requirements.md +231 -231
- package/{get-shit-done → ez-agents}/templates/research-project/ARCHITECTURE.md +204 -204
- package/{get-shit-done → ez-agents}/templates/research-project/FEATURES.md +147 -147
- package/{get-shit-done → ez-agents}/templates/research-project/PITFALLS.md +200 -200
- package/{get-shit-done → ez-agents}/templates/research-project/STACK.md +120 -120
- package/{get-shit-done → ez-agents}/templates/research-project/SUMMARY.md +170 -170
- package/{get-shit-done → ez-agents}/templates/retrospective.md +54 -54
- package/{get-shit-done → ez-agents}/templates/roadmap.md +202 -202
- package/{get-shit-done → ez-agents}/templates/summary-minimal.md +41 -41
- package/{get-shit-done → ez-agents}/templates/summary-standard.md +48 -48
- package/{get-shit-done → ez-agents}/templates/summary.md +248 -248
- package/{get-shit-done → ez-agents}/templates/user-setup.md +311 -311
- package/{get-shit-done → ez-agents}/templates/verification-report.md +322 -322
- package/{get-shit-done → ez-agents}/workflows/add-phase.md +112 -112
- package/{get-shit-done → ez-agents}/workflows/add-tests.md +351 -351
- package/{get-shit-done → ez-agents}/workflows/add-todo.md +158 -158
- package/{get-shit-done → ez-agents}/workflows/audit-milestone.md +332 -332
- package/{get-shit-done → ez-agents}/workflows/autonomous.md +743 -743
- package/{get-shit-done → ez-agents}/workflows/check-todos.md +177 -177
- package/{get-shit-done → ez-agents}/workflows/cleanup.md +152 -152
- package/{get-shit-done → ez-agents}/workflows/complete-milestone.md +766 -766
- package/ez-agents/workflows/debug.md +0 -0
- package/{get-shit-done → ez-agents}/workflows/diagnose-issues.md +219 -219
- package/{get-shit-done → ez-agents}/workflows/discovery-phase.md +289 -289
- package/{get-shit-done → ez-agents}/workflows/discuss-phase.md +762 -762
- package/{get-shit-done → ez-agents}/workflows/execute-phase.md +468 -468
- package/{get-shit-done → ez-agents}/workflows/execute-plan.md +483 -483
- package/{get-shit-done → ez-agents}/workflows/health.md +159 -159
- package/{get-shit-done → ez-agents}/workflows/help.md +492 -492
- package/{get-shit-done → ez-agents}/workflows/insert-phase.md +130 -130
- package/{get-shit-done → ez-agents}/workflows/list-phase-assumptions.md +178 -178
- package/{get-shit-done → ez-agents}/workflows/map-codebase.md +316 -316
- package/{get-shit-done → ez-agents}/workflows/new-milestone.md +384 -384
- package/{get-shit-done → ez-agents}/workflows/new-project.md +1111 -1111
- package/{get-shit-done → ez-agents}/workflows/node-repair.md +92 -92
- package/{get-shit-done → ez-agents}/workflows/pause-work.md +122 -122
- package/{get-shit-done → ez-agents}/workflows/plan-milestone-gaps.md +274 -274
- package/{get-shit-done → ez-agents}/workflows/plan-phase.md +651 -651
- package/{get-shit-done → ez-agents}/workflows/progress.md +382 -382
- package/{get-shit-done → ez-agents}/workflows/quick.md +610 -610
- package/{get-shit-done → ez-agents}/workflows/remove-phase.md +155 -155
- package/{get-shit-done → ez-agents}/workflows/research-phase.md +74 -74
- package/{get-shit-done → ez-agents}/workflows/resume-project.md +307 -307
- package/{get-shit-done → ez-agents}/workflows/set-profile.md +81 -81
- package/{get-shit-done → ez-agents}/workflows/settings.md +242 -242
- package/{get-shit-done → ez-agents}/workflows/stats.md +57 -57
- package/{get-shit-done → ez-agents}/workflows/transition.md +544 -544
- package/{get-shit-done → ez-agents}/workflows/ui-phase.md +290 -290
- package/{get-shit-done → ez-agents}/workflows/ui-review.md +157 -157
- package/{get-shit-done → ez-agents}/workflows/update.md +320 -320
- package/{get-shit-done → ez-agents}/workflows/validate-phase.md +167 -167
- package/{get-shit-done → ez-agents}/workflows/verify-phase.md +243 -243
- package/{get-shit-done → ez-agents}/workflows/verify-work.md +5 -5
- package/hooks/dist/ez-check-update.js +81 -0
- package/hooks/dist/ez-context-monitor.js +141 -0
- package/hooks/dist/ez-statusline.js +115 -0
- package/package.json +13 -3
- package/scripts/build-hooks.js +43 -43
- package/scripts/run-tests.cjs +29 -29
- /package/{get-shit-done → ez-agents}/references/continuation-format.md +0 -0
- /package/{get-shit-done → ez-agents}/references/decimal-phase-calculation.md +0 -0
- /package/{get-shit-done → ez-agents}/references/git-integration.md +0 -0
- /package/{get-shit-done → ez-agents}/references/git-planning-commit.md +0 -0
- /package/{get-shit-done → ez-agents}/references/model-profile-resolution.md +0 -0
- /package/{get-shit-done → ez-agents}/references/model-profiles.md +0 -0
- /package/{get-shit-done → ez-agents}/references/phase-argument-parsing.md +0 -0
- /package/{get-shit-done → ez-agents}/references/planning-config.md +0 -0
- /package/{get-shit-done → ez-agents}/references/ui-brand.md +0 -0
- /package/{get-shit-done → ez-agents}/references/verification-patterns.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/DEBUG.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/UAT.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/UI-SPEC.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/VALIDATION.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/codebase/architecture.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/codebase/structure.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/context.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/copilot-instructions.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/debug-subagent-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/discovery.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/phase-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/planner-subagent-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/project.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/research.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/state.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/summary-complex.md +0 -0
|
@@ -1,163 +1,163 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* GSD Health Check — Health monitoring for GSD workflow
|
|
5
|
-
*
|
|
6
|
-
* Validates GSD environment and configuration
|
|
7
|
-
* Used by workflows to detect failures and use fallback functions
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* const HealthCheck = require('./health-check.cjs');
|
|
11
|
-
* const health = new HealthCheck();
|
|
12
|
-
* const result = health.runAll();
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const fs = require('fs');
|
|
16
|
-
const path = require('path');
|
|
17
|
-
const { execSync } = require('child_process');
|
|
18
|
-
|
|
19
|
-
class HealthCheck {
|
|
20
|
-
/**
|
|
21
|
-
* Create a HealthCheck instance
|
|
22
|
-
*/
|
|
23
|
-
constructor() {
|
|
24
|
-
this.issues = [];
|
|
25
|
-
this.warnings = [];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Check Node.js version (must be >= 16)
|
|
30
|
-
* @returns {boolean} - True if version is acceptable
|
|
31
|
-
*/
|
|
32
|
-
checkNodeVersion() {
|
|
33
|
-
try {
|
|
34
|
-
const version = process.version;
|
|
35
|
-
const major = parseInt(version.slice(1).split('.')[0]);
|
|
36
|
-
if (major < 16) {
|
|
37
|
-
this.issues.push(`Node.js version ${version} is below required 16.x`);
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
return true;
|
|
41
|
-
} catch (err) {
|
|
42
|
-
this.issues.push('Cannot determine Node.js version');
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Check if .planning directory exists
|
|
49
|
-
* @returns {boolean} - True if exists
|
|
50
|
-
*/
|
|
51
|
-
checkPlanningDirectory() {
|
|
52
|
-
const planningDir = '.planning';
|
|
53
|
-
if (!fs.existsSync(planningDir)) {
|
|
54
|
-
this.warnings.push('.planning directory does not exist');
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Check if config.json exists and is valid JSON
|
|
62
|
-
* @returns {boolean} - True if exists and valid
|
|
63
|
-
*/
|
|
64
|
-
checkConfigFile() {
|
|
65
|
-
const configPath = '.planning/config.json';
|
|
66
|
-
if (!fs.existsSync(configPath)) {
|
|
67
|
-
this.warnings.push('config.json not found');
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
72
|
-
return true;
|
|
73
|
-
} catch (err) {
|
|
74
|
-
this.issues.push('config.json is invalid JSON');
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Check if STATE.md exists
|
|
81
|
-
* @returns {boolean} - True if exists
|
|
82
|
-
*/
|
|
83
|
-
checkStateFile() {
|
|
84
|
-
const statePath = '.planning/STATE.md';
|
|
85
|
-
if (!fs.existsSync(statePath)) {
|
|
86
|
-
this.warnings.push('STATE.md not found');
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Check if ROADMAP.md exists
|
|
94
|
-
* @returns {boolean} - True if exists
|
|
95
|
-
*/
|
|
96
|
-
checkRoadmapFile() {
|
|
97
|
-
const roadmapPath = '.planning/ROADMAP.md';
|
|
98
|
-
if (!fs.existsSync(roadmapPath)) {
|
|
99
|
-
this.warnings.push('ROADMAP.md not found');
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Check if PROJECT.md exists
|
|
107
|
-
* @returns {boolean} - True if exists
|
|
108
|
-
*/
|
|
109
|
-
checkProjectFile() {
|
|
110
|
-
const projectPath = '.planning/PROJECT.md';
|
|
111
|
-
if (!fs.existsSync(projectPath)) {
|
|
112
|
-
this.warnings.push('PROJECT.md not found');
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Check if REQUIREMENTS.md exists
|
|
120
|
-
* @returns {boolean} - True if exists
|
|
121
|
-
*/
|
|
122
|
-
checkRequirementsFile() {
|
|
123
|
-
const reqPath = '.planning/REQUIREMENTS.md';
|
|
124
|
-
if (!fs.existsSync(reqPath)) {
|
|
125
|
-
this.warnings.push('REQUIREMENTS.md not found');
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Run all health checks
|
|
133
|
-
* @returns {Object} - Health status object
|
|
134
|
-
*/
|
|
135
|
-
runAll() {
|
|
136
|
-
const results = {
|
|
137
|
-
status: 'healthy',
|
|
138
|
-
timestamp: new Date().toISOString(),
|
|
139
|
-
node_version: process.version,
|
|
140
|
-
checks: {
|
|
141
|
-
node_version: this.checkNodeVersion(),
|
|
142
|
-
planning_dir: this.checkPlanningDirectory(),
|
|
143
|
-
config_file: this.checkConfigFile(),
|
|
144
|
-
state_file: this.checkStateFile(),
|
|
145
|
-
roadmap_file: this.checkRoadmapFile(),
|
|
146
|
-
project_file: this.checkProjectFile(),
|
|
147
|
-
requirements_file: this.checkRequirementsFile()
|
|
148
|
-
},
|
|
149
|
-
issues: this.issues,
|
|
150
|
-
warnings: this.warnings
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
if (this.issues.length > 0) {
|
|
154
|
-
results.status = 'unhealthy';
|
|
155
|
-
} else if (this.warnings.length > 0) {
|
|
156
|
-
results.status = 'degraded';
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return results;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
module.exports = HealthCheck;
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GSD Health Check — Health monitoring for GSD workflow
|
|
5
|
+
*
|
|
6
|
+
* Validates GSD environment and configuration
|
|
7
|
+
* Used by workflows to detect failures and use fallback functions
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const HealthCheck = require('./health-check.cjs');
|
|
11
|
+
* const health = new HealthCheck();
|
|
12
|
+
* const result = health.runAll();
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
const { execSync } = require('child_process');
|
|
18
|
+
|
|
19
|
+
class HealthCheck {
|
|
20
|
+
/**
|
|
21
|
+
* Create a HealthCheck instance
|
|
22
|
+
*/
|
|
23
|
+
constructor() {
|
|
24
|
+
this.issues = [];
|
|
25
|
+
this.warnings = [];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Check Node.js version (must be >= 16)
|
|
30
|
+
* @returns {boolean} - True if version is acceptable
|
|
31
|
+
*/
|
|
32
|
+
checkNodeVersion() {
|
|
33
|
+
try {
|
|
34
|
+
const version = process.version;
|
|
35
|
+
const major = parseInt(version.slice(1).split('.')[0]);
|
|
36
|
+
if (major < 16) {
|
|
37
|
+
this.issues.push(`Node.js version ${version} is below required 16.x`);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
} catch (err) {
|
|
42
|
+
this.issues.push('Cannot determine Node.js version');
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Check if .planning directory exists
|
|
49
|
+
* @returns {boolean} - True if exists
|
|
50
|
+
*/
|
|
51
|
+
checkPlanningDirectory() {
|
|
52
|
+
const planningDir = '.planning';
|
|
53
|
+
if (!fs.existsSync(planningDir)) {
|
|
54
|
+
this.warnings.push('.planning directory does not exist');
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Check if config.json exists and is valid JSON
|
|
62
|
+
* @returns {boolean} - True if exists and valid
|
|
63
|
+
*/
|
|
64
|
+
checkConfigFile() {
|
|
65
|
+
const configPath = '.planning/config.json';
|
|
66
|
+
if (!fs.existsSync(configPath)) {
|
|
67
|
+
this.warnings.push('config.json not found');
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
72
|
+
return true;
|
|
73
|
+
} catch (err) {
|
|
74
|
+
this.issues.push('config.json is invalid JSON');
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Check if STATE.md exists
|
|
81
|
+
* @returns {boolean} - True if exists
|
|
82
|
+
*/
|
|
83
|
+
checkStateFile() {
|
|
84
|
+
const statePath = '.planning/STATE.md';
|
|
85
|
+
if (!fs.existsSync(statePath)) {
|
|
86
|
+
this.warnings.push('STATE.md not found');
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Check if ROADMAP.md exists
|
|
94
|
+
* @returns {boolean} - True if exists
|
|
95
|
+
*/
|
|
96
|
+
checkRoadmapFile() {
|
|
97
|
+
const roadmapPath = '.planning/ROADMAP.md';
|
|
98
|
+
if (!fs.existsSync(roadmapPath)) {
|
|
99
|
+
this.warnings.push('ROADMAP.md not found');
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Check if PROJECT.md exists
|
|
107
|
+
* @returns {boolean} - True if exists
|
|
108
|
+
*/
|
|
109
|
+
checkProjectFile() {
|
|
110
|
+
const projectPath = '.planning/PROJECT.md';
|
|
111
|
+
if (!fs.existsSync(projectPath)) {
|
|
112
|
+
this.warnings.push('PROJECT.md not found');
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Check if REQUIREMENTS.md exists
|
|
120
|
+
* @returns {boolean} - True if exists
|
|
121
|
+
*/
|
|
122
|
+
checkRequirementsFile() {
|
|
123
|
+
const reqPath = '.planning/REQUIREMENTS.md';
|
|
124
|
+
if (!fs.existsSync(reqPath)) {
|
|
125
|
+
this.warnings.push('REQUIREMENTS.md not found');
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Run all health checks
|
|
133
|
+
* @returns {Object} - Health status object
|
|
134
|
+
*/
|
|
135
|
+
runAll() {
|
|
136
|
+
const results = {
|
|
137
|
+
status: 'healthy',
|
|
138
|
+
timestamp: new Date().toISOString(),
|
|
139
|
+
node_version: process.version,
|
|
140
|
+
checks: {
|
|
141
|
+
node_version: this.checkNodeVersion(),
|
|
142
|
+
planning_dir: this.checkPlanningDirectory(),
|
|
143
|
+
config_file: this.checkConfigFile(),
|
|
144
|
+
state_file: this.checkStateFile(),
|
|
145
|
+
roadmap_file: this.checkRoadmapFile(),
|
|
146
|
+
project_file: this.checkProjectFile(),
|
|
147
|
+
requirements_file: this.checkRequirementsFile()
|
|
148
|
+
},
|
|
149
|
+
issues: this.issues,
|
|
150
|
+
warnings: this.warnings
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
if (this.issues.length > 0) {
|
|
154
|
+
results.status = 'unhealthy';
|
|
155
|
+
} else if (this.warnings.length > 0) {
|
|
156
|
+
results.status = 'degraded';
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return results;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
module.exports = HealthCheck;
|
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* GSD Lib Index — Central export for all GSD libraries
|
|
5
|
-
*
|
|
6
|
-
* Provides single import point for all utility modules.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* const lib = require('./index.cjs');
|
|
10
|
-
* const logger = new lib.Logger();
|
|
11
|
-
* const git = new lib.GitUtils(process.cwd());
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
const path = require('path');
|
|
15
|
-
const fs = require('fs');
|
|
16
|
-
|
|
17
|
-
// Core utilities
|
|
18
|
-
const Logger = require('./logger.cjs');
|
|
19
|
-
const LoggerInstance = new Logger();
|
|
20
|
-
|
|
21
|
-
// File system
|
|
22
|
-
const fsUtils = require('./fs-utils.cjs');
|
|
23
|
-
|
|
24
|
-
// Security
|
|
25
|
-
const safeExec = require('./safe-exec.cjs');
|
|
26
|
-
const safePath = require('./safe-path.cjs');
|
|
27
|
-
const auth = require('./auth.cjs');
|
|
28
|
-
const auditExec = require('./audit-exec.cjs');
|
|
29
|
-
|
|
30
|
-
// Git
|
|
31
|
-
const GitUtils = require('./git-utils.cjs');
|
|
32
|
-
|
|
33
|
-
// Reliability
|
|
34
|
-
const retry = require('./retry.cjs');
|
|
35
|
-
const CircuitBreaker = require('./circuit-breaker.cjs');
|
|
36
|
-
|
|
37
|
-
// Concurrency
|
|
38
|
-
const fileLock = require('./file-lock.cjs');
|
|
39
|
-
const tempFile = require('./temp-file.cjs');
|
|
40
|
-
|
|
41
|
-
// Health & Testing
|
|
42
|
-
const healthCheck = require('./health-check.cjs');
|
|
43
|
-
const timeoutExec = require('./timeout-exec.cjs');
|
|
44
|
-
|
|
45
|
-
// Multi-model
|
|
46
|
-
const modelProvider = require('./model-provider.cjs');
|
|
47
|
-
|
|
48
|
-
// Adapters
|
|
49
|
-
const assistantAdapter = require('./assistant-adapter.cjs');
|
|
50
|
-
|
|
51
|
-
module.exports = {
|
|
52
|
-
// Core
|
|
53
|
-
Logger,
|
|
54
|
-
logger: LoggerInstance,
|
|
55
|
-
|
|
56
|
-
// File system
|
|
57
|
-
...fsUtils,
|
|
58
|
-
|
|
59
|
-
// Security
|
|
60
|
-
...safeExec,
|
|
61
|
-
...safePath,
|
|
62
|
-
...auth,
|
|
63
|
-
...auditExec,
|
|
64
|
-
|
|
65
|
-
// Git
|
|
66
|
-
GitUtils,
|
|
67
|
-
|
|
68
|
-
// Reliability
|
|
69
|
-
...retry,
|
|
70
|
-
CircuitBreaker,
|
|
71
|
-
|
|
72
|
-
// Concurrency
|
|
73
|
-
...fileLock,
|
|
74
|
-
...tempFile,
|
|
75
|
-
|
|
76
|
-
// Health & Testing
|
|
77
|
-
...healthCheck,
|
|
78
|
-
...timeoutExec,
|
|
79
|
-
|
|
80
|
-
// Multi-model
|
|
81
|
-
...modelProvider,
|
|
82
|
-
|
|
83
|
-
// Adapters
|
|
84
|
-
...assistantAdapter,
|
|
85
|
-
|
|
86
|
-
// Version info
|
|
87
|
-
version: '2.0.0',
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Get health status of all modules
|
|
91
|
-
*/
|
|
92
|
-
getHealthStatus() {
|
|
93
|
-
return {
|
|
94
|
-
version: this.version,
|
|
95
|
-
nodeVersion: process.version,
|
|
96
|
-
platform: process.platform,
|
|
97
|
-
modules: {
|
|
98
|
-
logger: 'ok',
|
|
99
|
-
fsUtils: 'ok',
|
|
100
|
-
safeExec: 'ok',
|
|
101
|
-
safePath: 'ok',
|
|
102
|
-
auth: auth.isKeychainAvailable() ? 'keychain' : 'fallback',
|
|
103
|
-
gitUtils: 'ok',
|
|
104
|
-
retry: 'ok',
|
|
105
|
-
circuitBreaker: 'ok',
|
|
106
|
-
fileLock: 'ok',
|
|
107
|
-
tempFile: 'ok',
|
|
108
|
-
modelProvider: 'ok',
|
|
109
|
-
assistantAdapter: 'ok'
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
};
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GSD Lib Index — Central export for all GSD libraries
|
|
5
|
+
*
|
|
6
|
+
* Provides single import point for all utility modules.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const lib = require('./index.cjs');
|
|
10
|
+
* const logger = new lib.Logger();
|
|
11
|
+
* const git = new lib.GitUtils(process.cwd());
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const path = require('path');
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
|
|
17
|
+
// Core utilities
|
|
18
|
+
const Logger = require('./logger.cjs');
|
|
19
|
+
const LoggerInstance = new Logger();
|
|
20
|
+
|
|
21
|
+
// File system
|
|
22
|
+
const fsUtils = require('./fs-utils.cjs');
|
|
23
|
+
|
|
24
|
+
// Security
|
|
25
|
+
const safeExec = require('./safe-exec.cjs');
|
|
26
|
+
const safePath = require('./safe-path.cjs');
|
|
27
|
+
const auth = require('./auth.cjs');
|
|
28
|
+
const auditExec = require('./audit-exec.cjs');
|
|
29
|
+
|
|
30
|
+
// Git
|
|
31
|
+
const GitUtils = require('./git-utils.cjs');
|
|
32
|
+
|
|
33
|
+
// Reliability
|
|
34
|
+
const retry = require('./retry.cjs');
|
|
35
|
+
const CircuitBreaker = require('./circuit-breaker.cjs');
|
|
36
|
+
|
|
37
|
+
// Concurrency
|
|
38
|
+
const fileLock = require('./file-lock.cjs');
|
|
39
|
+
const tempFile = require('./temp-file.cjs');
|
|
40
|
+
|
|
41
|
+
// Health & Testing
|
|
42
|
+
const healthCheck = require('./health-check.cjs');
|
|
43
|
+
const timeoutExec = require('./timeout-exec.cjs');
|
|
44
|
+
|
|
45
|
+
// Multi-model
|
|
46
|
+
const modelProvider = require('./model-provider.cjs');
|
|
47
|
+
|
|
48
|
+
// Adapters
|
|
49
|
+
const assistantAdapter = require('./assistant-adapter.cjs');
|
|
50
|
+
|
|
51
|
+
module.exports = {
|
|
52
|
+
// Core
|
|
53
|
+
Logger,
|
|
54
|
+
logger: LoggerInstance,
|
|
55
|
+
|
|
56
|
+
// File system
|
|
57
|
+
...fsUtils,
|
|
58
|
+
|
|
59
|
+
// Security
|
|
60
|
+
...safeExec,
|
|
61
|
+
...safePath,
|
|
62
|
+
...auth,
|
|
63
|
+
...auditExec,
|
|
64
|
+
|
|
65
|
+
// Git
|
|
66
|
+
GitUtils,
|
|
67
|
+
|
|
68
|
+
// Reliability
|
|
69
|
+
...retry,
|
|
70
|
+
CircuitBreaker,
|
|
71
|
+
|
|
72
|
+
// Concurrency
|
|
73
|
+
...fileLock,
|
|
74
|
+
...tempFile,
|
|
75
|
+
|
|
76
|
+
// Health & Testing
|
|
77
|
+
...healthCheck,
|
|
78
|
+
...timeoutExec,
|
|
79
|
+
|
|
80
|
+
// Multi-model
|
|
81
|
+
...modelProvider,
|
|
82
|
+
|
|
83
|
+
// Adapters
|
|
84
|
+
...assistantAdapter,
|
|
85
|
+
|
|
86
|
+
// Version info
|
|
87
|
+
version: '2.0.0',
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Get health status of all modules
|
|
91
|
+
*/
|
|
92
|
+
getHealthStatus() {
|
|
93
|
+
return {
|
|
94
|
+
version: this.version,
|
|
95
|
+
nodeVersion: process.version,
|
|
96
|
+
platform: process.platform,
|
|
97
|
+
modules: {
|
|
98
|
+
logger: 'ok',
|
|
99
|
+
fsUtils: 'ok',
|
|
100
|
+
safeExec: 'ok',
|
|
101
|
+
safePath: 'ok',
|
|
102
|
+
auth: auth.isKeychainAvailable() ? 'keychain' : 'fallback',
|
|
103
|
+
gitUtils: 'ok',
|
|
104
|
+
retry: 'ok',
|
|
105
|
+
circuitBreaker: 'ok',
|
|
106
|
+
fileLock: 'ok',
|
|
107
|
+
tempFile: 'ok',
|
|
108
|
+
modelProvider: 'ok',
|
|
109
|
+
assistantAdapter: 'ok'
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
};
|