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,177 @@
1
+ /**
2
+ * Generate Command
3
+ *
4
+ * Generate new images from text prompts using Go Bananas.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { createTransport, getTransportName } from '../transport/index.js';
8
+ import { downloadImage } from '../utils/file-handler.js';
9
+ import * as output from '../utils/output.js';
10
+ import { getSecurityWarning } from '../config/config.js';
11
+ import { parseMcpTextResponse } from '../types/responses.js';
12
+ export function createGenerateCommand() {
13
+ const cmd = new Command('generate')
14
+ .alias('gen')
15
+ .alias('g')
16
+ .description('Generate new images from text prompts')
17
+ .argument('<prompt>', 'Text description of the image to generate')
18
+ .option('-n, --count <number>', 'Number of images to generate (1-4)', '1')
19
+ .option('-a, --aspect <ratio>', 'Aspect ratio (square, portrait, landscape, 16:9, 9:16, 4:3, 3:4)')
20
+ .option('--negative <prompt>', 'Negative prompt - what to avoid')
21
+ .option('--style <instruction>', 'Style instruction for the model')
22
+ .option('--style-preset <name>', 'Use a saved style preset by name')
23
+ .option('--style-preset-id <id>', 'Use a saved style preset by ID')
24
+ .option('--scene <nameOrId>', 'Use a saved scene preset (repeatable)', (value, previous) => [...(previous || []), value], [])
25
+ .option('--model <id>', 'Model to use (gemini-flash-image, gemini-pro-image)')
26
+ .option('-d, --download', 'Download the generated image to local disk')
27
+ .option('-o, --output <path>', 'Output path for downloaded image')
28
+ .option('--json', 'Output raw JSON response')
29
+ .action(async (prompt, options) => {
30
+ // Check for security warnings
31
+ const securityWarning = getSecurityWarning();
32
+ if (securityWarning) {
33
+ output.warning(securityWarning);
34
+ }
35
+ const spin = output.spinner('Connecting to Go Bananas...');
36
+ try {
37
+ // Create transport
38
+ const transport = await createTransport();
39
+ spin.text = `Connected via ${getTransportName(transport.type)}. Generating image...`;
40
+ async function resolveSceneNameIds(names) {
41
+ const ids = [];
42
+ for (const name of names) {
43
+ if (transport.type === 'mcp' && transport.mcp) {
44
+ const res = await transport.mcp.getScene({ sceneName: name });
45
+ const text = res.content?.[0]?.text || '';
46
+ const parsed = JSON.parse(text);
47
+ const id = parsed.id;
48
+ if (typeof id !== 'number' || !Number.isFinite(id) || id <= 0) {
49
+ throw new Error(`Failed to resolve scene "${name}"`);
50
+ }
51
+ ids.push(id);
52
+ }
53
+ else if (transport.rest) {
54
+ const res = await transport.rest.getScene(name);
55
+ const data = res.data;
56
+ const id = data?.id;
57
+ if (typeof id !== 'number' || !Number.isFinite(id) || id <= 0) {
58
+ throw new Error(`Failed to resolve scene "${name}"`);
59
+ }
60
+ ids.push(id);
61
+ }
62
+ else {
63
+ throw new Error('No transport available');
64
+ }
65
+ }
66
+ return ids;
67
+ }
68
+ // Build parameters
69
+ const params = {
70
+ prompt,
71
+ n: parseInt(options.count, 10),
72
+ aspectRatio: options.aspect,
73
+ negativePrompt: options.negative,
74
+ systemInstruction: options.style,
75
+ stylePresetName: options.stylePreset,
76
+ stylePresetId: options.stylePresetId ? parseInt(options.stylePresetId, 10) : undefined,
77
+ modelId: options.model,
78
+ };
79
+ const sceneSelections = options.scene
80
+ ?.map((value) => String(value).trim())
81
+ .filter(Boolean);
82
+ if (sceneSelections && sceneSelections.length > 0) {
83
+ const sceneIds = [];
84
+ const sceneNames = [];
85
+ for (const selection of sceneSelections) {
86
+ if (/^\d+$/.test(selection)) {
87
+ const id = parseInt(selection, 10);
88
+ if (Number.isFinite(id) && id > 0)
89
+ sceneIds.push(id);
90
+ }
91
+ else {
92
+ sceneNames.push(selection);
93
+ }
94
+ }
95
+ if (sceneSelections.length === 1 && sceneNames.length === 1) {
96
+ params.sceneName = sceneNames[0];
97
+ }
98
+ else {
99
+ const resolvedIds = sceneNames.length > 0 ? await resolveSceneNameIds(sceneNames) : [];
100
+ const uniqueIds = Array.from(new Set([...sceneIds, ...resolvedIds]));
101
+ if (uniqueIds.length === 1) {
102
+ params.sceneId = uniqueIds[0];
103
+ }
104
+ else if (uniqueIds.length > 1) {
105
+ params.sceneIds = uniqueIds;
106
+ }
107
+ }
108
+ }
109
+ // Call appropriate transport
110
+ let result;
111
+ if (transport.type === 'mcp' && transport.mcp) {
112
+ const mcpResult = await transport.mcp.generateImage(params);
113
+ // Extract text from MCP response
114
+ const text = mcpResult.content?.[0]?.text || '';
115
+ // Use structured parsing with fallback to regex
116
+ const parsed = parseMcpTextResponse(text);
117
+ result = {
118
+ ...parsed,
119
+ raw: text,
120
+ };
121
+ }
122
+ else if (transport.rest) {
123
+ const restResult = await transport.rest.generateImage(params);
124
+ result = restResult.data;
125
+ }
126
+ else {
127
+ throw new Error('No transport available');
128
+ }
129
+ spin.stop();
130
+ // Output result
131
+ if (options.json) {
132
+ output.json(result);
133
+ }
134
+ else {
135
+ output.success('Image generated successfully!');
136
+ if (result.id) {
137
+ output.keyValue('ID', result.id);
138
+ }
139
+ const url = result.fullUrl;
140
+ if (url) {
141
+ output.keyValue('URL', url);
142
+ }
143
+ if (result.width && result.height) {
144
+ output.keyValue('Size', `${result.width}x${result.height}`);
145
+ }
146
+ if (result.sizeBytes) {
147
+ output.keyValue('File Size', output.formatBytes(result.sizeBytes));
148
+ }
149
+ // Download if requested
150
+ if (options.download && url) {
151
+ const outputPath = options.output || undefined;
152
+ output.newline();
153
+ const downloadSpin = output.spinner('Downloading image...');
154
+ try {
155
+ const savedPath = await downloadImage(url, outputPath);
156
+ downloadSpin.succeed(`Saved to: ${savedPath}`);
157
+ }
158
+ catch (err) {
159
+ downloadSpin.fail(`Download failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
160
+ }
161
+ }
162
+ // Show raw text if available
163
+ if (result.raw && !url) {
164
+ output.newline();
165
+ console.log(result.raw);
166
+ }
167
+ }
168
+ }
169
+ catch (err) {
170
+ spin.stop();
171
+ output.error(err instanceof Error ? err.message : 'Generation failed');
172
+ process.exit(1);
173
+ }
174
+ });
175
+ return cmd;
176
+ }
177
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Image Command
3
+ *
4
+ * Get image info and view edit lineage.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function createImageCommand(): Command;
8
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC,wBAAgB,kBAAkB,IAAI,OAAO,CA0L5C"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Image Command
3
+ *
4
+ * Get image info and view edit lineage.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { createTransport, getTransportName } from '../transport/index.js';
8
+ import * as output from '../utils/output.js';
9
+ import { getSecurityWarning } from '../config/config.js';
10
+ /**
11
+ * Parse MCP text response for image info
12
+ * Format: "Image #608: 1024x1024, character, https://..."
13
+ */
14
+ function parseMcpImageInfoText(text, imageId) {
15
+ const result = { id: imageId, raw: text };
16
+ // Extract dimensions: "1024x1024"
17
+ const dimMatch = text.match(/(\d+)x(\d+)/);
18
+ if (dimMatch) {
19
+ result.width = parseInt(dimMatch[1], 10);
20
+ result.height = parseInt(dimMatch[2], 10);
21
+ }
22
+ // Extract URL
23
+ const urlMatch = text.match(/(https?:\/\/[^\s,]+)/);
24
+ if (urlMatch) {
25
+ result.fullUrl = urlMatch[1];
26
+ result.full_url = urlMatch[1];
27
+ }
28
+ // Extract operation type (generate, edit, character, etc.)
29
+ const opMatch = text.match(/\d+x\d+,\s*(\w+)/);
30
+ if (opMatch) {
31
+ result.operation = opMatch[1];
32
+ result.operationType = opMatch[1];
33
+ }
34
+ return result;
35
+ }
36
+ export function createImageCommand() {
37
+ const cmd = new Command('image')
38
+ .alias('img')
39
+ .description('Image information and management');
40
+ // Info subcommand
41
+ cmd
42
+ .command('info <id>')
43
+ .description('Get detailed information about an image')
44
+ .option('--json', 'Output raw JSON response')
45
+ .action(async (id, options) => {
46
+ const securityWarning = getSecurityWarning();
47
+ if (securityWarning) {
48
+ output.warning(securityWarning);
49
+ }
50
+ const spin = output.spinner('Fetching image info...');
51
+ try {
52
+ const transport = await createTransport();
53
+ spin.text = `Connected via ${getTransportName(transport.type)}. Loading...`;
54
+ const imageId = parseInt(id, 10);
55
+ if (isNaN(imageId)) {
56
+ throw new Error('Invalid image ID - must be a number');
57
+ }
58
+ let result;
59
+ if (transport.type === 'mcp' && transport.mcp) {
60
+ const mcpResult = await transport.mcp.getImageInfo(imageId);
61
+ const text = mcpResult.content?.[0]?.text || '';
62
+ try {
63
+ result = JSON.parse(text);
64
+ }
65
+ catch {
66
+ // Parse MCP text format: "Image #608: 1024x1024, character, https://..."
67
+ result = parseMcpImageInfoText(text, imageId);
68
+ }
69
+ }
70
+ else if (transport.rest) {
71
+ const restResult = await transport.rest.getImage(imageId);
72
+ result = restResult.data;
73
+ }
74
+ else {
75
+ throw new Error('No transport available');
76
+ }
77
+ spin.stop();
78
+ if (options.json) {
79
+ output.json(result);
80
+ }
81
+ else {
82
+ const img = result;
83
+ output.header('Image Details');
84
+ output.keyValue('ID', img.id);
85
+ output.keyValue('Prompt', img.prompt);
86
+ if (img.negativePrompt || img.negative_prompt) {
87
+ output.keyValue('Negative Prompt', (img.negativePrompt || img.negative_prompt));
88
+ }
89
+ output.keyValue('Operation', (img.operation || img.operationType));
90
+ output.keyValue('Aspect Ratio', (img.aspectRatio || img.aspect_ratio || 'unknown'));
91
+ if (img.width && img.height) {
92
+ output.keyValue('Dimensions', `${img.width}x${img.height}`);
93
+ }
94
+ if (img.sizeBytes || img.size_bytes) {
95
+ output.keyValue('File Size', output.formatBytes((img.sizeBytes || img.size_bytes)));
96
+ }
97
+ output.newline();
98
+ output.keyValue('Full URL', (img.fullUrl || img.full_url));
99
+ if (img.thumbnailUrl || img.thumbnail_url) {
100
+ output.keyValue('Thumbnail', (img.thumbnailUrl || img.thumbnail_url));
101
+ }
102
+ output.newline();
103
+ output.keyValue('Session ID', (img.sessionId || img.session_id));
104
+ output.keyValue('Created At', (img.createdAt || img.created_at));
105
+ // Edit lineage info
106
+ if (img.parentImageId || img.parent_image_id) {
107
+ output.newline();
108
+ output.keyValue('Parent Image ID', (img.parentImageId || img.parent_image_id));
109
+ output.keyValue('Edit Depth', (img.editDepth || img.edit_depth || 0));
110
+ }
111
+ // Show lineage if available
112
+ const lineage = img.lineage;
113
+ if (lineage && lineage.length > 0) {
114
+ output.newline();
115
+ output.header('Edit History');
116
+ for (const ancestor of lineage) {
117
+ const ancestorId = ancestor.id;
118
+ const ancestorPrompt = (ancestor.prompt || '');
119
+ const truncated = ancestorPrompt.length > 40 ? ancestorPrompt.substring(0, 40) + '...' : ancestorPrompt;
120
+ console.log(` → ${ancestorId}: ${truncated}`);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ catch (err) {
126
+ spin.stop();
127
+ output.error(err instanceof Error ? err.message : 'Failed to get image info');
128
+ process.exit(1);
129
+ }
130
+ });
131
+ // Lineage subcommand
132
+ cmd
133
+ .command('lineage <id>')
134
+ .description('Show the edit history chain for an image')
135
+ .option('--json', 'Output raw JSON response')
136
+ .action(async (id, options) => {
137
+ const securityWarning = getSecurityWarning();
138
+ if (securityWarning) {
139
+ output.warning(securityWarning);
140
+ }
141
+ const spin = output.spinner('Fetching image lineage...');
142
+ try {
143
+ const transport = await createTransport();
144
+ const imageId = parseInt(id, 10);
145
+ if (isNaN(imageId)) {
146
+ throw new Error('Invalid image ID - must be a number');
147
+ }
148
+ let result;
149
+ if (transport.type === 'mcp' && transport.mcp) {
150
+ const mcpResult = await transport.mcp.getImageInfo(imageId);
151
+ const text = mcpResult.content?.[0]?.text || '';
152
+ try {
153
+ result = JSON.parse(text);
154
+ }
155
+ catch {
156
+ // Parse MCP text format
157
+ result = parseMcpImageInfoText(text, imageId);
158
+ }
159
+ }
160
+ else if (transport.rest) {
161
+ const restResult = await transport.rest.getImage(imageId);
162
+ result = restResult.data;
163
+ }
164
+ else {
165
+ throw new Error('No transport available');
166
+ }
167
+ spin.stop();
168
+ if (options.json) {
169
+ output.json(result);
170
+ }
171
+ else {
172
+ const img = result;
173
+ const lineage = img.lineage;
174
+ output.header(`Edit Lineage for Image ${imageId}`);
175
+ if (!lineage || lineage.length === 0) {
176
+ if (img.parentImageId || img.parent_image_id) {
177
+ output.info('This image was edited from another image.');
178
+ output.keyValue('Parent Image', (img.parentImageId || img.parent_image_id));
179
+ }
180
+ else {
181
+ output.info('This is an original image with no edit history.');
182
+ }
183
+ }
184
+ else {
185
+ console.log();
186
+ console.log(' Original');
187
+ for (let i = 0; i < lineage.length; i++) {
188
+ const ancestor = lineage[i];
189
+ const depth = (ancestor.editDepth || ancestor.edit_depth || i);
190
+ const ancestorId = ancestor.id;
191
+ const op = (ancestor.operation || ancestor.operationType || 'edit');
192
+ const prompt = (ancestor.prompt || '');
193
+ const truncated = prompt.length > 50 ? prompt.substring(0, 50) + '...' : prompt;
194
+ console.log(` ${' '.repeat(depth)}↓`);
195
+ console.log(` ${' '.repeat(depth)}[${ancestorId}] ${op}: ${truncated}`);
196
+ }
197
+ // Current image
198
+ const currentDepth = (img.editDepth || img.edit_depth || lineage.length);
199
+ console.log(` ${' '.repeat(currentDepth)}↓`);
200
+ console.log(` ${' '.repeat(currentDepth)}[${imageId}] (current)`);
201
+ }
202
+ }
203
+ }
204
+ catch (err) {
205
+ spin.stop();
206
+ output.error(err instanceof Error ? err.message : 'Failed to get image lineage');
207
+ process.exit(1);
208
+ }
209
+ });
210
+ return cmd;
211
+ }
212
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Commands Index
3
+ *
4
+ * Export all CLI commands for use in the main entry point.
5
+ */
6
+ export { createGenerateCommand } from './generate.js';
7
+ export { createEditCommand, createContinueCommand, createUploadCommand } from './edit.js';
8
+ export { createCharacterCommand } from './character.js';
9
+ export { createProductCommand } from './product.js';
10
+ export { createSceneCommand } from './scene.js';
11
+ export { createStyleCommand } from './style.js';
12
+ export { createSessionCommand } from './session.js';
13
+ export { createUsageCommand } from './usage.js';
14
+ export { createConfigCommand } from './config.js';
15
+ export { createSearchCommand } from './search.js';
16
+ export { createImageCommand } from './image.js';
17
+ export { createAccountCommand } from './account.js';
18
+ export { createMcpHelpCommand } from './mcp-help.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Commands Index
3
+ *
4
+ * Export all CLI commands for use in the main entry point.
5
+ */
6
+ export { createGenerateCommand } from './generate.js';
7
+ export { createEditCommand, createContinueCommand, createUploadCommand } from './edit.js';
8
+ export { createCharacterCommand } from './character.js';
9
+ export { createProductCommand } from './product.js';
10
+ export { createSceneCommand } from './scene.js';
11
+ export { createStyleCommand } from './style.js';
12
+ export { createSessionCommand } from './session.js';
13
+ export { createUsageCommand } from './usage.js';
14
+ export { createConfigCommand } from './config.js';
15
+ export { createSearchCommand } from './search.js';
16
+ export { createImageCommand } from './image.js';
17
+ export { createAccountCommand } from './account.js';
18
+ export { createMcpHelpCommand } from './mcp-help.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Help Command
3
+ *
4
+ * Get help from the MCP server about available tools and workflows.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function createMcpHelpCommand(): Command;
8
+ //# sourceMappingURL=mcp-help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-help.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,IAAI,OAAO,CAsE9C"}