specweave 0.29.0 → 0.29.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 (87) hide show
  1. package/package.json +3 -1
  2. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +12 -0
  3. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +18 -0
  4. package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts +0 -26
  5. package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts.map +0 -1
  6. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js +0 -249
  7. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js.map +0 -1
  8. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +0 -28
  9. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +0 -1
  10. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -156
  11. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +0 -1
  12. package/dist/src/core/sync/bidirectional-engine.d.ts +0 -119
  13. package/dist/src/core/sync/bidirectional-engine.d.ts.map +0 -1
  14. package/dist/src/core/sync/bidirectional-engine.js +0 -359
  15. package/dist/src/core/sync/bidirectional-engine.js.map +0 -1
  16. package/dist/src/core/sync/conflict-resolver.d.ts +0 -66
  17. package/dist/src/core/sync/conflict-resolver.d.ts.map +0 -1
  18. package/dist/src/core/sync/conflict-resolver.js +0 -108
  19. package/dist/src/core/sync/conflict-resolver.js.map +0 -1
  20. package/dist/src/core/sync/enhanced-content-builder.d.ts +0 -55
  21. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +0 -1
  22. package/dist/src/core/sync/enhanced-content-builder.js +0 -203
  23. package/dist/src/core/sync/enhanced-content-builder.js.map +0 -1
  24. package/dist/src/core/sync/folder-mapper.d.ts +0 -71
  25. package/dist/src/core/sync/folder-mapper.d.ts.map +0 -1
  26. package/dist/src/core/sync/folder-mapper.js +0 -203
  27. package/dist/src/core/sync/folder-mapper.js.map +0 -1
  28. package/dist/src/core/sync/label-detector.d.ts +0 -66
  29. package/dist/src/core/sync/label-detector.d.ts.map +0 -1
  30. package/dist/src/core/sync/label-detector.js +0 -224
  31. package/dist/src/core/sync/label-detector.js.map +0 -1
  32. package/dist/src/core/sync/performance-optimizer.d.ts +0 -153
  33. package/dist/src/core/sync/performance-optimizer.d.ts.map +0 -1
  34. package/dist/src/core/sync/performance-optimizer.js +0 -220
  35. package/dist/src/core/sync/performance-optimizer.js.map +0 -1
  36. package/dist/src/core/sync/profile-selector.d.ts +0 -52
  37. package/dist/src/core/sync/profile-selector.d.ts.map +0 -1
  38. package/dist/src/core/sync/profile-selector.js +0 -179
  39. package/dist/src/core/sync/profile-selector.js.map +0 -1
  40. package/dist/src/core/sync/profile-validator.d.ts +0 -52
  41. package/dist/src/core/sync/profile-validator.d.ts.map +0 -1
  42. package/dist/src/core/sync/profile-validator.js +0 -170
  43. package/dist/src/core/sync/profile-validator.js.map +0 -1
  44. package/dist/src/core/sync/rate-limiter.d.ts +0 -116
  45. package/dist/src/core/sync/rate-limiter.d.ts.map +0 -1
  46. package/dist/src/core/sync/rate-limiter.js +0 -308
  47. package/dist/src/core/sync/rate-limiter.js.map +0 -1
  48. package/dist/src/core/sync/retry-handler.d.ts +0 -98
  49. package/dist/src/core/sync/retry-handler.d.ts.map +0 -1
  50. package/dist/src/core/sync/retry-handler.js +0 -196
  51. package/dist/src/core/sync/retry-handler.js.map +0 -1
  52. package/dist/src/core/sync/retry-logic.d.ts +0 -64
  53. package/dist/src/core/sync/retry-logic.d.ts.map +0 -1
  54. package/dist/src/core/sync/retry-logic.js +0 -165
  55. package/dist/src/core/sync/retry-logic.js.map +0 -1
  56. package/dist/src/core/sync/status-cache.d.ts +0 -91
  57. package/dist/src/core/sync/status-cache.d.ts.map +0 -1
  58. package/dist/src/core/sync/status-cache.js +0 -140
  59. package/dist/src/core/sync/status-cache.js.map +0 -1
  60. package/dist/src/core/sync/status-mapper.d.ts +0 -69
  61. package/dist/src/core/sync/status-mapper.d.ts.map +0 -1
  62. package/dist/src/core/sync/status-mapper.js +0 -90
  63. package/dist/src/core/sync/status-mapper.js.map +0 -1
  64. package/dist/src/core/sync/status-sync-engine.d.ts +0 -162
  65. package/dist/src/core/sync/status-sync-engine.d.ts.map +0 -1
  66. package/dist/src/core/sync/status-sync-engine.js +0 -347
  67. package/dist/src/core/sync/status-sync-engine.js.map +0 -1
  68. package/dist/src/core/sync/sync-event-logger.d.ts +0 -113
  69. package/dist/src/core/sync/sync-event-logger.d.ts.map +0 -1
  70. package/dist/src/core/sync/sync-event-logger.js +0 -141
  71. package/dist/src/core/sync/sync-event-logger.js.map +0 -1
  72. package/dist/src/core/sync/time-range-selector.d.ts +0 -48
  73. package/dist/src/core/sync/time-range-selector.d.ts.map +0 -1
  74. package/dist/src/core/sync/time-range-selector.js +0 -224
  75. package/dist/src/core/sync/time-range-selector.js.map +0 -1
  76. package/dist/src/core/sync/types.d.ts +0 -52
  77. package/dist/src/core/sync/types.d.ts.map +0 -1
  78. package/dist/src/core/sync/types.js +0 -5
  79. package/dist/src/core/sync/types.js.map +0 -1
  80. package/dist/src/core/sync/workflow-detector.d.ts +0 -95
  81. package/dist/src/core/sync/workflow-detector.d.ts.map +0 -1
  82. package/dist/src/core/sync/workflow-detector.js +0 -175
  83. package/dist/src/core/sync/workflow-detector.js.map +0 -1
  84. package/plugins/specweave-github/lib/enhanced-github-sync.js +0 -220
  85. package/plugins/specweave-github/lib/enhanced-github-sync.ts +0 -322
  86. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -134
  87. package/plugins/specweave-jira/lib/enhanced-jira-sync.ts +0 -196
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "0.29.0",
3
+ "version": "0.29.1",
4
4
  "description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -95,6 +95,7 @@
95
95
  "js-yaml": "^4.1.0",
96
96
  "open": "^11.0.0",
97
97
  "ora": "^9.0.0",
98
+ "uuid": "^13.0.0",
98
99
  "yaml": "^2.3.4"
99
100
  },
100
101
  "devDependencies": {
@@ -102,6 +103,7 @@
102
103
  "@playwright/test": "^1.48.0",
103
104
  "@types/js-yaml": "^4.0.9",
104
105
  "@types/node": "^24.10.0",
106
+ "@types/uuid": "^10.0.0",
105
107
  "@vitest/coverage-v8": "^2.1.9",
106
108
  "@vitest/ui": "^2.1.9",
107
109
  "ajv": "^8.17.1",
@@ -58,3 +58,15 @@
58
58
  [Mon Dec 1 20:40:32 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
59
59
  [Mon Dec 1 20:40:33 EST 2025] [GitHub] 🔗 GitHub sync hook fired
60
60
  [Mon Dec 1 20:40:33 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
61
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] 🔗 GitHub sync hook fired
62
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
63
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] 🔗 GitHub sync hook fired
64
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
65
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] 🔗 GitHub sync hook fired
66
+ [Mon Dec 1 22:13:45 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
67
+ [Mon Dec 1 22:16:15 EST 2025] [GitHub] 🔗 GitHub sync hook fired
68
+ [Mon Dec 1 22:16:15 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
69
+ [Mon Dec 1 22:16:15 EST 2025] [GitHub] 🔗 GitHub sync hook fired
70
+ [Mon Dec 1 22:16:15 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
71
+ [Mon Dec 1 22:16:16 EST 2025] [GitHub] 🔗 GitHub sync hook fired
72
+ [Mon Dec 1 22:16:16 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
@@ -88,3 +88,21 @@
88
88
  [2025-12-01 20:40:33] 🎯 Post-Increment-Completion Hook Triggered
89
89
  [2025-12-01 20:40:33] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
90
90
  [2025-12-01 20:40:33] Run: npm run build
91
+ [2025-12-01 22:13:45] 🎯 Post-Increment-Completion Hook Triggered
92
+ [2025-12-01 22:13:45] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
93
+ [2025-12-01 22:13:45] Run: npm run build
94
+ [2025-12-01 22:13:45] 🎯 Post-Increment-Completion Hook Triggered
95
+ [2025-12-01 22:13:45] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
96
+ [2025-12-01 22:13:45] Run: npm run build
97
+ [2025-12-01 22:13:45] 🎯 Post-Increment-Completion Hook Triggered
98
+ [2025-12-01 22:13:45] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
99
+ [2025-12-01 22:13:45] Run: npm run build
100
+ [2025-12-01 22:16:15] 🎯 Post-Increment-Completion Hook Triggered
101
+ [2025-12-01 22:16:15] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
102
+ [2025-12-01 22:16:15] Run: npm run build
103
+ [2025-12-01 22:16:16] 🎯 Post-Increment-Completion Hook Triggered
104
+ [2025-12-01 22:16:16] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
105
+ [2025-12-01 22:16:16] Run: npm run build
106
+ [2025-12-01 22:16:16] 🎯 Post-Increment-Completion Hook Triggered
107
+ [2025-12-01 22:16:16] ⚠️ DORA calculator not found at /Users/antonabyzov/Documents/Projects/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
108
+ [2025-12-01 22:16:16] Run: npm run build
@@ -1,26 +0,0 @@
1
- /**
2
- * Enhanced GitHub Spec Content Sync
3
- *
4
- * Uses EnhancedContentBuilder and SpecIncrementMapper for rich external descriptions.
5
- * NEW (v0.21.0): Supports task checkboxes and automatic labeling.
6
- */
7
- export interface EnhancedGitHubSyncOptions {
8
- specPath: string;
9
- owner?: string;
10
- repo?: string;
11
- dryRun?: boolean;
12
- verbose?: boolean;
13
- }
14
- export interface EnhancedSyncResult {
15
- success: boolean;
16
- action: 'created' | 'updated' | 'no-change' | 'error';
17
- issueNumber?: number;
18
- issueUrl?: string;
19
- error?: string;
20
- tasksLinked?: number;
21
- }
22
- /**
23
- * Enhanced sync with rich content including task mappings
24
- */
25
- export declare function syncSpecWithEnhancedContent(options: EnhancedGitHubSyncOptions): Promise<EnhancedSyncResult>;
26
- //# sourceMappingURL=enhanced-github-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-github-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/enhanced-github-sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAsL7B"}
@@ -1,249 +0,0 @@
1
- /**
2
- * Enhanced GitHub Spec Content Sync
3
- *
4
- * Uses EnhancedContentBuilder and SpecIncrementMapper for rich external descriptions.
5
- * NEW (v0.21.0): Supports task checkboxes and automatic labeling.
6
- */
7
- import { GitHubClientV2 } from './github-client-v2.js';
8
- import { EnhancedContentBuilder } from '../../../src/core/sync/enhanced-content-builder.js';
9
- import { SpecIncrementMapper } from '../../../src/core/sync/spec-increment-mapper.js';
10
- import { parseSpecContent } from '../../../src/core/spec-content-sync.js';
11
- import { LabelDetector } from '../../../src/core/sync/label-detector.js';
12
- import path from 'path';
13
- import fs from 'fs/promises';
14
- /**
15
- * Enhanced sync with rich content including task mappings
16
- */
17
- export async function syncSpecWithEnhancedContent(options) {
18
- const { specPath, owner, repo, dryRun = false, verbose = false } = options;
19
- try {
20
- // 1. Parse spec content
21
- const baseSpec = await parseSpecContent(specPath);
22
- if (!baseSpec) {
23
- return {
24
- success: false,
25
- action: 'error',
26
- error: 'Failed to parse spec content',
27
- };
28
- }
29
- if (verbose) {
30
- console.log(`📄 Parsed spec: ${baseSpec.identifier.compact}`);
31
- }
32
- // 2. Build enhanced spec with task mappings
33
- const specId = baseSpec.identifier.full || baseSpec.identifier.compact;
34
- const rootDir = await findSpecWeaveRoot(specPath);
35
- const mapper = new SpecIncrementMapper(rootDir);
36
- const mapping = await mapper.mapSpecToIncrements(specId);
37
- if (verbose) {
38
- console.log(`🔗 Found ${mapping.increments.length} related increments`);
39
- console.log(`📋 Mapped ${Object.keys(mapping.userStoryMappings).length} user stories to tasks`);
40
- }
41
- // 3. Build task mapping for EnhancedSpecContent
42
- const taskMapping = buildTaskMapping(mapping.increments, owner, repo);
43
- // 4. Build architecture docs references
44
- const architectureDocs = await findArchitectureDocs(rootDir, specId);
45
- // 5. Build source links
46
- const sourceLinks = buildSourceLinks(mapping.increments[0]?.id, owner, repo);
47
- // 6. Create enhanced spec content
48
- const enhancedSpec = {
49
- ...baseSpec,
50
- summary: baseSpec.description,
51
- taskMapping,
52
- architectureDocs,
53
- sourceLinks
54
- };
55
- // 7. Build external description with task checkboxes
56
- const builder = new EnhancedContentBuilder();
57
- // NEW: Override buildTasksSection call to include checkboxes
58
- const originalBuildExternal = builder.buildExternalDescription.bind(builder);
59
- const description = (() => {
60
- const sections = [];
61
- // Summary
62
- sections.push(builder.buildSummarySection(enhancedSpec));
63
- // User stories
64
- if (enhancedSpec.userStories && enhancedSpec.userStories.length > 0) {
65
- sections.push(builder.buildUserStoriesSection(enhancedSpec.userStories));
66
- }
67
- // Tasks with checkboxes (NEW!)
68
- if (enhancedSpec.taskMapping) {
69
- sections.push(builder.buildTasksSection(enhancedSpec.taskMapping, {
70
- showCheckboxes: true,
71
- showProgressBar: true,
72
- showCompletionStatus: true,
73
- provider: 'github'
74
- }));
75
- }
76
- // Architecture
77
- if (enhancedSpec.architectureDocs && enhancedSpec.architectureDocs.length > 0) {
78
- sections.push(builder.buildArchitectureSection(enhancedSpec.architectureDocs));
79
- }
80
- // Source links
81
- if (enhancedSpec.sourceLinks) {
82
- sections.push(builder.buildSourceLinksSection(enhancedSpec.sourceLinks));
83
- }
84
- return sections.filter(s => s.length > 0).join('\n\n---\n\n');
85
- })();
86
- if (verbose) {
87
- console.log(`📝 Generated description: ${description.length} characters`);
88
- }
89
- if (dryRun) {
90
- console.log('🔍 DRY RUN - Would create/update issue with:');
91
- console.log(` Title: ${baseSpec.title}`);
92
- console.log(` Description length: ${description.length}`);
93
- console.log(` Tasks linked: ${taskMapping?.tasks.length || 0}`);
94
- return {
95
- success: true,
96
- action: 'no-change',
97
- tasksLinked: taskMapping?.tasks.length || 0
98
- };
99
- }
100
- // 8. Create or update GitHub issue
101
- if (!owner || !repo) {
102
- return {
103
- success: false,
104
- action: 'error',
105
- error: 'GitHub owner/repo not specified',
106
- };
107
- }
108
- const client = GitHubClientV2.fromRepo(owner, repo);
109
- // NEW: Detect increment type and apply labels
110
- const labelDetector = new LabelDetector(undefined, false); // Use GitHub format
111
- const detection = labelDetector.detectType(await fs.readFile(specPath, 'utf-8'), mapping.increments[0]?.id);
112
- const githubLabels = labelDetector.getGitHubLabels(detection.type);
113
- const allLabels = ['spec', ...githubLabels]; // Include both 'spec' and type labels
114
- if (verbose) {
115
- console.log(`🏷️ Detected type: ${detection.type} (${detection.confidence}% confidence)`);
116
- console.log(` Labels: ${allLabels.join(', ')}`);
117
- }
118
- // Check if issue already exists
119
- const existingIssue = await findExistingIssue(client, baseSpec.identifier.compact);
120
- let result;
121
- if (existingIssue) {
122
- // Update existing issue (body + labels)
123
- await client.updateIssueBody(existingIssue.number, description);
124
- // Update labels if autoApplyLabels is enabled
125
- // TODO: Read from config, for now always apply
126
- await client.addLabels(existingIssue.number, allLabels);
127
- result = {
128
- success: true,
129
- action: 'updated',
130
- issueNumber: existingIssue.number,
131
- issueUrl: existingIssue.html_url,
132
- tasksLinked: taskMapping?.tasks.length || 0
133
- };
134
- }
135
- else {
136
- // Create new issue with labels
137
- const issue = await client.createEpicIssue(`[${baseSpec.project === '_features' ? baseSpec.identifier.display : baseSpec.identifier.compact}] ${baseSpec.title}`, description, undefined, allLabels // Apply labels at creation
138
- );
139
- result = {
140
- success: true,
141
- action: 'created',
142
- issueNumber: issue.number,
143
- issueUrl: issue.html_url,
144
- tasksLinked: taskMapping?.tasks.length || 0
145
- };
146
- // Update spec with GitHub link
147
- await mapper.updateSpecWithIncrementLinks(specId, mapping.increments[0]?.id);
148
- }
149
- if (verbose) {
150
- console.log(`✅ ${result.action === 'created' ? 'Created' : 'Updated'} issue #${result.issueNumber}`);
151
- console.log(` URL: ${result.issueUrl}`);
152
- console.log(` Tasks linked: ${result.tasksLinked}`);
153
- }
154
- return result;
155
- }
156
- catch (error) {
157
- return {
158
- success: false,
159
- action: 'error',
160
- error: error.message
161
- };
162
- }
163
- }
164
- // Helper functions
165
- async function findSpecWeaveRoot(specPath) {
166
- let currentDir = path.dirname(specPath);
167
- while (true) {
168
- const specweaveDir = path.join(currentDir, '.specweave');
169
- try {
170
- await fs.access(specweaveDir);
171
- return currentDir;
172
- }
173
- catch {
174
- const parentDir = path.dirname(currentDir);
175
- if (parentDir === currentDir) {
176
- throw new Error('.specweave directory not found');
177
- }
178
- currentDir = parentDir;
179
- }
180
- }
181
- }
182
- function buildTaskMapping(increments, owner, repo) {
183
- if (increments.length === 0)
184
- return undefined;
185
- const firstIncrement = increments[0];
186
- const tasks = firstIncrement.tasks.map((task) => ({
187
- id: task.id,
188
- title: task.title,
189
- userStories: task.userStories,
190
- githubIssue: task.githubIssue
191
- }));
192
- return {
193
- incrementId: firstIncrement.id,
194
- tasks,
195
- tasksUrl: `https://github.com/${owner}/${repo}/blob/develop/.specweave/increments/${firstIncrement.id}/tasks.md`
196
- };
197
- }
198
- async function findArchitectureDocs(rootDir, specId) {
199
- const docs = [];
200
- const archDir = path.join(rootDir, '.specweave/docs/internal/architecture');
201
- try {
202
- // Check for ADRs
203
- const adrDir = path.join(archDir, 'adr');
204
- try {
205
- const adrs = await fs.readdir(adrDir);
206
- const relatedAdrs = adrs.filter(file => file.includes(specId.replace('spec-', '')));
207
- for (const adr of relatedAdrs) {
208
- docs.push({
209
- type: 'adr',
210
- path: path.join(adrDir, adr),
211
- title: adr.replace('.md', '').replace(/-/g, ' ')
212
- });
213
- }
214
- }
215
- catch { }
216
- // Check for HLD
217
- const hlds = await fs.readdir(archDir);
218
- const relatedHlds = hlds.filter(file => file.includes('hld') && file.includes(specId.replace('spec-', '')));
219
- for (const hld of relatedHlds) {
220
- docs.push({
221
- type: 'hld',
222
- path: path.join(archDir, hld),
223
- title: hld.replace('.md', '').replace(/-/g, ' ')
224
- });
225
- }
226
- }
227
- catch { }
228
- return docs;
229
- }
230
- function buildSourceLinks(incrementId, owner, repo) {
231
- if (!incrementId)
232
- return undefined;
233
- const baseUrl = `https://github.com/${owner}/${repo}/blob/develop/.specweave`;
234
- return {
235
- spec: `${baseUrl}/docs/internal/specs/default/spec-${incrementId.replace(/^\d+-/, '')}.md`,
236
- plan: `${baseUrl}/increments/${incrementId}/plan.md`,
237
- tasks: `${baseUrl}/increments/${incrementId}/tasks.md`
238
- };
239
- }
240
- async function findExistingIssue(client, specId) {
241
- try {
242
- const issues = await client.listIssuesInTimeRange('ALL');
243
- return issues.find((issue) => issue.title.includes(`[${specId}]`) && issue.labels?.some((l) => l.name === 'spec')) || null;
244
- }
245
- catch {
246
- return null;
247
- }
248
- }
249
- //# sourceMappingURL=enhanced-github-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-github-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/enhanced-github-sync.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Enhanced JIRA Spec Content Sync
3
- *
4
- * Uses EnhancedContentBuilder and SpecIncrementMapper for rich epic descriptions.
5
- *
6
- * NOTE: This version focuses on enhanced content building.
7
- * Actual JIRA API integration requires jira-spec-sync.ts
8
- */
9
- export interface EnhancedJiraSyncOptions {
10
- specPath: string;
11
- domain?: string;
12
- project?: string;
13
- dryRun?: boolean;
14
- verbose?: boolean;
15
- }
16
- export interface EnhancedJiraSyncResult {
17
- success: boolean;
18
- action: 'created' | 'updated' | 'no-change' | 'error';
19
- epicKey?: string;
20
- epicUrl?: string;
21
- error?: string;
22
- tasksLinked?: number;
23
- }
24
- /**
25
- * Enhanced sync with rich content including task mappings
26
- */
27
- export declare function syncSpecToJiraWithEnhancedContent(options: EnhancedJiraSyncOptions): Promise<EnhancedJiraSyncResult>;
28
- //# sourceMappingURL=enhanced-jira-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-jira-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-jira/lib/enhanced-jira-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA+FjC"}
@@ -1,156 +0,0 @@
1
- /**
2
- * Enhanced JIRA Spec Content Sync
3
- *
4
- * Uses EnhancedContentBuilder and SpecIncrementMapper for rich epic descriptions.
5
- *
6
- * NOTE: This version focuses on enhanced content building.
7
- * Actual JIRA API integration requires jira-spec-sync.ts
8
- */
9
- import { EnhancedContentBuilder } from '../../../src/core/sync/enhanced-content-builder.js';
10
- import { SpecIncrementMapper } from '../../../src/core/sync/spec-increment-mapper.js';
11
- import { parseSpecContent } from '../../../src/core/spec-content-sync.js';
12
- import * as path from 'path';
13
- import * as fs from 'fs/promises';
14
- /**
15
- * Enhanced sync with rich content including task mappings
16
- */
17
- export async function syncSpecToJiraWithEnhancedContent(options) {
18
- const { specPath, domain, project, dryRun = false, verbose = false } = options;
19
- try {
20
- // 1. Parse spec content
21
- const baseSpec = await parseSpecContent(specPath);
22
- if (!baseSpec) {
23
- return {
24
- success: false,
25
- action: 'error',
26
- error: 'Failed to parse spec content',
27
- };
28
- }
29
- if (verbose) {
30
- console.log(`📄 Parsed spec: ${baseSpec.identifier.compact}`);
31
- }
32
- // 2. Build enhanced spec with task mappings
33
- const specId = baseSpec.identifier.full || baseSpec.identifier.compact;
34
- const rootDir = await findSpecWeaveRoot(specPath);
35
- const mapper = new SpecIncrementMapper(rootDir);
36
- const mapping = await mapper.mapSpecToIncrements(specId);
37
- if (verbose) {
38
- console.log(`🔗 Found ${mapping.increments.length} related increments`);
39
- }
40
- // 3. Build enhanced spec content
41
- const taskMapping = buildTaskMapping(mapping.increments);
42
- const architectureDocs = await findArchitectureDocs(rootDir, specId);
43
- const enhancedSpec = {
44
- ...baseSpec,
45
- summary: baseSpec.description,
46
- taskMapping,
47
- architectureDocs
48
- };
49
- // 4. Build external description
50
- const builder = new EnhancedContentBuilder();
51
- const description = builder.buildExternalDescription(enhancedSpec);
52
- if (verbose) {
53
- console.log(`📝 Generated description: ${description.length} characters`);
54
- }
55
- if (dryRun) {
56
- console.log('🔍 DRY RUN - Would create/update epic with:');
57
- console.log(` Summary: ${baseSpec.title}`);
58
- console.log(` Description length: ${description.length}`);
59
- return {
60
- success: true,
61
- action: 'no-change',
62
- tasksLinked: taskMapping?.tasks.length || 0
63
- };
64
- }
65
- // 5. Validate domain/project (if not dry run)
66
- if (!dryRun && (!domain || !project)) {
67
- return {
68
- success: false,
69
- action: 'error',
70
- error: 'JIRA domain/project not specified (required for actual sync)',
71
- };
72
- }
73
- // For now, we focus on content building
74
- // Actual JIRA API integration is in jira-spec-sync.ts
75
- const result = {
76
- success: true,
77
- action: dryRun ? 'no-change' : 'created', // Assume create if not dry run
78
- tasksLinked: taskMapping?.tasks.length || 0
79
- };
80
- if (domain && project && !dryRun) {
81
- // In a real implementation, this would use JIRA API
82
- // For now, just simulate success
83
- result.epicKey = `SPEC-001`; // Placeholder
84
- result.epicUrl = `https://${domain}/browse/SPEC-001`;
85
- if (verbose) {
86
- console.log(`⚠️ JIRA API integration not implemented in this file`);
87
- console.log(` Use jira-spec-sync.ts for actual JIRA synchronization`);
88
- }
89
- }
90
- return result;
91
- }
92
- catch (error) {
93
- return {
94
- success: false,
95
- action: 'error',
96
- error: error.message
97
- };
98
- }
99
- }
100
- // Helper functions (similar to GitHub sync)
101
- async function findSpecWeaveRoot(specPath) {
102
- let currentDir = path.dirname(specPath);
103
- while (true) {
104
- const specweaveDir = path.join(currentDir, '.specweave');
105
- try {
106
- await fs.access(specweaveDir);
107
- return currentDir;
108
- }
109
- catch {
110
- const parentDir = path.dirname(currentDir);
111
- if (parentDir === currentDir) {
112
- throw new Error('.specweave directory not found');
113
- }
114
- currentDir = parentDir;
115
- }
116
- }
117
- }
118
- function buildTaskMapping(increments) {
119
- if (increments.length === 0)
120
- return undefined;
121
- const firstIncrement = increments[0];
122
- const tasks = firstIncrement.tasks.map((task) => ({
123
- id: task.id,
124
- title: task.title,
125
- userStories: task.userStories
126
- }));
127
- return {
128
- incrementId: firstIncrement.id,
129
- tasks,
130
- tasksUrl: `tasks.md` // JIRA doesn't support external links in same way
131
- };
132
- }
133
- async function findArchitectureDocs(rootDir, specId) {
134
- const docs = [];
135
- const archDir = path.join(rootDir, '.specweave/docs/internal/architecture');
136
- try {
137
- const adrDir = path.join(archDir, 'adr');
138
- try {
139
- const adrs = await fs.readdir(adrDir);
140
- const relatedAdrs = adrs.filter(file => file.includes(specId.replace('spec-', '')));
141
- for (const adr of relatedAdrs) {
142
- docs.push({
143
- type: 'adr',
144
- path: path.join(adrDir, adr),
145
- title: adr.replace('.md', '').replace(/-/g, ' ')
146
- });
147
- }
148
- }
149
- catch { }
150
- }
151
- catch { }
152
- return docs;
153
- }
154
- // NOTE: findExistingEpic not needed in this simplified version
155
- // Real JIRA API integration is in jira-spec-sync.ts
156
- //# sourceMappingURL=enhanced-jira-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-jira-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-jira/lib/enhanced-jira-sync.ts"],"names":[],"mappings":"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"}