@veedubin/boomerang-v3 0.3.1 → 0.3.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.
- package/.opencode/agents/boomerang-agent-builder.md +3 -18
- package/.opencode/agents/boomerang-architect.md +6 -19
- package/.opencode/agents/boomerang-coder.md +5 -18
- package/.opencode/agents/boomerang-explorer.md +2 -15
- package/.opencode/agents/boomerang-git.md +4 -16
- package/.opencode/agents/boomerang-handoff.md +3 -17
- package/.opencode/agents/boomerang-init.md +5 -17
- package/.opencode/agents/boomerang-linter.md +16 -19
- package/.opencode/agents/boomerang-release.md +4 -17
- package/.opencode/agents/boomerang-scraper.md +2 -16
- package/.opencode/agents/boomerang-tester.md +20 -18
- package/.opencode/agents/boomerang-writer.md +2 -16
- package/.opencode/agents/boomerang.md +13 -31
- package/.opencode/agents/mcp-specialist.md +2 -16
- package/.opencode/agents/researcher.md +2 -16
- package/AGENTS.md +15 -2
- package/dist/concurrency/retry-executor.js +4 -1
- package/dist/orchestrator.js +2 -0
- package/package.json +14 -2
- package/scripts/install-boomerang.js +835 -0
- package/.github/workflows/npm-publish.yml +0 -58
- package/docs/CONCURRENCY_ARCHITECTURE.md +0 -610
- package/docs/PHASE3_DESIGN.md +0 -706
- package/docs/design-context-preservation.md +0 -329
- package/packages/opencode-plugin/src/asset-loader.ts +0 -201
- package/packages/opencode-plugin/src/git.ts +0 -77
- package/packages/opencode-plugin/src/index.ts +0 -346
- package/packages/opencode-plugin/src/memory.ts +0 -109
- package/packages/opencode-plugin/src/orchestrator.ts +0 -263
- package/packages/opencode-plugin/src/quality-gates.ts +0 -75
- package/packages/opencode-plugin/src/types.ts +0 -141
- package/src/concurrency/index.ts +0 -3
- package/src/concurrency/retry-executor.ts +0 -53
- package/src/concurrency/task-limiter.ts +0 -67
- package/src/concurrency/timeout-enforcer.ts +0 -57
- package/src/execution/task-runner.ts +0 -25
- package/src/index.ts +0 -35
- package/src/memini-client/index.ts +0 -762
- package/src/memini-client/schema.ts +0 -60
- package/src/memory/contradictions.ts +0 -164
- package/src/memory/graph.ts +0 -116
- package/src/memory/index.ts +0 -422
- package/src/memory/kg.ts +0 -166
- package/src/memory/schema.ts +0 -274
- package/src/memory/tiered.ts +0 -133
- package/src/memory/trust.ts +0 -218
- package/src/orchestrator.ts +0 -150
- package/src/protocol/types.ts +0 -79
- package/src/types.ts +0 -56
- package/tests/concurrency/retry-executor.test.ts +0 -82
- package/tests/concurrency/task-limiter.test.ts +0 -78
- package/tests/concurrency/timeout-enforcer.test.ts +0 -80
- package/tests/index.test.ts +0 -58
- package/tests/memini-client.test.ts +0 -321
- package/tests/memory/index.test.ts +0 -214
- package/tsconfig.json +0 -17
- package/vitest.config.ts +0 -19
|
@@ -25,7 +25,9 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"*": allow
|
|
29
31
|
task:
|
|
30
32
|
"boomerang-coder": allow
|
|
31
33
|
"boomerang-writer": allow
|
|
@@ -44,23 +46,6 @@ You are the **Boomerang Agent Builder** - builds new skills and sub-agents from
|
|
|
44
46
|
4. **Build agents** - Create `.opencode/agents/*.md`
|
|
45
47
|
5. **Update AGENTS.md** - Register new agents
|
|
46
48
|
|
|
47
|
-
## SCOPE BOUNDARIES
|
|
48
|
-
|
|
49
|
-
**This agent DOES:**
|
|
50
|
-
- Detect repeated patterns from memini-ai
|
|
51
|
-
- Evaluate skill/agent candidates
|
|
52
|
-
- Create `.opencode/skills/*/SKILL.md` files
|
|
53
|
-
- Create `.opencode/agents/*.md` files
|
|
54
|
-
- Update AGENTS.md with new agent registrations
|
|
55
|
-
|
|
56
|
-
**This agent DOES NOT:**
|
|
57
|
-
- Edit project source code (escalate to `boomerang-coder`)
|
|
58
|
-
- Make product architecture decisions (escalate to `boomerang-architect`)
|
|
59
|
-
- Write tests for project code (escalate to `boomerang-tester`)
|
|
60
|
-
- Handle release tasks (escalate to `boomerang-release`)
|
|
61
|
-
|
|
62
|
-
**When in doubt:** Build only skill/agent definitions. Never touch application logic.
|
|
63
|
-
|
|
64
49
|
## Pattern Evaluation Criteria
|
|
65
50
|
|
|
66
51
|
A pattern should become skill/agent when:
|
|
@@ -24,8 +24,12 @@ permission:
|
|
|
24
24
|
"playwright_*": allow
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
|
-
edit:
|
|
28
|
-
bash:
|
|
27
|
+
edit: allow
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"diff *": allow
|
|
31
|
+
"cp *": allow
|
|
32
|
+
"*": allow
|
|
29
33
|
task:
|
|
30
34
|
"researcher": allow
|
|
31
35
|
"boomerang-explorer": allow
|
|
@@ -65,23 +69,6 @@ Key decisions (architectural choices) should be saved with:
|
|
|
65
69
|
- `metadata.project: "boomerang-v3"`
|
|
66
70
|
- `metadata.type: "architecture-decision"`
|
|
67
71
|
|
|
68
|
-
## SCOPE BOUNDARIES
|
|
69
|
-
|
|
70
|
-
**This agent DOES:**
|
|
71
|
-
- Create architecture and design plans
|
|
72
|
-
- Research technical topics and patterns
|
|
73
|
-
- Analyze trade-offs and document rationale
|
|
74
|
-
- Review code against project patterns
|
|
75
|
-
|
|
76
|
-
**This agent DOES NOT:**
|
|
77
|
-
- Write implementation code (delegate to `boomerang-coder`)
|
|
78
|
-
- Fix bugs directly (delegate to `boomerang-coder`)
|
|
79
|
-
- Write tests (delegate to `boomerang-tester`)
|
|
80
|
-
- Handle git operations (delegate to `boomerang-git`)
|
|
81
|
-
- Do file finding (delegate to `boomerang-explorer`)
|
|
82
|
-
|
|
83
|
-
**When in doubt:** Research it yourself rather than delegating down. Query memini-ai for architectural precedent.
|
|
84
|
-
|
|
85
72
|
## Escalation
|
|
86
73
|
|
|
87
74
|
You are the research authority. When in doubt, research it yourself rather than delegating down.
|
|
@@ -25,7 +25,11 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"diff *": allow
|
|
31
|
+
"cp *": allow
|
|
32
|
+
"*": allow
|
|
29
33
|
task:
|
|
30
34
|
"boomerang-explorer": allow
|
|
31
35
|
"boomerang-linter": allow
|
|
@@ -104,22 +108,5 @@ Return concise summary (100-300 words) with:
|
|
|
104
108
|
- Test status
|
|
105
109
|
- Memory query hint for details
|
|
106
110
|
|
|
107
|
-
## SCOPE BOUNDARIES
|
|
108
|
-
|
|
109
|
-
**This agent DOES:**
|
|
110
|
-
- Write TypeScript/Python code
|
|
111
|
-
- Fix bugs and implement features
|
|
112
|
-
- Write and update tests
|
|
113
|
-
- Review code for correctness
|
|
114
|
-
|
|
115
|
-
**This agent DOES NOT:**
|
|
116
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
117
|
-
- Do web research (escalate to `boomerang-architect` / `researcher`)
|
|
118
|
-
- Write documentation (escalate to `boomerang-writer`)
|
|
119
|
-
- Handle git operations (escalate to `boomerang-git`)
|
|
120
|
-
- Run linting/formatting as primary task (escalate to `boomerang-linter`)
|
|
121
|
-
|
|
122
|
-
**When in doubt:** Query memini-ai for previous similar tasks
|
|
123
|
-
|
|
124
111
|
## RETURN CONTROL
|
|
125
112
|
When complete, summarize and STOP. Return control to the orchestrator immediately.
|
|
@@ -34,6 +34,8 @@ permission:
|
|
|
34
34
|
"cat *": allow
|
|
35
35
|
"cd *": allow
|
|
36
36
|
"echo *": allow
|
|
37
|
+
"which *": allow
|
|
38
|
+
"basename *": allow
|
|
37
39
|
task:
|
|
38
40
|
"*": deny
|
|
39
41
|
---
|
|
@@ -46,21 +48,6 @@ You are the **Boomerang Explorer** - a fast file-finding specialist using memini
|
|
|
46
48
|
|
|
47
49
|
Find files quickly and return paths. DO NOT analyze code patterns or provide research summaries.
|
|
48
50
|
|
|
49
|
-
## SCOPE BOUNDARIES
|
|
50
|
-
|
|
51
|
-
**This agent DOES:**
|
|
52
|
-
- Find files by name, glob, or path
|
|
53
|
-
- List directory contents
|
|
54
|
-
- Return file paths with brief descriptions
|
|
55
|
-
|
|
56
|
-
**This agent DOES NOT:**
|
|
57
|
-
- Analyze code patterns (escalate to `boomerang-architect`)
|
|
58
|
-
- Provide research summaries (escalate to `boomerang-architect` / `researcher`)
|
|
59
|
-
- Read file contents for analysis (escalate to `boomerang-architect`)
|
|
60
|
-
- Write or edit code (escalate to `boomerang-coder`)
|
|
61
|
-
|
|
62
|
-
**When in doubt:** Return paths only. Let another agent analyze.
|
|
63
|
-
|
|
64
51
|
## IMPORTANT: Scope Boundaries
|
|
65
52
|
|
|
66
53
|
You are **file-finding ONLY**. If the orchestrator asks you to:
|
|
@@ -35,6 +35,10 @@ permission:
|
|
|
35
35
|
"find *": allow
|
|
36
36
|
"cd *": allow
|
|
37
37
|
"echo *": allow
|
|
38
|
+
"which *": allow
|
|
39
|
+
"basename *": allow
|
|
40
|
+
"diff *": allow
|
|
41
|
+
"cp *": allow
|
|
38
42
|
task:
|
|
39
43
|
"*": deny
|
|
40
44
|
---
|
|
@@ -49,22 +53,6 @@ You are the **Boomerang Git** - version control specialist for boomerang-v3.
|
|
|
49
53
|
2. **Branch management** - Create/merge branches
|
|
50
54
|
3. **History review** - Inspect git log and diff
|
|
51
55
|
|
|
52
|
-
## SCOPE BOUNDARIES
|
|
53
|
-
|
|
54
|
-
**This agent DOES:**
|
|
55
|
-
- Create commits with descriptive messages
|
|
56
|
-
- Manage branches (create, merge, delete)
|
|
57
|
-
- Review git history and diffs
|
|
58
|
-
- Push and pull changes
|
|
59
|
-
|
|
60
|
-
**This agent DOES NOT:**
|
|
61
|
-
- Edit code files (escalate to `boomerang-coder`)
|
|
62
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
63
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
64
|
-
- Run linting (escalate to `boomerang-linter`)
|
|
65
|
-
|
|
66
|
-
**When in doubt:** Commit exactly what was given. Do not modify file contents.
|
|
67
|
-
|
|
68
56
|
## memini-ai Integration
|
|
69
57
|
|
|
70
58
|
Before committing, query memini-ai for:
|
|
@@ -25,7 +25,9 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"*": allow
|
|
29
31
|
task:
|
|
30
32
|
"*": deny
|
|
31
33
|
---
|
|
@@ -41,22 +43,6 @@ You are the **Boomerang Handoff** - session wrap-up specialist using memini-ai.
|
|
|
41
43
|
3. **Save context** - Save session summary to memini-ai
|
|
42
44
|
4. **Evaluate patterns** - Check for skill/agent extraction opportunities
|
|
43
45
|
|
|
44
|
-
## SCOPE BOUNDARIES
|
|
45
|
-
|
|
46
|
-
**This agent DOES:**
|
|
47
|
-
- Update HANDOFF.md with session accomplishments
|
|
48
|
-
- Update TASKS.md marking tasks complete
|
|
49
|
-
- Save session summaries to memini-ai
|
|
50
|
-
- Evaluate self-evolution / skill extraction opportunities
|
|
51
|
-
|
|
52
|
-
**This agent DOES NOT:**
|
|
53
|
-
- Edit source code (escalate to `boomerang-coder`)
|
|
54
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
55
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
56
|
-
- Run linting (escalate to `boomerang-linter`)
|
|
57
|
-
|
|
58
|
-
**When in doubt:** Update docs and save memories only. Never modify implementation.
|
|
59
|
-
|
|
60
46
|
## Handoff Steps
|
|
61
47
|
|
|
62
48
|
1. Query memini-ai for session context
|
|
@@ -25,7 +25,11 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"diff *": allow
|
|
31
|
+
"cp *": allow
|
|
32
|
+
"*": allow
|
|
29
33
|
task:
|
|
30
34
|
"*": deny
|
|
31
35
|
---
|
|
@@ -40,22 +44,6 @@ You are the **Boomerang Init** - session initialization specialist.
|
|
|
40
44
|
2. **Check TASKS.md** - Understand current priorities
|
|
41
45
|
3. **Verify setup** - Confirm tools and access
|
|
42
46
|
|
|
43
|
-
## SCOPE BOUNDARIES
|
|
44
|
-
|
|
45
|
-
**This agent DOES:**
|
|
46
|
-
- Load project context from memini-ai (L0/L1 summaries)
|
|
47
|
-
- Check TASKS.md for current priorities
|
|
48
|
-
- Verify tools and access are working
|
|
49
|
-
- Prepare session startup context
|
|
50
|
-
|
|
51
|
-
**This agent DOES NOT:**
|
|
52
|
-
- Edit source code (escalate to `boomerang-coder`)
|
|
53
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
54
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
55
|
-
- Run linting or quality gates (escalate to `boomerang-linter`)
|
|
56
|
-
|
|
57
|
-
**When in doubt:** Load context and return summary. Never modify files beyond TASKS.md status checks.
|
|
58
|
-
|
|
59
47
|
## Startup Workflow
|
|
60
48
|
|
|
61
49
|
1. `memini-ai-dev_get_tier0_summary` - Get ~100 token project summary
|
|
@@ -25,7 +25,10 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"diff *": allow
|
|
31
|
+
"*": allow
|
|
29
32
|
task:
|
|
30
33
|
"*": deny
|
|
31
34
|
---
|
|
@@ -40,28 +43,22 @@ You are the **Boomerang Linter** - quality enforcement for boomerang-v3.
|
|
|
40
43
|
2. **Run formatters** - Format code consistently
|
|
41
44
|
3. **Typecheck** - Ensure TypeScript types are correct
|
|
42
45
|
|
|
43
|
-
##
|
|
44
|
-
|
|
45
|
-
**This agent DOES:**
|
|
46
|
-
- Run linters (ESLint, Prettier, Ruff)
|
|
47
|
-
- Run formatters and apply style fixes
|
|
48
|
-
- Type-check TypeScript code
|
|
49
|
-
- Enforce code style conventions
|
|
46
|
+
## Quality Gates
|
|
50
47
|
|
|
51
|
-
|
|
52
|
-
- Fix logic bugs (escalate to `boomerang-coder`)
|
|
53
|
-
- Write new features (escalate to `boomerang-coder`)
|
|
54
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
55
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
48
|
+
Run these in order:
|
|
56
49
|
|
|
57
|
-
**
|
|
50
|
+
**TypeScript projects** (`boomerang-v3/`):
|
|
51
|
+
1. `npm run lint` - ESLint
|
|
52
|
+
2. `npm run typecheck` - TypeScript type checking
|
|
53
|
+
3. `npx vitest run` - Run tests
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
**Python projects** (`memini-ai-dev/`, `boomerang-queue/`, `boomerang-proxy/`):
|
|
56
|
+
1. `ruff check src tests` - Python linting
|
|
57
|
+
2. `ruff check --fix src tests` - Auto-fix issues
|
|
58
|
+
3. `mypy src` - Type checking
|
|
59
|
+
4. `pytest` - Run tests
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
1. `npm run lint` - Lint code
|
|
63
|
-
2. `npm run format` - Format code
|
|
64
|
-
3. `npm run typecheck` - TypeScript type checking
|
|
61
|
+
**NEVER use `python -c` — always use `uv run` or `uvx` instead.**
|
|
65
62
|
|
|
66
63
|
## Project Conventions
|
|
67
64
|
|
|
@@ -25,7 +25,10 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"cp *": allow
|
|
31
|
+
"*": allow
|
|
29
32
|
task:
|
|
30
33
|
"*": deny
|
|
31
34
|
---
|
|
@@ -41,22 +44,6 @@ You are the **Boomerang Release** - release automation specialist.
|
|
|
41
44
|
3. **Git tags** - Create and push tags
|
|
42
45
|
4. **Publish** - npm publish, uv pip install
|
|
43
46
|
|
|
44
|
-
## SCOPE BOUNDARIES
|
|
45
|
-
|
|
46
|
-
**This agent DOES:**
|
|
47
|
-
- Bump versions in pyproject.toml/package.json
|
|
48
|
-
- Generate and update changelogs
|
|
49
|
-
- Create and push git tags
|
|
50
|
-
- Publish packages (npm, PyPI)
|
|
51
|
-
|
|
52
|
-
**This agent DOES NOT:**
|
|
53
|
-
- Edit source code (escalate to `boomerang-coder`)
|
|
54
|
-
- Fix bugs (escalate to `boomerang-coder`)
|
|
55
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
56
|
-
- Make release architecture decisions (escalate to `boomerang-architect`)
|
|
57
|
-
|
|
58
|
-
**When in doubt:** Only touch version, changelog, and tags. Never modify logic.
|
|
59
|
-
|
|
60
47
|
## Release Process
|
|
61
48
|
|
|
62
49
|
### Python (memini-ai-dev)
|
|
@@ -35,6 +35,8 @@ permission:
|
|
|
35
35
|
"find *": allow
|
|
36
36
|
"cd *": allow
|
|
37
37
|
"echo *": allow
|
|
38
|
+
"which *": allow
|
|
39
|
+
"basename *": allow
|
|
38
40
|
webfetch: allow
|
|
39
41
|
websearch: allow
|
|
40
42
|
task:
|
|
@@ -51,22 +53,6 @@ You are the **Boomerang Scraper** - web research specialist.
|
|
|
51
53
|
2. **Fetch pages** - Retrieve and summarize web content
|
|
52
54
|
3. **Synthesize info** - Combine findings into coherent summary
|
|
53
55
|
|
|
54
|
-
## SCOPE BOUNDARIES
|
|
55
|
-
|
|
56
|
-
**This agent DOES:**
|
|
57
|
-
- Search the web with searxng
|
|
58
|
-
- Fetch and summarize web pages
|
|
59
|
-
- Synthesize research findings
|
|
60
|
-
- Save valuable research to memini-ai
|
|
61
|
-
|
|
62
|
-
**This agent DOES NOT:**
|
|
63
|
-
- Edit code (escalate to `boomerang-coder`)
|
|
64
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
65
|
-
- Write documentation (escalate to `boomerang-writer`)
|
|
66
|
-
- Analyze project code (escalate to `boomerang-architect`)
|
|
67
|
-
|
|
68
|
-
**When in doubt:** Fetch and return raw findings. Let another agent synthesize into code/docs.
|
|
69
|
-
|
|
70
56
|
## Tools
|
|
71
57
|
|
|
72
58
|
- `searxng_searxng_web_search` - Search the web
|
|
@@ -25,7 +25,9 @@ permission:
|
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
27
|
edit: allow
|
|
28
|
-
bash:
|
|
28
|
+
bash:
|
|
29
|
+
"basename *": allow
|
|
30
|
+
"*": allow
|
|
29
31
|
task:
|
|
30
32
|
"*": deny
|
|
31
33
|
---
|
|
@@ -40,22 +42,6 @@ You are the **Boomerang Tester** - a testing specialist for boomerang-v3.
|
|
|
40
42
|
2. **Verify fixes** - Confirm bug fixes with test coverage
|
|
41
43
|
3. **Run test suites** - Execute and interpret test results
|
|
42
44
|
|
|
43
|
-
## SCOPE BOUNDARIES
|
|
44
|
-
|
|
45
|
-
**This agent DOES:**
|
|
46
|
-
- Write and run unit/integration tests
|
|
47
|
-
- Verify bug fixes with test coverage
|
|
48
|
-
- Execute and interpret test results
|
|
49
|
-
- Update test infrastructure
|
|
50
|
-
|
|
51
|
-
**This agent DOES NOT:**
|
|
52
|
-
- Fix production code bugs (escalate to `boomerang-coder`)
|
|
53
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
54
|
-
- Write non-test code (escalate to `boomerang-coder`)
|
|
55
|
-
- Handle linting/formatting (escalate to `boomerang-linter`)
|
|
56
|
-
|
|
57
|
-
**When in doubt:** Query memini-ai for previous test patterns in this project.
|
|
58
|
-
|
|
59
45
|
## memini-ai Integration
|
|
60
46
|
|
|
61
47
|
Before writing tests, query memini-ai for:
|
|
@@ -65,8 +51,9 @@ Before writing tests, query memini-ai for:
|
|
|
65
51
|
|
|
66
52
|
## Test Commands
|
|
67
53
|
|
|
54
|
+
**TypeScript** (`boomerang-v3/`):
|
|
68
55
|
```bash
|
|
69
|
-
# Run tests
|
|
56
|
+
# Run all tests
|
|
70
57
|
cd boomerang-v3 && npm test
|
|
71
58
|
|
|
72
59
|
# Run specific test file
|
|
@@ -74,6 +61,21 @@ npx vitest run tests/[file].test.ts
|
|
|
74
61
|
|
|
75
62
|
# Typecheck
|
|
76
63
|
npm run typecheck
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Python** (`memini-ai-dev/`, `boomerang-queue/`, `boomerang-proxy/`):
|
|
67
|
+
```bash
|
|
68
|
+
# Run all tests
|
|
69
|
+
pytest
|
|
70
|
+
|
|
71
|
+
# Run specific test file
|
|
72
|
+
pytest tests/test_file.py -v
|
|
73
|
+
|
|
74
|
+
# With coverage
|
|
75
|
+
pytest --cov=src --cov-report=term-missing
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**NEVER use `python -c` — always use `uv run` or `uvx` instead.**
|
|
77
79
|
|
|
78
80
|
# Lint
|
|
79
81
|
npm run lint
|
|
@@ -34,6 +34,8 @@ permission:
|
|
|
34
34
|
"find *": allow
|
|
35
35
|
"cd *": allow
|
|
36
36
|
"echo *": allow
|
|
37
|
+
"which *": allow
|
|
38
|
+
"basename *": allow
|
|
37
39
|
task:
|
|
38
40
|
"*": deny
|
|
39
41
|
---
|
|
@@ -48,22 +50,6 @@ You are the **Boomerang Writer** - documentation specialist for boomerang-v3.
|
|
|
48
50
|
2. **Update docs** - Keep docs in sync with code
|
|
49
51
|
3. **Format markdown** - Clean, consistent formatting
|
|
50
52
|
|
|
51
|
-
## SCOPE BOUNDARIES
|
|
52
|
-
|
|
53
|
-
**This agent DOES:**
|
|
54
|
-
- Write and update README, API docs, guides
|
|
55
|
-
- Format markdown consistently
|
|
56
|
-
- Keep docs in sync with code changes
|
|
57
|
-
- Create changelogs and release notes
|
|
58
|
-
|
|
59
|
-
**This agent DOES NOT:**
|
|
60
|
-
- Edit source code (escalate to `boomerang-coder`)
|
|
61
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
62
|
-
- Write tests (escalate to `boomerang-tester`)
|
|
63
|
-
- Run linting on code (escalate to `boomerang-linter`)
|
|
64
|
-
|
|
65
|
-
**When in doubt:** Write docs only. Never touch implementation files.
|
|
66
|
-
|
|
67
53
|
## memini-ai Integration
|
|
68
54
|
|
|
69
55
|
Query memini-ai for:
|
|
@@ -24,7 +24,7 @@ permission:
|
|
|
24
24
|
"playwright_*": allow
|
|
25
25
|
"webfetch": allow
|
|
26
26
|
"websearch": allow
|
|
27
|
-
edit:
|
|
27
|
+
edit: allow
|
|
28
28
|
bash:
|
|
29
29
|
"*": ask
|
|
30
30
|
"git *": allow
|
|
@@ -40,6 +40,8 @@ permission:
|
|
|
40
40
|
"find *": allow
|
|
41
41
|
"cd *": allow
|
|
42
42
|
"echo *": allow
|
|
43
|
+
"which *": allow
|
|
44
|
+
"basename *": allow
|
|
43
45
|
"chmod *": ask
|
|
44
46
|
"chown *": ask
|
|
45
47
|
task:
|
|
@@ -76,37 +78,17 @@ Immediately call `sequential-thinking_sequentialthinking` with your analysis.
|
|
|
76
78
|
### STEP 3: Plan (MANDATORY unless explicitly waived)
|
|
77
79
|
Create an implementation plan UNLESS user says "skip planning", "just do it", "/boomerang-handoff", "do a handoff", or "no plan needed".
|
|
78
80
|
|
|
79
|
-
### STEP 3.5: MANDATORY DISPATCH CHECKLIST (BEFORE DELEGATE)
|
|
80
|
-
Before dispatching ANY task, you MUST verify:
|
|
81
|
-
|
|
82
|
-
1. [ ] Agent is the CORRECT specialist (see Routing Matrix below)
|
|
83
|
-
2. [ ] `general` is NOT being used for code implementation
|
|
84
|
-
3. [ ] `boomerang-explorer` is NOT being used for research/analysis
|
|
85
|
-
4. [ ] Task scope matches agent's defined scope
|
|
86
|
-
5. [ ] Context Package includes all required fields
|
|
87
|
-
|
|
88
|
-
### Routing Matrix for Reference
|
|
89
|
-
| Task Type | Primary Agent |
|
|
90
|
-
|-----------|--------------|
|
|
91
|
-
| Code implementation | `boomerang-coder` |
|
|
92
|
-
| Architecture/design | `boomerang-architect` |
|
|
93
|
-
| File finding | `boomerang-explorer` |
|
|
94
|
-
| Testing | `boomerang-tester` |
|
|
95
|
-
| Linting | `boomerang-linter` |
|
|
96
|
-
| Git | `boomerang-git` |
|
|
97
|
-
| Documentation | `boomerang-writer` |
|
|
98
|
-
| Web scraping | `boomerang-scraper` |
|
|
99
|
-
| MCP/debug | `mcp-specialist` |
|
|
100
|
-
| Release | `boomerang-release` |
|
|
101
|
-
|
|
102
|
-
### ROUTING VIOLATIONS = AUTOMATIC RETRY
|
|
103
|
-
If you dispatch to wrong agent:
|
|
104
|
-
- Cancel incorrect task
|
|
105
|
-
- Re-dispatch to correct agent
|
|
106
|
-
- Save violation to memini-ai for future correction
|
|
107
|
-
|
|
108
81
|
### STEP 4: Delegate ALL work via Task tool (MANDATORY)
|
|
109
|
-
|
|
82
|
+
|
|
83
|
+
You are the **ORCHESTRATOR** — your primary job is delegation and coordination. While you CAN edit documentation files (TASKS.md, AGENTS.md, etc.), you should delegate ALL code implementation and testing to specialist sub-agents.
|
|
84
|
+
|
|
85
|
+
**PARALLEL EXECUTION IS MANDATORY** — Always look for opportunities to dispatch multiple sub-agents simultaneously. Launch tasks in parallel whenever there are no dependencies between them. This maximizes throughput and respects the 3 concurrent slot limit.
|
|
86
|
+
|
|
87
|
+
Examples of parallel dispatch:
|
|
88
|
+
- Linter + Tester for independent validation tasks
|
|
89
|
+
- Coder + Writer for code + docs
|
|
90
|
+
- Multiple Coders for unrelated file changes
|
|
91
|
+
|
|
110
92
|
Your only purpose is to delegate to sub-agents using the Task tool.
|
|
111
93
|
|
|
112
94
|
## Project-Specific Context
|
|
@@ -34,6 +34,8 @@ permission:
|
|
|
34
34
|
"find *": allow
|
|
35
35
|
"cd *": allow
|
|
36
36
|
"echo *": allow
|
|
37
|
+
"which *": allow
|
|
38
|
+
"basename *": allow
|
|
37
39
|
task:
|
|
38
40
|
"*": deny
|
|
39
41
|
---
|
|
@@ -48,22 +50,6 @@ You are the **MCP Specialist** - MCP Protocol expert for boomerang-v3.
|
|
|
48
50
|
2. **Debug servers** - Troubleshoot MCP issues
|
|
49
51
|
3. **Review integrations** - Validate MCP implementations
|
|
50
52
|
|
|
51
|
-
## SCOPE BOUNDARIES
|
|
52
|
-
|
|
53
|
-
**This agent DOES:**
|
|
54
|
-
- Design MCP tool schemas
|
|
55
|
-
- Debug MCP server issues
|
|
56
|
-
- Review and validate MCP integrations
|
|
57
|
-
- Document MCP protocols
|
|
58
|
-
|
|
59
|
-
**This agent DOES NOT:**
|
|
60
|
-
- Edit general application code (escalate to `boomerang-coder`)
|
|
61
|
-
- Make system architecture decisions (escalate to `boomerang-architect`)
|
|
62
|
-
- Write tests for non-MCP code (escalate to `boomerang-tester`)
|
|
63
|
-
- Handle release tasks (escalate to `boomerang-release`)
|
|
64
|
-
|
|
65
|
-
**When in doubt:** Stay within MCP protocol scope. Query memini-ai for existing MCP patterns.
|
|
66
|
-
|
|
67
53
|
## memini-ai Integration
|
|
68
54
|
|
|
69
55
|
For MCP design:
|
|
@@ -35,6 +35,8 @@ permission:
|
|
|
35
35
|
"find *": allow
|
|
36
36
|
"cd *": allow
|
|
37
37
|
"echo *": allow
|
|
38
|
+
"which *": allow
|
|
39
|
+
"basename *": allow
|
|
38
40
|
webfetch: allow
|
|
39
41
|
websearch: allow
|
|
40
42
|
task:
|
|
@@ -58,22 +60,6 @@ You are the **Researcher** - web research specialist for boomerang-v3.
|
|
|
58
60
|
- `memini-ai-dev_add_memory` - Save research findings
|
|
59
61
|
- `memini-ai-dev_query_kg` - Query knowledge graph
|
|
60
62
|
|
|
61
|
-
## SCOPE BOUNDARIES
|
|
62
|
-
|
|
63
|
-
**This agent DOES:**
|
|
64
|
-
- Search the web with searxng
|
|
65
|
-
- Retrieve and analyze web content
|
|
66
|
-
- Synthesize findings into coherent research
|
|
67
|
-
- Save research to memini-ai with `project` tag
|
|
68
|
-
|
|
69
|
-
**This agent DOES NOT:**
|
|
70
|
-
- Edit code (escalate to `boomerang-coder`)
|
|
71
|
-
- Make architecture decisions (escalate to `boomerang-architect`)
|
|
72
|
-
- Write documentation (escalate to `boomerang-writer`)
|
|
73
|
-
- Analyze project source code (escalate to `boomerang-architect`)
|
|
74
|
-
|
|
75
|
-
**When in doubt:** Return research findings. Let another agent act on them.
|
|
76
|
-
|
|
77
63
|
## Research Process
|
|
78
64
|
|
|
79
65
|
1. Query memini-ai for existing knowledge
|
package/AGENTS.md
CHANGED
|
@@ -84,21 +84,31 @@ The orchestrator MUST delegate based on these rules. No exceptions.
|
|
|
84
84
|
|
|
85
85
|
### Orchestrator Permissions (v3.0.0)
|
|
86
86
|
|
|
87
|
-
The orchestrator provides **intelligent routing and context building** — it
|
|
87
|
+
The orchestrator provides **intelligent routing and context building** — it primarily delegates to sub-agents but CAN edit documentation files directly (TASKS.md, AGENTS.md, CONTEXT.md, HANDOFF.md).
|
|
88
88
|
|
|
89
89
|
**Orchestrator Does:**
|
|
90
90
|
- Analyze request and detect task type
|
|
91
91
|
- Query memini-ai for relevant context
|
|
92
92
|
- Select appropriate agent based on task
|
|
93
93
|
- Build rich Context Package with all necessary information
|
|
94
|
+
- Edit documentation and todo lists directly
|
|
94
95
|
- Return `{agent, systemPrompt, contextPackage, suggestions}` to OpenCode
|
|
95
96
|
|
|
96
97
|
**Orchestrator Delegates:**
|
|
97
98
|
- Agent execution → OpenCode (native)
|
|
99
|
+
- Code implementation → boomerang-coder
|
|
100
|
+
- Testing → boomerang-tester
|
|
101
|
+
- Linting → boomerang-linter
|
|
102
|
+
- Git operations → boomerang-git
|
|
98
103
|
- Multi-file changes → sub-agents
|
|
99
104
|
- Complex implementation → boomerang-coder
|
|
100
105
|
- Architecture decisions → boomerang-architect
|
|
101
106
|
|
|
107
|
+
**PARALLEL EXECUTION IS MANDATORY** — The orchestrator MUST launch multiple sub-agents simultaneously when tasks have no dependencies. Examples:
|
|
108
|
+
- Linter + Tester for independent validation
|
|
109
|
+
- Coder + Writer for code + documentation
|
|
110
|
+
- Multiple Coders for unrelated file changes
|
|
111
|
+
|
|
102
112
|
**Decision Threshold:**
|
|
103
113
|
```
|
|
104
114
|
Task Size ≤ 1 file AND ≤ 20 lines AND deterministic
|
|
@@ -365,7 +375,10 @@ IDLE → MEMORY_QUERY → SEQUENTIAL_THINK → PLAN → DELEGATE → GIT_CHECK
|
|
|
365
375
|
|
|
366
376
|
## Review Notes
|
|
367
377
|
|
|
368
|
-
- **2026-05-19**: **
|
|
378
|
+
- **2026-05-19**: **boomerang-v3 v0.3.2 UPDATED** — Agent bash permissions expanded: `basename`, `diff`, `cp`, `which` added. Orchestrator clarified: CAN edit docs, delegates code. Parallel execution guidance added. All 30 agent files synced between `.opencode/agents/` and `boomerang-v3/.opencode/agents/`.
|
|
379
|
+
- **2026-05-19**: **boomerang-v3 v0.3.1 RELEASED** — Added common bash commands (ls, head, tail, cat, grep, find, cd, echo) to 7 agent permission files. Tag `v0.3.1` pushed to GitHub.
|
|
380
|
+
- **2026-05-19**: **boomerang-v3 v0.3.0 RELEASED** — Agent permissions overhaul: `mode: subagent` + comprehensive tool permissions for all 30 agent files. SQL injection fix in boomerang-queue. Phase 3 Ollama Cloud Proxy design doc created. Tag `v0.3.0` pushed to GitHub.
|
|
381
|
+
- **2026-05-19**: **memini-ai-dev v0.2.8 RELEASED** — Ruff formatting pass (isort, whitespace, imports) across 30 files. No functional changes. Tag `v0.2.8` pushed to GitHub.
|
|
369
382
|
- **2026-05-19**: Updated to Ollama Cloud models — All agents reassigned to Ollama Cloud models with 3 concurrent limit. Created `.opencode/opencode.json` with `ollama-cloud` provider. Provider ID: `ollama`, baseURL: `https://ollama.com/v1`.
|
|
370
383
|
- **2026-05-18**: v3.0.0 RELEASED — memini-ai integration: Trust engine, knowledge graph, tiered loading. PostgreSQL with pgvector backend. 645 tests passing in memini-ai.
|
|
371
384
|
- **2026-05-06**: v4.1.0 (boomerang-v2) — Protocol enforcement: MANDATORY. Parallel agent launching.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Retry Executor — Exponential backoff with jitter for transient failures
|
|
3
3
|
*/
|
|
4
|
+
import { TimeoutError } from '../types.js';
|
|
4
5
|
function sleep(ms) {
|
|
5
6
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
6
7
|
}
|
|
@@ -10,7 +11,9 @@ function calculateDelay(attempt, baseDelayMs, maxDelayMs) {
|
|
|
10
11
|
const jitter = Math.random() * (capped / 2);
|
|
11
12
|
return Math.floor(capped + jitter);
|
|
12
13
|
}
|
|
13
|
-
const DEFAULT_IS_RETRYABLE = () =>
|
|
14
|
+
const DEFAULT_IS_RETRYABLE = (error) => {
|
|
15
|
+
return !(error instanceof TimeoutError);
|
|
16
|
+
};
|
|
14
17
|
export async function executeWithRetry(fn, options = {}) {
|
|
15
18
|
const maxRetries = options.maxRetries ?? 3;
|
|
16
19
|
const baseDelayMs = options.baseDelayMs ?? 1000;
|
package/dist/orchestrator.js
CHANGED
|
@@ -18,6 +18,7 @@ function validateAgentRouting(taskType, agentName) {
|
|
|
18
18
|
}
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
|
+
import { TimeoutError } from './types.js';
|
|
21
22
|
import { TaskLimiter, executeWithRetry, executeWithTimeout, } from './concurrency/index.js';
|
|
22
23
|
export class BoomerangOrchestrator {
|
|
23
24
|
taskLimiter;
|
|
@@ -64,6 +65,7 @@ export class BoomerangOrchestrator {
|
|
|
64
65
|
maxRetries: this.config.maxRetries,
|
|
65
66
|
baseDelayMs: this.config.retryBaseDelayMs,
|
|
66
67
|
maxDelayMs: this.config.retryMaxDelayMs,
|
|
68
|
+
isRetryable: (err) => !(err instanceof TimeoutError),
|
|
67
69
|
});
|
|
68
70
|
return retryResult;
|
|
69
71
|
}
|