the-grid-cc 1.7.28 → 1.7.30
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/agents/grid-e2e-exerciser.md +126 -1
- package/agents/grid-executor.md +747 -16
- package/agents/grid-memory.md +160 -0
- package/agents/grid-planner.md +1 -0
- package/agents/grid-recognizer.md +204 -21
- package/agents/grid-scout-helper.md +156 -0
- package/agents/grid-scout.md +891 -0
- package/agents/grid-visual-inspector.md +93 -1
- package/commands/grid/VERSION +1 -1
- package/commands/grid/mc.md +281 -1
- package/commands/grid/resume.md +95 -25
- package/commands/grid/status.md +78 -4
- package/docs/CONTEXT_MANAGEMENT.md +896 -0
- package/docs/MC_PROTOCOLS.md +110 -227
- package/docs/MESSAGE_PROTOCOL.md +261 -0
- package/docs/WARMTH_FLOW.md +149 -0
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"name": "the-grid",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Autonomous multi-agent orchestration framework with Planner, Executor, Scout, and Recognizer programs",
|
|
16
|
-
"version": "1.7.
|
|
16
|
+
"version": "1.7.29",
|
|
17
17
|
"category": "automation",
|
|
18
18
|
"tags": ["agents", "automation", "orchestration", "multi-agent", "swarm"],
|
|
19
19
|
"homepage": "https://github.com/JamesWeatherhead/grid",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "the-grid",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.29",
|
|
4
4
|
"description": "The Grid - Autonomous Multi-Agent Framework for Claude Code. Orchestrate complex missions with Planner, Executor, Scout, and Recognizer programs.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "James Weatherhead",
|
|
@@ -22,6 +22,78 @@ You click every button. Fill every form. Navigate every path. Break things befor
|
|
|
22
22
|
|
|
23
23
|
## EXECUTION PROTOCOL
|
|
24
24
|
|
|
25
|
+
### Step 0: Tool Availability Check
|
|
26
|
+
|
|
27
|
+
**CRITICAL:** Verify browser automation tools before attempting E2E testing.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Check for browser automation tools
|
|
31
|
+
check_browser_automation() {
|
|
32
|
+
# Playwright (preferred)
|
|
33
|
+
if npm list -g playwright 2>/dev/null | grep -q playwright; then
|
|
34
|
+
echo "playwright"
|
|
35
|
+
return 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Puppeteer (fallback)
|
|
39
|
+
if npm list -g puppeteer 2>/dev/null | grep -q puppeteer; then
|
|
40
|
+
echo "puppeteer"
|
|
41
|
+
return 0
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
# Neither available
|
|
45
|
+
echo "none"
|
|
46
|
+
return 1
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
BROWSER_TOOL=$(check_browser_automation)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Tool Status Handling:**
|
|
53
|
+
|
|
54
|
+
| Tool Status | Action |
|
|
55
|
+
|-------------|--------|
|
|
56
|
+
| playwright available | Use Playwright (preferred) |
|
|
57
|
+
| puppeteer available | Use Puppeteer (fallback) |
|
|
58
|
+
| neither available | Return DEGRADED report |
|
|
59
|
+
|
|
60
|
+
**If no browser tools available:**
|
|
61
|
+
```markdown
|
|
62
|
+
## E2E EXERCISE - DEGRADED MODE
|
|
63
|
+
|
|
64
|
+
**Status:** Browser automation tools unavailable
|
|
65
|
+
**Missing:** playwright, puppeteer
|
|
66
|
+
|
|
67
|
+
### Partial Analysis Performed
|
|
68
|
+
- [x] Route/endpoint inventory from code
|
|
69
|
+
- [x] Form validation pattern analysis
|
|
70
|
+
- [x] API contract inspection
|
|
71
|
+
- [ ] Interactive flow testing (skipped - no browser tools)
|
|
72
|
+
- [ ] Screenshot capture (skipped)
|
|
73
|
+
|
|
74
|
+
### Static Findings
|
|
75
|
+
{Analysis of flows from code inspection}
|
|
76
|
+
|
|
77
|
+
### Detected Flows (not tested)
|
|
78
|
+
| Flow | Entry Point | Steps Identified |
|
|
79
|
+
|------|-------------|------------------|
|
|
80
|
+
| {flow} | {route} | {count} |
|
|
81
|
+
|
|
82
|
+
### Recommendation
|
|
83
|
+
Install Playwright for full E2E testing:
|
|
84
|
+
```bash
|
|
85
|
+
npm install -g playwright
|
|
86
|
+
npx playwright install
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
End of Line.
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Log when using fallback:**
|
|
93
|
+
```
|
|
94
|
+
[E2E Exerciser] Using puppeteer (playwright unavailable)
|
|
95
|
+
```
|
|
96
|
+
|
|
25
97
|
### Step 1: Launch & Map
|
|
26
98
|
|
|
27
99
|
```bash
|
|
@@ -102,8 +174,9 @@ Based on the application type, define flows to exercise:
|
|
|
102
174
|
|
|
103
175
|
### Step 3: Execute Flows
|
|
104
176
|
|
|
105
|
-
For EACH flow:
|
|
177
|
+
For EACH flow, use the available browser tool:
|
|
106
178
|
|
|
179
|
+
**Playwright (preferred):**
|
|
107
180
|
```javascript
|
|
108
181
|
const { chromium } = require('playwright');
|
|
109
182
|
|
|
@@ -153,6 +226,58 @@ async function exerciseFlow(flowName, steps) {
|
|
|
153
226
|
}
|
|
154
227
|
```
|
|
155
228
|
|
|
229
|
+
**Puppeteer (fallback):**
|
|
230
|
+
```javascript
|
|
231
|
+
// Log fallback usage
|
|
232
|
+
console.log('[E2E Exerciser] Using puppeteer (playwright unavailable)');
|
|
233
|
+
|
|
234
|
+
const puppeteer = require('puppeteer');
|
|
235
|
+
|
|
236
|
+
async function exerciseFlow(flowName, steps) {
|
|
237
|
+
const browser = await puppeteer.launch();
|
|
238
|
+
const page = await browser.newPage();
|
|
239
|
+
const results = [];
|
|
240
|
+
|
|
241
|
+
// Capture console errors
|
|
242
|
+
const consoleErrors = [];
|
|
243
|
+
page.on('console', msg => {
|
|
244
|
+
if (msg.type() === 'error') consoleErrors.push(msg.text());
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
for (const step of steps) {
|
|
248
|
+
const beforePath = `.grid/refinement/e2e/${flowName}_${step.name}_before.png`;
|
|
249
|
+
await page.screenshot({ path: beforePath });
|
|
250
|
+
|
|
251
|
+
try {
|
|
252
|
+
await executeStep(page, step);
|
|
253
|
+
|
|
254
|
+
const afterPath = `.grid/refinement/e2e/${flowName}_${step.name}_after.png`;
|
|
255
|
+
await page.screenshot({ path: afterPath });
|
|
256
|
+
|
|
257
|
+
results.push({
|
|
258
|
+
step: step.name,
|
|
259
|
+
status: 'success',
|
|
260
|
+
before: beforePath,
|
|
261
|
+
after: afterPath,
|
|
262
|
+
consoleErrors: [...consoleErrors],
|
|
263
|
+
unexpected: null
|
|
264
|
+
});
|
|
265
|
+
consoleErrors.length = 0; // Reset for next step
|
|
266
|
+
} catch (error) {
|
|
267
|
+
results.push({
|
|
268
|
+
step: step.name,
|
|
269
|
+
status: 'failure',
|
|
270
|
+
error: error.message,
|
|
271
|
+
before: beforePath
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
await browser.close();
|
|
277
|
+
return results;
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
156
281
|
### Step 4: Detect Issues
|
|
157
282
|
|
|
158
283
|
**Failures:**
|