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,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swarm Decompose Unit Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for task decomposition, validation, and eval capture integration.
|
|
5
|
-
*
|
|
6
|
-
* TDD: Testing eval capture integration - verifies captureDecomposition() is called
|
|
7
|
-
* after successful validation with correct parameters.
|
|
8
|
-
*/
|
|
9
|
-
import { afterEach, beforeEach, describe, expect, test, spyOn } from "bun:test";
|
|
10
|
-
import * as fs from "node:fs";
|
|
11
|
-
import { swarm_validate_decomposition } from "./swarm-decompose";
|
|
12
|
-
import * as evalCapture from "./eval-capture.js";
|
|
13
|
-
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// Test Setup
|
|
16
|
-
// ============================================================================
|
|
17
|
-
|
|
18
|
-
const mockContext = {
|
|
19
|
-
sessionID: `test-decompose-${Date.now()}`,
|
|
20
|
-
messageID: `test-message-${Date.now()}`,
|
|
21
|
-
agent: "test-agent",
|
|
22
|
-
abort: new AbortController().signal,
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
let testProjectPath: string;
|
|
26
|
-
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
testProjectPath = `/tmp/test-swarm-decompose-${Date.now()}`;
|
|
29
|
-
fs.mkdirSync(testProjectPath, { recursive: true });
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
afterEach(() => {
|
|
33
|
-
if (fs.existsSync(testProjectPath)) {
|
|
34
|
-
fs.rmSync(testProjectPath, { recursive: true, force: true });
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
// ============================================================================
|
|
39
|
-
// Eval Capture Integration Tests
|
|
40
|
-
// ============================================================================
|
|
41
|
-
|
|
42
|
-
describe("captureDecomposition integration", () => {
|
|
43
|
-
test("calls captureDecomposition after successful validation with all params", async () => {
|
|
44
|
-
// Spy on captureDecomposition
|
|
45
|
-
const captureDecompositionSpy = spyOn(evalCapture, "captureDecomposition");
|
|
46
|
-
|
|
47
|
-
const validCellTree = JSON.stringify({
|
|
48
|
-
epic: {
|
|
49
|
-
title: "Add OAuth",
|
|
50
|
-
description: "Implement OAuth authentication",
|
|
51
|
-
},
|
|
52
|
-
subtasks: [
|
|
53
|
-
{
|
|
54
|
-
title: "Add OAuth provider config",
|
|
55
|
-
description: "Set up Google OAuth",
|
|
56
|
-
files: ["src/auth/google.ts", "src/auth/config.ts"],
|
|
57
|
-
dependencies: [],
|
|
58
|
-
estimated_complexity: 2,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
title: "Add login UI",
|
|
62
|
-
description: "Create login button component",
|
|
63
|
-
files: ["src/components/LoginButton.tsx"],
|
|
64
|
-
dependencies: [0],
|
|
65
|
-
estimated_complexity: 1,
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const result = await swarm_validate_decomposition.execute(
|
|
71
|
-
{
|
|
72
|
-
response: validCellTree,
|
|
73
|
-
project_path: testProjectPath,
|
|
74
|
-
task: "Add user authentication",
|
|
75
|
-
context: "Using NextAuth.js",
|
|
76
|
-
strategy: "feature-based" as const,
|
|
77
|
-
epic_id: "test-epic-123",
|
|
78
|
-
},
|
|
79
|
-
mockContext,
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
const parsed = JSON.parse(result);
|
|
83
|
-
expect(parsed.valid).toBe(true);
|
|
84
|
-
|
|
85
|
-
// Verify captureDecomposition was called with correct params
|
|
86
|
-
expect(captureDecompositionSpy).toHaveBeenCalledTimes(1);
|
|
87
|
-
expect(captureDecompositionSpy).toHaveBeenCalledWith({
|
|
88
|
-
epicId: "test-epic-123",
|
|
89
|
-
projectPath: testProjectPath,
|
|
90
|
-
task: "Add user authentication",
|
|
91
|
-
context: "Using NextAuth.js",
|
|
92
|
-
strategy: "feature-based",
|
|
93
|
-
epicTitle: "Add OAuth",
|
|
94
|
-
epicDescription: "Implement OAuth authentication",
|
|
95
|
-
subtasks: [
|
|
96
|
-
{
|
|
97
|
-
title: "Add OAuth provider config",
|
|
98
|
-
description: "Set up Google OAuth",
|
|
99
|
-
files: ["src/auth/google.ts", "src/auth/config.ts"],
|
|
100
|
-
dependencies: [],
|
|
101
|
-
estimated_complexity: 2,
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
title: "Add login UI",
|
|
105
|
-
description: "Create login button component",
|
|
106
|
-
files: ["src/components/LoginButton.tsx"],
|
|
107
|
-
dependencies: [0],
|
|
108
|
-
estimated_complexity: 1,
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
captureDecompositionSpy.mockRestore();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
test("does not call captureDecomposition when validation fails", async () => {
|
|
117
|
-
const captureDecompositionSpy = spyOn(evalCapture, "captureDecomposition");
|
|
118
|
-
|
|
119
|
-
// Invalid CellTree - missing required fields
|
|
120
|
-
const invalidCellTree = JSON.stringify({
|
|
121
|
-
epic: { title: "Missing subtasks" },
|
|
122
|
-
// No subtasks array
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
const result = await swarm_validate_decomposition.execute(
|
|
126
|
-
{
|
|
127
|
-
response: invalidCellTree,
|
|
128
|
-
project_path: testProjectPath,
|
|
129
|
-
task: "Add auth",
|
|
130
|
-
strategy: "auto" as const,
|
|
131
|
-
epic_id: "test-epic-456",
|
|
132
|
-
},
|
|
133
|
-
mockContext,
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
const parsed = JSON.parse(result);
|
|
137
|
-
expect(parsed.valid).toBe(false);
|
|
138
|
-
|
|
139
|
-
// Verify captureDecomposition was NOT called
|
|
140
|
-
expect(captureDecompositionSpy).not.toHaveBeenCalled();
|
|
141
|
-
|
|
142
|
-
captureDecompositionSpy.mockRestore();
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
test("handles optional context and description fields", async () => {
|
|
146
|
-
const captureDecompositionSpy = spyOn(evalCapture, "captureDecomposition");
|
|
147
|
-
|
|
148
|
-
const validCellTree = JSON.stringify({
|
|
149
|
-
epic: {
|
|
150
|
-
title: "Fix bug",
|
|
151
|
-
// No description
|
|
152
|
-
},
|
|
153
|
-
subtasks: [
|
|
154
|
-
{
|
|
155
|
-
title: "Add test",
|
|
156
|
-
files: ["src/test.ts"],
|
|
157
|
-
dependencies: [],
|
|
158
|
-
estimated_complexity: 1,
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const result = await swarm_validate_decomposition.execute(
|
|
164
|
-
{
|
|
165
|
-
response: validCellTree,
|
|
166
|
-
project_path: testProjectPath,
|
|
167
|
-
task: "Fix the auth bug",
|
|
168
|
-
// No context
|
|
169
|
-
strategy: "risk-based" as const,
|
|
170
|
-
epic_id: "test-epic-789",
|
|
171
|
-
},
|
|
172
|
-
mockContext,
|
|
173
|
-
);
|
|
174
|
-
|
|
175
|
-
const parsed = JSON.parse(result);
|
|
176
|
-
expect(parsed.valid).toBe(true);
|
|
177
|
-
|
|
178
|
-
// Verify captureDecomposition was called without optional fields
|
|
179
|
-
expect(captureDecompositionSpy).toHaveBeenCalledTimes(1);
|
|
180
|
-
const call = captureDecompositionSpy.mock.calls[0];
|
|
181
|
-
expect(call[0].epicId).toBe("test-epic-789");
|
|
182
|
-
expect(call[0].context).toBeUndefined();
|
|
183
|
-
// Schema default makes description empty string instead of undefined
|
|
184
|
-
expect(call[0].epicDescription).toBe("");
|
|
185
|
-
|
|
186
|
-
captureDecompositionSpy.mockRestore();
|
|
187
|
-
});
|
|
188
|
-
});
|