specweave 0.23.8 → 0.23.12

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 (130) hide show
  1. package/.claude-plugin/marketplace.json +7 -7
  2. package/CLAUDE.md +391 -1338
  3. package/dist/src/cli/commands/cleanup-cache.d.ts +14 -0
  4. package/dist/src/cli/commands/cleanup-cache.d.ts.map +1 -0
  5. package/dist/src/cli/commands/cleanup-cache.js +63 -0
  6. package/dist/src/cli/commands/cleanup-cache.js.map +1 -0
  7. package/dist/src/cli/commands/init.js +40 -0
  8. package/dist/src/cli/commands/init.js.map +1 -1
  9. package/dist/src/cli/commands/migrate-config.d.ts +22 -0
  10. package/dist/src/cli/commands/migrate-config.d.ts.map +1 -0
  11. package/dist/src/cli/commands/migrate-config.js +149 -0
  12. package/dist/src/cli/commands/migrate-config.js.map +1 -0
  13. package/dist/src/cli/helpers/async-project-loader.d.ts +148 -0
  14. package/dist/src/cli/helpers/async-project-loader.d.ts.map +1 -0
  15. package/dist/src/cli/helpers/async-project-loader.js +351 -0
  16. package/dist/src/cli/helpers/async-project-loader.js.map +1 -0
  17. package/dist/src/cli/helpers/cancelation-handler.d.ts +123 -0
  18. package/dist/src/cli/helpers/cancelation-handler.d.ts.map +1 -0
  19. package/dist/src/cli/helpers/cancelation-handler.js +187 -0
  20. package/dist/src/cli/helpers/cancelation-handler.js.map +1 -0
  21. package/dist/src/cli/helpers/import-strategy-prompter.d.ts +43 -0
  22. package/dist/src/cli/helpers/import-strategy-prompter.d.ts.map +1 -0
  23. package/dist/src/cli/helpers/import-strategy-prompter.js +136 -0
  24. package/dist/src/cli/helpers/import-strategy-prompter.js.map +1 -0
  25. package/dist/src/cli/helpers/issue-tracker/ado.d.ts +5 -2
  26. package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
  27. package/dist/src/cli/helpers/issue-tracker/ado.js +90 -40
  28. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  29. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  30. package/dist/src/cli/helpers/issue-tracker/index.js +112 -60
  31. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  32. package/dist/src/cli/helpers/issue-tracker/jira.d.ts +26 -2
  33. package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +1 -1
  34. package/dist/src/cli/helpers/issue-tracker/jira.js +197 -132
  35. package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
  36. package/dist/src/cli/helpers/progress-tracker.d.ts +121 -0
  37. package/dist/src/cli/helpers/progress-tracker.d.ts.map +1 -0
  38. package/dist/src/cli/helpers/progress-tracker.js +202 -0
  39. package/dist/src/cli/helpers/progress-tracker.js.map +1 -0
  40. package/dist/src/cli/helpers/project-count-fetcher.d.ts +69 -0
  41. package/dist/src/cli/helpers/project-count-fetcher.d.ts.map +1 -0
  42. package/dist/src/cli/helpers/project-count-fetcher.js +173 -0
  43. package/dist/src/cli/helpers/project-count-fetcher.js.map +1 -0
  44. package/dist/src/config/types.d.ts +14 -14
  45. package/dist/src/core/cache/cache-manager.d.ts +119 -0
  46. package/dist/src/core/cache/cache-manager.d.ts.map +1 -0
  47. package/dist/src/core/cache/cache-manager.js +304 -0
  48. package/dist/src/core/cache/cache-manager.js.map +1 -0
  49. package/dist/src/core/cache/rate-limit-checker.d.ts +92 -0
  50. package/dist/src/core/cache/rate-limit-checker.d.ts.map +1 -0
  51. package/dist/src/core/cache/rate-limit-checker.js +160 -0
  52. package/dist/src/core/cache/rate-limit-checker.js.map +1 -0
  53. package/dist/src/core/config/config-manager.d.ts +135 -0
  54. package/dist/src/core/config/config-manager.d.ts.map +1 -0
  55. package/dist/src/core/config/config-manager.js +341 -0
  56. package/dist/src/core/config/config-manager.js.map +1 -0
  57. package/dist/src/core/config/config-migrator.d.ts +102 -0
  58. package/dist/src/core/config/config-migrator.d.ts.map +1 -0
  59. package/dist/src/core/config/config-migrator.js +367 -0
  60. package/dist/src/core/config/config-migrator.js.map +1 -0
  61. package/dist/src/core/config/index.d.ts +10 -0
  62. package/dist/src/core/config/index.d.ts.map +1 -0
  63. package/dist/src/core/config/index.js +10 -0
  64. package/dist/src/core/config/index.js.map +1 -0
  65. package/dist/src/core/config/types.d.ts +216 -0
  66. package/dist/src/core/config/types.d.ts.map +1 -0
  67. package/dist/src/core/config/types.js +32 -0
  68. package/dist/src/core/config/types.js.map +1 -0
  69. package/dist/src/core/progress/cancelation-handler.d.ts +79 -0
  70. package/dist/src/core/progress/cancelation-handler.d.ts.map +1 -0
  71. package/dist/src/core/progress/cancelation-handler.js +111 -0
  72. package/dist/src/core/progress/cancelation-handler.js.map +1 -0
  73. package/dist/src/core/progress/import-state.d.ts +71 -0
  74. package/dist/src/core/progress/import-state.d.ts.map +1 -0
  75. package/dist/src/core/progress/import-state.js +96 -0
  76. package/dist/src/core/progress/import-state.js.map +1 -0
  77. package/dist/src/core/progress/progress-tracker.d.ts +139 -0
  78. package/dist/src/core/progress/progress-tracker.d.ts.map +1 -0
  79. package/dist/src/core/progress/progress-tracker.js +223 -0
  80. package/dist/src/core/progress/progress-tracker.js.map +1 -0
  81. package/dist/src/init/architecture/types.d.ts +6 -6
  82. package/dist/src/integrations/ado/ado-client.d.ts +25 -0
  83. package/dist/src/integrations/ado/ado-client.d.ts.map +1 -1
  84. package/dist/src/integrations/ado/ado-client.js +67 -0
  85. package/dist/src/integrations/ado/ado-client.js.map +1 -1
  86. package/dist/src/integrations/ado/ado-dependency-loader.d.ts +99 -0
  87. package/dist/src/integrations/ado/ado-dependency-loader.d.ts.map +1 -0
  88. package/dist/src/integrations/ado/ado-dependency-loader.js +207 -0
  89. package/dist/src/integrations/ado/ado-dependency-loader.js.map +1 -0
  90. package/dist/src/integrations/jira/jira-client.d.ts +32 -0
  91. package/dist/src/integrations/jira/jira-client.d.ts.map +1 -1
  92. package/dist/src/integrations/jira/jira-client.js +81 -0
  93. package/dist/src/integrations/jira/jira-client.js.map +1 -1
  94. package/dist/src/integrations/jira/jira-dependency-loader.d.ts +101 -0
  95. package/dist/src/integrations/jira/jira-dependency-loader.d.ts.map +1 -0
  96. package/dist/src/integrations/jira/jira-dependency-loader.js +200 -0
  97. package/dist/src/integrations/jira/jira-dependency-loader.js.map +1 -0
  98. package/dist/src/integrations/jira/jira-hierarchy-mapper.d.ts +104 -0
  99. package/dist/src/integrations/jira/jira-hierarchy-mapper.d.ts.map +1 -0
  100. package/dist/src/integrations/jira/jira-hierarchy-mapper.js +178 -0
  101. package/dist/src/integrations/jira/jira-hierarchy-mapper.js.map +1 -0
  102. package/package.json +1 -1
  103. package/plugins/specweave/.claude-plugin/plugin.json +20 -0
  104. package/plugins/specweave/agents/architect/AGENT.md +100 -602
  105. package/plugins/specweave/agents/pm/AGENT.md +96 -597
  106. package/plugins/specweave/agents/pm/AGENT.md.bak +1893 -0
  107. package/plugins/specweave/agents/pm/AGENT.md.bak2 +1754 -0
  108. package/plugins/specweave/commands/check-hooks.md +257 -0
  109. package/plugins/specweave/commands/migrate-config.md +104 -0
  110. package/plugins/specweave/hooks/post-edit-spec.sh +202 -31
  111. package/plugins/specweave/hooks/post-task-completion.sh +225 -228
  112. package/plugins/specweave/hooks/post-write-spec.sh +207 -31
  113. package/plugins/specweave/hooks/pre-edit-spec.sh +151 -0
  114. package/plugins/specweave/hooks/pre-task-completion.sh +5 -7
  115. package/plugins/specweave/hooks/pre-write-spec.sh +151 -0
  116. package/plugins/specweave/hooks/test-pretooluse-env.sh +72 -0
  117. package/plugins/specweave/skills/compliance-architecture/SKILL.md +374 -0
  118. package/plugins/specweave/skills/external-sync-wizard/SKILL.md +610 -0
  119. package/plugins/specweave/skills/pm-closure-validation/SKILL.md +541 -0
  120. package/plugins/specweave/skills/roadmap-planner/SKILL.md +473 -0
  121. package/plugins/specweave-ado/commands/refresh-cache.js +25 -0
  122. package/plugins/specweave-ado/commands/refresh-cache.ts +40 -0
  123. package/plugins/specweave-ado/hooks/post-task-completion.sh +1 -1
  124. package/plugins/specweave-github/hooks/post-task-completion.sh +1 -1
  125. package/plugins/specweave-jira/commands/refresh-cache.js +25 -0
  126. package/plugins/specweave-jira/commands/refresh-cache.ts +40 -0
  127. package/plugins/specweave-jira/hooks/post-task-completion.sh +1 -1
  128. package/plugins/specweave-kafka-streams/commands/topology.md +437 -0
  129. package/plugins/specweave-n8n/commands/workflow-template.md +262 -0
  130. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +228 -6333
@@ -49,6 +49,143 @@ export async function checkExistingJiraCredentials(projectPath) {
49
49
  }
50
50
  return null;
51
51
  }
52
+ /**
53
+ * Auto-discover Jira projects via API with CLI-first smart pagination and cache support
54
+ *
55
+ * NEW (v0.24.0): Uses ProjectCountFetcher + ImportStrategyPrompter + AsyncProjectLoader + CacheManager
56
+ * - Checks cache first (24-hour TTL)
57
+ * - Counts projects first (< 1 second) if cache miss
58
+ * - Prompts for import strategy (import-all is default)
59
+ * - Uses smart pagination (50-project batches) for large imports
60
+ * - Caches results for future use
61
+ *
62
+ * @param credentials - Partial credentials (domain, email, token)
63
+ * @param projectRoot - Project root path (for cache manager)
64
+ * @returns Array of selected project keys
65
+ */
66
+ async function autoDiscoverJiraProjects(credentials, projectRoot) {
67
+ // Step 0: Check cache first (NEW in v0.24.0)
68
+ if (projectRoot) {
69
+ const { CacheManager } = await import('../../../core/cache/cache-manager.js');
70
+ const cacheManager = new CacheManager(projectRoot);
71
+ const cacheKey = `jira-projects-${credentials.domain}`;
72
+ const cachedProjects = await cacheManager.get(cacheKey);
73
+ if (cachedProjects && cachedProjects.length > 0) {
74
+ console.log(chalk.cyan('✨ Using cached project list (24h TTL)\n'));
75
+ return cachedProjects;
76
+ }
77
+ }
78
+ // Step 1: Count check (< 1 second)
79
+ const { getProjectCount } = await import('../project-count-fetcher.js');
80
+ const countSpinner = ora('Checking accessible Jira projects...').start();
81
+ try {
82
+ const countResult = await getProjectCount({
83
+ provider: 'jira',
84
+ credentials: {
85
+ domain: credentials.domain,
86
+ email: credentials.email,
87
+ token: credentials.token,
88
+ instanceType: credentials.instanceType
89
+ }
90
+ });
91
+ if (countResult.error) {
92
+ countSpinner.fail('Failed to check project count');
93
+ console.error(chalk.red(` Error: ${countResult.error}\n`));
94
+ throw new Error(countResult.error);
95
+ }
96
+ const totalCount = countResult.accessible;
97
+ countSpinner.succeed(`Found ${totalCount} accessible project(s)`);
98
+ if (totalCount === 0) {
99
+ console.log(chalk.yellow('\n⚠️ No accessible projects found.'));
100
+ console.log(chalk.gray(' Please check your permissions or create a project first.\n'));
101
+ return [];
102
+ }
103
+ // Step 2: Prompt for import strategy (CLI-first: "Import all" is default)
104
+ const { promptImportStrategy } = await import('../import-strategy-prompter.js');
105
+ const strategyResult = await promptImportStrategy({
106
+ totalCount,
107
+ provider: 'jira'
108
+ });
109
+ // Step 3: Execute based on strategy
110
+ let selectedProjects = [];
111
+ if (strategyResult.strategy === 'manual-entry') {
112
+ // Manual entry: return provided keys
113
+ selectedProjects = strategyResult.projectKeys || [];
114
+ }
115
+ else if (strategyResult.strategy === 'import-all') {
116
+ // Import all: use AsyncProjectLoader with smart pagination
117
+ const { AsyncProjectLoader } = await import('../async-project-loader.js');
118
+ const loader = new AsyncProjectLoader({
119
+ domain: credentials.domain,
120
+ email: credentials.email,
121
+ token: credentials.token,
122
+ instanceType: credentials.instanceType
123
+ }, 'jira', {
124
+ batchSize: 50,
125
+ updateFrequency: 5,
126
+ showEta: true
127
+ });
128
+ const result = await loader.fetchAllProjects(totalCount);
129
+ if (result.canceled) {
130
+ console.log(chalk.yellow('\n⚠️ Import canceled by user. Returning partial results.\n'));
131
+ }
132
+ if (result.failed > 0) {
133
+ console.log(chalk.yellow(`\n⚠️ ${result.failed} project(s) failed to load. Check logs for details.\n`));
134
+ console.log(chalk.gray(' Error log: .specweave/logs/import-errors.log\n'));
135
+ }
136
+ // Get project keys
137
+ selectedProjects = result.projects.map(p => p.key);
138
+ }
139
+ else {
140
+ // Select specific: load first 50 projects, show checkbox with all pre-checked
141
+ const spinner = ora('Loading first 50 projects...').start();
142
+ try {
143
+ const { AsyncProjectLoader } = await import('../async-project-loader.js');
144
+ const loader = new AsyncProjectLoader({
145
+ domain: credentials.domain,
146
+ email: credentials.email,
147
+ token: credentials.token,
148
+ instanceType: credentials.instanceType
149
+ }, 'jira');
150
+ // Load first 50 projects
151
+ const firstBatch = await loader.fetchBatch(0, Math.min(50, totalCount));
152
+ spinner.succeed(`Loaded ${firstBatch.length} project(s)`);
153
+ // Show checkbox with ALL pre-checked (CLI-first: deselection workflow)
154
+ const { selectedProjects: selected } = await inquirer.prompt({
155
+ type: 'checkbox',
156
+ name: 'selectedProjects',
157
+ message: 'Select Jira projects to sync (Space to deselect, Enter to confirm):',
158
+ choices: firstBatch.map((p) => ({
159
+ name: `${p.key} - ${p.name}`,
160
+ value: p.key,
161
+ checked: true // CLI-first: all pre-checked by default
162
+ }))
163
+ });
164
+ selectedProjects = selected;
165
+ }
166
+ catch (error) {
167
+ spinner.fail('Failed to load projects');
168
+ console.error(chalk.red(` Error: ${error.message}\n`));
169
+ throw error;
170
+ }
171
+ }
172
+ // Step 4: Cache the results (NEW in v0.24.0)
173
+ if (projectRoot && selectedProjects.length > 0) {
174
+ const { CacheManager } = await import('../../../core/cache/cache-manager.js');
175
+ const cacheManager = new CacheManager(projectRoot);
176
+ const cacheKey = `jira-projects-${credentials.domain}`;
177
+ await cacheManager.set(cacheKey, selectedProjects);
178
+ }
179
+ return selectedProjects;
180
+ }
181
+ catch (error) {
182
+ if (countSpinner.isSpinning) {
183
+ countSpinner.fail('Failed to discover projects');
184
+ }
185
+ console.error(chalk.red(` Error: ${error.message}\n`));
186
+ throw error;
187
+ }
188
+ }
52
189
  /**
53
190
  * Prompt user for Jira credentials
54
191
  *
@@ -57,9 +194,10 @@ export async function checkExistingJiraCredentials(projectPath) {
57
194
  * - Jira Server/Data Center (self-hosted)
58
195
  *
59
196
  * @param language - User's language
197
+ * @param projectRoot - Project root path (optional, for cache manager)
60
198
  * @returns Credentials or null if skipped
61
199
  */
62
- export async function promptJiraCredentials(language) {
200
+ export async function promptJiraCredentials(language, projectRoot) {
63
201
  const locale = getLocaleManager(language);
64
202
  console.log(chalk.white('\n📋 Jira Integration Setup\n'));
65
203
  console.log(chalk.gray('SpecWeave will sync increments with Jira Issues.\n'));
@@ -74,31 +212,7 @@ export async function promptJiraCredentials(language) {
74
212
  ],
75
213
  default: 'cloud'
76
214
  }]);
77
- // Step 1.5: Ask about team organization strategy
78
- console.log(chalk.cyan('\n📂 How are teams organized in Jira?\n'));
79
- const { strategy } = await inquirer.prompt([{
80
- type: 'list',
81
- name: 'strategy',
82
- message: 'Select team mapping strategy:',
83
- choices: [
84
- {
85
- name: 'Project-per-team (separate projects for each team)',
86
- value: 'project-per-team',
87
- short: 'Project-per-team'
88
- },
89
- {
90
- name: 'Component-based (one project, multiple components)',
91
- value: 'component-based',
92
- short: 'Component-based'
93
- },
94
- {
95
- name: 'Board-based (one project, filtered boards)',
96
- value: 'board-based',
97
- short: 'Board-based'
98
- }
99
- ],
100
- default: 'project-per-team'
101
- }]);
215
+ // Step 1.5: Note - Strategy will be auto-detected after project selection
102
216
  // Step 2: Show setup instructions
103
217
  console.log(chalk.cyan('\n📋 Quick Setup:'));
104
218
  if (instanceType === 'cloud') {
@@ -169,100 +283,38 @@ export async function promptJiraCredentials(language) {
169
283
  }
170
284
  }
171
285
  ];
172
- // Strategy-specific questions
173
- if (strategy === 'project-per-team') {
174
- questions.push({
175
- type: 'input',
176
- name: 'projects',
177
- message: 'Project keys (comma-separated, e.g., FRONTEND,BACKEND,MOBILE):',
178
- validate: (input) => {
179
- if (!input || input.trim() === '') {
180
- return 'At least one project key is required';
181
- }
182
- // Validate project key format (uppercase letters, 2-10 chars)
183
- const projects = input.split(',').map(p => p.trim());
184
- for (const project of projects) {
185
- if (!/^[A-Z0-9]{2,10}$/.test(project)) {
186
- return `Invalid project key "${project}". Must be 2-10 uppercase letters/numbers.`;
187
- }
188
- }
189
- return true;
190
- }
191
- });
286
+ // Get basic credentials first
287
+ const answers = await inquirer.prompt(questions);
288
+ // Auto-discover projects using the credentials (with cache support)
289
+ const selectedProjects = await autoDiscoverJiraProjects({
290
+ domain: answers.domain,
291
+ email: answers.email,
292
+ token: answers.token,
293
+ instanceType: instanceType
294
+ }, projectRoot);
295
+ if (selectedProjects.length === 0) {
296
+ console.log(chalk.yellow('⏭️ No projects selected. Jira setup cancelled.\n'));
297
+ return null;
192
298
  }
193
- else if (strategy === 'component-based') {
194
- questions.push({
195
- type: 'input',
196
- name: 'project',
197
- message: 'Project key (e.g., MAIN):',
198
- validate: (input) => {
199
- if (!input || input.trim() === '') {
200
- return 'Project key is required';
201
- }
202
- if (!/^[A-Z0-9]{2,10}$/.test(input)) {
203
- return 'Project key must be 2-10 uppercase letters/numbers';
204
- }
205
- return true;
206
- }
207
- }, {
208
- type: 'input',
209
- name: 'components',
210
- message: 'Component names (comma-separated, e.g., Frontend,Backend,Mobile):',
211
- validate: (input) => {
212
- if (!input || input.trim() === '') {
213
- return 'At least one component is required';
214
- }
215
- return true;
216
- }
217
- });
299
+ // Auto-detect strategy based on number of selected projects
300
+ let strategy;
301
+ if (selectedProjects.length === 1) {
302
+ strategy = 'single-project';
303
+ console.log(chalk.gray(`\n📊 Detected strategy: Single project (${selectedProjects[0]})\n`));
218
304
  }
219
- else if (strategy === 'board-based') {
220
- questions.push({
221
- type: 'input',
222
- name: 'project',
223
- message: 'Project key (e.g., MAIN):',
224
- validate: (input) => {
225
- if (!input || input.trim() === '') {
226
- return 'Project key is required';
227
- }
228
- if (!/^[A-Z0-9]{2,10}$/.test(input)) {
229
- return 'Project key must be 2-10 uppercase letters/numbers';
230
- }
231
- return true;
232
- }
233
- }, {
234
- type: 'input',
235
- name: 'boards',
236
- message: 'Board IDs or Names (comma-separated, e.g., "123,456" or "Frontend,Backend,Mobile"):',
237
- validate: (input) => {
238
- if (!input || input.trim() === '') {
239
- return 'At least one board is required';
240
- }
241
- return true;
242
- }
243
- });
305
+ else {
306
+ strategy = 'project-per-team';
307
+ console.log(chalk.gray(`\n📊 Detected strategy: Project-per-team (${selectedProjects.length} projects)\n`));
244
308
  }
245
- const answers = await inquirer.prompt(questions);
246
- // Build credentials based on strategy
309
+ // Build credentials with auto-discovered projects
247
310
  const credentials = {
248
311
  token: answers.token,
249
312
  email: answers.email,
250
313
  domain: answers.domain,
251
314
  instanceType: instanceType,
252
- strategy: strategy
315
+ strategy: strategy,
316
+ projects: selectedProjects
253
317
  };
254
- // Add strategy-specific fields
255
- if (strategy === 'project-per-team') {
256
- credentials.projects = answers.projects.split(',').map((p) => p.trim());
257
- }
258
- else if (strategy === 'component-based') {
259
- credentials.project = answers.project;
260
- credentials.components = answers.components.split(',').map((c) => c.trim());
261
- }
262
- else if (strategy === 'board-based') {
263
- credentials.project = answers.project;
264
- credentials.boards = answers.boards.split(',').map((b) => b.trim());
265
- }
266
318
  return credentials;
267
319
  }
268
320
  /**
@@ -334,46 +386,61 @@ export async function validateJiraConnection(credentials, maxRetries = 3) {
334
386
  /**
335
387
  * Get Jira environment variables for .env file
336
388
  *
389
+ * ONLY SECRETS - All non-sensitive config goes to config.json via getJiraConfig()
390
+ *
337
391
  * @param credentials - Jira credentials
338
- * @returns Array of key-value pairs for .env
392
+ * @returns Array of key-value pairs for .env (secrets only)
339
393
  */
340
394
  export function getJiraEnvVars(credentials) {
341
- const vars = [
395
+ // ONLY secrets (tokens, emails)
396
+ return [
342
397
  { key: 'JIRA_API_TOKEN', value: credentials.token },
343
- { key: 'JIRA_EMAIL', value: credentials.email },
344
- { key: 'JIRA_DOMAIN', value: credentials.domain }
398
+ { key: 'JIRA_EMAIL', value: credentials.email }
345
399
  ];
400
+ }
401
+ /**
402
+ * Get Jira configuration for config.json
403
+ *
404
+ * Extracts non-sensitive configuration from credentials
405
+ *
406
+ * @param credentials - Jira credentials
407
+ * @returns Partial config object for config.json
408
+ */
409
+ export function getJiraConfig(credentials) {
410
+ const config = {
411
+ issueTracker: {
412
+ provider: 'jira',
413
+ domain: credentials.domain,
414
+ instanceType: credentials.instanceType
415
+ }
416
+ };
346
417
  // Add strategy if specified
347
418
  if (credentials.strategy) {
348
- vars.push({ key: 'JIRA_STRATEGY', value: credentials.strategy });
419
+ config.issueTracker.strategy = credentials.strategy;
349
420
  }
350
421
  // Strategy 1: Project-per-team
351
422
  if (credentials.strategy === 'project-per-team' && credentials.projects) {
352
- vars.push({ key: 'JIRA_PROJECTS', value: credentials.projects.join(',') });
423
+ config.issueTracker.projects = credentials.projects.map((key) => ({ key }));
353
424
  }
354
425
  // Strategy 2: Component-based
355
426
  else if (credentials.strategy === 'component-based') {
356
427
  if (credentials.project) {
357
- vars.push({ key: 'JIRA_PROJECT', value: credentials.project });
428
+ config.issueTracker.project = credentials.project;
358
429
  }
359
430
  if (credentials.components) {
360
- vars.push({ key: 'JIRA_COMPONENTS', value: credentials.components.join(',') });
431
+ config.issueTracker.components = credentials.components;
361
432
  }
362
433
  }
363
434
  // Strategy 3: Board-based
364
435
  else if (credentials.strategy === 'board-based') {
365
436
  if (credentials.project) {
366
- vars.push({ key: 'JIRA_PROJECT', value: credentials.project });
437
+ config.issueTracker.project = credentials.project;
367
438
  }
368
439
  if (credentials.boards) {
369
- vars.push({ key: 'JIRA_BOARDS', value: credentials.boards.join(',') });
440
+ config.issueTracker.boards = credentials.boards.map((id) => ({ id }));
370
441
  }
371
442
  }
372
- // Add Server-specific variables if needed
373
- if (credentials.instanceType === 'server') {
374
- vars.push({ key: 'JIRA_INSTANCE_TYPE', value: 'server' });
375
- }
376
- return vars;
443
+ return config;
377
444
  }
378
445
  /**
379
446
  * Show Jira setup complete message
@@ -382,12 +449,10 @@ export function getJiraEnvVars(credentials) {
382
449
  */
383
450
  export function showJiraSetupComplete(language) {
384
451
  const locale = getLocaleManager(language);
385
- console.log(chalk.green.bold('\n✅ Jira integration complete!\n'));
386
- console.log(chalk.white('Available commands:'));
387
- console.log(chalk.gray(' /specweave-jira:sync'));
388
- console.log(chalk.gray(' /specweave-jira:status\n'));
389
- console.log(chalk.cyan('💡 Tip: Use /specweave:increment "feature" to create an increment'));
390
- console.log(chalk.gray(' It will automatically sync to Jira Issues!\n'));
452
+ console.log(chalk.green.bold('\n✅ Jira integration configured!\n'));
453
+ console.log(chalk.gray('Credentials saved to .env (gitignored)\n'));
454
+ console.log(chalk.cyan('💡 Tip: Run /specweave:increment "feature" to create an increment'));
455
+ console.log(chalk.gray(' It will automatically sync to Jira!\n'));
391
456
  }
392
457
  /**
393
458
  * Show Jira setup skipped message
@@ -1 +1 @@
1
- {"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/jira.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,WAAmB;IAEnB,6BAA6B;IAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE;oBACX,KAAK,EAAE,MAAM,CAAC,cAAc;oBAC5B,KAAK,EAAE,MAAM,CAAC,UAAU;oBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;oBAC1B,YAAY,EAAE,OAAO,CAAC,gCAAgC;iBACvD;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,IAAI,EAAE,CAAC;QACT,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE;gBACX,GAAG,IAAI;gBACP,YAAY,EAAE,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAA2B;IAE3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAE9E,oDAAoD;IACpD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,oCAAoC;YAC7C,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE;gBACxD,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,QAAQ,EAAE;aACnE;YACD,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC,CAAC;IAEJ,iDAAiD;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,oDAAoD;oBAC1D,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,kBAAkB;iBAC1B;gBACD;oBACE,IAAI,EAAE,oDAAoD;oBAC1D,KAAK,EAAE,iBAAiB;oBACxB,KAAK,EAAE,iBAAiB;iBACzB;gBACD;oBACE,IAAI,EAAE,4CAA4C;oBAClD,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,aAAa;iBACrB;aACF;YACD,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC,CAAC;IAEJ,kCAAkC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7C,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAU;QACvB;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,YAAY,KAAK,OAAO;gBAC/B,CAAC,CAAC,iDAAiD;gBACnD,CAAC,CAAC,2CAA2C;YAC/C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,wBAAwB,CAAC;gBAClC,CAAC;gBAED,mEAAmE;gBACnE,IAAI,sEAAsE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvF,OAAO,qDAAqD,CAAC;gBAC/D,CAAC;gBAED,sFAAsF;gBACtF,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,OAAO,gEAAgE,CAAC;gBAC1E,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,oCAAoC,CAAC;gBAC9C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,4BAA4B;YACrC,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,OAAO,uBAAuB,CAAC;gBACjC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC;IAEF,8BAA8B;IAC9B,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,gEAAgE;YACzE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,sCAAsC,CAAC;gBAChD,CAAC;gBACD,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACtC,OAAO,wBAAwB,OAAO,4CAA4C,CAAC;oBACrF,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC1C,SAAS,CAAC,IAAI,CACZ;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,yBAAyB,CAAC;gBACnC,CAAC;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,oDAAoD,CAAC;gBAC9D,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,EACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,mEAAmE;YAC5E,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,oCAAoC,CAAC;gBAC9C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QACtC,SAAS,CAAC,IAAI,CACZ;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,yBAAyB,CAAC;gBACnC,CAAC;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,oDAAoD,CAAC;gBAC9D,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,EACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,qFAAqF;YAC9F,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClC,OAAO,gCAAgC,CAAC;gBAC1C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjD,sCAAsC;IACtC,MAAM,WAAW,GAAoB;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,YAAgC;QAC9C,QAAQ,EAAE,QAAe;KAC1B,CAAC;IAEF,+BAA+B;IAC/B,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC1C,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QACtC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAA4B,EAC5B,aAAqB,CAAC;IAEtB,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC/C,gDAAgD;YAChD,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,KAAK,OAAO;gBAClD,CAAC,CAAC,WAAW,WAAW,CAAC,MAAM,aAAa;gBAC5C,CAAC,CAAC,WAAW,WAAW,CAAC,MAAM,aAAa,CAAC;YAE/C,MAAM,YAAY,GAAG,GAAG,OAAO,SAAS,CAAC;YAEzC,oBAAoB;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEzF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;gBACzC,OAAO,EAAE;oBACP,eAAe,EAAE,SAAS,IAAI,EAAE;oBAChC,QAAQ,EAAE,kBAAkB;iBAC7B;aACF,CAAC,CAAC;YAEH,0BAA0B;YAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,cAAc,CACtB,8BAA8B,EAC9B,aAAa,CACd,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,YAAY,GAAG,uBAAuB,CAAC;gBAE3C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,YAAY,GAAG,6CAA6C,CAAC;gBAC/D,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnC,YAAY,GAAG,4CAA4C,CAAC;gBAC9D,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnC,YAAY,GAAG,wCAAwC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzD,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,IAAI,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,OAAO,CAAC,OAAO,CAAC,wBAAwB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI;SAC5C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;SACxC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,WAA4B;IACzD,MAAM,IAAI,GAAG;QACX,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;QACnD,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;QAC/C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;KAClD,CAAC;IAEF,4BAA4B;IAC5B,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,+BAA+B;IAC/B,IAAI,WAAW,CAAC,QAAQ,KAAK,kBAAkB,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,8BAA8B;SACzB,IAAI,WAAW,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACpD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,0BAA0B;SACrB,IAAI,WAAW,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,IAAI,WAAW,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA2B;IAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/jira.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Progress Tracker
3
+ *
4
+ * Real-time progress tracking with percentage, ETA estimation, and final summary.
5
+ * Optimized for CLI workflows with throttled updates to prevent console spam.
6
+ *
7
+ * @module cli/helpers/progress-tracker
8
+ */
9
+ import { Logger } from '../../utils/logger.js';
10
+ /**
11
+ * Progress tracker options
12
+ */
13
+ export interface ProgressOptions {
14
+ total: number;
15
+ updateFrequency?: number;
16
+ showEta?: boolean;
17
+ progressBarWidth?: number;
18
+ logger?: Logger;
19
+ }
20
+ /**
21
+ * Item status for progress tracking
22
+ */
23
+ export type ItemStatus = 'success' | 'failure' | 'skip';
24
+ /**
25
+ * Progress summary
26
+ */
27
+ export interface ProgressSummary {
28
+ total: number;
29
+ completed: number;
30
+ succeeded: number;
31
+ failed: number;
32
+ skipped: number;
33
+ elapsed: number;
34
+ }
35
+ /**
36
+ * Progress Tracker
37
+ *
38
+ * Tracks batch operation progress with:
39
+ * - Real-time percentage updates
40
+ * - ETA estimation (rolling average of last 10 items)
41
+ * - Throttled console updates (every N items)
42
+ * - Final summary (succeeded/failed/skipped counts)
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const tracker = new ProgressTracker({ total: 127, updateFrequency: 5 });
47
+ *
48
+ * for (const project of projects) {
49
+ * try {
50
+ * await importProject(project);
51
+ * tracker.update(project.key, 'success');
52
+ * } catch (error) {
53
+ * tracker.update(project.key, 'failure');
54
+ * }
55
+ * }
56
+ *
57
+ * tracker.finish();
58
+ * // Output: ✅ Imported 125/127 projects (2 failed, 0 skipped) in 28s
59
+ * ```
60
+ */
61
+ export declare class ProgressTracker {
62
+ private total;
63
+ private updateFrequency;
64
+ private showEta;
65
+ private progressBarWidth;
66
+ private logger;
67
+ private completed;
68
+ private succeeded;
69
+ private failed;
70
+ private skipped;
71
+ private startTime;
72
+ private lastUpdateTime;
73
+ private itemTimestamps;
74
+ private lastRenderedProgress;
75
+ constructor(options: ProgressOptions);
76
+ /**
77
+ * Update progress with item result
78
+ *
79
+ * @param item - Item identifier (e.g., project key)
80
+ * @param status - Item status (success, failure, skip)
81
+ */
82
+ update(item: string, status: ItemStatus): void;
83
+ /**
84
+ * Render progress bar to console
85
+ */
86
+ private render;
87
+ /**
88
+ * Generate ASCII progress bar
89
+ *
90
+ * @param percentage - Completion percentage (0-100)
91
+ * @returns ASCII progress bar string
92
+ */
93
+ private getProgressBar;
94
+ /**
95
+ * Calculate ETA using rolling average
96
+ *
97
+ * @returns ETA string (e.g., "~2m remaining") or empty if not enough data
98
+ */
99
+ private getEta;
100
+ /**
101
+ * Finish tracking and show final summary
102
+ */
103
+ finish(): void;
104
+ /**
105
+ * Cancel tracking (for use with cancelation)
106
+ */
107
+ cancel(): void;
108
+ /**
109
+ * Get current progress summary
110
+ *
111
+ * @returns Progress summary object
112
+ */
113
+ getSummary(): ProgressSummary;
114
+ /**
115
+ * Get current percentage (for testing)
116
+ *
117
+ * @returns Completion percentage (0-100)
118
+ */
119
+ getPercentage(): number;
120
+ }
121
+ //# sourceMappingURL=progress-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-tracker.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/progress-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,oBAAoB,CAAM;gBAEtB,OAAO,EAAE,eAAe;IAWpC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IA0B9C;;OAEG;IACH,OAAO,CAAC,MAAM;IAgBd;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,MAAM;IA+Bd;;OAEG;IACH,MAAM,IAAI,IAAI;IA2Bd;;OAEG;IACH,MAAM,IAAI,IAAI;IAgBd;;;;OAIG;IACH,UAAU,IAAI,eAAe;IAW7B;;;;OAIG;IACH,aAAa,IAAI,MAAM;CAGxB"}