the-grid-cc 1.7.9 → 1.8.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/README.md +0 -6
- package/bin/install.js +78 -75
- package/commands/grid/VERSION +1 -1
- package/package.json +1 -1
- package/assets/install-demo.png +0 -0
package/README.md
CHANGED
|
@@ -41,12 +41,6 @@ npx the-grid-cc # Install (one command)
|
|
|
41
41
|
<strong>That's it. Works on Mac, Windows, and Linux.</strong>
|
|
42
42
|
</p>
|
|
43
43
|
|
|
44
|
-
<br>
|
|
45
|
-
|
|
46
|
-
<p align="center">
|
|
47
|
-
<img src="assets/install-demo.png" alt="The Grid Installation" width="700"/>
|
|
48
|
-
</p>
|
|
49
|
-
|
|
50
44
|
---
|
|
51
45
|
|
|
52
46
|
## The Problem
|
package/bin/install.js
CHANGED
|
@@ -19,26 +19,22 @@ const readline = require('readline');
|
|
|
19
19
|
|
|
20
20
|
// TRON Colors (for terminal output)
|
|
21
21
|
const CYAN = '\x1b[36m';
|
|
22
|
-
const BRIGHT_CYAN = '\x1b[96m';
|
|
23
22
|
const YELLOW = '\x1b[33m';
|
|
24
23
|
const GREEN = '\x1b[32m';
|
|
25
24
|
const RED = '\x1b[31m';
|
|
26
25
|
const DIM = '\x1b[2m';
|
|
27
26
|
const RESET = '\x1b[0m';
|
|
28
27
|
const BOLD = '\x1b[1m';
|
|
29
|
-
const WHITE = '\x1b[97m';
|
|
30
|
-
|
|
31
|
-
// TRON-style ASCII art logo
|
|
32
|
-
const LOGO = `
|
|
33
|
-
${BRIGHT_CYAN} ████████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗██████╗
|
|
34
|
-
╚══██╔══╝██║ ██║██╔════╝ ██╔════╝ ██╔══██╗██║██╔══██╗
|
|
35
|
-
██║ ███████║█████╗ ██║ ███╗██████╔╝██║██║ ██║
|
|
36
|
-
██║ ██╔══██║██╔══╝ ██║ ██║██╔══██╗██║██║ ██║
|
|
37
|
-
██║ ██║ ██║███████╗ ╚██████╔╝██║ ██║██║██████╔╝
|
|
38
|
-
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═════╝${RESET}
|
|
39
|
-
`;
|
|
40
28
|
|
|
41
|
-
const BANNER =
|
|
29
|
+
const BANNER = `
|
|
30
|
+
${CYAN}+============================================================+
|
|
31
|
+
| |
|
|
32
|
+
| M A S T E R C O N T R O L P R O G R A M |
|
|
33
|
+
| |
|
|
34
|
+
| "I fight for the Users." |
|
|
35
|
+
| |
|
|
36
|
+
+============================================================+${RESET}
|
|
37
|
+
`;
|
|
42
38
|
|
|
43
39
|
const REPO_URL = 'https://github.com/JamesWeatherhead/grid.git';
|
|
44
40
|
|
|
@@ -68,29 +64,24 @@ function logError(msg) {
|
|
|
68
64
|
console.log(`${RED}✗${RESET} ${msg}`);
|
|
69
65
|
}
|
|
70
66
|
|
|
71
|
-
function getVersion() {
|
|
72
|
-
try {
|
|
73
|
-
const pkgPath = path.join(__dirname, '..', 'package.json');
|
|
74
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
75
|
-
return pkg.version || '1.0.0';
|
|
76
|
-
} catch {
|
|
77
|
-
return '1.0.0';
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
67
|
function showHelp() {
|
|
82
|
-
console.log(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
68
|
+
console.log(`
|
|
69
|
+
${BANNER}
|
|
70
|
+
|
|
71
|
+
${BOLD}Usage:${RESET}
|
|
72
|
+
npx the-grid-cc Install to Claude Code
|
|
73
|
+
npx the-grid-cc --uninstall Remove The Grid
|
|
74
|
+
|
|
75
|
+
${BOLD}Options:${RESET}
|
|
76
|
+
-u, --uninstall Uninstall The Grid
|
|
77
|
+
-y, --yes Skip confirmation prompts
|
|
78
|
+
-h, --help Show this help
|
|
79
|
+
|
|
80
|
+
${BOLD}After Installation:${RESET}
|
|
81
|
+
In Claude Code, type: /grid
|
|
82
|
+
|
|
83
|
+
${DIM}"I fight for the Users."${RESET}
|
|
84
|
+
`);
|
|
94
85
|
}
|
|
95
86
|
|
|
96
87
|
function checkGit() {
|
|
@@ -117,11 +108,7 @@ function copyDir(src, dest) {
|
|
|
117
108
|
}
|
|
118
109
|
|
|
119
110
|
async function install() {
|
|
120
|
-
|
|
121
|
-
console.log(LOGO);
|
|
122
|
-
console.log(`${WHITE}The Grid${RESET} ${DIM}v${getVersion()}${RESET}`);
|
|
123
|
-
console.log(`${DIM}Multi-agent orchestration for Claude Code${RESET}`);
|
|
124
|
-
console.log();
|
|
111
|
+
console.log(BANNER);
|
|
125
112
|
|
|
126
113
|
const home = process.env.HOME || process.env.USERPROFILE;
|
|
127
114
|
const claudeDir = path.join(home, '.claude');
|
|
@@ -129,17 +116,22 @@ async function install() {
|
|
|
129
116
|
const agentsDir = path.join(claudeDir, 'agents');
|
|
130
117
|
const tempDir = path.join(home, '.grid-temp');
|
|
131
118
|
|
|
132
|
-
// Check prerequisites
|
|
119
|
+
// Check prerequisites
|
|
120
|
+
logStep('1/4', 'Checking prerequisites...');
|
|
121
|
+
|
|
133
122
|
if (!checkGit()) {
|
|
134
123
|
logError('Git is required but not found.');
|
|
135
124
|
process.exit(1);
|
|
136
125
|
}
|
|
126
|
+
logSuccess('Git found');
|
|
137
127
|
|
|
138
128
|
// Ensure .claude directories exist
|
|
139
129
|
fs.mkdirSync(commandsDir, { recursive: true });
|
|
140
130
|
fs.mkdirSync(agentsDir, { recursive: true });
|
|
131
|
+
logSuccess('Claude Code directories ready');
|
|
141
132
|
|
|
142
|
-
// Clone to temp
|
|
133
|
+
// Clone to temp
|
|
134
|
+
logStep('2/4', 'Downloading The Grid...');
|
|
143
135
|
if (fs.existsSync(tempDir)) {
|
|
144
136
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
145
137
|
}
|
|
@@ -149,12 +141,14 @@ async function install() {
|
|
|
149
141
|
stdio: 'pipe',
|
|
150
142
|
encoding: 'utf8'
|
|
151
143
|
});
|
|
144
|
+
logSuccess('Download complete');
|
|
152
145
|
} catch (error) {
|
|
153
|
-
logError('Failed to
|
|
146
|
+
logError('Failed to clone repository');
|
|
154
147
|
process.exit(1);
|
|
155
148
|
}
|
|
156
149
|
|
|
157
150
|
// Copy commands and agents
|
|
151
|
+
logStep('3/4', 'Installing to Claude Code...');
|
|
158
152
|
try {
|
|
159
153
|
const srcCommands = path.join(tempDir, 'commands');
|
|
160
154
|
const srcAgents = path.join(tempDir, 'agents');
|
|
@@ -171,8 +165,8 @@ async function install() {
|
|
|
171
165
|
fs.copyFileSync(src, dest);
|
|
172
166
|
}
|
|
173
167
|
}
|
|
168
|
+
logSuccess('Commands installed');
|
|
174
169
|
}
|
|
175
|
-
logSuccess('Installed commands/grid');
|
|
176
170
|
|
|
177
171
|
// Copy agents
|
|
178
172
|
if (fs.existsSync(srcAgents)) {
|
|
@@ -182,27 +176,41 @@ async function install() {
|
|
|
182
176
|
const dest = path.join(agentsDir, entry.name);
|
|
183
177
|
fs.copyFileSync(src, dest);
|
|
184
178
|
}
|
|
179
|
+
logSuccess('Agents installed');
|
|
185
180
|
}
|
|
186
|
-
logSuccess('Installed agents');
|
|
187
181
|
} catch (error) {
|
|
188
|
-
logError('Failed to
|
|
182
|
+
logError('Failed to copy files');
|
|
189
183
|
process.exit(1);
|
|
190
184
|
}
|
|
191
185
|
|
|
192
|
-
// Cleanup
|
|
186
|
+
// Cleanup
|
|
187
|
+
logStep('4/4', 'Cleaning up...');
|
|
193
188
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
189
|
+
logSuccess('Done');
|
|
194
190
|
|
|
195
191
|
// Success message
|
|
196
|
-
console.log(
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
console.log(`
|
|
193
|
+
${GREEN}+============================================================+
|
|
194
|
+
| |
|
|
195
|
+
| THE GRID INSTALLED SUCCESSFULLY |
|
|
196
|
+
| |
|
|
197
|
+
+============================================================+${RESET}
|
|
198
|
+
|
|
199
|
+
${BOLD}Enter The Grid:${RESET}
|
|
200
|
+
In Claude Code, type: ${CYAN}/grid${RESET}
|
|
201
|
+
|
|
202
|
+
${BOLD}Files installed:${RESET}
|
|
203
|
+
${DIM}~/.claude/commands/grid.md${RESET}
|
|
204
|
+
${DIM}~/.claude/commands/grid/${RESET}
|
|
205
|
+
${DIM}~/.claude/agents/grid-*.md${RESET}
|
|
206
|
+
|
|
207
|
+
${DIM}"End of Line."${RESET}
|
|
208
|
+
`);
|
|
199
209
|
}
|
|
200
210
|
|
|
201
211
|
async function uninstall() {
|
|
202
|
-
console.log(
|
|
203
|
-
|
|
204
|
-
console.log(`${YELLOW}Uninstalling...${RESET}`);
|
|
205
|
-
console.log();
|
|
212
|
+
console.log(BANNER);
|
|
213
|
+
log('Uninstalling The Grid...', YELLOW);
|
|
206
214
|
|
|
207
215
|
const home = process.env.HOME || process.env.USERPROFILE;
|
|
208
216
|
const commandsDir = path.join(home, '.claude', 'commands');
|
|
@@ -216,40 +224,35 @@ async function uninstall() {
|
|
|
216
224
|
|
|
217
225
|
if (fs.existsSync(gridMd)) {
|
|
218
226
|
fs.rmSync(gridMd);
|
|
227
|
+
logSuccess('Removed grid.md');
|
|
219
228
|
removed = true;
|
|
220
229
|
}
|
|
221
230
|
|
|
222
231
|
if (fs.existsSync(gridDir)) {
|
|
223
232
|
fs.rmSync(gridDir, { recursive: true, force: true });
|
|
233
|
+
logSuccess('Removed grid/ commands');
|
|
224
234
|
removed = true;
|
|
225
235
|
}
|
|
226
236
|
|
|
227
|
-
if (removed) {
|
|
228
|
-
logSuccess('Removed commands/grid');
|
|
229
|
-
}
|
|
230
|
-
|
|
231
237
|
// Remove grid agents
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
238
|
+
const agentFiles = ['grid-planner.md', 'grid-executor.md', 'grid-recognizer.md', 'grid-guard.md'];
|
|
239
|
+
for (const file of agentFiles) {
|
|
240
|
+
const agentPath = path.join(agentsDir, file);
|
|
241
|
+
if (fs.existsSync(agentPath)) {
|
|
242
|
+
fs.rmSync(agentPath);
|
|
243
|
+
logSuccess(`Removed ${file}`);
|
|
244
|
+
removed = true;
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
247
|
|
|
243
|
-
if (
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
if (!removed && !agentsRemoved) {
|
|
248
|
-
console.log(`${DIM}No Grid installation found.${RESET}`);
|
|
248
|
+
if (!removed) {
|
|
249
|
+
log('No Grid installations found.', DIM);
|
|
249
250
|
} else {
|
|
250
|
-
console.log(
|
|
251
|
-
|
|
252
|
-
|
|
251
|
+
console.log(`
|
|
252
|
+
${GREEN}The Grid has been derezzed.${RESET}
|
|
253
|
+
|
|
254
|
+
${DIM}"End of Line."${RESET}
|
|
255
|
+
`);
|
|
253
256
|
}
|
|
254
257
|
}
|
|
255
258
|
|
package/commands/grid/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.8.0
|
package/package.json
CHANGED
package/assets/install-demo.png
DELETED
|
Binary file
|