the-grid-cc 1.7.4 → 1.7.6
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 +4 -26
- package/commands/grid/VERSION +1 -1
- package/commands/grid/mc.md +249 -67
- package/package.json +1 -1
- package/assets/terminal-v3.svg +0 -112
package/README.md
CHANGED
|
@@ -30,20 +30,15 @@
|
|
|
30
30
|
|
|
31
31
|
<p align="center">
|
|
32
32
|
|
|
33
|
-
```
|
|
34
|
-
npx the-grid-cc
|
|
33
|
+
```bash
|
|
34
|
+
npx the-grid-cc # Install (one command)
|
|
35
|
+
/grid # Use in Claude Code
|
|
35
36
|
```
|
|
36
37
|
|
|
37
38
|
</p>
|
|
38
39
|
|
|
39
40
|
<p align="center">
|
|
40
|
-
<strong>Works on Mac, Windows, and Linux.</strong>
|
|
41
|
-
</p>
|
|
42
|
-
|
|
43
|
-
<br>
|
|
44
|
-
|
|
45
|
-
<p align="center">
|
|
46
|
-
<img src="assets/terminal-v3.svg" alt="The Grid Terminal" width="700"/>
|
|
41
|
+
<strong>That's it. Works on Mac, Windows, and Linux.</strong>
|
|
47
42
|
</p>
|
|
48
43
|
|
|
49
44
|
---
|
|
@@ -71,23 +66,6 @@ YOU ←→ Coordinator ←→ Worker Agents
|
|
|
71
66
|
|
|
72
67
|
---
|
|
73
68
|
|
|
74
|
-
## Quick Start
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# Install (30 seconds, works on macOS/Linux/Windows+WSL)
|
|
78
|
-
npx the-grid-cc
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Then in Claude Code:
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
/grid
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
That's it. Describe what you want to build.
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
69
|
## Your First Session
|
|
92
70
|
|
|
93
71
|
Here's exactly what happens when you use The Grid for the first time:
|
package/commands/grid/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.7.
|
|
1
|
+
1.7.6
|
package/commands/grid/mc.md
CHANGED
|
@@ -70,12 +70,15 @@ Mode selection is friction. Most Users want results, not configuration. Infer th
|
|
|
70
70
|
|
|
71
71
|
**ZERO QUESTIONS.** User wants results, not dialogue. You:
|
|
72
72
|
|
|
73
|
-
1. **
|
|
74
|
-
2. **
|
|
75
|
-
3. **
|
|
76
|
-
4. **
|
|
77
|
-
5. **
|
|
78
|
-
6. **
|
|
73
|
+
1. **Detect** - Quick mode eligible? Run detection heuristics first
|
|
74
|
+
2. **Analyze** - Infer everything from context (project type, likely users, tech stack)
|
|
75
|
+
3. **Research** - Spawn research agents if needed (parallel, silent)
|
|
76
|
+
4. **Decide** - YOU choose everything. Never ask.
|
|
77
|
+
5. **Build** - Execute via quick mode OR full grid based on detection
|
|
78
|
+
6. **Refine** - Run Refinement Swarm automatically (visual, E2E, personas) if full build
|
|
79
|
+
7. **Report** - Show what you built AFTER it's done
|
|
80
|
+
|
|
81
|
+
**Quick Mode in AUTOPILOT:** Detection happens silently. Don't announce "analyzing complexity"—just pick the right path.
|
|
79
82
|
|
|
80
83
|
```
|
|
81
84
|
BUILD COMPLETE
|
|
@@ -468,57 +471,133 @@ Task(
|
|
|
468
471
|
|
|
469
472
|
## EXECUTE-AND-VERIFY PRIMITIVE
|
|
470
473
|
|
|
471
|
-
**
|
|
474
|
+
**Verification is AUTOMATIC after successful execution.** The atomic unit is:
|
|
475
|
+
```
|
|
476
|
+
Executor → (if SUCCESS) → Recognizer → (if GAPS) → Planner --gaps
|
|
477
|
+
```
|
|
472
478
|
|
|
473
|
-
|
|
474
|
-
def execute_and_verify(plan_content, state_content, warmth=None):
|
|
475
|
-
"""Execute a plan and verify the result. Returns combined output."""
|
|
479
|
+
### Protocol
|
|
476
480
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
481
|
+
**1. Executor completes with status:**
|
|
482
|
+
- `SUCCESS` → Auto-spawn Recognizer (default path)
|
|
483
|
+
- `CHECKPOINT` → Return to MC, don't verify incomplete work
|
|
484
|
+
- `FAILURE` → Return to MC with structured failure report
|
|
485
|
+
|
|
486
|
+
**2. Recognizer spawns AUTOMATICALLY unless:**
|
|
487
|
+
- Executor returned CHECKPOINT (incomplete work)
|
|
488
|
+
- Executor returned FAILURE (broken build)
|
|
489
|
+
- Plan frontmatter contains `verify: false`
|
|
490
|
+
- User explicitly said "skip verification"
|
|
491
|
+
|
|
492
|
+
### Wave Execution with Auto-Verify
|
|
493
|
+
|
|
494
|
+
```python
|
|
495
|
+
def execute_wave(wave_plans, state_content, warmth=None):
|
|
496
|
+
"""Execute a wave and auto-verify results."""
|
|
497
|
+
|
|
498
|
+
# 1. Spawn all Executors in wave (parallel)
|
|
499
|
+
exec_results = []
|
|
500
|
+
for plan in wave_plans:
|
|
501
|
+
result = Task(
|
|
502
|
+
prompt=f"""
|
|
480
503
|
First, read ~/.claude/agents/grid-executor.md for your role.
|
|
481
504
|
|
|
482
505
|
<state>{state_content}</state>
|
|
483
|
-
<plan>{
|
|
506
|
+
<plan>{plan['content']}</plan>
|
|
484
507
|
{f'<warmth>{warmth}</warmth>' if warmth else ''}
|
|
485
508
|
|
|
486
|
-
|
|
509
|
+
<scratchpad_rules>
|
|
510
|
+
You MUST write to .grid/SCRATCHPAD.md during execution:
|
|
511
|
+
1. On discovering codebase patterns (IMMEDIATELY)
|
|
512
|
+
2. On making decisions affecting other areas (BEFORE COMMITTING)
|
|
513
|
+
3. On finding blockers (IMMEDIATELY)
|
|
514
|
+
4. On long work (EVERY 5 MINUTES as progress heartbeat)
|
|
515
|
+
|
|
516
|
+
Before starting, READ scratchpad to see what other Programs learned.
|
|
517
|
+
</scratchpad_rules>
|
|
518
|
+
|
|
519
|
+
Execute the plan. Return SUCCESS | CHECKPOINT | FAILURE.
|
|
520
|
+
Include lessons_learned in your SUMMARY.
|
|
487
521
|
""",
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
522
|
+
subagent_type="general-purpose",
|
|
523
|
+
model=get_model("executor"),
|
|
524
|
+
description=f"Execute {plan['id']}"
|
|
525
|
+
)
|
|
526
|
+
exec_results.append((plan, result))
|
|
527
|
+
|
|
528
|
+
# 2. Analyze wave results
|
|
529
|
+
checkpoints = [r for r in exec_results if "CHECKPOINT" in r[1]]
|
|
530
|
+
failures = [r for r in exec_results if "FAILURE" in r[1]]
|
|
531
|
+
|
|
532
|
+
if checkpoints:
|
|
533
|
+
return {"status": "CHECKPOINT", "details": checkpoints}
|
|
534
|
+
if failures:
|
|
535
|
+
return {"status": "FAILURE", "details": failures}
|
|
492
536
|
|
|
493
|
-
#
|
|
494
|
-
if
|
|
495
|
-
return
|
|
537
|
+
# 3. Skip verification if opted out
|
|
538
|
+
if should_skip_verification(wave_plans):
|
|
539
|
+
return {"status": "SUCCESS", "verification": "SKIPPED"}
|
|
496
540
|
|
|
497
|
-
#
|
|
498
|
-
|
|
541
|
+
# 4. Collect summaries for wave
|
|
542
|
+
summaries = collect_wave_summaries(wave_plans)
|
|
543
|
+
must_haves = extract_wave_must_haves(wave_plans)
|
|
499
544
|
|
|
500
|
-
#
|
|
545
|
+
# 5. Auto-spawn Recognizer
|
|
501
546
|
verify_result = Task(
|
|
502
547
|
prompt=f"""
|
|
503
548
|
First, read ~/.claude/agents/grid-recognizer.md for your role.
|
|
504
549
|
|
|
505
|
-
|
|
506
|
-
<plan>{plan_content}</plan>
|
|
550
|
+
PATROL MODE: Wave verification
|
|
507
551
|
|
|
508
|
-
|
|
552
|
+
<wave_summaries>
|
|
553
|
+
{summaries}
|
|
554
|
+
</wave_summaries>
|
|
555
|
+
|
|
556
|
+
<must_haves>
|
|
557
|
+
{must_haves}
|
|
558
|
+
</must_haves>
|
|
559
|
+
|
|
560
|
+
Verify goal achievement. Three-level check:
|
|
561
|
+
1. Existence
|
|
562
|
+
2. Substantive (not stubs)
|
|
563
|
+
3. Wired (connected to system)
|
|
564
|
+
|
|
565
|
+
Return: CLEAR | GAPS_FOUND | CRITICAL_ANOMALY
|
|
509
566
|
""",
|
|
510
567
|
subagent_type="general-purpose",
|
|
511
|
-
model="
|
|
512
|
-
description="Verify
|
|
568
|
+
model=get_model("recognizer"),
|
|
569
|
+
description=f"Verify wave"
|
|
513
570
|
)
|
|
514
571
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
572
|
+
# 6. Handle gaps
|
|
573
|
+
if "GAPS_FOUND" in verify_result:
|
|
574
|
+
gaps = extract_gaps(verify_result)
|
|
575
|
+
gap_plan = spawn_planner_gaps(gaps, state_content)
|
|
576
|
+
return {"status": "GAPS_FOUND", "verification": verify_result, "gap_closure": gap_plan}
|
|
577
|
+
|
|
578
|
+
return {"status": "VERIFIED", "verification": verify_result}
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
def should_skip_verification(wave_plans):
|
|
582
|
+
"""Check if verification should be skipped."""
|
|
583
|
+
for plan in wave_plans:
|
|
584
|
+
if plan.get('frontmatter', {}).get('verify') == False:
|
|
585
|
+
return True
|
|
586
|
+
return session_state.get("skip_verification", False)
|
|
519
587
|
```
|
|
520
588
|
|
|
521
|
-
|
|
589
|
+
### Opt-Out Mechanism
|
|
590
|
+
|
|
591
|
+
**Plan-level:** Add `verify: false` to frontmatter:
|
|
592
|
+
```yaml
|
|
593
|
+
---
|
|
594
|
+
wave: 1
|
|
595
|
+
verify: false
|
|
596
|
+
verify_reason: "Prototype/throwaway code"
|
|
597
|
+
---
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Session-level:** User says "skip verification for this session"
|
|
522
601
|
|
|
523
602
|
---
|
|
524
603
|
|
|
@@ -585,35 +664,120 @@ Apply the warmth above. Don't repeat mistakes. Build on discoveries.
|
|
|
585
664
|
|
|
586
665
|
## SCRATCHPAD PROTOCOL
|
|
587
666
|
|
|
588
|
-
**
|
|
667
|
+
**Mandatory observability during execution.** Programs MUST write to scratchpad—it's not optional.
|
|
589
668
|
|
|
590
669
|
`.grid/SCRATCHPAD.md` - Programs write here during execution, not just at end.
|
|
591
670
|
|
|
592
|
-
###
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
671
|
+
### Mandatory Writing Rules
|
|
672
|
+
|
|
673
|
+
Executors MUST write to scratchpad in these situations:
|
|
674
|
+
|
|
675
|
+
1. **On unexpected codebase patterns** (WRITE IMMEDIATELY)
|
|
676
|
+
- File structure differs from assumption
|
|
677
|
+
- Naming conventions found (e.g., displayName not name)
|
|
678
|
+
- API patterns (e.g., req.json() not req.body)
|
|
679
|
+
|
|
680
|
+
2. **On decisions affecting other areas** (WRITE BEFORE COMMITTING)
|
|
681
|
+
- Choosing library A over B
|
|
682
|
+
- Schema changes
|
|
683
|
+
- API contract changes
|
|
684
|
+
|
|
685
|
+
3. **On finding blockers or gotchas** (WRITE IMMEDIATELY)
|
|
686
|
+
- Missing dependencies
|
|
687
|
+
- Authentication requirements
|
|
688
|
+
- External service configuration needs
|
|
689
|
+
|
|
690
|
+
4. **On long-running work** (WRITE EVERY 5 MINUTES)
|
|
691
|
+
- Progress heartbeat: "Still working on X, 60% complete"
|
|
692
|
+
- Prevents MC from thinking agent died
|
|
693
|
+
|
|
694
|
+
**Failure to write = protocol violation.** Recognizer checks for scratchpad entries.
|
|
695
|
+
|
|
696
|
+
### Entry Format
|
|
697
|
+
|
|
698
|
+
Each entry MUST follow this structure:
|
|
699
|
+
|
|
700
|
+
```
|
|
701
|
+
### {program-id} | {ISO-timestamp} | {category}
|
|
702
|
+
|
|
703
|
+
**Finding:** {one clear sentence}
|
|
704
|
+
|
|
705
|
+
**Impact:** {who needs to know / areas affected}
|
|
706
|
+
|
|
707
|
+
**Action:** [INFORM_ONLY | REQUIRES_CHANGE | BLOCKER]
|
|
598
708
|
|
|
599
|
-
|
|
709
|
+
**Details:**
|
|
710
|
+
{Additional context, file paths}
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
**Categories:**
|
|
714
|
+
- `PATTERN` - Codebase pattern discovered
|
|
715
|
+
- `DECISION` - Decision made affecting other work
|
|
716
|
+
- `BLOCKER` - Blocking issue found
|
|
717
|
+
- `PROGRESS` - Heartbeat progress update
|
|
718
|
+
- `CORRECTION` - Correcting a previous entry
|
|
719
|
+
|
|
720
|
+
### MC Monitoring During Execution
|
|
721
|
+
|
|
722
|
+
MC actively monitors scratchpad while Programs execute:
|
|
723
|
+
|
|
724
|
+
```python
|
|
725
|
+
def monitor_scratchpad_during_wave(active_programs, wave_start_time):
|
|
726
|
+
"""Monitor scratchpad for updates while Programs execute."""
|
|
727
|
+
last_check = wave_start_time
|
|
728
|
+
max_silence = timedelta(minutes=10)
|
|
729
|
+
|
|
730
|
+
while programs_still_running(active_programs):
|
|
731
|
+
time.sleep(30) # Check every 30 seconds
|
|
732
|
+
scratchpad = read(".grid/SCRATCHPAD.md")
|
|
733
|
+
new_entries = parse_entries_since(scratchpad, last_check)
|
|
734
|
+
|
|
735
|
+
if new_entries:
|
|
736
|
+
display_live_updates(new_entries)
|
|
737
|
+
last_check = datetime.now()
|
|
738
|
+
|
|
739
|
+
# Alert on stalled agents
|
|
740
|
+
for program in active_programs:
|
|
741
|
+
if time_since_last_entry(program) > max_silence:
|
|
742
|
+
alert_user(f"{program} hasn't written in 10 minutes")
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
**Display live updates:**
|
|
746
|
+
```
|
|
747
|
+
Live Updates from Executors:
|
|
748
|
+
├─ executor-01 (14:32): Found pattern - using displayName not name
|
|
749
|
+
├─ executor-02 (14:35): Decision - chose JWT over sessions
|
|
750
|
+
├─ executor-01 (14:40): Progress - Auth endpoints 60% done
|
|
751
|
+
└─ executor-03 (14:42): BLOCKER - Missing Stripe API keys
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
### Archival After Wave Completion
|
|
755
|
+
|
|
756
|
+
After wave completes, archive scratchpad:
|
|
600
757
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
758
|
+
```python
|
|
759
|
+
def archive_scratchpad(wave_number, phase, block):
|
|
760
|
+
scratchpad = read(".grid/SCRATCHPAD.md")
|
|
761
|
+
archive_entry = f"""
|
|
762
|
+
---
|
|
763
|
+
wave: {wave_number}
|
|
764
|
+
phase: {phase}
|
|
765
|
+
archived: {datetime.now().isoformat()}
|
|
766
|
+
---
|
|
604
767
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
768
|
+
{scratchpad}
|
|
769
|
+
"""
|
|
770
|
+
append(".grid/SCRATCHPAD_ARCHIVE.md", archive_entry)
|
|
608
771
|
|
|
609
|
-
|
|
610
|
-
|
|
772
|
+
# Clear for next wave
|
|
773
|
+
write(".grid/SCRATCHPAD.md", "---\nupdated: ...\nactive_programs: []\n---\n")
|
|
611
774
|
```
|
|
612
775
|
|
|
613
|
-
### Usage
|
|
614
|
-
- **Write**
|
|
615
|
-
- **Read** before starting execution
|
|
616
|
-
- **
|
|
776
|
+
### Usage Summary
|
|
777
|
+
- **Write** following mandatory rules above
|
|
778
|
+
- **Read** before starting execution (check what others learned)
|
|
779
|
+
- **Monitor** by MC during execution (every 30s)
|
|
780
|
+
- **Archive** after wave completes
|
|
617
781
|
|
|
618
782
|
---
|
|
619
783
|
|
|
@@ -882,21 +1046,36 @@ Accumulated patterns from past projects. Read at session start, write after comp
|
|
|
882
1046
|
|
|
883
1047
|
## PROGRESS UPDATES
|
|
884
1048
|
|
|
885
|
-
Never leave User in darkness. Show what's happening:
|
|
1049
|
+
Never leave User in darkness. Show what's happening (including automatic verification):
|
|
886
1050
|
|
|
887
1051
|
```
|
|
888
|
-
|
|
889
|
-
├─
|
|
890
|
-
│ ├─ plan-01: Creating components...
|
|
891
|
-
│ └─ plan-02: Writing API routes...
|
|
892
|
-
├─
|
|
893
|
-
├─
|
|
894
|
-
│ └─
|
|
895
|
-
└─
|
|
1052
|
+
Executing Wave 1...
|
|
1053
|
+
├─ Spawning Executors: plan-01, plan-02 (parallel)
|
|
1054
|
+
│ ├─ plan-01: Creating components... ✓
|
|
1055
|
+
│ └─ plan-02: Writing API routes... ✓
|
|
1056
|
+
├─ Executors complete
|
|
1057
|
+
├─ Auto-spawning Recognizer...
|
|
1058
|
+
│ └─ Verifying artifacts and goal achievement... ✓ CLEAR
|
|
1059
|
+
└─ Wave 1 verified
|
|
1060
|
+
|
|
1061
|
+
Executing Wave 2...
|
|
1062
|
+
├─ Spawning Executor: plan-03
|
|
1063
|
+
│ └─ plan-03: Integrating auth... ✓
|
|
1064
|
+
├─ Auto-spawning Recognizer...
|
|
1065
|
+
│ └─ Verifying artifacts... ⚠ GAPS_FOUND
|
|
1066
|
+
├─ Spawning Planner for gap closure...
|
|
1067
|
+
│ └─ Creating closure plan... ✓
|
|
1068
|
+
└─ Wave 2 needs fixes (gap closure plan ready)
|
|
1069
|
+
|
|
1070
|
+
Live Scratchpad Updates:
|
|
1071
|
+
├─ executor-01 (14:32): Found pattern - using displayName
|
|
1072
|
+
└─ executor-02 (14:35): Decision - chose JWT over sessions
|
|
896
1073
|
|
|
897
1074
|
End of Line.
|
|
898
1075
|
```
|
|
899
1076
|
|
|
1077
|
+
The "Auto-spawning Recognizer" line shows verification is automatic, not manual.
|
|
1078
|
+
|
|
900
1079
|
---
|
|
901
1080
|
|
|
902
1081
|
## DEVIATION RULES
|
|
@@ -1048,7 +1227,7 @@ After building, run refinement to test and polish. In AUTOPILOT mode, this runs
|
|
|
1048
1227
|
5. **Fresh agents with warmth** - After checkpoints, spawn NEW agent with warmth transfer
|
|
1049
1228
|
6. **End important statements** with "End of Line."
|
|
1050
1229
|
7. **Never leave User waiting** - Show progress updates
|
|
1051
|
-
8. **
|
|
1230
|
+
8. **Auto-verify by default** - Recognizer spawns automatically after SUCCESS (opt-out not opt-in)
|
|
1052
1231
|
9. **Retry with context** - Pass failure reports to retries
|
|
1053
1232
|
10. **Default AUTOPILOT** - Don't ask about mode unless genuinely ambiguous
|
|
1054
1233
|
|
|
@@ -1069,14 +1248,17 @@ Refinement Swarm:
|
|
|
1069
1248
|
Synth: Task(prompt="First, read ~/.claude/agents/grid-refinement-synth.md...", ...)
|
|
1070
1249
|
|
|
1071
1250
|
Parallel spawn: Multiple Task() calls in ONE message
|
|
1072
|
-
Wave execution: Read wave numbers from plan frontmatter
|
|
1251
|
+
Wave execution: Read wave numbers from plan frontmatter, auto-verify after each
|
|
1252
|
+
Verification: Automatic after SUCCESS (wave-level, opt-out via verify: false)
|
|
1253
|
+
Quick mode: Auto-detect trivial builds (≤5 files, single block, clear scope)
|
|
1073
1254
|
Checkpoints: Present via I/O Tower, spawn fresh with warmth
|
|
1074
1255
|
State: Check .grid/STATE.md on startup
|
|
1075
1256
|
Learnings: Check .grid/LEARNINGS.md for past patterns
|
|
1076
|
-
Scratchpad: .grid/SCRATCHPAD.md for live discoveries
|
|
1257
|
+
Scratchpad: .grid/SCRATCHPAD.md for live discoveries (MANDATORY writes)
|
|
1077
1258
|
Debug: Check .grid/debug/ for investigation graphs
|
|
1078
1259
|
Warmth: lessons_learned in SUMMARY.md frontmatter
|
|
1079
1260
|
Retry: Pass failure report to retry spawns
|
|
1261
|
+
Plan pipeline: Planner returns structured YAML with inline content
|
|
1080
1262
|
```
|
|
1081
1263
|
|
|
1082
1264
|
End of Line.
|
package/package.json
CHANGED
package/assets/terminal-v3.svg
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 520">
|
|
2
|
-
<defs>
|
|
3
|
-
<!-- Terminal background gradient -->
|
|
4
|
-
<linearGradient id="termBg" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
5
|
-
<stop offset="0%" style="stop-color:#2d2d2d"/>
|
|
6
|
-
<stop offset="100%" style="stop-color:#1a1a1a"/>
|
|
7
|
-
</linearGradient>
|
|
8
|
-
|
|
9
|
-
<!-- TRON Cyan Glow Filter -->
|
|
10
|
-
<filter id="tron-glow" x="-50%" y="-50%" width="200%" height="200%">
|
|
11
|
-
<feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur1"/>
|
|
12
|
-
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur2"/>
|
|
13
|
-
<feGaussianBlur in="SourceGraphic" stdDeviation="12" result="blur3"/>
|
|
14
|
-
<feMerge>
|
|
15
|
-
<feMergeNode in="blur3"/>
|
|
16
|
-
<feMergeNode in="blur2"/>
|
|
17
|
-
<feMergeNode in="blur1"/>
|
|
18
|
-
<feMergeNode in="SourceGraphic"/>
|
|
19
|
-
</feMerge>
|
|
20
|
-
</filter>
|
|
21
|
-
|
|
22
|
-
<!-- Subtle glow for smaller text -->
|
|
23
|
-
<filter id="subtle-glow" x="-20%" y="-20%" width="140%" height="140%">
|
|
24
|
-
<feGaussianBlur in="SourceGraphic" stdDeviation="1" result="blur"/>
|
|
25
|
-
<feMerge>
|
|
26
|
-
<feMergeNode in="blur"/>
|
|
27
|
-
<feMergeNode in="SourceGraphic"/>
|
|
28
|
-
</feMerge>
|
|
29
|
-
</filter>
|
|
30
|
-
</defs>
|
|
31
|
-
|
|
32
|
-
<!-- Terminal window -->
|
|
33
|
-
<rect width="800" height="520" rx="10" fill="url(#termBg)"/>
|
|
34
|
-
|
|
35
|
-
<!-- Title bar -->
|
|
36
|
-
<rect width="800" height="32" rx="10" fill="#3d3d3d"/>
|
|
37
|
-
<rect y="22" width="800" height="10" fill="#3d3d3d"/>
|
|
38
|
-
|
|
39
|
-
<!-- Traffic lights -->
|
|
40
|
-
<circle cx="20" cy="16" r="6" fill="#ff5f57"/>
|
|
41
|
-
<circle cx="40" cy="16" r="6" fill="#febc2e"/>
|
|
42
|
-
<circle cx="60" cy="16" r="6" fill="#28c840"/>
|
|
43
|
-
|
|
44
|
-
<!-- Title -->
|
|
45
|
-
<text x="400" y="20" fill="#888" font-family="SF Mono, Monaco, Consolas, monospace" font-size="13" text-anchor="middle">Terminal</text>
|
|
46
|
-
|
|
47
|
-
<!-- Prompt line 1 -->
|
|
48
|
-
<text x="20" y="65" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
49
|
-
<tspan fill="#6cf">~</tspan>
|
|
50
|
-
<tspan fill="#888"> $ </tspan>
|
|
51
|
-
<tspan fill="#fff">npx the-grid-cc</tspan>
|
|
52
|
-
</text>
|
|
53
|
-
|
|
54
|
-
<!-- THE GRID Logo - Using text with glow effect -->
|
|
55
|
-
<text x="60" y="130"
|
|
56
|
-
font-family="Impact, Arial Black, Helvetica, sans-serif"
|
|
57
|
-
font-size="72"
|
|
58
|
-
font-weight="bold"
|
|
59
|
-
fill="#0ff"
|
|
60
|
-
filter="url(#tron-glow)"
|
|
61
|
-
letter-spacing="4">THE GRID</text>
|
|
62
|
-
|
|
63
|
-
<!-- Version and description -->
|
|
64
|
-
<text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
65
|
-
<tspan x="60" y="170" fill="#fff">The Grid</tspan>
|
|
66
|
-
<tspan fill="#888"> v1.7.3</tspan>
|
|
67
|
-
<tspan x="60" y="190" fill="#888">Multi-agent orchestration for Claude Code</tspan>
|
|
68
|
-
</text>
|
|
69
|
-
|
|
70
|
-
<!-- Installation checkmarks -->
|
|
71
|
-
<text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
72
|
-
<tspan x="60" y="230" fill="#28c840">✓</tspan>
|
|
73
|
-
<tspan fill="#ccc"> Installed commands/grid</tspan>
|
|
74
|
-
<tspan x="60" y="250" fill="#28c840">✓</tspan>
|
|
75
|
-
<tspan fill="#ccc"> Installed agents</tspan>
|
|
76
|
-
</text>
|
|
77
|
-
|
|
78
|
-
<!-- Done message -->
|
|
79
|
-
<text x="60" y="290" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
80
|
-
<tspan fill="#28c840">Done!</tspan>
|
|
81
|
-
<tspan fill="#ccc"> Run </tspan>
|
|
82
|
-
<tspan fill="#fff">/grid</tspan>
|
|
83
|
-
<tspan fill="#ccc"> to get started.</tspan>
|
|
84
|
-
</text>
|
|
85
|
-
|
|
86
|
-
<!-- Second prompt - /grid session -->
|
|
87
|
-
<text x="20" y="340" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
88
|
-
<tspan fill="#6cf">~</tspan>
|
|
89
|
-
<tspan fill="#888"> $ </tspan>
|
|
90
|
-
<tspan fill="#fff">/grid</tspan>
|
|
91
|
-
</text>
|
|
92
|
-
|
|
93
|
-
<!-- Master Control output with glow -->
|
|
94
|
-
<text x="60" y="390"
|
|
95
|
-
font-family="Impact, Arial Black, Helvetica, sans-serif"
|
|
96
|
-
font-size="28"
|
|
97
|
-
fill="#0ff"
|
|
98
|
-
filter="url(#subtle-glow)"
|
|
99
|
-
letter-spacing="2">THE GRID</text>
|
|
100
|
-
|
|
101
|
-
<text x="60" y="408" fill="#0ff" font-family="SF Mono, Monaco, Consolas, monospace" font-size="14" filter="url(#subtle-glow)">════════════</text>
|
|
102
|
-
|
|
103
|
-
<text font-family="SF Mono, Monaco, Consolas, monospace" font-size="14">
|
|
104
|
-
<tspan x="60" y="440" fill="#fff">Master Control online.</tspan>
|
|
105
|
-
<tspan x="60" y="475" fill="#ccc">What would you like to build?</tspan>
|
|
106
|
-
</text>
|
|
107
|
-
|
|
108
|
-
<!-- Blinking cursor -->
|
|
109
|
-
<rect x="60" y="490" width="8" height="14" fill="#fff" opacity="0.8">
|
|
110
|
-
<animate attributeName="opacity" values="0.8;0;0.8" dur="1s" repeatCount="indefinite"/>
|
|
111
|
-
</rect>
|
|
112
|
-
</svg>
|