scream-code 0.17.2 → 0.17.3

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.
@@ -5,8 +5,8 @@ const __filename = __cjsShimFileURLToPath(import.meta.url);
5
5
  const __dirname = __cjsShimDirname(__filename);
6
6
  import "./suppress-sqlite-warning-C2VB0doZ.mjs";
7
7
  import { k as MemoryMemoStore } from "./src-BhZujafw.mjs";
8
- import { $n as encodeWorkDirKey, $t as lerpGradient, A as highlightLines, An as embeddingFailureDetail, At as isTurnElapsedEnabled, B as ActivityGroupComponent, Bn as detectShellEnvironment, Bt as ENABLE_TERMINAL_THEME_REPORTING, Cn as getLlmNotSetMessage, Ct as clearInfoPanelState, D as ToolCallComponent, Dn as sortSlashCommands, Dt as createEditorTheme, E as UserMessageComponent, En as BUILTIN_SLASH_COMMANDS, Et as resolveThemeSync, F as StatusMessageComponent, Fn as PULSE_WAVE_FRAMES, Ft as detectTerminalTheme, G as AgentGroupComponent, Gn as CLI_COMMAND_NAME, Gt as QUERY_TERMINAL_THEME, H as estimateTokens, Hn as getInputHistoryFile, Ht as OSC11_RESPONSE, I as replaceTabs, In as TuiConfigParseError, It as parseOsc11BackgroundTheme, J as getBreathingFrame, Jn as PRODUCT_NAME, Jt as TERMINAL_THEME_DARK, K as WelcomeComponent, Kn as CLI_UI_MODE, Kt as TERMINAL_FOCUS_IN, L as sanitizeShellOutput, Ln as TuiLikePreferencesSchema, Lt as DISABLE_TERMINAL_FOCUS_REPORTING, M as CachedContainer, Mn as hasEmbeddingModelCache, Mt as createThemeStyles, N as ThinkingComponent, Nn as startManualEmbeddingDownload, Nt as contrastTextHex, O as renderDiffLines, On as isExperimentalFlagEnabled, Ot as createMarkdownTheme, P as NoticeMessageComponent, Pn as PIXEL_PULSE_FRAMES, Pt as getColorPalette, Q as refineGoal, Qn as ScreamHarness, Qt as FooterComponent, R as SkillActivationComponent, Rn as loadTuiConfig, Rt as DISABLE_TERMINAL_THEME_REPORTING, S as readJsonlFile, Sn as getCtrlDHint, St as supportsBalance, Tn as buildSkillSlashCommands, U as getSharedSpeedTracker, Un as getLogDir, Ut as OSC11_RESPONSE_PREFIX, V as charsForTokenBudget, Vn as getDataDir, Vt as OSC11_QUERY, W as BackgroundAgentStatusComponent, Wn as detectInstallSource, Wt as OSC11_RESPONSE_PREFIX_NO_ESC, X as CompactionComponent, Xn as fetchCatalog, Xt as isBusy, Y as resetBreathingClock, Yn as DEFAULT_CATALOG_URL, Yt as TERMINAL_THEME_LIGHT, Z as clearGoalState, Zn as saveCatalogCache, Zt as isStreaming, _n as EXIT_CONFIRM_WINDOW_MS, a as syncDiagramCapabilityPrompt, an as printableChar, ar as isRealUserPrompt, at as toTerminalHyperlink, b as readUpdateCache, bn as TIP_ROTATION_INTERVAL_MS, c as disposeChildren, cn as appendStreamingArgsPreview, cr as log, d as isPlanExpandable, dn as isTodoItemShape, dr as isOrphanedToolCallError, en as SubagentSlots, er as normalizeWorkDir, f as MoonLoader, fn as parseStreamingArgs, fr as ErrorCodes, ft as handleFusionPlanCommand, gn as EMPTY_SESSION_HINT_URL, hn as truncateErrorMessage, i as buildRoleAdditionalText, it as isInternalMessage, j as langFromPath, jn as getKnowledgeStore, jt as toggleEmptySessionHint, k as renderDiffLinesClustered, kn as setExperimentalFlags, kt as isEmptySessionHintDismissed, l as hasDispose, ln as argsRecord, lr as resolveGlobalLogPath, mn as stringValue, mt as handlePlanCommand, n as clearEvalPanelState, nr as readSessionIndex, on as STATUS_BULLET, or as resolveScreamHome, ot as changeThinkingLevel, p as formatMemoryMemoForInjection, pn as serializeToolResultOutput, pr as SCREAM_ERROR_INFO, q as BREATHE_CYCLE_MS, qn as CLI_USER_AGENT_PRODUCT, qt as TERMINAL_FOCUS_OUT, r as openUrl, rr as removeSessionIndexEntry, sn as appendSessionHeaderHint, sr as flushDiagnosticLogs, st as getModelCycleLevel, t as dispatchInput, tr as appendSessionIndexEntry, u as isExpandable, un as formatErrorMessage, ur as isScreamError, v as selectUpdateTarget, vn as MAIN_AGENT_ID, w as getDaemonInstructions, wn as getNoActiveSessionMessage, x as appendJsonlLine, xn as getCtrlCHint, xt as refreshProviderBalance, y as refreshUpdateCache, yn as SESSION_TIPS, z as AssistantMessageComponent, zn as saveTuiConfig, zt as ENABLE_TERMINAL_FOCUS_REPORTING } from "./dispatch-BBjMoPdz.mjs";
9
- import { a as setLocale, i as getLocale, o as t } from "./text-input-dialog-Ja718cE-.mjs";
8
+ import { $n as encodeWorkDirKey, $t as lerpGradient, A as highlightLines, An as embeddingFailureDetail, At as isTurnElapsedEnabled, B as ActivityGroupComponent, Bn as detectShellEnvironment, Bt as ENABLE_TERMINAL_THEME_REPORTING, Cn as getLlmNotSetMessage, Ct as clearInfoPanelState, D as ToolCallComponent, Dn as sortSlashCommands, Dt as createEditorTheme, E as UserMessageComponent, En as BUILTIN_SLASH_COMMANDS, Et as resolveThemeSync, F as StatusMessageComponent, Fn as PULSE_WAVE_FRAMES, Ft as detectTerminalTheme, G as AgentGroupComponent, Gn as CLI_COMMAND_NAME, Gt as QUERY_TERMINAL_THEME, H as estimateTokens, Hn as getInputHistoryFile, Ht as OSC11_RESPONSE, I as replaceTabs, In as TuiConfigParseError, It as parseOsc11BackgroundTheme, J as getBreathingFrame, Jn as PRODUCT_NAME, Jt as TERMINAL_THEME_DARK, K as WelcomeComponent, Kn as CLI_UI_MODE, Kt as TERMINAL_FOCUS_IN, L as sanitizeShellOutput, Ln as TuiLikePreferencesSchema, Lt as DISABLE_TERMINAL_FOCUS_REPORTING, M as CachedContainer, Mn as hasEmbeddingModelCache, Mt as createThemeStyles, N as ThinkingComponent, Nn as startManualEmbeddingDownload, Nt as contrastTextHex, O as renderDiffLines, On as isExperimentalFlagEnabled, Ot as createMarkdownTheme, P as NoticeMessageComponent, Pn as PIXEL_PULSE_FRAMES, Pt as getColorPalette, Q as refineGoal, Qn as ScreamHarness, Qt as FooterComponent, R as SkillActivationComponent, Rn as loadTuiConfig, Rt as DISABLE_TERMINAL_THEME_REPORTING, S as readJsonlFile, Sn as getCtrlDHint, St as supportsBalance, Tn as buildSkillSlashCommands, U as getSharedSpeedTracker, Un as getLogDir, Ut as OSC11_RESPONSE_PREFIX, V as charsForTokenBudget, Vn as getDataDir, Vt as OSC11_QUERY, W as BackgroundAgentStatusComponent, Wn as detectInstallSource, Wt as OSC11_RESPONSE_PREFIX_NO_ESC, X as CompactionComponent, Xn as fetchCatalog, Xt as isBusy, Y as resetBreathingClock, Yn as DEFAULT_CATALOG_URL, Yt as TERMINAL_THEME_LIGHT, Z as clearGoalState, Zn as saveCatalogCache, Zt as isStreaming, _n as EXIT_CONFIRM_WINDOW_MS, a as syncDiagramCapabilityPrompt, an as printableChar, ar as isRealUserPrompt, at as toTerminalHyperlink, b as readUpdateCache, bn as TIP_ROTATION_INTERVAL_MS, c as disposeChildren, cn as appendStreamingArgsPreview, cr as log, d as isPlanExpandable, dn as isTodoItemShape, dr as isOrphanedToolCallError, en as SubagentSlots, er as normalizeWorkDir, f as MoonLoader, fn as parseStreamingArgs, fr as ErrorCodes, ft as handleFusionPlanCommand, gn as EMPTY_SESSION_HINT_URL, hn as truncateErrorMessage, i as buildRoleAdditionalText, it as isInternalMessage, j as langFromPath, jn as getKnowledgeStore, jt as toggleEmptySessionHint, k as renderDiffLinesClustered, kn as setExperimentalFlags, kt as isEmptySessionHintDismissed, l as hasDispose, ln as argsRecord, lr as resolveGlobalLogPath, mn as stringValue, mt as handlePlanCommand, n as clearEvalPanelState, nr as readSessionIndex, on as STATUS_BULLET, or as resolveScreamHome, ot as changeThinkingLevel, p as formatMemoryMemoForInjection, pn as serializeToolResultOutput, pr as SCREAM_ERROR_INFO, q as BREATHE_CYCLE_MS, qn as CLI_USER_AGENT_PRODUCT, qt as TERMINAL_FOCUS_OUT, r as openUrl, rr as removeSessionIndexEntry, sn as appendSessionHeaderHint, sr as flushDiagnosticLogs, st as getModelCycleLevel, t as dispatchInput, tr as appendSessionIndexEntry, u as isExpandable, un as formatErrorMessage, ur as isScreamError, v as selectUpdateTarget, vn as MAIN_AGENT_ID, w as getDaemonInstructions, wn as getNoActiveSessionMessage, x as appendJsonlLine, xn as getCtrlCHint, xt as refreshProviderBalance, y as refreshUpdateCache, yn as SESSION_TIPS, z as AssistantMessageComponent, zn as saveTuiConfig, zt as ENABLE_TERMINAL_FOCUS_REPORTING } from "./dispatch-BwKIIIVW.mjs";
9
+ import { a as setLocale, i as getLocale, o as t } from "./text-input-dialog-BoxTq4a3.mjs";
10
10
  import { createRequire } from "node:module";
11
11
  import { randomBytes, randomUUID, scryptSync, timingSafeEqual } from "node:crypto";
12
12
  import { access, appendFile, chmod, mkdir, mkdtemp, readFile, readdir, realpath, rename, rm, stat, unlink, writeFile } from "node:fs/promises";
@@ -33,7 +33,7 @@ function optionalBuildString(value) {
33
33
  return typeof value === "string" && value.length > 0 ? value : void 0;
34
34
  }
35
35
  const SCREAM_BUILD_INFO = {
36
- version: optionalBuildString("0.17.2"),
36
+ version: optionalBuildString("0.17.3"),
37
37
  channel: optionalBuildString(""),
38
38
  commit: optionalBuildString(""),
39
39
  buildTarget: optionalBuildString("darwin-arm64")
@@ -14137,7 +14137,7 @@ var ScreamTUI = class {
14137
14137
  const card = new OnboardingCardComponent({
14138
14138
  colors: this.state.theme.colors,
14139
14139
  onConfigure: () => {
14140
- import("./dispatch-WhwMofZx.mjs").then(({ handleConnectCommand }) => handleConnectCommand(this, "")).finally(() => {
14140
+ import("./dispatch-0a0n28ZL.mjs").then(({ handleConnectCommand }) => handleConnectCommand(this, "")).finally(() => {
14141
14141
  this.restoreEditor();
14142
14142
  onDone?.();
14143
14143
  });
@@ -3,5 +3,5 @@ import { fileURLToPath as __cjsShimFileURLToPath } from 'node:url';
3
3
  import { dirname as __cjsShimDirname } from 'node:path';
4
4
  const __filename = __cjsShimFileURLToPath(import.meta.url);
5
5
  const __dirname = __cjsShimDirname(__filename);
6
- import { rn as handleConnectCommand } from "./dispatch-BBjMoPdz.mjs";
6
+ import { rn as handleConnectCommand } from "./dispatch-BwKIIIVW.mjs";
7
7
  export { handleConnectCommand };
@@ -6,7 +6,7 @@ const __dirname = __cjsShimDirname(__filename);
6
6
  import { i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-D90kvbyJ.mjs";
7
7
  import { A as classifyEmbeddingFailure, B as rankMemos, C as applyConsolidation, D as parseMemoryMemos, E as buildExitExtractionPrompt, F as createMemoryMemo, G as normalize, H as dirname$2, I as toSummary, J as resolve$2, K as parse$7, L as generateTags, M as createFastEmbedEngine, N as hasEmbeddingModelCache$1, O as stripMemoryTags, P as probeLocalEmbeddingSupport, R as normalizeTags, S as DreamTracker, T as EXIT_EXTRACTION_SYSTEM_PROMPT, U as isAbsolute$1, V as basename$1, W as join$1, a as isSupportedFile, b as sharedKnowledgeStoreReady, i as ingestFile, j as clearEmbeddingModelCache, k as MemoryMemoStore, q as relative$1, r as ingestDirectory, t as multiSearch, w as buildConsolidationPlan, y as sharedKnowledgeStore, z as buildProjectTagCloud } from "./src-BhZujafw.mjs";
8
8
  import { t as require_base64_js } from "./base64-js-DzVmk6Nb.mjs";
9
- import { a as setLocale, i as getLocale, n as assertScreamHostIdentity, o as t, r as createScreamDefaultHeaders, t as TextInputDialogComponent } from "./text-input-dialog-Ja718cE-.mjs";
9
+ import { a as setLocale, i as getLocale, n as assertScreamHostIdentity, o as t, r as createScreamDefaultHeaders, t as TextInputDialogComponent } from "./text-input-dialog-BoxTq4a3.mjs";
10
10
  import { createRequire } from "node:module";
11
11
  import { createHash, randomBytes, randomInt, randomUUID } from "node:crypto";
12
12
  import * as fs$1 from "node:fs/promises";
@@ -54091,7 +54091,7 @@ async function loadConfig(screamHomeDir) {
54091
54091
  url: normalizeUrl(urlRaw),
54092
54092
  api_key: parsed.api_key,
54093
54093
  model: parsed.model,
54094
- size: typeof parsed.size === "string" && parsed.size.length > 0 ? parsed.size : "auto",
54094
+ size: typeof parsed.size === "string" && parsed.size.trim().length > 0 ? parsed.size.trim() : "auto",
54095
54095
  ...editUrlRaw.length > 0 ? { edit_url: normalizeUrl(editUrlRaw) } : {},
54096
54096
  ...editModelRaw.trim().length > 0 ? { edit_model: editModelRaw.trim() } : {}
54097
54097
  };
@@ -54196,18 +54196,31 @@ async function assertOk(response) {
54196
54196
  const detail = await readErrorBody(response);
54197
54197
  throw new ApiError(`HTTP ${response.status}${detail.length > 0 ? `: ${detail}` : ""}`, response.status);
54198
54198
  }
54199
+ /**
54200
+ * True for a wire string that actually carries data. Gateways routinely emit
54201
+ * empty placeholders — `{"b64_json":"","url":"https://…/x.png"}` — next to the
54202
+ * field holding the real image, so presence alone must never win: an empty
54203
+ * `b64_json` that outranks a populated `url` yields a zero-byte "success".
54204
+ */
54205
+ function isUsableWireString(value) {
54206
+ return typeof value === "string" && value.trim().length > 0;
54207
+ }
54208
+ /** First usable image field of one object, base64 before URL. */
54209
+ function pickImageField(record) {
54210
+ if (isUsableWireString(record["b64_json"])) return { b64: record["b64_json"] };
54211
+ if (isUsableWireString(record["url"])) return { url: record["url"] };
54212
+ }
54199
54213
  /** Pull the first image payload out of a parsed JSON body (three shapes). */
54200
54214
  function extractImagePayload(body) {
54201
54215
  if (typeof body !== "object" || body === null) return void 0;
54202
54216
  const record = body;
54203
- if (typeof record["b64_json"] === "string") return { b64: record["b64_json"] };
54204
- if (typeof record["url"] === "string") return { url: record["url"] };
54217
+ const direct = pickImageField(record);
54218
+ if (direct !== void 0) return direct;
54205
54219
  const data = record["data"];
54206
54220
  if (Array.isArray(data)) for (const entry of data) {
54207
54221
  if (typeof entry !== "object" || entry === null) continue;
54208
- const item = entry;
54209
- if (typeof item["b64_json"] === "string") return { b64: item["b64_json"] };
54210
- if (typeof item["url"] === "string") return { url: item["url"] };
54222
+ const found = pickImageField(entry);
54223
+ if (found !== void 0) return found;
54211
54224
  }
54212
54225
  }
54213
54226
  /** True when a parsed SSE event carries image payload (directly or nested). */
@@ -54313,10 +54326,69 @@ async function requestImage(plan, files, external) {
54313
54326
  throw error;
54314
54327
  }
54315
54328
  }
54329
+ /** `data:image/png;base64,…` wrappers some gateways prepend to the payload. */
54330
+ const DATA_URL_PREFIX = /^data:image\/[a-z0-9.+-]+;base64,/i;
54331
+ /** Magic numbers of the formats an OpenAI-compatible image API can return. */
54332
+ function looksLikeImage(bytes) {
54333
+ const matchesAt = (offset, signature) => signature.every((byte, index) => bytes[offset + index] === byte);
54334
+ return matchesAt(0, [
54335
+ 137,
54336
+ 80,
54337
+ 78,
54338
+ 71
54339
+ ]) || matchesAt(0, [
54340
+ 255,
54341
+ 216,
54342
+ 255
54343
+ ]) || matchesAt(0, [
54344
+ 71,
54345
+ 73,
54346
+ 70,
54347
+ 56
54348
+ ]) || matchesAt(0, [66, 77]) || matchesAt(0, [
54349
+ 73,
54350
+ 73,
54351
+ 42,
54352
+ 0
54353
+ ]) || matchesAt(0, [
54354
+ 77,
54355
+ 77,
54356
+ 0,
54357
+ 42
54358
+ ]) || matchesAt(0, [
54359
+ 82,
54360
+ 73,
54361
+ 70,
54362
+ 70
54363
+ ]) && matchesAt(8, [
54364
+ 87,
54365
+ 69,
54366
+ 66,
54367
+ 80
54368
+ ]) || bytes.length > 12 && matchesAt(4, [
54369
+ 102,
54370
+ 116,
54371
+ 121,
54372
+ 112
54373
+ ]);
54374
+ }
54375
+ /**
54376
+ * Last gate before anything reaches the disk: an empty or non-image payload
54377
+ * must fail loudly instead of being written as a `.png` and reported as a
54378
+ * successful generation.
54379
+ */
54380
+ function assertImageBytes(bytes, origin) {
54381
+ if (bytes.length === 0) throw new ApiError(`The image API returned no image data (empty ${origin}).`);
54382
+ if (!looksLikeImage(bytes)) throw new ApiError(`The ${origin} is not an image (first bytes: ${Buffer.from(bytes.slice(0, 8)).toString("hex")}); check the endpoint URL and model in /config image.`);
54383
+ return bytes;
54384
+ }
54316
54385
  async function payloadToBytes(payload, external) {
54317
54386
  const nested = typeof payload === "object" && payload !== null && "result" in payload ? extractImagePayload(payload["result"]) : void 0;
54318
54387
  const found = extractImagePayload(payload) ?? nested;
54319
- if (found?.b64 !== void 0) return Uint8Array.from(Buffer.from(found.b64, "base64"));
54388
+ if (found?.b64 !== void 0) {
54389
+ const encoded = found.b64.replace(DATA_URL_PREFIX, "");
54390
+ return assertImageBytes(Uint8Array.from(Buffer.from(encoded, "base64")), "b64_json payload");
54391
+ }
54320
54392
  if (found?.url !== void 0) {
54321
54393
  const controller = new AbortController();
54322
54394
  const timeoutId = setTimeout(() => {
@@ -54330,7 +54402,7 @@ async function payloadToBytes(payload, external) {
54330
54402
  try {
54331
54403
  const response = await fetch(found.url, { signal: controller.signal });
54332
54404
  if (!response.ok) throw new ApiError(`Image download failed: HTTP ${response.status}`, response.status);
54333
- return new Uint8Array(await response.arrayBuffer());
54405
+ return assertImageBytes(new Uint8Array(await response.arrayBuffer()), `image download from ${found.url}`);
54334
54406
  } finally {
54335
54407
  clearTimeout(timeoutId);
54336
54408
  external?.removeEventListener("abort", onExternalAbort);
@@ -54417,7 +54489,7 @@ var ImageGenerateTool = class {
54417
54489
  output: error instanceof Error ? error.message : String(error)
54418
54490
  };
54419
54491
  }
54420
- const size = args.size !== void 0 && args.size.length > 0 ? args.size : config.size;
54492
+ const size = args.size !== void 0 && args.size.trim().length > 0 ? args.size.trim() : config.size;
54421
54493
  const explicitSize = size !== "auto" ? size : void 0;
54422
54494
  const editModel = config.edit_model !== void 0 && config.edit_model.trim().length > 0 ? config.edit_model.trim() : config.model;
54423
54495
  const editUrl = config.edit_url !== void 0 && config.edit_url.length > 0 ? config.edit_url : deriveEditUrl(config.url);
@@ -135490,7 +135562,7 @@ async function guidedGoalSetup(host) {
135490
135562
  host.showNotice(t("goal.storm_breaker"), t("goal.conflict_loop"));
135491
135563
  return;
135492
135564
  }
135493
- const { TextInputDialogComponent } = await import("./text-input-dialog-C52WdQtd.mjs");
135565
+ const { TextInputDialogComponent } = await import("./text-input-dialog-DQaJf2zB.mjs");
135494
135566
  const initialDesc = await promptText(host, TextInputDialogComponent, {
135495
135567
  title: t("goal.setup_title_initial"),
135496
135568
  subtitle: t("goal.setup_desc_hint"),
@@ -135511,7 +135583,7 @@ async function guidedGoalSetup(host) {
135511
135583
  await showGoalConfigWizard(host, session, confirmed.trim() || objective, false);
135512
135584
  }
135513
135585
  async function showGoalConfigWizard(host, session, objective, replace) {
135514
- const { TextInputDialogComponent } = await import("./text-input-dialog-C52WdQtd.mjs");
135586
+ const { TextInputDialogComponent } = await import("./text-input-dialog-DQaJf2zB.mjs");
135515
135587
  const turnInput = await promptNumber(host, TextInputDialogComponent, {
135516
135588
  title: t("goal.wizard_title", { objective }),
135517
135589
  subtitle: t("goal.budget_turns_hint"),
package/dist/main.mjs CHANGED
@@ -6,7 +6,7 @@ const __dirname = __cjsShimDirname(__filename);
6
6
  import "./suppress-sqlite-warning-C2VB0doZ.mjs";
7
7
  //#region src/main.ts
8
8
  try {
9
- (await import("./app-CIbVW5_w.mjs")).main();
9
+ (await import("./app-XCsQ2EfW.mjs")).main();
10
10
  } catch (error) {
11
11
  process.stderr.write(`${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
12
12
  process.exit(1);
@@ -513,7 +513,7 @@ const dictionaries = {
513
513
  "image.error_empty_url": "生图 API 地址不能为空。",
514
514
  "image.error_empty_key": "生图 API 密钥不能为空。",
515
515
  "image.input_model": "输入生图模型 ID",
516
- "image.model_hint": "回车使用默认 gpt-image-2",
516
+ "image.model_hint": "回车使用默认模型(见输入框提示的模型 ID)",
517
517
  "image.input_edit_url": "输入图生图 API 完整地址(可选)",
518
518
  "image.edit_url_hint": "留空时:若主地址以 /images/generations 结尾,自动改用同路径 /images/edits",
519
519
  "image.input_edit_model": "输入图生图模型 ID(可选)",
@@ -1820,7 +1820,7 @@ const dictionaries = {
1820
1820
  "image.error_empty_url": "Image API URL cannot be empty.",
1821
1821
  "image.error_empty_key": "Image API key cannot be empty.",
1822
1822
  "image.input_model": "Enter image model ID",
1823
- "image.model_hint": "Press Enter to keep the default gpt-image-2",
1823
+ "image.model_hint": "Press Enter to keep the default model (the ID shown in the field)",
1824
1824
  "image.input_edit_url": "Enter the full image-edit URL (optional)",
1825
1825
  "image.edit_url_hint": "When empty: if the main URL ends in /images/generations, the sibling /images/edits endpoint is used automatically",
1826
1826
  "image.input_edit_model": "Enter image-edit model ID (optional)",
@@ -3,5 +3,5 @@ import { fileURLToPath as __cjsShimFileURLToPath } from 'node:url';
3
3
  import { dirname as __cjsShimDirname } from 'node:path';
4
4
  const __filename = __cjsShimFileURLToPath(import.meta.url);
5
5
  const __dirname = __cjsShimDirname(__filename);
6
- import { t as TextInputDialogComponent } from "./text-input-dialog-Ja718cE-.mjs";
6
+ import { t as TextInputDialogComponent } from "./text-input-dialog-BoxTq4a3.mjs";
7
7
  export { TextInputDialogComponent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scream-code",
3
- "version": "0.17.2",
3
+ "version": "0.17.3",
4
4
  "description": "A terminal-native AI agent for builders",
5
5
  "license": "MIT",
6
6
  "author": "ScreamCli",