fix(agent-browser): restore bounded presentation lifecycle

This commit is contained in:
2026-09-06 12:50:18 +08:00
parent 5c61110f46
commit 9fed0cc7c4
20 changed files with 1714 additions and 49 deletions

View File

@@ -18,6 +18,7 @@ import type { CodingPluginToolDefinition } from '../../../shared/coding-plugins'
import type { PiSkillEntry } from './resource-loader';
import type { EffectivePluginSnapshot } from '../../coding-plugins/effective-resolver';
import { DevicePackageError } from '../../coding-packages/device-package-manager';
import { AgentBrowserFault } from '../../agent-browser/fault';
const MAX_REQUEST_BYTES = 64 * 1024;
const PRODUCT_TOOL_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9._:-]{0,63}$/u;
@@ -516,6 +517,17 @@ export class PiManagedExtensionHost {
record.waiters.delete(value.resourceId);
}
} catch (error) {
if (!response.writableEnded && error instanceof AgentBrowserFault) {
const message = error.message.slice(0, 512);
this.respond(response, 400, {
code: error.code,
error: `${error.code}: ${message}`,
retryable: error.retryable,
...(error.generation === undefined ? {} : { generation: error.generation }),
...(error.outcome === undefined ? {} : { outcome: error.outcome }),
});
return;
}
if (!response.writableEnded && error instanceof DevicePackageError) {
this.respond(response, 400, {
code: error.code,