gobananas-cli 1.0.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 (103) hide show
  1. package/bin/gobananas-mcp.js +10 -0
  2. package/bin/gobananas.js +8 -0
  3. package/dist/commands/account.d.ts +8 -0
  4. package/dist/commands/account.d.ts.map +1 -0
  5. package/dist/commands/account.js +200 -0
  6. package/dist/commands/account.js.map +1 -0
  7. package/dist/commands/character.d.ts +8 -0
  8. package/dist/commands/character.d.ts.map +1 -0
  9. package/dist/commands/character.js +493 -0
  10. package/dist/commands/character.js.map +1 -0
  11. package/dist/commands/config.d.ts +8 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +232 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/edit.d.ts +19 -0
  16. package/dist/commands/edit.d.ts.map +1 -0
  17. package/dist/commands/edit.js +279 -0
  18. package/dist/commands/edit.js.map +1 -0
  19. package/dist/commands/generate.d.ts +8 -0
  20. package/dist/commands/generate.d.ts.map +1 -0
  21. package/dist/commands/generate.js +177 -0
  22. package/dist/commands/generate.js.map +1 -0
  23. package/dist/commands/image.d.ts +8 -0
  24. package/dist/commands/image.d.ts.map +1 -0
  25. package/dist/commands/image.js +212 -0
  26. package/dist/commands/image.js.map +1 -0
  27. package/dist/commands/index.d.ts +19 -0
  28. package/dist/commands/index.d.ts.map +1 -0
  29. package/dist/commands/index.js +19 -0
  30. package/dist/commands/index.js.map +1 -0
  31. package/dist/commands/mcp-help.d.ts +8 -0
  32. package/dist/commands/mcp-help.d.ts.map +1 -0
  33. package/dist/commands/mcp-help.js +264 -0
  34. package/dist/commands/mcp-help.js.map +1 -0
  35. package/dist/commands/mcp.d.ts +9 -0
  36. package/dist/commands/mcp.d.ts.map +1 -0
  37. package/dist/commands/mcp.js +25 -0
  38. package/dist/commands/mcp.js.map +1 -0
  39. package/dist/commands/product.d.ts +8 -0
  40. package/dist/commands/product.d.ts.map +1 -0
  41. package/dist/commands/product.js +316 -0
  42. package/dist/commands/product.js.map +1 -0
  43. package/dist/commands/scene.d.ts +8 -0
  44. package/dist/commands/scene.d.ts.map +1 -0
  45. package/dist/commands/scene.js +448 -0
  46. package/dist/commands/scene.js.map +1 -0
  47. package/dist/commands/search.d.ts +8 -0
  48. package/dist/commands/search.d.ts.map +1 -0
  49. package/dist/commands/search.js +123 -0
  50. package/dist/commands/search.js.map +1 -0
  51. package/dist/commands/session.d.ts +8 -0
  52. package/dist/commands/session.d.ts.map +1 -0
  53. package/dist/commands/session.js +167 -0
  54. package/dist/commands/session.js.map +1 -0
  55. package/dist/commands/style.d.ts +8 -0
  56. package/dist/commands/style.d.ts.map +1 -0
  57. package/dist/commands/style.js +297 -0
  58. package/dist/commands/style.js.map +1 -0
  59. package/dist/commands/usage.d.ts +8 -0
  60. package/dist/commands/usage.d.ts.map +1 -0
  61. package/dist/commands/usage.js +144 -0
  62. package/dist/commands/usage.js.map +1 -0
  63. package/dist/config/config.d.ts +65 -0
  64. package/dist/config/config.d.ts.map +1 -0
  65. package/dist/config/config.js +156 -0
  66. package/dist/config/config.js.map +1 -0
  67. package/dist/index.d.ts +22 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +130 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/mcp/stdio-proxy.d.ts +8 -0
  72. package/dist/mcp/stdio-proxy.d.ts.map +1 -0
  73. package/dist/mcp/stdio-proxy.js +297 -0
  74. package/dist/mcp/stdio-proxy.js.map +1 -0
  75. package/dist/mcp-stdio.d.ts +3 -0
  76. package/dist/mcp-stdio.d.ts.map +1 -0
  77. package/dist/mcp-stdio.js +8 -0
  78. package/dist/mcp-stdio.js.map +1 -0
  79. package/dist/transport/index.d.ts +29 -0
  80. package/dist/transport/index.d.ts.map +1 -0
  81. package/dist/transport/index.js +72 -0
  82. package/dist/transport/index.js.map +1 -0
  83. package/dist/transport/mcp-client.d.ts +342 -0
  84. package/dist/transport/mcp-client.d.ts.map +1 -0
  85. package/dist/transport/mcp-client.js +478 -0
  86. package/dist/transport/mcp-client.js.map +1 -0
  87. package/dist/transport/rest-client.d.ts +297 -0
  88. package/dist/transport/rest-client.d.ts.map +1 -0
  89. package/dist/transport/rest-client.js +461 -0
  90. package/dist/transport/rest-client.js.map +1 -0
  91. package/dist/types/responses.d.ts +230 -0
  92. package/dist/types/responses.d.ts.map +1 -0
  93. package/dist/types/responses.js +46 -0
  94. package/dist/types/responses.js.map +1 -0
  95. package/dist/utils/file-handler.d.ts +51 -0
  96. package/dist/utils/file-handler.d.ts.map +1 -0
  97. package/dist/utils/file-handler.js +189 -0
  98. package/dist/utils/file-handler.js.map +1 -0
  99. package/dist/utils/output.d.ts +111 -0
  100. package/dist/utils/output.d.ts.map +1 -0
  101. package/dist/utils/output.js +240 -0
  102. package/dist/utils/output.js.map +1 -0
  103. package/package.json +54 -0
@@ -0,0 +1,478 @@
1
+ /**
2
+ * MCP Client for Go Bananas
3
+ *
4
+ * Provides direct MCP protocol communication with the Go Bananas server.
5
+ * Uses SSE transport for real-time communication.
6
+ */
7
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
8
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
9
+ import { getConfig } from '../config/config.js';
10
+ export class McpClient {
11
+ client = null;
12
+ transport = null;
13
+ baseUrl;
14
+ apiKey;
15
+ connected = false;
16
+ constructor(baseUrl, apiKey) {
17
+ const config = getConfig();
18
+ this.baseUrl = baseUrl || config.serverUrl;
19
+ this.apiKey = apiKey || config.apiKey;
20
+ }
21
+ /**
22
+ * Connect to the MCP server via SSE
23
+ */
24
+ async connect() {
25
+ if (this.connected && this.client) {
26
+ return;
27
+ }
28
+ const sseUrl = `${this.baseUrl}/sse`;
29
+ // Create transport with headers
30
+ this.transport = new SSEClientTransport(new URL(sseUrl), {
31
+ requestInit: {
32
+ headers: {
33
+ 'X-API-Key': this.apiKey,
34
+ },
35
+ },
36
+ });
37
+ this.client = new Client({
38
+ name: 'gobananas-cli',
39
+ version: '1.0.0',
40
+ }, {
41
+ capabilities: {},
42
+ });
43
+ await this.client.connect(this.transport);
44
+ this.connected = true;
45
+ }
46
+ /**
47
+ * Disconnect from the MCP server
48
+ */
49
+ async disconnect() {
50
+ if (this.transport) {
51
+ await this.transport.close();
52
+ this.transport = null;
53
+ }
54
+ this.client = null;
55
+ this.connected = false;
56
+ }
57
+ /**
58
+ * Check if connected
59
+ */
60
+ isConnected() {
61
+ return this.connected && this.client !== null;
62
+ }
63
+ /**
64
+ * Call an MCP tool
65
+ */
66
+ async callTool(name, args) {
67
+ if (!this.client) {
68
+ throw new Error('Not connected to MCP server');
69
+ }
70
+ const result = await this.client.callTool({ name, arguments: args });
71
+ return result;
72
+ }
73
+ /**
74
+ * List available tools
75
+ */
76
+ async listTools() {
77
+ if (!this.client) {
78
+ throw new Error('Not connected to MCP server');
79
+ }
80
+ const result = await this.client.listTools();
81
+ return result.tools.map((tool) => ({
82
+ name: tool.name,
83
+ description: tool.description,
84
+ }));
85
+ }
86
+ // =====================================
87
+ // IMAGE GENERATION & EDITING
88
+ // =====================================
89
+ /**
90
+ * Generate a new image
91
+ */
92
+ async generateImage(params) {
93
+ return this.callTool('generate_image', {
94
+ prompt: params.prompt,
95
+ n: params.n,
96
+ negative_prompt: params.negativePrompt,
97
+ system_instruction: params.systemInstruction,
98
+ aspect_ratio: params.aspectRatio,
99
+ reference_images: params.referenceImages,
100
+ scene_id: params.sceneId,
101
+ scene_ids: params.sceneIds,
102
+ scene_name: params.sceneName,
103
+ model_id: params.modelId,
104
+ style_preset_name: params.stylePresetName,
105
+ style_preset_id: params.stylePresetId,
106
+ });
107
+ }
108
+ /**
109
+ * Edit an image by ID
110
+ */
111
+ async editImage(params) {
112
+ return this.callTool('edit_image', {
113
+ image_id: params.imageId,
114
+ prompt: params.prompt,
115
+ negative_prompt: params.negativePrompt,
116
+ aspect_ratio: params.aspectRatio,
117
+ });
118
+ }
119
+ /**
120
+ * Continue editing the last image
121
+ */
122
+ async continueEditing(params) {
123
+ return this.callTool('continue_editing', {
124
+ prompt: params.prompt,
125
+ negative_prompt: params.negativePrompt,
126
+ aspect_ratio: params.aspectRatio,
127
+ });
128
+ }
129
+ /**
130
+ * Upload image for editing
131
+ */
132
+ async uploadImageForEditing(params) {
133
+ return this.callTool('upload_image_for_editing', {
134
+ image_url: params.imageUrl,
135
+ file_name: params.fileName,
136
+ mime_type: params.mimeType,
137
+ });
138
+ }
139
+ /**
140
+ * Edit uploaded image
141
+ */
142
+ async editUploadedImage(params) {
143
+ return this.callTool('edit_uploaded_image', {
144
+ image_id: params.imageId,
145
+ edit_prompt: params.editPrompt,
146
+ negative_prompt: params.negativePrompt,
147
+ aspect_ratio: params.aspectRatio,
148
+ });
149
+ }
150
+ /**
151
+ * Get image info
152
+ */
153
+ async getImageInfo(imageId) {
154
+ return this.callTool('get_image_info', { image_id: imageId });
155
+ }
156
+ /**
157
+ * Get session history
158
+ */
159
+ async getSessionHistory(params) {
160
+ return this.callTool('get_session_history', {
161
+ limit: params?.limit,
162
+ offset: params?.offset,
163
+ });
164
+ }
165
+ /**
166
+ * Search images
167
+ */
168
+ async searchImages(params) {
169
+ return this.callTool('search_images', {
170
+ limit: params?.limit,
171
+ offset: params?.offset,
172
+ sort_order: params?.sortOrder,
173
+ filters: params?.filters,
174
+ });
175
+ }
176
+ // =====================================
177
+ // CHARACTERS
178
+ // =====================================
179
+ /**
180
+ * Create a character
181
+ */
182
+ async createCharacter(params) {
183
+ return this.callTool('create_character', {
184
+ character_name: params.characterName,
185
+ description: params.description,
186
+ base_prompt: params.basePrompt,
187
+ negative_prompt: params.negativePrompt,
188
+ system_instruction: params.systemInstruction,
189
+ reference_image_ids: params.referenceImageIds,
190
+ preferred_aspect_ratio: params.preferredAspectRatio,
191
+ tags: params.tags,
192
+ });
193
+ }
194
+ /**
195
+ * Update a character
196
+ */
197
+ async updateCharacter(params) {
198
+ return this.callTool('update_character', {
199
+ character_id: params.characterId,
200
+ character_name: params.characterName,
201
+ new_character_name: params.newCharacterName,
202
+ description: params.description,
203
+ base_prompt: params.basePrompt,
204
+ negative_prompt: params.negativePrompt,
205
+ system_instruction: params.systemInstruction,
206
+ reference_image_ids: params.referenceImageIds,
207
+ preferred_aspect_ratio: params.preferredAspectRatio,
208
+ tags: params.tags,
209
+ });
210
+ }
211
+ /**
212
+ * Delete a character
213
+ */
214
+ async deleteCharacter(params) {
215
+ return this.callTool('delete_character', {
216
+ character_id: params.characterId,
217
+ character_name: params.characterName,
218
+ });
219
+ }
220
+ /**
221
+ * List characters
222
+ */
223
+ async listCharacters(params) {
224
+ return this.callTool('list_characters', {
225
+ search: params?.search,
226
+ limit: params?.limit,
227
+ offset: params?.offset,
228
+ sort_by: params?.sortBy,
229
+ });
230
+ }
231
+ /**
232
+ * Get character details
233
+ */
234
+ async getCharacter(params) {
235
+ return this.callTool('get_character', {
236
+ character_id: params.characterId,
237
+ character_name: params.characterName,
238
+ });
239
+ }
240
+ /**
241
+ * Generate with character
242
+ */
243
+ async generateWithCharacter(params) {
244
+ return this.callTool('generate_with_character', {
245
+ character_id: params.characterId,
246
+ character_name: params.characterName,
247
+ scene_prompt: params.scenePrompt,
248
+ additional_details: params.additionalDetails,
249
+ aspect_ratio: params.aspectRatio,
250
+ override_negative_prompt: params.overrideNegativePrompt,
251
+ });
252
+ }
253
+ /**
254
+ * Generate with multiple characters
255
+ */
256
+ async generateWithMultipleCharacters(params) {
257
+ return this.callTool('generate_with_multiple_characters', {
258
+ character_ids: params.characterIds,
259
+ character_names: params.characterNames,
260
+ scene_prompt: params.scenePrompt,
261
+ additional_details: params.additionalDetails,
262
+ aspect_ratio: params.aspectRatio,
263
+ });
264
+ }
265
+ // =====================================
266
+ // PRODUCTS
267
+ // =====================================
268
+ /**
269
+ * Create a product reference
270
+ */
271
+ async createProductReference(params) {
272
+ return this.callTool('create_product_reference', {
273
+ product_name: params.productName,
274
+ product_url: params.productUrl,
275
+ product_description: params.productDescription,
276
+ tags: params.tags,
277
+ });
278
+ }
279
+ /**
280
+ * List product references
281
+ */
282
+ async listProductReferences(params) {
283
+ return this.callTool('list_product_references', {
284
+ page: params?.page,
285
+ page_size: params?.pageSize,
286
+ search: params?.search,
287
+ });
288
+ }
289
+ /**
290
+ * Get product reference details
291
+ */
292
+ async getProductReference(params) {
293
+ return this.callTool('get_product_reference', {
294
+ id: params.id,
295
+ product_name: params.productName,
296
+ });
297
+ }
298
+ /**
299
+ * Delete a product reference
300
+ */
301
+ async deleteProductReference(params) {
302
+ return this.callTool('delete_product_reference', {
303
+ id: params.id,
304
+ product_name: params.productName,
305
+ });
306
+ }
307
+ /**
308
+ * Generate with product
309
+ */
310
+ async generateWithProduct(params) {
311
+ return this.callTool('generate_with_product', {
312
+ product_id: params.productId,
313
+ product_name: params.productName,
314
+ scene_prompt: params.scenePrompt,
315
+ additional_details: params.additionalDetails,
316
+ aspect_ratio: params.aspectRatio,
317
+ negative_prompt: params.negativePrompt,
318
+ number_of_images: params.numberOfImages,
319
+ });
320
+ }
321
+ // =====================================
322
+ // SCENES
323
+ // =====================================
324
+ /**
325
+ * Create a scene preset
326
+ */
327
+ async createScene(params) {
328
+ return this.callTool('create_scene', {
329
+ scene_name: params.sceneName,
330
+ description: params.description,
331
+ scene_prompt: params.scenePrompt,
332
+ reference_image_ids: params.referenceImageIds,
333
+ reference_image_urls: params.referenceImageUrls,
334
+ default_reference_mode: params.defaultReferenceMode,
335
+ preferred_aspect_ratio: params.preferredAspectRatio,
336
+ tags: params.tags,
337
+ });
338
+ }
339
+ /**
340
+ * List scene presets
341
+ */
342
+ async listScenes(params) {
343
+ return this.callTool('list_scenes', {
344
+ search: params?.search,
345
+ limit: params?.limit,
346
+ offset: params?.offset,
347
+ sort_by: params?.sortBy,
348
+ });
349
+ }
350
+ /**
351
+ * Get scene preset details
352
+ */
353
+ async getScene(params) {
354
+ return this.callTool('get_scene', {
355
+ scene_id: params.sceneId,
356
+ scene_name: params.sceneName,
357
+ });
358
+ }
359
+ /**
360
+ * Update a scene preset
361
+ */
362
+ async updateScene(params) {
363
+ return this.callTool('update_scene', {
364
+ scene_id: params.sceneId,
365
+ scene_name: params.sceneName,
366
+ new_scene_name: params.newSceneName,
367
+ description: params.description,
368
+ scene_prompt: params.scenePrompt,
369
+ reference_image_ids: params.referenceImageIds,
370
+ reference_image_urls: params.referenceImageUrls,
371
+ default_reference_mode: params.defaultReferenceMode,
372
+ preferred_aspect_ratio: params.preferredAspectRatio,
373
+ tags: params.tags,
374
+ });
375
+ }
376
+ /**
377
+ * Delete a scene preset
378
+ */
379
+ async deleteScene(params) {
380
+ return this.callTool('delete_scene', {
381
+ scene_id: params.sceneId,
382
+ scene_name: params.sceneName,
383
+ });
384
+ }
385
+ // =====================================
386
+ // STYLE PRESETS
387
+ // =====================================
388
+ /**
389
+ * Create a style preset
390
+ */
391
+ async createStylePreset(params) {
392
+ return this.callTool('create_style_preset', {
393
+ name: params.name,
394
+ prompt: params.prompt,
395
+ negative_prompt: params.negativePrompt,
396
+ system_instruction: params.systemInstruction,
397
+ aspect_ratio: params.aspectRatio,
398
+ });
399
+ }
400
+ /**
401
+ * List style presets
402
+ */
403
+ async listStylePresets() {
404
+ return this.callTool('list_style_presets', {});
405
+ }
406
+ /**
407
+ * Update a style preset
408
+ */
409
+ async updateStylePreset(params) {
410
+ return this.callTool('update_style_preset', {
411
+ id: params.id,
412
+ name: params.name,
413
+ new_name: params.newName,
414
+ prompt: params.prompt,
415
+ negative_prompt: params.negativePrompt,
416
+ system_instruction: params.systemInstruction,
417
+ aspect_ratio: params.aspectRatio,
418
+ });
419
+ }
420
+ /**
421
+ * Delete a style preset
422
+ */
423
+ async deleteStylePreset(params) {
424
+ return this.callTool('delete_style_preset', {
425
+ id: params.id,
426
+ name: params.name,
427
+ });
428
+ }
429
+ // =====================================
430
+ // USAGE & ANALYTICS
431
+ // =====================================
432
+ /**
433
+ * Get usage stats
434
+ */
435
+ async getUsageStats(params) {
436
+ return this.callTool('get_usage_stats', {
437
+ range_start: params?.rangeStart,
438
+ range_end: params?.rangeEnd,
439
+ lookback_days: params?.lookbackDays,
440
+ granularity: params?.granularity,
441
+ operation: params?.operation,
442
+ limit: params?.limit,
443
+ });
444
+ }
445
+ /**
446
+ * Get account summary
447
+ */
448
+ async getAccountSummary() {
449
+ return this.callTool('get_account_summary', {});
450
+ }
451
+ /**
452
+ * Get help
453
+ */
454
+ async getHelp(params) {
455
+ return this.callTool('get_help', {
456
+ tool_name: params?.toolName,
457
+ category: params?.category,
458
+ workflow: params?.workflow,
459
+ });
460
+ }
461
+ // =====================================
462
+ // CONNECTION TEST
463
+ // =====================================
464
+ /**
465
+ * Test connection to server
466
+ */
467
+ async testConnection() {
468
+ try {
469
+ await this.connect();
470
+ const tools = await this.listTools();
471
+ return tools.length > 0;
472
+ }
473
+ catch {
474
+ return false;
475
+ }
476
+ }
477
+ }
478
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/transport/mcp-client.ts"],"names":[],"mappings":"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"}