@eddyskywalker/dsh-chatgpt-subscription 0.1.13 → 0.1.15

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/lib/index.js CHANGED
@@ -41,6 +41,7 @@ const OAUTH_AUTHORIZE_URL = `${CHATGPT_OAUTH_ISSUER}/oauth/authorize`;
41
41
  const OAUTH_TOKEN_URL = `${CHATGPT_OAUTH_ISSUER}/oauth/token`;
42
42
  //#endregion
43
43
  //#region src/shared/model-catalog.ts
44
+ const GPT_56_MAX_CONTEXT_WINDOW = 1e6;
44
45
  const CODEX_MODEL_CATALOG = [
45
46
  {
46
47
  id: "gpt-5.6-sol",
@@ -107,6 +108,34 @@ const CODEX_MODEL_CATALOG = [
107
108
  }
108
109
  ];
109
110
  const DEFAULT_CODEX_MODEL = CODEX_MODEL_CATALOG[0];
111
+ const CONFIGURABLE_CONTEXT_MODEL_IDS = [
112
+ "gpt-5.6-sol",
113
+ "gpt-5.6-terra",
114
+ "gpt-5.6-luna"
115
+ ];
116
+ const STANDARD_REASONING_EFFORTS = [
117
+ "none",
118
+ "low",
119
+ "medium",
120
+ "high",
121
+ "xhigh"
122
+ ];
123
+ const GPT_56_REASONING_EFFORTS = [...STANDARD_REASONING_EFFORTS, "max"];
124
+ function reasoningEffortsForModel(model) {
125
+ return resolveCodexCatalogEntry(model).reasoningProfile === "gpt-5.6" ? GPT_56_REASONING_EFFORTS : STANDARD_REASONING_EFFORTS;
126
+ }
127
+ function isCodexReasoningEffort(value) {
128
+ return typeof value === "string" && GPT_56_REASONING_EFFORTS.some((effort) => effort === value);
129
+ }
130
+ function modelSupportsReasoningEffort(model, effort) {
131
+ return isCodexReasoningEffort(effort) && reasoningEffortsForModel(model).some((candidate) => candidate === effort);
132
+ }
133
+ function isCodexModelId(model) {
134
+ return typeof model === "string" && CODEX_MODEL_CATALOG.some((entry) => entry.id === model);
135
+ }
136
+ function isConfigurableContextModelId(model) {
137
+ return typeof model === "string" && CONFIGURABLE_CONTEXT_MODEL_IDS.some((id) => id === model);
138
+ }
110
139
  function resolveCodexCatalogEntry(model) {
111
140
  return CODEX_MODEL_CATALOG.find((entry) => entry.id === model) ?? DEFAULT_CODEX_MODEL;
112
141
  }
@@ -120,17 +149,6 @@ function codexModelSupportsReasoningSummary(model) {
120
149
  //#region src/host/model-catalog.ts
121
150
  const PROVIDER_ID = CODEX_CHATGPT_PROVIDER_ID;
122
151
  const PROVIDER_NAME = "Codex(ChatGPT 订阅)";
123
- const STANDARD_REASONING_EFFORTS = [
124
- "none",
125
- "low",
126
- "medium",
127
- "high",
128
- "xhigh"
129
- ];
130
- const MODEL_REASONING = {
131
- standard: STANDARD_REASONING_EFFORTS,
132
- "gpt-5.6": [...STANDARD_REASONING_EFFORTS, "max"]
133
- };
134
152
  function listCodexModels() {
135
153
  return CODEX_MODEL_CATALOG.map((entry) => ({
136
154
  provider: PROVIDER_ID,
@@ -139,15 +157,16 @@ function listCodexModels() {
139
157
  inputModalities: [...entry.inputModalities]
140
158
  }));
141
159
  }
142
- function resolveCodexModel(model) {
160
+ function resolveCodexModel(model, preferences) {
143
161
  const entry = resolveCodexCatalogEntry(model);
144
- const efforts = MODEL_REASONING[entry.reasoningProfile];
162
+ const configuredContextWindow = isConfigurableContextModelId(model) ? preferences?.status().contextWindowOverrides[model] : void 0;
163
+ const efforts = reasoningEffortsForModel(model);
145
164
  return {
146
165
  provider: PROVIDER_ID,
147
166
  id: model,
148
167
  name: entry.id === model ? entry.name : model,
149
168
  inputModalities: [...entry.inputModalities],
150
- context: { contextWindow: entry.contextWindow },
169
+ context: { contextWindow: configuredContextWindow ?? entry.contextWindow },
151
170
  defaultMaxTokens: 32768,
152
171
  reasoning: {
153
172
  efforts: efforts.map((effort) => ({
@@ -176,9 +195,11 @@ const RETRY_POLICY = resolveRetryPolicy({
176
195
  }, "dsh-chatgpt-subscription.retry");
177
196
  var CodexChatGptAdapter = class extends LlmAdapter {
178
197
  client;
179
- constructor(client) {
198
+ preferences;
199
+ constructor(client, preferences) {
180
200
  super();
181
201
  this.client = client;
202
+ this.preferences = preferences;
182
203
  }
183
204
  providerInfo(provider) {
184
205
  return {
@@ -193,7 +214,7 @@ var CodexChatGptAdapter = class extends LlmAdapter {
193
214
  return listCodexModels();
194
215
  }
195
216
  async resolveModel(_provider, model) {
196
- return resolveCodexModel(model);
217
+ return resolveCodexModel(model, this.preferences);
197
218
  }
198
219
  stream(options) {
199
220
  return this.client.stream(options);
@@ -1049,7 +1070,14 @@ async function oauthErrorIdentifier(response) {
1049
1070
  const PREFERENCES_NAMESPACE = "dsh-chatgpt-subscription";
1050
1071
  const DEFAULT_PREFERENCES = {
1051
1072
  quickQuotaVisible: false,
1052
- searchProvider: "dsh"
1073
+ searchProvider: "dsh",
1074
+ subagentModel: "gpt-5.6-sol",
1075
+ subagentReasoningEffort: "medium",
1076
+ contextWindowOverrides: {
1077
+ "gpt-5.6-sol": 272e3,
1078
+ "gpt-5.6-terra": 272e3,
1079
+ "gpt-5.6-luna": 272e3
1080
+ }
1053
1081
  };
1054
1082
  const SEARCH_PROVIDER_CODEX = "codex";
1055
1083
  function isSearchProviderPreference(value) {
@@ -1060,7 +1088,14 @@ function isSearchProviderPreference(value) {
1060
1088
  function registerPreferenceStore(settings) {
1061
1089
  return new SettingsPreferenceStore(settings.register(settingsNamespace(PREFERENCES_NAMESPACE), z.object({
1062
1090
  quickQuotaVisible: z.boolean().default(DEFAULT_PREFERENCES.quickQuotaVisible),
1063
- searchProvider: z.union([z.const("dsh"), z.const(SEARCH_PROVIDER_CODEX)]).default(DEFAULT_PREFERENCES.searchProvider)
1091
+ searchProvider: z.union([z.const("dsh"), z.const(SEARCH_PROVIDER_CODEX)]).default(DEFAULT_PREFERENCES.searchProvider),
1092
+ subagentModel: z.string().default(DEFAULT_PREFERENCES.subagentModel),
1093
+ subagentReasoningEffort: z.string().default(DEFAULT_PREFERENCES.subagentReasoningEffort),
1094
+ contextWindowOverrides: z.object({
1095
+ "gpt-5.6-sol": z.number().step(1).min(1).max(GPT_56_MAX_CONTEXT_WINDOW).default(DEFAULT_PREFERENCES.contextWindowOverrides["gpt-5.6-sol"]),
1096
+ "gpt-5.6-terra": z.number().step(1).min(1).max(GPT_56_MAX_CONTEXT_WINDOW).default(DEFAULT_PREFERENCES.contextWindowOverrides["gpt-5.6-terra"]),
1097
+ "gpt-5.6-luna": z.number().step(1).min(1).max(GPT_56_MAX_CONTEXT_WINDOW).default(DEFAULT_PREFERENCES.contextWindowOverrides["gpt-5.6-luna"])
1098
+ }).default(DEFAULT_PREFERENCES.contextWindowOverrides)
1064
1099
  })));
1065
1100
  }
1066
1101
  var SettingsPreferenceStore = class {
@@ -1078,6 +1113,12 @@ var SettingsPreferenceStore = class {
1078
1113
  if (!isSearchProviderPreference(patch.searchProvider)) throw new PreferenceError("Unsupported search provider preference.");
1079
1114
  normalized.searchProvider = patch.searchProvider;
1080
1115
  }
1116
+ if (patch.subagentModel !== void 0) normalized.subagentModel = patch.subagentModel;
1117
+ if (patch.subagentReasoningEffort !== void 0) normalized.subagentReasoningEffort = patch.subagentReasoningEffort;
1118
+ if (patch.contextWindowOverrides !== void 0) normalized.contextWindowOverrides = {
1119
+ ...this.scope.get().contextWindowOverrides,
1120
+ ...patch.contextWindowOverrides
1121
+ };
1081
1122
  await this.scope.update(normalized);
1082
1123
  return this.status();
1083
1124
  }
@@ -2230,7 +2271,7 @@ function registerRoutes(ctx, oauth, usage, preferences) {
2230
2271
  case `${ROUTE_PREFIX}/preferences/update`:
2231
2272
  json(response, {
2232
2273
  ok: true,
2233
- value: await preferences.update(readPreferencesUpdate(body))
2274
+ value: await preferences.update(readPreferencesUpdate(body, preferences.status()))
2234
2275
  });
2235
2276
  return;
2236
2277
  default: jsonError(response, 404, {
@@ -2342,7 +2383,10 @@ function field(value, name) {
2342
2383
  const candidate = value[name];
2343
2384
  return typeof candidate === "string" && candidate !== "" ? candidate : null;
2344
2385
  }
2345
- function readPreferencesUpdate(value) {
2386
+ function isRecord(value) {
2387
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2388
+ }
2389
+ function readPreferencesUpdate(value, current) {
2346
2390
  const patch = {};
2347
2391
  if ("quickQuotaVisible" in value) {
2348
2392
  if (typeof value.quickQuotaVisible !== "boolean") throw new PreferenceError("quickQuotaVisible must be a boolean.");
@@ -2352,6 +2396,25 @@ function readPreferencesUpdate(value) {
2352
2396
  if (value.searchProvider !== "dsh" && value.searchProvider !== "codex") throw new PreferenceError("searchProvider must be dsh or codex.");
2353
2397
  patch.searchProvider = value.searchProvider;
2354
2398
  }
2399
+ if ("subagentModel" in value) {
2400
+ if (!isCodexModelId(value.subagentModel)) throw new PreferenceError("subagentModel must be an available Codex model.");
2401
+ patch.subagentModel = value.subagentModel;
2402
+ }
2403
+ const selectedSubagentModel = patch.subagentModel ?? current.subagentModel;
2404
+ if ("subagentReasoningEffort" in value) {
2405
+ if (!modelSupportsReasoningEffort(selectedSubagentModel, value.subagentReasoningEffort)) throw new PreferenceError("subagentReasoningEffort must be supported by the selected subagent model.");
2406
+ patch.subagentReasoningEffort = value.subagentReasoningEffort;
2407
+ } else if (patch.subagentModel !== void 0 && !modelSupportsReasoningEffort(selectedSubagentModel, current.subagentReasoningEffort)) patch.subagentReasoningEffort = resolveCodexCatalogEntry(selectedSubagentModel).defaultReasoningEffort;
2408
+ if ("contextWindowOverrides" in value) {
2409
+ if (!isRecord(value.contextWindowOverrides)) throw new PreferenceError("contextWindowOverrides must be an object.");
2410
+ const overrides = {};
2411
+ for (const [model, contextWindow] of Object.entries(value.contextWindowOverrides)) {
2412
+ if (!isConfigurableContextModelId(model)) throw new PreferenceError("Only GPT-5.6 context windows can be changed.");
2413
+ if (!Number.isSafeInteger(contextWindow) || contextWindow < 1 || contextWindow > 1e6) throw new PreferenceError(`contextWindowOverrides.${model} must be a positive integer no greater than the provider limit.`);
2414
+ overrides[model] = contextWindow;
2415
+ }
2416
+ patch.contextWindowOverrides = overrides;
2417
+ }
2355
2418
  return patch;
2356
2419
  }
2357
2420
  function json(response, envelope, status = 200) {
@@ -2748,6 +2811,25 @@ function currentConfig(entry) {
2748
2811
  return typeof config === "object" && config !== null && !Array.isArray(config) ? config : {};
2749
2812
  }
2750
2813
  //#endregion
2814
+ //#region src/host/subagent-model-preference.ts
2815
+ /**
2816
+ * Route in-process delegated agents through the configured ChatGPT subscription
2817
+ * model. Root sessions retain their own model selection.
2818
+ */
2819
+ function installSubagentModelPreference(ctx, preferences) {
2820
+ return ctx.on("agent/request", async (payload, next) => {
2821
+ const resolved = await next();
2822
+ if (payload.agent.session.header.origin !== "subagent") return resolved;
2823
+ const selection = preferences.status();
2824
+ return {
2825
+ ...resolved,
2826
+ provider: PROVIDER_ID,
2827
+ model: selection.subagentModel,
2828
+ reasoningEffort: ReasoningEffortId(selection.subagentReasoningEffort)
2829
+ };
2830
+ });
2831
+ }
2832
+ //#endregion
2751
2833
  //#region src/index.ts
2752
2834
  const inject = [
2753
2835
  "webServer",
@@ -2765,7 +2847,7 @@ function apply(ctx) {
2765
2847
  const adapter = new CodexChatGptAdapter(new ResponsesClient(oauth, ctx.attachments, {
2766
2848
  localRawImages: { baseUrl: localWebServerBaseUrl(ctx.webServer.host, ctx.webServer.port) },
2767
2849
  onGenerationFinished: () => usage.invalidate()
2768
- }));
2850
+ }), preferences);
2769
2851
  ctx.effect(() => {
2770
2852
  const searchSwitcher = new SearchProviderSwitcher(ctx.loader);
2771
2853
  const applySearchPreference = (searchProvider = preferences.status().searchProvider) => {
@@ -2775,12 +2857,14 @@ function apply(ctx) {
2775
2857
  };
2776
2858
  const disposeRoutes = registerRoutes(ctx, oauth, usage, preferences);
2777
2859
  const disposeAdapter = ctx.llm.registerAdapter([PROVIDER_ID], adapter);
2860
+ const disposeSubagentModelPreference = installSubagentModelPreference(ctx, preferences);
2778
2861
  const disposeImageTool = ctx.tools.register(createCodexImageTool(oauth, ctx.attachments));
2779
2862
  const disposeSearchProvider = ctx.web.registerSearchProvider(createCodexSearchProvider(oauth));
2780
2863
  const disposePreferenceWatch = preferences.watch((next) => applySearchPreference(next.searchProvider));
2781
2864
  applySearchPreference();
2782
2865
  return () => {
2783
2866
  disposePreferenceWatch();
2867
+ disposeSubagentModelPreference();
2784
2868
  disposeSearchProvider();
2785
2869
  disposeImageTool();
2786
2870
  disposeAdapter();
@@ -12,6 +12,7 @@ export declare function QuotaBar({ label, window, t }: {
12
12
  t: Translate;
13
13
  }): React.JSX.Element;
14
14
  export declare function windowLabel(minutes: number | null, t: Translate): string;
15
+ export declare function parseCapacity(value: string): number | null;
15
16
  export declare function formatReset(seconds: number): string;
16
17
  export {};
17
18
  //# sourceMappingURL=CodexSubscriptionSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAmC,cAAc,EAAoC,MAAM,wBAAwB,CAAA;AAGrJ,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,KAAK,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;AAEtE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuOxE;AAiBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO7F;AAcD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAczH;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAQxE;AAqBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUnD"}
1
+ {"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAmC,cAAc,EAAoC,MAAM,wBAAwB,CAAA;AAGrJ,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,KAAK,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;AAEtE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+RxE;AAiBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO7F;AAcD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAczH;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAQxE;AAcD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AA0BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUnD"}
@@ -42,6 +42,21 @@ export declare const zh: {
42
42
  readonly searchProviderHint: "选择 DSH Web 搜索工具使用默认来源,或改用当前 ChatGPT 订阅的 Codex 搜索来源。";
43
43
  readonly searchProviderDsh: "DSH 默认";
44
44
  readonly searchProviderCodex: "Codex 订阅";
45
+ readonly subagentModel: "子代理模型";
46
+ readonly subagentModelHint: "新启动的内置子代理使用此 ChatGPT 订阅模型;父会话的模型选择不受影响。";
47
+ readonly subagentReasoningEffort: "子代理思考深度";
48
+ readonly subagentReasoningEffortHint: "控制子代理请求的 reasoning effort;可选项会随所选模型变化。";
49
+ readonly reasoningNone: "无";
50
+ readonly reasoningLow: "低";
51
+ readonly reasoningMedium: "中";
52
+ readonly reasoningHigh: "高";
53
+ readonly reasoningXhigh: "超高";
54
+ readonly reasoningMax: "最大";
55
+ readonly contextWindows: "GPT-5.6 上下文窗口";
56
+ readonly contextWindowsHint: "默认 272K;可选启用最高 1M。该值用于 DSH 的压缩与溢出判断,可输入 1M、512K 等容量。";
57
+ readonly contextWindow: "上下文窗口";
58
+ readonly contextWindowInvalid: "上下文窗口必须是 1 到 1M 的整数,可使用 K 或 M 后缀。";
59
+ readonly tokens: "tokens";
45
60
  readonly quickQuota: "在输入框旁显示快捷用量";
46
61
  readonly quickQuotaHint: "仅在当前会话选中 codex-chatgpt 模型时显示。";
47
62
  readonly quota: "用量与限额";
@@ -128,6 +143,21 @@ export declare const dictionaries: {
128
143
  readonly searchProviderHint: "选择 DSH Web 搜索工具使用默认来源,或改用当前 ChatGPT 订阅的 Codex 搜索来源。";
129
144
  readonly searchProviderDsh: "DSH 默认";
130
145
  readonly searchProviderCodex: "Codex 订阅";
146
+ readonly subagentModel: "子代理模型";
147
+ readonly subagentModelHint: "新启动的内置子代理使用此 ChatGPT 订阅模型;父会话的模型选择不受影响。";
148
+ readonly subagentReasoningEffort: "子代理思考深度";
149
+ readonly subagentReasoningEffortHint: "控制子代理请求的 reasoning effort;可选项会随所选模型变化。";
150
+ readonly reasoningNone: "无";
151
+ readonly reasoningLow: "低";
152
+ readonly reasoningMedium: "中";
153
+ readonly reasoningHigh: "高";
154
+ readonly reasoningXhigh: "超高";
155
+ readonly reasoningMax: "最大";
156
+ readonly contextWindows: "GPT-5.6 上下文窗口";
157
+ readonly contextWindowsHint: "默认 272K;可选启用最高 1M。该值用于 DSH 的压缩与溢出判断,可输入 1M、512K 等容量。";
158
+ readonly contextWindow: "上下文窗口";
159
+ readonly contextWindowInvalid: "上下文窗口必须是 1 到 1M 的整数,可使用 K 或 M 后缀。";
160
+ readonly tokens: "tokens";
131
161
  readonly quickQuota: "在输入框旁显示快捷用量";
132
162
  readonly quickQuotaHint: "仅在当前会话选中 codex-chatgpt 模型时显示。";
133
163
  readonly quota: "用量与限额";
@@ -168,6 +198,6 @@ export declare const dictionaries: {
168
198
  readonly retry: "重试";
169
199
  readonly unknown: "未知";
170
200
  };
171
- en: Record<"quota" | "account" | "storage" | "stale" | "pending" | "title" | "intro" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "enhancements" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "quickQuota" | "quickQuotaHint" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
201
+ en: Record<"quota" | "account" | "storage" | "stale" | "pending" | "tokens" | "title" | "intro" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "enhancements" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "subagentModel" | "subagentModelHint" | "subagentReasoningEffort" | "subagentReasoningEffortHint" | "reasoningNone" | "reasoningLow" | "reasoningMedium" | "reasoningHigh" | "reasoningXhigh" | "reasoningMax" | "contextWindows" | "contextWindowsHint" | "contextWindow" | "contextWindowInvalid" | "quickQuota" | "quickQuotaHint" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
172
202
  };
173
203
  //# sourceMappingURL=locales.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAkF9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAiG9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AA8EA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAsFA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
@@ -1,9 +1,11 @@
1
1
  import { LlmAdapter, type GenerateOptions, type LlmModelInfo, type LlmProviderInfo, type LlmResolvedModelInfo, type ResolvedRetryPolicy, type StreamChunk } from '@deepseek-ai/dsh-llm';
2
2
  import { PROVIDER_ID } from './model-catalog.ts';
3
3
  import { ResponsesClient } from './responses-client.ts';
4
+ import type { SubscriptionPreferenceStore } from './preferences.ts';
4
5
  export declare class CodexChatGptAdapter extends LlmAdapter {
5
6
  private readonly client;
6
- constructor(client: ResponsesClient);
7
+ private readonly preferences?;
8
+ constructor(client: ResponsesClient, preferences?: SubscriptionPreferenceStore | undefined);
7
9
  providerInfo(provider: string): LlmProviderInfo;
8
10
  providerRetryPolicy(): ResolvedRetryPolicy;
9
11
  listModels(): Promise<readonly LlmModelInfo[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/host/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAmB,WAAW,EAAoC,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AASvD,qBAAa,mBAAoB,SAAQ,UAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAIpD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAI/C,mBAAmB,IAAI,mBAAmB;IAIpC,UAAU,IAAI,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAI9C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInF,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;CAG7D;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/host/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAmB,WAAW,EAAoC,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AASnE,qBAAa,mBAAoB,SAAQ,UAAU;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBADZ,MAAM,EAAE,eAAe,EACvB,WAAW,CAAC,EAAE,2BAA2B,YAAA;IAK5D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAI/C,mBAAmB,IAAI,mBAAmB;IAIpC,UAAU,IAAI,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAI9C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInF,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC;CAG7D;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import type { LlmModelInfo, LlmResolvedModelInfo } from '@deepseek-ai/dsh-llm';
2
+ import type { SubscriptionPreferenceStore } from './preferences.ts';
2
3
  export declare const PROVIDER_ID: "codex-chatgpt";
3
4
  export declare const PROVIDER_NAME: "Codex\uFF08ChatGPT \u8BA2\u9605\uFF09";
4
5
  export declare function listCodexModels(): LlmModelInfo[];
5
- export declare function resolveCodexModel(model: string): LlmResolvedModelInfo;
6
+ export declare function resolveCodexModel(model: string, preferences?: SubscriptionPreferenceStore): LlmResolvedModelInfo;
6
7
  //# sourceMappingURL=model-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/host/model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAI9E,eAAO,MAAM,WAAW,iBAA4B,CAAA;AACpD,eAAO,MAAM,aAAa,EAAG,uCAA4B,CAAA;AAUzD,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAkBrE"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/host/model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAEnE,eAAO,MAAM,WAAW,iBAA4B,CAAA;AACpD,eAAO,MAAM,aAAa,EAAG,uCAA4B,CAAA;AAEzD,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,2BAA2B,GAAG,oBAAoB,CAqBhH"}
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../src/host/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAsB,MAAM,2BAA2B,CAAA;AASxG,OAAO,KAAK,EACV,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,2BAA2B;IAC1C,MAAM,IAAI,0BAA0B,CAAA;IACpC,MAAM,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;IACpF,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;CAC1H;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,2BAA2B,CAS/F;AAyBD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAG5B"}
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../src/host/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAsB,MAAM,2BAA2B,CAAA;AAUxG,OAAO,KAAK,EACV,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,2BAA2B;IAC1C,MAAM,IAAI,0BAA0B,CAAA;IACpC,MAAM,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;IACpF,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;CAC1H;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,2BAA2B,CAgB/F;AAiCD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAG5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,CA+I3I"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,CA+I3I"}
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { SubscriptionPreferenceStore } from './preferences.ts';
3
+ /**
4
+ * Route in-process delegated agents through the configured ChatGPT subscription
5
+ * model. Root sessions retain their own model selection.
6
+ */
7
+ export declare function installSubagentModelPreference(ctx: Context, preferences: SubscriptionPreferenceStore): () => void;
8
+ //# sourceMappingURL=subagent-model-preference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-model-preference.d.ts","sourceRoot":"","sources":["../../../src/host/subagent-model-preference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAEnE;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,CAYjH"}
@@ -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;AAmBlD,eAAO,MAAM,MAAM,UAA4E,CAAA;AAE/F,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAgCxC;AAED,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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAqBlD,eAAO,MAAM,MAAM,UAA4E,CAAA;AAE/F,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkCxC;AAED,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,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"}
@@ -25,14 +25,25 @@ export interface PluginStatusDto {
25
25
  }
26
26
  export type OAuthStatusDto = Omit<PluginStatusDto, 'quota' | 'preferences'>;
27
27
  export type SearchProviderPreference = 'dsh' | 'codex';
28
+ export interface CodexContextWindowOverridesDto {
29
+ 'gpt-5.6-sol': number;
30
+ 'gpt-5.6-terra': number;
31
+ 'gpt-5.6-luna': number;
32
+ }
28
33
  export interface SubscriptionPreferencesDto {
29
34
  quickQuotaVisible: boolean;
30
35
  searchProvider: SearchProviderPreference;
36
+ subagentModel: string;
37
+ subagentReasoningEffort: string;
38
+ contextWindowOverrides: CodexContextWindowOverridesDto;
31
39
  writable: boolean;
32
40
  }
33
41
  export interface SubscriptionPreferencesUpdateDto {
34
42
  quickQuotaVisible?: boolean;
35
43
  searchProvider?: SearchProviderPreference;
44
+ subagentModel?: string;
45
+ subagentReasoningEffort?: string;
46
+ contextWindowOverrides?: Partial<CodexContextWindowOverridesDto>;
36
47
  }
37
48
  export interface QuotaWindowDto {
38
49
  usedPercent: number;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,QAAQ,CAAA;AAEZ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,oBAAoB,CAAA;IAC7B,KAAK,EAAE;QACL,MAAM,EAAE,OAAO,CAAA;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KACzB,CAAA;IACD,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,0BAA0B,CAAA;IACvC,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,CAAC,CAAA;AAE3E,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,cAAc,EAAE,wBAAwB,CAAA;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,sBAAsB,EAAE,8BAA8B,CAAA;IACtD,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,gCAAgC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,wBAAwB,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAC/C,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAA;IACnC,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;IAC3D,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAC/C,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAA;IACnC,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,aAAa,GACb,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,wBAAwB,GACxB,6BAA6B,GAC7B,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,UAAU,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export type CodexModelModality = 'text' | 'image';
2
+ export declare const GPT_56_MAX_CONTEXT_WINDOW = 1000000;
2
3
  export interface CodexModelCatalogEntry {
3
4
  id: string;
4
5
  name: string;
@@ -75,6 +76,16 @@ export declare const DEFAULT_CODEX_MODEL: {
75
76
  readonly reasoningProfile: "gpt-5.6";
76
77
  readonly supportsReasoningSummary: true;
77
78
  };
79
+ export declare const CONFIGURABLE_CONTEXT_MODEL_IDS: readonly ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"];
80
+ export type ConfigurableContextModelId = typeof CONFIGURABLE_CONTEXT_MODEL_IDS[number];
81
+ export declare const STANDARD_REASONING_EFFORTS: readonly ["none", "low", "medium", "high", "xhigh"];
82
+ export declare const GPT_56_REASONING_EFFORTS: readonly ["none", "low", "medium", "high", "xhigh", "max"];
83
+ export type CodexReasoningEffort = typeof GPT_56_REASONING_EFFORTS[number];
84
+ export declare function reasoningEffortsForModel(model: string): readonly CodexReasoningEffort[];
85
+ export declare function isCodexReasoningEffort(value: unknown): value is CodexReasoningEffort;
86
+ export declare function modelSupportsReasoningEffort(model: string, effort: unknown): effort is CodexReasoningEffort;
87
+ export declare function isCodexModelId(model: unknown): model is CodexModelId;
88
+ export declare function isConfigurableContextModelId(model: unknown): model is ConfigurableContextModelId;
78
89
  export declare function resolveCodexCatalogEntry(model: string): CodexModelCatalogEntry;
79
90
  export declare function codexModelSupportsImageInput(model: string): boolean;
80
91
  export declare function codexModelSupportsReasoningSummary(model: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/shared/model-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC9C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAA;IACxC,wBAAwB,EAAE,OAAO,CAAA;CAClC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEsB,CAAA;AAEtD,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB;;;;;;;;CAAyB,CAAA;AAEzD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAE9E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../../src/shared/model-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjD,eAAO,MAAM,yBAAyB,UAAY,CAAA;AAElD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC9C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAA;IACxC,wBAAwB,EAAE,OAAO,CAAA;CAClC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEsB,CAAA;AAEtD,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAEnE,eAAO,MAAM,mBAAmB;;;;;;;;CAAyB,CAAA;AAEzD,eAAO,MAAM,8BAA8B,2DAIC,CAAA;AAE5C,MAAM,MAAM,0BAA0B,GAAG,OAAO,8BAA8B,CAAC,MAAM,CAAC,CAAA;AAEtF,eAAO,MAAM,0BAA0B,qDAAsD,CAAA;AAC7F,eAAO,MAAM,wBAAwB,4DAAkD,CAAA;AACvF,MAAM,MAAM,oBAAoB,GAAG,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAA;AAE1E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,oBAAoB,EAAE,CAIvF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,oBAAoB,CAE3G;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAEhG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAE9E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../src/shared/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAE1F,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAE/D,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,EAAE,UAAU,CAG5E,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,wBAAgC,CAAA;AAClE,eAAO,MAAM,qBAAqB,EAAE,wBAAkC,CAAA;AAEtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAE5F"}
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../src/shared/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAE1F,eAAO,MAAM,qBAAqB,6BAA6B,CAAA;AAE/D,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,EAAE,UAAU,CAU5E,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,wBAAgC,CAAA;AAClE,eAAO,MAAM,qBAAqB,EAAE,wBAAkC,CAAA;AAEtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAE5F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "author": {
6
6
  "name": "eddyskywalker",
@@ -61,6 +61,7 @@
61
61
  "peerDependencies": {
62
62
  "@deepseek-ai/cordis": "^4.0.1",
63
63
  "@deepseek-ai/cordis-plugin-loader": "^1.0.2",
64
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.8",
64
65
  "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8",
65
66
  "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8",
66
67
  "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8",
@@ -81,6 +82,7 @@
81
82
  "devDependencies": {
82
83
  "@deepseek-ai/cordis": "^4.0.1",
83
84
  "@deepseek-ai/cordis-plugin-loader": "^1.0.2",
85
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.8",
84
86
  "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8",
85
87
  "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8",
86
88
  "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8",