specweave 0.8.19 → 0.8.21

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 (40) hide show
  1. package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
  2. package/dist/cli/helpers/issue-tracker/ado.js +23 -3
  3. package/dist/cli/helpers/issue-tracker/ado.js.map +1 -1
  4. package/dist/cli/helpers/issue-tracker/types.d.ts +4 -0
  5. package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  6. package/dist/cli/helpers/issue-tracker/types.js.map +1 -1
  7. package/dist/core/credentials-manager.d.ts +4 -0
  8. package/dist/core/credentials-manager.d.ts.map +1 -1
  9. package/dist/core/credentials-manager.js +72 -7
  10. package/dist/core/credentials-manager.js.map +1 -1
  11. package/dist/core/sync/folder-mapper.d.ts +71 -0
  12. package/dist/core/sync/folder-mapper.d.ts.map +1 -0
  13. package/dist/core/sync/folder-mapper.js +168 -0
  14. package/dist/core/sync/folder-mapper.js.map +1 -0
  15. package/dist/core/sync/profile-validator.d.ts +52 -0
  16. package/dist/core/sync/profile-validator.d.ts.map +1 -0
  17. package/dist/core/sync/profile-validator.js +225 -0
  18. package/dist/core/sync/profile-validator.js.map +1 -0
  19. package/dist/core/types/sync-profile.d.ts +52 -2
  20. package/dist/core/types/sync-profile.d.ts.map +1 -1
  21. package/dist/integrations/ado/ado-client.d.ts +4 -0
  22. package/dist/integrations/ado/ado-client.d.ts.map +1 -1
  23. package/dist/integrations/ado/ado-client.js +18 -0
  24. package/dist/integrations/ado/ado-client.js.map +1 -1
  25. package/dist/utils/env-multi-project-parser.d.ts +22 -12
  26. package/dist/utils/env-multi-project-parser.d.ts.map +1 -1
  27. package/dist/utils/env-multi-project-parser.js +31 -34
  28. package/dist/utils/env-multi-project-parser.js.map +1 -1
  29. package/dist/utils/string-utils.d.ts +40 -0
  30. package/dist/utils/string-utils.d.ts.map +1 -0
  31. package/dist/utils/string-utils.js +58 -0
  32. package/dist/utils/string-utils.js.map +1 -0
  33. package/package.json +1 -1
  34. package/plugins/specweave-ado/lib/project-selector.d.ts +42 -0
  35. package/plugins/specweave-ado/lib/project-selector.d.ts.map +1 -0
  36. package/plugins/specweave-ado/lib/project-selector.js +211 -0
  37. package/plugins/specweave-ado/lib/project-selector.js.map +1 -0
  38. package/plugins/specweave-ado/lib/project-selector.ts +317 -0
  39. package/plugins/specweave-github/lib/github-client.ts +28 -0
  40. package/plugins/specweave-github/lib/repo-selector.ts +329 -0
@@ -1 +1 @@
1
- {"version":3,"file":"env-multi-project-parser.js","sourceRoot":"","sources":["../../src/utils/env-multi-project-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-multi-project-parser.js","sourceRoot":"","sources":["../../src/utils/env-multi-project-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * String Utilities
3
+ *
4
+ * Utilities for string manipulation and formatting
5
+ */
6
+ /**
7
+ * Convert a string to kebab-case (lowercase with hyphens)
8
+ *
9
+ * Examples:
10
+ * - "Platform Engineering Team" → "platform-engineering-team"
11
+ * - "FRONTEND" → "frontend"
12
+ * - "League Scheduler Team" → "league-scheduler-team"
13
+ *
14
+ * @param str - Input string to slugify
15
+ * @returns Kebab-case string suitable for folder names
16
+ */
17
+ export declare function slugify(str: string): string;
18
+ /**
19
+ * Parse comma-separated values and trim whitespace
20
+ *
21
+ * Examples:
22
+ * - "Team A, Team B, Team C" → ["Team A", "Team B", "Team C"]
23
+ * - "FRONTEND,BACKEND,QA" → ["FRONTEND", "BACKEND", "QA"]
24
+ *
25
+ * @param input - Comma-separated string
26
+ * @returns Array of trimmed strings (empty strings removed)
27
+ */
28
+ export declare function parseCommaSeparated(input: string): string[];
29
+ /**
30
+ * Convert kebab-case to Title Case
31
+ *
32
+ * Examples:
33
+ * - "platform-engineering-team" → "Platform Engineering Team"
34
+ * - "frontend" → "Frontend"
35
+ *
36
+ * @param str - Kebab-case string
37
+ * @returns Title Case string
38
+ */
39
+ export declare function unslugify(str: string): string;
40
+ //# sourceMappingURL=string-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../src/utils/string-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAK3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * String Utilities
3
+ *
4
+ * Utilities for string manipulation and formatting
5
+ */
6
+ /**
7
+ * Convert a string to kebab-case (lowercase with hyphens)
8
+ *
9
+ * Examples:
10
+ * - "Platform Engineering Team" → "platform-engineering-team"
11
+ * - "FRONTEND" → "frontend"
12
+ * - "League Scheduler Team" → "league-scheduler-team"
13
+ *
14
+ * @param str - Input string to slugify
15
+ * @returns Kebab-case string suitable for folder names
16
+ */
17
+ export function slugify(str) {
18
+ return str
19
+ .toLowerCase()
20
+ .trim()
21
+ .replace(/[^\w\s-]/g, '') // Remove non-word chars except spaces and hyphens
22
+ .replace(/[\s_]+/g, '-') // Replace spaces and underscores with hyphens
23
+ .replace(/-+/g, '-') // Replace multiple hyphens with single hyphen
24
+ .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens
25
+ }
26
+ /**
27
+ * Parse comma-separated values and trim whitespace
28
+ *
29
+ * Examples:
30
+ * - "Team A, Team B, Team C" → ["Team A", "Team B", "Team C"]
31
+ * - "FRONTEND,BACKEND,QA" → ["FRONTEND", "BACKEND", "QA"]
32
+ *
33
+ * @param input - Comma-separated string
34
+ * @returns Array of trimmed strings (empty strings removed)
35
+ */
36
+ export function parseCommaSeparated(input) {
37
+ return input
38
+ .split(',')
39
+ .map((s) => s.trim())
40
+ .filter((s) => s.length > 0);
41
+ }
42
+ /**
43
+ * Convert kebab-case to Title Case
44
+ *
45
+ * Examples:
46
+ * - "platform-engineering-team" → "Platform Engineering Team"
47
+ * - "frontend" → "Frontend"
48
+ *
49
+ * @param str - Kebab-case string
50
+ * @returns Title Case string
51
+ */
52
+ export function unslugify(str) {
53
+ return str
54
+ .split('-')
55
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
56
+ .join(' ');
57
+ }
58
+ //# sourceMappingURL=string-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/utils/string-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAG;SACP,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAE,kDAAkD;SAC5E,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAG,8CAA8C;SACxE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAO,8CAA8C;SACxE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAE,kCAAkC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACzE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "0.8.19",
3
+ "version": "0.8.21",
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",
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ADO Project Selector with Pagination
3
+ *
4
+ * Features:
5
+ * - Fetches all ADO projects via API
6
+ * - Interactive multi-select with search
7
+ * - Manual project name entry (comma-separated)
8
+ * - Handles large project lists (50+ projects)
9
+ * - Validates project names
10
+ */
11
+ import { AdoClient } from '../../../src/integrations/ado/ado-client.js';
12
+ export interface ProjectSelectionResult {
13
+ selectedNames: string[];
14
+ method: 'interactive' | 'manual' | 'all';
15
+ }
16
+ export interface ProjectSelectorOptions {
17
+ /** Allow manual entry of project names */
18
+ allowManualEntry?: boolean;
19
+ /** Allow "Select All" option */
20
+ allowSelectAll?: boolean;
21
+ /** Pre-select these project names */
22
+ preSelected?: string[];
23
+ /** Minimum projects to select (0 = optional) */
24
+ minSelection?: number;
25
+ /** Maximum projects to select (undefined = unlimited) */
26
+ maxSelection?: number;
27
+ /** Page size for pagination */
28
+ pageSize?: number;
29
+ }
30
+ /**
31
+ * Fetch all ADO projects from API
32
+ */
33
+ export declare function fetchAllAdoProjects(client: AdoClient): Promise<any[]>;
34
+ /**
35
+ * Interactive project selector with search and pagination
36
+ */
37
+ export declare function selectAdoProjects(client: AdoClient, options?: ProjectSelectorOptions): Promise<ProjectSelectionResult>;
38
+ /**
39
+ * Quick project selector - select single project
40
+ */
41
+ export declare function selectSingleAdoProject(client: AdoClient, message?: string): Promise<string>;
42
+ //# sourceMappingURL=project-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-selector.d.ts","sourceRoot":"","sources":["project-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAMxE,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,aAAa,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,gCAAgC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CAahB;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAuEjC;AAyJD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,MAAuC,GAC/C,OAAO,CAAC,MAAM,CAAC,CASjB"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * ADO Project Selector with Pagination
3
+ *
4
+ * Features:
5
+ * - Fetches all ADO projects via API
6
+ * - Interactive multi-select with search
7
+ * - Manual project name entry (comma-separated)
8
+ * - Handles large project lists (50+ projects)
9
+ * - Validates project names
10
+ */
11
+ import inquirer from 'inquirer';
12
+ // ============================================================================
13
+ // ADO Project Fetching
14
+ // ============================================================================
15
+ /**
16
+ * Fetch all ADO projects from API
17
+ */
18
+ export async function fetchAllAdoProjects(client) {
19
+ console.log('🔍 Fetching Azure DevOps projects...');
20
+ try {
21
+ const projects = await client.getProjects();
22
+ console.log(`✅ Found ${projects.length} Azure DevOps projects\n`);
23
+ return projects;
24
+ }
25
+ catch (error) {
26
+ console.error('❌ Failed to fetch ADO projects:', error.message);
27
+ throw error;
28
+ }
29
+ }
30
+ // ============================================================================
31
+ // Interactive Project Selection
32
+ // ============================================================================
33
+ /**
34
+ * Interactive project selector with search and pagination
35
+ */
36
+ export async function selectAdoProjects(client, options = {}) {
37
+ const { allowManualEntry = true, allowSelectAll = true, preSelected = [], minSelection = 1, maxSelection, pageSize = 15, } = options;
38
+ // Fetch all projects
39
+ const allProjects = await fetchAllAdoProjects(client);
40
+ if (allProjects.length === 0) {
41
+ console.log('⚠️ No Azure DevOps projects found');
42
+ return {
43
+ selectedNames: [],
44
+ method: 'interactive',
45
+ };
46
+ }
47
+ // Show project overview
48
+ console.log('📋 Available Azure DevOps Projects:\n');
49
+ console.log(` Total: ${allProjects.length} projects\n`);
50
+ // Decide selection method
51
+ const { selectionMethod } = await inquirer.prompt([
52
+ {
53
+ type: 'list',
54
+ name: 'selectionMethod',
55
+ message: 'How would you like to select projects?',
56
+ choices: [
57
+ {
58
+ name: `📋 Interactive (browse and select from ${allProjects.length} projects)`,
59
+ value: 'interactive',
60
+ },
61
+ {
62
+ name: '✏️ Manual entry (type project names)',
63
+ value: 'manual',
64
+ },
65
+ ...(allowSelectAll
66
+ ? [
67
+ {
68
+ name: `✨ Select all (${allProjects.length} projects)`,
69
+ value: 'all',
70
+ },
71
+ ]
72
+ : []),
73
+ ],
74
+ },
75
+ ]);
76
+ if (selectionMethod === 'all') {
77
+ return {
78
+ selectedNames: allProjects.map((p) => p.name),
79
+ method: 'all',
80
+ };
81
+ }
82
+ if (selectionMethod === 'manual') {
83
+ return await manualProjectEntry(allProjects, minSelection, maxSelection);
84
+ }
85
+ // Interactive selection
86
+ return await interactiveProjectSelection(allProjects, preSelected, minSelection, maxSelection, pageSize);
87
+ }
88
+ /**
89
+ * Interactive project selection with checkbox
90
+ */
91
+ async function interactiveProjectSelection(allProjects, preSelected, minSelection, maxSelection, pageSize) {
92
+ console.log('💡 Use <space> to select, <a> to toggle all, <i> to invert\n');
93
+ const choices = allProjects.map((p) => ({
94
+ name: formatProjectChoice(p),
95
+ value: p.name,
96
+ checked: preSelected.includes(p.name),
97
+ }));
98
+ // Add manual entry option at the end
99
+ choices.push(new inquirer.Separator(), {
100
+ name: '✏️ Enter project names manually instead',
101
+ value: '__MANUAL__',
102
+ checked: false,
103
+ });
104
+ const { selectedNames } = await inquirer.prompt([
105
+ {
106
+ type: 'checkbox',
107
+ name: 'selectedNames',
108
+ message: `Select Azure DevOps projects (${minSelection}${maxSelection ? `-${maxSelection}` : '+'} required):`,
109
+ choices,
110
+ pageSize,
111
+ loop: false,
112
+ validate: (selected) => {
113
+ const actualSelected = selected.filter((k) => k !== '__MANUAL__');
114
+ if (actualSelected.length < minSelection) {
115
+ return `Please select at least ${minSelection} project(s)`;
116
+ }
117
+ if (maxSelection && actualSelected.length > maxSelection) {
118
+ return `Please select at most ${maxSelection} project(s)`;
119
+ }
120
+ return true;
121
+ },
122
+ },
123
+ ]);
124
+ // Check if user chose manual entry
125
+ if (selectedNames.includes('__MANUAL__')) {
126
+ return await manualProjectEntry(allProjects, minSelection, maxSelection);
127
+ }
128
+ console.log(`\n✅ Selected ${selectedNames.length} projects: ${selectedNames.join(', ')}\n`);
129
+ return {
130
+ selectedNames,
131
+ method: 'interactive',
132
+ };
133
+ }
134
+ /**
135
+ * Manual project name entry (comma-separated)
136
+ */
137
+ async function manualProjectEntry(allProjects, minSelection, maxSelection) {
138
+ console.log('\n📝 Enter project names manually\n');
139
+ console.log('💡 Format: Comma-separated project names (e.g., AI Meme Generator,Project 2,Project 3)\n');
140
+ if (allProjects.length > 0) {
141
+ console.log('Available project names:');
142
+ console.log(allProjects
143
+ .map((p) => p.name)
144
+ .join(', ')
145
+ .substring(0, 100) + (allProjects.length > 20 ? '...' : ''));
146
+ console.log('');
147
+ }
148
+ const { manualNames } = await inquirer.prompt([
149
+ {
150
+ type: 'input',
151
+ name: 'manualNames',
152
+ message: 'Project names:',
153
+ validate: (input) => {
154
+ if (!input.trim()) {
155
+ return 'Please enter at least one project name';
156
+ }
157
+ const names = input
158
+ .split(',')
159
+ .map((n) => n.trim())
160
+ .filter((n) => n.length > 0);
161
+ if (names.length < minSelection) {
162
+ return `Please enter at least ${minSelection} project name(s)`;
163
+ }
164
+ if (maxSelection && names.length > maxSelection) {
165
+ return `Please enter at most ${maxSelection} project name(s)`;
166
+ }
167
+ return true;
168
+ },
169
+ },
170
+ ]);
171
+ const selectedNames = manualNames
172
+ .split(',')
173
+ .map((n) => n.trim())
174
+ .filter((n) => n.length > 0);
175
+ // Warn about unknown projects
176
+ const knownNames = allProjects.map((p) => p.name);
177
+ const unknownNames = selectedNames.filter((n) => !knownNames.includes(n));
178
+ if (unknownNames.length > 0) {
179
+ console.log(`\n⚠️ Unknown project names (will be used anyway): ${unknownNames.join(', ')}`);
180
+ console.log(' Make sure these projects exist in your Azure DevOps organization.\n');
181
+ }
182
+ console.log(`✅ Selected ${selectedNames.length} projects: ${selectedNames.join(', ')}\n`);
183
+ return {
184
+ selectedNames,
185
+ method: 'manual',
186
+ };
187
+ }
188
+ // ============================================================================
189
+ // Helpers
190
+ // ============================================================================
191
+ /**
192
+ * Format project choice for display
193
+ */
194
+ function formatProjectChoice(project) {
195
+ const visibility = project.visibility || 'private';
196
+ const state = project.state || 'wellFormed';
197
+ return `${project.name.padEnd(30)} - ${project.description || 'No description'} (${visibility}, ${state})`;
198
+ }
199
+ /**
200
+ * Quick project selector - select single project
201
+ */
202
+ export async function selectSingleAdoProject(client, message = 'Select Azure DevOps project:') {
203
+ const result = await selectAdoProjects(client, {
204
+ allowManualEntry: true,
205
+ allowSelectAll: false,
206
+ minSelection: 1,
207
+ maxSelection: 1,
208
+ });
209
+ return result.selectedNames[0];
210
+ }
211
+ //# sourceMappingURL=project-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-selector.js","sourceRoot":"","sources":["project-selector.ts"],"names":[],"mappings":"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"}