@intentsolutions/blueprint 2.4.0 → 2.5.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.
@@ -0,0 +1,447 @@
1
+ /**
2
+ * Jira Exporter
3
+ * High-level export operations for Blueprint documents to Jira
4
+ */
5
+ import { JiraClient } from './client.js';
6
+ import { STANDARD_LABELS, CATEGORY_COMPONENTS } from './types.js';
7
+ export class JiraExporter {
8
+ client;
9
+ projectKey;
10
+ constructor(config) {
11
+ this.client = new JiraClient(config);
12
+ this.projectKey = config.projectKey;
13
+ }
14
+ /**
15
+ * Export Blueprint documents to Jira
16
+ */
17
+ async export(documents, options = {}) {
18
+ const result = {
19
+ epics: [],
20
+ stories: [],
21
+ tasks: [],
22
+ sprints: [],
23
+ versions: [],
24
+ components: [],
25
+ errors: [],
26
+ };
27
+ // Dry run - just preview
28
+ if (options.dryRun) {
29
+ return this.preview(documents, options);
30
+ }
31
+ try {
32
+ // Verify connection
33
+ await this.client.verify();
34
+ // Sync components if requested
35
+ if (options.syncComponents !== false) {
36
+ const componentNames = Object.values(CATEGORY_COMPONENTS);
37
+ result.components = await this.client.ensureComponents(componentNames);
38
+ }
39
+ // Create versions from release phases if requested
40
+ if (options.createVersions) {
41
+ const phases = this.extractReleasePhases(documents);
42
+ for (const phase of phases) {
43
+ try {
44
+ const version = await this.client.createVersion({
45
+ name: phase.name,
46
+ projectKey: this.projectKey,
47
+ description: phase.description,
48
+ releaseDate: phase.endDate,
49
+ });
50
+ result.versions.push(version);
51
+ }
52
+ catch (error) {
53
+ result.errors.push(`Failed to create version "${phase.name}": ${error}`);
54
+ }
55
+ }
56
+ }
57
+ // Get board for sprint creation
58
+ let boardId = options.boardId;
59
+ if (options.createSprints && !boardId) {
60
+ const boards = await this.client.getBoards();
61
+ const scrumBoard = boards.find(b => b.type === 'scrum');
62
+ if (scrumBoard) {
63
+ boardId = scrumBoard.id;
64
+ }
65
+ }
66
+ // Create sprints from release phases if requested
67
+ if (options.createSprints && boardId) {
68
+ const phases = this.extractReleasePhases(documents);
69
+ for (const phase of phases) {
70
+ try {
71
+ const sprint = await this.client.createSprint({
72
+ name: phase.name,
73
+ boardId,
74
+ startDate: phase.startDate,
75
+ endDate: phase.endDate,
76
+ goal: phase.description,
77
+ });
78
+ result.sprints.push(sprint);
79
+ }
80
+ catch (error) {
81
+ result.errors.push(`Failed to create sprint "${phase.name}": ${error}`);
82
+ }
83
+ }
84
+ }
85
+ // Create Epic if requested
86
+ let epicKey;
87
+ if (options.createEpic && options.epicName) {
88
+ try {
89
+ const epic = await this.client.createIssue({
90
+ summary: options.epicName,
91
+ description: this.extractDescription(documents),
92
+ issueType: 'Epic',
93
+ projectKey: this.projectKey,
94
+ labels: options.addLabels ? ['blueprint'] : undefined,
95
+ });
96
+ result.epics.push(epic);
97
+ epicKey = epic.key;
98
+ }
99
+ catch (error) {
100
+ result.errors.push(`Failed to create epic: ${error}`);
101
+ }
102
+ }
103
+ // Extract and create issues from task breakdowns
104
+ const taskBreakdowns = this.extractTaskBreakdowns(documents);
105
+ for (let i = 0; i < taskBreakdowns.length; i++) {
106
+ const breakdown = taskBreakdowns[i];
107
+ const sprint = result.sprints[i];
108
+ const { stories, tasks } = await this.createIssuesFromBreakdown(breakdown, {
109
+ epicKey,
110
+ sprintId: sprint?.id,
111
+ addLabels: options.addLabels,
112
+ });
113
+ result.stories.push(...stories);
114
+ result.tasks.push(...tasks);
115
+ }
116
+ }
117
+ catch (error) {
118
+ result.errors.push(error instanceof Error ? error.message : String(error));
119
+ }
120
+ return result;
121
+ }
122
+ /**
123
+ * Preview what would be created (dry run)
124
+ */
125
+ async preview(documents, options = {}) {
126
+ const result = {
127
+ epics: [],
128
+ stories: [],
129
+ tasks: [],
130
+ sprints: [],
131
+ versions: [],
132
+ components: [],
133
+ errors: [],
134
+ };
135
+ // Preview components
136
+ if (options.syncComponents !== false) {
137
+ const componentNames = Object.values(CATEGORY_COMPONENTS);
138
+ result.components = componentNames.map((name, i) => ({
139
+ id: `preview-component-${i}`,
140
+ name,
141
+ projectKey: this.projectKey,
142
+ }));
143
+ }
144
+ // Preview versions
145
+ if (options.createVersions) {
146
+ const phases = this.extractReleasePhases(documents);
147
+ result.versions = phases.map((phase, i) => ({
148
+ id: `preview-version-${i}`,
149
+ name: phase.name,
150
+ description: phase.description,
151
+ released: false,
152
+ releaseDate: phase.endDate,
153
+ projectKey: this.projectKey,
154
+ }));
155
+ }
156
+ // Preview sprints
157
+ if (options.createSprints) {
158
+ const phases = this.extractReleasePhases(documents);
159
+ result.sprints = phases.map((phase, i) => ({
160
+ id: i + 1,
161
+ name: phase.name,
162
+ state: 'future',
163
+ startDate: phase.startDate,
164
+ endDate: phase.endDate,
165
+ boardId: options.boardId || 0,
166
+ goal: phase.description,
167
+ }));
168
+ }
169
+ // Preview epic
170
+ if (options.createEpic && options.epicName) {
171
+ result.epics.push(this.createPreviewIssue('PREVIEW-0', options.epicName, 'Epic'));
172
+ }
173
+ // Preview stories and tasks
174
+ const taskBreakdowns = this.extractTaskBreakdowns(documents);
175
+ let issueNum = 1;
176
+ for (const breakdown of taskBreakdowns) {
177
+ for (const story of breakdown.stories) {
178
+ result.stories.push(this.createPreviewIssue(`PREVIEW-${issueNum}`, story.summary, 'Story'));
179
+ issueNum++;
180
+ if (story.tasks) {
181
+ for (const task of story.tasks) {
182
+ result.tasks.push(this.createPreviewIssue(`PREVIEW-${issueNum}`, task.summary, 'Sub-task'));
183
+ issueNum++;
184
+ }
185
+ }
186
+ }
187
+ }
188
+ return result;
189
+ }
190
+ /**
191
+ * Create a preview issue object
192
+ */
193
+ createPreviewIssue(key, summary, type) {
194
+ return {
195
+ id: key,
196
+ key,
197
+ self: '#',
198
+ fields: {
199
+ summary,
200
+ issuetype: { id: '0', name: type, subtask: type === 'Sub-task', hierarchyLevel: 0 },
201
+ status: { id: '0', name: 'To Do', statusCategory: { id: 2, key: 'new', name: 'To Do' } },
202
+ project: { id: '0', key: this.projectKey, name: this.projectKey },
203
+ },
204
+ };
205
+ }
206
+ /**
207
+ * Extract project description from documents
208
+ */
209
+ extractDescription(documents) {
210
+ const prd = documents.find(d => d.name.toLowerCase().includes('prd') ||
211
+ d.name.toLowerCase().includes('product'));
212
+ if (prd) {
213
+ const lines = prd.content.split('\n');
214
+ const summaryStart = lines.findIndex(l => l.toLowerCase().includes('summary') ||
215
+ l.toLowerCase().includes('overview'));
216
+ if (summaryStart !== -1) {
217
+ const summaryLines = [];
218
+ for (let i = summaryStart + 1; i < lines.length && i < summaryStart + 10; i++) {
219
+ if (lines[i].startsWith('#'))
220
+ break;
221
+ if (lines[i].trim())
222
+ summaryLines.push(lines[i]);
223
+ }
224
+ return summaryLines.join('\n').slice(0, 1000);
225
+ }
226
+ }
227
+ return documents[0]?.content.slice(0, 1000) || '';
228
+ }
229
+ /**
230
+ * Extract release phases from documents
231
+ */
232
+ extractReleasePhases(documents) {
233
+ const phases = [];
234
+ for (const doc of documents) {
235
+ const phaseRegex = /##?\s*(phase|sprint|cycle|milestone|release)\s*(\d+|[ivx]+)?[:\s-]*([^\n]*)/gi;
236
+ let match;
237
+ while ((match = phaseRegex.exec(doc.content)) !== null) {
238
+ const phaseName = match[3]?.trim() || `${match[1]} ${match[2] || ''}`.trim();
239
+ const dateRegex = /(\d{4}-\d{2}-\d{2})/g;
240
+ const contentAfterHeader = doc.content.slice(match.index, match.index + 500);
241
+ const dates = contentAfterHeader.match(dateRegex);
242
+ // Extract description (first non-header line after the phase header)
243
+ const descLines = contentAfterHeader.split('\n').slice(1, 4);
244
+ const description = descLines.find(l => l.trim() && !l.startsWith('#'))?.trim();
245
+ phases.push({
246
+ name: phaseName,
247
+ startDate: dates?.[0],
248
+ endDate: dates?.[1],
249
+ description,
250
+ });
251
+ }
252
+ }
253
+ // If no phases found, create default phases
254
+ if (phases.length === 0) {
255
+ const now = new Date();
256
+ phases.push({
257
+ name: 'Sprint 1 - Foundation',
258
+ startDate: now.toISOString().split('T')[0],
259
+ endDate: new Date(now.getTime() + 14 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
260
+ }, {
261
+ name: 'Sprint 2 - Core Features',
262
+ startDate: new Date(now.getTime() + 14 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
263
+ endDate: new Date(now.getTime() + 28 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
264
+ });
265
+ }
266
+ return phases;
267
+ }
268
+ /**
269
+ * Extract task breakdowns from documents
270
+ */
271
+ extractTaskBreakdowns(documents) {
272
+ const breakdowns = [];
273
+ for (const doc of documents) {
274
+ const stories = this.parseStoriesFromMarkdown(doc.content);
275
+ if (stories.length > 0) {
276
+ breakdowns.push({ stories });
277
+ }
278
+ }
279
+ return breakdowns;
280
+ }
281
+ /**
282
+ * Parse stories from markdown content
283
+ */
284
+ parseStoriesFromMarkdown(content) {
285
+ const stories = [];
286
+ const lines = content.split('\n');
287
+ let currentStory = null;
288
+ for (const line of lines) {
289
+ // Match task items: - [ ] Task or * [ ] Task or - Task
290
+ const taskMatch = line.match(/^[\s]*[-*]\s*(?:\[[ x]\])?\s*(.+)/);
291
+ if (taskMatch) {
292
+ const taskText = taskMatch[1].trim();
293
+ const indent = line.match(/^(\s*)/)?.[1].length || 0;
294
+ // Extract priority
295
+ const priority = this.extractPriority(taskText);
296
+ const storyPoints = this.extractStoryPoints(taskText);
297
+ const labels = this.extractLabels(taskText);
298
+ const summary = this.cleanTaskTitle(taskText);
299
+ if (indent < 4 && summary.length > 3) {
300
+ // Top-level item = Story
301
+ currentStory = {
302
+ summary,
303
+ priority,
304
+ storyPoints,
305
+ labels,
306
+ tasks: [],
307
+ };
308
+ stories.push(currentStory);
309
+ }
310
+ else if (currentStory && indent >= 4 && summary.length > 3) {
311
+ // Indented item = Sub-task
312
+ currentStory.tasks = currentStory.tasks || [];
313
+ currentStory.tasks.push({
314
+ summary,
315
+ priority,
316
+ });
317
+ }
318
+ }
319
+ }
320
+ // Also look for numbered lists as stories
321
+ const numberedRegex = /^\d+\.\s+(.+)/gm;
322
+ let match;
323
+ while ((match = numberedRegex.exec(content)) !== null) {
324
+ const taskText = match[1].trim();
325
+ if (taskText.length > 3 && !stories.some(s => s.summary === taskText)) {
326
+ stories.push({
327
+ summary: this.cleanTaskTitle(taskText),
328
+ priority: this.extractPriority(taskText),
329
+ storyPoints: this.extractStoryPoints(taskText),
330
+ labels: this.extractLabels(taskText),
331
+ });
332
+ }
333
+ }
334
+ return stories;
335
+ }
336
+ /**
337
+ * Extract priority from task text
338
+ */
339
+ extractPriority(text) {
340
+ const lower = text.toLowerCase();
341
+ if (lower.includes('[p0]') || lower.includes('[urgent]') || lower.includes('[highest]'))
342
+ return 'Highest';
343
+ if (lower.includes('[p1]') || lower.includes('[high]'))
344
+ return 'High';
345
+ if (lower.includes('[p2]') || lower.includes('[medium]'))
346
+ return 'Medium';
347
+ if (lower.includes('[p3]') || lower.includes('[low]'))
348
+ return 'Low';
349
+ if (lower.includes('[lowest]'))
350
+ return 'Lowest';
351
+ return undefined;
352
+ }
353
+ /**
354
+ * Extract story points from task text
355
+ */
356
+ extractStoryPoints(text) {
357
+ // Match patterns like [3pt], [5sp], [8 points]
358
+ const match = text.match(/\[(\d+)\s*(?:pt|sp|points?)\]/i);
359
+ return match ? parseInt(match[1], 10) : undefined;
360
+ }
361
+ /**
362
+ * Extract labels from task text
363
+ */
364
+ extractLabels(text) {
365
+ const labels = [];
366
+ const labelRegex = /\[(feature|bug|tech-debt|research|design|devops|security|testing|documentation)\]/gi;
367
+ let match;
368
+ while ((match = labelRegex.exec(text)) !== null) {
369
+ labels.push(match[1].toLowerCase());
370
+ }
371
+ return labels;
372
+ }
373
+ /**
374
+ * Clean task title by removing markers
375
+ */
376
+ cleanTaskTitle(text) {
377
+ return text
378
+ .replace(/\[p[0-3]\]/gi, '')
379
+ .replace(/\[(urgent|highest|high|medium|low|lowest)\]/gi, '')
380
+ .replace(/\[\d+\s*(?:pt|sp|points?)\]/gi, '')
381
+ .replace(/\[(feature|bug|tech-debt|research|design|devops|security|testing|documentation)\]/gi, '')
382
+ .replace(/[🔴🟠🟡🟢]/g, '')
383
+ .trim();
384
+ }
385
+ /**
386
+ * Create issues from a task breakdown
387
+ */
388
+ async createIssuesFromBreakdown(breakdown, options) {
389
+ const stories = [];
390
+ const tasks = [];
391
+ for (const story of breakdown.stories) {
392
+ try {
393
+ const labels = options.addLabels
394
+ ? [...STANDARD_LABELS.slice(0, 1), ...(story.labels || [])]
395
+ : story.labels;
396
+ const storyIssue = await this.client.createIssue({
397
+ summary: story.summary,
398
+ description: story.description,
399
+ issueType: 'Story',
400
+ projectKey: this.projectKey,
401
+ priority: story.priority,
402
+ labels,
403
+ });
404
+ // Link to epic
405
+ if (options.epicKey) {
406
+ await this.client.linkToEpic(storyIssue.key, options.epicKey);
407
+ }
408
+ // Add to sprint
409
+ if (options.sprintId) {
410
+ await this.client.addToSprint(options.sprintId, [storyIssue.key]);
411
+ }
412
+ stories.push(storyIssue);
413
+ // Create subtasks
414
+ if (story.tasks) {
415
+ for (const task of story.tasks) {
416
+ try {
417
+ const taskIssue = await this.client.createIssue({
418
+ summary: task.summary,
419
+ description: task.description,
420
+ issueType: 'Sub-task',
421
+ projectKey: this.projectKey,
422
+ parentKey: storyIssue.key,
423
+ priority: task.priority,
424
+ });
425
+ tasks.push(taskIssue);
426
+ }
427
+ catch (error) {
428
+ // Continue on subtask creation failure
429
+ }
430
+ }
431
+ }
432
+ }
433
+ catch (error) {
434
+ // Continue on story creation failure
435
+ }
436
+ }
437
+ return { stories, tasks };
438
+ }
439
+ }
440
+ /**
441
+ * Export documents to Jira (convenience function)
442
+ */
443
+ export async function exportToJira(config, documents, options = {}) {
444
+ const exporter = new JiraExporter(config);
445
+ return exporter.export(documents, options);
446
+ }
447
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../src/integrations/jira/exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Jira Integration
3
+ * Export Blueprint documents to Jira (epics, stories, tasks, sprints)
4
+ */
5
+ export { JiraClient } from './client.js';
6
+ export { JiraExporter, exportToJira } from './exporter.js';
7
+ export type { JiraConfig, JiraProject, JiraIssueType, JiraPriority, JiraStatus, JiraUser, JiraSprint, JiraBoard, JiraComponent, JiraVersion, JiraIssue, CreateIssueInput, CreateSprintInput, CreateVersionInput, JiraTaskBreakdown, JiraStoryItem, JiraTaskItem, JiraExportResult, JiraExportOptions, } from './types.js';
8
+ export { PRIORITY_MAP, STANDARD_LABELS, CATEGORY_COMPONENTS, } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/jira/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Jira Integration
3
+ * Export Blueprint documents to Jira (epics, stories, tasks, sprints)
4
+ */
5
+ export { JiraClient } from './client.js';
6
+ export { JiraExporter, exportToJira } from './exporter.js';
7
+ export { PRIORITY_MAP, STANDARD_LABELS, CATEGORY_COMPONENTS, } from './types.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/jira/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAsB3D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}