opencode-swarm-plugin 0.22.0 → 0.23.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/.turbo/turbo-build.log +9 -0
- package/CHANGELOG.md +20 -0
- package/README.md +109 -429
- package/dist/agent-mail.d.ts +480 -0
- package/dist/agent-mail.d.ts.map +1 -0
- package/dist/anti-patterns.d.ts +257 -0
- package/dist/anti-patterns.d.ts.map +1 -0
- package/dist/beads.d.ts +377 -0
- package/dist/beads.d.ts.map +1 -0
- package/dist/eval-capture.d.ts +206 -0
- package/dist/eval-capture.d.ts.map +1 -0
- package/dist/index.d.ts +1299 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +498 -4246
- package/dist/learning.d.ts +670 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/mandate-promotion.d.ts +93 -0
- package/dist/mandate-promotion.d.ts.map +1 -0
- package/dist/mandate-storage.d.ts +209 -0
- package/dist/mandate-storage.d.ts.map +1 -0
- package/dist/mandates.d.ts +230 -0
- package/dist/mandates.d.ts.map +1 -0
- package/dist/output-guardrails.d.ts +125 -0
- package/dist/output-guardrails.d.ts.map +1 -0
- package/dist/pattern-maturity.d.ts +246 -0
- package/dist/pattern-maturity.d.ts.map +1 -0
- package/dist/plugin.d.ts +22 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +493 -4241
- package/dist/rate-limiter.d.ts +218 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/repo-crawl.d.ts +146 -0
- package/dist/repo-crawl.d.ts.map +1 -0
- package/dist/schemas/bead.d.ts +255 -0
- package/dist/schemas/bead.d.ts.map +1 -0
- package/dist/schemas/evaluation.d.ts +161 -0
- package/dist/schemas/evaluation.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +34 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/mandate.d.ts +336 -0
- package/dist/schemas/mandate.d.ts.map +1 -0
- package/dist/schemas/swarm-context.d.ts +131 -0
- package/dist/schemas/swarm-context.d.ts.map +1 -0
- package/dist/schemas/task.d.ts +188 -0
- package/dist/schemas/task.d.ts.map +1 -0
- package/dist/skills.d.ts +471 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/storage.d.ts +260 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/structured.d.ts +196 -0
- package/dist/structured.d.ts.map +1 -0
- package/dist/swarm-decompose.d.ts +201 -0
- package/dist/swarm-decompose.d.ts.map +1 -0
- package/dist/swarm-mail.d.ts +240 -0
- package/dist/swarm-mail.d.ts.map +1 -0
- package/dist/swarm-orchestrate.d.ts +708 -0
- package/dist/swarm-orchestrate.d.ts.map +1 -0
- package/dist/swarm-prompts.d.ts +292 -0
- package/dist/swarm-prompts.d.ts.map +1 -0
- package/dist/swarm-strategies.d.ts +100 -0
- package/dist/swarm-strategies.d.ts.map +1 -0
- package/dist/swarm.d.ts +455 -0
- package/dist/swarm.d.ts.map +1 -0
- package/dist/tool-availability.d.ts +91 -0
- package/dist/tool-availability.d.ts.map +1 -0
- package/docs/planning/ADR-001-monorepo-structure.md +171 -0
- package/docs/planning/ADR-002-package-extraction.md +393 -0
- package/docs/planning/ADR-003-performance-improvements.md +451 -0
- package/docs/planning/ADR-004-message-queue-features.md +187 -0
- package/docs/planning/ADR-005-devtools-observability.md +202 -0
- package/docs/planning/ROADMAP.md +368 -0
- package/package.json +13 -24
- package/src/agent-mail.ts +1 -1
- package/src/beads.ts +1 -2
- package/src/index.ts +2 -2
- package/src/learning.integration.test.ts +66 -11
- package/src/mandate-storage.test.ts +3 -3
- package/src/storage.ts +78 -10
- package/src/swarm-mail.ts +3 -3
- package/src/swarm-orchestrate.ts +7 -7
- package/src/tool-availability.ts +1 -1
- package/tsconfig.json +1 -1
- package/.beads/.local_version +0 -1
- package/.beads/README.md +0 -81
- package/.beads/analysis/skill-architecture-meta-skills.md +0 -1562
- package/.beads/config.yaml +0 -62
- package/.beads/issues.jsonl +0 -2197
- package/.beads/metadata.json +0 -4
- package/.gitattributes +0 -3
- package/.github/workflows/ci.yml +0 -30
- package/.github/workflows/opencode.yml +0 -31
- package/.opencode/skills/tdd/SKILL.md +0 -182
- package/INTEGRATION_EXAMPLE.md +0 -66
- package/VERIFICATION_QUALITY_PATTERNS.md +0 -565
- package/bun.lock +0 -286
- package/dist/pglite.data +0 -0
- package/dist/pglite.wasm +0 -0
- package/src/streams/agent-mail.test.ts +0 -777
- package/src/streams/agent-mail.ts +0 -535
- package/src/streams/debug.test.ts +0 -500
- package/src/streams/debug.ts +0 -727
- package/src/streams/effect/ask.integration.test.ts +0 -314
- package/src/streams/effect/ask.ts +0 -202
- package/src/streams/effect/cursor.integration.test.ts +0 -418
- package/src/streams/effect/cursor.ts +0 -288
- package/src/streams/effect/deferred.test.ts +0 -357
- package/src/streams/effect/deferred.ts +0 -445
- package/src/streams/effect/index.ts +0 -17
- package/src/streams/effect/layers.ts +0 -73
- package/src/streams/effect/lock.test.ts +0 -385
- package/src/streams/effect/lock.ts +0 -399
- package/src/streams/effect/mailbox.test.ts +0 -260
- package/src/streams/effect/mailbox.ts +0 -318
- package/src/streams/events.test.ts +0 -924
- package/src/streams/events.ts +0 -329
- package/src/streams/index.test.ts +0 -229
- package/src/streams/index.ts +0 -578
- package/src/streams/migrations.test.ts +0 -359
- package/src/streams/migrations.ts +0 -362
- package/src/streams/projections.test.ts +0 -611
- package/src/streams/projections.ts +0 -504
- package/src/streams/store.integration.test.ts +0 -658
- package/src/streams/store.ts +0 -1075
- package/src/streams/swarm-mail.ts +0 -552
- package/test-bug-fixes.ts +0 -86
- package/vitest.integration.config.ts +0 -19
- package/vitest.integration.setup.ts +0 -48
- package/workflow-integration-analysis.md +0 -876
|
@@ -4,10 +4,46 @@
|
|
|
4
4
|
* Tests for confidence decay, feedback scoring, outcome tracking,
|
|
5
5
|
* anti-patterns, pattern maturity, and swarm tool integrations.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* ## Test Isolation Pattern
|
|
8
|
+
*
|
|
9
|
+
* This file uses TEST_SEMANTIC_MEMORY_COLLECTION to isolate test data from
|
|
10
|
+
* production semantic-memory collections. Each test run gets a unique suffix,
|
|
11
|
+
* preventing pollution of the default collections.
|
|
12
|
+
*
|
|
13
|
+
* **Cleanup**: Test collections are NOT automatically deleted after test runs.
|
|
14
|
+
* This is intentional - semantic-memory doesn't provide bulk delete APIs.
|
|
15
|
+
* To clean up test artifacts, use:
|
|
16
|
+
*
|
|
17
|
+
* ```bash
|
|
18
|
+
* # Manual cleanup (use scripts/cleanup-test-memories.ts for automation)
|
|
19
|
+
* semantic-memory list --collection swarm-feedback-test-* --json | jq -r '.[].id' | xargs -I {} semantic-memory remove {}
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* The unique suffix prevents cross-test interference even without cleanup.
|
|
23
|
+
*/
|
|
24
|
+
import {
|
|
25
|
+
describe,
|
|
26
|
+
it,
|
|
27
|
+
expect,
|
|
28
|
+
beforeEach,
|
|
29
|
+
afterEach,
|
|
30
|
+
beforeAll,
|
|
31
|
+
afterAll,
|
|
32
|
+
vi,
|
|
33
|
+
} from "vitest";
|
|
34
|
+
import { getTestCollectionName } from "./storage";
|
|
35
|
+
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Test Isolation Setup
|
|
38
|
+
// ============================================================================
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Set unique collection suffix for this test run
|
|
42
|
+
*
|
|
43
|
+
* CRITICAL: This MUST be set before any storage instances are created.
|
|
44
|
+
* The env var is read during getCollectionNames() which happens at storage init.
|
|
9
45
|
*/
|
|
10
|
-
|
|
46
|
+
process.env.TEST_SEMANTIC_MEMORY_COLLECTION = getTestCollectionName();
|
|
11
47
|
|
|
12
48
|
// Learning module
|
|
13
49
|
import {
|
|
@@ -73,6 +109,30 @@ const mockContext = {
|
|
|
73
109
|
abort: new AbortController().signal,
|
|
74
110
|
};
|
|
75
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Global test lifecycle hooks
|
|
114
|
+
*
|
|
115
|
+
* These document the test isolation pattern but don't actively clean up.
|
|
116
|
+
* Cleanup is manual via scripts/cleanup-test-memories.ts
|
|
117
|
+
*/
|
|
118
|
+
beforeAll(() => {
|
|
119
|
+
console.log(
|
|
120
|
+
`[test] TEST_SEMANTIC_MEMORY_COLLECTION = ${process.env.TEST_SEMANTIC_MEMORY_COLLECTION}`,
|
|
121
|
+
);
|
|
122
|
+
console.log(
|
|
123
|
+
`[test] Test collections will be prefixed with: swarm-*-${process.env.TEST_SEMANTIC_MEMORY_COLLECTION}`,
|
|
124
|
+
);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
afterAll(() => {
|
|
128
|
+
console.log(
|
|
129
|
+
`[test] Test complete. Collections NOT auto-deleted (use scripts/cleanup-test-memories.ts for cleanup)`,
|
|
130
|
+
);
|
|
131
|
+
console.log(
|
|
132
|
+
`[test] Test collection suffix was: ${process.env.TEST_SEMANTIC_MEMORY_COLLECTION}`,
|
|
133
|
+
);
|
|
134
|
+
});
|
|
135
|
+
|
|
76
136
|
/**
|
|
77
137
|
* Create a feedback event for testing
|
|
78
138
|
*/
|
|
@@ -1309,14 +1369,9 @@ describe("Storage Module", () => {
|
|
|
1309
1369
|
beforeEach(async () => {
|
|
1310
1370
|
isAvailable = await isSemanticMemoryAvailable();
|
|
1311
1371
|
if (isAvailable) {
|
|
1312
|
-
// Use
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
feedback: `test-feedback-learning-${Date.now()}`,
|
|
1316
|
-
patterns: `test-patterns-learning-${Date.now()}`,
|
|
1317
|
-
maturity: `test-maturity-learning-${Date.now()}`,
|
|
1318
|
-
},
|
|
1319
|
-
});
|
|
1372
|
+
// Use default collections (which include TEST_SEMANTIC_MEMORY_COLLECTION suffix)
|
|
1373
|
+
// This ensures all tests use the same isolated collections for this test run
|
|
1374
|
+
storage = new SemanticMemoryStorage();
|
|
1320
1375
|
}
|
|
1321
1376
|
});
|
|
1322
1377
|
|
|
@@ -177,7 +177,7 @@ describe("InMemoryMandateStorage", () => {
|
|
|
177
177
|
it("should throw when updating non-existent mandate", async () => {
|
|
178
178
|
await expect(
|
|
179
179
|
storage.update("non-existent", { content: "Updated" }),
|
|
180
|
-
).rejects.toThrow("Mandate non-existent not found");
|
|
180
|
+
).rejects.toThrow("Mandate 'non-existent' not found");
|
|
181
181
|
});
|
|
182
182
|
});
|
|
183
183
|
|
|
@@ -235,7 +235,7 @@ describe("InMemoryMandateStorage", () => {
|
|
|
235
235
|
};
|
|
236
236
|
|
|
237
237
|
await expect(storage.vote(vote2)).rejects.toThrow(
|
|
238
|
-
"Agent GreenRiver has already voted on mandate mandate-1",
|
|
238
|
+
"Agent 'GreenRiver' has already voted on mandate 'mandate-1'",
|
|
239
239
|
);
|
|
240
240
|
});
|
|
241
241
|
|
|
@@ -572,7 +572,7 @@ describe("InMemoryMandateStorage", () => {
|
|
|
572
572
|
createMandateStorage({
|
|
573
573
|
backend: "unknown" as "semantic-memory" | "memory",
|
|
574
574
|
}),
|
|
575
|
-
).toThrow("Unknown storage backend: unknown");
|
|
575
|
+
).toThrow("Unknown storage backend: 'unknown'");
|
|
576
576
|
});
|
|
577
577
|
});
|
|
578
578
|
});
|
package/src/storage.ts
CHANGED
|
@@ -141,11 +141,51 @@ export interface StorageConfig {
|
|
|
141
141
|
useSemanticSearch: boolean;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Generate unique test collection name
|
|
146
|
+
*
|
|
147
|
+
* Creates a timestamp-based suffix for test collections to ensure complete isolation.
|
|
148
|
+
* Each test run gets its own collections that don't pollute production semantic-memory.
|
|
149
|
+
*
|
|
150
|
+
* @returns Unique suffix like "test-1734567890123"
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* // In test setup:
|
|
155
|
+
* process.env.TEST_SEMANTIC_MEMORY_COLLECTION = getTestCollectionName();
|
|
156
|
+
* // Results in collections like: swarm-feedback-test-1734567890123
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export function getTestCollectionName(): string {
|
|
160
|
+
return `test-${Date.now()}`;
|
|
161
|
+
}
|
|
162
|
+
|
|
144
163
|
/**
|
|
145
164
|
* Get collection names with optional test suffix
|
|
146
165
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
166
|
+
* Supports two test isolation modes:
|
|
167
|
+
* 1. TEST_MEMORY_COLLECTIONS=true - appends "-test" (shared across test run)
|
|
168
|
+
* 2. TEST_SEMANTIC_MEMORY_COLLECTION=<suffix> - appends custom suffix (unique per test run)
|
|
169
|
+
*
|
|
170
|
+
* Mode 2 is preferred for full isolation - prevents test pollution of production
|
|
171
|
+
* semantic-memory collections.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* // Production
|
|
176
|
+
* getCollectionNames()
|
|
177
|
+
* // => { feedback: "swarm-feedback", patterns: "swarm-patterns", maturity: "swarm-maturity" }
|
|
178
|
+
*
|
|
179
|
+
* // Test mode 1 (legacy)
|
|
180
|
+
* process.env.TEST_MEMORY_COLLECTIONS = "true"
|
|
181
|
+
* getCollectionNames()
|
|
182
|
+
* // => { feedback: "swarm-feedback-test", patterns: "swarm-patterns-test", ... }
|
|
183
|
+
*
|
|
184
|
+
* // Test mode 2 (preferred - full isolation)
|
|
185
|
+
* process.env.TEST_SEMANTIC_MEMORY_COLLECTION = "test-1734567890123"
|
|
186
|
+
* getCollectionNames()
|
|
187
|
+
* // => { feedback: "swarm-feedback-test-1734567890123", patterns: "swarm-patterns-test-1734567890123", ... }
|
|
188
|
+
* ```
|
|
149
189
|
*/
|
|
150
190
|
function getCollectionNames(): StorageCollections {
|
|
151
191
|
const base = {
|
|
@@ -154,7 +194,17 @@ function getCollectionNames(): StorageCollections {
|
|
|
154
194
|
maturity: "swarm-maturity",
|
|
155
195
|
};
|
|
156
196
|
|
|
157
|
-
// Test isolation
|
|
197
|
+
// Test isolation mode 2 (preferred): unique suffix per test run
|
|
198
|
+
const testSuffix = process.env.TEST_SEMANTIC_MEMORY_COLLECTION;
|
|
199
|
+
if (testSuffix) {
|
|
200
|
+
return {
|
|
201
|
+
feedback: `${base.feedback}-${testSuffix}`,
|
|
202
|
+
patterns: `${base.patterns}-${testSuffix}`,
|
|
203
|
+
maturity: `${base.maturity}-${testSuffix}`,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Test isolation mode 1 (legacy): shared "-test" suffix
|
|
158
208
|
if (process.env.TEST_MEMORY_COLLECTIONS === "true") {
|
|
159
209
|
return {
|
|
160
210
|
feedback: `${base.feedback}-test`,
|
|
@@ -166,11 +216,27 @@ function getCollectionNames(): StorageCollections {
|
|
|
166
216
|
return base;
|
|
167
217
|
}
|
|
168
218
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Get default storage configuration
|
|
221
|
+
*
|
|
222
|
+
* Returns a fresh config object on each call to ensure env vars (like
|
|
223
|
+
* TEST_SEMANTIC_MEMORY_COLLECTION) are read at runtime, not module load time.
|
|
224
|
+
*
|
|
225
|
+
* @returns Default storage configuration
|
|
226
|
+
*/
|
|
227
|
+
export function getDefaultStorageConfig(): StorageConfig {
|
|
228
|
+
return {
|
|
229
|
+
backend: "semantic-memory",
|
|
230
|
+
collections: getCollectionNames(),
|
|
231
|
+
useSemanticSearch: true,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @deprecated Use getDefaultStorageConfig() instead. This static export
|
|
237
|
+
* captures collections at module load time, breaking test isolation.
|
|
238
|
+
*/
|
|
239
|
+
export const DEFAULT_STORAGE_CONFIG: StorageConfig = getDefaultStorageConfig();
|
|
174
240
|
|
|
175
241
|
// ============================================================================
|
|
176
242
|
// Unified Storage Interface
|
|
@@ -261,7 +327,8 @@ export class SemanticMemoryStorage implements LearningStorage {
|
|
|
261
327
|
private config: StorageConfig;
|
|
262
328
|
|
|
263
329
|
constructor(config: Partial<StorageConfig> = {}) {
|
|
264
|
-
|
|
330
|
+
// Use getDefaultStorageConfig() to ensure env vars are read at runtime
|
|
331
|
+
this.config = { ...getDefaultStorageConfig(), ...config };
|
|
265
332
|
console.log(
|
|
266
333
|
`[storage] SemanticMemoryStorage initialized with collections:`,
|
|
267
334
|
this.config.collections,
|
|
@@ -723,7 +790,8 @@ export class InMemoryStorage implements LearningStorage {
|
|
|
723
790
|
export function createStorage(
|
|
724
791
|
config: Partial<StorageConfig> = {},
|
|
725
792
|
): LearningStorage {
|
|
726
|
-
|
|
793
|
+
// Use getDefaultStorageConfig() to ensure env vars are read at runtime
|
|
794
|
+
const fullConfig = { ...getDefaultStorageConfig(), ...config };
|
|
727
795
|
|
|
728
796
|
switch (fullConfig.backend) {
|
|
729
797
|
case "semantic-memory":
|
package/src/swarm-mail.ts
CHANGED
|
@@ -26,9 +26,9 @@ import {
|
|
|
26
26
|
releaseSwarmFiles,
|
|
27
27
|
acknowledgeSwarmMessage,
|
|
28
28
|
checkSwarmHealth,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
getActiveReservations,
|
|
30
|
+
type MailSessionState,
|
|
31
|
+
} from "swarm-mail";
|
|
32
32
|
import {
|
|
33
33
|
existsSync,
|
|
34
34
|
mkdirSync,
|
package/src/swarm-orchestrate.ts
CHANGED
|
@@ -36,10 +36,10 @@ import {
|
|
|
36
36
|
getSwarmInbox,
|
|
37
37
|
releaseSwarmFiles,
|
|
38
38
|
sendSwarmMessage,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
getAgent,
|
|
40
|
+
createEvent,
|
|
41
|
+
appendEvent,
|
|
42
|
+
} from "swarm-mail";
|
|
43
43
|
import {
|
|
44
44
|
addStrike,
|
|
45
45
|
clearStrikes,
|
|
@@ -872,7 +872,7 @@ export const swarm_progress = tool({
|
|
|
872
872
|
await appendEvent(event, args.project_key);
|
|
873
873
|
|
|
874
874
|
// Update swarm_contexts table
|
|
875
|
-
const { getDatabase } = await import("
|
|
875
|
+
const { getDatabase } = await import("swarm-mail");
|
|
876
876
|
const db = await getDatabase(args.project_key);
|
|
877
877
|
const now = Date.now();
|
|
878
878
|
await db.query(
|
|
@@ -2062,7 +2062,7 @@ export const swarm_checkpoint = tool({
|
|
|
2062
2062
|
await appendEvent(event, args.project_key);
|
|
2063
2063
|
|
|
2064
2064
|
// Update swarm_contexts table for fast recovery
|
|
2065
|
-
const { getDatabase } = await import("
|
|
2065
|
+
const { getDatabase } = await import("swarm-mail");
|
|
2066
2066
|
const db = await getDatabase(args.project_key);
|
|
2067
2067
|
|
|
2068
2068
|
const now = Date.now();
|
|
@@ -2138,7 +2138,7 @@ export const swarm_recover = tool({
|
|
|
2138
2138
|
},
|
|
2139
2139
|
async execute(args) {
|
|
2140
2140
|
try {
|
|
2141
|
-
const { getDatabase } = await import("
|
|
2141
|
+
const { getDatabase } = await import("swarm-mail");
|
|
2142
2142
|
const db = await getDatabase(args.project_key);
|
|
2143
2143
|
|
|
2144
2144
|
// Query most recent checkpoint for this epic
|
package/src/tool-availability.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - agent-mail: DEPRECATED - Legacy MCP server (use swarm-mail instead)
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { checkSwarmHealth } from "
|
|
16
|
+
import { checkSwarmHealth } from "swarm-mail";
|
|
17
17
|
|
|
18
18
|
/** Default timeout for URL reachability checks in milliseconds */
|
|
19
19
|
const DEFAULT_URL_TIMEOUT_MS = 2000;
|
package/tsconfig.json
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"types": ["bun-types"],
|
|
8
8
|
"strict": true,
|
|
9
9
|
"skipLibCheck": true,
|
|
10
|
-
"noEmit": true,
|
|
11
10
|
"esModuleInterop": true,
|
|
12
11
|
"allowSyntheticDefaultImports": true,
|
|
13
12
|
"forceConsistentCasingInFileNames": true,
|
|
14
13
|
"resolveJsonModule": true,
|
|
15
14
|
"declaration": true,
|
|
16
15
|
"declarationMap": true,
|
|
16
|
+
"emitDeclarationOnly": true,
|
|
17
17
|
"sourceMap": true,
|
|
18
18
|
"outDir": "./dist",
|
|
19
19
|
"rootDir": "./src",
|
package/.beads/.local_version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.29.0
|
package/.beads/README.md
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Beads - AI-Native Issue Tracking
|
|
2
|
-
|
|
3
|
-
Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code.
|
|
4
|
-
|
|
5
|
-
## What is Beads?
|
|
6
|
-
|
|
7
|
-
Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git.
|
|
8
|
-
|
|
9
|
-
**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
12
|
-
|
|
13
|
-
### Essential Commands
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
# Create new issues
|
|
17
|
-
bd create "Add user authentication"
|
|
18
|
-
|
|
19
|
-
# View all issues
|
|
20
|
-
bd list
|
|
21
|
-
|
|
22
|
-
# View issue details
|
|
23
|
-
bd show <issue-id>
|
|
24
|
-
|
|
25
|
-
# Update issue status
|
|
26
|
-
bd update <issue-id> --status in_progress
|
|
27
|
-
bd update <issue-id> --status done
|
|
28
|
-
|
|
29
|
-
# Sync with git remote
|
|
30
|
-
bd sync
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Working with Issues
|
|
34
|
-
|
|
35
|
-
Issues in Beads are:
|
|
36
|
-
- **Git-native**: Stored in `.beads/issues.jsonl` and synced like code
|
|
37
|
-
- **AI-friendly**: CLI-first design works perfectly with AI coding agents
|
|
38
|
-
- **Branch-aware**: Issues can follow your branch workflow
|
|
39
|
-
- **Always in sync**: Auto-syncs with your commits
|
|
40
|
-
|
|
41
|
-
## Why Beads?
|
|
42
|
-
|
|
43
|
-
✨ **AI-Native Design**
|
|
44
|
-
- Built specifically for AI-assisted development workflows
|
|
45
|
-
- CLI-first interface works seamlessly with AI coding agents
|
|
46
|
-
- No context switching to web UIs
|
|
47
|
-
|
|
48
|
-
🚀 **Developer Focused**
|
|
49
|
-
- Issues live in your repo, right next to your code
|
|
50
|
-
- Works offline, syncs when you push
|
|
51
|
-
- Fast, lightweight, and stays out of your way
|
|
52
|
-
|
|
53
|
-
🔧 **Git Integration**
|
|
54
|
-
- Automatic sync with git commits
|
|
55
|
-
- Branch-aware issue tracking
|
|
56
|
-
- Intelligent JSONL merge resolution
|
|
57
|
-
|
|
58
|
-
## Get Started with Beads
|
|
59
|
-
|
|
60
|
-
Try Beads in your own projects:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Install Beads
|
|
64
|
-
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
|
|
65
|
-
|
|
66
|
-
# Initialize in your repo
|
|
67
|
-
bd init
|
|
68
|
-
|
|
69
|
-
# Create your first issue
|
|
70
|
-
bd create "Try out Beads"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Learn More
|
|
74
|
-
|
|
75
|
-
- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
|
|
76
|
-
- **Quick Start Guide**: Run `bd quickstart`
|
|
77
|
-
- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
*Beads: Issue tracking that moves at the speed of thought* ⚡
|