The Phoenix auth/identity/tenancy backend repo is being renamed arcadia-app → arcadia-core (its primary OTP app is already arcadia_core). Updates prose, doc paths, and git.sky-ai.com repo URLs. Deliberately leaves the Rust crate arcadia-app-client and host arcadia-app.internal (handled separately), and the kept namespace (issuer/release "arcadia"). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
// Arcadia LLM-gateway client.
|
|
//
|
|
// The integration registry lives on arcadia-llm-gateway, not arcadia-core, so
|
|
// it needs its own ArcadiaClient pointed at a different base URL. Everything
|
|
// else is identical to the arcadia-core client: the same access token (the
|
|
// gateway validates arcadia-core JWTs via the shared Guardian secret) and the
|
|
// same 401 cleanup. The gateway's CORS already allows localhost + any
|
|
// *.sky-ai.com origin, so the browser calls it directly.
|
|
|
|
import { createArcadiaClient, type ArcadiaClient } from "@crema/arcadia-core-client"
|
|
|
|
const GATEWAY_URL = import.meta.env.VITE_LLM_GATEWAY_URL ?? "http://localhost:4015"
|
|
|
|
const ACCESS_TOKEN_KEY = "arcadia_access_token"
|
|
const REFRESH_TOKEN_KEY = "arcadia_refresh_token"
|
|
|
|
let client: ArcadiaClient | null = null
|
|
|
|
export function gatewayClient(): ArcadiaClient {
|
|
if (!client) {
|
|
client = createArcadiaClient({
|
|
baseUrl: GATEWAY_URL,
|
|
getToken: () =>
|
|
typeof window === "undefined" ? null : sessionStorage.getItem(ACCESS_TOKEN_KEY),
|
|
onUnauthorized: () => {
|
|
if (typeof window !== "undefined") {
|
|
sessionStorage.removeItem(ACCESS_TOKEN_KEY)
|
|
sessionStorage.removeItem(REFRESH_TOKEN_KEY)
|
|
}
|
|
},
|
|
})
|
|
}
|
|
return client
|
|
}
|
|
|
|
export function useGatewayClient(): ArcadiaClient {
|
|
return gatewayClient()
|
|
}
|