@winspan/claude-forge 0.2.15 → 0.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.
Files changed (43) hide show
  1. package/README.md +2 -2
  2. package/dist/claudemd/detector.d.ts +1 -0
  3. package/dist/claudemd/detector.d.ts.map +1 -1
  4. package/dist/claudemd/detector.js +78 -0
  5. package/dist/claudemd/detector.js.map +1 -1
  6. package/dist/daemon/handler-context.d.ts +1 -1
  7. package/dist/daemon/handler-context.d.ts.map +1 -1
  8. package/dist/daemon/handlers/session-cleanup.js +1 -1
  9. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  10. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  11. package/dist/daemon/handlers/stop-handler.js +2 -0
  12. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  13. package/dist/daemon/handlers/user-prompt-handler.d.ts +2 -0
  14. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  15. package/dist/daemon/handlers/user-prompt-handler.js +32 -4
  16. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  17. package/dist/skill-registry/evolver/keyword-evolver.d.ts.map +1 -1
  18. package/dist/skill-registry/evolver/keyword-evolver.js +9 -7
  19. package/dist/skill-registry/evolver/keyword-evolver.js.map +1 -1
  20. package/dist/skill-registry/fuzzy-matcher.d.ts +15 -0
  21. package/dist/skill-registry/fuzzy-matcher.d.ts.map +1 -0
  22. package/dist/skill-registry/fuzzy-matcher.js +41 -0
  23. package/dist/skill-registry/fuzzy-matcher.js.map +1 -0
  24. package/dist/skill-registry/index.d.ts.map +1 -1
  25. package/dist/skill-registry/index.js +14 -5
  26. package/dist/skill-registry/index.js.map +1 -1
  27. package/dist/skill-registry/orchestration-config.d.ts +10 -0
  28. package/dist/skill-registry/orchestration-config.d.ts.map +1 -1
  29. package/dist/skill-registry/orchestration-config.js +20 -0
  30. package/dist/skill-registry/orchestration-config.js.map +1 -1
  31. package/dist/skill-registry/orchestrator.d.ts +5 -0
  32. package/dist/skill-registry/orchestrator.d.ts.map +1 -1
  33. package/dist/skill-registry/orchestrator.js +82 -29
  34. package/dist/skill-registry/orchestrator.js.map +1 -1
  35. package/dist/utils/formatter.d.ts +1 -1
  36. package/dist/utils/formatter.d.ts.map +1 -1
  37. package/dist/utils/formatter.js +7 -2
  38. package/dist/utils/formatter.js.map +1 -1
  39. package/dist/utils/plan-reader.d.ts +7 -8
  40. package/dist/utils/plan-reader.d.ts.map +1 -1
  41. package/dist/utils/plan-reader.js +39 -30
  42. package/dist/utils/plan-reader.js.map +1 -1
  43. package/package.json +1 -1
@@ -1,64 +1,74 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  /**
4
- * 返回指定项目和日期的计划文件路径
4
+ * 扫描项目 docs/plan-*.md,返回包含未完成任务的计划文件路径列表(按文件名倒序,最新在前)
5
5
  */
6
- export function getPlanFilePath(projectPath, date) {
7
- const d = date ?? new Date();
8
- const dateStr = d.getFullYear()
9
- + '-' + String(d.getMonth() + 1).padStart(2, '0')
10
- + '-' + String(d.getDate()).padStart(2, '0');
11
- return path.join(projectPath, '.claude-forge', 'plans', `${dateStr}.md`);
6
+ function findPlanFiles(projectPath) {
7
+ const docsDir = path.join(projectPath, 'docs');
8
+ try {
9
+ if (!fs.existsSync(docsDir))
10
+ return [];
11
+ return fs.readdirSync(docsDir)
12
+ .filter(f => /^plan-.+\.md$/.test(f))
13
+ .sort()
14
+ .reverse()
15
+ .map(f => path.join(docsDir, f));
16
+ }
17
+ catch {
18
+ return [];
19
+ }
12
20
  }
13
21
  /**
14
- * 读取并解析计划文件。
15
- * 读取顺序:今天 昨天(兜底跨夜 session)
16
- * 出错返回 null。
22
+ * 读取项目 docs/plan-*.md,返回最新的含未完成任务的计划文件。
23
+ * 按文件名倒序扫描,找到第一个有 pending/in-progress 任务的文件即返回。
17
24
  */
18
- export function readPlanFile(projectPath, date) {
19
- const dates = date ? [date] : (() => {
20
- const today = new Date();
21
- const yesterday = new Date(today);
22
- yesterday.setDate(yesterday.getDate() - 1);
23
- return [today, yesterday];
24
- })();
25
- for (const d of dates) {
25
+ export function readPlanFile(projectPath) {
26
+ const files = findPlanFiles(projectPath);
27
+ for (const filePath of files) {
26
28
  try {
27
- const filePath = getPlanFilePath(projectPath, d);
28
- if (!fs.existsSync(filePath))
29
- continue;
30
29
  const content = fs.readFileSync(filePath, 'utf-8');
31
30
  const tasks = parsePlanTasks(content);
32
31
  if (tasks.length === 0)
33
32
  continue;
34
- const dateStr = d.getFullYear()
35
- + '-' + String(d.getMonth() + 1).padStart(2, '0')
36
- + '-' + String(d.getDate()).padStart(2, '0');
37
33
  const hasInProgress = tasks.some(t => t.status === 'in-progress');
38
34
  const hasIncomplete = tasks.some(t => t.status === 'pending' || t.status === 'in-progress');
39
- return { date: dateStr, filePath, tasks, hasInProgress, hasIncomplete };
35
+ if (!hasIncomplete)
36
+ continue;
37
+ return { filePath, tasks, hasInProgress, hasIncomplete };
40
38
  }
41
39
  catch {
42
- // 出错继续尝试下一个日期
40
+ continue;
43
41
  }
44
42
  }
45
43
  return null;
46
44
  }
45
+ /**
46
+ * 返回当前项目最新 plan 文件路径(用于提示用户在哪里写计划)。
47
+ * 若已有 plan 文件则返回最新的,否则返回建议新建的路径。
48
+ */
49
+ export function getPlanFilePath(projectPath) {
50
+ const files = findPlanFiles(projectPath);
51
+ if (files.length > 0)
52
+ return files[0];
53
+ // 建议新建:docs/plan-v1.md
54
+ return path.join(projectPath, 'docs', 'plan-v1.md');
55
+ }
47
56
  /**
48
57
  * 构建会话开始时注入的计划上下文。
49
- * 若今日或昨日没有活跃计划,返回 null。
58
+ * 若项目 docs/ 下没有含未完成任务的 plan 文件,返回 null。
50
59
  */
51
60
  export function buildSessionStartPlanContext(projectPath) {
52
61
  try {
53
62
  const planFile = readPlanFile(projectPath);
54
63
  if (!planFile)
55
64
  return null;
56
- const { date, tasks } = planFile;
65
+ const { filePath, tasks } = planFile;
66
+ const fileName = path.basename(filePath);
57
67
  const pending = tasks.filter(t => t.status === 'pending');
58
68
  const inProgress = tasks.filter(t => t.status === 'in-progress');
59
69
  const done = tasks.filter(t => t.status === 'done');
60
70
  const parts = [];
61
- parts.push(`[Forge 计划] 上次工作进度(${date})`);
71
+ parts.push(`[Forge 计划] 当前计划文件:docs/${fileName}`);
62
72
  if (inProgress.length > 0) {
63
73
  parts.push('进行中:');
64
74
  for (const t of inProgress)
@@ -89,7 +99,6 @@ function parsePlanTasks(content) {
89
99
  const tasks = [];
90
100
  const lines = content.split('\n');
91
101
  for (const line of lines) {
92
- // 匹配 `- [?] 任务文字` 格式(支持任意空白前缀)
93
102
  const match = line.match(/^\s*-\s+\[([^\]]*)\]\s+(.+)$/);
94
103
  if (!match)
95
104
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"plan-reader.js","sourceRoot":"","sources":["../../src/utils/plan-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-reader.js","sourceRoot":"","sources":["../../src/utils/plan-reader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winspan/claude-forge",
3
- "version": "0.2.15",
3
+ "version": "0.3.0",
4
4
  "description": "SDLC intelligent orchestration engine for Claude Code",
5
5
  "main": "dist/cli/index.js",
6
6
  "type": "module",