@gravirei/reis 2.6.1 → 2.6.2
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 +18 -0
- package/lib/install.js +29 -14
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.6.2] - 2026-01-26
|
|
4
|
+
|
|
5
|
+
### 🐛 Critical Bug Fix
|
|
6
|
+
|
|
7
|
+
#### Subagents Not Installed/Updated on `npm install`
|
|
8
|
+
- **Added `postinstall` script** to automatically install REIS files when package is installed
|
|
9
|
+
- **Subagents now always update** to latest version (previously skipped if files existed)
|
|
10
|
+
- **Fixed missing `reis_plan_reviewer.md`** subagent not being installed
|
|
11
|
+
- Added `--silent` flag support for clean postinstall output
|
|
12
|
+
|
|
13
|
+
### 📦 What Changed
|
|
14
|
+
|
|
15
|
+
- `npm install -g @gravirei/reis` now automatically installs all subagents
|
|
16
|
+
- Subagent files are always overwritten to stay in sync with package version
|
|
17
|
+
- Silent mode: no output during `npm install` (cleaner experience)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
3
21
|
## [2.6.1] - 2026-01-26
|
|
4
22
|
|
|
5
23
|
### 🐛 Bug Fixes
|
package/lib/install.js
CHANGED
|
@@ -19,7 +19,8 @@ ${chalk.white.bold(' ██ ██ ███████ ██ ████
|
|
|
19
19
|
`;
|
|
20
20
|
|
|
21
21
|
// Check if running in CI environment or sudo (where stdin is not available)
|
|
22
|
-
const
|
|
22
|
+
const isSilentMode = process.argv.includes('--silent');
|
|
23
|
+
const isCIEnvironment = process.env.CI === 'true' || isSilentMode;
|
|
23
24
|
const isSudo = process.getuid && process.getuid() === 0;
|
|
24
25
|
// Check if stdin is actually readable (not just isTTY)
|
|
25
26
|
const hasInteractiveStdin = process.stdin.isTTY && !process.stdin.destroyed && typeof process.stdin.read === 'function';
|
|
@@ -28,29 +29,39 @@ const isInteractive = !isCIEnvironment && !isSudo && hasInteractiveStdin;
|
|
|
28
29
|
// Main installation function
|
|
29
30
|
async function install() {
|
|
30
31
|
try {
|
|
31
|
-
//
|
|
32
|
-
|
|
32
|
+
// Show banner unless in silent mode
|
|
33
|
+
if (!isSilentMode) {
|
|
34
|
+
console.log(banner);
|
|
35
|
+
}
|
|
33
36
|
|
|
34
37
|
// Check for non-interactive modes
|
|
35
38
|
if (isCIEnvironment) {
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
if (!isSilentMode) {
|
|
40
|
+
console.log(chalk.gray('Running in CI mode - installing automatically...\n'));
|
|
41
|
+
}
|
|
42
|
+
await performInstallation(false, isSilentMode);
|
|
38
43
|
return;
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
if (isSudo) {
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
if (!isSilentMode) {
|
|
48
|
+
console.log(chalk.gray('Running with sudo - installing automatically...\n'));
|
|
49
|
+
}
|
|
50
|
+
await performInstallation(false, isSilentMode);
|
|
44
51
|
return;
|
|
45
52
|
}
|
|
46
53
|
|
|
47
54
|
// Interactive mode - show prompt
|
|
48
|
-
|
|
55
|
+
if (!isSilentMode) {
|
|
56
|
+
console.log(chalk.white('This will install REIS files to ~/.rovodev/reis/\n'));
|
|
57
|
+
}
|
|
49
58
|
|
|
50
59
|
// Double-check we can actually prompt
|
|
51
60
|
if (!isInteractive) {
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
if (!isSilentMode) {
|
|
62
|
+
console.log(chalk.gray('Non-interactive mode detected - installing automatically...\n'));
|
|
63
|
+
}
|
|
64
|
+
await performInstallation(false, isSilentMode);
|
|
54
65
|
return;
|
|
55
66
|
}
|
|
56
67
|
|
|
@@ -71,11 +82,13 @@ async function install() {
|
|
|
71
82
|
}
|
|
72
83
|
|
|
73
84
|
console.log('');
|
|
74
|
-
await performInstallation();
|
|
85
|
+
await performInstallation(false, false);
|
|
75
86
|
} catch (promptError) {
|
|
76
87
|
// inquirer failed, install anyway
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
if (!isSilentMode) {
|
|
89
|
+
console.log(chalk.gray('Prompt failed - installing automatically...\n'));
|
|
90
|
+
}
|
|
91
|
+
await performInstallation(false, isSilentMode);
|
|
79
92
|
}
|
|
80
93
|
|
|
81
94
|
} catch (error) {
|
|
@@ -124,13 +137,15 @@ async function performInstallation(overwrite = false, silent = false) {
|
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
// Copy subagents from subagents/ to ~/.rovodev/subagents/
|
|
140
|
+
// ALWAYS overwrite subagents - they should stay up-to-date with package version
|
|
127
141
|
const subagentsSourceDir = path.join(packageDir, 'subagents');
|
|
128
142
|
if (fs.existsSync(subagentsSourceDir)) {
|
|
129
143
|
const subagentFiles = fs.readdirSync(subagentsSourceDir);
|
|
130
144
|
subagentFiles.forEach(file => {
|
|
131
145
|
const src = path.join(subagentsSourceDir, file);
|
|
132
146
|
const dest = path.join(subagentsDir, file);
|
|
133
|
-
|
|
147
|
+
// Always overwrite subagent files to ensure they're up-to-date
|
|
148
|
+
if (copyFile(src, dest, true)) {
|
|
134
149
|
fileCount++;
|
|
135
150
|
}
|
|
136
151
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravirei/reis",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Roadmap Execution & Implementation System v2.0 - Wave-based execution with checkpoints, metrics, and visualization for Atlassian Rovo Dev",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "mocha test/**/*.test.js --timeout 5000",
|
|
11
|
-
"test:watch": "mocha test/**/*.test.js --watch"
|
|
11
|
+
"test:watch": "mocha test/**/*.test.js --watch",
|
|
12
|
+
"postinstall": "node lib/install.js --silent"
|
|
12
13
|
},
|
|
13
14
|
"keywords": [
|
|
14
15
|
"reis",
|