specforge-mcp 0.12.0 → 0.13.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 (258) hide show
  1. package/dist/index.js +0 -0
  2. package/package.json +1 -1
  3. package/dist/engine/agent-generator.test.d.ts +0 -2
  4. package/dist/engine/agent-generator.test.d.ts.map +0 -1
  5. package/dist/engine/agent-generator.test.js +0 -556
  6. package/dist/engine/agent-generator.test.js.map +0 -1
  7. package/dist/engine/analyzer.test.d.ts +0 -2
  8. package/dist/engine/analyzer.test.d.ts.map +0 -1
  9. package/dist/engine/analyzer.test.js +0 -1461
  10. package/dist/engine/analyzer.test.js.map +0 -1
  11. package/dist/engine/auditor.test.d.ts +0 -2
  12. package/dist/engine/auditor.test.d.ts.map +0 -1
  13. package/dist/engine/auditor.test.js +0 -2075
  14. package/dist/engine/auditor.test.js.map +0 -1
  15. package/dist/engine/doc-generator.test.d.ts +0 -2
  16. package/dist/engine/doc-generator.test.d.ts.map +0 -1
  17. package/dist/engine/doc-generator.test.js +0 -961
  18. package/dist/engine/doc-generator.test.js.map +0 -1
  19. package/dist/engine/estimator.test.d.ts +0 -2
  20. package/dist/engine/estimator.test.d.ts.map +0 -1
  21. package/dist/engine/estimator.test.js +0 -334
  22. package/dist/engine/estimator.test.js.map +0 -1
  23. package/dist/engine/skill-generator.test.d.ts +0 -2
  24. package/dist/engine/skill-generator.test.d.ts.map +0 -1
  25. package/dist/engine/skill-generator.test.js +0 -742
  26. package/dist/engine/skill-generator.test.js.map +0 -1
  27. package/dist/engine/validator.test.d.ts +0 -2
  28. package/dist/engine/validator.test.d.ts.map +0 -1
  29. package/dist/engine/validator.test.js +0 -2371
  30. package/dist/engine/validator.test.js.map +0 -1
  31. package/dist/engine/web-fetcher.test.d.ts +0 -2
  32. package/dist/engine/web-fetcher.test.d.ts.map +0 -1
  33. package/dist/engine/web-fetcher.test.js +0 -360
  34. package/dist/engine/web-fetcher.test.js.map +0 -1
  35. package/dist/i18n/index.test.d.ts +0 -2
  36. package/dist/i18n/index.test.d.ts.map +0 -1
  37. package/dist/i18n/index.test.js +0 -375
  38. package/dist/i18n/index.test.js.map +0 -1
  39. package/dist/index.test.d.ts +0 -2
  40. package/dist/index.test.d.ts.map +0 -1
  41. package/dist/index.test.js +0 -124
  42. package/dist/index.test.js.map +0 -1
  43. package/dist/resources/patterns.test.d.ts +0 -2
  44. package/dist/resources/patterns.test.d.ts.map +0 -1
  45. package/dist/resources/patterns.test.js +0 -142
  46. package/dist/resources/patterns.test.js.map +0 -1
  47. package/dist/resources/process.test.d.ts +0 -2
  48. package/dist/resources/process.test.d.ts.map +0 -1
  49. package/dist/resources/process.test.js +0 -48
  50. package/dist/resources/process.test.js.map +0 -1
  51. package/dist/resources/registry.test.d.ts +0 -2
  52. package/dist/resources/registry.test.d.ts.map +0 -1
  53. package/dist/resources/registry.test.js +0 -138
  54. package/dist/resources/registry.test.js.map +0 -1
  55. package/dist/resources/specs.test.d.ts +0 -2
  56. package/dist/resources/specs.test.d.ts.map +0 -1
  57. package/dist/resources/specs.test.js +0 -130
  58. package/dist/resources/specs.test.js.map +0 -1
  59. package/dist/resources/templates.test.d.ts +0 -2
  60. package/dist/resources/templates.test.d.ts.map +0 -1
  61. package/dist/resources/templates.test.js +0 -119
  62. package/dist/resources/templates.test.js.map +0 -1
  63. package/dist/smoke.test.d.ts +0 -2
  64. package/dist/smoke.test.d.ts.map +0 -1
  65. package/dist/smoke.test.js +0 -229
  66. package/dist/smoke.test.js.map +0 -1
  67. package/dist/storage/base-store.test.d.ts +0 -2
  68. package/dist/storage/base-store.test.d.ts.map +0 -1
  69. package/dist/storage/base-store.test.js +0 -180
  70. package/dist/storage/base-store.test.js.map +0 -1
  71. package/dist/storage/global-store.test.d.ts +0 -2
  72. package/dist/storage/global-store.test.d.ts.map +0 -1
  73. package/dist/storage/global-store.test.js +0 -327
  74. package/dist/storage/global-store.test.js.map +0 -1
  75. package/dist/storage/index.test.d.ts +0 -2
  76. package/dist/storage/index.test.d.ts.map +0 -1
  77. package/dist/storage/index.test.js +0 -56
  78. package/dist/storage/index.test.js.map +0 -1
  79. package/dist/storage/knowledge-store.test.d.ts +0 -2
  80. package/dist/storage/knowledge-store.test.d.ts.map +0 -1
  81. package/dist/storage/knowledge-store.test.js +0 -368
  82. package/dist/storage/knowledge-store.test.js.map +0 -1
  83. package/dist/storage/metrics-store.test.d.ts +0 -2
  84. package/dist/storage/metrics-store.test.d.ts.map +0 -1
  85. package/dist/storage/metrics-store.test.js +0 -212
  86. package/dist/storage/metrics-store.test.js.map +0 -1
  87. package/dist/storage/pattern-store.test.d.ts +0 -2
  88. package/dist/storage/pattern-store.test.d.ts.map +0 -1
  89. package/dist/storage/pattern-store.test.js +0 -224
  90. package/dist/storage/pattern-store.test.js.map +0 -1
  91. package/dist/storage/spec-store.test.d.ts +0 -2
  92. package/dist/storage/spec-store.test.d.ts.map +0 -1
  93. package/dist/storage/spec-store.test.js +0 -227
  94. package/dist/storage/spec-store.test.js.map +0 -1
  95. package/dist/tools/audit.test.d.ts +0 -2
  96. package/dist/tools/audit.test.d.ts.map +0 -1
  97. package/dist/tools/audit.test.js +0 -169
  98. package/dist/tools/audit.test.js.map +0 -1
  99. package/dist/tools/challenge-spec.test.d.ts +0 -2
  100. package/dist/tools/challenge-spec.test.d.ts.map +0 -1
  101. package/dist/tools/challenge-spec.test.js +0 -782
  102. package/dist/tools/challenge-spec.test.js.map +0 -1
  103. package/dist/tools/check-versions.test.d.ts +0 -2
  104. package/dist/tools/check-versions.test.d.ts.map +0 -1
  105. package/dist/tools/check-versions.test.js +0 -214
  106. package/dist/tools/check-versions.test.js.map +0 -1
  107. package/dist/tools/clarify-requirements.test.d.ts +0 -2
  108. package/dist/tools/clarify-requirements.test.d.ts.map +0 -1
  109. package/dist/tools/clarify-requirements.test.js +0 -161
  110. package/dist/tools/clarify-requirements.test.js.map +0 -1
  111. package/dist/tools/consult-docs.test.d.ts +0 -2
  112. package/dist/tools/consult-docs.test.d.ts.map +0 -1
  113. package/dist/tools/consult-docs.test.js +0 -140
  114. package/dist/tools/consult-docs.test.js.map +0 -1
  115. package/dist/tools/create-spec.test.d.ts +0 -2
  116. package/dist/tools/create-spec.test.d.ts.map +0 -1
  117. package/dist/tools/create-spec.test.js +0 -233
  118. package/dist/tools/create-spec.test.js.map +0 -1
  119. package/dist/tools/define-ui-contract.test.d.ts +0 -2
  120. package/dist/tools/define-ui-contract.test.d.ts.map +0 -1
  121. package/dist/tools/define-ui-contract.test.js +0 -479
  122. package/dist/tools/define-ui-contract.test.js.map +0 -1
  123. package/dist/tools/design-schema.test.d.ts +0 -2
  124. package/dist/tools/design-schema.test.d.ts.map +0 -1
  125. package/dist/tools/design-schema.test.js +0 -301
  126. package/dist/tools/design-schema.test.js.map +0 -1
  127. package/dist/tools/detect-agent.test.d.ts +0 -2
  128. package/dist/tools/detect-agent.test.d.ts.map +0 -1
  129. package/dist/tools/detect-agent.test.js +0 -133
  130. package/dist/tools/detect-agent.test.js.map +0 -1
  131. package/dist/tools/detect-drift.test.d.ts +0 -2
  132. package/dist/tools/detect-drift.test.d.ts.map +0 -1
  133. package/dist/tools/detect-drift.test.js +0 -312
  134. package/dist/tools/detect-drift.test.js.map +0 -1
  135. package/dist/tools/discover-mcps.test.d.ts +0 -2
  136. package/dist/tools/discover-mcps.test.d.ts.map +0 -1
  137. package/dist/tools/discover-mcps.test.js +0 -345
  138. package/dist/tools/discover-mcps.test.js.map +0 -1
  139. package/dist/tools/estimate.test.d.ts +0 -2
  140. package/dist/tools/estimate.test.d.ts.map +0 -1
  141. package/dist/tools/estimate.test.js +0 -137
  142. package/dist/tools/estimate.test.js.map +0 -1
  143. package/dist/tools/generate-adr.test.d.ts +0 -2
  144. package/dist/tools/generate-adr.test.d.ts.map +0 -1
  145. package/dist/tools/generate-adr.test.js +0 -206
  146. package/dist/tools/generate-adr.test.js.map +0 -1
  147. package/dist/tools/generate-checklist.test.d.ts +0 -2
  148. package/dist/tools/generate-checklist.test.d.ts.map +0 -1
  149. package/dist/tools/generate-checklist.test.js +0 -201
  150. package/dist/tools/generate-checklist.test.js.map +0 -1
  151. package/dist/tools/generate-docs.test.d.ts +0 -2
  152. package/dist/tools/generate-docs.test.d.ts.map +0 -1
  153. package/dist/tools/generate-docs.test.js +0 -183
  154. package/dist/tools/generate-docs.test.js.map +0 -1
  155. package/dist/tools/generate-execution-plan.test.d.ts +0 -2
  156. package/dist/tools/generate-execution-plan.test.d.ts.map +0 -1
  157. package/dist/tools/generate-execution-plan.test.js +0 -643
  158. package/dist/tools/generate-execution-plan.test.js.map +0 -1
  159. package/dist/tools/generate-rules.test.d.ts +0 -2
  160. package/dist/tools/generate-rules.test.d.ts.map +0 -1
  161. package/dist/tools/generate-rules.test.js +0 -148
  162. package/dist/tools/generate-rules.test.js.map +0 -1
  163. package/dist/tools/generate-skill.test.d.ts +0 -2
  164. package/dist/tools/generate-skill.test.d.ts.map +0 -1
  165. package/dist/tools/generate-skill.test.js +0 -138
  166. package/dist/tools/generate-skill.test.js.map +0 -1
  167. package/dist/tools/generate-sub-agent.test.d.ts +0 -2
  168. package/dist/tools/generate-sub-agent.test.d.ts.map +0 -1
  169. package/dist/tools/generate-sub-agent.test.js +0 -162
  170. package/dist/tools/generate-sub-agent.test.js.map +0 -1
  171. package/dist/tools/generate-tests.test.d.ts +0 -2
  172. package/dist/tools/generate-tests.test.d.ts.map +0 -1
  173. package/dist/tools/generate-tests.test.js +0 -222
  174. package/dist/tools/generate-tests.test.js.map +0 -1
  175. package/dist/tools/init-constitution.test.d.ts +0 -2
  176. package/dist/tools/init-constitution.test.d.ts.map +0 -1
  177. package/dist/tools/init-constitution.test.js +0 -398
  178. package/dist/tools/init-constitution.test.js.map +0 -1
  179. package/dist/tools/init-project.test.d.ts +0 -2
  180. package/dist/tools/init-project.test.d.ts.map +0 -1
  181. package/dist/tools/init-project.test.js +0 -158
  182. package/dist/tools/init-project.test.js.map +0 -1
  183. package/dist/tools/integrate-pm.test.d.ts +0 -2
  184. package/dist/tools/integrate-pm.test.d.ts.map +0 -1
  185. package/dist/tools/integrate-pm.test.js +0 -558
  186. package/dist/tools/integrate-pm.test.js.map +0 -1
  187. package/dist/tools/learn.test.d.ts +0 -2
  188. package/dist/tools/learn.test.d.ts.map +0 -1
  189. package/dist/tools/learn.test.js +0 -123
  190. package/dist/tools/learn.test.js.map +0 -1
  191. package/dist/tools/list-specs.test.d.ts +0 -2
  192. package/dist/tools/list-specs.test.d.ts.map +0 -1
  193. package/dist/tools/list-specs.test.js +0 -110
  194. package/dist/tools/list-specs.test.js.map +0 -1
  195. package/dist/tools/manage-context.test.d.ts +0 -2
  196. package/dist/tools/manage-context.test.d.ts.map +0 -1
  197. package/dist/tools/manage-context.test.js +0 -359
  198. package/dist/tools/manage-context.test.js.map +0 -1
  199. package/dist/tools/manage-git.test.d.ts +0 -2
  200. package/dist/tools/manage-git.test.d.ts.map +0 -1
  201. package/dist/tools/manage-git.test.js +0 -882
  202. package/dist/tools/manage-git.test.js.map +0 -1
  203. package/dist/tools/orchestrate.test.d.ts +0 -2
  204. package/dist/tools/orchestrate.test.d.ts.map +0 -1
  205. package/dist/tools/orchestrate.test.js +0 -1117
  206. package/dist/tools/orchestrate.test.js.map +0 -1
  207. package/dist/tools/reconcile-spec.test.d.ts +0 -2
  208. package/dist/tools/reconcile-spec.test.d.ts.map +0 -1
  209. package/dist/tools/reconcile-spec.test.js +0 -259
  210. package/dist/tools/reconcile-spec.test.js.map +0 -1
  211. package/dist/tools/register-platform-tools.test.d.ts +0 -2
  212. package/dist/tools/register-platform-tools.test.d.ts.map +0 -1
  213. package/dist/tools/register-platform-tools.test.js +0 -404
  214. package/dist/tools/register-platform-tools.test.js.map +0 -1
  215. package/dist/tools/register-spec-tools.test.d.ts +0 -2
  216. package/dist/tools/register-spec-tools.test.d.ts.map +0 -1
  217. package/dist/tools/register-spec-tools.test.js +0 -407
  218. package/dist/tools/register-spec-tools.test.js.map +0 -1
  219. package/dist/tools/reverse-engineer.test.d.ts +0 -2
  220. package/dist/tools/reverse-engineer.test.d.ts.map +0 -1
  221. package/dist/tools/reverse-engineer.test.js +0 -206
  222. package/dist/tools/reverse-engineer.test.js.map +0 -1
  223. package/dist/tools/schemas.d.ts +0 -20
  224. package/dist/tools/schemas.d.ts.map +0 -1
  225. package/dist/tools/schemas.js +0 -133
  226. package/dist/tools/schemas.js.map +0 -1
  227. package/dist/tools/schemas.test.d.ts +0 -2
  228. package/dist/tools/schemas.test.d.ts.map +0 -1
  229. package/dist/tools/schemas.test.js +0 -245
  230. package/dist/tools/schemas.test.js.map +0 -1
  231. package/dist/tools/set-locale.test.d.ts +0 -2
  232. package/dist/tools/set-locale.test.d.ts.map +0 -1
  233. package/dist/tools/set-locale.test.js +0 -74
  234. package/dist/tools/set-locale.test.js.map +0 -1
  235. package/dist/tools/suggest-mcps.test.d.ts +0 -2
  236. package/dist/tools/suggest-mcps.test.d.ts.map +0 -1
  237. package/dist/tools/suggest-mcps.test.js +0 -198
  238. package/dist/tools/suggest-mcps.test.js.map +0 -1
  239. package/dist/tools/suggest-stack.test.d.ts +0 -2
  240. package/dist/tools/suggest-stack.test.d.ts.map +0 -1
  241. package/dist/tools/suggest-stack.test.js +0 -181
  242. package/dist/tools/suggest-stack.test.js.map +0 -1
  243. package/dist/tools/suggest-tooling.test.d.ts +0 -2
  244. package/dist/tools/suggest-tooling.test.d.ts.map +0 -1
  245. package/dist/tools/suggest-tooling.test.js +0 -213
  246. package/dist/tools/suggest-tooling.test.js.map +0 -1
  247. package/dist/tools/summarize-spec.test.d.ts +0 -2
  248. package/dist/tools/summarize-spec.test.d.ts.map +0 -1
  249. package/dist/tools/summarize-spec.test.js +0 -180
  250. package/dist/tools/summarize-spec.test.js.map +0 -1
  251. package/dist/tools/update-status.test.d.ts +0 -2
  252. package/dist/tools/update-status.test.d.ts.map +0 -1
  253. package/dist/tools/update-status.test.js +0 -142
  254. package/dist/tools/update-status.test.js.map +0 -1
  255. package/dist/tools/validate.test.d.ts +0 -2
  256. package/dist/tools/validate.test.d.ts.map +0 -1
  257. package/dist/tools/validate.test.js +0 -137
  258. package/dist/tools/validate.test.js.map +0 -1
@@ -1,558 +0,0 @@
1
- // Tests for handleIntegratePM
2
- import { describe, it, expect, vi, beforeEach } from 'vitest';
3
- vi.mock('../i18n/index.js', () => ({
4
- t: (key) => key,
5
- ti: (key, _vars) => key,
6
- }));
7
- vi.mock('../storage/index.js', () => ({
8
- knowledgeStore: { getKnowledge: vi.fn() },
9
- specStore: { getSpec: vi.fn() },
10
- }));
11
- import { handleIntegratePM } from './integrate-pm.js';
12
- import { knowledgeStore, specStore } from '../storage/index.js';
13
- const mockGetKnowledge = vi.mocked(knowledgeStore.getKnowledge);
14
- const mockGetSpec = vi.mocked(specStore.getSpec);
15
- const baseKnowledge = {
16
- language: 'typescript',
17
- framework: 'express',
18
- projectPath: '/test',
19
- stack: [],
20
- conventions: {},
21
- architecture: { primary: 'monolith', secondary: [], layers: [] },
22
- database: 'postgresql',
23
- testCommand: null,
24
- buildCommand: null,
25
- linting: { detectedLinters: [] },
26
- apiContracts: [],
27
- layers: [],
28
- };
29
- const baseSpec = {
30
- id: 'SPEC-001',
31
- title: 'User Auth',
32
- type: 'feature',
33
- scope: 'feature',
34
- target: 'backend',
35
- tags: ['auth', 'security'],
36
- status: 'approved',
37
- risk: 'medium',
38
- difficulty: 3,
39
- estimation: { devHours: 8, reviewHours: 2, totalCostUsd: 100 },
40
- dependencies: [],
41
- createdAt: '2025-01-01',
42
- updatedAt: '2025-01-01',
43
- impactAnalysis: { requiresMigration: false, requiresFeatureFlag: false },
44
- };
45
- beforeEach(() => {
46
- vi.clearAllMocks();
47
- mockGetKnowledge.mockResolvedValue(baseKnowledge);
48
- });
49
- describe('handleIntegratePM', () => {
50
- it('should return error when project not found', async () => {
51
- mockGetKnowledge.mockResolvedValue(null);
52
- const result = await handleIntegratePM({
53
- projectId: 'missing',
54
- platform: 'jira',
55
- action: 'create-issue',
56
- specId: 'SPEC-001',
57
- });
58
- expect(result.isError).toBe(true);
59
- });
60
- it('should return error for unsupported platform', async () => {
61
- const result = await handleIntegratePM({
62
- projectId: 'proj-1',
63
- platform: 'unsupported',
64
- action: 'create-issue',
65
- });
66
- expect(result.isError).toBe(true);
67
- expect(result.content[0].text).toContain('Unsupported PM platform');
68
- });
69
- // create-issue action
70
- it('should error when create-issue called without specId', async () => {
71
- const result = await handleIntegratePM({
72
- projectId: 'proj-1',
73
- platform: 'jira',
74
- action: 'create-issue',
75
- });
76
- expect(result.isError).toBe(true);
77
- expect(result.content[0].text).toContain('specId is required');
78
- });
79
- it('should error when create-issue spec not found', async () => {
80
- mockGetSpec.mockResolvedValue(null);
81
- const result = await handleIntegratePM({
82
- projectId: 'proj-1',
83
- platform: 'jira',
84
- action: 'create-issue',
85
- specId: 'SPEC-999',
86
- });
87
- expect(result.isError).toBe(true);
88
- });
89
- it('should create-issue for jira platform', async () => {
90
- mockGetSpec.mockResolvedValue(baseSpec);
91
- const result = await handleIntegratePM({
92
- projectId: 'proj-1',
93
- platform: 'jira',
94
- action: 'create-issue',
95
- specId: 'SPEC-001',
96
- });
97
- expect(result.isError).toBeUndefined();
98
- const text = result.content[0].text;
99
- expect(text).toContain('Jira');
100
- expect(text).toContain('create-issue');
101
- expect(text).toContain('Issue template generated');
102
- });
103
- it('should create-issue for github platform', async () => {
104
- mockGetSpec.mockResolvedValue(baseSpec);
105
- const result = await handleIntegratePM({
106
- projectId: 'proj-1',
107
- platform: 'github',
108
- action: 'create-issue',
109
- specId: 'SPEC-001',
110
- });
111
- const text = result.content[0].text;
112
- expect(text).toContain('GitHub Projects');
113
- });
114
- // sync-spec action
115
- it('should error when sync-spec called without specId', async () => {
116
- const result = await handleIntegratePM({
117
- projectId: 'proj-1',
118
- platform: 'linear',
119
- action: 'sync-spec',
120
- });
121
- expect(result.isError).toBe(true);
122
- });
123
- it('should sync-spec successfully', async () => {
124
- mockGetSpec.mockResolvedValue(baseSpec);
125
- const result = await handleIntegratePM({
126
- projectId: 'proj-1',
127
- platform: 'linear',
128
- action: 'sync-spec',
129
- specId: 'SPEC-001',
130
- config: { externalId: 'LIN-123' },
131
- });
132
- const text = result.content[0].text;
133
- expect(text).toContain('sync-spec');
134
- expect(text).toContain('Linear');
135
- });
136
- // link-spec action
137
- it('should link-spec with config', async () => {
138
- const result = await handleIntegratePM({
139
- projectId: 'proj-1',
140
- platform: 'trello',
141
- action: 'link-spec',
142
- specId: 'SPEC-001',
143
- config: { externalId: 'CARD-123', externalUrl: 'https://trello.com/card/123' },
144
- });
145
- const text = result.content[0].text;
146
- expect(text).toContain('link-spec');
147
- expect(text).toContain('CARD-123');
148
- expect(text).toContain('https://trello.com/card/123');
149
- });
150
- it('should link-spec with defaults when no config', async () => {
151
- const result = await handleIntegratePM({
152
- projectId: 'proj-1',
153
- platform: 'notion',
154
- action: 'link-spec',
155
- });
156
- const text = result.content[0].text;
157
- expect(text).toContain('{EXTERNAL_ID}');
158
- });
159
- // update-status action
160
- it('should error when update-status called without specId', async () => {
161
- const result = await handleIntegratePM({
162
- projectId: 'proj-1',
163
- platform: 'asana',
164
- action: 'update-status',
165
- });
166
- expect(result.isError).toBe(true);
167
- });
168
- it('should update-status successfully', async () => {
169
- mockGetSpec.mockResolvedValue(baseSpec);
170
- const result = await handleIntegratePM({
171
- projectId: 'proj-1',
172
- platform: 'clickup',
173
- action: 'update-status',
174
- specId: 'SPEC-001',
175
- config: { externalId: 'CU-456' },
176
- });
177
- const text = result.content[0].text;
178
- expect(text).toContain('update-status');
179
- expect(text).toContain('ClickUp');
180
- });
181
- // unknown action
182
- it('should handle unknown action', async () => {
183
- const result = await handleIntegratePM({
184
- projectId: 'proj-1',
185
- platform: 'jira',
186
- action: 'unknown-action',
187
- });
188
- const text = result.content[0].text;
189
- expect(text).toContain('Unknown action');
190
- });
191
- // bugfix spec type maps to Bug in jira
192
- it('should map bugfix spec type to Bug in jira', async () => {
193
- mockGetSpec.mockResolvedValue({ ...baseSpec, type: 'bugfix' });
194
- const result = await handleIntegratePM({
195
- projectId: 'proj-1',
196
- platform: 'jira',
197
- action: 'create-issue',
198
- specId: 'SPEC-001',
199
- });
200
- const text = result.content[0].text;
201
- expect(text).toContain('Bug');
202
- });
203
- // --- Coverage for remaining platforms: trello, notion, asana, clickup (lines 113-169) ---
204
- it('should create-issue for trello platform', async () => {
205
- mockGetSpec.mockResolvedValue(baseSpec);
206
- const result = await handleIntegratePM({
207
- projectId: 'proj-1',
208
- platform: 'trello',
209
- action: 'create-issue',
210
- specId: 'SPEC-001',
211
- });
212
- const text = result.content[0].text;
213
- expect(text).toContain('Trello');
214
- expect(text).toContain('create-issue');
215
- });
216
- it('should create-issue for notion platform', async () => {
217
- mockGetSpec.mockResolvedValue(baseSpec);
218
- const result = await handleIntegratePM({
219
- projectId: 'proj-1',
220
- platform: 'notion',
221
- action: 'create-issue',
222
- specId: 'SPEC-001',
223
- });
224
- const text = result.content[0].text;
225
- expect(text).toContain('Notion');
226
- });
227
- it('should create-issue for asana platform', async () => {
228
- mockGetSpec.mockResolvedValue(baseSpec);
229
- const result = await handleIntegratePM({
230
- projectId: 'proj-1',
231
- platform: 'asana',
232
- action: 'create-issue',
233
- specId: 'SPEC-001',
234
- });
235
- const text = result.content[0].text;
236
- expect(text).toContain('Asana');
237
- });
238
- it('should create-issue for clickup platform', async () => {
239
- mockGetSpec.mockResolvedValue(baseSpec);
240
- const result = await handleIntegratePM({
241
- projectId: 'proj-1',
242
- platform: 'clickup',
243
- action: 'create-issue',
244
- specId: 'SPEC-001',
245
- });
246
- const text = result.content[0].text;
247
- expect(text).toContain('ClickUp');
248
- });
249
- it('should create-issue for linear platform', async () => {
250
- mockGetSpec.mockResolvedValue(baseSpec);
251
- const result = await handleIntegratePM({
252
- projectId: 'proj-1',
253
- platform: 'linear',
254
- action: 'create-issue',
255
- specId: 'SPEC-001',
256
- });
257
- const text = result.content[0].text;
258
- expect(text).toContain('Linear');
259
- });
260
- // --- Coverage for sync-spec with spec not found (line 259) ---
261
- it('should error when sync-spec spec is not found', async () => {
262
- mockGetSpec.mockResolvedValue(null);
263
- const result = await handleIntegratePM({
264
- projectId: 'proj-1',
265
- platform: 'jira',
266
- action: 'sync-spec',
267
- specId: 'SPEC-999',
268
- });
269
- expect(result.isError).toBe(true);
270
- });
271
- // --- Coverage for update-status with spec not found (line 290) ---
272
- it('should error when update-status spec is not found', async () => {
273
- mockGetSpec.mockResolvedValue(null);
274
- const result = await handleIntegratePM({
275
- projectId: 'proj-1',
276
- platform: 'jira',
277
- action: 'update-status',
278
- specId: 'SPEC-999',
279
- });
280
- expect(result.isError).toBe(true);
281
- });
282
- // --- Coverage for link-spec with specific specId ---
283
- it('should link-spec with specId in message', async () => {
284
- const result = await handleIntegratePM({
285
- projectId: 'proj-1',
286
- platform: 'github',
287
- action: 'link-spec',
288
- specId: 'SPEC-001',
289
- });
290
- const text = result.content[0].text;
291
- expect(text).toContain('SPEC-001');
292
- expect(text).toContain('link-spec');
293
- });
294
- // --- Coverage for sync-spec across different platforms ---
295
- it('should sync-spec for jira platform', async () => {
296
- mockGetSpec.mockResolvedValue(baseSpec);
297
- const result = await handleIntegratePM({
298
- projectId: 'proj-1',
299
- platform: 'jira',
300
- action: 'sync-spec',
301
- specId: 'SPEC-001',
302
- });
303
- const text = result.content[0].text;
304
- expect(text).toContain('Jira');
305
- expect(text).toContain('sync-spec');
306
- });
307
- it('should sync-spec for github platform', async () => {
308
- mockGetSpec.mockResolvedValue(baseSpec);
309
- const result = await handleIntegratePM({
310
- projectId: 'proj-1',
311
- platform: 'github',
312
- action: 'sync-spec',
313
- specId: 'SPEC-001',
314
- });
315
- const text = result.content[0].text;
316
- expect(text).toContain('GitHub');
317
- });
318
- // --- Coverage for update-status across different platforms ---
319
- it('should update-status for jira platform', async () => {
320
- mockGetSpec.mockResolvedValue(baseSpec);
321
- const result = await handleIntegratePM({
322
- projectId: 'proj-1',
323
- platform: 'jira',
324
- action: 'update-status',
325
- specId: 'SPEC-001',
326
- });
327
- const text = result.content[0].text;
328
- expect(text).toContain('Jira');
329
- expect(text).toContain('update-status');
330
- });
331
- it('should update-status for github platform', async () => {
332
- mockGetSpec.mockResolvedValue(baseSpec);
333
- const result = await handleIntegratePM({
334
- projectId: 'proj-1',
335
- platform: 'github',
336
- action: 'update-status',
337
- specId: 'SPEC-001',
338
- });
339
- const text = result.content[0].text;
340
- expect(text).toContain('GitHub');
341
- });
342
- // --- Coverage for mapPriority with different risk levels ---
343
- it('should map critical risk to Highest priority in jira', async () => {
344
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'critical' });
345
- const result = await handleIntegratePM({
346
- projectId: 'proj-1',
347
- platform: 'jira',
348
- action: 'create-issue',
349
- specId: 'SPEC-001',
350
- });
351
- const text = result.content[0].text;
352
- expect(text).toContain('Highest');
353
- });
354
- it('should map high risk to High priority in jira', async () => {
355
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'high' });
356
- const result = await handleIntegratePM({
357
- projectId: 'proj-1',
358
- platform: 'jira',
359
- action: 'create-issue',
360
- specId: 'SPEC-001',
361
- });
362
- const text = result.content[0].text;
363
- expect(text).toContain('High');
364
- });
365
- it('should map low risk to Low priority in jira', async () => {
366
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'low' });
367
- const result = await handleIntegratePM({
368
- projectId: 'proj-1',
369
- platform: 'jira',
370
- action: 'create-issue',
371
- specId: 'SPEC-001',
372
- });
373
- const text = result.content[0].text;
374
- expect(text).toContain('Low');
375
- });
376
- it('should map unknown risk to Medium priority in jira', async () => {
377
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'unknown' });
378
- const result = await handleIntegratePM({
379
- projectId: 'proj-1',
380
- platform: 'jira',
381
- action: 'create-issue',
382
- specId: 'SPEC-001',
383
- });
384
- const text = result.content[0].text;
385
- expect(text).toContain('Medium');
386
- });
387
- // --- Coverage for linear priority mapping (different risk levels) ---
388
- it('should map risk levels to numeric priorities in linear', async () => {
389
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'critical' });
390
- const result = await handleIntegratePM({
391
- projectId: 'proj-1',
392
- platform: 'linear',
393
- action: 'create-issue',
394
- specId: 'SPEC-001',
395
- });
396
- const text = result.content[0].text;
397
- expect(text).toContain('Linear');
398
- // Linear maps critical -> priority 1
399
- expect(text).toContain('"priority": 1');
400
- });
401
- it('should map low risk to priority 4 in linear', async () => {
402
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'low' });
403
- const result = await handleIntegratePM({
404
- projectId: 'proj-1',
405
- platform: 'linear',
406
- action: 'create-issue',
407
- specId: 'SPEC-001',
408
- });
409
- const text = result.content[0].text;
410
- expect(text).toContain('"priority": 4');
411
- });
412
- // --- Coverage for clickup priority mapping ---
413
- it('should map risk levels to priorities in clickup', async () => {
414
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'critical' });
415
- const result = await handleIntegratePM({
416
- projectId: 'proj-1',
417
- platform: 'clickup',
418
- action: 'create-issue',
419
- specId: 'SPEC-001',
420
- });
421
- const text = result.content[0].text;
422
- expect(text).toContain('"priority": 1');
423
- });
424
- // --- Coverage for linear priority ternary branches (line 62) ---
425
- it('should map high risk to priority 2 in linear', async () => {
426
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'high' });
427
- const result = await handleIntegratePM({
428
- projectId: 'proj-1',
429
- platform: 'linear',
430
- action: 'create-issue',
431
- specId: 'SPEC-001',
432
- });
433
- const text = result.content[0].text;
434
- expect(text).toContain('"priority": 2');
435
- });
436
- it('should map medium risk to priority 3 in linear', async () => {
437
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'medium' });
438
- const result = await handleIntegratePM({
439
- projectId: 'proj-1',
440
- platform: 'linear',
441
- action: 'create-issue',
442
- specId: 'SPEC-001',
443
- });
444
- const text = result.content[0].text;
445
- expect(text).toContain('"priority": 3');
446
- });
447
- // --- Coverage for clickup priority ternary branches (line 174) ---
448
- it('should map high risk to priority 2 in clickup', async () => {
449
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'high' });
450
- const result = await handleIntegratePM({
451
- projectId: 'proj-1',
452
- platform: 'clickup',
453
- action: 'create-issue',
454
- specId: 'SPEC-001',
455
- });
456
- const text = result.content[0].text;
457
- expect(text).toContain('"priority": 2');
458
- });
459
- it('should map medium risk to priority 3 in clickup', async () => {
460
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'medium' });
461
- const result = await handleIntegratePM({
462
- projectId: 'proj-1',
463
- platform: 'clickup',
464
- action: 'create-issue',
465
- specId: 'SPEC-001',
466
- });
467
- const text = result.content[0].text;
468
- expect(text).toContain('"priority": 3');
469
- });
470
- it('should map low risk to priority 4 in clickup', async () => {
471
- mockGetSpec.mockResolvedValue({ ...baseSpec, risk: 'low' });
472
- const result = await handleIntegratePM({
473
- projectId: 'proj-1',
474
- platform: 'clickup',
475
- action: 'create-issue',
476
- specId: 'SPEC-001',
477
- });
478
- const text = result.content[0].text;
479
- expect(text).toContain('"priority": 4');
480
- });
481
- // --- Coverage for handleSyncSpec with unmapped status (line 359 ?? fallback) ---
482
- it('should fall back to raw status in sync-spec when status is not in mapping', async () => {
483
- mockGetSpec.mockResolvedValue({ ...baseSpec, status: 'cancelled' });
484
- const result = await handleIntegratePM({
485
- projectId: 'proj-1',
486
- platform: 'linear',
487
- action: 'sync-spec',
488
- specId: 'SPEC-001',
489
- config: { externalId: 'LIN-456' },
490
- });
491
- const text = result.content[0].text;
492
- expect(text).toContain('sync-spec');
493
- expect(text).toContain('cancelled -> cancelled');
494
- });
495
- // --- Coverage for handleUpdateStatus with unmapped status (line 393 ?? fallback) ---
496
- it('should fall back to raw status in update-status when status is not in mapping', async () => {
497
- mockGetSpec.mockResolvedValue({ ...baseSpec, status: 'cancelled' });
498
- const result = await handleIntegratePM({
499
- projectId: 'proj-1',
500
- platform: 'clickup',
501
- action: 'update-status',
502
- specId: 'SPEC-001',
503
- config: { externalId: 'CU-789' },
504
- });
505
- const text = result.content[0].text;
506
- expect(text).toContain('update-status');
507
- expect(text).toContain('cancelled -> cancelled');
508
- });
509
- // --- Coverage for externalId and externalUrl in output formatting ---
510
- it('should include externalId and externalUrl in output when present', async () => {
511
- mockGetSpec.mockResolvedValue(baseSpec);
512
- const result = await handleIntegratePM({
513
- projectId: 'proj-1',
514
- platform: 'jira',
515
- action: 'sync-spec',
516
- specId: 'SPEC-001',
517
- config: { externalId: 'JIRA-123' },
518
- });
519
- const text = result.content[0].text;
520
- expect(text).toContain('JIRA-123');
521
- });
522
- it('should include link-spec URL in output', async () => {
523
- const result = await handleIntegratePM({
524
- projectId: 'proj-1',
525
- platform: 'jira',
526
- action: 'link-spec',
527
- config: { externalId: 'JIRA-123', externalUrl: 'https://jira.example.com/JIRA-123' },
528
- });
529
- const text = result.content[0].text;
530
- expect(text).toContain('**External ID:** JIRA-123');
531
- expect(text).toContain('https://jira.example.com/JIRA-123');
532
- });
533
- // --- Coverage for github issue template with empty tags ---
534
- it('should handle github issue template with no tags', async () => {
535
- mockGetSpec.mockResolvedValue({ ...baseSpec, tags: [] });
536
- const result = await handleIntegratePM({
537
- projectId: 'proj-1',
538
- platform: 'github',
539
- action: 'create-issue',
540
- specId: 'SPEC-001',
541
- });
542
- const text = result.content[0].text;
543
- expect(text).toContain('GitHub Projects');
544
- });
545
- // --- Coverage for default config = {} when no config provided ---
546
- it('should use default empty config when config not provided', async () => {
547
- mockGetSpec.mockResolvedValue(baseSpec);
548
- const result = await handleIntegratePM({
549
- projectId: 'proj-1',
550
- platform: 'jira',
551
- action: 'update-status',
552
- specId: 'SPEC-001',
553
- });
554
- const text = result.content[0].text;
555
- expect(text).toContain('{EXTERNAL_ID}');
556
- });
557
- });
558
- //# sourceMappingURL=integrate-pm.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integrate-pm.test.js","sourceRoot":"","sources":["../../src/tools/integrate-pm.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=learn.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"learn.test.d.ts","sourceRoot":"","sources":["../../src/tools/learn.test.ts"],"names":[],"mappings":""}