@alvin0/ai-agent-sdk-provider-copilot 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,14 @@ contract, Copilot token exchange, model-driven endpoint routing across
12
12
  provider plugin. A `CopilotCredentialStore` must be injected; filesystem and
13
13
  environment defaults belong to the Node auth package.
14
14
 
15
+ Use `defineCredentialStore<CopilotAuthFile>({ id, label, read, commit })` to
16
+ persist GitHub credentials in your database. `getCopilotToken(store, { tokenCache })`
17
+ acquires a short-lived API token; `forceRefresh: true` invalidates its cached entry.
18
+ Share `tokenCache` with `copilotPlugin`, or implement its `acquire`/`invalidate`
19
+ methods to own database caching and exchange. `exchangeCopilotToken` remains
20
+ available for standalone exchange. The GitHub credential does not rotate.
21
+ See the [working database example](../../samples/credential-database/README.md).
22
+
15
23
  ```ts
16
24
  import { ModelRegistry } from '@alvin0/ai-agent-sdk-core'
17
25
  import { copilotPlugin, memoryCopilotCredentialStore } from '@alvin0/ai-agent-sdk-provider-copilot'
package/dist/index.d.ts CHANGED
@@ -1001,6 +1001,22 @@ declare function copilotPlugin(options: CopilotPluginOptions): ComposableModelPr
1001
1001
  readonly family: 'copilot';
1002
1002
  };
1003
1003
  //#endregion
1004
+ //#region src/token.d.ts
1005
+ /** Store-backed token acquisition, with an optional application-owned cache. */
1006
+ interface GetCopilotTokenOptions extends CopilotTokenCacheOptions {
1007
+ /** Reuse the same cache as copilotPlugin; when omitted each call exchanges anew. */
1008
+ readonly tokenCache?: CopilotTokenCache;
1009
+ /** Invalidate the cached entry before acquisition; an in-flight exchange may be reused. */
1010
+ readonly forceRefresh?: boolean;
1011
+ }
1012
+ /**
1013
+ * Read a GitHub credential from any store and acquire a live Copilot API token.
1014
+ * The GitHub credential does not rotate. A custom tokenCache can persist API tokens
1015
+ * in a database; its acquire/invalidate methods own refresh and cache policy.
1016
+ * When tokenCache is supplied, its configuration owns exchange settings.
1017
+ */
1018
+ declare function getCopilotToken(store: CopilotCredentialStore | CopilotAuthStore, options?: GetCopilotTokenOptions): Promise<CopilotApiToken>;
1019
+ //#endregion
1004
1020
  //#region src/common/error-codes.d.ts
1005
1021
  /**
1006
1022
  * The Copilot error codes, in the leaf layer so the shared HTTP modules can reach
@@ -1293,5 +1309,5 @@ declare function requestCopilotDeviceCode(options?: CopilotOAuthOptions): Promis
1293
1309
  declare function runCopilotDeviceLogin(store: CopilotCredentialStore, options?: CopilotOAuthOptions, progress?: CopilotLoginProgress): Promise<CopilotLoginResult>;
1294
1310
  declare function runCopilotDeviceLogin(store: CopilotAuthStore, options?: CopilotOAuthOptions, progress?: CopilotLoginProgress): Promise<CopilotLoginResult>;
1295
1311
  //#endregion
1296
- export { COPILOT_BASE_URL, COPILOT_CATALOG_PATH, COPILOT_DEFAULT_CATALOG_TIMEOUT_MS, COPILOT_DEFAULT_DIALECT, COPILOT_DEFAULT_MAX_CATALOG_BYTES, COPILOT_DEFAULT_MAX_CATALOG_CHUNKS, COPILOT_DEFAULT_MAX_CATALOG_MODELS, COPILOT_DEFAULT_POLL_INTERVAL_SECONDS, COPILOT_DEVICE_CODE_MAX_WAIT_MS, COPILOT_DEVICE_LOGIN_WARNING, COPILOT_DISPLAY_NAME, COPILOT_DUAL_PROTOCOL_ID, COPILOT_EDITOR_PLUGIN_VERSION, COPILOT_EDITOR_VERSION, COPILOT_ERROR_CODES, COPILOT_LOGIN_COMMAND, COPILOT_OAUTH_CLIENT_ID, COPILOT_OAUTH_SCOPE, COPILOT_PROVIDER_ID, COPILOT_RESPONSES_MODEL_PREFIXES, COPILOT_ROUTE_ID, COPILOT_SLOW_DOWN_INCREMENT_SECONDS, COPILOT_TOKEN_EXCHANGE_MARGIN_MS, COPILOT_TOKEN_EXCHANGE_PATH, type ChatCompletionsProtocolLike, type CopilotAccountIdentity, type CopilotApiToken, type CopilotAuthFile, type CopilotAuthStore, type CopilotCatalogLimits, type CopilotCatalogOptions, type CopilotCatalogSnapshot, type CopilotCredentialFailure, type CopilotCredentialSnapshot, type CopilotCredentialStore, type CopilotDeviceCode, CopilotDeviceLoginError, type CopilotDeviceLoginReason, type CopilotDialect, type CopilotDualProtocolOptions, type CopilotEditorHeaders, type CopilotEmbeddingModel, type CopilotEndpoint, type CopilotEndpointDecision, type CopilotEndpointRouter, type CopilotEndpointRouterOptions, type CopilotErrorCode, type CopilotExchangeOptions, type CopilotGenerationModel, type CopilotGitHubToken, type CopilotLegacyProviderOptions, type CopilotLoginProgress, type CopilotLoginResult, type CopilotOAuthOptions, type CopilotOmitReason, type CopilotOmittedModel, type CopilotPluginOptions, type CopilotProviderOptions, type CopilotSubProtocol, type CopilotTimer, type CopilotTokenCache, type CopilotTokenCacheEntry, type CopilotTokenCacheOptions, CopilotTokenExchangeError, type CopilotTokenExchangeFailureKind, type CopilotTokenExpiry, DEFAULT_COPILOT_OAUTH_ISSUER, DEFAULT_COPILOT_TIMER, DEFAULT_GITHUB_API_BASE_URL, type ResponsesProtocolLike, copilotAdapter, copilotCatalogCacheOptions, copilotDualProtocol, copilotPlugin, createCopilotEndpointRouter, createCopilotTokenCache, credentialFailure, discoverCopilotModels, exchangeCopilotToken, memoryCopilotAuthStore, memoryCopilotCredentialStore, partitionCopilotCatalog, requestCopilotDeviceCode, requireGitHubToken, resolveCopilotCatalogLimits, runCopilotDeviceLogin, shouldExchange, toChatCompletionsDialect, toResponsesDialect };
1312
+ export { COPILOT_BASE_URL, COPILOT_CATALOG_PATH, COPILOT_DEFAULT_CATALOG_TIMEOUT_MS, COPILOT_DEFAULT_DIALECT, COPILOT_DEFAULT_MAX_CATALOG_BYTES, COPILOT_DEFAULT_MAX_CATALOG_CHUNKS, COPILOT_DEFAULT_MAX_CATALOG_MODELS, COPILOT_DEFAULT_POLL_INTERVAL_SECONDS, COPILOT_DEVICE_CODE_MAX_WAIT_MS, COPILOT_DEVICE_LOGIN_WARNING, COPILOT_DISPLAY_NAME, COPILOT_DUAL_PROTOCOL_ID, COPILOT_EDITOR_PLUGIN_VERSION, COPILOT_EDITOR_VERSION, COPILOT_ERROR_CODES, COPILOT_LOGIN_COMMAND, COPILOT_OAUTH_CLIENT_ID, COPILOT_OAUTH_SCOPE, COPILOT_PROVIDER_ID, COPILOT_RESPONSES_MODEL_PREFIXES, COPILOT_ROUTE_ID, COPILOT_SLOW_DOWN_INCREMENT_SECONDS, COPILOT_TOKEN_EXCHANGE_MARGIN_MS, COPILOT_TOKEN_EXCHANGE_PATH, type ChatCompletionsProtocolLike, type CopilotAccountIdentity, type CopilotApiToken, type CopilotAuthFile, type CopilotAuthStore, type CopilotCatalogLimits, type CopilotCatalogOptions, type CopilotCatalogSnapshot, type CopilotCredentialFailure, type CopilotCredentialSnapshot, type CopilotCredentialStore, type CopilotDeviceCode, CopilotDeviceLoginError, type CopilotDeviceLoginReason, type CopilotDialect, type CopilotDualProtocolOptions, type CopilotEditorHeaders, type CopilotEmbeddingModel, type CopilotEndpoint, type CopilotEndpointDecision, type CopilotEndpointRouter, type CopilotEndpointRouterOptions, type CopilotErrorCode, type CopilotExchangeOptions, type CopilotGenerationModel, type CopilotGitHubToken, type CopilotLegacyProviderOptions, type CopilotLoginProgress, type CopilotLoginResult, type CopilotOAuthOptions, type CopilotOmitReason, type CopilotOmittedModel, type CopilotPluginOptions, type CopilotProviderOptions, type CopilotSubProtocol, type CopilotTimer, type CopilotTokenCache, type CopilotTokenCacheEntry, type CopilotTokenCacheOptions, CopilotTokenExchangeError, type CopilotTokenExchangeFailureKind, type CopilotTokenExpiry, DEFAULT_COPILOT_OAUTH_ISSUER, DEFAULT_COPILOT_TIMER, DEFAULT_GITHUB_API_BASE_URL, type GetCopilotTokenOptions, type ResponsesProtocolLike, copilotAdapter, copilotCatalogCacheOptions, copilotDualProtocol, copilotPlugin, createCopilotEndpointRouter, createCopilotTokenCache, credentialFailure, discoverCopilotModels, exchangeCopilotToken, getCopilotToken, memoryCopilotAuthStore, memoryCopilotCredentialStore, partitionCopilotCatalog, requestCopilotDeviceCode, requireGitHubToken, resolveCopilotCatalogLimits, runCopilotDeviceLogin, shouldExchange, toChatCompletionsDialect, toResponsesDialect };
1297
1313
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/catalog.ts","../src/common/identity.ts","../src/common/store-types.ts","../src/router.ts","../src/dual-protocol.ts","../src/auth.ts","../src/common/http.ts","../src/exchange.ts","../src/adapter.ts","../src/common/error-codes.ts","../src/errors.ts","../src/oauth.ts"],"mappings":";;;;;;;cA6Ea;;cAGA;;cAGA;;cAGA;;cAGA;;;;;;;;;;;;KAaD;;KA2BA;;;;;;UAOK;;WAEN;;WAEA,QAAQ;;;UAIF;;WAEN,OAAO;;;;;;;WAOP,kBAAkB;;;;;;;;;;;UAYZ;;WAEN;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;;UAIM;;WAEN,qBAAqB;;WAErB,oBAAoB;;WAEpB,kBAAkB;;;UAIZ;;WAEN;;WAEA;;WAEA;;WAEA;;WAEA;;;;;;;;;;;;;UAcM;;WAEN;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;;;;;;;;;;;iBAaK,4BACd,UAAS,wBACR;;;;;;;;;;iBAiCa,2BAA2B,UAAS;WACzC;WACA;WACA;;;;;;;;;;;;;;;;;;;iBA8BW,sBACpB,SAAS,8BACT,QAAQ,sBACR,kBAAkB,WAAW,QAC5B,QAAQ;;;;;;;;;;;;iBAwCK,wBACd,MAAM,yBACN,oBACC;;;;;;;;;;;;;;;;;;;;;;;;cCjVU;;cAGA;;cAGA;;;;;;;;UASI;;WAEN;;WAEA;;;;;;;;;;;UCfM;;WAEN;;WAEA;;WAEA;;;UAIM;WACN;WACA;WACA;;;;;;;;;;;;;;;;;;;;;UAsBM;;;;;WAKN;WACA,QAAQ;WACR,UAAU;;WAEV;;WAEA;;;;;;UAOM;WACN;EACT,QAAQ,QAAQ;EAChB,MAAM,MAAM,kBAAkB;;;KAIpB,yBAAyB,gBAAgB;;;;;;;;;;;;;;;;cCFxC;;UAMI;;WAEN;;WAEA,UAAU;;WAEV;;;;;;;;WAQA;;;UAIM;;;;;;;;;;EAUf,OAAO,kBAAkB;;;;;;;;EAQzB,MAAM,iBAAiB;;;;;EAKvB,qBAAqB;;;UAIN;;;;;WAKN,YAAY,SAAS,eAAe;;;;;;;;;WASpC;;;;;;;;;;;;;;iBA2BK,4BACd,UAAS,+BACR;;;;cCrHU;;;;;;;;;;;;;;;;;UAkBI;;WAEN;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;;;;;;;;;;cAYE,yBAAyB;;;;;;;;;;;;;;;;;;iBA8BtB,mBAAmB,SAAS,iBAAiB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsCrD,yBACd,SAAS,iBACR,QAAQ;;;;;;;;UAoBM,mBAAmB;;WAEzB;;WAEA,gBAAgB;WAChB,eAAe,SAAS,iBAAiB,SAAS;WAClD,mBAAmB,SAAS,YAAY,SAAS;WACjD,YACP,SAAS,iBACT,SAAS,YACN,SAAS;WACL,YACP,QAAQ,cAAc,mBACtB,SAAS,iBACT,wBACG,eAAe;;;KAIV,wBAAwB,mBAAmB;;KAG3C,8BAA8B,mBAAmB;;UAG5C;;WAEN,QAAQ;;WAER,WAAW;;WAEX,MAAM;;;;;;;;;;WAUN,cAAc,UAAU;;;;;;;;iBASnB,oBACd,SAAS,6BACR,oBAAoB;;;;;;;;;;;cCjNV;;;;;;;;;;iBAWG,uBAAuB,UAAU,kBAAkB;;;;;;;;;;;;;;;;;;iBA6BnD,6BAA6B,UAAU,kBAAkB;;;;;;;;UAmCxD;WACN,MAAM;;WAEN;;WAEA;;;;;;;;;;;;;;;;;;;iBAoBK,mBACd,MAAM,6BACN,gBACC;;cAaU;;;;;;;;;;UAWI;;WAEN;;WAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BK,eACd,KAAK,gCACL,aACA;;;;UCrIe;;WAEN,SAAS;;WAET,eAAe,WAAW;;WAE1B;;WAEA;;WAEA;;;;;;;WAOA;;;;;cCRE;;cAGA;;UAMI,+BAA+B;;WAErC;;WAEA,gBAAgB;;;;;;;;;;;;;WAahB;;;;;;;;UASM;;WAEN;;WAEA;;WAEA;;;;;;;;;WASA;;;;;;;;;;;;;;;;;;iBAmBW,qBACpB,QAAQ,oBACR,UAAS,yBACR,QAAQ;;;;;;;;UA4VM;;WAEN,KAAK;;WAEL;;WAEA;;;;;;;;;UAUM;;;;;;;;;;;;EAYf,QACE,QAAQ,2BACR,WAAW,4BACX,UAAU,yBACT,QAAQ;;EAEX;;;cAIW;;UAGI,iCAAiC;;;;;;;WAOvC;;WAEA;;;;;WAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4CK,wBACd,UAAS,2BACR;;;;cC3cU;;cAGA;;;;;;;;;;UAWI;;;;;;;;WAQN,WAAW;;WAEX;;;;;;;WAOA;;WAEA,gBAAgB;;WAEhB,oBAAoB,SAAS,eAAe;;;;;;;;WAQ5C;;WAEA,sBAAsB,UAAU;;;;;;;WAOhC,aAAa;;WAEb;;WAEA;;;;;;;;;WAUA,kBAAkB;;WAElB;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAGA,UAAU,QAAQ;;WAElB;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA,cAAc;;;;;;;;WAQd,gBAAgB;;WAEhB,eAAe,WAAW;;WAG1B;;WAEA;;WAEA,wBAAwB;;;;;;;;;;UAWlB,qCAAqC,KAAK;;WAEhD,WAAW;;;;;;;;;;;;;;;iBA6CN,eAAe,SAAS,yBAAyB;iBACjD,eAAe,SAAS,+BAA+B;;KAmK3D,uBAAuB;;;;;;;;;;;;;;;;;;;iBAoBnB,cACd,SAAS,uBACR;WAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cC3ejC,qBAAmB;;WAET;;WAEE;;WAEN;;WAEG;;WAEI;;WAEC;;WAEN;;WAEE;;WAEC;;WAEA;;WAED;;WAES;;WAEX;;WAEQ;;;KAIjB,2BAA2B,kCAAkC;;;;UCGxD;;WAEN;;WAEA,OAAO;;;;;;;;;;;;;;;;iBAiBF,kBAAkB,iBAAiB,kBAAkB;;KAazD;;;;;;;;cASC,kCAAkC;;WAEpC,MAAM;;;;;;EAOf,YACE,SAAS,0BACT,MAAM,kBACN,MAAM;;;KAQE;;;;;;;;cAuBC,gCAAgC;;WAElC,QAAQ;;;;;;EAOjB,YAAY,SAAS,0BAA0B,QAAQ;;;;;cCxF5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmCA;;cAGA;;;;;;;;;;cAUA;;cAGA;;;;;;;;cASA;;;;;;;;;;;cAYA;;;;;;;;;;UAoCI;;WAEN,aAAa,qBAAqB;;WAElC,eAAe;;WAEf;;;cAIE,uBAAuB;;;;;;;;;;UAenB,4BAA4B;;WAElC;;WAEA;;WAEA;;WAEA,QAAQ;;;UAIF;;WAEN;;WAEA;;WAEA;;WAEA;;WAEA;;;UAIM;;WAEN,YAAY,MAAM;;WAElB,UAAU,mBAAmB;;;UAIvB;;WAEN;;WAEA;;WAEA;;WAEA;;;;;;;;;;;;;;;iBA+BW,yBACpB,UAAS,sBACR,QAAQ;;;;;;;;;;;;;;;;iBAqDK,sBACd,OAAO,wBACP,UAAU,qBACV,WAAW,uBACV,QAAQ;iBACK,sBACd,OAAO,kBACP,UAAU,qBACV,WAAW,uBACV,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/catalog.ts","../src/common/identity.ts","../src/common/store-types.ts","../src/router.ts","../src/dual-protocol.ts","../src/auth.ts","../src/common/http.ts","../src/exchange.ts","../src/adapter.ts","../src/token.ts","../src/common/error-codes.ts","../src/errors.ts","../src/oauth.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -604,7 +604,10 @@ async function readCopilotResponseText(response, options = {}) {
604
604
  * @returns the pending value, when it arrives first.
605
605
  */
606
606
  function raceAbort(pending, signal) {
607
- if (signal.aborted) return Promise.reject(abortReason(signal));
607
+ if (signal.aborted) {
608
+ pending.catch(() => void 0);
609
+ return Promise.reject(abortReason(signal));
610
+ }
608
611
  return new Promise((resolve, reject) => {
609
612
  const abort = () => {
610
613
  cleanup();
@@ -1872,8 +1875,8 @@ const COPILOT_ROUTE_ID = "copilot";
1872
1875
  /** Display name reported by the adapter and the plugin. */
1873
1876
  const COPILOT_DISPLAY_NAME = "GitHub Copilot";
1874
1877
  /** Never-aborting logger sink for a resolve that arrives without a context. */
1875
- const NULL_LOGGER$1 = Object.freeze({
1876
- child: () => NULL_LOGGER$1,
1878
+ const NULL_LOGGER$2 = Object.freeze({
1879
+ child: () => NULL_LOGGER$2,
1877
1880
  trace: () => void 0,
1878
1881
  debug: () => void 0,
1879
1882
  info: () => void 0,
@@ -1970,7 +1973,7 @@ function buildCopilotAdapter(options, captured) {
1970
1973
  resolve: async ({ signal, context }) => {
1971
1974
  const operation = {
1972
1975
  signal,
1973
- logger: context?.logger ?? NULL_LOGGER$1
1976
+ logger: context?.logger ?? NULL_LOGGER$2
1974
1977
  };
1975
1978
  const snapshot = await readCopilotSnapshot(captured, operation);
1976
1979
  const github = requireGitHubToken(snapshot.file, snapshot.label);
@@ -2265,6 +2268,45 @@ function randomId() {
2265
2268
  return globalThis.crypto?.randomUUID?.() ?? `sdk-${Date.now().toString(36)}`;
2266
2269
  }
2267
2270
 
2271
+ //#endregion
2272
+ //#region src/token.ts
2273
+ const NULL_LOGGER$1 = Object.freeze({
2274
+ child: () => NULL_LOGGER$1,
2275
+ trace: () => void 0,
2276
+ debug: () => void 0,
2277
+ info: () => void 0,
2278
+ warn: () => void 0,
2279
+ error: () => void 0,
2280
+ fatal: () => void 0
2281
+ });
2282
+ /**
2283
+ * Read a GitHub credential from any store and acquire a live Copilot API token.
2284
+ * The GitHub credential does not rotate. A custom tokenCache can persist API tokens
2285
+ * in a database; its acquire/invalidate methods own refresh and cache policy.
2286
+ * When tokenCache is supplied, its configuration owns exchange settings.
2287
+ */
2288
+ async function getCopilotToken(store, options = {}) {
2289
+ const operation = {
2290
+ signal: options.signal ?? new AbortController().signal,
2291
+ logger: NULL_LOGGER$1
2292
+ };
2293
+ operation.signal.throwIfAborted();
2294
+ const captured = captureCopilotStore(store);
2295
+ const record = captured.kind === "versioned" ? await raceAbort(captured.store.read(operation), operation.signal) : void 0;
2296
+ const file = captured.kind === "legacy" ? await raceAbort(captured.store.read(), operation.signal) : record?.value;
2297
+ operation.signal.throwIfAborted();
2298
+ requireGitHubToken(file, captured.label);
2299
+ if (file === void 0) throw new TypeError("Copilot credential is missing");
2300
+ const cache = options.tokenCache ?? createCopilotTokenCache(options);
2301
+ if (options.forceRefresh === true) cache.invalidate();
2302
+ operation.signal.throwIfAborted();
2303
+ return raceAbort(cache.acquire({
2304
+ file,
2305
+ revision: record?.revision ?? null,
2306
+ label: captured.label
2307
+ }, operation), operation.signal);
2308
+ }
2309
+
2268
2310
  //#endregion
2269
2311
  //#region src/oauth.ts
2270
2312
  /** GitHub's OAuth issuer. */
@@ -2676,5 +2718,5 @@ async function commitStore(captured, file, expectedRevision, operation) {
2676
2718
  }
2677
2719
 
2678
2720
  //#endregion
2679
- export { COPILOT_BASE_URL, COPILOT_CATALOG_PATH, COPILOT_DEFAULT_CATALOG_TIMEOUT_MS, COPILOT_DEFAULT_DIALECT, COPILOT_DEFAULT_MAX_CATALOG_BYTES, COPILOT_DEFAULT_MAX_CATALOG_CHUNKS, COPILOT_DEFAULT_MAX_CATALOG_MODELS, COPILOT_DEFAULT_POLL_INTERVAL_SECONDS, COPILOT_DEVICE_CODE_MAX_WAIT_MS, COPILOT_DEVICE_LOGIN_WARNING, COPILOT_DISPLAY_NAME, COPILOT_DUAL_PROTOCOL_ID, COPILOT_EDITOR_PLUGIN_VERSION, COPILOT_EDITOR_VERSION, COPILOT_ERROR_CODES, COPILOT_LOGIN_COMMAND, COPILOT_OAUTH_CLIENT_ID, COPILOT_OAUTH_SCOPE, COPILOT_PROVIDER_ID, COPILOT_RESPONSES_MODEL_PREFIXES, COPILOT_ROUTE_ID, COPILOT_SLOW_DOWN_INCREMENT_SECONDS, COPILOT_TOKEN_EXCHANGE_MARGIN_MS, COPILOT_TOKEN_EXCHANGE_PATH, CopilotDeviceLoginError, CopilotTokenExchangeError, DEFAULT_COPILOT_OAUTH_ISSUER, DEFAULT_COPILOT_TIMER, DEFAULT_GITHUB_API_BASE_URL, copilotAdapter, copilotCatalogCacheOptions, copilotDualProtocol, copilotPlugin, createCopilotEndpointRouter, createCopilotTokenCache, credentialFailure, discoverCopilotModels, exchangeCopilotToken, memoryCopilotAuthStore, memoryCopilotCredentialStore, partitionCopilotCatalog, requestCopilotDeviceCode, requireGitHubToken, resolveCopilotCatalogLimits, runCopilotDeviceLogin, shouldExchange, toChatCompletionsDialect, toResponsesDialect };
2721
+ export { COPILOT_BASE_URL, COPILOT_CATALOG_PATH, COPILOT_DEFAULT_CATALOG_TIMEOUT_MS, COPILOT_DEFAULT_DIALECT, COPILOT_DEFAULT_MAX_CATALOG_BYTES, COPILOT_DEFAULT_MAX_CATALOG_CHUNKS, COPILOT_DEFAULT_MAX_CATALOG_MODELS, COPILOT_DEFAULT_POLL_INTERVAL_SECONDS, COPILOT_DEVICE_CODE_MAX_WAIT_MS, COPILOT_DEVICE_LOGIN_WARNING, COPILOT_DISPLAY_NAME, COPILOT_DUAL_PROTOCOL_ID, COPILOT_EDITOR_PLUGIN_VERSION, COPILOT_EDITOR_VERSION, COPILOT_ERROR_CODES, COPILOT_LOGIN_COMMAND, COPILOT_OAUTH_CLIENT_ID, COPILOT_OAUTH_SCOPE, COPILOT_PROVIDER_ID, COPILOT_RESPONSES_MODEL_PREFIXES, COPILOT_ROUTE_ID, COPILOT_SLOW_DOWN_INCREMENT_SECONDS, COPILOT_TOKEN_EXCHANGE_MARGIN_MS, COPILOT_TOKEN_EXCHANGE_PATH, CopilotDeviceLoginError, CopilotTokenExchangeError, DEFAULT_COPILOT_OAUTH_ISSUER, DEFAULT_COPILOT_TIMER, DEFAULT_GITHUB_API_BASE_URL, copilotAdapter, copilotCatalogCacheOptions, copilotDualProtocol, copilotPlugin, createCopilotEndpointRouter, createCopilotTokenCache, credentialFailure, discoverCopilotModels, exchangeCopilotToken, getCopilotToken, memoryCopilotAuthStore, memoryCopilotCredentialStore, partitionCopilotCatalog, requestCopilotDeviceCode, requireGitHubToken, resolveCopilotCatalogLimits, runCopilotDeviceLogin, shouldExchange, toChatCompletionsDialect, toResponsesDialect };
2680
2722
  //# sourceMappingURL=index.js.map