opencode-swarm-plugin 0.43.0 → 0.44.1
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/bin/cass.characterization.test.ts +422 -0
- package/bin/swarm.serve.test.ts +6 -4
- package/bin/swarm.test.ts +68 -0
- package/bin/swarm.ts +81 -8
- package/dist/compaction-prompt-scoring.js +139 -0
- package/dist/contributor-tools.d.ts +42 -0
- package/dist/contributor-tools.d.ts.map +1 -0
- package/dist/eval-capture.js +12811 -0
- package/dist/hive.d.ts.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7728 -62590
- package/dist/plugin.js +23833 -78695
- package/dist/sessions/agent-discovery.d.ts +59 -0
- package/dist/sessions/agent-discovery.d.ts.map +1 -0
- package/dist/sessions/index.d.ts +10 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/swarm-orchestrate.d.ts.map +1 -1
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/dist/swarm-review.d.ts.map +1 -1
- package/package.json +17 -5
- package/.changeset/swarm-insights-data-layer.md +0 -63
- package/.hive/analysis/eval-failure-analysis-2025-12-25.md +0 -331
- package/.hive/analysis/session-data-quality-audit.md +0 -320
- package/.hive/eval-results.json +0 -483
- package/.hive/issues.jsonl +0 -138
- package/.hive/memories.jsonl +0 -729
- package/.opencode/eval-history.jsonl +0 -327
- package/.turbo/turbo-build.log +0 -9
- package/CHANGELOG.md +0 -2255
- package/SCORER-ANALYSIS.md +0 -598
- package/docs/analysis/subagent-coordination-patterns.md +0 -902
- package/docs/analysis-socratic-planner-pattern.md +0 -504
- package/docs/planning/ADR-001-monorepo-structure.md +0 -171
- package/docs/planning/ADR-002-package-extraction.md +0 -393
- package/docs/planning/ADR-003-performance-improvements.md +0 -451
- package/docs/planning/ADR-004-message-queue-features.md +0 -187
- package/docs/planning/ADR-005-devtools-observability.md +0 -202
- package/docs/planning/ADR-007-swarm-enhancements-worktree-review.md +0 -168
- package/docs/planning/ADR-008-worker-handoff-protocol.md +0 -293
- package/docs/planning/ADR-009-oh-my-opencode-patterns.md +0 -353
- package/docs/planning/ROADMAP.md +0 -368
- package/docs/semantic-memory-cli-syntax.md +0 -123
- package/docs/swarm-mail-architecture.md +0 -1147
- package/docs/testing/context-recovery-test.md +0 -470
- package/evals/ARCHITECTURE.md +0 -1189
- package/evals/README.md +0 -768
- package/evals/compaction-prompt.eval.ts +0 -149
- package/evals/compaction-resumption.eval.ts +0 -289
- package/evals/coordinator-behavior.eval.ts +0 -307
- package/evals/coordinator-session.eval.ts +0 -154
- package/evals/evalite.config.ts.bak +0 -15
- package/evals/example.eval.ts +0 -31
- package/evals/fixtures/compaction-cases.ts +0 -350
- package/evals/fixtures/compaction-prompt-cases.ts +0 -311
- package/evals/fixtures/coordinator-sessions.ts +0 -328
- package/evals/fixtures/decomposition-cases.ts +0 -105
- package/evals/lib/compaction-loader.test.ts +0 -248
- package/evals/lib/compaction-loader.ts +0 -320
- package/evals/lib/data-loader.evalite-test.ts +0 -289
- package/evals/lib/data-loader.test.ts +0 -345
- package/evals/lib/data-loader.ts +0 -281
- package/evals/lib/llm.ts +0 -115
- package/evals/scorers/compaction-prompt-scorers.ts +0 -145
- package/evals/scorers/compaction-scorers.ts +0 -305
- package/evals/scorers/coordinator-discipline.evalite-test.ts +0 -539
- package/evals/scorers/coordinator-discipline.ts +0 -325
- package/evals/scorers/index.test.ts +0 -146
- package/evals/scorers/index.ts +0 -328
- package/evals/scorers/outcome-scorers.evalite-test.ts +0 -27
- package/evals/scorers/outcome-scorers.ts +0 -349
- package/evals/swarm-decomposition.eval.ts +0 -121
- package/examples/commands/swarm.md +0 -745
- package/examples/plugin-wrapper-template.ts +0 -2426
- package/examples/skills/hive-workflow/SKILL.md +0 -212
- package/examples/skills/skill-creator/SKILL.md +0 -223
- package/examples/skills/swarm-coordination/SKILL.md +0 -292
- package/global-skills/cli-builder/SKILL.md +0 -344
- package/global-skills/cli-builder/references/advanced-patterns.md +0 -244
- package/global-skills/learning-systems/SKILL.md +0 -644
- package/global-skills/skill-creator/LICENSE.txt +0 -202
- package/global-skills/skill-creator/SKILL.md +0 -352
- package/global-skills/skill-creator/references/output-patterns.md +0 -82
- package/global-skills/skill-creator/references/workflows.md +0 -28
- package/global-skills/swarm-coordination/SKILL.md +0 -995
- package/global-skills/swarm-coordination/references/coordinator-patterns.md +0 -235
- package/global-skills/swarm-coordination/references/strategies.md +0 -138
- package/global-skills/system-design/SKILL.md +0 -213
- package/global-skills/testing-patterns/SKILL.md +0 -430
- package/global-skills/testing-patterns/references/dependency-breaking-catalog.md +0 -586
- package/opencode-swarm-plugin-0.30.7.tgz +0 -0
- package/opencode-swarm-plugin-0.31.0.tgz +0 -0
- package/scripts/cleanup-test-memories.ts +0 -346
- package/scripts/init-skill.ts +0 -222
- package/scripts/migrate-unknown-sessions.ts +0 -349
- package/scripts/validate-skill.ts +0 -204
- package/src/agent-mail.ts +0 -1724
- package/src/anti-patterns.test.ts +0 -1167
- package/src/anti-patterns.ts +0 -448
- package/src/compaction-capture.integration.test.ts +0 -257
- package/src/compaction-hook.test.ts +0 -838
- package/src/compaction-hook.ts +0 -1204
- package/src/compaction-observability.integration.test.ts +0 -139
- package/src/compaction-observability.test.ts +0 -187
- package/src/compaction-observability.ts +0 -324
- package/src/compaction-prompt-scorers.test.ts +0 -475
- package/src/compaction-prompt-scoring.ts +0 -300
- package/src/dashboard.test.ts +0 -611
- package/src/dashboard.ts +0 -462
- package/src/error-enrichment.test.ts +0 -403
- package/src/error-enrichment.ts +0 -219
- package/src/eval-capture.test.ts +0 -1015
- package/src/eval-capture.ts +0 -929
- package/src/eval-gates.test.ts +0 -306
- package/src/eval-gates.ts +0 -218
- package/src/eval-history.test.ts +0 -508
- package/src/eval-history.ts +0 -214
- package/src/eval-learning.test.ts +0 -378
- package/src/eval-learning.ts +0 -360
- package/src/eval-runner.test.ts +0 -223
- package/src/eval-runner.ts +0 -402
- package/src/export-tools.test.ts +0 -476
- package/src/export-tools.ts +0 -257
- package/src/hive.integration.test.ts +0 -2241
- package/src/hive.ts +0 -1628
- package/src/index.ts +0 -935
- package/src/learning.integration.test.ts +0 -1815
- package/src/learning.ts +0 -1079
- package/src/logger.test.ts +0 -189
- package/src/logger.ts +0 -135
- package/src/mandate-promotion.test.ts +0 -473
- package/src/mandate-promotion.ts +0 -239
- package/src/mandate-storage.integration.test.ts +0 -601
- package/src/mandate-storage.test.ts +0 -578
- package/src/mandate-storage.ts +0 -794
- package/src/mandates.ts +0 -540
- package/src/memory-tools.test.ts +0 -195
- package/src/memory-tools.ts +0 -344
- package/src/memory.integration.test.ts +0 -334
- package/src/memory.test.ts +0 -158
- package/src/memory.ts +0 -527
- package/src/model-selection.test.ts +0 -188
- package/src/model-selection.ts +0 -68
- package/src/observability-tools.test.ts +0 -359
- package/src/observability-tools.ts +0 -871
- package/src/output-guardrails.test.ts +0 -438
- package/src/output-guardrails.ts +0 -381
- package/src/pattern-maturity.test.ts +0 -1160
- package/src/pattern-maturity.ts +0 -525
- package/src/planning-guardrails.test.ts +0 -491
- package/src/planning-guardrails.ts +0 -438
- package/src/plugin.ts +0 -23
- package/src/post-compaction-tracker.test.ts +0 -251
- package/src/post-compaction-tracker.ts +0 -237
- package/src/query-tools.test.ts +0 -636
- package/src/query-tools.ts +0 -324
- package/src/rate-limiter.integration.test.ts +0 -466
- package/src/rate-limiter.ts +0 -774
- package/src/replay-tools.test.ts +0 -496
- package/src/replay-tools.ts +0 -240
- package/src/repo-crawl.integration.test.ts +0 -441
- package/src/repo-crawl.ts +0 -610
- package/src/schemas/cell-events.test.ts +0 -347
- package/src/schemas/cell-events.ts +0 -807
- package/src/schemas/cell.ts +0 -257
- package/src/schemas/evaluation.ts +0 -166
- package/src/schemas/index.test.ts +0 -199
- package/src/schemas/index.ts +0 -286
- package/src/schemas/mandate.ts +0 -232
- package/src/schemas/swarm-context.ts +0 -115
- package/src/schemas/task.ts +0 -161
- package/src/schemas/worker-handoff.test.ts +0 -302
- package/src/schemas/worker-handoff.ts +0 -131
- package/src/skills.integration.test.ts +0 -1192
- package/src/skills.test.ts +0 -643
- package/src/skills.ts +0 -1549
- package/src/storage.integration.test.ts +0 -341
- package/src/storage.ts +0 -884
- package/src/structured.integration.test.ts +0 -817
- package/src/structured.test.ts +0 -1046
- package/src/structured.ts +0 -762
- package/src/swarm-decompose.test.ts +0 -188
- package/src/swarm-decompose.ts +0 -1302
- package/src/swarm-deferred.integration.test.ts +0 -157
- package/src/swarm-deferred.test.ts +0 -38
- package/src/swarm-insights.test.ts +0 -214
- package/src/swarm-insights.ts +0 -459
- package/src/swarm-mail.integration.test.ts +0 -970
- package/src/swarm-mail.ts +0 -739
- package/src/swarm-orchestrate.integration.test.ts +0 -282
- package/src/swarm-orchestrate.test.ts +0 -548
- package/src/swarm-orchestrate.ts +0 -3084
- package/src/swarm-prompts.test.ts +0 -1270
- package/src/swarm-prompts.ts +0 -2077
- package/src/swarm-research.integration.test.ts +0 -701
- package/src/swarm-research.test.ts +0 -698
- package/src/swarm-research.ts +0 -472
- package/src/swarm-review.integration.test.ts +0 -285
- package/src/swarm-review.test.ts +0 -879
- package/src/swarm-review.ts +0 -709
- package/src/swarm-strategies.ts +0 -407
- package/src/swarm-worktree.test.ts +0 -501
- package/src/swarm-worktree.ts +0 -575
- package/src/swarm.integration.test.ts +0 -2377
- package/src/swarm.ts +0 -38
- package/src/tool-adapter.integration.test.ts +0 -1221
- package/src/tool-availability.ts +0 -461
- package/tsconfig.json +0 -28
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
# ADR-009: Patterns from oh-my-opencode
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Proposed
|
|
6
|
-
|
|
7
|
-
## Context
|
|
8
|
-
|
|
9
|
-
[oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) by **code-yeongyu** is the most feature-rich OpenCode plugin in the wild (2961★). After deep analysis of its architecture, we identified several patterns that would significantly strengthen our swarm coordination.
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
13
|
-
│ │
|
|
14
|
-
│ "Standing on the shoulders of giants" │
|
|
15
|
-
│ │
|
|
16
|
-
│ oh-my-opencode innovations we're adopting: │
|
|
17
|
-
│ • 7-Section Delegation Protocol │
|
|
18
|
-
│ • Compaction Context Injection │
|
|
19
|
-
│ • Preemptive Compaction (80% threshold) │
|
|
20
|
-
│ • Event + Polling Hybrid for completion detection │
|
|
21
|
-
│ • Parallel Execution Minimums │
|
|
22
|
-
│ • Context-Safe Tool Limits │
|
|
23
|
-
│ │
|
|
24
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### What oh-my-opencode Does Well
|
|
28
|
-
|
|
29
|
-
1. **Agent System** - Factory-based registry with model-specific configs, BackgroundManager for async execution, structured delegation prompts
|
|
30
|
-
2. **21 Lifecycle Hooks** - Compaction handling, session recovery, think-mode auto-switching, external hook protocol
|
|
31
|
-
3. **Background Agents** - Event + polling hybrid, todo-aware completion, fire-and-forget abort
|
|
32
|
-
4. **LSP/AST Tools** - Zero-config LSP integration, 11 code intelligence tools, context-safe limits
|
|
33
|
-
5. **Claude Code Compatibility** - Dual-path config loading, 4 independent loaders, auto-migration
|
|
34
|
-
6. **Plugin Architecture** - Hook mapping pattern, session-scoped state, graceful degradation
|
|
35
|
-
|
|
36
|
-
### What We Already Have
|
|
37
|
-
|
|
38
|
-
- Swarm Mail for inter-agent messaging
|
|
39
|
-
- File reservations for conflict prevention
|
|
40
|
-
- UBS scan on completion
|
|
41
|
-
- Hive for work item tracking
|
|
42
|
-
- Worktree isolation (ADR-007)
|
|
43
|
-
- Structured review (ADR-007)
|
|
44
|
-
|
|
45
|
-
### Gaps This ADR Addresses
|
|
46
|
-
|
|
47
|
-
1. **Coordinator prompts lack structure** - Workers sometimes go rogue
|
|
48
|
-
2. **Context compaction loses critical info** - Decomposition strategy, dependency graph forgotten
|
|
49
|
-
3. **No preemptive compaction** - Sessions die at 100% instead of gracefully compacting at 80%
|
|
50
|
-
4. **Polling-only completion detection** - Slower than event-driven
|
|
51
|
-
5. **No parallel execution enforcement** - Researchers call tools sequentially
|
|
52
|
-
6. **Tool outputs can explode context** - No hard limits on results
|
|
53
|
-
|
|
54
|
-
## Decision
|
|
55
|
-
|
|
56
|
-
### 1. 7-Section Delegation Protocol
|
|
57
|
-
|
|
58
|
-
Adopt oh-my-opencode's structured delegation format for coordinator → worker handoffs:
|
|
59
|
-
|
|
60
|
-
```markdown
|
|
61
|
-
## TASK
|
|
62
|
-
[Specific task description]
|
|
63
|
-
|
|
64
|
-
## EXPECTED OUTCOME
|
|
65
|
-
[What success looks like]
|
|
66
|
-
|
|
67
|
-
## REQUIRED SKILLS
|
|
68
|
-
[Domain knowledge needed]
|
|
69
|
-
|
|
70
|
-
## REQUIRED TOOLS
|
|
71
|
-
[Tools the worker should use]
|
|
72
|
-
|
|
73
|
-
## MUST DO
|
|
74
|
-
- [Non-negotiable requirements]
|
|
75
|
-
- [Quality gates]
|
|
76
|
-
|
|
77
|
-
## MUST NOT DO
|
|
78
|
-
- [Forbidden approaches]
|
|
79
|
-
- [Anti-patterns to avoid]
|
|
80
|
-
|
|
81
|
-
## CONTEXT
|
|
82
|
-
[Shared context from coordinator]
|
|
83
|
-
[Dependency information]
|
|
84
|
-
[What other workers are doing]
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Implementation:** Update `swarm_subtask_prompt` to generate this format.
|
|
88
|
-
|
|
89
|
-
**Why:** Reduces rogue behavior. Workers have clear boundaries and success criteria.
|
|
90
|
-
|
|
91
|
-
### 2. Compaction Context Injection
|
|
92
|
-
|
|
93
|
-
Preserve critical information through context compaction by injecting a structured prompt BEFORE the summarization API call:
|
|
94
|
-
|
|
95
|
-
```markdown
|
|
96
|
-
## 1. User Requests (As-Is)
|
|
97
|
-
[Exact wording of original requests - preserved verbatim]
|
|
98
|
-
|
|
99
|
-
## 2. Final Goal
|
|
100
|
-
[End result expected from this session]
|
|
101
|
-
|
|
102
|
-
## 3. Work Completed
|
|
103
|
-
[Files modified, features implemented, problems solved]
|
|
104
|
-
|
|
105
|
-
## 4. Remaining Tasks
|
|
106
|
-
[Pending items, follow-ups, blocked work]
|
|
107
|
-
|
|
108
|
-
## 5. MUST NOT Do
|
|
109
|
-
[Forbidden approaches, failed attempts, anti-patterns discovered]
|
|
110
|
-
|
|
111
|
-
## 6. Swarm State (if applicable)
|
|
112
|
-
[Epic ID, completed subtasks, in-progress workers, dependency graph]
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
**Implementation:** Add `experimental.session.compacting` hook that injects this prompt.
|
|
116
|
-
|
|
117
|
-
**Why:** Currently compaction loses decomposition strategy, dependency graph, and failed approaches. Workers repeat mistakes.
|
|
118
|
-
|
|
119
|
-
### 3. Preemptive Compaction
|
|
120
|
-
|
|
121
|
-
Monitor token usage and trigger compaction at 80% threshold instead of waiting for overflow:
|
|
122
|
-
|
|
123
|
-
```typescript
|
|
124
|
-
// In chat.message or message.updated hook
|
|
125
|
-
const usageRatio = totalTokens / contextLimit;
|
|
126
|
-
if (usageRatio >= 0.8 && !compactionInProgress.has(sessionID)) {
|
|
127
|
-
compactionInProgress.add(sessionID);
|
|
128
|
-
await ctx.client.session.summarize({ ... });
|
|
129
|
-
|
|
130
|
-
// Auto-resume after compaction
|
|
131
|
-
setTimeout(() => {
|
|
132
|
-
ctx.client.session.promptAsync({ parts: [{ text: "Continue" }] });
|
|
133
|
-
}, 500);
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
**Configuration:**
|
|
138
|
-
```json
|
|
139
|
-
{
|
|
140
|
-
"preemptive_compaction": {
|
|
141
|
-
"enabled": true,
|
|
142
|
-
"threshold": 0.8,
|
|
143
|
-
"cooldown_seconds": 300
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**Why:** Prevents context overflow mid-work. Coordinators and workers survive long-running epics.
|
|
149
|
-
|
|
150
|
-
### 4. Event + Polling Hybrid for Completion Detection
|
|
151
|
-
|
|
152
|
-
Currently we only poll for worker completion. Add event-driven detection as primary path:
|
|
153
|
-
|
|
154
|
-
```typescript
|
|
155
|
-
// Primary: Event-driven (fast)
|
|
156
|
-
event: async ({ event }) => {
|
|
157
|
-
if (event.type === "session.idle") {
|
|
158
|
-
const todos = await client.session.todo();
|
|
159
|
-
if (todos.length === 0) {
|
|
160
|
-
markWorkerComplete(event.properties?.info?.id);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Fallback: Polling (reliable)
|
|
166
|
-
setInterval(() => {
|
|
167
|
-
for (const worker of runningWorkers) {
|
|
168
|
-
const status = await client.session.status(worker.sessionID);
|
|
169
|
-
if (status.type === "idle") {
|
|
170
|
-
// Same completion logic
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}, 2000);
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
**Why:** Events are faster. Polling catches missed events. Hybrid = reliable + fast.
|
|
177
|
-
|
|
178
|
-
### 5. Parallel Execution Minimums
|
|
179
|
-
|
|
180
|
-
Enforce minimum parallel tool calls for researcher agents:
|
|
181
|
-
|
|
182
|
-
```markdown
|
|
183
|
-
## PARALLEL EXECUTION REQUIREMENTS
|
|
184
|
-
|
|
185
|
-
You MUST launch multiple tools simultaneously in your first action.
|
|
186
|
-
Never call tools sequentially unless output depends on prior result.
|
|
187
|
-
|
|
188
|
-
Minimum parallel calls by request type:
|
|
189
|
-
- TYPE A (conceptual): 3+ tools (context7 + pdf-brain + websearch)
|
|
190
|
-
- TYPE B (implementation): 4+ tools (repo-autopsy + grep + ast-grep + read)
|
|
191
|
-
- TYPE C (comprehensive): 6+ tools (all of the above)
|
|
192
|
-
|
|
193
|
-
WRONG:
|
|
194
|
-
1. Search for X
|
|
195
|
-
2. Wait for result
|
|
196
|
-
3. Search for Y
|
|
197
|
-
|
|
198
|
-
RIGHT:
|
|
199
|
-
[Search X | Search Y | Search Z] → single response
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Implementation:** Add to `swarm-researcher` agent prompt. Enforce via output validation.
|
|
203
|
-
|
|
204
|
-
**Why:** Sequential tool calls waste round-trips and burn context. Parallel = faster + cheaper.
|
|
205
|
-
|
|
206
|
-
### 6. Context-Safe Tool Limits
|
|
207
|
-
|
|
208
|
-
Add hard limits and truncation reporting to tools that can explode context:
|
|
209
|
-
|
|
210
|
-
| Tool | Limit | Truncation Message |
|
|
211
|
-
|------|-------|-------------------|
|
|
212
|
-
| `repo-autopsy_search` | 100 results | `Found 347 results (showing first 100):` |
|
|
213
|
-
| `cass_search` | 50 results | `Found 89 sessions (showing first 50):` |
|
|
214
|
-
| `find-exports` | 50 results | `Found 72 exports (showing first 50):` |
|
|
215
|
-
| `semantic-memory_find` | 20 results | `Found 45 memories (showing first 20):` |
|
|
216
|
-
|
|
217
|
-
**Implementation:**
|
|
218
|
-
```typescript
|
|
219
|
-
const MAX_RESULTS = 100;
|
|
220
|
-
const total = results.length;
|
|
221
|
-
const truncated = total > MAX_RESULTS;
|
|
222
|
-
const limited = truncated ? results.slice(0, MAX_RESULTS) : results;
|
|
223
|
-
|
|
224
|
-
if (truncated) {
|
|
225
|
-
output.unshift(`Found ${total} results (showing first ${MAX_RESULTS}):`);
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**Why:** Unbounded results kill context. Truncation with count lets agent know there's more.
|
|
230
|
-
|
|
231
|
-
### 7. Todo-Aware Completion (Bonus)
|
|
232
|
-
|
|
233
|
-
Before marking a worker complete, check if it left unfinished work:
|
|
234
|
-
|
|
235
|
-
```typescript
|
|
236
|
-
async function canMarkComplete(sessionID: string): Promise<boolean> {
|
|
237
|
-
const todos = await client.session.todo({ path: { id: sessionID } });
|
|
238
|
-
const incomplete = todos.filter(t => t.status !== "completed");
|
|
239
|
-
|
|
240
|
-
if (incomplete.length > 0) {
|
|
241
|
-
// Inject continuation prompt
|
|
242
|
-
await client.session.prompt({
|
|
243
|
-
path: { id: sessionID },
|
|
244
|
-
body: { parts: [{ text: "You have incomplete TODOs. Continue working." }] }
|
|
245
|
-
});
|
|
246
|
-
return false;
|
|
247
|
-
}
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
**Why:** Prevents race conditions where worker marks complete before finishing TODO list.
|
|
253
|
-
|
|
254
|
-
### 8. Think Mode for Complex Decomposition (Bonus)
|
|
255
|
-
|
|
256
|
-
Auto-enable extended thinking when decomposing complex tasks:
|
|
257
|
-
|
|
258
|
-
```typescript
|
|
259
|
-
// In chat.params hook
|
|
260
|
-
const complexityIndicators = [
|
|
261
|
-
"decompose", "break down", "plan", "architect",
|
|
262
|
-
"refactor across", "migrate", "redesign"
|
|
263
|
-
];
|
|
264
|
-
|
|
265
|
-
if (complexityIndicators.some(k => prompt.toLowerCase().includes(k))) {
|
|
266
|
-
output.message.model = { modelID: "claude-sonnet-4-5-high" };
|
|
267
|
-
output.message.thinking = { type: "enabled", budget_tokens: 16000 };
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
**Why:** Complex decomposition benefits from extended reasoning. Auto-switching removes friction.
|
|
272
|
-
|
|
273
|
-
## Implementation
|
|
274
|
-
|
|
275
|
-
### Phase 1: Delegation Protocol + Context Injection (Priority)
|
|
276
|
-
1. Update `swarm_subtask_prompt` with 7-section format
|
|
277
|
-
2. Add compaction context injection hook
|
|
278
|
-
3. Test with existing swarm workflows
|
|
279
|
-
|
|
280
|
-
### Phase 2: Preemptive Compaction + Event Hybrid
|
|
281
|
-
1. Add token monitoring to coordinator/worker sessions
|
|
282
|
-
2. Implement 80% threshold compaction with cooldown
|
|
283
|
-
3. Add event-driven completion detection
|
|
284
|
-
4. Keep polling as fallback
|
|
285
|
-
|
|
286
|
-
### Phase 3: Tool Limits + Parallel Enforcement
|
|
287
|
-
1. Add limits to repo-autopsy, cass, find-exports, semantic-memory
|
|
288
|
-
2. Update swarm-researcher prompt with parallel minimums
|
|
289
|
-
3. Add output validation for parallel enforcement
|
|
290
|
-
|
|
291
|
-
### Phase 4: Bonus Features
|
|
292
|
-
1. Todo-aware completion check
|
|
293
|
-
2. Think mode auto-switching for decomposition
|
|
294
|
-
|
|
295
|
-
## Consequences
|
|
296
|
-
|
|
297
|
-
### Positive
|
|
298
|
-
- **Better worker behavior**: 7-section protocol reduces rogue actions
|
|
299
|
-
- **Context survives compaction**: Critical info preserved through summarization
|
|
300
|
-
- **No more context overflow**: Preemptive compaction at 80%
|
|
301
|
-
- **Faster completion detection**: Events + polling hybrid
|
|
302
|
-
- **Cheaper research**: Parallel execution reduces round-trips
|
|
303
|
-
- **Predictable tool output**: Hard limits prevent context explosion
|
|
304
|
-
|
|
305
|
-
### Negative
|
|
306
|
-
- **More complexity**: Additional hooks and state management
|
|
307
|
-
- **Prompt bloat**: 7-section format is verbose (but worth it)
|
|
308
|
-
- **Compaction overhead**: Preemptive compaction adds latency (but prevents crashes)
|
|
309
|
-
|
|
310
|
-
### Neutral
|
|
311
|
-
- **Attribution**: All patterns credited to code-yeongyu/oh-my-opencode
|
|
312
|
-
- **Not a fork**: We're adopting patterns, not copying code
|
|
313
|
-
|
|
314
|
-
## Alternatives Considered
|
|
315
|
-
|
|
316
|
-
### Copy oh-my-opencode Wholesale
|
|
317
|
-
Could fork and adapt. Rejected because:
|
|
318
|
-
- Different architecture (we have Swarm Mail, Hive, etc.)
|
|
319
|
-
- Our patterns complement theirs, not replace
|
|
320
|
-
- Selective adoption is cleaner
|
|
321
|
-
|
|
322
|
-
### Skip Compaction Handling
|
|
323
|
-
Could rely on OpenCode's built-in compaction. Rejected because:
|
|
324
|
-
- Default compaction loses swarm-specific context
|
|
325
|
-
- Decomposition strategy, dependency graph critical for workers
|
|
326
|
-
|
|
327
|
-
### Always Use Extended Thinking
|
|
328
|
-
Could enable thinking for all coordinator actions. Rejected because:
|
|
329
|
-
- Overkill for simple tasks
|
|
330
|
-
- Slower and more expensive
|
|
331
|
-
- Auto-detection is smarter
|
|
332
|
-
|
|
333
|
-
## References
|
|
334
|
-
|
|
335
|
-
- [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) by code-yeongyu - Primary source
|
|
336
|
-
- [ADR-007](./ADR-007-swarm-enhancements-worktree-review.md) - Worktree isolation + structured review
|
|
337
|
-
- [ADR-008](./ADR-008-worker-handoff-protocol.md) - Worker handoff protocol
|
|
338
|
-
|
|
339
|
-
## Acknowledgments
|
|
340
|
-
|
|
341
|
-
Major thanks to **code-yeongyu** for building oh-my-opencode and open-sourcing these patterns. The OpenCode ecosystem is stronger because of contributions like this.
|
|
342
|
-
|
|
343
|
-
```
|
|
344
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
345
|
-
│ │
|
|
346
|
-
│ 🐝 "Good artists copy, great artists steal" │
|
|
347
|
-
│ — Picasso (probably misattributed) │
|
|
348
|
-
│ │
|
|
349
|
-
│ We're stealing the good stuff and making it ours. │
|
|
350
|
-
│ With proper attribution, of course. │
|
|
351
|
-
│ │
|
|
352
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
353
|
-
```
|
package/docs/planning/ROADMAP.md
DELETED
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
# Implementation Roadmap
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This roadmap implements all 5 ADRs in phased releases over 12 weeks. Each phase delivers incremental value and can ship independently.
|
|
6
|
-
|
|
7
|
-
## Phase 0: Preparation (Week 0)
|
|
8
|
-
|
|
9
|
-
**Goal:** Set up monorepo infrastructure and validate all ADRs
|
|
10
|
-
|
|
11
|
-
**Tasks:**
|
|
12
|
-
|
|
13
|
-
- [ ] Install Turborepo + configure turbo.json
|
|
14
|
-
- [ ] Set up Changesets for versioning
|
|
15
|
-
- [ ] Configure dependency-cruiser for circular dep detection
|
|
16
|
-
- [ ] Create packages/swarm-mail and packages/opencode-swarm-plugin directories
|
|
17
|
-
- [ ] Set up TypeScript project references
|
|
18
|
-
- [ ] Configure CI/CD with Turborepo caching
|
|
19
|
-
|
|
20
|
-
**Deliverables:**
|
|
21
|
-
|
|
22
|
-
- Working monorepo build (`turbo run build`)
|
|
23
|
-
- Published ADRs in docs/planning/
|
|
24
|
-
- CI pipeline running tests for both packages
|
|
25
|
-
|
|
26
|
-
**Success Criteria:**
|
|
27
|
-
|
|
28
|
-
- `bun run build` builds both packages in correct order
|
|
29
|
-
- No circular dependencies detected
|
|
30
|
-
- CI completes in <2 minutes (with caching)
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Phase 1: Package Extraction (Weeks 1-2)
|
|
35
|
-
|
|
36
|
-
**Goal:** Extract swarm-mail package and publish to npm
|
|
37
|
-
|
|
38
|
-
**ADRs:** ADR-001, ADR-002
|
|
39
|
-
|
|
40
|
-
**Tasks:**
|
|
41
|
-
|
|
42
|
-
- [ ] Move src/streams/\* to packages/swarm-mail/src/streams/
|
|
43
|
-
- [ ] Move agent-mail.ts, swarm-mail.ts to swarm-mail
|
|
44
|
-
- [ ] Update imports in opencode-swarm-plugin to use swarm-mail
|
|
45
|
-
- [ ] Migrate integration tests
|
|
46
|
-
- [ ] Write swarm-mail README with examples
|
|
47
|
-
- [ ] Add deprecation warnings in opencode-swarm-plugin
|
|
48
|
-
- [ ] Publish swarm-mail@0.1.0 to npm
|
|
49
|
-
|
|
50
|
-
**Deliverables:**
|
|
51
|
-
|
|
52
|
-
- swarm-mail published on npm
|
|
53
|
-
- opencode-swarm-plugin depends on swarm-mail
|
|
54
|
-
- Migration guide for existing users
|
|
55
|
-
- TypeDoc API documentation
|
|
56
|
-
|
|
57
|
-
**Success Criteria:**
|
|
58
|
-
|
|
59
|
-
- All tests pass in both packages
|
|
60
|
-
- swarm-mail works in standalone project
|
|
61
|
-
- No circular dependencies
|
|
62
|
-
- Published tarball <500KB
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Phase 2: Performance Optimizations (Weeks 3-4)
|
|
67
|
-
|
|
68
|
-
**Goal:** Replace polling with live queries and add batch operations
|
|
69
|
-
|
|
70
|
-
**ADRs:** ADR-003
|
|
71
|
-
|
|
72
|
-
**Tasks:**
|
|
73
|
-
|
|
74
|
-
- [ ] Create live query wrapper (src/streams/live-query.ts)
|
|
75
|
-
- [ ] Add subscription cleanup tracking
|
|
76
|
-
- [ ] Replace polling in watchInbox()
|
|
77
|
-
- [ ] Replace polling in watchEvents()
|
|
78
|
-
- [ ] Add batch message send API
|
|
79
|
-
- [ ] Add batch event append API
|
|
80
|
-
- [ ] Write integration tests for live queries
|
|
81
|
-
- [ ] Run performance benchmarks (latency, CPU, memory)
|
|
82
|
-
|
|
83
|
-
**Deliverables:**
|
|
84
|
-
|
|
85
|
-
- Live queries for inbox, events, file reservations
|
|
86
|
-
- Batch APIs for messages and events
|
|
87
|
-
- Performance benchmarks showing improvements
|
|
88
|
-
- Feature flag for gradual rollout
|
|
89
|
-
|
|
90
|
-
**Success Criteria:**
|
|
91
|
-
|
|
92
|
-
- Notification latency <50ms (99th percentile)
|
|
93
|
-
- CPU usage <1% in idle state
|
|
94
|
-
- Batch operations 10x faster than individual
|
|
95
|
-
- Memory usage increase <20%
|
|
96
|
-
|
|
97
|
-
**Metrics (Before → After):**
|
|
98
|
-
|
|
99
|
-
- Latency: 250-500ms → <10ms (25-50x improvement)
|
|
100
|
-
- CPU: 5-10% → <1% (5-10x reduction)
|
|
101
|
-
- Queries/sec: 2-4 → 0 (eliminated)
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Phase 3: Message Queue Features (Weeks 5-7)
|
|
106
|
-
|
|
107
|
-
**Goal:** Add priority queues, DLQ, TTL, pub/sub
|
|
108
|
-
|
|
109
|
-
**ADRs:** ADR-004
|
|
110
|
-
|
|
111
|
-
**Tasks:**
|
|
112
|
-
|
|
113
|
-
**Week 5: Priority Queues + DLQ**
|
|
114
|
-
|
|
115
|
-
- [ ] Add priority column to messages table
|
|
116
|
-
- [ ] Update getInbox() to ORDER BY priority DESC
|
|
117
|
-
- [ ] Create failed_messages table
|
|
118
|
-
- [ ] Implement retry logic with exponential backoff
|
|
119
|
-
- [ ] Add DLQ viewer to CLI
|
|
120
|
-
|
|
121
|
-
**Week 6: TTL + Pub/Sub**
|
|
122
|
-
|
|
123
|
-
- [ ] Add expires_at column to messages
|
|
124
|
-
- [ ] Implement background TTL cleanup job
|
|
125
|
-
- [ ] Add topic column to messages
|
|
126
|
-
- [ ] Implement subscribeToTopic() using live queries
|
|
127
|
-
- [ ] Support wildcard topic subscriptions
|
|
128
|
-
|
|
129
|
-
**Week 7: Testing + Documentation**
|
|
130
|
-
|
|
131
|
-
- [ ] Write integration tests for all features
|
|
132
|
-
- [ ] Add examples to README
|
|
133
|
-
- [ ] Document retry/DLQ behavior
|
|
134
|
-
- [ ] Document pub/sub patterns
|
|
135
|
-
|
|
136
|
-
**Deliverables:**
|
|
137
|
-
|
|
138
|
-
- Priority queues (4 levels: 0=urgent, 3=low)
|
|
139
|
-
- DLQ with retry tracking
|
|
140
|
-
- TTL with background cleanup
|
|
141
|
-
- Pub/sub with wildcard topics
|
|
142
|
-
|
|
143
|
-
**Success Criteria:**
|
|
144
|
-
|
|
145
|
-
- Priority messages processed first
|
|
146
|
-
- Failed messages retry 3x before DLQ
|
|
147
|
-
- Expired messages cleaned up within 5 minutes
|
|
148
|
-
- Topic subscriptions work with wildcards
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Phase 4: DevTools + CLI (Weeks 8-10)
|
|
153
|
-
|
|
154
|
-
**Goal:** Build DevTools UI and CLI for observability
|
|
155
|
-
|
|
156
|
-
**ADRs:** ADR-005
|
|
157
|
-
|
|
158
|
-
**Tasks:**
|
|
159
|
-
|
|
160
|
-
**Week 8: CLI**
|
|
161
|
-
|
|
162
|
-
- [ ] Add @effect/cli dependency
|
|
163
|
-
- [ ] Implement `swarm events` command
|
|
164
|
-
- [ ] Implement `swarm messages` command
|
|
165
|
-
- [ ] Implement `swarm locks` command
|
|
166
|
-
- [ ] Implement `swarm replay` command
|
|
167
|
-
- [ ] Add `--tail` mode for real-time updates
|
|
168
|
-
|
|
169
|
-
**Week 9: DevTools UI**
|
|
170
|
-
|
|
171
|
-
- [ ] Scaffold SvelteKit app in apps/devtools
|
|
172
|
-
- [ ] Build event stream viewer
|
|
173
|
-
- [ ] Build message inbox/outbox viewer
|
|
174
|
-
- [ ] Build file reservation timeline
|
|
175
|
-
- [ ] Add SSE endpoint for real-time updates
|
|
176
|
-
|
|
177
|
-
**Week 10: Integration + Polish**
|
|
178
|
-
|
|
179
|
-
- [ ] Static export of DevTools UI
|
|
180
|
-
- [ ] Embed UI in plugin (serve at /\_swarm/devtools)
|
|
181
|
-
- [ ] Add screenshots to README
|
|
182
|
-
- [ ] Write user guide
|
|
183
|
-
|
|
184
|
-
**Deliverables:**
|
|
185
|
-
|
|
186
|
-
- CLI with 5 commands (events, messages, locks, replay, metrics)
|
|
187
|
-
- DevTools UI (embeddable SvelteKit app)
|
|
188
|
-
- Real-time updates via SSE
|
|
189
|
-
- User guide with screenshots
|
|
190
|
-
|
|
191
|
-
**Success Criteria:**
|
|
192
|
-
|
|
193
|
-
- CLI can tail events in real-time
|
|
194
|
-
- DevTools UI shows live message stream
|
|
195
|
-
- UI works offline (static export)
|
|
196
|
-
- Documentation covers all CLI commands
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Phase 5: Metrics + Tracing (Weeks 11-12)
|
|
201
|
-
|
|
202
|
-
**Goal:** Add Prometheus metrics and OpenTelemetry tracing
|
|
203
|
-
|
|
204
|
-
**ADRs:** ADR-005
|
|
205
|
-
|
|
206
|
-
**Tasks:**
|
|
207
|
-
|
|
208
|
-
**Week 11: Metrics**
|
|
209
|
-
|
|
210
|
-
- [ ] Add prom-client dependency
|
|
211
|
-
- [ ] Instrument message send/receive latency
|
|
212
|
-
- [ ] Add lock contention histogram
|
|
213
|
-
- [ ] Add queue depth gauge
|
|
214
|
-
- [ ] Expose /metrics endpoint
|
|
215
|
-
- [ ] Add Grafana dashboard template
|
|
216
|
-
|
|
217
|
-
**Week 12: Tracing**
|
|
218
|
-
|
|
219
|
-
- [ ] Add @effect/opentelemetry dependency
|
|
220
|
-
- [ ] Instrument message send/receive spans
|
|
221
|
-
- [ ] Propagate trace context in messages
|
|
222
|
-
- [ ] Add trace_id to message metadata
|
|
223
|
-
- [ ] Test with Jaeger/Zipkin
|
|
224
|
-
- [ ] Write tracing guide
|
|
225
|
-
|
|
226
|
-
**Deliverables:**
|
|
227
|
-
|
|
228
|
-
- Prometheus metrics at /metrics endpoint
|
|
229
|
-
- OpenTelemetry tracing integration
|
|
230
|
-
- Grafana dashboard template
|
|
231
|
-
- Tracing guide with Jaeger setup
|
|
232
|
-
|
|
233
|
-
**Success Criteria:**
|
|
234
|
-
|
|
235
|
-
- Metrics exposed and scrapeable by Prometheus
|
|
236
|
-
- Traces visible in Jaeger UI
|
|
237
|
-
- Trace propagation across agents works
|
|
238
|
-
- Documentation for all observability tools
|
|
239
|
-
|
|
240
|
-
---
|
|
241
|
-
|
|
242
|
-
## Phase 6: Saga Pattern (Future)
|
|
243
|
-
|
|
244
|
-
**Goal:** Implement saga orchestration for long-running workflows
|
|
245
|
-
|
|
246
|
-
**ADRs:** ADR-004 (Phase 5)
|
|
247
|
-
|
|
248
|
-
**Status:** Deferred to v2.0
|
|
249
|
-
|
|
250
|
-
**Tasks:**
|
|
251
|
-
|
|
252
|
-
- [ ] Create saga_instances and saga_steps tables
|
|
253
|
-
- [ ] Add saga coordinator logic
|
|
254
|
-
- [ ] Implement compensation pattern
|
|
255
|
-
- [ ] Add saga viewer to DevTools UI
|
|
256
|
-
- [ ] Write saga pattern examples
|
|
257
|
-
|
|
258
|
-
**Deliverables:**
|
|
259
|
-
|
|
260
|
-
- Saga orchestration pattern
|
|
261
|
-
- Compensation (undo) support
|
|
262
|
-
- Saga viewer in DevTools
|
|
263
|
-
- 3+ example saga workflows
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## Release Schedule
|
|
268
|
-
|
|
269
|
-
| Version | Phase | Features | ETA |
|
|
270
|
-
| --------- | ----- | ------------------------------ | ------- |
|
|
271
|
-
| **0.1.0** | 1 | swarm-mail package extraction | Week 2 |
|
|
272
|
-
| **0.2.0** | 2 | Live queries, batch operations | Week 4 |
|
|
273
|
-
| **0.3.0** | 3 | Priority, DLQ, TTL, pub/sub | Week 7 |
|
|
274
|
-
| **0.4.0** | 4 | DevTools UI + CLI | Week 10 |
|
|
275
|
-
| **0.5.0** | 5 | Metrics + tracing | Week 12 |
|
|
276
|
-
| **1.0.0** | All | Stable release | Week 13 |
|
|
277
|
-
| **2.0.0** | 6 | Saga pattern (future) | TBD |
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## Dependencies Between Phases
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
Phase 0 (Monorepo)
|
|
285
|
-
└──> Phase 1 (Package Extraction)
|
|
286
|
-
└──> Phase 2 (Performance)
|
|
287
|
-
├──> Phase 3 (Queue Features)
|
|
288
|
-
└──> Phase 4 (DevTools)
|
|
289
|
-
└──> Phase 5 (Metrics/Tracing)
|
|
290
|
-
└──> Phase 6 (Sagas, future)
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
**Critical Path:** Phases 0→1→2 are sequential. Phases 3-5 can partially overlap after Phase 2.
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## Risk Mitigation
|
|
298
|
-
|
|
299
|
-
| Risk | Phase | Mitigation |
|
|
300
|
-
| ---------------------------------------- | ----- | --------------------------------------------------------- |
|
|
301
|
-
| Breaking changes during extraction | 1 | Feature branch, comprehensive tests, migration guide |
|
|
302
|
-
| Performance regression with live queries | 2 | Feature flag, benchmark before/after, fallback to polling |
|
|
303
|
-
| Complexity of saga pattern | 6 | Defer to v2.0, gather user feedback first |
|
|
304
|
-
| DevTools UI maintenance burden | 4 | Keep UI minimal, focus on CLI for power users |
|
|
305
|
-
| Metrics overhead | 5 | Make metrics opt-in, minimal instrumentation |
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## Success Metrics
|
|
310
|
-
|
|
311
|
-
**Phase 1 (Package Extraction):**
|
|
312
|
-
|
|
313
|
-
- swarm-mail used in 3+ external projects within 3 months
|
|
314
|
-
- Zero breaking changes reported by users
|
|
315
|
-
|
|
316
|
-
**Phase 2 (Performance):**
|
|
317
|
-
|
|
318
|
-
- 25x faster notification latency (500ms → <10ms)
|
|
319
|
-
- 5x lower CPU usage (10% → <2%)
|
|
320
|
-
|
|
321
|
-
**Phase 3 (Queue Features):**
|
|
322
|
-
|
|
323
|
-
- 95% of messages processed within priority SLA
|
|
324
|
-
- <1% messages fail to DLQ
|
|
325
|
-
|
|
326
|
-
**Phase 4 (DevTools):**
|
|
327
|
-
|
|
328
|
-
- 80% of developers use DevTools UI for debugging
|
|
329
|
-
- CLI used in 50%+ of support cases
|
|
330
|
-
|
|
331
|
-
**Phase 5 (Metrics/Tracing):**
|
|
332
|
-
|
|
333
|
-
- Metrics dashboard used in production monitoring
|
|
334
|
-
- Distributed traces reduce debugging time by 50%
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
## Post-1.0 Backlog (v2.0+)
|
|
339
|
-
|
|
340
|
-
**Saga Pattern** (ADR-004 Phase 5)
|
|
341
|
-
|
|
342
|
-
- Long-running multi-agent workflows
|
|
343
|
-
- Compensation (undo) support
|
|
344
|
-
- Saga state visualization
|
|
345
|
-
|
|
346
|
-
**Advanced Pub/Sub**
|
|
347
|
-
|
|
348
|
-
- Message routing rules
|
|
349
|
-
- Filter expressions (SQL-like WHERE clauses)
|
|
350
|
-
- At-least-once vs exactly-once delivery guarantees
|
|
351
|
-
|
|
352
|
-
**Multi-Project Support**
|
|
353
|
-
|
|
354
|
-
- Cross-project message routing
|
|
355
|
-
- Project-level isolation
|
|
356
|
-
- Shared infra for mono repos
|
|
357
|
-
|
|
358
|
-
**Performance Tier 2**
|
|
359
|
-
|
|
360
|
-
- Connection pooling for multi-DB scenarios
|
|
361
|
-
- Message batching optimizations
|
|
362
|
-
- SKIP LOCKED for exactly-once semantics
|
|
363
|
-
|
|
364
|
-
**Security**
|
|
365
|
-
|
|
366
|
-
- Message encryption at rest
|
|
367
|
-
- Agent authentication/authorization
|
|
368
|
-
- Audit logging
|