Skip to content

Commit 5525cb6

Browse files
authored
Wrap iframe LLM call in try-catch (#1112)
Fixes stale generations lingering in the activity panel by handling non-success response codes.
1 parent 322f0aa commit 5525cb6

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

jumble/src/iframe-ctx.ts

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -274,30 +274,36 @@ export const setupIframe = () =>
274274
{ charmId: null, spaceName: null };
275275

276276
console.log("onLLMRequest", payload, charmId, spaceName);
277-
const jsonPayload = JSON.parse(payload);
278-
if (!jsonPayload.model) {
279-
jsonPayload.model = DEFAULT_IFRAME_MODELS;
280-
}
281-
if (!jsonPayload.cache) {
282-
jsonPayload.cache = true;
283-
}
284-
updateJob(jobId, `Using ${jsonPayload.model}`);
285-
jsonPayload.metadata = {
286-
...jsonPayload.metadata,
287-
context: "iframe",
288-
spaceName: spaceName ?? "fixme",
289-
charmId: charmId ?? "fixme",
290-
};
277+
try {
278+
const jsonPayload = JSON.parse(payload);
279+
if (!jsonPayload.model) {
280+
jsonPayload.model = DEFAULT_IFRAME_MODELS;
281+
}
282+
if (!jsonPayload.cache) {
283+
jsonPayload.cache = true;
284+
}
285+
updateJob(jobId, `Using ${jsonPayload.model}`);
286+
jsonPayload.metadata = {
287+
...jsonPayload.metadata,
288+
context: "iframe",
289+
spaceName: spaceName ?? "fixme",
290+
charmId: charmId ?? "fixme",
291+
};
291292

292-
const res = await llm.sendRequest(jsonPayload);
293-
console.log("onLLMRequest res", res);
294-
completeJob({
295-
id: jobId,
296-
result: undefined,
297-
status: res.content ?? "Completed!",
298-
llmRequestId: res.id
299-
});
300-
return res as any;
293+
const res = await llm.sendRequest(jsonPayload);
294+
console.log("onLLMRequest res", res);
295+
completeJob({
296+
id: jobId,
297+
result: undefined,
298+
status: res.content ?? "Completed!",
299+
llmRequestId: res.id,
300+
});
301+
return res as any;
302+
} catch (e: any) {
303+
console.error("onLLMRequest error", e);
304+
failJob(jobId, "LLM request failed", e.message);
305+
return null;
306+
}
301307
},
302308
async onReadWebpageRequest(
303309
_element: CommonIframeSandboxElement,
@@ -313,7 +319,7 @@ export const setupIframe = () =>
313319
console.log("onReadWebpageRequest res", res);
314320
completeJob({
315321
id: jobId,
316-
status: res.status === 200 ? "Completed!" : "Failed!"
322+
status: res.status === 200 ? "Completed!" : "Failed!",
317323
});
318324
return await res.json();
319325
},

0 commit comments

Comments
 (0)