diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 4108fb2..a804f68 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -23,6 +23,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/configure-pages@v5 + with: + enablement: true - uses: actions/upload-pages-artifact@v3 with: path: public/ diff --git a/src/server/cliRunner.js b/src/server/cliRunner.js index 1338ef9..c2b16f0 100644 --- a/src/server/cliRunner.js +++ b/src/server/cliRunner.js @@ -62,7 +62,12 @@ function runProcess(binary, args, timeoutMs) { const child = spawn(binary, args, { shell: false, windowsHide: true, - env: process.env + env: { + PATH: process.env.PATH, + HOME: process.env.HOME, + LANG: process.env.LANG, + TERM: process.env.TERM + } }); let stdout = ''; diff --git a/src/server/gammaClient.js b/src/server/gammaClient.js index 452f135..0f2b801 100644 --- a/src/server/gammaClient.js +++ b/src/server/gammaClient.js @@ -10,7 +10,16 @@ async function fetchJson(url) { headers: { Accept: 'application/json' } }); const text = await response.text(); - const data = text ? JSON.parse(text) : {}; + let data = {}; + if (text) { + try { + data = JSON.parse(text); + } catch { + throw new Error( + `Gamma API returned non-JSON response (${response.status}): ${text.slice(0, 200)}` + ); + } + } if (!response.ok) { throw new Error( diff --git a/src/server/ollamaClient.js b/src/server/ollamaClient.js index fd6bdbf..4329b0f 100644 --- a/src/server/ollamaClient.js +++ b/src/server/ollamaClient.js @@ -20,7 +20,16 @@ async function fetchJson(url, options = {}) { try { const response = await fetch(url, { ...options, signal: controller.signal }); const text = await response.text(); - const data = text ? JSON.parse(text) : {}; + let data = {}; + if (text) { + try { + data = JSON.parse(text); + } catch { + throw new Error( + `Ollama returned non-JSON response (${response.status}): ${text.slice(0, 200)}` + ); + } + } if (!response.ok) { throw new Error( diff --git a/src/server/openAiCompatibleClient.js b/src/server/openAiCompatibleClient.js index 2d8a654..3f4c7c9 100644 --- a/src/server/openAiCompatibleClient.js +++ b/src/server/openAiCompatibleClient.js @@ -6,7 +6,16 @@ async function fetchJson(url, options = {}) { try { const response = await fetch(url, { ...options, signal: controller.signal }); const text = await response.text(); - const payload = text ? JSON.parse(text) : {}; + let payload = {}; + if (text) { + try { + payload = JSON.parse(text); + } catch { + throw new Error( + `Provider returned non-JSON response (${response.status}): ${text.slice(0, 200)}` + ); + } + } if (!response.ok) { throw new Error(