@just-every/ensemble 0.2.210 → 0.2.211

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.
package/README.md CHANGED
@@ -38,7 +38,7 @@ See the [demo README](demo/README.md) for detailed information about each demo.
38
38
  - OpenAI: Added GPT-5.2 (base + chat-latest + pro) and refreshed GPT-5.1/GPT-5/Codex pricing
39
39
  - Anthropic: Claude 4.5 (Sonnet/Haiku, incl. 1M context) and Claude Opus 4.1
40
40
  - Google: Gemini 3 (Pro/Flash/Ultra) and refreshed Gemini 2.5 pricing incl. image/TTS/native-audio
41
- - xAI: Grok 4.1 Fast and Grok 4 Fast with tiered pricing; updated Grok 4/3/mini variants
41
+ - xAI: Grok 4.1 Fast and Grok 4 Fast with tiered pricing; updated Grok 4/3/mini variants plus Grok Imagine image generation/editing support (`grok-imagine-image`, `grok-imagine-image-pro`)
42
42
 
43
43
  *Codex-Max pricing reflects current published rates and may change if OpenAI updates pricing.
44
44
 
@@ -1,9 +1,96 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.grokProvider = exports.GrokProvider = void 0;
4
+ const model_data_js_1 = require("../data/model_data.cjs");
4
5
  const cost_tracker_js_1 = require("../utils/cost_tracker.cjs");
5
6
  const llm_logger_js_1 = require("../utils/llm_logger.cjs");
6
7
  const openai_chat_js_1 = require("./openai_chat.cjs");
8
+ function normalizeAspectRatio(size) {
9
+ if (!size)
10
+ return undefined;
11
+ const aspectMap = {
12
+ auto: 'auto',
13
+ square: '1:1',
14
+ landscape: '3:2',
15
+ portrait: '2:3',
16
+ '256x256': '1:1',
17
+ '512x512': '1:1',
18
+ '1024x1024': '1:1',
19
+ '1536x1024': '3:2',
20
+ '1024x1536': '2:3',
21
+ '1792x1024': '16:9',
22
+ '1024x1792': '9:16',
23
+ '1696x2528': '2:3',
24
+ '2048x2048': '1:1',
25
+ '1:1': '1:1',
26
+ '1:4': '1:4',
27
+ '1:8': '1:8',
28
+ '2:3': '2:3',
29
+ '3:2': '3:2',
30
+ '3:4': '3:4',
31
+ '4:1': '4:1',
32
+ '4:3': '4:3',
33
+ '4:5': '4:5',
34
+ '5:4': '5:4',
35
+ '8:1': '8:1',
36
+ '9:16': '9:16',
37
+ '9:19.5': '9:19.5',
38
+ '9:20': '9:20',
39
+ '16:9': '16:9',
40
+ '19.5:9': '19.5:9',
41
+ '20:9': '20:9',
42
+ '21:9': '21:9',
43
+ };
44
+ return aspectMap[String(size)];
45
+ }
46
+ function normalizeResolution(opts) {
47
+ if (opts.resolution === '1k' || opts.resolution === '2k') {
48
+ return opts.resolution;
49
+ }
50
+ if (opts.quality === 'hd' || opts.quality === 'high') {
51
+ return '2k';
52
+ }
53
+ return undefined;
54
+ }
55
+ function normalizeSourceImages(sourceImages) {
56
+ if (!sourceImages)
57
+ return [];
58
+ const rawImages = Array.isArray(sourceImages) ? sourceImages : [sourceImages];
59
+ return rawImages.map((sourceImage, index) => {
60
+ const url = typeof sourceImage === 'string'
61
+ ? sourceImage
62
+ : typeof sourceImage === 'object' && sourceImage !== null && 'data' in sourceImage
63
+ ? sourceImage.data
64
+ : undefined;
65
+ if (typeof url !== 'string' || url.length === 0) {
66
+ throw new Error(`xAI image editing source image ${index + 1} is missing image data.`);
67
+ }
68
+ if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('data:image/')) {
69
+ throw new Error('xAI image editing expects each source image to be a public URL or a data:image/... base64 URI.');
70
+ }
71
+ return {
72
+ type: 'image_url',
73
+ url,
74
+ };
75
+ });
76
+ }
77
+ function extractImages(response) {
78
+ return (response.data || [])
79
+ .map(item => {
80
+ if (typeof item?.b64_json === 'string' && item.b64_json.length > 0) {
81
+ return `data:image/png;base64,${item.b64_json}`;
82
+ }
83
+ if (typeof item?.url === 'string' && item.url.length > 0) {
84
+ return item.url;
85
+ }
86
+ return null;
87
+ })
88
+ .filter((image) => image !== null);
89
+ }
90
+ function getPerImageCost(model) {
91
+ const pricing = (0, model_data_js_1.findModel)(model)?.cost?.per_image;
92
+ return typeof pricing === 'number' ? pricing : undefined;
93
+ }
7
94
  class GrokProvider extends openai_chat_js_1.OpenAIChat {
8
95
  constructor() {
9
96
  super('xai', process.env.XAI_API_KEY, 'https://api.x.ai/v1');
@@ -22,36 +109,70 @@ class GrokProvider extends openai_chat_js_1.OpenAIChat {
22
109
  return super.prepareParameters(requestParams);
23
110
  }
24
111
  async createImage(prompt, model, agent, opts = {}) {
25
- const requestId = (0, llm_logger_js_1.log_llm_request)(agent.agent_id || 'default', 'xai', model, { prompt, opts }, new Date());
112
+ const numberOfImages = opts.n ?? 1;
113
+ const sourceImages = normalizeSourceImages(opts.source_images);
114
+ const requestBody = {
115
+ model,
116
+ prompt,
117
+ n: numberOfImages,
118
+ };
119
+ if (!Number.isInteger(numberOfImages) || numberOfImages < 1 || numberOfImages > 10) {
120
+ throw new Error('xAI image generation requires opts.n to be an integer between 1 and 10.');
121
+ }
122
+ if (opts.mask) {
123
+ throw new Error('xAI image generation masks are not supported in Ensemble yet.');
124
+ }
125
+ if (sourceImages.length > 5) {
126
+ throw new Error('xAI image editing supports at most 5 source images per request.');
127
+ }
128
+ const aspectRatio = normalizeAspectRatio(opts.size);
129
+ const resolution = normalizeResolution(opts);
130
+ const usesEditingEndpoint = sourceImages.length > 0;
131
+ if (opts.response_format === 'b64_json') {
132
+ requestBody.response_format = 'b64_json';
133
+ }
134
+ if (aspectRatio) {
135
+ requestBody.aspect_ratio = aspectRatio;
136
+ }
137
+ if (resolution) {
138
+ requestBody.resolution = resolution;
139
+ }
140
+ if (usesEditingEndpoint) {
141
+ requestBody.image = sourceImages.length === 1 ? sourceImages[0] : sourceImages;
142
+ }
143
+ const endpoint = usesEditingEndpoint ? '/images/edits' : '/images/generations';
144
+ const requestId = (0, llm_logger_js_1.log_llm_request)(agent.agent_id || 'default', 'xai', model, {
145
+ endpoint,
146
+ ...requestBody,
147
+ }, new Date(), opts.request_id, agent.tags);
26
148
  let success = false;
149
+ let responseLogPayload = { ok: false };
27
150
  try {
28
- if (opts.source_images || opts.mask) {
29
- throw new Error('xAI image generation with source images or masks is not supported in Ensemble yet.');
30
- }
31
- const response = await this.client.images.generate({
32
- model,
33
- prompt,
34
- n: opts.n || 1,
151
+ const response = await this.client.post(endpoint, {
152
+ body: requestBody,
35
153
  });
36
- const images = (response.data || [])
37
- .map((item) => {
38
- if (typeof item?.b64_json === 'string' && item.b64_json.length > 0) {
39
- return `data:image/png;base64,${item.b64_json}`;
40
- }
41
- if (typeof item?.url === 'string' && item.url.length > 0) {
42
- return item.url;
43
- }
44
- return null;
45
- })
46
- .filter((image) => image !== null);
154
+ responseLogPayload = response;
155
+ const images = extractImages(response);
47
156
  if (!images.length) {
48
157
  throw new Error('xAI image generation returned no images.');
49
158
  }
159
+ const perImageCost = getPerImageCost(model);
160
+ const billableImageCount = usesEditingEndpoint ? sourceImages.length + images.length : images.length;
50
161
  cost_tracker_js_1.costTracker.addUsage({
51
162
  model,
52
163
  image_count: images.length,
164
+ cost: typeof perImageCost === 'number' ? perImageCost * billableImageCount : undefined,
53
165
  request_id: opts.request_id,
54
- metadata: { source: 'xai' },
166
+ metadata: {
167
+ source: 'xai',
168
+ endpoint,
169
+ aspect_ratio: aspectRatio,
170
+ resolution,
171
+ response_format: opts.response_format || 'url',
172
+ source_image_count: sourceImages.length,
173
+ billable_image_count: billableImageCount,
174
+ ...(typeof perImageCost === 'number' ? { cost_per_image: perImageCost } : {}),
175
+ },
55
176
  });
56
177
  success = true;
57
178
  return images;
@@ -61,7 +182,7 @@ class GrokProvider extends openai_chat_js_1.OpenAIChat {
61
182
  throw error;
62
183
  }
63
184
  finally {
64
- (0, llm_logger_js_1.log_llm_response)(requestId, { ok: success });
185
+ (0, llm_logger_js_1.log_llm_response)(requestId, success ? responseLogPayload : { ok: false });
65
186
  }
66
187
  }
67
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../../model_providers/grok.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,qBAAa,YAAa,SAAQ,UAAU;;IAKxC,iBAAiB,CACb,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC,GAC3E,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC;IAgBxD,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;CA8CvB;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
1
+ {"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../../model_providers/grok.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,MAAM,MAAM,QAAQ,CAAC;AA0H5B,qBAAa,YAAa,SAAQ,UAAU;;IAKxC,iBAAiB,CACb,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC,GAC3E,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mCAAmC;IAgBxD,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;CAiGvB;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../../model_providers/grok.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../../model_providers/grok.ts"],"names":[],"mappings":"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"}