the-grid-cc 1.7.2 → 1.7.3

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.
@@ -21,54 +21,100 @@
21
21
  <!-- Title -->
22
22
  <text x="400" y="20" fill="#888" font-family="SF Mono, Monaco, monospace" font-size="13" text-anchor="middle">Terminal</text>
23
23
 
24
- <!-- Terminal content -->
25
- <text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14" fill="#ccc">
26
- <!-- Prompt -->
27
- <tspan x="20" y="60" fill="#6cf">~</tspan>
24
+ <!-- Prompt line -->
25
+ <text x="20" y="60" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
26
+ <tspan fill="#6cf">~</tspan>
28
27
  <tspan fill="#888"> $ </tspan>
29
28
  <tspan fill="#fff">npx the-grid-cc</tspan>
29
+ </text>
30
30
 
31
- <!-- ASCII Art - THE GRID -->
32
- <tspan x="20" y="100" fill="#0ff"> ████████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗██████╗ </tspan>
33
- <tspan x="20" y="118" fill="#0ff"> ╚══██╔══╝██║ ██║██╔════╝ ██╔════╝ ██╔══██╗██║██╔══██╗</tspan>
34
- <tspan x="20" y="136" fill="#0ff"> ██║ ███████║█████╗ ██║ ███╗██████╔╝██║██║ ██║</tspan>
35
- <tspan x="20" y="154" fill="#0ff"> ██║ ██╔══██║██╔══╝ ██║ ██║██╔══██╗██║██║ ██║</tspan>
36
- <tspan x="20" y="172" fill="#0ff"> ██║ ██║ ██║███████╗ ╚██████╔╝██║ ██║██║██████╔╝</tspan>
37
- <tspan x="20" y="190" fill="#0ff"> ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═════╝ </tspan>
31
+ <!-- TRON-style GRID logo using rectangles -->
32
+ <g fill="#0ff" transform="translate(60, 85)">
33
+ <!-- T -->
34
+ <rect x="0" y="0" width="40" height="8"/>
35
+ <rect x="16" y="8" width="8" height="32"/>
38
36
 
39
- <!-- Version -->
40
- <tspan x="20" y="230" fill="#fff">The Grid</tspan>
41
- <tspan fill="#888"> v1.7.2</tspan>
37
+ <!-- H -->
38
+ <rect x="50" y="0" width="8" height="40"/>
39
+ <rect x="50" y="16" width="24" height="8"/>
40
+ <rect x="66" y="0" width="8" height="40"/>
41
+
42
+ <!-- E -->
43
+ <rect x="84" y="0" width="24" height="8"/>
44
+ <rect x="84" y="0" width="8" height="40"/>
45
+ <rect x="84" y="16" width="20" height="8"/>
46
+ <rect x="84" y="32" width="24" height="8"/>
47
+
48
+ <!-- Space -->
42
49
 
43
- <tspan x="20" y="250" fill="#888">Multi-agent orchestration for Claude Code</tspan>
50
+ <!-- G -->
51
+ <rect x="130" y="0" width="28" height="8"/>
52
+ <rect x="130" y="0" width="8" height="40"/>
53
+ <rect x="130" y="32" width="28" height="8"/>
54
+ <rect x="150" y="20" width="8" height="20"/>
55
+ <rect x="142" y="20" width="16" height="8"/>
44
56
 
45
- <!-- Installation -->
46
- <tspan x="20" y="290" fill="#28c840">✓</tspan>
57
+ <!-- R - FIXED: proper R shape with diagonal leg -->
58
+ <rect x="168" y="0" width="8" height="40"/>
59
+ <rect x="168" y="0" width="28" height="8"/>
60
+ <rect x="188" y="0" width="8" height="20"/>
61
+ <rect x="168" y="16" width="28" height="8"/>
62
+ <!-- diagonal leg of R - approximated with angled rectangles -->
63
+ <rect x="180" y="24" width="8" height="8"/>
64
+ <rect x="188" y="32" width="8" height="8"/>
65
+
66
+ <!-- I -->
67
+ <rect x="210" y="0" width="24" height="8"/>
68
+ <rect x="218" y="8" width="8" height="24"/>
69
+ <rect x="210" y="32" width="24" height="8"/>
70
+
71
+ <!-- D -->
72
+ <rect x="244" y="0" width="8" height="40"/>
73
+ <rect x="244" y="0" width="20" height="8"/>
74
+ <rect x="264" y="4" width="8" height="32"/>
75
+ <rect x="244" y="32" width="20" height="8"/>
76
+ </g>
77
+
78
+ <!-- Version and description -->
79
+ <text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
80
+ <tspan x="60" y="165" fill="#fff">The Grid</tspan>
81
+ <tspan fill="#888"> v1.7.2</tspan>
82
+ <tspan x="60" y="185" fill="#888">Multi-agent orchestration for Claude Code</tspan>
83
+ </text>
84
+
85
+ <!-- Installation checkmarks -->
86
+ <text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
87
+ <tspan x="60" y="225" fill="#28c840">✓</tspan>
47
88
  <tspan fill="#ccc"> Installed commands/grid</tspan>
48
- <tspan x="20" y="310" fill="#28c840">✓</tspan>
89
+ <tspan x="60" y="245" fill="#28c840">✓</tspan>
49
90
  <tspan fill="#ccc"> Installed agents</tspan>
91
+ </text>
50
92
 
51
- <!-- Done -->
52
- <tspan x="20" y="350" fill="#28c840">Done!</tspan>
93
+ <!-- Done message -->
94
+ <text x="60" y="285" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
95
+ <tspan fill="#28c840">Done!</tspan>
53
96
  <tspan fill="#ccc"> Run </tspan>
54
97
  <tspan fill="#fff">/grid</tspan>
55
98
  <tspan fill="#ccc"> to get started.</tspan>
99
+ </text>
56
100
 
57
- <!-- Master Control session -->
58
- <tspan x="20" y="390" fill="#6cf">~</tspan>
101
+ <!-- Second prompt - /grid session -->
102
+ <text x="20" y="330" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
103
+ <tspan fill="#6cf">~</tspan>
59
104
  <tspan fill="#888"> $ </tspan>
60
105
  <tspan fill="#fff">/grid</tspan>
106
+ </text>
61
107
 
62
- <tspan x="20" y="430" fill="#0ff">THE GRID</tspan>
63
- <tspan x="20" y="448" fill="#0ff">════════</tspan>
64
-
65
- <tspan x="20" y="478" fill="#fff">Master Control online.</tspan>
66
-
67
- <tspan x="20" y="508" fill="#ccc">What would you like to build?</tspan>
108
+ <!-- Master Control output -->
109
+ <text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
110
+ <tspan x="60" y="375" fill="#0ff" font-weight="bold">THE GRID</tspan>
111
+ <tspan x="60" y="393" fill="#0ff">════════</tspan>
112
+ <tspan x="60" y="430" fill="#fff">Master Control online.</tspan>
113
+ <tspan x="60" y="465" fill="#ccc">What would you like to build?</tspan>
68
114
  </text>
69
115
 
70
- <!-- Cursor -->
71
- <rect x="20" y="495" width="8" height="16" fill="#fff" opacity="0.8">
116
+ <!-- Blinking cursor -->
117
+ <rect x="60" y="480" width="8" height="14" fill="#fff" opacity="0.8">
72
118
  <animate attributeName="opacity" values="0.8;0;0.8" dur="1s" repeatCount="indefinite"/>
73
119
  </rect>
74
120
  </svg>
@@ -1 +1 @@
1
- 1.7.2
1
+ 1.7.3
@@ -19,6 +19,7 @@ COMMANDS
19
19
  /grid:refine Run Refinement Swarm (visual, E2E, personas)
20
20
  /grid:debug Start systematic bug investigation
21
21
  /grid:status Show current Grid state
22
+ /grid:model Configure model selection (opus/sonnet/haiku)
22
23
  /grid:help This help
23
24
 
24
25
  MODES
@@ -26,6 +27,12 @@ MODES
26
27
  GUIDED MC drives, asks only when essential.
27
28
  HANDS ON Collaborative decisions.
28
29
 
30
+ MODEL TIERS
31
+ /grid:model quality Opus for all agents (default, best results)
32
+ /grid:model balanced Sonnet for most (good balance)
33
+ /grid:model budget Haiku where possible (lowest cost)
34
+ /grid:model custom Configure per-agent
35
+
29
36
  REFINEMENT SWARM
30
37
  /grid:refine Full swarm (visual + E2E + personas)
31
38
  /grid:refine visual Screenshot + vision analysis only
@@ -259,20 +259,48 @@ depends_on: []
259
259
 
260
260
  ### Model Routing
261
261
 
262
- Route different Programs to different models based on task complexity:
262
+ **Default: QUALITY tier (Opus for all agents)**
263
+
264
+ Check `.grid/config.json` for user model preferences. Users can configure via `/grid:model`.
263
265
 
264
266
  | Program | Quality | Balanced | Budget |
265
267
  |---------|---------|----------|--------|
266
268
  | Planner | opus | sonnet | sonnet |
267
269
  | Executor | opus | sonnet | sonnet |
268
- | Recognizer | sonnet | sonnet | haiku |
270
+ | Recognizer | opus | sonnet | haiku |
271
+ | Visual Inspector | opus | sonnet | haiku |
272
+ | E2E Exerciser | opus | sonnet | haiku |
273
+ | Persona Simulator | opus | sonnet | sonnet |
274
+ | Refinement Synth | opus | sonnet | sonnet |
275
+
276
+ **Model Selection Logic:**
277
+ ```python
278
+ def get_model(program_type):
279
+ """Get model based on .grid/config.json or default to opus."""
280
+ try:
281
+ config = json.loads(read(".grid/config.json"))
282
+ tier = config.get("model_tier", "quality")
283
+ except:
284
+ tier = "quality" # Default: Opus
285
+
286
+ if tier == "quality":
287
+ return "opus"
288
+ elif tier == "balanced":
289
+ return "sonnet"
290
+ elif tier == "budget":
291
+ # Some programs need reasoning capability
292
+ if program_type in ["planner", "executor", "persona_simulator"]:
293
+ return "sonnet"
294
+ return "haiku"
295
+ return "opus"
296
+ ```
269
297
 
270
298
  Pass `model` parameter to Task():
271
299
  ```python
272
300
  Task(
273
301
  prompt="...",
274
302
  subagent_type="general-purpose",
275
- model="sonnet", # or "opus", "haiku"
303
+ model="opus", # Default: quality tier
276
304
  description="..."
277
305
  )
278
306
  ```
@@ -0,0 +1,188 @@
1
+ # /grid:model - Configure Model Selection
2
+
3
+ ---
4
+ name: grid:model
5
+ description: Configure which Claude model to use for Grid agents
6
+ allowed-tools:
7
+ - Read
8
+ - Write
9
+ - Edit
10
+ - Bash
11
+ - AskUserQuestion
12
+ ---
13
+
14
+ Configure which Claude models The Grid uses for its agents.
15
+
16
+ ## USAGE
17
+
18
+ ```
19
+ /grid:model # Show current config + options
20
+ /grid:model quality # Use Opus for everything (best results, highest cost)
21
+ /grid:model balanced # Use Sonnet for most tasks (good balance)
22
+ /grid:model budget # Use Haiku where possible (lowest cost)
23
+ /grid:model custom # Configure per-agent models
24
+ ```
25
+
26
+ ## MODEL TIERS
27
+
28
+ ### QUALITY (Default)
29
+ All agents use **Opus** - best reasoning, highest quality output.
30
+
31
+ | Agent | Model |
32
+ |-------|-------|
33
+ | Planner | opus |
34
+ | Executor | opus |
35
+ | Recognizer | opus |
36
+ | Visual Inspector | opus |
37
+ | E2E Exerciser | opus |
38
+ | Persona Simulator | opus |
39
+
40
+ **Best for:** Complex projects, production code, when quality matters most.
41
+ **Cost:** ~3-5x more than Balanced.
42
+
43
+ ### BALANCED
44
+ Most agents use **Sonnet** - good reasoning, moderate cost.
45
+
46
+ | Agent | Model |
47
+ |-------|-------|
48
+ | Planner | sonnet |
49
+ | Executor | sonnet |
50
+ | Recognizer | sonnet |
51
+ | Visual Inspector | sonnet |
52
+ | E2E Exerciser | sonnet |
53
+ | Persona Simulator | sonnet |
54
+
55
+ **Best for:** Most projects, good quality/cost tradeoff.
56
+ **Cost:** Baseline.
57
+
58
+ ### BUDGET
59
+ Use **Haiku** where possible, Sonnet for complex reasoning.
60
+
61
+ | Agent | Model |
62
+ |-------|-------|
63
+ | Planner | sonnet (needs reasoning) |
64
+ | Executor | sonnet (needs reasoning) |
65
+ | Recognizer | haiku |
66
+ | Visual Inspector | haiku |
67
+ | E2E Exerciser | haiku |
68
+ | Persona Simulator | sonnet (needs reasoning) |
69
+
70
+ **Best for:** Prototypes, learning, cost-sensitive projects.
71
+ **Cost:** ~50-70% less than Balanced.
72
+
73
+ ### CUSTOM
74
+ Set each agent individually.
75
+
76
+ ## EXECUTION
77
+
78
+ When user runs `/grid:model`:
79
+
80
+ ### No argument - Show current config
81
+ ```
82
+ MODEL CONFIGURATION
83
+ ═══════════════════
84
+
85
+ Current tier: {tier}
86
+
87
+ | Agent | Model |
88
+ |-------------------|---------|
89
+ | Planner | {model} |
90
+ | Executor | {model} |
91
+ | Recognizer | {model} |
92
+ | Visual Inspector | {model} |
93
+ | E2E Exerciser | {model} |
94
+ | Persona Simulator | {model} |
95
+
96
+ Commands:
97
+ /grid:model quality - Opus for everything
98
+ /grid:model balanced - Sonnet for most
99
+ /grid:model budget - Haiku where possible
100
+ /grid:model custom - Configure individually
101
+
102
+ End of Line.
103
+ ```
104
+
105
+ ### With tier argument - Set tier
106
+ ```python
107
+ # Read or create config
108
+ config_path = ".grid/config.json"
109
+ try:
110
+ config = json.loads(read(config_path))
111
+ except:
112
+ config = {}
113
+
114
+ # Set tier
115
+ config["model_tier"] = tier # "quality" | "balanced" | "budget"
116
+
117
+ # Write config
118
+ write(config_path, json.dumps(config, indent=2))
119
+ ```
120
+
121
+ Display:
122
+ ```
123
+ MODEL TIER SET: {TIER}
124
+ ═════════════════════
125
+
126
+ All Grid agents will now use {tier} models.
127
+
128
+ | Agent | Model |
129
+ |-------------------|---------|
130
+ | Planner | {model} |
131
+ | ... | ... |
132
+
133
+ To change: /grid:model {other_tier}
134
+
135
+ End of Line.
136
+ ```
137
+
138
+ ### Custom mode - Interactive selection
139
+ Use AskUserQuestion to let user pick model for each agent type:
140
+
141
+ ```
142
+ CUSTOM MODEL CONFIGURATION
143
+ ══════════════════════════
144
+
145
+ Select model for each agent type:
146
+ ```
147
+
148
+ Then save to `.grid/config.json`:
149
+ ```json
150
+ {
151
+ "model_tier": "custom",
152
+ "models": {
153
+ "planner": "opus",
154
+ "executor": "sonnet",
155
+ "recognizer": "haiku",
156
+ "visual_inspector": "haiku",
157
+ "e2e_exerciser": "haiku",
158
+ "persona_simulator": "sonnet"
159
+ }
160
+ }
161
+ ```
162
+
163
+ ## CONFIG FILE FORMAT
164
+
165
+ `.grid/config.json`:
166
+ ```json
167
+ {
168
+ "model_tier": "quality",
169
+ "models": {
170
+ "planner": "opus",
171
+ "executor": "opus",
172
+ "recognizer": "opus",
173
+ "visual_inspector": "opus",
174
+ "e2e_exerciser": "opus",
175
+ "persona_simulator": "opus"
176
+ },
177
+ "topology": "hierarchical"
178
+ }
179
+ ```
180
+
181
+ ## RULES
182
+
183
+ 1. Default to "quality" (Opus) if no config exists
184
+ 2. Never use Haiku for Planner/Executor (needs reasoning capability)
185
+ 3. Show cost implications when changing tiers
186
+ 4. Config persists in `.grid/config.json`
187
+
188
+ End of Line.
@@ -127,7 +127,7 @@ Dev server command: {dev_command}
127
127
  Execute visual inspection. Save to .grid/refinement/
128
128
  """,
129
129
  subagent_type="general-purpose",
130
- model="sonnet",
130
+ model="opus", # Default: quality tier
131
131
  description="Visual Inspector"
132
132
  )
133
133
 
@@ -141,7 +141,7 @@ Dev server command: {dev_command}
141
141
  Execute E2E testing. Save to .grid/refinement/
142
142
  """,
143
143
  subagent_type="general-purpose",
144
- model="sonnet",
144
+ model="opus", # Default: quality tier
145
145
  description="E2E Exerciser"
146
146
  )
147
147
 
@@ -162,7 +162,7 @@ Become this persona. Use the product. Report findings.
162
162
  Save to .grid/refinement/personas/{persona.slug}.md
163
163
  """,
164
164
  subagent_type="general-purpose",
165
- model="sonnet",
165
+ model="opus", # Default: quality tier
166
166
  description=f"Persona: {persona.name}"
167
167
  )
168
168
  ```
@@ -196,7 +196,7 @@ Task(
196
196
  Synthesize all findings into .grid/REFINEMENT_PLAN.md
197
197
  """,
198
198
  subagent_type="general-purpose",
199
- model="sonnet",
199
+ model="opus", # Default: quality tier
200
200
  description="Refinement Synthesizer"
201
201
  )
202
202
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "the-grid-cc",
3
- "version": "1.7.2",
3
+ "version": "1.7.3",
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": {