fix: isolate visual tool failures from agent runs
This commit is contained in:
@@ -470,6 +470,39 @@ export function developerToolsFromPolicy(sessionPolicy) {
|
||||
return (sandboxFs ?? developer)?.available_tools ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Visual inspection is optional for H5 Agent runs. When the active text model
|
||||
* rejects image content, remove read_image for the recovery session without
|
||||
* weakening any workspace or data capability boundary.
|
||||
*/
|
||||
export function withoutSessionImageRead(sessionPolicy) {
|
||||
if (!sessionPolicy || !Array.isArray(sessionPolicy.extensionOverrides)) {
|
||||
return sessionPolicy;
|
||||
}
|
||||
let changed = false;
|
||||
const extensionOverrides = sessionPolicy.extensionOverrides
|
||||
.map((extension) => {
|
||||
if (String(extension?.name ?? '') !== 'developer') return extension;
|
||||
const tools = Array.isArray(extension.available_tools)
|
||||
? extension.available_tools
|
||||
: [];
|
||||
const availableTools = tools.filter((tool) => tool !== 'read_image');
|
||||
if (availableTools.length === tools.length) return extension;
|
||||
changed = true;
|
||||
if (availableTools.length === 0) return null;
|
||||
return {
|
||||
...extension,
|
||||
available_tools: availableTools,
|
||||
};
|
||||
})
|
||||
.filter(Boolean);
|
||||
if (!changed) return sessionPolicy;
|
||||
return {
|
||||
...sessionPolicy,
|
||||
extensionOverrides,
|
||||
};
|
||||
}
|
||||
|
||||
function mergeDeveloperTools(capabilities) {
|
||||
const tools = [];
|
||||
if (capabilities.shell) tools.push('shell');
|
||||
|
||||
Reference in New Issue
Block a user