poe-code 3.0.88 → 3.0.90

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.
@@ -1,11 +1,6 @@
1
- import { exec } from "node:child_process";
2
- import readline from "node:readline";
3
1
  import { buildProviderContext, createExecutionResources, resolveCommandFlags, applyIsolatedConfiguration } from "./shared.js";
4
2
  import { loadConfiguredServices } from "../../services/config.js";
5
- import { ValidationError } from "../errors.js";
6
3
  import { combineMutationObservers, createMutationReporter } from "../../services/mutation-events.js";
7
- import { createOAuthClient } from "@poe-code/auth";
8
- import { text, log } from "@poe-code/design-system";
9
4
  export function registerLoginCommand(program, container) {
10
5
  program
11
6
  .command("login")
@@ -20,19 +15,21 @@ export async function executeLogin(program, container, options) {
20
15
  const resources = createExecutionResources(container, flags, "login");
21
16
  resources.logger.intro("login");
22
17
  try {
23
- const input = await resolveApiKeyInput(container, options);
24
- const normalized = container.options.normalizeApiKey(input);
18
+ const apiKey = await container.options.resolveApiKey({
19
+ value: options.apiKey,
20
+ envValue: container.env.getVariable("POE_API_KEY"),
21
+ dryRun: flags.dryRun,
22
+ assumeYes: flags.assumeYes,
23
+ allowStored: false
24
+ });
25
25
  const configuredServices = await loadConfiguredServices({
26
26
  fs: container.fs,
27
27
  filePath: container.env.configPath
28
28
  });
29
- if (!flags.dryRun) {
30
- await container.writeApiKey(normalized);
31
- }
32
29
  await reconfigureServices({
33
30
  program,
34
31
  container,
35
- apiKey: normalized,
32
+ apiKey,
36
33
  configuredServices
37
34
  });
38
35
  resources.context.complete({
@@ -51,72 +48,6 @@ export async function executeLogin(program, container, options) {
51
48
  throw error;
52
49
  }
53
50
  }
54
- async function resolveApiKeyInput(container, options) {
55
- if (options.apiKey) {
56
- return options.apiKey;
57
- }
58
- const envKey = container.env.getVariable("POE_API_KEY");
59
- if (envKey && envKey.trim().length > 0) {
60
- return envKey;
61
- }
62
- if (container.env.getVariable("POE_CODE_OAUTH_LOGIN") === "1") {
63
- return resolveApiKeyViaOAuth();
64
- }
65
- const descriptor = container.promptLibrary.loginApiKey();
66
- const response = await container.prompts(descriptor);
67
- const value = response[descriptor.name];
68
- if (typeof value !== "string" || value.trim() === "") {
69
- throw new ValidationError("POE API key is required.", {
70
- operation: "login",
71
- field: "apiKey"
72
- });
73
- }
74
- return value;
75
- }
76
- async function resolveApiKeyViaOAuth() {
77
- const rl = readline.createInterface({
78
- input: process.stdin
79
- });
80
- try {
81
- const client = createOAuthClient({
82
- clientId: "client_f520ee4d8ca84a13ba876a8731d264d0",
83
- authorizationEndpoint: "https://poe.com/oauth/authorize",
84
- tokenEndpoint: "https://api.poe.com/token",
85
- openBrowser: (url) => openInBrowser(url).catch(() => {
86
- log.warn("Could not open browser automatically.");
87
- }),
88
- readLine: () => new Promise((resolve) => {
89
- rl.once("line", (line) => resolve(line));
90
- })
91
- });
92
- const authorization = await client.authorize();
93
- log.message(`${text.muted("Authorize at")} ${text.link(authorization.authorizationUrl)}`);
94
- log.message(text.muted("Waiting for authorization. You can also paste the redirect URL here:"));
95
- const result = await authorization.waitForResult();
96
- return result.apiKey;
97
- }
98
- finally {
99
- rl.close();
100
- }
101
- }
102
- function openInBrowser(url) {
103
- return new Promise((resolve, reject) => {
104
- const platform = process.platform;
105
- const command = platform === "darwin"
106
- ? `open "${url}"`
107
- : platform === "win32"
108
- ? `start "" "${url}"`
109
- : `xdg-open "${url}"`;
110
- exec(command, (error) => {
111
- if (error) {
112
- reject(error);
113
- }
114
- else {
115
- resolve();
116
- }
117
- });
118
- });
119
- }
120
51
  async function reconfigureServices(input) {
121
52
  const { program, container, apiKey, configuredServices } = input;
122
53
  const serviceNames = Object.keys(configuredServices);
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { text, symbols, confirm as dsConfirm, isCancel, cancel as dsCancel } fro
12
12
  import { getDefaultProviders } from "../providers/index.js";
13
13
  import { createPoeCodeCommandRunner } from "./poe-code-command-runner.js";
14
14
  import { OperationCancelledError } from "./errors.js";
15
+ import { resolveApiKeyViaOAuth } from "./oauth-login.js";
15
16
  export function createCliContainer(dependencies) {
16
17
  const environment = createCliEnvironment({
17
18
  cwd: dependencies.env.cwd,
@@ -73,6 +74,7 @@ export function createCliContainer(dependencies) {
73
74
  });
74
75
  const readApiKey = authStore.getApiKey.bind(authStore);
75
76
  const writeApiKey = authStore.setApiKey.bind(authStore);
77
+ const oauthEnabled = (dependencies.env.variables ?? process.env).POE_CODE_OAUTH_LOGIN !== "0";
76
78
  const options = createOptionResolvers({
77
79
  prompts: dependencies.prompts,
78
80
  promptLibrary,
@@ -87,7 +89,8 @@ export function createCliContainer(dependencies) {
87
89
  throw new OperationCancelledError();
88
90
  }
89
91
  return result === true;
90
- }
92
+ },
93
+ loginViaOAuth: oauthEnabled ? resolveApiKeyViaOAuth : undefined
91
94
  });
92
95
  const registry = createServiceRegistry();
93
96
  const providers = getDefaultProviders().filter((adapter) => !adapter.disabled);
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/cli/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/cli/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function resolveApiKeyViaOAuth(): Promise<string>;
@@ -0,0 +1,49 @@
1
+ import { exec } from "node:child_process";
2
+ import readline from "node:readline";
3
+ import { createOAuthClient } from "@poe-code/auth";
4
+ import { text, log } from "@poe-code/design-system";
5
+ export async function resolveApiKeyViaOAuth() {
6
+ const rl = readline.createInterface({
7
+ input: process.stdin
8
+ });
9
+ try {
10
+ const client = createOAuthClient({
11
+ clientId: "client_f520ee4d8ca84a13ba876a8731d264d0",
12
+ authorizationEndpoint: "https://poe.com/oauth/authorize",
13
+ tokenEndpoint: "https://api.poe.com/token",
14
+ openBrowser: (url) => openInBrowser(url).catch(() => {
15
+ log.warn("Could not open browser automatically.");
16
+ }),
17
+ readLine: () => new Promise((resolve) => {
18
+ rl.once("line", (line) => resolve(line));
19
+ })
20
+ });
21
+ const authorization = await client.authorize();
22
+ log.message(`${text.muted("Authorize at")} ${text.link(authorization.authorizationUrl)}`);
23
+ log.message(text.muted("Waiting for authorization. You can also paste the redirect URL here:"));
24
+ const result = await authorization.waitForResult();
25
+ return result.apiKey;
26
+ }
27
+ finally {
28
+ rl.close();
29
+ }
30
+ }
31
+ function openInBrowser(url) {
32
+ return new Promise((resolve, reject) => {
33
+ const platform = process.platform;
34
+ const command = platform === "darwin"
35
+ ? `open "${url}"`
36
+ : platform === "win32"
37
+ ? `start "" "${url}"`
38
+ : `xdg-open "${url}"`;
39
+ exec(command, (error) => {
40
+ if (error) {
41
+ reject(error);
42
+ }
43
+ else {
44
+ resolve();
45
+ }
46
+ });
47
+ });
48
+ }
49
+ //# sourceMappingURL=oauth-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-login.js","sourceRoot":"","sources":["../../src/cli/oauth-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,IAAI,EACJ,GAAG,EACJ,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC;YAC/B,QAAQ,EAAE,yCAAyC;YACnD,qBAAqB,EAAE,iCAAiC;YACxD,aAAa,EAAE,2BAA2B;YAC1C,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACnB,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5B,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACpD,CAAC,CAAC;YACJ,QAAQ,EAAE,GAAG,EAAE,CACb,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBAC9B,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAE/C,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC1F,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC,CAAC;QAEhG,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAC;QAEnD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,OAAO,GACX,QAAQ,KAAK,QAAQ;YACnB,CAAC,CAAC,SAAS,GAAG,GAAG;YACjB,CAAC,CAAC,QAAQ,KAAK,OAAO;gBACpB,CAAC,CAAC,aAAa,GAAG,GAAG;gBACrB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;QAE5B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -45,6 +45,7 @@ export interface OptionResolverInit {
45
45
  promptLibrary: PromptLibrary;
46
46
  apiKeyStore: ApiKeyStore;
47
47
  confirm: (message: string) => Promise<boolean>;
48
+ loginViaOAuth?: () => Promise<string>;
48
49
  }
49
50
  export declare function isValidApiKeyFormat(key: string): boolean;
50
51
  export declare function createOptionResolvers(init: OptionResolverInit): OptionResolvers;
@@ -49,7 +49,7 @@ export function isValidApiKeyFormat(key) {
49
49
  return false;
50
50
  if (key.startsWith("sk-poe-")) {
51
51
  const hash = key.slice(7);
52
- return hasMinimumApiKeyLength(hash) && isAlphanumeric(hash);
52
+ return hasMinimumApiKeyLength(hash) && isAlphanumericWithSeparators(hash);
53
53
  }
54
54
  return hasMinimumApiKeyLength(key) && isAlphanumericWithSeparators(key);
55
55
  }
@@ -123,6 +123,14 @@ export function createOptionResolvers(init) {
123
123
  return normalizeApiKey(stored);
124
124
  }
125
125
  }
126
+ if (init.loginViaOAuth) {
127
+ const apiKey = await init.loginViaOAuth();
128
+ const normalized = normalizeApiKey(apiKey);
129
+ if (!input.dryRun) {
130
+ await init.apiKeyStore.write(normalized);
131
+ }
132
+ return normalized;
133
+ }
126
134
  while (true) {
127
135
  const descriptor = init.promptLibrary.loginApiKey();
128
136
  const response = await init.prompts(descriptor);
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -504,6 +504,7 @@ async function startAuthorization(config2, fetchFn) {
504
504
  fetchFn
505
505
  });
506
506
  } finally {
507
+ server.closeAllConnections?.();
507
508
  server.close();
508
509
  }
509
510
  };
@@ -5043,16 +5044,6 @@ var init_prompts2 = __esm({
5043
5044
  function stripBracketedPaste(value) {
5044
5045
  return value.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "").replace(/undefinedndefined$/, "").replace(/undefined$/, "").replace(/ndefined$/, "");
5045
5046
  }
5046
- function isAlphanumeric(value) {
5047
- for (let i = 0; i < value.length; i++) {
5048
- const code = value.charCodeAt(i);
5049
- const isDigit = code >= 48 && code <= 57;
5050
- const isUpper = code >= 65 && code <= 90;
5051
- const isLower = code >= 97 && code <= 122;
5052
- if (!isDigit && !isUpper && !isLower) return false;
5053
- }
5054
- return value.length > 0;
5055
- }
5056
5047
  function isAlphanumericWithSeparators(value) {
5057
5048
  for (let i = 0; i < value.length; i++) {
5058
5049
  const code = value.charCodeAt(i);
@@ -5073,7 +5064,7 @@ function isValidApiKeyFormat(key) {
5073
5064
  if (key.length === 0) return false;
5074
5065
  if (key.startsWith("sk-poe-")) {
5075
5066
  const hash2 = key.slice(7);
5076
- return hasMinimumApiKeyLength(hash2) && isAlphanumeric(hash2);
5067
+ return hasMinimumApiKeyLength(hash2) && isAlphanumericWithSeparators(hash2);
5077
5068
  }
5078
5069
  return hasMinimumApiKeyLength(key) && isAlphanumericWithSeparators(key);
5079
5070
  }
@@ -5146,6 +5137,14 @@ function createOptionResolvers(init) {
5146
5137
  return normalizeApiKey(stored);
5147
5138
  }
5148
5139
  }
5140
+ if (init.loginViaOAuth) {
5141
+ const apiKey = await init.loginViaOAuth();
5142
+ const normalized = normalizeApiKey(apiKey);
5143
+ if (!input.dryRun) {
5144
+ await init.apiKeyStore.write(normalized);
5145
+ }
5146
+ return normalized;
5147
+ }
5149
5148
  while (true) {
5150
5149
  const descriptor = init.promptLibrary.loginApiKey();
5151
5150
  const response = await init.prompts(descriptor);
@@ -10600,6 +10599,55 @@ var init_client_instance = __esm({
10600
10599
  }
10601
10600
  });
10602
10601
 
10602
+ // src/cli/oauth-login.ts
10603
+ import { exec as exec2 } from "node:child_process";
10604
+ import readline from "node:readline";
10605
+ async function resolveApiKeyViaOAuth() {
10606
+ const rl = readline.createInterface({
10607
+ input: process.stdin
10608
+ });
10609
+ try {
10610
+ const client = createOAuthClient({
10611
+ clientId: "client_f520ee4d8ca84a13ba876a8731d264d0",
10612
+ authorizationEndpoint: "https://poe.com/oauth/authorize",
10613
+ tokenEndpoint: "https://api.poe.com/token",
10614
+ openBrowser: (url2) => openInBrowser(url2).catch(() => {
10615
+ log2.warn("Could not open browser automatically.");
10616
+ }),
10617
+ readLine: () => new Promise((resolve) => {
10618
+ rl.once("line", (line) => resolve(line));
10619
+ })
10620
+ });
10621
+ const authorization = await client.authorize();
10622
+ log2.message(`${text.muted("Authorize at")} ${text.link(authorization.authorizationUrl)}`);
10623
+ log2.message(text.muted("Waiting for authorization. You can also paste the redirect URL here:"));
10624
+ const result = await authorization.waitForResult();
10625
+ return result.apiKey;
10626
+ } finally {
10627
+ rl.close();
10628
+ }
10629
+ }
10630
+ function openInBrowser(url2) {
10631
+ return new Promise((resolve, reject) => {
10632
+ const platform = process.platform;
10633
+ const command = platform === "darwin" ? `open "${url2}"` : platform === "win32" ? `start "" "${url2}"` : `xdg-open "${url2}"`;
10634
+ exec2(command, (error2) => {
10635
+ if (error2) {
10636
+ reject(error2);
10637
+ } else {
10638
+ resolve();
10639
+ }
10640
+ });
10641
+ });
10642
+ }
10643
+ var init_oauth_login = __esm({
10644
+ "src/cli/oauth-login.ts"() {
10645
+ "use strict";
10646
+ init_src();
10647
+ init_src4();
10648
+ }
10649
+ });
10650
+
10603
10651
  // src/cli/container.ts
10604
10652
  import * as nodeFsSync2 from "node:fs";
10605
10653
  function createCliContainer(dependencies) {
@@ -10656,6 +10704,7 @@ function createCliContainer(dependencies) {
10656
10704
  });
10657
10705
  const readApiKey = authStore.getApiKey.bind(authStore);
10658
10706
  const writeApiKey = authStore.setApiKey.bind(authStore);
10707
+ const oauthEnabled = (dependencies.env.variables ?? process.env).POE_CODE_OAUTH_LOGIN !== "0";
10659
10708
  const options = createOptionResolvers({
10660
10709
  prompts: dependencies.prompts,
10661
10710
  promptLibrary,
@@ -10670,7 +10719,8 @@ function createCliContainer(dependencies) {
10670
10719
  throw new OperationCancelledError();
10671
10720
  }
10672
10721
  return result === true;
10673
- }
10722
+ },
10723
+ loginViaOAuth: oauthEnabled ? resolveApiKeyViaOAuth : void 0
10674
10724
  });
10675
10725
  const registry2 = createServiceRegistry();
10676
10726
  const providers = getDefaultProviders().filter(
@@ -10719,6 +10769,7 @@ var init_container2 = __esm({
10719
10769
  await init_providers();
10720
10770
  init_poe_code_command_runner();
10721
10771
  init_errors();
10772
+ init_oauth_login();
10722
10773
  }
10723
10774
  });
10724
10775
 
@@ -12073,8 +12124,6 @@ var init_wrap = __esm({
12073
12124
  });
12074
12125
 
12075
12126
  // src/cli/commands/login.ts
12076
- import { exec as exec2 } from "node:child_process";
12077
- import readline from "node:readline";
12078
12127
  function registerLoginCommand(program, container) {
12079
12128
  program.command("login").description("Store a Poe API key for reuse across commands.").option("--api-key <key>", "Poe API key").action(async (options) => {
12080
12129
  await executeLogin(program, container, options);
@@ -12089,19 +12138,21 @@ async function executeLogin(program, container, options) {
12089
12138
  );
12090
12139
  resources.logger.intro("login");
12091
12140
  try {
12092
- const input = await resolveApiKeyInput(container, options);
12093
- const normalized = container.options.normalizeApiKey(input);
12141
+ const apiKey = await container.options.resolveApiKey({
12142
+ value: options.apiKey,
12143
+ envValue: container.env.getVariable("POE_API_KEY"),
12144
+ dryRun: flags.dryRun,
12145
+ assumeYes: flags.assumeYes,
12146
+ allowStored: false
12147
+ });
12094
12148
  const configuredServices = await loadConfiguredServices({
12095
12149
  fs: container.fs,
12096
12150
  filePath: container.env.configPath
12097
12151
  });
12098
- if (!flags.dryRun) {
12099
- await container.writeApiKey(normalized);
12100
- }
12101
12152
  await reconfigureServices({
12102
12153
  program,
12103
12154
  container,
12104
- apiKey: normalized,
12155
+ apiKey,
12105
12156
  configuredServices
12106
12157
  });
12107
12158
  resources.context.complete({
@@ -12119,66 +12170,6 @@ async function executeLogin(program, container, options) {
12119
12170
  throw error2;
12120
12171
  }
12121
12172
  }
12122
- async function resolveApiKeyInput(container, options) {
12123
- if (options.apiKey) {
12124
- return options.apiKey;
12125
- }
12126
- const envKey = container.env.getVariable("POE_API_KEY");
12127
- if (envKey && envKey.trim().length > 0) {
12128
- return envKey;
12129
- }
12130
- if (container.env.getVariable("POE_CODE_OAUTH_LOGIN") === "1") {
12131
- return resolveApiKeyViaOAuth();
12132
- }
12133
- const descriptor = container.promptLibrary.loginApiKey();
12134
- const response = await container.prompts(descriptor);
12135
- const value = response[descriptor.name];
12136
- if (typeof value !== "string" || value.trim() === "") {
12137
- throw new ValidationError("POE API key is required.", {
12138
- operation: "login",
12139
- field: "apiKey"
12140
- });
12141
- }
12142
- return value;
12143
- }
12144
- async function resolveApiKeyViaOAuth() {
12145
- const rl = readline.createInterface({
12146
- input: process.stdin
12147
- });
12148
- try {
12149
- const client = createOAuthClient({
12150
- clientId: "client_f520ee4d8ca84a13ba876a8731d264d0",
12151
- authorizationEndpoint: "https://poe.com/oauth/authorize",
12152
- tokenEndpoint: "https://api.poe.com/token",
12153
- openBrowser: (url2) => openInBrowser(url2).catch(() => {
12154
- log2.warn("Could not open browser automatically.");
12155
- }),
12156
- readLine: () => new Promise((resolve) => {
12157
- rl.once("line", (line) => resolve(line));
12158
- })
12159
- });
12160
- const authorization = await client.authorize();
12161
- log2.message(`${text.muted("Authorize at")} ${text.link(authorization.authorizationUrl)}`);
12162
- log2.message(text.muted("Waiting for authorization. You can also paste the redirect URL here:"));
12163
- const result = await authorization.waitForResult();
12164
- return result.apiKey;
12165
- } finally {
12166
- rl.close();
12167
- }
12168
- }
12169
- function openInBrowser(url2) {
12170
- return new Promise((resolve, reject) => {
12171
- const platform = process.platform;
12172
- const command = platform === "darwin" ? `open "${url2}"` : platform === "win32" ? `start "" "${url2}"` : `xdg-open "${url2}"`;
12173
- exec2(command, (error2) => {
12174
- if (error2) {
12175
- reject(error2);
12176
- } else {
12177
- resolve();
12178
- }
12179
- });
12180
- });
12181
- }
12182
12173
  async function reconfigureServices(input) {
12183
12174
  const { program, container, apiKey, configuredServices } = input;
12184
12175
  const serviceNames = Object.keys(configuredServices);
@@ -12232,10 +12223,7 @@ var init_login = __esm({
12232
12223
  "use strict";
12233
12224
  init_shared();
12234
12225
  init_config();
12235
- init_errors();
12236
12226
  init_mutation_events();
12237
- init_src();
12238
- init_src4();
12239
12227
  }
12240
12228
  });
12241
12229
 
@@ -38596,7 +38584,7 @@ var init_package = __esm({
38596
38584
  "package.json"() {
38597
38585
  package_default = {
38598
38586
  name: "poe-code",
38599
- version: "3.0.88",
38587
+ version: "3.0.90",
38600
38588
  description: "CLI tool to configure Poe API for developer workflows.",
38601
38589
  type: "module",
38602
38590
  main: "./dist/index.js",