specweave 0.4.1 → 0.6.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 (392) hide show
  1. package/.claude-plugin/README.md +325 -0
  2. package/.claude-plugin/marketplace.json +210 -0
  3. package/CLAUDE.md +871 -596
  4. package/README.md +188 -137
  5. package/bin/install-agents.sh +1 -1
  6. package/bin/install-commands.sh +66 -14
  7. package/bin/install-hooks.sh +1 -1
  8. package/bin/install-skills.sh +1 -1
  9. package/bin/specweave.js +2 -0
  10. package/dist/adapters/claude/adapter.d.ts +49 -11
  11. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  12. package/dist/adapters/claude/adapter.js +175 -42
  13. package/dist/adapters/claude/adapter.js.map +1 -1
  14. package/dist/adapters/copilot/adapter.d.ts +20 -2
  15. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  16. package/dist/adapters/copilot/adapter.js +117 -7
  17. package/dist/adapters/copilot/adapter.js.map +1 -1
  18. package/dist/adapters/cursor/adapter.d.ts +18 -0
  19. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  20. package/dist/adapters/cursor/adapter.js +55 -3
  21. package/dist/adapters/cursor/adapter.js.map +1 -1
  22. package/dist/adapters/generic/adapter.d.ts +18 -0
  23. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  24. package/dist/adapters/generic/adapter.js +55 -3
  25. package/dist/adapters/generic/adapter.js.map +1 -1
  26. package/dist/cli/commands/init.d.ts +1 -0
  27. package/dist/cli/commands/init.d.ts.map +1 -1
  28. package/dist/cli/commands/init.js +346 -124
  29. package/dist/cli/commands/init.js.map +1 -1
  30. package/dist/cli/commands/install.d.ts +2 -0
  31. package/dist/cli/commands/install.d.ts.map +1 -1
  32. package/dist/cli/commands/install.js +28 -25
  33. package/dist/cli/commands/install.js.map +1 -1
  34. package/dist/cli/commands/list.d.ts +2 -0
  35. package/dist/cli/commands/list.d.ts.map +1 -1
  36. package/dist/cli/commands/list.js +26 -24
  37. package/dist/cli/commands/list.js.map +1 -1
  38. package/dist/cli/commands/plugin.d.ts +7 -1
  39. package/dist/cli/commands/plugin.d.ts.map +1 -1
  40. package/dist/cli/commands/plugin.js +72 -61
  41. package/dist/cli/commands/plugin.js.map +1 -1
  42. package/dist/core/i18n/language-detector.d.ts +29 -0
  43. package/dist/core/i18n/language-detector.d.ts.map +1 -0
  44. package/dist/core/i18n/language-detector.js +143 -0
  45. package/dist/core/i18n/language-detector.js.map +1 -0
  46. package/dist/core/i18n/language-manager.d.ts +101 -0
  47. package/dist/core/i18n/language-manager.d.ts.map +1 -0
  48. package/dist/core/i18n/language-manager.js +232 -0
  49. package/dist/core/i18n/language-manager.js.map +1 -0
  50. package/dist/core/i18n/language-registry.d.ts +44 -0
  51. package/dist/core/i18n/language-registry.d.ts.map +1 -0
  52. package/dist/core/i18n/language-registry.js +234 -0
  53. package/dist/core/i18n/language-registry.js.map +1 -0
  54. package/dist/core/i18n/locale-manager.d.ts +62 -0
  55. package/dist/core/i18n/locale-manager.d.ts.map +1 -0
  56. package/dist/core/i18n/locale-manager.js +137 -0
  57. package/dist/core/i18n/locale-manager.js.map +1 -0
  58. package/dist/core/i18n/system-prompt-injector.d.ts +33 -0
  59. package/dist/core/i18n/system-prompt-injector.d.ts.map +1 -0
  60. package/dist/core/i18n/system-prompt-injector.js +131 -0
  61. package/dist/core/i18n/system-prompt-injector.js.map +1 -0
  62. package/dist/core/i18n/types.d.ts +151 -0
  63. package/dist/core/i18n/types.d.ts.map +1 -0
  64. package/dist/core/i18n/types.js +11 -0
  65. package/dist/core/i18n/types.js.map +1 -0
  66. package/dist/core/increment-status.d.ts +72 -0
  67. package/dist/core/increment-status.d.ts.map +1 -0
  68. package/dist/core/increment-status.js +227 -0
  69. package/dist/core/increment-status.js.map +1 -0
  70. package/dist/core/plugin-loader.d.ts +33 -13
  71. package/dist/core/plugin-loader.d.ts.map +1 -1
  72. package/dist/core/plugin-loader.js +145 -43
  73. package/dist/core/plugin-loader.js.map +1 -1
  74. package/dist/core/types/config.d.ts +51 -0
  75. package/dist/core/types/config.d.ts.map +1 -0
  76. package/dist/core/types/config.js +21 -0
  77. package/dist/core/types/config.js.map +1 -0
  78. package/dist/core/types/plugin.d.ts +73 -42
  79. package/dist/core/types/plugin.d.ts.map +1 -1
  80. package/dist/core/types/plugin.js +4 -3
  81. package/dist/core/types/plugin.js.map +1 -1
  82. package/dist/hooks/lib/sync-living-docs.d.ts +27 -0
  83. package/dist/hooks/lib/sync-living-docs.d.ts.map +1 -0
  84. package/dist/hooks/lib/sync-living-docs.js +116 -0
  85. package/dist/hooks/lib/sync-living-docs.js.map +1 -0
  86. package/dist/hooks/lib/translate-living-docs.d.ts +13 -0
  87. package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -0
  88. package/dist/hooks/lib/translate-living-docs.js +166 -0
  89. package/dist/hooks/lib/translate-living-docs.js.map +1 -0
  90. package/dist/hooks/lib/update-tasks-md.d.ts +29 -0
  91. package/dist/hooks/lib/update-tasks-md.d.ts.map +1 -0
  92. package/dist/hooks/lib/update-tasks-md.js +203 -0
  93. package/dist/hooks/lib/update-tasks-md.js.map +1 -0
  94. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -1
  95. package/dist/integrations/jira/jira-mapper.js.map +1 -1
  96. package/dist/locales/de/.gitkeep +0 -0
  97. package/dist/locales/de/cli.json +108 -0
  98. package/dist/locales/en/cli.json +269 -0
  99. package/dist/locales/en/errors.json +7 -0
  100. package/dist/locales/en/templates.json +6 -0
  101. package/dist/locales/es/.gitkeep +0 -0
  102. package/dist/locales/es/cli.json +41 -0
  103. package/dist/locales/fr/.gitkeep +0 -0
  104. package/dist/locales/fr/cli.json +108 -0
  105. package/dist/locales/ja/.gitkeep +0 -0
  106. package/dist/locales/ja/cli.json +108 -0
  107. package/dist/locales/ko/.gitkeep +0 -0
  108. package/dist/locales/ko/cli.json +108 -0
  109. package/dist/locales/pt/.gitkeep +0 -0
  110. package/dist/locales/pt/cli.json +108 -0
  111. package/dist/locales/ru/.gitkeep +0 -0
  112. package/dist/locales/ru/cli.json +269 -0
  113. package/dist/locales/zh/.gitkeep +0 -0
  114. package/dist/locales/zh/cli.json +108 -0
  115. package/dist/plugins/specweave-github/lib/github-client.d.ts +86 -0
  116. package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -0
  117. package/dist/plugins/specweave-github/lib/github-client.js +275 -0
  118. package/dist/plugins/specweave-github/lib/github-client.js.map +1 -0
  119. package/dist/plugins/specweave-github/lib/index.d.ts +10 -0
  120. package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -0
  121. package/dist/plugins/specweave-github/lib/index.js +10 -0
  122. package/dist/plugins/specweave-github/lib/index.js.map +1 -0
  123. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +51 -0
  124. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -0
  125. package/dist/plugins/specweave-github/lib/subtask-sync.js +147 -0
  126. package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -0
  127. package/dist/plugins/specweave-github/lib/task-parser.d.ts +37 -0
  128. package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -0
  129. package/dist/plugins/specweave-github/lib/task-parser.js +211 -0
  130. package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -0
  131. package/dist/plugins/specweave-github/lib/task-sync.d.ts +51 -0
  132. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -0
  133. package/dist/plugins/specweave-github/lib/task-sync.js +332 -0
  134. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -0
  135. package/dist/plugins/specweave-github/lib/types.d.ts +80 -0
  136. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -0
  137. package/dist/plugins/specweave-github/lib/types.js +5 -0
  138. package/dist/plugins/specweave-github/lib/types.js.map +1 -0
  139. package/dist/utils/agents-md-compiler.d.ts +68 -0
  140. package/dist/utils/agents-md-compiler.d.ts.map +1 -0
  141. package/dist/utils/agents-md-compiler.js +420 -0
  142. package/dist/utils/agents-md-compiler.js.map +1 -0
  143. package/dist/utils/generate-skills-index.js +4 -4
  144. package/dist/utils/generate-skills-index.js.map +1 -1
  145. package/package.json +12 -13
  146. package/plugins/specweave-ado/.claude-plugin/plugin.json +8 -0
  147. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +8 -0
  148. package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +626 -0
  149. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
  150. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +208 -0
  151. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
  152. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
  153. package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +1010 -0
  154. package/plugins/specweave-backend/.claude-plugin/plugin.json +8 -0
  155. package/plugins/specweave-core/.claude-plugin/plugin.json +25 -0
  156. package/{src → plugins/specweave-core}/agents/pm/AGENT.md +80 -0
  157. package/plugins/specweave-core/agents/translator/AGENT.md +282 -0
  158. package/{src → plugins/specweave-core}/commands/README.md +11 -11
  159. package/{src → plugins/specweave-core}/commands/specweave.costs.md +7 -7
  160. package/{src → plugins/specweave-core}/commands/specweave.do.md +34 -7
  161. package/{src → plugins/specweave-core}/commands/specweave.increment.md +83 -18
  162. package/{src → plugins/specweave-core}/commands/specweave.md +49 -17
  163. package/{src → plugins/specweave-core}/commands/specweave.sync-docs.md +5 -5
  164. package/plugins/specweave-core/commands/specweave.translate.md +425 -0
  165. package/{src → plugins/specweave-core}/commands/specweave.validate.md +1 -1
  166. package/plugins/specweave-core/hooks/hooks.json +13 -0
  167. package/plugins/specweave-core/hooks/post-task-completion.sh +265 -0
  168. package/plugins/specweave-core/skills/SKILLS-INDEX.md +229 -0
  169. package/{src → plugins/specweave-core}/skills/brownfield-analyzer/SKILL.md +66 -24
  170. package/{src → plugins/specweave-core}/skills/context-loader/SKILL.md +1 -1
  171. package/plugins/specweave-core/skills/context-optimizer/SKILL.md +588 -0
  172. package/plugins/specweave-core/skills/docs-updater/SKILL.md +0 -0
  173. package/{src → plugins/specweave-core}/skills/increment-planner/SKILL.md +81 -4
  174. package/plugins/specweave-core/skills/plugin-detector/SKILL.md +211 -0
  175. package/{src → plugins/specweave-core}/skills/project-kickstarter/SKILL.md +7 -7
  176. package/plugins/specweave-core/skills/rfc-generator/SKILL.md +369 -0
  177. package/{src → plugins/specweave-core}/skills/specweave-detector/SKILL.md +2 -2
  178. package/plugins/specweave-core/skills/specweave-framework/SKILL.md +498 -0
  179. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
  180. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
  181. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
  182. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
  183. package/{src → plugins/specweave-core}/skills/tdd-workflow/SKILL.md +20 -20
  184. package/plugins/specweave-core/skills/translator/SKILL.md +172 -0
  185. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +8 -0
  186. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +8 -0
  187. package/plugins/specweave-docs/.claude-plugin/plugin.json +8 -0
  188. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +526 -0
  189. package/plugins/specweave-figma/.claude-plugin/.mcp.json +12 -0
  190. package/plugins/specweave-figma/.claude-plugin/plugin.json +8 -0
  191. package/plugins/specweave-figma/ARCHITECTURE.md +453 -0
  192. package/plugins/specweave-figma/README.md +728 -0
  193. package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +632 -0
  194. package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +29 -0
  195. package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +27 -0
  196. package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +28 -0
  197. package/plugins/specweave-frontend/.claude-plugin/plugin.json +8 -0
  198. package/plugins/specweave-github/.claude-plugin/plugin.json +8 -0
  199. package/plugins/specweave-github/agents/github-manager/AGENT.md +651 -0
  200. package/plugins/specweave-github/commands/github-close-issue.md +418 -0
  201. package/plugins/specweave-github/commands/github-create-issue.md +307 -0
  202. package/plugins/specweave-github/commands/github-status.md +533 -0
  203. package/plugins/specweave-github/commands/github-sync-tasks.md +530 -0
  204. package/plugins/specweave-github/commands/github-sync.md +443 -0
  205. package/plugins/specweave-github/lib/github-client.ts +330 -0
  206. package/plugins/specweave-github/lib/index.ts +10 -0
  207. package/plugins/specweave-github/lib/subtask-sync.ts +225 -0
  208. package/plugins/specweave-github/lib/task-parser.ts +246 -0
  209. package/plugins/specweave-github/lib/task-sync.ts +402 -0
  210. package/plugins/specweave-github/lib/types.ts +86 -0
  211. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +497 -0
  212. package/plugins/specweave-github/skills/github-sync/SKILL.md +461 -0
  213. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +8 -0
  214. package/plugins/specweave-jira/.claude-plugin/plugin.json +8 -0
  215. package/{src → plugins/specweave-jira}/commands/specweave.sync-jira.md +18 -18
  216. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +8 -0
  217. package/plugins/specweave-ml/.claude-plugin/plugin.json +39 -0
  218. package/plugins/specweave-ml/README.md +885 -0
  219. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +402 -0
  220. package/plugins/specweave-ml/commands/ml-deploy.md +116 -0
  221. package/plugins/specweave-ml/commands/ml-evaluate.md +87 -0
  222. package/plugins/specweave-ml/commands/ml-explain.md +83 -0
  223. package/plugins/specweave-ml/skills/anomaly-detector/SKILL.md +559 -0
  224. package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +485 -0
  225. package/plugins/specweave-ml/skills/cv-pipeline-builder/SKILL.md +157 -0
  226. package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +521 -0
  227. package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +535 -0
  228. package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +566 -0
  229. package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +345 -0
  230. package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +518 -0
  231. package/plugins/specweave-ml/skills/model-evaluator/SKILL.md +155 -0
  232. package/plugins/specweave-ml/skills/model-explainer/SKILL.md +227 -0
  233. package/plugins/specweave-ml/skills/model-registry/SKILL.md +541 -0
  234. package/plugins/specweave-ml/skills/nlp-pipeline-builder/SKILL.md +180 -0
  235. package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +569 -0
  236. package/plugins/specweave-payments/.claude-plugin/plugin.json +8 -0
  237. package/plugins/specweave-testing/.claude-plugin/plugin.json +8 -0
  238. package/plugins/specweave-tooling/.claude-plugin/plugin.json +8 -0
  239. package/plugins/specweave-ui/.claude-plugin/plugin.json +106 -0
  240. package/plugins/specweave-ui/.mcp.json +14 -0
  241. package/plugins/specweave-ui/README.md +386 -0
  242. package/src/adapters/claude/adapter.ts +193 -46
  243. package/src/adapters/copilot/adapter.ts +132 -7
  244. package/src/adapters/cursor/adapter.ts +62 -3
  245. package/src/adapters/generic/adapter.ts +62 -3
  246. package/src/templates/AGENTS.md.template +170 -1
  247. package/src/templates/CLAUDE.md.template +122 -24
  248. package/src/templates/tasks.md.template +261 -0
  249. package/src/agents/ml-engineer/AGENT.md +0 -150
  250. package/src/commands/specweave.sync-github.md +0 -269
  251. package/src/hooks/post-task-completion.sh +0 -121
  252. package/src/skills/SKILLS-INDEX.md +0 -444
  253. package/src/skills/github-sync/SKILL.md +0 -234
  254. /package/{src → plugins/specweave-ado}/skills/ado-sync/README.md +0 -0
  255. /package/{src → plugins/specweave-ado}/skills/ado-sync/SKILL.md +0 -0
  256. /package/{src → plugins/specweave-ado}/skills/specweave-ado-mapper/SKILL.md +0 -0
  257. /package/{src → plugins/specweave-backend}/agents/database-optimizer/AGENT.md +0 -0
  258. /package/{src → plugins/specweave-backend}/skills/dotnet-backend/SKILL.md +0 -0
  259. /package/{src → plugins/specweave-backend}/skills/nodejs-backend/SKILL.md +0 -0
  260. /package/{src → plugins/specweave-backend}/skills/python-backend/SKILL.md +0 -0
  261. /package/{src → plugins/specweave-core}/agents/architect/AGENT.md +0 -0
  262. /package/{src → plugins/specweave-core}/agents/code-reviewer.md +0 -0
  263. /package/{src → plugins/specweave-core}/agents/docs-writer/AGENT.md +0 -0
  264. /package/{src → plugins/specweave-core}/agents/performance/AGENT.md +0 -0
  265. /package/{src → plugins/specweave-core}/agents/qa-lead/AGENT.md +0 -0
  266. /package/{src → plugins/specweave-core}/agents/security/AGENT.md +0 -0
  267. /package/{src → plugins/specweave-core}/agents/tdd-orchestrator/AGENT.md +0 -0
  268. /package/{src → plugins/specweave-core}/agents/tech-lead/AGENT.md +0 -0
  269. /package/{src → plugins/specweave-core}/commands/specweave.done.md +0 -0
  270. /package/{src → plugins/specweave-core}/commands/specweave.inc.md +0 -0
  271. /package/{src → plugins/specweave-core}/commands/specweave.list-increments.md +0 -0
  272. /package/{src → plugins/specweave-core}/commands/specweave.next.md +0 -0
  273. /package/{src → plugins/specweave-core}/commands/specweave.progress.md +0 -0
  274. /package/{src → plugins/specweave-core}/commands/specweave.tdd-cycle.md +0 -0
  275. /package/{src → plugins/specweave-core}/commands/specweave.tdd-green.md +0 -0
  276. /package/{src → plugins/specweave-core}/commands/specweave.tdd-red.md +0 -0
  277. /package/{src → plugins/specweave-core}/commands/specweave.tdd-refactor.md +0 -0
  278. /package/{src → plugins/specweave-core}/hooks/README.md +0 -0
  279. /package/{src → plugins/specweave-core}/hooks/docs-changed.sh +0 -0
  280. /package/{src → plugins/specweave-core}/hooks/human-input-required.sh +0 -0
  281. /package/{src → plugins/specweave-core}/hooks/post-increment-plugin-detect.sh +0 -0
  282. /package/{src → plugins/specweave-core}/hooks/pre-implementation.sh +0 -0
  283. /package/{src → plugins/specweave-core}/hooks/pre-task-plugin-detect.sh +0 -0
  284. /package/{src → plugins/specweave-core}/skills/brownfield-onboarder/SKILL.md +0 -0
  285. /package/{src → plugins/specweave-core}/skills/docs-updater/README.md +0 -0
  286. /package/{src → plugins/specweave-core}/skills/increment-planner/scripts/feature-utils.js +0 -0
  287. /package/{src → plugins/specweave-core}/skills/increment-quality-judge/SKILL.md +0 -0
  288. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
  289. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
  290. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
  291. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
  292. /package/{src → plugins/specweave-core}/skills/role-orchestrator/README.md +0 -0
  293. /package/{src → plugins/specweave-core}/skills/role-orchestrator/SKILL.md +0 -0
  294. /package/{src → plugins/specweave-core}/skills/task-builder/README.md +0 -0
  295. /package/{src → plugins/specweave-cost-optimizer}/skills/cost-optimizer/SKILL.md +0 -0
  296. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/AGENT.md +0 -0
  297. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-component-template.mmd +0 -0
  298. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-container-template.mmd +0 -0
  299. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-context-template.mmd +0 -0
  300. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/deployment-template.mmd +0 -0
  301. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/er-diagram-template.mmd +0 -0
  302. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/sequence-template.mmd +0 -0
  303. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -0
  304. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-2-sequence.yaml +0 -0
  305. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -0
  306. /package/{src → plugins/specweave-diagrams}/skills/diagrams-architect/SKILL.md +0 -0
  307. /package/{src → plugins/specweave-diagrams}/skills/diagrams-generator/SKILL.md +0 -0
  308. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/README.md +0 -0
  309. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/SKILL.md +0 -0
  310. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/README.md +0 -0
  311. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/SKILL.md +0 -0
  312. /package/{src → plugins/specweave-frontend}/skills/design-system-architect/SKILL.md +0 -0
  313. /package/{src → plugins/specweave-frontend}/skills/frontend/SKILL.md +0 -0
  314. /package/{src → plugins/specweave-frontend}/skills/nextjs/SKILL.md +0 -0
  315. /package/{src → plugins/specweave-infrastructure}/agents/devops/AGENT.md +0 -0
  316. /package/{src → plugins/specweave-infrastructure}/agents/network-engineer/AGENT.md +0 -0
  317. /package/{src → plugins/specweave-infrastructure}/agents/observability-engineer/AGENT.md +0 -0
  318. /package/{src → plugins/specweave-infrastructure}/agents/performance-engineer/AGENT.md +0 -0
  319. /package/{src → plugins/specweave-infrastructure}/agents/sre/AGENT.md +0 -0
  320. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/backend-diagnostics.md +0 -0
  321. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/database-diagnostics.md +0 -0
  322. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/infrastructure.md +0 -0
  323. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/monitoring.md +0 -0
  324. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/security-incidents.md +0 -0
  325. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/ui-diagnostics.md +0 -0
  326. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/01-high-cpu-usage.md +0 -0
  327. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/02-database-deadlock.md +0 -0
  328. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/03-memory-leak.md +0 -0
  329. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/04-slow-api-response.md +0 -0
  330. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/05-ddos-attack.md +0 -0
  331. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/06-disk-full.md +0 -0
  332. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/07-service-down.md +0 -0
  333. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/08-data-corruption.md +0 -0
  334. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/09-cascade-failure.md +0 -0
  335. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/10-rate-limit-exceeded.md +0 -0
  336. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/health-check.sh +0 -0
  337. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/log-analyzer.py +0 -0
  338. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/metrics-collector.sh +0 -0
  339. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/trace-analyzer.js +0 -0
  340. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/incident-report.md +0 -0
  341. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/mitigation-plan.md +0 -0
  342. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/post-mortem.md +0 -0
  343. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/runbook-template.md +0 -0
  344. /package/{src → plugins/specweave-infrastructure}/commands/specweave.monitor-setup.md +0 -0
  345. /package/{src → plugins/specweave-infrastructure}/commands/specweave.slo-implement.md +0 -0
  346. /package/{src → plugins/specweave-infrastructure}/skills/distributed-tracing/SKILL.md +0 -0
  347. /package/{src → plugins/specweave-infrastructure}/skills/grafana-dashboards/SKILL.md +0 -0
  348. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/README.md +0 -0
  349. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/SKILL.md +0 -0
  350. /package/{src → plugins/specweave-infrastructure}/skills/prometheus-configuration/SKILL.md +0 -0
  351. /package/{src → plugins/specweave-infrastructure}/skills/slo-implementation/SKILL.md +0 -0
  352. /package/{src → plugins/specweave-jira}/skills/jira-sync/README.md +0 -0
  353. /package/{src → plugins/specweave-jira}/skills/jira-sync/SKILL.md +0 -0
  354. /package/{src → plugins/specweave-jira}/skills/specweave-jira-mapper/SKILL.md +0 -0
  355. /package/{src → plugins/specweave-kubernetes}/agents/kubernetes-architect/AGENT.md +0 -0
  356. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/SKILL.md +0 -0
  357. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/argocd-setup.md +0 -0
  358. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/sync-policies.md +0 -0
  359. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/SKILL.md +0 -0
  360. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -0
  361. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -0
  362. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/references/chart-structure.md +0 -0
  363. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -0
  364. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/SKILL.md +0 -0
  365. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/configmap-template.yaml +0 -0
  366. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/deployment-template.yaml +0 -0
  367. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/service-template.yaml +0 -0
  368. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/deployment-spec.md +0 -0
  369. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/service-spec.md +0 -0
  370. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/SKILL.md +0 -0
  371. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/assets/network-policy-template.yaml +0 -0
  372. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/references/rbac-patterns.md +0 -0
  373. /package/{src → plugins/specweave-ml}/agents/data-scientist/AGENT.md +0 -0
  374. /package/{src → plugins/specweave-ml}/agents/mlops-engineer/AGENT.md +0 -0
  375. /package/{src → plugins/specweave-ml}/commands/specweave.ml-pipeline.md +0 -0
  376. /package/{src → plugins/specweave-ml}/skills/ml-pipeline-workflow/SKILL.md +0 -0
  377. /package/{src → plugins/specweave-payments}/agents/payment-integration/AGENT.md +0 -0
  378. /package/{src → plugins/specweave-payments}/skills/billing-automation/SKILL.md +0 -0
  379. /package/{src → plugins/specweave-payments}/skills/paypal-integration/SKILL.md +0 -0
  380. /package/{src → plugins/specweave-payments}/skills/pci-compliance/SKILL.md +0 -0
  381. /package/{src → plugins/specweave-payments}/skills/stripe-integration/SKILL.md +0 -0
  382. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/README.md +0 -0
  383. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/SKILL.md +0 -0
  384. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/execute.js +0 -0
  385. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/lib/utils.js +0 -0
  386. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/package.json +0 -0
  387. /package/{src → plugins/specweave-tooling}/skills/skill-creator/LICENSE.txt +0 -0
  388. /package/{src → plugins/specweave-tooling}/skills/skill-creator/SKILL.md +0 -0
  389. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/init_skill.py +0 -0
  390. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/package_skill.py +0 -0
  391. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/quick_validate.py +0 -0
  392. /package/{src → plugins/specweave-tooling}/skills/skill-router/SKILL.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../../../../src/plugins/specweave-github/lib/task-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,IAAI,EAAW,MAAM,SAAS,CAAC;AAExC,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE;IAWpD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE;IAwB1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA8BxB,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAKjC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAKjC,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B,OAAO,CAAC,MAAM,CAAC,eAAe;IA6B9B,OAAO,CAAC,MAAM,CAAC,YAAY;IAS3B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAKpC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAQxC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAChC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,IAAI;CAuCR"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Parser for tasks.md files
3
+ * Extracts task information for GitHub sync
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ export class TaskParser {
8
+ /**
9
+ * Parse tasks.md file and extract all tasks
10
+ */
11
+ static parseTasksFile(incrementPath) {
12
+ const tasksPath = path.join(incrementPath, 'tasks.md');
13
+ if (!fs.existsSync(tasksPath)) {
14
+ throw new Error(`tasks.md not found at ${tasksPath}`);
15
+ }
16
+ const content = fs.readFileSync(tasksPath, 'utf-8');
17
+ return this.parseTasks(content);
18
+ }
19
+ /**
20
+ * Parse task content into structured Task objects
21
+ */
22
+ static parseTasks(content) {
23
+ const tasks = [];
24
+ // Split by task headers (### T-XXX:)
25
+ const taskPattern = /###\s+(T-\d+(?:-[A-Z])?):\s+(.+?)$/gm;
26
+ const matches = [...content.matchAll(taskPattern)];
27
+ for (let i = 0; i < matches.length; i++) {
28
+ const match = matches[i];
29
+ const taskId = match[1];
30
+ const taskTitle = match[2].trim();
31
+ const startIndex = match.index;
32
+ const endIndex = i < matches.length - 1 ? matches[i + 1].index : content.length;
33
+ const taskContent = content.substring(startIndex, endIndex);
34
+ const task = this.parseTask(taskId, taskTitle, taskContent);
35
+ if (task) {
36
+ tasks.push(task);
37
+ }
38
+ }
39
+ return tasks;
40
+ }
41
+ /**
42
+ * Parse individual task section
43
+ */
44
+ static parseTask(taskId, taskTitle, content) {
45
+ try {
46
+ const task = {
47
+ id: taskId,
48
+ title: taskTitle,
49
+ priority: this.extractPriority(content),
50
+ estimate: this.extractEstimate(content),
51
+ status: this.extractStatus(content),
52
+ description: this.extractDescription(content),
53
+ };
54
+ // Optional fields
55
+ task.githubIssue = this.extractGitHubIssue(content);
56
+ task.assignee = this.extractAssignee(content);
57
+ task.subtasks = this.extractSubtasks(content);
58
+ task.filesToCreate = this.extractFiles(content, 'Files to Create');
59
+ task.filesToModify = this.extractFiles(content, 'Files to Modify');
60
+ task.implementation = this.extractImplementation(content);
61
+ task.acceptanceCriteria = this.extractAcceptanceCriteria(content);
62
+ task.dependencies = this.extractDependencies(content);
63
+ task.blocks = this.extractBlocks(content);
64
+ task.phase = this.extractPhase(content);
65
+ return task;
66
+ }
67
+ catch (error) {
68
+ console.error(`Error parsing task ${taskId}:`, error);
69
+ return null;
70
+ }
71
+ }
72
+ static extractPriority(content) {
73
+ const match = content.match(/\*\*Priority\*\*:\s+(P[0-3])/);
74
+ return match?.[1] || 'P1';
75
+ }
76
+ static extractEstimate(content) {
77
+ const match = content.match(/\*\*Estimate\*\*:\s+(.+?)$/m);
78
+ return match?.[1]?.trim() || 'Unknown';
79
+ }
80
+ static extractStatus(content) {
81
+ const match = content.match(/\*\*Status\*\*:\s+(\w+)/);
82
+ const status = match?.[1];
83
+ if (status === 'pending' || status === 'in_progress' || status === 'completed' || status === 'blocked') {
84
+ return status;
85
+ }
86
+ return 'pending';
87
+ }
88
+ static extractDescription(content) {
89
+ const match = content.match(/\*\*Description\*\*:\s*\n(.+?)(?=\n\*\*|$)/s);
90
+ return match?.[1]?.trim() || '';
91
+ }
92
+ static extractGitHubIssue(content) {
93
+ const match = content.match(/\*\*GitHub Issue\*\*:\s+#(\d+)/);
94
+ return match ? parseInt(match[1], 10) : undefined;
95
+ }
96
+ static extractAssignee(content) {
97
+ const match = content.match(/\*\*Assignee\*\*:\s+@?(\w+)/);
98
+ return match?.[1];
99
+ }
100
+ static extractSubtasks(content) {
101
+ const subtaskSection = content.match(/\*\*Subtasks\*\*:?\s*\n((?:- \[.\] .+\n?)+)/);
102
+ if (!subtaskSection)
103
+ return undefined;
104
+ const subtaskLines = subtaskSection[1].match(/- \[(x| )\] (.+?)(?:\((.+?)\))?$/gm);
105
+ if (!subtaskLines)
106
+ return undefined;
107
+ return subtaskLines.map(line => {
108
+ const match = line.match(/- \[(x| )\] (.+?)(?:\((.+?)\))?$/);
109
+ if (!match)
110
+ return null;
111
+ const completed = match[1] === 'x';
112
+ const description = match[2].trim();
113
+ const estimate = match[3]?.trim() || 'Unknown';
114
+ // Extract subtask ID if present (S-XXX-XX format)
115
+ const idMatch = description.match(/^(S-\d+-\d+):\s*(.+)/);
116
+ const id = idMatch ? idMatch[1] : `S-${Date.now()}`; // Fallback ID
117
+ const cleanDescription = idMatch ? idMatch[2] : description;
118
+ return {
119
+ id,
120
+ description: cleanDescription,
121
+ estimate,
122
+ completed
123
+ };
124
+ }).filter((st) => st !== null);
125
+ }
126
+ static extractFiles(content, section) {
127
+ const pattern = new RegExp(`\\*\\*${section}\\*\\*:?\\s*\\n((?:- \`.+?\`\\n?)+)`, 's');
128
+ const match = content.match(pattern);
129
+ if (!match)
130
+ return undefined;
131
+ const files = match[1].match(/- `(.+?)`/g);
132
+ return files?.map(f => f.replace(/- `(.+?)`/, '$1'));
133
+ }
134
+ static extractImplementation(content) {
135
+ const match = content.match(/\*\*Implementation\*\*:?\s*\n```[\w]*\n([\s\S]+?)\n```/);
136
+ return match?.[1]?.trim();
137
+ }
138
+ static extractAcceptanceCriteria(content) {
139
+ const match = content.match(/\*\*Acceptance Criteria\*\*:?\s*\n((?:- .+\n?)+)/);
140
+ if (!match)
141
+ return undefined;
142
+ const criteria = match[1].match(/- (.+)/g);
143
+ return criteria?.map(c => c.replace(/^- /, '').replace(/^āœ…\s*/, ''));
144
+ }
145
+ static extractDependencies(content) {
146
+ const match = content.match(/\*\*Dependencies\*\*:?\s*\n((?:- .+\n?)+)/);
147
+ if (!match)
148
+ return undefined;
149
+ const deps = match[1].match(/- (T-\d+(?:-[A-Z])?)/g);
150
+ return deps?.map(d => d.replace(/^- /, '').match(/(T-\d+(?:-[A-Z])?)/)?.[1]).filter((d) => !!d);
151
+ }
152
+ static extractBlocks(content) {
153
+ const match = content.match(/\*\*Blocks\*\*:?\s*\n((?:- .+\n?)+)/);
154
+ if (!match)
155
+ return undefined;
156
+ const blocks = match[1].match(/- (T-\d+(?:-[A-Z])?)/g);
157
+ return blocks?.map(b => b.replace(/^- /, '').match(/(T-\d+(?:-[A-Z])?)/)?.[1]).filter((b) => !!b);
158
+ }
159
+ static extractPhase(content) {
160
+ // Look backwards in content to find phase header
161
+ const lines = content.split('\n');
162
+ for (let i = 0; i < lines.length; i++) {
163
+ const line = lines[i];
164
+ if (line.startsWith('##') && !line.startsWith('###')) {
165
+ const phaseMatch = line.match(/##\s+(.+?)(?:\s+-\s+\d+\s+tasks)?$/);
166
+ if (phaseMatch) {
167
+ return phaseMatch[1].trim();
168
+ }
169
+ }
170
+ }
171
+ return undefined;
172
+ }
173
+ /**
174
+ * Update tasks.md file with GitHub issue numbers
175
+ */
176
+ static updateTasksWithGitHubIssues(incrementPath, taskIssueMap) {
177
+ const tasksPath = path.join(incrementPath, 'tasks.md');
178
+ let content = fs.readFileSync(tasksPath, 'utf-8');
179
+ for (const [taskId, issueNumber] of Object.entries(taskIssueMap)) {
180
+ // Find task section
181
+ const taskHeaderPattern = new RegExp(`(###\\s+${taskId}:.+?$)`, 'm');
182
+ const match = content.match(taskHeaderPattern);
183
+ if (!match)
184
+ continue;
185
+ const taskStart = match.index;
186
+ const nextTaskPattern = /###\s+T-\d+(?:-[A-Z])?:/g;
187
+ nextTaskPattern.lastIndex = taskStart + match[0].length;
188
+ const nextMatch = nextTaskPattern.exec(content);
189
+ const taskEnd = nextMatch ? nextMatch.index : content.length;
190
+ const taskSection = content.substring(taskStart, taskEnd);
191
+ // Check if GitHub Issue field already exists
192
+ if (taskSection.includes('**GitHub Issue**:')) {
193
+ // Update existing
194
+ const updatedSection = taskSection.replace(/\*\*GitHub Issue\*\*:.+$/m, `**GitHub Issue**: #${issueNumber}`);
195
+ content = content.substring(0, taskStart) + updatedSection + content.substring(taskEnd);
196
+ }
197
+ else {
198
+ // Add after Status line
199
+ const statusLinePattern = /(\*\*Status\*\*:.+?$)/m;
200
+ const statusMatch = taskSection.match(statusLinePattern);
201
+ if (statusMatch) {
202
+ const insertPoint = taskStart + taskSection.indexOf(statusMatch[0]) + statusMatch[0].length;
203
+ const insertion = `\n**GitHub Issue**: #${issueNumber}`;
204
+ content = content.substring(0, insertPoint) + insertion + content.substring(insertPoint);
205
+ }
206
+ }
207
+ }
208
+ fs.writeFileSync(tasksPath, content, 'utf-8');
209
+ }
210
+ }
211
+ //# sourceMappingURL=task-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../../../../src/plugins/specweave-github/lib/task-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Task-level GitHub synchronization
3
+ * Orchestrates syncing tasks.md to GitHub issues
4
+ */
5
+ import { SyncResult, GitHubSyncOptions } from './types';
6
+ export declare class TaskSync {
7
+ private client;
8
+ private incrementPath;
9
+ constructor(incrementPath: string, repo?: string);
10
+ /**
11
+ * Sync all tasks to GitHub (main entry point)
12
+ */
13
+ syncTasks(options?: GitHubSyncOptions): Promise<SyncResult>;
14
+ /**
15
+ * Generate epic issue body
16
+ */
17
+ private generateEpicBody;
18
+ /**
19
+ * Generate task issue body
20
+ */
21
+ private generateTaskBody;
22
+ /**
23
+ * Load increment metadata
24
+ */
25
+ private loadIncrementMetadata;
26
+ /**
27
+ * Save increment metadata
28
+ */
29
+ private saveIncrementMetadata;
30
+ /**
31
+ * Save sync mapping
32
+ */
33
+ private saveSyncMapping;
34
+ /**
35
+ * Get milestone title from metadata
36
+ */
37
+ private getMilestoneTitle;
38
+ /**
39
+ * Get GitHub file URL
40
+ */
41
+ private getGitHubFileURL;
42
+ /**
43
+ * Convert string to slug
44
+ */
45
+ private slugify;
46
+ /**
47
+ * Print dry run summary
48
+ */
49
+ private printDryRunSummary;
50
+ }
51
+ //# sourceMappingURL=task-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-sync.d.ts","sourceRoot":"","sources":["../../../../src/plugins/specweave-github/lib/task-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAA2B,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjF,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAKhD;;OAEG;IACG,SAAS,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkKrE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+DxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Task-level GitHub synchronization
3
+ * Orchestrates syncing tasks.md to GitHub issues
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import * as yaml from 'js-yaml';
8
+ import { GitHubClient } from './github-client';
9
+ import { TaskParser } from './task-parser';
10
+ export class TaskSync {
11
+ constructor(incrementPath, repo) {
12
+ this.incrementPath = incrementPath;
13
+ this.client = new GitHubClient(repo);
14
+ }
15
+ /**
16
+ * Sync all tasks to GitHub (main entry point)
17
+ */
18
+ async syncTasks(options = {}) {
19
+ const { force = false, dryRun = false, batchDelay = 6000, batchSize = 10, milestoneDays = 2, // SpecWeave default: 2 days (AI velocity)
20
+ projectName, fastMode = false } = options;
21
+ console.log(`\nšŸ”„ Syncing increment to GitHub...`);
22
+ // 1. Check prerequisites
23
+ const ghCheck = GitHubClient.checkGitHubCLI();
24
+ if (!ghCheck.installed || !ghCheck.authenticated) {
25
+ throw new Error(ghCheck.error || 'GitHub CLI check failed');
26
+ }
27
+ // 2. Load increment metadata
28
+ const metadata = this.loadIncrementMetadata();
29
+ console.log(`šŸ“¦ Increment: ${metadata.id} - ${metadata.title}`);
30
+ // 3. Parse tasks
31
+ const tasks = TaskParser.parseTasksFile(this.incrementPath);
32
+ console.log(`šŸ“‹ Found ${tasks.length} tasks`);
33
+ if (dryRun) {
34
+ console.log(`\nšŸ” DRY RUN MODE - No changes will be made`);
35
+ this.printDryRunSummary(tasks, metadata);
36
+ return {
37
+ epic: {},
38
+ tasks: [],
39
+ errors: []
40
+ };
41
+ }
42
+ // 4. Check if already synced (and force not set)
43
+ if (metadata.github?.epic_issue && !force) {
44
+ console.log(`\nāš ļø Increment already synced to GitHub (epic #${metadata.github.epic_issue})`);
45
+ console.log(` Use --force to re-sync (WARNING: will create duplicate issues)`);
46
+ throw new Error('Already synced. Use --force to override.');
47
+ }
48
+ const errors = [];
49
+ try {
50
+ // 5. Create or get milestone (with SpecWeave AI velocity: 1-2 days)
51
+ const milestoneTitle = this.getMilestoneTitle(metadata);
52
+ console.log(`\nšŸ“ Creating milestone: ${milestoneTitle} (due in ${milestoneDays} days)`);
53
+ const milestone = await this.client.createOrGetMilestone(milestoneTitle, `Milestone for increment ${metadata.id}`, milestoneDays);
54
+ console.log(` āœ… Milestone #${milestone.number}: ${milestone.title}`);
55
+ // 6. Create epic issue
56
+ console.log(`\nšŸŽÆ Creating epic issue for increment ${metadata.id}...`);
57
+ const epicBody = this.generateEpicBody(metadata, tasks);
58
+ const epic = await this.client.createEpicIssue(`[INC-${metadata.id}] ${metadata.title}`, epicBody, milestone.title, ['increment', 'specweave', metadata.priority.toLowerCase()]);
59
+ console.log(` āœ… Epic issue #${epic.number}: ${epic.html_url}`);
60
+ // 7. Create task issues (with smart rate limiting)
61
+ // Fast mode: Skip delays for small increments (< 10 tasks) or when explicitly requested
62
+ const useFastMode = fastMode || tasks.length < 10;
63
+ const effectiveDelay = useFastMode ? 0 : batchDelay;
64
+ if (useFastMode) {
65
+ console.log(`\nšŸ“ Creating ${tasks.length} task issues (fast mode - no rate limiting)...`);
66
+ }
67
+ else {
68
+ console.log(`\nšŸ“ Creating ${tasks.length} task issues (batch size: ${batchSize}, delay: ${effectiveDelay}ms)...`);
69
+ }
70
+ const taskIssues = [];
71
+ const issueData = tasks.map(task => ({
72
+ title: `[${task.id}] ${task.title}`,
73
+ body: this.generateTaskBody(task),
74
+ labels: ['task', task.priority.toLowerCase(), ...(task.phase ? [this.slugify(task.phase)] : [])]
75
+ }));
76
+ const createdIssues = await this.client.batchCreateIssues(issueData, milestone.title, epic.number, { batchSize, delayMs: effectiveDelay });
77
+ // TODO: GitHub Projects integration (if projectName provided)
78
+ // if (projectName) {
79
+ // await this.addIssuesToProject(projectName, [epic, ...createdIssues]);
80
+ // }
81
+ // Map issues to tasks
82
+ for (let i = 0; i < tasks.length; i++) {
83
+ if (createdIssues[i]) {
84
+ taskIssues.push({
85
+ taskId: tasks[i].id,
86
+ issue: createdIssues[i]
87
+ });
88
+ console.log(` āœ… #${createdIssues[i].number}: [${tasks[i].id}] ${tasks[i].title}`);
89
+ }
90
+ else {
91
+ errors.push({
92
+ taskId: tasks[i].id,
93
+ error: 'Failed to create issue'
94
+ });
95
+ console.log(` āŒ [${tasks[i].id}] ${tasks[i].title} - Failed`);
96
+ }
97
+ }
98
+ // 8. Update tasks.md with GitHub issue numbers
99
+ console.log(`\nšŸ“„ Updating tasks.md with GitHub issue numbers...`);
100
+ const taskIssueMap = {};
101
+ taskIssues.forEach(({ taskId, issue }) => {
102
+ taskIssueMap[taskId] = issue.number;
103
+ });
104
+ TaskParser.updateTasksWithGitHubIssues(this.incrementPath, taskIssueMap);
105
+ console.log(` āœ… Updated tasks.md`);
106
+ // 9. Save sync mapping
107
+ console.log(`\nšŸ’¾ Saving sync mapping...`);
108
+ this.saveSyncMapping({
109
+ milestone: milestone.number,
110
+ epic_issue: epic.number,
111
+ task_issues: taskIssueMap,
112
+ last_sync: new Date().toISOString()
113
+ });
114
+ console.log(` āœ… Saved to .github-sync.yaml`);
115
+ // 10. Update increment metadata
116
+ metadata.github = {
117
+ milestone: milestone.number,
118
+ epic_issue: epic.number,
119
+ task_issues: taskIssueMap,
120
+ last_sync: new Date().toISOString()
121
+ };
122
+ this.saveIncrementMetadata(metadata);
123
+ // Success summary
124
+ console.log(`\nšŸŽ‰ GitHub sync complete!`);
125
+ console.log(` šŸ“ Milestone: #${milestone.number} ${milestone.title}`);
126
+ console.log(` šŸŽÆ Epic: #${epic.number} ${epic.html_url}`);
127
+ console.log(` šŸ“ Tasks: #${createdIssues[0]?.number}-#${createdIssues[createdIssues.length - 1]?.number} (${createdIssues.length} issues)`);
128
+ return {
129
+ milestone,
130
+ epic,
131
+ tasks: taskIssues,
132
+ errors
133
+ };
134
+ }
135
+ catch (error) {
136
+ console.error(`\nāŒ Sync failed:`, error.message);
137
+ throw error;
138
+ }
139
+ }
140
+ /**
141
+ * Generate epic issue body
142
+ */
143
+ generateEpicBody(metadata, tasks) {
144
+ const specPath = path.join(this.incrementPath, 'spec.md');
145
+ let summary = 'No summary available';
146
+ if (fs.existsSync(specPath)) {
147
+ const specContent = fs.readFileSync(specPath, 'utf-8');
148
+ const summaryMatch = specContent.match(/## Executive Summary\s+(.+?)(?=\n##|$)/s);
149
+ summary = summaryMatch?.[1]?.trim() || summary;
150
+ }
151
+ // Group tasks by phase
152
+ const phases = new Map();
153
+ tasks.forEach(task => {
154
+ const phase = task.phase || 'Other';
155
+ if (!phases.has(phase)) {
156
+ phases.set(phase, []);
157
+ }
158
+ phases.get(phase).push(task);
159
+ });
160
+ let phaseChecklist = '';
161
+ for (const [phase, phaseTasks] of phases.entries()) {
162
+ phaseChecklist += `\n### ${phase}\n\n`;
163
+ phaseTasks.forEach(task => {
164
+ phaseChecklist += `- [ ] [${task.id}] ${task.title} (${task.estimate})\n`;
165
+ });
166
+ }
167
+ return `# [Increment ${metadata.id}] ${metadata.title}
168
+
169
+ **Status**: ${metadata.status}
170
+ **Priority**: ${metadata.priority}
171
+ **Created**: ${new Date().toISOString().split('T')[0]}
172
+
173
+ ## Summary
174
+
175
+ ${summary}
176
+
177
+ ## Tasks (${tasks.length} total)
178
+ ${phaseChecklist}
179
+
180
+ ## SpecWeave Increment
181
+
182
+ This epic tracks SpecWeave increment \`${metadata.id}\`.
183
+
184
+ - **Spec**: [\`spec.md\`](${this.getGitHubFileURL('spec.md')})
185
+ - **Plan**: [\`plan.md\`](${this.getGitHubFileURL('plan.md')})
186
+ - **Tasks**: [\`tasks.md\`](${this.getGitHubFileURL('tasks.md')})
187
+
188
+ ---
189
+
190
+ šŸ¤– Auto-synced by [SpecWeave](https://spec-weave.com)`;
191
+ }
192
+ /**
193
+ * Generate task issue body
194
+ */
195
+ generateTaskBody(task) {
196
+ let body = `**Priority**: ${task.priority}
197
+ **Estimate**: ${task.estimate}
198
+ **Phase**: ${task.phase || 'N/A'}
199
+
200
+ ## Description
201
+
202
+ ${task.description}
203
+ `;
204
+ if (task.subtasks && task.subtasks.length > 0) {
205
+ body += `\n## Subtasks\n\n`;
206
+ task.subtasks.forEach(subtask => {
207
+ const checked = subtask.completed ? 'x' : ' ';
208
+ body += `- [${checked}] ${subtask.id}: ${subtask.description} (${subtask.estimate})\n`;
209
+ });
210
+ }
211
+ if (task.filesToCreate && task.filesToCreate.length > 0) {
212
+ body += `\n## Files to Create\n\n`;
213
+ task.filesToCreate.forEach(file => {
214
+ body += `- \`${file}\`\n`;
215
+ });
216
+ }
217
+ if (task.filesToModify && task.filesToModify.length > 0) {
218
+ body += `\n## Files to Modify\n\n`;
219
+ task.filesToModify.forEach(file => {
220
+ body += `- \`${file}\`\n`;
221
+ });
222
+ }
223
+ if (task.implementation) {
224
+ body += `\n## Implementation\n\n\`\`\`typescript\n${task.implementation}\n\`\`\`\n`;
225
+ }
226
+ if (task.acceptanceCriteria && task.acceptanceCriteria.length > 0) {
227
+ body += `\n## Acceptance Criteria\n\n`;
228
+ task.acceptanceCriteria.forEach(criterion => {
229
+ body += `- āœ… ${criterion}\n`;
230
+ });
231
+ }
232
+ if (task.dependencies && task.dependencies.length > 0) {
233
+ body += `\n## Dependencies\n\nThis task depends on:\n`;
234
+ task.dependencies.forEach(dep => {
235
+ body += `- ${dep} (must complete first)\n`;
236
+ });
237
+ }
238
+ if (task.blocks && task.blocks.length > 0) {
239
+ body += `\n## Blocks\n\nThis task blocks:\n`;
240
+ task.blocks.forEach(blocked => {
241
+ body += `- ${blocked} (waiting on this)\n`;
242
+ });
243
+ }
244
+ body += `\n---\n\nšŸ¤– Synced from SpecWeave increment \`${path.basename(this.incrementPath)}\`\n`;
245
+ body += `- **Tasks**: [\`tasks.md\`](${this.getGitHubFileURL('tasks.md')})\n`;
246
+ return body;
247
+ }
248
+ /**
249
+ * Load increment metadata
250
+ */
251
+ loadIncrementMetadata() {
252
+ const metadataPath = path.join(this.incrementPath, '.metadata.yaml');
253
+ if (fs.existsSync(metadataPath)) {
254
+ const content = fs.readFileSync(metadataPath, 'utf-8');
255
+ return yaml.load(content);
256
+ }
257
+ // Fallback: extract from directory name and spec
258
+ const incrementId = path.basename(this.incrementPath);
259
+ const specPath = path.join(this.incrementPath, 'spec.md');
260
+ let title = 'Unknown';
261
+ let priority = 'P1';
262
+ if (fs.existsSync(specPath)) {
263
+ const specContent = fs.readFileSync(specPath, 'utf-8');
264
+ const titleMatch = specContent.match(/\*\*Title\*\*:\s*(.+)/);
265
+ const priorityMatch = specContent.match(/\*\*Priority\*\*:\s*(P[0-3])/);
266
+ title = titleMatch?.[1]?.trim() || title;
267
+ priority = priorityMatch?.[1] || priority;
268
+ }
269
+ return {
270
+ id: incrementId,
271
+ title,
272
+ priority,
273
+ status: 'planning'
274
+ };
275
+ }
276
+ /**
277
+ * Save increment metadata
278
+ */
279
+ saveIncrementMetadata(metadata) {
280
+ const metadataPath = path.join(this.incrementPath, '.metadata.yaml');
281
+ fs.writeFileSync(metadataPath, yaml.dump(metadata), 'utf-8');
282
+ }
283
+ /**
284
+ * Save sync mapping
285
+ */
286
+ saveSyncMapping(githubData) {
287
+ const syncPath = path.join(this.incrementPath, '.github-sync.yaml');
288
+ fs.writeFileSync(syncPath, yaml.dump(githubData), 'utf-8');
289
+ }
290
+ /**
291
+ * Get milestone title from metadata
292
+ */
293
+ getMilestoneTitle(metadata) {
294
+ return metadata.version ? `v${metadata.version}` : `Increment ${metadata.id}`;
295
+ }
296
+ /**
297
+ * Get GitHub file URL
298
+ */
299
+ getGitHubFileURL(filename) {
300
+ try {
301
+ const remote = this.client['detectRepo']();
302
+ const incrementId = path.basename(this.incrementPath);
303
+ return `https://github.com/${remote}/blob/develop/.specweave/increments/${incrementId}/${filename}`;
304
+ }
305
+ catch {
306
+ return `#`;
307
+ }
308
+ }
309
+ /**
310
+ * Convert string to slug
311
+ */
312
+ slugify(str) {
313
+ return str
314
+ .toLowerCase()
315
+ .replace(/[^a-z0-9]+/g, '-')
316
+ .replace(/^-|-$/g, '');
317
+ }
318
+ /**
319
+ * Print dry run summary
320
+ */
321
+ printDryRunSummary(tasks, metadata) {
322
+ console.log(`\nšŸ“Š Dry Run Summary:`);
323
+ console.log(` Milestone: ${this.getMilestoneTitle(metadata)}`);
324
+ console.log(` Epic: [INC-${metadata.id}] ${metadata.title}`);
325
+ console.log(` Task Issues: ${tasks.length}`);
326
+ console.log(`\nšŸ“ Would create:`);
327
+ tasks.forEach((task, i) => {
328
+ console.log(` ${i + 1}. [${task.id}] ${task.title} (${task.estimate})`);
329
+ });
330
+ }
331
+ }
332
+ //# sourceMappingURL=task-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-sync.js","sourceRoot":"","sources":["../../../../src/plugins/specweave-github/lib/task-sync.ts"],"names":[],"mappings":"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"}