opencode-nanobanana 0.1.1 → 0.2.1

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 (85) hide show
  1. package/dist/index.d.ts +1 -8
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +17 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/plugin.d.ts +4 -0
  6. package/dist/plugin.d.ts.map +1 -0
  7. package/dist/plugin.js +279 -0
  8. package/dist/plugin.js.map +1 -0
  9. package/dist/providers/gemini.d.ts +11 -0
  10. package/dist/providers/gemini.d.ts.map +1 -1
  11. package/dist/providers/gemini.js +30 -0
  12. package/dist/providers/gemini.js.map +1 -1
  13. package/package.json +3 -2
  14. package/dist/platforms/android.d.ts +0 -94
  15. package/dist/platforms/android.d.ts.map +0 -1
  16. package/dist/platforms/android.js +0 -123
  17. package/dist/platforms/android.js.map +0 -1
  18. package/dist/platforms/ios.d.ts +0 -51
  19. package/dist/platforms/ios.d.ts.map +0 -1
  20. package/dist/platforms/ios.js +0 -149
  21. package/dist/platforms/ios.js.map +0 -1
  22. package/dist/platforms/macos.d.ts +0 -33
  23. package/dist/platforms/macos.d.ts.map +0 -1
  24. package/dist/platforms/macos.js +0 -50
  25. package/dist/platforms/macos.js.map +0 -1
  26. package/dist/platforms/watchos.d.ts +0 -36
  27. package/dist/platforms/watchos.d.ts.map +0 -1
  28. package/dist/platforms/watchos.js +0 -113
  29. package/dist/platforms/watchos.js.map +0 -1
  30. package/dist/platforms/web.d.ts +0 -64
  31. package/dist/platforms/web.d.ts.map +0 -1
  32. package/dist/platforms/web.js +0 -96
  33. package/dist/platforms/web.js.map +0 -1
  34. package/dist/tools/analyze/compare.d.ts +0 -12
  35. package/dist/tools/analyze/compare.d.ts.map +0 -1
  36. package/dist/tools/analyze/compare.js +0 -83
  37. package/dist/tools/analyze/compare.js.map +0 -1
  38. package/dist/tools/analyze/mockup.d.ts +0 -12
  39. package/dist/tools/analyze/mockup.d.ts.map +0 -1
  40. package/dist/tools/analyze/mockup.js +0 -88
  41. package/dist/tools/analyze/mockup.js.map +0 -1
  42. package/dist/tools/analyze/screenshot.d.ts +0 -12
  43. package/dist/tools/analyze/screenshot.d.ts.map +0 -1
  44. package/dist/tools/analyze/screenshot.js +0 -61
  45. package/dist/tools/analyze/screenshot.js.map +0 -1
  46. package/dist/tools/app-assets/app-icon.d.ts +0 -9
  47. package/dist/tools/app-assets/app-icon.d.ts.map +0 -1
  48. package/dist/tools/app-assets/app-icon.js +0 -133
  49. package/dist/tools/app-assets/app-icon.js.map +0 -1
  50. package/dist/tools/app-assets/device-mockup.d.ts +0 -9
  51. package/dist/tools/app-assets/device-mockup.d.ts.map +0 -1
  52. package/dist/tools/app-assets/device-mockup.js +0 -139
  53. package/dist/tools/app-assets/device-mockup.js.map +0 -1
  54. package/dist/tools/app-assets/launch-images.d.ts +0 -3
  55. package/dist/tools/app-assets/launch-images.d.ts.map +0 -1
  56. package/dist/tools/app-assets/launch-images.js +0 -171
  57. package/dist/tools/app-assets/launch-images.js.map +0 -1
  58. package/dist/tools/app-assets/resize-devices.d.ts +0 -14
  59. package/dist/tools/app-assets/resize-devices.d.ts.map +0 -1
  60. package/dist/tools/app-assets/resize-devices.js +0 -296
  61. package/dist/tools/app-assets/resize-devices.js.map +0 -1
  62. package/dist/tools/app-assets/screenshots.d.ts +0 -14
  63. package/dist/tools/app-assets/screenshots.d.ts.map +0 -1
  64. package/dist/tools/app-assets/screenshots.js +0 -186
  65. package/dist/tools/app-assets/screenshots.js.map +0 -1
  66. package/dist/tools/core/edit-image.d.ts +0 -12
  67. package/dist/tools/core/edit-image.d.ts.map +0 -1
  68. package/dist/tools/core/edit-image.js +0 -102
  69. package/dist/tools/core/edit-image.js.map +0 -1
  70. package/dist/tools/core/generate-image.d.ts +0 -12
  71. package/dist/tools/core/generate-image.d.ts.map +0 -1
  72. package/dist/tools/core/generate-image.js +0 -96
  73. package/dist/tools/core/generate-image.js.map +0 -1
  74. package/dist/tools/core/restore-image.d.ts +0 -12
  75. package/dist/tools/core/restore-image.d.ts.map +0 -1
  76. package/dist/tools/core/restore-image.js +0 -104
  77. package/dist/tools/core/restore-image.js.map +0 -1
  78. package/dist/tools/design/mockup-to-code.d.ts +0 -3
  79. package/dist/tools/design/mockup-to-code.d.ts.map +0 -1
  80. package/dist/tools/design/mockup-to-code.js +0 -311
  81. package/dist/tools/design/mockup-to-code.js.map +0 -1
  82. package/dist/tools/design/sketch-to-code.d.ts +0 -3
  83. package/dist/tools/design/sketch-to-code.d.ts.map +0 -1
  84. package/dist/tools/design/sketch-to-code.js +0 -325
  85. package/dist/tools/design/sketch-to-code.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -7,12 +7,5 @@
7
7
  * - Design-to-code
8
8
  * - App asset pipelines (iOS, Android, macOS, Web)
9
9
  */
10
- export * from './providers/gemini.js';
11
- export * from './utils/file-handler.js';
12
- export * from './utils/image-processing.js';
13
- export * from './utils/ffmpeg.js';
14
- export * from './tools/video/generate-video.js';
15
- export * from './tools/video/image-to-video.js';
16
- export * from './tools/video/storyboard-video.js';
17
- export * from './tools/video/extend-video.js';
10
+ export { default } from './plugin.js';
18
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -7,15 +7,21 @@
7
7
  * - Design-to-code
8
8
  * - App asset pipelines (iOS, Android, macOS, Web)
9
9
  */
10
- // Re-export providers
11
- export * from './providers/gemini.js';
12
- // Re-export utilities
13
- export * from './utils/file-handler.js';
14
- export * from './utils/image-processing.js';
15
- export * from './utils/ffmpeg.js';
16
- // Re-export tools
17
- export * from './tools/video/generate-video.js';
18
- export * from './tools/video/image-to-video.js';
19
- export * from './tools/video/storyboard-video.js';
20
- export * from './tools/video/extend-video.js';
10
+ // WORKAROUND for OpenCode v1.1.23 plugin loader bug:
11
+ // OpenCode v1.1.23's plugin loader incorrectly tries to call ALL exported
12
+ // functions during plugin loading, causing errors. We can only export the
13
+ // plugin default export until this is fixed upstream.
14
+ // See: https://github.com/anomalyco/opencode/issues/[ISSUE_NUMBER]
15
+ //
16
+ // Original exports (for programmatic API usage - currently disabled):
17
+ // export * from './providers/gemini.js';
18
+ // export * from './utils/file-handler.js';
19
+ // export * from './utils/image-processing.js';
20
+ // export * from './utils/ffmpeg.js';
21
+ // export * from './tools/video/generate-video.js';
22
+ // export * from './tools/video/image-to-video.js';
23
+ // export * from './tools/video/storyboard-video.js';
24
+ // export * from './tools/video/extend-video.js';
25
+ // Only export plugin for OpenCode
26
+ export { default } from './plugin.js';
21
27
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,cAAc,uBAAuB,CAAC;AAEtC,sBAAsB;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qDAAqD;AACrD,0EAA0E;AAC1E,0EAA0E;AAC1E,sDAAsD;AACtD,mEAAmE;AACnE,EAAE;AACF,sEAAsE;AACtE,yCAAyC;AACzC,2CAA2C;AAC3C,+CAA+C;AAC/C,qCAAqC;AACrC,mDAAmD;AACnD,mDAAmD;AACnD,qDAAqD;AACrD,iDAAiD;AAEjD,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from '@opencode-ai/plugin';
2
+ declare const plugin: Plugin;
3
+ export default plugin;
4
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqBlD,QAAA,MAAM,MAAM,EAAE,MA+Rb,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/plugin.js ADDED
@@ -0,0 +1,279 @@
1
+ import { tool } from '@opencode-ai/plugin/tool';
2
+ import { GeminiProvider } from './providers/gemini.js';
3
+ import { generateVideo } from './tools/video/generate-video.js';
4
+ import { imageToVideo } from './tools/video/image-to-video.js';
5
+ import { generateStoryboardVideo } from './tools/video/storyboard-video.js';
6
+ import { extendVideo } from './tools/video/extend-video.js';
7
+ import { writeFile } from 'fs/promises';
8
+ import { join } from 'path';
9
+ import { tmpdir } from 'os';
10
+ function getApiKey() {
11
+ const apiKey = process.env.GEMINI_API_KEY;
12
+ if (!apiKey) {
13
+ throw new Error('GEMINI_API_KEY environment variable is required. ' +
14
+ 'Get one at https://aistudio.google.com/app/apikey');
15
+ }
16
+ return apiKey;
17
+ }
18
+ const plugin = async (_input) => {
19
+ return {
20
+ tool: {
21
+ generate_image: tool({
22
+ description: 'Generate an image from a text prompt using Google Imagen 3. ' +
23
+ 'Creates high-quality images for icons, illustrations, photos, art, and more. ' +
24
+ 'Supports various aspect ratios: 1:1 (square), 3:4, 4:3, 9:16 (portrait), 16:9 (landscape).',
25
+ args: {
26
+ prompt: tool.schema.string().describe('Description of the image to generate. Be specific about style, colors, composition, lighting. ' +
27
+ 'Example: "A modern app icon with gradient blue-purple colors, minimalist design, rounded corners"'),
28
+ aspectRatio: tool.schema
29
+ .enum(['1:1', '3:4', '4:3', '9:16', '16:9'])
30
+ .optional()
31
+ .describe('Aspect ratio for the image. Defaults to 1:1 (square)'),
32
+ outputPath: tool.schema
33
+ .string()
34
+ .optional()
35
+ .describe('Path where the image should be saved. If not provided, saves to temp directory'),
36
+ },
37
+ async execute(args, _context) {
38
+ try {
39
+ const apiKey = getApiKey();
40
+ const provider = new GeminiProvider(apiKey);
41
+ const result = await provider.generateImage(args.prompt, {
42
+ aspectRatio: args.aspectRatio,
43
+ count: 1,
44
+ });
45
+ const outputPath = args.outputPath || join(tmpdir(), `image-${Date.now()}.png`);
46
+ await writeFile(outputPath, result.buffer);
47
+ return JSON.stringify({
48
+ success: true,
49
+ imagePath: outputPath,
50
+ mimeType: result.mimeType,
51
+ generationTime: `${(result.generationTime / 1000).toFixed(1)}s`,
52
+ });
53
+ }
54
+ catch (error) {
55
+ const err = error;
56
+ const errorMessage = err?.message || String(error);
57
+ const errorCode = err?.code || err?.status || 'UNKNOWN';
58
+ return JSON.stringify({
59
+ success: false,
60
+ error: errorMessage,
61
+ errorCode,
62
+ help: errorMessage.includes('API key') || errorMessage.includes('403') || errorMessage.includes('PERMISSION_DENIED')
63
+ ? 'Please check your GEMINI_API_KEY environment variable. Get a new key at https://aistudio.google.com/app/apikey'
64
+ : 'Image generation failed. Check the error message for details.',
65
+ });
66
+ }
67
+ },
68
+ }),
69
+ generate_video: tool({
70
+ description: 'Generate a video from a text prompt using Google Veo 3. ' +
71
+ 'Creates high-quality video content with native audio generation. ' +
72
+ 'Supports aspect ratios 16:9 (landscape) and 9:16 (portrait), resolutions 720p/1080p. ' +
73
+ 'Duration: 4, 6, or 8 seconds.',
74
+ args: {
75
+ prompt: tool.schema.string().describe('Description of the video to generate. Be specific about action, scene, lighting, mood. ' +
76
+ 'Example: "A serene mountain landscape at sunrise with fog rolling through the valley"'),
77
+ aspectRatio: tool.schema
78
+ .enum(['16:9', '9:16'])
79
+ .optional()
80
+ .describe('Aspect ratio. Defaults to 16:9 (landscape)'),
81
+ resolution: tool.schema
82
+ .enum(['720p', '1080p'])
83
+ .optional()
84
+ .describe('Video resolution. Defaults to 720p'),
85
+ duration: tool.schema
86
+ .enum(['4', '6', '8'])
87
+ .optional()
88
+ .describe('Duration in seconds. Defaults to 8'),
89
+ outputPath: tool.schema
90
+ .string()
91
+ .optional()
92
+ .describe('Path where the video should be saved'),
93
+ },
94
+ async execute(args, _context) {
95
+ try {
96
+ const apiKey = getApiKey();
97
+ const result = await generateVideo({
98
+ apiKey,
99
+ prompt: args.prompt,
100
+ aspectRatio: args.aspectRatio,
101
+ resolution: args.resolution,
102
+ duration: args.duration ? parseInt(args.duration, 10) : undefined,
103
+ outputPath: args.outputPath,
104
+ });
105
+ return JSON.stringify({
106
+ success: true,
107
+ videoPath: result.videoPath,
108
+ generationTime: `${(result.generationTime / 1000).toFixed(1)}s`,
109
+ });
110
+ }
111
+ catch (error) {
112
+ const err = error;
113
+ const errorMessage = err?.message || String(error);
114
+ const errorCode = err?.code || err?.status || 'UNKNOWN';
115
+ return JSON.stringify({
116
+ success: false,
117
+ error: errorMessage,
118
+ errorCode,
119
+ help: errorMessage.includes('API key') || errorMessage.includes('403') || errorMessage.includes('PERMISSION_DENIED')
120
+ ? 'Please check your GEMINI_API_KEY environment variable'
121
+ : 'Video generation failed.',
122
+ });
123
+ }
124
+ },
125
+ }),
126
+ image_to_video: tool({
127
+ description: 'Animate a static image into a video using Google Veo 3. ' +
128
+ 'Brings images to life with motion and audio. ' +
129
+ 'Great for animating photos, product images, logos, or artwork.',
130
+ args: {
131
+ imagePath: tool.schema.string().describe('Path to the image file to animate'),
132
+ prompt: tool.schema.string().describe('Description of the animation. Example: "Slow camera pan from left to right" or "Product rotates 360 degrees"'),
133
+ aspectRatio: tool.schema.enum(['16:9', '9:16']).optional().describe('Aspect ratio. Defaults to 16:9'),
134
+ resolution: tool.schema.enum(['720p', '1080p']).optional().describe('Resolution. Defaults to 720p'),
135
+ duration: tool.schema.enum(['4', '6', '8']).optional().describe('Duration in seconds. Defaults to 8'),
136
+ outputPath: tool.schema.string().optional().describe('Path where the video should be saved'),
137
+ },
138
+ async execute(args, _context) {
139
+ try {
140
+ const apiKey = getApiKey();
141
+ const result = await imageToVideo({
142
+ apiKey,
143
+ imagePath: args.imagePath,
144
+ prompt: args.prompt,
145
+ aspectRatio: args.aspectRatio,
146
+ resolution: args.resolution,
147
+ duration: args.duration ? parseInt(args.duration, 10) : undefined,
148
+ outputPath: args.outputPath,
149
+ });
150
+ return JSON.stringify({
151
+ success: true,
152
+ videoPath: result.videoPath,
153
+ generationTime: `${(result.generationTime / 1000).toFixed(1)}s`,
154
+ });
155
+ }
156
+ catch (error) {
157
+ const err = error;
158
+ const errorMessage = err?.message || String(error);
159
+ const errorCode = err?.code || err?.status || 'UNKNOWN';
160
+ return JSON.stringify({
161
+ success: false,
162
+ error: errorMessage,
163
+ errorCode,
164
+ help: errorMessage.includes('API key') || errorMessage.includes('403') || errorMessage.includes('PERMISSION_DENIED')
165
+ ? 'Please check your GEMINI_API_KEY environment variable'
166
+ : 'Image to video conversion failed.',
167
+ });
168
+ }
169
+ },
170
+ }),
171
+ generate_storyboard_video: tool({
172
+ description: 'Generate a multi-scene storyboard video. Creates individual scenes and stitches them with transitions. ' +
173
+ 'Perfect for commercials, narratives, product demos. Supports character consistency. Requires FFmpeg.',
174
+ args: {
175
+ scenes: tool.schema
176
+ .array(tool.schema.string())
177
+ .describe('Array of scene descriptions. Example: ["Coffee shop morning", "Barista making latte", "Customer enjoying coffee"]'),
178
+ style: tool.schema.string().optional().describe('Visual style for all scenes. Examples: "cinematic", "commercial"'),
179
+ characterDescription: tool.schema
180
+ .string()
181
+ .optional()
182
+ .describe('Main character description for consistency. Example: "Young woman with brown hair in red jacket"'),
183
+ referenceImages: tool.schema.array(tool.schema.string()).optional().describe('Paths to reference images (max 3)'),
184
+ aspectRatio: tool.schema.enum(['16:9', '9:16']).optional().describe('Aspect ratio. Defaults to 16:9'),
185
+ transition: tool.schema.enum(['cut', 'crossfade', 'fade']).optional().describe('Transition type. Defaults to crossfade'),
186
+ transitionDuration: tool.schema.number().optional().describe('Transition duration in seconds. Defaults to 0.5'),
187
+ backgroundMusic: tool.schema.string().optional().describe('Path to background music audio file'),
188
+ musicVolume: tool.schema.number().optional().describe('Background music volume (0.0-1.0). Defaults to 0.3'),
189
+ outputPath: tool.schema.string().optional().describe('Path where the final video should be saved'),
190
+ },
191
+ async execute(args, _context) {
192
+ try {
193
+ const apiKey = getApiKey();
194
+ const result = await generateStoryboardVideo({
195
+ apiKey,
196
+ scenes: args.scenes,
197
+ style: args.style,
198
+ characterDescription: args.characterDescription,
199
+ referenceImages: args.referenceImages,
200
+ aspectRatio: args.aspectRatio,
201
+ transition: args.transition,
202
+ transitionDuration: args.transitionDuration,
203
+ backgroundMusic: args.backgroundMusic,
204
+ musicVolume: args.musicVolume,
205
+ outputPath: args.outputPath,
206
+ });
207
+ return JSON.stringify({
208
+ success: true,
209
+ videoPath: result.videoPath,
210
+ totalTime: `${(result.totalTime / 1000).toFixed(1)}s`,
211
+ scenesGenerated: result.successCount,
212
+ scenesFailed: result.failureCount,
213
+ });
214
+ }
215
+ catch (error) {
216
+ const err = error;
217
+ const errorMessage = err?.message || String(error);
218
+ const errorCode = err?.code || err?.status || 'UNKNOWN';
219
+ return JSON.stringify({
220
+ success: false,
221
+ error: errorMessage,
222
+ errorCode,
223
+ help: errorMessage.includes('ffmpeg')
224
+ ? 'FFmpeg is required. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux)'
225
+ : errorMessage.includes('API key') || errorMessage.includes('403')
226
+ ? 'Please check your GEMINI_API_KEY environment variable'
227
+ : 'Storyboard generation failed.',
228
+ });
229
+ }
230
+ },
231
+ }),
232
+ extend_video: tool({
233
+ description: 'Extend an existing video with new AI-generated content using Veo 3. ' +
234
+ 'Seamlessly continues the video matching the original style. ' +
235
+ 'Useful for adding scenes or continuing narratives.',
236
+ args: {
237
+ videoPath: tool.schema.string().describe('Path to the existing video to extend'),
238
+ prompt: tool.schema.string().describe('Description of the extension. Example: "Camera pans to reveal a stunning sunset"'),
239
+ aspectRatio: tool.schema.enum(['16:9', '9:16']).optional().describe('Aspect ratio. Defaults to 16:9'),
240
+ resolution: tool.schema.enum(['720p', '1080p']).optional().describe('Resolution. Defaults to 720p'),
241
+ outputPath: tool.schema.string().optional().describe('Path where the extended video should be saved'),
242
+ },
243
+ async execute(args, _context) {
244
+ try {
245
+ const apiKey = getApiKey();
246
+ const result = await extendVideo({
247
+ apiKey,
248
+ videoPath: args.videoPath,
249
+ prompt: args.prompt,
250
+ aspectRatio: args.aspectRatio,
251
+ resolution: args.resolution,
252
+ outputPath: args.outputPath,
253
+ });
254
+ return JSON.stringify({
255
+ success: true,
256
+ videoPath: result.videoPath,
257
+ generationTime: `${(result.generationTime / 1000).toFixed(1)}s`,
258
+ });
259
+ }
260
+ catch (error) {
261
+ const err = error;
262
+ const errorMessage = err?.message || String(error);
263
+ const errorCode = err?.code || err?.status || 'UNKNOWN';
264
+ return JSON.stringify({
265
+ success: false,
266
+ error: errorMessage,
267
+ errorCode,
268
+ help: errorMessage.includes('API key') || errorMessage.includes('403')
269
+ ? 'Please check your GEMINI_API_KEY environment variable'
270
+ : 'Video extension failed.',
271
+ });
272
+ }
273
+ },
274
+ }),
275
+ },
276
+ };
277
+ };
278
+ export default plugin;
279
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,15 @@ export interface VideoGenerationOptions {
5
5
  numberOfVideos?: number;
6
6
  negativePrompt?: string;
7
7
  }
8
+ export interface ImageGenerationOptions {
9
+ aspectRatio?: '1:1' | '3:4' | '4:3' | '9:16' | '16:9';
10
+ count?: number;
11
+ }
12
+ export interface ImageGenerationResult {
13
+ buffer: Buffer;
14
+ mimeType: string;
15
+ generationTime: number;
16
+ }
8
17
  export interface ImageAnimationOptions {
9
18
  aspectRatio?: '16:9' | '9:16';
10
19
  resolution?: '720p' | '1080p';
@@ -28,8 +37,10 @@ export declare class GeminiProvider {
28
37
  private apiKey;
29
38
  private readonly VEO_MODEL;
30
39
  private readonly VEO_PREVIEW_MODEL;
40
+ private readonly NANO_BANANA_MODEL;
31
41
  private readonly POLL_INTERVAL_MS;
32
42
  constructor(apiKey: string);
43
+ generateImage(prompt: string, options?: ImageGenerationOptions): Promise<ImageGenerationResult>;
33
44
  generateVideo(prompt: string, options?: VideoGenerationOptions): Promise<VideoGenerationResult>;
34
45
  animateImage(imageBuffer: Buffer, prompt: string, options?: ImageAnimationOptions): Promise<VideoGenerationResult>;
35
46
  extendVideo(videoBuffer: Buffer, prompt: string, options?: VideoExtensionOptions): Promise<VideoGenerationResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,MAAM;IAKpB,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;IA0C3B,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,qBAAqB,CAAC;IA8C3B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,qBAAqB,CAAC;IA2C3B,2BAA2B,CAC/B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,cAAc,EAAE,EACjC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;YAqDnB,aAAa;YAab,aAAa;IAgB3B,OAAO,CAAC,mBAAmB;CAe5B"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,MAAM;IAKpB,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;IAmC3B,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;IA0C3B,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,qBAAqB,CAAC;IA8C3B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,qBAAqB,CAAC;IA2C3B,2BAA2B,CAC/B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,cAAc,EAAE,EACjC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;YAqDnB,aAAa;YAab,aAAa;IAgB3B,OAAO,CAAC,mBAAmB;CAe5B"}
@@ -4,11 +4,41 @@ export class GeminiProvider {
4
4
  apiKey;
5
5
  VEO_MODEL = 'veo-3.0-generate-001';
6
6
  VEO_PREVIEW_MODEL = 'veo-3.1-generate-preview';
7
+ NANO_BANANA_MODEL = 'gemini-2.0-flash-exp';
7
8
  POLL_INTERVAL_MS = 10000;
8
9
  constructor(apiKey) {
9
10
  this.apiKey = apiKey;
10
11
  this.ai = new GoogleGenAI({ apiKey });
11
12
  }
13
+ async generateImage(prompt, options = {}) {
14
+ const startTime = Date.now();
15
+ const { count = 1 } = options;
16
+ if (count < 1 || count > 4) {
17
+ throw new Error('Count must be between 1 and 4');
18
+ }
19
+ const response = await this.ai.models.generateContent({
20
+ model: this.NANO_BANANA_MODEL,
21
+ contents: prompt,
22
+ config: {
23
+ responseModalities: ['image', 'text'],
24
+ },
25
+ });
26
+ if (!response.candidates?.[0]?.content?.parts) {
27
+ throw new Error('No image was generated');
28
+ }
29
+ for (const part of response.candidates[0].content.parts) {
30
+ if (part.inlineData?.data) {
31
+ const buffer = Buffer.from(part.inlineData.data, 'base64');
32
+ const generationTime = Date.now() - startTime;
33
+ return {
34
+ buffer,
35
+ mimeType: part.inlineData.mimeType || 'image/png',
36
+ generationTime,
37
+ };
38
+ }
39
+ }
40
+ throw new Error('No image data in response');
41
+ }
12
42
  async generateVideo(prompt, options = {}) {
13
43
  const startTime = Date.now();
14
44
  const { aspectRatio = '16:9', resolution = '720p', duration = 8, numberOfVideos = 1, negativePrompt, } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "opencode-nanobanana",
3
- "version": "0.1.1",
4
- "description": "OpenCode plugin for visual AI: video generation (Veo 3), image generation (Imagen 3), storyboards, app icons, and visual analysis powered by Google Gemini",
3
+ "version": "0.2.1",
4
+ "description": "OpenCode plugin for visual AI: FREE image generation (Nano Banana / Gemini Flash), video generation (Veo 3), storyboards powered by Google Gemini",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -50,6 +50,7 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@google/genai": "^1.36.0",
53
+ "@opencode-ai/plugin": "1.1.20",
53
54
  "sharp": "^0.33.0",
54
55
  "zod": "^3.22.0"
55
56
  },
@@ -1,94 +0,0 @@
1
- /**
2
- * Android Platform Module
3
- *
4
- * Provides Android-specific asset specifications including:
5
- * - Icon sizes for all density buckets (mdpi through xxxhdpi)
6
- * - Screenshot sizes for phones and tablets
7
- * - Adaptive icon XML generation
8
- * - Density path helpers
9
- */
10
- export interface AndroidDensity {
11
- name: string;
12
- scale: number;
13
- iconSize: number;
14
- directory: string;
15
- }
16
- export interface AndroidIconSize {
17
- density: string;
18
- size: number;
19
- directory: string;
20
- filename: string;
21
- }
22
- export interface AndroidScreenshotSize {
23
- device: string;
24
- width: number;
25
- height: number;
26
- description: string;
27
- }
28
- /**
29
- * Android density buckets with their scale factors
30
- * Based on Android's density-independent pixel (dp) system
31
- */
32
- export declare const ANDROID_DENSITIES: AndroidDensity[];
33
- /**
34
- * Complete Android icon size specifications
35
- * Covers all density buckets for launcher icons
36
- */
37
- export declare const ANDROID_ICON_SIZES: AndroidIconSize[];
38
- /**
39
- * Android screenshot sizes for Google Play Store
40
- * Based on common device resolutions and aspect ratios
41
- */
42
- export declare const ANDROID_SCREENSHOT_SIZES: AndroidScreenshotSize[];
43
- /**
44
- * Generates adaptive icon XML content for Android
45
- * Adaptive icons consist of foreground and background layers
46
- *
47
- * @param foregroundPath - Path to foreground drawable (default: @mipmap/ic_launcher_foreground)
48
- * @param backgroundPath - Path to background drawable (default: @mipmap/ic_launcher_background)
49
- * @returns Valid ic_launcher.xml content for res/mipmap-anydpi-v26/
50
- */
51
- export declare function generateAdaptiveIconXml(foregroundPath?: string, backgroundPath?: string): string;
52
- /**
53
- * Generates adaptive icon XML with monochrome layer (Android 13+)
54
- * Includes monochrome layer for themed icons
55
- *
56
- * @param foregroundPath - Path to foreground drawable
57
- * @param backgroundPath - Path to background drawable
58
- * @param monochromePath - Path to monochrome drawable (default: @mipmap/ic_launcher_foreground)
59
- * @returns Valid ic_launcher.xml content with monochrome support
60
- */
61
- export declare function generateAdaptiveIconXmlWithMonochrome(foregroundPath?: string, backgroundPath?: string, monochromePath?: string): string;
62
- /**
63
- * Gets the mipmap directory path for a given density
64
- *
65
- * @param density - Density name (e.g., 'mdpi', 'hdpi', 'xhdpi')
66
- * @returns Directory path in format 'mipmap-{density}'
67
- */
68
- export declare function getDensityPath(density: string): string;
69
- /**
70
- * Gets icon size in pixels for a given density
71
- *
72
- * @param density - Density name
73
- * @returns Icon size in pixels, or null if density not found
74
- */
75
- export declare function getIconSizeForDensity(density: string): number | null;
76
- /**
77
- * Calculates the pixel size for a given dp value at a specific density
78
- *
79
- * @param dp - Value in density-independent pixels
80
- * @param density - Density name
81
- * @returns Pixel size, or null if density not found
82
- */
83
- export declare function dpToPixels(dp: number, density: string): number | null;
84
- /**
85
- * Android adaptive icon specifications
86
- * Defines the safe zone and dimensions for foreground/background layers
87
- */
88
- export declare const ADAPTIVE_ICON_SPECS: {
89
- fullSize: number;
90
- visibleSize: number;
91
- safeZone: number;
92
- maskPadding: number;
93
- };
94
- //# sourceMappingURL=android.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../src/platforms/android.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAAc,EAM7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAK7C,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,qBAAqB,EAkB3D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,GAAE,MAAyC,EACzD,cAAc,GAAE,MAAyC,GACxD,MAAM,CAMR;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,cAAc,GAAE,MAAyC,EACzD,cAAc,GAAE,MAAyC,EACzD,cAAc,GAAE,MAAyC,GACxD,MAAM,CAOR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC"}