@imricci/zaker 0.1.1 → 0.1.3
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.
- package/dist/commands/app-server.d.ts +67 -0
- package/dist/commands/app-server.js +601 -0
- package/dist/commands/app-server.js.map +1 -0
- package/dist/commands/audit.js +2 -1
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.js +22 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/confirm.d.ts +0 -2
- package/dist/commands/confirm.js +2 -16
- package/dist/commands/confirm.js.map +1 -1
- package/dist/commands/dialog-handlers/auth.d.ts +3 -0
- package/dist/commands/dialog-handlers/auth.js +174 -0
- package/dist/commands/dialog-handlers/auth.js.map +1 -0
- package/dist/commands/dialog-handlers/basic.d.ts +7 -0
- package/dist/commands/dialog-handlers/basic.js +82 -0
- package/dist/commands/dialog-handlers/basic.js.map +1 -0
- package/dist/commands/dialog-handlers/bootstrap.d.ts +10 -0
- package/dist/commands/dialog-handlers/bootstrap.js +38 -0
- package/dist/commands/dialog-handlers/bootstrap.js.map +1 -0
- package/dist/commands/dialog-handlers/index.d.ts +2 -0
- package/dist/commands/dialog-handlers/index.js +6 -0
- package/dist/commands/dialog-handlers/index.js.map +1 -0
- package/dist/commands/dialog-handlers/message.d.ts +2 -0
- package/dist/commands/dialog-handlers/message.js +103 -0
- package/dist/commands/dialog-handlers/message.js.map +1 -0
- package/dist/commands/dialog-handlers/model.d.ts +2 -0
- package/dist/commands/dialog-handlers/model.js +168 -0
- package/dist/commands/dialog-handlers/model.js.map +1 -0
- package/dist/commands/dialog-handlers/new.d.ts +2 -0
- package/dist/commands/dialog-handlers/new.js +53 -0
- package/dist/commands/dialog-handlers/new.js.map +1 -0
- package/dist/commands/dialog-handlers/resume.d.ts +2 -0
- package/dist/commands/dialog-handlers/resume.js +25 -0
- package/dist/commands/dialog-handlers/resume.js.map +1 -0
- package/dist/commands/dialog-handlers/router.d.ts +11 -0
- package/dist/commands/dialog-handlers/router.js +112 -0
- package/dist/commands/dialog-handlers/router.js.map +1 -0
- package/dist/commands/dialog-handlers/run.d.ts +2 -0
- package/dist/commands/dialog-handlers/run.js +161 -0
- package/dist/commands/dialog-handlers/run.js.map +1 -0
- package/dist/commands/dialog-handlers/status.d.ts +2 -0
- package/dist/commands/dialog-handlers/status.js +13 -0
- package/dist/commands/dialog-handlers/status.js.map +1 -0
- package/dist/commands/dialog-handlers/types.d.ts +107 -0
- package/dist/commands/dialog-handlers/types.js +3 -0
- package/dist/commands/dialog-handlers/types.js.map +1 -0
- package/dist/commands/dialog.d.ts +92 -0
- package/dist/commands/dialog.js +1784 -236
- package/dist/commands/dialog.js.map +1 -1
- package/dist/commands/init.d.ts +3 -1
- package/dist/commands/init.js +6 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.js +10 -6
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/run.js +8 -10
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/status.js +6 -12
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tui-launcher.d.ts +1 -0
- package/dist/commands/tui-launcher.js +8 -0
- package/dist/commands/tui-launcher.js.map +1 -0
- package/dist/core/alignment-reply.d.ts +1 -0
- package/dist/core/alignment-reply.js +44 -0
- package/dist/core/alignment-reply.js.map +1 -0
- package/dist/core/checkpoint.js +3 -1
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/core/planner.d.ts +16 -16
- package/dist/core/planner.js +3 -1
- package/dist/core/planner.js.map +1 -1
- package/dist/core/planning-prep.d.ts +12 -0
- package/dist/core/planning-prep.js +26 -0
- package/dist/core/planning-prep.js.map +1 -0
- package/dist/core/preflight.js +1 -2
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/provider-onboarding.js +6 -11
- package/dist/core/provider-onboarding.js.map +1 -1
- package/dist/core/readonly-checkpoint.d.ts +2 -0
- package/dist/core/readonly-checkpoint.js +35 -0
- package/dist/core/readonly-checkpoint.js.map +1 -0
- package/dist/core/run-loop.js +3 -1
- package/dist/core/run-loop.js.map +1 -1
- package/dist/core/types.d.ts +20 -1
- package/dist/index.js +20 -6
- package/dist/index.js.map +1 -1
- package/dist/infra/artifact-schema.d.ts +25 -0
- package/dist/infra/artifact-schema.js +353 -0
- package/dist/infra/artifact-schema.js.map +1 -0
- package/dist/infra/config.d.ts +14 -1
- package/dist/infra/config.js +542 -22
- package/dist/infra/config.js.map +1 -1
- package/dist/infra/dependency-report.d.ts +5 -0
- package/dist/infra/dependency-report.js +22 -0
- package/dist/infra/dependency-report.js.map +1 -0
- package/dist/infra/dialog-session.d.ts +29 -0
- package/dist/infra/dialog-session.js +244 -0
- package/dist/infra/dialog-session.js.map +1 -0
- package/dist/infra/intent.js +63 -13
- package/dist/infra/intent.js.map +1 -1
- package/dist/infra/model-accounts.d.ts +22 -0
- package/dist/infra/model-accounts.js +172 -0
- package/dist/infra/model-accounts.js.map +1 -0
- package/dist/infra/model-catalog.d.ts +4 -1
- package/dist/infra/model-catalog.js +102 -27
- package/dist/infra/model-catalog.js.map +1 -1
- package/dist/infra/openai-codex-oauth.d.ts +18 -0
- package/dist/infra/openai-codex-oauth.js +267 -0
- package/dist/infra/openai-codex-oauth.js.map +1 -0
- package/dist/infra/provider-registry.d.ts +36 -0
- package/dist/infra/provider-registry.js +403 -0
- package/dist/infra/provider-registry.js.map +1 -0
- package/dist/infra/session-status.d.ts +6 -0
- package/dist/infra/session-status.js +34 -0
- package/dist/infra/session-status.js.map +1 -0
- package/dist/infra/tui-utils.d.ts +6 -0
- package/dist/infra/tui-utils.js +163 -0
- package/dist/infra/tui-utils.js.map +1 -0
- package/dist/infra/tui-view.d.ts +44 -0
- package/dist/infra/tui-view.js +314 -0
- package/dist/infra/tui-view.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loginOpenAICodexOAuth = loginOpenAICodexOAuth;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_http_1 = require("node:http");
|
|
9
|
+
const execa_1 = __importDefault(require("execa"));
|
|
10
|
+
const CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
11
|
+
const AUTHORIZE_URL = "https://auth.openai.com/oauth/authorize";
|
|
12
|
+
const TOKEN_URL = "https://auth.openai.com/oauth/token";
|
|
13
|
+
const REDIRECT_URI = "http://localhost:1455/auth/callback";
|
|
14
|
+
const SCOPE = "openid profile email offline_access";
|
|
15
|
+
const CALLBACK_TIMEOUT_MS = 180000;
|
|
16
|
+
const SUCCESS_HTML = `<!doctype html>
|
|
17
|
+
<html lang="en">
|
|
18
|
+
<head>
|
|
19
|
+
<meta charset="utf-8" />
|
|
20
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
21
|
+
<title>Authentication successful</title>
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
<p>Authentication successful. Return to your terminal to continue.</p>
|
|
25
|
+
</body>
|
|
26
|
+
</html>`;
|
|
27
|
+
function toBase64Url(input) {
|
|
28
|
+
return input.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
29
|
+
}
|
|
30
|
+
function createPKCE() {
|
|
31
|
+
const verifier = toBase64Url((0, node_crypto_1.randomBytes)(32));
|
|
32
|
+
const challenge = toBase64Url((0, node_crypto_1.createHash)("sha256").update(verifier).digest());
|
|
33
|
+
return { verifier, challenge };
|
|
34
|
+
}
|
|
35
|
+
function createState() {
|
|
36
|
+
return (0, node_crypto_1.randomBytes)(16).toString("hex");
|
|
37
|
+
}
|
|
38
|
+
function buildAuthorizeUrl(verifier, state, originator) {
|
|
39
|
+
const challenge = toBase64Url((0, node_crypto_1.createHash)("sha256").update(verifier).digest());
|
|
40
|
+
const url = new URL(AUTHORIZE_URL);
|
|
41
|
+
url.searchParams.set("response_type", "code");
|
|
42
|
+
url.searchParams.set("client_id", CLIENT_ID);
|
|
43
|
+
url.searchParams.set("redirect_uri", REDIRECT_URI);
|
|
44
|
+
url.searchParams.set("scope", SCOPE);
|
|
45
|
+
url.searchParams.set("code_challenge", challenge);
|
|
46
|
+
url.searchParams.set("code_challenge_method", "S256");
|
|
47
|
+
url.searchParams.set("state", state);
|
|
48
|
+
url.searchParams.set("id_token_add_organizations", "true");
|
|
49
|
+
url.searchParams.set("codex_cli_simplified_flow", "true");
|
|
50
|
+
url.searchParams.set("originator", originator);
|
|
51
|
+
return url.toString();
|
|
52
|
+
}
|
|
53
|
+
function parseAuthorizationInput(input) {
|
|
54
|
+
const value = input.trim();
|
|
55
|
+
if (!value) {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const url = new URL(value);
|
|
60
|
+
return {
|
|
61
|
+
code: url.searchParams.get("code") ?? undefined,
|
|
62
|
+
state: url.searchParams.get("state") ?? undefined
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// continue with non-url parsing
|
|
67
|
+
}
|
|
68
|
+
if (value.includes("#")) {
|
|
69
|
+
const [code, state] = value.split("#", 2);
|
|
70
|
+
return {
|
|
71
|
+
code: code || undefined,
|
|
72
|
+
state: state || undefined
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (value.includes("code=")) {
|
|
76
|
+
const params = new URLSearchParams(value);
|
|
77
|
+
return {
|
|
78
|
+
code: params.get("code") ?? undefined,
|
|
79
|
+
state: params.get("state") ?? undefined
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
code: value
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function isAbortError(error) {
|
|
87
|
+
return !!error && typeof error === "object" && "name" in error && error.name === "AbortError";
|
|
88
|
+
}
|
|
89
|
+
async function exchangeAuthorizationCode(code, verifier, abortSignal) {
|
|
90
|
+
try {
|
|
91
|
+
const response = await fetch(TOKEN_URL, {
|
|
92
|
+
method: "POST",
|
|
93
|
+
headers: {
|
|
94
|
+
"content-type": "application/x-www-form-urlencoded"
|
|
95
|
+
},
|
|
96
|
+
body: new URLSearchParams({
|
|
97
|
+
grant_type: "authorization_code",
|
|
98
|
+
client_id: CLIENT_ID,
|
|
99
|
+
code,
|
|
100
|
+
code_verifier: verifier,
|
|
101
|
+
redirect_uri: REDIRECT_URI
|
|
102
|
+
}),
|
|
103
|
+
signal: abortSignal
|
|
104
|
+
});
|
|
105
|
+
if (!response.ok) {
|
|
106
|
+
const text = await response.text().catch(() => "");
|
|
107
|
+
throw new Error(`OpenAI OAuth token exchange failed (${response.status}): ${text || "empty response"}`);
|
|
108
|
+
}
|
|
109
|
+
const payload = (await response.json());
|
|
110
|
+
if (!payload.access_token || !payload.refresh_token || typeof payload.expires_in !== "number") {
|
|
111
|
+
throw new Error("OpenAI OAuth token exchange returned invalid payload.");
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
access_token: payload.access_token,
|
|
115
|
+
refresh_token: payload.refresh_token,
|
|
116
|
+
expires_at: Date.now() + payload.expires_in * 1000
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (isAbortError(error)) {
|
|
121
|
+
throw new Error("OpenAI OAuth cancelled by user.");
|
|
122
|
+
}
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function openBrowser(url) {
|
|
127
|
+
if (process.platform === "darwin") {
|
|
128
|
+
await (0, execa_1.default)("open", [url], { reject: false, stdio: "ignore" });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (process.platform === "win32") {
|
|
132
|
+
await (0, execa_1.default)("cmd", ["/c", "start", "", url], { reject: false, stdio: "ignore", windowsHide: true });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
await (0, execa_1.default)("xdg-open", [url], { reject: false, stdio: "ignore" });
|
|
136
|
+
}
|
|
137
|
+
async function waitForCallbackCode(state, timeoutMs, abortSignal) {
|
|
138
|
+
return await new Promise((resolve) => {
|
|
139
|
+
let done = false;
|
|
140
|
+
let timer;
|
|
141
|
+
const sockets = new Set();
|
|
142
|
+
let server = null;
|
|
143
|
+
const handleAbort = () => {
|
|
144
|
+
finish(null);
|
|
145
|
+
};
|
|
146
|
+
const finish = (code) => {
|
|
147
|
+
if (done) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
done = true;
|
|
151
|
+
if (timer) {
|
|
152
|
+
clearTimeout(timer);
|
|
153
|
+
}
|
|
154
|
+
if (abortSignal) {
|
|
155
|
+
abortSignal.removeEventListener("abort", handleAbort);
|
|
156
|
+
}
|
|
157
|
+
for (const socket of sockets) {
|
|
158
|
+
socket.destroy();
|
|
159
|
+
}
|
|
160
|
+
sockets.clear();
|
|
161
|
+
if (server) {
|
|
162
|
+
try {
|
|
163
|
+
server.close();
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// ignore close races
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
resolve(code);
|
|
170
|
+
};
|
|
171
|
+
server = (0, node_http_1.createServer)((req, res) => {
|
|
172
|
+
try {
|
|
173
|
+
const requestUrl = new URL(req.url || "", "http://127.0.0.1:1455");
|
|
174
|
+
if (requestUrl.pathname !== "/auth/callback") {
|
|
175
|
+
res.statusCode = 404;
|
|
176
|
+
res.end("Not found");
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const callbackState = requestUrl.searchParams.get("state");
|
|
180
|
+
if (callbackState !== state) {
|
|
181
|
+
res.statusCode = 400;
|
|
182
|
+
res.end("State mismatch");
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const code = requestUrl.searchParams.get("code");
|
|
186
|
+
if (!code) {
|
|
187
|
+
res.statusCode = 400;
|
|
188
|
+
res.end("Missing authorization code");
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
res.statusCode = 200;
|
|
192
|
+
res.setHeader("content-type", "text/html; charset=utf-8");
|
|
193
|
+
res.end(SUCCESS_HTML);
|
|
194
|
+
finish(code);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
res.statusCode = 500;
|
|
198
|
+
res.end("Internal error");
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
server.on("connection", (socket) => {
|
|
202
|
+
sockets.add(socket);
|
|
203
|
+
socket.on("close", () => {
|
|
204
|
+
sockets.delete(socket);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
server.on("error", () => {
|
|
208
|
+
finish(null);
|
|
209
|
+
});
|
|
210
|
+
if (abortSignal?.aborted) {
|
|
211
|
+
finish(null);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (abortSignal) {
|
|
215
|
+
abortSignal.addEventListener("abort", handleAbort, { once: true });
|
|
216
|
+
}
|
|
217
|
+
server.listen(1455, "127.0.0.1");
|
|
218
|
+
timer = setTimeout(() => {
|
|
219
|
+
finish(null);
|
|
220
|
+
}, timeoutMs);
|
|
221
|
+
timer.unref?.();
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
async function loginOpenAICodexOAuth(options) {
|
|
225
|
+
const verifier = createPKCE().verifier;
|
|
226
|
+
const state = createState();
|
|
227
|
+
const authUrl = buildAuthorizeUrl(verifier, state, options.originator || "pi");
|
|
228
|
+
const timeoutMs = options.timeout_ms || CALLBACK_TIMEOUT_MS;
|
|
229
|
+
await options.onAuth?.({
|
|
230
|
+
url: authUrl,
|
|
231
|
+
instructions: "A browser window should open. Complete login to finish."
|
|
232
|
+
});
|
|
233
|
+
if (options.open_browser !== false) {
|
|
234
|
+
await options.onProgress?.("Opening browser for OpenAI OAuth...");
|
|
235
|
+
try {
|
|
236
|
+
await openBrowser(authUrl);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
await options.onProgress?.("Browser auto-open failed. Continue with manual flow.");
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
await options.onProgress?.("Waiting for OpenAI OAuth callback...");
|
|
243
|
+
let code = await waitForCallbackCode(state, timeoutMs, options.abort_signal);
|
|
244
|
+
if (!code) {
|
|
245
|
+
if (options.abort_signal?.aborted) {
|
|
246
|
+
throw new Error("OpenAI OAuth cancelled by user.");
|
|
247
|
+
}
|
|
248
|
+
const manualInput = (await options.onPrompt("OAuth callback not received. Paste authorization code or redirect URL (Enter cancel):")).trim();
|
|
249
|
+
if (!manualInput) {
|
|
250
|
+
throw new Error("OpenAI OAuth cancelled by user.");
|
|
251
|
+
}
|
|
252
|
+
if (manualInput === "/exit") {
|
|
253
|
+
throw new Error("OpenAI OAuth cancelled by /exit.");
|
|
254
|
+
}
|
|
255
|
+
const parsed = parseAuthorizationInput(manualInput);
|
|
256
|
+
if (parsed.state && parsed.state !== state) {
|
|
257
|
+
throw new Error("OpenAI OAuth state mismatch.");
|
|
258
|
+
}
|
|
259
|
+
code = parsed.code ?? null;
|
|
260
|
+
}
|
|
261
|
+
if (!code) {
|
|
262
|
+
throw new Error("OpenAI OAuth missing authorization code.");
|
|
263
|
+
}
|
|
264
|
+
await options.onProgress?.("Exchanging authorization code for access token...");
|
|
265
|
+
return await exchangeAuthorizationCode(code, verifier, options.abort_signal);
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=openai-codex-oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-codex-oauth.js","sourceRoot":"","sources":["../../src/infra/openai-codex-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type AuthMode = "api_key" | "oauth";
|
|
2
|
+
export declare const BUILTIN_PROVIDER_IDS: readonly ["amazon-bedrock", "anthropic", "azure-openai-responses", "cerebras", "github-copilot", "google", "google-antigravity", "google-gemini-cli", "google-vertex", "groq", "huggingface", "kimi-coding", "minimax", "minimax-cn", "mistral", "openai", "openai-codex", "opencode", "openrouter", "vercel-ai-gateway", "xai", "zai"];
|
|
3
|
+
export declare const PI_PROVIDER_IDS: readonly ["amazon-bedrock", "anthropic", "azure-openai-responses", "cerebras", "github-copilot", "google", "google-antigravity", "google-gemini-cli", "google-vertex", "groq", "huggingface", "kimi-coding", "minimax", "minimax-cn", "mistral", "openai", "openai-codex", "opencode", "openrouter", "vercel-ai-gateway", "xai", "zai"];
|
|
4
|
+
export type BuiltinProviderId = (typeof BUILTIN_PROVIDER_IDS)[number];
|
|
5
|
+
export type PiProviderId = BuiltinProviderId;
|
|
6
|
+
export type ModelProviderId = "mock" | "http" | BuiltinProviderId;
|
|
7
|
+
export declare const MODEL_PROVIDER_IDS: readonly ["mock", "http", "amazon-bedrock", "anthropic", "azure-openai-responses", "cerebras", "github-copilot", "google", "google-antigravity", "google-gemini-cli", "google-vertex", "groq", "huggingface", "kimi-coding", "minimax", "minimax-cn", "mistral", "openai", "openai-codex", "opencode", "openrouter", "vercel-ai-gateway", "xai", "zai"];
|
|
8
|
+
export interface ProviderDefinition {
|
|
9
|
+
id: BuiltinProviderId;
|
|
10
|
+
default_model: string;
|
|
11
|
+
static_models: string[];
|
|
12
|
+
auth_modes: AuthMode[];
|
|
13
|
+
api_key_env: string;
|
|
14
|
+
oauth_token_env?: string;
|
|
15
|
+
default_endpoint?: string;
|
|
16
|
+
catalog_strategy: "openai_models" | "static";
|
|
17
|
+
}
|
|
18
|
+
export declare function getModelProviderIds(): ModelProviderId[];
|
|
19
|
+
export declare function getPiProviderIds(): PiProviderId[];
|
|
20
|
+
export declare function isPiProviderId(value: string): value is PiProviderId;
|
|
21
|
+
export declare function isBuiltinProviderId(value: string): value is BuiltinProviderId;
|
|
22
|
+
export declare function isModelProviderId(value: string): value is ModelProviderId;
|
|
23
|
+
export declare function toCanonicalModelProviderId(value: string): ModelProviderId;
|
|
24
|
+
export declare function toLoginProviderId(value: string): ModelProviderId;
|
|
25
|
+
export declare function getProviderDefinition(provider: ModelProviderId): ProviderDefinition | null;
|
|
26
|
+
export declare function resolveProviderDefaultModel(provider: ModelProviderId): string;
|
|
27
|
+
export declare function resolveProviderStaticCatalog(provider: ModelProviderId): string[];
|
|
28
|
+
export declare function providerSupportsOAuth(provider: ModelProviderId): boolean;
|
|
29
|
+
export declare function resolveProviderApiKeyEnv(provider: ModelProviderId, authMode?: AuthMode): string;
|
|
30
|
+
export declare function resolveProviderEndpoint(provider: ModelProviderId, explicitEndpoint?: string): string | undefined;
|
|
31
|
+
export declare function resolveProviderCatalogStrategy(provider: ModelProviderId): "openai_models" | "static";
|
|
32
|
+
export declare function buildLoginCommandTemplates(): string[];
|
|
33
|
+
export declare function isLoginProviderToken(token: string): boolean;
|
|
34
|
+
export declare function buildLoginProviderCommandTemplates(): string[];
|
|
35
|
+
export declare function buildLoginModeCommandTemplates(providerToken: string): string[];
|
|
36
|
+
export declare function buildLogoutCommandTemplates(): string[];
|