@eddyskywalker/dsh-chatgpt-subscription 0.2.19 → 0.2.21
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/CHANGELOG.md +5 -0
- package/README.md +1 -0
- package/lib/index.js +200 -14
- package/lib/types/host/antigravity/adapter.d.ts +2 -0
- package/lib/types/host/antigravity/adapter.d.ts.map +1 -1
- package/lib/types/host/antigravity/mapper.d.ts +51 -2
- package/lib/types/host/antigravity/mapper.d.ts.map +1 -1
- package/lib/types/host/search-provider-switcher.d.ts +4 -0
- package/lib/types/host/search-provider-switcher.d.ts.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
- 代理偏好在运行时变化(例如系统代理 ↔ 直连)会重新选择抓取后端;选择 ChatGPT 搜索来源时同时切换搜索与抓取的行为保持不变。
|
|
8
8
|
- `ProxyManager` 新增系统代理探测的观察点(`onSystemProxyDetected`):只在「从未知变为已知代理」时通知——探测失败与「本机没有代理」都读作 `null`,因此不会因为一次 `reg query` / `scutil` 抖动就把已经可用的路由拆掉。插件据此在代理迟于 DSH 出现时自动重新选择抓取后端,否则内置 provider 会一直占到进程结束。
|
|
9
9
|
- 新增 `test/fetch-address-policy.test.ts`(地址分类、fake-ip 识别、私网解析拒绝、解析失败放行),并扩充 `test/codex-fetch.test.ts`、`test/search-provider-switcher.test.ts`、`test/web-provider-lifecycle.test.ts` 覆盖抓取 provider 的拒绝路径与后端切换。
|
|
10
|
+
- 修复 Antigravity 线路静默丢弃用户上传图片的问题(issue #5):本插件把 `gemini-*` / `claude-*` 都声明为支持图片输入,DSH 因此不把图片投影成文本,而是以 `{ type: 'image', attachment }` 的形式原样交给适配器;但 `mapper.ts` 只认内联 `data` / `base64` / `source.*`,`contentToUserParts()` 又用 `if (img) parts.push(img)` 静默跳过,于是发给 Google 的 `streamGenerateContent` 请求里只剩下文本,模型只能回答「没有收到图片」。现在 `AntigravityAdapter` 接入 `ctx.attachments`,在组装请求前把附件解析为 Gemini `inlineData`(媒体类型取自已校验的附件引用),同一附件在多条消息中只读取一次。
|
|
11
|
+
- 读不出字节的图片不再静默消失:降级为 `[image unavailable: …]` 文本让模型能说明图片没读到;取消(AbortSignal)仍向上抛出,不会变成模型可见的文本。工具结果中的图片同样以 `[image: 名称]` 保留,与 Codex 线路一致。
|
|
12
|
+
- 新增 8 条 `test/antigravity-mapper.test.ts` 用例(内联映射、跨消息去重、读取失败降级、无附件服务降级、取消传播、旧内联格式、工具结果图片标记,以及不传解析结果时默认参数仍不静默丢弃)与 3 条 `test/antigravity-adapter.test.ts` 端到端用例:`gemini-3.8-flash` 与 `claude-opus-4-6` 各断言一次真实请求体中的 `inlineData`(两个 provider 共用同一 mapper),另一条用 429 逼出候选链,断言每个 runtime model 候选都带着图片、且附件只读一次。新增 `test/antigravity-image-wire.test.ts` 做线级验证:不 mock `fetch`,改为在 127.0.0.1 上起回环服务器并把 `DSH_ANTIGRAVITY_ENDPOINT` 指向它,读取真正离开进程的请求体,断言 `contents[0].parts` 是 `[text, inlineData]`。把这三组用例跑在回退后的修复前源码上,共 12 条失败(其中线级用例显示 socket 上只剩文本),因此它们是货真价实的回归用例。再新增 `test/antigravity-image-bundle.test.ts`:issue 是在 npm 安装版上发现的,所以这条用例直接 import 打包产物 `lib/index.js`(而不是 `src`)跑同一段线级断言,证明用户装到的那个 bundle 里同样带着修复;`lib/` 是提交进仓库的生成物,源码改动后忘记 `npm run build` 时它会失败。工具结果里的图片仍只记名不内联——DSH 自己的多 provider 适配器(`llm-pi-ai`)对工具结果里的非文本块是直接丢掉的,记名已经比参照实现保留得更多,而 `functionResponse.parts` 是否被该端点接受在本地无从验证,故按「不臆造线上行为」处理,并在代码里写明理由。
|
|
13
|
+
- 新增单次请求的图片体积上限(`MAX_REQUEST_IMAGE_BYTES`,12 MiB base64):修复后本线路会把历史里的图片全部内联,图片多的会话会让请求体持续膨胀直到被 Google 的 20 MB 体积上限拒绝,而最先被牺牲的恰是模型最不需要的旧图。现在超过预算时按 DSH 的顺序(最旧优先)把图片替换为上游同款占位文案,`test/antigravity-mapper.test.ts` 与 `test/antigravity-adapter.test.ts` 各有一条用例覆盖(被省略的图片不会被读取,最新一张仍以 `inlineData` 发出,且不改动持久历史)。该逻辑在插件内实现而非调用 DSH 的 `offloadRequestImagesWithPolicy`:本插件支持的 DSH 区间里这个符号的形态发生了不兼容变化(`OFFLOADED_IMAGE_TEXT` 常量 → `offloadedImageText()` 函数;`offloadRequestImages()` 在 0.1.5-rc.1 被移除;`placeholder` 由可选变必填),绑定任一形态都会重演 issue #4 那种"在某个受支持版本上直接加载失败"。
|
|
14
|
+
- 修正 `test/subagent-model-authorization.test.ts` 的守卫类型:Host 工具注册表登记的是单参数 `ToolGuard`(`@deepseek-ai/dsh-tools`),测试却按插件内部的三参数 `DelegationGuard` 别名调用,导致 `npm run typecheck` 长期以 TS2554 失败。模拟注册表改为按真实契约取类型后,仓库自带的 `npm run typecheck` 恢复通过。
|
|
10
15
|
|
|
11
16
|
## 0.2.15 - 2026-09-11
|
|
12
17
|
|
package/README.md
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
**模型接入**
|
|
31
31
|
|
|
32
32
|
- 固定 Codex Responses 地址,支持流式文本、reasoning summary、图片输入与工具调用/结果;
|
|
33
|
+
- Antigravity(Gemini / Claude)线路同样接受图片输入:DSH 以 `{ type: 'image', attachment }` 下发的粘贴图片会经附件服务读出字节并按 Gemini `inlineData` 发出,读不出的图片降级为一条可见的说明文本而不是被静默丢弃。单次请求的图片 base64 负载超过 12 MiB 时,最旧的图片按上游同款占位文案替换为文本,避免整条请求被体积上限拒绝;
|
|
33
34
|
- 原样转发 DSH 暴露的工具 schema;命令工具兼容 `pwsh` / `powershell`、`bash`、`sh` 与 `shell`,并按 PowerShell、Bash 或 POSIX sh 注入对应说明;
|
|
34
35
|
- 429/5xx 由 DSH retry policy 接管;401 只强制刷新并重试一次,支持 `AbortSignal`;
|
|
35
36
|
- Codex、Code review 及上游返回的额外窗口额度,支持 Credits、月度消费控制与 reset credits 展示;60 秒缓存、15 秒上游节流并遵守 `Retry-After`;
|
package/lib/index.js
CHANGED
|
@@ -3784,6 +3784,11 @@ var SearchProviderSwitcher = class {
|
|
|
3784
3784
|
originalSearchProvider;
|
|
3785
3785
|
originalFetchProvider;
|
|
3786
3786
|
initialized = false;
|
|
3787
|
+
pending = Promise.resolve();
|
|
3788
|
+
disposed = false;
|
|
3789
|
+
dispose() {
|
|
3790
|
+
this.disposed = true;
|
|
3791
|
+
}
|
|
3787
3792
|
state = "idle";
|
|
3788
3793
|
constructor(loader) {
|
|
3789
3794
|
this.loader = loader;
|
|
@@ -3797,13 +3802,23 @@ var SearchProviderSwitcher = class {
|
|
|
3797
3802
|
configuredFetchProvider: providerId(config.fetchProvider)
|
|
3798
3803
|
};
|
|
3799
3804
|
}
|
|
3800
|
-
|
|
3805
|
+
select(preference, options = {}) {
|
|
3806
|
+
const selection = { ...options };
|
|
3807
|
+
const task = this.pending.then(() => this.applySelection(preference, selection));
|
|
3808
|
+
this.pending = task.catch(() => void 0);
|
|
3809
|
+
return task;
|
|
3810
|
+
}
|
|
3811
|
+
async applySelection(preference, options) {
|
|
3812
|
+
if (this.disposed) return;
|
|
3801
3813
|
const entry = this.findWebEntry();
|
|
3802
3814
|
if (entry === null) {
|
|
3803
3815
|
this.state = "missing";
|
|
3804
3816
|
return;
|
|
3805
3817
|
}
|
|
3818
|
+
await entry.fiber?.await();
|
|
3819
|
+
if (this.disposed) return;
|
|
3806
3820
|
const config = currentConfig(entry);
|
|
3821
|
+
const running = entry.fiber?.config;
|
|
3807
3822
|
if (!this.initialized) {
|
|
3808
3823
|
this.originalSearchProvider = typeof config.searchProvider === "string" && config.searchProvider !== "codex-subscription" ? config.searchProvider : void 0;
|
|
3809
3824
|
this.originalFetchProvider = typeof config.fetchProvider === "string" && config.fetchProvider !== "codex-subscription" ? config.fetchProvider : void 0;
|
|
@@ -3812,7 +3827,9 @@ var SearchProviderSwitcher = class {
|
|
|
3812
3827
|
const codexSelected = preference === SEARCH_PROVIDER_CODEX;
|
|
3813
3828
|
const nextSearch = codexSelected ? CODEX_SEARCH_PROVIDER_ID : this.originalSearchProvider;
|
|
3814
3829
|
const nextFetch = codexSelected || options.pluginFetch === true ? CODEX_FETCH_PROVIDER_ID : this.originalFetchProvider;
|
|
3815
|
-
|
|
3830
|
+
const configured = config.searchProvider === nextSearch && config.fetchProvider === nextFetch;
|
|
3831
|
+
const applied = running === void 0 || running.searchProvider === nextSearch && running.fetchProvider === nextFetch;
|
|
3832
|
+
if (configured && applied) return;
|
|
3816
3833
|
const nextConfig = { ...config };
|
|
3817
3834
|
if (nextSearch === void 0) delete nextConfig.searchProvider;
|
|
3818
3835
|
else nextConfig.searchProvider = nextSearch;
|
|
@@ -3820,7 +3837,8 @@ var SearchProviderSwitcher = class {
|
|
|
3820
3837
|
else nextConfig.fetchProvider = nextFetch;
|
|
3821
3838
|
this.state = "applying";
|
|
3822
3839
|
try {
|
|
3823
|
-
await entry.update(
|
|
3840
|
+
if (configured && entry.fiber) await entry.fiber.update(nextConfig, true);
|
|
3841
|
+
else await entry.update({ config: nextConfig });
|
|
3824
3842
|
this.state = "applied";
|
|
3825
3843
|
} catch (error) {
|
|
3826
3844
|
this.state = "failed";
|
|
@@ -5204,7 +5222,157 @@ function parseArguments(raw) {
|
|
|
5204
5222
|
const parsed = typeof raw === "string" ? safeJsonParse(raw) : raw;
|
|
5205
5223
|
return isRecord(parsed) ? parsed : {};
|
|
5206
5224
|
}
|
|
5207
|
-
|
|
5225
|
+
const NO_RESOLVED_IMAGES = /* @__PURE__ */ new Map();
|
|
5226
|
+
function attachmentOf(block) {
|
|
5227
|
+
const attachment = block.attachment;
|
|
5228
|
+
if (!isRecord(attachment)) return void 0;
|
|
5229
|
+
return typeof attachment.attachmentId === "string" ? attachment : void 0;
|
|
5230
|
+
}
|
|
5231
|
+
function attachmentLabel(block) {
|
|
5232
|
+
const attachment = isRecord(block.attachment) ? block.attachment : void 0;
|
|
5233
|
+
return asString$1(attachment?.name) || asString$1(attachment?.attachmentId);
|
|
5234
|
+
}
|
|
5235
|
+
function collectImageRefs(content, refs) {
|
|
5236
|
+
if (!Array.isArray(content)) return;
|
|
5237
|
+
for (const block of content) {
|
|
5238
|
+
if (!isRecord(block) || block.type !== "image") continue;
|
|
5239
|
+
const attachment = attachmentOf(block);
|
|
5240
|
+
if (attachment) refs.set(attachment.attachmentId, attachment);
|
|
5241
|
+
}
|
|
5242
|
+
}
|
|
5243
|
+
function isAbort(error, signal) {
|
|
5244
|
+
return signal?.aborted === true || error instanceof Error && error.name === "AbortError";
|
|
5245
|
+
}
|
|
5246
|
+
/**
|
|
5247
|
+
* Model-facing replacement for an image this route omits to stay inside its
|
|
5248
|
+
* request budget. The wording matches DSH's own placeholder, which this plugin
|
|
5249
|
+
* cannot import: that symbol moved inside the supported DSH range
|
|
5250
|
+
* (`OFFLOADED_IMAGE_TEXT` in 0.1.1-rc.2, the `offloadedImageText()` function in
|
|
5251
|
+
* 0.1.5-rc.1), `offloadRequestImages()` was removed in 0.1.5-rc.1, and
|
|
5252
|
+
* `offloadRequestImagesWithPolicy()` gained a required `placeholder` field.
|
|
5253
|
+
* Binding to either shape would break the plugin on some supported host exactly
|
|
5254
|
+
* the way the `CallId` export did; `host/common/brand-compat.ts` carries the
|
|
5255
|
+
* same lesson.
|
|
5256
|
+
*/
|
|
5257
|
+
const OMITTED_IMAGE_TEXT = "[image omitted to keep the request within its image limit; older images are omitted first. If this image is still needed, read its file again when a path is available; otherwise ask the user to attach it again.]";
|
|
5258
|
+
/**
|
|
5259
|
+
* Base64 image payload one Antigravity request may carry. Google caps a request
|
|
5260
|
+
* carrying inline data at 20 MB, and the same body also holds the system
|
|
5261
|
+
* instruction, the conversation text, and the tool declarations.
|
|
5262
|
+
*/
|
|
5263
|
+
const MAX_REQUEST_IMAGE_BYTES = 12 * 1024 * 1024;
|
|
5264
|
+
/** Base64 length of raw image bytes, including padding. */
|
|
5265
|
+
function base64Length(bytes) {
|
|
5266
|
+
return Math.ceil(bytes / 3) * 4;
|
|
5267
|
+
}
|
|
5268
|
+
/** Request payload one inline image block occupies, when it can be measured. */
|
|
5269
|
+
function requestImageBytes(block) {
|
|
5270
|
+
const attachment = attachmentOf(block);
|
|
5271
|
+
if (attachment) return base64Length(attachment.bytes);
|
|
5272
|
+
const inline = asString$1(block.data) || asString$1(block.base64);
|
|
5273
|
+
return inline ? inline.length : void 0;
|
|
5274
|
+
}
|
|
5275
|
+
function collectRequestImageBytes(content, lengths) {
|
|
5276
|
+
if (!Array.isArray(content)) return;
|
|
5277
|
+
for (const block of content) {
|
|
5278
|
+
if (!isRecord(block) || block.type !== "image") continue;
|
|
5279
|
+
const bytes = requestImageBytes(block);
|
|
5280
|
+
if (bytes !== void 0) lengths.push(bytes);
|
|
5281
|
+
}
|
|
5282
|
+
}
|
|
5283
|
+
/**
|
|
5284
|
+
* Replace the oldest inline images with a text placeholder once one request
|
|
5285
|
+
* would carry more than {@link MAX_REQUEST_IMAGE_BYTES} of base64 image data.
|
|
5286
|
+
*
|
|
5287
|
+
* Without this bound an image-heavy session keeps growing the request body until
|
|
5288
|
+
* Google rejects it, and the images that made it fail are the ones the model
|
|
5289
|
+
* needed least. The oldest occurrences go first, exactly as DSH's own providers
|
|
5290
|
+
* order them, and the placeholder tells the model the image is missing instead
|
|
5291
|
+
* of letting it answer as though the picture were simply blank.
|
|
5292
|
+
*
|
|
5293
|
+
* @param options - the request about to be built; durable history stays untouched.
|
|
5294
|
+
* @returns the original options when they already fit, otherwise shallow copies.
|
|
5295
|
+
*/
|
|
5296
|
+
function offloadOldestRequestImages(options) {
|
|
5297
|
+
const lengths = [];
|
|
5298
|
+
for (const message of options.messages) collectRequestImageBytes(message.content, lengths);
|
|
5299
|
+
const excess = lengths.reduce((sum, bytes) => sum + bytes, 0) - MAX_REQUEST_IMAGE_BYTES;
|
|
5300
|
+
if (excess <= 0) return options;
|
|
5301
|
+
let omitted = 0;
|
|
5302
|
+
let freed = 0;
|
|
5303
|
+
for (const bytes of lengths) {
|
|
5304
|
+
if (freed >= excess) break;
|
|
5305
|
+
freed += bytes;
|
|
5306
|
+
omitted += 1;
|
|
5307
|
+
}
|
|
5308
|
+
const remaining = { count: omitted };
|
|
5309
|
+
const messages = options.messages.map((message) => {
|
|
5310
|
+
if (remaining.count === 0 || !Array.isArray(message.content)) return message;
|
|
5311
|
+
let replaced = false;
|
|
5312
|
+
const content = message.content.map((block) => {
|
|
5313
|
+
if (remaining.count === 0 || !isRecord(block) || block.type !== "image") return block;
|
|
5314
|
+
if (requestImageBytes(block) === void 0) return block;
|
|
5315
|
+
remaining.count -= 1;
|
|
5316
|
+
replaced = true;
|
|
5317
|
+
return {
|
|
5318
|
+
type: "text",
|
|
5319
|
+
text: OMITTED_IMAGE_TEXT
|
|
5320
|
+
};
|
|
5321
|
+
});
|
|
5322
|
+
return replaced ? {
|
|
5323
|
+
...message,
|
|
5324
|
+
content
|
|
5325
|
+
} : message;
|
|
5326
|
+
});
|
|
5327
|
+
return {
|
|
5328
|
+
...options,
|
|
5329
|
+
messages
|
|
5330
|
+
};
|
|
5331
|
+
}
|
|
5332
|
+
/**
|
|
5333
|
+
* Read every durable `{ type: 'image', attachment }` block one request carries.
|
|
5334
|
+
*
|
|
5335
|
+
* This provider declares image input, so DSH hands those blocks to the adapter
|
|
5336
|
+
* unchanged instead of projecting them to text, and Gemini can only receive them
|
|
5337
|
+
* as `inlineData` bytes. An image that cannot be read resolves to
|
|
5338
|
+
* `unavailable` rather than disappearing: `contentToUserParts` then leaves the
|
|
5339
|
+
* model a text marker, because a turn that silently loses its image is far
|
|
5340
|
+
* harder to diagnose than one that says so.
|
|
5341
|
+
*
|
|
5342
|
+
* @param options - the exact request about to be built.
|
|
5343
|
+
* @param attachments - durable attachment store; absent when the host wired none.
|
|
5344
|
+
* @param signal - cancellation, forwarded to every attachment read.
|
|
5345
|
+
* @returns one resolution per distinct attachment id, empty when there is no image.
|
|
5346
|
+
*/
|
|
5347
|
+
async function resolveRequestImages(options, attachments, signal) {
|
|
5348
|
+
const refs = /* @__PURE__ */ new Map();
|
|
5349
|
+
for (const message of options.messages) collectImageRefs(message.content, refs);
|
|
5350
|
+
if (refs.size === 0) return NO_RESOLVED_IMAGES;
|
|
5351
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
5352
|
+
await Promise.all([...refs].map(async ([attachmentId, ref]) => {
|
|
5353
|
+
if (!attachments) {
|
|
5354
|
+
resolved.set(attachmentId, { kind: "unavailable" });
|
|
5355
|
+
return;
|
|
5356
|
+
}
|
|
5357
|
+
try {
|
|
5358
|
+
const stored = await attachments.readImage(ref, signal);
|
|
5359
|
+
resolved.set(attachmentId, {
|
|
5360
|
+
kind: "inline",
|
|
5361
|
+
mediaType: stored.ref.mediaType,
|
|
5362
|
+
data: Buffer.from(stored.data).toString("base64")
|
|
5363
|
+
});
|
|
5364
|
+
} catch (error) {
|
|
5365
|
+
if (isAbort(error, signal)) throw error;
|
|
5366
|
+
resolved.set(attachmentId, { kind: "unavailable" });
|
|
5367
|
+
}
|
|
5368
|
+
}));
|
|
5369
|
+
return resolved;
|
|
5370
|
+
}
|
|
5371
|
+
function unavailableImageText(block) {
|
|
5372
|
+
const label = attachmentLabel(block);
|
|
5373
|
+
return `[image unavailable: ${label ? `${label} could not be read` : "the image could not be read"}; ask the user to attach it again if the image is needed]`;
|
|
5374
|
+
}
|
|
5375
|
+
function imageBlockToPart(block, images) {
|
|
5208
5376
|
let data = asString$1(block.data) || asString$1(block.base64);
|
|
5209
5377
|
const source = isRecord(block.source) ? block.source : void 0;
|
|
5210
5378
|
if (!data && source) data = asString$1(source.data) || asString$1(source.base64);
|
|
@@ -5216,19 +5384,25 @@ function imageBlockToPart(block) {
|
|
|
5216
5384
|
data = match[2] || "";
|
|
5217
5385
|
}
|
|
5218
5386
|
}
|
|
5219
|
-
|
|
5387
|
+
if (data) return { inlineData: {
|
|
5220
5388
|
mimeType,
|
|
5221
5389
|
data
|
|
5390
|
+
} };
|
|
5391
|
+
const attachment = attachmentOf(block);
|
|
5392
|
+
const resolved = attachment ? images.get(attachment.attachmentId) : void 0;
|
|
5393
|
+
return resolved?.kind === "inline" ? { inlineData: {
|
|
5394
|
+
mimeType: resolved.mediaType,
|
|
5395
|
+
data: resolved.data
|
|
5222
5396
|
} } : void 0;
|
|
5223
5397
|
}
|
|
5224
|
-
function contentToUserParts(content) {
|
|
5398
|
+
function contentToUserParts(content, images) {
|
|
5225
5399
|
if (typeof content === "string") return [{ text: sanitizeText(content) }];
|
|
5226
5400
|
if (!Array.isArray(content)) return [];
|
|
5227
5401
|
const parts = [];
|
|
5228
5402
|
for (const block of content) if (isRecord(block) && block.type === "text" && typeof block.text === "string") parts.push({ text: sanitizeText(block.text) });
|
|
5229
5403
|
else if (isRecord(block) && block.type === "image") {
|
|
5230
|
-
const img = imageBlockToPart(block);
|
|
5231
|
-
|
|
5404
|
+
const img = imageBlockToPart(block, images);
|
|
5405
|
+
parts.push(img ?? { text: unavailableImageText(block) });
|
|
5232
5406
|
}
|
|
5233
5407
|
return parts;
|
|
5234
5408
|
}
|
|
@@ -5238,6 +5412,10 @@ function toolResultText(blocks) {
|
|
|
5238
5412
|
if (!isRecord(block)) return "";
|
|
5239
5413
|
if (block.type === "text" && typeof block.text === "string") return sanitizeText(block.text);
|
|
5240
5414
|
if (block.type === "tool-result") return toolResultText(block.content);
|
|
5415
|
+
if (block.type === "image") {
|
|
5416
|
+
const label = attachmentLabel(block);
|
|
5417
|
+
return label ? `[image: ${label}]` : "[image]";
|
|
5418
|
+
}
|
|
5241
5419
|
return "";
|
|
5242
5420
|
}).join("");
|
|
5243
5421
|
}
|
|
@@ -5331,7 +5509,7 @@ function pushToolResult(contents, result, toolCalls, model, runtimeModel) {
|
|
|
5331
5509
|
parts: [part]
|
|
5332
5510
|
});
|
|
5333
5511
|
}
|
|
5334
|
-
function convertMessages(options, model, runtimeModel) {
|
|
5512
|
+
function convertMessages(options, model, runtimeModel, images = NO_RESOLVED_IMAGES) {
|
|
5335
5513
|
const contents = [];
|
|
5336
5514
|
const toolCalls = /* @__PURE__ */ new Map();
|
|
5337
5515
|
for (const message of options.messages) {
|
|
@@ -5345,7 +5523,7 @@ function convertMessages(options, model, runtimeModel) {
|
|
|
5345
5523
|
continue;
|
|
5346
5524
|
}
|
|
5347
5525
|
const content = Array.isArray(message.content) ? message.content : [];
|
|
5348
|
-
const userParts = contentToUserParts(content.filter((b) => !isRecord(b) || b.type !== "tool-result"));
|
|
5526
|
+
const userParts = contentToUserParts(content.filter((b) => !isRecord(b) || b.type !== "tool-result"), images);
|
|
5349
5527
|
if (role === "system") {
|
|
5350
5528
|
if (userParts.length) contents.push({
|
|
5351
5529
|
role: GEMINI_ROLE.user,
|
|
@@ -5383,9 +5561,9 @@ function mapToolChoiceMode(toolChoice) {
|
|
|
5383
5561
|
function getMaxOutputTokens(modelId, runtimeModel) {
|
|
5384
5562
|
return RUNTIME_MAX_OUTPUT_TOKENS[runtimeModel] || RUNTIME_MAX_OUTPUT_TOKENS[modelId] || 65536;
|
|
5385
5563
|
}
|
|
5386
|
-
function buildRequest(options, model, projectId, runtimeModel, effort) {
|
|
5564
|
+
function buildRequest(options, model, projectId, runtimeModel, effort, images = NO_RESOLVED_IMAGES) {
|
|
5387
5565
|
const request = {
|
|
5388
|
-
contents: convertMessages(options, model, runtimeModel),
|
|
5566
|
+
contents: convertMessages(options, model, runtimeModel, images),
|
|
5389
5567
|
systemInstruction: {
|
|
5390
5568
|
role: GEMINI_ROLE.user,
|
|
5391
5569
|
parts: [
|
|
@@ -5749,9 +5927,11 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
5749
5927
|
if (routing?.fallbackCandidates) {
|
|
5750
5928
|
for (const fc of routing.fallbackCandidates) if (!candidates.includes(fc)) candidates.push(fc);
|
|
5751
5929
|
}
|
|
5930
|
+
const requestOptions = offloadOldestRequestImages(options);
|
|
5931
|
+
const images = await resolveRequestImages(requestOptions, this.options.attachments, signal);
|
|
5752
5932
|
let response;
|
|
5753
5933
|
for (const runtimeModel of candidates) {
|
|
5754
|
-
const body = JSON.stringify(buildRequest(
|
|
5934
|
+
const body = JSON.stringify(buildRequest(requestOptions, model, projectId, runtimeModel, effort, images));
|
|
5755
5935
|
const headers = {
|
|
5756
5936
|
...antigravityHeaders(token),
|
|
5757
5937
|
...model.id.startsWith("claude-") ? { "anthropic-beta": "interleaved-thinking-2025-05-14" } : {}
|
|
@@ -6211,7 +6391,10 @@ function apply(ctx, pluginConfig = {}) {
|
|
|
6211
6391
|
logger: ctx.logger
|
|
6212
6392
|
});
|
|
6213
6393
|
const proxyFetch = proxyManager.createFetch();
|
|
6214
|
-
const antigravityAdapter = new AntigravityAdapter(antigravityStore, antigravityModelSettings, antigravityPreferences, {
|
|
6394
|
+
const antigravityAdapter = new AntigravityAdapter(antigravityStore, antigravityModelSettings, antigravityPreferences, {
|
|
6395
|
+
fetchFn: proxyFetch,
|
|
6396
|
+
attachments: ctx.attachments
|
|
6397
|
+
});
|
|
6215
6398
|
const disposeAntigravityAdapter = ctx.llm.registerAdapter([PROVIDER_ID], antigravityAdapter);
|
|
6216
6399
|
const disposeAntigravityRoutes = registerAntigravityRoutes(ctx, antigravityStore, antigravityModelSettings, antigravityPreferences, proxyFetch);
|
|
6217
6400
|
const oauth = new OAuthService(store, {
|
|
@@ -6243,10 +6426,13 @@ function apply(ctx, pluginConfig = {}) {
|
|
|
6243
6426
|
applyWebProviders();
|
|
6244
6427
|
});
|
|
6245
6428
|
const disposePreferenceWatch = preferences.watch((next) => applyWebProviders(next));
|
|
6429
|
+
const disposeReadyWatch = ctx.get("appReady")?.onReady(() => applyWebProviders());
|
|
6246
6430
|
const disposeProxyWatch = proxyManager.onSystemProxyDetected(() => {
|
|
6247
6431
|
applyWebProviders();
|
|
6248
6432
|
});
|
|
6249
6433
|
return () => {
|
|
6434
|
+
searchSwitcher.dispose();
|
|
6435
|
+
disposeReadyWatch?.();
|
|
6250
6436
|
disposeProxyWatch();
|
|
6251
6437
|
disposePreferenceWatch();
|
|
6252
6438
|
disposeImageTool();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LlmAdapter, ReasoningEffortId, type GenerateOptions, type LlmModelInfo, type LlmProviderInfo, type LlmResolvedModelInfo, type PreparedAdapterCall, type StreamChunk } from '@deepseek-ai/dsh-llm';
|
|
2
2
|
import { FileCredentialStore, FileModelSettingsStore, type AntigravityPreferenceStore } from './token-store.ts';
|
|
3
|
+
import { type AttachmentImageReader } from './mapper.ts';
|
|
3
4
|
export declare function resolveDefaultReasoningEffort(efforts: readonly string[], configuredEffort?: string | null): ReasoningEffortId | undefined;
|
|
4
5
|
export declare class AntigravityAdapter extends LlmAdapter {
|
|
5
6
|
private readonly store;
|
|
@@ -8,6 +9,7 @@ export declare class AntigravityAdapter extends LlmAdapter {
|
|
|
8
9
|
private readonly options;
|
|
9
10
|
constructor(store?: FileCredentialStore, modelSettings?: FileModelSettingsStore, preferences?: AntigravityPreferenceStore | undefined, options?: {
|
|
10
11
|
fetchFn?: typeof fetch;
|
|
12
|
+
attachments?: AttachmentImageReader;
|
|
11
13
|
});
|
|
12
14
|
providerInfo(provider: string): LlmProviderInfo;
|
|
13
15
|
providerRetryPolicy(): undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAU7B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAU7B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAG/G,OAAO,EAOL,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAA;AAGpB,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,iBAAiB,GAAG,SAAS,CAc/B;AAED,qBAAa,kBAAmB,SAAQ,UAAU;IAE9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,KAAK,sBAA4B,EACjC,aAAa,yBAA+B,EAC5C,WAAW,CAAC,EAAE,0BAA0B,YAAA,EACxC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;QAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;KAAO;IAKhG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAI/C,mBAAmB,IAAI,SAAS;IAIhC,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS;IAI7D,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAkB/D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwCpG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO/F,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;YAwBpD,aAAa;CA+G7B"}
|
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
import { type ContentBlock, type GenerateOptions, type StreamChunk } from '@deepseek-ai/dsh-llm';
|
|
2
|
+
import type { AttachmentStore } from '@deepseek-ai/dsh-attachment';
|
|
2
3
|
import { type AntigravityModelDef } from './types.ts';
|
|
3
4
|
export declare function sanitizeToolCallId(id: string, fallbackName: string): string;
|
|
4
|
-
|
|
5
|
+
/** Attachment seam this route needs: verified bytes for one durable image. */
|
|
6
|
+
export type AttachmentImageReader = Pick<AttachmentStore, 'readImage'>;
|
|
7
|
+
/** One durable user image resolved for an in-flight request, or proven unreadable. */
|
|
8
|
+
export type ResolvedRequestImage = {
|
|
9
|
+
readonly kind: 'inline';
|
|
10
|
+
readonly mediaType: string;
|
|
11
|
+
readonly data: string;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'unavailable';
|
|
14
|
+
};
|
|
15
|
+
/** Resolved images keyed by durable attachment id; consumed by one request build. */
|
|
16
|
+
export type ResolvedRequestImages = ReadonlyMap<string, ResolvedRequestImage>;
|
|
17
|
+
/**
|
|
18
|
+
* Base64 image payload one Antigravity request may carry. Google caps a request
|
|
19
|
+
* carrying inline data at 20 MB, and the same body also holds the system
|
|
20
|
+
* instruction, the conversation text, and the tool declarations.
|
|
21
|
+
*/
|
|
22
|
+
export declare const MAX_REQUEST_IMAGE_BYTES: number;
|
|
23
|
+
/**
|
|
24
|
+
* Replace the oldest inline images with a text placeholder once one request
|
|
25
|
+
* would carry more than {@link MAX_REQUEST_IMAGE_BYTES} of base64 image data.
|
|
26
|
+
*
|
|
27
|
+
* Without this bound an image-heavy session keeps growing the request body until
|
|
28
|
+
* Google rejects it, and the images that made it fail are the ones the model
|
|
29
|
+
* needed least. The oldest occurrences go first, exactly as DSH's own providers
|
|
30
|
+
* order them, and the placeholder tells the model the image is missing instead
|
|
31
|
+
* of letting it answer as though the picture were simply blank.
|
|
32
|
+
*
|
|
33
|
+
* @param options - the request about to be built; durable history stays untouched.
|
|
34
|
+
* @returns the original options when they already fit, otherwise shallow copies.
|
|
35
|
+
*/
|
|
36
|
+
export declare function offloadOldestRequestImages(options: GenerateOptions): GenerateOptions;
|
|
37
|
+
/**
|
|
38
|
+
* Read every durable `{ type: 'image', attachment }` block one request carries.
|
|
39
|
+
*
|
|
40
|
+
* This provider declares image input, so DSH hands those blocks to the adapter
|
|
41
|
+
* unchanged instead of projecting them to text, and Gemini can only receive them
|
|
42
|
+
* as `inlineData` bytes. An image that cannot be read resolves to
|
|
43
|
+
* `unavailable` rather than disappearing: `contentToUserParts` then leaves the
|
|
44
|
+
* model a text marker, because a turn that silently loses its image is far
|
|
45
|
+
* harder to diagnose than one that says so.
|
|
46
|
+
*
|
|
47
|
+
* @param options - the exact request about to be built.
|
|
48
|
+
* @param attachments - durable attachment store; absent when the host wired none.
|
|
49
|
+
* @param signal - cancellation, forwarded to every attachment read.
|
|
50
|
+
* @returns one resolution per distinct attachment id, empty when there is no image.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveRequestImages(options: GenerateOptions, attachments: AttachmentImageReader | undefined, signal?: AbortSignal): Promise<ResolvedRequestImages>;
|
|
53
|
+
export declare function convertMessages(options: GenerateOptions, model: AntigravityModelDef, runtimeModel: string, images?: ResolvedRequestImages): Array<{
|
|
5
54
|
role: string;
|
|
6
55
|
parts: Array<Record<string, unknown>>;
|
|
7
56
|
}>;
|
|
@@ -9,7 +58,7 @@ export declare function stripMetaSchema(schema: unknown): unknown;
|
|
|
9
58
|
export declare function convertTools(tools: GenerateOptions['tools']): Array<Record<string, unknown>> | undefined;
|
|
10
59
|
export declare function mapToolChoiceMode(toolChoice: unknown): string;
|
|
11
60
|
export declare function getMaxOutputTokens(modelId: string, runtimeModel: string): number;
|
|
12
|
-
export declare function buildRequest(options: GenerateOptions, model: AntigravityModelDef, projectId: string, runtimeModel: string, effort?: string): Record<string, unknown>;
|
|
61
|
+
export declare function buildRequest(options: GenerateOptions, model: AntigravityModelDef, projectId: string, runtimeModel: string, effort?: string, images?: ResolvedRequestImages): Record<string, unknown>;
|
|
13
62
|
export interface StreamState {
|
|
14
63
|
blocks: ContentBlock[];
|
|
15
64
|
replayBlocks: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,eAAe,EAEpB,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,14 @@ export declare class SearchProviderSwitcher {
|
|
|
17
17
|
private originalSearchProvider;
|
|
18
18
|
private originalFetchProvider;
|
|
19
19
|
private initialized;
|
|
20
|
+
private pending;
|
|
21
|
+
private disposed;
|
|
22
|
+
dispose(): void;
|
|
20
23
|
private state;
|
|
21
24
|
constructor(loader: LoaderLike);
|
|
22
25
|
status(): SearchProviderSwitcherStatus;
|
|
23
26
|
select(preference: SearchProviderPreference, options?: WebProviderSelectionOptions): Promise<void>;
|
|
27
|
+
private applySelection;
|
|
24
28
|
private findWebEntry;
|
|
25
29
|
}
|
|
26
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-provider-switcher.d.ts","sourceRoot":"","sources":["../../../src/host/search-provider-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,UAAU,UAAU;IAClB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,qFAAqF;AACrF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtE,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD;AAED,qBAAa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"search-provider-switcher.d.ts","sourceRoot":"","sources":["../../../src/host/search-provider-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,UAAU,UAAU;IAClB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,qFAAqF;AACrF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtE,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD;AAED,qBAAa,sBAAsB;IAUrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,IAAI,IAAI;IACf,OAAO,CAAC,KAAK,CAAgD;gBAEhC,MAAM,EAAE,UAAU;IAE/C,MAAM,IAAI,4BAA4B;IAUtC,MAAM,CAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;YAOxF,cAAc;IA6C5B,OAAO,CAAC,YAAY;CAMrB"}
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAsCxC,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAA;CAC9C;AAED,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,CAI3B,CAAA;AAEF,eAAO,MAAM,MAAM,UAAqE,CAAA;AAExF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,GAAE,MAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAsCxC,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAA;CAC9C;AAED,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,CAI3B,CAAA;AAEF,eAAO,MAAM,MAAM,UAAqE,CAAA;AAExF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,GAAE,MAAW,GAAG,IAAI,CAwHnE;AAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EACL,kCAAkC,EAClC,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,iCAAiC,EACjC,4BAA4B,EAC5B,kBAAkB,EAClB,cAAc,EACd,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AAC9G,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA"}
|