aifastdb-devplan 1.0.0 → 1.0.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/README.md +391 -40
- package/dist/dev-plan-document-store.d.ts +309 -0
- package/dist/dev-plan-document-store.d.ts.map +1 -0
- package/dist/dev-plan-document-store.js +1543 -0
- package/dist/dev-plan-document-store.js.map +1 -0
- package/dist/dev-plan-factory.d.ts +49 -0
- package/dist/dev-plan-factory.d.ts.map +1 -0
- package/dist/dev-plan-factory.js +218 -0
- package/dist/dev-plan-factory.js.map +1 -0
- package/dist/dev-plan-graph-store.d.ts +114 -0
- package/dist/dev-plan-graph-store.d.ts.map +1 -0
- package/dist/dev-plan-graph-store.js +1073 -0
- package/dist/dev-plan-graph-store.js.map +1 -0
- package/dist/dev-plan-interface.d.ts +165 -0
- package/dist/dev-plan-interface.d.ts.map +1 -0
- package/dist/dev-plan-interface.js +10 -0
- package/dist/dev-plan-interface.js.map +1 -0
- package/dist/dev-plan-migrate.d.ts +52 -0
- package/dist/dev-plan-migrate.d.ts.map +1 -0
- package/dist/dev-plan-migrate.js +407 -0
- package/dist/dev-plan-migrate.js.map +1 -0
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -10
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/index.js +225 -92
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/types.d.ts +375 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/visualize/server.d.ts +18 -0
- package/dist/visualize/server.d.ts.map +1 -0
- package/dist/visualize/server.js +229 -0
- package/dist/visualize/server.js.map +1 -0
- package/dist/visualize/template.d.ts +8 -0
- package/dist/visualize/template.d.ts.map +1 -0
- package/dist/visualize/template.js +528 -0
- package/dist/visualize/template.js.map +1 -0
- package/package.json +14 -4
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DevPlan 引擎迁移工具
|
|
4
|
+
*
|
|
5
|
+
* 在 document(EnhancedDocumentStore)和 graph(SocialGraphV2)引擎之间迁移数据。
|
|
6
|
+
*
|
|
7
|
+
* 迁移流程:
|
|
8
|
+
* 1. 从源引擎读取所有数据(模块 → 文档 → 主任务 → 子任务)
|
|
9
|
+
* 2. 按正确顺序写入目标引擎(先模块,再文档,再主任务,最后子任务)
|
|
10
|
+
* 3. 备份旧数据(可选)
|
|
11
|
+
* 4. 更新 engine.json 为目标引擎
|
|
12
|
+
*
|
|
13
|
+
* 使用方式(MCP 工具):
|
|
14
|
+
* devplan_migrate_engine { projectName: "federation-db", targetEngine: "graph" }
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.migrateEngine = migrateEngine;
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const dev_plan_document_store_1 = require("./dev-plan-document-store");
|
|
54
|
+
const dev_plan_graph_store_1 = require("./dev-plan-graph-store");
|
|
55
|
+
const dev_plan_factory_1 = require("./dev-plan-factory");
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Migration Core
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* 将项目数据从一个引擎迁移到另一个引擎
|
|
61
|
+
*
|
|
62
|
+
* @param projectName - 项目名称
|
|
63
|
+
* @param targetEngine - 目标引擎类型
|
|
64
|
+
* @param basePath - 存储基础路径(默认自动解析)
|
|
65
|
+
* @param options - 迁移选项
|
|
66
|
+
*/
|
|
67
|
+
function migrateEngine(projectName, targetEngine, basePath, options) {
|
|
68
|
+
const startTime = Date.now();
|
|
69
|
+
const base = basePath || (0, dev_plan_factory_1.getDefaultBasePath)();
|
|
70
|
+
const backup = options?.backup !== false;
|
|
71
|
+
const dryRun = options?.dryRun || false;
|
|
72
|
+
const errors = [];
|
|
73
|
+
const stats = { modules: 0, documents: 0, mainTasks: 0, subTasks: 0 };
|
|
74
|
+
// 检测当前引擎
|
|
75
|
+
const currentEngine = detectCurrentEngine(projectName, base);
|
|
76
|
+
if (!currentEngine) {
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
projectName,
|
|
80
|
+
fromEngine: 'document',
|
|
81
|
+
toEngine: targetEngine,
|
|
82
|
+
stats,
|
|
83
|
+
errors: [`Project "${projectName}" not found at ${base}`],
|
|
84
|
+
durationMs: Date.now() - startTime,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (currentEngine === targetEngine) {
|
|
88
|
+
return {
|
|
89
|
+
success: true,
|
|
90
|
+
projectName,
|
|
91
|
+
fromEngine: currentEngine,
|
|
92
|
+
toEngine: targetEngine,
|
|
93
|
+
stats,
|
|
94
|
+
errors: [],
|
|
95
|
+
durationMs: Date.now() - startTime,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// 创建源引擎实例
|
|
99
|
+
const source = createStoreInstance(projectName, currentEngine, base);
|
|
100
|
+
if (!source) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
projectName,
|
|
104
|
+
fromEngine: currentEngine,
|
|
105
|
+
toEngine: targetEngine,
|
|
106
|
+
stats,
|
|
107
|
+
errors: [`Failed to create source store for engine "${currentEngine}"`],
|
|
108
|
+
durationMs: Date.now() - startTime,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// ========== 第一步:从源引擎读取所有数据 ==========
|
|
112
|
+
// 读取模块
|
|
113
|
+
let modules = [];
|
|
114
|
+
try {
|
|
115
|
+
modules = source.listModules();
|
|
116
|
+
stats.modules = modules.length;
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
errors.push(`Failed to read modules: ${e instanceof Error ? e.message : String(e)}`);
|
|
120
|
+
}
|
|
121
|
+
// 读取文档
|
|
122
|
+
let documents = [];
|
|
123
|
+
try {
|
|
124
|
+
documents = source.listSections();
|
|
125
|
+
stats.documents = documents.length;
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
errors.push(`Failed to read documents: ${e instanceof Error ? e.message : String(e)}`);
|
|
129
|
+
}
|
|
130
|
+
// 读取主任务
|
|
131
|
+
let mainTasks = [];
|
|
132
|
+
try {
|
|
133
|
+
mainTasks = source.listMainTasks();
|
|
134
|
+
stats.mainTasks = mainTasks.length;
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
errors.push(`Failed to read main tasks: ${e instanceof Error ? e.message : String(e)}`);
|
|
138
|
+
}
|
|
139
|
+
// 读取子任务(按主任务分组)
|
|
140
|
+
const subTasksByParent = new Map();
|
|
141
|
+
for (const mt of mainTasks) {
|
|
142
|
+
try {
|
|
143
|
+
const subs = source.listSubTasks(mt.taskId);
|
|
144
|
+
subTasksByParent.set(mt.taskId, subs);
|
|
145
|
+
stats.subTasks += subs.length;
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
errors.push(`Failed to read sub-tasks for ${mt.taskId}: ${e instanceof Error ? e.message : String(e)}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (dryRun) {
|
|
152
|
+
return {
|
|
153
|
+
success: errors.length === 0,
|
|
154
|
+
projectName,
|
|
155
|
+
fromEngine: currentEngine,
|
|
156
|
+
toEngine: targetEngine,
|
|
157
|
+
stats,
|
|
158
|
+
errors,
|
|
159
|
+
durationMs: Date.now() - startTime,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// ========== 第二步:备份旧数据 ==========
|
|
163
|
+
let backupPath;
|
|
164
|
+
if (backup) {
|
|
165
|
+
try {
|
|
166
|
+
backupPath = backupProjectData(projectName, base, currentEngine);
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
errors.push(`Backup failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
170
|
+
// 备份失败不中断迁移,但记录错误
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// ========== 第三步:创建目标引擎实例并写入数据 ==========
|
|
174
|
+
const target = createStoreInstance(projectName, targetEngine, base);
|
|
175
|
+
if (!target) {
|
|
176
|
+
return {
|
|
177
|
+
success: false,
|
|
178
|
+
projectName,
|
|
179
|
+
fromEngine: currentEngine,
|
|
180
|
+
toEngine: targetEngine,
|
|
181
|
+
stats,
|
|
182
|
+
backupPath,
|
|
183
|
+
errors: [...errors, `Failed to create target store for engine "${targetEngine}"`],
|
|
184
|
+
durationMs: Date.now() - startTime,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// 写入模块(最先写入,因为文档和任务可能引用模块)
|
|
188
|
+
for (const mod of modules) {
|
|
189
|
+
try {
|
|
190
|
+
target.createModule({
|
|
191
|
+
projectName,
|
|
192
|
+
moduleId: mod.moduleId,
|
|
193
|
+
name: mod.name,
|
|
194
|
+
description: mod.description,
|
|
195
|
+
status: mod.status,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (e) {
|
|
199
|
+
errors.push(`Failed to migrate module "${mod.moduleId}": ${e instanceof Error ? e.message : String(e)}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// 写入文档
|
|
203
|
+
for (const doc of documents) {
|
|
204
|
+
try {
|
|
205
|
+
target.saveSection({
|
|
206
|
+
projectName,
|
|
207
|
+
section: doc.section,
|
|
208
|
+
title: doc.title,
|
|
209
|
+
content: doc.content,
|
|
210
|
+
version: doc.version,
|
|
211
|
+
subSection: doc.subSection,
|
|
212
|
+
relatedSections: doc.relatedSections,
|
|
213
|
+
moduleId: doc.moduleId,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
catch (e) {
|
|
217
|
+
errors.push(`Failed to migrate document "${doc.section}${doc.subSection ? '/' + doc.subSection : ''}": ${e instanceof Error ? e.message : String(e)}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// 写入主任务
|
|
221
|
+
for (const mt of mainTasks) {
|
|
222
|
+
try {
|
|
223
|
+
target.upsertMainTask({
|
|
224
|
+
projectName,
|
|
225
|
+
taskId: mt.taskId,
|
|
226
|
+
title: mt.title,
|
|
227
|
+
priority: mt.priority,
|
|
228
|
+
description: mt.description,
|
|
229
|
+
estimatedHours: mt.estimatedHours,
|
|
230
|
+
relatedSections: mt.relatedSections,
|
|
231
|
+
moduleId: mt.moduleId,
|
|
232
|
+
}, { preserveStatus: false, status: mt.status });
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
errors.push(`Failed to migrate main task "${mt.taskId}": ${e instanceof Error ? e.message : String(e)}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// 写入子任务
|
|
239
|
+
for (const mt of mainTasks) {
|
|
240
|
+
const subs = subTasksByParent.get(mt.taskId) || [];
|
|
241
|
+
for (const sub of subs) {
|
|
242
|
+
try {
|
|
243
|
+
target.upsertSubTask({
|
|
244
|
+
projectName,
|
|
245
|
+
taskId: sub.taskId,
|
|
246
|
+
parentTaskId: sub.parentTaskId,
|
|
247
|
+
title: sub.title,
|
|
248
|
+
estimatedHours: sub.estimatedHours,
|
|
249
|
+
relatedFiles: sub.relatedFiles,
|
|
250
|
+
description: sub.description,
|
|
251
|
+
}, { preserveStatus: false, status: sub.status });
|
|
252
|
+
// 如果子任务有 commit 锚定,需要单独设置
|
|
253
|
+
if (sub.completedAtCommit && sub.status === 'completed') {
|
|
254
|
+
target.updateSubTaskStatus(sub.taskId, 'completed', {
|
|
255
|
+
completedAtCommit: sub.completedAtCommit,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (e) {
|
|
260
|
+
errors.push(`Failed to migrate sub-task "${sub.taskId}": ${e instanceof Error ? e.message : String(e)}`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// 同步确保数据落盘
|
|
265
|
+
try {
|
|
266
|
+
target.sync();
|
|
267
|
+
}
|
|
268
|
+
catch (e) {
|
|
269
|
+
// sync is best-effort
|
|
270
|
+
}
|
|
271
|
+
// ========== 第四步:更新 engine.json ==========
|
|
272
|
+
try {
|
|
273
|
+
writeEngineConfig(projectName, base, targetEngine);
|
|
274
|
+
}
|
|
275
|
+
catch (e) {
|
|
276
|
+
errors.push(`Failed to update engine.json: ${e instanceof Error ? e.message : String(e)}`);
|
|
277
|
+
}
|
|
278
|
+
return {
|
|
279
|
+
success: errors.length === 0,
|
|
280
|
+
projectName,
|
|
281
|
+
fromEngine: currentEngine,
|
|
282
|
+
toEngine: targetEngine,
|
|
283
|
+
stats,
|
|
284
|
+
backupPath,
|
|
285
|
+
errors,
|
|
286
|
+
durationMs: Date.now() - startTime,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
// ============================================================================
|
|
290
|
+
// Helpers
|
|
291
|
+
// ============================================================================
|
|
292
|
+
/**
|
|
293
|
+
* 检测项目当前使用的引擎类型
|
|
294
|
+
*/
|
|
295
|
+
function detectCurrentEngine(projectName, basePath) {
|
|
296
|
+
const projectDir = path.join(basePath, projectName);
|
|
297
|
+
if (!fs.existsSync(projectDir))
|
|
298
|
+
return null;
|
|
299
|
+
// 优先读取 engine.json
|
|
300
|
+
const configPath = path.join(projectDir, 'engine.json');
|
|
301
|
+
if (fs.existsSync(configPath)) {
|
|
302
|
+
try {
|
|
303
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
304
|
+
if (config.engine === 'graph' || config.engine === 'document') {
|
|
305
|
+
return config.engine;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
// ignore parse error
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// 检测 JSONL 文件 → document 引擎
|
|
313
|
+
if (fs.existsSync(path.join(projectDir, 'documents.jsonl')) ||
|
|
314
|
+
fs.existsSync(path.join(projectDir, 'tasks.jsonl'))) {
|
|
315
|
+
return 'document';
|
|
316
|
+
}
|
|
317
|
+
// 检测 graph-data 目录 → graph 引擎
|
|
318
|
+
if (fs.existsSync(path.join(projectDir, 'graph-data'))) {
|
|
319
|
+
return 'graph';
|
|
320
|
+
}
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* 创建存储实例
|
|
325
|
+
*/
|
|
326
|
+
function createStoreInstance(projectName, engine, basePath) {
|
|
327
|
+
try {
|
|
328
|
+
if (engine === 'graph') {
|
|
329
|
+
return new dev_plan_graph_store_1.DevPlanGraphStore(projectName, {
|
|
330
|
+
graphPath: path.join(basePath, projectName, 'graph-data'),
|
|
331
|
+
shardCount: 4,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
return new dev_plan_document_store_1.DevPlanDocumentStore(projectName, {
|
|
336
|
+
documentPath: path.join(basePath, projectName, 'documents.jsonl'),
|
|
337
|
+
taskPath: path.join(basePath, projectName, 'tasks.jsonl'),
|
|
338
|
+
modulePath: path.join(basePath, projectName, 'modules.jsonl'),
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* 备份项目数据
|
|
348
|
+
*/
|
|
349
|
+
function backupProjectData(projectName, basePath, engine) {
|
|
350
|
+
const projectDir = path.join(basePath, projectName);
|
|
351
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
352
|
+
const backupDir = path.join(basePath, projectName, `_backup_${engine}_${timestamp}`);
|
|
353
|
+
fs.mkdirSync(backupDir, { recursive: true });
|
|
354
|
+
if (engine === 'document') {
|
|
355
|
+
// 备份 JSONL 文件
|
|
356
|
+
const files = ['documents.jsonl', 'tasks.jsonl', 'modules.jsonl'];
|
|
357
|
+
for (const file of files) {
|
|
358
|
+
const src = path.join(projectDir, file);
|
|
359
|
+
if (fs.existsSync(src)) {
|
|
360
|
+
fs.copyFileSync(src, path.join(backupDir, file));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
else if (engine === 'graph') {
|
|
365
|
+
// 备份 graph-data 目录
|
|
366
|
+
const graphDir = path.join(projectDir, 'graph-data');
|
|
367
|
+
if (fs.existsSync(graphDir)) {
|
|
368
|
+
copyDirSync(graphDir, path.join(backupDir, 'graph-data'));
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
// 备份 engine.json
|
|
372
|
+
const engineJson = path.join(projectDir, 'engine.json');
|
|
373
|
+
if (fs.existsSync(engineJson)) {
|
|
374
|
+
fs.copyFileSync(engineJson, path.join(backupDir, 'engine.json'));
|
|
375
|
+
}
|
|
376
|
+
return backupDir;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* 递归复制目录
|
|
380
|
+
*/
|
|
381
|
+
function copyDirSync(src, dest) {
|
|
382
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
383
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
384
|
+
for (const entry of entries) {
|
|
385
|
+
const srcPath = path.join(src, entry.name);
|
|
386
|
+
const destPath = path.join(dest, entry.name);
|
|
387
|
+
if (entry.isDirectory()) {
|
|
388
|
+
copyDirSync(srcPath, destPath);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
fs.copyFileSync(srcPath, destPath);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* 写入 engine.json
|
|
397
|
+
*/
|
|
398
|
+
function writeEngineConfig(projectName, basePath, engine) {
|
|
399
|
+
const projectDir = path.join(basePath, projectName);
|
|
400
|
+
if (!fs.existsSync(projectDir)) {
|
|
401
|
+
fs.mkdirSync(projectDir, { recursive: true });
|
|
402
|
+
}
|
|
403
|
+
const configPath = path.join(projectDir, 'engine.json');
|
|
404
|
+
const config = { engine, version: '1.0.0' };
|
|
405
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=dev-plan-migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-plan-migrate.js","sourceRoot":"","sources":["../src/dev-plan-migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* aifastdb-devplan — AI-powered development plan management
|
|
3
3
|
*
|
|
4
4
|
* 使用 aifastdb 作为存储引擎的通用开发计划管理系统。
|
|
5
|
-
*
|
|
5
|
+
* 支持双引擎:SocialGraphV2(图结构,默认)和 EnhancedDocumentStore(文档存储)。
|
|
6
6
|
*
|
|
7
7
|
* MCP Server 使用方式:
|
|
8
8
|
* ```json
|
|
@@ -18,13 +18,30 @@
|
|
|
18
18
|
*
|
|
19
19
|
* 编程使用方式:
|
|
20
20
|
* ```typescript
|
|
21
|
-
* import {
|
|
21
|
+
* import { createDevPlan, type IDevPlanStore } from 'aifastdb-devplan';
|
|
22
22
|
*
|
|
23
|
+
* // 使用默认引擎(graph)
|
|
23
24
|
* const plan = createDevPlan('my-project');
|
|
25
|
+
*
|
|
26
|
+
* // 使用指定引擎
|
|
27
|
+
* const graphPlan = createDevPlan('my-project', undefined, 'graph');
|
|
28
|
+
* const docPlan = createDevPlan('my-project', undefined, 'document');
|
|
29
|
+
*
|
|
24
30
|
* plan.createMainTask({ projectName: 'my-project', taskId: 'phase-1', title: '阶段一', priority: 'P0' });
|
|
25
31
|
* plan.addSubTask({ projectName: 'my-project', taskId: 'T1.1', parentTaskId: 'phase-1', title: '初始化' });
|
|
26
32
|
* plan.completeSubTask('T1.1');
|
|
33
|
+
*
|
|
34
|
+
* // 图引擎专属:导出图结构用于可视化
|
|
35
|
+
* if (plan.exportGraph) {
|
|
36
|
+
* const graph = plan.exportGraph();
|
|
37
|
+
* // graph.nodes, graph.edges — 兼容 vis-network
|
|
38
|
+
* }
|
|
27
39
|
* ```
|
|
28
40
|
*/
|
|
29
|
-
export
|
|
41
|
+
export type { IDevPlanStore } from './dev-plan-interface';
|
|
42
|
+
export { ALL_SECTIONS, SECTION_DESCRIPTIONS, type DevPlanSection, type TaskStatus, type TaskPriority, type DevPlanDocInput, type DevPlanDoc, type MainTaskInput, type MainTask, type SubTaskInput, type SubTask, type CompleteSubTaskResult, type MainTaskProgress, type ProjectProgress, type DevPlanStoreConfig, type SyncGitResult, type RevertedTask, type ModuleStatus, type ModuleInput, type Module, type ModuleDetail, type DevPlanGraphStoreConfig, type DevPlanGraphNode, type DevPlanGraphEdge, type DevPlanExportedGraph, } from './types';
|
|
43
|
+
export { DevPlanDocumentStore } from './dev-plan-document-store';
|
|
44
|
+
export { DevPlanGraphStore } from './dev-plan-graph-store';
|
|
45
|
+
export { createDevPlan, listDevPlans, getDefaultBasePath, getProjectEngine, type DevPlanEngine, } from './dev-plan-factory';
|
|
46
|
+
export { migrateEngine, type MigrateResult, type MigrateOptions, } from './dev-plan-migrate';
|
|
30
47
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* aifastdb-devplan — AI-powered development plan management
|
|
4
4
|
*
|
|
5
5
|
* 使用 aifastdb 作为存储引擎的通用开发计划管理系统。
|
|
6
|
-
*
|
|
6
|
+
* 支持双引擎:SocialGraphV2(图结构,默认)和 EnhancedDocumentStore(文档存储)。
|
|
7
7
|
*
|
|
8
8
|
* MCP Server 使用方式:
|
|
9
9
|
* ```json
|
|
@@ -19,21 +19,43 @@
|
|
|
19
19
|
*
|
|
20
20
|
* 编程使用方式:
|
|
21
21
|
* ```typescript
|
|
22
|
-
* import {
|
|
22
|
+
* import { createDevPlan, type IDevPlanStore } from 'aifastdb-devplan';
|
|
23
23
|
*
|
|
24
|
+
* // 使用默认引擎(graph)
|
|
24
25
|
* const plan = createDevPlan('my-project');
|
|
26
|
+
*
|
|
27
|
+
* // 使用指定引擎
|
|
28
|
+
* const graphPlan = createDevPlan('my-project', undefined, 'graph');
|
|
29
|
+
* const docPlan = createDevPlan('my-project', undefined, 'document');
|
|
30
|
+
*
|
|
25
31
|
* plan.createMainTask({ projectName: 'my-project', taskId: 'phase-1', title: '阶段一', priority: 'P0' });
|
|
26
32
|
* plan.addSubTask({ projectName: 'my-project', taskId: 'T1.1', parentTaskId: 'phase-1', title: '初始化' });
|
|
27
33
|
* plan.completeSubTask('T1.1');
|
|
34
|
+
*
|
|
35
|
+
* // 图引擎专属:导出图结构用于可视化
|
|
36
|
+
* if (plan.exportGraph) {
|
|
37
|
+
* const graph = plan.exportGraph();
|
|
38
|
+
* // graph.nodes, graph.edges — 兼容 vis-network
|
|
39
|
+
* }
|
|
28
40
|
* ```
|
|
29
41
|
*/
|
|
30
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Object.defineProperty(exports, "
|
|
38
|
-
|
|
43
|
+
exports.migrateEngine = exports.getProjectEngine = exports.getDefaultBasePath = exports.listDevPlans = exports.createDevPlan = exports.DevPlanGraphStore = exports.DevPlanDocumentStore = exports.SECTION_DESCRIPTIONS = exports.ALL_SECTIONS = void 0;
|
|
44
|
+
var types_1 = require("./types");
|
|
45
|
+
Object.defineProperty(exports, "ALL_SECTIONS", { enumerable: true, get: function () { return types_1.ALL_SECTIONS; } });
|
|
46
|
+
Object.defineProperty(exports, "SECTION_DESCRIPTIONS", { enumerable: true, get: function () { return types_1.SECTION_DESCRIPTIONS; } });
|
|
47
|
+
// Store Implementations
|
|
48
|
+
var dev_plan_document_store_1 = require("./dev-plan-document-store");
|
|
49
|
+
Object.defineProperty(exports, "DevPlanDocumentStore", { enumerable: true, get: function () { return dev_plan_document_store_1.DevPlanDocumentStore; } });
|
|
50
|
+
var dev_plan_graph_store_1 = require("./dev-plan-graph-store");
|
|
51
|
+
Object.defineProperty(exports, "DevPlanGraphStore", { enumerable: true, get: function () { return dev_plan_graph_store_1.DevPlanGraphStore; } });
|
|
52
|
+
// Factory & Engine Selection
|
|
53
|
+
var dev_plan_factory_1 = require("./dev-plan-factory");
|
|
54
|
+
Object.defineProperty(exports, "createDevPlan", { enumerable: true, get: function () { return dev_plan_factory_1.createDevPlan; } });
|
|
55
|
+
Object.defineProperty(exports, "listDevPlans", { enumerable: true, get: function () { return dev_plan_factory_1.listDevPlans; } });
|
|
56
|
+
Object.defineProperty(exports, "getDefaultBasePath", { enumerable: true, get: function () { return dev_plan_factory_1.getDefaultBasePath; } });
|
|
57
|
+
Object.defineProperty(exports, "getProjectEngine", { enumerable: true, get: function () { return dev_plan_factory_1.getProjectEngine; } });
|
|
58
|
+
// Migration
|
|
59
|
+
var dev_plan_migrate_1 = require("./dev-plan-migrate");
|
|
60
|
+
Object.defineProperty(exports, "migrateEngine", { enumerable: true, get: function () { return dev_plan_migrate_1.migrateEngine; } });
|
|
39
61
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;;;AAIH,iCA0BiB;AAzBf,qGAAA,YAAY,OAAA;AACZ,6GAAA,oBAAoB,OAAA;AA0BtB,wBAAwB;AACxB,qEAAiE;AAAxD,+HAAA,oBAAoB,OAAA;AAC7B,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAE1B,6BAA6B;AAC7B,uDAM4B;AAL1B,iHAAA,aAAa,OAAA;AACb,gHAAA,YAAY,OAAA;AACZ,sHAAA,kBAAkB,OAAA;AAClB,oHAAA,gBAAgB,OAAA;AAIlB,YAAY;AACZ,uDAI4B;AAH1B,iHAAA,aAAa,OAAA"}
|