specweave 1.0.235 → 1.0.239

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 (196) hide show
  1. package/README.md +89 -193
  2. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts +37 -0
  3. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts.map +1 -0
  4. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js +176 -0
  5. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js.map +1 -0
  6. package/dist/plugins/specweave-github/lib/github-batch-sync.d.ts +36 -0
  7. package/dist/plugins/specweave-github/lib/github-batch-sync.d.ts.map +1 -0
  8. package/dist/plugins/specweave-github/lib/github-batch-sync.js +115 -0
  9. package/dist/plugins/specweave-github/lib/github-batch-sync.js.map +1 -0
  10. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.d.ts +37 -0
  11. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.d.ts.map +1 -0
  12. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.js +56 -0
  13. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.js.map +1 -0
  14. package/dist/plugins/specweave-github/lib/github-conflict-resolver.d.ts +68 -0
  15. package/dist/plugins/specweave-github/lib/github-conflict-resolver.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/github-conflict-resolver.js +102 -0
  17. package/dist/plugins/specweave-github/lib/github-conflict-resolver.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.d.ts +64 -0
  19. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.d.ts.map +1 -0
  20. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js +162 -0
  21. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js.map +1 -0
  22. package/dist/plugins/specweave-github/lib/github-field-sync.d.ts +50 -0
  23. package/dist/plugins/specweave-github/lib/github-field-sync.d.ts.map +1 -0
  24. package/dist/plugins/specweave-github/lib/github-field-sync.js +107 -0
  25. package/dist/plugins/specweave-github/lib/github-field-sync.js.map +1 -0
  26. package/dist/plugins/specweave-github/lib/github-graphql-client.d.ts +53 -0
  27. package/dist/plugins/specweave-github/lib/github-graphql-client.d.ts.map +1 -0
  28. package/dist/plugins/specweave-github/lib/github-graphql-client.js +138 -0
  29. package/dist/plugins/specweave-github/lib/github-graphql-client.js.map +1 -0
  30. package/dist/plugins/specweave-github/lib/github-issue-body-generator.d.ts +40 -0
  31. package/dist/plugins/specweave-github/lib/github-issue-body-generator.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-issue-body-generator.js +50 -0
  33. package/dist/plugins/specweave-github/lib/github-issue-body-generator.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-issue-body-parser.d.ts +30 -0
  35. package/dist/plugins/specweave-github/lib/github-issue-body-parser.d.ts.map +1 -0
  36. package/dist/plugins/specweave-github/lib/github-issue-body-parser.js +75 -0
  37. package/dist/plugins/specweave-github/lib/github-issue-body-parser.js.map +1 -0
  38. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts +94 -0
  39. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts.map +1 -0
  40. package/dist/plugins/specweave-github/lib/github-pull-sync.js +232 -0
  41. package/dist/plugins/specweave-github/lib/github-pull-sync.js.map +1 -0
  42. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts +50 -0
  43. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts.map +1 -0
  44. package/dist/plugins/specweave-github/lib/github-push-sync.js +114 -0
  45. package/dist/plugins/specweave-github/lib/github-push-sync.js.map +1 -0
  46. package/dist/plugins/specweave-github/lib/github-rate-limiter.d.ts +53 -0
  47. package/dist/plugins/specweave-github/lib/github-rate-limiter.d.ts.map +1 -0
  48. package/dist/plugins/specweave-github/lib/github-rate-limiter.js +109 -0
  49. package/dist/plugins/specweave-github/lib/github-rate-limiter.js.map +1 -0
  50. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts +21 -0
  51. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts.map +1 -0
  52. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.js +161 -0
  53. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.js.map +1 -0
  54. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts +46 -0
  55. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts.map +1 -0
  56. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.js +99 -0
  57. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.js.map +1 -0
  58. package/dist/plugins/specweave-github/lib/github-us-auto-closer.d.ts +43 -0
  59. package/dist/plugins/specweave-github/lib/github-us-auto-closer.d.ts.map +1 -0
  60. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js +153 -0
  61. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js.map +1 -0
  62. package/dist/plugins/specweave-github/lib/index.d.ts +1 -4
  63. package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -1
  64. package/dist/plugins/specweave-github/lib/index.js +1 -4
  65. package/dist/plugins/specweave-github/lib/index.js.map +1 -1
  66. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts +7 -0
  67. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts.map +1 -0
  68. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.js +15 -0
  69. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.js.map +1 -0
  70. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts +10 -0
  71. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts.map +1 -0
  72. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js +36 -0
  73. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js.map +1 -0
  74. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.d.ts +25 -0
  75. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.d.ts.map +1 -0
  76. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js +57 -0
  77. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js.map +1 -0
  78. package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts +7 -0
  79. package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts.map +1 -0
  80. package/dist/plugins/specweave-testing/lib/playwright-routing.js +17 -0
  81. package/dist/plugins/specweave-testing/lib/playwright-routing.js.map +1 -0
  82. package/dist/src/cli/commands/auto.d.ts.map +1 -1
  83. package/dist/src/cli/commands/auto.js +1 -2
  84. package/dist/src/cli/commands/auto.js.map +1 -1
  85. package/dist/src/cli/commands/cancel-auto.js +1 -2
  86. package/dist/src/cli/commands/cancel-auto.js.map +1 -1
  87. package/dist/src/cli/commands/living-docs.js +2 -2
  88. package/dist/src/cli/commands/living-docs.js.map +1 -1
  89. package/dist/src/cli/commands/update.d.ts.map +1 -1
  90. package/dist/src/cli/commands/update.js +1 -2
  91. package/dist/src/cli/commands/update.js.map +1 -1
  92. package/dist/src/core/config/types.d.ts +8 -0
  93. package/dist/src/core/config/types.d.ts.map +1 -1
  94. package/dist/src/core/config/types.js +3 -0
  95. package/dist/src/core/config/types.js.map +1 -1
  96. package/dist/src/core/types/sync-profile.d.ts +72 -0
  97. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  98. package/dist/src/core/types/sync-profile.js +6 -0
  99. package/dist/src/core/types/sync-profile.js.map +1 -1
  100. package/package.json +2 -2
  101. package/plugins/specweave/hooks/hooks.json +2 -2
  102. package/plugins/specweave/hooks/startup-health-check.sh +1 -1
  103. package/plugins/specweave/hooks/stop-auto-v5.sh +166 -0
  104. package/plugins/specweave/hooks/user-prompt-submit.sh +10 -0
  105. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +21 -1
  106. package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +1 -1
  107. package/plugins/specweave/skills/auto/SKILL.md +71 -251
  108. package/plugins/specweave/skills/team-build/SKILL.md +370 -0
  109. package/plugins/specweave/skills/team-merge/SKILL.md +123 -0
  110. package/plugins/specweave/skills/team-orchestrate/SKILL.md +800 -0
  111. package/plugins/specweave/skills/team-status/SKILL.md +89 -0
  112. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +94 -8
  113. package/plugins/specweave-github/commands/sync.md +17 -3
  114. package/plugins/specweave-github/hooks/github-ac-sync-handler.sh +255 -0
  115. package/plugins/specweave-github/hooks/github-auto-create-handler.sh +455 -0
  116. package/plugins/specweave-github/lib/github-ac-comment-poster.js +150 -0
  117. package/plugins/specweave-github/lib/github-ac-comment-poster.ts +245 -0
  118. package/plugins/specweave-github/lib/github-batch-sync.js +93 -0
  119. package/plugins/specweave-github/lib/github-batch-sync.ts +152 -0
  120. package/plugins/specweave-github/lib/github-board-resolver-v2.js +47 -0
  121. package/plugins/specweave-github/lib/github-board-resolver-v2.ts +73 -0
  122. package/plugins/specweave-github/lib/github-conflict-resolver.js +90 -0
  123. package/plugins/specweave-github/lib/github-conflict-resolver.ts +154 -0
  124. package/plugins/specweave-github/lib/github-cross-repo-sync.js +168 -0
  125. package/plugins/specweave-github/lib/github-cross-repo-sync.ts +252 -0
  126. package/plugins/specweave-github/lib/github-field-sync.js +116 -0
  127. package/plugins/specweave-github/lib/github-field-sync.ts +165 -0
  128. package/plugins/specweave-github/lib/github-graphql-client.js +129 -0
  129. package/plugins/specweave-github/lib/github-graphql-client.ts +181 -0
  130. package/plugins/specweave-github/lib/github-issue-body-generator.js +30 -0
  131. package/plugins/specweave-github/lib/github-issue-body-generator.ts +76 -0
  132. package/plugins/specweave-github/lib/github-issue-body-parser.js +55 -0
  133. package/plugins/specweave-github/lib/github-issue-body-parser.ts +92 -0
  134. package/plugins/specweave-github/lib/github-pull-sync.js +185 -0
  135. package/plugins/specweave-github/lib/github-pull-sync.ts +343 -0
  136. package/plugins/specweave-github/lib/github-push-sync.js +119 -0
  137. package/plugins/specweave-github/lib/github-push-sync.ts +174 -0
  138. package/plugins/specweave-github/lib/github-rate-limiter.js +96 -0
  139. package/plugins/specweave-github/lib/github-rate-limiter.ts +143 -0
  140. package/plugins/specweave-github/lib/github-spec-frontmatter-updater.js +117 -0
  141. package/plugins/specweave-github/lib/github-spec-frontmatter-updater.ts +180 -0
  142. package/plugins/specweave-github/lib/github-sync-orchestrator.js +84 -0
  143. package/plugins/specweave-github/lib/github-sync-orchestrator.ts +156 -0
  144. package/plugins/specweave-github/lib/github-us-auto-closer.js +134 -0
  145. package/plugins/specweave-github/lib/github-us-auto-closer.ts +226 -0
  146. package/plugins/specweave-github/lib/index.js +1 -7
  147. package/plugins/specweave-github/lib/index.ts +1 -4
  148. package/plugins/specweave-github/skills/github-sync/SKILL.md +76 -4
  149. package/plugins/specweave-testing/commands/e2e-setup.md +18 -0
  150. package/plugins/specweave-testing/commands/ui-automate.md +2 -0
  151. package/plugins/specweave-testing/commands/ui-inspect.md +8 -0
  152. package/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts +6 -0
  153. package/plugins/specweave-testing/lib/playwright-ci-defaults.js +14 -0
  154. package/plugins/specweave-testing/lib/playwright-ci-defaults.ts +24 -0
  155. package/plugins/specweave-testing/lib/playwright-cli-detector.js +33 -0
  156. package/plugins/specweave-testing/lib/playwright-cli-detector.ts +48 -0
  157. package/plugins/specweave-testing/lib/playwright-cli-runner.js +58 -0
  158. package/plugins/specweave-testing/lib/playwright-cli-runner.ts +80 -0
  159. package/plugins/specweave-testing/lib/playwright-routing.js +16 -0
  160. package/plugins/specweave-testing/lib/playwright-routing.ts +38 -0
  161. package/plugins/specweave-testing/skills/e2e-testing/SKILL.md +38 -0
  162. package/src/templates/CLAUDE.md.template +7 -0
  163. package/src/templates/config.json.template +9 -1
  164. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
  165. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
  166. package/dist/plugins/specweave-github/lib/subtask-sync.js +0 -147
  167. package/dist/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
  168. package/dist/plugins/specweave-github/lib/task-parser.d.ts +0 -37
  169. package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
  170. package/dist/plugins/specweave-github/lib/task-parser.js +0 -211
  171. package/dist/plugins/specweave-github/lib/task-parser.js.map +0 -1
  172. package/dist/plugins/specweave-github/lib/task-sync.d.ts +0 -56
  173. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
  174. package/dist/plugins/specweave-github/lib/task-sync.js +0 -375
  175. package/dist/plugins/specweave-github/lib/task-sync.js.map +0 -1
  176. package/plugins/specweave/hooks/validate-completion-conditions.sh +0 -474
  177. package/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
  178. package/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
  179. package/plugins/specweave-github/lib/subtask-sync.js +0 -154
  180. package/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
  181. package/plugins/specweave-github/lib/subtask-sync.ts +0 -225
  182. package/plugins/specweave-github/lib/task-parser.d.js +0 -0
  183. package/plugins/specweave-github/lib/task-parser.d.ts +0 -37
  184. package/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
  185. package/plugins/specweave-github/lib/task-parser.js +0 -195
  186. package/plugins/specweave-github/lib/task-parser.js.map +0 -1
  187. package/plugins/specweave-github/lib/task-parser.ts +0 -246
  188. package/plugins/specweave-github/lib/task-sync.d.js +0 -0
  189. package/plugins/specweave-github/lib/task-sync.d.ts +0 -51
  190. package/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
  191. package/plugins/specweave-github/lib/task-sync.js +0 -415
  192. package/plugins/specweave-github/lib/task-sync.js.map +0 -1
  193. package/plugins/specweave-github/lib/task-sync.ts +0 -451
  194. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +0 -496
  195. /package/plugins/specweave/hooks/{stop-auto.sh → _archive/stop-auto-v4-legacy.sh} +0 -0
  196. /package/plugins/{specweave-github/lib/subtask-sync.d.js → specweave-testing/lib/playwright-ci-defaults.d.js} +0 -0
@@ -1,415 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import * as yaml from "js-yaml";
4
- import { GitHubClient } from "./github-client";
5
- import { TaskParser } from "./task-parser";
6
- class TaskSync {
7
- constructor(incrementPath, repo) {
8
- this.incrementPath = incrementPath;
9
- this.client = new GitHubClient(repo);
10
- }
11
- /**
12
- * Sync all tasks to GitHub (main entry point)
13
- */
14
- async syncTasks(options = {}) {
15
- const {
16
- force = false,
17
- dryRun = false,
18
- batchDelay = 6e3,
19
- batchSize = 10,
20
- milestoneDays = 2,
21
- // SpecWeave default: 2 days (AI velocity)
22
- projectName,
23
- fastMode = false
24
- } = options;
25
- console.log(`
26
- \u{1F504} Syncing increment to GitHub...`);
27
- const ghCheck = GitHubClient.checkGitHubCLI();
28
- if (!ghCheck.installed || !ghCheck.authenticated) {
29
- throw new Error(ghCheck.error || "GitHub CLI check failed");
30
- }
31
- const metadata = this.loadIncrementMetadata();
32
- console.log(`\u{1F4E6} Increment: ${metadata.id} - ${metadata.title}`);
33
- const tasks = TaskParser.parseTasksFile(this.incrementPath);
34
- console.log(`\u{1F4CB} Found ${tasks.length} tasks`);
35
- if (dryRun) {
36
- console.log(`
37
- \u{1F50D} DRY RUN MODE - No changes will be made`);
38
- this.printDryRunSummary(tasks, metadata);
39
- return {
40
- epic: {},
41
- tasks: [],
42
- errors: []
43
- };
44
- }
45
- if (metadata.github?.epic_issue && !force) {
46
- console.log(`
47
- \u26A0\uFE0F Increment already synced to GitHub (epic #${metadata.github.epic_issue})`);
48
- console.log(` Use --force to re-sync (WARNING: will create duplicate issues)`);
49
- throw new Error("Already synced. Use --force to override.");
50
- }
51
- const errors = [];
52
- try {
53
- const milestoneTitle = this.getMilestoneTitle(metadata);
54
- console.log(`
55
- \u{1F4CD} Creating milestone: ${milestoneTitle} (due in ${milestoneDays} days)`);
56
- const milestone = await this.client.createOrGetMilestone(
57
- milestoneTitle,
58
- `Milestone for increment ${metadata.id}`,
59
- milestoneDays
60
- );
61
- console.log(` \u2705 Milestone #${milestone.number}: ${milestone.title}`);
62
- console.log(`
63
- \u{1F3AF} Creating epic issue for increment ${metadata.id}...`);
64
- const issuePrefix = this.getIssuePrefix(metadata.id);
65
- const epicBody = this.generateEpicBody(metadata, tasks);
66
- const epic = await this.client.createEpicIssue(
67
- `[${issuePrefix}] ${metadata.title}`,
68
- epicBody,
69
- milestone.title,
70
- ["increment", "specweave", metadata.priority.toLowerCase()]
71
- );
72
- console.log(` \u2705 Epic issue #${epic.number}: ${epic.html_url}`);
73
- const useFastMode = fastMode || tasks.length < 10;
74
- const effectiveDelay = useFastMode ? 0 : batchDelay;
75
- if (useFastMode) {
76
- console.log(`
77
- \u{1F4DD} Creating ${tasks.length} task issues (fast mode - no rate limiting)...`);
78
- } else {
79
- console.log(`
80
- \u{1F4DD} Creating ${tasks.length} task issues (batch size: ${batchSize}, delay: ${effectiveDelay}ms)...`);
81
- }
82
- const taskIssues = [];
83
- const issueData = tasks.map((task) => ({
84
- title: `[${task.id}] ${task.title}`,
85
- body: this.generateTaskBody(task),
86
- labels: ["task", task.priority.toLowerCase(), ...task.phase ? [this.slugify(task.phase)] : []]
87
- }));
88
- const createdIssues = await this.client.batchCreateIssues(
89
- issueData,
90
- milestone.title,
91
- epic.number,
92
- { batchSize, delayMs: effectiveDelay }
93
- );
94
- for (let i = 0; i < tasks.length; i++) {
95
- if (createdIssues[i]) {
96
- taskIssues.push({
97
- taskId: tasks[i].id,
98
- issue: createdIssues[i]
99
- });
100
- console.log(` \u2705 #${createdIssues[i].number}: [${tasks[i].id}] ${tasks[i].title}`);
101
- } else {
102
- errors.push({
103
- taskId: tasks[i].id,
104
- error: "Failed to create issue"
105
- });
106
- console.log(` \u274C [${tasks[i].id}] ${tasks[i].title} - Failed`);
107
- }
108
- }
109
- console.log(`
110
- \u{1F4C4} Updating tasks.md with GitHub issue numbers...`);
111
- const taskIssueMap = {};
112
- taskIssues.forEach(({ taskId, issue }) => {
113
- taskIssueMap[taskId] = issue.number;
114
- });
115
- TaskParser.updateTasksWithGitHubIssues(this.incrementPath, taskIssueMap);
116
- console.log(` \u2705 Updated tasks.md`);
117
- console.log(`
118
- \u{1F4BE} Saving sync mapping...`);
119
- this.saveSyncMapping({
120
- milestone: milestone.number,
121
- epic_issue: epic.number,
122
- task_issues: taskIssueMap,
123
- last_sync: (/* @__PURE__ */ new Date()).toISOString()
124
- });
125
- console.log(` \u2705 Saved to .github-sync.yaml`);
126
- metadata.github = {
127
- milestone: milestone.number,
128
- epic_issue: epic.number,
129
- task_issues: taskIssueMap,
130
- last_sync: (/* @__PURE__ */ new Date()).toISOString()
131
- };
132
- this.saveIncrementMetadata(metadata);
133
- console.log(`
134
- \u{1F389} GitHub sync complete!`);
135
- console.log(` \u{1F4CD} Milestone: #${milestone.number} ${milestone.title}`);
136
- console.log(` \u{1F3AF} Epic: #${epic.number} ${epic.html_url}`);
137
- console.log(` \u{1F4DD} Tasks: #${createdIssues[0]?.number}-#${createdIssues[createdIssues.length - 1]?.number} (${createdIssues.length} issues)`);
138
- return {
139
- milestone,
140
- epic,
141
- tasks: taskIssues,
142
- errors
143
- };
144
- } catch (error) {
145
- console.error(`
146
- \u274C Sync failed:`, error.message);
147
- throw error;
148
- }
149
- }
150
- /**
151
- * Generate epic issue body
152
- */
153
- generateEpicBody(metadata, tasks) {
154
- const specPath = path.join(this.incrementPath, "spec.md");
155
- let summary = "No summary available";
156
- if (fs.existsSync(specPath)) {
157
- const specContent = fs.readFileSync(specPath, "utf-8");
158
- const summaryMatch = specContent.match(/## Executive Summary\s+(.+?)(?=\n##|$)/s);
159
- summary = summaryMatch?.[1]?.trim() || summary;
160
- }
161
- const phases = /* @__PURE__ */ new Map();
162
- tasks.forEach((task) => {
163
- const phase = task.phase || "Other";
164
- if (!phases.has(phase)) {
165
- phases.set(phase, []);
166
- }
167
- phases.get(phase).push(task);
168
- });
169
- let phaseChecklist = "";
170
- for (const [phase, phaseTasks] of phases.entries()) {
171
- phaseChecklist += `
172
- ### ${phase}
173
-
174
- `;
175
- phaseTasks.forEach((task) => {
176
- phaseChecklist += `- [ ] [${task.id}] ${task.title} (${task.estimate})
177
- `;
178
- });
179
- }
180
- return `# [Increment ${metadata.id}] ${metadata.title}
181
-
182
- **Status**: ${metadata.status}
183
- **Priority**: ${metadata.priority}
184
- **Created**: ${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}
185
-
186
- ## Summary
187
-
188
- ${summary}
189
-
190
- ## Tasks (${tasks.length} total)
191
- ${phaseChecklist}
192
-
193
- ## SpecWeave Increment
194
-
195
- \u26A0\uFE0F **DEPRECATED FORMAT**: This issue was created using the old increment-based sync.
196
-
197
- **Correct data flow**: Increment \u2192 Living Docs \u2192 GitHub
198
-
199
- This epic tracks SpecWeave increment \`${metadata.id}\`.
200
-
201
- - **Spec**: [\`spec.md\`](${this.getGitHubFileURL("spec.md")})
202
- - **Plan**: [\`plan.md\`](${this.getGitHubFileURL("plan.md")})
203
- - **Tasks**: [\`tasks.md\`](${this.getGitHubFileURL("tasks.md")})
204
-
205
- ---
206
-
207
- \u{1F916} Auto-synced by [SpecWeave](https://spec-weave.com)`;
208
- }
209
- /**
210
- * Generate task issue body
211
- */
212
- generateTaskBody(task) {
213
- let body = `**Priority**: ${task.priority}
214
- **Estimate**: ${task.estimate}
215
- **Phase**: ${task.phase || "N/A"}
216
-
217
- ## Description
218
-
219
- ${task.description}
220
- `;
221
- if (task.subtasks && task.subtasks.length > 0) {
222
- body += `
223
- ## Subtasks
224
-
225
- `;
226
- task.subtasks.forEach((subtask) => {
227
- const checked = subtask.completed ? "x" : " ";
228
- body += `- [${checked}] ${subtask.id}: ${subtask.description} (${subtask.estimate})
229
- `;
230
- });
231
- }
232
- if (task.filesToCreate && task.filesToCreate.length > 0) {
233
- body += `
234
- ## Files to Create
235
-
236
- `;
237
- task.filesToCreate.forEach((file) => {
238
- body += `- \`${file}\`
239
- `;
240
- });
241
- }
242
- if (task.filesToModify && task.filesToModify.length > 0) {
243
- body += `
244
- ## Files to Modify
245
-
246
- `;
247
- task.filesToModify.forEach((file) => {
248
- body += `- \`${file}\`
249
- `;
250
- });
251
- }
252
- if (task.implementation) {
253
- body += `
254
- ## Implementation
255
-
256
- \`\`\`typescript
257
- ${task.implementation}
258
- \`\`\`
259
- `;
260
- }
261
- if (task.acceptanceCriteria && task.acceptanceCriteria.length > 0) {
262
- body += `
263
- ## Acceptance Criteria
264
-
265
- `;
266
- task.acceptanceCriteria.forEach((criterion) => {
267
- body += `- \u2705 ${criterion}
268
- `;
269
- });
270
- }
271
- if (task.dependencies && task.dependencies.length > 0) {
272
- body += `
273
- ## Dependencies
274
-
275
- This task depends on:
276
- `;
277
- task.dependencies.forEach((dep) => {
278
- body += `- ${dep} (must complete first)
279
- `;
280
- });
281
- }
282
- if (task.blocks && task.blocks.length > 0) {
283
- body += `
284
- ## Blocks
285
-
286
- This task blocks:
287
- `;
288
- task.blocks.forEach((blocked) => {
289
- body += `- ${blocked} (waiting on this)
290
- `;
291
- });
292
- }
293
- body += `
294
- ---
295
-
296
- \u{1F916} Synced from SpecWeave increment \`${path.basename(this.incrementPath)}\`
297
- `;
298
- body += `- **Tasks**: [\`tasks.md\`](${this.getGitHubFileURL("tasks.md")})
299
- `;
300
- return body;
301
- }
302
- /**
303
- * Load increment metadata
304
- */
305
- loadIncrementMetadata() {
306
- const metadataPath = path.join(this.incrementPath, ".metadata.yaml");
307
- if (fs.existsSync(metadataPath)) {
308
- const content = fs.readFileSync(metadataPath, "utf-8");
309
- return yaml.load(content);
310
- }
311
- const incrementId = path.basename(this.incrementPath);
312
- const specPath = path.join(this.incrementPath, "spec.md");
313
- let title = "Unknown";
314
- let priority = "P1";
315
- if (fs.existsSync(specPath)) {
316
- const specContent = fs.readFileSync(specPath, "utf-8");
317
- const titleMatch = specContent.match(/\*\*Title\*\*:\s*(.+)/);
318
- const priorityMatch = specContent.match(/\*\*Priority\*\*:\s*(P[0-3])/);
319
- title = titleMatch?.[1]?.trim() || title;
320
- priority = priorityMatch?.[1] || priority;
321
- }
322
- return {
323
- id: incrementId,
324
- title,
325
- priority,
326
- status: "planning"
327
- };
328
- }
329
- /**
330
- * Save increment metadata
331
- */
332
- saveIncrementMetadata(metadata) {
333
- const metadataPath = path.join(this.incrementPath, ".metadata.yaml");
334
- fs.writeFileSync(metadataPath, yaml.dump(metadata), "utf-8");
335
- }
336
- /**
337
- * Get issue prefix from metadata.json (with created date)
338
- * Returns FS-YY-MM-DD format or fallback to FS-UNKNOWN
339
- */
340
- getIssuePrefix(incrementId) {
341
- const metadataJsonPath = path.join(this.incrementPath, "metadata.json");
342
- if (fs.existsSync(metadataJsonPath)) {
343
- try {
344
- const metadataContent = fs.readFileSync(metadataJsonPath, "utf-8");
345
- const metadata = JSON.parse(metadataContent);
346
- if (metadata.created) {
347
- const dateMatch = metadata.created.match(/^(\d{4})-(\d{2})-(\d{2})/);
348
- if (dateMatch) {
349
- const year = dateMatch[1].slice(2);
350
- const month = dateMatch[2];
351
- const day = dateMatch[3];
352
- return `FS-${year}-${month}-${day}`;
353
- }
354
- }
355
- } catch (error) {
356
- console.warn(`\u26A0\uFE0F Could not parse metadata.json: ${error}`);
357
- }
358
- }
359
- const incrementNumber = incrementId.match(/^(\d+)/)?.[1];
360
- if (incrementNumber) {
361
- return `FS-${incrementNumber}`;
362
- }
363
- return "FS-UNKNOWN";
364
- }
365
- /**
366
- * Save sync mapping
367
- */
368
- saveSyncMapping(githubData) {
369
- const syncPath = path.join(this.incrementPath, ".github-sync.yaml");
370
- fs.writeFileSync(syncPath, yaml.dump(githubData), "utf-8");
371
- }
372
- /**
373
- * Get milestone title from metadata
374
- */
375
- getMilestoneTitle(metadata) {
376
- return metadata.version ? `v${metadata.version}` : `Increment ${metadata.id}`;
377
- }
378
- /**
379
- * Get GitHub file URL
380
- */
381
- getGitHubFileURL(filename) {
382
- try {
383
- const remote = this.client["detectRepo"]();
384
- const incrementId = path.basename(this.incrementPath);
385
- return `https://github.com/${remote}/blob/develop/.specweave/increments/${incrementId}/${filename}`;
386
- } catch {
387
- return `#`;
388
- }
389
- }
390
- /**
391
- * Convert string to slug
392
- */
393
- slugify(str) {
394
- return str.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
395
- }
396
- /**
397
- * Print dry run summary
398
- */
399
- printDryRunSummary(tasks, metadata) {
400
- const issuePrefix = this.getIssuePrefix(metadata.id);
401
- console.log(`
402
- \u{1F4CA} Dry Run Summary:`);
403
- console.log(` Milestone: ${this.getMilestoneTitle(metadata)}`);
404
- console.log(` Epic: [${issuePrefix}] ${metadata.title}`);
405
- console.log(` Task Issues: ${tasks.length}`);
406
- console.log(`
407
- \u{1F4DD} Would create:`);
408
- tasks.forEach((task, i) => {
409
- console.log(` ${i + 1}. [${task.id}] ${task.title} (${task.estimate})`);
410
- });
411
- }
412
- }
413
- export {
414
- TaskSync
415
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-sync.js","sourceRoot":"","sources":["task-sync.ts"],"names":[],"mappings":"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"}