specweave 0.28.7 → 0.28.11

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 (39) hide show
  1. package/dist/src/cli/commands/init.d.ts.map +1 -1
  2. package/dist/src/cli/commands/init.js +17 -1
  3. package/dist/src/cli/commands/init.js.map +1 -1
  4. package/dist/src/cli/helpers/init/index.d.ts +1 -0
  5. package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
  6. package/dist/src/cli/helpers/init/index.js +2 -0
  7. package/dist/src/cli/helpers/init/index.js.map +1 -1
  8. package/dist/src/cli/helpers/init/translation-config.d.ts +53 -0
  9. package/dist/src/cli/helpers/init/translation-config.d.ts.map +1 -0
  10. package/dist/src/cli/helpers/init/translation-config.js +216 -0
  11. package/dist/src/cli/helpers/init/translation-config.js.map +1 -0
  12. package/dist/src/cli/helpers/init/types.d.ts +33 -0
  13. package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
  14. package/dist/src/core/config/types.d.ts +115 -0
  15. package/dist/src/core/config/types.d.ts.map +1 -1
  16. package/dist/src/core/config/types.js.map +1 -1
  17. package/dist/src/core/repo-structure/repo-id-generator.d.ts +24 -95
  18. package/dist/src/core/repo-structure/repo-id-generator.d.ts.map +1 -1
  19. package/dist/src/core/repo-structure/repo-id-generator.js +31 -223
  20. package/dist/src/core/repo-structure/repo-id-generator.js.map +1 -1
  21. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  22. package/dist/src/core/repo-structure/repo-structure-manager.js +12 -46
  23. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  24. package/dist/src/utils/multi-repo-detector.d.ts +85 -0
  25. package/dist/src/utils/multi-repo-detector.d.ts.map +1 -0
  26. package/dist/src/utils/multi-repo-detector.js +264 -0
  27. package/dist/src/utils/multi-repo-detector.js.map +1 -0
  28. package/package.json +1 -1
  29. package/plugins/specweave/agents/pm/AGENT.md +141 -0
  30. package/plugins/specweave/commands/specweave-done.md +28 -0
  31. package/plugins/specweave/hooks/hooks.json +12 -0
  32. package/plugins/specweave/hooks/post-increment-completion.sh +59 -0
  33. package/plugins/specweave/hooks/post-increment-planning.sh +95 -51
  34. package/plugins/specweave/hooks/pre-task-completion-edit.sh +355 -0
  35. package/plugins/specweave/lib/hooks/sync-living-docs.js +43 -0
  36. package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +219 -0
  37. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +18 -0
  38. package/plugins/specweave-infrastructure/skills/hetzner-provisioner/README.md +1 -1
  39. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +27 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiSH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,OAAO,EAAE,KAAK;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO;KAClB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM;KACjB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACtB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK,EAAE,aAAa;QACjC,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,EAAE;KAClB;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2aH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,OAAO,EAAE,KAAK;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO;KAClB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM;KACjB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACtB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK,EAAE,aAAa;QACjC,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,EAAE;KAClB;CACF,CAAC"}
@@ -1,120 +1,49 @@
1
1
  /**
2
2
  * Repository ID Generator
3
3
  *
4
- * Auto-generates clean, unique repository IDs from repository names.
5
- * Strips common suffixes and takes last segment for readable IDs.
4
+ * Simple approach: Repository name IS the project ID (after normalization).
6
5
  *
7
- * Examples:
8
- * "my-saas-frontend-app" "frontend"
9
- * "acme-api-gateway-service" "gateway"
10
- * "backend-service" "backend"
6
+ * Why?
7
+ * - Repository names are already unique within an organization
8
+ * - No complex suffix-stripping = no collisions
9
+ * - Project folder matches repo name (predictable)
11
10
  *
12
11
  * @module repo-id-generator
13
12
  */
14
13
  /**
15
- * Validation result for repository IDs
16
- */
17
- export interface ValidationResult {
18
- valid: boolean;
19
- error?: string;
20
- }
21
- /**
22
- * Result of ensuring unique ID
23
- */
24
- export interface UniqueIdResult {
25
- id: string;
26
- wasModified: boolean;
27
- }
28
- /**
29
- * Generate a clean repository ID from a repository name.
14
+ * Normalize a repository name to a valid project ID.
30
15
  *
31
- * Algorithm (REVISED for correct service-type extraction):
16
+ * Rules:
32
17
  * 1. Convert to lowercase
33
- * 2. Strip common prefixes (sw-, app-, web-, mobile-, api-)
34
- * 3. Split by hyphens
35
- * 4. Take the last segment (this is usually the service type: frontend, backend, etc.)
36
- * 5. If that segment is a known suffix (-app, -service), take the SECOND-TO-LAST segment instead
37
- *
38
- * This correctly identifies the service type regardless of suffixes.
39
- *
40
- * Examples:
41
- * - "sw-web-calc-frontend" → remove "sw-" → "web-calc-frontend" → last segment "frontend" ✓
42
- * - "sw-web-calc-frontend-app" → remove "sw-" → "web-calc-frontend-app" → last "app" (suffix) → take "frontend" ✓
43
- * - "acme-api-gateway-service" → remove "api-" → "gateway-service" → last "service" (suffix) → take "gateway" ✓
44
- * - "backend-service" → no prefix → "backend-service" → last "service" (suffix) → take "backend" ✓
45
- *
46
- * @param repoName - Full repository name
47
- * @returns Clean repository ID
48
- */
49
- export declare function generateRepoId(repoName: string): string;
50
- /**
51
- * Generate a context-aware repository ID with conflict detection.
52
- *
53
- * This is a smarter version that considers existing IDs and tries different strategies:
54
- * 1. Try last segment (e.g., "calc-frontend" → "frontend")
55
- * 2. If conflict, try abbreviated last segment (e.g., "frontend" → "fe")
56
- * 3. If still conflict, try last two segments (e.g., "calc-fe")
57
- * 4. If still conflict, use full cleaned name
58
- *
59
- * @param repoName - Full repository name
60
- * @param existingNames - Array of existing repository names (for conflict detection)
61
- * @returns Best available repository ID
18
+ * 2. Replace underscores and spaces with hyphens
19
+ * 3. Remove invalid characters (keep only a-z, 0-9, hyphens)
20
+ * 4. Collapse multiple hyphens
21
+ * 5. Trim leading/trailing hyphens
62
22
  *
63
23
  * @example
64
- * generateRepoIdSmart("sw-web-calc-frontend", ["sw-mobile-calc-frontend"])
65
- * // Returns "calc-fe" (avoids "frontend" conflict)
24
+ * normalizeRepoName('My-SaaS-Frontend') // 'my-saas-frontend'
25
+ * normalizeRepoName('sw_qr_menu_be') // 'sw-qr-menu-be'
66
26
  */
67
- export declare function generateRepoIdSmart(repoName: string, existingNames?: string[]): string;
68
- /**
69
- * Ensure repository ID is unique by appending numeric suffix if needed.
70
- *
71
- * @param baseId - Base repository ID to make unique
72
- * @param existingIds - Set of already-used IDs
73
- * @returns Unique ID with modification flag
74
- *
75
- * @example
76
- * ensureUniqueId("frontend", new Set()) // { id: "frontend", wasModified: false }
77
- * ensureUniqueId("frontend", new Set(["frontend"])) // { id: "frontend-2", wasModified: true }
78
- * ensureUniqueId("frontend", new Set(["frontend", "frontend-2"])) // { id: "frontend-3", wasModified: true }
79
- */
80
- export declare function ensureUniqueId(baseId: string, existingIds: Set<string>): UniqueIdResult;
27
+ export declare function normalizeRepoName(repoName: string): string;
81
28
  /**
82
29
  * Validate a repository ID against naming rules.
83
30
  *
84
31
  * Rules:
85
- * - No commas (prevents "parent,fe,be" input error)
86
- * - Lowercase letters, numbers, and hyphens only
32
+ * - Lowercase letters, numbers, hyphens only
87
33
  * - Must start with a letter
88
34
  * - Length 1-50 characters
89
- * - No spaces or special characters
90
- *
91
- * @param id - Repository ID to validate
92
- * @returns Validation result with error message if invalid
93
- *
94
- * @example
95
- * validateRepoId("frontend-app") // { valid: true }
96
- * validateRepoId("parent,fe,be") // { valid: false, error: "..." }
97
- * validateRepoId("MyRepo") // { valid: false, error: "..." }
35
+ * - No commas, spaces, or special characters
98
36
  */
99
- export declare function validateRepoId(id: string): ValidationResult;
37
+ export declare function validateRepoId(id: string): {
38
+ valid: boolean;
39
+ error?: string;
40
+ };
100
41
  /**
101
- * Suggest repository name for multi-repo setup based on index.
102
- *
103
- * Uses common patterns for different repository types:
104
- * - Index 0: frontend
105
- * - Index 1: backend
106
- * - Index 2: mobile/api
107
- * - Index 3+: infra, shared, worker, etc.
108
- *
109
- * @param projectName - Base project name (e.g., "my-saas" or "acme-platform")
110
- * @param repoIndex - Zero-based repository index
111
- * @param totalRepos - Total number of repositories (helps choose patterns)
112
- * @returns Suggested repository name
42
+ * Suggest repository name for multi-repo setup.
113
43
  *
114
44
  * @example
115
- * suggestRepoName("my-saas", 0, 3) // "my-saas-frontend"
116
- * suggestRepoName("my-saas", 1, 3) // "my-saas-backend"
117
- * suggestRepoName("my-saas", 2, 3) // "my-saas-mobile"
45
+ * suggestRepoName('my-saas', 0, 3) // 'my-saas-frontend'
46
+ * suggestRepoName('my-saas', 1, 3) // 'my-saas-backend'
118
47
  */
119
- export declare function suggestRepoName(projectName: string, repoIndex: number, totalRepos: number): string;
48
+ export declare function suggestRepoName(projectName: string, repoIndex: number, _totalRepos: number): string;
120
49
  //# sourceMappingURL=repo-id-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-id-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-id-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkCH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+BvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,MAAM,CA+D1F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,cAAc,CAYvF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAqC3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAyBlG"}
1
+ {"version":3,"file":"repo-id-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-id-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuB7E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAInG"}
@@ -1,274 +1,82 @@
1
1
  /**
2
2
  * Repository ID Generator
3
3
  *
4
- * Auto-generates clean, unique repository IDs from repository names.
5
- * Strips common suffixes and takes last segment for readable IDs.
4
+ * Simple approach: Repository name IS the project ID (after normalization).
6
5
  *
7
- * Examples:
8
- * "my-saas-frontend-app" "frontend"
9
- * "acme-api-gateway-service" "gateway"
10
- * "backend-service" "backend"
6
+ * Why?
7
+ * - Repository names are already unique within an organization
8
+ * - No complex suffix-stripping = no collisions
9
+ * - Project folder matches repo name (predictable)
11
10
  *
12
11
  * @module repo-id-generator
13
12
  */
14
13
  /**
15
- * Common repository name suffixes to strip
16
- */
17
- const REPO_SUFFIXES = [
18
- '-app',
19
- '-service',
20
- '-api',
21
- '-frontend',
22
- '-backend',
23
- '-web',
24
- '-mobile'
25
- ];
26
- /**
27
- * Common word abbreviations for cleaner IDs
28
- */
29
- const WORD_ABBREVIATIONS = {
30
- 'frontend': 'fe',
31
- 'backend': 'be',
32
- 'service': 'svc',
33
- 'database': 'db',
34
- 'application': 'app',
35
- 'interface': 'ui',
36
- 'authentication': 'auth',
37
- 'authorization': 'authz',
38
- 'administration': 'admin',
39
- 'configuration': 'config',
40
- 'management': 'mgmt',
41
- 'repository': 'repo',
42
- 'documentation': 'docs'
43
- };
44
- /**
45
- * Generate a clean repository ID from a repository name.
14
+ * Normalize a repository name to a valid project ID.
46
15
  *
47
- * Algorithm (REVISED for correct service-type extraction):
16
+ * Rules:
48
17
  * 1. Convert to lowercase
49
- * 2. Strip common prefixes (sw-, app-, web-, mobile-, api-)
50
- * 3. Split by hyphens
51
- * 4. Take the last segment (this is usually the service type: frontend, backend, etc.)
52
- * 5. If that segment is a known suffix (-app, -service), take the SECOND-TO-LAST segment instead
53
- *
54
- * This correctly identifies the service type regardless of suffixes.
55
- *
56
- * Examples:
57
- * - "sw-web-calc-frontend" → remove "sw-" → "web-calc-frontend" → last segment "frontend" ✓
58
- * - "sw-web-calc-frontend-app" → remove "sw-" → "web-calc-frontend-app" → last "app" (suffix) → take "frontend" ✓
59
- * - "acme-api-gateway-service" → remove "api-" → "gateway-service" → last "service" (suffix) → take "gateway" ✓
60
- * - "backend-service" → no prefix → "backend-service" → last "service" (suffix) → take "backend" ✓
61
- *
62
- * @param repoName - Full repository name
63
- * @returns Clean repository ID
64
- */
65
- export function generateRepoId(repoName) {
66
- if (!repoName) {
67
- return '';
68
- }
69
- let cleaned = repoName.toLowerCase();
70
- // Step 1: Strip common prefixes
71
- const prefixes = [/^sw-/, /^app-/, /^web-/, /^mobile-/, /^api-/];
72
- for (const prefix of prefixes) {
73
- cleaned = cleaned.replace(prefix, '');
74
- }
75
- // Step 2: Split by hyphen
76
- const segments = cleaned.split('-').filter(seg => seg.length > 0);
77
- if (segments.length === 0) {
78
- return '';
79
- }
80
- // Step 3: Take last segment, but if it's a known suffix word, take second-to-last
81
- const lastSegment = segments[segments.length - 1];
82
- // Check if last segment is a suffix keyword (without the hyphen)
83
- const suffixKeywords = ['app', 'service', 'api', 'web', 'mobile'];
84
- if (suffixKeywords.includes(lastSegment) && segments.length >= 2) {
85
- return segments[segments.length - 2];
86
- }
87
- return lastSegment;
88
- }
89
- /**
90
- * Generate a context-aware repository ID with conflict detection.
91
- *
92
- * This is a smarter version that considers existing IDs and tries different strategies:
93
- * 1. Try last segment (e.g., "calc-frontend" → "frontend")
94
- * 2. If conflict, try abbreviated last segment (e.g., "frontend" → "fe")
95
- * 3. If still conflict, try last two segments (e.g., "calc-fe")
96
- * 4. If still conflict, use full cleaned name
97
- *
98
- * @param repoName - Full repository name
99
- * @param existingNames - Array of existing repository names (for conflict detection)
100
- * @returns Best available repository ID
18
+ * 2. Replace underscores and spaces with hyphens
19
+ * 3. Remove invalid characters (keep only a-z, 0-9, hyphens)
20
+ * 4. Collapse multiple hyphens
21
+ * 5. Trim leading/trailing hyphens
101
22
  *
102
23
  * @example
103
- * generateRepoIdSmart("sw-web-calc-frontend", ["sw-mobile-calc-frontend"])
104
- * // Returns "calc-fe" (avoids "frontend" conflict)
24
+ * normalizeRepoName('My-SaaS-Frontend') // 'my-saas-frontend'
25
+ * normalizeRepoName('sw_qr_menu_be') // 'sw-qr-menu-be'
105
26
  */
106
- export function generateRepoIdSmart(repoName, existingNames = []) {
107
- if (!repoName) {
27
+ export function normalizeRepoName(repoName) {
28
+ if (!repoName)
108
29
  return '';
109
- }
110
- // Generate base ID using standard algorithm
111
- const baseId = generateRepoId(repoName);
112
- // If no existing names, return base ID
113
- if (existingNames.length === 0) {
114
- return baseId;
115
- }
116
- // Generate IDs from existing names to check for conflicts
117
- const existingIds = new Set(existingNames.map(name => generateRepoId(name)));
118
- // Strategy 1: Try base ID
119
- if (!existingIds.has(baseId)) {
120
- return baseId;
121
- }
122
- // Strategy 2: Try abbreviated form (if available)
123
- const abbreviated = WORD_ABBREVIATIONS[baseId];
124
- if (abbreviated && !existingIds.has(abbreviated)) {
125
- return abbreviated;
126
- }
127
- // Strategy 3: Try last two segments
128
- let cleaned = repoName.toLowerCase();
129
- // Strip prefixes
130
- const prefixes = [/^sw-/, /^app-/, /^web-/, /^mobile-/, /^api-/];
131
- for (const prefix of prefixes) {
132
- cleaned = cleaned.replace(prefix, '');
133
- }
134
- const segments = cleaned.split('-').filter(seg => seg.length > 0);
135
- if (segments.length >= 2) {
136
- // Remove suffix keywords from end if present
137
- const suffixKeywords = ['app', 'service', 'api', 'web', 'mobile'];
138
- const cleanedSegments = suffixKeywords.includes(segments[segments.length - 1])
139
- ? segments.slice(0, -1)
140
- : segments;
141
- if (cleanedSegments.length >= 2) {
142
- const lastTwo = cleanedSegments.slice(-2).join('-');
143
- if (!existingIds.has(lastTwo)) {
144
- return lastTwo;
145
- }
146
- // Try abbreviated last segment with penultimate
147
- const abbrevLast = WORD_ABBREVIATIONS[cleanedSegments[cleanedSegments.length - 1]] || cleanedSegments[cleanedSegments.length - 1];
148
- const lastTwoAbbrev = `${cleanedSegments[cleanedSegments.length - 2]}-${abbrevLast}`;
149
- if (!existingIds.has(lastTwoAbbrev)) {
150
- return lastTwoAbbrev;
151
- }
152
- }
153
- }
154
- // Strategy 4: Fall back to full cleaned name
155
- const finalSegments = segments.filter(seg => !['app', 'service', 'api'].includes(seg));
156
- return finalSegments.join('-') || baseId;
157
- }
158
- /**
159
- * Ensure repository ID is unique by appending numeric suffix if needed.
160
- *
161
- * @param baseId - Base repository ID to make unique
162
- * @param existingIds - Set of already-used IDs
163
- * @returns Unique ID with modification flag
164
- *
165
- * @example
166
- * ensureUniqueId("frontend", new Set()) // { id: "frontend", wasModified: false }
167
- * ensureUniqueId("frontend", new Set(["frontend"])) // { id: "frontend-2", wasModified: true }
168
- * ensureUniqueId("frontend", new Set(["frontend", "frontend-2"])) // { id: "frontend-3", wasModified: true }
169
- */
170
- export function ensureUniqueId(baseId, existingIds) {
171
- if (!existingIds.has(baseId)) {
172
- return { id: baseId, wasModified: false };
173
- }
174
- // Find first available suffix
175
- let counter = 2;
176
- while (existingIds.has(`${baseId}-${counter}`)) {
177
- counter++;
178
- }
179
- return { id: `${baseId}-${counter}`, wasModified: true };
30
+ return repoName
31
+ .toLowerCase()
32
+ .replace(/[_\s]+/g, '-')
33
+ .replace(/[^a-z0-9-]/g, '')
34
+ .replace(/-+/g, '-')
35
+ .replace(/^-|-$/g, '');
180
36
  }
181
37
  /**
182
38
  * Validate a repository ID against naming rules.
183
39
  *
184
40
  * Rules:
185
- * - No commas (prevents "parent,fe,be" input error)
186
- * - Lowercase letters, numbers, and hyphens only
41
+ * - Lowercase letters, numbers, hyphens only
187
42
  * - Must start with a letter
188
43
  * - Length 1-50 characters
189
- * - No spaces or special characters
190
- *
191
- * @param id - Repository ID to validate
192
- * @returns Validation result with error message if invalid
193
- *
194
- * @example
195
- * validateRepoId("frontend-app") // { valid: true }
196
- * validateRepoId("parent,fe,be") // { valid: false, error: "..." }
197
- * validateRepoId("MyRepo") // { valid: false, error: "..." }
44
+ * - No commas, spaces, or special characters
198
45
  */
199
46
  export function validateRepoId(id) {
200
- // Check empty
201
- if (!id || id.trim().length === 0) {
47
+ if (!id?.trim()) {
202
48
  return { valid: false, error: 'Repository ID cannot be empty' };
203
49
  }
204
- // Check length
205
50
  if (id.length > 50) {
206
51
  return { valid: false, error: 'Repository ID exceeds maximum length (50 characters)' };
207
52
  }
208
- // Check for commas (prevents "parent,fe,be" error)
209
53
  if (id.includes(',')) {
210
54
  return { valid: false, error: 'Repository ID cannot contain commas' };
211
55
  }
212
- // Check for spaces
213
56
  if (id.includes(' ')) {
214
57
  return { valid: false, error: 'Repository ID cannot contain spaces' };
215
58
  }
216
- // Check for uppercase letters
217
59
  if (id !== id.toLowerCase()) {
218
60
  return { valid: false, error: 'Repository ID must be lowercase' };
219
61
  }
220
- // Check starts with letter
221
62
  if (!/^[a-z]/.test(id)) {
222
63
  return { valid: false, error: 'Repository ID must start with a letter' };
223
64
  }
224
- // Check alphanumeric + hyphens only
225
65
  if (!/^[a-z][a-z0-9-]*$/.test(id)) {
226
- return { valid: false, error: 'Repository ID must contain only lowercase letters, numbers, and hyphens (alphanumeric)' };
66
+ return { valid: false, error: 'Repository ID must contain only lowercase letters, numbers, and hyphens' };
227
67
  }
228
68
  return { valid: true };
229
69
  }
230
70
  /**
231
- * Suggest repository name for multi-repo setup based on index.
232
- *
233
- * Uses common patterns for different repository types:
234
- * - Index 0: frontend
235
- * - Index 1: backend
236
- * - Index 2: mobile/api
237
- * - Index 3+: infra, shared, worker, etc.
238
- *
239
- * @param projectName - Base project name (e.g., "my-saas" or "acme-platform")
240
- * @param repoIndex - Zero-based repository index
241
- * @param totalRepos - Total number of repositories (helps choose patterns)
242
- * @returns Suggested repository name
71
+ * Suggest repository name for multi-repo setup.
243
72
  *
244
73
  * @example
245
- * suggestRepoName("my-saas", 0, 3) // "my-saas-frontend"
246
- * suggestRepoName("my-saas", 1, 3) // "my-saas-backend"
247
- * suggestRepoName("my-saas", 2, 3) // "my-saas-mobile"
74
+ * suggestRepoName('my-saas', 0, 3) // 'my-saas-frontend'
75
+ * suggestRepoName('my-saas', 1, 3) // 'my-saas-backend'
248
76
  */
249
- export function suggestRepoName(projectName, repoIndex, totalRepos) {
250
- // Common repository type patterns (order matters!)
251
- const repoTypePatterns = [
252
- 'frontend', // 0: Web/UI (most common first repo)
253
- 'backend', // 1: API/Server (most common second repo)
254
- 'mobile', // 2: Mobile app
255
- 'api', // 3: API gateway
256
- 'infra', // 4: Infrastructure/DevOps
257
- 'shared', // 5: Shared libraries
258
- 'worker', // 6: Background workers
259
- 'admin', // 7: Admin panel
260
- 'docs', // 8: Documentation site
261
- 'analytics' // 9: Analytics/reporting
262
- ];
263
- // For repos beyond our predefined patterns, use generic "service-N" naming
264
- let repoType;
265
- if (repoIndex < repoTypePatterns.length) {
266
- repoType = repoTypePatterns[repoIndex];
267
- }
268
- else {
269
- // Fallback for many repos: service-4, service-5, etc.
270
- repoType = `service-${repoIndex + 1}`;
271
- }
77
+ export function suggestRepoName(projectName, repoIndex, _totalRepos) {
78
+ const patterns = ['frontend', 'backend', 'mobile', 'api', 'infra', 'shared', 'worker', 'admin', 'docs', 'analytics'];
79
+ const repoType = repoIndex < patterns.length ? patterns[repoIndex] : `service-${repoIndex + 1}`;
272
80
  return `${projectName}-${repoType}`;
273
81
  }
274
82
  //# sourceMappingURL=repo-id-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-id-generator.js","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-id-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-id-generator.js","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-id-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,OAAO,QAAQ;SACZ,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yEAAyE,EAAE,CAAC;IAC5G,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,SAAiB,EAAE,WAAmB;IACzF,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrH,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,EAAE,CAAC;IAChG,OAAO,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-structure-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAoB;gBAE5B,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IASrD;;;;OAIG;IACG,eAAe,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkGjG;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;YACW,WAAW;IAgCzB;;OAEG;YACW,mBAAmB;IAwIjC;;;;;;;;;;;OAWG;YACW,kBAAkB;IAorBhC;;OAEG;YACW,cAAc;IAQ5B;;OAEG;YACW,iBAAiB;IAmF/B;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFpE;;OAEG;YACW,eAAe;IAwC7B;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;YACW,wBAAwB;IAmBtC;;;OAGG;YACW,qBAAqB;IAmEnC;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoEtE;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC3E"}
1
+ {"version":3,"file":"repo-structure-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAoB;gBAE5B,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IASrD;;;;OAIG;IACG,eAAe,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkGjG;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;YACW,WAAW;IAgCzB;;OAEG;YACW,mBAAmB;IAwIjC;;;;;;;;;;;OAWG;YACW,kBAAkB;IA6oBhC;;OAEG;YACW,cAAc;IAQ5B;;OAEG;YACW,iBAAiB;IAmF/B;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFpE;;OAEG;YACW,eAAe;IAwC7B;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;YACW,wBAAwB;IAmBtC;;;OAGG;YACW,qBAAqB;IAmEnC;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoEtE;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC3E"}
@@ -21,7 +21,7 @@ import { select, input, confirm, number } from '@inquirer/prompts';
21
21
  import ora from 'ora';
22
22
  import { execSync } from 'child_process';
23
23
  import { execFileNoThrowSync } from '../../utils/execFileNoThrow.js';
24
- import { generateRepoIdSmart, ensureUniqueId, validateRepoId, suggestRepoName } from './repo-id-generator.js';
24
+ import { normalizeRepoName, suggestRepoName } from './repo-id-generator.js';
25
25
  import { SetupStateManager } from './setup-state-manager.js';
26
26
  import { generateEnvFile } from '../../utils/env-file-generator.js';
27
27
  import { generateSetupSummary } from './setup-summary.js';
@@ -808,22 +808,22 @@ export class RepoStructureManager {
808
808
  const suggestedName = isDiscovered ? discoveredRepo.name : suggestRepoName(projectName, i, repoCount);
809
809
  // If discovered, auto-use without confirmation (repos exist on GitHub)
810
810
  if (isDiscovered) {
811
- const smartId = generateRepoIdSmart(discoveredRepo.name, configuredRepoNames);
812
- const { id: suggestedId } = ensureUniqueId(smartId, usedIds);
813
- console.log(chalk.green(` ✓ Using: ${chalk.bold(discoveredRepo.name)} ${chalk.gray(`(id: ${suggestedId})`)}`));
814
- usedIds.add(suggestedId);
811
+ // Use normalized repo name as ID (repo names are unique in GitHub)
812
+ const repoId = normalizeRepoName(discoveredRepo.name);
813
+ console.log(chalk.green(` ✓ Using: ${chalk.bold(discoveredRepo.name)} ${chalk.gray(`(id: ${repoId})`)}`));
814
+ usedIds.add(repoId);
815
815
  configuredRepoNames.push(discoveredRepo.name);
816
816
  config.repositories.push({
817
- id: suggestedId,
817
+ id: repoId,
818
818
  name: discoveredRepo.name,
819
819
  owner: discoveredRepo.owner,
820
820
  description: discoveredRepo.description || `${discoveredRepo.name} service`,
821
- path: discoveredRepo.name, // Use full repo name as folder (not short ID)
821
+ path: discoveredRepo.name,
822
822
  visibility: discoveredRepo.private ? 'private' : 'public',
823
- createOnGitHub: false, // Already exists!
823
+ createOnGitHub: false,
824
824
  isNested: useParent
825
825
  });
826
- continue; // Skip manual prompts
826
+ continue;
827
827
  }
828
828
  // Manual entry (original behavior)
829
829
  const repoName = await input({
@@ -859,43 +859,9 @@ export class RepoStructureManager {
859
859
  description: repoDescription,
860
860
  createOnGitHub: repoCreateOnGitHub
861
861
  };
862
- // Smart auto-generate ID from repository name (context-aware)
863
- const smartId = generateRepoIdSmart(repoAnswers.name, configuredRepoNames);
864
- const { id: suggestedId, wasModified } = ensureUniqueId(smartId, usedIds);
865
- // Auto-assign ID (no prompt unless conflict detected)
866
- let id = suggestedId;
867
- // Only prompt if ID was modified due to conflict
868
- if (wasModified) {
869
- console.log(chalk.yellow(` ⚠️ ID conflict detected: "${smartId}" already used`));
870
- console.log(chalk.gray(` → Suggested unique ID: "${suggestedId}"`));
871
- const confirmIdAnswer = await confirm({
872
- message: `Use "${suggestedId}" as repository ID?`,
873
- default: true
874
- });
875
- if (!confirmIdAnswer) {
876
- const customId = await input({
877
- message: 'Enter custom repository ID:',
878
- default: suggestedId,
879
- validate: (val) => {
880
- // Validate format
881
- const validation = validateRepoId(val);
882
- if (!validation.valid) {
883
- return validation.error || 'Invalid repository ID';
884
- }
885
- // Validate uniqueness
886
- if (usedIds.has(val)) {
887
- return 'Repository ID must be unique';
888
- }
889
- return true;
890
- }
891
- });
892
- id = customId;
893
- }
894
- }
895
- else {
896
- // Show auto-generated ID (no prompt)
897
- console.log(chalk.green(` ✓ Repository ID: ${chalk.bold(id)} ${chalk.gray('(auto-generated)')}`));
898
- }
862
+ // Use normalized repo name as ID (repo names are unique)
863
+ const id = normalizeRepoName(repoAnswers.name);
864
+ console.log(chalk.green(` ✓ Repository ID: ${chalk.bold(id)}`));
899
865
  usedIds.add(id);
900
866
  configuredRepoNames.push(repoAnswers.name);
901
867
  // Ask about visibility only if creating a new repository