@oharness/engine 0.10.0 → 0.12.0

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 (118) hide show
  1. package/dist/acp/claude.d.ts +34 -0
  2. package/dist/acp/claude.js +122 -0
  3. package/dist/acp/claude.js.map +1 -0
  4. package/dist/acp/client.d.ts +193 -0
  5. package/dist/acp/client.js +279 -0
  6. package/dist/acp/client.js.map +1 -0
  7. package/dist/acp/runner.d.ts +80 -0
  8. package/dist/acp/runner.js +159 -0
  9. package/dist/acp/runner.js.map +1 -0
  10. package/dist/agent/agent.d.ts +51 -1
  11. package/dist/agent/agent.js +322 -1
  12. package/dist/agent/agent.js.map +1 -1
  13. package/dist/agent/hooks.js +6 -6
  14. package/dist/agent/hooks.js.map +1 -1
  15. package/dist/agent/session.d.ts +2 -0
  16. package/dist/agent/session.js +19 -2
  17. package/dist/agent/session.js.map +1 -1
  18. package/dist/agent/skills.d.ts +16 -3
  19. package/dist/agent/skills.js +36 -2
  20. package/dist/agent/skills.js.map +1 -1
  21. package/dist/agent/subagent.d.ts +24 -2
  22. package/dist/agent/subagent.js +76 -16
  23. package/dist/agent/subagent.js.map +1 -1
  24. package/dist/auth/index.d.ts +3 -1
  25. package/dist/auth/index.js +3 -1
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/manager.js +4 -0
  28. package/dist/auth/manager.js.map +1 -1
  29. package/dist/auth/oauth.d.ts +33 -0
  30. package/dist/auth/oauth.js +59 -8
  31. package/dist/auth/oauth.js.map +1 -1
  32. package/dist/auth/providers/anthropic.d.ts +25 -5
  33. package/dist/auth/providers/anthropic.js +47 -6
  34. package/dist/auth/providers/anthropic.js.map +1 -1
  35. package/dist/auth/providers/chatgpt.d.ts +8 -0
  36. package/dist/auth/providers/chatgpt.js +180 -0
  37. package/dist/auth/providers/chatgpt.js.map +1 -0
  38. package/dist/auth/providers/openrouter.d.ts +2 -0
  39. package/dist/auth/providers/openrouter.js +101 -0
  40. package/dist/auth/providers/openrouter.js.map +1 -0
  41. package/dist/auth/types.d.ts +15 -0
  42. package/dist/auth/types.js.map +1 -1
  43. package/dist/browser/index.d.ts +1 -1
  44. package/dist/browser/plugin.d.ts +6 -1
  45. package/dist/browser/plugin.js.map +1 -1
  46. package/dist/browser/session.d.ts +47 -0
  47. package/dist/browser/session.js +177 -2
  48. package/dist/browser/session.js.map +1 -1
  49. package/dist/browser/tools.js +139 -18
  50. package/dist/browser/tools.js.map +1 -1
  51. package/dist/computer/cua-driver.d.ts +60 -1
  52. package/dist/computer/cua-driver.js +149 -5
  53. package/dist/computer/cua-driver.js.map +1 -1
  54. package/dist/computer/helper-client.d.ts +3 -1
  55. package/dist/computer/helper-client.js +3 -0
  56. package/dist/computer/helper-client.js.map +1 -1
  57. package/dist/computer/index.d.ts +3 -2
  58. package/dist/computer/index.js +1 -1
  59. package/dist/computer/index.js.map +1 -1
  60. package/dist/computer/mode.d.ts +15 -0
  61. package/dist/computer/mode.js +11 -1
  62. package/dist/computer/mode.js.map +1 -1
  63. package/dist/computer/session.d.ts +36 -7
  64. package/dist/computer/session.js +118 -17
  65. package/dist/computer/session.js.map +1 -1
  66. package/dist/computer/target.d.ts +19 -0
  67. package/dist/computer/target.js.map +1 -1
  68. package/dist/computer/tools.js +135 -8
  69. package/dist/computer/tools.js.map +1 -1
  70. package/dist/config.d.ts +16 -0
  71. package/dist/config.js +2 -0
  72. package/dist/config.js.map +1 -1
  73. package/dist/foreign.d.ts +81 -0
  74. package/dist/foreign.js +198 -0
  75. package/dist/foreign.js.map +1 -0
  76. package/dist/harness.d.ts +79 -0
  77. package/dist/harness.js +241 -17
  78. package/dist/harness.js.map +1 -1
  79. package/dist/mcp/manager.d.ts +15 -0
  80. package/dist/mcp/manager.js +28 -1
  81. package/dist/mcp/manager.js.map +1 -1
  82. package/dist/mcp/registry.d.ts +2 -0
  83. package/dist/mcp/registry.js +1 -0
  84. package/dist/mcp/registry.js.map +1 -1
  85. package/dist/mcp/registry.json +394 -1
  86. package/dist/paths.d.ts +19 -0
  87. package/dist/paths.js +38 -0
  88. package/dist/paths.js.map +1 -1
  89. package/dist/plugin-market.d.ts +57 -0
  90. package/dist/plugin-market.js +229 -0
  91. package/dist/plugin-market.js.map +1 -0
  92. package/dist/plugin-market.json +1246 -0
  93. package/dist/plugins.d.ts +49 -2
  94. package/dist/plugins.js +252 -10
  95. package/dist/plugins.js.map +1 -1
  96. package/dist/providers/catalog.json +14 -3
  97. package/dist/providers/models-dev.d.ts +15 -0
  98. package/dist/providers/models-dev.js +14 -0
  99. package/dist/providers/models-dev.js.map +1 -1
  100. package/dist/providers/piai.d.ts +38 -1
  101. package/dist/providers/piai.js +70 -2
  102. package/dist/providers/piai.js.map +1 -1
  103. package/dist/providers/registry.d.ts +16 -1
  104. package/dist/providers/registry.js +42 -11
  105. package/dist/providers/registry.js.map +1 -1
  106. package/dist/runtime-plugins/builtin/studio.d.ts +7 -0
  107. package/dist/runtime-plugins/builtin/studio.js +69 -4
  108. package/dist/runtime-plugins/builtin/studio.js.map +1 -1
  109. package/dist/tools/builtin/bash.js +6 -10
  110. package/dist/tools/builtin/bash.js.map +1 -1
  111. package/dist/util/shell.d.ts +30 -0
  112. package/dist/util/shell.js +70 -0
  113. package/dist/util/shell.js.map +1 -1
  114. package/dist/util/toml.d.ts +22 -0
  115. package/dist/util/toml.js +305 -0
  116. package/dist/util/toml.js.map +1 -0
  117. package/package.json +4 -4
  118. package/skills/media-generation/SKILL.md +22 -1
@@ -267,14 +267,30 @@ export async function startLoopbackFlow(opts) {
267
267
  };
268
268
  }
269
269
  async function listenForCode(expectedState) {
270
+ const { server, port, waitForCallback } = await listenForCallback({ state: expectedState });
271
+ return { server, port, waitForCode: waitForCallback.then((params) => params.get("code")) };
272
+ }
273
+ /**
274
+ * A one-shot loopback listener for an OAuth redirect.
275
+ *
276
+ * Resolves with the redirect's whole query rather than only the code, because
277
+ * some vendors hand back more than a code there — Sign in with ChatGPT issues
278
+ * the client id on the same redirect.
279
+ */
280
+ export async function listenForCallback(opts) {
270
281
  let resolveCode;
271
282
  let rejectCode;
272
- const waitForCode = new Promise((resolve, reject) => {
283
+ const waitForCallback = new Promise((resolve, reject) => {
273
284
  resolveCode = resolve;
274
285
  rejectCode = reject;
275
286
  });
287
+ const expectedState = opts.state;
276
288
  const server = createServer((req, res) => {
277
289
  const requestUrl = new URL(req.url ?? "/", "http://127.0.0.1");
290
+ if (opts.path && requestUrl.pathname !== opts.path) {
291
+ res.writeHead(404).end();
292
+ return;
293
+ }
278
294
  const code = requestUrl.searchParams.get("code");
279
295
  const state = requestUrl.searchParams.get("state");
280
296
  const error = requestUrl.searchParams.get("error");
@@ -289,7 +305,7 @@ async function listenForCode(expectedState) {
289
305
  rejectCode(new Error(`authorization failed: ${error}`));
290
306
  return;
291
307
  }
292
- if (state !== expectedState) {
308
+ if (expectedState !== null && state !== expectedState) {
293
309
  reply(400, "State mismatch — the login may have been tampered with. Please retry.");
294
310
  rejectCode(new Error("state mismatch"));
295
311
  return;
@@ -298,13 +314,17 @@ async function listenForCode(expectedState) {
298
314
  reply(400, "No authorization code was returned.");
299
315
  return;
300
316
  }
301
- reply(200, "You can close this tab and return to the terminal.");
302
- resolveCode(code);
317
+ reply(200, "You can close this tab and return to OHarness.");
318
+ resolveCode(requestUrl.searchParams);
303
319
  });
304
320
  await new Promise((resolve, reject) => {
305
- server.once("error", reject);
321
+ server.once("error", (err) => {
322
+ reject(err.code === "EADDRINUSE" && opts.port
323
+ ? new Error(`port ${opts.port} is in use — finish or cancel the other sign-in using it, then retry`)
324
+ : err);
325
+ });
306
326
  // Port 0 lets the OS pick a free port; 127.0.0.1 keeps it off the network.
307
- server.listen(0, "127.0.0.1", resolve);
327
+ server.listen(opts.port ?? 0, "127.0.0.1", resolve);
308
328
  });
309
329
  const address = server.address();
310
330
  // Don't leave a listener open forever if the user abandons the browser.
@@ -315,8 +335,39 @@ async function listenForCode(expectedState) {
315
335
  server.close();
316
336
  }, 5 * 60_000);
317
337
  timeout.unref?.();
318
- waitForCode.finally(() => clearTimeout(timeout)).catch(() => { });
319
- return { server, port: address.port, waitForCode };
338
+ waitForCallback.finally(() => clearTimeout(timeout)).catch(() => { });
339
+ let delivered = false;
340
+ const deliver = (input) => {
341
+ if (delivered)
342
+ return "this sign-in has already finished";
343
+ const trimmed = input.trim();
344
+ let params;
345
+ try {
346
+ const url = new URL(trimmed);
347
+ if (opts.path && url.pathname !== opts.path)
348
+ return `that is not this sign-in's address — it should end in ${opts.path}`;
349
+ params = url.searchParams;
350
+ }
351
+ catch {
352
+ // A bare code is enough only where no state is checked; otherwise the
353
+ // whole address is what proves the redirect is ours.
354
+ if (expectedState !== null || !/^[\w.~-]+$/.test(trimmed))
355
+ return "paste the whole address the browser ended on";
356
+ params = new URLSearchParams({ code: trimmed });
357
+ }
358
+ const error = params.get("error");
359
+ if (error)
360
+ return `the provider returned: ${error}`;
361
+ if (expectedState !== null && params.get("state") !== expectedState)
362
+ return "that address is from a different sign-in — start again";
363
+ if (!params.get("code"))
364
+ return "that address carries no authorization code";
365
+ delivered = true;
366
+ resolveCode(params);
367
+ server.close();
368
+ return undefined;
369
+ };
370
+ return { server, port: address.port, waitForCallback, deliver };
320
371
  }
321
372
  function escapeHtml(value) {
322
373
  return value.replace(/[&<>"']/g, (ch) => ch === "&" ? "&amp;" : ch === "<" ? "&lt;" : ch === ">" ? "&gt;" : ch === '"' ? "&quot;" : "&#39;");
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,36 @@ import type { AuthProvider } from "../types.ts";
2
2
  /**
3
3
  * Anthropic authentication.
4
4
  *
5
- * Subscription/OAuth support here deliberately piggybacks on the official
6
- * `ant` CLI rather than reimplementing a login flow: `ant auth login` already
7
- * runs the browser flow, stores a profile under the Anthropic config
8
- * directory, and refreshes tokens. Re-deriving that with a hardcoded client id
9
- * would mean impersonating another application's OAuth registration.
5
+ * OAuth support here deliberately piggybacks on the official `ant` CLI rather
6
+ * than reimplementing a login flow: `ant auth login` already runs the browser
7
+ * flow, stores a profile under the Anthropic config directory, and refreshes
8
+ * tokens. Re-deriving that with a hardcoded client id would mean impersonating
9
+ * another application's OAuth registration.
10
+ *
11
+ * What it is not is a way onto a Claude Pro/Max plan. Anthropic reserves
12
+ * subscription logins for Claude Code and claude.ai and asks products to use
13
+ * API keys, so nothing here presents itself as Claude Code to get one through
14
+ * — the wire layer refuses to (`wireCredential` in providers/piai.ts). The
15
+ * method is labelled for what it is: a login through Anthropic's own CLI,
16
+ * billed however that login is billed.
10
17
  *
11
18
  * Credential precedence matches the documented SDK chain, first match wins:
12
19
  * ANTHROPIC_API_KEY → ANTHROPIC_AUTH_TOKEN → ant profile → stored API key
13
20
  */
14
21
  export declare const anthropicAuth: AuthProvider;
22
+ /**
23
+ * Why Anthropic would refuse this key, if it would.
24
+ *
25
+ * Asked at the moment of pasting because nothing else asks: Anthropic's
26
+ * models are not discovered from the API, so a key with a missing character
27
+ * was stored without complaint and failed on the first message instead. The
28
+ * model listing is the check because it costs nothing and needs no model id.
29
+ *
30
+ * Only a definite refusal stops the save. A network failure or an outage says
31
+ * nothing about the key, and refusing to store one because the machine is
32
+ * offline would make "connect" depend on a third party being up.
33
+ */
34
+ export declare function anthropicKeyRefusal(key: string): Promise<string | undefined>;
15
35
  /** Sentinel meaning "the credential lives in the ant profile, go ask it". */
16
36
  export declare const ANT_PROFILE_MARKER = "__ant_cli_profile__";
17
37
  /**
@@ -14,11 +14,18 @@ const OAUTH_BETA = "oauth-2025-04-20";
14
14
  /**
15
15
  * Anthropic authentication.
16
16
  *
17
- * Subscription/OAuth support here deliberately piggybacks on the official
18
- * `ant` CLI rather than reimplementing a login flow: `ant auth login` already
19
- * runs the browser flow, stores a profile under the Anthropic config
20
- * directory, and refreshes tokens. Re-deriving that with a hardcoded client id
21
- * would mean impersonating another application's OAuth registration.
17
+ * OAuth support here deliberately piggybacks on the official `ant` CLI rather
18
+ * than reimplementing a login flow: `ant auth login` already runs the browser
19
+ * flow, stores a profile under the Anthropic config directory, and refreshes
20
+ * tokens. Re-deriving that with a hardcoded client id would mean impersonating
21
+ * another application's OAuth registration.
22
+ *
23
+ * What it is not is a way onto a Claude Pro/Max plan. Anthropic reserves
24
+ * subscription logins for Claude Code and claude.ai and asks products to use
25
+ * API keys, so nothing here presents itself as Claude Code to get one through
26
+ * — the wire layer refuses to (`wireCredential` in providers/piai.ts). The
27
+ * method is labelled for what it is: a login through Anthropic's own CLI,
28
+ * billed however that login is billed.
22
29
  *
23
30
  * Credential precedence matches the documented SDK chain, first match wins:
24
31
  * ANTHROPIC_API_KEY → ANTHROPIC_AUTH_TOKEN → ant profile → stored API key
@@ -40,10 +47,15 @@ export const anthropicAuth = {
40
47
  validate: (value) => value.startsWith("sk-ant-") ? undefined : "expected a key starting with sk-ant-",
41
48
  },
42
49
  ],
50
+ async authorize(answers) {
51
+ const key = (answers["key"] ?? "").trim();
52
+ const refusal = await anthropicKeyRefusal(key);
53
+ return refusal ? { type: "failed", error: refusal } : { type: "success", key };
54
+ },
43
55
  },
44
56
  {
45
57
  type: "api",
46
- label: "Subscription via the `ant` CLI (run `ant auth login` first)",
58
+ label: "Anthropic CLI login (run `ant auth login` first)",
47
59
  // No prompts: the credential lives in the ant profile, we just verify it.
48
60
  async authorize() {
49
61
  const token = await antAccessToken();
@@ -104,6 +116,35 @@ export const anthropicAuth = {
104
116
  return undefined;
105
117
  },
106
118
  };
119
+ /**
120
+ * Why Anthropic would refuse this key, if it would.
121
+ *
122
+ * Asked at the moment of pasting because nothing else asks: Anthropic's
123
+ * models are not discovered from the API, so a key with a missing character
124
+ * was stored without complaint and failed on the first message instead. The
125
+ * model listing is the check because it costs nothing and needs no model id.
126
+ *
127
+ * Only a definite refusal stops the save. A network failure or an outage says
128
+ * nothing about the key, and refusing to store one because the machine is
129
+ * offline would make "connect" depend on a third party being up.
130
+ */
131
+ export async function anthropicKeyRefusal(key) {
132
+ const base = (process.env["ANTHROPIC_BASE_URL"] ?? "https://api.anthropic.com").replace(/\/+$/, "");
133
+ let response;
134
+ try {
135
+ response = await fetch(`${base}/v1/models?limit=1`, {
136
+ headers: { "x-api-key": key, "anthropic-version": "2023-06-01" },
137
+ signal: AbortSignal.timeout(10_000),
138
+ });
139
+ }
140
+ catch {
141
+ return undefined;
142
+ }
143
+ if (response.status === 401 || response.status === 403) {
144
+ return `Anthropic refused this key (HTTP ${response.status}). Check it was copied whole and has not been revoked.`;
145
+ }
146
+ return undefined;
147
+ }
107
148
  /** Sentinel meaning "the credential lives in the ant profile, go ask it". */
108
149
  export const ANT_PROFILE_MARKER = "__ant_cli_profile__";
109
150
  function apiKeyAuth(key, source) {
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/auth/providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/auth/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AuthProvider } from "../types.ts";
2
+ /**
3
+ * A stable id for this installation, which OpenAI asks for as the "agent
4
+ * host". Written once and kept, so signing in again from the same machine is
5
+ * recognisably the same host rather than a new one each time.
6
+ */
7
+ export declare function installationId(): Promise<string>;
8
+ export declare const chatgptAuth: AuthProvider;
@@ -0,0 +1,180 @@
1
+ import { randomBytes, randomUUID } from "node:crypto";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { userPath } from "../../paths.js";
5
+ import { createPkce, exchangeToken, listenForCallback } from "../oauth.js";
6
+ import { isExpired } from "../types.js";
7
+ /**
8
+ * Sign in with ChatGPT: a ChatGPT Plus/Pro plan, used on the OpenAI API.
9
+ *
10
+ * This is OpenAI's own flow for third-party agents, and it sits beside the
11
+ * `openai-codex` provider, which reads the Codex CLI's credential file. The
12
+ * difference that matters is whose login it is. That route uses a token
13
+ * issued to the Codex CLI — logging in with its client id would mean claiming
14
+ * to be Codex, so it only ever reads what `codex login` wrote. Here nothing is
15
+ * borrowed: every login registers a fresh client (`dynamic_agent_client`),
16
+ * names this app in `agent_name_hint` so the consent screen says who is
17
+ * asking, and OpenAI hands back the client id it issued on the redirect.
18
+ *
19
+ * The token is a user access token for `api.openai.com/v1` — the ordinary
20
+ * Responses API, not the Codex backend — scoped `chatgpt.tokens.use.direct`.
21
+ * It is ours, so unlike the Codex copy it is refreshed here: no other process
22
+ * holds the refresh token, and OpenAI rotating it on use invalidates nothing
23
+ * but the copy this store replaces.
24
+ */
25
+ const AUTHORIZE_URL = "https://auth.openai.com/api/accounts/authorize";
26
+ const TOKEN_URL = "https://auth.openai.com/api/accounts/oauth/token";
27
+ /** RFC 8707 resource: the API the token is for, required on every grant. */
28
+ const RESOURCE = "https://api.openai.com/v1";
29
+ /** Every login registers a new client; OpenAI issues its id on the redirect. */
30
+ const DYNAMIC_CLIENT_ID = "dynamic_agent_client";
31
+ const AGENT_NAME = "OHarness";
32
+ /**
33
+ * The redirect OpenAI accepts for dynamically registered agents: one fixed
34
+ * loopback address, so this port is not ours to choose. The Codex CLI uses it
35
+ * too, which is why a login it left open makes this one fail to start.
36
+ */
37
+ const CALLBACK_PORT = 1455;
38
+ const CALLBACK_PATH = "/auth/callback";
39
+ const REDIRECT_URI = `http://127.0.0.1:${CALLBACK_PORT}${CALLBACK_PATH}`;
40
+ const DIRECT_SCOPE = "chatgpt.tokens.use.direct";
41
+ const SCOPE = `openid profile email offline_access resource.invoke ${DIRECT_SCOPE}`;
42
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
43
+ /**
44
+ * A stable id for this installation, which OpenAI asks for as the "agent
45
+ * host". Written once and kept, so signing in again from the same machine is
46
+ * recognisably the same host rather than a new one each time.
47
+ */
48
+ export async function installationId() {
49
+ const file = userPath("installation-id");
50
+ try {
51
+ const existing = (await readFile(file, "utf8")).trim();
52
+ if (UUID.test(existing))
53
+ return existing.toLowerCase();
54
+ }
55
+ catch {
56
+ // Not written yet.
57
+ }
58
+ const id = randomUUID();
59
+ await mkdir(path.dirname(file), { recursive: true });
60
+ await writeFile(file, `${id}\n`, { mode: 0o600 });
61
+ return id;
62
+ }
63
+ /**
64
+ * The credential fields from a token response, checked for the one scope the
65
+ * whole flow exists to get. A grant without it signs the user in to nothing
66
+ * this provider can call, so it fails here rather than as a 401 mid-turn.
67
+ */
68
+ function credentialFrom(token, clientId) {
69
+ if (!token.refresh_token)
70
+ throw new Error("OpenAI returned no refresh token");
71
+ const scopes = typeof token.scope === "string" ? token.scope.split(/\s+/) : [];
72
+ if (!scopes.includes(DIRECT_SCOPE))
73
+ throw new Error(`OpenAI did not grant ${DIRECT_SCOPE}`);
74
+ return {
75
+ access: token.access_token,
76
+ refresh: token.refresh_token,
77
+ expires: token.expires_in ? Date.now() + token.expires_in * 1_000 : 0,
78
+ // Needed to refresh: the client was registered for this login alone.
79
+ metadata: { clientId },
80
+ };
81
+ }
82
+ async function signIn() {
83
+ const hostId = `urn:uuid:${await installationId()}`;
84
+ const pkce = createPkce();
85
+ const state = randomBytes(32).toString("base64url");
86
+ const { server, waitForCallback, deliver } = await listenForCallback({
87
+ port: CALLBACK_PORT,
88
+ path: CALLBACK_PATH,
89
+ state,
90
+ });
91
+ const url = new URL(AUTHORIZE_URL);
92
+ url.search = new URLSearchParams({
93
+ client_id: DYNAMIC_CLIENT_ID,
94
+ agent_name_hint: AGENT_NAME,
95
+ ext_agent_host_id: hostId,
96
+ response_type: "code",
97
+ redirect_uri: REDIRECT_URI,
98
+ resource: RESOURCE,
99
+ scope: SCOPE,
100
+ state,
101
+ code_challenge: pkce.challenge,
102
+ code_challenge_method: "S256",
103
+ nonce: randomBytes(32).toString("base64url"),
104
+ }).toString();
105
+ return {
106
+ method: "auto",
107
+ url: url.toString(),
108
+ instructions: "Sign in with ChatGPT in your browser; this continues on its own.",
109
+ paste: deliver,
110
+ async callback() {
111
+ try {
112
+ const params = await waitForCallback;
113
+ const clientId = params.get("client_id")?.trim();
114
+ if (!clientId)
115
+ return { type: "failed", error: "OpenAI's redirect carried no client id" };
116
+ const token = await exchangeToken({
117
+ tokenUrl: TOKEN_URL,
118
+ clientId,
119
+ params: {
120
+ grant_type: "authorization_code",
121
+ code: params.get("code"),
122
+ code_verifier: pkce.verifier,
123
+ redirect_uri: REDIRECT_URI,
124
+ resource: RESOURCE,
125
+ },
126
+ });
127
+ return { type: "success", ...credentialFrom(token, clientId) };
128
+ }
129
+ catch (err) {
130
+ return { type: "failed", error: err instanceof Error ? err.message : String(err) };
131
+ }
132
+ finally {
133
+ server.close();
134
+ // Browsers keep spare connections open, and one of them can carry a
135
+ // later login's redirect into this dead server.
136
+ server.closeAllConnections();
137
+ }
138
+ },
139
+ };
140
+ }
141
+ export const chatgptAuth = {
142
+ id: "chatgpt",
143
+ label: "ChatGPT",
144
+ methods: [
145
+ {
146
+ type: "oauth",
147
+ label: "Sign in with ChatGPT",
148
+ browser: true,
149
+ authorize: signIn,
150
+ },
151
+ ],
152
+ async loader(credential) {
153
+ if (credential?.type !== "oauth" || isExpired(credential))
154
+ return undefined;
155
+ return {
156
+ headers: { authorization: `Bearer ${credential.access}` },
157
+ source: "stored:oauth",
158
+ };
159
+ },
160
+ async refresh(credential) {
161
+ const clientId = credential.metadata?.["clientId"];
162
+ if (!clientId) {
163
+ throw new Error("this ChatGPT login predates the client id it needs to renew — sign in again");
164
+ }
165
+ const token = await exchangeToken({
166
+ tokenUrl: TOKEN_URL,
167
+ clientId,
168
+ params: {
169
+ grant_type: "refresh_token",
170
+ refresh_token: credential.refresh,
171
+ resource: RESOURCE,
172
+ },
173
+ });
174
+ return { type: "oauth", ...credentialFrom(token, clientId) };
175
+ },
176
+ async discover() {
177
+ return undefined;
178
+ },
179
+ };
180
+ //# sourceMappingURL=chatgpt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../../src/auth/providers/chatgpt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AuthProvider } from "../types.ts";
2
+ export declare const openrouterAuth: AuthProvider;
@@ -0,0 +1,101 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { createPkce, listenForCallback } from "../oauth.js";
3
+ import { parseJson } from "../../util/json.js";
4
+ /**
5
+ * OpenRouter, with a sign-in that ends in an ordinary key.
6
+ *
7
+ * OpenRouter's OAuth is a public PKCE flow built for apps like this one: no
8
+ * client id to register, and what the code is exchanged for is not an
9
+ * expiring token but a permanent API key the user owns, can see and can
10
+ * revoke on openrouter.ai. So the sign-in is only a way of not copying a key
11
+ * by hand — the result is stored and sent exactly as a pasted key would be,
12
+ * and spends the user's own OpenRouter credits.
13
+ */
14
+ const AUTHORIZE_URL = "https://openrouter.ai/auth";
15
+ const KEY_URL = "https://openrouter.ai/api/v1/auth/keys";
16
+ const ENV_VAR = "OPENROUTER_API_KEY";
17
+ async function exchangeForKey(code, verifier) {
18
+ const response = await fetch(KEY_URL, {
19
+ method: "POST",
20
+ headers: { accept: "application/json", "content-type": "application/json" },
21
+ body: JSON.stringify({ code, code_verifier: verifier, code_challenge_method: "S256" }),
22
+ });
23
+ const text = await response.text();
24
+ const parsed = parseJson(text);
25
+ if (!response.ok) {
26
+ const error = parsed.ok ? parsed.value.error : undefined;
27
+ const detail = typeof error === "string" ? error : (error?.message ?? text.slice(0, 200));
28
+ throw new Error(`OpenRouter refused the sign-in (${response.status}): ${detail}`);
29
+ }
30
+ const key = parsed.ok ? parsed.value.key : undefined;
31
+ if (typeof key !== "string" || !key)
32
+ throw new Error("OpenRouter returned no key");
33
+ return key;
34
+ }
35
+ async function signIn() {
36
+ const pkce = createPkce();
37
+ // A path nobody can guess stands in for the state OpenRouter does not echo
38
+ // back; the PKCE verifier is what actually ties the code to this login.
39
+ const path = `/callback/${randomUUID()}`;
40
+ const { server, port, waitForCallback, deliver } = await listenForCallback({ path, state: null });
41
+ const url = new URL(AUTHORIZE_URL);
42
+ url.search = new URLSearchParams({
43
+ callback_url: `http://127.0.0.1:${port}${path}`,
44
+ code_challenge: pkce.challenge,
45
+ code_challenge_method: "S256",
46
+ }).toString();
47
+ return {
48
+ method: "auto",
49
+ url: url.toString(),
50
+ instructions: "Sign in to OpenRouter in your browser; this continues on its own.",
51
+ paste: deliver,
52
+ async callback() {
53
+ try {
54
+ const params = await waitForCallback;
55
+ const key = await exchangeForKey(params.get("code"), pkce.verifier);
56
+ return { type: "success", key, metadata: { source: "oauth" } };
57
+ }
58
+ catch (err) {
59
+ return { type: "failed", error: err instanceof Error ? err.message : String(err) };
60
+ }
61
+ finally {
62
+ server.close();
63
+ server.closeAllConnections();
64
+ }
65
+ },
66
+ };
67
+ }
68
+ function bearer(key, source) {
69
+ return { headers: { authorization: `Bearer ${key}` }, source };
70
+ }
71
+ export const openrouterAuth = {
72
+ id: "openrouter",
73
+ label: "OpenRouter",
74
+ methods: [
75
+ {
76
+ type: "oauth",
77
+ label: "Sign in with OpenRouter",
78
+ browser: true,
79
+ authorize: signIn,
80
+ },
81
+ {
82
+ type: "api",
83
+ label: "API key",
84
+ prompts: [{ type: "text", key: "key", message: "OpenRouter API key", placeholder: "sk-or-…", secret: true }],
85
+ },
86
+ ],
87
+ async loader(credential) {
88
+ const envKey = process.env[ENV_VAR];
89
+ if (envKey)
90
+ return bearer(envKey, `env:${ENV_VAR}`);
91
+ if (credential?.type === "api") {
92
+ return bearer(credential.key, credential.metadata?.["source"] === "oauth" ? "stored:oauth" : "stored:api");
93
+ }
94
+ return undefined;
95
+ },
96
+ async discover() {
97
+ const envKey = process.env[ENV_VAR];
98
+ return envKey ? { credential: { type: "api", key: envKey }, source: `env:${ENV_VAR}` } : undefined;
99
+ },
100
+ };
101
+ //# sourceMappingURL=openrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/auth/providers/openrouter.ts"],"names":[],"mappings":"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"}