@geeseeker/easyai-dev 3.0.6 → 3.0.7

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/lib/init.js CHANGED
@@ -9,6 +9,7 @@
9
9
 
10
10
  import * as fs from "node:fs";
11
11
  import * as path from "node:path";
12
+ import * as crypto from "node:crypto";
12
13
  import { fileURLToPath } from "node:url";
13
14
  import { execSync } from "node:child_process";
14
15
 
@@ -27,7 +28,7 @@ const NC = "\x1b[0m";
27
28
  const SKELETON_DIR = path.join(__dirname, "..", "skeleton");
28
29
 
29
30
  // 框架版本
30
- const FRAMEWORK_VERSION = "3.0.5";
31
+ const FRAMEWORK_VERSION = "3.0.7";
31
32
 
32
33
  // 需要检查的必需目录
33
34
  const REQUIRED_DIRS = [
@@ -59,6 +60,17 @@ const REQUIRED_FILES = [
59
60
  // 初始化时不应覆盖的文件(已有项目集成时)
60
61
  const NO_OVERWRITE_FILES = ["README.md", ".gitignore"];
61
62
 
63
+ // Manifest 相关常量
64
+ const MANIFEST_FILENAME = "easyai-manifest.json";
65
+
66
+ /**
67
+ * 计算文件的 SHA-256 哈希
68
+ */
69
+ function fileHash(filePath) {
70
+ const content = fs.readFileSync(filePath);
71
+ return crypto.createHash("sha256").update(content).digest("hex");
72
+ }
73
+
62
74
  /**
63
75
  * 递归复制目录
64
76
  * @param src - 源目录
@@ -207,6 +219,13 @@ export async function doInit(targetDir) {
207
219
  console.log(` ${YELLOW}⊘${NC} README.md — 已存在,跳过`);
208
220
  }
209
221
 
222
+ // 复制 Manifest 文件(记录初始文件哈希)
223
+ const manifestSrc = path.join(SKELETON_DIR, MANIFEST_FILENAME);
224
+ if (fs.existsSync(manifestSrc)) {
225
+ fs.copyFileSync(manifestSrc, path.join(targetDir, `.${MANIFEST_FILENAME}`));
226
+ console.log(` ${GREEN}✓${NC} .${MANIFEST_FILENAME} — 框架文件清单`);
227
+ }
228
+
210
229
  // 写入版本清单
211
230
  fs.writeFileSync(
212
231
  path.join(targetDir, ".easyai-version"),
@@ -226,7 +245,10 @@ ${BOLD}下一步:配置 MCP Server${NC}
226
245
  {
227
246
  "easyai-mcp-server": {
228
247
  "command": "npx",
229
- "args": ["-y", "@geeseeker/easyai-dev", "serve"]
248
+ "args": ["-y", "@geeseeker/easyai-dev", "serve"],
249
+ "env": {
250
+ "EASYAI_PROJECT_ROOT": "${targetDir}"
251
+ }
230
252
  }
231
253
  }
232
254
 
@@ -315,8 +337,16 @@ export async function doCheck(targetDir) {
315
337
  }
316
338
 
317
339
  /**
318
- * 更新框架
319
- * 只更新 .agents/ 和 .trellis/spec/,不覆盖用户数据
340
+ * 更新框架(Manifest 驱动的智能合并)
341
+ *
342
+ * 核心逻辑:
343
+ * - 纯用户文件(不在 manifest 中)→ 不碰
344
+ * - 框架文件、用户未修改 → 自动覆盖
345
+ * - 框架文件、用户已修改 → 报告冲突,保存 .new 文件
346
+ * - 框架新增文件 → 自动创建
347
+ * - 框架删除文件、用户未修改 → 删除
348
+ * - 框架删除文件、用户已修改 → 报告冲突
349
+ *
320
350
  * @param targetDir - 目标项目目录(绝对路径)
321
351
  */
322
352
  export async function doUpdate(targetDir) {
@@ -338,47 +368,129 @@ export async function doUpdate(targetDir) {
338
368
  return;
339
369
  }
340
370
 
371
+ // 读取新旧 Manifest
372
+ const newManifestPath = path.join(SKELETON_DIR, MANIFEST_FILENAME);
373
+ const oldManifestPath = path.join(targetDir, `.${MANIFEST_FILENAME}`);
374
+
375
+ if (!fs.existsSync(newManifestPath)) {
376
+ console.error(
377
+ `${RED}✗ 新版本缺少 ${MANIFEST_FILENAME},无法执行安全升级${NC}`,
378
+ );
379
+ process.exit(1);
380
+ }
381
+
382
+ const newManifest = JSON.parse(fs.readFileSync(newManifestPath, "utf-8"));
383
+ let oldManifest = { files: {} };
384
+ if (fs.existsSync(oldManifestPath)) {
385
+ oldManifest = JSON.parse(fs.readFileSync(oldManifestPath, "utf-8"));
386
+ }
387
+
341
388
  console.log(`\n${BLUE}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}`);
342
- console.log(`${BLUE}${BOLD}easyAI 框架更新${NC}`);
389
+ console.log(`${BLUE}${BOLD}easyAI 框架更新(智能合并)${NC}`);
343
390
  console.log(`${BLUE}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}`);
344
391
  console.log(
345
392
  `当前版本: ${YELLOW}v${installedVersion}${NC}` +
346
393
  ` → 目标版本: ${GREEN}v${FRAMEWORK_VERSION}${NC}\n`,
347
394
  );
348
395
 
349
- // 更新 .agents/(完整替换)
350
- const agentsSrc = path.join(SKELETON_DIR, ".agents");
351
- const agentsDest = path.join(targetDir, ".agents");
352
- if (fs.existsSync(agentsSrc)) {
353
- // 备份当前 .agents/
354
- const backupDir = path.join(targetDir, `.agents.bak.${Date.now()}`);
355
- fs.renameSync(agentsDest, backupDir);
356
- copyDirSync(agentsSrc, agentsDest, { noOverwrite: false, log: false });
357
- console.log(
358
- ` ${GREEN}✓${NC} .agents/ 已更新(备份: ${path.basename(backupDir)})`,
359
- );
396
+ const conflicts = [];
397
+ let updated = 0;
398
+ let created = 0;
399
+ let removed = 0;
400
+ let skipped = 0;
401
+
402
+ // 阶段 1:处理新 Manifest 中的文件(新增 + 更新)
403
+ console.log(`${BOLD}处理框架文件:${NC}`);
404
+ for (const [relPath, newEntry] of Object.entries(newManifest.files)) {
405
+ const targetPath = path.join(targetDir, relPath);
406
+ const skeletonPath = path.join(SKELETON_DIR, relPath);
407
+ const oldEntry = oldManifest.files[relPath];
408
+
409
+ if (!fs.existsSync(targetPath)) {
410
+ // 文件在用户项目中不存在 → 直接创建
411
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
412
+ fs.copyFileSync(skeletonPath, targetPath);
413
+ console.log(` ${GREEN}+${NC} ${relPath} — 新增`);
414
+ created++;
415
+ continue;
416
+ }
417
+
418
+ if (!oldEntry) {
419
+ // 新 Manifest 有,旧 Manifest 没有,但用户文件已存在
420
+ // → 框架新增文件与用户已有文件冲突
421
+ fs.copyFileSync(skeletonPath, targetPath + ".new");
422
+ conflicts.push({
423
+ file: relPath,
424
+ reason: "框架新增此文件,但你的项目中已有同名文件",
425
+ });
426
+ continue;
427
+ }
428
+
429
+ // 框架文件在新旧版本中都有,检查是否有更新
430
+ if (oldEntry.hash === newEntry.hash) {
431
+ // 框架这个文件没更新,跳过
432
+ skipped++;
433
+ continue;
434
+ }
435
+
436
+ // 框架文件有更新,检查用户是否修改过
437
+ const currentHash = fileHash(targetPath);
438
+ if (currentHash === oldEntry.hash) {
439
+ // 用户未修改 → 直接覆盖
440
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
441
+ fs.copyFileSync(skeletonPath, targetPath);
442
+ console.log(` ${GREEN}✓${NC} ${relPath} — 已更新`);
443
+ updated++;
444
+ } else {
445
+ // 用户已修改 → 报告冲突
446
+ fs.copyFileSync(skeletonPath, targetPath + ".new");
447
+ conflicts.push({
448
+ file: relPath,
449
+ reason: "框架已更新此文件,但你也修改过它",
450
+ });
451
+ }
360
452
  }
361
453
 
362
- // 更新 .trellis/spec/(完整替换)
363
- const specSrc = path.join(SKELETON_DIR, ".trellis", "spec");
364
- const specDest = path.join(targetDir, ".trellis", "spec");
365
- if (fs.existsSync(specSrc)) {
366
- const specBackup = path.join(
367
- targetDir,
368
- ".trellis",
369
- `spec.bak.${Date.now()}`,
370
- );
371
- if (fs.existsSync(specDest)) {
372
- fs.renameSync(specDest, specBackup);
454
+ // 阶段 2:处理旧 Manifest 中有、新 Manifest 中没有的文件(框架删除)
455
+ for (const [relPath, oldEntry] of Object.entries(oldManifest.files)) {
456
+ if (newManifest.files[relPath]) {
457
+ continue; // 新版本中仍存在,已在阶段 1 处理
458
+ }
459
+
460
+ const targetPath = path.join(targetDir, relPath);
461
+ if (!fs.existsSync(targetPath)) {
462
+ continue; // 文件已不存在,无需处理
463
+ }
464
+
465
+ const currentHash = fileHash(targetPath);
466
+ if (currentHash === oldEntry.hash) {
467
+ // 用户未修改 → 直接删除
468
+ fs.unlinkSync(targetPath);
469
+ console.log(` ${RED}-${NC} ${relPath} — 已移除(框架不再需要)`);
470
+ removed++;
471
+ } else {
472
+ // 用户已修改 → 报告冲突
473
+ conflicts.push({
474
+ file: relPath,
475
+ reason: "框架已移除此文件,但你修改过它",
476
+ });
373
477
  }
374
- copyDirSync(specSrc, specDest, { noOverwrite: false, log: false });
375
- console.log(` ${GREEN}✓${NC} .trellis/spec/ — 已更新`);
376
478
  }
377
479
 
378
- // 更新版本清单
480
+ // 更新项目中的 Manifest 和版本号
481
+ fs.copyFileSync(newManifestPath, oldManifestPath);
379
482
  fs.writeFileSync(versionFile, `${FRAMEWORK_VERSION}\n`);
380
483
  console.log(` ${GREEN}✓${NC} .easyai-version — v${FRAMEWORK_VERSION}`);
381
484
 
485
+ // 统计输出
486
+ console.log(
487
+ `\n${BOLD}统计:${NC} ` +
488
+ `${GREEN}${created} 新增${NC}, ` +
489
+ `${GREEN}${updated} 更新${NC}, ` +
490
+ `${RED}${removed} 移除${NC}, ` +
491
+ `${skipped} 无变化`,
492
+ );
493
+
382
494
  // 不更新的内容
383
495
  console.log(`\n${BOLD}以下内容未被修改(保留用户数据):${NC}`);
384
496
  console.log(` ${YELLOW}⊘${NC} .trellis/config/config.yaml`);
@@ -387,9 +499,20 @@ export async function doUpdate(targetDir) {
387
499
  console.log(` ${YELLOW}⊘${NC} .docs/`);
388
500
  console.log(` ${YELLOW}⊘${NC} README.md`);
389
501
  console.log(` ${YELLOW}⊘${NC} .gitignore`);
502
+ console.log(` ${YELLOW}⊘${NC} 用户自定义的 Skills / Rules / Workflows`);
503
+
504
+ // 冲突报告
505
+ if (conflicts.length > 0) {
506
+ console.log(`\n${YELLOW}${BOLD}⚠ 检测到 ${conflicts.length} 个冲突:${NC}`);
507
+ for (let i = 0; i < conflicts.length; i++) {
508
+ const c = conflicts[i];
509
+ console.log(`\n ${i + 1}. ${YELLOW}${c.file}${NC}`);
510
+ console.log(` → ${c.reason}`);
511
+ console.log(` → 框架新版已保存到 ${c.file}.new`);
512
+ console.log(` → 请手动比较并决定保留哪个版本`);
513
+ }
514
+ console.log(`\n${YELLOW}提示: 使用 diff <file> <file>.new 比较差异${NC}`);
515
+ }
390
516
 
391
517
  console.log(`\n${GREEN}${BOLD}✅ 框架更新完成!${NC}`);
392
- console.log(
393
- `${YELLOW}注意: 旧版 .agents/ 已备份。确认无误后可手动删除。${NC}`,
394
- );
395
518
  }
@@ -14,7 +14,7 @@ export declare function registerFrameworkInit(server: McpServer): void;
14
14
  */
15
15
  export declare function registerFrameworkCheck(server: McpServer): void;
16
16
  /**
17
- * 注册 framework_update 工具
17
+ * 注册 framework_update 工具(Manifest 驱动智能合并)
18
18
  */
19
19
  export declare function registerFrameworkUpdate(server: McpServer): void;
20
20
  //# sourceMappingURL=framework-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framework-tools.d.ts","sourceRoot":"","sources":["../../src/tools/framework-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkHpE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmI7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqG9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6H/D"}
1
+ {"version":3,"file":"framework-tools.d.ts","sourceRoot":"","sources":["../../src/tools/framework-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8HpE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmI7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqG9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgN/D"}
@@ -7,6 +7,7 @@
7
7
  import { z } from "zod";
8
8
  import * as fs from "node:fs";
9
9
  import * as path from "node:path";
10
+ import * as crypto from "node:crypto";
10
11
  import { fileURLToPath } from "node:url";
11
12
  import { execSync } from "node:child_process";
12
13
  // ============ 常量 ============
@@ -15,7 +16,16 @@ const __dirname = path.dirname(__filename);
15
16
  // skeleton 在 npm 包中的位置:lib/server/tools/ → 向上 3 级 → skeleton/
16
17
  const SKELETON_DIR = path.resolve(__dirname, "..", "..", "..", "skeleton");
17
18
  // 框架版本(与 package.json 保持一致)
18
- const FRAMEWORK_VERSION = "3.0.5";
19
+ const FRAMEWORK_VERSION = "3.0.7";
20
+ // Manifest 相关常量
21
+ const MANIFEST_FILENAME = "easyai-manifest.json";
22
+ /**
23
+ * 计算文件的 SHA-256 哈希
24
+ */
25
+ function fileHash(filePath) {
26
+ const content = fs.readFileSync(filePath);
27
+ return crypto.createHash("sha256").update(content).digest("hex");
28
+ }
19
29
  // 必需目录
20
30
  const REQUIRED_DIRS = [
21
31
  ".agents/rules",
@@ -302,12 +312,12 @@ export function registerFrameworkCheck(server) {
302
312
  });
303
313
  }
304
314
  /**
305
- * 注册 framework_update 工具
315
+ * 注册 framework_update 工具(Manifest 驱动智能合并)
306
316
  */
307
317
  export function registerFrameworkUpdate(server) {
308
- server.tool("framework_update", "更新 easyAI 框架到最新版本。只更新 .agents/ 和 .trellis/spec/," +
309
- "不覆盖用户数据(.trellis/config/、tasks/、workspace/、.docs/)。" +
310
- "更新前会自动备份旧文件。", {
318
+ server.tool("framework_update", "更新 easyAI 框架到最新版本。使用 Manifest 驱动的智能合并:" +
319
+ "只更新框架自有文件,保留用户自定义的 Skills/Rules/Workflows。" +
320
+ "框架文件被用户修改过时报告冲突,由用户决策。", {
311
321
  targetDir: z
312
322
  .string()
313
323
  .describe("目标项目目录的绝对路径。默认为当前工作目录。")
@@ -350,30 +360,101 @@ export function registerFrameworkUpdate(server) {
350
360
  ],
351
361
  };
352
362
  }
363
+ // 读取新旧 Manifest
364
+ const newManifestPath = path.join(SKELETON_DIR, MANIFEST_FILENAME);
365
+ const oldManifestPath = path.join(resolvedDir, `.${MANIFEST_FILENAME}`);
366
+ if (!fs.existsSync(newManifestPath)) {
367
+ return {
368
+ content: [
369
+ {
370
+ type: "text",
371
+ text: JSON.stringify({
372
+ success: false,
373
+ error: `新版本缺少 ${MANIFEST_FILENAME},无法执行安全升级`,
374
+ }),
375
+ },
376
+ ],
377
+ };
378
+ }
379
+ const newManifest = JSON.parse(fs.readFileSync(newManifestPath, "utf-8"));
380
+ let oldManifest = {
381
+ files: {},
382
+ };
383
+ if (fs.existsSync(oldManifestPath)) {
384
+ oldManifest = JSON.parse(fs.readFileSync(oldManifestPath, "utf-8"));
385
+ }
353
386
  const logs = [];
387
+ const conflicts = [];
388
+ let updated = 0;
389
+ let created = 0;
390
+ let removed = 0;
391
+ let skipped = 0;
354
392
  logs.push(`更新: v${installedVersion} → v${FRAMEWORK_VERSION}`);
355
- // 更新 .agents/(完整替换,先备份)
356
- const agentsSrc = path.join(SKELETON_DIR, ".agents");
357
- const agentsDest = path.join(resolvedDir, ".agents");
358
- if (fs.existsSync(agentsSrc) && fs.existsSync(agentsDest)) {
359
- const backupName = `.agents.bak.${Date.now()}`;
360
- fs.renameSync(agentsDest, path.join(resolvedDir, backupName));
361
- copyDirSync(agentsSrc, agentsDest);
362
- logs.push(`✓ .agents/ 已更新(备份: ${backupName})`);
393
+ // 阶段 1:处理新 Manifest 中的文件
394
+ for (const [relPath, newEntry] of Object.entries(newManifest.files)) {
395
+ const targetPath = path.join(resolvedDir, relPath);
396
+ const skeletonPath = path.join(SKELETON_DIR, relPath);
397
+ const oldEntry = oldManifest.files[relPath];
398
+ if (!fs.existsSync(targetPath)) {
399
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
400
+ fs.copyFileSync(skeletonPath, targetPath);
401
+ logs.push(`+ ${relPath} — 新增`);
402
+ created++;
403
+ continue;
404
+ }
405
+ if (!oldEntry) {
406
+ fs.copyFileSync(skeletonPath, targetPath + ".new");
407
+ conflicts.push({
408
+ file: relPath,
409
+ reason: "框架新增此文件,但项目中已有同名文件",
410
+ });
411
+ continue;
412
+ }
413
+ if (oldEntry.hash === newEntry.hash) {
414
+ skipped++;
415
+ continue;
416
+ }
417
+ const currentHash = fileHash(targetPath);
418
+ if (currentHash === oldEntry.hash) {
419
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
420
+ fs.copyFileSync(skeletonPath, targetPath);
421
+ logs.push(`✓ ${relPath} — 已更新`);
422
+ updated++;
423
+ }
424
+ else {
425
+ fs.copyFileSync(skeletonPath, targetPath + ".new");
426
+ conflicts.push({
427
+ file: relPath,
428
+ reason: "框架已更新此文件,但用户也修改过它",
429
+ });
430
+ }
363
431
  }
364
- // 更新 .trellis/spec/(完整替换,先备份)
365
- const specSrc = path.join(SKELETON_DIR, ".trellis", "spec");
366
- const specDest = path.join(resolvedDir, ".trellis", "spec");
367
- if (fs.existsSync(specSrc) && fs.existsSync(specDest)) {
368
- const backupName = `spec.bak.${Date.now()}`;
369
- fs.renameSync(specDest, path.join(resolvedDir, ".trellis", backupName));
370
- copyDirSync(specSrc, specDest);
371
- logs.push("✓ .trellis/spec/ 已更新");
432
+ // 阶段 2:处理框架删除的文件
433
+ for (const [relPath, oldEntry] of Object.entries(oldManifest.files)) {
434
+ if (newManifest.files[relPath]) {
435
+ continue;
436
+ }
437
+ const targetPath = path.join(resolvedDir, relPath);
438
+ if (!fs.existsSync(targetPath)) {
439
+ continue;
440
+ }
441
+ const currentHash = fileHash(targetPath);
442
+ if (currentHash === oldEntry.hash) {
443
+ fs.unlinkSync(targetPath);
444
+ logs.push(`- ${relPath} — 已移除`);
445
+ removed++;
446
+ }
447
+ else {
448
+ conflicts.push({
449
+ file: relPath,
450
+ reason: "框架已移除此文件,但用户修改过它",
451
+ });
452
+ }
372
453
  }
373
- // 更新版本
454
+ // 更新 Manifest 和版本号
455
+ fs.copyFileSync(newManifestPath, oldManifestPath);
374
456
  fs.writeFileSync(versionFile, `${FRAMEWORK_VERSION}\n`);
375
457
  logs.push(`✓ .easyai-version → v${FRAMEWORK_VERSION}`);
376
- // 未修改的内容
377
458
  const preserved = [
378
459
  ".trellis/config/config.yaml",
379
460
  ".trellis/tasks/",
@@ -381,6 +462,7 @@ export function registerFrameworkUpdate(server) {
381
462
  ".docs/",
382
463
  "README.md",
383
464
  ".gitignore",
465
+ "用户自定义的 Skills / Rules / Workflows",
384
466
  ];
385
467
  return {
386
468
  content: [
@@ -391,7 +473,9 @@ export function registerFrameworkUpdate(server) {
391
473
  updated: true,
392
474
  fromVersion: installedVersion,
393
475
  toVersion: FRAMEWORK_VERSION,
476
+ stats: { created, updated, removed, skipped },
394
477
  logs,
478
+ conflicts,
395
479
  preserved,
396
480
  }),
397
481
  },
@@ -1 +1 @@
1
- {"version":3,"file":"framework-tools.js","sourceRoot":"","sources":["../../src/tools/framework-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework-tools.js","sourceRoot":"","sources":["../../src/tools/framework-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geeseeker/easyai-dev",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "description": "easyAI — 让用户以纯客户的视角进行软件开发",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,96 @@
1
+ {
2
+ "version": "3.0.7",
3
+ "generatedAt": "2026-03-12T13:24:32.935Z",
4
+ "files": {
5
+ ".agents/rules/anti-hallucination.md": {
6
+ "hash": "0d18aafe1cdacf5db0e71eb06c559ab01df9deebb99804ad514930cc7d59c749"
7
+ },
8
+ ".agents/rules/coding-standards.md": {
9
+ "hash": "b3e3d04a1a80ac78fabf5d6566e02f51f8c68e07d32e9a4fa376e38ae9ba0384"
10
+ },
11
+ ".agents/rules/project-identity.md": {
12
+ "hash": "42f56e40168cd2528b72a7d99e862be806e1af0a89e609b51fdad42cb8c06758"
13
+ },
14
+ ".agents/skills/common-session-close/SKILL.md": {
15
+ "hash": "491132b12d8a1e327afdb16d9667031ad703abd9d184d8b26b3d160318d58517"
16
+ },
17
+ ".agents/skills/common-spec-update/SKILL.md": {
18
+ "hash": "cca0e3176a235d5a2b33f419e80b4e35409e377b915de14a8cd35283eb980630"
19
+ },
20
+ ".agents/skills/pm-brainstorm/SKILL.md": {
21
+ "hash": "56091ee907d737a6d9301198909b3ad6d4b6c51b77c1836226e247bef68516f5"
22
+ },
23
+ ".agents/skills/pm-framework-evolve/SKILL.md": {
24
+ "hash": "9e5564d7a5de0902f802acd3ccb30e2bdbf152d38539cd7f7d0e391424b1ce4f"
25
+ },
26
+ ".agents/skills/pm-framework-evolve/changelog/index.md": {
27
+ "hash": "3f307c523ed8d80845cf575e4d1f53958d34d326bf548eef8a720c190f35c85d"
28
+ },
29
+ ".agents/skills/pm-framework-evolve/references/architecture.md": {
30
+ "hash": "a6963837139ebeebc791d10736110683233ac6a6ef4465ad30ac8d2ca4bf4670"
31
+ },
32
+ ".agents/skills/pm-framework-evolve/references/directory-map.md": {
33
+ "hash": "941e49ac6de554ff1c3d0c0e33d1dc576a8b9720506acc1263df6c787434f0cc"
34
+ },
35
+ ".agents/skills/pm-framework-evolve/references/features.md": {
36
+ "hash": "7a0b6a9c5e789efffd3479ed679c950e2ffda57878995fa04c5606c8dac30dd2"
37
+ },
38
+ ".agents/skills/pm-framework-evolve/references/github-info.md": {
39
+ "hash": "762304a2279fb07dde46e8d0e63ae0fe534064274088ae70b95327577d881994"
40
+ },
41
+ ".agents/skills/pm-framework-evolve/references/installation.md": {
42
+ "hash": "c2e66dc8710988f54e08b2b518bf5e83b7eb82107a525af6e57e56d17e101181"
43
+ },
44
+ ".agents/skills/pm-framework-evolve/resources/changelog-entry-template.md": {
45
+ "hash": "801ae16c13edcf6f6efefeecb91e74ebf269e73841d2c8db4e4e5de81143fe7c"
46
+ },
47
+ ".agents/skills/pm-session-start/SKILL.md": {
48
+ "hash": "8497c872219a21f02bf1bd815411e0340d5d50c5db0c7ad6d6c2368352899d03"
49
+ },
50
+ ".agents/skills/pm-task-planning/SKILL.md": {
51
+ "hash": "290aa40262e6b30b771a3cb6707f7855b49b97c209330cb97b1cae24aed37dba"
52
+ },
53
+ ".agents/skills/pm-task-review/SKILL.md": {
54
+ "hash": "5c0de10bded4b1ccdccb7bdaecf873dea84482674844a1a3eca9a0811c7fc041"
55
+ },
56
+ ".agents/skills/worker-check/SKILL.md": {
57
+ "hash": "1ad45ef6673289037f3add509d27c9941ebe94a446657436805ac8f845996fb7"
58
+ },
59
+ ".agents/skills/worker-debug/SKILL.md": {
60
+ "hash": "4efb05b10547d298d908b8ec718f845f141c805a41340b32437d54dda06d4012"
61
+ },
62
+ ".agents/skills/worker-implement/SKILL.md": {
63
+ "hash": "3f4674b0d927aa3fabe83810f8388979fa6d6aade84172a5df547edad7c7410b"
64
+ },
65
+ ".agents/workflows/pm.md": {
66
+ "hash": "978b8b60dff2bbc4fa2fb81e768231ba642fe46db31ee2cfafcee62234acfd84"
67
+ },
68
+ ".agents/workflows/worker.md": {
69
+ "hash": "c18c0fb93ac5cad49be05efd1d13ee3d16576645ec6c124683113d31103e206d"
70
+ },
71
+ ".docs/README.md": {
72
+ "hash": "bb979346956d6d753d44519a533e634429c73d9e72895920b5861e29a3808ddb"
73
+ },
74
+ ".trellis/config/config.yaml": {
75
+ "hash": "5b761b8d8ed05a47ac62b371953d08cfc220cba2cd784cae4f3858bb90e441cf"
76
+ },
77
+ ".trellis/spec/guides/external-cli-guide.md": {
78
+ "hash": "ee6e10f83813243ba7bcccf38a6caa977863298bee96642642713b7066cd72ba"
79
+ },
80
+ ".trellis/spec/guides/task-workflow.md": {
81
+ "hash": "f58667994ebb3543b0b7aa737eeab7b270b0e9657515fecdc7f3d0ceb1809200"
82
+ },
83
+ ".trellis/spec/guides/testing.md": {
84
+ "hash": "31133d58f05ba6ab63f55beb6398f936b532af9d8def4443b8da025897fd4c53"
85
+ },
86
+ ".trellis/spec/spec-schema.json": {
87
+ "hash": "3706e5dbc8ba583b886717fab22b238e2f70e05a64988b469576edfe024116cd"
88
+ },
89
+ "README.md": {
90
+ "hash": "c64596569893c3131c830696aa690294f5fa31a8d6a445cc4ccd52a52d20e3a2"
91
+ },
92
+ "gitignore.template": {
93
+ "hash": "52ffb895237131c18433d45473b55d34110f283c8395a667567386eca72be8ea"
94
+ }
95
+ }
96
+ }