@eddyskywalker/dsh-chatgpt-subscription 0.2.18 → 0.2.20

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
@@ -3114,7 +3114,7 @@ function identityKey(credentials) {
3114
3114
  //#endregion
3115
3115
  //#region src/host/routes.ts
3116
3116
  const MAX_BODY_BYTES = 64 * 1024;
3117
- function registerRoutes(ctx, oauth, usage, preferences, proxyManager) {
3117
+ function registerRoutes(ctx, oauth, usage, preferences, proxyManager, searchSwitcher) {
3118
3118
  const handler = async (request, response) => {
3119
3119
  const url = new URL(request.url ?? "/", "http://dsh.local");
3120
3120
  if (request.method === "GET" && url.pathname === `/api/dsh-chatgpt-subscription/status`) {
@@ -3126,7 +3126,8 @@ function registerRoutes(ctx, oauth, usage, preferences, proxyManager) {
3126
3126
  quota: await usage.status(oauthStatus.authenticated),
3127
3127
  preferences: preferences.status(),
3128
3128
  detectedProxy: proxyManager?.getSystemProxy() ?? null,
3129
- activeProxy: proxyManager?.resolveActiveProxyUrl() ?? null
3129
+ activeProxy: proxyManager?.resolveActiveProxyUrl() ?? null,
3130
+ switcher: searchSwitcher?.status() ?? null
3130
3131
  }
3131
3132
  });
3132
3133
  return;
@@ -3783,13 +3784,41 @@ var SearchProviderSwitcher = class {
3783
3784
  originalSearchProvider;
3784
3785
  originalFetchProvider;
3785
3786
  initialized = false;
3787
+ pending = Promise.resolve();
3788
+ disposed = false;
3789
+ dispose() {
3790
+ this.disposed = true;
3791
+ }
3792
+ state = "idle";
3786
3793
  constructor(loader) {
3787
3794
  this.loader = loader;
3788
3795
  }
3789
- async select(preference, options = {}) {
3796
+ status() {
3797
+ const entry = this.findWebEntry();
3798
+ const config = entry ? currentConfig(entry) : {};
3799
+ return {
3800
+ state: this.state,
3801
+ configuredSearchProvider: providerId(config.searchProvider),
3802
+ configuredFetchProvider: providerId(config.fetchProvider)
3803
+ };
3804
+ }
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;
3790
3813
  const entry = this.findWebEntry();
3791
- if (entry === null) return;
3814
+ if (entry === null) {
3815
+ this.state = "missing";
3816
+ return;
3817
+ }
3818
+ await entry.fiber?.await();
3819
+ if (this.disposed) return;
3792
3820
  const config = currentConfig(entry);
3821
+ const running = entry.fiber?.config;
3793
3822
  if (!this.initialized) {
3794
3823
  this.originalSearchProvider = typeof config.searchProvider === "string" && config.searchProvider !== "codex-subscription" ? config.searchProvider : void 0;
3795
3824
  this.originalFetchProvider = typeof config.fetchProvider === "string" && config.fetchProvider !== "codex-subscription" ? config.fetchProvider : void 0;
@@ -3798,19 +3827,26 @@ var SearchProviderSwitcher = class {
3798
3827
  const codexSelected = preference === SEARCH_PROVIDER_CODEX;
3799
3828
  const nextSearch = codexSelected ? CODEX_SEARCH_PROVIDER_ID : this.originalSearchProvider;
3800
3829
  const nextFetch = codexSelected || options.pluginFetch === true ? CODEX_FETCH_PROVIDER_ID : this.originalFetchProvider;
3801
- if (config.searchProvider === nextSearch && config.fetchProvider === nextFetch) return;
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;
3802
3833
  const nextConfig = { ...config };
3803
3834
  if (nextSearch === void 0) delete nextConfig.searchProvider;
3804
3835
  else nextConfig.searchProvider = nextSearch;
3805
3836
  if (nextFetch === void 0) delete nextConfig.fetchProvider;
3806
3837
  else nextConfig.fetchProvider = nextFetch;
3807
- await entry.update({ config: nextConfig });
3838
+ this.state = "applying";
3839
+ try {
3840
+ if (configured && entry.fiber) await entry.fiber.update(nextConfig, true);
3841
+ else await entry.update({ config: nextConfig });
3842
+ this.state = "applied";
3843
+ } catch (error) {
3844
+ this.state = "failed";
3845
+ throw error;
3846
+ }
3808
3847
  }
3809
3848
  findWebEntry() {
3810
- for (const entry of this.loader.entries()) {
3811
- if (entry.options.id === "web") return entry;
3812
- if (entry.options.name === "@deepseek-ai/dsh-web") return entry;
3813
- }
3849
+ for (const entry of this.loader.entries()) if (entry.options.id === "web" || entry.options.name === "@deepseek-ai/dsh-web") return entry;
3814
3850
  return null;
3815
3851
  }
3816
3852
  };
@@ -3818,6 +3854,10 @@ function currentConfig(entry) {
3818
3854
  const config = entry.options.config;
3819
3855
  return typeof config === "object" && config !== null && !Array.isArray(config) ? config : {};
3820
3856
  }
3857
+ /** Never include paths, credentials, or arbitrary configuration in public diagnostics. */
3858
+ function providerId(value) {
3859
+ return typeof value === "string" && /^[a-zA-Z0-9_-]{1,80}$/.test(value) ? value : null;
3860
+ }
3821
3861
  //#endregion
3822
3862
  //#region src/host/antigravity/types.ts
3823
3863
  const PROVIDER_NAME = "Antigravity";
@@ -6212,7 +6252,7 @@ function apply(ctx, pluginConfig = {}) {
6212
6252
  ctx.logger.warn(`[dsh-chatgpt-subscription] Web provider selection could not be applied: ${error instanceof Error ? error.message : String(error)}`);
6213
6253
  });
6214
6254
  };
6215
- const disposeRoutes = registerRoutes(ctx, oauth, usage, preferences, proxyManager);
6255
+ const disposeRoutes = registerRoutes(ctx, oauth, usage, preferences, proxyManager, searchSwitcher);
6216
6256
  const disposeAdapter = ctx.llm.registerAdapter([PROVIDER_ID$1], adapter);
6217
6257
  const disposeImageTool = ctx.tools.register(createCodexImageTool(oauth, ctx.attachments, { fetchFn: proxyFetch }));
6218
6258
  ctx.inject(["web"], (ctx) => {
@@ -6221,10 +6261,13 @@ function apply(ctx, pluginConfig = {}) {
6221
6261
  applyWebProviders();
6222
6262
  });
6223
6263
  const disposePreferenceWatch = preferences.watch((next) => applyWebProviders(next));
6264
+ const disposeReadyWatch = ctx.get("appReady")?.onReady(() => applyWebProviders());
6224
6265
  const disposeProxyWatch = proxyManager.onSystemProxyDetected(() => {
6225
6266
  applyWebProviders();
6226
6267
  });
6227
6268
  return () => {
6269
+ searchSwitcher.dispose();
6270
+ disposeReadyWatch?.();
6228
6271
  disposeProxyWatch();
6229
6272
  disposePreferenceWatch();
6230
6273
  disposeImageTool();
@@ -6241,4 +6284,4 @@ function localWebServerBaseUrl(host, port) {
6241
6284
  return `http://${host === "0.0.0.0" ? "127.0.0.1" : host}:${port}`;
6242
6285
  }
6243
6286
  //#endregion
6244
- export { AntigravityAdapter, CodexChatGptAdapter, Config, FileCredentialStore, FileModelSettingsStore, LinuxFileTokenStore, MacKeychainTokenStore, OAuthService, ProxyManager, ResponsesClient, SUBAGENT_MODEL_SELECTION_NAMESPACE, SUBAGENT_POLICY_EVENT, UsageService, WindowsDpapiTokenStore, apply, authorizedRoutesFor, beginWebLogin, clearCachedQuota, createCodexFetchProvider, createCodexImageTool, createCodexSearchProvider, createPlatformTokenStore, createSubagentAuthorization, credentialPath, delegationDenialReason, detectSystemProxy, fetchAccountQuota, getCachedQuota, inject, installSubagentModelAuthorization, loginAndSave, mapCodexUsage, modelSettingsPath, normalizeDelegationToolNames, parseAllowedRoutes, parseCodexUsage, parseResponsesStream, policyRoutesOf, refreshAntigravityToken, subagentModelSelectionPreference, unauthorizedRouteReason, validateAuthorizationScope, validateDelegationToolNames };
6287
+ export { AntigravityAdapter, CodexChatGptAdapter, Config, FileCredentialStore, FileModelSettingsStore, LinuxFileTokenStore, MacKeychainTokenStore, OAuthService, ProxyManager, ResponsesClient, SUBAGENT_MODEL_SELECTION_NAMESPACE, SUBAGENT_POLICY_EVENT, SearchProviderSwitcher, UsageService, WindowsDpapiTokenStore, apply, authorizedRoutesFor, beginWebLogin, clearCachedQuota, createCodexFetchProvider, createCodexImageTool, createCodexSearchProvider, createPlatformTokenStore, createSubagentAuthorization, credentialPath, delegationDenialReason, detectSystemProxy, fetchAccountQuota, getCachedQuota, inject, installSubagentModelAuthorization, loginAndSave, mapCodexUsage, modelSettingsPath, normalizeDelegationToolNames, parseAllowedRoutes, parseCodexUsage, parseResponsesStream, policyRoutesOf, refreshAntigravityToken, subagentModelSelectionPreference, unauthorizedRouteReason, validateAuthorizationScope, validateDelegationToolNames };
@@ -2,6 +2,7 @@ import type { Context } from '@deepseek-ai/cordis';
2
2
  import { OAuthService } from './oauth-service.ts';
3
3
  import { type SubscriptionPreferenceStore } from './preferences.ts';
4
4
  import type { ProxyManager } from './proxy-manager.ts';
5
+ import type { SearchProviderSwitcher } from './search-provider-switcher.ts';
5
6
  import { UsageService } from './usage-service.ts';
6
- export declare function registerRoutes(ctx: Context, oauth: OAuthService, usage: UsageService, preferences: SubscriptionPreferenceStore, proxyManager?: ProxyManager): () => void;
7
+ export declare function registerRoutes(ctx: Context, oauth: OAuthService, usage: UsageService, preferences: SubscriptionPreferenceStore, proxyManager?: ProxyManager, searchSwitcher?: SearchProviderSwitcher): () => void;
7
8
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,2BAA2B,EACxC,YAAY,CAAC,EAAE,YAAY,GAC1B,MAAM,IAAI,CAsKZ"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAIpE,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,2BAA2B,EACxC,YAAY,CAAC,EAAE,YAAY,EAC3B,cAAc,CAAC,EAAE,sBAAsB,GACtC,MAAM,IAAI,CAuKZ"}
@@ -3,27 +3,28 @@ import type { SearchProviderPreference } from '../shared/contracts.ts';
3
3
  interface LoaderLike {
4
4
  entries(): Iterable<Entry>;
5
5
  }
6
- /** What one selection asks for on top of the settings preference. */
7
6
  export interface WebProviderSelectionOptions {
8
- /**
9
- * Whether this plugin's fetch provider must serve the `web_fetch` tool.
10
- *
11
- * DSH's built-in provider resolves and pins every destination before it
12
- * connects and routes through a proxy only when the process environment names
13
- * one, so an OS-level proxy plus the fake-ip DNS that usually comes with it
14
- * fails every fetch with `WEB_BLOCKED_URL`. Selecting this plugin's provider
15
- * hands the origin's resolution to the configured proxy — the same
16
- * proxied-hop semantics DSH applies to a URL it routes through a proxy.
17
- */
18
7
  readonly pluginFetch?: boolean;
19
8
  }
9
+ /** Configuration diagnostics, not proof that an in-flight tool uses this service. */
10
+ export interface SearchProviderSwitcherStatus {
11
+ readonly state: 'idle' | 'applying' | 'applied' | 'missing' | 'failed';
12
+ readonly configuredSearchProvider: string | null;
13
+ readonly configuredFetchProvider: string | null;
14
+ }
20
15
  export declare class SearchProviderSwitcher {
21
16
  private readonly loader;
22
17
  private originalSearchProvider;
23
18
  private originalFetchProvider;
24
19
  private initialized;
20
+ private pending;
21
+ private disposed;
22
+ dispose(): void;
23
+ private state;
25
24
  constructor(loader: LoaderLike);
25
+ status(): SearchProviderSwitcherStatus;
26
26
  select(preference: SearchProviderPreference, options?: WebProviderSelectionOptions): Promise<void>;
27
+ private applySelection;
27
28
  private findWebEntry;
28
29
  }
29
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,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,qBAAa,sBAAsB;IAKrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,WAAW,CAAQ;gBAEE,MAAM,EAAE,UAAU;IAEzC,MAAM,CAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5G,OAAO,CAAC,YAAY;CAOrB"}
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"}
@@ -27,6 +27,7 @@ export { CodexChatGptAdapter } from './host/adapter.ts';
27
27
  export { createCodexImageTool } from './host/codex-images.ts';
28
28
  export { createCodexSearchProvider } from './host/codex-search.ts';
29
29
  export { createCodexFetchProvider } from './host/codex-fetch.ts';
30
+ export { SearchProviderSwitcher, type SearchProviderSwitcherStatus } from './host/search-provider-switcher.ts';
30
31
  export { ResponsesClient, parseResponsesStream } from './host/responses-client.ts';
31
32
  export { UsageService, mapCodexUsage, parseCodexUsage } from './host/usage-service.ts';
32
33
  export { createPlatformTokenStore } from './host/platform-token-store.ts';
@@ -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,CA8GnE;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,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"}
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,CAsHnE;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.2.18",
3
+ "version": "0.2.20",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "author": {
6
6
  "name": "eddyskywalker",