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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// src/compaction-prompt-scoring.ts
|
|
2
|
+
var REAL_EPIC_ID = /mjkw[a-z0-9]{7,}/;
|
|
3
|
+
var PLACEHOLDERS = [
|
|
4
|
+
/<epic-id>/i,
|
|
5
|
+
/bd-xxx/,
|
|
6
|
+
/<path>/i,
|
|
7
|
+
/<project>/i
|
|
8
|
+
];
|
|
9
|
+
var ASCII_BOX = /[┌┐└┘─│]{3,}/;
|
|
10
|
+
var STRONG_LANGUAGE = [/\bNEVER\b/, /\bALWAYS\b/, /\bNON-NEGOTIABLE\b/];
|
|
11
|
+
function scoreEpicIdSpecificity(prompt) {
|
|
12
|
+
for (const pattern of PLACEHOLDERS) {
|
|
13
|
+
if (pattern.test(prompt.content)) {
|
|
14
|
+
return {
|
|
15
|
+
score: 0,
|
|
16
|
+
message: `Found placeholder: ${pattern.source}`
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (REAL_EPIC_ID.test(prompt.content)) {
|
|
21
|
+
return {
|
|
22
|
+
score: 1,
|
|
23
|
+
message: "Contains real epic ID"
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
score: 0,
|
|
28
|
+
message: "No epic ID found"
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function scoreActionability(prompt) {
|
|
32
|
+
const actionableTools = [
|
|
33
|
+
/swarm_status\([^)]*epic_id\s*=\s*['"]mjkw[a-z0-9]{7,}['"]/,
|
|
34
|
+
/swarmmail_inbox\(\)/
|
|
35
|
+
];
|
|
36
|
+
for (const pattern of actionableTools) {
|
|
37
|
+
if (pattern.test(prompt.content)) {
|
|
38
|
+
return {
|
|
39
|
+
score: 1,
|
|
40
|
+
message: "Contains actionable tool call with real values"
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (/swarm_status\([^)]*<epic-id>/.test(prompt.content) || /swarm_status\([^)]*<path>/.test(prompt.content)) {
|
|
45
|
+
return {
|
|
46
|
+
score: 0,
|
|
47
|
+
message: "Tool call has placeholders"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
score: 0,
|
|
52
|
+
message: "No actionable tool calls found"
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function scoreCoordinatorIdentity(prompt) {
|
|
56
|
+
const hasAsciiHeader = ASCII_BOX.test(prompt.content) && /(YOU ARE THE COORDINATOR|COORDINATOR MODE)/i.test(prompt.content);
|
|
57
|
+
if (!hasAsciiHeader) {
|
|
58
|
+
return {
|
|
59
|
+
score: 0,
|
|
60
|
+
message: "No ASCII header found"
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const hasStrongLanguage = STRONG_LANGUAGE.some((pattern) => pattern.test(prompt.content));
|
|
64
|
+
if (!hasStrongLanguage) {
|
|
65
|
+
return {
|
|
66
|
+
score: 0.5,
|
|
67
|
+
message: "ASCII header present but weak language"
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
score: 1,
|
|
72
|
+
message: "ASCII header + strong mandates present"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function scoreForbiddenToolsPresent(prompt) {
|
|
76
|
+
const forbiddenTools = [
|
|
77
|
+
/\bEdit\b/i,
|
|
78
|
+
/\bWrite\b/i,
|
|
79
|
+
/swarmmail_reserve/,
|
|
80
|
+
/git commit/,
|
|
81
|
+
/\bbash\b/i
|
|
82
|
+
];
|
|
83
|
+
const foundTools = forbiddenTools.filter((pattern) => pattern.test(prompt.content));
|
|
84
|
+
const score = foundTools.length / forbiddenTools.length;
|
|
85
|
+
if (score === 1) {
|
|
86
|
+
return {
|
|
87
|
+
score: 1,
|
|
88
|
+
message: "All 5 forbidden tools listed"
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (score === 0) {
|
|
92
|
+
return {
|
|
93
|
+
score: 0,
|
|
94
|
+
message: "No forbidden tools listed (0/5)"
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
score,
|
|
99
|
+
message: `${foundTools.length}/5 forbidden tools listed`
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function scorePostCompactionDiscipline(prompt) {
|
|
103
|
+
const toolCallPattern = /\b(swarm_status|swarmmail_inbox|Edit|Write|Read)\b/i;
|
|
104
|
+
const match = prompt.content.match(toolCallPattern);
|
|
105
|
+
if (!match) {
|
|
106
|
+
return {
|
|
107
|
+
score: 0,
|
|
108
|
+
message: "No tool calls found"
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const firstTool = match[1].toLowerCase();
|
|
112
|
+
if (firstTool === "swarm_status") {
|
|
113
|
+
return {
|
|
114
|
+
score: 1,
|
|
115
|
+
message: "First tool is swarm_status (correct)"
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (firstTool === "swarmmail_inbox") {
|
|
119
|
+
return {
|
|
120
|
+
score: 1,
|
|
121
|
+
message: "First tool is inbox (correct)"
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
score: 0,
|
|
126
|
+
message: `First tool is ${match[1]} (should be swarm_status or inbox)`
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
scorePostCompactionDiscipline,
|
|
131
|
+
scoreForbiddenToolsPresent,
|
|
132
|
+
scoreEpicIdSpecificity,
|
|
133
|
+
scoreCoordinatorIdentity,
|
|
134
|
+
scoreActionability,
|
|
135
|
+
STRONG_LANGUAGE,
|
|
136
|
+
REAL_EPIC_ID,
|
|
137
|
+
PLACEHOLDERS,
|
|
138
|
+
ASCII_BOX
|
|
139
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contributor Tools - GitHub profile extraction for changeset credits
|
|
3
|
+
*
|
|
4
|
+
* Provides contributor_lookup tool for fetching GitHub profiles and
|
|
5
|
+
* generating formatted changeset credit lines. Automatically stores
|
|
6
|
+
* contributor info in semantic-memory for future reference.
|
|
7
|
+
*
|
|
8
|
+
* Based on patterns from gh-issue-triage skill.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
/**
|
|
12
|
+
* Reset cache for testing
|
|
13
|
+
*/
|
|
14
|
+
export declare function resetContributorCache(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Look up GitHub contributor and generate changeset credit
|
|
17
|
+
*/
|
|
18
|
+
export declare const contributor_lookup: {
|
|
19
|
+
description: string;
|
|
20
|
+
args: {
|
|
21
|
+
login: z.ZodString;
|
|
22
|
+
issue: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
};
|
|
24
|
+
execute(args: {
|
|
25
|
+
login: string;
|
|
26
|
+
issue?: number | undefined;
|
|
27
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
28
|
+
};
|
|
29
|
+
export declare const contributorTools: {
|
|
30
|
+
readonly contributor_lookup: {
|
|
31
|
+
description: string;
|
|
32
|
+
args: {
|
|
33
|
+
login: z.ZodString;
|
|
34
|
+
issue: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
};
|
|
36
|
+
execute(args: {
|
|
37
|
+
login: string;
|
|
38
|
+
issue?: number | undefined;
|
|
39
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=contributor-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contributor-tools.d.ts","sourceRoot":"","sources":["../src/contributor-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuHxB;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAMD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;CAgD7B,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAEnB,CAAC"}
|