pi-clawbay 0.0.14 → 0.0.16

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
@@ -1,107 +1,76 @@
1
1
  # TheClawBay Provider for Pi Coding Agent
2
2
 
3
- A provider extension for [pi coding agent](https://github.com/badlogic/pi-mono) that enables access to GPT-5 and Codex models through [TheClawBay](https://theclawbay.com) API.
3
+ `pi-clawbay` is a Pi Coding Agent provider extension for [TheClawBay](https://theclawbay.com). It exposes TheClawBay GPT/Codex models through Pi and includes experimental Codex-style hosted image generation support.
4
4
 
5
5
  ## Features
6
6
 
7
- - **GPT-5 & Codex Models** - Access via Codex Responses API with session-based prompt cache
8
- - **Single Provider** - Only `theclawbay` is registered
9
- - **GPT-5.4 Split Options** - `gpt-5.4` and `gpt-5.4[1m]` for clearer cost/context choice
10
- - **High Usage Headroom** - More capacity than standard subscriptions
11
- - **Simple Setup** - Single API key
7
+ - **Single Pi provider:** registers `theclawbay`.
8
+ - **Codex Responses transport:** sends requests to TheClawBay's native Codex route over HTTP streaming.
9
+ - **Dynamic model discovery:** loads model IDs from TheClawBay's `/v1/models` endpoint and caches successful discovery results.
10
+ - **GPT-5.4 variants:** exposes `gpt-5.4` and `gpt-5.4[1m]` as separate Pi selections while remapping both to the upstream `gpt-5.4` model ID.
11
+ - **Hosted image generation:** optional Codex-style `image_generation` hosted tool support behind an explicit feature flag.
12
+ - **Quota command:** adds `/quota` for current TheClawBay usage information.
12
13
 
13
14
  ## Installation
14
15
 
15
- ### Recommended: Install from npm
16
+ ### Recommended: npm
16
17
 
17
18
  ```bash
18
19
  pi install npm:pi-clawbay@latest
19
20
  ```
20
21
 
21
- This uses the published npm package and avoids npm's GitHub dependency path.
22
+ Use the npm package form above. Do not install `npm:chrislopez24/pi-clawbay`; npm treats that as a GitHub-style dependency and it can leave broken global symlinks.
22
23
 
23
- Do not use:
24
-
25
- ```bash
26
- pi install npm:chrislopez24/pi-clawbay
27
- ```
28
-
29
- That form is treated as a GitHub install, not a registry package install, and it can leave broken global symlinks behind.
30
-
31
- ### Local Development
24
+ ### Local development
32
25
 
33
26
  ```bash
34
27
  pi -e /path/to/pi-clawbay
35
28
  ```
36
29
 
37
- Use this only while actively developing the extension locally.
30
+ Use local loading only while developing or testing this extension.
38
31
 
39
32
  ## Configuration
40
33
 
41
- ### Environment Variable
42
-
43
34
  Set your TheClawBay API key:
44
35
 
45
36
  ```bash
46
37
  export THECLAWBAY_API_KEY=your-api-key-here
47
38
  ```
48
39
 
49
- Get your API key from [TheClawBay Dashboard](https://theclawbay.com).
40
+ Get an API key from the [TheClawBay Dashboard](https://theclawbay.com).
50
41
 
51
- ### Available Models
42
+ ## Provider transport
52
43
 
53
- Model IDs are discovered dynamically at extension load from:
44
+ The provider sends `theclawbay/*` requests to TheClawBay's native Codex route:
54
45
 
55
- - `GET https://api.theclawbay.com/v1/models`
56
-
57
- If discovery fails or `THECLAWBAY_API_KEY` is not set yet, the extension falls back to the last successful discovery cache, then to a bundled default list so `/model` still works on startup. Live discovery refreshes the cache in the background after the provider has been registered.
58
-
59
- Requests for `theclawbay/*` models are sent through TheClawBay's native Codex route:
60
-
61
- - `https://api.theclawbay.com/backend-api/codex`
46
+ ```text
47
+ https://api.theclawbay.com/backend-api/codex
48
+ ```
62
49
 
63
- This extension uses a custom Responses transport for that route. It sends:
50
+ The extension uses a custom HTTP streaming Responses transport. It sends:
64
51
 
65
52
  - `Authorization: Bearer $THECLAWBAY_API_KEY`
66
53
  - `chatgpt-account-id: theclawbay`
67
- - `session_id` when Pi provides a session id
54
+ - `originator: pi`
55
+ - `OpenAI-Beta: responses=experimental`
56
+ - `session_id` when Pi provides a session ID
68
57
  - `prompt_cache_key` in the request body
69
58
 
70
- 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.
59
+ It intentionally does not use Pi's built-in Codex WebSocket transport. That path expects ChatGPT/Codex JWT-style credentials and can fail with normal TheClawBay API keys.
71
60
 
72
- Based on the live docs at `https://theclawbay.com/docs`:
61
+ ## Model discovery and filtering
73
62
 
74
- - OpenAI-compatible apps use `https://api.theclawbay.com/v1`
75
- - Native Codex config uses `https://api.theclawbay.com/backend-api/codex`
76
- - The docs recommend calling `/models` first and selecting an available model dynamically
63
+ At startup, the extension calls:
77
64
 
78
- ### GPT-5.4 Variants In This Extension
79
-
80
- The live TheClawBay docs expose `gpt-5.4` as the upstream model. This extension presents it in Pi as two selectable entries:
81
-
82
- - `theclawbay/gpt-5.4` → standard variant, capped to `272k` context in Pi
83
- - `theclawbay/gpt-5.4[1m]` → long-context variant, configured to `1,050,000`
84
-
85
- Internally:
86
-
87
- - `gpt-5.4` stays as-is
88
- - `gpt-5.4[1m]` is remapped to upstream `gpt-5.4` before the request is sent
89
-
90
- Why split it?
91
-
92
- - `gpt-5.4` is the cheaper/default option
93
- - `gpt-5.4[1m]` gives explicit access to long context
94
- - both end up using the same official upstream model id from TheClawBay
95
-
96
- ### Model Limits
65
+ ```text
66
+ GET https://api.theclawbay.com/v1/models
67
+ ```
97
68
 
98
- - `gpt-5.4` is configured with a `272,000` token context window.
99
- - `gpt-5.4[1m]` is configured with a `1,050,000` token context window.
100
- - Current non-5.4 GPT-5/Codex variants default to `400,000` context and `128,000` max output tokens.
69
+ If live discovery fails, it falls back to the last successful cache and then to the bundled default list.
101
70
 
102
- ### Example Model List
71
+ Selectable Pi chat models are filtered to GPT/Codex-compatible models. Image API models such as `gpt-image-2` and `gpt-image-1.5` are intentionally not exposed in `/model`; they are image-generation API models, not chat/Codex models.
103
72
 
104
- Current fallback list in this package:
73
+ ### Default fallback models
105
74
 
106
75
  - `gpt-5.5`
107
76
  - `gpt-5.4`
@@ -113,92 +82,167 @@ Current fallback list in this package:
113
82
  - `gpt-5.1-codex-max`
114
83
  - `gpt-5.1-codex-mini`
115
84
 
116
- ## Usage
85
+ ### GPT-5.4 variants
117
86
 
118
- ### Select a Model
87
+ The upstream TheClawBay model ID is `gpt-5.4`. This extension exposes two Pi entries for clearer cost/context selection:
119
88
 
120
- Use `/model` command in pi:
89
+ | Pi model | Upstream model | Context configured in Pi |
90
+ |----------|----------------|--------------------------|
91
+ | `theclawbay/gpt-5.4` | `gpt-5.4` | `272,000` tokens |
92
+ | `theclawbay/gpt-5.4[1m]` | `gpt-5.4` | `1,050,000` tokens |
93
+
94
+ Other GPT/Codex fallback models use a `272,000` token context window and `128,000` max output tokens.
95
+
96
+ ## Image generation
97
+
98
+ `pi-clawbay` supports experimental hosted image generation in the Codex style used by OpenAI Codex CLI.
99
+
100
+ Enable it explicitly:
101
+
102
+ ```bash
103
+ export PI_CLAWBAY_IMAGE_GENERATION=hosted
104
+ ```
105
+
106
+ Then select a text/Codex model, for example:
121
107
 
122
108
  ```text
123
109
  /model theclawbay/gpt-5.5
124
- /model theclawbay/gpt-5.4
125
- /model theclawbay/gpt-5.4[1m]
126
110
  ```
127
111
 
128
- ### Commands
112
+ Ask for an image naturally:
129
113
 
130
- This extension currently registers:
114
+ ```text
115
+ Generate a minimalist black sailboat icon on a white background. No text.
116
+ ```
117
+
118
+ When the feature flag is enabled, the provider adds the hosted Responses tool:
119
+
120
+ ```json
121
+ { "type": "image_generation", "output_format": "png" }
122
+ ```
123
+
124
+ The stream parser handles `image_generation_call` items, decodes the returned base64 PNG, and saves it to:
131
125
 
132
126
  ```text
133
- /quota
127
+ ~/.pi/agent/generated_images/<session_id>/<image_generation_call_id>.png
128
+ ```
129
+
130
+ The assistant response includes:
131
+
132
+ - a `file://` URL
133
+ - the filesystem path
134
+ - the revised prompt, when returned by TheClawBay
135
+
136
+ For tests or automation, override the output root:
137
+
138
+ ```bash
139
+ export PI_CLAWBAY_GENERATED_IMAGES_DIR=/absolute/output/dir
134
140
  ```
135
141
 
136
- `/cachehit` was removed.
142
+ ### Image model IDs
137
143
 
138
- ### Programmatic Usage
144
+ The current TheClawBay image model ID is:
145
+
146
+ ```text
147
+ gpt-image-2
148
+ ```
149
+
150
+ It is not `gpt-image-2.0`. The extension keeps `gpt-image-*` out of the Pi chat model list. Hosted image generation is invoked from a text/Codex model through the `image_generation` hosted tool.
151
+
152
+ ### Skill guidance
153
+
154
+ This package includes a Pi skill:
155
+
156
+ ```text
157
+ theclawbay-imagegen
158
+ ```
159
+
160
+ The skill documents the recommended image-generation workflow and fallback behavior. It is helpful guidance for the agent, but it is not a separate runtime requirement. The provider stream implements the actual hosted image generation support.
161
+
162
+ If needed, load it explicitly inside Pi:
163
+
164
+ ```text
165
+ /skill:theclawbay-imagegen
166
+ ```
167
+
168
+ ### Direct Images API fallback
169
+
170
+ For programmatic image generation outside the Pi provider loop, call TheClawBay's OpenAI-compatible Images API directly:
171
+
172
+ ```http
173
+ POST https://api.theclawbay.com/v1/images/generations
174
+ Authorization: Bearer $THECLAWBAY_API_KEY
175
+ Content-Type: application/json
176
+ ```
139
177
 
140
- ```typescript
141
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
178
+ Example payload:
142
179
 
143
- export default function (pi: ExtensionAPI) {
144
- // After loading this extension, models are available:
145
- // - theclawbay/gpt-5.5
146
- // - theclawbay/gpt-5.4
147
- // - theclawbay/gpt-5.4[1m]
148
- // - theclawbay/gpt-5.4-mini
149
- // - theclawbay/gpt-5.3-codex
180
+ ```json
181
+ {
182
+ "model": "gpt-image-2",
183
+ "prompt": "A minimalist black sailboat icon on a white background. No text.",
184
+ "size": "1024x1024",
185
+ "quality": "low",
186
+ "output_format": "png"
150
187
  }
151
188
  ```
152
189
 
153
- ## API Reference
190
+ Use the direct API only when you need programmatic image generation outside Pi or when hosted generation is unavailable.
154
191
 
155
- ### Endpoints
192
+ ## Usage
156
193
 
157
- | Provider | Base URL | API Type |
158
- |----------|----------|----------|
159
- | `theclawbay` | `https://api.theclawbay.com/backend-api/codex` | OpenAI Codex Responses |
194
+ ### Select a model
160
195
 
161
- ### Authentication
196
+ ```text
197
+ /model theclawbay/gpt-5.5
198
+ /model theclawbay/gpt-5.4
199
+ /model theclawbay/gpt-5.4[1m]
200
+ ```
162
201
 
163
- All requests use Bearer token authentication:
202
+ ### Commands
164
203
 
165
204
  ```text
166
- Authorization: Bearer THECLAWBAY_API_KEY
205
+ /quota
167
206
  ```
168
207
 
169
- ### Quota Checking
208
+ `/quota` shows current TheClawBay usage windows and reset times.
170
209
 
171
- Check your current usage:
210
+ ## API reference
211
+
212
+ | Provider | Base URL | API type |
213
+ |----------|----------|----------|
214
+ | `theclawbay` | `https://api.theclawbay.com/backend-api/codex` | Responses over HTTP streaming |
215
+
216
+ All provider requests use Bearer token authentication:
217
+
218
+ ```text
219
+ Authorization: Bearer $THECLAWBAY_API_KEY
220
+ ```
221
+
222
+ Quota endpoint:
172
223
 
173
224
  ```bash
174
225
  curl "https://theclawbay.com/api/codex-auth/v1/quota" \
175
226
  -H "Authorization: Bearer $THECLAWBAY_API_KEY"
176
227
  ```
177
228
 
178
- ## Error Handling
179
-
180
- Common error codes:
181
-
182
- | Code | Description |
183
- |------|-------------|
184
- | `weekly_cost_limit_reached` | Weekly spend cap hit |
185
- | `5h_cost_limit_reached` | 5-hour spend cap hit |
186
- | `invalid_api_key` | Key missing or malformed |
187
- | `model_not_found` | Requested model unavailable |
188
-
189
- ## Building
229
+ ## Build and test
190
230
 
191
231
  ```bash
192
232
  npm install
193
- npm run build
233
+ npm run check
234
+ npm test
194
235
  npm pack --dry-run
195
236
  ```
196
237
 
197
238
  ## Publishing
198
239
 
240
+ Publishing is handled by the GitHub Actions workflow in `.github/workflows/publish.yml`.
241
+
242
+ Manual local publishing is not recommended. Use the workflow so npm provenance is attached:
243
+
199
244
  ```bash
200
- npm version patch
201
- npm publish
245
+ gh workflow run publish.yml --ref main
202
246
  ```
203
247
 
204
248
  ## Resources
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,+BAA+B,CAAC;AAocvF,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAsCxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAqBH,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,+BAA+B,CAAC;AA49BvF,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAsCxC"}
package/dist/index.js CHANGED
@@ -19,20 +19,24 @@
19
19
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
20
20
  import { homedir } from "node:os";
21
21
  import { dirname, join } from "node:path";
22
- import { streamSimpleOpenAIResponses, } from "@mariozechner/pi-ai";
22
+ import { pathToFileURL } from "node:url";
23
+ import { calculateCost, clampThinkingLevel, createAssistantMessageEventStream, parseStreamingJson, streamSimpleOpenAIResponses, } from "@mariozechner/pi-ai";
23
24
  const THECLAWBAY_OPENAI_DISCOVERY_BASE_URL = "https://api.theclawbay.com/v1";
24
25
  const THECLAWBAY_CODEX_BASE_URL = "https://api.theclawbay.com/backend-api/codex";
25
26
  const THECLAWBAY_QUOTA_URL = "https://theclawbay.com/api/codex-auth/v1/quota";
26
27
  const THECLAWBAY_OPENAI_MODELS_URL = `${THECLAWBAY_OPENAI_DISCOVERY_BASE_URL}/models`;
27
28
  const THECLAWBAY_CODEX_API = "theclawbay-codex-responses";
28
29
  const THECLAWBAY_CHATGPT_ACCOUNT_ID = "theclawbay";
30
+ const IMAGE_GENERATION_ENV = "PI_CLAWBAY_IMAGE_GENERATION";
31
+ const GENERATED_IMAGES_DIR_ENV = "PI_CLAWBAY_GENERATED_IMAGES_DIR";
32
+ const HOSTED_IMAGE_GENERATION_TOOL = { type: "image_generation", output_format: "png" };
29
33
  const MODEL_CACHE_VERSION = 1;
30
34
  const MODEL_CACHE_TTL_MS = 6 * 60 * 60 * 1000;
31
35
  const GPT_54_UPSTREAM_MODEL_ID = "gpt-5.4";
32
36
  const GPT_54_DEFAULT_MODEL_ID = "gpt-5.4";
33
37
  const GPT_54_1M_MODEL_ID = "gpt-5.4[1m]";
34
38
  const MODEL_INPUTS = ["text", "image"];
35
- const GPT_54_AND_55_THINKING_LEVEL_MAP = { xhigh: "xhigh" };
39
+ const OPENAI_CODEX_THINKING_LEVEL_MAP = { xhigh: "xhigh", minimal: "low" };
36
40
  const ZERO_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
37
41
  const OPENAI_KNOWN_COSTS = {
38
42
  "gpt-5.5": { input: 5.0, output: 30.0, cacheRead: 0.5, cacheWrite: 5.0 },
@@ -45,8 +49,8 @@ const OPENAI_KNOWN_COSTS = {
45
49
  "gpt-5.1-codex-max": { input: 1.25, output: 10.0, cacheRead: 0.125, cacheWrite: 1.25 },
46
50
  "gpt-5.1-codex-mini": { input: 0.25, output: 2.0, cacheRead: 0.025, cacheWrite: 0.25 },
47
51
  };
48
- const OPENAI_DEFAULT_CONTEXT_WINDOW = 258000;
49
- const OPENAI_272K_CONTEXT_WINDOW = 272000;
52
+ const OPENAI_CODEX_CONTEXT_WINDOW = 272000;
53
+ const OPENAI_DEFAULT_CONTEXT_WINDOW = OPENAI_CODEX_CONTEXT_WINDOW;
50
54
  const OPENAI_FRONTIER_CONTEXT_WINDOW = 1050000;
51
55
  const OPENAI_DEFAULT_MAX_TOKENS = 128000;
52
56
  const FALLBACK_OPENAI_MODEL_IDS = [
@@ -100,12 +104,16 @@ function formatOpenAIModelName(id) {
100
104
  function isGpt54Or55Model(id) {
101
105
  return id.startsWith("gpt-5.4") || id.startsWith("gpt-5.5");
102
106
  }
107
+ function isImageGenerationModel(id) {
108
+ return id.startsWith("gpt-image-");
109
+ }
103
110
  function createModelConfig(id, name, cost, contextWindow, maxTokens) {
111
+ const isReasoningModel = !isImageGenerationModel(id);
104
112
  return {
105
113
  id,
106
114
  name,
107
- reasoning: true,
108
- ...(isGpt54Or55Model(id) ? { thinkingLevelMap: { ...GPT_54_AND_55_THINKING_LEVEL_MAP } } : {}),
115
+ reasoning: isReasoningModel,
116
+ ...(isReasoningModel && isGpt54Or55Model(id) ? { thinkingLevelMap: { ...OPENAI_CODEX_THINKING_LEVEL_MAP } } : {}),
109
117
  input: [...MODEL_INPUTS],
110
118
  cost: { ...cost },
111
119
  contextWindow,
@@ -115,7 +123,7 @@ function createModelConfig(id, name, cost, contextWindow, maxTokens) {
115
123
  function createOpenAIModel(id) {
116
124
  const cost = OPENAI_KNOWN_COSTS[id] ?? ZERO_COST;
117
125
  if (id === GPT_54_DEFAULT_MODEL_ID) {
118
- return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_272K_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
126
+ return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_CODEX_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
119
127
  }
120
128
  if (id === GPT_54_1M_MODEL_ID) {
121
129
  return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_FRONTIER_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
@@ -123,14 +131,14 @@ function createOpenAIModel(id) {
123
131
  return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
124
132
  }
125
133
  function buildOpenAIModels(ids) {
126
- return dedupeIds(ids).map((id) => createOpenAIModel(id));
134
+ return dedupeIds(ids).filter((id) => !isImageGenerationModel(id)).map((id) => createOpenAIModel(id));
127
135
  }
128
136
  function buildFallbackOpenAIModels() {
129
137
  return buildOpenAIModels(FALLBACK_OPENAI_MODEL_IDS);
130
138
  }
131
139
  function normalizeOpenAIModelIds(ids) {
132
140
  return dedupeIds(ids.flatMap((id) => {
133
- if (id.startsWith("claude-")) {
141
+ if (id.startsWith("claude-") || isImageGenerationModel(id)) {
134
142
  return [];
135
143
  }
136
144
  if (id === GPT_54_UPSTREAM_MODEL_ID) {
@@ -157,7 +165,15 @@ function buildTheClawBayHeaders(options) {
157
165
  ...(options?.sessionId ? { session_id: options.sessionId } : {}),
158
166
  };
159
167
  }
160
- function buildTheClawBayPayload(payload, context) {
168
+ function isHostedImageGenerationEnabled() {
169
+ return process.env[IMAGE_GENERATION_ENV]?.trim().toLowerCase() === "hosted";
170
+ }
171
+ function appendHostedImageGenerationTool(tools) {
172
+ const existing = Array.isArray(tools) ? tools.filter((tool) => tool && typeof tool === "object") : [];
173
+ const hasHostedImageTool = existing.some((tool) => tool.type === HOSTED_IMAGE_GENERATION_TOOL.type);
174
+ return hasHostedImageTool ? existing : [...existing, { ...HOSTED_IMAGE_GENERATION_TOOL }];
175
+ }
176
+ function buildTheClawBayPayload(payload, context, options) {
161
177
  if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
162
178
  return payload;
163
179
  }
@@ -178,6 +194,7 @@ function buildTheClawBayPayload(payload, context) {
178
194
  ...source,
179
195
  instructions: context.systemPrompt,
180
196
  input,
197
+ ...(options?.includeHostedImageGeneration ? { tools: appendHostedImageGenerationTool(source.tools) } : {}),
181
198
  include: dedupeIds([...include, "reasoning.encrypted_content"]),
182
199
  text: { verbosity: "medium" },
183
200
  tool_choice: "auto",
@@ -185,6 +202,456 @@ function buildTheClawBayPayload(payload, context) {
185
202
  store: false,
186
203
  };
187
204
  }
205
+ function sanitizeGeneratedImagePathPart(value, fallback) {
206
+ const sanitized = (value?.trim() || fallback).replace(/[^a-zA-Z0-9_-]/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
207
+ return (sanitized || fallback).slice(0, 128);
208
+ }
209
+ function getGeneratedImagesRoot() {
210
+ const overrideDir = process.env[GENERATED_IMAGES_DIR_ENV]?.trim();
211
+ if (overrideDir) {
212
+ return overrideDir;
213
+ }
214
+ const agentDir = process.env.PI_CODING_AGENT_DIR?.trim() || join(homedir(), ".pi", "agent");
215
+ return join(agentDir, "generated_images");
216
+ }
217
+ function getGeneratedImagePath(sessionId, callId) {
218
+ return join(getGeneratedImagesRoot(), sanitizeGeneratedImagePathPart(sessionId, "session"), `${sanitizeGeneratedImagePathPart(callId, "image_generation_call")}.png`);
219
+ }
220
+ function saveImageGenerationResult(sessionId, callId, result) {
221
+ const filePath = getGeneratedImagePath(sessionId, callId);
222
+ mkdirSync(dirname(filePath), { recursive: true });
223
+ writeFileSync(filePath, Buffer.from(result, "base64"));
224
+ return filePath;
225
+ }
226
+ function responseInputContent(content) {
227
+ if (typeof content === "string") {
228
+ return [{ type: "input_text", text: content }];
229
+ }
230
+ return content.map((item) => {
231
+ if (item.type === "text") {
232
+ return { type: "input_text", text: item.text };
233
+ }
234
+ return {
235
+ type: "input_image",
236
+ detail: "auto",
237
+ image_url: `data:${item.mimeType};base64,${item.data}`,
238
+ };
239
+ });
240
+ }
241
+ function convertTheClawBayResponsesMessages(context, model) {
242
+ const messages = [];
243
+ for (const msg of context.messages) {
244
+ if (msg.role === "user") {
245
+ const content = responseInputContent(msg.content);
246
+ if (Array.isArray(content) && content.length > 0) {
247
+ messages.push({ role: "user", content });
248
+ }
249
+ }
250
+ else if (msg.role === "assistant") {
251
+ for (const block of msg.content) {
252
+ if (block.type === "thinking" && block.thinkingSignature) {
253
+ try {
254
+ messages.push(JSON.parse(block.thinkingSignature));
255
+ }
256
+ catch {
257
+ // Ignore malformed opaque reasoning history.
258
+ }
259
+ }
260
+ else if (block.type === "text") {
261
+ messages.push({
262
+ type: "message",
263
+ role: "assistant",
264
+ content: [{ type: "output_text", text: block.text, annotations: [] }],
265
+ status: "completed",
266
+ });
267
+ }
268
+ else if (block.type === "toolCall") {
269
+ const [callId, itemId] = block.id.split("|");
270
+ messages.push({
271
+ type: "function_call",
272
+ id: itemId,
273
+ call_id: callId,
274
+ name: block.name,
275
+ arguments: JSON.stringify(block.arguments),
276
+ });
277
+ }
278
+ }
279
+ }
280
+ else if (msg.role === "toolResult") {
281
+ const textResult = msg.content
282
+ .filter((item) => item.type === "text")
283
+ .map((item) => item.text)
284
+ .join("\n");
285
+ const imageResults = msg.content.filter((item) => item.type === "image");
286
+ const [callId] = msg.toolCallId.split("|");
287
+ const output = imageResults.length > 0 && model.input.includes("image")
288
+ ? [
289
+ ...(textResult ? [{ type: "input_text", text: textResult }] : []),
290
+ ...imageResults.map((item) => ({
291
+ type: "input_image",
292
+ detail: "auto",
293
+ image_url: `data:${item.mimeType};base64,${item.data}`,
294
+ })),
295
+ ]
296
+ : textResult || "(see attached image)";
297
+ messages.push({ type: "function_call_output", call_id: callId, output });
298
+ }
299
+ }
300
+ return messages;
301
+ }
302
+ function convertTheClawBayResponsesTools(context) {
303
+ const functionTools = context.tools?.map((tool) => ({
304
+ type: "function",
305
+ name: tool.name,
306
+ description: tool.description,
307
+ parameters: tool.parameters,
308
+ strict: null,
309
+ }));
310
+ return appendHostedImageGenerationTool(functionTools);
311
+ }
312
+ function buildHostedImageGenerationPayload(model, context, options) {
313
+ const body = {
314
+ model: model.id,
315
+ store: false,
316
+ stream: true,
317
+ instructions: context.systemPrompt,
318
+ input: convertTheClawBayResponsesMessages(context, model),
319
+ text: { verbosity: "medium" },
320
+ include: ["reasoning.encrypted_content"],
321
+ prompt_cache_key: options?.sessionId,
322
+ tool_choice: "auto",
323
+ parallel_tool_calls: true,
324
+ tools: convertTheClawBayResponsesTools(context),
325
+ };
326
+ if (options?.temperature !== undefined) {
327
+ body.temperature = options.temperature;
328
+ }
329
+ if (options?.maxTokens !== undefined) {
330
+ body.max_output_tokens = options.maxTokens;
331
+ }
332
+ if (model.reasoning) {
333
+ const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
334
+ if (clampedReasoning && clampedReasoning !== "off") {
335
+ body.reasoning = {
336
+ effort: model.thinkingLevelMap?.[clampedReasoning] ?? clampedReasoning,
337
+ summary: "auto",
338
+ };
339
+ }
340
+ else if (model.thinkingLevelMap?.off !== null) {
341
+ body.reasoning = { effort: model.thinkingLevelMap?.off ?? "none" };
342
+ }
343
+ }
344
+ return body;
345
+ }
346
+ function resolveTheClawBayCodexResponsesUrl(baseUrl) {
347
+ const normalized = baseUrl.replace(/\/+$/, "");
348
+ if (normalized.endsWith("/responses")) {
349
+ return normalized;
350
+ }
351
+ return `${normalized}/responses`;
352
+ }
353
+ async function* parseTheClawBaySse(response) {
354
+ if (!response.body) {
355
+ return;
356
+ }
357
+ const reader = response.body.getReader();
358
+ const decoder = new TextDecoder();
359
+ let buffer = "";
360
+ try {
361
+ while (true) {
362
+ const { done, value } = await reader.read();
363
+ if (done) {
364
+ break;
365
+ }
366
+ buffer += decoder.decode(value, { stream: true });
367
+ let index = buffer.indexOf("\n\n");
368
+ while (index !== -1) {
369
+ const chunk = buffer.slice(0, index);
370
+ buffer = buffer.slice(index + 2);
371
+ const data = chunk
372
+ .split("\n")
373
+ .filter((line) => line.startsWith("data:"))
374
+ .map((line) => line.slice(5).trim())
375
+ .join("\n")
376
+ .trim();
377
+ if (data && data !== "[DONE]") {
378
+ yield JSON.parse(data);
379
+ }
380
+ index = buffer.indexOf("\n\n");
381
+ }
382
+ }
383
+ }
384
+ finally {
385
+ try {
386
+ await reader.cancel();
387
+ }
388
+ catch {
389
+ // Ignore stream cleanup errors.
390
+ }
391
+ try {
392
+ reader.releaseLock();
393
+ }
394
+ catch {
395
+ // Ignore stream cleanup errors.
396
+ }
397
+ }
398
+ }
399
+ function isRecord(value) {
400
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
401
+ }
402
+ function getEventType(event) {
403
+ return typeof event.type === "string" ? event.type : undefined;
404
+ }
405
+ function getEventItem(event) {
406
+ return isRecord(event.item) ? event.item : undefined;
407
+ }
408
+ function getBlockIndex(output) {
409
+ return output.content.length - 1;
410
+ }
411
+ function pushGeneratedImageText(stream, output, filePath, revisedPrompt) {
412
+ const lines = [`Generated image saved to: ${pathToFileURL(filePath).href}`, `Path: ${filePath}`];
413
+ if (revisedPrompt) {
414
+ lines.push(`Revised prompt: ${revisedPrompt}`);
415
+ }
416
+ const text = lines.join("\n");
417
+ output.content.push({ type: "text", text });
418
+ const contentIndex = getBlockIndex(output);
419
+ stream.push({ type: "text_start", contentIndex, partial: output });
420
+ stream.push({ type: "text_delta", contentIndex, delta: text, partial: output });
421
+ stream.push({ type: "text_end", contentIndex, content: text, partial: output });
422
+ }
423
+ function readResponseUsage(response, output, model) {
424
+ if (!isRecord(response.usage)) {
425
+ return;
426
+ }
427
+ const usage = response.usage;
428
+ const inputTokens = typeof usage.input_tokens === "number" ? usage.input_tokens : 0;
429
+ const outputTokens = typeof usage.output_tokens === "number" ? usage.output_tokens : 0;
430
+ const totalTokens = typeof usage.total_tokens === "number" ? usage.total_tokens : inputTokens + outputTokens;
431
+ const inputDetails = isRecord(usage.input_tokens_details) ? usage.input_tokens_details : undefined;
432
+ const cachedTokens = typeof inputDetails?.cached_tokens === "number" ? inputDetails.cached_tokens : 0;
433
+ output.usage = {
434
+ input: inputTokens - cachedTokens,
435
+ output: outputTokens,
436
+ cacheRead: cachedTokens,
437
+ cacheWrite: 0,
438
+ totalTokens,
439
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
440
+ };
441
+ calculateCost(model, output.usage);
442
+ }
443
+ function mapResponseStopReason(status) {
444
+ if (status === "incomplete") {
445
+ return "length";
446
+ }
447
+ if (status === "failed" || status === "cancelled") {
448
+ return "error";
449
+ }
450
+ return "stop";
451
+ }
452
+ async function processTheClawBayHostedImageStream(events, output, stream, model, options) {
453
+ let currentItem = null;
454
+ let currentBlock = null;
455
+ for await (const event of events) {
456
+ const eventType = getEventType(event);
457
+ if (eventType === "response.created" && isRecord(event.response) && typeof event.response.id === "string") {
458
+ output.responseId = event.response.id;
459
+ }
460
+ else if (eventType === "response.output_item.added") {
461
+ const item = getEventItem(event);
462
+ if (!item || typeof item.type !== "string") {
463
+ continue;
464
+ }
465
+ currentItem = item;
466
+ if (item.type === "reasoning") {
467
+ currentBlock = { type: "thinking", thinking: "" };
468
+ output.content.push(currentBlock);
469
+ stream.push({ type: "thinking_start", contentIndex: getBlockIndex(output), partial: output });
470
+ }
471
+ else if (item.type === "message") {
472
+ currentBlock = { type: "text", text: "" };
473
+ output.content.push(currentBlock);
474
+ stream.push({ type: "text_start", contentIndex: getBlockIndex(output), partial: output });
475
+ }
476
+ else if (item.type === "function_call") {
477
+ currentBlock = {
478
+ type: "toolCall",
479
+ id: `${String(item.call_id ?? "call")}|${String(item.id ?? "fc")}`,
480
+ name: String(item.name ?? ""),
481
+ arguments: {},
482
+ partialJson: typeof item.arguments === "string" ? item.arguments : "",
483
+ };
484
+ output.content.push(currentBlock);
485
+ stream.push({ type: "toolcall_start", contentIndex: getBlockIndex(output), partial: output });
486
+ }
487
+ }
488
+ else if (eventType === "response.content_part.added") {
489
+ if (currentItem?.type === "message" && isRecord(event.part)) {
490
+ const content = Array.isArray(currentItem.content) ? currentItem.content : [];
491
+ currentItem.content = [...content, event.part];
492
+ }
493
+ }
494
+ else if (eventType === "response.output_text.delta") {
495
+ if (currentItem?.type === "message" && currentBlock?.type === "text" && typeof event.delta === "string") {
496
+ currentBlock.text += event.delta;
497
+ stream.push({ type: "text_delta", contentIndex: getBlockIndex(output), delta: event.delta, partial: output });
498
+ }
499
+ }
500
+ else if (eventType === "response.output_text.done") {
501
+ if (currentItem?.type === "message" && currentBlock?.type === "text" && typeof event.text === "string") {
502
+ const delta = event.text.startsWith(currentBlock.text) ? event.text.slice(currentBlock.text.length) : event.text;
503
+ currentBlock.text = event.text;
504
+ if (delta) {
505
+ stream.push({ type: "text_delta", contentIndex: getBlockIndex(output), delta, partial: output });
506
+ }
507
+ }
508
+ }
509
+ else if (eventType === "response.reasoning_summary_text.delta") {
510
+ if (currentItem?.type === "reasoning" && currentBlock?.type === "thinking" && typeof event.delta === "string") {
511
+ currentBlock.thinking += event.delta;
512
+ stream.push({ type: "thinking_delta", contentIndex: getBlockIndex(output), delta: event.delta, partial: output });
513
+ }
514
+ }
515
+ else if (eventType === "response.function_call_arguments.delta") {
516
+ if (currentItem?.type === "function_call" && currentBlock?.type === "toolCall" && typeof event.delta === "string") {
517
+ currentBlock.partialJson = (currentBlock.partialJson ?? "") + event.delta;
518
+ currentBlock.arguments = parseStreamingJson(currentBlock.partialJson);
519
+ stream.push({ type: "toolcall_delta", contentIndex: getBlockIndex(output), delta: event.delta, partial: output });
520
+ }
521
+ }
522
+ else if (eventType === "response.function_call_arguments.done") {
523
+ if (currentItem?.type === "function_call" && currentBlock?.type === "toolCall" && typeof event.arguments === "string") {
524
+ const previous = currentBlock.partialJson ?? "";
525
+ currentBlock.partialJson = event.arguments;
526
+ currentBlock.arguments = parseStreamingJson(event.arguments || "{}");
527
+ const delta = event.arguments.startsWith(previous) ? event.arguments.slice(previous.length) : event.arguments;
528
+ if (delta) {
529
+ stream.push({ type: "toolcall_delta", contentIndex: getBlockIndex(output), delta, partial: output });
530
+ }
531
+ }
532
+ }
533
+ else if (eventType === "response.output_item.done") {
534
+ const item = getEventItem(event);
535
+ if (!item || typeof item.type !== "string") {
536
+ continue;
537
+ }
538
+ if (item.type === "message" && currentBlock?.type === "text") {
539
+ if (Array.isArray(item.content)) {
540
+ currentBlock.text = item.content
541
+ .map((contentItem) => (isRecord(contentItem) && typeof contentItem.text === "string" ? contentItem.text : ""))
542
+ .join("");
543
+ }
544
+ stream.push({ type: "text_end", contentIndex: getBlockIndex(output), content: currentBlock.text, partial: output });
545
+ currentBlock = null;
546
+ }
547
+ else if (item.type === "reasoning" && currentBlock?.type === "thinking") {
548
+ currentBlock.thinkingSignature = JSON.stringify(item);
549
+ stream.push({ type: "thinking_end", contentIndex: getBlockIndex(output), content: currentBlock.thinking, partial: output });
550
+ currentBlock = null;
551
+ }
552
+ else if (item.type === "function_call") {
553
+ if (currentBlock?.type === "toolCall") {
554
+ currentBlock.arguments = parseStreamingJson(currentBlock.partialJson || (typeof item.arguments === "string" ? item.arguments : "{}"));
555
+ delete currentBlock.partialJson;
556
+ stream.push({ type: "toolcall_end", contentIndex: getBlockIndex(output), toolCall: currentBlock, partial: output });
557
+ }
558
+ currentBlock = null;
559
+ }
560
+ else if (item.type === "image_generation_call") {
561
+ if (typeof item.id === "string" && typeof item.result === "string") {
562
+ const filePath = saveImageGenerationResult(options?.sessionId, item.id, item.result);
563
+ pushGeneratedImageText(stream, output, filePath, typeof item.revised_prompt === "string" ? item.revised_prompt : undefined);
564
+ }
565
+ }
566
+ }
567
+ else if (eventType === "response.completed" && isRecord(event.response)) {
568
+ if (typeof event.response.id === "string") {
569
+ output.responseId = event.response.id;
570
+ }
571
+ readResponseUsage(event.response, output, model);
572
+ output.stopReason = mapResponseStopReason(event.response.status);
573
+ if (output.content.some((block) => block.type === "toolCall") && output.stopReason === "stop") {
574
+ output.stopReason = "toolUse";
575
+ }
576
+ }
577
+ else if (eventType === "response.failed") {
578
+ const response = isRecord(event.response) ? event.response : undefined;
579
+ const error = isRecord(response?.error) ? response.error : undefined;
580
+ const message = typeof error?.message === "string" ? error.message : "TheClawBay response failed";
581
+ throw new Error(message);
582
+ }
583
+ else if (eventType === "error") {
584
+ throw new Error(typeof event.message === "string" ? event.message : "TheClawBay stream error");
585
+ }
586
+ }
587
+ }
588
+ function streamHostedImageGenerationTheClawBayCodexResponses(model, context, options) {
589
+ const stream = createAssistantMessageEventStream();
590
+ void (async () => {
591
+ const output = {
592
+ role: "assistant",
593
+ content: [],
594
+ api: model.api,
595
+ provider: model.provider,
596
+ model: model.id,
597
+ usage: {
598
+ input: 0,
599
+ output: 0,
600
+ cacheRead: 0,
601
+ cacheWrite: 0,
602
+ totalTokens: 0,
603
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
604
+ },
605
+ stopReason: "stop",
606
+ timestamp: Date.now(),
607
+ };
608
+ try {
609
+ const apiKey = options?.apiKey || process.env.THECLAWBAY_API_KEY;
610
+ if (!apiKey) {
611
+ throw new Error("No API key for provider: theclawbay");
612
+ }
613
+ let payload = buildHostedImageGenerationPayload(model, context, options);
614
+ const nextPayload = await options?.onPayload?.(payload, model);
615
+ if (nextPayload !== undefined) {
616
+ payload = nextPayload;
617
+ }
618
+ const response = await fetch(resolveTheClawBayCodexResponsesUrl(model.baseUrl), {
619
+ method: "POST",
620
+ headers: {
621
+ ...buildTheClawBayHeaders(options),
622
+ Authorization: `Bearer ${apiKey}`,
623
+ "Content-Type": "application/json",
624
+ },
625
+ body: JSON.stringify(payload),
626
+ signal: options?.signal,
627
+ });
628
+ await options?.onResponse?.({ status: response.status, headers: Object.fromEntries(response.headers.entries()) }, model);
629
+ if (!response.ok) {
630
+ throw new Error(await response.text());
631
+ }
632
+ stream.push({ type: "start", partial: output });
633
+ await processTheClawBayHostedImageStream(parseTheClawBaySse(response), output, stream, model, options);
634
+ if (options?.signal?.aborted) {
635
+ throw new Error("Request was aborted");
636
+ }
637
+ if (output.stopReason === "error" || output.stopReason === "aborted") {
638
+ throw new Error(output.errorMessage || "TheClawBay response failed");
639
+ }
640
+ stream.push({ type: "done", reason: output.stopReason, message: output });
641
+ stream.end();
642
+ }
643
+ catch (error) {
644
+ for (const block of output.content) {
645
+ delete block.partialJson;
646
+ }
647
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
648
+ output.errorMessage = error instanceof Error ? error.message : String(error);
649
+ stream.push({ type: "error", reason: output.stopReason, error: output });
650
+ stream.end();
651
+ }
652
+ })();
653
+ return stream;
654
+ }
188
655
  function streamSimpleTheClawBayCodexResponses(model, context, options) {
189
656
  const typedModel = model;
190
657
  const typedContext = context;
@@ -195,6 +662,17 @@ function streamSimpleTheClawBayCodexResponses(model, context, options) {
195
662
  ...typedModel,
196
663
  id: resolveUpstreamModelId(typedModel.id),
197
664
  };
665
+ if (isHostedImageGenerationEnabled()) {
666
+ return streamHostedImageGenerationTheClawBayCodexResponses(remappedModel, typedContext, {
667
+ ...typedOptions,
668
+ headers,
669
+ onPayload: async (payload, streamModel) => {
670
+ const transformedPayload = buildTheClawBayPayload(payload, typedContext, { includeHostedImageGeneration: true });
671
+ const nextPayload = await originalOnPayload?.(transformedPayload, streamModel);
672
+ return nextPayload === undefined ? transformedPayload : nextPayload;
673
+ },
674
+ });
675
+ }
198
676
  return streamSimpleOpenAIResponses(remappedModel, typedContext, {
199
677
  ...typedOptions,
200
678
  headers,
@@ -284,7 +762,13 @@ function refreshProviderModels(pi, apiKey) {
284
762
  }
285
763
  writeCachedModelIds(ids);
286
764
  const models = buildOpenAIModels(ids);
287
- registerProviders(pi, models);
765
+ try {
766
+ registerProviders(pi, models);
767
+ }
768
+ catch (error) {
769
+ console.warn(`[theclawbay] Skipped live model refresh: ${error instanceof Error ? error.message : String(error)}`);
770
+ return;
771
+ }
288
772
  console.info(`[theclawbay] Registered ${models.length} OpenAI-compatible models from live model discovery.`);
289
773
  });
290
774
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-clawbay",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "TheClawBay provider extension for Pi Coding Agent - access GPT-5 and Codex models",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,19 +13,22 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
- "README.md"
16
+ "README.md",
17
+ "skills"
17
18
  ],
18
19
  "scripts": {
19
20
  "clean": "rm -rf dist",
20
21
  "build": "npm run clean && tsc",
21
22
  "check": "tsc --noEmit",
22
23
  "prepare": "npm run build",
23
- "prepack": "npm run build",
24
24
  "test": "npm run build && node test/extension.test.mjs"
25
25
  },
26
26
  "pi": {
27
27
  "extensions": [
28
28
  "dist/index.js"
29
+ ],
30
+ "skills": [
31
+ "skills"
29
32
  ]
30
33
  },
31
34
  "keywords": [
@@ -49,7 +52,7 @@
49
52
  },
50
53
  "homepage": "https://github.com/chrislopez24/pi-clawbay#readme",
51
54
  "devDependencies": {
52
- "@mariozechner/pi-ai": "^0.65.0",
55
+ "@mariozechner/pi-coding-agent": "^0.73.0",
53
56
  "@types/node": "^22.0.0",
54
57
  "typescript": "^5.0.0"
55
58
  },
@@ -60,5 +63,8 @@
60
63
  "@mariozechner/pi-coding-agent": {
61
64
  "optional": true
62
65
  }
66
+ },
67
+ "dependencies": {
68
+ "@mariozechner/pi-ai": "^0.73.0"
63
69
  }
64
70
  }
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: theclawbay-imagegen
3
+ description: Use TheClawBay image generation through pi-clawbay's Codex-style hosted image_generation support. Use when the user asks to create, generate, draw, render, or save an image while using the theclawbay provider.
4
+ ---
5
+
6
+ # TheClawBay Image Generation
7
+
8
+ Use this skill when the user asks for image generation with the `pi-clawbay` extension.
9
+
10
+ ## Preferred flow
11
+
12
+ Use the extension's hosted Responses tool support:
13
+
14
+ ```bash
15
+ export THECLAWBAY_API_KEY=your-key
16
+ export PI_CLAWBAY_IMAGE_GENERATION=hosted
17
+ pi -e /path/to/pi-clawbay
18
+ ```
19
+
20
+ Select a text/Codex model, for example:
21
+
22
+ ```text
23
+ /model theclawbay/gpt-5.5
24
+ ```
25
+
26
+ Then ask for an image naturally:
27
+
28
+ ```text
29
+ Generate a minimalist black sailboat icon on a white background. No text.
30
+ ```
31
+
32
+ When enabled, `pi-clawbay` sends TheClawBay the Codex-style hosted tool definition:
33
+
34
+ ```json
35
+ { "type": "image_generation", "output_format": "png" }
36
+ ```
37
+
38
+ The provider decodes `image_generation_call.result` and saves the PNG under:
39
+
40
+ ```text
41
+ ~/.pi/agent/generated_images/<session_id>/<image_generation_call_id>.png
42
+ ```
43
+
44
+ The assistant response includes a `file://` URL, the filesystem path, and the revised prompt when one is returned.
45
+
46
+ If the generated image is needed in the project, copy it into the workspace. Leave the original generated-images artifact in place unless the user explicitly asks to delete it.
47
+
48
+ ## Model guidance
49
+
50
+ - The current TheClawBay image model ID is `gpt-image-2`, not `gpt-image-2.0`.
51
+ - `gpt-image-2` and `gpt-image-1.5` are image API models and should not be selected with `/model`.
52
+ - Hosted image generation should be requested from a text/Codex model such as `gpt-5.5`.
53
+
54
+ ## Transparent backgrounds
55
+
56
+ Do not claim native transparent output from `gpt-image-2`.
57
+
58
+ For transparent assets, use one of these approaches:
59
+
60
+ 1. Generate with a flat chroma-key background, then remove the background with image processing.
61
+ 2. If native transparency is required, ask the user before using the older `gpt-image-1.5` direct Images API path.
62
+
63
+ ## Direct API fallback
64
+
65
+ If hosted image generation is disabled or unavailable, call TheClawBay's OpenAI-compatible Images API outside the Pi provider loop:
66
+
67
+ ```http
68
+ POST https://api.theclawbay.com/v1/images/generations
69
+ Authorization: Bearer $THECLAWBAY_API_KEY
70
+ Content-Type: application/json
71
+ ```
72
+
73
+ Example payload:
74
+
75
+ ```json
76
+ {
77
+ "model": "gpt-image-2",
78
+ "prompt": "A minimalist black sailboat icon on a white background. No text.",
79
+ "size": "1024x1024",
80
+ "quality": "low",
81
+ "output_format": "png"
82
+ }
83
+ ```
84
+
85
+ Use the direct API only as a fallback or when the user explicitly asks for programmatic image API usage.