pi-clawbay 0.0.21 → 0.0.23
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 +7 -6
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/image-generation.d.ts.map +1 -1
- package/dist/image-generation.js +261 -49
- package/dist/image-generation.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,9 +61,9 @@ Requests for `theclawbay/*` text and coding models are sent through TheClawBay's
|
|
|
61
61
|
|
|
62
62
|
- `https://api.theclawbay.com/backend-api/codex`
|
|
63
63
|
|
|
64
|
-
Requests for `theclawbay/gpt-image-2` are sent through TheClawBay's
|
|
64
|
+
Requests for `theclawbay/gpt-image-2` are sent through TheClawBay's Codex Responses route with the hosted `image_generation` tool:
|
|
65
65
|
|
|
66
|
-
- `https://api.theclawbay.com/
|
|
66
|
+
- `https://api.theclawbay.com/backend-api/codex/responses`
|
|
67
67
|
|
|
68
68
|
This extension uses a custom Responses transport for that route. It sends:
|
|
69
69
|
|
|
@@ -71,6 +71,7 @@ This extension uses a custom Responses transport for that route. It sends:
|
|
|
71
71
|
- `chatgpt-account-id: theclawbay`
|
|
72
72
|
- `session_id` when Pi provides a session id
|
|
73
73
|
- `prompt_cache_key` in the request body
|
|
74
|
+
- `tools: [{ type: "image_generation", model: "gpt-image-2", output_format: "png", size: "1024x1024", partial_images: 2 }]`
|
|
74
75
|
|
|
75
76
|
This avoids Pi's built-in `openai-codex-responses` JWT parsing path, which expects a ChatGPT/Codex-style token and can fail with `Failed to extract accountId from token` when given a normal TheClawBay API key.
|
|
76
77
|
|
|
@@ -103,7 +104,7 @@ Why split it?
|
|
|
103
104
|
- `gpt-5.4` is configured with a `272,000` token context window.
|
|
104
105
|
- `gpt-5.4[1m]` is configured with a `1,050,000` token context window.
|
|
105
106
|
- Current non-5.4 GPT-5/Codex variants default to `272,000` context and `128,000` max output tokens.
|
|
106
|
-
- `gpt-image-2` uses the
|
|
107
|
+
- `gpt-image-2` uses the hosted Responses image-generation path with `1024x1024` PNG output, `272,000` context metadata, and `65,536` max output metadata.
|
|
107
108
|
|
|
108
109
|
### Example Model List
|
|
109
110
|
|
|
@@ -120,7 +121,7 @@ Current fallback list in this package:
|
|
|
120
121
|
- `gpt-5.1-codex-max`
|
|
121
122
|
- `gpt-5.1-codex-mini`
|
|
122
123
|
|
|
123
|
-
`gpt-image-2` is exposed because TheClawBay's latest npm setup marks it as an
|
|
124
|
+
`gpt-image-2` is exposed because TheClawBay's latest npm setup marks it as an image generation model backed by `codex-lb`. The extension uses the hosted Responses image tool instead of the synchronous Images API because realistic 1024x1024 prompts can exceed the Images route socket window and fail as `fetch failed`. Other native image-generation models returned by discovery, such as `gpt-image-1.5`, remain hidden until this extension has a dedicated, tested flow for them.
|
|
124
125
|
|
|
125
126
|
## Usage
|
|
126
127
|
|
|
@@ -135,7 +136,7 @@ Use `/model` command in pi:
|
|
|
135
136
|
/model theclawbay/gpt-image-2
|
|
136
137
|
```
|
|
137
138
|
|
|
138
|
-
When `gpt-image-2` is selected, Pi receives a normal assistant message event sequence and the generated PNG is saved locally. Set `PI_CLAWBAY_IMAGE_DIR` to override the output directory; otherwise images are saved under Pi's generated-files directory.
|
|
139
|
+
When `gpt-image-2` is selected, Pi receives a normal assistant message event sequence and the generated PNG is saved locally. Set `PI_CLAWBAY_IMAGE_DIR` to override the output directory; otherwise images are saved under Pi's generated-files directory. Transient hosted image failures are retried up to 5 times by default. Partial images are not reported as success unless `PI_CLAWBAY_IMAGE_ALLOW_PARTIAL=1` is set.
|
|
139
140
|
|
|
140
141
|
### Commands
|
|
141
142
|
|
|
@@ -174,7 +175,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
174
175
|
| Provider | Base URL | API Type |
|
|
175
176
|
|----------|----------|----------|
|
|
176
177
|
| `theclawbay` | `https://api.theclawbay.com/backend-api/codex` | OpenAI Codex Responses |
|
|
177
|
-
| `theclawbay/gpt-image-2` | `https://api.theclawbay.com/
|
|
178
|
+
| `theclawbay/gpt-image-2` | `https://api.theclawbay.com/backend-api/codex/responses` | Hosted Responses `image_generation` |
|
|
178
179
|
|
|
179
180
|
### Authentication
|
|
180
181
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
export declare const THECLAWBAY_OPENAI_DISCOVERY_BASE_URL = "https://api.theclawbay.com/v1";
|
|
3
3
|
export declare const THECLAWBAY_CODEX_BASE_URL = "https://api.theclawbay.com/backend-api/codex";
|
|
4
|
+
export declare const THECLAWBAY_CODEX_RESPONSES_URL = "https://api.theclawbay.com/backend-api/codex/responses";
|
|
4
5
|
export declare const THECLAWBAY_QUOTA_URL = "https://theclawbay.com/api/codex-auth/v1/quota";
|
|
5
6
|
export declare const THECLAWBAY_OPENAI_MODELS_URL = "https://api.theclawbay.com/v1/models";
|
|
6
7
|
export declare const THECLAWBAY_IMAGES_GENERATIONS_URL = "https://api.theclawbay.com/v1/images/generations";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAO,MAAM,oCAAoC,kCAAkC,CAAC;AACpF,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,4BAA4B,yCAAmD,CAAC;AAC7F,eAAO,MAAM,iCAAiC,qDAA+D,CAAC;AAC9G,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,YAAY,4BAA6B,CAAC;AACvD,eAAO,MAAM,6BAA6B,mBAAoB,CAAC;AAC/D,eAAO,MAAM,+BAA+B;;;CAA8C,CAAC;AAC3F,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAW1E,CAAC;AACF,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,SAA8B,CAAC;AACzE,eAAO,MAAM,8BAA8B,UAAU,CAAC;AACtD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,eAAO,MAAM,wBAAwB,yBAA0B,CAAC;AAChE,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,UAWrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAO,MAAM,oCAAoC,kCAAkC,CAAC;AACpF,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,8BAA8B,2DAA2C,CAAC;AACvF,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,4BAA4B,yCAAmD,CAAC;AAC7F,eAAO,MAAM,iCAAiC,qDAA+D,CAAC;AAC9G,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,YAAY,4BAA6B,CAAC;AACvD,eAAO,MAAM,6BAA6B,mBAAoB,CAAC;AAC/D,eAAO,MAAM,+BAA+B;;;CAA8C,CAAC;AAC3F,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAW1E,CAAC;AACF,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,SAA8B,CAAC;AACzE,eAAO,MAAM,8BAA8B,UAAU,CAAC;AACtD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,eAAO,MAAM,wBAAwB,yBAA0B,CAAC;AAChE,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,UAWrC,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const THECLAWBAY_OPENAI_DISCOVERY_BASE_URL = "https://api.theclawbay.com/v1";
|
|
2
2
|
export const THECLAWBAY_CODEX_BASE_URL = "https://api.theclawbay.com/backend-api/codex";
|
|
3
|
+
export const THECLAWBAY_CODEX_RESPONSES_URL = `${THECLAWBAY_CODEX_BASE_URL}/responses`;
|
|
3
4
|
export const THECLAWBAY_QUOTA_URL = "https://theclawbay.com/api/codex-auth/v1/quota";
|
|
4
5
|
export const THECLAWBAY_OPENAI_MODELS_URL = `${THECLAWBAY_OPENAI_DISCOVERY_BASE_URL}/models`;
|
|
5
6
|
export const THECLAWBAY_IMAGES_GENERATIONS_URL = `${THECLAWBAY_OPENAI_DISCOVERY_BASE_URL}/images/generations`;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-generation.d.ts","sourceRoot":"","sources":["../src/image-generation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,KAAK,GAAG,EAER,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"image-generation.d.ts","sourceRoot":"","sources":["../src/image-generation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,KAAK,GAAG,EAER,KAAK,2BAA2B,EAChC,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,MAAM,uBAAuB,CAAC;AAsC/B,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAsWD,wBAAgB,qCAAqC,CACpD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,2BAA2B,CAsB7B"}
|
package/dist/image-generation.js
CHANGED
|
@@ -3,9 +3,21 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { createAssistantMessageEventStream, } from "@earendil-works/pi-ai";
|
|
6
|
-
import {
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
import { THECLAWBAY_CHATGPT_ACCOUNT_ID, THECLAWBAY_CODEX_RESPONSES_URL, MODEL_INPUTS, OPENAI_CODEX_THINKING_LEVEL_MAP, OPENAI_KNOWN_COSTS, } from "./constants.js";
|
|
7
|
+
const DEFAULT_IMAGE_RESPONSES_MODEL_ID = "gpt-5.5";
|
|
8
|
+
const HOSTED_IMAGE_PARTIAL_COUNT = 2;
|
|
9
|
+
const DEFAULT_HOSTED_IMAGE_MAX_RETRIES = 5;
|
|
10
|
+
const ALLOW_PARTIAL_ENV = "PI_CLAWBAY_IMAGE_ALLOW_PARTIAL";
|
|
11
|
+
class HostedImageGenerationStreamError extends Error {
|
|
12
|
+
partial;
|
|
13
|
+
retryable;
|
|
14
|
+
constructor(message, options) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "HostedImageGenerationStreamError";
|
|
17
|
+
this.partial = options?.partial;
|
|
18
|
+
this.retryable = options?.retryable ?? false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
9
21
|
export function getImageOutputDir() {
|
|
10
22
|
const overrideDir = process.env.PI_CLAWBAY_IMAGE_DIR?.trim();
|
|
11
23
|
if (overrideDir) {
|
|
@@ -60,8 +72,11 @@ function saveGeneratedPng(base64) {
|
|
|
60
72
|
writeFileSync(path, image, "binary");
|
|
61
73
|
return { path, bytes: image.byteLength };
|
|
62
74
|
}
|
|
63
|
-
function formatSuccessMessage(path, bytes, revisedPrompt) {
|
|
75
|
+
function formatSuccessMessage(path, bytes, revisedPrompt, usedPartial = false) {
|
|
64
76
|
const lines = [`Generated image saved to \`${path}\` (${bytes.toLocaleString()} bytes).`];
|
|
77
|
+
if (usedPartial) {
|
|
78
|
+
lines.push("Saved latest partial image because the final image was unavailable.");
|
|
79
|
+
}
|
|
65
80
|
if (revisedPrompt) {
|
|
66
81
|
lines.push(`Revised prompt: ${revisedPrompt}`);
|
|
67
82
|
}
|
|
@@ -72,60 +87,257 @@ async function requestImageGeneration(model, context, options) {
|
|
|
72
87
|
if (!apiKey) {
|
|
73
88
|
throw new Error("No API key for provider: theclawbay");
|
|
74
89
|
}
|
|
75
|
-
const body = await
|
|
76
|
-
const payload = await
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
const body = await buildHostedImageRequestBody(model, context, options);
|
|
91
|
+
const payload = await fetchHostedImageGeneration(model, apiKey, body, options);
|
|
92
|
+
const saved = saveGeneratedPng(payload.base64);
|
|
93
|
+
return { ...saved, revisedPrompt: payload.revisedPrompt, usedPartial: payload.usedPartial };
|
|
94
|
+
}
|
|
95
|
+
async function buildHostedImageRequestBody(model, context, options) {
|
|
96
|
+
const prompt = extractPrompt(context);
|
|
97
|
+
if (!prompt) {
|
|
98
|
+
throw new Error("gpt-image-2 requires a non-empty user prompt");
|
|
80
99
|
}
|
|
81
|
-
|
|
100
|
+
const body = {
|
|
101
|
+
model: getImageResponsesModelId(),
|
|
102
|
+
store: false,
|
|
103
|
+
stream: true,
|
|
104
|
+
instructions: context.systemPrompt,
|
|
105
|
+
input: [{ role: "user", content: [{ type: "input_text", text: prompt }] }],
|
|
106
|
+
tools: [
|
|
107
|
+
{
|
|
108
|
+
type: "image_generation",
|
|
109
|
+
model: model.id,
|
|
110
|
+
output_format: "png",
|
|
111
|
+
size: "1024x1024",
|
|
112
|
+
partial_images: HOSTED_IMAGE_PARTIAL_COUNT,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
tool_choice: "auto",
|
|
116
|
+
parallel_tool_calls: true,
|
|
117
|
+
text: { verbosity: "low" },
|
|
118
|
+
include: ["reasoning.encrypted_content"],
|
|
119
|
+
...(options?.sessionId ? { prompt_cache_key: options.sessionId } : {}),
|
|
120
|
+
};
|
|
121
|
+
return (await options?.onPayload?.(body, model)) ?? body;
|
|
122
|
+
}
|
|
123
|
+
function buildHostedRequestHeaders(apiKey, options) {
|
|
124
|
+
return {
|
|
125
|
+
...(options?.headers ?? {}),
|
|
126
|
+
Authorization: `Bearer ${apiKey}`,
|
|
127
|
+
"Content-Type": "application/json",
|
|
128
|
+
"chatgpt-account-id": THECLAWBAY_CHATGPT_ACCOUNT_ID,
|
|
129
|
+
originator: "pi",
|
|
130
|
+
"OpenAI-Beta": "responses=experimental",
|
|
131
|
+
...(options?.sessionId ? { session_id: options.sessionId } : {}),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function createHostedRequestModel(model) {
|
|
135
|
+
const requestModelId = getImageResponsesModelId();
|
|
136
|
+
return {
|
|
137
|
+
...model,
|
|
138
|
+
id: requestModelId,
|
|
139
|
+
name: requestModelId,
|
|
140
|
+
reasoning: true,
|
|
141
|
+
input: [...MODEL_INPUTS],
|
|
142
|
+
cost: OPENAI_KNOWN_COSTS[requestModelId] ?? model.cost,
|
|
143
|
+
thinkingLevelMap: { ...OPENAI_CODEX_THINKING_LEVEL_MAP },
|
|
144
|
+
};
|
|
82
145
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
return status === 429 || status >= 500 || code === "service_unavailable" || code === "proxy_request_failed";
|
|
146
|
+
function getImageResponsesModelId() {
|
|
147
|
+
return process.env.PI_CLAWBAY_IMAGE_RESPONSES_MODEL?.trim() || DEFAULT_IMAGE_RESPONSES_MODEL_ID;
|
|
86
148
|
}
|
|
87
|
-
function
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
149
|
+
async function fetchHostedImageGeneration(model, apiKey, body, options) {
|
|
150
|
+
let latestPartial;
|
|
151
|
+
let lastError;
|
|
152
|
+
const maxRetries = getHostedImageMaxRetries();
|
|
153
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
154
|
+
const response = await fetch(THECLAWBAY_CODEX_RESPONSES_URL, {
|
|
155
|
+
method: "POST",
|
|
156
|
+
headers: buildHostedRequestHeaders(apiKey, options),
|
|
157
|
+
body: JSON.stringify(body),
|
|
158
|
+
signal: options?.signal,
|
|
159
|
+
});
|
|
160
|
+
await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, createHostedRequestModel(model));
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
const message = await response.text();
|
|
163
|
+
if (attempt < maxRetries && isRetryableHttpStatus(response.status)) {
|
|
164
|
+
lastError = new Error(message);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
throw new Error(message);
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
return await readHostedImageGenerationStream(response);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
lastError = error;
|
|
174
|
+
if (error instanceof HostedImageGenerationStreamError && error.partial) {
|
|
175
|
+
latestPartial = error.partial;
|
|
176
|
+
}
|
|
177
|
+
if (error instanceof HostedImageGenerationStreamError && error.retryable && attempt < maxRetries && !options?.signal?.aborted) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (latestPartial && isPartialImageFallbackEnabled()) {
|
|
184
|
+
return { ...latestPartial, usedPartial: true };
|
|
185
|
+
}
|
|
186
|
+
throw lastError instanceof Error ? lastError : new Error("TheClawBay hosted image generation failed");
|
|
187
|
+
}
|
|
188
|
+
async function readHostedImageGenerationStream(response) {
|
|
189
|
+
let finalImage;
|
|
190
|
+
let latestPartial;
|
|
191
|
+
let completed = false;
|
|
192
|
+
for await (const event of parseTheClawBaySse(response)) {
|
|
193
|
+
const eventType = typeof event.type === "string" ? event.type : undefined;
|
|
194
|
+
if (eventType === "response.image_generation_call.partial_image" && typeof event.partial_image_b64 === "string") {
|
|
195
|
+
latestPartial = {
|
|
196
|
+
base64: event.partial_image_b64,
|
|
197
|
+
partialIndex: typeof event.partial_image_index === "number" ? event.partial_image_index : undefined,
|
|
198
|
+
};
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (eventType === "response.output_item.done" && isRecord(event.item) && event.item.type === "image_generation_call") {
|
|
202
|
+
if (typeof event.item.result === "string" && event.item.result.length > 0) {
|
|
203
|
+
finalImage = {
|
|
204
|
+
base64: event.item.result,
|
|
205
|
+
revisedPrompt: typeof event.item.revised_prompt === "string" ? event.item.revised_prompt : undefined,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (eventType === "response.completed") {
|
|
211
|
+
if (isRecord(event.response)) {
|
|
212
|
+
const completedImage = extractFinalImageFromResponse(event.response);
|
|
213
|
+
if (completedImage) {
|
|
214
|
+
finalImage = completedImage;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
completed = true;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (eventType === "response.failed") {
|
|
221
|
+
throw new HostedImageGenerationStreamError(readResponseFailureMessage(event, "TheClawBay hosted image generation failed"), {
|
|
222
|
+
partial: latestPartial,
|
|
223
|
+
retryable: isRetryableResponseFailure(event),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (eventType === "error") {
|
|
227
|
+
throw new HostedImageGenerationStreamError(readResponseFailureMessage(event, "TheClawBay hosted image generation stream error"), {
|
|
228
|
+
partial: latestPartial,
|
|
229
|
+
retryable: true,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (finalImage) {
|
|
234
|
+
return { ...finalImage, usedPartial: false };
|
|
235
|
+
}
|
|
236
|
+
if (latestPartial) {
|
|
237
|
+
throw new HostedImageGenerationStreamError("TheClawBay hosted image generation completed without a final image", {
|
|
238
|
+
partial: latestPartial,
|
|
239
|
+
retryable: true,
|
|
93
240
|
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
lastError = new Error(payload.error?.message ?? `Image generation failed with HTTP ${response.status}`);
|
|
106
|
-
if (attempt < IMAGE_GENERATION_MAX_RETRIES && isRetryableImageError(response.status, payload)) {
|
|
107
|
-
await sleep(IMAGE_GENERATION_RETRY_DELAY_MS * 2 ** attempt, options?.signal);
|
|
241
|
+
}
|
|
242
|
+
if (!completed) {
|
|
243
|
+
throw new Error("TheClawBay hosted image generation stream ended before completion");
|
|
244
|
+
}
|
|
245
|
+
throw new Error("TheClawBay hosted image generation response did not include an image");
|
|
246
|
+
}
|
|
247
|
+
function extractFinalImageFromResponse(response) {
|
|
248
|
+
const output = Array.isArray(response.output) ? response.output : [];
|
|
249
|
+
for (const item of output) {
|
|
250
|
+
if (!isRecord(item) || item.type !== "image_generation_call" || typeof item.result !== "string" || item.result.length === 0) {
|
|
108
251
|
continue;
|
|
109
252
|
}
|
|
110
|
-
|
|
253
|
+
return {
|
|
254
|
+
base64: item.result,
|
|
255
|
+
revisedPrompt: typeof item.revised_prompt === "string" ? item.revised_prompt : undefined,
|
|
256
|
+
};
|
|
111
257
|
}
|
|
112
|
-
|
|
258
|
+
return undefined;
|
|
113
259
|
}
|
|
114
|
-
function
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
260
|
+
function getHostedImageMaxRetries() {
|
|
261
|
+
const value = process.env.PI_CLAWBAY_IMAGE_MAX_RETRIES?.trim();
|
|
262
|
+
if (!value) {
|
|
263
|
+
return DEFAULT_HOSTED_IMAGE_MAX_RETRIES;
|
|
264
|
+
}
|
|
265
|
+
const parsed = Number.parseInt(value, 10);
|
|
266
|
+
return Number.isFinite(parsed) ? Math.max(0, Math.min(parsed, 5)) : DEFAULT_HOSTED_IMAGE_MAX_RETRIES;
|
|
121
267
|
}
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
268
|
+
function isPartialImageFallbackEnabled() {
|
|
269
|
+
const value = process.env[ALLOW_PARTIAL_ENV]?.trim().toLowerCase();
|
|
270
|
+
return value === "1" || value === "true" || value === "yes" || value === "on";
|
|
271
|
+
}
|
|
272
|
+
function isRetryableHttpStatus(status) {
|
|
273
|
+
return status === 408 || status === 409 || status === 429 || status >= 500;
|
|
274
|
+
}
|
|
275
|
+
function isRetryableResponseFailure(event) {
|
|
276
|
+
const response = isRecord(event.response) ? event.response : undefined;
|
|
277
|
+
const error = isRecord(response?.error) ? response.error : undefined;
|
|
278
|
+
const code = typeof error?.code === "string" ? error.code : "";
|
|
279
|
+
const type = typeof error?.type === "string" ? error.type : "";
|
|
280
|
+
return code === "service_unavailable" || code === "proxy_request_failed" || type === "server_error";
|
|
281
|
+
}
|
|
282
|
+
async function* parseTheClawBaySse(response) {
|
|
283
|
+
if (!response.body) {
|
|
284
|
+
return;
|
|
126
285
|
}
|
|
127
|
-
const
|
|
128
|
-
|
|
286
|
+
const reader = response.body.getReader();
|
|
287
|
+
const decoder = new TextDecoder();
|
|
288
|
+
let buffer = "";
|
|
289
|
+
try {
|
|
290
|
+
while (true) {
|
|
291
|
+
const { done, value } = await reader.read();
|
|
292
|
+
if (done) {
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
buffer += decoder.decode(value, { stream: true });
|
|
296
|
+
let index = buffer.indexOf("\n\n");
|
|
297
|
+
while (index !== -1) {
|
|
298
|
+
const chunk = buffer.slice(0, index);
|
|
299
|
+
buffer = buffer.slice(index + 2);
|
|
300
|
+
const data = chunk
|
|
301
|
+
.split("\n")
|
|
302
|
+
.filter((line) => line.startsWith("data:"))
|
|
303
|
+
.map((line) => line.slice(5).trim())
|
|
304
|
+
.join("\n")
|
|
305
|
+
.trim();
|
|
306
|
+
if (data && data !== "[DONE]") {
|
|
307
|
+
yield JSON.parse(data);
|
|
308
|
+
}
|
|
309
|
+
index = buffer.indexOf("\n\n");
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
finally {
|
|
314
|
+
try {
|
|
315
|
+
await reader.cancel();
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
// Ignore stream cleanup errors.
|
|
319
|
+
}
|
|
320
|
+
try {
|
|
321
|
+
reader.releaseLock();
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
// Ignore stream cleanup errors.
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function isRecord(value) {
|
|
329
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
330
|
+
}
|
|
331
|
+
function readResponseFailureMessage(event, fallback) {
|
|
332
|
+
const response = isRecord(event.response) ? event.response : undefined;
|
|
333
|
+
const error = isRecord(response?.error) ? response.error : undefined;
|
|
334
|
+
if (typeof error?.message === "string" && error.message.trim()) {
|
|
335
|
+
return error.message;
|
|
336
|
+
}
|
|
337
|
+
if (typeof event.message === "string" && event.message.trim()) {
|
|
338
|
+
return event.message;
|
|
339
|
+
}
|
|
340
|
+
return fallback;
|
|
129
341
|
}
|
|
130
342
|
export function streamSimpleTheClawBayImageGeneration(model, context, options) {
|
|
131
343
|
const stream = createAssistantMessageEventStream();
|
|
@@ -133,7 +345,7 @@ export function streamSimpleTheClawBayImageGeneration(model, context, options) {
|
|
|
133
345
|
const output = createEmptyAssistantMessage(model);
|
|
134
346
|
try {
|
|
135
347
|
const result = await requestImageGeneration(model, context, options);
|
|
136
|
-
const text = formatSuccessMessage(result.path, result.bytes, result.revisedPrompt);
|
|
348
|
+
const text = formatSuccessMessage(result.path, result.bytes, result.revisedPrompt, result.usedPartial);
|
|
137
349
|
output.content.push({ type: "text", text });
|
|
138
350
|
stream.push({ type: "start", partial: output });
|
|
139
351
|
stream.push({ type: "text_start", contentIndex: 0, partial: output });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-generation.js","sourceRoot":"","sources":["../src/image-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACN,iCAAiC,GAOjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAanE,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAE7C,MAAM,UAAU,iBAAiB;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,WAAW,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAiB;IACrD,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,KAAK,EAAE;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACpE;QACD,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACrB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,OAAO;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC/B,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACxC,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9E,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,aAAsB;IAChF,MAAM,KAAK,GAAG,CAAC,8BAA8B,IAAI,OAAO,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC1F,IAAI,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACpC,KAAiB,EACjB,OAAgB,EAChB,OAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,OAAgC;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;IACvC,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,sBAAsB,CAAC;AAC7G,CAAC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACtC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B,CACzC,KAAiB,EACjB,MAAc,EACd,IAAa,EACb,OAA6B;IAE7B,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACrD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,4BAA4B,EAAE,OAAO,EAAE,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;QACnE,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,qCAAqC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,IAAI,OAAO,GAAG,4BAA4B,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAC/F,MAAM,KAAK,CAAC,+BAA+B,GAAG,CAAC,IAAI,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7E,SAAS;QACV,CAAC;QACD,MAAM;IACP,CAAC;IACD,MAAM,SAAS,CAAC;AACjB,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAc,EAAE,IAAa,EAAE,OAA6B;IACjG,OAAO,KAAK,CAAC,iCAAiC,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAClF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,MAAM;KACvB,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAiB,EAAE,OAAgB,EAAE,OAA6B;IACtG,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAClE,OAAO,CAAC,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qCAAqC,CACpD,KAAiB,EACjB,OAAgB,EAChB,OAA6B;IAE7B,MAAM,MAAM,GAAG,iCAAiC,EAAE,CAAC;IACnD,KAAK,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACnF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,UAAU,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,CAAC,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"image-generation.js","sourceRoot":"","sources":["../src/image-generation.ts"],"names":[],"mappings":"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"}
|