specweave 0.24.8 → 0.24.9
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/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +3 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +18 -2
- package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
- package/dist/src/core/repo-structure/git-error-handler.d.ts +1 -1
- package/dist/src/core/repo-structure/git-error-handler.d.ts.map +1 -1
- package/dist/src/core/repo-structure/git-provider.d.ts +1 -1
- package/dist/src/core/repo-structure/git-provider.d.ts.map +1 -1
- package/dist/src/core/repo-structure/platform-registry.d.ts.map +1 -1
- package/dist/src/core/repo-structure/platform-registry.js +20 -9
- package/dist/src/core/repo-structure/platform-registry.js.map +1 -1
- package/dist/src/core/repo-structure/prompt-consolidator.d.ts +13 -1
- package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/prompt-consolidator.js +38 -5
- package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
- package/dist/src/core/repo-structure/providers/azure-devops-provider.d.ts +64 -0
- package/dist/src/core/repo-structure/providers/azure-devops-provider.d.ts.map +1 -0
- package/dist/src/core/repo-structure/providers/azure-devops-provider.js +263 -0
- package/dist/src/core/repo-structure/providers/azure-devops-provider.js.map +1 -0
- package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts +12 -11
- package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts.map +1 -1
- package/dist/src/core/repo-structure/providers/bitbucket-provider.js +164 -30
- package/dist/src/core/repo-structure/providers/bitbucket-provider.js.map +1 -1
- package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts +10 -9
- package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts.map +1 -1
- package/dist/src/core/repo-structure/providers/gitlab-provider.js +182 -28
- package/dist/src/core/repo-structure/providers/gitlab-provider.js.map +1 -1
- package/dist/src/core/repo-structure/providers/index.d.ts +3 -1
- package/dist/src/core/repo-structure/providers/index.d.ts.map +1 -1
- package/dist/src/core/repo-structure/providers/index.js +10 -2
- package/dist/src/core/repo-structure/providers/index.js.map +1 -1
- package/dist/src/core/repo-structure/providers/local-provider.d.ts +61 -0
- package/dist/src/core/repo-structure/providers/local-provider.d.ts.map +1 -0
- package/dist/src/core/repo-structure/providers/local-provider.js +148 -0
- package/dist/src/core/repo-structure/providers/local-provider.js.map +1 -0
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts +11 -1
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.js +268 -84
- package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/agents/pm/AGENT.md.bak +1893 -0
- package/plugins/specweave/hooks/docs-changed.sh.backup +79 -0
- package/plugins/specweave/hooks/human-input-required.sh.backup +75 -0
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +245 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +149 -0
- package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +163 -0
- package/plugins/specweave/hooks/post-first-increment.sh.backup +61 -0
- package/plugins/specweave/hooks/post-first-increment.sh.bak +61 -0
- package/plugins/specweave/hooks/post-increment-change.sh.backup +98 -0
- package/plugins/specweave/hooks/post-increment-completion.sh.backup +231 -0
- package/plugins/specweave/hooks/post-increment-planning.sh.backup +1048 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh.backup +147 -0
- package/plugins/specweave/hooks/post-spec-update.sh.backup +158 -0
- package/plugins/specweave/hooks/post-spec-update.sh.bak +158 -0
- package/plugins/specweave/hooks/post-task-completion.sh +69 -175
- package/plugins/specweave/hooks/post-user-story-complete.sh.backup +179 -0
- package/plugins/specweave/hooks/post-user-story-complete.sh.bak +179 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh.backup +83 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +83 -0
- package/plugins/specweave/hooks/pre-implementation.sh.backup +67 -0
- package/plugins/specweave/hooks/pre-task-completion.sh.backup +194 -0
- package/plugins/specweave/hooks/pre-tool-use.sh.backup +133 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh.backup +386 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh.bak +386 -0
- package/plugins/specweave/lib/hooks/auto-transition.js.bak +50 -0
- package/plugins/specweave/lib/hooks/auto-transition.ts.bak +84 -0
- package/plugins/specweave/lib/hooks/consolidated-sync.js +183 -0
- package/plugins/specweave/lib/hooks/git-diff-analyzer.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.bak +89 -0
- package/plugins/specweave/lib/hooks/git-diff-analyzer.js.bak +142 -0
- package/plugins/specweave/lib/hooks/git-diff-analyzer.ts.bak +269 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.bak +60 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js.bak +155 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts.bak +264 -0
- package/plugins/specweave/lib/hooks/prepare-reflection-context.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.bak +42 -0
- package/plugins/specweave/lib/hooks/prepare-reflection-context.js.bak +110 -0
- package/plugins/specweave/lib/hooks/prepare-reflection-context.ts.bak +178 -0
- package/plugins/specweave/lib/hooks/reflection-config-loader.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.bak +45 -0
- package/plugins/specweave/lib/hooks/reflection-config-loader.js.bak +92 -0
- package/plugins/specweave/lib/hooks/reflection-config-loader.ts.bak +156 -0
- package/plugins/specweave/lib/hooks/reflection-parser.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/reflection-parser.d.ts.bak +33 -0
- package/plugins/specweave/lib/hooks/reflection-parser.js.bak +301 -0
- package/plugins/specweave/lib/hooks/reflection-parser.ts.bak +484 -0
- package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.bak +56 -0
- package/plugins/specweave/lib/hooks/reflection-prompt-builder.js.bak +182 -0
- package/plugins/specweave/lib/hooks/reflection-prompt-builder.ts.bak +306 -0
- package/plugins/specweave/lib/hooks/reflection-storage.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/reflection-storage.d.ts.bak +64 -0
- package/plugins/specweave/lib/hooks/reflection-storage.js.bak +231 -0
- package/plugins/specweave/lib/hooks/reflection-storage.ts.bak +369 -0
- package/plugins/specweave/lib/hooks/run-self-reflection.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/run-self-reflection.d.ts.bak +43 -0
- package/plugins/specweave/lib/hooks/run-self-reflection.js.bak +132 -0
- package/plugins/specweave/lib/hooks/run-self-reflection.ts.bak +258 -0
- package/plugins/specweave/lib/hooks/sync-cache.js.bak +294 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.d.js.bak +1 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.d.ts.bak +27 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.js.bak +339 -0
- package/plugins/specweave/lib/hooks/sync-us-tasks.js.bak +476 -0
- package/plugins/specweave/lib/hooks/translate-file.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/translate-file.d.ts.bak +59 -0
- package/plugins/specweave/lib/hooks/translate-file.js.bak +289 -0
- package/plugins/specweave/lib/hooks/translate-file.ts.bak +428 -0
- package/plugins/specweave/lib/hooks/translate-living-docs.d.js.bak +0 -0
- package/plugins/specweave/lib/hooks/translate-living-docs.d.ts.bak +13 -0
- package/plugins/specweave/lib/hooks/translate-living-docs.js.bak +119 -0
- package/plugins/specweave/lib/hooks/translate-living-docs.ts.bak +224 -0
- package/plugins/specweave/lib/hooks/update-ac-status.js.bak +51 -0
- package/plugins/specweave/lib/hooks/update-ac-status.ts.bak +103 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.d.js.bak +1 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.d.ts.bak +29 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.js.bak +296 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.ts.bak +489 -0
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh.backup +353 -0
- package/plugins/specweave-ado/hooks/post-task-completion.sh.backup +172 -0
- package/plugins/specweave-ado/lib/ado-multi-project-sync.js +1 -0
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +424 -0
- package/plugins/specweave-github/hooks/post-task-completion.sh.backup +258 -0
- package/plugins/specweave-jira/hooks/post-task-completion.sh.backup +172 -0
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +540 -0
- package/plugins/specweave-release/hooks/post-task-completion.sh.backup +110 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bitbucket Provider Implementation
|
|
2
|
+
* Bitbucket Provider Implementation
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Implements GitProvider interface for Bitbucket.org and Bitbucket Server/Data Center.
|
|
5
|
+
* Handles repository validation, creation, and management via Bitbucket API 2.0.
|
|
6
6
|
*
|
|
7
7
|
* @module providers/bitbucket-provider
|
|
8
8
|
*/
|
|
9
9
|
import { BaseGitProvider } from '../git-provider.js';
|
|
10
|
+
import { getActionableError, formatActionableError } from '../git-error-handler.js';
|
|
10
11
|
/**
|
|
11
|
-
* Bitbucket Provider
|
|
12
|
+
* Bitbucket Provider
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
+
* Implements Git operations for Bitbucket platform.
|
|
15
|
+
* Supports both Bitbucket.org and Bitbucket Server/Data Center.
|
|
14
16
|
*/
|
|
15
17
|
export class BitbucketProvider extends BaseGitProvider {
|
|
16
18
|
constructor(config) {
|
|
@@ -24,42 +26,175 @@ export class BitbucketProvider extends BaseGitProvider {
|
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
|
-
* Validate repository
|
|
29
|
+
* Validate if a repository exists on Bitbucket
|
|
28
30
|
*/
|
|
29
31
|
async validateRepository(owner, repo, token) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
try {
|
|
33
|
+
const headers = {
|
|
34
|
+
'Accept': 'application/json'
|
|
35
|
+
};
|
|
36
|
+
if (token) {
|
|
37
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
38
|
+
}
|
|
39
|
+
const response = await fetch(this.getApiUrl(`/repositories/${owner}/${repo}`), { headers });
|
|
40
|
+
if (response.status === 404) {
|
|
41
|
+
// Repository does not exist (good for creation)
|
|
42
|
+
return { exists: false, valid: true };
|
|
43
|
+
}
|
|
44
|
+
if (response.status === 200) {
|
|
45
|
+
// Repository already exists
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
return {
|
|
48
|
+
exists: true,
|
|
49
|
+
valid: true,
|
|
50
|
+
url: data.links.html.href
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (response.status === 401 || response.status === 403) {
|
|
54
|
+
// Authentication or permission error
|
|
55
|
+
const apiError = {
|
|
56
|
+
status: response.status,
|
|
57
|
+
message: response.statusText,
|
|
58
|
+
platform: 'bitbucket',
|
|
59
|
+
operation: 'validate_repo',
|
|
60
|
+
resourceType: 'repository',
|
|
61
|
+
resourceName: `${owner}/${repo}`
|
|
62
|
+
};
|
|
63
|
+
const actionable = getActionableError(apiError);
|
|
64
|
+
return { exists: false, valid: false, error: formatActionableError(actionable) };
|
|
65
|
+
}
|
|
66
|
+
// Other error
|
|
67
|
+
const apiError = {
|
|
68
|
+
status: response.status,
|
|
69
|
+
message: response.statusText,
|
|
70
|
+
platform: 'bitbucket',
|
|
71
|
+
operation: 'validate_repo',
|
|
72
|
+
resourceType: 'repository',
|
|
73
|
+
resourceName: `${owner}/${repo}`
|
|
74
|
+
};
|
|
75
|
+
const actionable = getActionableError(apiError);
|
|
76
|
+
return {
|
|
77
|
+
exists: false,
|
|
78
|
+
valid: false,
|
|
79
|
+
error: formatActionableError(actionable)
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return {
|
|
84
|
+
exists: false,
|
|
85
|
+
valid: false,
|
|
86
|
+
error: `Network error: ${error instanceof Error ? error.message : String(error)}`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
46
89
|
}
|
|
47
90
|
/**
|
|
48
|
-
* Validate
|
|
91
|
+
* Validate if a Bitbucket workspace (user or team) exists
|
|
49
92
|
*/
|
|
50
93
|
async validateOwner(owner, token) {
|
|
51
|
-
|
|
94
|
+
const headers = {
|
|
95
|
+
'Accept': 'application/json'
|
|
96
|
+
};
|
|
97
|
+
if (token) {
|
|
98
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
// Try as workspace (can be user or team)
|
|
102
|
+
const workspaceResponse = await fetch(this.getApiUrl(`/workspaces/${owner}`), { headers });
|
|
103
|
+
if (workspaceResponse.status === 200) {
|
|
104
|
+
const data = await workspaceResponse.json();
|
|
105
|
+
// Workspace can be either user or team
|
|
106
|
+
const type = data.type === 'team' ? 'organization' : 'user';
|
|
107
|
+
return { valid: true, type };
|
|
108
|
+
}
|
|
109
|
+
// Try as user
|
|
110
|
+
const userResponse = await fetch(this.getApiUrl(`/users/${owner}`), { headers });
|
|
111
|
+
if (userResponse.status === 200) {
|
|
112
|
+
return { valid: true, type: 'user' };
|
|
113
|
+
}
|
|
114
|
+
// Not found
|
|
115
|
+
const apiError = {
|
|
116
|
+
status: 404,
|
|
117
|
+
message: 'Not Found',
|
|
118
|
+
platform: 'bitbucket',
|
|
119
|
+
operation: 'validate_owner',
|
|
120
|
+
resourceType: 'workspace',
|
|
121
|
+
resourceName: owner
|
|
122
|
+
};
|
|
123
|
+
const actionable = getActionableError(apiError);
|
|
124
|
+
return { valid: false, error: formatActionableError(actionable) };
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return {
|
|
128
|
+
valid: false,
|
|
129
|
+
error: `Network error: ${error instanceof Error ? error.message : String(error)}`
|
|
130
|
+
};
|
|
131
|
+
}
|
|
52
132
|
}
|
|
53
133
|
/**
|
|
54
|
-
* Create repository
|
|
134
|
+
* Create a new repository on Bitbucket
|
|
55
135
|
*/
|
|
56
136
|
async createRepository(options, token) {
|
|
57
|
-
|
|
137
|
+
const payload = {
|
|
138
|
+
scm: 'git',
|
|
139
|
+
name: options.name,
|
|
140
|
+
description: options.description,
|
|
141
|
+
is_private: options.visibility === 'private',
|
|
142
|
+
has_issues: options.hasIssues !== false,
|
|
143
|
+
has_wiki: options.hasWiki || false,
|
|
144
|
+
fork_policy: 'no_public_forks'
|
|
145
|
+
};
|
|
146
|
+
const response = await fetch(this.getApiUrl(`/repositories/${options.owner}/${options.name}`), {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
headers: {
|
|
149
|
+
'Authorization': `Bearer ${token}`,
|
|
150
|
+
'Accept': 'application/json',
|
|
151
|
+
'Content-Type': 'application/json'
|
|
152
|
+
},
|
|
153
|
+
body: JSON.stringify(payload)
|
|
154
|
+
});
|
|
155
|
+
if (!response.ok) {
|
|
156
|
+
const error = await response.json();
|
|
157
|
+
// Handle "already exists" error
|
|
158
|
+
if (response.status === 400 && error.error?.message?.includes('already exists')) {
|
|
159
|
+
// Repository already exists, return URL
|
|
160
|
+
const host = this.config.customDomain || this.config.host;
|
|
161
|
+
return `https://${host}/${options.owner}/${options.name}`;
|
|
162
|
+
}
|
|
163
|
+
// Handle other errors with actionable messages
|
|
164
|
+
const apiError = {
|
|
165
|
+
status: response.status,
|
|
166
|
+
message: error.error?.message || response.statusText,
|
|
167
|
+
platform: 'bitbucket',
|
|
168
|
+
operation: 'create_repo',
|
|
169
|
+
resourceType: 'repository',
|
|
170
|
+
resourceName: `${options.owner}/${options.name}`
|
|
171
|
+
};
|
|
172
|
+
const actionable = getActionableError(apiError);
|
|
173
|
+
throw new Error(formatActionableError(actionable));
|
|
174
|
+
}
|
|
175
|
+
const data = await response.json();
|
|
176
|
+
return data.links.html.href;
|
|
58
177
|
}
|
|
59
178
|
/**
|
|
60
|
-
* Check if
|
|
179
|
+
* Check if a workspace is a team (organization)
|
|
61
180
|
*/
|
|
62
181
|
async isOrganization(account, token) {
|
|
182
|
+
try {
|
|
183
|
+
const headers = {
|
|
184
|
+
'Accept': 'application/json'
|
|
185
|
+
};
|
|
186
|
+
if (token) {
|
|
187
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
188
|
+
}
|
|
189
|
+
const response = await fetch(this.getApiUrl(`/workspaces/${account}`), { headers });
|
|
190
|
+
if (response.ok) {
|
|
191
|
+
const data = await response.json();
|
|
192
|
+
return data.type === 'team';
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Assume user if we can't determine
|
|
197
|
+
}
|
|
63
198
|
return false;
|
|
64
199
|
}
|
|
65
200
|
/**
|
|
@@ -78,16 +213,15 @@ For now, please use GitHub or wait for the next SpecWeave release.
|
|
|
78
213
|
return ['repository:read', 'repository:write', 'repository:admin'];
|
|
79
214
|
}
|
|
80
215
|
/**
|
|
81
|
-
* Override SSH user for Bitbucket
|
|
216
|
+
* Override SSH user for Bitbucket
|
|
82
217
|
*/
|
|
83
218
|
getSSHUser() {
|
|
84
219
|
return 'git';
|
|
85
220
|
}
|
|
86
221
|
/**
|
|
87
|
-
* Override getAuthHeaders for Bitbucket-specific auth
|
|
222
|
+
* Override getAuthHeaders for Bitbucket-specific auth (Bearer token)
|
|
88
223
|
*/
|
|
89
224
|
getAuthHeaders(token) {
|
|
90
|
-
// Bitbucket uses HTTP Basic Auth or App Passwords
|
|
91
225
|
return {
|
|
92
226
|
'Authorization': `Bearer ${token}`,
|
|
93
227
|
'Accept': 'application/json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitbucket-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/bitbucket-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAsG,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"bitbucket-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/bitbucket-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GitLab Provider Implementation
|
|
2
|
+
* GitLab Provider Implementation
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Implements GitProvider interface for GitLab.com and self-hosted GitLab instances.
|
|
5
|
+
* Handles project validation, creation, and management via GitLab API v4.
|
|
6
6
|
*
|
|
7
7
|
* @module providers/gitlab-provider
|
|
8
8
|
*/
|
|
9
9
|
import { BaseGitProvider, type PlatformConfig, type RepoValidationResult, type OwnerValidationResult, type CreateRepoOptions } from '../git-provider.js';
|
|
10
10
|
/**
|
|
11
|
-
* GitLab Provider
|
|
11
|
+
* GitLab Provider
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* Implements Git operations for GitLab platform.
|
|
14
|
+
* Supports both GitLab.com and self-hosted GitLab instances.
|
|
14
15
|
*/
|
|
15
16
|
export declare class GitLabProvider extends BaseGitProvider {
|
|
16
17
|
constructor(config?: Partial<PlatformConfig>);
|
|
17
18
|
/**
|
|
18
|
-
* Validate
|
|
19
|
+
* Validate if a project exists on GitLab
|
|
19
20
|
*/
|
|
20
21
|
validateRepository(owner: string, repo: string, token?: string): Promise<RepoValidationResult>;
|
|
21
22
|
/**
|
|
22
|
-
* Validate
|
|
23
|
+
* Validate if a GitLab namespace (user or group) exists
|
|
23
24
|
*/
|
|
24
25
|
validateOwner(owner: string, token?: string): Promise<OwnerValidationResult>;
|
|
25
26
|
/**
|
|
26
|
-
* Create
|
|
27
|
+
* Create a new project on GitLab
|
|
27
28
|
*/
|
|
28
29
|
createRepository(options: CreateRepoOptions, token: string): Promise<string>;
|
|
29
30
|
/**
|
|
30
|
-
* Check if
|
|
31
|
+
* Check if a namespace is a group (organization)
|
|
31
32
|
*/
|
|
32
33
|
isOrganization(account: string, token?: string): Promise<boolean>;
|
|
33
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/gitlab-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitlab-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/gitlab-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGzJ;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,eAAe;gBACrC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAW5C;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;IA0EhC;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAsDjC;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IA6ElB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBvE;;OAEG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,iBAAiB,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE;IAIrD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAOhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAErF"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GitLab Provider Implementation
|
|
2
|
+
* GitLab Provider Implementation
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Implements GitProvider interface for GitLab.com and self-hosted GitLab instances.
|
|
5
|
+
* Handles project validation, creation, and management via GitLab API v4.
|
|
6
6
|
*
|
|
7
7
|
* @module providers/gitlab-provider
|
|
8
8
|
*/
|
|
9
9
|
import { BaseGitProvider } from '../git-provider.js';
|
|
10
|
+
import { getActionableError, formatActionableError } from '../git-error-handler.js';
|
|
10
11
|
/**
|
|
11
|
-
* GitLab Provider
|
|
12
|
+
* GitLab Provider
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
+
* Implements Git operations for GitLab platform.
|
|
15
|
+
* Supports both GitLab.com and self-hosted GitLab instances.
|
|
14
16
|
*/
|
|
15
17
|
export class GitLabProvider extends BaseGitProvider {
|
|
16
18
|
constructor(config) {
|
|
@@ -24,43 +26,195 @@ export class GitLabProvider extends BaseGitProvider {
|
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
|
-
* Validate
|
|
29
|
+
* Validate if a project exists on GitLab
|
|
28
30
|
*/
|
|
29
31
|
async validateRepository(owner, repo, token) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
try {
|
|
33
|
+
const headers = {
|
|
34
|
+
'Accept': 'application/json'
|
|
35
|
+
};
|
|
36
|
+
if (token) {
|
|
37
|
+
headers['PRIVATE-TOKEN'] = token;
|
|
38
|
+
}
|
|
39
|
+
// GitLab uses namespace/project format for project IDs
|
|
40
|
+
const projectPath = encodeURIComponent(`${owner}/${repo}`);
|
|
41
|
+
const response = await fetch(this.getApiUrl(`/projects/${projectPath}`), { headers });
|
|
42
|
+
if (response.status === 404) {
|
|
43
|
+
// Project does not exist (good for creation)
|
|
44
|
+
return { exists: false, valid: true };
|
|
45
|
+
}
|
|
46
|
+
if (response.status === 200) {
|
|
47
|
+
// Project already exists
|
|
48
|
+
const data = await response.json();
|
|
49
|
+
return {
|
|
50
|
+
exists: true,
|
|
51
|
+
valid: true,
|
|
52
|
+
url: data.web_url
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (response.status === 401 || response.status === 403) {
|
|
56
|
+
// Authentication or permission error
|
|
57
|
+
const apiError = {
|
|
58
|
+
status: response.status,
|
|
59
|
+
message: response.statusText,
|
|
60
|
+
platform: 'gitlab',
|
|
61
|
+
operation: 'validate_repo',
|
|
62
|
+
resourceType: 'project',
|
|
63
|
+
resourceName: `${owner}/${repo}`
|
|
64
|
+
};
|
|
65
|
+
const actionable = getActionableError(apiError);
|
|
66
|
+
return { exists: false, valid: false, error: formatActionableError(actionable) };
|
|
67
|
+
}
|
|
68
|
+
// Other error
|
|
69
|
+
const apiError = {
|
|
70
|
+
status: response.status,
|
|
71
|
+
message: response.statusText,
|
|
72
|
+
platform: 'gitlab',
|
|
73
|
+
operation: 'validate_repo',
|
|
74
|
+
resourceType: 'project',
|
|
75
|
+
resourceName: `${owner}/${repo}`
|
|
76
|
+
};
|
|
77
|
+
const actionable = getActionableError(apiError);
|
|
78
|
+
return {
|
|
79
|
+
exists: false,
|
|
80
|
+
valid: false,
|
|
81
|
+
error: formatActionableError(actionable)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return {
|
|
86
|
+
exists: false,
|
|
87
|
+
valid: false,
|
|
88
|
+
error: `Network error: ${error instanceof Error ? error.message : String(error)}`
|
|
89
|
+
};
|
|
90
|
+
}
|
|
46
91
|
}
|
|
47
92
|
/**
|
|
48
|
-
* Validate
|
|
93
|
+
* Validate if a GitLab namespace (user or group) exists
|
|
49
94
|
*/
|
|
50
95
|
async validateOwner(owner, token) {
|
|
51
|
-
|
|
96
|
+
const headers = {
|
|
97
|
+
'Accept': 'application/json'
|
|
98
|
+
};
|
|
99
|
+
if (token) {
|
|
100
|
+
headers['PRIVATE-TOKEN'] = token;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
// Try as user first
|
|
104
|
+
const userResponse = await fetch(this.getApiUrl(`/users?username=${encodeURIComponent(owner)}`), { headers });
|
|
105
|
+
if (userResponse.status === 200) {
|
|
106
|
+
const users = await userResponse.json();
|
|
107
|
+
if (users.length > 0) {
|
|
108
|
+
return { valid: true, type: 'user' };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Try as group
|
|
112
|
+
const groupResponse = await fetch(this.getApiUrl(`/groups/${encodeURIComponent(owner)}`), { headers });
|
|
113
|
+
if (groupResponse.status === 200) {
|
|
114
|
+
return { valid: true, type: 'organization' };
|
|
115
|
+
}
|
|
116
|
+
// Not found
|
|
117
|
+
const apiError = {
|
|
118
|
+
status: 404,
|
|
119
|
+
message: 'Not Found',
|
|
120
|
+
platform: 'gitlab',
|
|
121
|
+
operation: 'validate_owner',
|
|
122
|
+
resourceType: 'namespace',
|
|
123
|
+
resourceName: owner
|
|
124
|
+
};
|
|
125
|
+
const actionable = getActionableError(apiError);
|
|
126
|
+
return { valid: false, error: formatActionableError(actionable) };
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return {
|
|
130
|
+
valid: false,
|
|
131
|
+
error: `Network error: ${error instanceof Error ? error.message : String(error)}`
|
|
132
|
+
};
|
|
133
|
+
}
|
|
52
134
|
}
|
|
53
135
|
/**
|
|
54
|
-
* Create
|
|
136
|
+
* Create a new project on GitLab
|
|
55
137
|
*/
|
|
56
138
|
async createRepository(options, token) {
|
|
57
|
-
|
|
139
|
+
// Check if it's a group or user namespace
|
|
140
|
+
const isGroup = await this.isOrganization(options.owner, token);
|
|
141
|
+
const payload = {
|
|
142
|
+
name: options.name,
|
|
143
|
+
description: options.description,
|
|
144
|
+
visibility: options.visibility === 'private' ? 'private' :
|
|
145
|
+
options.visibility === 'internal' ? 'internal' : 'public',
|
|
146
|
+
initialize_with_readme: options.autoInit || false,
|
|
147
|
+
issues_enabled: options.hasIssues !== false,
|
|
148
|
+
wiki_enabled: options.hasWiki || false
|
|
149
|
+
};
|
|
150
|
+
// For group projects, specify the namespace_id
|
|
151
|
+
if (isGroup) {
|
|
152
|
+
try {
|
|
153
|
+
const groupResponse = await fetch(this.getApiUrl(`/groups/${encodeURIComponent(options.owner)}`), {
|
|
154
|
+
headers: {
|
|
155
|
+
'PRIVATE-TOKEN': token,
|
|
156
|
+
'Accept': 'application/json'
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
if (groupResponse.ok) {
|
|
160
|
+
const group = await groupResponse.json();
|
|
161
|
+
payload.namespace_id = group.id;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Continue without namespace_id, will use user's namespace
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const response = await fetch(this.getApiUrl('/projects'), {
|
|
169
|
+
method: 'POST',
|
|
170
|
+
headers: {
|
|
171
|
+
'PRIVATE-TOKEN': token,
|
|
172
|
+
'Accept': 'application/json',
|
|
173
|
+
'Content-Type': 'application/json'
|
|
174
|
+
},
|
|
175
|
+
body: JSON.stringify(payload)
|
|
176
|
+
});
|
|
177
|
+
if (!response.ok) {
|
|
178
|
+
const error = await response.json();
|
|
179
|
+
// Handle "already exists" error
|
|
180
|
+
if (error.message?.name?.[0]?.includes('has already been taken')) {
|
|
181
|
+
// Project already exists, return URL
|
|
182
|
+
const host = this.config.customDomain || this.config.host;
|
|
183
|
+
return `https://${host}/${options.owner}/${options.name}`;
|
|
184
|
+
}
|
|
185
|
+
// Handle other errors with actionable messages
|
|
186
|
+
const apiError = {
|
|
187
|
+
status: response.status,
|
|
188
|
+
message: error.message || response.statusText,
|
|
189
|
+
platform: 'gitlab',
|
|
190
|
+
operation: 'create_repo',
|
|
191
|
+
resourceType: 'project',
|
|
192
|
+
resourceName: `${options.owner}/${options.name}`
|
|
193
|
+
};
|
|
194
|
+
const actionable = getActionableError(apiError);
|
|
195
|
+
throw new Error(formatActionableError(actionable));
|
|
196
|
+
}
|
|
197
|
+
const data = await response.json();
|
|
198
|
+
return data.web_url;
|
|
58
199
|
}
|
|
59
200
|
/**
|
|
60
|
-
* Check if
|
|
201
|
+
* Check if a namespace is a group (organization)
|
|
61
202
|
*/
|
|
62
203
|
async isOrganization(account, token) {
|
|
63
|
-
|
|
204
|
+
try {
|
|
205
|
+
const headers = {
|
|
206
|
+
'Accept': 'application/json'
|
|
207
|
+
};
|
|
208
|
+
if (token) {
|
|
209
|
+
headers['PRIVATE-TOKEN'] = token;
|
|
210
|
+
}
|
|
211
|
+
const response = await fetch(this.getApiUrl(`/groups/${encodeURIComponent(account)}`), { headers });
|
|
212
|
+
return response.ok;
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Assume user if we can't determine
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
64
218
|
}
|
|
65
219
|
/**
|
|
66
220
|
* Get token creation URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/gitlab-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAsG,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitlab-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/gitlab-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
export { GitHubProvider, createGitHubProvider } from './github-provider.js';
|
|
10
10
|
export { GitLabProvider, createGitLabProvider } from './gitlab-provider.js';
|
|
11
11
|
export { BitbucketProvider, createBitbucketProvider } from './bitbucket-provider.js';
|
|
12
|
+
export { AzureDevOpsProvider, createAzureDevOpsProvider } from './azure-devops-provider.js';
|
|
13
|
+
export { LocalGitProvider, createLocalGitProvider } from './local-provider.js';
|
|
12
14
|
/**
|
|
13
15
|
* Initialize and register all Git providers
|
|
14
16
|
*
|
|
@@ -29,5 +31,5 @@ export declare function resetProviders(): void;
|
|
|
29
31
|
* @param platform - Platform type
|
|
30
32
|
* @returns Provider instance or undefined
|
|
31
33
|
*/
|
|
32
|
-
export declare function getProvider(platform: 'github' | 'gitlab' | 'bitbucket'): import("../git-provider.js").GitProvider;
|
|
34
|
+
export declare function getProvider(platform: 'github' | 'gitlab' | 'bitbucket' | 'azure-devops' | 'local'): import("../git-provider.js").GitProvider;
|
|
33
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAe/E;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAwB1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,4CAGjG"}
|
|
@@ -9,10 +9,14 @@
|
|
|
9
9
|
export { GitHubProvider, createGitHubProvider } from './github-provider.js';
|
|
10
10
|
export { GitLabProvider, createGitLabProvider } from './gitlab-provider.js';
|
|
11
11
|
export { BitbucketProvider, createBitbucketProvider } from './bitbucket-provider.js';
|
|
12
|
+
export { AzureDevOpsProvider, createAzureDevOpsProvider } from './azure-devops-provider.js';
|
|
13
|
+
export { LocalGitProvider, createLocalGitProvider } from './local-provider.js';
|
|
12
14
|
import { getPlatformRegistry } from '../platform-registry.js';
|
|
13
15
|
import { createGitHubProvider } from './github-provider.js';
|
|
14
16
|
import { createGitLabProvider } from './gitlab-provider.js';
|
|
15
17
|
import { createBitbucketProvider } from './bitbucket-provider.js';
|
|
18
|
+
import { createAzureDevOpsProvider } from './azure-devops-provider.js';
|
|
19
|
+
import { createLocalGitProvider } from './local-provider.js';
|
|
16
20
|
/**
|
|
17
21
|
* Track whether providers have been initialized
|
|
18
22
|
* Prevents re-initialization in long-running sessions (Issue #2 fix)
|
|
@@ -34,10 +38,14 @@ export function initializeProviders() {
|
|
|
34
38
|
const registry = getPlatformRegistry();
|
|
35
39
|
// Register GitHub provider (fully supported)
|
|
36
40
|
registry.registerProvider('github', createGitHubProvider());
|
|
37
|
-
// Register GitLab provider (
|
|
41
|
+
// Register GitLab provider (fully supported)
|
|
38
42
|
registry.registerProvider('gitlab', createGitLabProvider());
|
|
39
|
-
// Register Bitbucket provider (
|
|
43
|
+
// Register Bitbucket provider (fully supported)
|
|
40
44
|
registry.registerProvider('bitbucket', createBitbucketProvider());
|
|
45
|
+
// Register Azure DevOps provider (fully supported)
|
|
46
|
+
registry.registerProvider('azure-devops', createAzureDevOpsProvider());
|
|
47
|
+
// Register Local Git provider (fully supported)
|
|
48
|
+
registry.registerProvider('local', createLocalGitProvider());
|
|
41
49
|
providersInitialized = true;
|
|
42
50
|
}
|
|
43
51
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,8DAA8D;IAC9D,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAE5D,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAE5D,gDAAgD;IAChD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAElE,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,CAAC,cAAc,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAEvE,gDAAgD;IAChD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAE7D,oBAAoB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,oBAAoB,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAsE;IAChG,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
|