87 lines
3 KiB
JavaScript
87 lines
3 KiB
JavaScript
|
|
/**
|
||
|
|
* Grok CLI / Grok Build (cli-chat-proxy.grok.com)
|
||
|
|
*
|
||
|
|
* Source of truth: HAR capture of official grok-shell/grok-pager 0.2.93
|
||
|
|
* talking to https://cli-chat-proxy.grok.com (OpenAI Responses API).
|
||
|
|
*
|
||
|
|
* Distinct from:
|
||
|
|
* - `xai` → api.x.ai (API key / Grok Build OAuth PKCE)
|
||
|
|
* - `grok-web` → grok.com web SSO cookie
|
||
|
|
*/
|
||
|
|
export default {
|
||
|
|
id: "grok-cli",
|
||
|
|
priority: 275,
|
||
|
|
alias: "gcli",
|
||
|
|
aliases: ["grok-build", "gb"],
|
||
|
|
uiAlias: "gcli",
|
||
|
|
display: {
|
||
|
|
name: "Grok CLI (Grok Build)",
|
||
|
|
icon: "auto_awesome",
|
||
|
|
color: "#1DA1F2",
|
||
|
|
textIcon: "GC",
|
||
|
|
website: "https://x.ai",
|
||
|
|
notice: {
|
||
|
|
text: "Sign in with your xAI / Grok account via device code. Uses Grok Build subscription credits (cli-chat-proxy.grok.com).",
|
||
|
|
signupUrl: "https://grok.com/supergrok",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
category: "oauth",
|
||
|
|
authModes: ["oauth"],
|
||
|
|
hasOAuth: true,
|
||
|
|
thinkingConfig: {
|
||
|
|
options: ["low", "medium", "high"],
|
||
|
|
defaultMode: "high",
|
||
|
|
},
|
||
|
|
transport: {
|
||
|
|
baseUrl: "https://cli-chat-proxy.grok.com/v1/responses",
|
||
|
|
format: "openai-responses",
|
||
|
|
forceStream: true,
|
||
|
|
modelsUrl: "https://cli-chat-proxy.grok.com/v1/models",
|
||
|
|
userUrl: "https://cli-chat-proxy.grok.com/v1/user",
|
||
|
|
billingUrl: "https://cli-chat-proxy.grok.com/v1/billing",
|
||
|
|
clientVersion: "0.2.93",
|
||
|
|
clientIdentifier: "grok-pager",
|
||
|
|
tokenAuth: "xai-grok-cli",
|
||
|
|
headers: {
|
||
|
|
"User-Agent": "grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)",
|
||
|
|
"x-xai-token-auth": "xai-grok-cli",
|
||
|
|
"x-grok-client-identifier": "grok-pager",
|
||
|
|
"x-grok-client-version": "0.2.93",
|
||
|
|
"x-authenticateresponse": "authenticate-response",
|
||
|
|
},
|
||
|
|
// Compaction threshold mirrored from CLI (x-compaction-at)
|
||
|
|
compactionAt: 400000,
|
||
|
|
// Quota tracker: official CLI polls billing?format=credits + user?include=subscription
|
||
|
|
usage: {
|
||
|
|
url: "https://cli-chat-proxy.grok.com/v1/billing?format=credits",
|
||
|
|
userUrl: "https://cli-chat-proxy.grok.com/v1/user?include=subscription",
|
||
|
|
},
|
||
|
|
retry: {
|
||
|
|
429: { attempts: 2, delayMs: 2000 },
|
||
|
|
502: { attempts: 2, delayMs: 1500 },
|
||
|
|
503: { attempts: 2, delayMs: 1500 },
|
||
|
|
},
|
||
|
|
},
|
||
|
|
models: [
|
||
|
|
{ id: "grok-4.5", name: "Grok 4.5" },
|
||
|
|
{ id: "grok-4.5-high", name: "Grok 4.5 (High)", upstreamModelId: "grok-4.5" },
|
||
|
|
{ id: "grok-4.5-medium", name: "Grok 4.5 (Medium)", upstreamModelId: "grok-4.5" },
|
||
|
|
{ id: "grok-4.5-low", name: "Grok 4.5 (Low)", upstreamModelId: "grok-4.5" },
|
||
|
|
],
|
||
|
|
features: {
|
||
|
|
usage: true,
|
||
|
|
},
|
||
|
|
oauth: {
|
||
|
|
// Same public client_id as Grok CLI / existing xai OAuth
|
||
|
|
clientId: "b1a00492-073a-47ea-816f-4c329264a828",
|
||
|
|
deviceCodeUrl: "https://auth.x.ai/oauth2/device/code",
|
||
|
|
tokenUrl: "https://auth.x.ai/oauth2/token",
|
||
|
|
refreshUrl: "https://auth.x.ai/oauth2/token",
|
||
|
|
// HAR scope includes conversations read/write beyond the api-only xai scope
|
||
|
|
scope:
|
||
|
|
"openid profile email offline_access grok-cli:access api:access conversations:read conversations:write",
|
||
|
|
referrer: "grok-build",
|
||
|
|
refreshLeadMs: 5 * 60 * 1000,
|
||
|
|
},
|
||
|
|
};
|