opencode-swarm-plugin 0.22.0 → 0.23.0

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.
Files changed (128) hide show
  1. package/.turbo/turbo-build.log +9 -0
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +109 -429
  4. package/dist/agent-mail.d.ts +480 -0
  5. package/dist/agent-mail.d.ts.map +1 -0
  6. package/dist/anti-patterns.d.ts +257 -0
  7. package/dist/anti-patterns.d.ts.map +1 -0
  8. package/dist/beads.d.ts +377 -0
  9. package/dist/beads.d.ts.map +1 -0
  10. package/dist/eval-capture.d.ts +206 -0
  11. package/dist/eval-capture.d.ts.map +1 -0
  12. package/dist/index.d.ts +1299 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +498 -4246
  15. package/dist/learning.d.ts +670 -0
  16. package/dist/learning.d.ts.map +1 -0
  17. package/dist/mandate-promotion.d.ts +93 -0
  18. package/dist/mandate-promotion.d.ts.map +1 -0
  19. package/dist/mandate-storage.d.ts +209 -0
  20. package/dist/mandate-storage.d.ts.map +1 -0
  21. package/dist/mandates.d.ts +230 -0
  22. package/dist/mandates.d.ts.map +1 -0
  23. package/dist/output-guardrails.d.ts +125 -0
  24. package/dist/output-guardrails.d.ts.map +1 -0
  25. package/dist/pattern-maturity.d.ts +246 -0
  26. package/dist/pattern-maturity.d.ts.map +1 -0
  27. package/dist/plugin.d.ts +22 -0
  28. package/dist/plugin.d.ts.map +1 -0
  29. package/dist/plugin.js +493 -4241
  30. package/dist/rate-limiter.d.ts +218 -0
  31. package/dist/rate-limiter.d.ts.map +1 -0
  32. package/dist/repo-crawl.d.ts +146 -0
  33. package/dist/repo-crawl.d.ts.map +1 -0
  34. package/dist/schemas/bead.d.ts +255 -0
  35. package/dist/schemas/bead.d.ts.map +1 -0
  36. package/dist/schemas/evaluation.d.ts +161 -0
  37. package/dist/schemas/evaluation.d.ts.map +1 -0
  38. package/dist/schemas/index.d.ts +34 -0
  39. package/dist/schemas/index.d.ts.map +1 -0
  40. package/dist/schemas/mandate.d.ts +336 -0
  41. package/dist/schemas/mandate.d.ts.map +1 -0
  42. package/dist/schemas/swarm-context.d.ts +131 -0
  43. package/dist/schemas/swarm-context.d.ts.map +1 -0
  44. package/dist/schemas/task.d.ts +188 -0
  45. package/dist/schemas/task.d.ts.map +1 -0
  46. package/dist/skills.d.ts +471 -0
  47. package/dist/skills.d.ts.map +1 -0
  48. package/dist/storage.d.ts +260 -0
  49. package/dist/storage.d.ts.map +1 -0
  50. package/dist/structured.d.ts +196 -0
  51. package/dist/structured.d.ts.map +1 -0
  52. package/dist/swarm-decompose.d.ts +201 -0
  53. package/dist/swarm-decompose.d.ts.map +1 -0
  54. package/dist/swarm-mail.d.ts +240 -0
  55. package/dist/swarm-mail.d.ts.map +1 -0
  56. package/dist/swarm-orchestrate.d.ts +708 -0
  57. package/dist/swarm-orchestrate.d.ts.map +1 -0
  58. package/dist/swarm-prompts.d.ts +292 -0
  59. package/dist/swarm-prompts.d.ts.map +1 -0
  60. package/dist/swarm-strategies.d.ts +100 -0
  61. package/dist/swarm-strategies.d.ts.map +1 -0
  62. package/dist/swarm.d.ts +455 -0
  63. package/dist/swarm.d.ts.map +1 -0
  64. package/dist/tool-availability.d.ts +91 -0
  65. package/dist/tool-availability.d.ts.map +1 -0
  66. package/docs/planning/ADR-001-monorepo-structure.md +171 -0
  67. package/docs/planning/ADR-002-package-extraction.md +393 -0
  68. package/docs/planning/ADR-003-performance-improvements.md +451 -0
  69. package/docs/planning/ADR-004-message-queue-features.md +187 -0
  70. package/docs/planning/ADR-005-devtools-observability.md +202 -0
  71. package/docs/planning/ROADMAP.md +368 -0
  72. package/package.json +13 -24
  73. package/src/agent-mail.ts +1 -1
  74. package/src/beads.ts +1 -2
  75. package/src/index.ts +2 -2
  76. package/src/learning.integration.test.ts +66 -11
  77. package/src/mandate-storage.test.ts +3 -3
  78. package/src/storage.ts +78 -10
  79. package/src/swarm-mail.ts +3 -3
  80. package/src/swarm-orchestrate.ts +7 -7
  81. package/src/tool-availability.ts +1 -1
  82. package/tsconfig.json +1 -1
  83. package/.beads/.local_version +0 -1
  84. package/.beads/README.md +0 -81
  85. package/.beads/analysis/skill-architecture-meta-skills.md +0 -1562
  86. package/.beads/config.yaml +0 -62
  87. package/.beads/issues.jsonl +0 -2197
  88. package/.beads/metadata.json +0 -4
  89. package/.gitattributes +0 -3
  90. package/.github/workflows/ci.yml +0 -30
  91. package/.github/workflows/opencode.yml +0 -31
  92. package/.opencode/skills/tdd/SKILL.md +0 -182
  93. package/INTEGRATION_EXAMPLE.md +0 -66
  94. package/VERIFICATION_QUALITY_PATTERNS.md +0 -565
  95. package/bun.lock +0 -286
  96. package/dist/pglite.data +0 -0
  97. package/dist/pglite.wasm +0 -0
  98. package/src/streams/agent-mail.test.ts +0 -777
  99. package/src/streams/agent-mail.ts +0 -535
  100. package/src/streams/debug.test.ts +0 -500
  101. package/src/streams/debug.ts +0 -727
  102. package/src/streams/effect/ask.integration.test.ts +0 -314
  103. package/src/streams/effect/ask.ts +0 -202
  104. package/src/streams/effect/cursor.integration.test.ts +0 -418
  105. package/src/streams/effect/cursor.ts +0 -288
  106. package/src/streams/effect/deferred.test.ts +0 -357
  107. package/src/streams/effect/deferred.ts +0 -445
  108. package/src/streams/effect/index.ts +0 -17
  109. package/src/streams/effect/layers.ts +0 -73
  110. package/src/streams/effect/lock.test.ts +0 -385
  111. package/src/streams/effect/lock.ts +0 -399
  112. package/src/streams/effect/mailbox.test.ts +0 -260
  113. package/src/streams/effect/mailbox.ts +0 -318
  114. package/src/streams/events.test.ts +0 -924
  115. package/src/streams/events.ts +0 -329
  116. package/src/streams/index.test.ts +0 -229
  117. package/src/streams/index.ts +0 -578
  118. package/src/streams/migrations.test.ts +0 -359
  119. package/src/streams/migrations.ts +0 -362
  120. package/src/streams/projections.test.ts +0 -611
  121. package/src/streams/projections.ts +0 -504
  122. package/src/streams/store.integration.test.ts +0 -658
  123. package/src/streams/store.ts +0 -1075
  124. package/src/streams/swarm-mail.ts +0 -552
  125. package/test-bug-fixes.ts +0 -86
  126. package/vitest.integration.config.ts +0 -19
  127. package/vitest.integration.setup.ts +0 -48
  128. package/workflow-integration-analysis.md +0 -876
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Eval Data Capture - Captures real swarm execution data for evals
3
+ *
4
+ * Records decomposition inputs, outputs, and outcomes to JSONL files
5
+ * that can be used as ground truth for Evalite evals.
6
+ *
7
+ * Data flow:
8
+ * 1. swarm_decompose captures: task, context, generated decomposition
9
+ * 2. swarm_complete captures: outcome signals per subtask
10
+ * 3. swarm_record_outcome captures: learning signals
11
+ * 4. Human feedback (optional): accept/reject/modify
12
+ *
13
+ * @module eval-capture
14
+ */
15
+ import { z } from "zod";
16
+ /**
17
+ * Subtask outcome - what actually happened
18
+ */
19
+ export declare const SubtaskOutcomeSchema: z.ZodObject<{
20
+ bead_id: z.ZodString;
21
+ title: z.ZodString;
22
+ planned_files: z.ZodArray<z.ZodString>;
23
+ actual_files: z.ZodArray<z.ZodString>;
24
+ duration_ms: z.ZodNumber;
25
+ error_count: z.ZodNumber;
26
+ retry_count: z.ZodNumber;
27
+ success: z.ZodBoolean;
28
+ failure_mode: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>;
30
+ export type SubtaskOutcome = z.infer<typeof SubtaskOutcomeSchema>;
31
+ /**
32
+ * Complete eval record - input, output, and outcome
33
+ */
34
+ export declare const EvalRecordSchema: z.ZodObject<{
35
+ id: z.ZodString;
36
+ timestamp: z.ZodString;
37
+ project_path: z.ZodString;
38
+ task: z.ZodString;
39
+ context: z.ZodOptional<z.ZodString>;
40
+ strategy: z.ZodEnum<{
41
+ "file-based": "file-based";
42
+ "feature-based": "feature-based";
43
+ "risk-based": "risk-based";
44
+ auto: "auto";
45
+ }>;
46
+ max_subtasks: z.ZodNumber;
47
+ epic_title: z.ZodString;
48
+ epic_description: z.ZodOptional<z.ZodString>;
49
+ subtasks: z.ZodArray<z.ZodObject<{
50
+ title: z.ZodString;
51
+ description: z.ZodOptional<z.ZodString>;
52
+ files: z.ZodArray<z.ZodString>;
53
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
54
+ estimated_complexity: z.ZodOptional<z.ZodNumber>;
55
+ }, z.core.$strip>>;
56
+ outcomes: z.ZodOptional<z.ZodArray<z.ZodObject<{
57
+ bead_id: z.ZodString;
58
+ title: z.ZodString;
59
+ planned_files: z.ZodArray<z.ZodString>;
60
+ actual_files: z.ZodArray<z.ZodString>;
61
+ duration_ms: z.ZodNumber;
62
+ error_count: z.ZodNumber;
63
+ retry_count: z.ZodNumber;
64
+ success: z.ZodBoolean;
65
+ failure_mode: z.ZodOptional<z.ZodString>;
66
+ }, z.core.$strip>>>;
67
+ overall_success: z.ZodOptional<z.ZodBoolean>;
68
+ total_duration_ms: z.ZodOptional<z.ZodNumber>;
69
+ total_errors: z.ZodOptional<z.ZodNumber>;
70
+ human_accepted: z.ZodOptional<z.ZodBoolean>;
71
+ human_modified: z.ZodOptional<z.ZodBoolean>;
72
+ human_notes: z.ZodOptional<z.ZodString>;
73
+ file_overlap_count: z.ZodOptional<z.ZodNumber>;
74
+ scope_accuracy: z.ZodOptional<z.ZodNumber>;
75
+ time_balance_ratio: z.ZodOptional<z.ZodNumber>;
76
+ }, z.core.$strip>;
77
+ export type EvalRecord = z.infer<typeof EvalRecordSchema>;
78
+ /**
79
+ * Partial record for in-progress capture
80
+ */
81
+ export type PartialEvalRecord = Partial<EvalRecord> & {
82
+ id: string;
83
+ timestamp: string;
84
+ task: string;
85
+ };
86
+ /**
87
+ * Default path for eval data
88
+ */
89
+ export declare const DEFAULT_EVAL_DATA_PATH = ".opencode/eval-data.jsonl";
90
+ /**
91
+ * Get the eval data file path for a project
92
+ */
93
+ export declare function getEvalDataPath(projectPath: string): string;
94
+ /**
95
+ * Ensure the eval data directory exists
96
+ */
97
+ export declare function ensureEvalDataDir(projectPath: string): void;
98
+ /**
99
+ * Append an eval record to the JSONL file
100
+ */
101
+ export declare function appendEvalRecord(projectPath: string, record: EvalRecord | PartialEvalRecord): void;
102
+ /**
103
+ * Read all eval records from a project
104
+ */
105
+ export declare function readEvalRecords(projectPath: string): EvalRecord[];
106
+ /**
107
+ * Read partial records (for updating in-progress records)
108
+ */
109
+ export declare function readPartialRecords(projectPath: string): PartialEvalRecord[];
110
+ /**
111
+ * Update an existing record by ID
112
+ */
113
+ export declare function updateEvalRecord(projectPath: string, id: string, updates: Partial<EvalRecord>): boolean;
114
+ /**
115
+ * Start capturing a decomposition
116
+ *
117
+ * Called when swarm_decompose generates a decomposition.
118
+ * Creates a partial record that will be completed when outcomes arrive.
119
+ */
120
+ export declare function captureDecomposition(params: {
121
+ epicId: string;
122
+ projectPath: string;
123
+ task: string;
124
+ context?: string;
125
+ strategy: "file-based" | "feature-based" | "risk-based" | "auto";
126
+ maxSubtasks: number;
127
+ epicTitle: string;
128
+ epicDescription?: string;
129
+ subtasks: Array<{
130
+ title: string;
131
+ description?: string;
132
+ files: string[];
133
+ dependencies?: number[];
134
+ estimated_complexity?: number;
135
+ }>;
136
+ }): PartialEvalRecord;
137
+ /**
138
+ * Capture a subtask outcome
139
+ *
140
+ * Called when swarm_complete finishes a subtask.
141
+ * Updates the in-progress record with outcome data.
142
+ */
143
+ export declare function captureSubtaskOutcome(params: {
144
+ epicId: string;
145
+ projectPath: string;
146
+ beadId: string;
147
+ title: string;
148
+ plannedFiles: string[];
149
+ actualFiles: string[];
150
+ durationMs: number;
151
+ errorCount: number;
152
+ retryCount: number;
153
+ success: boolean;
154
+ failureMode?: string;
155
+ }): void;
156
+ /**
157
+ * Finalize an eval record
158
+ *
159
+ * Called when all subtasks are complete.
160
+ * Computes aggregate metrics and marks record as complete.
161
+ */
162
+ export declare function finalizeEvalRecord(params: {
163
+ epicId: string;
164
+ projectPath: string;
165
+ }): EvalRecord | null;
166
+ /**
167
+ * Capture human feedback on a decomposition
168
+ */
169
+ export declare function captureHumanFeedback(params: {
170
+ epicId: string;
171
+ projectPath: string;
172
+ accepted: boolean;
173
+ modified: boolean;
174
+ notes?: string;
175
+ }): void;
176
+ /**
177
+ * Export eval records as Evalite-compatible test cases
178
+ *
179
+ * Filters to only complete records with outcomes.
180
+ */
181
+ export declare function exportForEvalite(projectPath: string): Array<{
182
+ input: {
183
+ task: string;
184
+ context?: string;
185
+ };
186
+ expected: {
187
+ minSubtasks: number;
188
+ maxSubtasks: number;
189
+ requiredFiles?: string[];
190
+ overallSuccess?: boolean;
191
+ };
192
+ actual: EvalRecord;
193
+ }>;
194
+ /**
195
+ * Get statistics about captured eval data
196
+ */
197
+ export declare function getEvalDataStats(projectPath: string): {
198
+ totalRecords: number;
199
+ completeRecords: number;
200
+ successRate: number;
201
+ avgSubtasks: number;
202
+ avgDurationMs: number;
203
+ avgScopeAccuracy: number;
204
+ avgTimeBalance: number;
205
+ };
206
+ //# sourceMappingURL=eval-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-capture.d.ts","sourceRoot":"","sources":["../src/eval-capture.ts"],"names":[],"mappings":"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"}