opencode-swarm-plugin 0.21.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 (131) hide show
  1. package/.turbo/turbo-build.log +9 -0
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +111 -166
  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 +776 -4387
  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 +755 -4375
  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/docs/semantic-memory-cli-syntax.md +123 -0
  73. package/docs/swarm-mail-architecture.md +1147 -0
  74. package/package.json +13 -24
  75. package/scripts/cleanup-test-memories.ts +346 -0
  76. package/src/agent-mail.ts +1 -1
  77. package/src/beads.ts +1 -2
  78. package/src/index.ts +2 -2
  79. package/src/learning.integration.test.ts +80 -10
  80. package/src/mandate-storage.test.ts +3 -3
  81. package/src/storage.ts +189 -9
  82. package/src/swarm-mail.ts +3 -3
  83. package/src/swarm-orchestrate.ts +399 -246
  84. package/src/swarm.integration.test.ts +124 -0
  85. package/src/tool-availability.ts +1 -1
  86. package/tsconfig.json +1 -1
  87. package/.beads/.local_version +0 -1
  88. package/.beads/README.md +0 -81
  89. package/.beads/analysis/skill-architecture-meta-skills.md +0 -1562
  90. package/.beads/config.yaml +0 -62
  91. package/.beads/issues.jsonl +0 -2186
  92. package/.beads/metadata.json +0 -4
  93. package/.gitattributes +0 -3
  94. package/.github/workflows/ci.yml +0 -30
  95. package/.github/workflows/opencode.yml +0 -31
  96. package/.opencode/skills/tdd/SKILL.md +0 -182
  97. package/INTEGRATION_EXAMPLE.md +0 -66
  98. package/VERIFICATION_QUALITY_PATTERNS.md +0 -565
  99. package/bun.lock +0 -286
  100. package/dist/pglite.data +0 -0
  101. package/dist/pglite.wasm +0 -0
  102. package/src/streams/agent-mail.test.ts +0 -777
  103. package/src/streams/agent-mail.ts +0 -535
  104. package/src/streams/debug.test.ts +0 -500
  105. package/src/streams/debug.ts +0 -727
  106. package/src/streams/effect/ask.integration.test.ts +0 -314
  107. package/src/streams/effect/ask.ts +0 -202
  108. package/src/streams/effect/cursor.integration.test.ts +0 -418
  109. package/src/streams/effect/cursor.ts +0 -288
  110. package/src/streams/effect/deferred.test.ts +0 -357
  111. package/src/streams/effect/deferred.ts +0 -445
  112. package/src/streams/effect/index.ts +0 -17
  113. package/src/streams/effect/layers.ts +0 -73
  114. package/src/streams/effect/lock.test.ts +0 -385
  115. package/src/streams/effect/lock.ts +0 -399
  116. package/src/streams/effect/mailbox.test.ts +0 -260
  117. package/src/streams/effect/mailbox.ts +0 -318
  118. package/src/streams/events.test.ts +0 -924
  119. package/src/streams/events.ts +0 -329
  120. package/src/streams/index.test.ts +0 -229
  121. package/src/streams/index.ts +0 -578
  122. package/src/streams/migrations.test.ts +0 -359
  123. package/src/streams/migrations.ts +0 -362
  124. package/src/streams/projections.test.ts +0 -611
  125. package/src/streams/projections.ts +0 -504
  126. package/src/streams/store.integration.test.ts +0 -658
  127. package/src/streams/store.ts +0 -1075
  128. package/src/streams/swarm-mail.ts +0 -552
  129. package/test-bug-fixes.ts +0 -86
  130. package/vitest.integration.config.ts +0 -13
  131. 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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"}