diff --git a/scripts/install-whispergate-openclaw.mjs b/scripts/install-whispergate-openclaw.mjs index 6e479b7..058d2f1 100755 --- a/scripts/install-whispergate-openclaw.mjs +++ b/scripts/install-whispergate-openclaw.mjs @@ -34,7 +34,7 @@ const RECORD_PATH = path.join(STATE_DIR, `whispergate-${ts}.json`); const PATH_PLUGINS_LOAD = "plugins.load.paths"; const PATH_PLUGIN_ENTRY = "plugins.entries.whispergate"; -const PROVIDER_PATH = `models.providers["${NO_REPLY_PROVIDER_ID}"]`; +const PATH_PROVIDERS = "models.providers"; function runOpenclaw(args, { allowFail = false } = {}) { try { @@ -127,7 +127,7 @@ if (mode === "install") { const before = { [PATH_PLUGINS_LOAD]: getJson(PATH_PLUGINS_LOAD), [PATH_PLUGIN_ENTRY]: getJson(PATH_PLUGIN_ENTRY), - [PROVIDER_PATH]: getJson(PROVIDER_PATH), + [PATH_PROVIDERS]: getJson(PATH_PROVIDERS), }; try { @@ -154,7 +154,9 @@ if (mode === "install") { }; setJson("plugins", plugins); - setJson(PROVIDER_PATH, { + const providersNow = getJson(PATH_PROVIDERS).value || {}; + const providers = typeof providersNow === "object" ? providersNow : {}; + providers[NO_REPLY_PROVIDER_ID] = { baseUrl: NO_REPLY_BASE_URL, apiKey: NO_REPLY_API_KEY, api: "openai-completions", @@ -169,7 +171,8 @@ if (mode === "install") { maxTokens: 4096, }, ], - }); + }; + setJson(PATH_PROVIDERS, providers); runOpenclaw(["gateway", "restart"]); validateNoReplyModelAvailable(); @@ -177,7 +180,7 @@ if (mode === "install") { const after = { [PATH_PLUGINS_LOAD]: getJson(PATH_PLUGINS_LOAD), [PATH_PLUGIN_ENTRY]: getJson(PATH_PLUGIN_ENTRY), - [PROVIDER_PATH]: getJson(PROVIDER_PATH), + [PATH_PROVIDERS]: getJson(PATH_PROVIDERS), }; writeRecord("install", before, after); console.log("[whispergate] install ok"); @@ -215,16 +218,13 @@ if (mode === "install") { setJson("plugins", plugins); - for (const k of Object.keys(target)) { - if (!k.startsWith("models.providers[")) continue; - if (target[k]?.exists) setJson(k, target[k].value); - else unsetPath(k); - } + if (target[PATH_PROVIDERS]?.exists) setJson(PATH_PROVIDERS, target[PATH_PROVIDERS].value); + else unsetPath(PATH_PROVIDERS); const after = { [PATH_PLUGINS_LOAD]: getJson(PATH_PLUGINS_LOAD), [PATH_PLUGIN_ENTRY]: getJson(PATH_PLUGIN_ENTRY), - [PROVIDER_PATH]: getJson(PROVIDER_PATH), + [PATH_PROVIDERS]: getJson(PATH_PROVIDERS), }; writeRecord("uninstall", before, after); console.log("[whispergate] uninstall ok");