diff --git a/packages/plugin-browser/README.md b/packages/plugin-browser/README.md index 569f00aa184..2ed9ec28c2e 100644 --- a/packages/plugin-browser/README.md +++ b/packages/plugin-browser/README.md @@ -60,6 +60,16 @@ Each transfer is limited to 5 MiB total. There is no shared filesystem assumptio resumable transfer service, new socket, or object store. Browsing uses the desktop's network: its `localhost` is not the remote server's `localhost`. +Remote endpoints can use HTTPS and the existing server credentials. A reverse +proxy must allow long-lived event and attachment requests; the attachment RPC +stays open rather than sending response-body heartbeats. + +Lighthouse audits use snapshot mode without changing device emulation or adding +an embedded report screenshot; use `browser.screenshot` for images. Trace exports +contain the target renderer process, not the whole desktop application. A tab +process change or trace-buffer loss is reported as an incomplete capture. Heap +summaries report shallow size, not computed retained size, and do not prove leaks. + All page-derived data is untrusted, including structured outputs. Schema validation does not make page text an instruction or grant it authority. diff --git a/packages/schema/src/browser.ts b/packages/schema/src/browser.ts index c387cc649b5..38b94806744 100644 --- a/packages/schema/src/browser.ts +++ b/packages/schema/src/browser.ts @@ -127,7 +127,7 @@ export const ConsoleEntry = Schema.Struct({ textTruncated: Schema.Boolean, source: optional(Schema.Struct({ url: text, line: count, column: count })), }).annotate({ identifier: "Browser.ConsoleEntry" }) -export type ConsoleEntry = typeof ConsoleEntry.Type +export interface ConsoleEntry extends Schema.Schema.Type {} const snapshot = Schema.Struct({ ...page, content: text, truncated: Schema.Boolean }) const entry = Schema.Struct({ name: short, count, bytes: Schema.Finite }) const node = Schema.Struct({ id: Schema.Finite, name: text, type: short, selfBytes: count, edgeCount: count }) @@ -481,11 +481,11 @@ export const Command = Schema.Struct({ generation: optional(count), files: Schema.Array(File), }).annotate({ identifier: "Browser.Command" }) -export type Command = typeof Command.Type +export interface Command extends Schema.Schema.Type {} export const Result = Schema.Struct({ value: Schema.Json, files: Schema.Array(File) }).annotate({ identifier: "Browser.Result", }) -export type Result = typeof Result.Type +export interface Result extends Schema.Schema.Type {} export const Outcome = Schema.Union([ Schema.Struct({ type: Schema.Literal("success"), result: Result }), Schema.Struct({ type: Schema.Literal("failure"), code: short, message: short }),