@framers/agentos-ext-image-generation 1.1.0 → 2.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.
@@ -6,12 +6,19 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.GenerateImageTool = void 0;
9
+ const SIZES = ['1024x1024', '1536x1024', '1024x1536', '1792x1024', '1024x1792'];
10
+ const QUALITIES = ['low', 'medium', 'high', 'auto', 'standard', 'hd'];
11
+ const STYLES = ['vivid', 'natural'];
12
+ const PROVIDERS = ['openai', 'openrouter', 'stability', 'replicate'];
13
+ /** The arguments that are optional strings with no list of values. */
14
+ const STRING_FIELDS = ['aspectRatio', 'model', 'negativePrompt'];
9
15
  class GenerateImageTool {
10
16
  constructor(service) {
11
17
  this.id = 'tool.generate_image';
12
18
  this.name = 'generate_image';
13
19
  this.displayName = 'Generate Image';
14
- this.description = 'Generate an image from a text prompt using the configured image providers. Returns a URL or data URL to the generated image.';
20
+ this.description = 'Generate an image from a text prompt using the configured image providers. Returns the image as a URL: ' +
21
+ 'the provider\'s, or the file: URL of a copy saved on this machine, which the image-editing and vision tools accept as a source.';
15
22
  this.category = 'media';
16
23
  this.hasSideEffects = false;
17
24
  this.inputSchema = {
@@ -23,8 +30,8 @@ class GenerateImageTool {
23
30
  },
24
31
  size: {
25
32
  type: 'string',
26
- enum: ['1024x1024', '1792x1024', '1024x1792'],
27
- description: 'Image dimensions. 1024x1024 (square, default), 1792x1024 (landscape), 1024x1792 (portrait).',
33
+ enum: SIZES,
34
+ description: 'Image dimensions. 1024x1024 (square, default), 1536x1024 or 1792x1024 (landscape), 1024x1536 or 1024x1792 (portrait).',
28
35
  },
29
36
  aspectRatio: {
30
37
  type: 'string',
@@ -32,22 +39,22 @@ class GenerateImageTool {
32
39
  },
33
40
  quality: {
34
41
  type: 'string',
35
- enum: ['standard', 'hd'],
36
- description: 'Image quality. "hd" produces higher detail but costs more.',
42
+ enum: QUALITIES,
43
+ description: 'Image quality: low, medium (default), high, or auto. "standard" and "hd" are read as medium and high. Higher quality costs more.',
37
44
  },
38
45
  style: {
39
46
  type: 'string',
40
- enum: ['vivid', 'natural'],
41
- description: 'Style preset. "vivid" (default) for hyper-real/dramatic, "natural" for more realistic.',
47
+ enum: STYLES,
48
+ description: 'Optional style: "vivid" for hyper-real and dramatic, "natural" for more realistic.',
42
49
  },
43
50
  provider: {
44
51
  type: 'string',
45
- enum: ['openai', 'openrouter', 'stability', 'replicate'],
52
+ enum: PROVIDERS,
46
53
  description: 'Which AI provider to use. If omitted, the extension uses its configured default provider.',
47
54
  },
48
55
  model: {
49
56
  type: 'string',
50
- description: 'Optional provider-native model id, for example gpt-image-1, stable-image-core, or black-forest-labs/flux-schnell.',
57
+ description: "Optional: the provider's own model id, for example gpt-image-2.5-flare, stable-image-core, or black-forest-labs/flux-schnell.",
51
58
  },
52
59
  seed: {
53
60
  type: 'number',
@@ -62,9 +69,12 @@ class GenerateImageTool {
62
69
  };
63
70
  this.service = service;
64
71
  }
65
- async execute(args, _context) {
72
+ async execute(args, context) {
73
+ const options = this.optionsFrom(args);
74
+ if (typeof options === 'string')
75
+ return { success: false, error: options };
66
76
  try {
67
- const result = await this.service.generateImage(args);
77
+ const result = await this.service.generateImage(options, context);
68
78
  return {
69
79
  success: true,
70
80
  output: {
@@ -92,6 +102,42 @@ class GenerateImageTool {
92
102
  };
93
103
  }
94
104
  }
105
+ /**
106
+ * The service call for a tool call's arguments, or the error for an
107
+ * argument the schema does not allow. Only the schema's own fields are
108
+ * taken: the model writes the arguments, and anything else it adds (`n`,
109
+ * `providerOptions`, whose `extraBody` goes into the provider's request)
110
+ * is not passed on.
111
+ */
112
+ optionsFrom(args) {
113
+ if (typeof args?.prompt !== 'string' || !args.prompt.trim())
114
+ return 'prompt is required.';
115
+ const options = { prompt: args.prompt };
116
+ for (const field of STRING_FIELDS) {
117
+ const value = args[field];
118
+ if (value === undefined || value === null)
119
+ continue;
120
+ if (typeof value !== 'string')
121
+ return `${field} must be a string.`;
122
+ if (value.trim())
123
+ options[field] = value.trim();
124
+ }
125
+ for (const [field, allowed] of [['size', SIZES], ['quality', QUALITIES], ['style', STYLES], ['provider', PROVIDERS]]) {
126
+ const value = args[field];
127
+ if (value === undefined || value === null)
128
+ continue;
129
+ if (!allowed.includes(value))
130
+ return `${field} must be one of ${allowed.join(', ')}.`;
131
+ options[field] = value;
132
+ }
133
+ if (args.seed !== undefined && args.seed !== null) {
134
+ const seed = typeof args.seed === 'string' && args.seed.trim() !== '' ? Number(args.seed) : args.seed;
135
+ if (typeof seed !== 'number' || !Number.isFinite(seed))
136
+ return 'seed must be a number.';
137
+ options.seed = seed;
138
+ }
139
+ return options;
140
+ }
95
141
  }
96
142
  exports.GenerateImageTool = GenerateImageTool;
97
143
  //# sourceMappingURL=generateImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/tools/generateImage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/tools/generateImage.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -2,11 +2,11 @@
2
2
  "id": "com.framers.tools.image-generation",
3
3
  "name": "@framers/agentos-ext-image-generation",
4
4
  "displayName": "Image Generation",
5
- "version": "1.1.0",
5
+ "version": "2.0.1",
6
6
  "description": "Generate images from text prompts using OpenAI, OpenRouter, Stability AI, or Replicate.",
7
7
  "category": "tool",
8
8
  "author": "Framers AI",
9
- "license": "MIT",
9
+ "license": "Apache-2.0",
10
10
  "entry": "./src/index.ts",
11
11
  "tools": ["generate_image"],
12
12
  "requiredSecrets": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos-ext-image-generation",
3
- "version": "1.1.0",
3
+ "version": "2.0.1",
4
4
  "description": "Image generation extension for AgentOS — OpenAI, OpenRouter, Stability AI, and Replicate",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "name": "Framers AI",
22
22
  "url": "https://frame.dev"
23
23
  },
24
- "license": "MIT",
24
+ "license": "Apache-2.0",
25
25
  "peerDependencies": {
26
26
  "@framers/agentos": ">=0.10.40"
27
27
  },
@@ -29,7 +29,7 @@
29
29
  "@types/node": "^20.0.0",
30
30
  "typescript": "^5.0.0",
31
31
  "vitest": "^3.2.7",
32
- "@framers/agentos": "^0.10.40"
32
+ "@framers/agentos": "^0.13.47"
33
33
  },
34
34
  "engines": {
35
35
  "node": ">=22"