patchwork-os 1.2.0-beta.2.canary.593 → 1.2.0-beta.2.canary.594
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/dist/claudeAuthHttp.d.ts +16 -0
- package/dist/claudeAuthHttp.js +61 -2
- package/dist/claudeAuthHttp.js.map +1 -1
- package/package.json +1 -1
package/dist/claudeAuthHttp.d.ts
CHANGED
|
@@ -20,6 +20,22 @@
|
|
|
20
20
|
* CLAUDE_CODE_OAUTH_TOKEN=<token> so the subprocess driver works.
|
|
21
21
|
*/
|
|
22
22
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
23
|
+
/**
|
|
24
|
+
* Turn whatever the user pasted into `{ code, state }`.
|
|
25
|
+
*
|
|
26
|
+
* Anthropic's callback page renders the value as `<code>#<state>`, and users
|
|
27
|
+
* variously paste that verbatim, paste just the code, or paste the entire
|
|
28
|
+
* callback URL out of the address bar. All three must work.
|
|
29
|
+
*
|
|
30
|
+
* `state` matters: /v1/oauth/token rejects a body without it as
|
|
31
|
+
* `invalid_request_error / "Invalid request format"` — verified against the
|
|
32
|
+
* live endpoint 2026-08-12. Sending only `code` failed for every user, which
|
|
33
|
+
* is why the flow never worked regardless of what was pasted.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parsePastedAuthCode(raw: string): {
|
|
36
|
+
code: string;
|
|
37
|
+
state?: string;
|
|
38
|
+
};
|
|
23
39
|
export declare function handleClaudeAuthStart(_req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
24
40
|
export declare function handleClaudeAuthComplete(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
25
41
|
export declare function handleClaudeAuthCancel(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
package/dist/claudeAuthHttp.js
CHANGED
|
@@ -23,7 +23,13 @@ import { createHash, randomBytes } from "node:crypto";
|
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
24
24
|
// Constants (extracted from the claude binary via strings analysis)
|
|
25
25
|
// ---------------------------------------------------------------------------
|
|
26
|
-
|
|
26
|
+
// Claude Code's public OAuth client id. It must be a UUID: claude.ai's
|
|
27
|
+
// /oauth/authorize rejects a non-UUID client_id ("Input should be a valid
|
|
28
|
+
// UUID") and renders an "OAuth Request Failed" page, so the client-metadata
|
|
29
|
+
// URL that used to live here made the flow unreachable before the user could
|
|
30
|
+
// even approve. Public by design — an OAuth public client id is an
|
|
31
|
+
// identifier, not a secret; PKCE is what protects the exchange.
|
|
32
|
+
const CLAUDE_OAUTH_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
27
33
|
const CLAUDE_OAUTH_AUTH_URL = "https://claude.com/cai/oauth/authorize";
|
|
28
34
|
const CLAUDE_OAUTH_TOKEN_URL = "https://api.anthropic.com/v1/oauth/token";
|
|
29
35
|
const CLAUDE_OAUTH_REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
|
|
@@ -56,6 +62,45 @@ function deriveCodeChallenge(verifier) {
|
|
|
56
62
|
return createHash("sha256").update(verifier).digest("base64url");
|
|
57
63
|
}
|
|
58
64
|
// ---------------------------------------------------------------------------
|
|
65
|
+
// Pasted-value normalisation
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
/**
|
|
68
|
+
* Turn whatever the user pasted into `{ code, state }`.
|
|
69
|
+
*
|
|
70
|
+
* Anthropic's callback page renders the value as `<code>#<state>`, and users
|
|
71
|
+
* variously paste that verbatim, paste just the code, or paste the entire
|
|
72
|
+
* callback URL out of the address bar. All three must work.
|
|
73
|
+
*
|
|
74
|
+
* `state` matters: /v1/oauth/token rejects a body without it as
|
|
75
|
+
* `invalid_request_error / "Invalid request format"` — verified against the
|
|
76
|
+
* live endpoint 2026-08-12. Sending only `code` failed for every user, which
|
|
77
|
+
* is why the flow never worked regardless of what was pasted.
|
|
78
|
+
*/
|
|
79
|
+
export function parsePastedAuthCode(raw) {
|
|
80
|
+
const trimmed = raw.trim();
|
|
81
|
+
// Full callback URL — pull code/state out of the query string.
|
|
82
|
+
if (/^https?:\/\//i.test(trimmed)) {
|
|
83
|
+
try {
|
|
84
|
+
const url = new URL(trimmed);
|
|
85
|
+
const code = url.searchParams.get("code")?.trim();
|
|
86
|
+
const state = url.searchParams.get("state")?.trim();
|
|
87
|
+
if (code)
|
|
88
|
+
return { code, state: state || undefined };
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Not a parseable URL — fall through to the `#` handling below.
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// `<code>#<state>` — the shape the callback page displays.
|
|
95
|
+
const hash = trimmed.indexOf("#");
|
|
96
|
+
if (hash !== -1) {
|
|
97
|
+
const code = trimmed.slice(0, hash).trim();
|
|
98
|
+
const state = trimmed.slice(hash + 1).trim();
|
|
99
|
+
return { code, state: state || undefined };
|
|
100
|
+
}
|
|
101
|
+
return { code: trimmed };
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
59
104
|
// Body reader (reuse the same pattern as the bridge's other POST handlers)
|
|
60
105
|
// ---------------------------------------------------------------------------
|
|
61
106
|
async function readBody(req) {
|
|
@@ -157,6 +202,19 @@ export async function handleClaudeAuthComplete(req, res) {
|
|
|
157
202
|
// Audit 2026-06-08 HIGH (auth-1): bound the fetch with an AbortController so a
|
|
158
203
|
// slow/hung Anthropic endpoint can't keep the HTTP connection + session open
|
|
159
204
|
// indefinitely. Map an abort to a 504 (distinct from a 502 network error).
|
|
205
|
+
// The pasted value may be `<code>#<state>`, a bare code, or the whole
|
|
206
|
+
// callback URL. Fall back to the session id for `state` — that is what we
|
|
207
|
+
// put in the authorize URL, so it round-trips correctly when the user pasted
|
|
208
|
+
// only the code half.
|
|
209
|
+
const { code: authCode, state: pastedState } = parsePastedAuthCode(code);
|
|
210
|
+
if (!authCode) {
|
|
211
|
+
jsonReply(res, 400, {
|
|
212
|
+
error: "missing_fields",
|
|
213
|
+
detail: "sessionId and code required",
|
|
214
|
+
});
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const authState = pastedState ?? session.sessionId;
|
|
160
218
|
let tokenRes;
|
|
161
219
|
const controller = new AbortController();
|
|
162
220
|
const timeout = setTimeout(() => controller.abort(), TOKEN_EXCHANGE_TIMEOUT_MS);
|
|
@@ -167,7 +225,8 @@ export async function handleClaudeAuthComplete(req, res) {
|
|
|
167
225
|
body: new URLSearchParams({
|
|
168
226
|
grant_type: "authorization_code",
|
|
169
227
|
client_id: CLAUDE_OAUTH_CLIENT_ID,
|
|
170
|
-
code:
|
|
228
|
+
code: authCode,
|
|
229
|
+
state: authState,
|
|
171
230
|
redirect_uri: CLAUDE_OAUTH_REDIRECT_URI,
|
|
172
231
|
code_verifier: session.codeVerifier,
|
|
173
232
|
}).toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeAuthHttp.js","sourceRoot":"","sources":["../src/claudeAuthHttp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGtD,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"claudeAuthHttp.js","sourceRoot":"","sources":["../src/claudeAuthHttp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "patchwork-os",
|
|
3
|
-
"version": "1.2.0-beta.2.canary.
|
|
3
|
+
"version": "1.2.0-beta.2.canary.594",
|
|
4
4
|
"description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|