

























@@ -44,6 +44,14 @@ const BROWSER_SNAPSHOT_REFS = ["role", "aria"] as const;
44444545const BROWSER_IMAGE_TYPES = ["png", "jpeg"] as const;
464647+function optionalPositiveInteger() {
48+return Type.Optional(Type.Integer({ minimum: 1 }));
49+}
50+51+function optionalNonNegativeInteger() {
52+return Type.Optional(Type.Integer({ minimum: 0 }));
53+}
54+4755// NOTE: Using a flattened object schema instead of Type.Union([Type.Object(...), ...])
4856// because Claude API on Vertex AI rejects nested anyOf schemas as invalid JSON Schema.
4957// The discriminator (kind) determines which properties are relevant; runtime validates.
@@ -81,7 +89,7 @@ const BrowserActSchema = Type.Object({
8189url: Type.Optional(Type.String()),
8290loadState: Type.Optional(Type.String()),
8391textGone: Type.Optional(Type.String()),
84-timeoutMs: Type.Optional(Type.Number()),
92+timeoutMs: optionalPositiveInteger(),
8593// evaluate
8694fn: Type.Optional(Type.String()),
8795});
@@ -98,14 +106,14 @@ export const BrowserToolSchema = Type.Object({
98106url: Type.Optional(Type.String()),
99107targetId: Type.Optional(Type.String()),
100108label: Type.Optional(Type.String()),
101-limit: Type.Optional(Type.Number()),
102-maxChars: Type.Optional(Type.Number()),
109+limit: optionalPositiveInteger(),
110+maxChars: optionalNonNegativeInteger(),
103111mode: optionalStringEnum(BROWSER_SNAPSHOT_MODES),
104112snapshotFormat: optionalStringEnum(BROWSER_SNAPSHOT_FORMATS),
105113refs: optionalStringEnum(BROWSER_SNAPSHOT_REFS),
106114interactive: Type.Optional(Type.Boolean()),
107115compact: Type.Optional(Type.Boolean()),
108-depth: Type.Optional(Type.Number()),
116+depth: optionalNonNegativeInteger(),
109117selector: Type.Optional(Type.String()),
110118frame: Type.Optional(Type.String()),
111119labels: Type.Optional(Type.Boolean()),
@@ -117,7 +125,7 @@ export const BrowserToolSchema = Type.Object({
117125level: Type.Optional(Type.String()),
118126paths: Type.Optional(Type.Array(Type.String())),
119127inputRef: Type.Optional(Type.String()),
120-timeoutMs: Type.Optional(Type.Number()),
128+timeoutMs: optionalPositiveInteger(),
121129dialogId: Type.Optional(Type.String()),
122130accept: Type.Optional(Type.Boolean()),
123131promptText: Type.Optional(Type.String()),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。