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.
- package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/ado.js +23 -3
- package/dist/cli/helpers/issue-tracker/ado.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/types.d.ts +4 -0
- package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/types.js.map +1 -1
- package/dist/core/credentials-manager.d.ts +4 -0
- package/dist/core/credentials-manager.d.ts.map +1 -1
- package/dist/core/credentials-manager.js +72 -7
- package/dist/core/credentials-manager.js.map +1 -1
- package/dist/core/sync/folder-mapper.d.ts +71 -0
- package/dist/core/sync/folder-mapper.d.ts.map +1 -0
- package/dist/core/sync/folder-mapper.js +168 -0
- package/dist/core/sync/folder-mapper.js.map +1 -0
- package/dist/core/sync/profile-validator.d.ts +52 -0
- package/dist/core/sync/profile-validator.d.ts.map +1 -0
- package/dist/core/sync/profile-validator.js +225 -0
- package/dist/core/sync/profile-validator.js.map +1 -0
- package/dist/core/types/sync-profile.d.ts +52 -2
- package/dist/core/types/sync-profile.d.ts.map +1 -1
- package/dist/integrations/ado/ado-client.d.ts +4 -0
- package/dist/integrations/ado/ado-client.d.ts.map +1 -1
- package/dist/integrations/ado/ado-client.js +18 -0
- package/dist/integrations/ado/ado-client.js.map +1 -1
- package/dist/utils/env-multi-project-parser.d.ts +22 -12
- package/dist/utils/env-multi-project-parser.d.ts.map +1 -1
- package/dist/utils/env-multi-project-parser.js +31 -34
- package/dist/utils/env-multi-project-parser.js.map +1 -1
- package/dist/utils/string-utils.d.ts +40 -0
- package/dist/utils/string-utils.d.ts.map +1 -0
- package/dist/utils/string-utils.js +58 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave-ado/lib/project-selector.d.ts +42 -0
- package/plugins/specweave-ado/lib/project-selector.d.ts.map +1 -0
- package/plugins/specweave-ado/lib/project-selector.js +211 -0
- package/plugins/specweave-ado/lib/project-selector.js.map +1 -0
- package/plugins/specweave-ado/lib/project-selector.ts +317 -0
- package/plugins/specweave-github/lib/github-client.ts +28 -0
- package/plugins/specweave-github/lib/repo-selector.ts +329 -0
|
@@ -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,
|
|
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,CAO7E"}
|
|
@@ -94,6 +94,12 @@ export async function promptAzureDevOpsCredentials(language) {
|
|
|
94
94
|
return true;
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
|
+
{
|
|
98
|
+
type: 'input',
|
|
99
|
+
name: 'teams',
|
|
100
|
+
message: 'Team name(s) (optional, comma-separated):',
|
|
101
|
+
default: ''
|
|
102
|
+
},
|
|
97
103
|
{
|
|
98
104
|
type: 'password',
|
|
99
105
|
name: 'pat',
|
|
@@ -112,10 +118,16 @@ export async function promptAzureDevOpsCredentials(language) {
|
|
|
112
118
|
}
|
|
113
119
|
];
|
|
114
120
|
const answers = await inquirer.prompt(questions);
|
|
121
|
+
// Parse comma-separated teams
|
|
122
|
+
const teams = answers.teams
|
|
123
|
+
? answers.teams.split(',').map((t) => t.trim()).filter((t) => t.length > 0)
|
|
124
|
+
: [];
|
|
115
125
|
return {
|
|
116
126
|
pat: answers.pat,
|
|
117
127
|
org: answers.org,
|
|
118
|
-
project: answers.project
|
|
128
|
+
project: answers.project, // One project (ADO standard)
|
|
129
|
+
team: teams[0], // Use first team for backward compatibility
|
|
130
|
+
teams: teams.length > 1 ? teams : undefined // Multiple teams (optional)
|
|
119
131
|
};
|
|
120
132
|
}
|
|
121
133
|
/**
|
|
@@ -188,11 +200,19 @@ export async function validateAzureDevOpsConnection(credentials, maxRetries = 3)
|
|
|
188
200
|
* @returns Array of key-value pairs for .env
|
|
189
201
|
*/
|
|
190
202
|
export function getAzureDevOpsEnvVars(credentials) {
|
|
191
|
-
|
|
203
|
+
const envVars = [
|
|
192
204
|
{ key: 'AZURE_DEVOPS_PAT', value: credentials.pat },
|
|
193
205
|
{ key: 'AZURE_DEVOPS_ORG', value: credentials.org },
|
|
194
|
-
{ key: 'AZURE_DEVOPS_PROJECT', value: credentials.project }
|
|
206
|
+
{ key: 'AZURE_DEVOPS_PROJECT', value: credentials.project } // Always singular (one project)
|
|
195
207
|
];
|
|
208
|
+
// Write teams as comma-separated if multiple, otherwise single
|
|
209
|
+
if (credentials.teams && credentials.teams.length > 1) {
|
|
210
|
+
envVars.push({ key: 'AZURE_DEVOPS_TEAMS', value: credentials.teams.join(',') });
|
|
211
|
+
}
|
|
212
|
+
else if (credentials.team) {
|
|
213
|
+
envVars.push({ key: 'AZURE_DEVOPS_TEAM', value: credentials.team });
|
|
214
|
+
}
|
|
215
|
+
return envVars;
|
|
196
216
|
}
|
|
197
217
|
/**
|
|
198
218
|
* Show Azure DevOps setup complete message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ado.js","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/ado.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ado.js","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/ado.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export interface GitHubCredentials {
|
|
|
23
23
|
token: string;
|
|
24
24
|
instanceType: GitHubInstanceType;
|
|
25
25
|
apiEndpoint?: string;
|
|
26
|
+
repos?: string[];
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Jira credentials
|
|
@@ -32,6 +33,7 @@ export interface JiraCredentials {
|
|
|
32
33
|
email: string;
|
|
33
34
|
domain: string;
|
|
34
35
|
instanceType: JiraInstanceType;
|
|
36
|
+
projects?: string[];
|
|
35
37
|
}
|
|
36
38
|
/**
|
|
37
39
|
* Azure DevOps credentials
|
|
@@ -40,6 +42,8 @@ export interface AzureDevOpsCredentials {
|
|
|
40
42
|
pat: string;
|
|
41
43
|
org: string;
|
|
42
44
|
project: string;
|
|
45
|
+
team?: string;
|
|
46
|
+
teams?: string[];
|
|
43
47
|
}
|
|
44
48
|
/**
|
|
45
49
|
* Union type for all credentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAG9B,aAAa,EAAE,aAAa;gBADnC,OAAO,EAAE,MAAM,EACR,aAAa,EAAE,aAAa;CAKtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8FH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACR,aAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,kBAAa,GAAb,aAAa,CAAe;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -11,11 +11,15 @@ export interface AdoCredentials {
|
|
|
11
11
|
pat: string;
|
|
12
12
|
organization: string;
|
|
13
13
|
project: string;
|
|
14
|
+
team?: string;
|
|
15
|
+
teams?: string[];
|
|
14
16
|
}
|
|
15
17
|
export interface JiraCredentials {
|
|
16
18
|
apiToken: string;
|
|
17
19
|
email: string;
|
|
18
20
|
domain: string;
|
|
21
|
+
project?: string;
|
|
22
|
+
projects?: string[];
|
|
19
23
|
}
|
|
20
24
|
export interface CredentialsConfig {
|
|
21
25
|
ado?: AdoCredentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-manager.d.ts","sourceRoot":"","sources":["../../src/core/credentials-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials-manager.d.ts","sourceRoot":"","sources":["../../src/core/credentials-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;WAIO,WAAW,IAAI,kBAAkB;IAO/C;;OAEG;IACH,OAAO,CAAC,WAAW;IAyDnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACI,iBAAiB,IAAI,cAAc;IAY1C;;;OAGG;IACI,kBAAkB,IAAI,eAAe;IAY5C;;OAEG;IACI,iBAAiB,IAAI,OAAO;IAInC;;OAEG;IACI,kBAAkB,IAAI,OAAO;IAIpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAqBjC;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAqBlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAoE9D;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACI,gBAAgB,IAAI,IAAI;CAgChC;AAGD,eAAO,MAAM,kBAAkB,oBAAmC,CAAC"}
|
|
@@ -39,18 +39,35 @@ export class CredentialsManager {
|
|
|
39
39
|
}
|
|
40
40
|
// Load ADO credentials
|
|
41
41
|
if (process.env.AZURE_DEVOPS_PAT) {
|
|
42
|
+
const project = process.env.AZURE_DEVOPS_PROJECT || '';
|
|
43
|
+
const singleTeam = process.env.AZURE_DEVOPS_TEAM || '';
|
|
44
|
+
const multiTeams = process.env.AZURE_DEVOPS_TEAMS || '';
|
|
45
|
+
// Parse comma-separated teams
|
|
46
|
+
const teams = multiTeams
|
|
47
|
+
? multiTeams.split(',').map(t => t.trim()).filter(t => t.length > 0)
|
|
48
|
+
: (singleTeam ? [singleTeam] : []);
|
|
42
49
|
this.credentials.ado = {
|
|
43
50
|
pat: process.env.AZURE_DEVOPS_PAT,
|
|
44
51
|
organization: process.env.AZURE_DEVOPS_ORG || '',
|
|
45
|
-
project:
|
|
52
|
+
project: project, // One project (ADO standard)
|
|
53
|
+
team: singleTeam || teams[0], // Use first team for backward compatibility
|
|
54
|
+
teams: teams.length > 1 ? teams : undefined // Multiple teams (optional)
|
|
46
55
|
};
|
|
47
56
|
}
|
|
48
57
|
// Load Jira credentials
|
|
49
58
|
if (process.env.JIRA_API_TOKEN) {
|
|
59
|
+
const singleProject = process.env.JIRA_PROJECT || '';
|
|
60
|
+
const multiProjects = process.env.JIRA_PROJECTS || '';
|
|
61
|
+
// Parse comma-separated projects
|
|
62
|
+
const projects = multiProjects
|
|
63
|
+
? multiProjects.split(',').map(p => p.trim()).filter(p => p.length > 0)
|
|
64
|
+
: (singleProject ? [singleProject] : []);
|
|
50
65
|
this.credentials.jira = {
|
|
51
66
|
apiToken: process.env.JIRA_API_TOKEN,
|
|
52
67
|
email: process.env.JIRA_EMAIL || '',
|
|
53
|
-
domain: process.env.JIRA_DOMAIN || ''
|
|
68
|
+
domain: process.env.JIRA_DOMAIN || '',
|
|
69
|
+
project: singleProject || projects[0],
|
|
70
|
+
projects: projects.length > 0 ? projects : undefined
|
|
54
71
|
};
|
|
55
72
|
}
|
|
56
73
|
this.envLoaded = true;
|
|
@@ -156,12 +173,19 @@ export class CredentialsManager {
|
|
|
156
173
|
if (!this.credentials.ado) {
|
|
157
174
|
return 'ADO credentials: Not configured';
|
|
158
175
|
}
|
|
159
|
-
|
|
176
|
+
const lines = [
|
|
160
177
|
'ADO credentials:',
|
|
161
178
|
` PAT: ${this.maskSecret(this.credentials.ado.pat)}`,
|
|
162
179
|
` Organization: ${this.credentials.ado.organization}`,
|
|
163
180
|
` Project: ${this.credentials.ado.project}`
|
|
164
|
-
]
|
|
181
|
+
];
|
|
182
|
+
if (this.credentials.ado.teams && this.credentials.ado.teams.length > 1) {
|
|
183
|
+
lines.push(` Teams (${this.credentials.ado.teams.length}): ${this.credentials.ado.teams.join(', ')}`);
|
|
184
|
+
}
|
|
185
|
+
else if (this.credentials.ado.team) {
|
|
186
|
+
lines.push(` Team: ${this.credentials.ado.team}`);
|
|
187
|
+
}
|
|
188
|
+
return lines.join('\n');
|
|
165
189
|
}
|
|
166
190
|
/**
|
|
167
191
|
* Get masked version of credentials for logging (safe to display)
|
|
@@ -170,12 +194,19 @@ export class CredentialsManager {
|
|
|
170
194
|
if (!this.credentials.jira) {
|
|
171
195
|
return 'Jira credentials: Not configured';
|
|
172
196
|
}
|
|
173
|
-
|
|
197
|
+
const lines = [
|
|
174
198
|
'Jira credentials:',
|
|
175
199
|
` API Token: ${this.maskSecret(this.credentials.jira.apiToken)}`,
|
|
176
200
|
` Email: ${this.credentials.jira.email}`,
|
|
177
201
|
` Domain: ${this.credentials.jira.domain}`
|
|
178
|
-
]
|
|
202
|
+
];
|
|
203
|
+
if (this.credentials.jira.projects && this.credentials.jira.projects.length > 1) {
|
|
204
|
+
lines.push(` Projects (${this.credentials.jira.projects.length}): ${this.credentials.jira.projects.join(', ')}`);
|
|
205
|
+
}
|
|
206
|
+
else if (this.credentials.jira.project) {
|
|
207
|
+
lines.push(` Project: ${this.credentials.jira.project}`);
|
|
208
|
+
}
|
|
209
|
+
return lines.join('\n');
|
|
179
210
|
}
|
|
180
211
|
/**
|
|
181
212
|
* Mask a secret for safe logging
|
|
@@ -212,12 +243,34 @@ export class CredentialsManager {
|
|
|
212
243
|
if (config.ado) {
|
|
213
244
|
existingVars.AZURE_DEVOPS_PAT = config.ado.pat;
|
|
214
245
|
existingVars.AZURE_DEVOPS_ORG = config.ado.organization;
|
|
215
|
-
existingVars.AZURE_DEVOPS_PROJECT = config.ado.project;
|
|
246
|
+
existingVars.AZURE_DEVOPS_PROJECT = config.ado.project; // Always singular (one project)
|
|
247
|
+
// Write teams as comma-separated if multiple, otherwise single
|
|
248
|
+
if (config.ado.teams && config.ado.teams.length > 1) {
|
|
249
|
+
existingVars.AZURE_DEVOPS_TEAMS = config.ado.teams.join(',');
|
|
250
|
+
// Remove singular form to avoid confusion
|
|
251
|
+
delete existingVars.AZURE_DEVOPS_TEAM;
|
|
252
|
+
}
|
|
253
|
+
else if (config.ado.team) {
|
|
254
|
+
existingVars.AZURE_DEVOPS_TEAM = config.ado.team;
|
|
255
|
+
// Remove plural form if only one team
|
|
256
|
+
delete existingVars.AZURE_DEVOPS_TEAMS;
|
|
257
|
+
}
|
|
216
258
|
}
|
|
217
259
|
if (config.jira) {
|
|
218
260
|
existingVars.JIRA_API_TOKEN = config.jira.apiToken;
|
|
219
261
|
existingVars.JIRA_EMAIL = config.jira.email;
|
|
220
262
|
existingVars.JIRA_DOMAIN = config.jira.domain;
|
|
263
|
+
// Write projects as comma-separated if multiple, otherwise single
|
|
264
|
+
if (config.jira.projects && config.jira.projects.length > 1) {
|
|
265
|
+
existingVars.JIRA_PROJECTS = config.jira.projects.join(',');
|
|
266
|
+
// Remove singular form to avoid confusion
|
|
267
|
+
delete existingVars.JIRA_PROJECT;
|
|
268
|
+
}
|
|
269
|
+
else if (config.jira.project) {
|
|
270
|
+
existingVars.JIRA_PROJECT = config.jira.project;
|
|
271
|
+
// Remove plural form if only one project
|
|
272
|
+
delete existingVars.JIRA_PROJECTS;
|
|
273
|
+
}
|
|
221
274
|
}
|
|
222
275
|
// Write back to .env
|
|
223
276
|
const newContent = Object.entries(existingVars)
|
|
@@ -256,11 +309,23 @@ AZURE_DEVOPS_PAT=your-ado-pat-52-chars-base64
|
|
|
256
309
|
AZURE_DEVOPS_ORG=your-organization-name
|
|
257
310
|
AZURE_DEVOPS_PROJECT=your-project-name
|
|
258
311
|
|
|
312
|
+
# Single team (optional)
|
|
313
|
+
# AZURE_DEVOPS_TEAM=your-team-name
|
|
314
|
+
|
|
315
|
+
# OR multiple teams (comma-separated)
|
|
316
|
+
# AZURE_DEVOPS_TEAMS=Frontend,Backend,Mobile
|
|
317
|
+
|
|
259
318
|
# Jira API Token
|
|
260
319
|
# Get from: https://id.atlassian.com/manage-profile/security/api-tokens
|
|
261
320
|
JIRA_API_TOKEN=your-jira-api-token
|
|
262
321
|
JIRA_EMAIL=your-email@example.com
|
|
263
322
|
JIRA_DOMAIN=your-domain.atlassian.net
|
|
323
|
+
|
|
324
|
+
# Single project (optional, for backward compatibility)
|
|
325
|
+
# JIRA_PROJECT=your-project-key
|
|
326
|
+
|
|
327
|
+
# OR multiple projects (comma-separated)
|
|
328
|
+
# JIRA_PROJECTS=PROJ1,PROJ2,PROJ3
|
|
264
329
|
`;
|
|
265
330
|
fs.writeFileSync(examplePath, exampleContent, 'utf-8');
|
|
266
331
|
console.log('✅ Created .env.example (safe to commit)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-manager.js","sourceRoot":"","sources":["../../src/core/credentials-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials-manager.js","sourceRoot":"","sources":["../../src/core/credentials-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folder Mapper for Multi-Team Sync
|
|
3
|
+
*
|
|
4
|
+
* Maps sync profiles (ADO teams, Jira projects/components) to SpecWeave folder structure
|
|
5
|
+
*/
|
|
6
|
+
import { SyncProfile } from '../types/sync-profile.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get specs folders for a sync profile
|
|
9
|
+
*
|
|
10
|
+
* Returns array of folders for multi-team profiles:
|
|
11
|
+
* - ADO with teams: Multiple folders (one per team)
|
|
12
|
+
* - Jira project-per-team: Multiple folders (one per project)
|
|
13
|
+
* - Jira shared-project-with-components: Multiple folders (one per component)
|
|
14
|
+
* - GitHub: Single folder (repo name)
|
|
15
|
+
*
|
|
16
|
+
* @param profile - Sync profile
|
|
17
|
+
* @returns Array of folder paths relative to project root
|
|
18
|
+
*/
|
|
19
|
+
export declare function getSpecsFoldersForProfile(profile: SyncProfile): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Get Area Path for ADO team
|
|
22
|
+
*
|
|
23
|
+
* ADO Area Path format: "Project\\Team Name"
|
|
24
|
+
* Special case: If team name matches project name, use just project name
|
|
25
|
+
*
|
|
26
|
+
* Examples:
|
|
27
|
+
* - getAreaPathForTeam("League Scheduler", "League Scheduler Team") → "League Scheduler"
|
|
28
|
+
* - getAreaPathForTeam("League Scheduler", "Platform Engineering Team") → "League Scheduler\\Platform Engineering Team"
|
|
29
|
+
*
|
|
30
|
+
* @param project - ADO project name
|
|
31
|
+
* @param team - Team name
|
|
32
|
+
* @returns Area Path string
|
|
33
|
+
*/
|
|
34
|
+
export declare function getAreaPathForTeam(project: string, team: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Generate Area Paths map for ADO profile
|
|
37
|
+
*
|
|
38
|
+
* Creates mapping from team folder names to ADO Area Paths
|
|
39
|
+
*
|
|
40
|
+
* Example:
|
|
41
|
+
* Input: project="League Scheduler", teams=["Platform Engineering Team", "QA Team"]
|
|
42
|
+
* Output: {
|
|
43
|
+
* "platform-engineering-team": "League Scheduler\\Platform Engineering Team",
|
|
44
|
+
* "qa-team": "League Scheduler\\QA Team"
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* @param project - ADO project name
|
|
48
|
+
* @param teams - Array of team names
|
|
49
|
+
* @returns Map of folder names to Area Paths
|
|
50
|
+
*/
|
|
51
|
+
export declare function generateAreaPaths(project: string, teams: string[]): Record<string, string>;
|
|
52
|
+
/**
|
|
53
|
+
* Get team folder name from Area Path
|
|
54
|
+
*
|
|
55
|
+
* Reverse mapping: "League Scheduler\\Platform Engineering Team" → "platform-engineering-team"
|
|
56
|
+
*
|
|
57
|
+
* @param areaPath - ADO Area Path
|
|
58
|
+
* @returns Folder name (kebab-case)
|
|
59
|
+
*/
|
|
60
|
+
export declare function getFolderNameFromAreaPath(areaPath: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get team/project identifier from folder name
|
|
63
|
+
*
|
|
64
|
+
* Maps folder name back to original team/project name
|
|
65
|
+
*
|
|
66
|
+
* @param profile - Sync profile
|
|
67
|
+
* @param folderName - Folder name (kebab-case)
|
|
68
|
+
* @returns Original team/project name, or null if not found
|
|
69
|
+
*/
|
|
70
|
+
export declare function getTeamFromFolder(profile: SyncProfile, folderName: string): string | null;
|
|
71
|
+
//# sourceMappingURL=folder-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-mapper.d.ts","sourceRoot":"","sources":["../../../src/core/sync/folder-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EAIZ,MAAM,0BAA0B,CAAC;AAGlC;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CA4CxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYxE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CA+Bf"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folder Mapper for Multi-Team Sync
|
|
3
|
+
*
|
|
4
|
+
* Maps sync profiles (ADO teams, Jira projects/components) to SpecWeave folder structure
|
|
5
|
+
*/
|
|
6
|
+
import { slugify } from '../../utils/string-utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get specs folders for a sync profile
|
|
9
|
+
*
|
|
10
|
+
* Returns array of folders for multi-team profiles:
|
|
11
|
+
* - ADO with teams: Multiple folders (one per team)
|
|
12
|
+
* - Jira project-per-team: Multiple folders (one per project)
|
|
13
|
+
* - Jira shared-project-with-components: Multiple folders (one per component)
|
|
14
|
+
* - GitHub: Single folder (repo name)
|
|
15
|
+
*
|
|
16
|
+
* @param profile - Sync profile
|
|
17
|
+
* @returns Array of folder paths relative to project root
|
|
18
|
+
*/
|
|
19
|
+
export function getSpecsFoldersForProfile(profile) {
|
|
20
|
+
const folders = [];
|
|
21
|
+
if (profile.provider === 'ado') {
|
|
22
|
+
const config = profile.config;
|
|
23
|
+
if (config.teams && config.teams.length > 0) {
|
|
24
|
+
// Multiple teams → multiple folders
|
|
25
|
+
for (const team of config.teams) {
|
|
26
|
+
const folderName = slugify(team); // "Platform Engineering Team" → "platform-engineering-team"
|
|
27
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Single project, no teams specified → default folder
|
|
32
|
+
const folderName = slugify(config.project);
|
|
33
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (profile.provider === 'jira') {
|
|
37
|
+
const config = profile.config;
|
|
38
|
+
if (config.strategy === 'project-per-team') {
|
|
39
|
+
// Multiple projects → multiple folders
|
|
40
|
+
for (const projectKey of config.projects || []) {
|
|
41
|
+
const folderName = slugify(projectKey); // "FRONTEND" → "frontend"
|
|
42
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (config.strategy === 'shared-project-with-components') {
|
|
46
|
+
// Components → multiple folders
|
|
47
|
+
for (const component of config.components || []) {
|
|
48
|
+
const folderName = slugify(component); // "Frontend" → "frontend"
|
|
49
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Fallback: single project → single folder
|
|
54
|
+
const folderName = slugify(config.projectKey || 'default');
|
|
55
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (profile.provider === 'github') {
|
|
59
|
+
const config = profile.config;
|
|
60
|
+
const folderName = slugify(config.repo); // "specweave" → "specweave"
|
|
61
|
+
folders.push(`.specweave/docs/internal/specs/${folderName}`);
|
|
62
|
+
}
|
|
63
|
+
return folders;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get Area Path for ADO team
|
|
67
|
+
*
|
|
68
|
+
* ADO Area Path format: "Project\\Team Name"
|
|
69
|
+
* Special case: If team name matches project name, use just project name
|
|
70
|
+
*
|
|
71
|
+
* Examples:
|
|
72
|
+
* - getAreaPathForTeam("League Scheduler", "League Scheduler Team") → "League Scheduler"
|
|
73
|
+
* - getAreaPathForTeam("League Scheduler", "Platform Engineering Team") → "League Scheduler\\Platform Engineering Team"
|
|
74
|
+
*
|
|
75
|
+
* @param project - ADO project name
|
|
76
|
+
* @param team - Team name
|
|
77
|
+
* @returns Area Path string
|
|
78
|
+
*/
|
|
79
|
+
export function getAreaPathForTeam(project, team) {
|
|
80
|
+
// Special case: If team name contains project name, use just project name
|
|
81
|
+
// "League Scheduler Team" in "League Scheduler" project → "League Scheduler"
|
|
82
|
+
const teamLower = team.toLowerCase();
|
|
83
|
+
const projectLower = project.toLowerCase();
|
|
84
|
+
if (teamLower.includes(projectLower) && teamLower.replace(/\s+team\s*$/i, '') === projectLower) {
|
|
85
|
+
return project;
|
|
86
|
+
}
|
|
87
|
+
// Default: "Project\\Team Name"
|
|
88
|
+
return `${project}\\${team}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate Area Paths map for ADO profile
|
|
92
|
+
*
|
|
93
|
+
* Creates mapping from team folder names to ADO Area Paths
|
|
94
|
+
*
|
|
95
|
+
* Example:
|
|
96
|
+
* Input: project="League Scheduler", teams=["Platform Engineering Team", "QA Team"]
|
|
97
|
+
* Output: {
|
|
98
|
+
* "platform-engineering-team": "League Scheduler\\Platform Engineering Team",
|
|
99
|
+
* "qa-team": "League Scheduler\\QA Team"
|
|
100
|
+
* }
|
|
101
|
+
*
|
|
102
|
+
* @param project - ADO project name
|
|
103
|
+
* @param teams - Array of team names
|
|
104
|
+
* @returns Map of folder names to Area Paths
|
|
105
|
+
*/
|
|
106
|
+
export function generateAreaPaths(project, teams) {
|
|
107
|
+
const areaPaths = {};
|
|
108
|
+
for (const team of teams) {
|
|
109
|
+
const folderName = slugify(team);
|
|
110
|
+
areaPaths[folderName] = getAreaPathForTeam(project, team);
|
|
111
|
+
}
|
|
112
|
+
return areaPaths;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get team folder name from Area Path
|
|
116
|
+
*
|
|
117
|
+
* Reverse mapping: "League Scheduler\\Platform Engineering Team" → "platform-engineering-team"
|
|
118
|
+
*
|
|
119
|
+
* @param areaPath - ADO Area Path
|
|
120
|
+
* @returns Folder name (kebab-case)
|
|
121
|
+
*/
|
|
122
|
+
export function getFolderNameFromAreaPath(areaPath) {
|
|
123
|
+
// Extract team name from "Project\\Team Name"
|
|
124
|
+
const parts = areaPath.split('\\');
|
|
125
|
+
const teamName = parts.length > 1 ? parts[parts.length - 1] : parts[0];
|
|
126
|
+
return slugify(teamName);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get team/project identifier from folder name
|
|
130
|
+
*
|
|
131
|
+
* Maps folder name back to original team/project name
|
|
132
|
+
*
|
|
133
|
+
* @param profile - Sync profile
|
|
134
|
+
* @param folderName - Folder name (kebab-case)
|
|
135
|
+
* @returns Original team/project name, or null if not found
|
|
136
|
+
*/
|
|
137
|
+
export function getTeamFromFolder(profile, folderName) {
|
|
138
|
+
if (profile.provider === 'ado') {
|
|
139
|
+
const config = profile.config;
|
|
140
|
+
const teams = config.teams || [];
|
|
141
|
+
for (const team of teams) {
|
|
142
|
+
if (slugify(team) === folderName) {
|
|
143
|
+
return team;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (profile.provider === 'jira') {
|
|
148
|
+
const config = profile.config;
|
|
149
|
+
if (config.strategy === 'project-per-team') {
|
|
150
|
+
const projects = config.projects || [];
|
|
151
|
+
for (const projectKey of projects) {
|
|
152
|
+
if (slugify(projectKey) === folderName) {
|
|
153
|
+
return projectKey;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (config.strategy === 'shared-project-with-components') {
|
|
158
|
+
const components = config.components || [];
|
|
159
|
+
for (const component of components) {
|
|
160
|
+
if (slugify(component) === folderName) {
|
|
161
|
+
return component;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=folder-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-mapper.js","sourceRoot":"","sources":["../../../src/core/sync/folder-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Profile Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates sync profile configurations for multi-team support
|
|
5
|
+
*/
|
|
6
|
+
import { SyncProfile, AdoConfig, JiraConfig, GitHubConfig, ProfileValidationResult } from '../types/sync-profile.js';
|
|
7
|
+
/**
|
|
8
|
+
* Validate Jira profile configuration
|
|
9
|
+
*
|
|
10
|
+
* Rules:
|
|
11
|
+
* - Strategy is required
|
|
12
|
+
* - project-per-team: requires projects[] array
|
|
13
|
+
* - shared-project-with-components: requires projectKey + components[]
|
|
14
|
+
* - Cannot mix strategies (no projects[] with shared-project)
|
|
15
|
+
*
|
|
16
|
+
* @param config - Jira configuration
|
|
17
|
+
* @returns Validation result with errors/warnings
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateJiraConfig(config: JiraConfig): ProfileValidationResult;
|
|
20
|
+
/**
|
|
21
|
+
* Validate Azure DevOps profile configuration
|
|
22
|
+
*
|
|
23
|
+
* Rules:
|
|
24
|
+
* - organization and project are required
|
|
25
|
+
* - teams[] array is optional (single project if not provided)
|
|
26
|
+
* - Team names cannot be empty
|
|
27
|
+
* - areaPaths map must match teams if both provided
|
|
28
|
+
*
|
|
29
|
+
* @param config - ADO configuration
|
|
30
|
+
* @returns Validation result with errors/warnings
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateAdoConfig(config: AdoConfig): ProfileValidationResult;
|
|
33
|
+
/**
|
|
34
|
+
* Validate GitHub profile configuration
|
|
35
|
+
*
|
|
36
|
+
* Rules:
|
|
37
|
+
* - owner and repo are required
|
|
38
|
+
*
|
|
39
|
+
* @param config - GitHub configuration
|
|
40
|
+
* @returns Validation result with errors/warnings
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateGitHubConfig(config: GitHubConfig): ProfileValidationResult;
|
|
43
|
+
/**
|
|
44
|
+
* Validate sync profile
|
|
45
|
+
*
|
|
46
|
+
* Validates entire profile including provider-specific config
|
|
47
|
+
*
|
|
48
|
+
* @param profile - Sync profile to validate
|
|
49
|
+
* @returns Validation result with errors/warnings
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateSyncProfile(profile: SyncProfile): ProfileValidationResult;
|
|
52
|
+
//# sourceMappingURL=profile-validator.d.ts.map
|