ima2-gen 1.1.20 → 1.1.22
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 +42 -26
- package/bin/commands/capabilities.js +2 -2
- package/bin/commands/defaults.js +2 -2
- package/bin/commands/doctor.js +3 -3
- package/bin/commands/edit.js +1 -1
- package/bin/commands/gen.js +1 -1
- package/bin/commands/grok.js +16 -11
- package/bin/commands/multimode.js +1 -1
- package/bin/commands/observability.js +2 -2
- package/bin/commands/video.js +335 -13
- package/bin/ima2.js +23 -13
- package/bin/lib/error-hints.js +2 -2
- package/bin/lib/platform.js +34 -5
- package/docs/API.md +112 -3
- package/docs/CLI.md +61 -7
- package/docs/FAQ.ko.md +15 -20
- package/docs/FAQ.md +14 -19
- package/docs/NPX_QUICKSTART.md +40 -0
- package/docs/PROMPT_STUDIO.ko.md +1 -1
- package/docs/PROMPT_STUDIO.md +1 -1
- package/docs/README.ja.md +6 -16
- package/docs/README.ko.md +35 -14
- package/docs/README.zh-CN.md +7 -17
- package/docs/migration/runtime-test-inventory.md +8 -1
- package/lib/agentQueueWorker.js +6 -0
- package/lib/agentRuntime.js +20 -5
- package/lib/atomicWrite.js +14 -0
- package/lib/capabilities.js +1 -1
- package/lib/generationErrors.js +1 -1
- package/lib/grokProxyLauncher.js +31 -6
- package/lib/grokVideoAdapter.js +18 -89
- package/lib/grokVideoCanvas.js +25 -0
- package/lib/grokVideoDownload.js +58 -0
- package/lib/grokVideoPlannerPrompt.js +64 -0
- package/lib/historyList.js +7 -1
- package/lib/inflight.js +1 -1
- package/lib/oauthLauncher.js +26 -6
- package/lib/videoContinuity.js +149 -0
- package/lib/videoFrameExtract.js +80 -0
- package/node_modules/progrok/dist/index.js +187 -88
- package/node_modules/progrok/dist/index.js.map +1 -1
- package/node_modules/progrok/package.json +1 -1
- package/node_modules/progrok/skills/progrok/SKILL.md +33 -4
- package/package.json +6 -8
- package/routes/edit.js +2 -1
- package/routes/generate.js +4 -3
- package/routes/health.js +4 -3
- package/routes/index.js +4 -0
- package/routes/multimode.js +2 -1
- package/routes/quota.js +66 -0
- package/routes/video.js +80 -16
- package/routes/videoExtended.js +293 -0
- package/server.js +35 -4
- package/skills/ima2/SKILL.md +320 -7
- package/ui/dist/.vite/manifest.json +12 -12
- package/ui/dist/assets/{AgentWorkspace-DS8uvoLI.js → AgentWorkspace-COxQ5TjU.js} +2 -2
- package/ui/dist/assets/{CardNewsWorkspace-CYxMsE67.js → CardNewsWorkspace-B0OkcuVz.js} +1 -1
- package/ui/dist/assets/{NodeCanvas-DccIc347.js → NodeCanvas-BSsclEBh.js} +1 -1
- package/ui/dist/assets/{PromptBuilderPanel-BvxxwSJp.js → PromptBuilderPanel-DpC9A5Rz.js} +1 -1
- package/ui/dist/assets/{PromptImportDialog-u1_BFDRd.js → PromptImportDialog-CVwT0rLd.js} +2 -2
- package/ui/dist/assets/{PromptImportDiscoverySection-C5uvkVSz.js → PromptImportDiscoverySection-BDCkRCRs.js} +1 -1
- package/ui/dist/assets/{PromptImportFolderSection-D3E_O1SD.js → PromptImportFolderSection-QoKbZD83.js} +1 -1
- package/ui/dist/assets/{PromptLibraryPanel-4gyf9CB9.js → PromptLibraryPanel-BhFgeKnY.js} +2 -2
- package/ui/dist/assets/SettingsWorkspace-CfjrlH5R.js +1 -0
- package/ui/dist/assets/index-C-mur7pa.css +1 -0
- package/ui/dist/assets/index-CCP5nUOj.js +42 -0
- package/ui/dist/assets/{index-DoKtXbod.js → index-Cxhzi3bs.js} +1 -1
- package/ui/dist/index.html +2 -2
- package/vendor/progrok-0.2.0.tgz +0 -0
- package/bin/commands/annotate.ts +0 -119
- package/bin/commands/cancel.ts +0 -48
- package/bin/commands/canvas-versions.ts +0 -80
- package/bin/commands/capabilities.ts +0 -110
- package/bin/commands/cardnews.ts +0 -249
- package/bin/commands/comfy.ts +0 -54
- package/bin/commands/config.ts +0 -186
- package/bin/commands/defaults.ts +0 -192
- package/bin/commands/doctor.ts +0 -202
- package/bin/commands/edit.ts +0 -150
- package/bin/commands/gen.ts +0 -214
- package/bin/commands/grok.ts +0 -85
- package/bin/commands/history.ts +0 -146
- package/bin/commands/ls.ts +0 -64
- package/bin/commands/metadata.ts +0 -39
- package/bin/commands/multimode.ts +0 -196
- package/bin/commands/node.ts +0 -166
- package/bin/commands/observability.ts +0 -176
- package/bin/commands/ping.ts +0 -31
- package/bin/commands/prompt-sub/build.ts +0 -101
- package/bin/commands/prompt.ts +0 -492
- package/bin/commands/ps.ts +0 -81
- package/bin/commands/session.ts +0 -266
- package/bin/commands/show.ts +0 -72
- package/bin/commands/skill.ts +0 -70
- package/bin/commands/video.ts +0 -205
- package/bin/ima2.ts +0 -430
- package/bin/lib/args.ts +0 -92
- package/bin/lib/browser-id.ts +0 -16
- package/bin/lib/client.ts +0 -122
- package/bin/lib/config-store.ts +0 -120
- package/bin/lib/destructive-confirm.ts +0 -19
- package/bin/lib/doctor-checks.ts +0 -91
- package/bin/lib/error-hints.ts +0 -23
- package/bin/lib/files.ts +0 -39
- package/bin/lib/output.ts +0 -73
- package/bin/lib/platform.ts +0 -99
- package/bin/lib/recover-output.ts +0 -139
- package/bin/lib/sse.ts +0 -73
- package/bin/lib/star-prompt.ts +0 -97
- package/bin/lib/storage-doctor.ts +0 -39
- package/bin/lib/ui-build.ts +0 -85
- package/config.ts +0 -354
- package/lib/agentCommandParser.ts +0 -69
- package/lib/agentGenerationPlanner.ts +0 -273
- package/lib/agentQuestionResponder.ts +0 -266
- package/lib/agentQueueStore.ts +0 -270
- package/lib/agentQueueWorker.ts +0 -89
- package/lib/agentRuntime.ts +0 -592
- package/lib/agentSettings.ts +0 -72
- package/lib/agentStore.ts +0 -422
- package/lib/agentStoreRows.ts +0 -136
- package/lib/agentTypes.ts +0 -154
- package/lib/apiCachePolicy.ts +0 -11
- package/lib/assetLifecycle.ts +0 -146
- package/lib/canvasVersionStore.ts +0 -223
- package/lib/capabilities.ts +0 -126
- package/lib/cardNewsGenerator.ts +0 -271
- package/lib/cardNewsJobStore.ts +0 -142
- package/lib/cardNewsManifestStore.ts +0 -154
- package/lib/cardNewsPlanner.ts +0 -236
- package/lib/cardNewsPlannerClient.ts +0 -155
- package/lib/cardNewsPlannerPrompt.ts +0 -62
- package/lib/cardNewsPlannerSchema.ts +0 -321
- package/lib/cardNewsRoleTemplateStore.ts +0 -47
- package/lib/cardNewsTemplateStore.ts +0 -252
- package/lib/codexDetect.ts +0 -71
- package/lib/comfyBridge.ts +0 -235
- package/lib/composerSnapshot.ts +0 -33
- package/lib/configKeys.ts +0 -62
- package/lib/db.ts +0 -295
- package/lib/errInfo.ts +0 -43
- package/lib/errorClassify.ts +0 -100
- package/lib/generationCancel.ts +0 -28
- package/lib/generationErrors.ts +0 -238
- package/lib/grokImageAdapter.ts +0 -513
- package/lib/grokMultimodeAdapter.ts +0 -84
- package/lib/grokProxyLauncher.ts +0 -129
- package/lib/grokRuntime.ts +0 -23
- package/lib/grokSizeMapper.ts +0 -71
- package/lib/grokVideoAdapter.ts +0 -519
- package/lib/historyIndex.ts +0 -51
- package/lib/historyList.ts +0 -177
- package/lib/imageMetadata.ts +0 -113
- package/lib/imageMetadataStore.ts +0 -67
- package/lib/imageModels.ts +0 -165
- package/lib/inflight.ts +0 -281
- package/lib/localImportStore.ts +0 -114
- package/lib/logger.ts +0 -161
- package/lib/nodeStore.ts +0 -91
- package/lib/oauthLauncher.ts +0 -78
- package/lib/oauthNormalize.ts +0 -30
- package/lib/oauthProxy/errors.ts +0 -128
- package/lib/oauthProxy/generators.ts +0 -494
- package/lib/oauthProxy/index.ts +0 -28
- package/lib/oauthProxy/prompts.ts +0 -123
- package/lib/oauthProxy/references.ts +0 -45
- package/lib/oauthProxy/runtime.ts +0 -115
- package/lib/oauthProxy/streams.ts +0 -232
- package/lib/oauthProxy/types.ts +0 -9
- package/lib/oauthProxy.ts +0 -3
- package/lib/openDirectory.ts +0 -47
- package/lib/pngInfo.ts +0 -26
- package/lib/promptBuilder/attachments.ts +0 -74
- package/lib/promptBuilder/client.ts +0 -130
- package/lib/promptBuilder/constants.ts +0 -9
- package/lib/promptBuilder/context.ts +0 -36
- package/lib/promptBuilder/errors.ts +0 -12
- package/lib/promptBuilder/requestSchema.ts +0 -56
- package/lib/promptBuilder/responseParser.ts +0 -219
- package/lib/promptBuilder/systemPrompt.ts +0 -135
- package/lib/promptBuilder/transport.ts +0 -94
- package/lib/promptBuilder/types.ts +0 -109
- package/lib/promptImport/curatedSources.ts +0 -141
- package/lib/promptImport/discoveryRegistry.ts +0 -329
- package/lib/promptImport/errors.ts +0 -18
- package/lib/promptImport/githubDiscovery.ts +0 -309
- package/lib/promptImport/githubFolder.ts +0 -397
- package/lib/promptImport/githubSource.ts +0 -257
- package/lib/promptImport/gptImageHints.ts +0 -70
- package/lib/promptImport/parsePromptCandidates.ts +0 -179
- package/lib/promptImport/promptIndex.ts +0 -326
- package/lib/promptImport/rankPromptCandidates.ts +0 -65
- package/lib/promptImport/types.ts +0 -103
- package/lib/promptSafetyPolicy.ts +0 -5
- package/lib/providerOptions.ts +0 -56
- package/lib/referenceImageCompress.ts +0 -84
- package/lib/refs.ts +0 -133
- package/lib/requestLogger.ts +0 -49
- package/lib/responsesDoctor.ts +0 -456
- package/lib/responsesErrors.ts +0 -83
- package/lib/responsesFallback.ts +0 -114
- package/lib/responsesImageAdapter.ts +0 -466
- package/lib/responsesParse.ts +0 -452
- package/lib/responsesTools.ts +0 -28
- package/lib/runtimeContext.ts +0 -146
- package/lib/runtimePorts.ts +0 -105
- package/lib/sessionStore.ts +0 -308
- package/lib/storageMigration.ts +0 -310
- package/lib/styleSheet.ts +0 -139
- package/lib/systemTrash.ts +0 -20
- package/lib/videoSeriesChain.ts +0 -29
- package/lib/visibleTextLanguagePolicy.ts +0 -7
- package/routes/agent.ts +0 -308
- package/routes/annotations.ts +0 -118
- package/routes/canvasVersions.ts +0 -69
- package/routes/capabilities.ts +0 -18
- package/routes/cardNews.ts +0 -211
- package/routes/comfy.ts +0 -43
- package/routes/edit.ts +0 -352
- package/routes/generate.ts +0 -492
- package/routes/grok.ts +0 -24
- package/routes/health.ts +0 -123
- package/routes/history.ts +0 -221
- package/routes/imageImport.ts +0 -37
- package/routes/index.ts +0 -48
- package/routes/metadata.ts +0 -77
- package/routes/multimode.ts +0 -499
- package/routes/nodes.ts +0 -578
- package/routes/promptBuilder.ts +0 -37
- package/routes/promptImport.ts +0 -379
- package/routes/prompts.ts +0 -428
- package/routes/sessions.ts +0 -317
- package/routes/storage.ts +0 -47
- package/routes/video.ts +0 -232
- package/server.ts +0 -290
- package/ui/dist/assets/SettingsWorkspace-F3eNu3mJ.js +0 -1
- package/ui/dist/assets/index-B6tcw_UF.css +0 -1
- package/ui/dist/assets/index-DYOh6gQD.js +0 -32
- package/vendor/progrok-0.1.1.tgz +0 -0
package/lib/oauthLauncher.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { isWin } from "../bin/lib/platform.js";
|
|
2
|
-
import { config } from "../config.js";
|
|
3
|
-
import { parseLocalhostPortFromUrl, parseOAuthReadyUrl } from "./runtimePorts.js";
|
|
4
|
-
import { type ChildProcess, spawn } from "node:child_process";
|
|
5
|
-
|
|
6
|
-
export function startOAuthProxy(options: any = {}) {
|
|
7
|
-
const oauthPort = options.oauthPort ?? config.oauth.proxyPort;
|
|
8
|
-
const restartDelayMs = options.restartDelayMs ?? config.oauth.restartDelayMs;
|
|
9
|
-
let currentChild: ChildProcess | null = null;
|
|
10
|
-
let stopping = false;
|
|
11
|
-
let restartTimer: NodeJS.Timeout | null = null;
|
|
12
|
-
let hasBeenReady = false;
|
|
13
|
-
|
|
14
|
-
const spawnProxy = () => {
|
|
15
|
-
console.log(`Starting openai-oauth on port ${oauthPort}...`);
|
|
16
|
-
const spawnedAt = Date.now();
|
|
17
|
-
const child = spawn("npx", ["openai-oauth", "--port", String(oauthPort)], {
|
|
18
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
19
|
-
shell: isWin,
|
|
20
|
-
windowsHide: true,
|
|
21
|
-
env: { ...process.env },
|
|
22
|
-
});
|
|
23
|
-
currentChild = child;
|
|
24
|
-
|
|
25
|
-
child.stdout?.on("data", (d) => {
|
|
26
|
-
const msg = d.toString().trim();
|
|
27
|
-
if (!msg) return;
|
|
28
|
-
console.log(`[oauth] ${msg}`);
|
|
29
|
-
for (const line of msg.split(/\r?\n/)) {
|
|
30
|
-
const url = parseOAuthReadyUrl(line);
|
|
31
|
-
if (!url) continue;
|
|
32
|
-
const port = parseLocalhostPortFromUrl(url);
|
|
33
|
-
if (port && port !== oauthPort) {
|
|
34
|
-
console.log(`[oauth] requested port ${oauthPort}, actual port ${port}`);
|
|
35
|
-
}
|
|
36
|
-
options.onReady?.({ url, port: port || oauthPort, requestedPort: oauthPort });
|
|
37
|
-
hasBeenReady = true;
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
child.stderr?.on("data", (d) => {
|
|
42
|
-
const msg = d.toString().trim();
|
|
43
|
-
if (msg && !msg.includes("npm warn")) console.error(`[oauth] ${msg}`);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
child.on("exit", (code) => {
|
|
47
|
-
if (currentChild === child) currentChild = null;
|
|
48
|
-
if (stopping) return;
|
|
49
|
-
const uptime = Date.now() - spawnedAt;
|
|
50
|
-
if (uptime < 5000 && !hasBeenReady) {
|
|
51
|
-
// Crashed immediately without ever becoming ready — likely missing openai-oauth or no token.
|
|
52
|
-
// Don't restart; just mark as failed silently.
|
|
53
|
-
console.log(`[oauth] proxy exited immediately (code ${code}). Skipping — Grok-only mode is fine.`);
|
|
54
|
-
options.onExit?.({ code });
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
options.onExit?.({ code });
|
|
58
|
-
console.log(`[oauth] exited with code ${code}, restarting in ${Math.round(restartDelayMs / 1000)}s...`);
|
|
59
|
-
restartTimer = setTimeout(spawnProxy, restartDelayMs);
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
spawnProxy();
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
get child() {
|
|
67
|
-
return currentChild;
|
|
68
|
-
},
|
|
69
|
-
kill(signal: NodeJS.Signals = "SIGTERM") {
|
|
70
|
-
this.stop(signal);
|
|
71
|
-
},
|
|
72
|
-
stop(signal: NodeJS.Signals = "SIGTERM") {
|
|
73
|
-
stopping = true;
|
|
74
|
-
if (restartTimer) clearTimeout(restartTimer);
|
|
75
|
-
try { currentChild?.kill(signal); } catch {}
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
}
|
package/lib/oauthNormalize.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// 0.09.12.2 — Keep supported image tool qualities intact for OAuth.
|
|
2
|
-
// The exposed app contract accepts low/medium/high; normalize only malformed input so
|
|
3
|
-
// the API response, UI metadata, and actual image_generation payload stay aligned.
|
|
4
|
-
|
|
5
|
-
export const DEFAULT_IMAGE_QUALITY = "medium";
|
|
6
|
-
export const VALID_IMAGE_QUALITIES = new Set(["low", "medium", "high"]);
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @param {{ provider?: string, quality?: string }} input
|
|
10
|
-
* @returns {{ quality: string, warnings: Array<{code:string,field:string,normalizedTo:string,reason:string}> }}
|
|
11
|
-
*/
|
|
12
|
-
export function normalizeOAuthParams(input: { provider?: string; quality?: string } | null | undefined) {
|
|
13
|
-
const requested = typeof input?.quality === "string" ? input.quality : DEFAULT_IMAGE_QUALITY;
|
|
14
|
-
|
|
15
|
-
if (VALID_IMAGE_QUALITIES.has(requested)) {
|
|
16
|
-
return { quality: requested, warnings: [] };
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
quality: DEFAULT_IMAGE_QUALITY,
|
|
21
|
-
warnings: [
|
|
22
|
-
{
|
|
23
|
-
code: "QUALITY_DEFAULTED",
|
|
24
|
-
field: "quality",
|
|
25
|
-
normalizedTo: DEFAULT_IMAGE_QUALITY,
|
|
26
|
-
reason: "invalid-quality",
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
};
|
|
30
|
-
}
|
package/lib/oauthProxy/errors.ts
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { logEvent } from "../logger.js";
|
|
2
|
-
import { classifyUpstreamError, classifyUpstreamErrorCode } from "../errorClassify.js";
|
|
3
|
-
|
|
4
|
-
interface MakeOAuthErrorOptions {
|
|
5
|
-
status?: number;
|
|
6
|
-
code?: string;
|
|
7
|
-
upstreamBodyChars?: number;
|
|
8
|
-
upstreamCode?: string | null;
|
|
9
|
-
upstreamType?: string | null;
|
|
10
|
-
upstreamParam?: string | null;
|
|
11
|
-
eventType?: string;
|
|
12
|
-
eventCount?: number;
|
|
13
|
-
cause?: unknown;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
interface OAuthError extends Error {
|
|
17
|
-
code: string;
|
|
18
|
-
status?: number;
|
|
19
|
-
upstreamBodyChars?: number;
|
|
20
|
-
upstreamCode?: string | null;
|
|
21
|
-
upstreamType?: string | null;
|
|
22
|
-
upstreamParam?: string | null;
|
|
23
|
-
eventType?: string;
|
|
24
|
-
eventCount?: number;
|
|
25
|
-
cause?: unknown;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function makeOAuthError(
|
|
29
|
-
message: string,
|
|
30
|
-
{
|
|
31
|
-
status,
|
|
32
|
-
code = "OAUTH_UPSTREAM_ERROR",
|
|
33
|
-
upstreamBodyChars,
|
|
34
|
-
upstreamCode,
|
|
35
|
-
upstreamType,
|
|
36
|
-
upstreamParam,
|
|
37
|
-
eventType,
|
|
38
|
-
eventCount,
|
|
39
|
-
cause,
|
|
40
|
-
}: MakeOAuthErrorOptions = {},
|
|
41
|
-
): OAuthError {
|
|
42
|
-
const err = new Error(message) as OAuthError;
|
|
43
|
-
err.code = code;
|
|
44
|
-
if (status) err.status = status;
|
|
45
|
-
if (typeof upstreamBodyChars === "number") err.upstreamBodyChars = upstreamBodyChars;
|
|
46
|
-
if (upstreamCode) err.upstreamCode = upstreamCode;
|
|
47
|
-
if (upstreamType) err.upstreamType = upstreamType;
|
|
48
|
-
if (upstreamParam) err.upstreamParam = upstreamParam;
|
|
49
|
-
if (eventType) err.eventType = eventType;
|
|
50
|
-
if (typeof eventCount === "number") err.eventCount = eventCount;
|
|
51
|
-
if (cause) err.cause = cause;
|
|
52
|
-
return err;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function parseOpenAIErrorBody(text: string) {
|
|
56
|
-
try {
|
|
57
|
-
const parsed = JSON.parse(text);
|
|
58
|
-
const error = parsed?.error;
|
|
59
|
-
if (!error || typeof error !== "object") return null;
|
|
60
|
-
const message = typeof error.message === "string" ? error.message : "";
|
|
61
|
-
if (!message) return null;
|
|
62
|
-
return {
|
|
63
|
-
message,
|
|
64
|
-
code: typeof error.code === "string" ? error.code : null,
|
|
65
|
-
type: typeof error.type === "string" ? error.type : null,
|
|
66
|
-
param: typeof error.param === "string" ? error.param : null,
|
|
67
|
-
};
|
|
68
|
-
} catch {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function normalizedOAuthCode(upstreamError: { code?: string | null; type?: string | null; message?: string | null } | null | undefined) {
|
|
74
|
-
const byCode = classifyUpstreamErrorCode(upstreamError?.code);
|
|
75
|
-
if (byCode !== "UNKNOWN") return byCode;
|
|
76
|
-
const byType = classifyUpstreamErrorCode(upstreamError?.type);
|
|
77
|
-
if (byType !== "UNKNOWN") return byType;
|
|
78
|
-
const byMessage = classifyUpstreamError(upstreamError?.message);
|
|
79
|
-
if (byMessage !== "UNKNOWN") return byMessage;
|
|
80
|
-
return "OAUTH_UPSTREAM_ERROR";
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
interface ThrowOAuthHttpErrorOptions {
|
|
84
|
-
requestId: string | null;
|
|
85
|
-
scope?: string;
|
|
86
|
-
fallbackMessage: string;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export function throwOAuthHttpError(res: { status: number }, text: string, { requestId, scope, fallbackMessage }: ThrowOAuthHttpErrorOptions) {
|
|
90
|
-
const upstream = parseOpenAIErrorBody(text);
|
|
91
|
-
const isClientError = res.status >= 400 && res.status < 500;
|
|
92
|
-
if (isClientError && upstream?.message) {
|
|
93
|
-
logEvent(scope || "oauth", "upstream_client_error", {
|
|
94
|
-
requestId,
|
|
95
|
-
status: res.status,
|
|
96
|
-
code: upstream.code,
|
|
97
|
-
type: upstream.type,
|
|
98
|
-
param: upstream.param,
|
|
99
|
-
errorChars: text.length,
|
|
100
|
-
});
|
|
101
|
-
throw makeOAuthError(upstream.message, {
|
|
102
|
-
status: res.status,
|
|
103
|
-
code: normalizedOAuthCode(upstream),
|
|
104
|
-
upstreamBodyChars: text.length,
|
|
105
|
-
upstreamCode: upstream.code,
|
|
106
|
-
upstreamType: upstream.type,
|
|
107
|
-
upstreamParam: upstream.param,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
throw makeOAuthError(fallbackMessage, {
|
|
111
|
-
status: res.status,
|
|
112
|
-
upstreamBodyChars: text.length,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function isAbortError(err: unknown) {
|
|
117
|
-
const e = err as { name?: string; code?: string } | null | undefined;
|
|
118
|
-
return e?.name === "AbortError" || e?.code === "ABORT_ERR";
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export function throwOAuthTimeoutError(err: unknown, { timeoutMs: _timeoutMs, requestId: _requestId, scope }: { timeoutMs?: number; requestId?: string | null; scope?: string }) {
|
|
122
|
-
throw makeOAuthError("OAuth image generation timed out", {
|
|
123
|
-
code: "OAUTH_IMAGE_TIMEOUT",
|
|
124
|
-
status: 504,
|
|
125
|
-
cause: err,
|
|
126
|
-
eventType: `${scope || "oauth"}.timeout`,
|
|
127
|
-
});
|
|
128
|
-
}
|