specweave 0.13.6 → 0.15.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 (826) hide show
  1. package/CLAUDE.md +189 -0
  2. package/README.md +58 -9
  3. package/bin/specweave.js +65 -0
  4. package/dist/cli/commands/init.js +1 -1
  5. package/dist/cli/commands/init.js.map +1 -1
  6. package/dist/cli/commands/migrate-to-profiles.d.ts.map +1 -1
  7. package/dist/cli/commands/migrate-to-profiles.js +0 -2
  8. package/dist/cli/commands/migrate-to-profiles.js.map +1 -1
  9. package/dist/cli/commands/status-line.d.ts +14 -0
  10. package/dist/cli/commands/status-line.d.ts.map +1 -0
  11. package/dist/cli/commands/status-line.js +75 -0
  12. package/dist/cli/commands/status-line.js.map +1 -0
  13. package/dist/core/agent-model-manager.d.ts +52 -0
  14. package/dist/core/agent-model-manager.d.ts.map +1 -0
  15. package/dist/core/agent-model-manager.js +120 -0
  16. package/dist/core/agent-model-manager.js.map +1 -0
  17. package/dist/core/model-selector.d.ts +57 -0
  18. package/dist/core/model-selector.d.ts.map +1 -0
  19. package/dist/core/model-selector.js +115 -0
  20. package/dist/core/model-selector.js.map +1 -0
  21. package/dist/core/phase-detector.d.ts +62 -0
  22. package/dist/core/phase-detector.d.ts.map +1 -0
  23. package/dist/core/phase-detector.js +229 -0
  24. package/dist/core/phase-detector.js.map +1 -0
  25. package/dist/core/status-line/status-line-manager.d.ts +62 -0
  26. package/dist/core/status-line/status-line-manager.d.ts.map +1 -0
  27. package/dist/core/status-line/status-line-manager.js +169 -0
  28. package/dist/core/status-line/status-line-manager.js.map +1 -0
  29. package/dist/core/status-line/types.d.ts +50 -0
  30. package/dist/core/status-line/types.d.ts.map +1 -0
  31. package/dist/core/status-line/types.js +17 -0
  32. package/dist/core/status-line/types.js.map +1 -0
  33. package/dist/core/sync/folder-mapper.d.ts.map +1 -1
  34. package/dist/core/sync/folder-mapper.js +70 -35
  35. package/dist/core/sync/folder-mapper.js.map +1 -1
  36. package/dist/core/sync/profile-validator.d.ts.map +1 -1
  37. package/dist/core/sync/profile-validator.js +35 -90
  38. package/dist/core/sync/profile-validator.js.map +1 -1
  39. package/dist/core/types/sync-profile.d.ts +101 -155
  40. package/dist/core/types/sync-profile.d.ts.map +1 -1
  41. package/dist/core/types/sync-profile.js +46 -22
  42. package/dist/core/types/sync-profile.js.map +1 -1
  43. package/dist/hooks/lib/git-diff-analyzer.d.ts +89 -0
  44. package/dist/hooks/lib/git-diff-analyzer.d.ts.map +1 -0
  45. package/dist/hooks/lib/git-diff-analyzer.js +226 -0
  46. package/dist/hooks/lib/git-diff-analyzer.js.map +1 -0
  47. package/dist/hooks/lib/invoke-translator-skill.d.ts +60 -0
  48. package/dist/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
  49. package/dist/hooks/lib/invoke-translator-skill.js +201 -0
  50. package/dist/hooks/lib/invoke-translator-skill.js.map +1 -0
  51. package/dist/hooks/lib/prepare-reflection-context.d.ts +42 -0
  52. package/dist/hooks/lib/prepare-reflection-context.d.ts.map +1 -0
  53. package/dist/hooks/lib/prepare-reflection-context.js +123 -0
  54. package/dist/hooks/lib/prepare-reflection-context.js.map +1 -0
  55. package/dist/hooks/lib/reflection-config-loader.d.ts +45 -0
  56. package/dist/hooks/lib/reflection-config-loader.d.ts.map +1 -0
  57. package/dist/hooks/lib/reflection-config-loader.js +132 -0
  58. package/dist/hooks/lib/reflection-config-loader.js.map +1 -0
  59. package/dist/hooks/lib/reflection-parser.d.ts +33 -0
  60. package/dist/hooks/lib/reflection-parser.d.ts.map +1 -0
  61. package/dist/hooks/lib/reflection-parser.js +419 -0
  62. package/dist/hooks/lib/reflection-parser.js.map +1 -0
  63. package/dist/hooks/lib/reflection-prompt-builder.d.ts +56 -0
  64. package/dist/hooks/lib/reflection-prompt-builder.d.ts.map +1 -0
  65. package/dist/hooks/lib/reflection-prompt-builder.js +239 -0
  66. package/dist/hooks/lib/reflection-prompt-builder.js.map +1 -0
  67. package/dist/hooks/lib/reflection-storage.d.ts +64 -0
  68. package/dist/hooks/lib/reflection-storage.d.ts.map +1 -0
  69. package/dist/hooks/lib/reflection-storage.js +305 -0
  70. package/dist/hooks/lib/reflection-storage.js.map +1 -0
  71. package/dist/hooks/lib/run-self-reflection.d.ts +43 -0
  72. package/dist/hooks/lib/run-self-reflection.d.ts.map +1 -0
  73. package/dist/hooks/lib/run-self-reflection.js +203 -0
  74. package/dist/hooks/lib/run-self-reflection.js.map +1 -0
  75. package/dist/hooks/lib/sync-living-docs.d.ts +27 -0
  76. package/dist/hooks/lib/sync-living-docs.d.ts.map +1 -0
  77. package/dist/hooks/lib/sync-living-docs.js +116 -0
  78. package/dist/hooks/lib/sync-living-docs.js.map +1 -0
  79. package/dist/hooks/lib/translate-file.d.ts +59 -0
  80. package/dist/hooks/lib/translate-file.d.ts.map +1 -0
  81. package/dist/hooks/lib/translate-file.js +350 -0
  82. package/dist/hooks/lib/translate-file.js.map +1 -0
  83. package/dist/hooks/lib/translate-living-docs.d.ts +13 -0
  84. package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -0
  85. package/dist/hooks/lib/translate-living-docs.js +175 -0
  86. package/dist/hooks/lib/translate-living-docs.js.map +1 -0
  87. package/dist/hooks/lib/types/reflection-types.d.ts +164 -0
  88. package/dist/hooks/lib/types/reflection-types.d.ts.map +1 -0
  89. package/dist/hooks/lib/types/reflection-types.js +73 -0
  90. package/dist/hooks/lib/types/reflection-types.js.map +1 -0
  91. package/dist/hooks/lib/update-tasks-md.d.ts +29 -0
  92. package/dist/hooks/lib/update-tasks-md.d.ts.map +1 -0
  93. package/dist/hooks/lib/update-tasks-md.js +203 -0
  94. package/dist/hooks/lib/update-tasks-md.js.map +1 -0
  95. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +89 -0
  96. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +1 -0
  97. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +226 -0
  98. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +1 -0
  99. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +60 -0
  100. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +1 -0
  101. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +201 -0
  102. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +1 -0
  103. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +42 -0
  104. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +1 -0
  105. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +123 -0
  106. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +1 -0
  107. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +45 -0
  108. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +1 -0
  109. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +132 -0
  110. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +1 -0
  111. package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +33 -0
  112. package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +1 -0
  113. package/dist/plugins/specweave/lib/hooks/reflection-parser.js +419 -0
  114. package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +1 -0
  115. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +56 -0
  116. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +1 -0
  117. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +239 -0
  118. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +1 -0
  119. package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +64 -0
  120. package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +1 -0
  121. package/dist/plugins/specweave/lib/hooks/reflection-storage.js +305 -0
  122. package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +1 -0
  123. package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +43 -0
  124. package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +1 -0
  125. package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +203 -0
  126. package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +1 -0
  127. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +27 -0
  128. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -0
  129. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +144 -0
  130. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -0
  131. package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +59 -0
  132. package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +1 -0
  133. package/dist/plugins/specweave/lib/hooks/translate-file.js +350 -0
  134. package/dist/plugins/specweave/lib/hooks/translate-file.js.map +1 -0
  135. package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +13 -0
  136. package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +1 -0
  137. package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +175 -0
  138. package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +1 -0
  139. package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +164 -0
  140. package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +1 -0
  141. package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +73 -0
  142. package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +1 -0
  143. package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +29 -0
  144. package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +1 -0
  145. package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +203 -0
  146. package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +1 -0
  147. package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts +94 -0
  148. package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +1 -0
  149. package/dist/plugins/specweave-ado/lib/ado-board-resolver.js +219 -0
  150. package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +1 -0
  151. package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts +124 -0
  152. package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +1 -0
  153. package/dist/plugins/specweave-ado/lib/ado-client-v2.js +382 -0
  154. package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +1 -0
  155. package/dist/plugins/specweave-ado/lib/ado-client.d.ts +112 -0
  156. package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +1 -0
  157. package/dist/plugins/specweave-ado/lib/ado-client.js +257 -0
  158. package/dist/plugins/specweave-ado/lib/ado-client.js.map +1 -0
  159. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +40 -0
  160. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts.map +1 -0
  161. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js +370 -0
  162. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js.map +1 -0
  163. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts +100 -0
  164. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts.map +1 -0
  165. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js +471 -0
  166. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js.map +1 -0
  167. package/dist/plugins/specweave-ado/lib/project-selector.d.ts +42 -0
  168. package/dist/plugins/specweave-ado/lib/project-selector.d.ts.map +1 -0
  169. package/dist/plugins/specweave-ado/lib/project-selector.js +211 -0
  170. package/dist/plugins/specweave-ado/lib/project-selector.js.map +1 -0
  171. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts +12 -0
  172. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.d.ts.map +1 -0
  173. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js +28 -0
  174. package/dist/plugins/specweave-github/lib/cli-sync-increment-changes.js.map +1 -0
  175. package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts +54 -0
  176. package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts.map +1 -0
  177. package/dist/plugins/specweave-github/lib/github-board-resolver.js +122 -0
  178. package/dist/plugins/specweave-github/lib/github-board-resolver.js.map +1 -0
  179. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +104 -0
  180. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -0
  181. package/dist/plugins/specweave-github/lib/github-client-v2.js +408 -0
  182. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -0
  183. package/dist/plugins/specweave-github/lib/github-client.d.ts +96 -0
  184. package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -0
  185. package/dist/plugins/specweave-github/lib/github-client.js +299 -0
  186. package/dist/plugins/specweave-github/lib/github-client.js.map +1 -0
  187. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +29 -0
  188. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts.map +1 -0
  189. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js +268 -0
  190. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js.map +1 -0
  191. package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts +61 -0
  192. package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts.map +1 -0
  193. package/dist/plugins/specweave-github/lib/github-issue-updater.js +327 -0
  194. package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +1 -0
  195. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +108 -0
  196. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +1 -0
  197. package/dist/plugins/specweave-github/lib/github-spec-sync.js +505 -0
  198. package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -0
  199. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts +36 -0
  200. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +1 -0
  201. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +228 -0
  202. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -0
  203. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts +18 -0
  204. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +1 -0
  205. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +287 -0
  206. package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +1 -0
  207. package/dist/plugins/specweave-github/lib/index.d.ts +10 -0
  208. package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -0
  209. package/dist/plugins/specweave-github/lib/index.js +10 -0
  210. package/dist/plugins/specweave-github/lib/index.js.map +1 -0
  211. package/dist/plugins/specweave-github/lib/repo-selector.d.ts +49 -0
  212. package/dist/plugins/specweave-github/lib/repo-selector.d.ts.map +1 -0
  213. package/dist/plugins/specweave-github/lib/repo-selector.js +216 -0
  214. package/dist/plugins/specweave-github/lib/repo-selector.js.map +1 -0
  215. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +51 -0
  216. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -0
  217. package/dist/plugins/specweave-github/lib/subtask-sync.js +147 -0
  218. package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -0
  219. package/dist/plugins/specweave-github/lib/task-parser.d.ts +37 -0
  220. package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -0
  221. package/dist/plugins/specweave-github/lib/task-parser.js +211 -0
  222. package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -0
  223. package/dist/plugins/specweave-github/lib/task-sync.d.ts +51 -0
  224. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -0
  225. package/dist/plugins/specweave-github/lib/task-sync.js +332 -0
  226. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -0
  227. package/dist/plugins/specweave-github/lib/types.d.ts +80 -0
  228. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -0
  229. package/dist/plugins/specweave-github/lib/types.js +5 -0
  230. package/dist/plugins/specweave-github/lib/types.js.map +1 -0
  231. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +50 -0
  232. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +1 -0
  233. package/dist/plugins/specweave-jira/lib/jira-board-resolver.js +84 -0
  234. package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +1 -0
  235. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +33 -0
  236. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts.map +1 -0
  237. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js +206 -0
  238. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js.map +1 -0
  239. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts +105 -0
  240. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -0
  241. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +456 -0
  242. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -0
  243. package/dist/plugins/specweave-jira/lib/project-selector.d.ts +42 -0
  244. package/dist/plugins/specweave-jira/lib/project-selector.d.ts.map +1 -0
  245. package/dist/plugins/specweave-jira/lib/project-selector.js +216 -0
  246. package/dist/plugins/specweave-jira/lib/project-selector.js.map +1 -0
  247. package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts +67 -0
  248. package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts.map +1 -0
  249. package/dist/plugins/specweave-jira/lib/reorganization-detector.js +252 -0
  250. package/dist/plugins/specweave-jira/lib/reorganization-detector.js.map +1 -0
  251. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +29 -0
  252. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +1 -0
  253. package/dist/plugins/specweave-jira/lib/setup-wizard.js +219 -0
  254. package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +1 -0
  255. package/dist/project-mapper.js +272 -0
  256. package/dist/scripts/split-spec-by-project.js +105 -0
  257. package/dist/spec-splitter.js +283 -0
  258. package/dist/src/adapters/adapter-base.d.ts +71 -0
  259. package/dist/src/adapters/adapter-base.d.ts.map +1 -0
  260. package/dist/src/adapters/adapter-base.js +139 -0
  261. package/dist/src/adapters/adapter-base.js.map +1 -0
  262. package/dist/src/adapters/adapter-interface.d.ts +149 -0
  263. package/dist/src/adapters/adapter-interface.d.ts.map +1 -0
  264. package/dist/src/adapters/adapter-interface.js +8 -0
  265. package/dist/src/adapters/adapter-interface.js.map +1 -0
  266. package/dist/src/adapters/adapter-loader.d.ts +91 -0
  267. package/dist/src/adapters/adapter-loader.d.ts.map +1 -0
  268. package/dist/src/adapters/adapter-loader.js +238 -0
  269. package/dist/src/adapters/adapter-loader.js.map +1 -0
  270. package/dist/src/adapters/agents-md-generator.d.ts +48 -0
  271. package/dist/src/adapters/agents-md-generator.d.ts.map +1 -0
  272. package/dist/src/adapters/agents-md-generator.js +193 -0
  273. package/dist/src/adapters/agents-md-generator.js.map +1 -0
  274. package/dist/src/adapters/claude/adapter.d.ts +128 -0
  275. package/dist/src/adapters/claude/adapter.d.ts.map +1 -0
  276. package/dist/src/adapters/claude/adapter.js +415 -0
  277. package/dist/src/adapters/claude/adapter.js.map +1 -0
  278. package/dist/src/adapters/claude-md-generator.d.ts +78 -0
  279. package/dist/src/adapters/claude-md-generator.d.ts.map +1 -0
  280. package/dist/src/adapters/claude-md-generator.js +307 -0
  281. package/dist/src/adapters/claude-md-generator.js.map +1 -0
  282. package/dist/src/adapters/codex/adapter.d.ts +50 -0
  283. package/dist/src/adapters/codex/adapter.d.ts.map +1 -0
  284. package/dist/src/adapters/codex/adapter.js +316 -0
  285. package/dist/src/adapters/codex/adapter.js.map +1 -0
  286. package/dist/src/adapters/cursor/adapter.d.ts +98 -0
  287. package/dist/src/adapters/cursor/adapter.d.ts.map +1 -0
  288. package/dist/src/adapters/cursor/adapter.js +406 -0
  289. package/dist/src/adapters/cursor/adapter.js.map +1 -0
  290. package/dist/src/adapters/doc-generator.d.ts +69 -0
  291. package/dist/src/adapters/doc-generator.d.ts.map +1 -0
  292. package/dist/src/adapters/doc-generator.js +247 -0
  293. package/dist/src/adapters/doc-generator.js.map +1 -0
  294. package/dist/src/adapters/gemini/adapter.d.ts +50 -0
  295. package/dist/src/adapters/gemini/adapter.d.ts.map +1 -0
  296. package/dist/src/adapters/gemini/adapter.js +281 -0
  297. package/dist/src/adapters/gemini/adapter.js.map +1 -0
  298. package/dist/src/adapters/generic/adapter.d.ts +86 -0
  299. package/dist/src/adapters/generic/adapter.d.ts.map +1 -0
  300. package/dist/src/adapters/generic/adapter.js +338 -0
  301. package/dist/src/adapters/generic/adapter.js.map +1 -0
  302. package/dist/src/cli/commands/abandon.d.ts +13 -0
  303. package/dist/src/cli/commands/abandon.d.ts.map +1 -0
  304. package/dist/src/cli/commands/abandon.js +15 -0
  305. package/dist/src/cli/commands/abandon.js.map +1 -0
  306. package/dist/src/cli/commands/import-docs.d.ts +21 -0
  307. package/dist/src/cli/commands/import-docs.d.ts.map +1 -0
  308. package/dist/src/cli/commands/import-docs.js +146 -0
  309. package/dist/src/cli/commands/import-docs.js.map +1 -0
  310. package/dist/src/cli/commands/init-multiproject.d.ts +11 -0
  311. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -0
  312. package/dist/src/cli/commands/init-multiproject.js +202 -0
  313. package/dist/src/cli/commands/init-multiproject.js.map +1 -0
  314. package/dist/src/cli/commands/init.d.ts +9 -0
  315. package/dist/src/cli/commands/init.d.ts.map +1 -0
  316. package/dist/src/cli/commands/init.js +1444 -0
  317. package/dist/src/cli/commands/init.js.map +1 -0
  318. package/dist/src/cli/commands/install.d.ts +9 -0
  319. package/dist/src/cli/commands/install.d.ts.map +1 -0
  320. package/dist/src/cli/commands/install.js +127 -0
  321. package/dist/src/cli/commands/install.js.map +1 -0
  322. package/dist/src/cli/commands/list.d.ts +8 -0
  323. package/dist/src/cli/commands/list.d.ts.map +1 -0
  324. package/dist/src/cli/commands/list.js +119 -0
  325. package/dist/src/cli/commands/list.js.map +1 -0
  326. package/dist/src/cli/commands/migrate-to-multiproject.d.ts +37 -0
  327. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -0
  328. package/dist/src/cli/commands/migrate-to-multiproject.js +189 -0
  329. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -0
  330. package/dist/src/cli/commands/migrate-to-profiles.d.ts +25 -0
  331. package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -0
  332. package/dist/src/cli/commands/migrate-to-profiles.js +350 -0
  333. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -0
  334. package/dist/src/cli/commands/pause.d.ts +13 -0
  335. package/dist/src/cli/commands/pause.d.ts.map +1 -0
  336. package/dist/src/cli/commands/pause.js +15 -0
  337. package/dist/src/cli/commands/pause.js.map +1 -0
  338. package/dist/src/cli/commands/qa.d.ts +54 -0
  339. package/dist/src/cli/commands/qa.d.ts.map +1 -0
  340. package/dist/src/cli/commands/qa.js +98 -0
  341. package/dist/src/cli/commands/qa.js.map +1 -0
  342. package/dist/src/cli/commands/resume.d.ts +12 -0
  343. package/dist/src/cli/commands/resume.d.ts.map +1 -0
  344. package/dist/src/cli/commands/resume.js +14 -0
  345. package/dist/src/cli/commands/resume.js.map +1 -0
  346. package/dist/src/cli/commands/status.d.ts +12 -0
  347. package/dist/src/cli/commands/status.d.ts.map +1 -0
  348. package/dist/src/cli/commands/status.js +23 -0
  349. package/dist/src/cli/commands/status.js.map +1 -0
  350. package/dist/src/cli/commands/switch-project.d.ts +13 -0
  351. package/dist/src/cli/commands/switch-project.d.ts.map +1 -0
  352. package/dist/src/cli/commands/switch-project.js +91 -0
  353. package/dist/src/cli/commands/switch-project.js.map +1 -0
  354. package/dist/src/cli/commands/validate-jira.d.ts +35 -0
  355. package/dist/src/cli/commands/validate-jira.d.ts.map +1 -0
  356. package/dist/src/cli/commands/validate-jira.js +112 -0
  357. package/dist/src/cli/commands/validate-jira.js.map +1 -0
  358. package/dist/src/cli/commands/validate-plugins.d.ts +41 -0
  359. package/dist/src/cli/commands/validate-plugins.d.ts.map +1 -0
  360. package/dist/src/cli/commands/validate-plugins.js +171 -0
  361. package/dist/src/cli/commands/validate-plugins.js.map +1 -0
  362. package/dist/src/cli/helpers/issue-tracker/ado.d.ts +57 -0
  363. package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
  364. package/dist/src/cli/helpers/issue-tracker/ado.js +243 -0
  365. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -0
  366. package/dist/src/cli/helpers/issue-tracker/github.d.ts +65 -0
  367. package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -0
  368. package/dist/src/cli/helpers/issue-tracker/github.js +426 -0
  369. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -0
  370. package/dist/src/cli/helpers/issue-tracker/index.d.ts +22 -0
  371. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -0
  372. package/dist/src/cli/helpers/issue-tracker/index.js +314 -0
  373. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -0
  374. package/dist/src/cli/helpers/issue-tracker/jira.d.ts +61 -0
  375. package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
  376. package/dist/src/cli/helpers/issue-tracker/jira.js +404 -0
  377. package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -0
  378. package/dist/src/cli/helpers/issue-tracker/types.d.ts +108 -0
  379. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -0
  380. package/dist/src/cli/helpers/issue-tracker/types.js +16 -0
  381. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -0
  382. package/dist/src/cli/helpers/issue-tracker/utils.d.ts +112 -0
  383. package/dist/src/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
  384. package/dist/src/cli/helpers/issue-tracker/utils.js +247 -0
  385. package/dist/src/cli/helpers/issue-tracker/utils.js.map +1 -0
  386. package/dist/src/core/agent-model-manager.d.ts +52 -0
  387. package/dist/src/core/agent-model-manager.d.ts.map +1 -0
  388. package/dist/src/core/agent-model-manager.js +120 -0
  389. package/dist/src/core/agent-model-manager.js.map +1 -0
  390. package/dist/src/core/brownfield/analyzer.d.ts +86 -0
  391. package/dist/src/core/brownfield/analyzer.d.ts.map +1 -0
  392. package/dist/src/core/brownfield/analyzer.js +365 -0
  393. package/dist/src/core/brownfield/analyzer.js.map +1 -0
  394. package/dist/src/core/brownfield/importer.d.ts +76 -0
  395. package/dist/src/core/brownfield/importer.d.ts.map +1 -0
  396. package/dist/src/core/brownfield/importer.js +287 -0
  397. package/dist/src/core/brownfield/importer.js.map +1 -0
  398. package/dist/src/core/config-manager.d.ts +47 -0
  399. package/dist/src/core/config-manager.d.ts.map +1 -0
  400. package/dist/src/core/config-manager.js +136 -0
  401. package/dist/src/core/config-manager.js.map +1 -0
  402. package/dist/src/core/cost-tracker.d.ts +108 -0
  403. package/dist/src/core/cost-tracker.d.ts.map +1 -0
  404. package/dist/src/core/cost-tracker.js +281 -0
  405. package/dist/src/core/cost-tracker.js.map +1 -0
  406. package/dist/src/core/credentials-manager.d.ts +107 -0
  407. package/dist/src/core/credentials-manager.d.ts.map +1 -0
  408. package/dist/src/core/credentials-manager.js +457 -0
  409. package/dist/src/core/credentials-manager.js.map +1 -0
  410. package/dist/src/core/i18n/language-detector.d.ts +29 -0
  411. package/dist/src/core/i18n/language-detector.d.ts.map +1 -0
  412. package/dist/src/core/i18n/language-detector.js +143 -0
  413. package/dist/src/core/i18n/language-detector.js.map +1 -0
  414. package/dist/src/core/i18n/language-manager.d.ts +101 -0
  415. package/dist/src/core/i18n/language-manager.d.ts.map +1 -0
  416. package/dist/src/core/i18n/language-manager.js +232 -0
  417. package/dist/src/core/i18n/language-manager.js.map +1 -0
  418. package/dist/src/core/i18n/language-registry.d.ts +44 -0
  419. package/dist/src/core/i18n/language-registry.d.ts.map +1 -0
  420. package/dist/src/core/i18n/language-registry.js +234 -0
  421. package/dist/src/core/i18n/language-registry.js.map +1 -0
  422. package/dist/src/core/i18n/locale-manager.d.ts +62 -0
  423. package/dist/src/core/i18n/locale-manager.d.ts.map +1 -0
  424. package/dist/src/core/i18n/locale-manager.js +137 -0
  425. package/dist/src/core/i18n/locale-manager.js.map +1 -0
  426. package/dist/src/core/i18n/system-prompt-injector.d.ts +33 -0
  427. package/dist/src/core/i18n/system-prompt-injector.d.ts.map +1 -0
  428. package/dist/src/core/i18n/system-prompt-injector.js +131 -0
  429. package/dist/src/core/i18n/system-prompt-injector.js.map +1 -0
  430. package/dist/src/core/i18n/types.d.ts +151 -0
  431. package/dist/src/core/i18n/types.d.ts.map +1 -0
  432. package/dist/src/core/i18n/types.js +11 -0
  433. package/dist/src/core/i18n/types.js.map +1 -0
  434. package/dist/src/core/increment/limits.d.ts +68 -0
  435. package/dist/src/core/increment/limits.d.ts.map +1 -0
  436. package/dist/src/core/increment/limits.js +224 -0
  437. package/dist/src/core/increment/limits.js.map +1 -0
  438. package/dist/src/core/increment/metadata-manager.d.ts +114 -0
  439. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -0
  440. package/dist/src/core/increment/metadata-manager.js +320 -0
  441. package/dist/src/core/increment/metadata-manager.js.map +1 -0
  442. package/dist/src/core/increment/status-commands.d.ts +43 -0
  443. package/dist/src/core/increment/status-commands.d.ts.map +1 -0
  444. package/dist/src/core/increment/status-commands.js +277 -0
  445. package/dist/src/core/increment/status-commands.js.map +1 -0
  446. package/dist/src/core/increment-status.d.ts +72 -0
  447. package/dist/src/core/increment-status.d.ts.map +1 -0
  448. package/dist/src/core/increment-status.js +227 -0
  449. package/dist/src/core/increment-status.js.map +1 -0
  450. package/dist/src/core/model-selector.d.ts +57 -0
  451. package/dist/src/core/model-selector.d.ts.map +1 -0
  452. package/dist/src/core/model-selector.js +115 -0
  453. package/dist/src/core/model-selector.js.map +1 -0
  454. package/dist/src/core/phase-detector.d.ts +62 -0
  455. package/dist/src/core/phase-detector.d.ts.map +1 -0
  456. package/dist/src/core/phase-detector.js +229 -0
  457. package/dist/src/core/phase-detector.js.map +1 -0
  458. package/dist/src/core/plugin-loader.d.ts +131 -0
  459. package/dist/src/core/plugin-loader.d.ts.map +1 -0
  460. package/dist/src/core/plugin-loader.js +421 -0
  461. package/dist/src/core/plugin-loader.js.map +1 -0
  462. package/dist/src/core/project-manager.d.ts +127 -0
  463. package/dist/src/core/project-manager.d.ts.map +1 -0
  464. package/dist/src/core/project-manager.js +524 -0
  465. package/dist/src/core/project-manager.js.map +1 -0
  466. package/dist/src/core/project-structure-detector.d.ts +92 -0
  467. package/dist/src/core/project-structure-detector.d.ts.map +1 -0
  468. package/dist/src/core/project-structure-detector.js +289 -0
  469. package/dist/src/core/project-structure-detector.js.map +1 -0
  470. package/dist/src/core/qa/qa-runner.d.ts +16 -0
  471. package/dist/src/core/qa/qa-runner.d.ts.map +1 -0
  472. package/dist/src/core/qa/qa-runner.js +404 -0
  473. package/dist/src/core/qa/qa-runner.js.map +1 -0
  474. package/dist/src/core/qa/quality-gate-decider.d.ts +53 -0
  475. package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -0
  476. package/dist/src/core/qa/quality-gate-decider.js +268 -0
  477. package/dist/src/core/qa/quality-gate-decider.js.map +1 -0
  478. package/dist/src/core/qa/risk-calculator.d.ts +126 -0
  479. package/dist/src/core/qa/risk-calculator.d.ts.map +1 -0
  480. package/dist/src/core/qa/risk-calculator.js +247 -0
  481. package/dist/src/core/qa/risk-calculator.js.map +1 -0
  482. package/dist/src/core/qa/types.d.ts +315 -0
  483. package/dist/src/core/qa/types.d.ts.map +1 -0
  484. package/dist/src/core/qa/types.js +8 -0
  485. package/dist/src/core/qa/types.js.map +1 -0
  486. package/dist/src/core/rfc-generator-v2.d.ts +149 -0
  487. package/dist/src/core/rfc-generator-v2.d.ts.map +1 -0
  488. package/dist/src/core/rfc-generator-v2.js +399 -0
  489. package/dist/src/core/rfc-generator-v2.js.map +1 -0
  490. package/dist/src/core/specs/spec-metadata-manager.d.ts +70 -0
  491. package/dist/src/core/specs/spec-metadata-manager.d.ts.map +1 -0
  492. package/dist/src/core/specs/spec-metadata-manager.js +371 -0
  493. package/dist/src/core/specs/spec-metadata-manager.js.map +1 -0
  494. package/dist/src/core/specs/spec-parser.d.ts +66 -0
  495. package/dist/src/core/specs/spec-parser.d.ts.map +1 -0
  496. package/dist/src/core/specs/spec-parser.js +276 -0
  497. package/dist/src/core/specs/spec-parser.js.map +1 -0
  498. package/dist/src/core/sync/bidirectional-engine.d.ts +110 -0
  499. package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -0
  500. package/dist/src/core/sync/bidirectional-engine.js +356 -0
  501. package/dist/src/core/sync/bidirectional-engine.js.map +1 -0
  502. package/dist/src/core/sync/folder-mapper.d.ts +71 -0
  503. package/dist/src/core/sync/folder-mapper.d.ts.map +1 -0
  504. package/dist/src/core/sync/folder-mapper.js +168 -0
  505. package/dist/src/core/sync/folder-mapper.js.map +1 -0
  506. package/dist/src/core/sync/profile-manager.d.ts +72 -0
  507. package/dist/src/core/sync/profile-manager.d.ts.map +1 -0
  508. package/dist/src/core/sync/profile-manager.js +338 -0
  509. package/dist/src/core/sync/profile-manager.js.map +1 -0
  510. package/dist/src/core/sync/profile-selector.d.ts +52 -0
  511. package/dist/src/core/sync/profile-selector.d.ts.map +1 -0
  512. package/dist/src/core/sync/profile-selector.js +179 -0
  513. package/dist/src/core/sync/profile-selector.js.map +1 -0
  514. package/dist/src/core/sync/profile-validator.d.ts +52 -0
  515. package/dist/src/core/sync/profile-validator.d.ts.map +1 -0
  516. package/dist/src/core/sync/profile-validator.js +225 -0
  517. package/dist/src/core/sync/profile-validator.js.map +1 -0
  518. package/dist/src/core/sync/project-context.d.ts +81 -0
  519. package/dist/src/core/sync/project-context.d.ts.map +1 -0
  520. package/dist/src/core/sync/project-context.js +354 -0
  521. package/dist/src/core/sync/project-context.js.map +1 -0
  522. package/dist/src/core/sync/rate-limiter.d.ts +116 -0
  523. package/dist/src/core/sync/rate-limiter.d.ts.map +1 -0
  524. package/dist/src/core/sync/rate-limiter.js +308 -0
  525. package/dist/src/core/sync/rate-limiter.js.map +1 -0
  526. package/dist/src/core/sync/time-range-selector.d.ts +48 -0
  527. package/dist/src/core/sync/time-range-selector.d.ts.map +1 -0
  528. package/dist/src/core/sync/time-range-selector.js +224 -0
  529. package/dist/src/core/sync/time-range-selector.js.map +1 -0
  530. package/dist/src/core/types/config.d.ts +90 -0
  531. package/dist/src/core/types/config.d.ts.map +1 -0
  532. package/dist/src/core/types/config.js +44 -0
  533. package/dist/src/core/types/config.js.map +1 -0
  534. package/dist/src/core/types/increment-metadata.d.ts +120 -0
  535. package/dist/src/core/types/increment-metadata.d.ts.map +1 -0
  536. package/dist/src/core/types/increment-metadata.js +138 -0
  537. package/dist/src/core/types/increment-metadata.js.map +1 -0
  538. package/dist/src/core/types/plugin.d.ts +283 -0
  539. package/dist/src/core/types/plugin.d.ts.map +1 -0
  540. package/dist/src/core/types/plugin.js +49 -0
  541. package/dist/src/core/types/plugin.js.map +1 -0
  542. package/dist/src/core/types/spec-metadata.d.ts +229 -0
  543. package/dist/src/core/types/spec-metadata.d.ts.map +1 -0
  544. package/dist/src/core/types/spec-metadata.js +14 -0
  545. package/dist/src/core/types/spec-metadata.js.map +1 -0
  546. package/dist/src/core/types/sync-profile.d.ts +403 -0
  547. package/dist/src/core/types/sync-profile.d.ts.map +1 -0
  548. package/dist/src/core/types/sync-profile.js +55 -0
  549. package/dist/src/core/types/sync-profile.js.map +1 -0
  550. package/dist/src/hooks/lib/git-diff-analyzer.d.ts +89 -0
  551. package/dist/src/hooks/lib/git-diff-analyzer.d.ts.map +1 -0
  552. package/dist/src/hooks/lib/git-diff-analyzer.js +226 -0
  553. package/dist/src/hooks/lib/git-diff-analyzer.js.map +1 -0
  554. package/dist/src/hooks/lib/invoke-translator-skill.d.ts +60 -0
  555. package/dist/src/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
  556. package/dist/src/hooks/lib/invoke-translator-skill.js +201 -0
  557. package/dist/src/hooks/lib/invoke-translator-skill.js.map +1 -0
  558. package/dist/src/hooks/lib/prepare-reflection-context.d.ts +42 -0
  559. package/dist/src/hooks/lib/prepare-reflection-context.d.ts.map +1 -0
  560. package/dist/src/hooks/lib/prepare-reflection-context.js +123 -0
  561. package/dist/src/hooks/lib/prepare-reflection-context.js.map +1 -0
  562. package/dist/src/hooks/lib/reflection-config-loader.d.ts +45 -0
  563. package/dist/src/hooks/lib/reflection-config-loader.d.ts.map +1 -0
  564. package/dist/src/hooks/lib/reflection-config-loader.js +132 -0
  565. package/dist/src/hooks/lib/reflection-config-loader.js.map +1 -0
  566. package/dist/src/hooks/lib/reflection-parser.d.ts +33 -0
  567. package/dist/src/hooks/lib/reflection-parser.d.ts.map +1 -0
  568. package/dist/src/hooks/lib/reflection-parser.js +419 -0
  569. package/dist/src/hooks/lib/reflection-parser.js.map +1 -0
  570. package/dist/src/hooks/lib/reflection-prompt-builder.d.ts +56 -0
  571. package/dist/src/hooks/lib/reflection-prompt-builder.d.ts.map +1 -0
  572. package/dist/src/hooks/lib/reflection-prompt-builder.js +239 -0
  573. package/dist/src/hooks/lib/reflection-prompt-builder.js.map +1 -0
  574. package/dist/src/hooks/lib/reflection-storage.d.ts +64 -0
  575. package/dist/src/hooks/lib/reflection-storage.d.ts.map +1 -0
  576. package/dist/src/hooks/lib/reflection-storage.js +305 -0
  577. package/dist/src/hooks/lib/reflection-storage.js.map +1 -0
  578. package/dist/src/hooks/lib/run-self-reflection.d.ts +43 -0
  579. package/dist/src/hooks/lib/run-self-reflection.d.ts.map +1 -0
  580. package/dist/src/hooks/lib/run-self-reflection.js +203 -0
  581. package/dist/src/hooks/lib/run-self-reflection.js.map +1 -0
  582. package/dist/src/hooks/lib/sync-living-docs.d.ts +27 -0
  583. package/dist/src/hooks/lib/sync-living-docs.d.ts.map +1 -0
  584. package/dist/src/hooks/lib/sync-living-docs.js +116 -0
  585. package/dist/src/hooks/lib/sync-living-docs.js.map +1 -0
  586. package/dist/src/hooks/lib/translate-file.d.ts +59 -0
  587. package/dist/src/hooks/lib/translate-file.d.ts.map +1 -0
  588. package/dist/src/hooks/lib/translate-file.js +350 -0
  589. package/dist/src/hooks/lib/translate-file.js.map +1 -0
  590. package/dist/src/hooks/lib/translate-living-docs.d.ts +13 -0
  591. package/dist/src/hooks/lib/translate-living-docs.d.ts.map +1 -0
  592. package/dist/src/hooks/lib/translate-living-docs.js +175 -0
  593. package/dist/src/hooks/lib/translate-living-docs.js.map +1 -0
  594. package/dist/src/hooks/lib/types/reflection-types.d.ts +164 -0
  595. package/dist/src/hooks/lib/types/reflection-types.d.ts.map +1 -0
  596. package/dist/src/hooks/lib/types/reflection-types.js +73 -0
  597. package/dist/src/hooks/lib/types/reflection-types.js.map +1 -0
  598. package/dist/src/hooks/lib/update-tasks-md.d.ts +29 -0
  599. package/dist/src/hooks/lib/update-tasks-md.d.ts.map +1 -0
  600. package/dist/src/hooks/lib/update-tasks-md.js +203 -0
  601. package/dist/src/hooks/lib/update-tasks-md.js.map +1 -0
  602. package/dist/src/integrations/ado/ado-client.d.ts +127 -0
  603. package/dist/src/integrations/ado/ado-client.d.ts.map +1 -0
  604. package/dist/src/integrations/ado/ado-client.js +416 -0
  605. package/dist/src/integrations/ado/ado-client.js.map +1 -0
  606. package/dist/src/integrations/jira/jira-client.d.ts +139 -0
  607. package/dist/src/integrations/jira/jira-client.d.ts.map +1 -0
  608. package/dist/src/integrations/jira/jira-client.js +386 -0
  609. package/dist/src/integrations/jira/jira-client.js.map +1 -0
  610. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +75 -0
  611. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
  612. package/dist/src/integrations/jira/jira-incremental-mapper.js +474 -0
  613. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -0
  614. package/dist/src/integrations/jira/jira-mapper.d.ts +105 -0
  615. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -0
  616. package/dist/src/integrations/jira/jira-mapper.js +494 -0
  617. package/dist/src/integrations/jira/jira-mapper.js.map +1 -0
  618. package/dist/src/metrics/calculators/change-failure-rate.d.ts +22 -0
  619. package/dist/src/metrics/calculators/change-failure-rate.d.ts.map +1 -0
  620. package/dist/src/metrics/calculators/change-failure-rate.js +70 -0
  621. package/dist/src/metrics/calculators/change-failure-rate.js.map +1 -0
  622. package/dist/src/metrics/calculators/deployment-frequency.d.ts +20 -0
  623. package/dist/src/metrics/calculators/deployment-frequency.d.ts.map +1 -0
  624. package/dist/src/metrics/calculators/deployment-frequency.js +61 -0
  625. package/dist/src/metrics/calculators/deployment-frequency.js.map +1 -0
  626. package/dist/src/metrics/calculators/lead-time.d.ts +22 -0
  627. package/dist/src/metrics/calculators/lead-time.d.ts.map +1 -0
  628. package/dist/src/metrics/calculators/lead-time.js +82 -0
  629. package/dist/src/metrics/calculators/lead-time.js.map +1 -0
  630. package/dist/src/metrics/calculators/mttr.d.ts +21 -0
  631. package/dist/src/metrics/calculators/mttr.d.ts.map +1 -0
  632. package/dist/src/metrics/calculators/mttr.js +60 -0
  633. package/dist/src/metrics/calculators/mttr.js.map +1 -0
  634. package/dist/src/metrics/dora-calculator.d.ts +28 -0
  635. package/dist/src/metrics/dora-calculator.d.ts.map +1 -0
  636. package/dist/src/metrics/dora-calculator.js +117 -0
  637. package/dist/src/metrics/dora-calculator.js.map +1 -0
  638. package/dist/src/metrics/github-client.d.ts +51 -0
  639. package/dist/src/metrics/github-client.d.ts.map +1 -0
  640. package/dist/src/metrics/github-client.js +133 -0
  641. package/dist/src/metrics/github-client.js.map +1 -0
  642. package/dist/src/metrics/report-generator.d.ts +17 -0
  643. package/dist/src/metrics/report-generator.d.ts.map +1 -0
  644. package/dist/src/metrics/report-generator.js +403 -0
  645. package/dist/src/metrics/report-generator.js.map +1 -0
  646. package/dist/src/metrics/types.d.ts +112 -0
  647. package/dist/src/metrics/types.d.ts.map +1 -0
  648. package/dist/src/metrics/types.js +10 -0
  649. package/dist/src/metrics/types.js.map +1 -0
  650. package/dist/src/metrics/utils/percentile.d.ts +25 -0
  651. package/dist/src/metrics/utils/percentile.d.ts.map +1 -0
  652. package/dist/src/metrics/utils/percentile.js +46 -0
  653. package/dist/src/metrics/utils/percentile.js.map +1 -0
  654. package/dist/src/metrics/utils/tier-classifier.d.ts +61 -0
  655. package/dist/src/metrics/utils/tier-classifier.d.ts.map +1 -0
  656. package/dist/src/metrics/utils/tier-classifier.js +100 -0
  657. package/dist/src/metrics/utils/tier-classifier.js.map +1 -0
  658. package/dist/src/testing/test-generator.d.ts +117 -0
  659. package/dist/src/testing/test-generator.d.ts.map +1 -0
  660. package/dist/src/testing/test-generator.js +370 -0
  661. package/dist/src/testing/test-generator.js.map +1 -0
  662. package/dist/src/types/cost-tracking.d.ts +43 -0
  663. package/dist/src/types/cost-tracking.d.ts.map +1 -0
  664. package/dist/src/types/cost-tracking.js +8 -0
  665. package/dist/src/types/cost-tracking.js.map +1 -0
  666. package/dist/src/types/model-selection.d.ts +53 -0
  667. package/dist/src/types/model-selection.d.ts.map +1 -0
  668. package/dist/src/types/model-selection.js +12 -0
  669. package/dist/src/types/model-selection.js.map +1 -0
  670. package/dist/src/utils/agents-md-compiler.d.ts +68 -0
  671. package/dist/src/utils/agents-md-compiler.d.ts.map +1 -0
  672. package/dist/src/utils/agents-md-compiler.js +420 -0
  673. package/dist/src/utils/agents-md-compiler.js.map +1 -0
  674. package/dist/src/utils/auth-helpers.d.ts +58 -0
  675. package/dist/src/utils/auth-helpers.d.ts.map +1 -0
  676. package/dist/src/utils/auth-helpers.js +108 -0
  677. package/dist/src/utils/auth-helpers.js.map +1 -0
  678. package/dist/src/utils/auto-install.d.ts +47 -0
  679. package/dist/src/utils/auto-install.d.ts.map +1 -0
  680. package/dist/src/utils/auto-install.js +211 -0
  681. package/dist/src/utils/auto-install.js.map +1 -0
  682. package/dist/src/utils/claude-cli-detector.d.ts +75 -0
  683. package/dist/src/utils/claude-cli-detector.d.ts.map +1 -0
  684. package/dist/src/utils/claude-cli-detector.js +285 -0
  685. package/dist/src/utils/claude-cli-detector.js.map +1 -0
  686. package/dist/src/utils/cost-reporter.d.ts +58 -0
  687. package/dist/src/utils/cost-reporter.d.ts.map +1 -0
  688. package/dist/src/utils/cost-reporter.js +224 -0
  689. package/dist/src/utils/cost-reporter.js.map +1 -0
  690. package/dist/src/utils/docs-preview/config-generator.d.ts +46 -0
  691. package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -0
  692. package/dist/src/utils/docs-preview/config-generator.js +377 -0
  693. package/dist/src/utils/docs-preview/config-generator.js.map +1 -0
  694. package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +38 -0
  695. package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
  696. package/dist/src/utils/docs-preview/docusaurus-setup.js +177 -0
  697. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -0
  698. package/dist/src/utils/docs-preview/index.d.ts +7 -0
  699. package/dist/src/utils/docs-preview/index.d.ts.map +1 -0
  700. package/dist/src/utils/docs-preview/index.js +7 -0
  701. package/dist/src/utils/docs-preview/index.js.map +1 -0
  702. package/dist/src/utils/docs-preview/package-installer.d.ts +42 -0
  703. package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -0
  704. package/dist/src/utils/docs-preview/package-installer.js +182 -0
  705. package/dist/src/utils/docs-preview/package-installer.js.map +1 -0
  706. package/dist/src/utils/docs-preview/server-manager.d.ts +30 -0
  707. package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -0
  708. package/dist/src/utils/docs-preview/server-manager.js +212 -0
  709. package/dist/src/utils/docs-preview/server-manager.js.map +1 -0
  710. package/dist/src/utils/docs-preview/sidebar-builder.d.ts +32 -0
  711. package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
  712. package/dist/src/utils/docs-preview/sidebar-builder.js +202 -0
  713. package/dist/src/utils/docs-preview/sidebar-builder.js.map +1 -0
  714. package/dist/src/utils/docs-preview/types.d.ts +57 -0
  715. package/dist/src/utils/docs-preview/types.d.ts.map +1 -0
  716. package/dist/src/utils/docs-preview/types.js +2 -0
  717. package/dist/src/utils/docs-preview/types.js.map +1 -0
  718. package/dist/src/utils/env-file.d.ts +88 -0
  719. package/dist/src/utils/env-file.d.ts.map +1 -0
  720. package/dist/src/utils/env-file.js +180 -0
  721. package/dist/src/utils/env-file.js.map +1 -0
  722. package/dist/src/utils/env-multi-project-parser.d.ts +220 -0
  723. package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -0
  724. package/dist/src/utils/env-multi-project-parser.js +403 -0
  725. package/dist/src/utils/env-multi-project-parser.js.map +1 -0
  726. package/dist/src/utils/esm-helpers.d.ts +50 -0
  727. package/dist/src/utils/esm-helpers.d.ts.map +1 -0
  728. package/dist/src/utils/esm-helpers.js +57 -0
  729. package/dist/src/utils/esm-helpers.js.map +1 -0
  730. package/dist/src/utils/execFileNoThrow.d.ts +99 -0
  731. package/dist/src/utils/execFileNoThrow.d.ts.map +1 -0
  732. package/dist/src/utils/execFileNoThrow.js +137 -0
  733. package/dist/src/utils/execFileNoThrow.js.map +1 -0
  734. package/dist/src/utils/external-resource-validator.d.ts +102 -0
  735. package/dist/src/utils/external-resource-validator.d.ts.map +1 -0
  736. package/dist/src/utils/external-resource-validator.js +442 -0
  737. package/dist/src/utils/external-resource-validator.js.map +1 -0
  738. package/dist/src/utils/generate-skills-index.d.ts +24 -0
  739. package/dist/src/utils/generate-skills-index.d.ts.map +1 -0
  740. package/dist/src/utils/generate-skills-index.js +410 -0
  741. package/dist/src/utils/generate-skills-index.js.map +1 -0
  742. package/dist/src/utils/model-selection.d.ts +75 -0
  743. package/dist/src/utils/model-selection.d.ts.map +1 -0
  744. package/dist/src/utils/model-selection.js +204 -0
  745. package/dist/src/utils/model-selection.js.map +1 -0
  746. package/dist/src/utils/plugin-validator.d.ts +161 -0
  747. package/dist/src/utils/plugin-validator.d.ts.map +1 -0
  748. package/dist/src/utils/plugin-validator.js +558 -0
  749. package/dist/src/utils/plugin-validator.js.map +1 -0
  750. package/dist/src/utils/pricing-constants.d.ts +70 -0
  751. package/dist/src/utils/pricing-constants.d.ts.map +1 -0
  752. package/dist/src/utils/pricing-constants.js +71 -0
  753. package/dist/src/utils/pricing-constants.js.map +1 -0
  754. package/dist/src/utils/project-detection.d.ts +141 -0
  755. package/dist/src/utils/project-detection.d.ts.map +1 -0
  756. package/dist/src/utils/project-detection.js +321 -0
  757. package/dist/src/utils/project-detection.js.map +1 -0
  758. package/dist/src/utils/string-utils.d.ts +40 -0
  759. package/dist/src/utils/string-utils.d.ts.map +1 -0
  760. package/dist/src/utils/string-utils.js +58 -0
  761. package/dist/src/utils/string-utils.js.map +1 -0
  762. package/dist/src/utils/translation.d.ts +187 -0
  763. package/dist/src/utils/translation.d.ts.map +1 -0
  764. package/dist/src/utils/translation.js +414 -0
  765. package/dist/src/utils/translation.js.map +1 -0
  766. package/dist/utils/env-multi-project-parser.d.ts.map +1 -1
  767. package/dist/utils/env-multi-project-parser.js +0 -2
  768. package/dist/utils/env-multi-project-parser.js.map +1 -1
  769. package/dist/utils/project-mapper.d.ts +92 -0
  770. package/dist/utils/project-mapper.d.ts.map +1 -0
  771. package/dist/utils/project-mapper.js +276 -0
  772. package/dist/utils/project-mapper.js.map +1 -0
  773. package/dist/utils/spec-splitter.d.ts +75 -0
  774. package/dist/utils/spec-splitter.d.ts.map +1 -0
  775. package/dist/utils/spec-splitter.js +332 -0
  776. package/dist/utils/spec-splitter.js.map +1 -0
  777. package/package.json +1 -1
  778. package/plugins/specweave/hooks/lib/update-status-line.sh +138 -0
  779. package/plugins/specweave/hooks/post-task-completion.sh +10 -0
  780. package/plugins/specweave/lib/hooks/git-diff-analyzer.js +213 -129
  781. package/plugins/specweave/lib/hooks/invoke-translator-skill.js +192 -146
  782. package/plugins/specweave/lib/hooks/prepare-reflection-context.js +116 -103
  783. package/plugins/specweave/lib/hooks/reflection-config-loader.js +125 -85
  784. package/plugins/specweave/lib/hooks/reflection-parser.js +385 -267
  785. package/plugins/specweave/lib/hooks/reflection-prompt-builder.js +226 -169
  786. package/plugins/specweave/lib/hooks/reflection-storage.js +297 -223
  787. package/plugins/specweave/lib/hooks/run-self-reflection.js +191 -120
  788. package/plugins/specweave/lib/hooks/sync-living-docs.js +129 -87
  789. package/plugins/specweave/lib/hooks/translate-file.js +300 -239
  790. package/plugins/specweave/lib/hooks/translate-living-docs.js +144 -88
  791. package/plugins/specweave/lib/hooks/types/reflection-types.js +72 -57
  792. package/plugins/specweave/lib/hooks/update-tasks-md.js +179 -117
  793. package/plugins/specweave/skills/multi-project-spec-mapper/SKILL.md +399 -0
  794. package/plugins/specweave-ado/lib/ado-board-resolver.js +205 -135
  795. package/plugins/specweave-ado/lib/ado-hierarchical-sync.js +335 -223
  796. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +486 -0
  797. package/plugins/specweave-ado/lib/ado-multi-project-sync.ts +675 -0
  798. package/plugins/specweave-ado/lib/ado-spec-sync.js +414 -380
  799. package/plugins/specweave-ado/lib/project-selector.js +196 -168
  800. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +17 -3
  801. package/plugins/specweave-docs-preview/commands/preview.md +29 -4
  802. package/plugins/specweave-github/lib/cli-sync-increment-changes.js +20 -9
  803. package/plugins/specweave-github/lib/github-board-resolver.js +115 -69
  804. package/plugins/specweave-github/lib/github-client-v2.js +389 -400
  805. package/plugins/specweave-github/lib/github-client.js +280 -246
  806. package/plugins/specweave-github/lib/github-hierarchical-sync.js +251 -168
  807. package/plugins/specweave-github/lib/github-issue-updater.js +288 -231
  808. package/plugins/specweave-github/lib/github-multi-project-sync.js +393 -0
  809. package/plugins/specweave-github/lib/github-multi-project-sync.ts +537 -0
  810. package/plugins/specweave-github/lib/github-spec-sync.js +420 -379
  811. package/plugins/specweave-github/lib/github-sync-bidirectional.js +202 -175
  812. package/plugins/specweave-github/lib/github-sync-increment-changes.js +251 -212
  813. package/plugins/specweave-github/lib/index.js +10 -11
  814. package/plugins/specweave-github/lib/repo-selector.js +201 -174
  815. package/plugins/specweave-github/lib/subtask-sync.js +125 -132
  816. package/plugins/specweave-github/lib/task-parser.js +207 -191
  817. package/plugins/specweave-github/lib/task-sync.js +296 -344
  818. package/plugins/specweave-github/lib/types.js +5 -0
  819. package/plugins/specweave-jira/lib/jira-board-resolver.js +79 -50
  820. package/plugins/specweave-jira/lib/jira-hierarchical-sync.js +191 -119
  821. package/plugins/specweave-jira/lib/jira-multi-project-sync.js +269 -0
  822. package/plugins/specweave-jira/lib/jira-multi-project-sync.ts +387 -0
  823. package/plugins/specweave-jira/lib/jira-spec-sync.js +405 -366
  824. package/plugins/specweave-jira/lib/project-selector.js +201 -172
  825. package/plugins/specweave-jira/lib/reorganization-detector.js +237 -202
  826. package/plugins/specweave-jira/lib/setup-wizard.js +204 -162
@@ -1,142 +1,165 @@
1
- import { SpecMetadataManager } from "../../../src/core/specs/spec-metadata-manager.js";
2
- import { SpecParser } from "../../../src/core/specs/spec-parser.js";
3
- import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
4
- class GitHubSpecSync {
5
- constructor(projectRoot = process.cwd()) {
6
- this.specManager = new SpecMetadataManager(projectRoot);
7
- }
8
- /**
9
- * Sync spec to GitHub Project (CREATE or UPDATE)
10
- */
11
- async syncSpecToGitHub(specId) {
12
- console.log(`
13
- \u{1F504} Syncing spec ${specId} to GitHub Project...`);
14
- try {
15
- const spec = await this.specManager.loadSpec(specId);
16
- if (!spec) {
17
- return {
18
- success: false,
19
- specId,
20
- provider: "github",
21
- error: `Spec ${specId} not found`
22
- };
23
- }
24
- const repoInfo = await this.detectRepo();
25
- if (!repoInfo) {
26
- return {
27
- success: false,
28
- specId,
29
- provider: "github",
30
- error: "Could not detect GitHub repository"
31
- };
32
- }
33
- const { owner, repo } = repoInfo;
34
- const existingLink = spec.metadata.externalLinks?.github;
35
- let project;
36
- if (existingLink?.projectId) {
37
- console.log(` Found existing GitHub Project #${existingLink.projectId}`);
38
- project = await this.updateGitHubProject(
39
- owner,
40
- repo,
41
- existingLink.projectId,
42
- spec
43
- );
44
- } else {
45
- console.log(" Creating new GitHub Project...");
46
- project = await this.createGitHubProject(owner, repo, spec);
47
- await this.specManager.linkToExternal(specId, "github", {
48
- id: project.id,
49
- url: project.url,
50
- owner,
51
- repo
52
- });
53
- }
54
- const changes = await this.syncUserStories(owner, repo, project.number, spec);
55
- console.log("\u2705 Sync complete!");
56
- return {
57
- success: true,
58
- specId,
59
- provider: "github",
60
- externalId: project.id.toString(),
61
- url: project.url,
62
- changes
63
- };
64
- } catch (error) {
65
- console.error("\u274C Error syncing to GitHub:", error);
66
- return {
67
- success: false,
68
- specId,
69
- provider: "github",
70
- error: error instanceof Error ? error.message : "Unknown error"
71
- };
1
+ /**
2
+ * GitHub Spec Sync
3
+ *
4
+ * CORRECT ARCHITECTURE:
5
+ * - Syncs .specweave/docs/internal/specs/spec-*.md ↔ GitHub Projects
6
+ * - NOT increments ↔ GitHub Issues (that was wrong!)
7
+ *
8
+ * Mapping:
9
+ * - Spec GitHub Project
10
+ * - User Story → GitHub Project Card/Issue
11
+ * - Acceptance Criteria → Checklist in Issue
12
+ *
13
+ * @module github-spec-sync
14
+ */
15
+ import { SpecMetadataManager } from '../../../src/core/specs/spec-metadata-manager.js';
16
+ import { SpecParser } from '../../../src/core/specs/spec-parser.js';
17
+ import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
18
+ export class GitHubSpecSync {
19
+ constructor(projectRoot = process.cwd()) {
20
+ this.specManager = new SpecMetadataManager(projectRoot);
72
21
  }
73
- }
74
- /**
75
- * Sync FROM GitHub Project to spec (bidirectional)
76
- */
77
- async syncFromGitHub(specId) {
78
- console.log(`
79
- \u{1F504} Syncing FROM GitHub to spec ${specId}...`);
80
- try {
81
- const spec = await this.specManager.loadSpec(specId);
82
- if (!spec) {
83
- return {
84
- success: false,
85
- specId,
86
- provider: "github",
87
- error: `Spec ${specId} not found`
88
- };
89
- }
90
- const githubLink = spec.metadata.externalLinks?.github;
91
- if (!githubLink?.projectId) {
92
- return {
93
- success: false,
94
- specId,
95
- provider: "github",
96
- error: "Spec not linked to GitHub Project"
97
- };
98
- }
99
- const { owner, repo } = await this.detectRepo() || { owner: "", repo: "" };
100
- const project = await this.fetchGitHubProject(owner, repo, githubLink.projectId);
101
- const conflicts = await this.detectConflicts(spec, project);
102
- if (conflicts.length === 0) {
103
- console.log("\u2705 No conflicts - spec and GitHub in sync");
104
- return {
105
- success: true,
106
- specId,
107
- provider: "github",
108
- externalId: project.id.toString(),
109
- url: project.url
110
- };
111
- }
112
- console.log(`\u26A0\uFE0F Detected ${conflicts.length} conflict(s)`);
113
- await this.resolveConflicts(spec, conflicts);
114
- console.log("\u2705 Sync FROM GitHub complete!");
115
- return {
116
- success: true,
117
- specId,
118
- provider: "github",
119
- externalId: project.id.toString(),
120
- url: project.url,
121
- conflicts
122
- };
123
- } catch (error) {
124
- console.error("\u274C Error syncing FROM GitHub:", error);
125
- return {
126
- success: false,
127
- specId,
128
- provider: "github",
129
- error: error instanceof Error ? error.message : "Unknown error"
130
- };
22
+ /**
23
+ * Sync spec to GitHub Project (CREATE or UPDATE)
24
+ */
25
+ async syncSpecToGitHub(specId) {
26
+ console.log(`\n🔄 Syncing spec ${specId} to GitHub Project...`);
27
+ try {
28
+ // 1. Load spec
29
+ const spec = await this.specManager.loadSpec(specId);
30
+ if (!spec) {
31
+ return {
32
+ success: false,
33
+ specId,
34
+ provider: 'github',
35
+ error: `Spec ${specId} not found`
36
+ };
37
+ }
38
+ // 2. Detect repository
39
+ const repoInfo = await this.detectRepo();
40
+ if (!repoInfo) {
41
+ return {
42
+ success: false,
43
+ specId,
44
+ provider: 'github',
45
+ error: 'Could not detect GitHub repository'
46
+ };
47
+ }
48
+ const { owner, repo } = repoInfo;
49
+ // 3. Check if spec already linked to GitHub Project
50
+ const existingLink = spec.metadata.externalLinks?.github;
51
+ let project;
52
+ if (existingLink?.projectId) {
53
+ // UPDATE existing project
54
+ console.log(` Found existing GitHub Project #${existingLink.projectId}`);
55
+ project = await this.updateGitHubProject(owner, repo, existingLink.projectId, spec);
56
+ }
57
+ else {
58
+ // CREATE new project
59
+ console.log(' Creating new GitHub Project...');
60
+ project = await this.createGitHubProject(owner, repo, spec);
61
+ // Link spec to project
62
+ await this.specManager.linkToExternal(specId, 'github', {
63
+ id: project.id,
64
+ url: project.url,
65
+ owner,
66
+ repo
67
+ });
68
+ }
69
+ // 4. Sync user stories as issues/cards
70
+ const changes = await this.syncUserStories(owner, repo, project.number, spec);
71
+ console.log('✅ Sync complete!');
72
+ return {
73
+ success: true,
74
+ specId,
75
+ provider: 'github',
76
+ externalId: project.id.toString(),
77
+ url: project.url,
78
+ changes
79
+ };
80
+ }
81
+ catch (error) {
82
+ console.error('❌ Error syncing to GitHub:', error);
83
+ return {
84
+ success: false,
85
+ specId,
86
+ provider: 'github',
87
+ error: error instanceof Error ? error.message : 'Unknown error'
88
+ };
89
+ }
131
90
  }
132
- }
133
- /**
134
- * Create new GitHub Project for spec
135
- */
136
- async createGitHubProject(owner, repo, spec) {
137
- const projectTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
138
- const projectBody = this.generateProjectDescription(spec);
139
- const query = `
91
+ /**
92
+ * Sync FROM GitHub Project to spec (bidirectional)
93
+ */
94
+ async syncFromGitHub(specId) {
95
+ console.log(`\n🔄 Syncing FROM GitHub to spec ${specId}...`);
96
+ try {
97
+ // 1. Load spec
98
+ const spec = await this.specManager.loadSpec(specId);
99
+ if (!spec) {
100
+ return {
101
+ success: false,
102
+ specId,
103
+ provider: 'github',
104
+ error: `Spec ${specId} not found`
105
+ };
106
+ }
107
+ // 2. Get GitHub Project link
108
+ const githubLink = spec.metadata.externalLinks?.github;
109
+ if (!githubLink?.projectId) {
110
+ return {
111
+ success: false,
112
+ specId,
113
+ provider: 'github',
114
+ error: 'Spec not linked to GitHub Project'
115
+ };
116
+ }
117
+ const { owner, repo } = await this.detectRepo() || { owner: '', repo: '' };
118
+ // 3. Fetch GitHub Project state
119
+ const project = await this.fetchGitHubProject(owner, repo, githubLink.projectId);
120
+ // 4. Detect conflicts
121
+ const conflicts = await this.detectConflicts(spec, project);
122
+ if (conflicts.length === 0) {
123
+ console.log('✅ No conflicts - spec and GitHub in sync');
124
+ return {
125
+ success: true,
126
+ specId,
127
+ provider: 'github',
128
+ externalId: project.id.toString(),
129
+ url: project.url
130
+ };
131
+ }
132
+ console.log(`⚠️ Detected ${conflicts.length} conflict(s)`);
133
+ // 5. Resolve conflicts (GitHub wins by default for now)
134
+ await this.resolveConflicts(spec, conflicts);
135
+ console.log('✅ Sync FROM GitHub complete!');
136
+ return {
137
+ success: true,
138
+ specId,
139
+ provider: 'github',
140
+ externalId: project.id.toString(),
141
+ url: project.url,
142
+ conflicts
143
+ };
144
+ }
145
+ catch (error) {
146
+ console.error('❌ Error syncing FROM GitHub:', error);
147
+ return {
148
+ success: false,
149
+ specId,
150
+ provider: 'github',
151
+ error: error instanceof Error ? error.message : 'Unknown error'
152
+ };
153
+ }
154
+ }
155
+ /**
156
+ * Create new GitHub Project for spec
157
+ */
158
+ async createGitHubProject(owner, repo, spec) {
159
+ const projectTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
160
+ const projectBody = this.generateProjectDescription(spec);
161
+ // Use GraphQL to create project
162
+ const query = `
140
163
  mutation CreateProject($ownerId: ID!, $title: String!, $body: String!) {
141
164
  createProjectV2(input: {
142
165
  ownerId: $ownerId,
@@ -152,31 +175,33 @@ class GitHubSpecSync {
152
175
  }
153
176
  }
154
177
  `;
155
- const ownerId = await this.getOwnerId(owner);
156
- const result = await this.executeGraphQL(query, {
157
- ownerId,
158
- title: projectTitle,
159
- body: projectBody
160
- });
161
- const project = result.data.createProjectV2.projectV2;
162
- console.log(` \u2705 Created GitHub Project #${project.number}: ${project.url}`);
163
- return {
164
- id: parseInt(project.id, 10),
165
- title: project.title,
166
- number: project.number,
167
- url: project.url,
168
- state: "open",
169
- owner,
170
- repo
171
- };
172
- }
173
- /**
174
- * Update existing GitHub Project
175
- */
176
- async updateGitHubProject(owner, repo, projectId, spec) {
177
- const projectTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
178
- const projectBody = this.generateProjectDescription(spec);
179
- const query = `
178
+ // Get owner ID first
179
+ const ownerId = await this.getOwnerId(owner);
180
+ const result = await this.executeGraphQL(query, {
181
+ ownerId,
182
+ title: projectTitle,
183
+ body: projectBody
184
+ });
185
+ const project = result.data.createProjectV2.projectV2;
186
+ console.log(` ✅ Created GitHub Project #${project.number}: ${project.url}`);
187
+ return {
188
+ id: parseInt(project.id, 10),
189
+ title: project.title,
190
+ number: project.number,
191
+ url: project.url,
192
+ state: 'open',
193
+ owner,
194
+ repo
195
+ };
196
+ }
197
+ /**
198
+ * Update existing GitHub Project
199
+ */
200
+ async updateGitHubProject(owner, repo, projectId, spec) {
201
+ const projectTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
202
+ const projectBody = this.generateProjectDescription(spec);
203
+ // Use GraphQL to update project
204
+ const query = `
180
205
  mutation UpdateProject($projectId: ID!, $title: String, $body: String) {
181
206
  updateProjectV2(input: {
182
207
  projectId: $projectId,
@@ -192,66 +217,73 @@ class GitHubSpecSync {
192
217
  }
193
218
  }
194
219
  `;
195
- const result = await this.executeGraphQL(query, {
196
- projectId: projectId.toString(),
197
- title: projectTitle,
198
- body: projectBody
199
- });
200
- const project = result.data.updateProjectV2.projectV2;
201
- console.log(` \u2705 Updated GitHub Project #${project.number}`);
202
- return {
203
- id: projectId,
204
- title: project.title,
205
- number: project.number,
206
- url: project.url,
207
- state: "open",
208
- owner,
209
- repo
210
- };
211
- }
212
- /**
213
- * Sync user stories as GitHub Issues
214
- */
215
- async syncUserStories(owner, repo, projectNumber, spec) {
216
- const created = [];
217
- const updated = [];
218
- const deleted = [];
219
- if (!spec.metadata.userStories || spec.metadata.userStories.length === 0) {
220
- console.log(" \u2139\uFE0F No user stories to sync");
221
- return { created, updated, deleted };
222
- }
223
- console.log(` Syncing ${spec.metadata.userStories.length} user stories...`);
224
- for (const us of spec.metadata.userStories) {
225
- const issueTitle = `[${us.id}] ${us.title}`;
226
- const issueBody = this.generateIssueBody(us);
227
- const existingIssue = await this.findIssueByTitle(owner, repo, us.id);
228
- if (existingIssue) {
229
- await this.updateIssue(owner, repo, existingIssue.number, {
230
- title: issueTitle,
231
- body: issueBody,
232
- state: us.status === "done" ? "closed" : "open"
233
- });
234
- updated.push(us.id);
235
- console.log(` \u2705 Updated ${us.id}`);
236
- } else {
237
- const newIssue = await this.createIssue(owner, repo, {
238
- title: issueTitle,
239
- body: issueBody,
240
- labels: ["user-story", `spec:${spec.metadata.id}`, `priority:${us.priority}`]
220
+ const result = await this.executeGraphQL(query, {
221
+ projectId: projectId.toString(),
222
+ title: projectTitle,
223
+ body: projectBody
241
224
  });
242
- created.push(us.id);
243
- console.log(` \u2705 Created ${us.id} \u2192 Issue #${newIssue.number}`);
244
- }
225
+ const project = result.data.updateProjectV2.projectV2;
226
+ console.log(` Updated GitHub Project #${project.number}`);
227
+ return {
228
+ id: projectId,
229
+ title: project.title,
230
+ number: project.number,
231
+ url: project.url,
232
+ state: 'open',
233
+ owner,
234
+ repo
235
+ };
245
236
  }
246
- return { created, updated, deleted };
247
- }
248
- /**
249
- * Generate project description from spec
250
- */
251
- generateProjectDescription(spec) {
252
- const progress = spec.metadata.progress;
253
- const progressText = progress ? `**Progress**: ${progress.percentComplete}% (${progress.completedUserStories}/${progress.totalUserStories} user stories)` : "**Progress**: N/A";
254
- return `
237
+ /**
238
+ * Sync user stories as GitHub Issues
239
+ */
240
+ async syncUserStories(owner, repo, projectNumber, spec) {
241
+ const created = [];
242
+ const updated = [];
243
+ const deleted = [];
244
+ if (!spec.metadata.userStories || spec.metadata.userStories.length === 0) {
245
+ console.log(' ℹ️ No user stories to sync');
246
+ return { created, updated, deleted };
247
+ }
248
+ console.log(` Syncing ${spec.metadata.userStories.length} user stories...`);
249
+ for (const us of spec.metadata.userStories) {
250
+ // Create or update issue for each user story
251
+ const issueTitle = `[${us.id}] ${us.title}`;
252
+ const issueBody = this.generateIssueBody(us);
253
+ // Check if issue already exists (by title pattern)
254
+ const existingIssue = await this.findIssueByTitle(owner, repo, us.id);
255
+ if (existingIssue) {
256
+ // UPDATE existing issue
257
+ await this.updateIssue(owner, repo, existingIssue.number, {
258
+ title: issueTitle,
259
+ body: issueBody,
260
+ state: us.status === 'done' ? 'closed' : 'open'
261
+ });
262
+ updated.push(us.id);
263
+ console.log(` ✅ Updated ${us.id}`);
264
+ }
265
+ else {
266
+ // CREATE new issue
267
+ const newIssue = await this.createIssue(owner, repo, {
268
+ title: issueTitle,
269
+ body: issueBody,
270
+ labels: ['user-story', `spec:${spec.metadata.id}`, `priority:${us.priority}`]
271
+ });
272
+ created.push(us.id);
273
+ console.log(` ✅ Created ${us.id} → Issue #${newIssue.number}`);
274
+ }
275
+ }
276
+ return { created, updated, deleted };
277
+ }
278
+ /**
279
+ * Generate project description from spec
280
+ */
281
+ generateProjectDescription(spec) {
282
+ const progress = spec.metadata.progress;
283
+ const progressText = progress
284
+ ? `**Progress**: ${progress.percentComplete}% (${progress.completedUserStories}/${progress.totalUserStories} user stories)`
285
+ : '**Progress**: N/A';
286
+ return `
255
287
  # ${spec.metadata.title}
256
288
 
257
289
  **Spec ID**: ${spec.metadata.id}
@@ -271,16 +303,18 @@ ${spec.metadata.userStories?.length || 0} user stories tracked in this project.
271
303
 
272
304
  ---
273
305
 
274
- \u{1F916} **Auto-synced from SpecWeave**
275
- Last updated: ${(/* @__PURE__ */ new Date()).toISOString()}
306
+ 🤖 **Auto-synced from SpecWeave**
307
+ Last updated: ${new Date().toISOString()}
276
308
  `.trim();
277
- }
278
- /**
279
- * Generate issue body from user story
280
- */
281
- generateIssueBody(us) {
282
- const acList = us.acceptanceCriteria.map((ac) => `- [${ac.status === "done" ? "x" : " "}] ${ac.description}`).join("\n");
283
- return `
309
+ }
310
+ /**
311
+ * Generate issue body from user story
312
+ */
313
+ generateIssueBody(us) {
314
+ const acList = us.acceptanceCriteria
315
+ .map(ac => `- [${ac.status === 'done' ? 'x' : ' '}] ${ac.description}`)
316
+ .join('\n');
317
+ return `
284
318
  ## User Story
285
319
 
286
320
  ${us.title}
@@ -294,171 +328,178 @@ ${acList}
294
328
  **Priority**: ${us.priority}
295
329
  **Status**: ${us.status}
296
330
 
297
- \u{1F916} **Auto-synced from SpecWeave**
331
+ 🤖 **Auto-synced from SpecWeave**
298
332
  `.trim();
299
- }
300
- /**
301
- * Detect conflicts between spec and GitHub
302
- */
303
- async detectConflicts(spec, project) {
304
- const conflicts = [];
305
- const expectedTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
306
- if (project.title !== expectedTitle) {
307
- conflicts.push({
308
- type: "metadata",
309
- field: "title",
310
- localValue: spec.metadata.title,
311
- remoteValue: project.title,
312
- resolution: "remote-wins",
313
- description: "Project title differs from spec title"
314
- });
315
333
  }
316
- return conflicts;
317
- }
318
- /**
319
- * Resolve conflicts
320
- */
321
- async resolveConflicts(spec, conflicts) {
322
- for (const conflict of conflicts) {
323
- if (conflict.resolution === "remote-wins") {
324
- console.log(` \u{1F504} Resolving: ${conflict.description} (GitHub wins)`);
325
- if (conflict.field === "title") {
326
- await this.specManager.saveMetadata(spec.metadata.id, {
327
- title: conflict.remoteValue
328
- });
334
+ /**
335
+ * Detect conflicts between spec and GitHub
336
+ */
337
+ async detectConflicts(spec, project) {
338
+ const conflicts = [];
339
+ // Compare project title
340
+ const expectedTitle = `[${spec.metadata.id.toUpperCase()}] ${spec.metadata.title}`;
341
+ if (project.title !== expectedTitle) {
342
+ conflicts.push({
343
+ type: 'metadata',
344
+ field: 'title',
345
+ localValue: spec.metadata.title,
346
+ remoteValue: project.title,
347
+ resolution: 'remote-wins',
348
+ description: 'Project title differs from spec title'
349
+ });
329
350
  }
330
- }
351
+ // TODO: Compare user stories and their statuses
352
+ return conflicts;
331
353
  }
332
- }
333
- /**
334
- * Execute GraphQL query against GitHub API
335
- */
336
- async executeGraphQL(query, variables) {
337
- const result = await execFileNoThrow("gh", [
338
- "api",
339
- "graphql",
340
- "-f",
341
- `query=${query}`,
342
- ...Object.entries(variables).flatMap(([key, value]) => ["-F", `${key}=${value}`])
343
- ]);
344
- if (result.error) {
345
- throw new Error(`GraphQL query failed: ${result.error}`);
354
+ /**
355
+ * Resolve conflicts
356
+ */
357
+ async resolveConflicts(spec, conflicts) {
358
+ for (const conflict of conflicts) {
359
+ if (conflict.resolution === 'remote-wins') {
360
+ console.log(` 🔄 Resolving: ${conflict.description} (GitHub wins)`);
361
+ // Update spec metadata from GitHub
362
+ if (conflict.field === 'title') {
363
+ await this.specManager.saveMetadata(spec.metadata.id, {
364
+ title: conflict.remoteValue
365
+ });
366
+ }
367
+ }
368
+ }
369
+ }
370
+ /**
371
+ * Execute GraphQL query against GitHub API
372
+ */
373
+ async executeGraphQL(query, variables) {
374
+ const result = await execFileNoThrow('gh', [
375
+ 'api',
376
+ 'graphql',
377
+ '-f',
378
+ `query=${query}`,
379
+ ...Object.entries(variables).flatMap(([key, value]) => ['-F', `${key}=${value}`])
380
+ ]);
381
+ if (result.error) {
382
+ throw new Error(`GraphQL query failed: ${result.error}`);
383
+ }
384
+ return JSON.parse(result.stdout);
346
385
  }
347
- return JSON.parse(result.stdout);
348
- }
349
- /**
350
- * Get owner ID (user or organization)
351
- */
352
- async getOwnerId(owner) {
353
- const query = `
386
+ /**
387
+ * Get owner ID (user or organization)
388
+ */
389
+ async getOwnerId(owner) {
390
+ const query = `
354
391
  query GetOwner($login: String!) {
355
392
  repositoryOwner(login: $login) {
356
393
  id
357
394
  }
358
395
  }
359
396
  `;
360
- const result = await this.executeGraphQL(query, { login: owner });
361
- return result.data.repositoryOwner.id;
362
- }
363
- /**
364
- * Fetch GitHub Project details
365
- */
366
- async fetchGitHubProject(owner, repo, projectId) {
367
- return {
368
- id: projectId,
369
- title: "Project Title",
370
- number: 1,
371
- url: "https://github.com/...",
372
- state: "open",
373
- owner,
374
- repo
375
- };
376
- }
377
- /**
378
- * Find issue by title pattern
379
- */
380
- async findIssueByTitle(owner, repo, usId) {
381
- const result = await execFileNoThrow("gh", [
382
- "issue",
383
- "list",
384
- "--repo",
385
- `${owner}/${repo}`,
386
- "--search",
387
- `"[${usId}]" in:title`,
388
- "--json",
389
- "number,title,body,state,labels",
390
- "--limit",
391
- "1"
392
- ]);
393
- if (result.error || !result.stdout) {
394
- return null;
397
+ const result = await this.executeGraphQL(query, { login: owner });
398
+ return result.data.repositoryOwner.id;
395
399
  }
396
- const issues = JSON.parse(result.stdout);
397
- return issues.length > 0 ? issues[0] : null;
398
- }
399
- /**
400
- * Create GitHub issue
401
- */
402
- async createIssue(owner, repo, issue) {
403
- const result = await execFileNoThrow("gh", [
404
- "issue",
405
- "create",
406
- "--repo",
407
- `${owner}/${repo}`,
408
- "--title",
409
- issue.title,
410
- "--body",
411
- issue.body,
412
- "--label",
413
- issue.labels.join(","),
414
- "--json",
415
- "number,title,body,state"
416
- ]);
417
- if (result.error) {
418
- throw new Error(`Failed to create issue: ${result.error}`);
419
- }
420
- return JSON.parse(result.stdout);
421
- }
422
- /**
423
- * Update GitHub issue
424
- */
425
- async updateIssue(owner, repo, issueNumber, updates) {
426
- const args = ["issue", "edit", issueNumber.toString(), "--repo", `${owner}/${repo}`];
427
- if (updates.title) {
428
- args.push("--title", updates.title);
429
- }
430
- if (updates.body) {
431
- args.push("--body", updates.body);
400
+ /**
401
+ * Fetch GitHub Project details
402
+ */
403
+ async fetchGitHubProject(owner, repo, projectId) {
404
+ // Placeholder - would use GraphQL to fetch project
405
+ return {
406
+ id: projectId,
407
+ title: 'Project Title',
408
+ number: 1,
409
+ url: 'https://github.com/...',
410
+ state: 'open',
411
+ owner,
412
+ repo
413
+ };
432
414
  }
433
- if (updates.state === "closed") {
434
- args.push("--state", "closed");
435
- } else if (updates.state === "open") {
436
- args.push("--state", "open");
415
+ /**
416
+ * Find issue by title pattern
417
+ */
418
+ async findIssueByTitle(owner, repo, usId) {
419
+ const result = await execFileNoThrow('gh', [
420
+ 'issue',
421
+ 'list',
422
+ '--repo',
423
+ `${owner}/${repo}`,
424
+ '--search',
425
+ `"[${usId}]" in:title`,
426
+ '--json',
427
+ 'number,title,body,state,labels',
428
+ '--limit',
429
+ '1'
430
+ ]);
431
+ if (result.error || !result.stdout) {
432
+ return null;
433
+ }
434
+ const issues = JSON.parse(result.stdout);
435
+ return issues.length > 0 ? issues[0] : null;
437
436
  }
438
- const result = await execFileNoThrow("gh", args);
439
- if (result.error) {
440
- throw new Error(`Failed to update issue #${issueNumber}: ${result.error}`);
437
+ /**
438
+ * Create GitHub issue
439
+ */
440
+ async createIssue(owner, repo, issue) {
441
+ const result = await execFileNoThrow('gh', [
442
+ 'issue',
443
+ 'create',
444
+ '--repo',
445
+ `${owner}/${repo}`,
446
+ '--title',
447
+ issue.title,
448
+ '--body',
449
+ issue.body,
450
+ '--label',
451
+ issue.labels.join(','),
452
+ '--json',
453
+ 'number,title,body,state'
454
+ ]);
455
+ if (result.error) {
456
+ throw new Error(`Failed to create issue: ${result.error}`);
457
+ }
458
+ return JSON.parse(result.stdout);
441
459
  }
442
- }
443
- /**
444
- * Detect GitHub repository from git remote
445
- */
446
- async detectRepo() {
447
- const result = await execFileNoThrow("git", ["remote", "get-url", "origin"]);
448
- if (result.error || !result.stdout) {
449
- return null;
460
+ /**
461
+ * Update GitHub issue
462
+ */
463
+ async updateIssue(owner, repo, issueNumber, updates) {
464
+ const args = ['issue', 'edit', issueNumber.toString(), '--repo', `${owner}/${repo}`];
465
+ if (updates.title) {
466
+ args.push('--title', updates.title);
467
+ }
468
+ if (updates.body) {
469
+ args.push('--body', updates.body);
470
+ }
471
+ if (updates.state === 'closed') {
472
+ args.push('--state', 'closed');
473
+ }
474
+ else if (updates.state === 'open') {
475
+ args.push('--state', 'open');
476
+ }
477
+ const result = await execFileNoThrow('gh', args);
478
+ if (result.error) {
479
+ throw new Error(`Failed to update issue #${issueNumber}: ${result.error}`);
480
+ }
450
481
  }
451
- const remoteUrl = result.stdout.trim();
452
- const httpsMatch = remoteUrl.match(/github\.com[/:]([\w-]+)\/([\w-]+?)(\.git)?$/);
453
- if (httpsMatch) {
454
- return {
455
- owner: httpsMatch[1],
456
- repo: httpsMatch[2]
457
- };
482
+ /**
483
+ * Detect GitHub repository from git remote
484
+ */
485
+ async detectRepo() {
486
+ const result = await execFileNoThrow('git', ['remote', 'get-url', 'origin']);
487
+ if (result.error || !result.stdout) {
488
+ return null;
489
+ }
490
+ const remoteUrl = result.stdout.trim();
491
+ // Parse GitHub URL
492
+ // Examples:
493
+ // - https://github.com/owner/repo.git
494
+ // - git@github.com:owner/repo.git
495
+ const httpsMatch = remoteUrl.match(/github\.com[/:]([\w-]+)\/([\w-]+?)(\.git)?$/);
496
+ if (httpsMatch) {
497
+ return {
498
+ owner: httpsMatch[1],
499
+ repo: httpsMatch[2]
500
+ };
501
+ }
502
+ return null;
458
503
  }
459
- return null;
460
- }
461
504
  }
462
- export {
463
- GitHubSpecSync
464
- };
505
+ //# sourceMappingURL=github-spec-sync.js.map