Skip to content

Commit e8e6130

Browse files
Merge pull request #1572 from corbitsdev/cl-11513-bump-the-corbitsoauth-core-pin-to-033-in-corbitscode
chore(deps): bump @corbits/oauth-core to 0.3.3 (CL-11513)
2 parents dd2b13e + c8744a7 commit e8e6130

7 files changed

Lines changed: 23 additions & 13 deletions

File tree

‎bun.lock‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
"@anthropic-ai/sandbox-runtime": "0.0.79",
9191
"@corbits/codex-provider": "0.1.3",
9292
"@corbits/meta-provider": "0.1.1",
93-
"@corbits/oauth-core": "0.3.2",
93+
"@corbits/oauth-core": "0.3.3",
9494
"@corbits/openai-responses": "0.2.2",
9595
"@corbits/xai-provider": "0.1.4",
9696
"@intx/agent": "workspace:*",

‎src/auth/codex/auth.test.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ describe("codexTokensFromResponse", () => {
9696
expect(tokens.refresh).toBe("old-refresh");
9797
});
9898

99-
test("throws when no refresh token is available anywhere", () => {
100-
expect(() => codexTokensFromResponse({ access_token: "a" }, 0)).toThrow(
101-
/refresh_token/,
102-
);
99+
test("omits refresh when no refresh token is available anywhere", () => {
100+
const tokens = codexTokensFromResponse({ access_token: "a" }, 0);
101+
expect(tokens.access).toBe("a");
102+
expect(tokens.refresh).toBeUndefined();
103103
});
104104

105105
test("falls back to a default lifetime when expires_in is absent", () => {

‎src/auth/codex/session-failure.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ describe("codex auth failure surface", () => {
106106
const auth = failure as CodexAuthError;
107107
const surfaced = authFailureSurface(auth);
108108
expect(surfaced).not.toContain(refresh);
109-
expect(surfaced).toContain("grant rejected");
109+
expect(surfaced).toContain("OAuth token endpoint returned 400");
110110
expect(surfaced).toContain("Re-authenticate");
111111
} finally {
112112
globalThis.fetch = originalFetch;

‎src/auth/meta/session.ts‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
createTokenSession,
33
isTokenExpired,
4+
OAuthMissingRefreshTokenError,
45
OAuthProfileNotFoundError,
56
OAuthRefreshFailedError,
67
type TokenSession,
@@ -145,11 +146,15 @@ export async function refreshStagedMetaTokens(
145146
now: number = Date.now(),
146147
): Promise<MetaOAuthTokens> {
147148
if (!isMetaTokenExpired(tokens, now)) return tokens;
149+
const refreshToken = tokens.refresh;
150+
if (refreshToken === undefined || refreshToken.trim().length === 0) {
151+
throw new OAuthMissingRefreshTokenError();
152+
}
148153
let refreshed: MetaOAuthTokens;
149154
try {
150-
refreshed = await refreshMetaTokens(tokens.refresh, now);
155+
refreshed = await refreshMetaTokens(refreshToken, now);
151156
} catch (error) {
152-
throw sanitizedRefreshFailure(error, tokens.refresh);
157+
throw sanitizedRefreshFailure(error, refreshToken);
153158
}
154159
replaceMutableTokens(tokens, refreshed);
155160
return tokens;

‎src/auth/provider-token-session.ts‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
createTokenSession,
33
isTokenExpired,
4+
OAuthMissingRefreshTokenError,
45
OAuthProfileNotFoundError,
56
OAuthRefreshFailedError,
67
type AuthProfile,
@@ -195,11 +196,15 @@ export function createProviderTokenSession<TTokens extends BaseTokens, TAccess>(
195196
},
196197
refreshStaged: async (tokens, now = Date.now()) => {
197198
if (!isExpired(tokens, now)) return tokens;
199+
const refreshToken = tokens.refresh;
200+
if (refreshToken === undefined || refreshToken.trim().length === 0) {
201+
throw new OAuthMissingRefreshTokenError();
202+
}
198203
let refreshed: TTokens;
199204
try {
200-
refreshed = await spec.refreshTokens(tokens.refresh, now, tokens);
205+
refreshed = await spec.refreshTokens(refreshToken, now, tokens);
201206
} catch (error) {
202-
throw sanitizedRefreshFailure(error, tokens.refresh);
207+
throw sanitizedRefreshFailure(error, refreshToken);
203208
}
204209
replaceMutableTokens(tokens, refreshed);
205210
return tokens;

‎src/auth/xai/session-refresh-race.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ describe("xAI shared-credential refresh race", () => {
235235
const auth = failure as XaiAuthError;
236236
const surfaced = authFailureSurface(auth);
237237
expect(surfaced).not.toContain(refresh);
238-
expect(surfaced).toContain("grant rejected");
238+
expect(surfaced).toContain("OAuth token endpoint returned 400");
239239
expect(surfaced).toContain("Re-authenticate");
240240
} finally {
241241
globalThis.fetch = originalFetch;

0 commit comments

Comments
 (0)