aifastdb-devplan 1.0.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.
@@ -0,0 +1,656 @@
1
+ /**
2
+ * DevPlanStore — 通用开发计划管理系统
3
+ *
4
+ * 以 FEDERATED_DB_DEVELOPMENT_PLAN.md 的结构为蓝本,构建跨项目通用的
5
+ * "开发计划文档管理 + 分层任务管理" 标准化能力。
6
+ *
7
+ * 特性:
8
+ * - 11 种标准文档片段类型(overview, api_design, technical_notes 等)
9
+ * - 主任务 (MainTask) + 子任务 (SubTask) 两级任务层级
10
+ * - 子任务与 Cursor TodoList 一一对应
11
+ * - 完成任务时自动更新进度和关联文档
12
+ * - 基于 EnhancedDocumentStore 的 JSONL 持久化
13
+ *
14
+ * 使用方式:
15
+ * ```typescript
16
+ * import { DevPlanStore, createDevPlan } from 'aifastdb-devplan';
17
+ *
18
+ * const plan = createDevPlan('federation-db');
19
+ * plan.saveSection({ projectName: 'federation-db', section: 'overview', ... });
20
+ * plan.createMainTask({ projectName: 'federation-db', taskId: 'phase-7', ... });
21
+ * plan.addSubTask({ projectName: 'federation-db', taskId: 'T7.1', parentTaskId: 'phase-7', ... });
22
+ * plan.completeSubTask('T7.1'); // 自动更新进度
23
+ * ```
24
+ */
25
+ /**
26
+ * 标准文档片段类型 — 从 FEDERATED_DB_DEVELOPMENT_PLAN.md 抽象的通用模板
27
+ *
28
+ * 每个项目可选择使用全部或部分章节类型。
29
+ */
30
+ export type DevPlanSection = 'overview' | 'core_concepts' | 'api_design' | 'file_structure' | 'config' | 'examples' | 'technical_notes' | 'api_endpoints' | 'milestones' | 'changelog' | 'custom';
31
+ /**
32
+ * 任务状态
33
+ */
34
+ export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
35
+ /**
36
+ * 任务优先级
37
+ */
38
+ export type TaskPriority = 'P0' | 'P1' | 'P2';
39
+ /**
40
+ * 文档片段输入
41
+ */
42
+ export interface DevPlanDocInput {
43
+ /** 项目名称 */
44
+ projectName: string;
45
+ /** 文档片段类型 */
46
+ section: DevPlanSection;
47
+ /** 文档标题 */
48
+ title: string;
49
+ /** Markdown 内容 */
50
+ content: string;
51
+ /** 文档版本 */
52
+ version?: string;
53
+ /** 子分类(用于 technical_notes 等支持多子文档的类型) */
54
+ subSection?: string;
55
+ /** 关联的其他章节 */
56
+ relatedSections?: string[];
57
+ /** 关联的功能模块 */
58
+ moduleId?: string;
59
+ }
60
+ /**
61
+ * 存储的文档片段
62
+ */
63
+ export interface DevPlanDoc {
64
+ /** 文档 ID */
65
+ id: string;
66
+ /** 项目名称 */
67
+ projectName: string;
68
+ /** 文档片段类型 */
69
+ section: DevPlanSection;
70
+ /** 文档标题 */
71
+ title: string;
72
+ /** Markdown 内容 */
73
+ content: string;
74
+ /** 文档版本 */
75
+ version: string;
76
+ /** 子分类 */
77
+ subSection?: string;
78
+ /** 关联章节 */
79
+ relatedSections?: string[];
80
+ /** 关联的功能模块 ID */
81
+ moduleId?: string;
82
+ /** 创建时间 */
83
+ createdAt: number;
84
+ /** 更新时间 */
85
+ updatedAt: number;
86
+ }
87
+ /**
88
+ * 主任务输入 — 对应一个完整的开发阶段
89
+ */
90
+ export interface MainTaskInput {
91
+ /** 项目名称 */
92
+ projectName: string;
93
+ /** 主任务标识 (如 "phase-7", "phase-14B") */
94
+ taskId: string;
95
+ /** 任务标题 (如 "阶段七:Store Trait 与适配器") */
96
+ title: string;
97
+ /** 优先级 */
98
+ priority: TaskPriority;
99
+ /** 任务描述 */
100
+ description?: string;
101
+ /** 预计工时(小时) */
102
+ estimatedHours?: number;
103
+ /** 关联的文档章节 */
104
+ relatedSections?: string[];
105
+ /** 关联的功能模块 ID */
106
+ moduleId?: string;
107
+ }
108
+ /**
109
+ * 存储的主任务
110
+ */
111
+ export interface MainTask {
112
+ /** 文档 ID */
113
+ id: string;
114
+ /** 项目名称 */
115
+ projectName: string;
116
+ /** 主任务标识 */
117
+ taskId: string;
118
+ /** 任务标题 */
119
+ title: string;
120
+ /** 优先级 */
121
+ priority: TaskPriority;
122
+ /** 任务描述 */
123
+ description?: string;
124
+ /** 预计工时 */
125
+ estimatedHours?: number;
126
+ /** 关联文档章节 */
127
+ relatedSections?: string[];
128
+ /** 关联的功能模块 ID */
129
+ moduleId?: string;
130
+ /** 子任务总数 */
131
+ totalSubtasks: number;
132
+ /** 已完成子任务数 */
133
+ completedSubtasks: number;
134
+ /** 任务状态 */
135
+ status: TaskStatus;
136
+ /** 创建时间 */
137
+ createdAt: number;
138
+ /** 更新时间 */
139
+ updatedAt: number;
140
+ /** 完成时间 */
141
+ completedAt: number | null;
142
+ }
143
+ /**
144
+ * 子任务输入 — 与 Cursor TodoList 粒度一致
145
+ */
146
+ export interface SubTaskInput {
147
+ /** 项目名称 */
148
+ projectName: string;
149
+ /** 子任务标识 (如 "T7.2", "T14.8") */
150
+ taskId: string;
151
+ /** 父主任务标识 (如 "phase-7") */
152
+ parentTaskId: string;
153
+ /** 任务标题 (如 "定义 Store Trait 和统一类型") */
154
+ title: string;
155
+ /** 预计工时(小时) */
156
+ estimatedHours?: number;
157
+ /** 涉及的代码文件 */
158
+ relatedFiles?: string[];
159
+ /** 任务描述 */
160
+ description?: string;
161
+ }
162
+ /**
163
+ * 存储的子任务
164
+ */
165
+ export interface SubTask {
166
+ /** 文档 ID */
167
+ id: string;
168
+ /** 项目名称 */
169
+ projectName: string;
170
+ /** 子任务标识 */
171
+ taskId: string;
172
+ /** 父主任务标识 */
173
+ parentTaskId: string;
174
+ /** 任务标题 */
175
+ title: string;
176
+ /** 预计工时 */
177
+ estimatedHours?: number;
178
+ /** 涉及的代码文件 */
179
+ relatedFiles?: string[];
180
+ /** 任务描述 */
181
+ description?: string;
182
+ /** 任务状态 */
183
+ status: TaskStatus;
184
+ /** 创建时间 */
185
+ createdAt: number;
186
+ /** 更新时间 */
187
+ updatedAt: number;
188
+ /** 完成时间 */
189
+ completedAt: number | null;
190
+ /** 🆕 完成时的 Git commit hash (short SHA),用于 Git 同步检查 */
191
+ completedAtCommit?: string;
192
+ /** 🆕 被自动回退的原因(当 syncWithGit 检测到 commit 不在当前分支时) */
193
+ revertReason?: string;
194
+ }
195
+ /**
196
+ * 完成子任务的返回结果
197
+ */
198
+ export interface CompleteSubTaskResult {
199
+ /** 更新后的子任务 */
200
+ subTask: SubTask;
201
+ /** 自动更新计数后的主任务 */
202
+ mainTask: MainTask;
203
+ /** 主任务是否也全部完成了 */
204
+ mainTaskCompleted: boolean;
205
+ /** 🆕 完成时锚定的 Git commit hash */
206
+ completedAtCommit?: string;
207
+ }
208
+ /**
209
+ * 🆕 devplan_sync_git 返回结果
210
+ */
211
+ export interface SyncGitResult {
212
+ /** 检查的已完成任务数 */
213
+ checked: number;
214
+ /** 被回退的任务列表 */
215
+ reverted: RevertedTask[];
216
+ /** 当前 HEAD commit */
217
+ currentHead: string;
218
+ /** 错误信息 */
219
+ error?: string;
220
+ }
221
+ /**
222
+ * 🆕 被回退的单个任务信息
223
+ */
224
+ export interface RevertedTask {
225
+ taskId: string;
226
+ title: string;
227
+ parentTaskId: string;
228
+ completedAtCommit: string;
229
+ reason: string;
230
+ }
231
+ /**
232
+ * 功能模块状态
233
+ */
234
+ export type ModuleStatus = 'planning' | 'active' | 'completed' | 'deprecated';
235
+ /**
236
+ * 功能模块输入
237
+ */
238
+ export interface ModuleInput {
239
+ /** 项目名称 */
240
+ projectName: string;
241
+ /** 模块标识 (如 "vector-store", "permission") */
242
+ moduleId: string;
243
+ /** 模块名称 (如 "向量存储模块") */
244
+ name: string;
245
+ /** 模块描述 */
246
+ description?: string;
247
+ /** 模块状态 */
248
+ status?: ModuleStatus;
249
+ }
250
+ /**
251
+ * 存储的功能模块
252
+ */
253
+ export interface Module {
254
+ /** 文档 ID */
255
+ id: string;
256
+ /** 项目名称 */
257
+ projectName: string;
258
+ /** 模块标识 */
259
+ moduleId: string;
260
+ /** 模块名称 */
261
+ name: string;
262
+ /** 模块描述 */
263
+ description?: string;
264
+ /** 模块状态 */
265
+ status: ModuleStatus;
266
+ /** 关联的主任务数(自动计算) */
267
+ mainTaskCount: number;
268
+ /** 关联的子任务总数(自动计算,跨所有主任务汇总) */
269
+ subTaskCount: number;
270
+ /** 关联的已完成子任务数(自动计算) */
271
+ completedSubTaskCount: number;
272
+ /** 关联的文档数(自动计算) */
273
+ docCount: number;
274
+ /** 创建时间 */
275
+ createdAt: number;
276
+ /** 更新时间 */
277
+ updatedAt: number;
278
+ }
279
+ /**
280
+ * 模块详情 — 包含关联的任务和文档
281
+ */
282
+ export interface ModuleDetail {
283
+ /** 模块信息 */
284
+ module: Module;
285
+ /** 关联的主任务列表 */
286
+ mainTasks: MainTask[];
287
+ /** 关联的所有子任务列表 */
288
+ subTasks: SubTask[];
289
+ /** 关联的文档列表 */
290
+ documents: DevPlanDoc[];
291
+ }
292
+ /**
293
+ * 单个主任务的进度
294
+ */
295
+ export interface MainTaskProgress {
296
+ /** 主任务标识 */
297
+ taskId: string;
298
+ /** 任务标题 */
299
+ title: string;
300
+ /** 优先级 */
301
+ priority: TaskPriority;
302
+ /** 状态 */
303
+ status: TaskStatus;
304
+ /** 总子任务数 */
305
+ total: number;
306
+ /** 已完成数 */
307
+ completed: number;
308
+ /** 进度百分比 (0-100) */
309
+ percent: number;
310
+ }
311
+ /**
312
+ * 项目整体进度
313
+ */
314
+ export interface ProjectProgress {
315
+ /** 项目名称 */
316
+ projectName: string;
317
+ /** 文档片段数 */
318
+ sectionCount: number;
319
+ /** 主任务总数 */
320
+ mainTaskCount: number;
321
+ /** 已完成主任务数 */
322
+ completedMainTasks: number;
323
+ /** 子任务总数 */
324
+ subTaskCount: number;
325
+ /** 已完成子任务数 */
326
+ completedSubTasks: number;
327
+ /** 总体进度百分比 (0-100) */
328
+ overallPercent: number;
329
+ /** 各主任务进度 */
330
+ tasks: MainTaskProgress[];
331
+ }
332
+ /**
333
+ * DevPlanStore 配置
334
+ */
335
+ export interface DevPlanStoreConfig {
336
+ /** 文档片段存储路径 */
337
+ documentPath: string;
338
+ /** 任务存储路径 */
339
+ taskPath: string;
340
+ /** 功能模块存储路径 */
341
+ modulePath: string;
342
+ }
343
+ /**
344
+ * 通用开发计划存储
345
+ *
346
+ * 管理项目的开发计划文档和任务,使用两个 EnhancedDocumentStore 实例:
347
+ * - docStore: 文档片段 (Markdown 内容)
348
+ * - taskStore: 任务 (主任务 + 子任务层级)
349
+ */
350
+ export declare class DevPlanStore {
351
+ private docStore;
352
+ private taskStore;
353
+ private moduleStore;
354
+ private projectName;
355
+ constructor(projectName: string, config: DevPlanStoreConfig);
356
+ /**
357
+ * 保存文档片段
358
+ *
359
+ * 如果同 section(+subSection)已存在,会覆盖旧版本。
360
+ */
361
+ saveSection(input: DevPlanDocInput): string;
362
+ /**
363
+ * 获取文档片段
364
+ */
365
+ getSection(section: DevPlanSection, subSection?: string): DevPlanDoc | null;
366
+ /**
367
+ * 列出项目的所有文档片段
368
+ *
369
+ * 对同一 section(+subSection) 的多个历史版本做去重,仅保留最新版。
370
+ */
371
+ listSections(): DevPlanDoc[];
372
+ /**
373
+ * 更新文档片段内容
374
+ */
375
+ updateSection(section: DevPlanSection, content: string, subSection?: string): string;
376
+ /**
377
+ * 搜索文档片段
378
+ *
379
+ * 先对历史版本去重(同 listSections),再做关键词过滤。
380
+ */
381
+ searchSections(query: string, limit?: number): DevPlanDoc[];
382
+ /**
383
+ * 删除文档片段
384
+ */
385
+ deleteSection(section: DevPlanSection, subSection?: string): boolean;
386
+ /**
387
+ * 创建主任务(开发阶段)
388
+ */
389
+ createMainTask(input: MainTaskInput): MainTask;
390
+ /**
391
+ * 幂等导入主任务(Upsert)
392
+ *
393
+ * - 如果主任务不存在 → 创建新任务
394
+ * - 如果主任务已存在 → 更新标题/描述/优先级等字段,但保留已有的更高级状态
395
+ * (例如已完成的任务不会被重置为 pending)
396
+ * - updatedAt 保证严格递增,不会与历史版本重复
397
+ *
398
+ * @param input 主任务输入
399
+ * @param options.preserveStatus 若为 true(默认),则不覆盖已完成的状态
400
+ * @param options.status 导入时的目标状态(默认 pending)
401
+ * @returns 创建或更新后的主任务
402
+ */
403
+ upsertMainTask(input: MainTaskInput, options?: {
404
+ preserveStatus?: boolean;
405
+ status?: TaskStatus;
406
+ }): MainTask;
407
+ /**
408
+ * 获取主任务
409
+ *
410
+ * 由于 JSONL append-only 存储会保留历史版本,
411
+ * 需要按 metadata.updatedAt 降序取最新版本。
412
+ */
413
+ getMainTask(taskId: string): MainTask | null;
414
+ /**
415
+ * 列出主任务
416
+ *
417
+ * 对同一 taskId 的多个历史版本做去重,仅保留最新版。
418
+ */
419
+ listMainTasks(filter?: {
420
+ status?: TaskStatus;
421
+ priority?: TaskPriority;
422
+ moduleId?: string;
423
+ }): MainTask[];
424
+ /**
425
+ * 更新主任务状态
426
+ */
427
+ updateMainTaskStatus(taskId: string, status: TaskStatus): MainTask | null;
428
+ /**
429
+ * 添加子任务
430
+ */
431
+ addSubTask(input: SubTaskInput): SubTask;
432
+ /**
433
+ * 幂等导入子任务(Upsert)
434
+ *
435
+ * - 如果子任务不存在 → 创建新子任务
436
+ * - 如果子任务已存在 → 更新标题/描述等字段,但保留已有的更高级状态
437
+ * (例如已完成的任务不会被重置为 pending)
438
+ * - updatedAt 保证严格递增,不会与历史版本重复
439
+ *
440
+ * @param input 子任务输入
441
+ * @param options.preserveStatus 若为 true(默认),则不覆盖已完成的状态
442
+ * @param options.status 导入时的目标状态(默认 pending)
443
+ * @returns 创建或更新后的子任务
444
+ */
445
+ upsertSubTask(input: SubTaskInput, options?: {
446
+ preserveStatus?: boolean;
447
+ status?: TaskStatus;
448
+ }): SubTask;
449
+ /**
450
+ * 获取子任务
451
+ *
452
+ * 取同一 taskId 的最新版本(以 metadata.updatedAt 判定)。
453
+ */
454
+ getSubTask(taskId: string): SubTask | null;
455
+ /**
456
+ * 列出某主任务下的所有子任务
457
+ *
458
+ * 对同一 taskId 的多个历史版本做去重,仅保留最新版。
459
+ */
460
+ listSubTasks(parentTaskId: string, filter?: {
461
+ status?: TaskStatus;
462
+ }): SubTask[];
463
+ /**
464
+ * 更新子任务状态
465
+ *
466
+ * @param options.completedAtCommit - 完成时的 Git commit hash(仅 status=completed 时有效)
467
+ * @param options.revertReason - 回退原因(仅 status 从 completed 变为 pending 时有效)
468
+ */
469
+ updateSubTaskStatus(taskId: string, status: TaskStatus, options?: {
470
+ completedAtCommit?: string;
471
+ revertReason?: string;
472
+ }): SubTask | null;
473
+ /**
474
+ * 完成子任务 — 核心自动化方法
475
+ *
476
+ * 自动处理:
477
+ * 1. 获取当前 Git HEAD 的 short SHA 用于锚定
478
+ * 2. 更新子任务状态为 completed,写入 completedAt 时间戳和 completedAtCommit
479
+ * 3. 重新计算主任务的 completedSubtasks 计数
480
+ * 4. 如果全部子任务完成,自动标记主任务为 completed
481
+ * 5. 如果主任务完成,更新 milestones 文档
482
+ */
483
+ completeSubTask(taskId: string): CompleteSubTaskResult;
484
+ /**
485
+ * 手动完成主任务(跳过子任务检查)
486
+ */
487
+ completeMainTask(taskId: string): MainTask;
488
+ /**
489
+ * 获取项目整体进度
490
+ */
491
+ getProgress(): ProjectProgress;
492
+ /**
493
+ * 导出完整的 Markdown 文档
494
+ */
495
+ exportToMarkdown(): string;
496
+ /**
497
+ * 导出仅任务进度的简洁 Markdown
498
+ */
499
+ exportTaskSummary(): string;
500
+ /**
501
+ * 创建功能模块
502
+ */
503
+ createModule(input: ModuleInput): Module;
504
+ /**
505
+ * 获取功能模块(含自动计算的 taskCount/docCount)
506
+ */
507
+ getModule(moduleId: string): Module | null;
508
+ /**
509
+ * 列出所有功能模块
510
+ */
511
+ listModules(filter?: {
512
+ status?: ModuleStatus;
513
+ }): Module[];
514
+ /**
515
+ * 更新功能模块
516
+ */
517
+ updateModule(moduleId: string, updates: {
518
+ name?: string;
519
+ description?: string;
520
+ status?: ModuleStatus;
521
+ }): Module | null;
522
+ /**
523
+ * 删除功能模块
524
+ */
525
+ deleteModule(moduleId: string): boolean;
526
+ /**
527
+ * 获取模块详情 — 包含关联的任务和文档
528
+ */
529
+ getModuleDetail(moduleId: string): ModuleDetail | null;
530
+ /**
531
+ * 将存储的更改刷到磁盘
532
+ */
533
+ sync(): void;
534
+ /**
535
+ * 获取项目名称
536
+ */
537
+ getProjectName(): string;
538
+ /**
539
+ * 获取文档的有效 updatedAt 时间戳。
540
+ *
541
+ * EnhancedDocumentStore 使用 append-only JSONL 存储,修改文档时实际上
542
+ * 是 delete 旧文档 + put 新文档。因此同一逻辑文档可能存在多个物理版本。
543
+ * 必须通过 metadata.updatedAt 来判断哪个是最新的"可用文档",
544
+ * 其余的都是"历史文档"。
545
+ *
546
+ * 优先级:metadata.updatedAt > metadata.createdAt > doc.createdAt
547
+ */
548
+ private getDocUpdatedAt;
549
+ /**
550
+ * 确保当前时间戳严格大于参考时间戳。
551
+ *
552
+ * EnhancedDocumentStore 使用 append-only JSONL 存储,保留所有历史版本。
553
+ * 版本选择通过 metadata.updatedAt 判定最新文档。
554
+ * 如果 delete+put 发生在同一毫秒内,新旧版本的 updatedAt 相同,
555
+ * 会导致去重时可能选中旧版本(如 pending 状态),造成状态丢失。
556
+ *
557
+ * 本方法在 delete 之后、put 之前调用,自旋等待直到时间戳前进,
558
+ * 从而保证新版本的 updatedAt 一定大于旧版本。
559
+ */
560
+ private ensureTimestampAfter;
561
+ /**
562
+ * 删除文档并确保后续 put 的 updatedAt 严格大于被删文档。
563
+ *
564
+ * 使用 metadata.updatedAt 作为参考时间戳(而非 doc.createdAt),
565
+ * 因为版本选择是基于 metadata.updatedAt 进行的。
566
+ */
567
+ private deleteAndEnsureTimestampAdvance;
568
+ /**
569
+ * 对同一 taskId 的多个历史版本做去重,仅保留最新版(metadata.updatedAt 最大)。
570
+ *
571
+ * 由于 EnhancedDocumentStore 使用 append-only JSONL 存储,
572
+ * delete+put 操作会在文件中保留历史版本。重新加载时所有版本都会出现,
573
+ * 因此需要在查询层面进行去重。
574
+ *
575
+ * 使用 metadata.updatedAt(而非 doc.createdAt)作为版本判定依据,
576
+ * 确保"最近更新时间"的文档才是可用文档,其余为历史文档。
577
+ */
578
+ private deduplicateByTaskId;
579
+ private docToDevPlanDoc;
580
+ private docToMainTask;
581
+ private docToModule;
582
+ private docToSubTask;
583
+ /**
584
+ * 刷新主任务的子任务计数
585
+ */
586
+ private refreshMainTaskCounts;
587
+ /**
588
+ * 当主任务完成时自动更新 milestones 文档
589
+ */
590
+ private autoUpdateMilestones;
591
+ /**
592
+ * 🆕 获取当前 Git HEAD 的 short SHA
593
+ *
594
+ * 在非 Git 仓库或 Git 不可用时返回 undefined,不阻断正常流程。
595
+ */
596
+ private getCurrentGitCommit;
597
+ /**
598
+ * 🆕 检查 commit 是否是 target 的祖先
599
+ *
600
+ * 使用 `git merge-base --is-ancestor` 命令。
601
+ * 如果 commit 不存在或不可达,返回 false(视为需要回退)。
602
+ */
603
+ private isAncestor;
604
+ /**
605
+ * 🆕 回退子任务状态
606
+ *
607
+ * 将已完成的子任务回退为 pending,记录回退原因,
608
+ * 清空 completedAtCommit 和 completedAt。
609
+ * 同时刷新父主任务的计数。
610
+ */
611
+ private revertSubTask;
612
+ /**
613
+ * 🆕 同步检查所有已完成任务与 Git 历史的一致性
614
+ *
615
+ * 对每个 status=completed 且有 completedAtCommit 的子任务:
616
+ * 1. 检查 completedAtCommit 是否是当前 HEAD 的祖先
617
+ * 2. 如果不是(说明 Git 发生了回滚),回退任务状态为 pending
618
+ * 3. 记录 revertReason
619
+ *
620
+ * @param dryRun 如果为 true,只返回哪些任务会被回退,不实际修改数据
621
+ * @returns 同步结果,包含被回退的任务列表
622
+ */
623
+ syncWithGit(dryRun?: boolean): SyncGitResult;
624
+ /**
625
+ * 生成文本进度条
626
+ */
627
+ private progressBar;
628
+ }
629
+ /**
630
+ * 为项目创建 DevPlanStore
631
+ *
632
+ * @param projectName - 项目名称
633
+ * @param basePath - 存储基础路径(默认优先使用项目内 .devplan/,回退到 ~/.aifastdb/dev-plans/)
634
+ *
635
+ * 存储路径解析优先级:
636
+ * 1. 显式 basePath 参数
637
+ * 2. AIFASTDB_DEVPLAN_PATH 环境变量
638
+ * 3. 项目根目录/.devplan/(通过 .git 或 package.json 定位)
639
+ * 4. ~/.aifastdb/dev-plans/(兜底)
640
+ *
641
+ * 最终路径:{basePath}/{projectName}/documents.jsonl + tasks.jsonl
642
+ */
643
+ export declare function createDevPlan(projectName: string, basePath?: string): DevPlanStore;
644
+ /**
645
+ * 列出所有已有的 DevPlan 项目
646
+ */
647
+ export declare function listDevPlans(basePath?: string): string[];
648
+ /**
649
+ * 所有标准章节类型列表
650
+ */
651
+ export declare const ALL_SECTIONS: DevPlanSection[];
652
+ /**
653
+ * 标准章节说明
654
+ */
655
+ export declare const SECTION_DESCRIPTIONS: Record<DevPlanSection, string>;
656
+ //# sourceMappingURL=dev-plan-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-plan-store.d.ts","sourceRoot":"","sources":["../src/dev-plan-store.ts"],"names":[],"mappings":"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"}