feat: implement Anthropic API client with simulation support and add PocketBase configuration with session expiry handling
This commit is contained in:
@@ -46,6 +46,12 @@ export const anthropicApi = {
|
|||||||
throw new Error(`API Error: ${response.status} ${response.statusText} - ${JSON.stringify(errData)}`);
|
throw new Error(`API Error: ${response.status} ${response.statusText} - ${JSON.stringify(errData)}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Detect auth portal session expiry: the portal returns HTML instead of JSON
|
||||||
|
const contentType = response.headers.get('content-type') || '';
|
||||||
|
if (!contentType.includes('application/json')) {
|
||||||
|
throw new Error('Your session has expired. Please refresh the page and log in again.');
|
||||||
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
return data.content[0].text;
|
return data.content[0].text;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -4,3 +4,13 @@ const pbUrl = import.meta.env.VITE_PB_URL ||
|
|||||||
(typeof window !== 'undefined' ? window.location.origin : 'http://localhost:8090');
|
(typeof window !== 'undefined' ? window.location.origin : 'http://localhost:8090');
|
||||||
|
|
||||||
export const pb = new PocketBase(pbUrl);
|
export const pb = new PocketBase(pbUrl);
|
||||||
|
|
||||||
|
// Detect auth portal session expiry: the portal returns HTML instead of JSON.
|
||||||
|
// This prevents cryptic "Unexpected token '<'" errors when the session expires.
|
||||||
|
pb.afterSend = function (response, data) {
|
||||||
|
const contentType = response.headers.get('content-type') || '';
|
||||||
|
if (contentType.includes('text/html')) {
|
||||||
|
throw new Error('Your session has expired. Please refresh the page and log in again.');
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user