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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-project-loader.js","sourceRoot":"","sources":["../../../../src/cli/helpers/async-project-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Cancelation Handler
3
+ *
4
+ * Graceful Ctrl+C handling with state persistence and resume capability.
5
+ * Atomic file writes ensure state integrity even during abrupt termination.
6
+ *
7
+ * @module cli/helpers/cancelation-handler
8
+ */
9
+ import { Logger } from '../../utils/logger.js';
10
+ /**
11
+ * Cancelation handler options
12
+ */
13
+ export interface CancelationOptions {
14
+ stateFile: string;
15
+ logger?: Logger;
16
+ }
17
+ /**
18
+ * Cancelation state (persisted to disk)
19
+ */
20
+ export interface CancelationState {
21
+ operation: string;
22
+ provider: string;
23
+ domain?: string;
24
+ timestamp: string;
25
+ version: string;
26
+ total: number;
27
+ completed: number;
28
+ succeeded: number;
29
+ failed: number;
30
+ skipped: number;
31
+ remaining: Array<{
32
+ key: string;
33
+ name: string;
34
+ }>;
35
+ errors: Array<{
36
+ projectKey: string;
37
+ error: string;
38
+ timestamp: string;
39
+ }>;
40
+ }
41
+ /**
42
+ * Cancelation Handler
43
+ *
44
+ * Handles SIGINT (Ctrl+C) signals during long-running operations:
45
+ * - Registers signal handler
46
+ * - Saves partial state to disk (atomic writes)
47
+ * - Provides resume capability
48
+ * - TTL validation (24-hour expiration)
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const handler = new CancelationHandler({
53
+ * stateFile: '.specweave/cache/import-state.json'
54
+ * });
55
+ *
56
+ * handler.onCleanup(async () => {
57
+ * await savePartialState(projects, total, errors);
58
+ * });
59
+ *
60
+ * for (const project of projects) {
61
+ * if (handler.shouldCancel()) {
62
+ * break; // Exit gracefully
63
+ * }
64
+ * // ... process project ...
65
+ * }
66
+ * ```
67
+ */
68
+ export declare class CancelationHandler {
69
+ private stateFile;
70
+ private logger;
71
+ private canceled;
72
+ private cleanupCallback;
73
+ private sigintHandler;
74
+ private ctrlCCount;
75
+ constructor(options: CancelationOptions);
76
+ /**
77
+ * Register SIGINT (Ctrl+C) handler
78
+ */
79
+ private registerSigintHandler;
80
+ /**
81
+ * Check if cancelation was requested
82
+ *
83
+ * @returns True if Ctrl+C was pressed
84
+ */
85
+ shouldCancel(): boolean;
86
+ /**
87
+ * Register cleanup callback (executed on Ctrl+C)
88
+ *
89
+ * @param callback - Async cleanup function
90
+ */
91
+ onCleanup(callback: () => Promise<void>): void;
92
+ /**
93
+ * Save cancelation state to disk (atomic write)
94
+ *
95
+ * Uses temp file → rename pattern to ensure atomicity.
96
+ *
97
+ * @param state - Cancelation state to persist
98
+ */
99
+ saveState(state: CancelationState): Promise<void>;
100
+ /**
101
+ * Load cancelation state from disk
102
+ *
103
+ * Validates TTL (24-hour expiration) and version compatibility.
104
+ *
105
+ * @returns Cancelation state or null if not found/expired
106
+ */
107
+ loadState(): Promise<CancelationState | null>;
108
+ /**
109
+ * Clear saved state (delete file)
110
+ */
111
+ clearState(): Promise<void>;
112
+ /**
113
+ * Unregister SIGINT handler (cleanup)
114
+ */
115
+ dispose(): void;
116
+ /**
117
+ * Show resume suggestion to user
118
+ *
119
+ * @param resumeCommand - Command to resume operation (e.g., "/specweave-jira:import-projects --resume")
120
+ */
121
+ suggestResume(resumeCommand: string): void;
122
+ }
123
+ //# sourceMappingURL=cancelation-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelation-handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/cancelation-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,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,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,kBAAkB;IAQvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;;;OAIG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI9C;;;;;;OAMG;IACG,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAmCnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAG3C"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Cancelation Handler
3
+ *
4
+ * Graceful Ctrl+C handling with state persistence and resume capability.
5
+ * Atomic file writes ensure state integrity even during abrupt termination.
6
+ *
7
+ * @module cli/helpers/cancelation-handler
8
+ */
9
+ import { promises as fs } from 'fs';
10
+ import { existsSync } from 'fs';
11
+ import path from 'path';
12
+ import chalk from 'chalk';
13
+ import { consoleLogger } from '../../utils/logger.js';
14
+ /**
15
+ * Cancelation Handler
16
+ *
17
+ * Handles SIGINT (Ctrl+C) signals during long-running operations:
18
+ * - Registers signal handler
19
+ * - Saves partial state to disk (atomic writes)
20
+ * - Provides resume capability
21
+ * - TTL validation (24-hour expiration)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const handler = new CancelationHandler({
26
+ * stateFile: '.specweave/cache/import-state.json'
27
+ * });
28
+ *
29
+ * handler.onCleanup(async () => {
30
+ * await savePartialState(projects, total, errors);
31
+ * });
32
+ *
33
+ * for (const project of projects) {
34
+ * if (handler.shouldCancel()) {
35
+ * break; // Exit gracefully
36
+ * }
37
+ * // ... process project ...
38
+ * }
39
+ * ```
40
+ */
41
+ export class CancelationHandler {
42
+ constructor(options) {
43
+ this.canceled = false;
44
+ this.cleanupCallback = null;
45
+ this.sigintHandler = null;
46
+ this.ctrlCCount = 0; // Track consecutive Ctrl+C presses
47
+ this.stateFile = options.stateFile;
48
+ this.logger = options.logger ?? consoleLogger;
49
+ // Register SIGINT handler
50
+ this.registerSigintHandler();
51
+ }
52
+ /**
53
+ * Register SIGINT (Ctrl+C) handler
54
+ */
55
+ registerSigintHandler() {
56
+ this.sigintHandler = async (signal) => {
57
+ this.ctrlCCount++;
58
+ // Double Ctrl+C: force exit immediately (no cleanup)
59
+ if (this.ctrlCCount > 1) {
60
+ this.logger.log(chalk.red('\n⚠️ Force exit (no state saved)'));
61
+ process.exit(1);
62
+ }
63
+ // First Ctrl+C: graceful cancelation
64
+ this.canceled = true;
65
+ this.logger.log(chalk.yellow('\n⚠️ Cancelation requested. Saving progress...'));
66
+ // Execute cleanup callback if registered
67
+ if (this.cleanupCallback) {
68
+ try {
69
+ await this.cleanupCallback();
70
+ }
71
+ catch (error) {
72
+ this.logger.error('Error during cleanup:', error);
73
+ }
74
+ }
75
+ // Note: Don't exit here - let the main loop detect shouldCancel() and exit cleanly
76
+ };
77
+ process.on('SIGINT', this.sigintHandler);
78
+ }
79
+ /**
80
+ * Check if cancelation was requested
81
+ *
82
+ * @returns True if Ctrl+C was pressed
83
+ */
84
+ shouldCancel() {
85
+ return this.canceled;
86
+ }
87
+ /**
88
+ * Register cleanup callback (executed on Ctrl+C)
89
+ *
90
+ * @param callback - Async cleanup function
91
+ */
92
+ onCleanup(callback) {
93
+ this.cleanupCallback = callback;
94
+ }
95
+ /**
96
+ * Save cancelation state to disk (atomic write)
97
+ *
98
+ * Uses temp file → rename pattern to ensure atomicity.
99
+ *
100
+ * @param state - Cancelation state to persist
101
+ */
102
+ async saveState(state) {
103
+ try {
104
+ // Ensure cache directory exists
105
+ const cacheDir = path.dirname(this.stateFile);
106
+ await fs.mkdir(cacheDir, { recursive: true });
107
+ // Atomic write: temp file → rename
108
+ const tempFile = `${this.stateFile}.tmp`;
109
+ await fs.writeFile(tempFile, JSON.stringify(state, null, 2), 'utf-8');
110
+ await fs.rename(tempFile, this.stateFile);
111
+ this.logger.log(chalk.gray(`State saved to ${this.stateFile}`));
112
+ }
113
+ catch (error) {
114
+ this.logger.error('Failed to save state:', error);
115
+ throw error;
116
+ }
117
+ }
118
+ /**
119
+ * Load cancelation state from disk
120
+ *
121
+ * Validates TTL (24-hour expiration) and version compatibility.
122
+ *
123
+ * @returns Cancelation state or null if not found/expired
124
+ */
125
+ async loadState() {
126
+ try {
127
+ if (!existsSync(this.stateFile)) {
128
+ return null; // No saved state
129
+ }
130
+ const content = await fs.readFile(this.stateFile, 'utf-8');
131
+ const state = JSON.parse(content);
132
+ // Validate TTL (24 hours)
133
+ const stateTimestamp = new Date(state.timestamp).getTime();
134
+ const now = Date.now();
135
+ const ttlMs = 24 * 60 * 60 * 1000; // 24 hours
136
+ if (now - stateTimestamp > ttlMs) {
137
+ this.logger.log(chalk.yellow('⚠️ Saved state expired (> 24 hours old). Starting fresh import.'));
138
+ await this.clearState(); // Delete expired state
139
+ return null;
140
+ }
141
+ // Validate version (for future compatibility)
142
+ if (state.version !== '1.0') {
143
+ this.logger.log(chalk.yellow('⚠️ Incompatible state version. Starting fresh import.'));
144
+ await this.clearState();
145
+ return null;
146
+ }
147
+ return state;
148
+ }
149
+ catch (error) {
150
+ this.logger.error('Failed to load state:', error);
151
+ await this.clearState(); // Corrupted state - delete it
152
+ return null;
153
+ }
154
+ }
155
+ /**
156
+ * Clear saved state (delete file)
157
+ */
158
+ async clearState() {
159
+ try {
160
+ if (existsSync(this.stateFile)) {
161
+ await fs.unlink(this.stateFile);
162
+ this.logger.log(chalk.gray('Cleared saved state'));
163
+ }
164
+ }
165
+ catch (error) {
166
+ this.logger.error('Failed to clear state:', error);
167
+ }
168
+ }
169
+ /**
170
+ * Unregister SIGINT handler (cleanup)
171
+ */
172
+ dispose() {
173
+ if (this.sigintHandler) {
174
+ process.off('SIGINT', this.sigintHandler);
175
+ this.sigintHandler = null;
176
+ }
177
+ }
178
+ /**
179
+ * Show resume suggestion to user
180
+ *
181
+ * @param resumeCommand - Command to resume operation (e.g., "/specweave-jira:import-projects --resume")
182
+ */
183
+ suggestResume(resumeCommand) {
184
+ this.logger.log(chalk.cyan(`\nResume with: ${resumeCommand}`));
185
+ }
186
+ }
187
+ //# sourceMappingURL=cancelation-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelation-handler.js","sourceRoot":"","sources":["../../../../src/cli/helpers/cancelation-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Import Strategy Prompter
3
+ *
4
+ * Provides CLI-first UI for selecting import strategy with "Import all" as default.
5
+ * Supports three strategies:
6
+ * - import-all (default, recommended)
7
+ * - select-specific (checkbox mode with all pre-checked)
8
+ * - manual-entry (comma-separated project keys)
9
+ *
10
+ * @module cli/helpers/import-strategy-prompter
11
+ */
12
+ import { Logger } from '../../utils/logger.js';
13
+ /**
14
+ * Import strategy options
15
+ */
16
+ export type ImportStrategy = 'import-all' | 'select-specific' | 'manual-entry';
17
+ /**
18
+ * Strategy prompt result
19
+ */
20
+ export interface StrategyPromptResult {
21
+ strategy: ImportStrategy;
22
+ projectKeys?: string[];
23
+ confirmed?: boolean;
24
+ }
25
+ /**
26
+ * Strategy prompter options
27
+ */
28
+ export interface StrategyPrompterOptions {
29
+ totalCount: number;
30
+ provider: 'jira' | 'ado';
31
+ logger?: Logger;
32
+ }
33
+ /**
34
+ * Prompt user for import strategy selection
35
+ *
36
+ * Default: "Import all" (CLI-first approach)
37
+ * Instructions: "All projects selected by default. Deselect unwanted projects if needed."
38
+ *
39
+ * @param options - Prompter options
40
+ * @returns Strategy prompt result
41
+ */
42
+ export declare function promptImportStrategy(options: StrategyPrompterOptions): Promise<StrategyPromptResult>;
43
+ //# sourceMappingURL=import-strategy-prompter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-strategy-prompter.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAiD/B"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Import Strategy Prompter
3
+ *
4
+ * Provides CLI-first UI for selecting import strategy with "Import all" as default.
5
+ * Supports three strategies:
6
+ * - import-all (default, recommended)
7
+ * - select-specific (checkbox mode with all pre-checked)
8
+ * - manual-entry (comma-separated project keys)
9
+ *
10
+ * @module cli/helpers/import-strategy-prompter
11
+ */
12
+ import inquirer from 'inquirer';
13
+ import chalk from 'chalk';
14
+ import { consoleLogger } from '../../utils/logger.js';
15
+ /**
16
+ * Prompt user for import strategy selection
17
+ *
18
+ * Default: "Import all" (CLI-first approach)
19
+ * Instructions: "All projects selected by default. Deselect unwanted projects if needed."
20
+ *
21
+ * @param options - Prompter options
22
+ * @returns Strategy prompt result
23
+ */
24
+ export async function promptImportStrategy(options) {
25
+ const { totalCount, provider, logger = consoleLogger } = options;
26
+ // Display project count
27
+ logger.log(chalk.cyan(`\nFound ${totalCount} accessible ${provider.toUpperCase()} projects.`));
28
+ // Show strategy prompt
29
+ const strategyAnswer = await inquirer.prompt([
30
+ {
31
+ type: 'list',
32
+ name: 'strategy',
33
+ message: 'How would you like to import projects?',
34
+ default: 'import-all', // CLI-first default
35
+ choices: [
36
+ {
37
+ name: chalk.green('✓ Import all projects (Recommended)') + chalk.gray(' - All selected by default'),
38
+ value: 'import-all'
39
+ },
40
+ {
41
+ name: 'Select specific projects' + chalk.gray(' - Choose from checkbox list'),
42
+ value: 'select-specific'
43
+ },
44
+ {
45
+ name: 'Manual entry' + chalk.gray(' - Enter project keys manually'),
46
+ value: 'manual-entry'
47
+ }
48
+ ]
49
+ }
50
+ ]);
51
+ const strategy = strategyAnswer.strategy;
52
+ // Handle manual entry
53
+ if (strategy === 'manual-entry') {
54
+ return await handleManualEntry(logger);
55
+ }
56
+ // Handle safety confirmation for large imports (> 100 projects)
57
+ if (strategy === 'import-all' && totalCount > 100) {
58
+ const confirmed = await showSafetyConfirmation(totalCount, logger);
59
+ if (!confirmed) {
60
+ // User declined large import - restart strategy selection
61
+ logger.log(chalk.yellow('\n⚠️ Import canceled. Returning to strategy selection...\n'));
62
+ return await promptImportStrategy(options); // Recursive call
63
+ }
64
+ return { strategy, confirmed: true };
65
+ }
66
+ return { strategy };
67
+ }
68
+ /**
69
+ * Handle manual entry workflow
70
+ *
71
+ * Prompts user to enter comma-separated project keys (e.g., "BACKEND,FRONTEND,MOBILE")
72
+ * Validates format and returns parsed keys.
73
+ *
74
+ * @param logger - Logger instance
75
+ * @returns Strategy result with project keys
76
+ */
77
+ async function handleManualEntry(logger) {
78
+ logger.log(chalk.gray('\n💡 Tip: Enter project keys separated by commas (e.g., BACKEND,FRONTEND,MOBILE)'));
79
+ const manualAnswer = await inquirer.prompt([
80
+ {
81
+ type: 'input',
82
+ name: 'projectKeys',
83
+ message: 'Enter project keys (comma-separated):',
84
+ validate: (input) => {
85
+ // Validate format: alphanumeric, underscores, hyphens, and commas only
86
+ const trimmed = input.trim();
87
+ if (!trimmed) {
88
+ return chalk.red('Project keys cannot be empty. Please enter at least one project key.');
89
+ }
90
+ // Check format (allow A-Z, 0-9, _, -, and commas)
91
+ const validFormat = /^[A-Z0-9_,-]+$/i.test(trimmed);
92
+ if (!validFormat) {
93
+ return chalk.red('Invalid format. Use only letters, numbers, underscores, hyphens, and commas.');
94
+ }
95
+ return true;
96
+ }
97
+ }
98
+ ]);
99
+ // Parse and clean project keys
100
+ const projectKeys = manualAnswer.projectKeys
101
+ .split(',')
102
+ .map(key => key.trim().toUpperCase())
103
+ .filter(key => key.length > 0);
104
+ logger.log(chalk.green(`\n✓ ${projectKeys.length} project(s) will be imported: ${projectKeys.join(', ')}`));
105
+ return { strategy: 'manual-entry', projectKeys };
106
+ }
107
+ /**
108
+ * Show safety confirmation for large imports (> 100 projects)
109
+ *
110
+ * Default: "No" (safe default to prevent accidental large imports)
111
+ * Displays estimated import time based on batch size.
112
+ *
113
+ * @param totalCount - Total number of projects to import
114
+ * @param logger - Logger instance
115
+ * @returns True if user confirms, false otherwise
116
+ */
117
+ async function showSafetyConfirmation(totalCount, logger) {
118
+ // Calculate estimated time (50 projects/batch, ~5 seconds/batch)
119
+ const estimatedBatches = Math.ceil(totalCount / 50);
120
+ const estimatedSeconds = estimatedBatches * 5;
121
+ const estimatedTime = estimatedSeconds < 60
122
+ ? `~${estimatedSeconds}s`
123
+ : `~${Math.ceil(estimatedSeconds / 60)}m`;
124
+ logger.log(chalk.yellow(`\n⚠️ Large import detected: ${totalCount} projects`));
125
+ logger.log(chalk.gray(` Estimated time: ${estimatedTime} (${estimatedBatches} batches)`));
126
+ const confirmation = await inquirer.prompt([
127
+ {
128
+ type: 'confirm',
129
+ name: 'confirmed',
130
+ message: `Import all ${totalCount} projects?`,
131
+ default: false // Safe default (prevent accidents)
132
+ }
133
+ ]);
134
+ return confirmation.confirmed;
135
+ }
136
+ //# sourceMappingURL=import-strategy-prompter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-strategy-prompter.js","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAyB9D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAgC;IAEhC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAEjE,wBAAwB;IACxB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,eAAe,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE/F,uBAAuB;IACvB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA+B;QACzE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,YAAY,EAAE,oBAAoB;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC;oBACnG,KAAK,EAAE,YAAY;iBACpB;gBACD;oBACE,IAAI,EAAE,0BAA0B,GAAG,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC;oBAC7E,KAAK,EAAE,iBAAiB;iBACzB;gBACD;oBACE,IAAI,EAAE,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;oBACnE,KAAK,EAAE,cAAc;iBACtB;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAEzC,sBAAsB;IACtB,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,gEAAgE;IAChE,IAAI,QAAQ,KAAK,YAAY,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,0DAA0D;YAC1D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACxF,OAAO,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB;QAC/D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAC7C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC,CAAC;IAE3G,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA0B;QAClE;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,uCAAuC;YAChD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,uEAAuE;gBACvE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;gBAC3F,CAAC;gBAED,kDAAkD;gBAClD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;gBACnG,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW;SACzC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACpC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,MAAM,iCAAiC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5G,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,sBAAsB,CAAC,UAAkB,EAAE,MAAc;IACtE,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,gBAAgB,GAAG,EAAE;QACzC,CAAC,CAAC,IAAI,gBAAgB,GAAG;QACzB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,GAAG,CAAC;IAE5C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,UAAU,WAAW,CAAC,CAAC,CAAC;IAChF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,aAAa,KAAK,gBAAgB,WAAW,CAAC,CAAC,CAAC;IAE5F,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAyB;QACjE;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,cAAc,UAAU,YAAY;YAC7C,OAAO,EAAE,KAAK,CAAC,mCAAmC;SACnD;KACF,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,SAAS,CAAC;AAChC,CAAC"}
@@ -15,12 +15,15 @@ import type { SupportedLanguage } from '../../../core/i18n/types.js';
15
15
  */
16
16
  export declare function checkExistingAzureDevOpsCredentials(projectPath: string): Promise<ExistingCredentials | null>;
17
17
  /**
18
- * Prompt user for Azure DevOps credentials
18
+ * Prompt user for Azure DevOps credentials with cache support
19
+ *
20
+ * NEW (v0.24.0): Caches last used organization/project for quick re-initialization
19
21
  *
20
22
  * @param language - User's language
23
+ * @param projectRoot - Project root path (optional, for cache manager)
21
24
  * @returns Credentials or null if skipped
22
25
  */
23
- export declare function promptAzureDevOpsCredentials(language: SupportedLanguage): Promise<AzureDevOpsCredentials | null>;
26
+ export declare function promptAzureDevOpsCredentials(language: SupportedLanguage, projectRoot?: string): Promise<AzureDevOpsCredentials | null>;
24
27
  /**
25
28
  * Validate Azure DevOps connection
26
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ado.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/ado.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIrE;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA2BrC;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAsFxC;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,sBAAsB,EACnC,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA+D3B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,sBAAsB,GAClC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAevC;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAS9E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAY7E"}
1
+ {"version":3,"file":"ado.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/ado.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIrE;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA2BrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA0IxC;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,sBAAsB,EACnC,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA+D3B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,sBAAsB,GAClC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAevC;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAS9E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAY7E"}