specweave 0.1.9 → 0.3.1

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 (293) hide show
  1. package/CLAUDE.md +600 -0
  2. package/README.md +263 -81
  3. package/bin/install-all.sh +1 -1
  4. package/bin/install-commands.sh +3 -3
  5. package/bin/specweave.js +39 -9
  6. package/dist/adapters/adapter-base.d.ts +1 -1
  7. package/dist/adapters/adapter-base.d.ts.map +1 -1
  8. package/dist/adapters/adapter-base.js +6 -41
  9. package/dist/adapters/adapter-base.js.map +1 -1
  10. package/dist/adapters/adapter-interface.js +1 -2
  11. package/dist/adapters/adapter-interface.js.map +1 -1
  12. package/dist/adapters/adapter-loader.d.ts +86 -0
  13. package/dist/adapters/adapter-loader.d.ts.map +1 -0
  14. package/dist/adapters/adapter-loader.js +216 -0
  15. package/dist/adapters/adapter-loader.js.map +1 -0
  16. package/dist/adapters/agents-md-generator.d.ts +48 -0
  17. package/dist/adapters/agents-md-generator.d.ts.map +1 -0
  18. package/dist/adapters/agents-md-generator.js +132 -0
  19. package/dist/adapters/agents-md-generator.js.map +1 -0
  20. package/dist/adapters/claude/adapter.d.ts +2 -2
  21. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  22. package/dist/adapters/claude/adapter.js +5 -42
  23. package/dist/adapters/claude/adapter.js.map +1 -1
  24. package/dist/adapters/claude-md-generator.d.ts +78 -0
  25. package/dist/adapters/claude-md-generator.d.ts.map +1 -0
  26. package/dist/adapters/claude-md-generator.js +246 -0
  27. package/dist/adapters/claude-md-generator.js.map +1 -0
  28. package/dist/adapters/codex/adapter.d.ts +50 -0
  29. package/dist/adapters/codex/adapter.d.ts.map +1 -0
  30. package/dist/adapters/codex/adapter.js +316 -0
  31. package/dist/adapters/codex/adapter.js.map +1 -0
  32. package/dist/adapters/copilot/adapter.d.ts +10 -9
  33. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  34. package/dist/adapters/copilot/adapter.js +35 -100
  35. package/dist/adapters/copilot/adapter.js.map +1 -1
  36. package/dist/adapters/cursor/adapter.d.ts +8 -6
  37. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  38. package/dist/adapters/cursor/adapter.js +47 -130
  39. package/dist/adapters/cursor/adapter.js.map +1 -1
  40. package/dist/adapters/doc-generator.d.ts +69 -0
  41. package/dist/adapters/doc-generator.d.ts.map +1 -0
  42. package/dist/adapters/doc-generator.js +247 -0
  43. package/dist/adapters/doc-generator.js.map +1 -0
  44. package/dist/adapters/gemini/adapter.d.ts +50 -0
  45. package/dist/adapters/gemini/adapter.d.ts.map +1 -0
  46. package/dist/adapters/gemini/adapter.js +281 -0
  47. package/dist/adapters/gemini/adapter.js.map +1 -0
  48. package/dist/adapters/generic/adapter.d.ts +7 -4
  49. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  50. package/dist/adapters/generic/adapter.js +60 -59
  51. package/dist/adapters/generic/adapter.js.map +1 -1
  52. package/dist/cli/commands/init.d.ts +3 -1
  53. package/dist/cli/commands/init.d.ts.map +1 -1
  54. package/dist/cli/commands/init.js +327 -177
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/install.d.ts.map +1 -1
  57. package/dist/cli/commands/install.js +22 -58
  58. package/dist/cli/commands/install.js.map +1 -1
  59. package/dist/cli/commands/list.d.ts.map +1 -1
  60. package/dist/cli/commands/list.js +27 -64
  61. package/dist/cli/commands/list.js.map +1 -1
  62. package/dist/core/credentials-manager.d.ts +90 -0
  63. package/dist/core/credentials-manager.d.ts.map +1 -0
  64. package/dist/core/credentials-manager.js +271 -0
  65. package/dist/core/credentials-manager.js.map +1 -0
  66. package/dist/core/project-structure-detector.d.ts +92 -0
  67. package/dist/core/project-structure-detector.d.ts.map +1 -0
  68. package/dist/core/project-structure-detector.js +289 -0
  69. package/dist/core/project-structure-detector.js.map +1 -0
  70. package/dist/core/rfc-generator-v2.d.ts +149 -0
  71. package/dist/core/rfc-generator-v2.d.ts.map +1 -0
  72. package/dist/core/rfc-generator-v2.js +399 -0
  73. package/dist/core/rfc-generator-v2.js.map +1 -0
  74. package/dist/core/rfc-generator.d.ts +147 -0
  75. package/dist/core/rfc-generator.d.ts.map +1 -0
  76. package/dist/core/rfc-generator.js +434 -0
  77. package/dist/core/rfc-generator.js.map +1 -0
  78. package/dist/integrations/ado/ado-client.d.ts +123 -0
  79. package/dist/integrations/ado/ado-client.d.ts.map +1 -0
  80. package/dist/integrations/ado/ado-client.js +398 -0
  81. package/dist/integrations/ado/ado-client.js.map +1 -0
  82. package/dist/integrations/jira/jira-client.d.ts +139 -0
  83. package/dist/integrations/jira/jira-client.d.ts.map +1 -0
  84. package/dist/integrations/jira/jira-client.js +386 -0
  85. package/dist/integrations/jira/jira-client.js.map +1 -0
  86. package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
  87. package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
  88. package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
  89. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
  90. package/dist/integrations/jira/jira-mapper.d.ts +105 -0
  91. package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
  92. package/dist/integrations/jira/jira-mapper.js +494 -0
  93. package/dist/integrations/jira/jira-mapper.js.map +1 -0
  94. package/dist/testing/test-generator.d.ts +117 -0
  95. package/dist/testing/test-generator.d.ts.map +1 -0
  96. package/dist/testing/test-generator.js +370 -0
  97. package/dist/testing/test-generator.js.map +1 -0
  98. package/dist/utils/auto-install.d.ts +3 -0
  99. package/dist/utils/auto-install.d.ts.map +1 -1
  100. package/dist/utils/auto-install.js +16 -82
  101. package/dist/utils/auto-install.js.map +1 -1
  102. package/dist/utils/esm-helpers.d.ts +50 -0
  103. package/dist/utils/esm-helpers.d.ts.map +1 -0
  104. package/dist/utils/esm-helpers.js +57 -0
  105. package/dist/utils/esm-helpers.js.map +1 -0
  106. package/package.json +16 -7
  107. package/src/adapters/README.md +1 -2
  108. package/src/adapters/adapter-base.ts +6 -3
  109. package/src/adapters/adapter-loader.ts +261 -0
  110. package/src/adapters/agents-md-generator.ts +162 -0
  111. package/src/adapters/claude/README.md +6 -14
  112. package/src/adapters/claude/adapter.ts +4 -4
  113. package/src/adapters/claude-md-generator.ts +311 -0
  114. package/src/adapters/codex/README.md +105 -0
  115. package/src/adapters/codex/adapter.ts +333 -0
  116. package/src/adapters/copilot/adapter.ts +36 -65
  117. package/src/adapters/cursor/README.md +0 -2
  118. package/src/adapters/cursor/adapter.ts +46 -92
  119. package/src/adapters/doc-generator.ts +331 -0
  120. package/src/adapters/gemini/README.md +97 -0
  121. package/src/adapters/gemini/adapter.ts +298 -0
  122. package/src/adapters/generic/adapter.ts +61 -57
  123. package/src/adapters/registry.yaml +86 -25
  124. package/src/agents/devops/AGENT.md +16 -18
  125. package/src/agents/docs-writer/AGENT.md +2 -2
  126. package/src/agents/pm/AGENT.md +1 -50
  127. package/src/commands/README.md +134 -111
  128. package/src/commands/{build.md → specweave.do.md} +141 -69
  129. package/src/commands/{done.md → specweave.done.md} +3 -3
  130. package/src/commands/{inc.md → specweave.inc.md} +4 -4
  131. package/src/commands/{increment.md → specweave.increment.md} +143 -76
  132. package/src/commands/specweave.md +430 -0
  133. package/src/commands/specweave.next.md +495 -0
  134. package/src/commands/{progress.md → specweave.progress.md} +12 -12
  135. package/src/commands/specweave.sync-docs.md +665 -0
  136. package/src/commands/specweave.sync-github.md +269 -0
  137. package/src/commands/specweave.sync-jira.md +197 -0
  138. package/src/commands/{validate.md → specweave.validate.md} +4 -4
  139. package/src/hooks/README.md +19 -29
  140. package/src/hooks/post-task-completion.sh +25 -30
  141. package/src/skills/ado-sync/README.md +1 -36
  142. package/src/skills/bmad-method-expert/SKILL.md +1 -3
  143. package/src/skills/brownfield-analyzer/SKILL.md +429 -23
  144. package/src/skills/brownfield-onboarder/SKILL.md +221 -8
  145. package/src/skills/context-loader/SKILL.md +239 -617
  146. package/src/skills/context-optimizer/SKILL.md +0 -30
  147. package/src/skills/github-sync/SKILL.md +1 -19
  148. package/src/skills/increment-planner/SKILL.md +64 -18
  149. package/src/skills/increment-quality-judge/SKILL.md +1 -36
  150. package/src/skills/jira-sync/README.md +1 -38
  151. package/src/skills/role-orchestrator/README.md +1 -22
  152. package/src/skills/role-orchestrator/SKILL.md +1 -59
  153. package/src/skills/skill-router/SKILL.md +0 -18
  154. package/src/skills/spec-kit-expert/SKILL.md +1 -3
  155. package/src/skills/specweave-detector/SKILL.md +225 -275
  156. package/src/skills/task-builder/README.md +1 -7
  157. package/src/templates/AGENTS.md.template +334 -0
  158. package/src/templates/CLAUDE.md.template +131 -298
  159. package/src/templates/README.md.template +115 -23
  160. package/src/templates/environments/minimal/README.md +0 -1
  161. package/INSTALL.md +0 -848
  162. package/SPECWEAVE.md +0 -743
  163. package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
  164. package/src/adapters/cursor/.cursorrules +0 -325
  165. package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
  166. package/src/commands/create-project.md +0 -528
  167. package/src/commands/generate-docs.md +0 -623
  168. package/src/commands/review-docs.md +0 -331
  169. package/src/commands/sync-github.md +0 -115
  170. package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
  171. package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
  172. package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
  173. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
  174. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
  175. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
  176. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
  177. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
  178. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
  179. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
  180. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
  181. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
  182. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
  183. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
  184. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
  185. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
  186. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
  187. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
  188. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
  189. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
  190. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
  191. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
  192. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
  193. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
  194. package/src/skills/cost-optimizer/test-results/README.md +0 -46
  195. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
  196. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
  197. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
  198. package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
  199. package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
  200. package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
  201. package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
  202. package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
  203. package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
  204. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
  205. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
  206. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
  207. package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
  208. package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
  209. package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
  210. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
  211. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
  212. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
  213. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
  214. package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
  215. package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
  216. package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
  217. package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
  218. package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
  219. package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
  220. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
  221. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
  222. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
  223. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
  224. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
  225. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
  226. package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
  227. package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
  228. package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
  229. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
  230. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
  231. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
  232. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
  233. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
  234. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
  235. package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
  236. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
  237. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
  238. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
  239. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
  240. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
  241. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
  242. package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
  243. package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
  244. package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
  245. package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
  246. package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
  247. package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
  248. package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
  249. package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
  250. package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
  251. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
  252. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
  253. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
  254. package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
  255. package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
  256. package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
  257. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
  258. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
  259. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
  260. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
  261. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
  262. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
  263. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
  264. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
  265. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
  266. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
  267. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
  268. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
  269. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
  270. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
  271. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
  272. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
  273. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
  274. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
  275. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
  276. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
  277. package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
  278. package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
  279. package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
  280. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
  281. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
  282. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
  283. package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
  284. package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
  285. package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
  286. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
  287. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
  288. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
  289. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
  290. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
  291. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
  292. package/src/templates/config.yaml +0 -351
  293. /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-client.d.ts","sourceRoot":"","sources":["../../../src/integrations/jira/jira-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,386 @@
1
+ /**
2
+ * Jira API Client
3
+ *
4
+ * Supports:
5
+ * 1. MCP Server (Atlassian Remote MCP) - Primary
6
+ * 2. REST API v3 - Fallback
7
+ *
8
+ * Features:
9
+ * - List issues with JQL filtering (by sprint, status, etc.)
10
+ * - Create issues (Epic, Story, Subtask, Bug, Task)
11
+ * - Update issues
12
+ * - Get sprint information
13
+ */
14
+ import { credentialsManager } from '../../core/credentials-manager.js';
15
+ export class JiraClient {
16
+ constructor() {
17
+ this.apiVersion = '3';
18
+ this.useMcp = false;
19
+ this.credentials = credentialsManager.getJiraCredentials();
20
+ // Normalize domain URL
21
+ const domain = this.credentials.domain;
22
+ if (domain.startsWith('http')) {
23
+ this.baseUrl = domain;
24
+ }
25
+ else {
26
+ this.baseUrl = `https://${domain}`;
27
+ }
28
+ }
29
+ /**
30
+ * Get authorization header for REST API
31
+ */
32
+ getAuthHeader() {
33
+ const auth = Buffer.from(`${this.credentials.email}:${this.credentials.apiToken}`).toString('base64');
34
+ return `Basic ${auth}`;
35
+ }
36
+ /**
37
+ * Search issues using JQL
38
+ */
39
+ async searchIssues(filter = {}) {
40
+ const jql = filter.jql || this.buildJqlQuery(filter);
41
+ console.log('🔍 Querying Jira with JQL:', jql);
42
+ // Use the new /search/jql endpoint as per Jira Cloud API v3
43
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/search/jql`;
44
+ const maxResults = filter.maxResults || 50;
45
+ const response = await fetch(url, {
46
+ method: 'POST',
47
+ headers: {
48
+ 'Authorization': this.getAuthHeader(),
49
+ 'Content-Type': 'application/json'
50
+ },
51
+ body: JSON.stringify({
52
+ jql,
53
+ maxResults,
54
+ fields: ['*all']
55
+ })
56
+ });
57
+ if (!response.ok) {
58
+ const error = await response.text();
59
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
60
+ }
61
+ const data = await response.json();
62
+ console.log(`✅ Retrieved ${data.issues.length} issues from Jira`);
63
+ return data.issues || [];
64
+ }
65
+ /**
66
+ * Build JQL query from filter
67
+ */
68
+ buildJqlQuery(filter) {
69
+ const conditions = [];
70
+ if (filter.project) {
71
+ conditions.push(`project = "${filter.project}"`);
72
+ }
73
+ if (filter.issueType && filter.issueType.length > 0) {
74
+ const types = filter.issueType.map(t => `"${t}"`).join(', ');
75
+ conditions.push(`issuetype IN (${types})`);
76
+ }
77
+ if (filter.status && filter.status.length > 0) {
78
+ const statuses = filter.status.map(s => `"${s}"`).join(', ');
79
+ conditions.push(`status IN (${statuses})`);
80
+ }
81
+ if (filter.sprint) {
82
+ if (typeof filter.sprint === 'number') {
83
+ conditions.push(`sprint = ${filter.sprint}`);
84
+ }
85
+ else if (filter.sprint === 'current') {
86
+ conditions.push(`sprint in openSprints()`);
87
+ }
88
+ else {
89
+ conditions.push(`sprint = "${filter.sprint}"`);
90
+ }
91
+ }
92
+ if (filter.assignee) {
93
+ conditions.push(`assignee = "${filter.assignee}"`);
94
+ }
95
+ if (filter.labels && filter.labels.length > 0) {
96
+ filter.labels.forEach(label => {
97
+ conditions.push(`labels = "${label}"`);
98
+ });
99
+ }
100
+ if (conditions.length === 0) {
101
+ // Default: return recent issues
102
+ return 'ORDER BY updated DESC';
103
+ }
104
+ const whereClause = conditions.join(' AND ');
105
+ return `${whereClause} ORDER BY updated DESC`;
106
+ }
107
+ /**
108
+ * Create a new issue
109
+ */
110
+ async createIssue(issue, projectKey) {
111
+ console.log(`🔨 Creating ${issue.issueType}: ${issue.summary}`);
112
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/issue`;
113
+ // Build issue payload
114
+ const payload = {
115
+ fields: {
116
+ project: {
117
+ key: projectKey
118
+ },
119
+ summary: issue.summary,
120
+ issuetype: {
121
+ name: issue.issueType
122
+ }
123
+ }
124
+ };
125
+ // Add description (Jira uses Atlassian Document Format - ADF)
126
+ if (issue.description) {
127
+ payload.fields.description = {
128
+ type: 'doc',
129
+ version: 1,
130
+ content: [
131
+ {
132
+ type: 'paragraph',
133
+ content: [
134
+ {
135
+ type: 'text',
136
+ text: issue.description
137
+ }
138
+ ]
139
+ }
140
+ ]
141
+ };
142
+ }
143
+ // Add priority (skip if not available in project)
144
+ if (issue.priority) {
145
+ try {
146
+ payload.fields.priority = {
147
+ name: issue.priority
148
+ };
149
+ }
150
+ catch (error) {
151
+ // Priority field might not be available in this project
152
+ console.warn('⚠️ Priority field not available, skipping');
153
+ }
154
+ }
155
+ // Add labels
156
+ if (issue.labels && issue.labels.length > 0) {
157
+ payload.fields.labels = issue.labels;
158
+ }
159
+ // Link to parent (for Sub-tasks)
160
+ if (issue.parentKey) {
161
+ payload.fields.parent = {
162
+ key: issue.parentKey
163
+ };
164
+ }
165
+ // Link to Epic (for Stories)
166
+ // Note: Epic Link field varies by Jira instance, typically customfield_10014
167
+ if (issue.epicKey) {
168
+ payload.fields.customfield_10014 = issue.epicKey;
169
+ }
170
+ // Add custom fields
171
+ if (issue.customFields) {
172
+ Object.entries(issue.customFields).forEach(([key, value]) => {
173
+ payload.fields[key] = value;
174
+ });
175
+ }
176
+ const response = await fetch(url, {
177
+ method: 'POST',
178
+ headers: {
179
+ 'Authorization': this.getAuthHeader(),
180
+ 'Content-Type': 'application/json'
181
+ },
182
+ body: JSON.stringify(payload)
183
+ });
184
+ if (!response.ok) {
185
+ const error = await response.text();
186
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
187
+ }
188
+ const result = await response.json();
189
+ console.log(`✅ Created ${issue.issueType} ${result.key}: ${issue.summary}`);
190
+ // Fetch full issue details
191
+ return this.getIssue(result.key);
192
+ }
193
+ /**
194
+ * Update an existing issue
195
+ */
196
+ async updateIssue(update) {
197
+ console.log(`🔧 Updating issue ${update.key}`);
198
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/issue/${update.key}`;
199
+ // Build update payload
200
+ const payload = {
201
+ fields: {}
202
+ };
203
+ if (update.summary) {
204
+ payload.fields.summary = update.summary;
205
+ }
206
+ if (update.description !== undefined) {
207
+ payload.fields.description = {
208
+ type: 'doc',
209
+ version: 1,
210
+ content: [
211
+ {
212
+ type: 'paragraph',
213
+ content: [
214
+ {
215
+ type: 'text',
216
+ text: update.description
217
+ }
218
+ ]
219
+ }
220
+ ]
221
+ };
222
+ }
223
+ if (update.priority) {
224
+ payload.fields.priority = {
225
+ name: update.priority
226
+ };
227
+ }
228
+ if (update.labels) {
229
+ payload.fields.labels = update.labels;
230
+ }
231
+ // Add custom fields
232
+ if (update.customFields) {
233
+ Object.entries(update.customFields).forEach(([key, value]) => {
234
+ payload.fields[key] = value;
235
+ });
236
+ }
237
+ const response = await fetch(url, {
238
+ method: 'PUT',
239
+ headers: {
240
+ 'Authorization': this.getAuthHeader(),
241
+ 'Content-Type': 'application/json'
242
+ },
243
+ body: JSON.stringify(payload)
244
+ });
245
+ if (!response.ok) {
246
+ const error = await response.text();
247
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
248
+ }
249
+ console.log(`✅ Updated issue ${update.key}`);
250
+ // Transition status if specified
251
+ if (update.status) {
252
+ await this.transitionIssue(update.key, update.status);
253
+ }
254
+ // Fetch updated issue
255
+ return this.getIssue(update.key);
256
+ }
257
+ /**
258
+ * Transition issue to a new status
259
+ */
260
+ async transitionIssue(issueKey, targetStatus) {
261
+ console.log(`🔀 Transitioning ${issueKey} to ${targetStatus}`);
262
+ // Get available transitions
263
+ const transitionsUrl = `${this.baseUrl}/rest/api/${this.apiVersion}/issue/${issueKey}/transitions`;
264
+ const transitionsResponse = await fetch(transitionsUrl, {
265
+ headers: {
266
+ 'Authorization': this.getAuthHeader(),
267
+ 'Content-Type': 'application/json'
268
+ }
269
+ });
270
+ if (!transitionsResponse.ok) {
271
+ throw new Error(`Failed to get transitions for ${issueKey}`);
272
+ }
273
+ const transitionsData = await transitionsResponse.json();
274
+ const transition = transitionsData.transitions.find((t) => t.to.name.toLowerCase() === targetStatus.toLowerCase());
275
+ if (!transition) {
276
+ console.warn(`⚠️ No transition found to status "${targetStatus}" for ${issueKey}`);
277
+ return;
278
+ }
279
+ // Execute transition
280
+ const response = await fetch(transitionsUrl, {
281
+ method: 'POST',
282
+ headers: {
283
+ 'Authorization': this.getAuthHeader(),
284
+ 'Content-Type': 'application/json'
285
+ },
286
+ body: JSON.stringify({
287
+ transition: {
288
+ id: transition.id
289
+ }
290
+ })
291
+ });
292
+ if (!response.ok) {
293
+ const error = await response.text();
294
+ throw new Error(`Failed to transition ${issueKey}: ${error}`);
295
+ }
296
+ console.log(`✅ Transitioned ${issueKey} to ${targetStatus}`);
297
+ }
298
+ /**
299
+ * Get issue by key
300
+ */
301
+ async getIssue(issueKey) {
302
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/issue/${issueKey}`;
303
+ const response = await fetch(url, {
304
+ headers: {
305
+ 'Authorization': this.getAuthHeader(),
306
+ 'Content-Type': 'application/json'
307
+ }
308
+ });
309
+ if (!response.ok) {
310
+ const error = await response.text();
311
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
312
+ }
313
+ return response.json();
314
+ }
315
+ /**
316
+ * Get sprints for a board
317
+ */
318
+ async getSprints(boardId) {
319
+ const url = `${this.baseUrl}/rest/agile/1.0/board/${boardId}/sprint`;
320
+ const response = await fetch(url, {
321
+ headers: {
322
+ 'Authorization': this.getAuthHeader(),
323
+ 'Content-Type': 'application/json'
324
+ }
325
+ });
326
+ if (!response.ok) {
327
+ const error = await response.text();
328
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
329
+ }
330
+ const data = await response.json();
331
+ return data.values || [];
332
+ }
333
+ /**
334
+ * Get active sprints
335
+ */
336
+ async getActiveSprints(boardId) {
337
+ const sprints = await this.getSprints(boardId);
338
+ return sprints.filter(s => s.state === 'active');
339
+ }
340
+ /**
341
+ * Test connection to Jira
342
+ */
343
+ async testConnection() {
344
+ try {
345
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/myself`;
346
+ const response = await fetch(url, {
347
+ headers: {
348
+ 'Authorization': this.getAuthHeader(),
349
+ 'Content-Type': 'application/json'
350
+ }
351
+ });
352
+ if (response.ok) {
353
+ const user = await response.json();
354
+ console.log(`✅ Jira connection successful (${user.displayName})`);
355
+ return true;
356
+ }
357
+ else {
358
+ const error = await response.text();
359
+ console.error(`❌ Jira connection failed (${response.status}): ${error}`);
360
+ return false;
361
+ }
362
+ }
363
+ catch (error) {
364
+ console.error('❌ Jira connection failed:', error);
365
+ return false;
366
+ }
367
+ }
368
+ /**
369
+ * Get projects accessible to the user
370
+ */
371
+ async getProjects() {
372
+ const url = `${this.baseUrl}/rest/api/${this.apiVersion}/project`;
373
+ const response = await fetch(url, {
374
+ headers: {
375
+ 'Authorization': this.getAuthHeader(),
376
+ 'Content-Type': 'application/json'
377
+ }
378
+ });
379
+ if (!response.ok) {
380
+ const error = await response.text();
381
+ throw new Error(`Jira API Error (${response.status}): ${error}`);
382
+ }
383
+ return response.json();
384
+ }
385
+ }
386
+ //# sourceMappingURL=jira-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-client.js","sourceRoot":"","sources":["../../../src/integrations/jira/jira-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Jira Incremental Mapper - Granular Work Item Management
3
+ *
4
+ * Supports adding individual Jira items (Story, Bug, Task) to increments:
5
+ * - Add single story/bug/task to existing increment
6
+ * - Create increment from cherry-picked items across multiple Epics
7
+ * - Handle different work item types appropriately
8
+ * - Update RFC documentation when items are added
9
+ */
10
+ import { JiraClient } from './jira-client.js';
11
+ export interface WorkItem {
12
+ type: 'story' | 'bug' | 'task' | 'epic';
13
+ id: string;
14
+ jira_key: string;
15
+ jira_id: string;
16
+ title: string;
17
+ description: string;
18
+ status: 'planned' | 'in-progress' | 'completed';
19
+ priority: 'P1' | 'P2' | 'P3';
20
+ assignee?: string;
21
+ labels?: string[];
22
+ parent_epic?: {
23
+ key: string;
24
+ title: string;
25
+ };
26
+ }
27
+ export interface IncrementWorkItems {
28
+ stories: WorkItem[];
29
+ bugs: WorkItem[];
30
+ tasks: WorkItem[];
31
+ }
32
+ export declare class JiraIncrementalMapper {
33
+ private client;
34
+ private projectRoot;
35
+ private rfcGenerator;
36
+ constructor(client: JiraClient, projectRoot?: string);
37
+ /**
38
+ * Add a specific Jira item (Story, Bug, Task) to an existing increment
39
+ */
40
+ addItemToIncrement(incrementId: string, jiraKey: string): Promise<{
41
+ success: boolean;
42
+ message: string;
43
+ workItem?: WorkItem;
44
+ }>;
45
+ /**
46
+ * Create new increment from multiple Jira items (cherry-picked)
47
+ */
48
+ createIncrementFromItems(title: string, jiraKeys: string[]): Promise<{
49
+ success: boolean;
50
+ incrementId: string;
51
+ message: string;
52
+ }>;
53
+ /**
54
+ * List all work items in an increment grouped by type
55
+ */
56
+ getIncrementWorkItems(incrementId: string): IncrementWorkItems;
57
+ private mapJiraTypeToWorkItemType;
58
+ private createWorkItemFromIssue;
59
+ private addWorkItemToSpec;
60
+ private addWorkItemToTasks;
61
+ private updateRFCWithWorkItem;
62
+ private generateSpecFromWorkItems;
63
+ private generateTasksFromWorkItems;
64
+ private generateRFCFromWorkItems;
65
+ private getNextIncrementId;
66
+ private ensureDir;
67
+ private parseMarkdownWithFrontmatter;
68
+ private serializeMarkdownWithFrontmatter;
69
+ private extractTextFromJiraDescription;
70
+ private mapJiraStatusToSpecWeave;
71
+ private mapJiraPriorityToSpecWeave;
72
+ private slugify;
73
+ private generateContextManifest;
74
+ }
75
+ //# sourceMappingURL=jira-incremental-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-incremental-mapper.d.ts","sourceRoot":"","sources":["../../../src/integrations/jira/jira-incremental-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAMzD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuB;gBAE/B,MAAM,EAAE,UAAU,EAAE,WAAW,GAAE,MAAsB;IAMnE;;OAEG;IACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IA6DtE;;OAEG;IACU,wBAAwB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAwEtE;;OAEG;IACI,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,iBAAiB;YAyCX,kBAAkB;YAmBlB,qBAAqB;YAoBrB,yBAAyB;YA4DzB,0BAA0B;YAkB1B,wBAAwB;IA6EtC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,OAAO;YAID,uBAAuB;CAetC"}