geeto 0.1.0-beta.0

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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/lib/api/copilot-adapter.d.ts +11 -0
  4. package/lib/api/copilot-adapter.d.ts.map +1 -0
  5. package/lib/api/copilot-adapter.js +41 -0
  6. package/lib/api/copilot-adapter.js.map +1 -0
  7. package/lib/api/copilot-sdk.d.ts +48 -0
  8. package/lib/api/copilot-sdk.d.ts.map +1 -0
  9. package/lib/api/copilot-sdk.js +451 -0
  10. package/lib/api/copilot-sdk.js.map +1 -0
  11. package/lib/api/copilot.d.ts +21 -0
  12. package/lib/api/copilot.d.ts.map +1 -0
  13. package/lib/api/copilot.js +87 -0
  14. package/lib/api/copilot.js.map +1 -0
  15. package/lib/api/gemini-sdk.d.ts +24 -0
  16. package/lib/api/gemini-sdk.d.ts.map +1 -0
  17. package/lib/api/gemini-sdk.js +245 -0
  18. package/lib/api/gemini-sdk.js.map +1 -0
  19. package/lib/api/gemini.d.ts +21 -0
  20. package/lib/api/gemini.d.ts.map +1 -0
  21. package/lib/api/gemini.js +87 -0
  22. package/lib/api/gemini.js.map +1 -0
  23. package/lib/api/openrouter-sdk.d.ts +58 -0
  24. package/lib/api/openrouter-sdk.d.ts.map +1 -0
  25. package/lib/api/openrouter-sdk.js +341 -0
  26. package/lib/api/openrouter-sdk.js.map +1 -0
  27. package/lib/api/openrouter.d.ts +17 -0
  28. package/lib/api/openrouter.d.ts.map +1 -0
  29. package/lib/api/openrouter.js +111 -0
  30. package/lib/api/openrouter.js.map +1 -0
  31. package/lib/api/trello.d.ts +17 -0
  32. package/lib/api/trello.d.ts.map +1 -0
  33. package/lib/api/trello.js +72 -0
  34. package/lib/api/trello.js.map +1 -0
  35. package/lib/cli/input.d.ts +39 -0
  36. package/lib/cli/input.d.ts.map +1 -0
  37. package/lib/cli/input.js +119 -0
  38. package/lib/cli/input.js.map +1 -0
  39. package/lib/cli/menu.d.ts +9 -0
  40. package/lib/cli/menu.d.ts.map +1 -0
  41. package/lib/cli/menu.js +201 -0
  42. package/lib/cli/menu.js.map +1 -0
  43. package/lib/core/constants.d.ts +22 -0
  44. package/lib/core/constants.d.ts.map +1 -0
  45. package/lib/core/constants.js +24 -0
  46. package/lib/core/constants.js.map +1 -0
  47. package/lib/core/copilot-setup.d.ts +13 -0
  48. package/lib/core/copilot-setup.d.ts.map +1 -0
  49. package/lib/core/copilot-setup.js +447 -0
  50. package/lib/core/copilot-setup.js.map +1 -0
  51. package/lib/core/gemini-setup.d.ts +8 -0
  52. package/lib/core/gemini-setup.d.ts.map +1 -0
  53. package/lib/core/gemini-setup.js +84 -0
  54. package/lib/core/gemini-setup.js.map +1 -0
  55. package/lib/core/menu-constants.d.ts +24 -0
  56. package/lib/core/menu-constants.d.ts.map +1 -0
  57. package/lib/core/menu-constants.js +22 -0
  58. package/lib/core/menu-constants.js.map +1 -0
  59. package/lib/core/openrouter-setup.d.ts +8 -0
  60. package/lib/core/openrouter-setup.d.ts.map +1 -0
  61. package/lib/core/openrouter-setup.js +73 -0
  62. package/lib/core/openrouter-setup.js.map +1 -0
  63. package/lib/core/setup.d.ts +21 -0
  64. package/lib/core/setup.d.ts.map +1 -0
  65. package/lib/core/setup.js +88 -0
  66. package/lib/core/setup.js.map +1 -0
  67. package/lib/core/trello-setup.d.ts +8 -0
  68. package/lib/core/trello-setup.d.ts.map +1 -0
  69. package/lib/core/trello-setup.js +107 -0
  70. package/lib/core/trello-setup.js.map +1 -0
  71. package/lib/index.d.ts +3 -0
  72. package/lib/index.d.ts.map +1 -0
  73. package/lib/index.js +250 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/types/index.d.ts +78 -0
  76. package/lib/types/index.d.ts.map +1 -0
  77. package/lib/types/index.js +2 -0
  78. package/lib/types/index.js.map +1 -0
  79. package/lib/utils/branch-naming.d.ts +11 -0
  80. package/lib/utils/branch-naming.d.ts.map +1 -0
  81. package/lib/utils/branch-naming.js +396 -0
  82. package/lib/utils/branch-naming.js.map +1 -0
  83. package/lib/utils/colors.d.ts +14 -0
  84. package/lib/utils/colors.d.ts.map +1 -0
  85. package/lib/utils/colors.js +14 -0
  86. package/lib/utils/colors.js.map +1 -0
  87. package/lib/utils/commit-helpers.d.ts +53 -0
  88. package/lib/utils/commit-helpers.d.ts.map +1 -0
  89. package/lib/utils/commit-helpers.js +177 -0
  90. package/lib/utils/commit-helpers.js.map +1 -0
  91. package/lib/utils/config.d.ts +87 -0
  92. package/lib/utils/config.d.ts.map +1 -0
  93. package/lib/utils/config.js +326 -0
  94. package/lib/utils/config.js.map +1 -0
  95. package/lib/utils/display.d.ts +27 -0
  96. package/lib/utils/display.d.ts.map +1 -0
  97. package/lib/utils/display.js +116 -0
  98. package/lib/utils/display.js.map +1 -0
  99. package/lib/utils/error-helpers.d.ts +27 -0
  100. package/lib/utils/error-helpers.d.ts.map +1 -0
  101. package/lib/utils/error-helpers.js +102 -0
  102. package/lib/utils/error-helpers.js.map +1 -0
  103. package/lib/utils/exec.d.ts +18 -0
  104. package/lib/utils/exec.d.ts.map +1 -0
  105. package/lib/utils/exec.js +96 -0
  106. package/lib/utils/exec.js.map +1 -0
  107. package/lib/utils/git-ai-errors.d.ts +10 -0
  108. package/lib/utils/git-ai-errors.d.ts.map +1 -0
  109. package/lib/utils/git-ai-errors.js +71 -0
  110. package/lib/utils/git-ai-errors.js.map +1 -0
  111. package/lib/utils/git-ai.d.ts +26 -0
  112. package/lib/utils/git-ai.d.ts.map +1 -0
  113. package/lib/utils/git-ai.js +603 -0
  114. package/lib/utils/git-ai.js.map +1 -0
  115. package/lib/utils/git-commands.d.ts +21 -0
  116. package/lib/utils/git-commands.d.ts.map +1 -0
  117. package/lib/utils/git-commands.js +58 -0
  118. package/lib/utils/git-commands.js.map +1 -0
  119. package/lib/utils/git-errors.d.ts +76 -0
  120. package/lib/utils/git-errors.d.ts.map +1 -0
  121. package/lib/utils/git-errors.js +565 -0
  122. package/lib/utils/git-errors.js.map +1 -0
  123. package/lib/utils/git.d.ts +61 -0
  124. package/lib/utils/git.d.ts.map +1 -0
  125. package/lib/utils/git.js +245 -0
  126. package/lib/utils/git.js.map +1 -0
  127. package/lib/utils/logging.d.ts +25 -0
  128. package/lib/utils/logging.d.ts.map +1 -0
  129. package/lib/utils/logging.js +71 -0
  130. package/lib/utils/logging.js.map +1 -0
  131. package/lib/utils/menu-builders.d.ts +47 -0
  132. package/lib/utils/menu-builders.d.ts.map +1 -0
  133. package/lib/utils/menu-builders.js +34 -0
  134. package/lib/utils/menu-builders.js.map +1 -0
  135. package/lib/utils/platform.d.ts +13 -0
  136. package/lib/utils/platform.d.ts.map +1 -0
  137. package/lib/utils/platform.js +32 -0
  138. package/lib/utils/platform.js.map +1 -0
  139. package/lib/utils/spinner-wrapper.d.ts +16 -0
  140. package/lib/utils/spinner-wrapper.d.ts.map +1 -0
  141. package/lib/utils/spinner-wrapper.js +56 -0
  142. package/lib/utils/spinner-wrapper.js.map +1 -0
  143. package/lib/utils/state.d.ts +22 -0
  144. package/lib/utils/state.d.ts.map +1 -0
  145. package/lib/utils/state.js +75 -0
  146. package/lib/utils/state.js.map +1 -0
  147. package/lib/utils/time.d.ts +4 -0
  148. package/lib/utils/time.d.ts.map +1 -0
  149. package/lib/utils/time.js +29 -0
  150. package/lib/utils/time.js.map +1 -0
  151. package/lib/utils/type-guards.d.ts +10 -0
  152. package/lib/utils/type-guards.d.ts.map +1 -0
  153. package/lib/utils/type-guards.js +29 -0
  154. package/lib/utils/type-guards.js.map +1 -0
  155. package/lib/workflows/ai-provider.d.ts +13 -0
  156. package/lib/workflows/ai-provider.d.ts.map +1 -0
  157. package/lib/workflows/ai-provider.js +55 -0
  158. package/lib/workflows/ai-provider.js.map +1 -0
  159. package/lib/workflows/author.d.ts +4 -0
  160. package/lib/workflows/author.d.ts.map +1 -0
  161. package/lib/workflows/author.js +80 -0
  162. package/lib/workflows/author.js.map +1 -0
  163. package/lib/workflows/branch-helpers.d.ts +9 -0
  164. package/lib/workflows/branch-helpers.d.ts.map +1 -0
  165. package/lib/workflows/branch-helpers.js +406 -0
  166. package/lib/workflows/branch-helpers.js.map +1 -0
  167. package/lib/workflows/branch-utils.d.ts +9 -0
  168. package/lib/workflows/branch-utils.d.ts.map +1 -0
  169. package/lib/workflows/branch-utils.js +61 -0
  170. package/lib/workflows/branch-utils.js.map +1 -0
  171. package/lib/workflows/branch.d.ts +12 -0
  172. package/lib/workflows/branch.d.ts.map +1 -0
  173. package/lib/workflows/branch.js +555 -0
  174. package/lib/workflows/branch.js.map +1 -0
  175. package/lib/workflows/cleanup.d.ts +10 -0
  176. package/lib/workflows/cleanup.d.ts.map +1 -0
  177. package/lib/workflows/cleanup.js +287 -0
  178. package/lib/workflows/cleanup.js.map +1 -0
  179. package/lib/workflows/commit.d.ts +10 -0
  180. package/lib/workflows/commit.d.ts.map +1 -0
  181. package/lib/workflows/commit.js +771 -0
  182. package/lib/workflows/commit.js.map +1 -0
  183. package/lib/workflows/main-steps.d.ts +12 -0
  184. package/lib/workflows/main-steps.d.ts.map +1 -0
  185. package/lib/workflows/main-steps.js +407 -0
  186. package/lib/workflows/main-steps.js.map +1 -0
  187. package/lib/workflows/main.d.ts +8 -0
  188. package/lib/workflows/main.d.ts.map +1 -0
  189. package/lib/workflows/main.js +720 -0
  190. package/lib/workflows/main.js.map +1 -0
  191. package/lib/workflows/security-gate.d.ts +8 -0
  192. package/lib/workflows/security-gate.d.ts.map +1 -0
  193. package/lib/workflows/security-gate.js +447 -0
  194. package/lib/workflows/security-gate.js.map +1 -0
  195. package/lib/workflows/settings.d.ts +15 -0
  196. package/lib/workflows/settings.d.ts.map +1 -0
  197. package/lib/workflows/settings.js +438 -0
  198. package/lib/workflows/settings.js.map +1 -0
  199. package/lib/workflows/trello-menu.d.ts +16 -0
  200. package/lib/workflows/trello-menu.d.ts.map +1 -0
  201. package/lib/workflows/trello-menu.js +361 -0
  202. package/lib/workflows/trello-menu.js.map +1 -0
  203. package/package.json +112 -0
@@ -0,0 +1,245 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
4
+ import { GoogleGenAI } from '@google/genai';
5
+ import { getGeminiConfig } from '../utils/config.js';
6
+ import { log } from '../utils/logging.js';
7
+ // Gemini SDK wrapper (lazy-load, optional)
8
+ let client = null;
9
+ const ensureClient = () => {
10
+ if (client) {
11
+ return true;
12
+ }
13
+ try {
14
+ client = new GoogleGenAI({ apiKey: getGeminiConfig().apiKey });
15
+ // Narrow client into a local const to satisfy strict no-non-null assertions
16
+ const startedClient = client;
17
+ if (!startedClient) {
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ catch (error) {
23
+ // SDK optional: log info and fall back
24
+ try {
25
+ const msg = error && error.message ? error.message : String(error);
26
+ log.info(msg);
27
+ }
28
+ catch {
29
+ log.info('Google GenAI SDK not available — falling back to Google GenAI.');
30
+ }
31
+ client = null;
32
+ return false;
33
+ }
34
+ };
35
+ export const isAvailable = () => {
36
+ return ensureClient();
37
+ };
38
+ export const generateBranchName = async (text, correction, model) => {
39
+ const promptBase = `Generate a git branch name suffix from this input. Output ONLY the kebab-case suffix (lowercase-with-hyphens), 3-50 chars, nothing else.`;
40
+ const prompt = correction
41
+ ? `${promptBase}\n\nInput:\n${text}\n\nAdjustment: ${correction}`
42
+ : `${promptBase}\n\nInput:\n${text}`;
43
+ const result = await client?.models.generateContent({
44
+ model: model ?? 'gemini-2.5-flash',
45
+ contents: prompt,
46
+ });
47
+ try {
48
+ const content = result.text;
49
+ const first = String(content)
50
+ .trim()
51
+ .split('\n')
52
+ .find((l) => !!l) ?? '';
53
+ // sanitize to kebab-case
54
+ const cleaned = String(first)
55
+ .toLowerCase()
56
+ .replaceAll(/[^\d\sa-z-]/g, ' ')
57
+ .trim()
58
+ .replaceAll(/\s+/g, '-')
59
+ .replaceAll(/-+/g, '-')
60
+ .replaceAll(/^-|-$/g, '');
61
+ return cleaned || null;
62
+ }
63
+ catch (error) {
64
+ log.error('Google GenAI Error: ' + String(error));
65
+ return null;
66
+ }
67
+ };
68
+ export const generateCommitMessage = async (diff, correction, model) => {
69
+ const promptBase = `Generate a conventional commit message from this git diff. Output ONLY the commit message in this format:\n\n<type>(<scope>): <short summary>\n\n<Detailed multi-line body explaining the change. Wrap lines at ~72 characters. LIMITS: subject max 100 chars; body max 360 chars. Include why the change was made and any important notes. Separate subject and body by a single blank line. Do not include any extraneous commentary or markers. Use imperative mood.
70
+
71
+ Example:
72
+ refactor(ai): migrate providers to SDKs
73
+
74
+ Replaces direct API/CLI calls for Copilot and Gemini with SDK integrations.
75
+ This simplifies code, improves maintainability, and adds dynamic model
76
+ fetching. Updates .gitignore for geeto binaries.`;
77
+ const prompt = correction
78
+ ? `${promptBase}\n\nDiff:\n${diff}\n\nAdjustment: ${correction}`
79
+ : `${promptBase}\n\nDiff:\n${diff}`;
80
+ const result = await client?.models.generateContent({
81
+ model: model ?? 'gemini-2.5-flash',
82
+ contents: prompt,
83
+ });
84
+ try {
85
+ const content = result.text;
86
+ // Normalize full response: remove fenced blocks, trim surrounding quotes, collapse extra blank lines
87
+ const cleaned = String(content)
88
+ .replaceAll(/```[\S\s]*?```/g, '')
89
+ .replaceAll(/^"+|"+$/g, '')
90
+ .trim();
91
+ const normalized = cleaned.replaceAll(/\n\s*\n+/g, '\n\n').trim();
92
+ return normalized && normalized.length >= 8 ? normalized : null;
93
+ }
94
+ catch (error) {
95
+ log.error('Google GenAI Error: ' + String(error));
96
+ return null;
97
+ }
98
+ };
99
+ export const getAvailableModelsDetailed = async () => {
100
+ const ok = ensureClient();
101
+ if (!ok || !client) {
102
+ return null;
103
+ }
104
+ try {
105
+ const resp = await client.models.list();
106
+ let list = [];
107
+ if (Array.isArray(resp?.page)) {
108
+ list = resp.page;
109
+ }
110
+ else if (Array.isArray(resp)) {
111
+ list = resp;
112
+ }
113
+ else {
114
+ list = [];
115
+ }
116
+ if (!Array.isArray(list) || list.length === 0) {
117
+ return null;
118
+ }
119
+ const mapped = list
120
+ .map((m) => {
121
+ if (!m) {
122
+ return null;
123
+ }
124
+ if (typeof m === 'string') {
125
+ return {
126
+ id: m,
127
+ name: m,
128
+ description: null,
129
+ inputTokenLimit: null,
130
+ outputTokenLimit: null,
131
+ label: m,
132
+ value: m,
133
+ };
134
+ }
135
+ const id = String(m.name ?? m.id ?? m.model ?? '');
136
+ const name = String(m.displayName ?? m.title ?? m.name ?? id);
137
+ const description = String(m.description ?? m.summary ?? '') || null;
138
+ let inputTokenLimit = null;
139
+ if (typeof m.inputTokenLimit === 'number') {
140
+ inputTokenLimit = m.inputTokenLimit;
141
+ }
142
+ else if (typeof m.input_token_limit === 'number') {
143
+ inputTokenLimit = m.input_token_limit;
144
+ }
145
+ let outputTokenLimit = null;
146
+ if (typeof m.outputTokenLimit === 'number') {
147
+ outputTokenLimit = m.outputTokenLimit;
148
+ }
149
+ else if (typeof m.output_token_limit === 'number') {
150
+ outputTokenLimit = m.output_token_limit;
151
+ }
152
+ return {
153
+ id,
154
+ name,
155
+ description,
156
+ inputTokenLimit,
157
+ outputTokenLimit,
158
+ label: name,
159
+ value: id || name,
160
+ };
161
+ })
162
+ .filter((m) => {
163
+ if (!m)
164
+ return false;
165
+ const id = m.id.toLowerCase();
166
+ const name = m.name.toLowerCase();
167
+ // Exclude non-text generation models (blacklist)
168
+ const excludePatterns = [
169
+ 'vision',
170
+ 'video',
171
+ 'audio',
172
+ 'embedding',
173
+ 'imagen',
174
+ 'text-embedding',
175
+ 'aqa',
176
+ 'whisper',
177
+ 'speech',
178
+ 'tts',
179
+ 'multimodal',
180
+ 'image',
181
+ 'palm',
182
+ 'e2b',
183
+ 'e4b',
184
+ 'banana',
185
+ 'gemma',
186
+ 'computer', // computer use models
187
+ 'robotics', // robotics models
188
+ ];
189
+ for (const pattern of excludePatterns) {
190
+ if (id.includes(pattern) || name.includes(pattern)) {
191
+ return false;
192
+ }
193
+ }
194
+ // Whitelist: only Gemini models (Flash, Pro, Experimental, Lite variants)
195
+ const includePatterns = ['gemini'];
196
+ const hasValidPattern = includePatterns.some((pattern) => id.includes(pattern) || name.includes(pattern));
197
+ if (!hasValidPattern) {
198
+ return false;
199
+ }
200
+ // Require at least 16384 output tokens for quality commit message generation
201
+ if (m.outputTokenLimit !== null && m.outputTokenLimit < 16384) {
202
+ return false;
203
+ }
204
+ return true;
205
+ })
206
+ // eslint-disable-next-line unicorn/no-array-sort
207
+ .sort((a, b) => a.name.localeCompare(b.name)); // sort by name
208
+ const out = mapped.filter(Boolean);
209
+ return out.length > 0 ? out : null;
210
+ }
211
+ catch {
212
+ return null;
213
+ }
214
+ };
215
+ export const getAvailableModelChoices = async () => {
216
+ const detailed = (await getAvailableModelsDetailed()) ?? [];
217
+ const choices = [];
218
+ const indexWidth = String(detailed.length).length;
219
+ // compute max widths for name and io columns so values align nicely
220
+ let maxNameLen = 0;
221
+ let maxIoLen = 0;
222
+ for (const d of detailed) {
223
+ if (d.label.length > maxNameLen) {
224
+ maxNameLen = d.label.length;
225
+ }
226
+ const ioStr = `${d.inputTokenLimit ?? 'n/a'}/${d.outputTokenLimit ?? 'n/a'} tokens`;
227
+ if (ioStr.length > maxIoLen) {
228
+ maxIoLen = ioStr.length;
229
+ }
230
+ }
231
+ for (const [i, d] of detailed.entries()) {
232
+ const idx = `${String(i + 1).padStart(indexWidth, ' ')}.`;
233
+ const ioStr = `${d.inputTokenLimit ?? 'n/a'}/${d.outputTokenLimit ?? 'n/a'} tokens`;
234
+ const padCount = Math.max(1, maxNameLen - d.label.length + 2);
235
+ const paddedName = d.label + ' '.repeat(padCount);
236
+ const label = `${idx} ${paddedName}${ioStr}`;
237
+ choices.push({ label, value: d.value });
238
+ }
239
+ return choices;
240
+ };
241
+ export default {
242
+ generateBranchName,
243
+ generateCommitMessage,
244
+ };
245
+ //# sourceMappingURL=gemini-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-sdk.js","sourceRoot":"","sources":["../../src/api/gemini-sdk.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,4DAA4D;AAC5D,+DAA+D;AAC/D,OAAO,EAA2B,WAAW,EAAgB,MAAM,eAAe,CAAA;AAGlF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,2CAA2C;AAE3C,IAAI,MAAM,GAAuB,IAAI,CAAA;AAErC,MAAM,YAAY,GAAG,GAAY,EAAE;IACjC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9D,4EAA4E;QAC5E,MAAM,aAAa,GAAG,MAAM,CAAA;QAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,KAAK,IAAK,KAAe,CAAC,OAAO,CAAC,CAAC,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACxF,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,GAAG,IAAI,CAAA;QACb,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACvC,OAAO,YAAY,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,IAAY,EACZ,UAAmB,EACnB,KAAmB,EACK,EAAE;IAC1B,MAAM,UAAU,GAAG,0IAA0I,CAAA;IAC7J,MAAM,MAAM,GAAG,UAAU;QACvB,CAAC,CAAC,GAAG,UAAU,eAAe,IAAI,mBAAmB,UAAU,EAAE;QACjE,CAAC,CAAC,GAAG,UAAU,eAAe,IAAI,EAAE,CAAA;IAEtC,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;QAClD,KAAK,EAAE,KAAK,IAAI,kBAAkB;QAClC,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAI,MAAkC,CAAC,IAAI,CAAA;QACxD,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,CAAC;aACZ,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnC,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;aAC1B,WAAW,EAAE;aACb,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC;aAC/B,IAAI,EAAE;aACN,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;aACvB,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC;aACtB,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC3B,OAAO,OAAO,IAAI,IAAI,CAAA;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,IAAY,EACZ,UAAmB,EACnB,KAAmB,EACK,EAAE;IAC1B,MAAM,UAAU,GAAG;;;;;;;iDAO4B,CAAA;IAC/C,MAAM,MAAM,GAAG,UAAU;QACvB,CAAC,CAAC,GAAG,UAAU,cAAc,IAAI,mBAAmB,UAAU,EAAE;QAChE,CAAC,CAAC,GAAG,UAAU,cAAc,IAAI,EAAE,CAAA;IAErC,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;QAClD,KAAK,EAAE,KAAK,IAAI,kBAAkB;QAClC,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAI,MAAkC,CAAC,IAAI,CAAA;QACxD,qGAAqG;QACrG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;aAC5B,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;aACjC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;aAC1B,IAAI,EAAE,CAAA;QACT,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAYD,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,IAAmC,EAAE;IAClF,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAiB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAErD,IAAI,IAAI,GAAU,EAAE,CAAA;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAA;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAkB,IAAI;aAC/B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACd,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,IAA8B,CAAA;YACvC,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO;oBACL,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,CAAC;oBACP,WAAW,EAAE,IAAI;oBACjB,eAAe,EAAE,IAAI;oBACrB,gBAAgB,EAAE,IAAI;oBACtB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;iBACT,CAAA;YACH,CAAC;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;YAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,IAAI,CAAA;YAEpE,IAAI,eAAe,GAAkB,IAAI,CAAA;YACzC,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBAC1C,eAAe,GAAG,CAAC,CAAC,eAAe,CAAA;YACrC,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBACnD,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAA;YACvC,CAAC;YAED,IAAI,gBAAgB,GAAkB,IAAI,CAAA;YAC1C,IAAI,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAA;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;gBACpD,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAA;YACzC,CAAC;YAED,OAAO;gBACL,EAAE;gBACF,IAAI;gBACJ,WAAW;gBACX,eAAe;gBACf,gBAAgB;gBAChB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,EAAE,IAAI,IAAI;aAClB,CAAA;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;YAEpB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;YAEjC,iDAAiD;YACjD,MAAM,eAAe,GAAG;gBACtB,QAAQ;gBACR,OAAO;gBACP,OAAO;gBACP,WAAW;gBACX,QAAQ;gBACR,gBAAgB;gBAChB,KAAK;gBACL,SAAS;gBACT,QAAQ;gBACR,KAAK;gBACL,YAAY;gBACZ,OAAO;gBACP,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,OAAO;gBACP,UAAU,EAAE,sBAAsB;gBAClC,UAAU,EAAE,kBAAkB;aAC/B,CAAA;YAED,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,0EAA0E;YAC1E,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,CAAA;YAElC,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAC1C,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5D,CAAA;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAA;YACd,CAAC;YAED,6EAA6E;YAC7E,IAAI,CAAC,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,CAAC,gBAAgB,GAAG,KAAK,EAAE,CAAC;gBAC9D,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC,CAAC;YACF,iDAAiD;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,eAAe;QAE/D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAkB,CAAA;QAEnD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,IAAI,EAAE;IACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,0BAA0B,EAAE,CAAC,IAAI,EAAE,CAAA;IAE3D,MAAM,OAAO,GAAG,EAA6C,CAAA;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;IAEjD,oEAAoE;IACpE,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAChC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;QAC7B,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,eAAe,IAAI,KAAK,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,SAAS,CAAA;QACnF,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAA;QACzB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAA;QACzD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,eAAe,IAAI,KAAK,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,SAAS,CAAA;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC7D,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,UAAU,GAAG,KAAK,EAAE,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,eAAe;IACb,kBAAkB;IAClB,qBAAqB;CACtB,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Gemini integration for AI-powered branch naming and commit messages
3
+ */
4
+ export type GeminiModel = string;
5
+ /**
6
+ * Return Gemini model choices from the SDK in realtime.
7
+ * This deliberately does NOT read or write `.geeto/gemini-model.json`.
8
+ */
9
+ export declare const getGeminiModels: () => Promise<Array<{
10
+ label: string;
11
+ value: GeminiModel;
12
+ }>>;
13
+ /**
14
+ * Generate branch name from title using Gemini SDK
15
+ */
16
+ export declare const generateBranchName: (text: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
17
+ /**
18
+ * Generate commit message from git diff using Gemini SDK
19
+ */
20
+ export declare const generateCommitMessage: (diff: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
21
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/api/gemini.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC,CAiB5F,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,QAAO,WAAgC,KACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAsCvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,QAAO,WAAgC,KACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAcvB,CAAA"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Gemini integration for AI-powered branch naming and commit messages
3
+ */
4
+ import path from 'node:path';
5
+ import { generateBranchName as sdkGenerateBranchName, generateCommitMessage as sdkGenerateCommitMessage, getAvailableModelChoices as sdkGetAvailableModels, isAvailable as sdkIsAvailable, } from './gemini-sdk.js';
6
+ import { log } from '../utils/logging.js';
7
+ /**
8
+ * Return Gemini model choices from the SDK in realtime.
9
+ * This deliberately does NOT read or write `.geeto/gemini-model.json`.
10
+ */
11
+ export const getGeminiModels = async () => {
12
+ try {
13
+ const ok = sdkIsAvailable();
14
+ if (!ok) {
15
+ log.info('Gemini SDK not available; returning no Gemini models.');
16
+ return [];
17
+ }
18
+ const live = await sdkGetAvailableModels();
19
+ if (Array.isArray(live) && live.length > 0) {
20
+ return live;
21
+ }
22
+ return [];
23
+ }
24
+ catch (error) {
25
+ log.warn(`Failed to fetch live Gemini models: ${String(error)}`);
26
+ return [];
27
+ }
28
+ };
29
+ /**
30
+ * Generate branch name from title using Gemini SDK
31
+ */
32
+ export const generateBranchName = async (text, correction, model = 'gemini-2.5-flash') => {
33
+ try {
34
+ const ok = sdkIsAvailable();
35
+ if (!ok) {
36
+ log.warn('Gemini SDK not available; install @google/genai to enable Gemini features.');
37
+ return null;
38
+ }
39
+ const sdkRes = await sdkGenerateBranchName(text, correction, model);
40
+ if (!sdkRes) {
41
+ return null;
42
+ }
43
+ // Persist original provider response so the user can inspect the unmodified AI output.
44
+ try {
45
+ const fs = await import('node:fs/promises');
46
+ const outDir = path.join(process.cwd(), '.geeto');
47
+ await fs.mkdir(outDir, { recursive: true });
48
+ const payload = {
49
+ provider: 'gemini',
50
+ model,
51
+ raw: sdkRes,
52
+ cleaned: sdkRes,
53
+ timestamp: new Date().toISOString(),
54
+ };
55
+ await fs.writeFile(path.join(outDir, 'last-ai-suggestion.json'), JSON.stringify(payload, null, 2));
56
+ }
57
+ catch {
58
+ /* ignore file write failures */
59
+ }
60
+ return sdkRes;
61
+ }
62
+ catch (error) {
63
+ console.log(''); // Force newline to separate from any active spinner
64
+ log.warn('Gemini Error: ' + String(error));
65
+ return null;
66
+ }
67
+ };
68
+ /**
69
+ * Generate commit message from git diff using Gemini SDK
70
+ */
71
+ export const generateCommitMessage = async (diff, correction, model = 'gemini-2.5-flash') => {
72
+ try {
73
+ const ok = sdkIsAvailable();
74
+ if (!ok) {
75
+ log.warn('Gemini SDK not available; install @google/genai to enable Gemini features.');
76
+ return null;
77
+ }
78
+ const sdkRes = await sdkGenerateCommitMessage(diff, correction, model);
79
+ return sdkRes;
80
+ }
81
+ catch (error) {
82
+ console.log(''); // Force newline to separate from any active spinner
83
+ log.warn('Gemini Error: ' + String(error));
84
+ return null;
85
+ }
86
+ };
87
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/api/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { GeminiModel } from './gemini.js';
2
+ export declare const isAvailable: () => boolean;
3
+ export declare const generateBranchName: (text: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
4
+ export declare const generateCommitMessage: (diff: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
5
+ type ModelDetail = {
6
+ id: string;
7
+ canonicalSlug: string | null;
8
+ huggingFaceId: string | null;
9
+ name: string;
10
+ description: string | null;
11
+ version: string | null;
12
+ created: number | null;
13
+ pricing: {
14
+ prompt?: string | null;
15
+ completion?: string | null;
16
+ } | null;
17
+ contextLength: number | null;
18
+ inputTokenLimit: number | null;
19
+ outputTokenLimit: number | null;
20
+ architecture: {
21
+ tokenizer?: string | null;
22
+ instructType?: string | null;
23
+ modality?: string | null;
24
+ inputModalities?: string[];
25
+ outputModalities?: string[];
26
+ } | null;
27
+ topProvider: {
28
+ contextLength?: number | null;
29
+ maxCompletionTokens?: number | null;
30
+ isModerated?: boolean | null;
31
+ } | null;
32
+ perRequestLimits: any;
33
+ supportedParameters: string[];
34
+ defaultParameters: Record<string, any> | null;
35
+ expirationDate: string | null;
36
+ supportedActions: string[];
37
+ temperature: number | null;
38
+ maxTemperature: number | null;
39
+ topP: number | null;
40
+ topK: number | null;
41
+ thinking: boolean | null;
42
+ needsEnable: boolean;
43
+ isPremium?: boolean;
44
+ multiplier?: number | null;
45
+ label: string;
46
+ value: string;
47
+ };
48
+ export declare const getAvailableModelsDetailed: () => Promise<ModelDetail[] | null>;
49
+ export declare const getAvailableModelChoices: () => Promise<{
50
+ label: string;
51
+ value: string;
52
+ }[]>;
53
+ declare const _default: {
54
+ generateBranchName: (text: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
55
+ generateCommitMessage: (diff: string, correction?: string, model?: GeminiModel) => Promise<string | null>;
56
+ };
57
+ export default _default;
58
+ //# sourceMappingURL=openrouter-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-sdk.d.ts","sourceRoot":"","sources":["../../src/api/openrouter-sdk.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAiCzC,eAAO,MAAM,WAAW,QAAO,OAE9B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,QAAQ,WAAW,KAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAqCvB,CAAA;AACD,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,QAAQ,WAAW,KAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAoCvB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IACtE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,EAAE;QACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;QAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAC5B,GAAG,IAAI,CAAA;IACR,WAAW,EAAE;QACX,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACnC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAC7B,GAAG,IAAI,CAAA;IACR,gBAAgB,EAAE,GAAG,CAAA;IACrB,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;IAC7C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,0BAA0B,QAAa,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CA0N/E,CAAA;AAED,eAAO,MAAM,wBAAwB;WAGE,MAAM;WAAS,MAAM;IA0B3D,CAAA;;+BArXO,MAAM,eACC,MAAM,UACX,WAAW,KAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;kCAuCjB,MAAM,eACC,MAAM,UACX,WAAW,KAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;AA0UzB,wBAGC"}