mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
🚀 feat: Artifact Editing & Downloads (#5428)
* refactor: expand container * chore: bump @codesandbox/sandpack-react to latest * WIP: first pass, show editor * feat: implement ArtifactCodeEditor and ArtifactTabs components for enhanced artifact management * refactor: fileKey * refactor: auto scrolling code editor and add messageId to artifact * feat: first pass, editing artifact * feat: first pass, robust artifact replacement * fix: robust artifact replacement & re-render when expected * feat: Download Artifacts * refactor: improve artifact editing UX * fix: layout shift of new download button * fix: enhance missing output checks and logging in StreamRunManager
This commit is contained in:
parent
87383fec27
commit
ed57bb4711
34 changed files with 1156 additions and 237 deletions
|
|
@ -508,12 +508,30 @@ class StreamRunManager {
|
|||
* @param {RequiredAction[]} actions - The required actions.
|
||||
* @returns {ToolOutput[]} completeOutputs - The complete outputs.
|
||||
*/
|
||||
checkMissingOutputs(tool_outputs, actions) {
|
||||
checkMissingOutputs(tool_outputs = [], actions = []) {
|
||||
const missingOutputs = [];
|
||||
const MISSING_OUTPUT_MESSAGE =
|
||||
'The tool failed to produce an output. The tool may not be currently available or experienced an unhandled error.';
|
||||
const outputIds = new Set();
|
||||
const validatedOutputs = tool_outputs.map((output) => {
|
||||
if (!output) {
|
||||
logger.warn('Tool output is undefined');
|
||||
return;
|
||||
}
|
||||
outputIds.add(output.tool_call_id);
|
||||
if (!output.output) {
|
||||
logger.warn(`Tool output exists but has no output property (ID: ${output.tool_call_id})`);
|
||||
return {
|
||||
...output,
|
||||
output: MISSING_OUTPUT_MESSAGE,
|
||||
};
|
||||
}
|
||||
return output;
|
||||
});
|
||||
|
||||
for (const item of actions) {
|
||||
const { tool, toolCallId, run_id, thread_id } = item;
|
||||
const outputExists = tool_outputs.some((output) => output.tool_call_id === toolCallId);
|
||||
const outputExists = outputIds.has(toolCallId);
|
||||
|
||||
if (!outputExists) {
|
||||
logger.warn(
|
||||
|
|
@ -521,13 +539,12 @@ class StreamRunManager {
|
|||
);
|
||||
missingOutputs.push({
|
||||
tool_call_id: toolCallId,
|
||||
output:
|
||||
'The tool failed to produce an output. The tool may not be currently available or experienced an unhandled error.',
|
||||
output: MISSING_OUTPUT_MESSAGE,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return [...tool_outputs, ...missingOutputs];
|
||||
return [...validatedOutputs, ...missingOutputs];
|
||||
}
|
||||
|
||||
/* <------------------ Run Event handlers ------------------> */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue