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,237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Post-Compaction Tool Call Tracker
|
|
3
|
-
*
|
|
4
|
-
* Tracks tool calls after compaction resumption to detect coordinator violations
|
|
5
|
-
* and provide learning signals for eval-driven development.
|
|
6
|
-
*
|
|
7
|
-
* ## Purpose
|
|
8
|
-
*
|
|
9
|
-
* When context is compacted, the continuation agent needs observation to learn
|
|
10
|
-
* if it's following coordinator discipline. This tracker:
|
|
11
|
-
*
|
|
12
|
-
* 1. Emits resumption_started on first tool call (marks compaction exit)
|
|
13
|
-
* 2. Tracks up to N tool calls (default 20) with violation detection
|
|
14
|
-
* 3. Stops tracking after limit to avoid noise in long sessions
|
|
15
|
-
*
|
|
16
|
-
* ## Coordinator Violations Detected
|
|
17
|
-
*
|
|
18
|
-
* - **Edit/Write**: Coordinators NEVER edit files - spawn worker instead
|
|
19
|
-
* - **swarmmail_reserve/agentmail_reserve**: Workers reserve, not coordinators
|
|
20
|
-
*
|
|
21
|
-
* ## Integration
|
|
22
|
-
*
|
|
23
|
-
* Used by compaction hook to wire tool.call events → eval capture.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```typescript
|
|
27
|
-
* const tracker = createPostCompactionTracker({
|
|
28
|
-
* sessionId: "session-123",
|
|
29
|
-
* epicId: "bd-epic-456",
|
|
30
|
-
* onEvent: captureCompactionEvent,
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
* // Wire to OpenCode hook
|
|
34
|
-
* hooks["tool.call"] = (input) => {
|
|
35
|
-
* tracker.trackToolCall({
|
|
36
|
-
* tool: input.tool,
|
|
37
|
-
* args: input.args,
|
|
38
|
-
* timestamp: Date.now(),
|
|
39
|
-
* });
|
|
40
|
-
* };
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Tool call event structure
|
|
46
|
-
*/
|
|
47
|
-
export interface ToolCallEvent {
|
|
48
|
-
tool: string;
|
|
49
|
-
args: Record<string, unknown>;
|
|
50
|
-
timestamp: number;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Compaction event payload (matches eval-capture.ts structure)
|
|
55
|
-
*/
|
|
56
|
-
export interface CompactionEvent {
|
|
57
|
-
session_id: string;
|
|
58
|
-
epic_id: string;
|
|
59
|
-
compaction_type:
|
|
60
|
-
| "detection_complete"
|
|
61
|
-
| "prompt_generated"
|
|
62
|
-
| "context_injected"
|
|
63
|
-
| "resumption_started"
|
|
64
|
-
| "tool_call_tracked";
|
|
65
|
-
payload: {
|
|
66
|
-
session_id?: string;
|
|
67
|
-
epic_id?: string;
|
|
68
|
-
tool?: string;
|
|
69
|
-
args?: Record<string, unknown>;
|
|
70
|
-
call_number?: number;
|
|
71
|
-
is_coordinator_violation?: boolean;
|
|
72
|
-
violation_reason?: string;
|
|
73
|
-
timestamp?: number;
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Tracker configuration
|
|
79
|
-
*/
|
|
80
|
-
export interface PostCompactionTrackerConfig {
|
|
81
|
-
sessionId: string;
|
|
82
|
-
epicId: string;
|
|
83
|
-
onEvent: (event: CompactionEvent) => void;
|
|
84
|
-
maxCalls?: number;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Post-compaction tracker instance
|
|
89
|
-
*/
|
|
90
|
-
export interface PostCompactionTracker {
|
|
91
|
-
trackToolCall(event: ToolCallEvent): void;
|
|
92
|
-
isTracking(): boolean;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// ============================================================================
|
|
96
|
-
// Constants
|
|
97
|
-
// ============================================================================
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Default maximum number of tool calls to track
|
|
101
|
-
*
|
|
102
|
-
* Chosen to balance:
|
|
103
|
-
* - Enough data for pattern detection (20 calls is ~2-3 minutes of coordinator work)
|
|
104
|
-
* - Avoiding noise pollution in long sessions
|
|
105
|
-
*/
|
|
106
|
-
export const DEFAULT_MAX_TRACKED_CALLS = 20;
|
|
107
|
-
|
|
108
|
-
// ============================================================================
|
|
109
|
-
// Coordinator Violation Detection
|
|
110
|
-
// ============================================================================
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Tools that coordinators are NEVER allowed to use
|
|
114
|
-
*
|
|
115
|
-
* Key insight from semantic memory: coordinators lose identity after compaction
|
|
116
|
-
* and start doing implementation work. These violations are observable signals
|
|
117
|
-
* that the coordinator mandate wasn't preserved in continuation prompt.
|
|
118
|
-
*/
|
|
119
|
-
const FORBIDDEN_COORDINATOR_TOOLS: Record<string, string> = {
|
|
120
|
-
edit: "Coordinators NEVER edit files - spawn worker instead",
|
|
121
|
-
write: "Coordinators NEVER write files - spawn worker instead",
|
|
122
|
-
swarmmail_reserve: "Coordinators NEVER reserve files - workers reserve files",
|
|
123
|
-
agentmail_reserve: "Coordinators NEVER reserve files - workers reserve files",
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Check if tool call is a coordinator violation
|
|
128
|
-
*
|
|
129
|
-
* @param tool - Tool name from OpenCode tool.call hook
|
|
130
|
-
* @returns Violation status with reason if forbidden
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* ```typescript
|
|
134
|
-
* const result = isCoordinatorViolation("edit");
|
|
135
|
-
* // { isViolation: true, reason: "Coordinators NEVER edit..." }
|
|
136
|
-
*
|
|
137
|
-
* const result = isCoordinatorViolation("read");
|
|
138
|
-
* // { isViolation: false }
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
export function isCoordinatorViolation(tool: string): {
|
|
142
|
-
isViolation: boolean;
|
|
143
|
-
reason?: string;
|
|
144
|
-
} {
|
|
145
|
-
const reason = FORBIDDEN_COORDINATOR_TOOLS[tool];
|
|
146
|
-
return {
|
|
147
|
-
isViolation: !!reason,
|
|
148
|
-
reason,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// ============================================================================
|
|
153
|
-
// Tracker Factory
|
|
154
|
-
// ============================================================================
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Create a post-compaction tool call tracker
|
|
158
|
-
*
|
|
159
|
-
* @example
|
|
160
|
-
* ```typescript
|
|
161
|
-
* const tracker = createPostCompactionTracker({
|
|
162
|
-
* sessionId: "session-123",
|
|
163
|
-
* epicId: "bd-epic-456",
|
|
164
|
-
* onEvent: (event) => captureCompactionEvent(event),
|
|
165
|
-
* maxCalls: 20
|
|
166
|
-
* });
|
|
167
|
-
*
|
|
168
|
-
* // Track tool calls
|
|
169
|
-
* tracker.trackToolCall({
|
|
170
|
-
* tool: "read",
|
|
171
|
-
* args: { filePath: "/test.ts" },
|
|
172
|
-
* timestamp: Date.now()
|
|
173
|
-
* });
|
|
174
|
-
* ```
|
|
175
|
-
*/
|
|
176
|
-
export function createPostCompactionTracker(
|
|
177
|
-
config: PostCompactionTrackerConfig,
|
|
178
|
-
): PostCompactionTracker {
|
|
179
|
-
const {
|
|
180
|
-
sessionId,
|
|
181
|
-
epicId,
|
|
182
|
-
onEvent,
|
|
183
|
-
maxCalls = DEFAULT_MAX_TRACKED_CALLS,
|
|
184
|
-
} = config;
|
|
185
|
-
|
|
186
|
-
let callCount = 0;
|
|
187
|
-
let resumptionEmitted = false;
|
|
188
|
-
|
|
189
|
-
return {
|
|
190
|
-
trackToolCall(event: ToolCallEvent): void {
|
|
191
|
-
// Stop tracking after max calls reached
|
|
192
|
-
if (callCount >= maxCalls) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Emit resumption_started on first call
|
|
197
|
-
if (!resumptionEmitted) {
|
|
198
|
-
onEvent({
|
|
199
|
-
session_id: sessionId,
|
|
200
|
-
epic_id: epicId,
|
|
201
|
-
compaction_type: "resumption_started",
|
|
202
|
-
payload: {
|
|
203
|
-
session_id: sessionId,
|
|
204
|
-
epic_id: epicId,
|
|
205
|
-
timestamp: event.timestamp,
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
resumptionEmitted = true;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Increment before emitting so call_number is 1-based
|
|
212
|
-
callCount++;
|
|
213
|
-
|
|
214
|
-
// Check for coordinator violations
|
|
215
|
-
const violation = isCoordinatorViolation(event.tool);
|
|
216
|
-
|
|
217
|
-
// Emit tool_call_tracked event
|
|
218
|
-
onEvent({
|
|
219
|
-
session_id: sessionId,
|
|
220
|
-
epic_id: epicId,
|
|
221
|
-
compaction_type: "tool_call_tracked",
|
|
222
|
-
payload: {
|
|
223
|
-
tool: event.tool,
|
|
224
|
-
args: event.args,
|
|
225
|
-
call_number: callCount,
|
|
226
|
-
is_coordinator_violation: violation.isViolation,
|
|
227
|
-
violation_reason: violation.reason,
|
|
228
|
-
timestamp: event.timestamp,
|
|
229
|
-
},
|
|
230
|
-
});
|
|
231
|
-
},
|
|
232
|
-
|
|
233
|
-
isTracking(): boolean {
|
|
234
|
-
return callCount < maxCalls;
|
|
235
|
-
},
|
|
236
|
-
};
|
|
237
|
-
}
|