@ccpocket/bridge 1.11.1 → 1.13.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.
@@ -0,0 +1,37 @@
1
+ import { EventEmitter } from "node:events";
2
+ export type ClaudeAuthLoginState = "idle" | "starting" | "waiting_browser" | "waiting_code" | "authorizing" | "success" | "error" | "cancelled";
3
+ export interface ClaudeAuthSnapshot {
4
+ authenticated: boolean;
5
+ source?: "api_key" | "oauth" | "none";
6
+ loginInProgress: boolean;
7
+ state: ClaudeAuthLoginState;
8
+ message?: string;
9
+ errorCode?: string;
10
+ loginUrl?: string;
11
+ prompt?: string;
12
+ }
13
+ interface ClaudeAuthLoginEvents {
14
+ update: [ClaudeAuthSnapshot];
15
+ }
16
+ export declare class ClaudeAuthLoginManager extends EventEmitter<ClaudeAuthLoginEvents> {
17
+ private child;
18
+ private snapshot;
19
+ private recentOutput;
20
+ private cancelled;
21
+ private authPollTimer;
22
+ getStatus(): Promise<ClaudeAuthSnapshot>;
23
+ start(): Promise<ClaudeAuthSnapshot>;
24
+ submitCode(code: string): ClaudeAuthSnapshot;
25
+ cancel(): ClaudeAuthSnapshot;
26
+ private spawnLoginProcess;
27
+ private handleChunk;
28
+ private handleExit;
29
+ private startPolling;
30
+ private stopPolling;
31
+ private pollForCompletion;
32
+ private lastRelevantLine;
33
+ private snapshotFromStatus;
34
+ private finish;
35
+ private update;
36
+ }
37
+ export {};
@@ -0,0 +1,249 @@
1
+ import { EventEmitter } from "node:events";
2
+ import { spawn } from "node:child_process";
3
+ import { getClaudeAuthStatus } from "./usage.js";
4
+ const URL_REGEX = /https:\/\/[^\s"'<>]+/g;
5
+ const ANSI_REGEX = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g;
6
+ function stripAnsi(text) {
7
+ return text.replaceAll(ANSI_REGEX, "");
8
+ }
9
+ function isWaitingForCode(text) {
10
+ return /paste.*code|enter.*code|verification code|one[- ]time code|authorization code/i.test(text);
11
+ }
12
+ function isSuccessful(text) {
13
+ return /login successful|logged in|authentication complete|successfully authenticated/i.test(text);
14
+ }
15
+ export class ClaudeAuthLoginManager extends EventEmitter {
16
+ child = null;
17
+ snapshot = {
18
+ authenticated: false,
19
+ source: "none",
20
+ loginInProgress: false,
21
+ state: "idle",
22
+ message: "Claude Code is not authenticated.",
23
+ errorCode: "auth_login_required",
24
+ };
25
+ recentOutput = "";
26
+ cancelled = false;
27
+ authPollTimer = null;
28
+ async getStatus() {
29
+ if (this.child) {
30
+ return this.snapshot;
31
+ }
32
+ const status = await getClaudeAuthStatus();
33
+ this.snapshot = this.snapshotFromStatus(status);
34
+ return this.snapshot;
35
+ }
36
+ async start() {
37
+ if (this.child) {
38
+ return this.snapshot;
39
+ }
40
+ this.cancelled = false;
41
+ this.recentOutput = "";
42
+ this.stopPolling();
43
+ this.update({
44
+ authenticated: false,
45
+ source: "none",
46
+ loginInProgress: true,
47
+ state: "starting",
48
+ message: "Starting Claude Code login on the Bridge machine...",
49
+ });
50
+ this.child = this.spawnLoginProcess();
51
+ this.child.stdout.on("data", (chunk) => this.handleChunk(chunk.toString("utf-8")));
52
+ this.child.stderr.on("data", (chunk) => this.handleChunk(chunk.toString("utf-8")));
53
+ this.child.on("error", (err) => {
54
+ this.finish({
55
+ authenticated: false,
56
+ source: "none",
57
+ loginInProgress: false,
58
+ state: "error",
59
+ message: `Failed to start claude auth login: ${err.message}`,
60
+ errorCode: "auth_api_error",
61
+ });
62
+ });
63
+ this.child.on("exit", () => {
64
+ void this.handleExit();
65
+ });
66
+ this.startPolling();
67
+ return this.snapshot;
68
+ }
69
+ submitCode(code) {
70
+ if (!this.child) {
71
+ return this.snapshot;
72
+ }
73
+ this.child.stdin.write(`${code.trim()}\n`);
74
+ this.update({
75
+ ...this.snapshot,
76
+ loginInProgress: true,
77
+ state: "authorizing",
78
+ prompt: "Submitted code. Waiting for Claude Code to finish authentication...",
79
+ message: "Completing authentication...",
80
+ });
81
+ return this.snapshot;
82
+ }
83
+ cancel() {
84
+ if (!this.child) {
85
+ return this.snapshot;
86
+ }
87
+ this.cancelled = true;
88
+ this.child.kill("SIGTERM");
89
+ return this.snapshot;
90
+ }
91
+ spawnLoginProcess() {
92
+ return spawn("claude", ["auth", "login"], {
93
+ env: process.env,
94
+ stdio: "pipe",
95
+ });
96
+ }
97
+ handleChunk(rawChunk) {
98
+ const chunk = stripAnsi(rawChunk);
99
+ this.recentOutput = `${this.recentOutput}${chunk}`.slice(-8000);
100
+ const urls = chunk.match(URL_REGEX) ?? [];
101
+ const loginUrl = urls.length > 0 ? urls[0] : this.snapshot.loginUrl;
102
+ const lines = chunk
103
+ .split(/\r?\n/)
104
+ .map((line) => line.trim())
105
+ .filter((line) => line.length > 0);
106
+ const latestLine = lines.length > 0 ? lines[lines.length - 1] : undefined;
107
+ if (isSuccessful(chunk)) {
108
+ this.update({
109
+ ...this.snapshot,
110
+ loginInProgress: true,
111
+ state: "success",
112
+ loginUrl,
113
+ message: latestLine ?? "Claude Code authentication completed.",
114
+ prompt: undefined,
115
+ });
116
+ return;
117
+ }
118
+ if (isWaitingForCode(chunk)) {
119
+ this.update({
120
+ ...this.snapshot,
121
+ loginInProgress: true,
122
+ state: "waiting_code",
123
+ loginUrl,
124
+ prompt: latestLine ?? "Paste the verification code shown after browser authentication.",
125
+ message: "Waiting for verification code...",
126
+ });
127
+ return;
128
+ }
129
+ if (loginUrl && this.snapshot.loginUrl != loginUrl) {
130
+ this.update({
131
+ ...this.snapshot,
132
+ loginInProgress: true,
133
+ state: this.snapshot.state === "waiting_code" ? "waiting_code" : "waiting_browser",
134
+ loginUrl,
135
+ message: "Finish sign-in in your browser.",
136
+ prompt: "Open the login page and complete the browser flow. If Claude shows a verification code, return here and paste it.",
137
+ });
138
+ return;
139
+ }
140
+ if (latestLine != null &&
141
+ !latestLine.includes("http") &&
142
+ (this.snapshot.state === "starting" || this.snapshot.state === "waiting_browser")) {
143
+ this.update({
144
+ ...this.snapshot,
145
+ message: latestLine,
146
+ });
147
+ }
148
+ }
149
+ async handleExit() {
150
+ this.child = null;
151
+ this.stopPolling();
152
+ if (this.cancelled) {
153
+ this.finish({
154
+ authenticated: false,
155
+ source: "none",
156
+ loginInProgress: false,
157
+ state: "cancelled",
158
+ message: "Claude Code login was cancelled.",
159
+ errorCode: "auth_login_required",
160
+ loginUrl: this.snapshot.loginUrl,
161
+ });
162
+ return;
163
+ }
164
+ const status = await getClaudeAuthStatus();
165
+ if (status.authenticated) {
166
+ this.finish({
167
+ authenticated: true,
168
+ source: status.source,
169
+ loginInProgress: false,
170
+ state: "success",
171
+ message: "Claude Code is authenticated.",
172
+ });
173
+ return;
174
+ }
175
+ this.finish({
176
+ authenticated: false,
177
+ source: status.source,
178
+ loginInProgress: false,
179
+ state: "error",
180
+ loginUrl: this.snapshot.loginUrl,
181
+ prompt: this.snapshot.prompt,
182
+ message: status.message ?? this.lastRelevantLine() ?? "Claude Code authentication failed.",
183
+ errorCode: status.errorCode ?? "auth_api_error",
184
+ });
185
+ }
186
+ startPolling() {
187
+ if (this.authPollTimer) {
188
+ return;
189
+ }
190
+ this.authPollTimer = setInterval(() => {
191
+ void this.pollForCompletion();
192
+ }, 1500);
193
+ }
194
+ stopPolling() {
195
+ if (!this.authPollTimer) {
196
+ return;
197
+ }
198
+ clearInterval(this.authPollTimer);
199
+ this.authPollTimer = null;
200
+ }
201
+ async pollForCompletion() {
202
+ if (!this.child || this.cancelled) {
203
+ return;
204
+ }
205
+ try {
206
+ const status = await getClaudeAuthStatus();
207
+ if (!status.authenticated) {
208
+ return;
209
+ }
210
+ this.update({
211
+ authenticated: true,
212
+ source: status.source,
213
+ loginInProgress: false,
214
+ state: "success",
215
+ message: "Claude Code is authenticated.",
216
+ });
217
+ this.child.kill("SIGTERM");
218
+ }
219
+ catch {
220
+ // Ignore transient polling failures while the login process is still active.
221
+ }
222
+ }
223
+ lastRelevantLine() {
224
+ const lines = this.recentOutput
225
+ .split(/\r?\n/)
226
+ .map((line) => line.trim())
227
+ .filter((line) => line.length > 0);
228
+ return lines.length > 0 ? lines[lines.length - 1] : undefined;
229
+ }
230
+ snapshotFromStatus(status) {
231
+ return {
232
+ authenticated: status.authenticated,
233
+ source: status.source,
234
+ loginInProgress: false,
235
+ state: status.authenticated ? "success" : "idle",
236
+ message: status.message,
237
+ errorCode: status.errorCode,
238
+ };
239
+ }
240
+ finish(snapshot) {
241
+ this.snapshot = snapshot;
242
+ this.emit("update", this.snapshot);
243
+ }
244
+ update(snapshot) {
245
+ this.snapshot = snapshot;
246
+ this.emit("update", this.snapshot);
247
+ }
248
+ }
249
+ //# sourceMappingURL=claude-auth-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-auth-login.js","sourceRoot":"","sources":["../src/claude-auth-login.ts"],"names":[],"mappings":"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"}
package/dist/mdns.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare class MdnsAdvertiser {
2
2
  private bonjour;
3
3
  private service;
4
+ private disabled;
4
5
  start(port: number, apiKey?: string): void;
5
6
  stop(): void;
6
7
  }
package/dist/mdns.js CHANGED
@@ -2,9 +2,16 @@ import { Bonjour } from "bonjour-service";
2
2
  export class MdnsAdvertiser {
3
3
  bonjour = null;
4
4
  service = null;
5
+ disabled = false;
5
6
  start(port, apiKey) {
7
+ if (this.disabled)
8
+ return;
6
9
  try {
7
- this.bonjour = new Bonjour();
10
+ this.bonjour = new Bonjour({}, (err) => {
11
+ console.warn(`[bridge] mDNS: transport error (non-fatal): ${err.message}`);
12
+ this.disabled = true;
13
+ this.stop();
14
+ });
8
15
  this.service = this.bonjour.publish({
9
16
  name: "ccpocket-bridge",
10
17
  type: "ccpocket",
package/dist/mdns.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mdns.js","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,cAAc;IACjB,OAAO,GAAmB,IAAI,CAAC;IAC/B,OAAO,GAAmB,IAAI,CAAC;IAEvC,KAAK,CAAC,IAAY,EAAE,MAAe;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,KAAK;gBACf,IAAI;gBACJ,KAAK,EAAE,KAAK,EAAE,qDAAqD;gBACnE,GAAG,EAAE;oBACH,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;iBACnC;aACF,CAAC,CAAC;YACH,sEAAsE;YACtE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACtC,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,qDAAqD,IAAI,EAAE,CAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mDAAmD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5G,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"mdns.js","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,cAAc;IACjB,OAAO,GAAmB,IAAI,CAAC;IAC/B,OAAO,GAAmB,IAAI,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAAC;IAEzB,KAAK,CAAC,IAAY,EAAE,MAAe;QACjC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC5C,OAAO,CAAC,IAAI,CACV,+CAA+C,GAAG,CAAC,OAAO,EAAE,CAC7D,CAAC;gBACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,KAAK;gBACf,IAAI;gBACJ,KAAK,EAAE,KAAK,EAAE,qDAAqD;gBACnE,GAAG,EAAE;oBACH,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;iBACnC;aACF,CAAC,CAAC;YACH,sEAAsE;YACtE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACtC,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,qDAAqD,IAAI,EAAE,CAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mDAAmD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5G,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;CACF"}
package/dist/parser.d.ts CHANGED
@@ -190,6 +190,15 @@ export type ClientMessage = {
190
190
  includeDiff?: boolean;
191
191
  } | {
192
192
  type: "get_usage";
193
+ } | {
194
+ type: "get_claude_auth_status";
195
+ } | {
196
+ type: "start_claude_auth_login";
197
+ } | {
198
+ type: "submit_claude_auth_code";
199
+ code: string;
200
+ } | {
201
+ type: "cancel_claude_auth_login";
193
202
  } | {
194
203
  type: "list_recordings";
195
204
  } | {
@@ -285,6 +294,17 @@ export type ServerMessage = {
285
294
  } | {
286
295
  type: "error";
287
296
  message: string;
297
+ errorCode?: string;
298
+ } | {
299
+ type: "claude_auth_status";
300
+ authenticated: boolean;
301
+ source?: "api_key" | "oauth" | "none";
302
+ loginInProgress: boolean;
303
+ state: "idle" | "starting" | "waiting_browser" | "waiting_code" | "authorizing" | "success" | "error" | "cancelled";
304
+ message?: string;
305
+ errorCode?: string;
306
+ loginUrl?: string;
307
+ prompt?: string;
288
308
  } | {
289
309
  type: "status";
290
310
  status: ProcessStatus;
package/dist/parser.js CHANGED
@@ -205,6 +205,16 @@ export function parseClientMessage(data) {
205
205
  break;
206
206
  case "get_usage":
207
207
  break;
208
+ case "get_claude_auth_status":
209
+ break;
210
+ case "start_claude_auth_login":
211
+ break;
212
+ case "submit_claude_auth_code":
213
+ if (typeof msg.code !== "string" || msg.code.trim().length === 0)
214
+ return null;
215
+ break;
216
+ case "cancel_claude_auth_login":
217
+ break;
208
218
  case "list_recordings":
209
219
  break;
210
220
  case "get_recording":
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,18 @@ export declare function matchesSessionRule(toolName: string, input: Record<strin
26
26
  * Others: tool name only (e.g., "Edit")
27
27
  */
28
28
  export declare function buildSessionRule(toolName: string, input: Record<string, unknown>): string;
29
+ export type AuthErrorCode = "auth_login_required" | "auth_token_expired" | "auth_api_error";
30
+ export interface AuthCheckResult {
31
+ authenticated: boolean;
32
+ message?: string;
33
+ errorCode?: AuthErrorCode;
34
+ }
35
+ /**
36
+ * Build a user-friendly auth error result.
37
+ * The `message` field is designed to be helpful even without errorCode parsing
38
+ * (i.e. for older app versions that only display the raw message text).
39
+ */
40
+ export declare function buildAuthError(reason: "no_credentials" | "no_access_token" | "token_expired" | "general", detail?: string): AuthCheckResult;
29
41
  export interface StartOptions {
30
42
  sessionId?: string;
31
43
  continueMode?: boolean;
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync } from "node:fs";
2
2
  import { EventEmitter } from "node:events";
3
3
  import { query } from "@anthropic-ai/claude-agent-sdk";
4
4
  import { normalizeToolResultContent, } from "./parser.js";
5
- import { getClaudeOAuthCredentials, isTokenExpired, getValidClaudeAccessToken, } from "./usage.js";
5
+ import { getClaudeOAuthCredentials, isTokenExpired, getValidClaudeAccessToken, validateClaudeAccessToken, } from "./usage.js";
6
6
  // Tools that are auto-approved in acceptEdits mode
7
7
  export const ACCEPT_EDITS_AUTO_APPROVE = new Set([
8
8
  "Read", "Glob", "Grep",
@@ -95,6 +95,40 @@ export function buildSessionRule(toolName, input) {
95
95
  }
96
96
  return toolName;
97
97
  }
98
+ const AUTH_REMEDY = "Fix: Run this command in the terminal on the machine running Bridge:\n claude auth login";
99
+ /**
100
+ * Build a user-friendly auth error result.
101
+ * The `message` field is designed to be helpful even without errorCode parsing
102
+ * (i.e. for older app versions that only display the raw message text).
103
+ */
104
+ export function buildAuthError(reason, detail) {
105
+ switch (reason) {
106
+ case "no_credentials":
107
+ return {
108
+ authenticated: false,
109
+ errorCode: "auth_login_required",
110
+ message: `⚠ Claude Code authentication required\n\nClaude is not logged in on this machine.\nCredentials file not found (~/.claude/.credentials.json).\n\n${AUTH_REMEDY}`,
111
+ };
112
+ case "no_access_token":
113
+ return {
114
+ authenticated: false,
115
+ errorCode: "auth_login_required",
116
+ message: `⚠ Claude Code authentication required\n\nCredentials file exists but contains no access token.\n\n${AUTH_REMEDY}`,
117
+ };
118
+ case "token_expired":
119
+ return {
120
+ authenticated: false,
121
+ errorCode: "auth_token_expired",
122
+ message: `⚠ Claude Code session expired\n\nYour login session has expired and could not be refreshed automatically.\n\n${AUTH_REMEDY}`,
123
+ };
124
+ case "general":
125
+ return {
126
+ authenticated: false,
127
+ errorCode: "auth_api_error",
128
+ message: `⚠ Claude Code authentication failed\n\n${detail ?? "Unknown error"}\n\n${AUTH_REMEDY}`,
129
+ };
130
+ }
131
+ }
98
132
  /**
99
133
  * Check if Claude CLI is authenticated and ensure the access token is valid.
100
134
  * If the token is expired, automatically refreshes it using the refresh token.
@@ -108,24 +142,26 @@ async function checkClaudeAuth() {
108
142
  try {
109
143
  const creds = await getClaudeOAuthCredentials();
110
144
  if (!creds.accessToken) {
111
- return {
112
- authenticated: false,
113
- message: "Claude credentials found but no access token. Please run: claude auth login",
114
- };
145
+ return buildAuthError("no_access_token");
115
146
  }
116
147
  // If token is not expired, we're good
117
148
  if (!isTokenExpired(creds.expiresAt)) {
149
+ const validation = await validateClaudeAccessToken();
150
+ if (!validation.ok) {
151
+ return buildAuthError("general", validation.detail);
152
+ }
118
153
  return { authenticated: true };
119
154
  }
120
155
  // Token is expired — attempt refresh before starting the SDK
121
156
  console.log("[sdk-process] Access token expired, attempting refresh...");
122
157
  if (!creds.refreshToken) {
123
- return {
124
- authenticated: false,
125
- message: "Claude access token expired and no refresh token available. Please run: claude auth login",
126
- };
158
+ return buildAuthError("token_expired");
127
159
  }
128
160
  await getValidClaudeAccessToken();
161
+ const validation = await validateClaudeAccessToken();
162
+ if (!validation.ok) {
163
+ return buildAuthError("general", validation.detail);
164
+ }
129
165
  console.log("[sdk-process] Access token refreshed successfully");
130
166
  return { authenticated: true };
131
167
  }
@@ -133,15 +169,9 @@ async function checkClaudeAuth() {
133
169
  const detail = err instanceof Error ? err.message : String(err);
134
170
  // Distinguish between missing credentials and refresh failure
135
171
  if (detail.includes("not found")) {
136
- return {
137
- authenticated: false,
138
- message: "Claude credentials not found (~/.claude/.credentials.json). Please run: claude auth login",
139
- };
172
+ return buildAuthError("no_credentials");
140
173
  }
141
- return {
142
- authenticated: false,
143
- message: `Claude auth failed: ${detail}`,
144
- };
174
+ return buildAuthError("general", detail);
145
175
  }
146
176
  }
147
177
  /**
@@ -336,6 +366,7 @@ export class SdkProcess extends EventEmitter {
336
366
  this.emitMessage({
337
367
  type: "error",
338
368
  message: authCheck.message ?? "Claude is not authenticated. Please run: claude auth login",
369
+ ...(authCheck.errorCode ? { errorCode: authCheck.errorCode } : {}),
339
370
  });
340
371
  this.setStatus("idle");
341
372
  this.emit("exit", 1);