fix: make goosed mcp paths container safe
This commit is contained in:
+23
-10
@@ -861,9 +861,12 @@ function validateCustomPayload(payload) {
|
||||
|
||||
export function createLlmProviderService(
|
||||
pool,
|
||||
{ apiTarget, apiSecret, encryptionKey, apiFetchImpl = undiciFetch } = {},
|
||||
{ apiTarget, apiTargets = [], apiSecret, encryptionKey, apiFetchImpl = undiciFetch } = {},
|
||||
) {
|
||||
const launchStates = new Map();
|
||||
const syncTargets = [
|
||||
...new Set([...(Array.isArray(apiTargets) ? apiTargets : []), apiTarget].filter(Boolean)),
|
||||
];
|
||||
|
||||
function catalogItem(providerId) {
|
||||
return catalogById[providerId] ?? null;
|
||||
@@ -1742,19 +1745,29 @@ export function createLlmProviderService(
|
||||
},
|
||||
|
||||
async syncSelectedToGoosed() {
|
||||
let resolved = await resolveExecutorProvider('goose');
|
||||
if (!resolved.ok) {
|
||||
resolved = await resolveSelectedProvider();
|
||||
}
|
||||
if (!resolved.ok) {
|
||||
return { ok: false, synced: false, message: resolved.message };
|
||||
const targets = syncTargets.length ? syncTargets : [apiTarget].filter(Boolean);
|
||||
let lastResolved = null;
|
||||
for (const target of targets) {
|
||||
const targetFetch = (url, init) => {
|
||||
const pathname = `${url.pathname}${url.search}`;
|
||||
return goosedApiFetch(target, apiSecret, pathname, init, apiFetchImpl);
|
||||
};
|
||||
let resolved = await resolveExecutorProvider('goose', 'default', targetFetch);
|
||||
if (!resolved.ok) {
|
||||
resolved = await resolveSelectedProvider(targetFetch);
|
||||
}
|
||||
if (!resolved.ok) {
|
||||
return { ok: false, synced: false, target, message: resolved.message };
|
||||
}
|
||||
lastResolved = resolved;
|
||||
}
|
||||
return {
|
||||
ok: true,
|
||||
synced: true,
|
||||
source: resolved.source,
|
||||
providerId: resolved.providerId,
|
||||
model: resolved.model,
|
||||
targets,
|
||||
source: lastResolved.source,
|
||||
providerId: lastResolved.providerId,
|
||||
model: lastResolved.model,
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user