specweave 0.24.8 → 0.24.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/src/cli/commands/init.d.ts.map +1 -1
  2. package/dist/src/cli/commands/init.js +3 -1
  3. package/dist/src/cli/commands/init.js.map +1 -1
  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 +18 -2
  6. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  7. package/dist/src/cli/helpers/issue-tracker/index.js +4 -4
  8. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  9. package/dist/src/core/repo-structure/git-error-handler.d.ts +1 -1
  10. package/dist/src/core/repo-structure/git-error-handler.d.ts.map +1 -1
  11. package/dist/src/core/repo-structure/git-provider.d.ts +1 -1
  12. package/dist/src/core/repo-structure/git-provider.d.ts.map +1 -1
  13. package/dist/src/core/repo-structure/platform-registry.d.ts.map +1 -1
  14. package/dist/src/core/repo-structure/platform-registry.js +20 -9
  15. package/dist/src/core/repo-structure/platform-registry.js.map +1 -1
  16. package/dist/src/core/repo-structure/prompt-consolidator.d.ts +13 -1
  17. package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
  18. package/dist/src/core/repo-structure/prompt-consolidator.js +38 -5
  19. package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
  20. package/dist/src/core/repo-structure/providers/azure-devops-provider.d.ts +64 -0
  21. package/dist/src/core/repo-structure/providers/azure-devops-provider.d.ts.map +1 -0
  22. package/dist/src/core/repo-structure/providers/azure-devops-provider.js +263 -0
  23. package/dist/src/core/repo-structure/providers/azure-devops-provider.js.map +1 -0
  24. package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts +12 -11
  25. package/dist/src/core/repo-structure/providers/bitbucket-provider.d.ts.map +1 -1
  26. package/dist/src/core/repo-structure/providers/bitbucket-provider.js +164 -30
  27. package/dist/src/core/repo-structure/providers/bitbucket-provider.js.map +1 -1
  28. package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts +10 -9
  29. package/dist/src/core/repo-structure/providers/gitlab-provider.d.ts.map +1 -1
  30. package/dist/src/core/repo-structure/providers/gitlab-provider.js +182 -28
  31. package/dist/src/core/repo-structure/providers/gitlab-provider.js.map +1 -1
  32. package/dist/src/core/repo-structure/providers/index.d.ts +3 -1
  33. package/dist/src/core/repo-structure/providers/index.d.ts.map +1 -1
  34. package/dist/src/core/repo-structure/providers/index.js +10 -2
  35. package/dist/src/core/repo-structure/providers/index.js.map +1 -1
  36. package/dist/src/core/repo-structure/providers/local-provider.d.ts +61 -0
  37. package/dist/src/core/repo-structure/providers/local-provider.d.ts.map +1 -0
  38. package/dist/src/core/repo-structure/providers/local-provider.js +148 -0
  39. package/dist/src/core/repo-structure/providers/local-provider.js.map +1 -0
  40. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +11 -1
  41. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  42. package/dist/src/core/repo-structure/repo-structure-manager.js +268 -84
  43. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  44. package/package.json +1 -1
  45. package/plugins/specweave/agents/pm/AGENT.md.bak +1893 -0
  46. package/plugins/specweave/hooks/docs-changed.sh.backup +79 -0
  47. package/plugins/specweave/hooks/human-input-required.sh.backup +75 -0
  48. package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +245 -0
  49. package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +149 -0
  50. package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +163 -0
  51. package/plugins/specweave/hooks/post-first-increment.sh.backup +61 -0
  52. package/plugins/specweave/hooks/post-first-increment.sh.bak +61 -0
  53. package/plugins/specweave/hooks/post-increment-change.sh.backup +98 -0
  54. package/plugins/specweave/hooks/post-increment-completion.sh.backup +231 -0
  55. package/plugins/specweave/hooks/post-increment-planning.sh.backup +1048 -0
  56. package/plugins/specweave/hooks/post-increment-status-change.sh.backup +147 -0
  57. package/plugins/specweave/hooks/post-spec-update.sh.backup +158 -0
  58. package/plugins/specweave/hooks/post-spec-update.sh.bak +158 -0
  59. package/plugins/specweave/hooks/post-task-completion.sh +69 -175
  60. package/plugins/specweave/hooks/post-user-story-complete.sh.backup +179 -0
  61. package/plugins/specweave/hooks/post-user-story-complete.sh.bak +179 -0
  62. package/plugins/specweave/hooks/pre-command-deduplication.sh.backup +83 -0
  63. package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +83 -0
  64. package/plugins/specweave/hooks/pre-implementation.sh.backup +67 -0
  65. package/plugins/specweave/hooks/pre-task-completion.sh.backup +194 -0
  66. package/plugins/specweave/hooks/pre-tool-use.sh.backup +133 -0
  67. package/plugins/specweave/hooks/user-prompt-submit.sh.backup +386 -0
  68. package/plugins/specweave/hooks/user-prompt-submit.sh.bak +386 -0
  69. package/plugins/specweave/lib/hooks/auto-transition.js.bak +50 -0
  70. package/plugins/specweave/lib/hooks/auto-transition.ts.bak +84 -0
  71. package/plugins/specweave/lib/hooks/consolidated-sync.js +183 -0
  72. package/plugins/specweave/lib/hooks/git-diff-analyzer.d.js.bak +0 -0
  73. package/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.bak +89 -0
  74. package/plugins/specweave/lib/hooks/git-diff-analyzer.js.bak +142 -0
  75. package/plugins/specweave/lib/hooks/git-diff-analyzer.ts.bak +269 -0
  76. package/plugins/specweave/lib/hooks/invoke-translator-skill.d.js.bak +0 -0
  77. package/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.bak +60 -0
  78. package/plugins/specweave/lib/hooks/invoke-translator-skill.js.bak +155 -0
  79. package/plugins/specweave/lib/hooks/invoke-translator-skill.ts.bak +264 -0
  80. package/plugins/specweave/lib/hooks/prepare-reflection-context.d.js.bak +0 -0
  81. package/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.bak +42 -0
  82. package/plugins/specweave/lib/hooks/prepare-reflection-context.js.bak +110 -0
  83. package/plugins/specweave/lib/hooks/prepare-reflection-context.ts.bak +178 -0
  84. package/plugins/specweave/lib/hooks/reflection-config-loader.d.js.bak +0 -0
  85. package/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.bak +45 -0
  86. package/plugins/specweave/lib/hooks/reflection-config-loader.js.bak +92 -0
  87. package/plugins/specweave/lib/hooks/reflection-config-loader.ts.bak +156 -0
  88. package/plugins/specweave/lib/hooks/reflection-parser.d.js.bak +0 -0
  89. package/plugins/specweave/lib/hooks/reflection-parser.d.ts.bak +33 -0
  90. package/plugins/specweave/lib/hooks/reflection-parser.js.bak +301 -0
  91. package/plugins/specweave/lib/hooks/reflection-parser.ts.bak +484 -0
  92. package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.js.bak +0 -0
  93. package/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.bak +56 -0
  94. package/plugins/specweave/lib/hooks/reflection-prompt-builder.js.bak +182 -0
  95. package/plugins/specweave/lib/hooks/reflection-prompt-builder.ts.bak +306 -0
  96. package/plugins/specweave/lib/hooks/reflection-storage.d.js.bak +0 -0
  97. package/plugins/specweave/lib/hooks/reflection-storage.d.ts.bak +64 -0
  98. package/plugins/specweave/lib/hooks/reflection-storage.js.bak +231 -0
  99. package/plugins/specweave/lib/hooks/reflection-storage.ts.bak +369 -0
  100. package/plugins/specweave/lib/hooks/run-self-reflection.d.js.bak +0 -0
  101. package/plugins/specweave/lib/hooks/run-self-reflection.d.ts.bak +43 -0
  102. package/plugins/specweave/lib/hooks/run-self-reflection.js.bak +132 -0
  103. package/plugins/specweave/lib/hooks/run-self-reflection.ts.bak +258 -0
  104. package/plugins/specweave/lib/hooks/sync-cache.js.bak +294 -0
  105. package/plugins/specweave/lib/hooks/sync-living-docs.d.js.bak +1 -0
  106. package/plugins/specweave/lib/hooks/sync-living-docs.d.ts.bak +27 -0
  107. package/plugins/specweave/lib/hooks/sync-living-docs.js.bak +339 -0
  108. package/plugins/specweave/lib/hooks/sync-us-tasks.js.bak +476 -0
  109. package/plugins/specweave/lib/hooks/translate-file.d.js.bak +0 -0
  110. package/plugins/specweave/lib/hooks/translate-file.d.ts.bak +59 -0
  111. package/plugins/specweave/lib/hooks/translate-file.js.bak +289 -0
  112. package/plugins/specweave/lib/hooks/translate-file.ts.bak +428 -0
  113. package/plugins/specweave/lib/hooks/translate-living-docs.d.js.bak +0 -0
  114. package/plugins/specweave/lib/hooks/translate-living-docs.d.ts.bak +13 -0
  115. package/plugins/specweave/lib/hooks/translate-living-docs.js.bak +119 -0
  116. package/plugins/specweave/lib/hooks/translate-living-docs.ts.bak +224 -0
  117. package/plugins/specweave/lib/hooks/update-ac-status.js.bak +51 -0
  118. package/plugins/specweave/lib/hooks/update-ac-status.ts.bak +103 -0
  119. package/plugins/specweave/lib/hooks/update-tasks-md.d.js.bak +1 -0
  120. package/plugins/specweave/lib/hooks/update-tasks-md.d.ts.bak +29 -0
  121. package/plugins/specweave/lib/hooks/update-tasks-md.js.bak +296 -0
  122. package/plugins/specweave/lib/hooks/update-tasks-md.ts.bak +489 -0
  123. package/plugins/specweave-ado/hooks/post-living-docs-update.sh.backup +353 -0
  124. package/plugins/specweave-ado/hooks/post-task-completion.sh.backup +172 -0
  125. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +1 -0
  126. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  127. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +424 -0
  128. package/plugins/specweave-github/hooks/post-task-completion.sh.backup +258 -0
  129. package/plugins/specweave-jira/hooks/post-task-completion.sh.backup +172 -0
  130. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
  131. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +540 -0
  132. package/plugins/specweave-release/hooks/post-task-completion.sh.backup +110 -0
@@ -1,16 +1,18 @@
1
1
  /**
2
- * GitLab Provider Implementation (STUB)
2
+ * GitLab Provider Implementation
3
3
  *
4
- * Stub implementation for GitLab.com and self-hosted GitLab instances.
5
- * Full implementation coming soon!
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 (Stub)
12
+ * GitLab Provider
12
13
  *
13
- * Placeholder implementation for GitLab support.
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 repository (stub)
29
+ * Validate if a project exists on GitLab
28
30
  */
29
31
  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());
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 owner (stub)
93
+ * Validate if a GitLab namespace (user or group) exists
49
94
  */
50
95
  async validateOwner(owner, token) {
51
- throw new Error('GitLab support coming soon! Please use GitHub for now.');
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 repository (stub)
136
+ * Create a new project on GitLab
55
137
  */
56
138
  async createRepository(options, token) {
57
- throw new Error('GitLab support coming soon! Please use GitHub for now.');
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 organization (stub)
201
+ * Check if a namespace is a group (organization)
61
202
  */
62
203
  async isOrganization(account, token) {
63
- return false;
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;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"}
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;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"}
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 (stub - coming soon)
41
+ // Register GitLab provider (fully supported)
38
42
  registry.registerProvider('gitlab', createGitLabProvider());
39
- // Register Bitbucket provider (stub - coming soon)
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;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"}
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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Local Git Provider Implementation
3
+ *
4
+ * Implements GitProvider interface for local-only Git repositories.
5
+ * Suitable for repositories without remote hosting (GitHub, GitLab, etc.).
6
+ *
7
+ * @module providers/local-provider
8
+ */
9
+ import { BaseGitProvider, type PlatformConfig, type RepoValidationResult, type OwnerValidationResult, type CreateRepoOptions } from '../git-provider.js';
10
+ import type { UrlType } from '../url-generator.js';
11
+ /**
12
+ * Local Git Provider
13
+ *
14
+ * Implements Git operations for local-only repositories.
15
+ * Does not require API tokens or remote hosting.
16
+ */
17
+ export declare class LocalGitProvider extends BaseGitProvider {
18
+ constructor(config?: Partial<PlatformConfig>);
19
+ /**
20
+ * Validate if a local repository exists
21
+ * owner represents the parent directory path
22
+ * repo represents the repository directory name
23
+ */
24
+ validateRepository(owner: string, repo: string, token?: string): Promise<RepoValidationResult>;
25
+ /**
26
+ * Validate if a local directory (owner) exists
27
+ */
28
+ validateOwner(owner: string, token?: string): Promise<OwnerValidationResult>;
29
+ /**
30
+ * Create a new local repository
31
+ * Note: This creates a bare directory, not a Git repository.
32
+ * Users should run `git init` separately.
33
+ */
34
+ createRepository(options: CreateRepoOptions, token: string): Promise<string>;
35
+ /**
36
+ * Local directories are never organizations
37
+ */
38
+ isOrganization(account: string, token?: string): Promise<boolean>;
39
+ /**
40
+ * Get token creation URL (not applicable for local Git)
41
+ */
42
+ getTokenUrl(): string;
43
+ /**
44
+ * Get required token scopes (none for local Git)
45
+ */
46
+ getRequiredScopes(isOrganization?: boolean): string[];
47
+ /**
48
+ * Generate Git remote URL for local repositories
49
+ * Local repos use file:// protocol
50
+ */
51
+ getRemoteUrl(owner: string, repo: string, urlType: UrlType): string;
52
+ /**
53
+ * Override getAuthHeaders (not needed for local Git)
54
+ */
55
+ protected getAuthHeaders(token: string): Record<string, string>;
56
+ }
57
+ /**
58
+ * Create a Local Git provider instance
59
+ */
60
+ export declare function createLocalGitProvider(config?: Partial<PlatformConfig>): LocalGitProvider;
61
+ //# sourceMappingURL=local-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/local-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;AACzJ,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;gBACvC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAW5C;;;;OAIG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;IAqChC;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAsBjC;;;;OAIG;IACG,gBAAgB,CACpB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAmBlB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,iBAAiB,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE;IAIrD;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM;IAKnE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAEzF"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Local Git Provider Implementation
3
+ *
4
+ * Implements GitProvider interface for local-only Git repositories.
5
+ * Suitable for repositories without remote hosting (GitHub, GitLab, etc.).
6
+ *
7
+ * @module providers/local-provider
8
+ */
9
+ import { BaseGitProvider } from '../git-provider.js';
10
+ import { existsSync } from 'fs';
11
+ import { resolve, join } from 'path';
12
+ /**
13
+ * Local Git Provider
14
+ *
15
+ * Implements Git operations for local-only repositories.
16
+ * Does not require API tokens or remote hosting.
17
+ */
18
+ export class LocalGitProvider extends BaseGitProvider {
19
+ constructor(config) {
20
+ super({
21
+ type: 'custom',
22
+ name: 'Local Git',
23
+ host: 'localhost',
24
+ apiBaseUrl: '',
25
+ selfHosted: true,
26
+ customDomain: config?.customDomain
27
+ });
28
+ }
29
+ /**
30
+ * Validate if a local repository exists
31
+ * owner represents the parent directory path
32
+ * repo represents the repository directory name
33
+ */
34
+ async validateRepository(owner, repo, token) {
35
+ try {
36
+ // Resolve the full path
37
+ const repoPath = resolve(owner, repo);
38
+ const gitPath = join(repoPath, '.git');
39
+ // Check if directory exists
40
+ if (!existsSync(repoPath)) {
41
+ return { exists: false, valid: true };
42
+ }
43
+ // Check if it's a Git repository
44
+ const isGitRepo = existsSync(gitPath);
45
+ if (isGitRepo) {
46
+ return {
47
+ exists: true,
48
+ valid: true,
49
+ url: `file://${repoPath}`
50
+ };
51
+ }
52
+ else {
53
+ // Directory exists but is not a Git repository
54
+ return {
55
+ exists: false,
56
+ valid: true
57
+ };
58
+ }
59
+ }
60
+ catch (error) {
61
+ return {
62
+ exists: false,
63
+ valid: false,
64
+ error: `File system error: ${error instanceof Error ? error.message : String(error)}`
65
+ };
66
+ }
67
+ }
68
+ /**
69
+ * Validate if a local directory (owner) exists
70
+ */
71
+ async validateOwner(owner, token) {
72
+ try {
73
+ const ownerPath = resolve(owner);
74
+ if (!existsSync(ownerPath)) {
75
+ return {
76
+ valid: false,
77
+ error: `Directory does not exist: ${ownerPath}`
78
+ };
79
+ }
80
+ // Local directories are always treated as "user" type
81
+ return { valid: true, type: 'user' };
82
+ }
83
+ catch (error) {
84
+ return {
85
+ valid: false,
86
+ error: `File system error: ${error instanceof Error ? error.message : String(error)}`
87
+ };
88
+ }
89
+ }
90
+ /**
91
+ * Create a new local repository
92
+ * Note: This creates a bare directory, not a Git repository.
93
+ * Users should run `git init` separately.
94
+ */
95
+ async createRepository(options, token) {
96
+ const repoPath = resolve(options.owner, options.name);
97
+ // Check if directory already exists
98
+ if (existsSync(repoPath)) {
99
+ return `file://${repoPath}`;
100
+ }
101
+ // Note: We don't actually create the directory here
102
+ // The repository initialization should be done separately with git init
103
+ throw new Error(`Local repository creation requires manual setup:\n` +
104
+ ` mkdir -p "${repoPath}"\n` +
105
+ ` cd "${repoPath}"\n` +
106
+ ` git init\n\n` +
107
+ `SpecWeave does not automatically create local Git repositories.`);
108
+ }
109
+ /**
110
+ * Local directories are never organizations
111
+ */
112
+ async isOrganization(account, token) {
113
+ return false;
114
+ }
115
+ /**
116
+ * Get token creation URL (not applicable for local Git)
117
+ */
118
+ getTokenUrl() {
119
+ return '';
120
+ }
121
+ /**
122
+ * Get required token scopes (none for local Git)
123
+ */
124
+ getRequiredScopes(isOrganization) {
125
+ return [];
126
+ }
127
+ /**
128
+ * Generate Git remote URL for local repositories
129
+ * Local repos use file:// protocol
130
+ */
131
+ getRemoteUrl(owner, repo, urlType) {
132
+ const repoPath = resolve(owner, repo);
133
+ return `file://${repoPath}`;
134
+ }
135
+ /**
136
+ * Override getAuthHeaders (not needed for local Git)
137
+ */
138
+ getAuthHeaders(token) {
139
+ return {};
140
+ }
141
+ }
142
+ /**
143
+ * Create a Local Git provider instance
144
+ */
145
+ export function createLocalGitProvider(config) {
146
+ return new LocalGitProvider(config);
147
+ }
148
+ //# sourceMappingURL=local-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../../../../src/core/repo-structure/providers/local-provider.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  * - Organize specs per project/team
15
15
  * - Split tasks between repositories
16
16
  */
17
+ import { type ArchitectureChoice } from './prompt-consolidator.js';
17
18
  import type { GitProvider, GitPlatformType } from './git-provider.js';
18
19
  export type RepoArchitecture = 'single' | 'multi-repo' | 'monorepo' | 'parent';
19
20
  export interface RepoStructureConfig {
@@ -47,12 +48,21 @@ export declare class RepoStructureManager {
47
48
  constructor(projectPath: string, githubToken?: string);
48
49
  /**
49
50
  * Prompt user for repository structure decisions
51
+ *
52
+ * @param preSelectedArchitecture - Optional pre-selected architecture to skip duplicate prompts
50
53
  */
51
- promptStructure(): Promise<RepoStructureConfig>;
54
+ promptStructure(preSelectedArchitecture?: ArchitectureChoice): Promise<RepoStructureConfig>;
52
55
  /**
53
56
  * Map ArchitectureChoice to internal RepoArchitecture (2 options)
54
57
  */
55
58
  private mapArchitectureChoice;
59
+ /**
60
+ * Format architecture choice for display
61
+ *
62
+ * @param choice - Architecture choice
63
+ * @returns Human-readable format
64
+ */
65
+ private formatArchitectureForDisplay;
56
66
  /**
57
67
  * Resume setup from saved state
58
68
  */
@@ -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;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"}
1
+ {"version":3,"file":"repo-structure-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAoB;gBAE5B,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IASrD;;;;OAIG;IACG,eAAe,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8GjG;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;YACW,WAAW;IAgCzB;;OAEG;YACW,mBAAmB;IA8IjC;;;;;;;;;;;OAWG;YACW,kBAAkB;IA+tBhC;;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"}