the-grid-cc 1.7.8 → 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 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 = LOGO;
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(LOGO);
83
- console.log(`${WHITE}The Grid${RESET} ${DIM}v${getVersion()}${RESET}`);
84
- console.log(`${DIM}Multi-agent orchestration for Claude Code${RESET}`);
85
- console.log();
86
- console.log(`${BOLD}Usage:${RESET}`);
87
- console.log(` npx the-grid-cc Install to Claude Code`);
88
- console.log(` npx the-grid-cc --uninstall Remove The Grid`);
89
- console.log();
90
- console.log(`${BOLD}After Installation:${RESET}`);
91
- console.log(` In Claude Code, type: ${CYAN}/grid${RESET}`);
92
- console.log();
93
- console.log(`${DIM}"I fight for the Users."${RESET}`);
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
- // Show logo and version
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 (silent unless error)
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 (silent)
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 download. Check your internet connection.');
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 install files');
182
+ logError('Failed to copy files');
189
183
  process.exit(1);
190
184
  }
191
185
 
192
- // Cleanup (silent)
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
- console.log(`${GREEN}Done!${RESET} Run ${WHITE}/grid${RESET} to get started.`);
198
- console.log();
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(LOGO);
203
- console.log(`${WHITE}The Grid${RESET} ${DIM}v${getVersion()}${RESET}`);
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
- let agentsRemoved = false;
233
- if (fs.existsSync(agentsDir)) {
234
- const entries = fs.readdirSync(agentsDir);
235
- for (const file of entries) {
236
- if (file.startsWith('grid-')) {
237
- fs.rmSync(path.join(agentsDir, file));
238
- agentsRemoved = true;
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 (agentsRemoved) {
244
- logSuccess('Removed agents');
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
- console.log(`${GREEN}Derezzed.${RESET} ${DIM}End of Line.${RESET}`);
252
- console.log();
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
 
@@ -1 +1 @@
1
- 1.7.8
1
+ 1.8.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "the-grid-cc",
3
- "version": "1.7.8",
3
+ "version": "1.8.0",
4
4
  "description": "Agent orchestration for Claude Code. You talk to Master Control. Master Control handles the rest.",
5
5
  "main": "index.js",
6
6
  "bin": {
Binary file