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,257 @@
1
+ /**
2
+ * Anti-Pattern Learning Module
3
+ *
4
+ * Tracks failed decomposition patterns and auto-inverts them to anti-patterns.
5
+ * When a pattern consistently fails, it gets flagged as something to avoid.
6
+ *
7
+ * @see https://github.com/Dicklesworthstone/cass_memory_system/blob/main/src/curate.ts#L95-L117
8
+ */
9
+ import { z } from "zod";
10
+ /**
11
+ * Pattern kind - whether this is a positive pattern or an anti-pattern
12
+ */
13
+ export declare const PatternKindSchema: z.ZodEnum<{
14
+ pattern: "pattern";
15
+ anti_pattern: "anti_pattern";
16
+ }>;
17
+ export type PatternKind = z.infer<typeof PatternKindSchema>;
18
+ /**
19
+ * Decomposition pattern with success/failure tracking.
20
+ *
21
+ * Field relationships:
22
+ * - `kind`: Tracks pattern lifecycle ("pattern" → "anti_pattern" when failure rate exceeds threshold)
23
+ * - `is_negative`: Derived boolean flag for quick filtering (true when kind === "anti_pattern")
24
+ *
25
+ * Both fields exist because:
26
+ * - `kind` is the source of truth for pattern status
27
+ * - `is_negative` enables efficient filtering without string comparison
28
+ */
29
+ export declare const DecompositionPatternSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ content: z.ZodString;
32
+ kind: z.ZodEnum<{
33
+ pattern: "pattern";
34
+ anti_pattern: "anti_pattern";
35
+ }>;
36
+ is_negative: z.ZodBoolean;
37
+ success_count: z.ZodDefault<z.ZodNumber>;
38
+ failure_count: z.ZodDefault<z.ZodNumber>;
39
+ created_at: z.ZodString;
40
+ updated_at: z.ZodString;
41
+ reason: z.ZodOptional<z.ZodString>;
42
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
43
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
44
+ }, z.core.$strip>;
45
+ export type DecompositionPattern = z.infer<typeof DecompositionPatternSchema>;
46
+ /**
47
+ * Result of pattern inversion
48
+ */
49
+ export declare const PatternInversionResultSchema: z.ZodObject<{
50
+ original: z.ZodObject<{
51
+ id: z.ZodString;
52
+ content: z.ZodString;
53
+ kind: z.ZodEnum<{
54
+ pattern: "pattern";
55
+ anti_pattern: "anti_pattern";
56
+ }>;
57
+ is_negative: z.ZodBoolean;
58
+ success_count: z.ZodDefault<z.ZodNumber>;
59
+ failure_count: z.ZodDefault<z.ZodNumber>;
60
+ created_at: z.ZodString;
61
+ updated_at: z.ZodString;
62
+ reason: z.ZodOptional<z.ZodString>;
63
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
64
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
65
+ }, z.core.$strip>;
66
+ inverted: z.ZodObject<{
67
+ id: z.ZodString;
68
+ content: z.ZodString;
69
+ kind: z.ZodEnum<{
70
+ pattern: "pattern";
71
+ anti_pattern: "anti_pattern";
72
+ }>;
73
+ is_negative: z.ZodBoolean;
74
+ success_count: z.ZodDefault<z.ZodNumber>;
75
+ failure_count: z.ZodDefault<z.ZodNumber>;
76
+ created_at: z.ZodString;
77
+ updated_at: z.ZodString;
78
+ reason: z.ZodOptional<z.ZodString>;
79
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
80
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
81
+ }, z.core.$strip>;
82
+ reason: z.ZodString;
83
+ }, z.core.$strip>;
84
+ export type PatternInversionResult = z.infer<typeof PatternInversionResultSchema>;
85
+ /**
86
+ * Configuration for anti-pattern detection
87
+ */
88
+ export interface AntiPatternConfig {
89
+ /** Minimum observations before considering inversion */
90
+ minObservations: number;
91
+ /** Failure ratio threshold for inversion (0-1) */
92
+ failureRatioThreshold: number;
93
+ /** Prefix for anti-pattern content */
94
+ antiPatternPrefix: string;
95
+ }
96
+ export declare const DEFAULT_ANTI_PATTERN_CONFIG: AntiPatternConfig;
97
+ /**
98
+ * Check if a pattern should be inverted to an anti-pattern
99
+ *
100
+ * A pattern is inverted when:
101
+ * 1. It has enough observations (minObservations)
102
+ * 2. Its failure ratio exceeds the threshold
103
+ *
104
+ * @param pattern - The pattern to check
105
+ * @param config - Anti-pattern configuration
106
+ * @returns Whether the pattern should be inverted
107
+ */
108
+ export declare function shouldInvertPattern(pattern: DecompositionPattern, config?: AntiPatternConfig): boolean;
109
+ /**
110
+ * Invert a pattern to an anti-pattern
111
+ *
112
+ * Creates a new anti-pattern from a failing pattern.
113
+ * The content is prefixed with "AVOID: " and the kind is changed.
114
+ *
115
+ * @param pattern - The pattern to invert
116
+ * @param reason - Why the inversion is happening
117
+ * @param config - Anti-pattern configuration
118
+ * @returns The inverted anti-pattern
119
+ */
120
+ export declare function invertToAntiPattern(pattern: DecompositionPattern, reason: string, config?: AntiPatternConfig): PatternInversionResult;
121
+ /**
122
+ * Record a pattern observation (success or failure)
123
+ *
124
+ * Updates the pattern's success/failure counts and checks if
125
+ * it should be inverted to an anti-pattern.
126
+ *
127
+ * @param pattern - The pattern to update
128
+ * @param success - Whether this observation was successful
129
+ * @param beadId - Optional bead ID to record as example
130
+ * @param config - Anti-pattern configuration
131
+ * @returns Updated pattern and optional inversion result
132
+ */
133
+ export declare function recordPatternObservation(pattern: DecompositionPattern, success: boolean, beadId?: string, config?: AntiPatternConfig): {
134
+ pattern: DecompositionPattern;
135
+ inversion?: PatternInversionResult;
136
+ };
137
+ /**
138
+ * Extract patterns from a decomposition description
139
+ *
140
+ * Looks for common decomposition strategies in the text.
141
+ *
142
+ * @param description - Decomposition description or reasoning
143
+ * @returns Extracted pattern descriptions
144
+ */
145
+ export declare function extractPatternsFromDescription(description: string): string[];
146
+ /**
147
+ * Create a new pattern from a description
148
+ *
149
+ * @param content - Pattern description
150
+ * @param tags - Optional tags for categorization
151
+ * @returns New pattern
152
+ */
153
+ export declare function createPattern(content: string, tags?: string[]): DecompositionPattern;
154
+ /**
155
+ * Format anti-patterns for inclusion in decomposition prompts
156
+ *
157
+ * @param patterns - Anti-patterns to format
158
+ * @returns Formatted string for prompt inclusion
159
+ */
160
+ export declare function formatAntiPatternsForPrompt(patterns: DecompositionPattern[]): string;
161
+ /**
162
+ * Format successful patterns for inclusion in prompts.
163
+ *
164
+ * @param patterns - Array of decomposition patterns to filter and format
165
+ * @param minSuccessRate - Minimum success rate to include (default 0.7 = 70%).
166
+ * Chosen to filter out patterns with marginal track records - only patterns
167
+ * that succeed at least 70% of the time are recommended.
168
+ * @returns Formatted string of successful patterns for prompt injection
169
+ */
170
+ export declare function formatSuccessfulPatternsForPrompt(patterns: DecompositionPattern[], minSuccessRate?: number): string;
171
+ /**
172
+ * Storage interface for decomposition patterns
173
+ */
174
+ export interface PatternStorage {
175
+ /** Store or update a pattern */
176
+ store(pattern: DecompositionPattern): Promise<void>;
177
+ /** Get a pattern by ID */
178
+ get(id: string): Promise<DecompositionPattern | null>;
179
+ /** Get all patterns */
180
+ getAll(): Promise<DecompositionPattern[]>;
181
+ /** Get all anti-patterns */
182
+ getAntiPatterns(): Promise<DecompositionPattern[]>;
183
+ /** Get patterns by tag */
184
+ getByTag(tag: string): Promise<DecompositionPattern[]>;
185
+ /** Find patterns matching content */
186
+ findByContent(content: string): Promise<DecompositionPattern[]>;
187
+ }
188
+ /**
189
+ * In-memory pattern storage (for testing and short-lived sessions)
190
+ */
191
+ export declare class InMemoryPatternStorage implements PatternStorage {
192
+ private patterns;
193
+ store(pattern: DecompositionPattern): Promise<void>;
194
+ get(id: string): Promise<DecompositionPattern | null>;
195
+ getAll(): Promise<DecompositionPattern[]>;
196
+ getAntiPatterns(): Promise<DecompositionPattern[]>;
197
+ getByTag(tag: string): Promise<DecompositionPattern[]>;
198
+ findByContent(content: string): Promise<DecompositionPattern[]>;
199
+ }
200
+ export declare const antiPatternSchemas: {
201
+ PatternKindSchema: z.ZodEnum<{
202
+ pattern: "pattern";
203
+ anti_pattern: "anti_pattern";
204
+ }>;
205
+ DecompositionPatternSchema: z.ZodObject<{
206
+ id: z.ZodString;
207
+ content: z.ZodString;
208
+ kind: z.ZodEnum<{
209
+ pattern: "pattern";
210
+ anti_pattern: "anti_pattern";
211
+ }>;
212
+ is_negative: z.ZodBoolean;
213
+ success_count: z.ZodDefault<z.ZodNumber>;
214
+ failure_count: z.ZodDefault<z.ZodNumber>;
215
+ created_at: z.ZodString;
216
+ updated_at: z.ZodString;
217
+ reason: z.ZodOptional<z.ZodString>;
218
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
219
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
220
+ }, z.core.$strip>;
221
+ PatternInversionResultSchema: z.ZodObject<{
222
+ original: z.ZodObject<{
223
+ id: z.ZodString;
224
+ content: z.ZodString;
225
+ kind: z.ZodEnum<{
226
+ pattern: "pattern";
227
+ anti_pattern: "anti_pattern";
228
+ }>;
229
+ is_negative: z.ZodBoolean;
230
+ success_count: z.ZodDefault<z.ZodNumber>;
231
+ failure_count: z.ZodDefault<z.ZodNumber>;
232
+ created_at: z.ZodString;
233
+ updated_at: z.ZodString;
234
+ reason: z.ZodOptional<z.ZodString>;
235
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
236
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
237
+ }, z.core.$strip>;
238
+ inverted: z.ZodObject<{
239
+ id: z.ZodString;
240
+ content: z.ZodString;
241
+ kind: z.ZodEnum<{
242
+ pattern: "pattern";
243
+ anti_pattern: "anti_pattern";
244
+ }>;
245
+ is_negative: z.ZodBoolean;
246
+ success_count: z.ZodDefault<z.ZodNumber>;
247
+ failure_count: z.ZodDefault<z.ZodNumber>;
248
+ created_at: z.ZodString;
249
+ updated_at: z.ZodString;
250
+ reason: z.ZodOptional<z.ZodString>;
251
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
252
+ example_beads: z.ZodDefault<z.ZodArray<z.ZodString>>;
253
+ }, z.core.$strip>;
254
+ reason: z.ZodString;
255
+ }, z.core.$strip>;
256
+ };
257
+ //# sourceMappingURL=anti-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anti-patterns.d.ts","sourceRoot":"","sources":["../src/anti-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;EAAsC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;iBAuBrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC;AASF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sCAAsC;IACtC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,2BAA2B,EAAE,iBAIzC,CAAC;AAMF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,iBAA+C,GACtD,OAAO,CAeT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,iBAA+C,GACtD,sBAAsB,CAsBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,GAAE,iBAA+C,GACtD;IAAE,OAAO,EAAE,oBAAoB,CAAC;IAAC,SAAS,CAAC,EAAE,sBAAsB,CAAA;CAAE,CAyBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA6D5E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,GAClB,oBAAoB,CActB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,EAAE,GAC/B,MAAM,CAiBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,oBAAoB,EAAE,EAChC,cAAc,SAAM,GACnB,MAAM,CA0BR;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,0BAA0B;IAC1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACtD,uBAAuB;IACvB,MAAM,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC1C,4BAA4B;IAC5B,eAAe,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnD,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvD,qCAAqC;IACrC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAgD;IAE1D,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAIrD,MAAM,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIzC,eAAe,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAMlD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAMtD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAMtE;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAC"}
@@ -0,0 +1,377 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Set the working directory for all beads commands.
4
+ * Call this from the plugin initialization with the project directory.
5
+ *
6
+ * @param directory - Absolute path to the project directory
7
+ */
8
+ export declare function setBeadsWorkingDirectory(directory: string): void;
9
+ /**
10
+ * Get the current working directory for beads commands.
11
+ * Returns the configured directory or process.cwd() as fallback.
12
+ */
13
+ export declare function getBeadsWorkingDirectory(): string;
14
+ /**
15
+ * Custom error for bead operations
16
+ */
17
+ export declare class BeadError extends Error {
18
+ readonly command: string;
19
+ readonly exitCode?: number | undefined;
20
+ readonly stderr?: string | undefined;
21
+ constructor(message: string, command: string, exitCode?: number | undefined, stderr?: string | undefined);
22
+ }
23
+ /**
24
+ * Custom error for validation failures
25
+ */
26
+ export declare class BeadValidationError extends Error {
27
+ readonly zodError: z.ZodError;
28
+ constructor(message: string, zodError: z.ZodError);
29
+ }
30
+ /**
31
+ * Create a new bead with type-safe validation
32
+ */
33
+ export declare const beads_create: {
34
+ description: string;
35
+ args: {
36
+ title: z.ZodString;
37
+ type: z.ZodOptional<z.ZodEnum<{
38
+ bug: "bug";
39
+ feature: "feature";
40
+ task: "task";
41
+ epic: "epic";
42
+ chore: "chore";
43
+ }>>;
44
+ priority: z.ZodOptional<z.ZodNumber>;
45
+ description: z.ZodOptional<z.ZodString>;
46
+ parent_id: z.ZodOptional<z.ZodString>;
47
+ };
48
+ execute(args: {
49
+ title: string;
50
+ type?: "bug" | "feature" | "task" | "epic" | "chore" | undefined;
51
+ priority?: number | undefined;
52
+ description?: string | undefined;
53
+ parent_id?: string | undefined;
54
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
55
+ };
56
+ /**
57
+ * Create an epic with subtasks in one atomic operation
58
+ */
59
+ export declare const beads_create_epic: {
60
+ description: string;
61
+ args: {
62
+ epic_title: z.ZodString;
63
+ epic_description: z.ZodOptional<z.ZodString>;
64
+ epic_id: z.ZodOptional<z.ZodString>;
65
+ subtasks: z.ZodArray<z.ZodObject<{
66
+ title: z.ZodString;
67
+ priority: z.ZodOptional<z.ZodNumber>;
68
+ files: z.ZodOptional<z.ZodArray<z.ZodString>>;
69
+ id_suffix: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$strip>>;
71
+ strategy: z.ZodOptional<z.ZodEnum<{
72
+ "file-based": "file-based";
73
+ "feature-based": "feature-based";
74
+ "risk-based": "risk-based";
75
+ }>>;
76
+ task: z.ZodOptional<z.ZodString>;
77
+ project_key: z.ZodOptional<z.ZodString>;
78
+ recovery_context: z.ZodOptional<z.ZodObject<{
79
+ shared_context: z.ZodOptional<z.ZodString>;
80
+ skills_to_load: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
+ coordinator_notes: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>>;
83
+ };
84
+ execute(args: {
85
+ epic_title: string;
86
+ subtasks: {
87
+ title: string;
88
+ priority?: number | undefined;
89
+ files?: string[] | undefined;
90
+ id_suffix?: string | undefined;
91
+ }[];
92
+ epic_description?: string | undefined;
93
+ epic_id?: string | undefined;
94
+ strategy?: "file-based" | "feature-based" | "risk-based" | undefined;
95
+ task?: string | undefined;
96
+ project_key?: string | undefined;
97
+ recovery_context?: {
98
+ shared_context?: string | undefined;
99
+ skills_to_load?: string[] | undefined;
100
+ coordinator_notes?: string | undefined;
101
+ } | undefined;
102
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
103
+ };
104
+ /**
105
+ * Query beads with filters
106
+ */
107
+ export declare const beads_query: {
108
+ description: string;
109
+ args: {
110
+ status: z.ZodOptional<z.ZodEnum<{
111
+ open: "open";
112
+ in_progress: "in_progress";
113
+ blocked: "blocked";
114
+ closed: "closed";
115
+ }>>;
116
+ type: z.ZodOptional<z.ZodEnum<{
117
+ bug: "bug";
118
+ feature: "feature";
119
+ task: "task";
120
+ epic: "epic";
121
+ chore: "chore";
122
+ }>>;
123
+ ready: z.ZodOptional<z.ZodBoolean>;
124
+ limit: z.ZodOptional<z.ZodNumber>;
125
+ };
126
+ execute(args: {
127
+ status?: "open" | "in_progress" | "blocked" | "closed" | undefined;
128
+ type?: "bug" | "feature" | "task" | "epic" | "chore" | undefined;
129
+ ready?: boolean | undefined;
130
+ limit?: number | undefined;
131
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
132
+ };
133
+ /**
134
+ * Update a bead's status or description
135
+ */
136
+ export declare const beads_update: {
137
+ description: string;
138
+ args: {
139
+ id: z.ZodString;
140
+ status: z.ZodOptional<z.ZodEnum<{
141
+ open: "open";
142
+ in_progress: "in_progress";
143
+ blocked: "blocked";
144
+ closed: "closed";
145
+ }>>;
146
+ description: z.ZodOptional<z.ZodString>;
147
+ priority: z.ZodOptional<z.ZodNumber>;
148
+ };
149
+ execute(args: {
150
+ id: string;
151
+ status?: "open" | "in_progress" | "blocked" | "closed" | undefined;
152
+ description?: string | undefined;
153
+ priority?: number | undefined;
154
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
155
+ };
156
+ /**
157
+ * Close a bead with reason
158
+ */
159
+ export declare const beads_close: {
160
+ description: string;
161
+ args: {
162
+ id: z.ZodString;
163
+ reason: z.ZodString;
164
+ };
165
+ execute(args: {
166
+ id: string;
167
+ reason: string;
168
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
169
+ };
170
+ /**
171
+ * Mark a bead as in-progress
172
+ */
173
+ export declare const beads_start: {
174
+ description: string;
175
+ args: {
176
+ id: z.ZodString;
177
+ };
178
+ execute(args: {
179
+ id: string;
180
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
181
+ };
182
+ /**
183
+ * Get the next ready bead
184
+ */
185
+ export declare const beads_ready: {
186
+ description: string;
187
+ args: {};
188
+ execute(args: Record<string, never>, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
189
+ };
190
+ /**
191
+ * Sync beads to git and push
192
+ */
193
+ export declare const beads_sync: {
194
+ description: string;
195
+ args: {
196
+ auto_pull: z.ZodOptional<z.ZodBoolean>;
197
+ };
198
+ execute(args: {
199
+ auto_pull?: boolean | undefined;
200
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
201
+ };
202
+ /**
203
+ * Link a bead to an Agent Mail thread
204
+ */
205
+ export declare const beads_link_thread: {
206
+ description: string;
207
+ args: {
208
+ bead_id: z.ZodString;
209
+ thread_id: z.ZodString;
210
+ };
211
+ execute(args: {
212
+ bead_id: string;
213
+ thread_id: string;
214
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
215
+ };
216
+ export declare const beadsTools: {
217
+ beads_create: {
218
+ description: string;
219
+ args: {
220
+ title: z.ZodString;
221
+ type: z.ZodOptional<z.ZodEnum<{
222
+ bug: "bug";
223
+ feature: "feature";
224
+ task: "task";
225
+ epic: "epic";
226
+ chore: "chore";
227
+ }>>;
228
+ priority: z.ZodOptional<z.ZodNumber>;
229
+ description: z.ZodOptional<z.ZodString>;
230
+ parent_id: z.ZodOptional<z.ZodString>;
231
+ };
232
+ execute(args: {
233
+ title: string;
234
+ type?: "bug" | "feature" | "task" | "epic" | "chore" | undefined;
235
+ priority?: number | undefined;
236
+ description?: string | undefined;
237
+ parent_id?: string | undefined;
238
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
239
+ };
240
+ beads_create_epic: {
241
+ description: string;
242
+ args: {
243
+ epic_title: z.ZodString;
244
+ epic_description: z.ZodOptional<z.ZodString>;
245
+ epic_id: z.ZodOptional<z.ZodString>;
246
+ subtasks: z.ZodArray<z.ZodObject<{
247
+ title: z.ZodString;
248
+ priority: z.ZodOptional<z.ZodNumber>;
249
+ files: z.ZodOptional<z.ZodArray<z.ZodString>>;
250
+ id_suffix: z.ZodOptional<z.ZodString>;
251
+ }, z.core.$strip>>;
252
+ strategy: z.ZodOptional<z.ZodEnum<{
253
+ "file-based": "file-based";
254
+ "feature-based": "feature-based";
255
+ "risk-based": "risk-based";
256
+ }>>;
257
+ task: z.ZodOptional<z.ZodString>;
258
+ project_key: z.ZodOptional<z.ZodString>;
259
+ recovery_context: z.ZodOptional<z.ZodObject<{
260
+ shared_context: z.ZodOptional<z.ZodString>;
261
+ skills_to_load: z.ZodOptional<z.ZodArray<z.ZodString>>;
262
+ coordinator_notes: z.ZodOptional<z.ZodString>;
263
+ }, z.core.$strip>>;
264
+ };
265
+ execute(args: {
266
+ epic_title: string;
267
+ subtasks: {
268
+ title: string;
269
+ priority?: number | undefined;
270
+ files?: string[] | undefined;
271
+ id_suffix?: string | undefined;
272
+ }[];
273
+ epic_description?: string | undefined;
274
+ epic_id?: string | undefined;
275
+ strategy?: "file-based" | "feature-based" | "risk-based" | undefined;
276
+ task?: string | undefined;
277
+ project_key?: string | undefined;
278
+ recovery_context?: {
279
+ shared_context?: string | undefined;
280
+ skills_to_load?: string[] | undefined;
281
+ coordinator_notes?: string | undefined;
282
+ } | undefined;
283
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
284
+ };
285
+ beads_query: {
286
+ description: string;
287
+ args: {
288
+ status: z.ZodOptional<z.ZodEnum<{
289
+ open: "open";
290
+ in_progress: "in_progress";
291
+ blocked: "blocked";
292
+ closed: "closed";
293
+ }>>;
294
+ type: z.ZodOptional<z.ZodEnum<{
295
+ bug: "bug";
296
+ feature: "feature";
297
+ task: "task";
298
+ epic: "epic";
299
+ chore: "chore";
300
+ }>>;
301
+ ready: z.ZodOptional<z.ZodBoolean>;
302
+ limit: z.ZodOptional<z.ZodNumber>;
303
+ };
304
+ execute(args: {
305
+ status?: "open" | "in_progress" | "blocked" | "closed" | undefined;
306
+ type?: "bug" | "feature" | "task" | "epic" | "chore" | undefined;
307
+ ready?: boolean | undefined;
308
+ limit?: number | undefined;
309
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
310
+ };
311
+ beads_update: {
312
+ description: string;
313
+ args: {
314
+ id: z.ZodString;
315
+ status: z.ZodOptional<z.ZodEnum<{
316
+ open: "open";
317
+ in_progress: "in_progress";
318
+ blocked: "blocked";
319
+ closed: "closed";
320
+ }>>;
321
+ description: z.ZodOptional<z.ZodString>;
322
+ priority: z.ZodOptional<z.ZodNumber>;
323
+ };
324
+ execute(args: {
325
+ id: string;
326
+ status?: "open" | "in_progress" | "blocked" | "closed" | undefined;
327
+ description?: string | undefined;
328
+ priority?: number | undefined;
329
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
330
+ };
331
+ beads_close: {
332
+ description: string;
333
+ args: {
334
+ id: z.ZodString;
335
+ reason: z.ZodString;
336
+ };
337
+ execute(args: {
338
+ id: string;
339
+ reason: string;
340
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
341
+ };
342
+ beads_start: {
343
+ description: string;
344
+ args: {
345
+ id: z.ZodString;
346
+ };
347
+ execute(args: {
348
+ id: string;
349
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
350
+ };
351
+ beads_ready: {
352
+ description: string;
353
+ args: {};
354
+ execute(args: Record<string, never>, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
355
+ };
356
+ beads_sync: {
357
+ description: string;
358
+ args: {
359
+ auto_pull: z.ZodOptional<z.ZodBoolean>;
360
+ };
361
+ execute(args: {
362
+ auto_pull?: boolean | undefined;
363
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
364
+ };
365
+ beads_link_thread: {
366
+ description: string;
367
+ args: {
368
+ bead_id: z.ZodString;
369
+ thread_id: z.ZodString;
370
+ };
371
+ execute(args: {
372
+ bead_id: string;
373
+ thread_id: string;
374
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
375
+ };
376
+ };
377
+ //# sourceMappingURL=beads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../src/beads.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AA+DD;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,OAAO,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,MAAM;aACjB,MAAM,CAAC,EAAE,MAAM;gBAH/B,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,MAAM,CAAC,EAAE,MAAM,YAAA;CAKlC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBADpC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,CAAC,CAAC,QAAQ;CAKvC;AA+FD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;CA4DvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsM5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAoDtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CA6CvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CA+BtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;CA0BtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAuBtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAqMrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;CAkD5B,CAAC;AAMH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUtB,CAAC"}