intelligent-system-design-language 0.3.13

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 (209) hide show
  1. package/.claude/agents/langium-language-designer.md +38 -0
  2. package/.claude/agents/typescript-vscode-expert.md +29 -0
  3. package/.claude/agents/ui-ux-designer.md +36 -0
  4. package/.claude/settings.local.json +33 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  6. package/.idea/isdl.iml +14 -0
  7. package/.idea/modules.xml +9 -0
  8. package/.idea/vcs.xml +7 -0
  9. package/.idea/watcherTasks.xml +4 -0
  10. package/.vscodeignore +18 -0
  11. package/LICENSE +674 -0
  12. package/README.md +86 -0
  13. package/bin/cli.js +4 -0
  14. package/bin/lsp.js +8 -0
  15. package/isdl.png +0 -0
  16. package/out/_backgrounds.scss +91 -0
  17. package/out/_handlebars.scss +505 -0
  18. package/out/_isdlStyles.scss +1357 -0
  19. package/out/_vuetifyOverrides.scss +425 -0
  20. package/out/_vuetifyStyles.scss +31957 -0
  21. package/out/cli/cli-util.js +39 -0
  22. package/out/cli/cli-util.js.map +1 -0
  23. package/out/cli/components/_backgrounds.scss +91 -0
  24. package/out/cli/components/_handlebars.scss +505 -0
  25. package/out/cli/components/_isdlStyles.scss +1357 -0
  26. package/out/cli/components/_vuetifyOverrides.scss +425 -0
  27. package/out/cli/components/_vuetifyStyles.scss +31957 -0
  28. package/out/cli/components/active-effect-sheet-generator.js +643 -0
  29. package/out/cli/components/active-effect-sheet-generator.js.map +1 -0
  30. package/out/cli/components/base-actor-sheet-generator.js +125 -0
  31. package/out/cli/components/base-actor-sheet-generator.js.map +1 -0
  32. package/out/cli/components/base-sheet-generator.js +525 -0
  33. package/out/cli/components/base-sheet-generator.js.map +1 -0
  34. package/out/cli/components/chat-card-generator.js +683 -0
  35. package/out/cli/components/chat-card-generator.js.map +1 -0
  36. package/out/cli/components/css-generator.js +58 -0
  37. package/out/cli/components/css-generator.js.map +1 -0
  38. package/out/cli/components/damage-roll-generator.js +173 -0
  39. package/out/cli/components/damage-roll-generator.js.map +1 -0
  40. package/out/cli/components/datamodel-generator.js +672 -0
  41. package/out/cli/components/datamodel-generator.js.map +1 -0
  42. package/out/cli/components/derived-data-generator.js +1340 -0
  43. package/out/cli/components/derived-data-generator.js.map +1 -0
  44. package/out/cli/components/hotbar-drop-hook-generator.js +95 -0
  45. package/out/cli/components/hotbar-drop-hook-generator.js.map +1 -0
  46. package/out/cli/components/init-hook-generator.js +597 -0
  47. package/out/cli/components/init-hook-generator.js.map +1 -0
  48. package/out/cli/components/keywords-generator.js +220 -0
  49. package/out/cli/components/keywords-generator.js.map +1 -0
  50. package/out/cli/components/language-generator.js +110 -0
  51. package/out/cli/components/language-generator.js.map +1 -0
  52. package/out/cli/components/measured-template-preview.js +234 -0
  53. package/out/cli/components/measured-template-preview.js.map +1 -0
  54. package/out/cli/components/method-generator.js +1812 -0
  55. package/out/cli/components/method-generator.js.map +1 -0
  56. package/out/cli/components/ready-hook-generator.js +448 -0
  57. package/out/cli/components/ready-hook-generator.js.map +1 -0
  58. package/out/cli/components/token-generator.js +138 -0
  59. package/out/cli/components/token-generator.js.map +1 -0
  60. package/out/cli/components/utils.js +176 -0
  61. package/out/cli/components/utils.js.map +1 -0
  62. package/out/cli/components/vue/base-components/vue-attribute.js +148 -0
  63. package/out/cli/components/vue/base-components/vue-attribute.js.map +1 -0
  64. package/out/cli/components/vue/base-components/vue-boolean.js +77 -0
  65. package/out/cli/components/vue/base-components/vue-boolean.js.map +1 -0
  66. package/out/cli/components/vue/base-components/vue-calculator.js +106 -0
  67. package/out/cli/components/vue/base-components/vue-calculator.js.map +1 -0
  68. package/out/cli/components/vue/base-components/vue-damage-application.js +369 -0
  69. package/out/cli/components/vue/base-components/vue-damage-application.js.map +1 -0
  70. package/out/cli/components/vue/base-components/vue-damage-bonuses.js +225 -0
  71. package/out/cli/components/vue/base-components/vue-damage-bonuses.js.map +1 -0
  72. package/out/cli/components/vue/base-components/vue-damage-resistances.js +256 -0
  73. package/out/cli/components/vue/base-components/vue-damage-resistances.js.map +1 -0
  74. package/out/cli/components/vue/base-components/vue-damage-track.js +134 -0
  75. package/out/cli/components/vue/base-components/vue-damage-track.js.map +1 -0
  76. package/out/cli/components/vue/base-components/vue-date-time.js +55 -0
  77. package/out/cli/components/vue/base-components/vue-date-time.js.map +1 -0
  78. package/out/cli/components/vue/base-components/vue-dice.js +111 -0
  79. package/out/cli/components/vue/base-components/vue-dice.js.map +1 -0
  80. package/out/cli/components/vue/base-components/vue-die.js +86 -0
  81. package/out/cli/components/vue/base-components/vue-die.js.map +1 -0
  82. package/out/cli/components/vue/base-components/vue-document-choice.js +172 -0
  83. package/out/cli/components/vue/base-components/vue-document-choice.js.map +1 -0
  84. package/out/cli/components/vue/base-components/vue-document-choices.js +203 -0
  85. package/out/cli/components/vue/base-components/vue-document-choices.js.map +1 -0
  86. package/out/cli/components/vue/base-components/vue-document-link.js +73 -0
  87. package/out/cli/components/vue/base-components/vue-document-link.js.map +1 -0
  88. package/out/cli/components/vue/base-components/vue-extended-choice.js +101 -0
  89. package/out/cli/components/vue/base-components/vue-extended-choice.js.map +1 -0
  90. package/out/cli/components/vue/base-components/vue-inventory.js +532 -0
  91. package/out/cli/components/vue/base-components/vue-inventory.js.map +1 -0
  92. package/out/cli/components/vue/base-components/vue-macro-choice.js +150 -0
  93. package/out/cli/components/vue/base-components/vue-macro-choice.js.map +1 -0
  94. package/out/cli/components/vue/base-components/vue-measured-template.js +543 -0
  95. package/out/cli/components/vue/base-components/vue-measured-template.js.map +1 -0
  96. package/out/cli/components/vue/base-components/vue-money.js +496 -0
  97. package/out/cli/components/vue/base-components/vue-money.js.map +1 -0
  98. package/out/cli/components/vue/base-components/vue-number.js +184 -0
  99. package/out/cli/components/vue/base-components/vue-number.js.map +1 -0
  100. package/out/cli/components/vue/base-components/vue-paperdoll.js +56 -0
  101. package/out/cli/components/vue/base-components/vue-paperdoll.js.map +1 -0
  102. package/out/cli/components/vue/base-components/vue-parent-property-reference.js +89 -0
  103. package/out/cli/components/vue/base-components/vue-parent-property-reference.js.map +1 -0
  104. package/out/cli/components/vue/base-components/vue-prosemirror.js +31 -0
  105. package/out/cli/components/vue/base-components/vue-prosemirror.js.map +1 -0
  106. package/out/cli/components/vue/base-components/vue-resource.js +149 -0
  107. package/out/cli/components/vue/base-components/vue-resource.js.map +1 -0
  108. package/out/cli/components/vue/base-components/vue-roll-visualizer.js +121 -0
  109. package/out/cli/components/vue/base-components/vue-roll-visualizer.js.map +1 -0
  110. package/out/cli/components/vue/base-components/vue-self-property-reference.js +75 -0
  111. package/out/cli/components/vue/base-components/vue-self-property-reference.js.map +1 -0
  112. package/out/cli/components/vue/base-components/vue-string-choice.js +111 -0
  113. package/out/cli/components/vue/base-components/vue-string-choice.js.map +1 -0
  114. package/out/cli/components/vue/base-components/vue-string-choices.js +216 -0
  115. package/out/cli/components/vue/base-components/vue-string-choices.js.map +1 -0
  116. package/out/cli/components/vue/base-components/vue-string.js +73 -0
  117. package/out/cli/components/vue/base-components/vue-string.js.map +1 -0
  118. package/out/cli/components/vue/base-components/vue-text-field.js +66 -0
  119. package/out/cli/components/vue/base-components/vue-text-field.js.map +1 -0
  120. package/out/cli/components/vue/base-components/vue-tracker.js +444 -0
  121. package/out/cli/components/vue/base-components/vue-tracker.js.map +1 -0
  122. package/out/cli/components/vue/vue-action-component-generator.js +88 -0
  123. package/out/cli/components/vue/vue-action-component-generator.js.map +1 -0
  124. package/out/cli/components/vue/vue-active-effect-sheet-generator.js +1016 -0
  125. package/out/cli/components/vue/vue-active-effect-sheet-generator.js.map +1 -0
  126. package/out/cli/components/vue/vue-base-components-generator.js +59 -0
  127. package/out/cli/components/vue/vue-base-components-generator.js.map +1 -0
  128. package/out/cli/components/vue/vue-datatable-component-generator.js +307 -0
  129. package/out/cli/components/vue/vue-datatable-component-generator.js.map +1 -0
  130. package/out/cli/components/vue/vue-datatable-sheet-class-generator.js +342 -0
  131. package/out/cli/components/vue/vue-datatable-sheet-class-generator.js.map +1 -0
  132. package/out/cli/components/vue/vue-datatable2-component-generator.js +939 -0
  133. package/out/cli/components/vue/vue-datatable2-component-generator.js.map +1 -0
  134. package/out/cli/components/vue/vue-document-creation-app.js +140 -0
  135. package/out/cli/components/vue/vue-document-creation-app.js.map +1 -0
  136. package/out/cli/components/vue/vue-document-creation-sheet.js +105 -0
  137. package/out/cli/components/vue/vue-document-creation-sheet.js.map +1 -0
  138. package/out/cli/components/vue/vue-generator.js +240 -0
  139. package/out/cli/components/vue/vue-generator.js.map +1 -0
  140. package/out/cli/components/vue/vue-mixin.js +338 -0
  141. package/out/cli/components/vue/vue-mixin.js.map +1 -0
  142. package/out/cli/components/vue/vue-pinned-datatable-component-generator.js +306 -0
  143. package/out/cli/components/vue/vue-pinned-datatable-component-generator.js.map +1 -0
  144. package/out/cli/components/vue/vue-prompt-generator.js +201 -0
  145. package/out/cli/components/vue/vue-prompt-generator.js.map +1 -0
  146. package/out/cli/components/vue/vue-prompt-sheet-class-generator.js +252 -0
  147. package/out/cli/components/vue/vue-prompt-sheet-class-generator.js.map +1 -0
  148. package/out/cli/components/vue/vue-sheet-application-generator.js +2008 -0
  149. package/out/cli/components/vue/vue-sheet-application-generator.js.map +1 -0
  150. package/out/cli/components/vue/vue-sheet-class-generator.js +484 -0
  151. package/out/cli/components/vue/vue-sheet-class-generator.js.map +1 -0
  152. package/out/cli/generator.js +659 -0
  153. package/out/cli/generator.js.map +1 -0
  154. package/out/cli/main.js +43 -0
  155. package/out/cli/main.js.map +1 -0
  156. package/out/datatables.min.css +54 -0
  157. package/out/datatables.min.js +178 -0
  158. package/out/extension/github/githubAuthProvider.js +345 -0
  159. package/out/extension/github/githubAuthProvider.js.map +1 -0
  160. package/out/extension/github/githubConfig.js +132 -0
  161. package/out/extension/github/githubConfig.js.map +1 -0
  162. package/out/extension/github/githubGistActions.js +251 -0
  163. package/out/extension/github/githubGistActions.js.map +1 -0
  164. package/out/extension/github/githubGistManager.js +255 -0
  165. package/out/extension/github/githubGistManager.js.map +1 -0
  166. package/out/extension/github/githubManager.js +1735 -0
  167. package/out/extension/github/githubManager.js.map +1 -0
  168. package/out/extension/github/githubQuickActions.js +659 -0
  169. package/out/extension/github/githubQuickActions.js.map +1 -0
  170. package/out/extension/github/githubTreeProvider.js +181 -0
  171. package/out/extension/github/githubTreeProvider.js.map +1 -0
  172. package/out/extension/github/system-workflow.yml +48 -0
  173. package/out/extension/main.cjs +70315 -0
  174. package/out/extension/main.cjs.map +7 -0
  175. package/out/extension/main.js +237 -0
  176. package/out/extension/main.js.map +1 -0
  177. package/out/extension/package.json +426 -0
  178. package/out/isdl.png +0 -0
  179. package/out/language/generated/ast.js +2992 -0
  180. package/out/language/generated/ast.js.map +1 -0
  181. package/out/language/generated/grammar.js +13970 -0
  182. package/out/language/generated/grammar.js.map +1 -0
  183. package/out/language/generated/module.js +20 -0
  184. package/out/language/generated/module.js.map +1 -0
  185. package/out/language/intelligent-system-design-language-formatter.js +85 -0
  186. package/out/language/intelligent-system-design-language-formatter.js.map +1 -0
  187. package/out/language/intelligent-system-design-language-module.js +69 -0
  188. package/out/language/intelligent-system-design-language-module.js.map +1 -0
  189. package/out/language/intelligent-system-design-language-quickfixes.js +37 -0
  190. package/out/language/intelligent-system-design-language-quickfixes.js.map +1 -0
  191. package/out/language/intelligent-system-design-language-validator.js +515 -0
  192. package/out/language/intelligent-system-design-language-validator.js.map +1 -0
  193. package/out/language/isdl-hover-provider.js +77 -0
  194. package/out/language/isdl-hover-provider.js.map +1 -0
  195. package/out/language/isdl-scope-provider.js +149 -0
  196. package/out/language/isdl-scope-provider.js.map +1 -0
  197. package/out/language/main.cjs +47655 -0
  198. package/out/language/main.cjs.map +7 -0
  199. package/out/language/main.js +11 -0
  200. package/out/language/main.js.map +1 -0
  201. package/out/missing-character.png +0 -0
  202. package/out/package.json +426 -0
  203. package/out/paperdoll_default.png +0 -0
  204. package/out/progressbar.min.js +7 -0
  205. package/out/styles.scss +722 -0
  206. package/out/test/formatting/formatter.test.js +46 -0
  207. package/out/test/formatting/formatter.test.js.map +1 -0
  208. package/out/vuetify.esm.js +30279 -0
  209. package/package.json +426 -0
@@ -0,0 +1,345 @@
1
+ import * as vscode from 'vscode';
2
+ export class GitHubAuthProvider {
3
+ constructor(context) {
4
+ this.context = context;
5
+ }
6
+ /**
7
+ * Authenticate user with GitHub and store credentials securely
8
+ */
9
+ async authenticateUser() {
10
+ try {
11
+ // Show progress while authenticating
12
+ return await vscode.window.withProgress({
13
+ location: vscode.ProgressLocation.Notification,
14
+ title: "Connecting to GitHub...",
15
+ cancellable: true
16
+ }, async (progress) => {
17
+ // Use VS Code's built-in GitHub authentication
18
+ const session = await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { createIfNone: true });
19
+ if (!session) {
20
+ vscode.window.showErrorMessage('Failed to authenticate with GitHub');
21
+ return undefined;
22
+ }
23
+ // Store the session information securely
24
+ await this.storeGitHubSession(session);
25
+ // Get user information
26
+ const userInfo = await this.getUserInfo(session.accessToken);
27
+ if (userInfo) {
28
+ await this.storeUserInfo(userInfo);
29
+ vscode.window.showInformationMessage(`Successfully connected to GitHub as ${userInfo.login}`, 'View Profile').then(selection => {
30
+ if (selection === 'View Profile') {
31
+ vscode.env.openExternal(vscode.Uri.parse(`https://github.com/${userInfo.login}`));
32
+ }
33
+ });
34
+ }
35
+ return userInfo;
36
+ });
37
+ }
38
+ catch (error) {
39
+ console.error('GitHub authentication failed:', error);
40
+ vscode.window.showErrorMessage(`GitHub authentication failed: ${error}`);
41
+ return undefined;
42
+ }
43
+ }
44
+ /**
45
+ * Check if user is currently authenticated
46
+ */
47
+ async isAuthenticated() {
48
+ try {
49
+ const session = await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { silent: true });
50
+ return !!session;
51
+ }
52
+ catch (_a) {
53
+ return false;
54
+ }
55
+ }
56
+ /**
57
+ * Get current GitHub session
58
+ */
59
+ async getCurrentSession() {
60
+ try {
61
+ return await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { silent: true });
62
+ }
63
+ catch (_a) {
64
+ return undefined;
65
+ }
66
+ }
67
+ /**
68
+ * Get stored user information
69
+ */
70
+ async getStoredUserInfo() {
71
+ try {
72
+ const userInfoJson = await this.context.secrets.get('github.userInfo');
73
+ return userInfoJson ? JSON.parse(userInfoJson) : undefined;
74
+ }
75
+ catch (_a) {
76
+ return undefined;
77
+ }
78
+ }
79
+ /**
80
+ * Sign out from GitHub
81
+ */
82
+ async signOut() {
83
+ try {
84
+ const session = await this.getCurrentSession();
85
+ if (session) {
86
+ // Remove the session
87
+ await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { clearSessionPreference: true, silent: true });
88
+ }
89
+ // Clear stored information
90
+ await this.context.secrets.delete('github.userInfo');
91
+ await this.context.secrets.delete('github.session');
92
+ vscode.window.showInformationMessage('Successfully signed out from GitHub');
93
+ }
94
+ catch (error) {
95
+ console.error('Error signing out:', error);
96
+ vscode.window.showErrorMessage(`Failed to sign out: ${error}`);
97
+ }
98
+ }
99
+ /**
100
+ * Get user information from GitHub API
101
+ */
102
+ async getUserInfo(accessToken) {
103
+ try {
104
+ const response = await fetch('https://api.github.com/user', {
105
+ headers: {
106
+ 'Authorization': `Bearer ${accessToken}`,
107
+ 'Accept': 'application/vnd.github.v3+json',
108
+ 'User-Agent': 'ISDL-VSCode-Extension'
109
+ }
110
+ });
111
+ if (!response.ok) {
112
+ throw new Error(`GitHub API error: ${response.status} ${response.statusText}`);
113
+ }
114
+ let jsonResponse = await response.json();
115
+ return jsonResponse;
116
+ }
117
+ catch (error) {
118
+ console.error('Failed to get user info:', error);
119
+ return undefined;
120
+ }
121
+ }
122
+ /**
123
+ * Store GitHub session securely
124
+ */
125
+ async storeGitHubSession(session) {
126
+ const sessionData = {
127
+ accessToken: session.accessToken,
128
+ account: session.account,
129
+ id: session.id,
130
+ scopes: session.scopes
131
+ };
132
+ await this.context.secrets.store('github.session', JSON.stringify(sessionData));
133
+ }
134
+ /**
135
+ * Store user information securely
136
+ */
137
+ async storeUserInfo(userInfo) {
138
+ await this.context.secrets.store('github.userInfo', JSON.stringify(userInfo));
139
+ }
140
+ }
141
+ GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID = 'github';
142
+ GitHubAuthProvider.SCOPES = ['repo', 'user:email', 'actions:write', 'contents:write', 'workflow', 'gist'];
143
+ // src/github/GitHubSetupWizard.ts
144
+ export class GitHubSetupWizard {
145
+ constructor(authProvider) {
146
+ this.authProvider = authProvider;
147
+ }
148
+ /**
149
+ * Run the complete GitHub setup wizard
150
+ */
151
+ async runSetupWizard() {
152
+ // Step 1: Welcome and explanation
153
+ const shouldContinue = await this.showWelcomeStep();
154
+ if (!shouldContinue)
155
+ return false;
156
+ // Step 2: Check if already authenticated
157
+ const isAuthenticated = await this.authProvider.isAuthenticated();
158
+ if (isAuthenticated) {
159
+ const userInfo = await this.authProvider.getStoredUserInfo();
160
+ const reconnect = await vscode.window.showInformationMessage(`You're already connected to GitHub as ${(userInfo === null || userInfo === void 0 ? void 0 : userInfo.login) || 'unknown user'}. Would you like to reconnect?`, 'Reconnect', 'Cancel');
161
+ if (reconnect !== 'Reconnect')
162
+ return false;
163
+ // Sign out first
164
+ await this.authProvider.signOut();
165
+ }
166
+ // Step 3: Authenticate with GitHub
167
+ const userInfo = await this.authProvider.authenticateUser();
168
+ if (!userInfo)
169
+ return false;
170
+ // Step 4: Show success and next steps
171
+ await this.showSuccessStep(userInfo);
172
+ return true;
173
+ }
174
+ /**
175
+ * Show welcome step with explanation
176
+ */
177
+ async showWelcomeStep() {
178
+ var _a;
179
+ const items = [
180
+ {
181
+ label: '$(github) Connect to GitHub',
182
+ description: 'Set up GitHub publishing for your ISDL systems',
183
+ detail: 'This will allow you to publish and share your tabletop RPG systems'
184
+ },
185
+ {
186
+ label: '$(x) Cancel',
187
+ description: 'Skip GitHub setup for now'
188
+ }
189
+ ];
190
+ const selection = await vscode.window.showQuickPick(items, {
191
+ title: 'ISDL GitHub Publishing Setup',
192
+ placeHolder: 'Choose an option to continue',
193
+ ignoreFocusOut: true
194
+ });
195
+ return (_a = selection === null || selection === void 0 ? void 0 : selection.label.includes('Connect to GitHub')) !== null && _a !== void 0 ? _a : false;
196
+ }
197
+ /**
198
+ * Show success step with next actions
199
+ */
200
+ async showSuccessStep(userInfo) {
201
+ const items = [
202
+ {
203
+ label: '$(repo-create) Create New Repository',
204
+ description: 'Create a new GitHub repository for your system',
205
+ detail: 'Set up a fresh repository to publish your ISDL system'
206
+ },
207
+ {
208
+ label: '$(repo) Use Existing Repository',
209
+ description: 'Connect to an existing GitHub repository',
210
+ detail: 'Publish to a repository you already own'
211
+ },
212
+ {
213
+ label: '$(gear) Configure Settings',
214
+ description: 'Configure publishing preferences',
215
+ detail: 'Set up default options for system publishing'
216
+ },
217
+ {
218
+ label: '$(check) Done',
219
+ description: 'Complete setup and return to work'
220
+ }
221
+ ];
222
+ const selection = await vscode.window.showQuickPick(items, {
223
+ title: `Welcome ${userInfo.name || userInfo.login}!`,
224
+ placeHolder: 'What would you like to do next?',
225
+ ignoreFocusOut: true
226
+ });
227
+ // Handle the selection
228
+ switch (selection === null || selection === void 0 ? void 0 : selection.label) {
229
+ case '$(repo-create) Create New Repository':
230
+ await this.showCreateRepositoryWizard();
231
+ break;
232
+ case '$(repo) Use Existing Repository':
233
+ await this.showSelectRepositoryWizard();
234
+ break;
235
+ case '$(gear) Configure Settings':
236
+ await this.showSettingsWizard();
237
+ break;
238
+ }
239
+ }
240
+ /**
241
+ * Show create repository wizard (placeholder)
242
+ */
243
+ async showCreateRepositoryWizard() {
244
+ vscode.window.showInformationMessage('Create repository wizard coming soon!');
245
+ }
246
+ /**
247
+ * Show select repository wizard (placeholder)
248
+ */
249
+ async showSelectRepositoryWizard() {
250
+ vscode.window.showInformationMessage('Select repository wizard coming soon!');
251
+ }
252
+ /**
253
+ * Show settings wizard (placeholder)
254
+ */
255
+ async showSettingsWizard() {
256
+ vscode.window.showInformationMessage('Settings wizard coming soon!');
257
+ }
258
+ }
259
+ // src/github/GitHubStatusProvider.ts
260
+ export class GitHubStatusProvider {
261
+ constructor(authProvider) {
262
+ this.authProvider = authProvider;
263
+ this._onDidChangeTreeData = new vscode.EventEmitter();
264
+ this.onDidChangeTreeData = this._onDidChangeTreeData.event;
265
+ }
266
+ refresh() {
267
+ this._onDidChangeTreeData.fire();
268
+ }
269
+ getTreeItem(element) {
270
+ return element;
271
+ }
272
+ async getChildren(element) {
273
+ if (!element) {
274
+ // Root level items
275
+ const isAuthenticated = await this.authProvider.isAuthenticated();
276
+ if (!isAuthenticated) {
277
+ return [
278
+ new GitHubStatusItem('Not Connected', 'Click to connect to GitHub', vscode.TreeItemCollapsibleState.None, {
279
+ command: 'isdl.github.setup',
280
+ title: 'Connect to GitHub'
281
+ }, 'warning')
282
+ ];
283
+ }
284
+ // User is authenticated
285
+ const userInfo = await this.authProvider.getStoredUserInfo();
286
+ return [
287
+ new GitHubStatusItem(`Connected as ${(userInfo === null || userInfo === void 0 ? void 0 : userInfo.login) || 'Unknown'}`, (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || 'GitHub User', vscode.TreeItemCollapsibleState.Expanded, undefined, 'account'),
288
+ new GitHubStatusItem('Publish System', 'Publish your ISDL system to GitHub', vscode.TreeItemCollapsibleState.None, {
289
+ command: 'isdl.github.publish',
290
+ title: 'Publish System'
291
+ }, 'repo-push')
292
+ ];
293
+ }
294
+ return [];
295
+ }
296
+ }
297
+ class GitHubStatusItem extends vscode.TreeItem {
298
+ constructor(label, description, collapsibleState, command, iconName) {
299
+ super(label, collapsibleState);
300
+ this.label = label;
301
+ this.description = description;
302
+ this.collapsibleState = collapsibleState;
303
+ this.command = command;
304
+ this.description = description;
305
+ this.tooltip = description;
306
+ if (iconName) {
307
+ this.iconPath = new vscode.ThemeIcon(iconName);
308
+ }
309
+ if (command) {
310
+ this.command = command;
311
+ }
312
+ }
313
+ }
314
+ // Extension activation code (add to your main extension file)
315
+ export function registerGitHubCommands(context) {
316
+ const authProvider = new GitHubAuthProvider(context);
317
+ const setupWizard = new GitHubSetupWizard(authProvider);
318
+ const statusProvider = new GitHubStatusProvider(authProvider);
319
+ // Register tree view
320
+ const treeView = vscode.window.createTreeView('isdl.github', {
321
+ treeDataProvider: statusProvider,
322
+ showCollapseAll: false
323
+ });
324
+ // Register commands
325
+ const setupCommand = vscode.commands.registerCommand('isdl.github.setup', async () => {
326
+ await setupWizard.runSetupWizard();
327
+ statusProvider.refresh();
328
+ });
329
+ const signOutCommand = vscode.commands.registerCommand('isdl.github.signout', async () => {
330
+ await authProvider.signOut();
331
+ statusProvider.refresh();
332
+ });
333
+ const refreshCommand = vscode.commands.registerCommand('isdl.github.refresh', () => {
334
+ statusProvider.refresh();
335
+ });
336
+ // Placeholder for future publish command
337
+ const publishCommand = vscode.commands.registerCommand('isdl.github.publish', () => {
338
+ vscode.window.showInformationMessage('Publishing feature coming soon!');
339
+ });
340
+ // Add to context subscriptions
341
+ context.subscriptions.push(treeView, setupCommand, signOutCommand, refreshCommand, publishCommand);
342
+ // Refresh status on activation
343
+ statusProvider.refresh();
344
+ }
345
+ //# sourceMappingURL=githubAuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubAuthProvider.js","sourceRoot":"","sources":["../../../src/extension/github/githubAuthProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import * as vscode from 'vscode';
2
+ /**
3
+ * Simple configuration manager for GitHub settings
4
+ */
5
+ export class GitHubConfigurationManager {
6
+ /**
7
+ * Get current publishing configuration
8
+ */
9
+ getConfig() {
10
+ const config = vscode.workspace.getConfiguration(GitHubConfigurationManager.CONFIG_KEY);
11
+ return {
12
+ defaultBranch: config.get('defaultBranch', 'main'),
13
+ includeDocumentation: config.get('includeDocumentation', true),
14
+ includeBuildScripts: config.get('includeBuildScripts', true),
15
+ templateRepository: config.get('templateRepository'),
16
+ commitMessage: config.get('commitMessage', 'Update system files'),
17
+ tagReleases: config.get('tagReleases', true),
18
+ generateChangelog: config.get('generateChangelog', true),
19
+ respositoryVisibility: config.get('repositoryVisibility', 'public'),
20
+ licenseTemplate: config.get('licenseTemplate')
21
+ };
22
+ }
23
+ /**
24
+ * Update configuration values
25
+ */
26
+ async updateConfig(updates) {
27
+ const config = vscode.workspace.getConfiguration(GitHubConfigurationManager.CONFIG_KEY);
28
+ for (const [key, value] of Object.entries(updates)) {
29
+ await config.update(key, value, vscode.ConfigurationTarget.Global);
30
+ }
31
+ }
32
+ /**
33
+ * Show configuration wizard
34
+ */
35
+ async showConfigurationWizard() {
36
+ const currentConfig = this.getConfig();
37
+ // Simple configuration dialog
38
+ const items = [
39
+ {
40
+ label: `Default Branch: ${currentConfig.defaultBranch}`,
41
+ description: 'Change default branch name'
42
+ },
43
+ {
44
+ label: `Documentation: ${currentConfig.includeDocumentation ? 'Enabled' : 'Disabled'}`,
45
+ description: 'Toggle automatic documentation generation'
46
+ },
47
+ {
48
+ label: `Build Scripts: ${currentConfig.includeBuildScripts ? 'Enabled' : 'Disabled'}`,
49
+ description: 'Toggle GitHub Actions workflows'
50
+ },
51
+ {
52
+ label: `Repository Visibility: ${currentConfig.respositoryVisibility}`,
53
+ description: 'Change default repository visibility'
54
+ }
55
+ ];
56
+ const selection = await vscode.window.showQuickPick(items, {
57
+ title: 'GitHub Configuration',
58
+ placeHolder: 'Select a setting to change'
59
+ });
60
+ if (!selection)
61
+ return;
62
+ // Handle the selected configuration change
63
+ if (selection.label.startsWith('Default Branch')) {
64
+ const newBranch = await vscode.window.showInputBox({
65
+ title: 'Default Branch',
66
+ prompt: 'Enter default branch name',
67
+ value: currentConfig.defaultBranch
68
+ });
69
+ if (newBranch) {
70
+ await this.updateConfig({ defaultBranch: newBranch });
71
+ }
72
+ }
73
+ else if (selection.label.startsWith('Documentation')) {
74
+ await this.updateConfig({ includeDocumentation: !currentConfig.includeDocumentation });
75
+ }
76
+ else if (selection.label.startsWith('Build Scripts')) {
77
+ await this.updateConfig({ includeBuildScripts: !currentConfig.includeBuildScripts });
78
+ }
79
+ else if (selection.label.startsWith('Repository Visibility')) {
80
+ const visibility = await vscode.window.showQuickPick([
81
+ { label: 'Public', description: 'Anyone can see this repository' },
82
+ { label: 'Private', description: 'Only you can see this repository' }
83
+ ], {
84
+ title: 'Repository Visibility',
85
+ placeHolder: 'Choose default visibility for new repositories'
86
+ });
87
+ if (visibility) {
88
+ await this.updateConfig({
89
+ respositoryVisibility: visibility.label.toLowerCase()
90
+ });
91
+ }
92
+ }
93
+ vscode.window.showInformationMessage('GitHub configuration updated!');
94
+ }
95
+ }
96
+ GitHubConfigurationManager.CONFIG_KEY = 'isdl.github';
97
+ /**
98
+ * Simple validation utilities
99
+ */
100
+ export class GitHubValidation {
101
+ /**
102
+ * Validate repository name
103
+ */
104
+ static validateRepositoryName(name) {
105
+ if (!name)
106
+ return 'Repository name is required';
107
+ if (!/^[a-zA-Z0-9._-]+$/.test(name))
108
+ return 'Invalid characters in repository name';
109
+ if (name.length > 100)
110
+ return 'Repository name too long';
111
+ return undefined;
112
+ }
113
+ /**
114
+ * Validate system files
115
+ */
116
+ static async validateSystemFiles(workspaceFolder, repositoryManager) {
117
+ const errors = [];
118
+ // Check if ISDL files exist
119
+ const isdlFiles = await vscode.workspace.findFiles('**/*.isdl', null, 1);
120
+ if (isdlFiles.length === 0) {
121
+ errors.push('No ISDL files found in workspace');
122
+ }
123
+ // Check if system has been generated
124
+ const config = vscode.workspace.getConfiguration('isdl');
125
+ const lastSelectedFolder = config.get('lastSelectedFolder');
126
+ if (!lastSelectedFolder) {
127
+ errors.push('No generated system files found. Please generate your system first.');
128
+ }
129
+ return errors;
130
+ }
131
+ }
132
+ //# sourceMappingURL=githubConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubConfig.js","sourceRoot":"","sources":["../../../src/extension/github/githubConfig.ts"],"names":[],"mappings":"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"}