srpllm 1.2.5 → 1.2.7
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/cli.mjs +2 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs +2 -1
- package/dist/shared/{srpllm.CsoL3qR-.mjs → srpllm.BvbGqIfZ.mjs} +121 -7
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import cac from 'cac';
|
|
3
3
|
import ansis from 'ansis';
|
|
4
|
-
import { i as init, u as uninstall,
|
|
4
|
+
import { i as init, u as uninstall, P as version } from './shared/srpllm.BvbGqIfZ.mjs';
|
|
5
|
+
import 'node:child_process';
|
|
5
6
|
import 'node:fs';
|
|
6
7
|
import 'node:os';
|
|
7
8
|
import 'node:process';
|
package/dist/index.d.mts
CHANGED
|
@@ -29,6 +29,7 @@ interface CodexApiConfig {
|
|
|
29
29
|
}
|
|
30
30
|
declare function getExistingCodexConfig(): CodexApiConfig | null;
|
|
31
31
|
declare function writeCodexApiConfig(config: CodexApiConfig): void;
|
|
32
|
+
declare function enableCodexFullAccess(): void;
|
|
32
33
|
declare function clearCodexApiConfig(): void;
|
|
33
34
|
declare function displayCodexConfig(config: CodexApiConfig): void;
|
|
34
35
|
|
|
@@ -75,6 +76,7 @@ declare function selectInstallMethod(tool: CodeToolType): Promise<InstallMethod>
|
|
|
75
76
|
declare function installTool(tool: CodeToolType, skipMethodSelection?: boolean): Promise<void>;
|
|
76
77
|
declare function uninstallTool(tool: CodeToolType): Promise<boolean>;
|
|
77
78
|
|
|
79
|
+
declare const SRPLLM_DIR: string;
|
|
78
80
|
interface LocalConfig {
|
|
79
81
|
/** 上次选的工具 */
|
|
80
82
|
codeType?: 'claude-code' | 'codex' | 'chatbox';
|
|
@@ -129,5 +131,5 @@ declare function getPlatform(): Platform;
|
|
|
129
131
|
declare function isWindows(): boolean;
|
|
130
132
|
declare function commandExists(command: string): Promise<boolean>;
|
|
131
133
|
|
|
132
|
-
export { CLAUDE_DIR, CLAUDE_SETTINGS_FILE, CODEX_AUTH_FILE, CODEX_CONFIG_FILE, CODEX_DIR, CODE_TOOL_ALIASES, CODE_TOOL_LABELS, CODE_TOOL_TYPES, DEFAULT_CODE_TOOL_TYPE, MODEL_PREFIX, RELAY_PROVIDER_ID, RELAY_TOOL_TYPES, buildModelsChoices, clearClaudeApiConfig, clearCodexApiConfig, commandExists, detectInstalledVersion, displayClaudeConfig, displayCodexConfig, ensureClaudeDir, fetchModels, filterByPrefix, getExistingClaudeApiConfig, getExistingCodexConfig, getPlatform, init, installTool, isCliTool, isCodeToolType, isToolInstalled, isWindows, readClaudeSettings, readLocalConfig, resolveCodeToolType, selectInstallMethod, uninstall, uninstallTool, updateLocalConfig, writeClaudeApiConfig, writeCodexApiConfig, writeLocalConfig };
|
|
134
|
+
export { CLAUDE_DIR, CLAUDE_SETTINGS_FILE, CODEX_AUTH_FILE, CODEX_CONFIG_FILE, CODEX_DIR, CODE_TOOL_ALIASES, CODE_TOOL_LABELS, CODE_TOOL_TYPES, DEFAULT_CODE_TOOL_TYPE, MODEL_PREFIX, RELAY_PROVIDER_ID, RELAY_TOOL_TYPES, SRPLLM_DIR, buildModelsChoices, clearClaudeApiConfig, clearCodexApiConfig, commandExists, detectInstalledVersion, displayClaudeConfig, displayCodexConfig, enableCodexFullAccess, ensureClaudeDir, fetchModels, filterByPrefix, getExistingClaudeApiConfig, getExistingCodexConfig, getPlatform, init, installTool, isCliTool, isCodeToolType, isToolInstalled, isWindows, readClaudeSettings, readLocalConfig, resolveCodeToolType, selectInstallMethod, uninstall, uninstallTool, updateLocalConfig, writeClaudeApiConfig, writeCodexApiConfig, writeLocalConfig };
|
|
133
135
|
export type { ClaudeApiConfig, CodeToolType, CodexApiConfig, InstallMethod, LocalConfig, RelayToolType, RemoteModel };
|
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ interface CodexApiConfig {
|
|
|
29
29
|
}
|
|
30
30
|
declare function getExistingCodexConfig(): CodexApiConfig | null;
|
|
31
31
|
declare function writeCodexApiConfig(config: CodexApiConfig): void;
|
|
32
|
+
declare function enableCodexFullAccess(): void;
|
|
32
33
|
declare function clearCodexApiConfig(): void;
|
|
33
34
|
declare function displayCodexConfig(config: CodexApiConfig): void;
|
|
34
35
|
|
|
@@ -75,6 +76,7 @@ declare function selectInstallMethod(tool: CodeToolType): Promise<InstallMethod>
|
|
|
75
76
|
declare function installTool(tool: CodeToolType, skipMethodSelection?: boolean): Promise<void>;
|
|
76
77
|
declare function uninstallTool(tool: CodeToolType): Promise<boolean>;
|
|
77
78
|
|
|
79
|
+
declare const SRPLLM_DIR: string;
|
|
78
80
|
interface LocalConfig {
|
|
79
81
|
/** 上次选的工具 */
|
|
80
82
|
codeType?: 'claude-code' | 'codex' | 'chatbox';
|
|
@@ -129,5 +131,5 @@ declare function getPlatform(): Platform;
|
|
|
129
131
|
declare function isWindows(): boolean;
|
|
130
132
|
declare function commandExists(command: string): Promise<boolean>;
|
|
131
133
|
|
|
132
|
-
export { CLAUDE_DIR, CLAUDE_SETTINGS_FILE, CODEX_AUTH_FILE, CODEX_CONFIG_FILE, CODEX_DIR, CODE_TOOL_ALIASES, CODE_TOOL_LABELS, CODE_TOOL_TYPES, DEFAULT_CODE_TOOL_TYPE, MODEL_PREFIX, RELAY_PROVIDER_ID, RELAY_TOOL_TYPES, buildModelsChoices, clearClaudeApiConfig, clearCodexApiConfig, commandExists, detectInstalledVersion, displayClaudeConfig, displayCodexConfig, ensureClaudeDir, fetchModels, filterByPrefix, getExistingClaudeApiConfig, getExistingCodexConfig, getPlatform, init, installTool, isCliTool, isCodeToolType, isToolInstalled, isWindows, readClaudeSettings, readLocalConfig, resolveCodeToolType, selectInstallMethod, uninstall, uninstallTool, updateLocalConfig, writeClaudeApiConfig, writeCodexApiConfig, writeLocalConfig };
|
|
134
|
+
export { CLAUDE_DIR, CLAUDE_SETTINGS_FILE, CODEX_AUTH_FILE, CODEX_CONFIG_FILE, CODEX_DIR, CODE_TOOL_ALIASES, CODE_TOOL_LABELS, CODE_TOOL_TYPES, DEFAULT_CODE_TOOL_TYPE, MODEL_PREFIX, RELAY_PROVIDER_ID, RELAY_TOOL_TYPES, SRPLLM_DIR, buildModelsChoices, clearClaudeApiConfig, clearCodexApiConfig, commandExists, detectInstalledVersion, displayClaudeConfig, displayCodexConfig, enableCodexFullAccess, ensureClaudeDir, fetchModels, filterByPrefix, getExistingClaudeApiConfig, getExistingCodexConfig, getPlatform, init, installTool, isCliTool, isCodeToolType, isToolInstalled, isWindows, readClaudeSettings, readLocalConfig, resolveCodeToolType, selectInstallMethod, uninstall, uninstallTool, updateLocalConfig, writeClaudeApiConfig, writeCodexApiConfig, writeLocalConfig };
|
|
133
135
|
export type { ClaudeApiConfig, CodeToolType, CodexApiConfig, InstallMethod, LocalConfig, RelayToolType, RemoteModel };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { C as CLAUDE_DIR, b as CLAUDE_SETTINGS_FILE, f as CODEX_AUTH_FILE, e as CODEX_CONFIG_FILE, d as CODEX_DIR, j as CODE_TOOL_ALIASES, k as CODE_TOOL_LABELS, h as CODE_TOOL_TYPES, D as DEFAULT_CODE_TOOL_TYPE, M as MODEL_PREFIX, n as RELAY_PROVIDER_ID, R as RELAY_TOOL_TYPES,
|
|
1
|
+
export { C as CLAUDE_DIR, b as CLAUDE_SETTINGS_FILE, f as CODEX_AUTH_FILE, e as CODEX_CONFIG_FILE, d as CODEX_DIR, j as CODE_TOOL_ALIASES, k as CODE_TOOL_LABELS, h as CODE_TOOL_TYPES, D as DEFAULT_CODE_TOOL_TYPE, M as MODEL_PREFIX, n as RELAY_PROVIDER_ID, R as RELAY_TOOL_TYPES, S as SRPLLM_DIR, N as buildModelsChoices, s as clearClaudeApiConfig, z as clearCodexApiConfig, c as commandExists, E as detectInstalledVersion, t as displayClaudeConfig, A as displayCodexConfig, y as enableCodexFullAccess, o as ensureClaudeDir, L as fetchModels, O as filterByPrefix, q as getExistingClaudeApiConfig, v as getExistingCodexConfig, g as getPlatform, i as init, G as installTool, m as isCliTool, l as isCodeToolType, B as isToolInstalled, a as isWindows, p as readClaudeSettings, I as readLocalConfig, r as resolveCodeToolType, F as selectInstallMethod, u as uninstall, H as uninstallTool, K as updateLocalConfig, w as writeClaudeApiConfig, x as writeCodexApiConfig, J as writeLocalConfig } from './shared/srpllm.BvbGqIfZ.mjs';
|
|
2
|
+
import 'node:child_process';
|
|
2
3
|
import 'node:fs';
|
|
3
4
|
import 'node:os';
|
|
4
5
|
import 'node:process';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
1
2
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync, unlinkSync } from 'node:fs';
|
|
2
3
|
import { homedir, platform } from 'node:os';
|
|
3
4
|
import process from 'node:process';
|
|
@@ -284,6 +285,40 @@ function writeCodexApiConfig(config) {
|
|
|
284
285
|
auth.OPENAI_API_KEY = config.token;
|
|
285
286
|
writeJson(CODEX_AUTH_FILE, auth);
|
|
286
287
|
}
|
|
288
|
+
function applyCodexFullAccess(content) {
|
|
289
|
+
const settings = {
|
|
290
|
+
sandbox_mode: "danger-full-access",
|
|
291
|
+
approval_policy: "never"
|
|
292
|
+
};
|
|
293
|
+
const lines = content.split("\n");
|
|
294
|
+
let firstSection = lines.findIndex((line) => /^\s*\[[^\]]+\]/.test(line));
|
|
295
|
+
if (firstSection === -1)
|
|
296
|
+
firstSection = lines.length;
|
|
297
|
+
const seen = /* @__PURE__ */ new Set();
|
|
298
|
+
const processed = [];
|
|
299
|
+
for (const line of lines.slice(0, firstSection)) {
|
|
300
|
+
const match = line.match(/^\s*(sandbox_mode|approval_policy)\s*=/);
|
|
301
|
+
if (match) {
|
|
302
|
+
const key = match[1];
|
|
303
|
+
processed.push(`${key} = "${settings[key]}"`);
|
|
304
|
+
seen.add(key);
|
|
305
|
+
} else {
|
|
306
|
+
processed.push(line);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
for (const key of Object.keys(settings)) {
|
|
310
|
+
if (!seen.has(key))
|
|
311
|
+
processed.push(`${key} = "${settings[key]}"`);
|
|
312
|
+
}
|
|
313
|
+
const result = [...processed, ...lines.slice(firstSection)].join("\n").replace(/\n{3,}/g, "\n\n").trimEnd();
|
|
314
|
+
return `${result}
|
|
315
|
+
`;
|
|
316
|
+
}
|
|
317
|
+
function enableCodexFullAccess() {
|
|
318
|
+
if (!exists(CODEX_CONFIG_FILE))
|
|
319
|
+
return;
|
|
320
|
+
writeFile(CODEX_CONFIG_FILE, applyCodexFullAccess(readFileRaw(CODEX_CONFIG_FILE)));
|
|
321
|
+
}
|
|
287
322
|
function clearCodexApiConfig() {
|
|
288
323
|
if (exists(CODEX_CONFIG_FILE)) {
|
|
289
324
|
const backup = `${CODEX_CONFIG_FILE}.backup_${timestamp()}`;
|
|
@@ -511,6 +546,26 @@ function updateLocalConfig(patch) {
|
|
|
511
546
|
writeLocalConfig({ ...existing, ...patch });
|
|
512
547
|
}
|
|
513
548
|
|
|
549
|
+
const MODEL_CACHE_FILE = join(SRPLLM_DIR, "models-cache.json");
|
|
550
|
+
function cacheKey(baseUrl) {
|
|
551
|
+
return baseUrl.replace(/\/+$/, "").trim().toLowerCase();
|
|
552
|
+
}
|
|
553
|
+
function readModelCache(baseUrl) {
|
|
554
|
+
const store = readJson(MODEL_CACHE_FILE);
|
|
555
|
+
if (!store)
|
|
556
|
+
return null;
|
|
557
|
+
const entry = store[cacheKey(baseUrl)];
|
|
558
|
+
return entry && Array.isArray(entry.models) ? entry : null;
|
|
559
|
+
}
|
|
560
|
+
function writeModelCache(baseUrl, models) {
|
|
561
|
+
const store = readJson(MODEL_CACHE_FILE) || {};
|
|
562
|
+
store[cacheKey(baseUrl)] = {
|
|
563
|
+
models,
|
|
564
|
+
fetchedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
565
|
+
};
|
|
566
|
+
writeJson(MODEL_CACHE_FILE, store);
|
|
567
|
+
}
|
|
568
|
+
|
|
514
569
|
const LITELLM_WILDCARD_IDS = /* @__PURE__ */ new Set([
|
|
515
570
|
"all-proxy-models",
|
|
516
571
|
"all-team-models",
|
|
@@ -568,7 +623,7 @@ function filterByPrefix(models, prefix) {
|
|
|
568
623
|
return models.filter((m) => m.id.toLowerCase().startsWith(p));
|
|
569
624
|
}
|
|
570
625
|
|
|
571
|
-
const version = "1.2.
|
|
626
|
+
const version = "1.2.7";
|
|
572
627
|
|
|
573
628
|
function displayBanner(codeTool) {
|
|
574
629
|
const tool = codeTool ? ` ${ansis.gray(`\xB7 ${CODE_TOOL_LABELS[codeTool]}`)}` : "";
|
|
@@ -650,10 +705,50 @@ async function fetchModelList(baseUrl, token) {
|
|
|
650
705
|
return null;
|
|
651
706
|
}
|
|
652
707
|
}
|
|
653
|
-
|
|
708
|
+
function formatAge(ms) {
|
|
709
|
+
const sec = Math.floor(ms / 1e3);
|
|
710
|
+
if (sec < 60)
|
|
711
|
+
return `${sec} \u79D2`;
|
|
712
|
+
const min = Math.floor(sec / 60);
|
|
713
|
+
if (min < 60)
|
|
714
|
+
return `${min} \u5206\u949F`;
|
|
715
|
+
const hr = Math.floor(min / 60);
|
|
716
|
+
if (hr < 24)
|
|
717
|
+
return `${hr} \u5C0F\u65F6`;
|
|
718
|
+
const day = Math.floor(hr / 24);
|
|
719
|
+
if (day < 30)
|
|
720
|
+
return `${day} \u5929`;
|
|
721
|
+
const month = Math.floor(day / 30);
|
|
722
|
+
if (month < 12)
|
|
723
|
+
return `${month} \u4E2A\u6708`;
|
|
724
|
+
return `${Math.floor(month / 12)} \u5E74`;
|
|
725
|
+
}
|
|
726
|
+
async function tryCachedModels(baseUrl, prefix, skipPrompt) {
|
|
727
|
+
const cache = readModelCache(baseUrl);
|
|
728
|
+
if (!cache || cache.models.length === 0)
|
|
729
|
+
return null;
|
|
730
|
+
const ageStr = formatAge(Date.now() - new Date(cache.fetchedAt).getTime());
|
|
731
|
+
const filtered = filterByPrefix(cache.models, prefix);
|
|
732
|
+
if (skipPrompt) {
|
|
733
|
+
if (filtered.length > 0) {
|
|
734
|
+
console.log(ansis.gray(`\u2139 \u62C9\u53D6\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u672C\u5730\u7F13\u5B58\u6A21\u578B\u5217\u8868\uFF08${ageStr}\u524D\u62C9\u53D6\uFF0C\u5171 ${cache.models.length} \u4E2A\uFF0C\u8FC7\u6EE4\u540E ${filtered.length} \u4E2A ${prefix}*\uFF09`));
|
|
735
|
+
return filtered;
|
|
736
|
+
}
|
|
737
|
+
return null;
|
|
738
|
+
}
|
|
739
|
+
const hint = filtered.length > 0 ? `\u5171 ${cache.models.length} \u4E2A\u6A21\u578B\uFF0C\u5176\u4E2D ${filtered.length} \u4E2A ${prefix}*` : `\u5171 ${cache.models.length} \u4E2A\u6A21\u578B\uFF0C\u4F46\u65E0 ${prefix}* \u524D\u7F00`;
|
|
740
|
+
console.log(ansis.yellow(`
|
|
741
|
+
\u2139 \u62C9\u53D6\u6A21\u578B\u5217\u8868\u5931\u8D25\uFF0C\u68C0\u6D4B\u5230\u672C\u5730\u7F13\u5B58\uFF08${ageStr}\u524D\uFF0C${hint}\uFF09`));
|
|
742
|
+
const useCache = await confirm("\u662F\u5426\u4F7F\u7528\u672C\u5730\u7F13\u5B58\u7684\u6A21\u578B\u5217\u8868\uFF1F", true);
|
|
743
|
+
if (!useCache)
|
|
744
|
+
return null;
|
|
745
|
+
return filtered.length > 0 ? filtered : null;
|
|
746
|
+
}
|
|
747
|
+
async function fetchFilteredModels(baseUrl, token, prefix, skipPrompt) {
|
|
654
748
|
const allModels = await fetchModelList(baseUrl, token);
|
|
655
749
|
if (!allModels)
|
|
656
|
-
return
|
|
750
|
+
return tryCachedModels(baseUrl, prefix, skipPrompt);
|
|
751
|
+
writeModelCache(baseUrl, allModels);
|
|
657
752
|
const filtered = filterByPrefix(allModels, prefix);
|
|
658
753
|
if (filtered.length === 0) {
|
|
659
754
|
console.log(ansis.yellow(`\u2139 \u5DF2\u83B7\u53D6 ${allModels.length} \u4E2A\u6A21\u578B\uFF0C\u4F46\u65E0 ${prefix}* \u524D\u7F00\u7684\u6A21\u578B\uFF0C\u53EF\u624B\u52A8\u8F93\u5165`));
|
|
@@ -709,7 +804,7 @@ async function configureClaudeCode(options, baseUrl, token, memory) {
|
|
|
709
804
|
return;
|
|
710
805
|
}
|
|
711
806
|
}
|
|
712
|
-
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX["claude-code"]);
|
|
807
|
+
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX["claude-code"], options.skipPrompt);
|
|
713
808
|
const m = memory.claude;
|
|
714
809
|
const model = await promptModelFromList(models, "\u8BF7\u9009\u62E9\u4E3B\u6A21\u578B (ANTHROPIC_MODEL)\uFF1A", options.model, options.skipPrompt, m?.model);
|
|
715
810
|
const opusModel = await promptModelFromList(models, "\u8BF7\u9009\u62E9 Opus \u6863\u6A21\u578B (ANTHROPIC_DEFAULT_OPUS_MODEL)\uFF1A", options.opusModel, options.skipPrompt, m?.opusModel);
|
|
@@ -719,6 +814,7 @@ async function configureClaudeCode(options, baseUrl, token, memory) {
|
|
|
719
814
|
writeClaudeApiConfig(config);
|
|
720
815
|
console.log(ansis.green("\n\u2714 Claude Code \u914D\u7F6E\u5B8C\u6210"));
|
|
721
816
|
displayClaudeConfig(config);
|
|
817
|
+
console.log(ansis.yellow("\n \u2139 \u63D0\u793A\uFF1A\u542F\u52A8\u65F6\u9644\u52A0 --dangerously-skip-permissions \u53EF\u8DF3\u8FC7\u6743\u9650\u786E\u8BA4\u3001\u6388\u4E88\u5B8C\u5168\u6743\u9650"));
|
|
722
818
|
updateLocalConfig({ claude: { model, opusModel, sonnetModel, haikuModel } });
|
|
723
819
|
}
|
|
724
820
|
async function configureCodex(options, baseUrl, token, memory) {
|
|
@@ -735,12 +831,30 @@ async function configureCodex(options, baseUrl, token, memory) {
|
|
|
735
831
|
return;
|
|
736
832
|
}
|
|
737
833
|
}
|
|
738
|
-
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX.codex);
|
|
834
|
+
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX.codex, options.skipPrompt);
|
|
739
835
|
const model = await promptModelFromList(models, "\u8BF7\u9009\u62E9\u9ED8\u8BA4\u4F7F\u7528\u7684\u6A21\u578B\uFF1A", options.model, options.skipPrompt, memory.codex?.model);
|
|
740
836
|
const config = { baseUrl, token, model };
|
|
741
837
|
writeCodexApiConfig(config);
|
|
742
838
|
console.log(ansis.green("\n\u2714 Codex \u914D\u7F6E\u5B8C\u6210"));
|
|
743
839
|
displayCodexConfig(config);
|
|
840
|
+
if (process.platform === "win32") {
|
|
841
|
+
try {
|
|
842
|
+
const output = execSync('pwsh -NoProfile -Command "(Get-Command pwsh).Source"', { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] }).trim();
|
|
843
|
+
if (output.includes("WindowsApps")) {
|
|
844
|
+
console.log(ansis.yellow("\n\u26A0 \u68C0\u6D4B\u5230\u4F60\u4F7F\u7528\u7684\u662F\u5FAE\u8F6F\u5546\u5E97\u7248\u7684 PowerShell (pwsh)"));
|
|
845
|
+
console.log(ansis.gray(" \u8FD9\u4F1A\u5BFC\u81F4 Codex \u7684 Windows \u6C99\u76D2\u529F\u80FD\u51FA\u73B0 CreateProcessAsUserW failed: 5 \u6743\u9650\u9519\u8BEF\u3002"));
|
|
846
|
+
const shouldApply = options.skipPrompt ? true : await confirm("\u662F\u5426\u81EA\u52A8\u5728 Codex \u914D\u7F6E\u4E2D\u6388\u4E88\u5B8C\u5168\u8BBF\u95EE\u6743\u9650\u5E76\u5173\u95ED\u5BA1\u6279\u4EE5\u907F\u514D\u62A5\u9519\uFF1F", true);
|
|
847
|
+
if (shouldApply) {
|
|
848
|
+
enableCodexFullAccess();
|
|
849
|
+
console.log(ansis.green("\u2714 \u5DF2\u6388\u4E88\u5B8C\u5168\u8BBF\u95EE\u6743\u9650\uFF08sandbox_mode = danger-full-access\uFF09\u5E76\u5173\u95ED\u5BA1\u6279\uFF08approval_policy = never\uFF09"));
|
|
850
|
+
console.log(ansis.gray(" \u2139 \u7B49\u4EF7\u4E8E --dangerously-bypass-approvals-and-sandbox\uFF0CCodex \u542F\u52A8\u540E\u5C06\u8FDB\u5165 YOLO \u6A21\u5F0F"));
|
|
851
|
+
} else {
|
|
852
|
+
console.log(ansis.yellow("\u2139 \u5DF2\u8DF3\u8FC7\uFF0C\u82E5\u540E\u7EED\u8FD0\u884C\u62A5\u9519\uFF0C\u8BF7\u67E5\u9605\u6587\u6863\u6216\u624B\u52A8\u914D\u7F6E sandbox_mode / approval_policy"));
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
} catch {
|
|
856
|
+
}
|
|
857
|
+
}
|
|
744
858
|
updateLocalConfig({ codex: { model } });
|
|
745
859
|
}
|
|
746
860
|
function getDownloadsDir() {
|
|
@@ -758,7 +872,7 @@ function getDownloadsDir() {
|
|
|
758
872
|
return fallback;
|
|
759
873
|
}
|
|
760
874
|
async function configureChatbox(options, baseUrl, token, memory) {
|
|
761
|
-
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX.chatbox);
|
|
875
|
+
const models = await fetchFilteredModels(baseUrl, token, MODEL_PREFIX.chatbox, options.skipPrompt);
|
|
762
876
|
const model = await promptModelFromList(models, "\u8BF7\u9009\u62E9\u9ED8\u8BA4\u6A21\u578B\uFF08chat- \u524D\u7F00\uFF09\uFF1A", options.model, options.skipPrompt, memory.chatbox?.model);
|
|
763
877
|
const downloads = getDownloadsDir();
|
|
764
878
|
const filePath = join(downloads, "srpllm-chatbox-config.yaml");
|
|
@@ -905,4 +1019,4 @@ ${ansis.cyan("\u{1F389} \u6E05\u7406\u5B8C\u6210")}`);
|
|
|
905
1019
|
}
|
|
906
1020
|
}
|
|
907
1021
|
|
|
908
|
-
export {
|
|
1022
|
+
export { displayCodexConfig as A, isToolInstalled as B, CLAUDE_DIR as C, DEFAULT_CODE_TOOL_TYPE as D, detectInstalledVersion as E, selectInstallMethod as F, installTool as G, uninstallTool as H, readLocalConfig as I, writeLocalConfig as J, updateLocalConfig as K, fetchModels as L, MODEL_PREFIX as M, buildModelsChoices as N, filterByPrefix as O, version as P, RELAY_TOOL_TYPES as R, SRPLLM_DIR as S, isWindows as a, CLAUDE_SETTINGS_FILE as b, commandExists as c, CODEX_DIR as d, CODEX_CONFIG_FILE as e, CODEX_AUTH_FILE as f, getPlatform as g, CODE_TOOL_TYPES as h, init as i, CODE_TOOL_ALIASES as j, CODE_TOOL_LABELS as k, isCodeToolType as l, isCliTool as m, RELAY_PROVIDER_ID as n, ensureClaudeDir as o, readClaudeSettings as p, getExistingClaudeApiConfig as q, resolveCodeToolType as r, clearClaudeApiConfig as s, displayClaudeConfig as t, uninstall as u, getExistingCodexConfig as v, writeClaudeApiConfig as w, writeCodexApiConfig as x, enableCodexFullAccess as y, clearCodexApiConfig as z };
|