swarm-mail 1.2.1 → 1.3.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.
- package/dist/adapter.d.ts +2 -2
- package/dist/db/client.d.ts +68 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/drizzle.d.ts +24 -0
- package/dist/db/drizzle.d.ts.map +1 -0
- package/dist/db/index.d.ts +25 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/migrate.d.ts +81 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/schema/hive.d.ts +1596 -0
- package/dist/db/schema/hive.d.ts.map +1 -0
- package/dist/db/schema/index.d.ts +12 -0
- package/dist/db/schema/index.d.ts.map +1 -0
- package/dist/db/schema/memory.d.ts +214 -0
- package/dist/db/schema/memory.d.ts.map +1 -0
- package/dist/db/schema/streams.d.ts +1601 -0
- package/dist/db/schema/streams.d.ts.map +1 -0
- package/dist/hive/adapter.d.ts +8 -8
- package/dist/hive/adapter.d.ts.map +1 -1
- package/dist/hive/dependencies-drizzle.d.ts +31 -0
- package/dist/hive/dependencies-drizzle.d.ts.map +1 -0
- package/dist/hive/dependencies.d.ts.map +1 -1
- package/dist/hive/flush-manager.d.ts +2 -1
- package/dist/hive/flush-manager.d.ts.map +1 -1
- package/dist/hive/jsonl.d.ts.map +1 -1
- package/dist/hive/migrations.d.ts +23 -3
- package/dist/hive/migrations.d.ts.map +1 -1
- package/dist/hive/projections-drizzle.d.ts +43 -0
- package/dist/hive/projections-drizzle.d.ts.map +1 -0
- package/dist/hive/projections.d.ts +8 -0
- package/dist/hive/projections.d.ts.map +1 -1
- package/dist/hive/queries-drizzle.d.ts +52 -0
- package/dist/hive/queries-drizzle.d.ts.map +1 -0
- package/dist/hive/queries.d.ts +38 -0
- package/dist/hive/queries.d.ts.map +1 -1
- package/dist/hive/store.d.ts +36 -14
- package/dist/hive/store.d.ts.map +1 -1
- package/dist/index.d.ts +34 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83673 -38455
- package/dist/libsql.convenience.d.ts +155 -0
- package/dist/libsql.convenience.d.ts.map +1 -0
- package/dist/libsql.d.ts +93 -0
- package/dist/libsql.d.ts.map +1 -0
- package/dist/memory/adapter.d.ts +6 -7
- package/dist/memory/adapter.d.ts.map +1 -1
- package/dist/memory/libsql-schema.d.ts +83 -0
- package/dist/memory/libsql-schema.d.ts.map +1 -0
- package/dist/memory/migrate-legacy.d.ts +11 -0
- package/dist/memory/migrate-legacy.d.ts.map +1 -1
- package/dist/memory/migrations.d.ts +11 -0
- package/dist/memory/migrations.d.ts.map +1 -1
- package/dist/memory/store.d.ts +39 -31
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/test-utils.d.ts +59 -0
- package/dist/memory/test-utils.d.ts.map +1 -0
- package/dist/migrate-pglite-to-libsql.d.ts +73 -0
- package/dist/migrate-pglite-to-libsql.d.ts.map +1 -0
- package/dist/pglite.d.ts +8 -170
- package/dist/pglite.d.ts.map +1 -1
- package/dist/streams/agent-mail.d.ts +13 -0
- package/dist/streams/agent-mail.d.ts.map +1 -1
- package/dist/streams/auto-migrate.d.ts +182 -0
- package/dist/streams/auto-migrate.d.ts.map +1 -0
- package/dist/streams/effect/ask.d.ts +5 -4
- package/dist/streams/effect/ask.d.ts.map +1 -1
- package/dist/streams/effect/cursor.d.ts +3 -2
- package/dist/streams/effect/cursor.d.ts.map +1 -1
- package/dist/streams/effect/deferred.d.ts +12 -9
- package/dist/streams/effect/deferred.d.ts.map +1 -1
- package/dist/streams/effect/lock.d.ts +13 -11
- package/dist/streams/effect/lock.d.ts.map +1 -1
- package/dist/streams/effect/mailbox.d.ts +3 -2
- package/dist/streams/effect/mailbox.d.ts.map +1 -1
- package/dist/streams/events.d.ts +4 -0
- package/dist/streams/events.d.ts.map +1 -1
- package/dist/streams/index.d.ts +20 -74
- package/dist/streams/index.d.ts.map +1 -1
- package/dist/streams/libsql-schema.d.ts +77 -0
- package/dist/streams/libsql-schema.d.ts.map +1 -0
- package/dist/streams/migrations.d.ts +8 -8
- package/dist/streams/migrations.d.ts.map +1 -1
- package/dist/streams/projections-drizzle.d.ts +175 -0
- package/dist/streams/projections-drizzle.d.ts.map +1 -0
- package/dist/streams/projections.d.ts +9 -0
- package/dist/streams/projections.d.ts.map +1 -1
- package/dist/streams/store-drizzle.d.ts +96 -0
- package/dist/streams/store-drizzle.d.ts.map +1 -0
- package/dist/streams/store.d.ts +23 -0
- package/dist/streams/store.d.ts.map +1 -1
- package/dist/streams/swarm-mail.d.ts +9 -0
- package/dist/streams/swarm-mail.d.ts.map +1 -1
- package/dist/test-libsql.d.ts +76 -0
- package/dist/test-libsql.d.ts.map +1 -0
- package/dist/types/adapter.d.ts +3 -3
- package/dist/types/database.d.ts +12 -12
- package/dist/types/hive-adapter.d.ts +5 -5
- package/package.json +5 -5
- package/dist/beads/adapter.d.ts +0 -38
- package/dist/beads/adapter.d.ts.map +0 -1
- package/dist/beads/blocked-cache.d.ts +0 -21
- package/dist/beads/blocked-cache.d.ts.map +0 -1
- package/dist/beads/comments.d.ts +0 -21
- package/dist/beads/comments.d.ts.map +0 -1
- package/dist/beads/dependencies.d.ts +0 -58
- package/dist/beads/dependencies.d.ts.map +0 -1
- package/dist/beads/events.d.ts +0 -163
- package/dist/beads/events.d.ts.map +0 -1
- package/dist/beads/flush-manager.d.ts +0 -71
- package/dist/beads/flush-manager.d.ts.map +0 -1
- package/dist/beads/index.d.ts +0 -25
- package/dist/beads/index.d.ts.map +0 -1
- package/dist/beads/jsonl.d.ts +0 -103
- package/dist/beads/jsonl.d.ts.map +0 -1
- package/dist/beads/labels.d.ts +0 -21
- package/dist/beads/labels.d.ts.map +0 -1
- package/dist/beads/merge.d.ts +0 -99
- package/dist/beads/merge.d.ts.map +0 -1
- package/dist/beads/migrations.d.ts +0 -41
- package/dist/beads/migrations.d.ts.map +0 -1
- package/dist/beads/operations.d.ts +0 -56
- package/dist/beads/operations.d.ts.map +0 -1
- package/dist/beads/projections.d.ts +0 -103
- package/dist/beads/projections.d.ts.map +0 -1
- package/dist/beads/queries.d.ts +0 -77
- package/dist/beads/queries.d.ts.map +0 -1
- package/dist/beads/store.d.ts +0 -98
- package/dist/beads/store.d.ts.map +0 -1
- package/dist/beads/validation.d.ts +0 -75
- package/dist/beads/validation.d.ts.map +0 -1
- package/dist/daemon.d.ts +0 -161
- package/dist/daemon.d.ts.map +0 -1
- package/dist/socket-adapter.d.ts +0 -78
- package/dist/socket-adapter.d.ts.map +0 -1
- package/dist/streams/debug.d.ts +0 -173
- package/dist/streams/debug.d.ts.map +0 -1
- package/dist/test-server.d.ts +0 -64
- package/dist/test-server.d.ts.map +0 -1
- package/dist/types/beads-adapter.d.ts +0 -397
- package/dist/types/beads-adapter.d.ts.map +0 -1
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BeadsAdapter - High-level interface for beads operations
|
|
3
|
-
*
|
|
4
|
-
* This interface abstracts all beads operations (CRUD, dependencies, labels,
|
|
5
|
-
* comments, epic management) to enable different storage backends.
|
|
6
|
-
*
|
|
7
|
-
* ## Design Goals
|
|
8
|
-
* - Database-agnostic (works with PGLite, SQLite, PostgreSQL, etc.)
|
|
9
|
-
* - Parallel to SwarmMailAdapter pattern
|
|
10
|
-
* - Event sourcing with projections for queries
|
|
11
|
-
* - No implementation details leak through interface
|
|
12
|
-
*
|
|
13
|
-
* ## Layering
|
|
14
|
-
* - DatabaseAdapter: Low-level SQL execution (shared with swarm-mail)
|
|
15
|
-
* - BeadsAdapter: High-level beads operations (uses DatabaseAdapter internally)
|
|
16
|
-
* - Plugin tools: Type-safe Zod-validated wrappers (use BeadsAdapter)
|
|
17
|
-
*
|
|
18
|
-
* ## Relationship to steveyegge/beads
|
|
19
|
-
* This is a TypeScript rewrite of steveyegge/beads internal/storage/storage.go
|
|
20
|
-
* interface, adapted for event sourcing and shared PGLite database.
|
|
21
|
-
*/
|
|
22
|
-
import type { DatabaseAdapter } from "./database.js";
|
|
23
|
-
export type BeadStatus = "open" | "in_progress" | "blocked" | "closed" | "tombstone";
|
|
24
|
-
export type BeadType = "bug" | "feature" | "task" | "epic" | "chore" | "message";
|
|
25
|
-
export type DependencyRelationship = "blocks" | "related" | "parent-child" | "discovered-from" | "replies-to" | "relates-to" | "duplicates" | "supersedes";
|
|
26
|
-
/**
|
|
27
|
-
* Full bead record (projection)
|
|
28
|
-
*/
|
|
29
|
-
export interface Bead {
|
|
30
|
-
id: string;
|
|
31
|
-
project_key: string;
|
|
32
|
-
type: BeadType;
|
|
33
|
-
status: BeadStatus;
|
|
34
|
-
title: string;
|
|
35
|
-
description: string | null;
|
|
36
|
-
priority: number;
|
|
37
|
-
parent_id: string | null;
|
|
38
|
-
assignee: string | null;
|
|
39
|
-
created_at: number;
|
|
40
|
-
updated_at: number;
|
|
41
|
-
closed_at: number | null;
|
|
42
|
-
closed_reason: string | null;
|
|
43
|
-
deleted_at: number | null;
|
|
44
|
-
deleted_by: string | null;
|
|
45
|
-
delete_reason: string | null;
|
|
46
|
-
created_by: string | null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Bead creation options
|
|
50
|
-
*/
|
|
51
|
-
export interface CreateBeadOptions {
|
|
52
|
-
title: string;
|
|
53
|
-
description?: string;
|
|
54
|
-
type: BeadType;
|
|
55
|
-
priority?: number;
|
|
56
|
-
parent_id?: string;
|
|
57
|
-
assignee?: string;
|
|
58
|
-
created_by?: string;
|
|
59
|
-
metadata?: Record<string, unknown>;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Bead update options
|
|
63
|
-
*/
|
|
64
|
-
export interface UpdateBeadOptions {
|
|
65
|
-
title?: string;
|
|
66
|
-
description?: string;
|
|
67
|
-
priority?: number;
|
|
68
|
-
assignee?: string;
|
|
69
|
-
updated_by?: string;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Bead query filters
|
|
73
|
-
*/
|
|
74
|
-
export interface QueryBeadsOptions {
|
|
75
|
-
status?: BeadStatus | BeadStatus[];
|
|
76
|
-
type?: BeadType | BeadType[];
|
|
77
|
-
parent_id?: string;
|
|
78
|
-
assignee?: string;
|
|
79
|
-
labels?: string[];
|
|
80
|
-
limit?: number;
|
|
81
|
-
offset?: number;
|
|
82
|
-
/** Include deleted beads */
|
|
83
|
-
include_deleted?: boolean;
|
|
84
|
-
/** Include children for epics */
|
|
85
|
-
include_children?: boolean;
|
|
86
|
-
}
|
|
87
|
-
export interface BeadAdapter {
|
|
88
|
-
/**
|
|
89
|
-
* Create a new bead
|
|
90
|
-
*
|
|
91
|
-
* Emits: bead_created event
|
|
92
|
-
*/
|
|
93
|
-
createBead(projectKey: string, options: CreateBeadOptions, projectPath?: string): Promise<Bead>;
|
|
94
|
-
/**
|
|
95
|
-
* Get a bead by ID
|
|
96
|
-
*/
|
|
97
|
-
getBead(projectKey: string, beadId: string, projectPath?: string): Promise<Bead | null>;
|
|
98
|
-
/**
|
|
99
|
-
* Query beads with filters
|
|
100
|
-
*/
|
|
101
|
-
queryBeads(projectKey: string, options?: QueryBeadsOptions, projectPath?: string): Promise<Bead[]>;
|
|
102
|
-
/**
|
|
103
|
-
* Update bead fields
|
|
104
|
-
*
|
|
105
|
-
* Emits: bead_updated event
|
|
106
|
-
*/
|
|
107
|
-
updateBead(projectKey: string, beadId: string, options: UpdateBeadOptions, projectPath?: string): Promise<Bead>;
|
|
108
|
-
/**
|
|
109
|
-
* Change bead status
|
|
110
|
-
*
|
|
111
|
-
* Emits: bead_status_changed event
|
|
112
|
-
*/
|
|
113
|
-
changeBeadStatus(projectKey: string, beadId: string, toStatus: BeadStatus, options?: {
|
|
114
|
-
reason?: string;
|
|
115
|
-
changed_by?: string;
|
|
116
|
-
}, projectPath?: string): Promise<Bead>;
|
|
117
|
-
/**
|
|
118
|
-
* Close a bead
|
|
119
|
-
*
|
|
120
|
-
* Emits: bead_closed event
|
|
121
|
-
*/
|
|
122
|
-
closeBead(projectKey: string, beadId: string, reason: string, options?: {
|
|
123
|
-
closed_by?: string;
|
|
124
|
-
files_touched?: string[];
|
|
125
|
-
duration_ms?: number;
|
|
126
|
-
}, projectPath?: string): Promise<Bead>;
|
|
127
|
-
/**
|
|
128
|
-
* Reopen a closed bead
|
|
129
|
-
*
|
|
130
|
-
* Emits: bead_reopened event
|
|
131
|
-
*/
|
|
132
|
-
reopenBead(projectKey: string, beadId: string, options?: {
|
|
133
|
-
reason?: string;
|
|
134
|
-
reopened_by?: string;
|
|
135
|
-
}, projectPath?: string): Promise<Bead>;
|
|
136
|
-
/**
|
|
137
|
-
* Delete a bead (soft delete)
|
|
138
|
-
*
|
|
139
|
-
* Emits: bead_deleted event
|
|
140
|
-
*/
|
|
141
|
-
deleteBead(projectKey: string, beadId: string, options?: {
|
|
142
|
-
reason?: string;
|
|
143
|
-
deleted_by?: string;
|
|
144
|
-
}, projectPath?: string): Promise<void>;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Dependency between beads
|
|
148
|
-
*/
|
|
149
|
-
export interface BeadDependency {
|
|
150
|
-
bead_id: string;
|
|
151
|
-
depends_on_id: string;
|
|
152
|
-
relationship: DependencyRelationship;
|
|
153
|
-
created_at: number;
|
|
154
|
-
created_by: string | null;
|
|
155
|
-
}
|
|
156
|
-
export interface DependencyAdapter {
|
|
157
|
-
/**
|
|
158
|
-
* Add a dependency between beads
|
|
159
|
-
*
|
|
160
|
-
* Emits: bead_dependency_added event
|
|
161
|
-
*/
|
|
162
|
-
addDependency(projectKey: string, beadId: string, dependsOnId: string, relationship: DependencyRelationship, options?: {
|
|
163
|
-
reason?: string;
|
|
164
|
-
added_by?: string;
|
|
165
|
-
}, projectPath?: string): Promise<BeadDependency>;
|
|
166
|
-
/**
|
|
167
|
-
* Remove a dependency
|
|
168
|
-
*
|
|
169
|
-
* Emits: bead_dependency_removed event
|
|
170
|
-
*/
|
|
171
|
-
removeDependency(projectKey: string, beadId: string, dependsOnId: string, relationship: DependencyRelationship, options?: {
|
|
172
|
-
reason?: string;
|
|
173
|
-
removed_by?: string;
|
|
174
|
-
}, projectPath?: string): Promise<void>;
|
|
175
|
-
/**
|
|
176
|
-
* Get all dependencies for a bead
|
|
177
|
-
*/
|
|
178
|
-
getDependencies(projectKey: string, beadId: string, projectPath?: string): Promise<BeadDependency[]>;
|
|
179
|
-
/**
|
|
180
|
-
* Get beads that depend on this bead
|
|
181
|
-
*/
|
|
182
|
-
getDependents(projectKey: string, beadId: string, projectPath?: string): Promise<BeadDependency[]>;
|
|
183
|
-
/**
|
|
184
|
-
* Check if a bead is blocked
|
|
185
|
-
*
|
|
186
|
-
* Uses blocked_beads_cache for fast lookups
|
|
187
|
-
*/
|
|
188
|
-
isBlocked(projectKey: string, beadId: string, projectPath?: string): Promise<boolean>;
|
|
189
|
-
/**
|
|
190
|
-
* Get all blockers for a bead
|
|
191
|
-
*/
|
|
192
|
-
getBlockers(projectKey: string, beadId: string, projectPath?: string): Promise<string[]>;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Label on a bead
|
|
196
|
-
*/
|
|
197
|
-
export interface BeadLabel {
|
|
198
|
-
bead_id: string;
|
|
199
|
-
label: string;
|
|
200
|
-
created_at: number;
|
|
201
|
-
}
|
|
202
|
-
export interface LabelAdapter {
|
|
203
|
-
/**
|
|
204
|
-
* Add a label to a bead
|
|
205
|
-
*
|
|
206
|
-
* Emits: bead_label_added event
|
|
207
|
-
*/
|
|
208
|
-
addLabel(projectKey: string, beadId: string, label: string, options?: {
|
|
209
|
-
added_by?: string;
|
|
210
|
-
}, projectPath?: string): Promise<BeadLabel>;
|
|
211
|
-
/**
|
|
212
|
-
* Remove a label from a bead
|
|
213
|
-
*
|
|
214
|
-
* Emits: bead_label_removed event
|
|
215
|
-
*/
|
|
216
|
-
removeLabel(projectKey: string, beadId: string, label: string, options?: {
|
|
217
|
-
removed_by?: string;
|
|
218
|
-
}, projectPath?: string): Promise<void>;
|
|
219
|
-
/**
|
|
220
|
-
* Get all labels for a bead
|
|
221
|
-
*/
|
|
222
|
-
getLabels(projectKey: string, beadId: string, projectPath?: string): Promise<string[]>;
|
|
223
|
-
/**
|
|
224
|
-
* Get all beads with a label
|
|
225
|
-
*/
|
|
226
|
-
getBeadsWithLabel(projectKey: string, label: string, projectPath?: string): Promise<Bead[]>;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Comment on a bead
|
|
230
|
-
*/
|
|
231
|
-
export interface BeadComment {
|
|
232
|
-
id: number;
|
|
233
|
-
bead_id: string;
|
|
234
|
-
author: string;
|
|
235
|
-
body: string;
|
|
236
|
-
parent_id: number | null;
|
|
237
|
-
created_at: number;
|
|
238
|
-
updated_at: number | null;
|
|
239
|
-
}
|
|
240
|
-
export interface CommentAdapter {
|
|
241
|
-
/**
|
|
242
|
-
* Add a comment to a bead
|
|
243
|
-
*
|
|
244
|
-
* Emits: bead_comment_added event
|
|
245
|
-
*/
|
|
246
|
-
addComment(projectKey: string, beadId: string, author: string, body: string, options?: {
|
|
247
|
-
parent_id?: number;
|
|
248
|
-
metadata?: Record<string, unknown>;
|
|
249
|
-
}, projectPath?: string): Promise<BeadComment>;
|
|
250
|
-
/**
|
|
251
|
-
* Update a comment
|
|
252
|
-
*
|
|
253
|
-
* Emits: bead_comment_updated event
|
|
254
|
-
*/
|
|
255
|
-
updateComment(projectKey: string, commentId: number, newBody: string, updated_by: string, projectPath?: string): Promise<BeadComment>;
|
|
256
|
-
/**
|
|
257
|
-
* Delete a comment
|
|
258
|
-
*
|
|
259
|
-
* Emits: bead_comment_deleted event
|
|
260
|
-
*/
|
|
261
|
-
deleteComment(projectKey: string, commentId: number, deleted_by: string, options?: {
|
|
262
|
-
reason?: string;
|
|
263
|
-
}, projectPath?: string): Promise<void>;
|
|
264
|
-
/**
|
|
265
|
-
* Get all comments for a bead
|
|
266
|
-
*/
|
|
267
|
-
getComments(projectKey: string, beadId: string, projectPath?: string): Promise<BeadComment[]>;
|
|
268
|
-
}
|
|
269
|
-
export interface EpicAdapter {
|
|
270
|
-
/**
|
|
271
|
-
* Add a child bead to an epic
|
|
272
|
-
*
|
|
273
|
-
* Emits: bead_epic_child_added event
|
|
274
|
-
*/
|
|
275
|
-
addChildToEpic(projectKey: string, epicId: string, childId: string, options?: {
|
|
276
|
-
child_index?: number;
|
|
277
|
-
added_by?: string;
|
|
278
|
-
}, projectPath?: string): Promise<void>;
|
|
279
|
-
/**
|
|
280
|
-
* Remove a child from an epic
|
|
281
|
-
*
|
|
282
|
-
* Emits: bead_epic_child_removed event
|
|
283
|
-
*/
|
|
284
|
-
removeChildFromEpic(projectKey: string, epicId: string, childId: string, options?: {
|
|
285
|
-
reason?: string;
|
|
286
|
-
removed_by?: string;
|
|
287
|
-
}, projectPath?: string): Promise<void>;
|
|
288
|
-
/**
|
|
289
|
-
* Get all children of an epic
|
|
290
|
-
*/
|
|
291
|
-
getEpicChildren(projectKey: string, epicId: string, projectPath?: string): Promise<Bead[]>;
|
|
292
|
-
/**
|
|
293
|
-
* Check if epic is eligible for closure
|
|
294
|
-
*
|
|
295
|
-
* Returns true if all children are closed
|
|
296
|
-
*/
|
|
297
|
-
isEpicClosureEligible(projectKey: string, epicId: string, projectPath?: string): Promise<boolean>;
|
|
298
|
-
}
|
|
299
|
-
export interface QueryAdapter {
|
|
300
|
-
/**
|
|
301
|
-
* Get next ready bead (unblocked, highest priority)
|
|
302
|
-
*
|
|
303
|
-
* Implements steveyegge/beads ready_issues view logic
|
|
304
|
-
*/
|
|
305
|
-
getNextReadyBead(projectKey: string, projectPath?: string): Promise<Bead | null>;
|
|
306
|
-
/**
|
|
307
|
-
* Get all in-progress beads
|
|
308
|
-
*/
|
|
309
|
-
getInProgressBeads(projectKey: string, projectPath?: string): Promise<Bead[]>;
|
|
310
|
-
/**
|
|
311
|
-
* Get all blocked beads with their blockers
|
|
312
|
-
*/
|
|
313
|
-
getBlockedBeads(projectKey: string, projectPath?: string): Promise<Array<{
|
|
314
|
-
bead: Bead;
|
|
315
|
-
blockers: string[];
|
|
316
|
-
}>>;
|
|
317
|
-
/**
|
|
318
|
-
* Mark bead as dirty for JSONL export
|
|
319
|
-
*/
|
|
320
|
-
markDirty(projectKey: string, beadId: string, projectPath?: string): Promise<void>;
|
|
321
|
-
/**
|
|
322
|
-
* Get all dirty beads (for incremental export)
|
|
323
|
-
*/
|
|
324
|
-
getDirtyBeads(projectKey: string, projectPath?: string): Promise<string[]>;
|
|
325
|
-
/**
|
|
326
|
-
* Clear dirty flag after export
|
|
327
|
-
*/
|
|
328
|
-
clearDirty(projectKey: string, beadId: string, projectPath?: string): Promise<void>;
|
|
329
|
-
}
|
|
330
|
-
export interface BeadsSchemaAdapter {
|
|
331
|
-
/**
|
|
332
|
-
* Run beads-specific migrations
|
|
333
|
-
*
|
|
334
|
-
* Adds beads tables to shared PGLite database
|
|
335
|
-
*/
|
|
336
|
-
runMigrations(projectPath?: string): Promise<void>;
|
|
337
|
-
/**
|
|
338
|
-
* Get beads statistics
|
|
339
|
-
*/
|
|
340
|
-
getBeadsStats(projectPath?: string): Promise<{
|
|
341
|
-
total_beads: number;
|
|
342
|
-
open: number;
|
|
343
|
-
in_progress: number;
|
|
344
|
-
blocked: number;
|
|
345
|
-
closed: number;
|
|
346
|
-
by_type: Record<BeadType, number>;
|
|
347
|
-
}>;
|
|
348
|
-
/**
|
|
349
|
-
* Rebuild blocked beads cache
|
|
350
|
-
*
|
|
351
|
-
* Recalculates all blockers and updates blocked_beads_cache
|
|
352
|
-
*/
|
|
353
|
-
rebuildBlockedCache(projectKey: string, projectPath?: string): Promise<void>;
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* BeadsAdapter - Complete interface for beads operations
|
|
357
|
-
*
|
|
358
|
-
* Combines all sub-adapters into a single interface.
|
|
359
|
-
* Implementations provide a DatabaseAdapter and implement all operations.
|
|
360
|
-
*
|
|
361
|
-
* This adapter shares the same PGLite database with SwarmMailAdapter.
|
|
362
|
-
*/
|
|
363
|
-
export interface BeadsAdapter extends BeadAdapter, DependencyAdapter, LabelAdapter, CommentAdapter, EpicAdapter, QueryAdapter, BeadsSchemaAdapter {
|
|
364
|
-
/**
|
|
365
|
-
* Get the underlying database adapter
|
|
366
|
-
*
|
|
367
|
-
* Same instance as SwarmMailAdapter uses
|
|
368
|
-
*/
|
|
369
|
-
getDatabase(projectPath?: string): Promise<DatabaseAdapter>;
|
|
370
|
-
/**
|
|
371
|
-
* Close the database connection
|
|
372
|
-
*
|
|
373
|
-
* Note: This is shared with SwarmMailAdapter, so closing should be coordinated
|
|
374
|
-
*/
|
|
375
|
-
close(projectPath?: string): Promise<void>;
|
|
376
|
-
/**
|
|
377
|
-
* Close all database connections
|
|
378
|
-
*/
|
|
379
|
-
closeAll(): Promise<void>;
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* BeadsAdapterFactory - Function that creates a BeadsAdapter instance
|
|
383
|
-
*
|
|
384
|
-
* Adapters export a factory function with this signature.
|
|
385
|
-
*
|
|
386
|
-
* @example
|
|
387
|
-
* ```typescript
|
|
388
|
-
* import { createPGLiteBeadsAdapter } from '@opencode/swarm-mail/adapters/pglite-beads';
|
|
389
|
-
*
|
|
390
|
-
* const adapter = createPGLiteBeadsAdapter({ path: './streams.db' });
|
|
391
|
-
* ```
|
|
392
|
-
*/
|
|
393
|
-
export type BeadsAdapterFactory = (config: {
|
|
394
|
-
path?: string;
|
|
395
|
-
timeout?: number;
|
|
396
|
-
}) => BeadsAdapter;
|
|
397
|
-
//# sourceMappingURL=beads-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"beads-adapter.d.ts","sourceRoot":"","sources":["../../src/types/beads-adapter.ts"],"names":[],"mappings":"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"}
|