egaki 0.5.0 → 0.7.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 (280) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/dist/cli/cache-utils.d.ts +33 -0
  3. package/dist/cli/cache-utils.d.ts.map +1 -0
  4. package/dist/cli/cache-utils.js +157 -0
  5. package/dist/cli/cached-generate.d.ts +105 -0
  6. package/dist/cli/cached-generate.d.ts.map +1 -0
  7. package/dist/cli/cached-generate.js +208 -0
  8. package/dist/cli/cached-generate.test.d.ts +11 -0
  9. package/dist/cli/cached-generate.test.d.ts.map +1 -0
  10. package/dist/cli/cached-generate.test.js +431 -0
  11. package/dist/cli/cartesia-provider.d.ts +16 -0
  12. package/dist/cli/cartesia-provider.d.ts.map +1 -0
  13. package/dist/cli/cartesia-provider.js +184 -0
  14. package/dist/cli/chatgpt-auth.d.ts.map +1 -0
  15. package/dist/cli/cli.d.ts +4 -0
  16. package/dist/cli/cli.d.ts.map +1 -0
  17. package/dist/cli/cli.js +1329 -0
  18. package/dist/cli/clone-generate.d.ts +26 -0
  19. package/dist/cli/clone-generate.d.ts.map +1 -0
  20. package/dist/cli/clone-generate.js +148 -0
  21. package/dist/{credentials.d.ts → cli/credentials.d.ts} +11 -2
  22. package/dist/cli/credentials.d.ts.map +1 -0
  23. package/dist/{credentials.js → cli/credentials.js} +88 -5
  24. package/dist/cli/elevenlabs-speech-provider.d.ts +26 -0
  25. package/dist/cli/elevenlabs-speech-provider.d.ts.map +1 -0
  26. package/dist/cli/elevenlabs-speech-provider.js +199 -0
  27. package/dist/cli/generate.d.ts +140 -0
  28. package/dist/cli/generate.d.ts.map +1 -0
  29. package/dist/cli/generate.js +604 -0
  30. package/dist/cli/generate.test.d.ts +2 -0
  31. package/dist/cli/generate.test.d.ts.map +1 -0
  32. package/dist/cli/generate.test.js +131 -0
  33. package/dist/cli/login.d.ts.map +1 -0
  34. package/dist/{login.js → cli/login.js} +45 -4
  35. package/dist/cli/main.d.ts +3 -0
  36. package/dist/cli/main.d.ts.map +1 -0
  37. package/dist/cli/main.js +7 -0
  38. package/dist/cli/model-catalog.d.ts +141 -0
  39. package/dist/cli/model-catalog.d.ts.map +1 -0
  40. package/dist/cli/model-catalog.js +2135 -0
  41. package/dist/{models.d.ts → cli/models.d.ts} +16 -9
  42. package/dist/cli/models.d.ts.map +1 -0
  43. package/dist/cli/models.js +313 -0
  44. package/dist/cli/open-browser.d.ts.map +1 -0
  45. package/dist/cli/openai-speech-provider.d.ts +3 -0
  46. package/dist/cli/openai-speech-provider.d.ts.map +1 -0
  47. package/dist/cli/openai-speech-provider.js +28 -0
  48. package/dist/cli/separation-generate.d.ts +34 -0
  49. package/dist/cli/separation-generate.d.ts.map +1 -0
  50. package/dist/cli/separation-generate.js +117 -0
  51. package/dist/cli/speech-catalog.d.ts +35 -0
  52. package/dist/cli/speech-catalog.d.ts.map +1 -0
  53. package/dist/cli/speech-catalog.js +195 -0
  54. package/dist/cli/speech-generate.d.ts +86 -0
  55. package/dist/cli/speech-generate.d.ts.map +1 -0
  56. package/dist/cli/speech-generate.js +156 -0
  57. package/dist/cli/speech-models.d.ts +8 -0
  58. package/dist/cli/speech-models.d.ts.map +1 -0
  59. package/dist/cli/speech-models.js +109 -0
  60. package/dist/cli/speech-provider.test.d.ts +2 -0
  61. package/dist/cli/speech-provider.test.d.ts.map +1 -0
  62. package/dist/cli/speech-provider.test.js +197 -0
  63. package/dist/cli/subscription.d.ts.map +1 -0
  64. package/dist/cli/transcription-catalog.d.ts +35 -0
  65. package/dist/cli/transcription-catalog.d.ts.map +1 -0
  66. package/dist/cli/transcription-catalog.js +192 -0
  67. package/dist/cli/transcription-generate.d.ts +62 -0
  68. package/dist/cli/transcription-generate.d.ts.map +1 -0
  69. package/dist/cli/transcription-generate.js +144 -0
  70. package/dist/cli/transcription-models.d.ts +9 -0
  71. package/dist/cli/transcription-models.d.ts.map +1 -0
  72. package/dist/cli/transcription-models.js +100 -0
  73. package/dist/cli/transcription-providers.d.ts +22 -0
  74. package/dist/cli/transcription-providers.d.ts.map +1 -0
  75. package/dist/cli/transcription-providers.js +290 -0
  76. package/dist/cli/video-model-catalog.d.ts +2 -0
  77. package/dist/cli/video-model-catalog.d.ts.map +1 -0
  78. package/dist/cli/video-model-catalog.js +5 -0
  79. package/dist/cli/xai-auth.d.ts +29 -0
  80. package/dist/cli/xai-auth.d.ts.map +1 -0
  81. package/dist/cli/xai-auth.js +325 -0
  82. package/dist/vite/angled-screen.d.ts +57 -0
  83. package/dist/vite/angled-screen.d.ts.map +1 -0
  84. package/dist/vite/angled-screen.js +115 -0
  85. package/dist/vite/app.d.ts +51 -0
  86. package/dist/vite/app.d.ts.map +1 -0
  87. package/dist/vite/app.js +150 -0
  88. package/dist/vite/bands-shader.d.ts +47 -0
  89. package/dist/vite/bands-shader.d.ts.map +1 -0
  90. package/dist/vite/bands-shader.js +267 -0
  91. package/dist/vite/code-block.d.ts +107 -0
  92. package/dist/vite/code-block.d.ts.map +1 -0
  93. package/dist/vite/code-block.js +641 -0
  94. package/dist/vite/components.d.ts +36 -0
  95. package/dist/vite/components.d.ts.map +1 -0
  96. package/dist/vite/components.js +113 -0
  97. package/dist/vite/dispersion-rings-shader.d.ts +44 -0
  98. package/dist/vite/dispersion-rings-shader.d.ts.map +1 -0
  99. package/dist/vite/dispersion-rings-shader.js +282 -0
  100. package/dist/vite/easing-curves.d.ts +129 -0
  101. package/dist/vite/easing-curves.d.ts.map +1 -0
  102. package/dist/vite/easing-curves.js +584 -0
  103. package/dist/vite/easing-curves.test.d.ts +2 -0
  104. package/dist/vite/easing-curves.test.d.ts.map +1 -0
  105. package/dist/vite/easing-curves.test.js +200 -0
  106. package/dist/vite/generated-media-client.d.ts +35 -0
  107. package/dist/vite/generated-media-client.d.ts.map +1 -0
  108. package/dist/vite/generated-media-client.js +76 -0
  109. package/dist/vite/keyframes.d.ts +129 -0
  110. package/dist/vite/keyframes.d.ts.map +1 -0
  111. package/dist/vite/keyframes.js +194 -0
  112. package/dist/vite/layout-editor.d.ts +45 -0
  113. package/dist/vite/layout-editor.d.ts.map +1 -0
  114. package/dist/vite/layout-editor.js +587 -0
  115. package/dist/vite/layout-transition.d.ts +136 -0
  116. package/dist/vite/layout-transition.d.ts.map +1 -0
  117. package/dist/vite/layout-transition.js +581 -0
  118. package/dist/vite/liquid-gradient-shader.d.ts +62 -0
  119. package/dist/vite/liquid-gradient-shader.d.ts.map +1 -0
  120. package/dist/vite/liquid-gradient-shader.js +413 -0
  121. package/dist/vite/mdx-client.d.ts +15 -0
  122. package/dist/vite/mdx-client.d.ts.map +1 -0
  123. package/dist/vite/mdx-client.js +265 -0
  124. package/dist/vite/mdx-parse.d.ts +102 -0
  125. package/dist/vite/mdx-parse.d.ts.map +1 -0
  126. package/dist/vite/mdx-parse.js +251 -0
  127. package/dist/vite/mdx-provided-components.d.ts +18 -0
  128. package/dist/vite/mdx-provided-components.d.ts.map +1 -0
  129. package/dist/vite/mdx-provided-components.js +14 -0
  130. package/dist/vite/mdx-video.d.ts +327 -0
  131. package/dist/vite/mdx-video.d.ts.map +1 -0
  132. package/dist/vite/mdx-video.js +596 -0
  133. package/dist/vite/mdx-video.test.d.ts +9 -0
  134. package/dist/vite/mdx-video.test.d.ts.map +1 -0
  135. package/dist/vite/mdx-video.test.js +1945 -0
  136. package/dist/vite/media-components.d.ts +45 -0
  137. package/dist/vite/media-components.d.ts.map +1 -0
  138. package/dist/vite/media-components.js +355 -0
  139. package/dist/vite/media-duration-store.d.ts +66 -0
  140. package/dist/vite/media-duration-store.d.ts.map +1 -0
  141. package/dist/vite/media-duration-store.js +204 -0
  142. package/dist/vite/player-page.d.ts +35 -0
  143. package/dist/vite/player-page.d.ts.map +1 -0
  144. package/dist/vite/player-page.js +720 -0
  145. package/dist/vite/render-client.d.ts +18 -0
  146. package/dist/vite/render-client.d.ts.map +1 -0
  147. package/dist/vite/render-client.js +67 -0
  148. package/dist/vite/sdk.d.ts +221 -0
  149. package/dist/vite/sdk.d.ts.map +1 -0
  150. package/dist/vite/sdk.js +355 -0
  151. package/dist/vite/server-components.d.ts +55 -0
  152. package/dist/vite/server-components.d.ts.map +1 -0
  153. package/dist/vite/server-components.js +156 -0
  154. package/dist/vite/server-mdx.d.ts +74 -0
  155. package/dist/vite/server-mdx.d.ts.map +1 -0
  156. package/dist/vite/server-mdx.js +259 -0
  157. package/dist/vite/shader-renderer.d.ts +48 -0
  158. package/dist/vite/shader-renderer.d.ts.map +1 -0
  159. package/dist/vite/shader-renderer.js +411 -0
  160. package/dist/vite/store-hooks.d.ts +12 -0
  161. package/dist/vite/store-hooks.d.ts.map +1 -0
  162. package/dist/vite/store-hooks.js +93 -0
  163. package/dist/vite/store.d.ts +75 -0
  164. package/dist/vite/store.d.ts.map +1 -0
  165. package/dist/vite/store.js +52 -0
  166. package/dist/vite/store.test.d.ts +6 -0
  167. package/dist/vite/store.test.d.ts.map +1 -0
  168. package/dist/vite/store.test.js +172 -0
  169. package/dist/vite/tweakpane-hook.d.ts +94 -0
  170. package/dist/vite/tweakpane-hook.d.ts.map +1 -0
  171. package/dist/vite/tweakpane-hook.js +450 -0
  172. package/dist/vite/vite-plugin.d.ts +28 -0
  173. package/dist/vite/vite-plugin.d.ts.map +1 -0
  174. package/dist/vite/vite-plugin.js +538 -0
  175. package/dist/vite/wave-gradient-shader.d.ts +41 -0
  176. package/dist/vite/wave-gradient-shader.d.ts.map +1 -0
  177. package/dist/vite/wave-gradient-shader.js +207 -0
  178. package/package.json +103 -25
  179. package/skills/egaki/SKILL.md +162 -1
  180. package/src/cli/cache-utils.ts +169 -0
  181. package/src/cli/cached-generate.test.ts +531 -0
  182. package/src/cli/cached-generate.ts +348 -0
  183. package/src/cli/cartesia-provider.ts +249 -0
  184. package/src/cli/cli.ts +1818 -0
  185. package/src/cli/clone-generate.ts +202 -0
  186. package/src/{credentials.ts → cli/credentials.ts} +90 -7
  187. package/src/cli/elevenlabs-speech-provider.ts +243 -0
  188. package/src/cli/generate.test.ts +166 -0
  189. package/src/cli/generate.ts +912 -0
  190. package/src/{login.ts → cli/login.ts} +48 -3
  191. package/src/cli/main.ts +8 -0
  192. package/src/cli/model-catalog.ts +2336 -0
  193. package/src/cli/models.ts +408 -0
  194. package/src/cli/openai-speech-provider.ts +34 -0
  195. package/src/cli/separation-generate.ts +187 -0
  196. package/src/cli/speech-catalog.ts +253 -0
  197. package/src/cli/speech-generate.ts +275 -0
  198. package/src/cli/speech-models.ts +146 -0
  199. package/src/cli/speech-provider.test.ts +226 -0
  200. package/src/cli/transcription-catalog.ts +250 -0
  201. package/src/cli/transcription-generate.ts +214 -0
  202. package/src/cli/transcription-models.ts +136 -0
  203. package/src/cli/transcription-providers.ts +427 -0
  204. package/src/cli/video-model-catalog.ts +14 -0
  205. package/src/cli/xai-auth.ts +396 -0
  206. package/src/vite/angled-screen.tsx +214 -0
  207. package/src/vite/app.tsx +197 -0
  208. package/src/vite/bands-shader.tsx +319 -0
  209. package/src/vite/code-block.tsx +939 -0
  210. package/src/vite/components.tsx +278 -0
  211. package/src/vite/dispersion-rings-shader.tsx +331 -0
  212. package/src/vite/easing-curves.test.ts +232 -0
  213. package/src/vite/easing-curves.ts +743 -0
  214. package/src/vite/generated-media-client.tsx +121 -0
  215. package/src/vite/keyframes.tsx +347 -0
  216. package/src/vite/layout-editor.tsx +709 -0
  217. package/src/vite/layout-transition.tsx +706 -0
  218. package/src/vite/liquid-gradient-shader.tsx +474 -0
  219. package/src/vite/mdx-client.tsx +420 -0
  220. package/src/vite/mdx-parse.ts +343 -0
  221. package/src/vite/mdx-provided-components.ts +19 -0
  222. package/src/vite/mdx-video.test.tsx +2219 -0
  223. package/src/vite/mdx-video.tsx +976 -0
  224. package/src/vite/media-components.tsx +473 -0
  225. package/src/vite/media-duration-store.ts +225 -0
  226. package/src/vite/motion-timing.ts +194 -0
  227. package/src/vite/player-page.tsx +1107 -0
  228. package/src/vite/render-client.ts +84 -0
  229. package/src/vite/sdk.ts +598 -0
  230. package/src/vite/server-components.tsx +241 -0
  231. package/src/vite/server-mdx.ts +285 -0
  232. package/src/vite/shader-renderer.tsx +535 -0
  233. package/src/vite/store-hooks.ts +117 -0
  234. package/src/vite/store.test.ts +202 -0
  235. package/src/vite/store.ts +115 -0
  236. package/src/vite/styles.css +21 -0
  237. package/src/vite/tweakpane-hook.tsx +593 -0
  238. package/src/vite/virtual-modules.d.ts +30 -0
  239. package/src/vite/vite-plugin.ts +584 -0
  240. package/src/vite/wave-gradient-shader.tsx +253 -0
  241. package/README.md +0 -266
  242. package/dist/antigravity-auth.d.ts +0 -15
  243. package/dist/antigravity-auth.d.ts.map +0 -1
  244. package/dist/antigravity-auth.js +0 -544
  245. package/dist/antigravity-image.d.ts +0 -11
  246. package/dist/antigravity-image.d.ts.map +0 -1
  247. package/dist/antigravity-image.js +0 -285
  248. package/dist/chatgpt-auth.d.ts.map +0 -1
  249. package/dist/cli.d.ts +0 -3
  250. package/dist/cli.d.ts.map +0 -1
  251. package/dist/cli.js +0 -968
  252. package/dist/credentials.d.ts.map +0 -1
  253. package/dist/gateway-model-candidates.generated.d.ts +0 -11
  254. package/dist/gateway-model-candidates.generated.d.ts.map +0 -1
  255. package/dist/gateway-model-candidates.generated.js +0 -64
  256. package/dist/login.d.ts.map +0 -1
  257. package/dist/model-catalog.d.ts +0 -42
  258. package/dist/model-catalog.d.ts.map +0 -1
  259. package/dist/model-catalog.js +0 -1001
  260. package/dist/models.d.ts.map +0 -1
  261. package/dist/models.js +0 -246
  262. package/dist/open-browser.d.ts.map +0 -1
  263. package/dist/subscription.d.ts.map +0 -1
  264. package/dist/video-model-catalog.d.ts +0 -52
  265. package/dist/video-model-catalog.d.ts.map +0 -1
  266. package/dist/video-model-catalog.js +0 -306
  267. package/src/cli.ts +0 -1378
  268. package/src/model-catalog.ts +0 -1077
  269. package/src/models.ts +0 -309
  270. package/src/video-model-catalog.ts +0 -363
  271. /package/dist/{chatgpt-auth.d.ts → cli/chatgpt-auth.d.ts} +0 -0
  272. /package/dist/{chatgpt-auth.js → cli/chatgpt-auth.js} +0 -0
  273. /package/dist/{login.d.ts → cli/login.d.ts} +0 -0
  274. /package/dist/{open-browser.d.ts → cli/open-browser.d.ts} +0 -0
  275. /package/dist/{open-browser.js → cli/open-browser.js} +0 -0
  276. /package/dist/{subscription.d.ts → cli/subscription.d.ts} +0 -0
  277. /package/dist/{subscription.js → cli/subscription.js} +0 -0
  278. /package/src/{chatgpt-auth.ts → cli/chatgpt-auth.ts} +0 -0
  279. /package/src/{open-browser.ts → cli/open-browser.ts} +0 -0
  280. /package/src/{subscription.ts → cli/subscription.ts} +0 -0
@@ -1,285 +0,0 @@
1
- // Antigravity image generation bridge for egaki.
2
- // Handles direct Antigravity OAuth requests without provider fallback.
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import crypto from 'node:crypto';
6
- import { execFileSync } from 'node:child_process';
7
- import pc from 'picocolors';
8
- import { getAntigravityAuth, saveAntigravityAuth } from './credentials.js';
9
- import { getValidAntigravityAccessToken } from './antigravity-auth.js';
10
- export async function generateWithAntigravityModel({ prompt, model, outputPath, inputImages, aspectRatio, count, json, stdout, }) {
11
- const auth = getAntigravityAuth();
12
- if (!auth) {
13
- console.error(pc.red('Missing Antigravity OAuth login. Run: egaki login --provider antigravity'));
14
- process.exit(1);
15
- }
16
- const token = await getValidAntigravityAccessToken(auth, (updated) => {
17
- saveAntigravityAuth(updated);
18
- });
19
- if (token instanceof Error) {
20
- console.error(pc.red(token.message));
21
- process.exit(1);
22
- }
23
- if (!stdout) {
24
- console.error(pc.cyan('Generating...'));
25
- }
26
- const actualModel = resolveAntigravityModel(model);
27
- const projectCandidates = [
28
- process.env['ANTIGRAVITY_PROJECT_ID'],
29
- token.projectId,
30
- ...getGcloudProjectIds(),
31
- ].filter((value, index, array) => {
32
- return Boolean(value) && array.indexOf(value) === index;
33
- });
34
- const userParts = [{ text: prompt }];
35
- for (const image of inputImages) {
36
- userParts.push({
37
- inlineData: {
38
- mimeType: detectImageMimeType(image),
39
- data: Buffer.from(image).toString('base64'),
40
- },
41
- });
42
- }
43
- const baseRequest = {
44
- sessionId: `egaki-${crypto.randomUUID()}`,
45
- systemInstruction: {
46
- role: 'user',
47
- parts: [{ text: 'You are an AI image generator. Generate images based on user descriptions.' }],
48
- },
49
- contents: [
50
- {
51
- role: 'user',
52
- parts: userParts,
53
- },
54
- ],
55
- generationConfig: {
56
- candidateCount: count,
57
- imageConfig: {
58
- aspectRatio: aspectRatio || '1:1',
59
- },
60
- },
61
- safetySettings: [
62
- { category: 'HARM_CATEGORY_HARASSMENT', threshold: 'BLOCK_ONLY_HIGH' },
63
- { category: 'HARM_CATEGORY_HATE_SPEECH', threshold: 'BLOCK_ONLY_HIGH' },
64
- { category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', threshold: 'BLOCK_ONLY_HIGH' },
65
- { category: 'HARM_CATEGORY_DANGEROUS_CONTENT', threshold: 'BLOCK_ONLY_HIGH' },
66
- ],
67
- };
68
- const antigravityAttempts = projectCandidates.map((projectId) => {
69
- return {
70
- mode: `antigravity:${projectId}`,
71
- endpoints: [
72
- 'https://daily-cloudcode-pa.sandbox.googleapis.com',
73
- 'https://autopush-cloudcode-pa.sandbox.googleapis.com',
74
- 'https://cloudcode-pa.googleapis.com',
75
- ],
76
- payload: {
77
- project: projectId,
78
- model: actualModel,
79
- requestType: 'agent',
80
- userAgent: 'antigravity',
81
- requestId: `agent-${crypto.randomUUID()}`,
82
- request: baseRequest,
83
- },
84
- };
85
- });
86
- const attemptConfigs = antigravityAttempts;
87
- let lastError = 'Unknown Antigravity API error';
88
- let responseBody;
89
- let successfulProjectId;
90
- for (const attempt of attemptConfigs) {
91
- for (const endpoint of attempt.endpoints) {
92
- const response = await fetch(`${endpoint}/v1internal:generateContent`, {
93
- method: 'POST',
94
- headers: {
95
- Authorization: `Bearer ${token.accessToken}`,
96
- 'Content-Type': 'application/json',
97
- 'User-Agent': 'google-api-nodejs-client/9.15.1',
98
- 'X-Goog-Api-Client': 'gl-node/22.17.0',
99
- 'Client-Metadata': 'ideType=IDE_UNSPECIFIED,platform=PLATFORM_UNSPECIFIED,pluginType=GEMINI',
100
- },
101
- body: JSON.stringify(attempt.payload),
102
- });
103
- const text = await response.text();
104
- if (!response.ok) {
105
- lastError = formatAntigravityError({
106
- mode: attempt.mode,
107
- status: response.status,
108
- bodyText: text,
109
- });
110
- continue;
111
- }
112
- responseBody = JSON.parse(text);
113
- if (typeof attempt.payload.project === 'string' && attempt.payload.project.length > 0) {
114
- successfulProjectId = attempt.payload.project;
115
- }
116
- break;
117
- }
118
- if (responseBody) {
119
- break;
120
- }
121
- }
122
- if (!responseBody) {
123
- console.error(pc.red(lastError));
124
- process.exit(1);
125
- }
126
- if (successfulProjectId && successfulProjectId !== auth.projectId) {
127
- saveAntigravityAuth({ ...auth, projectId: successfulProjectId });
128
- }
129
- const generatedImages = extractAntigravityImages(responseBody);
130
- if (generatedImages.length === 0) {
131
- console.error(pc.red('No images generated by Antigravity response'));
132
- process.exit(1);
133
- }
134
- if (stdout) {
135
- process.stdout.write(generatedImages[0].bytes);
136
- return;
137
- }
138
- const savedFiles = [];
139
- for (let i = 0; i < generatedImages.length; i++) {
140
- const generated = generatedImages[i];
141
- const filePath = generatedImages.length === 1
142
- ? ensureExtension(outputPath, extensionFromMediaType(generated.mediaType))
143
- : insertIndex(outputPath, i, extensionFromMediaType(generated.mediaType));
144
- fs.writeFileSync(filePath, generated.bytes);
145
- console.error(pc.green(`Saved: ${filePath}`));
146
- savedFiles.push(filePath);
147
- }
148
- if (json) {
149
- console.log(JSON.stringify({
150
- model,
151
- files: savedFiles,
152
- count: savedFiles.length,
153
- provider: 'antigravity',
154
- projectId: token.projectId,
155
- }, null, 2));
156
- }
157
- }
158
- function resolveAntigravityModel(modelId) {
159
- if (modelId.startsWith('antigravity-')) {
160
- return modelId.slice('antigravity-'.length);
161
- }
162
- return modelId;
163
- }
164
- function getGcloudProjectIds() {
165
- try {
166
- const output = execFileSync('gcloud', ['projects', 'list', '--format=value(projectId)', '--limit=50'], {
167
- encoding: 'utf8',
168
- stdio: ['ignore', 'pipe', 'ignore'],
169
- });
170
- return output
171
- .split('\n')
172
- .map((line) => line.trim())
173
- .filter((line) => line.length > 0);
174
- }
175
- catch {
176
- return [];
177
- }
178
- }
179
- function detectImageMimeType(bytes) {
180
- if (bytes.length > 3 &&
181
- bytes[0] === 0x89 &&
182
- bytes[1] === 0x50 &&
183
- bytes[2] === 0x4e &&
184
- bytes[3] === 0x47) {
185
- return 'image/png';
186
- }
187
- if (bytes.length > 2 && bytes[0] === 0xff && bytes[1] === 0xd8) {
188
- return 'image/jpeg';
189
- }
190
- if (bytes.length > 12 &&
191
- bytes[0] === 0x52 &&
192
- bytes[1] === 0x49 &&
193
- bytes[2] === 0x46 &&
194
- bytes[3] === 0x46 &&
195
- bytes[8] === 0x57 &&
196
- bytes[9] === 0x45 &&
197
- bytes[10] === 0x42 &&
198
- bytes[11] === 0x50) {
199
- return 'image/webp';
200
- }
201
- return 'image/png';
202
- }
203
- function extractAntigravityImages(payload) {
204
- const root = payload && typeof payload === 'object' && 'response' in payload
205
- ? payload.response
206
- : payload;
207
- if (!root || typeof root !== 'object') {
208
- return [];
209
- }
210
- const candidates = root.candidates;
211
- if (!candidates || candidates.length === 0) {
212
- return [];
213
- }
214
- const images = [];
215
- for (const candidate of candidates) {
216
- for (const part of candidate.content?.parts || []) {
217
- const data = part.inlineData?.data;
218
- if (!data)
219
- continue;
220
- const mediaType = part.inlineData?.mimeType || 'image/png';
221
- images.push({
222
- bytes: new Uint8Array(Buffer.from(data, 'base64')),
223
- mediaType,
224
- });
225
- }
226
- }
227
- return images;
228
- }
229
- function formatAntigravityError({ mode, status, bodyText, }) {
230
- const payload = parseAntigravityErrorPayload(bodyText);
231
- const message = payload?.error?.message || bodyText;
232
- const metadata = payload?.error?.details?.find((detail) => detail.metadata)?.metadata;
233
- const links = payload?.error?.details
234
- ?.flatMap((detail) => detail.links || [])
235
- .filter((link) => Boolean(link?.url));
236
- const verificationUrl = metadata?.['validation_url']
237
- || links?.find((link) => /verify/i.test(link.description || ''))?.url;
238
- if (verificationUrl) {
239
- return [
240
- `${mode} API error ${status}: account verification required`,
241
- `Verify your Google account here: ${verificationUrl}`,
242
- `Backend message: ${message}`,
243
- ].join('\n');
244
- }
245
- const activationUrl = metadata?.['activationUrl']
246
- || metadata?.['activation_url']
247
- || links?.find((link) => /activation|console|api/i.test(link.description || ''))?.url;
248
- if (activationUrl) {
249
- return [
250
- `${mode} API error ${status}: API access not configured`,
251
- `Enable required API here: ${activationUrl}`,
252
- `Backend message: ${message}`,
253
- ].join('\n');
254
- }
255
- return `${mode} API error ${status}: ${message}`;
256
- }
257
- function parseAntigravityErrorPayload(bodyText) {
258
- try {
259
- return JSON.parse(bodyText);
260
- }
261
- catch {
262
- return null;
263
- }
264
- }
265
- function extensionFromMediaType(mediaType) {
266
- const map = {
267
- 'image/png': '.png',
268
- 'image/jpeg': '.jpg',
269
- 'image/webp': '.webp',
270
- 'image/gif': '.gif',
271
- };
272
- return map[mediaType] || '.png';
273
- }
274
- function ensureExtension(filePath, ext) {
275
- const parsed = path.parse(filePath);
276
- if (parsed.ext) {
277
- return filePath;
278
- }
279
- return filePath + ext;
280
- }
281
- function insertIndex(filePath, index, ext) {
282
- const parsed = path.parse(filePath);
283
- const finalExt = parsed.ext || ext;
284
- return path.join(parsed.dir, `${parsed.name}-${index}${finalExt}`);
285
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatgpt-auth.d.ts","sourceRoot":"","sources":["../src/chatgpt-auth.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAgGD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAOrE;AA8JD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA8C9D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAyBzF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACzC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAS9B"}
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}