specweave 0.24.6 → 0.24.8

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 (147) hide show
  1. package/CLAUDE.md +64 -0
  2. package/README.md +34 -0
  3. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts +5 -2
  4. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -1
  5. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +72 -6
  6. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  7. package/dist/src/cli/helpers/issue-tracker/github.d.ts +2 -1
  8. package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -1
  9. package/dist/src/cli/helpers/issue-tracker/github.js +4 -3
  10. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  11. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  12. package/dist/src/cli/helpers/issue-tracker/index.js +26 -9
  13. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  14. package/dist/src/cli/helpers/issue-tracker/types.d.ts +1 -0
  15. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  16. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
  17. package/dist/src/core/repo-structure/git-error-handler.d.ts +37 -0
  18. package/dist/src/core/repo-structure/git-error-handler.d.ts.map +1 -0
  19. package/dist/src/core/repo-structure/git-error-handler.js +214 -0
  20. package/dist/src/core/repo-structure/git-error-handler.js.map +1 -0
  21. package/dist/src/core/repo-structure/git-provider.d.ts +183 -0
  22. package/dist/src/core/repo-structure/git-provider.d.ts.map +1 -0
  23. package/dist/src/core/repo-structure/git-provider.js +57 -0
  24. package/dist/src/core/repo-structure/git-provider.js.map +1 -0
  25. package/dist/src/core/repo-structure/github-validator.d.ts +1 -0
  26. package/dist/src/core/repo-structure/github-validator.d.ts.map +1 -1
  27. package/dist/src/core/repo-structure/github-validator.js +35 -9
  28. package/dist/src/core/repo-structure/github-validator.js.map +1 -1
  29. package/dist/src/core/repo-structure/platform-registry.d.ts +114 -0
  30. package/dist/src/core/repo-structure/platform-registry.d.ts.map +1 -0
  31. package/dist/src/core/repo-structure/platform-registry.js +195 -0
  32. package/dist/src/core/repo-structure/platform-registry.js.map +1 -0
  33. package/dist/src/core/repo-structure/prompt-consolidator.d.ts +30 -0
  34. package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
  35. package/dist/src/core/repo-structure/prompt-consolidator.js +69 -0
  36. package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
  37. package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts +54 -0
  38. package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts.map +1 -0
  39. package/dist/src/core/repo-structure/providers/bitbucket-provider.js +104 -0
  40. package/dist/src/core/repo-structure/providers/bitbucket-provider.js.map +1 -0
  41. package/dist/src/core/repo-structure/providers/github-provider.d.ts +53 -0
  42. package/dist/src/core/repo-structure/providers/github-provider.d.ts.map +1 -0
  43. package/dist/src/core/repo-structure/providers/github-provider.js +239 -0
  44. package/dist/src/core/repo-structure/providers/github-provider.js.map +1 -0
  45. package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts +50 -0
  46. package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts.map +1 -0
  47. package/dist/src/core/repo-structure/providers/gitlab-provider.js +97 -0
  48. package/dist/src/core/repo-structure/providers/gitlab-provider.js.map +1 -0
  49. package/dist/src/core/repo-structure/providers/index.d.ts +33 -0
  50. package/dist/src/core/repo-structure/providers/index.d.ts.map +1 -0
  51. package/dist/src/core/repo-structure/providers/index.js +60 -0
  52. package/dist/src/core/repo-structure/providers/index.js.map +1 -0
  53. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +10 -3
  54. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  55. package/dist/src/core/repo-structure/repo-structure-manager.js +125 -42
  56. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  57. package/dist/src/core/repo-structure/url-generator.d.ts +80 -0
  58. package/dist/src/core/repo-structure/url-generator.d.ts.map +1 -0
  59. package/dist/src/core/repo-structure/url-generator.js +110 -0
  60. package/dist/src/core/repo-structure/url-generator.js.map +1 -0
  61. package/package.json +1 -1
  62. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -1
  63. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
  64. package/plugins/specweave/agents/pm/AGENT.md.bak +0 -1893
  65. package/plugins/specweave/hooks/docs-changed.sh.backup +0 -79
  66. package/plugins/specweave/hooks/human-input-required.sh.backup +0 -75
  67. package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +0 -245
  68. package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +0 -149
  69. package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +0 -163
  70. package/plugins/specweave/hooks/post-first-increment.sh.backup +0 -61
  71. package/plugins/specweave/hooks/post-first-increment.sh.bak +0 -61
  72. package/plugins/specweave/hooks/post-increment-change.sh.backup +0 -98
  73. package/plugins/specweave/hooks/post-increment-completion.sh.backup +0 -231
  74. package/plugins/specweave/hooks/post-increment-planning.sh.backup +0 -1048
  75. package/plugins/specweave/hooks/post-increment-status-change.sh.backup +0 -147
  76. package/plugins/specweave/hooks/post-spec-update.sh.backup +0 -158
  77. package/plugins/specweave/hooks/post-spec-update.sh.bak +0 -158
  78. package/plugins/specweave/hooks/post-user-story-complete.sh.backup +0 -179
  79. package/plugins/specweave/hooks/post-user-story-complete.sh.bak +0 -179
  80. package/plugins/specweave/hooks/pre-command-deduplication.sh.backup +0 -83
  81. package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +0 -83
  82. package/plugins/specweave/hooks/pre-implementation.sh.backup +0 -67
  83. package/plugins/specweave/hooks/pre-task-completion.sh.backup +0 -194
  84. package/plugins/specweave/hooks/pre-tool-use.sh.backup +0 -133
  85. package/plugins/specweave/hooks/user-prompt-submit.sh.backup +0 -386
  86. package/plugins/specweave/hooks/user-prompt-submit.sh.bak +0 -386
  87. package/plugins/specweave/lib/hooks/auto-transition.js.bak +0 -50
  88. package/plugins/specweave/lib/hooks/auto-transition.ts.bak +0 -84
  89. package/plugins/specweave/lib/hooks/git-diff-analyzer.d.js.bak +0 -0
  90. package/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.bak +0 -89
  91. package/plugins/specweave/lib/hooks/git-diff-analyzer.js.bak +0 -142
  92. package/plugins/specweave/lib/hooks/git-diff-analyzer.ts.bak +0 -269
  93. package/plugins/specweave/lib/hooks/invoke-translator-skill.d.js.bak +0 -0
  94. package/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.bak +0 -60
  95. package/plugins/specweave/lib/hooks/invoke-translator-skill.js.bak +0 -155
  96. package/plugins/specweave/lib/hooks/invoke-translator-skill.ts.bak +0 -264
  97. package/plugins/specweave/lib/hooks/prepare-reflection-context.d.js.bak +0 -0
  98. package/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.bak +0 -42
  99. package/plugins/specweave/lib/hooks/prepare-reflection-context.js.bak +0 -110
  100. package/plugins/specweave/lib/hooks/prepare-reflection-context.ts.bak +0 -178
  101. package/plugins/specweave/lib/hooks/reflection-config-loader.d.js.bak +0 -0
  102. package/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.bak +0 -45
  103. package/plugins/specweave/lib/hooks/reflection-config-loader.js.bak +0 -92
  104. package/plugins/specweave/lib/hooks/reflection-config-loader.ts.bak +0 -156
  105. package/plugins/specweave/lib/hooks/reflection-parser.d.js.bak +0 -0
  106. package/plugins/specweave/lib/hooks/reflection-parser.d.ts.bak +0 -33
  107. package/plugins/specweave/lib/hooks/reflection-parser.js.bak +0 -301
  108. package/plugins/specweave/lib/hooks/reflection-parser.ts.bak +0 -484
  109. package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.js.bak +0 -0
  110. package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.bak +0 -56
  111. package/plugins/specweave/lib/hooks/reflection-prompt-builder.js.bak +0 -182
  112. package/plugins/specweave/lib/hooks/reflection-prompt-builder.ts.bak +0 -306
  113. package/plugins/specweave/lib/hooks/reflection-storage.d.js.bak +0 -0
  114. package/plugins/specweave/lib/hooks/reflection-storage.d.ts.bak +0 -64
  115. package/plugins/specweave/lib/hooks/reflection-storage.js.bak +0 -231
  116. package/plugins/specweave/lib/hooks/reflection-storage.ts.bak +0 -369
  117. package/plugins/specweave/lib/hooks/run-self-reflection.d.js.bak +0 -0
  118. package/plugins/specweave/lib/hooks/run-self-reflection.d.ts.bak +0 -43
  119. package/plugins/specweave/lib/hooks/run-self-reflection.js.bak +0 -132
  120. package/plugins/specweave/lib/hooks/run-self-reflection.ts.bak +0 -258
  121. package/plugins/specweave/lib/hooks/sync-cache.js.bak +0 -294
  122. package/plugins/specweave/lib/hooks/sync-living-docs.d.js.bak +0 -1
  123. package/plugins/specweave/lib/hooks/sync-living-docs.d.ts.bak +0 -27
  124. package/plugins/specweave/lib/hooks/sync-living-docs.js.bak +0 -339
  125. package/plugins/specweave/lib/hooks/sync-us-tasks.js.bak +0 -476
  126. package/plugins/specweave/lib/hooks/translate-file.d.js.bak +0 -0
  127. package/plugins/specweave/lib/hooks/translate-file.d.ts.bak +0 -59
  128. package/plugins/specweave/lib/hooks/translate-file.js.bak +0 -289
  129. package/plugins/specweave/lib/hooks/translate-file.ts.bak +0 -428
  130. package/plugins/specweave/lib/hooks/translate-living-docs.d.js.bak +0 -0
  131. package/plugins/specweave/lib/hooks/translate-living-docs.d.ts.bak +0 -13
  132. package/plugins/specweave/lib/hooks/translate-living-docs.js.bak +0 -119
  133. package/plugins/specweave/lib/hooks/translate-living-docs.ts.bak +0 -224
  134. package/plugins/specweave/lib/hooks/update-ac-status.js.bak +0 -51
  135. package/plugins/specweave/lib/hooks/update-ac-status.ts.bak +0 -103
  136. package/plugins/specweave/lib/hooks/update-tasks-md.d.js.bak +0 -1
  137. package/plugins/specweave/lib/hooks/update-tasks-md.d.ts.bak +0 -29
  138. package/plugins/specweave/lib/hooks/update-tasks-md.js.bak +0 -296
  139. package/plugins/specweave/lib/hooks/update-tasks-md.ts.bak +0 -489
  140. package/plugins/specweave-ado/hooks/post-living-docs-update.sh.backup +0 -353
  141. package/plugins/specweave-ado/hooks/post-task-completion.sh.backup +0 -172
  142. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
  143. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -360
  144. package/plugins/specweave-github/hooks/post-task-completion.sh.backup +0 -258
  145. package/plugins/specweave-jira/hooks/post-task-completion.sh.backup +0 -172
  146. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -444
  147. package/plugins/specweave-release/hooks/post-task-completion.sh.backup +0 -110
@@ -0,0 +1,239 @@
1
+ /**
2
+ * GitHub Provider Implementation
3
+ *
4
+ * Implements GitProvider interface for GitHub.com and GitHub Enterprise.
5
+ * Handles repository validation, creation, and management via GitHub API.
6
+ *
7
+ * @module providers/github-provider
8
+ */
9
+ import { BaseGitProvider } from '../git-provider.js';
10
+ import { getActionableError, formatActionableError } from '../git-error-handler.js';
11
+ /**
12
+ * GitHub Provider
13
+ *
14
+ * Implements Git operations for GitHub platform.
15
+ */
16
+ export class GitHubProvider extends BaseGitProvider {
17
+ constructor(config) {
18
+ super({
19
+ type: 'github',
20
+ name: 'GitHub',
21
+ host: config?.host || 'github.com',
22
+ apiBaseUrl: config?.apiBaseUrl || 'https://api.github.com',
23
+ selfHosted: config?.selfHosted || false,
24
+ customDomain: config?.customDomain
25
+ });
26
+ }
27
+ /**
28
+ * Validate if a repository exists on GitHub
29
+ */
30
+ async validateRepository(owner, repo, token) {
31
+ try {
32
+ const headers = {
33
+ 'Accept': 'application/vnd.github.v3+json'
34
+ };
35
+ if (token) {
36
+ headers['Authorization'] = `token ${token}`;
37
+ }
38
+ const response = await fetch(this.getApiUrl(`/repos/${owner}/${repo}`), { headers });
39
+ if (response.status === 404) {
40
+ // Repository does not exist (good for creation)
41
+ return { exists: false, valid: true };
42
+ }
43
+ if (response.status === 200) {
44
+ // Repository already exists
45
+ const data = await response.json();
46
+ return {
47
+ exists: true,
48
+ valid: true,
49
+ url: data.html_url
50
+ };
51
+ }
52
+ if (response.status === 401 || response.status === 403) {
53
+ // Authentication or permission error
54
+ const apiError = {
55
+ status: response.status,
56
+ message: response.statusText,
57
+ platform: 'github',
58
+ operation: 'validate_repo',
59
+ resourceType: 'repository',
60
+ resourceName: `${owner}/${repo}`
61
+ };
62
+ const actionable = getActionableError(apiError);
63
+ return { exists: false, valid: false, error: formatActionableError(actionable) };
64
+ }
65
+ // Other error
66
+ const apiError = {
67
+ status: response.status,
68
+ message: response.statusText,
69
+ platform: 'github',
70
+ operation: 'validate_repo',
71
+ resourceType: 'repository',
72
+ resourceName: `${owner}/${repo}`
73
+ };
74
+ const actionable = getActionableError(apiError);
75
+ return {
76
+ exists: false,
77
+ valid: false,
78
+ error: formatActionableError(actionable)
79
+ };
80
+ }
81
+ catch (error) {
82
+ return {
83
+ exists: false,
84
+ valid: false,
85
+ error: `Network error: ${error instanceof Error ? error.message : String(error)}`
86
+ };
87
+ }
88
+ }
89
+ /**
90
+ * Validate if a GitHub owner (user or organization) exists
91
+ */
92
+ async validateOwner(owner, token) {
93
+ const headers = {
94
+ 'Accept': 'application/vnd.github.v3+json'
95
+ };
96
+ if (token) {
97
+ headers['Authorization'] = `token ${token}`;
98
+ }
99
+ try {
100
+ // Try as user first
101
+ const userResponse = await fetch(this.getApiUrl(`/users/${owner}`), { headers });
102
+ if (userResponse.status === 200) {
103
+ const data = await userResponse.json();
104
+ const type = data.type === 'Organization' ? 'organization' : 'user';
105
+ return { valid: true, type };
106
+ }
107
+ // Try as organization
108
+ const orgResponse = await fetch(this.getApiUrl(`/orgs/${owner}`), { headers });
109
+ if (orgResponse.status === 200) {
110
+ return { valid: true, type: 'organization' };
111
+ }
112
+ // Not found
113
+ const apiError = {
114
+ status: 404,
115
+ message: 'Not Found',
116
+ platform: 'github',
117
+ operation: 'validate_owner',
118
+ resourceType: 'user',
119
+ resourceName: owner
120
+ };
121
+ const actionable = getActionableError(apiError);
122
+ return { valid: false, error: formatActionableError(actionable) };
123
+ }
124
+ catch (error) {
125
+ return {
126
+ valid: false,
127
+ error: `Network error: ${error instanceof Error ? error.message : String(error)}`
128
+ };
129
+ }
130
+ }
131
+ /**
132
+ * Create a new repository on GitHub
133
+ */
134
+ async createRepository(options, token) {
135
+ // Check if it's an organization or user
136
+ const isOrg = await this.isOrganization(options.owner, token);
137
+ const endpoint = isOrg
138
+ ? this.getApiUrl(`/orgs/${options.owner}/repos`)
139
+ : this.getApiUrl('/user/repos');
140
+ const response = await fetch(endpoint, {
141
+ method: 'POST',
142
+ headers: {
143
+ 'Authorization': `token ${token}`,
144
+ 'Accept': 'application/vnd.github.v3+json',
145
+ 'Content-Type': 'application/json'
146
+ },
147
+ body: JSON.stringify({
148
+ name: options.name,
149
+ description: options.description,
150
+ private: options.visibility === 'private',
151
+ auto_init: options.autoInit || false,
152
+ has_issues: options.hasIssues !== false,
153
+ has_wiki: options.hasWiki || false
154
+ })
155
+ });
156
+ if (!response.ok) {
157
+ const error = await response.json();
158
+ // Handle "already exists" error
159
+ if (error.errors?.[0]?.message?.includes('already exists')) {
160
+ // Repository already exists, return URL
161
+ return `https://${this.config.host}/${options.owner}/${options.name}`;
162
+ }
163
+ // Handle other errors with actionable messages
164
+ const apiError = {
165
+ status: response.status,
166
+ message: error.message || response.statusText,
167
+ platform: 'github',
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.html_url;
177
+ }
178
+ /**
179
+ * Check if an account is an organization
180
+ */
181
+ async isOrganization(account, token) {
182
+ try {
183
+ const headers = {
184
+ 'Accept': 'application/vnd.github.v3+json'
185
+ };
186
+ if (token) {
187
+ headers['Authorization'] = `token ${token}`;
188
+ }
189
+ const response = await fetch(this.getApiUrl(`/users/${account}`), { headers });
190
+ if (response.ok) {
191
+ const data = await response.json();
192
+ return data.type === 'Organization';
193
+ }
194
+ }
195
+ catch {
196
+ // Assume user if we can't determine
197
+ }
198
+ return false;
199
+ }
200
+ /**
201
+ * Get token creation URL
202
+ */
203
+ getTokenUrl() {
204
+ if (this.config.selfHosted) {
205
+ return `https://${this.config.customDomain || this.config.host}/settings/tokens/new`;
206
+ }
207
+ return 'https://github.com/settings/tokens/new';
208
+ }
209
+ /**
210
+ * Get required token scopes
211
+ */
212
+ getRequiredScopes(isOrganization) {
213
+ const scopes = ['repo'];
214
+ if (isOrganization) {
215
+ scopes.push('admin:org');
216
+ }
217
+ return scopes;
218
+ }
219
+ /**
220
+ * Override getAuthHeaders for GitHub-specific auth
221
+ */
222
+ getAuthHeaders(token) {
223
+ return {
224
+ 'Authorization': `token ${token}`,
225
+ 'Accept': 'application/vnd.github.v3+json',
226
+ 'Content-Type': 'application/json'
227
+ };
228
+ }
229
+ }
230
+ /**
231
+ * Create a GitHub provider instance
232
+ *
233
+ * @param config - Optional platform configuration
234
+ * @returns GitHub provider instance
235
+ */
236
+ export function createGitHubProvider(config) {
237
+ return new GitHubProvider(config);
238
+ }
239
+ //# sourceMappingURL=github-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/github-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * GitLab Provider Implementation (STUB)
3
+ *
4
+ * Stub implementation for GitLab.com and self-hosted GitLab instances.
5
+ * Full implementation coming soon!
6
+ *
7
+ * @module providers/gitlab-provider
8
+ */
9
+ import { BaseGitProvider, type PlatformConfig, type RepoValidationResult, type OwnerValidationResult, type CreateRepoOptions } from '../git-provider.js';
10
+ /**
11
+ * GitLab Provider (Stub)
12
+ *
13
+ * Placeholder implementation for GitLab support.
14
+ */
15
+ export declare class GitLabProvider extends BaseGitProvider {
16
+ constructor(config?: Partial<PlatformConfig>);
17
+ /**
18
+ * Validate repository (stub)
19
+ */
20
+ validateRepository(owner: string, repo: string, token?: string): Promise<RepoValidationResult>;
21
+ /**
22
+ * Validate owner (stub)
23
+ */
24
+ validateOwner(owner: string, token?: string): Promise<OwnerValidationResult>;
25
+ /**
26
+ * Create repository (stub)
27
+ */
28
+ createRepository(options: CreateRepoOptions, token: string): Promise<string>;
29
+ /**
30
+ * Check if organization (stub)
31
+ */
32
+ isOrganization(account: string, token?: string): Promise<boolean>;
33
+ /**
34
+ * Get token creation URL
35
+ */
36
+ getTokenUrl(): string;
37
+ /**
38
+ * Get required token scopes
39
+ */
40
+ getRequiredScopes(isOrganization?: boolean): string[];
41
+ /**
42
+ * Override getAuthHeaders for GitLab-specific auth (PRIVATE-TOKEN)
43
+ */
44
+ protected getAuthHeaders(token: string): Record<string, string>;
45
+ }
46
+ /**
47
+ * Create a GitLab provider instance
48
+ */
49
+ export declare function createGitLabProvider(config?: Partial<PlatformConfig>): GitLabProvider;
50
+ //# sourceMappingURL=gitlab-provider.d.ts.map
@@ -0,0 +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;AAEzJ;;;;GAIG;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;IAmBhC;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAIjC;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAIlB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE;;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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * GitLab Provider Implementation (STUB)
3
+ *
4
+ * Stub implementation for GitLab.com and self-hosted GitLab instances.
5
+ * Full implementation coming soon!
6
+ *
7
+ * @module providers/gitlab-provider
8
+ */
9
+ import { BaseGitProvider } from '../git-provider.js';
10
+ /**
11
+ * GitLab Provider (Stub)
12
+ *
13
+ * Placeholder implementation for GitLab support.
14
+ */
15
+ export class GitLabProvider extends BaseGitProvider {
16
+ constructor(config) {
17
+ super({
18
+ type: 'gitlab',
19
+ name: 'GitLab',
20
+ host: config?.host || 'gitlab.com',
21
+ apiBaseUrl: config?.apiBaseUrl || 'https://gitlab.com/api/v4',
22
+ selfHosted: config?.selfHosted || false,
23
+ customDomain: config?.customDomain
24
+ });
25
+ }
26
+ /**
27
+ * Validate repository (stub)
28
+ */
29
+ async validateRepository(owner, repo, token) {
30
+ throw new Error(`
31
+ ❌ GitLab Support Coming Soon!
32
+
33
+ GitLab integration is not yet implemented.
34
+ Currently, only GitHub is fully supported.
35
+
36
+ 🔜 What's coming:
37
+ • GitLab.com and self-hosted GitLab support
38
+ • Project validation and creation
39
+ • Group/namespace support
40
+ • SSH and HTTPS remote URLs
41
+
42
+ For now, please use GitHub or wait for the next SpecWeave release.
43
+
44
+ 📖 Track progress: https://github.com/anton-abyzov/specweave/issues
45
+ `.trim());
46
+ }
47
+ /**
48
+ * Validate owner (stub)
49
+ */
50
+ async validateOwner(owner, token) {
51
+ throw new Error('GitLab support coming soon! Please use GitHub for now.');
52
+ }
53
+ /**
54
+ * Create repository (stub)
55
+ */
56
+ async createRepository(options, token) {
57
+ throw new Error('GitLab support coming soon! Please use GitHub for now.');
58
+ }
59
+ /**
60
+ * Check if organization (stub)
61
+ */
62
+ async isOrganization(account, token) {
63
+ return false;
64
+ }
65
+ /**
66
+ * Get token creation URL
67
+ */
68
+ getTokenUrl() {
69
+ if (this.config.selfHosted) {
70
+ return `https://${this.config.customDomain || this.config.host}/-/profile/personal_access_tokens`;
71
+ }
72
+ return 'https://gitlab.com/-/profile/personal_access_tokens';
73
+ }
74
+ /**
75
+ * Get required token scopes
76
+ */
77
+ getRequiredScopes(isOrganization) {
78
+ return ['api', 'read_repository', 'write_repository'];
79
+ }
80
+ /**
81
+ * Override getAuthHeaders for GitLab-specific auth (PRIVATE-TOKEN)
82
+ */
83
+ getAuthHeaders(token) {
84
+ return {
85
+ 'PRIVATE-TOKEN': token,
86
+ 'Accept': 'application/json',
87
+ 'Content-Type': 'application/json'
88
+ };
89
+ }
90
+ }
91
+ /**
92
+ * Create a GitLab provider instance
93
+ */
94
+ export function createGitLabProvider(config) {
95
+ return new GitLabProvider(config);
96
+ }
97
+ //# sourceMappingURL=gitlab-provider.js.map
@@ -0,0 +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;AAEzJ;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IACjD,YAAY,MAAgC;QAC1C,KAAK,CAAC;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY;YAClC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,2BAA2B;YAC7D,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,KAAK;YACvC,YAAY,EAAE,MAAM,EAAE,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAa,EACb,IAAY,EACZ,KAAc;QAEd,MAAM,IAAI,KAAK,CAAC;;;;;;;;;;;;;;;KAef,CAAC,IAAI,EAAE,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,KAAc;QAEd,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAA0B,EAC1B,KAAa;QAEb,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,KAAc;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,mCAAmC,CAAC;QACpG,CAAC;QACD,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,cAAwB;QACxC,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,KAAa;QACpC,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,QAAQ,EAAE,kBAAkB;YAC5B,cAAc,EAAE,kBAAkB;SACnC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgC;IACnE,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Git Providers Index
3
+ *
4
+ * Exports all Git provider implementations and provides
5
+ * initialization functions.
6
+ *
7
+ * @module providers
8
+ */
9
+ export { GitHubProvider, createGitHubProvider } from './github-provider.js';
10
+ export { GitLabProvider, createGitLabProvider } from './gitlab-provider.js';
11
+ export { BitbucketProvider, createBitbucketProvider } from './bitbucket-provider.js';
12
+ /**
13
+ * Initialize and register all Git providers
14
+ *
15
+ * Call this once during application initialization to make
16
+ * all providers available through the platform registry.
17
+ *
18
+ * Idempotent: Safe to call multiple times - only initializes once.
19
+ */
20
+ export declare function initializeProviders(): void;
21
+ /**
22
+ * Reset provider initialization state (for testing only)
23
+ * @internal
24
+ */
25
+ export declare function resetProviders(): void;
26
+ /**
27
+ * Get provider by platform type (convenience function)
28
+ *
29
+ * @param platform - Platform type
30
+ * @returns Provider instance or undefined
31
+ */
32
+ export declare function getProvider(platform: 'github' | 'gitlab' | 'bitbucket'): import("../git-provider.js").GitProvider;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAarF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAkB1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,4CAGtE"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Git Providers Index
3
+ *
4
+ * Exports all Git provider implementations and provides
5
+ * initialization functions.
6
+ *
7
+ * @module providers
8
+ */
9
+ export { GitHubProvider, createGitHubProvider } from './github-provider.js';
10
+ export { GitLabProvider, createGitLabProvider } from './gitlab-provider.js';
11
+ export { BitbucketProvider, createBitbucketProvider } from './bitbucket-provider.js';
12
+ import { getPlatformRegistry } from '../platform-registry.js';
13
+ import { createGitHubProvider } from './github-provider.js';
14
+ import { createGitLabProvider } from './gitlab-provider.js';
15
+ import { createBitbucketProvider } from './bitbucket-provider.js';
16
+ /**
17
+ * Track whether providers have been initialized
18
+ * Prevents re-initialization in long-running sessions (Issue #2 fix)
19
+ */
20
+ let providersInitialized = false;
21
+ /**
22
+ * Initialize and register all Git providers
23
+ *
24
+ * Call this once during application initialization to make
25
+ * all providers available through the platform registry.
26
+ *
27
+ * Idempotent: Safe to call multiple times - only initializes once.
28
+ */
29
+ export function initializeProviders() {
30
+ // Idempotency guard: prevent re-initialization (Issue #2 fix)
31
+ if (providersInitialized) {
32
+ return;
33
+ }
34
+ const registry = getPlatformRegistry();
35
+ // Register GitHub provider (fully supported)
36
+ registry.registerProvider('github', createGitHubProvider());
37
+ // Register GitLab provider (stub - coming soon)
38
+ registry.registerProvider('gitlab', createGitLabProvider());
39
+ // Register Bitbucket provider (stub - coming soon)
40
+ registry.registerProvider('bitbucket', createBitbucketProvider());
41
+ providersInitialized = true;
42
+ }
43
+ /**
44
+ * Reset provider initialization state (for testing only)
45
+ * @internal
46
+ */
47
+ export function resetProviders() {
48
+ providersInitialized = false;
49
+ }
50
+ /**
51
+ * Get provider by platform type (convenience function)
52
+ *
53
+ * @param platform - Platform type
54
+ * @returns Provider instance or undefined
55
+ */
56
+ export function getProvider(platform) {
57
+ const registry = getPlatformRegistry();
58
+ return registry.getProvider(platform);
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAErF,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;AAElE;;;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,gDAAgD;IAChD,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAE5D,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAElE,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,QAA2C;IACrE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
@@ -14,9 +14,13 @@
14
14
  * - Organize specs per project/team
15
15
  * - Split tasks between repositories
16
16
  */
17
+ import type { GitProvider, GitPlatformType } from './git-provider.js';
17
18
  export type RepoArchitecture = 'single' | 'multi-repo' | 'monorepo' | 'parent';
18
19
  export interface RepoStructureConfig {
19
20
  architecture: RepoArchitecture;
21
+ urlType: 'ssh' | 'https';
22
+ platform: GitPlatformType;
23
+ provider: GitProvider;
20
24
  parentRepo?: {
21
25
  name: string;
22
26
  owner: string;
@@ -61,6 +65,9 @@ export declare class RepoStructureManager {
61
65
  * Configure multi-repository architecture
62
66
  * @param useParent - Whether to use parent repository/folder
63
67
  * @param isLocalParent - If true, parent folder is local only (NOT pushed to GitHub)
68
+ * @param urlType - Git remote URL format (ssh or https)
69
+ * @param platform - Git hosting platform type
70
+ * @param provider - Git provider instance for API operations
64
71
  *
65
72
  * NOTE: This is primarily user-facing output (console.log/console.error).
66
73
  * All console.* calls in this method are legitimate user-facing exceptions
@@ -76,9 +83,9 @@ export declare class RepoStructureManager {
76
83
  */
77
84
  private configureMonorepo;
78
85
  /**
79
- * Create repositories on GitHub via API
86
+ * Create repositories on Git hosting platform via API
80
87
  */
81
- createGitHubRepositories(config: RepoStructureConfig): Promise<void>;
88
+ createRepositories(config: RepoStructureConfig): Promise<void>;
82
89
  /**
83
90
  * Generate .env file with GitHub configuration
84
91
  */
@@ -101,7 +108,7 @@ export declare class RepoStructureManager {
101
108
  private repositoryExistsOnGitHub;
102
109
  /**
103
110
  * Clone or initialize a repository
104
- * If the repo exists on GitHub, clone it; otherwise, init + add remote
111
+ * If the repo exists on the platform, clone it; otherwise, init + add remote
105
112
  */
106
113
  private cloneOrInitRepository;
107
114
  /**
@@ -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;AAyBH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,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;IAMrD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAsDrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;YACW,WAAW;IAsBzB;;OAEG;YACW,mBAAmB;IAoIjC;;;;;;;;OAQG;YACW,kBAAkB;IAkiBhC;;OAEG;YACW,cAAc;IAQ5B;;OAEG;YACW,iBAAiB;IAgF/B;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiF1E;;OAEG;YACW,eAAe;IA8C7B;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;YACW,wBAAwB;IAmBtC;;;OAGG;YACW,qBAAqB;IAiEnC;;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;AA4BH,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;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoGrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;YACW,WAAW;IAgCzB;;OAEG;YACW,mBAAmB;IA8IjC;;;;;;;;;;;OAWG;YACW,kBAAkB;IAijBhC;;OAEG;YACW,cAAc;IAQ5B;;OAEG;YACW,iBAAiB;IAuF/B;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFpE;;OAEG;YACW,eAAe;IA8C7B;;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"}