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
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Anthropic API Pricing Constants
3
+ *
4
+ * Pricing as of 2025-10-31 (verified against https://www.anthropic.com/pricing)
5
+ *
6
+ * Model Tier Mapping:
7
+ * - sonnet → claude-sonnet-4-5-20250929 (latest Sonnet 4.5)
8
+ * - haiku → claude-4-5-haiku-20250110 (latest Haiku 4.5)
9
+ * - opus → claude-opus-4-0-... (when released)
10
+ *
11
+ * Note: This file should be updated when Anthropic releases new models.
12
+ */
13
+ /**
14
+ * Pricing per 1M tokens (input/output) in USD
15
+ */
16
+ export const PRICING = {
17
+ sonnet: {
18
+ input: 0.000003, // $3 per 1M input tokens
19
+ output: 0.000015, // $15 per 1M output tokens
20
+ },
21
+ haiku: {
22
+ input: 0.000001, // $1 per 1M input tokens
23
+ output: 0.000005, // $5 per 1M output tokens
24
+ },
25
+ opus: {
26
+ input: 0.000015, // $15 per 1M input tokens
27
+ output: 0.000075, // $75 per 1M output tokens
28
+ },
29
+ };
30
+ /**
31
+ * Calculate cost for a given model and token usage
32
+ *
33
+ * @param model - Model tier (sonnet, haiku, opus)
34
+ * @param inputTokens - Number of input tokens
35
+ * @param outputTokens - Number of output tokens
36
+ * @returns Total cost in USD
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const cost = calculateCost('haiku', 1000, 500);
41
+ * // Returns: 0.0035 ($0.0035 = $0.001 input + $0.0025 output)
42
+ * ```
43
+ */
44
+ export function calculateCost(model, inputTokens, outputTokens) {
45
+ const pricing = PRICING[model];
46
+ return (inputTokens * pricing.input) + (outputTokens * pricing.output);
47
+ }
48
+ /**
49
+ * Get pricing constants for a specific model
50
+ *
51
+ * @param model - Model tier
52
+ * @returns Pricing object with input/output costs
53
+ */
54
+ export function getModelPricing(model) {
55
+ return PRICING[model];
56
+ }
57
+ /**
58
+ * Calculate cost savings vs baseline (all-Sonnet)
59
+ *
60
+ * @param actualModel - Model actually used
61
+ * @param inputTokens - Input tokens
62
+ * @param outputTokens - Output tokens
63
+ * @returns Savings amount in dollars (positive = saved money)
64
+ */
65
+ export function calculateSavings(actualModel, inputTokens, outputTokens) {
66
+ const actualCost = calculateCost(actualModel, inputTokens, outputTokens);
67
+ const baselineCost = calculateCost('sonnet', inputTokens, outputTokens);
68
+ const savedAmount = baselineCost - actualCost;
69
+ return savedAmount;
70
+ }
71
+ //# sourceMappingURL=pricing-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-constants.js","sourceRoot":"","sources":["../../../src/utils/pricing-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,QAAQ,EAAI,yBAAyB;QAC5C,MAAM,EAAE,QAAQ,EAAG,2BAA2B;KAC/C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,QAAQ,EAAI,yBAAyB;QAC5C,MAAM,EAAE,QAAQ,EAAG,0BAA0B;KAC9C;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ,EAAI,0BAA0B;QAC7C,MAAM,EAAE,QAAQ,EAAG,2BAA2B;KAC/C;CACO,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAkC,EAClC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkC;IAChE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAwC,EACxC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;IAE9C,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Project ID Auto-Detection Utilities
3
+ *
4
+ * Detects project ID from:
5
+ * 1. Git remote (GitHub repo name)
6
+ * 2. Sync configuration (JIRA project key, ADO project name)
7
+ * 3. User prompt (fallback)
8
+ */
9
+ /**
10
+ * Auto-detect project ID from git remote URL
11
+ *
12
+ * Extracts repository name from git remote URL
13
+ *
14
+ * @param projectRoot - Project root directory
15
+ * @returns Project ID (repo name) or null if not detected
16
+ *
17
+ * @example
18
+ * // Git remote: https://github.com/anton-abyzov/specweave.git
19
+ * detectProjectIdFromGit('/path/to/project')
20
+ * // Returns: "specweave"
21
+ *
22
+ * @example
23
+ * // Git remote: git@github.com:my-org/web-app.git
24
+ * detectProjectIdFromGit('/path/to/project')
25
+ * // Returns: "web-app"
26
+ */
27
+ export declare function detectProjectIdFromGit(projectRoot: string): string | null;
28
+ /**
29
+ * Auto-detect project ID from sync configuration
30
+ *
31
+ * Checks existing sync profiles for JIRA project key or ADO project name
32
+ *
33
+ * @param projectRoot - Project root directory
34
+ * @returns Project ID from sync config or null if not detected
35
+ *
36
+ * @example
37
+ * // Config has JIRA: { projectKey: "WEBAPP" }
38
+ * detectProjectIdFromSync('/path/to/project')
39
+ * // Returns: "webapp"
40
+ */
41
+ export declare function detectProjectIdFromSync(projectRoot: string): string | null;
42
+ /**
43
+ * Prompt user for project ID
44
+ *
45
+ * Interactive prompt with validation and helpful examples
46
+ *
47
+ * @param suggestedId - Optional suggested project ID (from detection)
48
+ * @returns Project ID entered by user
49
+ *
50
+ * @example
51
+ * await promptForProjectId()
52
+ * // User sees:
53
+ * // Project ID (matches GitHub repo, JIRA project, or ADO project): █
54
+ * // User enters: "web-app"
55
+ * // Returns: "web-app"
56
+ */
57
+ export declare function promptForProjectId(suggestedId?: string): Promise<string>;
58
+ /**
59
+ * Auto-detect project ID synchronously (no prompts)
60
+ *
61
+ * Priority:
62
+ * 1. Git remote (GitHub repo name)
63
+ * 2. Sync configuration (JIRA/ADO project)
64
+ * 3. "default" (fallback)
65
+ *
66
+ * @param projectRoot - Project root directory
67
+ * @param options - Detection options
68
+ * @returns Detected project ID or "default"
69
+ *
70
+ * @example
71
+ * // In git repo: https://github.com/anton-abyzov/specweave.git
72
+ * autoDetectProjectIdSync('/path/to/project')
73
+ * // Returns: "specweave"
74
+ *
75
+ * @example
76
+ * // No git, no sync
77
+ * autoDetectProjectIdSync('/path/to/project')
78
+ * // Returns: "default"
79
+ */
80
+ export declare function autoDetectProjectIdSync(projectRoot: string, options?: {
81
+ silent?: boolean;
82
+ }): string;
83
+ /**
84
+ * Auto-detect project ID with fallback chain (async version with prompts)
85
+ *
86
+ * Priority:
87
+ * 1. Git remote (GitHub repo name)
88
+ * 2. Sync configuration (JIRA/ADO project)
89
+ * 3. User prompt (with detected suggestion)
90
+ * 4. "default" (if user accepts default in prompt)
91
+ *
92
+ * @param projectRoot - Project root directory
93
+ * @param options - Detection options
94
+ * @returns Detected or prompted project ID
95
+ *
96
+ * @example
97
+ * // In git repo: https://github.com/anton-abyzov/specweave.git
98
+ * await autoDetectProjectId('/path/to/project')
99
+ * // Output: "✅ Detected git repository: specweave"
100
+ * // Returns: "specweave"
101
+ *
102
+ * @example
103
+ * // No git, no sync, user prompted
104
+ * await autoDetectProjectId('/path/to/project')
105
+ * // Output: "📝 No git repository or sync configuration detected."
106
+ * // Prompts user for project ID
107
+ * // Returns: user input (e.g., "my-project")
108
+ */
109
+ export declare function autoDetectProjectId(projectRoot: string, options?: {
110
+ silent?: boolean;
111
+ promptIfNotDetected?: boolean;
112
+ }): Promise<string>;
113
+ /**
114
+ * Format project ID to display name
115
+ *
116
+ * Converts kebab-case/snake_case to Title Case
117
+ *
118
+ * @param projectId - Project ID (e.g., "web-app", "mobile_app")
119
+ * @returns Formatted name (e.g., "Web App", "Mobile App")
120
+ *
121
+ * @example
122
+ * formatProjectName('web-app')
123
+ * // Returns: "Web App"
124
+ *
125
+ * @example
126
+ * formatProjectName('mobile_app')
127
+ * // Returns: "Mobile App"
128
+ *
129
+ * @example
130
+ * formatProjectName('specweave')
131
+ * // Returns: "SpecWeave"
132
+ */
133
+ export declare function formatProjectName(projectId: string): string;
134
+ /**
135
+ * Validate project ID format
136
+ *
137
+ * @param projectId - Project ID to validate
138
+ * @returns True if valid, error message if invalid
139
+ */
140
+ export declare function validateProjectId(projectId: string): true | string;
141
+ //# sourceMappingURL=project-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detection.d.ts","sourceRoot":"","sources":["../../../src/utils/project-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsD1E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B9E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,MAAM,CAuBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC1B,GACL,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkB3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAkBlE"}
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Project ID Auto-Detection Utilities
3
+ *
4
+ * Detects project ID from:
5
+ * 1. Git remote (GitHub repo name)
6
+ * 2. Sync configuration (JIRA project key, ADO project name)
7
+ * 3. User prompt (fallback)
8
+ */
9
+ import fs from 'fs-extra';
10
+ import path from 'path';
11
+ import inquirer from 'inquirer';
12
+ import { ConfigManager } from '../core/config-manager';
13
+ /**
14
+ * Auto-detect project ID from git remote URL
15
+ *
16
+ * Extracts repository name from git remote URL
17
+ *
18
+ * @param projectRoot - Project root directory
19
+ * @returns Project ID (repo name) or null if not detected
20
+ *
21
+ * @example
22
+ * // Git remote: https://github.com/anton-abyzov/specweave.git
23
+ * detectProjectIdFromGit('/path/to/project')
24
+ * // Returns: "specweave"
25
+ *
26
+ * @example
27
+ * // Git remote: git@github.com:my-org/web-app.git
28
+ * detectProjectIdFromGit('/path/to/project')
29
+ * // Returns: "web-app"
30
+ */
31
+ export function detectProjectIdFromGit(projectRoot) {
32
+ try {
33
+ const gitConfigPath = path.join(projectRoot, '.git', 'config');
34
+ // Check if .git/config exists
35
+ if (!fs.existsSync(gitConfigPath)) {
36
+ return null;
37
+ }
38
+ // Read git config
39
+ const gitConfig = fs.readFileSync(gitConfigPath, 'utf8');
40
+ // Extract remote URL (match both HTTPS and SSH formats)
41
+ // HTTPS: https://github.com/owner/repo.git
42
+ // SSH: git@github.com:owner/repo.git
43
+ const httpsMatch = gitConfig.match(/url = https?:\/\/[^\/]+\/[^\/]+\/([^\/\s]+?)(?:\.git)?$/m);
44
+ const sshMatch = gitConfig.match(/url = git@[^:]+:[^\/]+\/([^\/\s]+?)(?:\.git)?$/m);
45
+ const match = httpsMatch || sshMatch;
46
+ if (match && match[1]) {
47
+ const repoName = match[1].trim();
48
+ // Validate repo name (lowercase, alphanumeric, hyphens, underscores)
49
+ if (/^[a-z0-9_-]+$/i.test(repoName)) {
50
+ return repoName.toLowerCase();
51
+ }
52
+ }
53
+ return null;
54
+ }
55
+ catch (error) {
56
+ // Silently fail (not in git repo or permission error)
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Auto-detect project ID from sync configuration
62
+ *
63
+ * Checks existing sync profiles for JIRA project key or ADO project name
64
+ *
65
+ * @param projectRoot - Project root directory
66
+ * @returns Project ID from sync config or null if not detected
67
+ *
68
+ * @example
69
+ * // Config has JIRA: { projectKey: "WEBAPP" }
70
+ * detectProjectIdFromSync('/path/to/project')
71
+ * // Returns: "webapp"
72
+ */
73
+ export function detectProjectIdFromSync(projectRoot) {
74
+ try {
75
+ const configManager = new ConfigManager(projectRoot);
76
+ const config = configManager.load();
77
+ // Check sync profiles for project identifiers
78
+ if (config.sync?.profiles) {
79
+ const profiles = Object.values(config.sync.profiles);
80
+ for (const profile of profiles) {
81
+ // GitHub profile (extract repo name)
82
+ if (profile.provider === 'github') {
83
+ const githubConfig = profile.config;
84
+ if (githubConfig?.repo) {
85
+ return githubConfig.repo.toLowerCase();
86
+ }
87
+ }
88
+ // JIRA profile (use project key)
89
+ if (profile.provider === 'jira') {
90
+ const jiraConfig = profile.config;
91
+ if (jiraConfig?.projectKey) {
92
+ return jiraConfig.projectKey.toLowerCase();
93
+ }
94
+ }
95
+ // Azure DevOps profile (use project name)
96
+ if (profile.provider === 'ado') {
97
+ const adoConfig = profile.config;
98
+ if (adoConfig?.project) {
99
+ return adoConfig.project.toLowerCase().replace(/\s+/g, '-');
100
+ }
101
+ }
102
+ }
103
+ }
104
+ // Legacy: Check old sync config format (pre-profiles)
105
+ if (config.sync?.jira?.projectKey) {
106
+ return config.sync.jira.projectKey.toLowerCase();
107
+ }
108
+ if (config.sync?.ado?.project) {
109
+ return config.sync.ado.project.toLowerCase().replace(/\s+/g, '-');
110
+ }
111
+ if (config.sync?.github?.repo) {
112
+ return config.sync.github.repo.toLowerCase();
113
+ }
114
+ return null;
115
+ }
116
+ catch (error) {
117
+ // Config doesn't exist or is invalid
118
+ return null;
119
+ }
120
+ }
121
+ /**
122
+ * Prompt user for project ID
123
+ *
124
+ * Interactive prompt with validation and helpful examples
125
+ *
126
+ * @param suggestedId - Optional suggested project ID (from detection)
127
+ * @returns Project ID entered by user
128
+ *
129
+ * @example
130
+ * await promptForProjectId()
131
+ * // User sees:
132
+ * // Project ID (matches GitHub repo, JIRA project, or ADO project): █
133
+ * // User enters: "web-app"
134
+ * // Returns: "web-app"
135
+ */
136
+ export async function promptForProjectId(suggestedId) {
137
+ const { projectId } = await inquirer.prompt([{
138
+ type: 'input',
139
+ name: 'projectId',
140
+ message: 'Project ID (matches GitHub repo, JIRA project, or ADO project):',
141
+ default: suggestedId || 'default',
142
+ validate: (input) => {
143
+ if (!input) {
144
+ return 'Project ID is required';
145
+ }
146
+ if (!/^[a-z0-9_-]+$/.test(input)) {
147
+ return 'Project ID must be lowercase, alphanumeric, with hyphens or underscores';
148
+ }
149
+ if (input.length < 2) {
150
+ return 'Project ID must be at least 2 characters';
151
+ }
152
+ if (input.length > 64) {
153
+ return 'Project ID must be at most 64 characters';
154
+ }
155
+ return true;
156
+ }
157
+ }]);
158
+ return projectId;
159
+ }
160
+ /**
161
+ * Auto-detect project ID synchronously (no prompts)
162
+ *
163
+ * Priority:
164
+ * 1. Git remote (GitHub repo name)
165
+ * 2. Sync configuration (JIRA/ADO project)
166
+ * 3. "default" (fallback)
167
+ *
168
+ * @param projectRoot - Project root directory
169
+ * @param options - Detection options
170
+ * @returns Detected project ID or "default"
171
+ *
172
+ * @example
173
+ * // In git repo: https://github.com/anton-abyzov/specweave.git
174
+ * autoDetectProjectIdSync('/path/to/project')
175
+ * // Returns: "specweave"
176
+ *
177
+ * @example
178
+ * // No git, no sync
179
+ * autoDetectProjectIdSync('/path/to/project')
180
+ * // Returns: "default"
181
+ */
182
+ export function autoDetectProjectIdSync(projectRoot, options = {}) {
183
+ const { silent = false } = options;
184
+ // 1. Try git remote
185
+ const gitProjectId = detectProjectIdFromGit(projectRoot);
186
+ if (gitProjectId) {
187
+ if (!silent) {
188
+ console.log(`✅ Detected git repository: ${gitProjectId}`);
189
+ }
190
+ return gitProjectId;
191
+ }
192
+ // 2. Try sync config
193
+ const syncProjectId = detectProjectIdFromSync(projectRoot);
194
+ if (syncProjectId) {
195
+ if (!silent) {
196
+ console.log(`✅ Detected sync configuration: ${syncProjectId}`);
197
+ }
198
+ return syncProjectId;
199
+ }
200
+ // 3. Fallback to "default"
201
+ return 'default';
202
+ }
203
+ /**
204
+ * Auto-detect project ID with fallback chain (async version with prompts)
205
+ *
206
+ * Priority:
207
+ * 1. Git remote (GitHub repo name)
208
+ * 2. Sync configuration (JIRA/ADO project)
209
+ * 3. User prompt (with detected suggestion)
210
+ * 4. "default" (if user accepts default in prompt)
211
+ *
212
+ * @param projectRoot - Project root directory
213
+ * @param options - Detection options
214
+ * @returns Detected or prompted project ID
215
+ *
216
+ * @example
217
+ * // In git repo: https://github.com/anton-abyzov/specweave.git
218
+ * await autoDetectProjectId('/path/to/project')
219
+ * // Output: "✅ Detected git repository: specweave"
220
+ * // Returns: "specweave"
221
+ *
222
+ * @example
223
+ * // No git, no sync, user prompted
224
+ * await autoDetectProjectId('/path/to/project')
225
+ * // Output: "📝 No git repository or sync configuration detected."
226
+ * // Prompts user for project ID
227
+ * // Returns: user input (e.g., "my-project")
228
+ */
229
+ export async function autoDetectProjectId(projectRoot, options = {}) {
230
+ const { silent = false, promptIfNotDetected = true } = options;
231
+ // 1. Try git remote
232
+ const gitProjectId = detectProjectIdFromGit(projectRoot);
233
+ if (gitProjectId) {
234
+ if (!silent) {
235
+ console.log(`✅ Detected git repository: ${gitProjectId}`);
236
+ }
237
+ return gitProjectId;
238
+ }
239
+ // 2. Try sync config
240
+ const syncProjectId = detectProjectIdFromSync(projectRoot);
241
+ if (syncProjectId) {
242
+ if (!silent) {
243
+ console.log(`✅ Detected sync configuration: ${syncProjectId}`);
244
+ }
245
+ return syncProjectId;
246
+ }
247
+ // 3. Prompt user (if enabled)
248
+ if (promptIfNotDetected) {
249
+ if (!silent) {
250
+ console.log('\n📝 No git repository or sync configuration detected.');
251
+ console.log(' Please enter your project identifier.\n');
252
+ console.log(' Examples:');
253
+ console.log(' • GitHub repo "web-app" → enter: web-app');
254
+ console.log(' • JIRA project "WEBAPP" → enter: webapp');
255
+ console.log(' • ADO project "Platform" → enter: platform');
256
+ console.log(' • Generic project → enter: default\n');
257
+ }
258
+ return await promptForProjectId();
259
+ }
260
+ // 4. Fallback to "default" (no prompt)
261
+ return 'default';
262
+ }
263
+ /**
264
+ * Format project ID to display name
265
+ *
266
+ * Converts kebab-case/snake_case to Title Case
267
+ *
268
+ * @param projectId - Project ID (e.g., "web-app", "mobile_app")
269
+ * @returns Formatted name (e.g., "Web App", "Mobile App")
270
+ *
271
+ * @example
272
+ * formatProjectName('web-app')
273
+ * // Returns: "Web App"
274
+ *
275
+ * @example
276
+ * formatProjectName('mobile_app')
277
+ * // Returns: "Mobile App"
278
+ *
279
+ * @example
280
+ * formatProjectName('specweave')
281
+ * // Returns: "SpecWeave"
282
+ */
283
+ export function formatProjectName(projectId) {
284
+ // Special cases (known project names)
285
+ const specialCases = {
286
+ 'specweave': 'SpecWeave',
287
+ 'webapp': 'WebApp',
288
+ 'default': 'Default Project'
289
+ };
290
+ if (specialCases[projectId.toLowerCase()]) {
291
+ return specialCases[projectId.toLowerCase()];
292
+ }
293
+ // Convert kebab-case or snake_case to Title Case
294
+ return projectId
295
+ .replace(/[-_]/g, ' ')
296
+ .split(' ')
297
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
298
+ .join(' ');
299
+ }
300
+ /**
301
+ * Validate project ID format
302
+ *
303
+ * @param projectId - Project ID to validate
304
+ * @returns True if valid, error message if invalid
305
+ */
306
+ export function validateProjectId(projectId) {
307
+ if (!projectId) {
308
+ return 'Project ID is required';
309
+ }
310
+ if (!/^[a-z0-9_-]+$/.test(projectId)) {
311
+ return 'Project ID must be lowercase, alphanumeric, with hyphens or underscores';
312
+ }
313
+ if (projectId.length < 2) {
314
+ return 'Project ID must be at least 2 characters';
315
+ }
316
+ if (projectId.length > 64) {
317
+ return 'Project ID must be at most 64 characters';
318
+ }
319
+ return true;
320
+ }
321
+ //# sourceMappingURL=project-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detection.js","sourceRoot":"","sources":["../../../src/utils/project-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * String Utilities
3
+ *
4
+ * Utilities for string manipulation and formatting
5
+ */
6
+ /**
7
+ * Convert a string to kebab-case (lowercase with hyphens)
8
+ *
9
+ * Examples:
10
+ * - "Platform Engineering Team" → "platform-engineering-team"
11
+ * - "FRONTEND" → "frontend"
12
+ * - "League Scheduler Team" → "league-scheduler-team"
13
+ *
14
+ * @param str - Input string to slugify
15
+ * @returns Kebab-case string suitable for folder names
16
+ */
17
+ export declare function slugify(str: string): string;
18
+ /**
19
+ * Parse comma-separated values and trim whitespace
20
+ *
21
+ * Examples:
22
+ * - "Team A, Team B, Team C" → ["Team A", "Team B", "Team C"]
23
+ * - "FRONTEND,BACKEND,QA" → ["FRONTEND", "BACKEND", "QA"]
24
+ *
25
+ * @param input - Comma-separated string
26
+ * @returns Array of trimmed strings (empty strings removed)
27
+ */
28
+ export declare function parseCommaSeparated(input: string): string[];
29
+ /**
30
+ * Convert kebab-case to Title Case
31
+ *
32
+ * Examples:
33
+ * - "platform-engineering-team" → "Platform Engineering Team"
34
+ * - "frontend" → "Frontend"
35
+ *
36
+ * @param str - Kebab-case string
37
+ * @returns Title Case string
38
+ */
39
+ export declare function unslugify(str: string): string;
40
+ //# sourceMappingURL=string-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAK3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * String Utilities
3
+ *
4
+ * Utilities for string manipulation and formatting
5
+ */
6
+ /**
7
+ * Convert a string to kebab-case (lowercase with hyphens)
8
+ *
9
+ * Examples:
10
+ * - "Platform Engineering Team" → "platform-engineering-team"
11
+ * - "FRONTEND" → "frontend"
12
+ * - "League Scheduler Team" → "league-scheduler-team"
13
+ *
14
+ * @param str - Input string to slugify
15
+ * @returns Kebab-case string suitable for folder names
16
+ */
17
+ export function slugify(str) {
18
+ return str
19
+ .toLowerCase()
20
+ .trim()
21
+ .replace(/[^\w\s-]/g, '') // Remove non-word chars except spaces and hyphens
22
+ .replace(/[\s_]+/g, '-') // Replace spaces and underscores with hyphens
23
+ .replace(/-+/g, '-') // Replace multiple hyphens with single hyphen
24
+ .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens
25
+ }
26
+ /**
27
+ * Parse comma-separated values and trim whitespace
28
+ *
29
+ * Examples:
30
+ * - "Team A, Team B, Team C" → ["Team A", "Team B", "Team C"]
31
+ * - "FRONTEND,BACKEND,QA" → ["FRONTEND", "BACKEND", "QA"]
32
+ *
33
+ * @param input - Comma-separated string
34
+ * @returns Array of trimmed strings (empty strings removed)
35
+ */
36
+ export function parseCommaSeparated(input) {
37
+ return input
38
+ .split(',')
39
+ .map((s) => s.trim())
40
+ .filter((s) => s.length > 0);
41
+ }
42
+ /**
43
+ * Convert kebab-case to Title Case
44
+ *
45
+ * Examples:
46
+ * - "platform-engineering-team" → "Platform Engineering Team"
47
+ * - "frontend" → "Frontend"
48
+ *
49
+ * @param str - Kebab-case string
50
+ * @returns Title Case string
51
+ */
52
+ export function unslugify(str) {
53
+ return str
54
+ .split('-')
55
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
56
+ .join(' ');
57
+ }
58
+ //# sourceMappingURL=string-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../../src/utils/string-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAG;SACP,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAE,kDAAkD;SAC5E,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAG,8CAA8C;SACxE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAO,8CAA8C;SACxE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAE,kCAAkC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACzE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}