@jeffreycao/copilot-api 2.7.38 → 2.7.39

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.
Files changed (38) hide show
  1. package/dist/{auth-jHSWJs1b.js → auth-DBOz2FcU.js} +9 -12
  2. package/dist/{auth-jHSWJs1b.js.map → auth-DBOz2FcU.js.map} +1 -1
  3. package/dist/auth-IiEbOqcu.js +1 -0
  4. package/dist/{config-BzhriV_y.js → config-BqSuE5h5.js} +7 -12
  5. package/dist/{config-BzhriV_y.js.map → config-BqSuE5h5.js.map} +1 -1
  6. package/dist/{config-store-CYG9aCTL.js → config-store-BsluQttR.js} +7 -13
  7. package/dist/{config-store-CYG9aCTL.js.map → config-store-BsluQttR.js.map} +1 -1
  8. package/dist/{copilot-runtime-8IpywGxw.js → copilot-runtime-0CujVONa.js} +11 -19
  9. package/dist/{copilot-runtime-8IpywGxw.js.map → copilot-runtime-0CujVONa.js.map} +1 -1
  10. package/dist/{debug-q7d6HJLV.js → debug-RUUyusA_.js} +4 -5
  11. package/dist/{debug-q7d6HJLV.js.map → debug-RUUyusA_.js.map} +1 -1
  12. package/dist/{electron-fetch-DsMaRX6v.js → electron-fetch-ByE9Ctv0.js} +2 -3
  13. package/dist/{electron-fetch-DsMaRX6v.js.map → electron-fetch-ByE9Ctv0.js.map} +1 -1
  14. package/dist/{fast-path-BwgQKZBk.js → fast-path-B53kz5S1.js} +1 -2
  15. package/dist/{fast-path-BwgQKZBk.js.map → fast-path-B53kz5S1.js.map} +1 -1
  16. package/dist/main.js +9 -10
  17. package/dist/{mcp-Dd_hxxuG.js → mcp-DJE9135Q.js} +3 -4
  18. package/dist/{mcp-Dd_hxxuG.js.map → mcp-DJE9135Q.js.map} +1 -1
  19. package/dist/mcp-server-DPadDLWn.js +1 -0
  20. package/dist/{mcp-server-CTGaok8g.js → mcp-server-DvGD6L9t.js} +3 -4
  21. package/dist/{mcp-server-CTGaok8g.js.map → mcp-server-DvGD6L9t.js.map} +1 -1
  22. package/dist/{provider-C6wFZzeY.js → provider-BMPS2mij.js} +3 -4
  23. package/dist/{provider-C6wFZzeY.js.map → provider-BMPS2mij.js.map} +1 -1
  24. package/dist/{provider-management-B9lCOTka.js → provider-management-vyEQj9RR.js} +3 -4
  25. package/dist/{provider-management-B9lCOTka.js.map → provider-management-vyEQj9RR.js.map} +1 -1
  26. package/dist/{server-CEF4Sh-g.js → server-Jvc5DYJV.js} +104 -201
  27. package/dist/{server-CEF4Sh-g.js.map → server-Jvc5DYJV.js.map} +1 -1
  28. package/dist/{start-Bawh7LU_.js → start-BQBvYKD-.js} +13 -18
  29. package/dist/{start-Bawh7LU_.js.map → start-BQBvYKD-.js.map} +1 -1
  30. package/dist/{tls-uiriilgk.js → tls-cISpkgFD.js} +2 -3
  31. package/dist/{tls-uiriilgk.js.map → tls-cISpkgFD.js.map} +1 -1
  32. package/dist/{token-XNKmjmqH.js → token-_1CBLbqH.js} +23 -43
  33. package/dist/{token-XNKmjmqH.js.map → token-_1CBLbqH.js.map} +1 -1
  34. package/dist/{tool-search-CcvaqM03.js → tool-search-DzipwtCX.js} +2 -3
  35. package/dist/{tool-search-CcvaqM03.js.map → tool-search-DzipwtCX.js.map} +1 -1
  36. package/package.json +6 -6
  37. package/dist/auth-i0XN57BZ.js +0 -2
  38. package/dist/mcp-server-CEfcUYiN.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-CTGaok8g.js","names":[],"sources":["../src/lib/mcp-server.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\"\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\"\nimport { z } from \"zod\"\n\nimport { createMcpToolSearchSentinel } from \"./tool-search\"\n\nconst SERVER_NAME = \"tool_search\"\nconst SERVER_VERSION = \"1.0.0\"\n\nexport const runMcpServer = async (): Promise<void> => {\n const server = new McpServer({\n name: SERVER_NAME,\n version: SERVER_VERSION,\n })\n\n server.registerTool(\n \"search\",\n {\n title: \"Tool Search Bridge\",\n description:\n \"Load deferred tools by exact name through the Copilot API tool_search bridge.\",\n inputSchema: {\n names: z\n .string()\n .describe(\n 'Comma-separated exact deferred tool names to load, for example \"TaskList,TaskGet,mcp__fetch__fetch\".',\n ),\n },\n _meta: {\n \"anthropic/alwaysLoad\": true,\n },\n },\n ({ names }) => ({\n content: [\n {\n type: \"text\",\n text: createMcpToolSearchSentinel(names),\n },\n ],\n }),\n )\n\n await server.connect(new StdioServerTransport())\n}\n"],"mappings":";;;;;AAMA,MAAM,cAAc;AACpB,MAAM,iBAAiB;AAEvB,MAAa,eAAe,YAA2B;CACrD,MAAM,SAAS,IAAI,UAAU;EAC3B,MAAM;EACN,SAAS;CACX,CAAC;CAED,OAAO,aACL,UACA;EACE,OAAO;EACP,aACE;EACF,aAAa,EACX,OAAO,EACJ,OAAO,CAAC,CACR,SACC,wGACF,EACJ;EACA,OAAO,EACL,wBAAwB,KAC1B;CACF,IACC,EAAE,aAAa,EACd,SAAS,CACP;EACE,MAAM;EACN,MAAM,4BAA4B,KAAK;CACzC,CACF,EACF,EACF;CAEA,MAAM,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AACjD"}
1
+ {"version":3,"file":"mcp-server-DvGD6L9t.js","names":[],"sources":["../src/lib/mcp-server.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\"\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\"\nimport { z } from \"zod\"\n\nimport { createMcpToolSearchSentinel } from \"./tool-search\"\n\nconst SERVER_NAME = \"tool_search\"\nconst SERVER_VERSION = \"1.0.0\"\n\nexport const runMcpServer = async (): Promise<void> => {\n const server = new McpServer({\n name: SERVER_NAME,\n version: SERVER_VERSION,\n })\n\n server.registerTool(\n \"search\",\n {\n title: \"Tool Search Bridge\",\n description:\n \"Load deferred tools by exact name through the Copilot API tool_search bridge.\",\n inputSchema: {\n names: z\n .string()\n .describe(\n 'Comma-separated exact deferred tool names to load, for example \"TaskList,TaskGet,mcp__fetch__fetch\".',\n ),\n },\n _meta: {\n \"anthropic/alwaysLoad\": true,\n },\n },\n ({ names }) => ({\n content: [\n {\n type: \"text\",\n text: createMcpToolSearchSentinel(names),\n },\n ],\n }),\n )\n\n await server.connect(new StdioServerTransport())\n}\n"],"mappings":";;;;;AAMA,MAAM,cAAc;AACpB,MAAM,iBAAiB;AAEvB,MAAa,eAAe,YAA2B;CACrD,MAAM,SAAS,IAAI,UAAU;EAC3B,MAAM;EACN,SAAS;CACX,CAAC;CAED,OAAO,aACL,UACA;EACE,OAAO;EACP,aACE;EACF,aAAa,EACX,OAAO,EACJ,OAAO,CAAC,CACR,SACC,wGACF,EACJ;EACA,OAAO,EACL,wBAAwB,KAC1B;CACF,IACC,EAAE,aAAa,EACd,SAAS,CACP;EACE,MAAM;EACN,MAAM,4BAA4B,KAAK;CACzC,CACF,EACF,EACF;CAEA,MAAM,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AACjD"}
@@ -1,6 +1,6 @@
1
- import { r as saveProviderManagementConfig } from "./provider-management-B9lCOTka.js";
1
+ import { r as saveProviderManagementConfig } from "./provider-management-vyEQj9RR.js";
2
2
  import { defineCommand } from "citty";
3
- //#region src/provider.ts
3
+ // src/provider.ts
4
4
  function providerStateCommand(enabled) {
5
5
  return defineCommand({
6
6
  meta: { description: `${enabled ? "Enable" : "Disable"} a configured provider` },
@@ -30,7 +30,6 @@ const provider = defineCommand({
30
30
  disable: providerStateCommand(false)
31
31
  }
32
32
  });
33
- //#endregion
34
33
  export { provider };
35
34
 
36
- //# sourceMappingURL=provider-C6wFZzeY.js.map
35
+ //# sourceMappingURL=provider-BMPS2mij.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-C6wFZzeY.js","names":[],"sources":["../src/provider.ts"],"sourcesContent":["import { defineCommand } from \"citty\"\n\nimport { saveProviderManagementConfig } from \"./lib/provider-management\"\n\nfunction providerStateCommand(enabled: boolean) {\n return defineCommand({\n meta: {\n description: `${enabled ? \"Enable\" : \"Disable\"} a configured provider`,\n },\n args: {\n name: {\n type: \"positional\",\n required: true,\n description: \"Provider name\",\n },\n },\n run({ args }) {\n try {\n saveProviderManagementConfig({\n providers: { [args.name]: { enabled } },\n })\n process.stdout.write(\n `Provider '${args.name}' ${enabled ? \"enabled\" : \"disabled\"}. Restart the running server to apply the change.\\n`,\n )\n } catch (error) {\n process.stderr.write(\n `${error instanceof Error ? error.message : String(error)}\\n`,\n )\n process.exitCode = 1\n }\n },\n })\n}\n\nexport const provider = defineCommand({\n meta: { name: \"provider\", description: \"Manage configured providers\" },\n subCommands: {\n enable: providerStateCommand(true),\n disable: providerStateCommand(false),\n },\n})\n"],"mappings":";;;AAIA,SAAS,qBAAqB,SAAkB;CAC9C,OAAO,cAAc;EACnB,MAAM,EACJ,aAAa,GAAG,UAAU,WAAW,UAAU,wBACjD;EACA,MAAM,EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;EACf,EACF;EACA,IAAI,EAAE,QAAQ;GACZ,IAAI;IACF,6BAA6B,EAC3B,WAAW,GAAG,KAAK,OAAO,EAAE,QAAQ,EAAE,EACxC,CAAC;IACD,QAAQ,OAAO,MACb,aAAa,KAAK,KAAK,IAAI,UAAU,YAAY,WAAW,oDAC9D;GACF,SAAS,OAAO;IACd,QAAQ,OAAO,MACb,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GAC5D;IACA,QAAQ,WAAW;GACrB;EACF;CACF,CAAC;AACH;AAEA,MAAa,WAAW,cAAc;CACpC,MAAM;EAAE,MAAM;EAAY,aAAa;CAA8B;CACrE,aAAa;EACX,QAAQ,qBAAqB,IAAI;EACjC,SAAS,qBAAqB,KAAK;CACrC;AACF,CAAC"}
1
+ {"version":3,"file":"provider-BMPS2mij.js","names":[],"sources":["../src/provider.ts"],"sourcesContent":["import { defineCommand } from \"citty\"\n\nimport { saveProviderManagementConfig } from \"./lib/provider-management\"\n\nfunction providerStateCommand(enabled: boolean) {\n return defineCommand({\n meta: {\n description: `${enabled ? \"Enable\" : \"Disable\"} a configured provider`,\n },\n args: {\n name: {\n type: \"positional\",\n required: true,\n description: \"Provider name\",\n },\n },\n run({ args }) {\n try {\n saveProviderManagementConfig({\n providers: { [args.name]: { enabled } },\n })\n process.stdout.write(\n `Provider '${args.name}' ${enabled ? \"enabled\" : \"disabled\"}. Restart the running server to apply the change.\\n`,\n )\n } catch (error) {\n process.stderr.write(\n `${error instanceof Error ? error.message : String(error)}\\n`,\n )\n process.exitCode = 1\n }\n },\n })\n}\n\nexport const provider = defineCommand({\n meta: { name: \"provider\", description: \"Manage configured providers\" },\n subCommands: {\n enable: providerStateCommand(true),\n disable: providerStateCommand(false),\n },\n})\n"],"mappings":";;;AAIA,SAAS,qBAAqB,SAAkB;CAC9C,OAAO,cAAc;EACnB,MAAM,EACJ,aAAa,GAAG,UAAU,WAAW,UAAU,wBACjD;EACA,MAAM,EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;EACf,EACF;EACA,IAAI,EAAE,QAAQ;GACZ,IAAI;IACF,6BAA6B,EAC3B,WAAW,GAAG,KAAK,OAAO,EAAE,QAAQ,EAAE,EACxC,CAAC;IACD,QAAQ,OAAO,MACb,aAAa,KAAK,KAAK,IAAI,UAAU,YAAY,WAAW,oDAC9D;GACF,SAAS,OAAO;IACd,QAAQ,OAAO,MACb,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GAC5D;IACA,QAAQ,WAAW;GACrB;EACF;CACF,CAAC;AACH;AAEA,MAAa,WAAW,cAAc;CACpC,MAAM;EAAE,MAAM;EAAY,aAAa;CAA8B;CACrE,aAAa;EACX,QAAQ,qBAAqB,IAAI;EACjC,SAAS,qBAAqB,KAAK;CACrC;AACF,CAAC"}
@@ -1,6 +1,6 @@
1
- import { S as PATHS, f as invalidateConfigCache, v as readEditableConfigFromDisk, w as GITHUB_COPILOT_PROVIDER, x as writeConfigToDisk } from "./config-store-CYG9aCTL.js";
1
+ import { S as PATHS, f as invalidateConfigCache, v as readEditableConfigFromDisk, w as GITHUB_COPILOT_PROVIDER, x as writeConfigToDisk } from "./config-store-BsluQttR.js";
2
2
  import { z } from "zod";
3
- //#region src/lib/provider-management.ts
3
+ // src/lib/provider-management.ts
4
4
  const updateSchema = z.object({ providers: z.record(z.string(), z.object({
5
5
  enabled: z.boolean().optional(),
6
6
  agentsModels: z.array(z.string().trim().min(1)).nullable().optional()
@@ -54,7 +54,6 @@ function saveProviderManagementConfig(input) {
54
54
  invalidateConfigCache();
55
55
  return getProviderManagementConfig(updated);
56
56
  }
57
- //#endregion
58
57
  export { isProviderAgentModelVisible as n, saveProviderManagementConfig as r, getProviderAgentModels as t };
59
58
 
60
- //# sourceMappingURL=provider-management-B9lCOTka.js.map
59
+ //# sourceMappingURL=provider-management-vyEQj9RR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-management-B9lCOTka.js","names":[],"sources":["../src/lib/provider-management.ts"],"sourcesContent":["import { z } from \"zod\"\n\nimport { GITHUB_COPILOT_PROVIDER } from \"./github-copilot-provider\"\n\nimport {\n invalidateConfigCache,\n readEditableConfigFromDisk,\n writeConfigToDisk,\n type AppConfig,\n type ProviderConfig,\n} from \"./config-store\"\nimport { PATHS } from \"./paths\"\nimport type { ProviderManagementConfig } from \"./types/provider-management\"\nexport type {\n ProviderManagementConfig,\n ProviderManagementUpdate,\n} from \"./types/provider-management\"\n\nconst updateSchema = z\n .object({\n providers: z\n .record(\n z.string(),\n z\n .object({\n enabled: z.boolean().optional(),\n agentsModels: z\n .array(z.string().trim().min(1))\n .nullable()\n .optional(),\n })\n .strict(),\n )\n .optional(),\n })\n .strict()\n\nexport function getProviderAgentModels(\n provider: ProviderConfig | null | undefined,\n): Array<string> | undefined {\n const models = provider?.agentsModels\n if (!Array.isArray(models) || !models.every((id) => typeof id === \"string\")) {\n return undefined\n }\n return [...new Set(models.map((id) => id.trim()).filter(Boolean))]\n}\n\nexport function isProviderAgentModelVisible(\n provider: ProviderConfig | null | undefined,\n modelId: string,\n): boolean {\n if (provider?.enabled === false) return false\n const models = getProviderAgentModels(provider)\n return models === undefined || models.includes(modelId)\n}\n\nexport function getProviderManagementConfig(\n config: AppConfig = readEditableConfigFromDisk(),\n): ProviderManagementConfig {\n const providers: NonNullable<AppConfig[\"providers\"]> = {\n [GITHUB_COPILOT_PROVIDER]: {},\n ...config.providers,\n }\n return {\n configPath: PATHS.CONFIG_PATH,\n providers: Object.entries(providers)\n .filter(([name]) => name !== \"copilot\")\n .map(([name, provider]) => ({\n name,\n type:\n name === GITHUB_COPILOT_PROVIDER ? \"github-copilot\" : (\n (provider.type ?? \"anthropic\")\n ),\n enabled: provider.enabled !== false,\n agentsModels: getProviderAgentModels(provider),\n })),\n }\n}\n\nexport function applyProviderManagementUpdate(\n config: AppConfig,\n input: unknown,\n): AppConfig {\n const parsed = updateSchema.safeParse(input)\n if (!parsed.success) {\n throw new Error(\n parsed.error.issues[0]?.message ?? \"Invalid provider update\",\n )\n }\n const { providers: updates } = parsed.data\n const providers = { ...config.providers }\n for (const [name, update] of Object.entries(updates ?? {})) {\n if (\n name === \"copilot\"\n || (name !== GITHUB_COPILOT_PROVIDER && !Object.hasOwn(providers, name))\n ) {\n throw new Error(`Provider '${name}' is not configured`)\n }\n const provider = { ...providers[name] }\n if (update.enabled !== undefined) provider.enabled = update.enabled\n if (update.agentsModels === null) {\n delete provider.agentsModels\n } else if (update.agentsModels !== undefined) {\n provider.agentsModels = [...new Set(update.agentsModels)]\n }\n providers[name] = provider\n }\n return {\n ...config,\n ...(updates !== undefined ? { providers } : {}),\n }\n}\n\nexport function saveProviderManagementConfig(\n input: unknown,\n): ProviderManagementConfig {\n const updated = applyProviderManagementUpdate(\n readEditableConfigFromDisk(),\n input,\n )\n writeConfigToDisk(updated)\n invalidateConfigCache()\n return getProviderManagementConfig(updated)\n}\n"],"mappings":";;;AAkBA,MAAM,eAAe,EAClB,OAAO,EACN,WAAW,EACR,OACC,EAAE,OAAO,GACT,EACG,OAAO;CACN,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC9B,cAAc,EACX,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,SAAS,CAAC,CACV,SAAS;AACd,CAAC,CAAC,CACD,OAAO,CACZ,CAAC,CACA,SAAS,EACd,CAAC,CAAC,CACD,OAAO;AAEV,SAAgB,uBACd,UAC2B;CAC3B,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,GACxE;CAEF,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;AACnE;AAEA,SAAgB,4BACd,UACA,SACS;CACT,IAAI,UAAU,YAAY,OAAO,OAAO;CACxC,MAAM,SAAS,uBAAuB,QAAQ;CAC9C,OAAO,WAAW,KAAA,KAAa,OAAO,SAAS,OAAO;AACxD;AAEA,SAAgB,4BACd,SAAoB,2BAA2B,GACrB;CAC1B,MAAM,YAAiD;GACpD,0BAA0B,CAAC;EAC5B,GAAG,OAAO;CACZ;CACA,OAAO;EACL,YAAY,MAAM;EAClB,WAAW,OAAO,QAAQ,SAAS,CAAC,CACjC,QAAQ,CAAC,UAAU,SAAS,SAAS,CAAC,CACtC,KAAK,CAAC,MAAM,eAAe;GAC1B;GACA,MACE,SAAA,mBAAmC,mBAChC,SAAS,QAAQ;GAEtB,SAAS,SAAS,YAAY;GAC9B,cAAc,uBAAuB,QAAQ;EAC/C,EAAE;CACN;AACF;AAEA,SAAgB,8BACd,QACA,OACW;CACX,MAAM,SAAS,aAAa,UAAU,KAAK;CAC3C,IAAI,CAAC,OAAO,SACV,MAAM,IAAI,MACR,OAAO,MAAM,OAAO,EAAE,EAAE,WAAW,yBACrC;CAEF,MAAM,EAAE,WAAW,YAAY,OAAO;CACtC,MAAM,YAAY,EAAE,GAAG,OAAO,UAAU;CACxC,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,WAAW,CAAC,CAAC,GAAG;EAC1D,IACE,SAAS,aACL,SAAA,oBAAoC,CAAC,OAAO,OAAO,WAAW,IAAI,GAEtE,MAAM,IAAI,MAAM,aAAa,KAAK,oBAAoB;EAExD,MAAM,WAAW,EAAE,GAAG,UAAU,MAAM;EACtC,IAAI,OAAO,YAAY,KAAA,GAAW,SAAS,UAAU,OAAO;EAC5D,IAAI,OAAO,iBAAiB,MAC1B,OAAO,SAAS;OACX,IAAI,OAAO,iBAAiB,KAAA,GACjC,SAAS,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,YAAY,CAAC;EAE1D,UAAU,QAAQ;CACpB;CACA,OAAO;EACL,GAAG;EACH,GAAI,YAAY,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CAC/C;AACF;AAEA,SAAgB,6BACd,OAC0B;CAC1B,MAAM,UAAU,8BACd,2BAA2B,GAC3B,KACF;CACA,kBAAkB,OAAO;CACzB,sBAAsB;CACtB,OAAO,4BAA4B,OAAO;AAC5C"}
1
+ {"version":3,"file":"provider-management-vyEQj9RR.js","names":[],"sources":["../src/lib/provider-management.ts"],"sourcesContent":["import { z } from \"zod\"\n\nimport { GITHUB_COPILOT_PROVIDER } from \"./github-copilot-provider\"\n\nimport {\n invalidateConfigCache,\n readEditableConfigFromDisk,\n writeConfigToDisk,\n type AppConfig,\n type ProviderConfig,\n} from \"./config-store\"\nimport { PATHS } from \"./paths\"\nimport type { ProviderManagementConfig } from \"./types/provider-management\"\nexport type {\n ProviderManagementConfig,\n ProviderManagementUpdate,\n} from \"./types/provider-management\"\n\nconst updateSchema = z\n .object({\n providers: z\n .record(\n z.string(),\n z\n .object({\n enabled: z.boolean().optional(),\n agentsModels: z\n .array(z.string().trim().min(1))\n .nullable()\n .optional(),\n })\n .strict(),\n )\n .optional(),\n })\n .strict()\n\nexport function getProviderAgentModels(\n provider: ProviderConfig | null | undefined,\n): Array<string> | undefined {\n const models = provider?.agentsModels\n if (!Array.isArray(models) || !models.every((id) => typeof id === \"string\")) {\n return undefined\n }\n return [...new Set(models.map((id) => id.trim()).filter(Boolean))]\n}\n\nexport function isProviderAgentModelVisible(\n provider: ProviderConfig | null | undefined,\n modelId: string,\n): boolean {\n if (provider?.enabled === false) return false\n const models = getProviderAgentModels(provider)\n return models === undefined || models.includes(modelId)\n}\n\nexport function getProviderManagementConfig(\n config: AppConfig = readEditableConfigFromDisk(),\n): ProviderManagementConfig {\n const providers: NonNullable<AppConfig[\"providers\"]> = {\n [GITHUB_COPILOT_PROVIDER]: {},\n ...config.providers,\n }\n return {\n configPath: PATHS.CONFIG_PATH,\n providers: Object.entries(providers)\n .filter(([name]) => name !== \"copilot\")\n .map(([name, provider]) => ({\n name,\n type:\n name === GITHUB_COPILOT_PROVIDER ? \"github-copilot\" : (\n (provider.type ?? \"anthropic\")\n ),\n enabled: provider.enabled !== false,\n agentsModels: getProviderAgentModels(provider),\n })),\n }\n}\n\nexport function applyProviderManagementUpdate(\n config: AppConfig,\n input: unknown,\n): AppConfig {\n const parsed = updateSchema.safeParse(input)\n if (!parsed.success) {\n throw new Error(\n parsed.error.issues[0]?.message ?? \"Invalid provider update\",\n )\n }\n const { providers: updates } = parsed.data\n const providers = { ...config.providers }\n for (const [name, update] of Object.entries(updates ?? {})) {\n if (\n name === \"copilot\"\n || (name !== GITHUB_COPILOT_PROVIDER && !Object.hasOwn(providers, name))\n ) {\n throw new Error(`Provider '${name}' is not configured`)\n }\n const provider = { ...providers[name] }\n if (update.enabled !== undefined) provider.enabled = update.enabled\n if (update.agentsModels === null) {\n delete provider.agentsModels\n } else if (update.agentsModels !== undefined) {\n provider.agentsModels = [...new Set(update.agentsModels)]\n }\n providers[name] = provider\n }\n return {\n ...config,\n ...(updates !== undefined ? { providers } : {}),\n }\n}\n\nexport function saveProviderManagementConfig(\n input: unknown,\n): ProviderManagementConfig {\n const updated = applyProviderManagementUpdate(\n readEditableConfigFromDisk(),\n input,\n )\n writeConfigToDisk(updated)\n invalidateConfigCache()\n return getProviderManagementConfig(updated)\n}\n"],"mappings":";;;AAkBA,MAAM,eAAe,EAClB,OAAO,EACN,WAAW,EACR,OACC,EAAE,OAAO,GACT,EACG,OAAO;CACN,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC9B,cAAc,EACX,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,SAAS,CAAC,CACV,SAAS;AACd,CAAC,CAAC,CACD,OAAO,CACZ,CAAC,CACA,SAAS,EACd,CAAC,CAAC,CACD,OAAO;AAEV,SAAgB,uBACd,UAC2B;CAC3B,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,GACxE;CAEF,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;AACnE;AAEA,SAAgB,4BACd,UACA,SACS;CACT,IAAI,UAAU,YAAY,OAAO,OAAO;CACxC,MAAM,SAAS,uBAAuB,QAAQ;CAC9C,OAAO,WAAW,KAAA,KAAa,OAAO,SAAS,OAAO;AACxD;AAEA,SAAgB,4BACd,SAAoB,2BAA2B,GACrB;CAC1B,MAAM,YAAiD;GACpD,0BAA0B,CAAC;EAC5B,GAAG,OAAO;CACZ;CACA,OAAO;EACL,YAAY,MAAM;EAClB,WAAW,OAAO,QAAQ,SAAS,CAAC,CACjC,QAAQ,CAAC,UAAU,SAAS,SAAS,CAAC,CACtC,KAAK,CAAC,MAAM,eAAe;GAC1B;GACA,MACE,SAAA,mBAAmC,mBAChC,SAAS,QAAQ;GAEtB,SAAS,SAAS,YAAY;GAC9B,cAAc,uBAAuB,QAAQ;EAC/C,EAAE;CACN;AACF;AAEA,SAAgB,8BACd,QACA,OACW;CACX,MAAM,SAAS,aAAa,UAAU,KAAK;CAC3C,IAAI,CAAC,OAAO,SACV,MAAM,IAAI,MACR,OAAO,MAAM,OAAO,EAAE,EAAE,WAAW,yBACrC;CAEF,MAAM,EAAE,WAAW,YAAY,OAAO;CACtC,MAAM,YAAY,EAAE,GAAG,OAAO,UAAU;CACxC,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,WAAW,CAAC,CAAC,GAAG;EAC1D,IACE,SAAS,aACL,SAAA,oBAAoC,CAAC,OAAO,OAAO,WAAW,IAAI,GAEtE,MAAM,IAAI,MAAM,aAAa,KAAK,oBAAoB;EAExD,MAAM,WAAW,EAAE,GAAG,UAAU,MAAM;EACtC,IAAI,OAAO,YAAY,KAAA,GAAW,SAAS,UAAU,OAAO;EAC5D,IAAI,OAAO,iBAAiB,MAC1B,OAAO,SAAS;OACX,IAAI,OAAO,iBAAiB,KAAA,GACjC,SAAS,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,YAAY,CAAC;EAE1D,UAAU,QAAQ;CACpB;CACA,OAAO;EACL,GAAG;EACH,GAAI,YAAY,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CAC/C;AACF;AAEA,SAAgB,6BACd,OAC0B;CAC1B,MAAM,UAAU,8BACd,2BAA2B,GAC3B,KACF;CACA,kBAAkB,OAAO;CACzB,sBAAsB;CACtB,OAAO,4BAA4B,OAAO;AAC5C"}