meow-swarm 0.2.0 → 0.4.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/.claude/scheduled_tasks.json +3 -0
- package/.claude/scheduled_tasks.lock +1 -0
- package/.claude/settings.local.json +45 -0
- package/380 +0 -0
- package/LICENSE +21 -21
- package/README.md +58 -83
- package/dist/bin/meow-eval.js +1058 -0
- package/dist/bin/meow-mcp.js +26258 -0
- package/dist/bin/meow-skills.js +297 -0
- package/dist/bin/meow.js +30533 -0
- package/eslint.config.js +25 -25
- package/meow.db +0 -0
- package/meow.db-shm +0 -0
- package/meow.db-wal +0 -0
- package/package.json +83 -75
- package/dist/index.js +0 -6317
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"sessionId":"8ee49b11-9dbb-4c1b-8ed5-82d6e9023eaa","pid":492208,"procStart":"639150108404627040","acquiredAt":1779526818153}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(gh pr *)",
|
|
5
|
+
"Bash(npx vitest *)",
|
|
6
|
+
"Bash(git add *)",
|
|
7
|
+
"Bash(git commit -m ' *)",
|
|
8
|
+
"Bash(git push *)",
|
|
9
|
+
"Bash(git checkout *)",
|
|
10
|
+
"Bash(git rm *)",
|
|
11
|
+
"Bash(npm run *)",
|
|
12
|
+
"Bash(npm test *)",
|
|
13
|
+
"Bash(echo \"EXIT:$?\")",
|
|
14
|
+
"Read(//c/Users/stanc/github/meow/src/**)",
|
|
15
|
+
"Read(//c/Users/stanc/github/meow/src/ai_loop/**)",
|
|
16
|
+
"Bash(git -C ~/github/meow status --short)",
|
|
17
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" status)",
|
|
18
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" log --oneline -3)",
|
|
19
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" checkout -b docs/refactor-structure)",
|
|
20
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" log --oneline -5)",
|
|
21
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" push --no-verify -u origin docs/refactor-structure)",
|
|
22
|
+
"Bash(git -C \"C:\\\\Users\\\\stanc\\\\github\\\\meow\" diff README.md)",
|
|
23
|
+
"Bash(git commit --no-verify -m 'docs: simplify README to plain description *)",
|
|
24
|
+
"Bash(meow -p \"Create a repository map document and save it to docs/repo-map.md. The map should cover the top-level directories and key files, their purpose, and how they relate to each other. Format it as a clear reference guide for someone reading the codebase.\")",
|
|
25
|
+
"Bash(node dist/bin/meow.js -p \"Fix BUG-01: vec_memory integer primary key crash. Symptom: 'SqliteError: Only integers are allowed for primary key values on vec_memory' fires 7-10x per session. Root cause: the vec_memory table \\(sqlite-vec\\) requires integer PKs but inserts are passing a non-integer \\(UUID/string\\). Fix: use INTEGER PRIMARY KEY AUTOINCREMENT for the vec_memory table, store the UUID as a separate column. File: src/agent/memory.ts or wherever vec_memory rows are inserted. After fixing: run npm test to confirm no regressions, then mark BUG-01 closed in docs/STATUS.md and check its checkbox in docs/ROADMAP.md.\")",
|
|
26
|
+
"Bash(node dist/bin/meow.js --tui)",
|
|
27
|
+
"Read(//tmp/**)",
|
|
28
|
+
"Bash(xargs wc -l)",
|
|
29
|
+
"Bash(ls -lah /c/Users/stanc/AppData/Local/Temp/claude/*/tasks/bze8v5iiq.output 2>/dev/null | head -5 && echo \"---\" && wc -l /c/Users/stanc/AppData/Local/Temp/claude/*/tasks/bze8v5iiq.output 2>/dev/null)",
|
|
30
|
+
"Bash(git commit -m 'fix: resolve BUG-01 vec_memory integer PK crash by using correct sqlite-vec API vec0_insert\\(\\) *)",
|
|
31
|
+
"Bash(git commit -m 'fix: resolve BUG-02 fixMeow\\(\\) timeout on Windows by using exec\\(\\) instead of spawn\\(\\) *)",
|
|
32
|
+
"Bash(git commit -m 'docs: remove BUG-02 warning from CLAUDE.md \\(fixed in e0cfe07\\) *)",
|
|
33
|
+
"Bash(git commit -m 'chore: clean up .env — remove duplicate and non-standard variables *)",
|
|
34
|
+
"Bash(python3 -c ' *)",
|
|
35
|
+
"Bash(git clone *)",
|
|
36
|
+
"Bash(curl -s -o /dev/null -w \"%{http_code}\" https://biosphere-gateway-24qvfiqipa-uc.a.run.app/anthropic/v1/messages)",
|
|
37
|
+
"Bash(curl -s https://biosphere-gateway-24qvfiqipa-uc.a.run.app/)",
|
|
38
|
+
"Bash(curl -s -X POST https://biosphere-gateway-24qvfiqipa-uc.a.run.app/anthropic/v1/messages -H 'Authorization: Bearer sk-ant-api03-y7XcGi4-O5TQQIxzDR9OEWSQaIf9Lx5NPlSBsTPEj4BdjSljxUJCfSsdHQi4UvYy7KOizFUKv3GLmkyZ9-wVhFj4LZOsfP4' -H 'Content-Type: application/json' -H 'anthropic-version: 2023-01-01' -d '{\"model\":\"MiniMax-M2.7\",\"max_tokens\":10,\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}')",
|
|
39
|
+
"Bash(curl -s -X POST https://biosphere-gateway-24qvfiqipa-uc.a.run.app/anthropic/v1/messages -H 'Authorization: sk-ant-api03-y7XcGi4-O5TQQIxzDR9OEWSQaIf9Lx5NPlSBsTPEj4BdjSljxUJCfSsdHQi4UvYy7KOizFUKv3GLmkyZ9-wVhFj4LZOsfP4' -H 'Content-Type: application/json' -H 'anthropic-version: 2023-01-01' -d '{\"model\":\"MiniMax-M2.7\",\"max_tokens\":10,\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}')",
|
|
40
|
+
"Bash(curl -s -X POST https://biosphere-gateway-24qvfiqipa-uc.a.run.app/anthropic/v1/messages -H 'Authorization: Bearer sk-ant-api03-y7XcGi4-O5TQQIxzDR9OEWSQaIf9Lx5NPlSBsTPEj4BdjSljxUJCfSsdHQi4UvYy7KOizFUKv3GLmkyZ9-wVhFj4LZOsfP4' -H 'Content-Type: application/json' -H 'anthropic-version: 2023-01-01' -d '{\"model\":\"MiniMax-M2.7\",\"max_tokens\":5,\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}')",
|
|
41
|
+
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('OK:', d.get\\('type', d\\)\\)\")",
|
|
42
|
+
"Bash(curl -s -X POST https://biosphere-gateway-24qvfiqipa-uc.a.run.app/anthropic/v1/messages -H 'Authorization: Bearer sk-ant-api03-y7XcGi4-O5TQQIxzDR9OEWSQaIf9Lx5NPlSBsTPEj4BdjSljxUJCfSsdHQi4UvYy7KOizFUKv3GLmkyZ9-wVhFj4LZOsfP4' -H 'x-api-key: sk-ant-api03-y7XcGi4-O5TQQIxzDR9OEWSQaIf9Lx5NPlSBsTPEj4BdjSljxUJCfSsdHQi4UvYy7KOizFUKv3GLmkyZ9-wVhFj4LZOsfP4' -H 'Content-Type: application/json' -H 'anthropic-version: 2023-01-01' -d '{\"model\":\"MiniMax-M2.7\",\"max_tokens\":5,\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}')"
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
}
|
package/380
ADDED
|
File without changes
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 stancsz
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 stancsz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,111 +1,86 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Meow-Swarm
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A background coding harness that runs autonomous coding tasks while you sleep. You dispatch a task, it runs in the background, and you check back later via TUI or state files.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
npm install -g meow-swarm
|
|
9
|
-
meow -p "refactor auth into its own service"
|
|
5
|
+
```
|
|
6
|
+
meow -p "fix the auth bug in src/auth.ts"
|
|
7
|
+
# → background task dispatched, check back later with `meow --tui`
|
|
10
8
|
```
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
## How it works
|
|
11
|
+
|
|
12
|
+
Meow-Swarm is a **background daemon** for coding tasks — think `nohup ./worker.sh &` but for AI coding agents:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
1. **Dispatch** — Run `meow -p "your task"` and it immediately returns
|
|
15
|
+
2. **Work** — The swarm picks tasks from a queue, runs them, checkpoints progress to SQLite
|
|
16
|
+
3. **Monitor** — Watch progress via `meow --tui` (real-time dashboard) or `meow` (REPL)
|
|
17
|
+
4. **Recover** — Crashes and restarts don't lose work; interrupted tasks resume from the last checkpoint
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
## Quick start
|
|
17
20
|
|
|
18
21
|
```bash
|
|
22
|
+
# Install (Node.js 18+ required)
|
|
19
23
|
npm install -g meow-swarm
|
|
20
|
-
export ANTHROPIC_API_KEY=sk-ant-... # or set in shell profile
|
|
21
|
-
|
|
22
|
-
# Primary: headless (no TTY required) — designed for scripts, CI, or background dispatch
|
|
23
|
-
meow -p "fix the race condition in src/queue.ts"
|
|
24
|
-
|
|
25
|
-
# Interactive TUI dashboard
|
|
26
|
-
meow --tui
|
|
27
|
-
|
|
28
|
-
# Interactive REPL
|
|
29
|
-
meow
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Bun is not supported. `better-sqlite3` requires Node.js native addons.
|
|
33
24
|
|
|
34
|
-
|
|
25
|
+
# Configure API key (Anthropic)
|
|
26
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
35
27
|
|
|
36
|
-
|
|
28
|
+
# Dispatch a task (runs in background)
|
|
29
|
+
meow -p "add user registration to the API"
|
|
37
30
|
|
|
31
|
+
# Monitor progress
|
|
32
|
+
meow --tui
|
|
38
33
|
```
|
|
39
|
-
you → meow -p "task" → background → checkpoint → quality gate → done
|
|
40
|
-
↓ stuck?
|
|
41
|
-
retry / adapt / stop + report
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
1. **Receives a task** via `meow -p` (headless, no TTY) or `meow` (interactive REPL)
|
|
45
|
-
2. **Dispatches to L4 specialist** (Claude Code subprocess)
|
|
46
|
-
3. **Mission reviewer scores output** across 7 criteria
|
|
47
|
-
4. **Quality gate** — if output fails, it retries with reviewer notes
|
|
48
|
-
5. **Convergence check** — stops if stagnating, budget exceeded, or diminishing returns
|
|
49
|
-
6. **Checkpoints state** to SQLite after every iteration — crash-safe
|
|
50
|
-
7. **TUI dashboard** shows live task progress, queue, and history
|
|
51
34
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
## Self-healing: the MEOW-3-RULE
|
|
55
|
-
|
|
56
|
-
When `meow -p` fails 3 times, it doesn't just give up. It surfaces a diagnostic:
|
|
35
|
+
## Architecture
|
|
57
36
|
|
|
58
37
|
```
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
38
|
+
meow -p "task" # CLI entry → task queued in SQLite
|
|
39
|
+
↓
|
|
40
|
+
[L1 Liaison] # Validates and decomposes task
|
|
41
|
+
↓
|
|
42
|
+
[L2 Architect] # Breaks into subtasks, resolves dependencies
|
|
43
|
+
↓
|
|
44
|
+
[L3 SwarmManager] # Spawns specialist agents (Claude Code subprocesses)
|
|
45
|
+
↓
|
|
46
|
+
[Sandbox Gate] # Blocks dangerous shell commands (rm -rf, etc.)
|
|
47
|
+
↓
|
|
48
|
+
[Mission Reviewer] # Scores result against 7 quality criteria
|
|
49
|
+
↓
|
|
50
|
+
[L4 Auditor] # Final verification, checkpoints to SQLite
|
|
64
51
|
```
|
|
65
52
|
|
|
66
|
-
|
|
53
|
+
- **Specialist agents** are Claude Code subprocesses that work on subtasks
|
|
54
|
+
- **Checkpointing** means crashes are recoverable — tasks resume where they left off
|
|
55
|
+
- **Safety sandbox** blocks destructive operations before they run
|
|
56
|
+
- **Multi-agent coordination** via SQLite-backed task claims (no two agents work on the same task)
|
|
67
57
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## Quality gates
|
|
58
|
+
## Key features
|
|
71
59
|
|
|
72
|
-
|
|
60
|
+
- **Crash-safe** — SQLite checkpointing survives power failures and restarts
|
|
61
|
+
- **Process cleanup** — Stuck subprocesses are killed (Windows `taskkill /f /t`, POSIX `SIGKILL`)
|
|
62
|
+
- **Safety gates** — Dangerous shell commands blocked before execution
|
|
63
|
+
- **Recovery mode** — `meow --continue` replays stranded tasks on boot
|
|
64
|
+
- **TUI dashboard** — Real-time monitoring of agent status, token costs, and task progress
|
|
73
65
|
|
|
74
|
-
|
|
75
|
-
|------|--------|---------|
|
|
76
|
-
| `NO_MOCKS` | No `TODO`, `FIXME`, placeholder code | Retry with note |
|
|
77
|
-
| `TYPE_CHECK` | `tsc --noEmit` passes | Retry |
|
|
78
|
-
| `LINT_CLEAN` | ESLint 0 errors | Retry |
|
|
79
|
-
| `MISSION_COMPLETE` | Goal keywords present in output | Retry |
|
|
80
|
-
| `SOP_COMPLIANCE` | Think-Plan-Verify pattern | Retry |
|
|
66
|
+
## Commands
|
|
81
67
|
|
|
82
|
-
|
|
68
|
+
| Command | Description |
|
|
69
|
+
|---------|-------------|
|
|
70
|
+
| `meow -p "task"` | Dispatch task (headless, returns immediately) |
|
|
71
|
+
| `meow` | Interactive REPL |
|
|
72
|
+
| `meow --tui` | Terminal dashboard |
|
|
73
|
+
| `meow --continue` | Resume stranded tasks after a crash |
|
|
83
74
|
|
|
84
75
|
## Configuration
|
|
85
76
|
|
|
86
|
-
| Variable | Default |
|
|
87
|
-
|
|
88
|
-
| `ANTHROPIC_API_KEY` |
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `MEOW_MODE` | `SEQUENTIAL` | `SEQUENTIAL` · `PARALLEL` · `SHIP` · `AUDIT_ONLY` |
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Architecture
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
L1 LIAISON — Receives tasks, escalates ambiguity to human
|
|
100
|
-
L2 ARCHITECT — Breaks tasks, sequences dependencies
|
|
101
|
-
L3 ORCHESTRATOR — Task queue, convergence checks, dispatch
|
|
102
|
-
L4 SPECIALISTS — Claude Code subprocesses (can be swapped)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
State is checkpointed to SQLite after every operation. If the process dies, the next invocation resumes from the last checkpoint.
|
|
77
|
+
| Variable | Default | Description |
|
|
78
|
+
|----------|---------|-------------|
|
|
79
|
+
| `ANTHROPIC_API_KEY` | required | API key for the LLM |
|
|
80
|
+
| `ANTHROPIC_MODEL` | `claude-sonnet-4` | Model to use |
|
|
81
|
+
| `MEOW_DB` | `meow.db` | SQLite database path |
|
|
82
|
+
| `MEOW_MODE` | `SEQUENTIAL` | `SEQUENTIAL`, `PARALLEL`, or `SHIP` |
|
|
106
83
|
|
|
107
84
|
---
|
|
108
85
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
MIT
|
|
86
|
+
See `.env.example` for configuration options.
|