Merge pull request #158 from alibaba/fix/zod-v3

feat: import zod properly
This commit is contained in:
Simon
2026-03-05 19:23:47 +08:00
committed by GitHub
17 changed files with 74 additions and 21 deletions

27
package-lock.json generated
View File

@@ -11118,8 +11118,13 @@
"dependencies": { "dependencies": {
"@page-agent/llms": "1.4.4", "@page-agent/llms": "1.4.4",
"@page-agent/page-controller": "1.4.4", "@page-agent/page-controller": "1.4.4",
"chalk": "^5.6.2", "chalk": "^5.6.2"
},
"devDependencies": {
"zod": "^4.3.5" "zod": "^4.3.5"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
} }
}, },
"packages/extension": { "packages/extension": {
@@ -11132,8 +11137,7 @@
"@page-agent/page-controller": "1.4.4", "@page-agent/page-controller": "1.4.4",
"@page-agent/ui": "1.4.4", "@page-agent/ui": "1.4.4",
"ai-motion": "^0.4.8", "ai-motion": "^0.4.8",
"chalk": "^5.6.2", "chalk": "^5.6.2"
"zod": "^4.3.5"
}, },
"devDependencies": { "devDependencies": {
"@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-hover-card": "^1.1.15",
@@ -11162,6 +11166,9 @@
"tailwindcss": "^4.1.14", "tailwindcss": "^4.1.14",
"tw-animate-css": "^1.4.0", "tw-animate-css": "^1.4.0",
"wxt": "^0.20.18" "wxt": "^0.20.18"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
} }
}, },
"packages/llms": { "packages/llms": {
@@ -11169,8 +11176,13 @@
"version": "1.4.4", "version": "1.4.4",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2"
},
"devDependencies": {
"zod": "^4.3.5" "zod": "^4.3.5"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
} }
}, },
"packages/page-agent": { "packages/page-agent": {
@@ -11181,8 +11193,13 @@
"@page-agent/llms": "1.4.4", "@page-agent/llms": "1.4.4",
"@page-agent/page-controller": "1.4.4", "@page-agent/page-controller": "1.4.4",
"@page-agent/ui": "1.4.4", "@page-agent/ui": "1.4.4",
"chalk": "^5.6.2", "chalk": "^5.6.2"
},
"devDependencies": {
"zod": "^4.3.5" "zod": "^4.3.5"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
} }
}, },
"packages/page-controller": { "packages/page-controller": {

View File

@@ -44,8 +44,13 @@
}, },
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2",
"zod": "^4.3.5",
"@page-agent/llms": "1.4.4", "@page-agent/llms": "1.4.4",
"@page-agent/page-controller": "1.4.4" "@page-agent/page-controller": "1.4.4"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
},
"devDependencies": {
"zod": "^4.3.5"
} }
} }

View File

@@ -5,7 +5,7 @@
import { InvokeError, LLM, type Tool } from '@page-agent/llms' import { InvokeError, LLM, type Tool } from '@page-agent/llms'
import type { BrowserState, PageController } from '@page-agent/page-controller' import type { BrowserState, PageController } from '@page-agent/page-controller'
import chalk from 'chalk' import chalk from 'chalk'
import * as z from 'zod' import * as z from 'zod/v4'
import SYSTEM_PROMPT from './prompts/system_prompt.md?raw' import SYSTEM_PROMPT from './prompts/system_prompt.md?raw'
import { tools } from './tools' import { tools } from './tools'

View File

@@ -2,7 +2,7 @@
* Internal tools for PageAgent. * Internal tools for PageAgent.
* @note Adapted from browser-use * @note Adapted from browser-use
*/ */
import * as z from 'zod' import * as z from 'zod/v4'
import type { PageAgentCore } from '../PageAgentCore' import type { PageAgentCore } from '../PageAgentCore'
import { waitFor } from '../utils' import { waitFor } from '../utils'

View File

@@ -24,13 +24,14 @@ export interface AgentConfig extends LLMConfig {
* *
* @example * @example
* // override internal tool * // override internal tool
* import { z } from 'zod/v4'
* import { tool } from 'page-agent' * import { tool } from 'page-agent'
* const customTools = { * const customTools = {
* ask_user: tool({ * ask_user: tool({
* description: * description:
* 'Ask the user or parent model a question and wait for their answer. Use this if you need more information or clarification.', * 'Ask the user or parent model a question and wait for their answer. Use this if you need more information or clarification.',
* inputSchema: zod.object({ * inputSchema: z.object({
* question: zod.string(), * question: z.string(),
* }), * }),
* execute: async function (this: PageAgent, input) { * execute: async function (this: PageAgent, input) {
* const answer = await do_some_thing(input.question) * const answer = await do_some_thing(input.question)

View File

@@ -1,6 +1,6 @@
import { InvokeError, InvokeErrorType } from '@page-agent/llms' import { InvokeError, InvokeErrorType } from '@page-agent/llms'
import chalk from 'chalk' import chalk from 'chalk'
import * as z from 'zod' import * as z from 'zod/v4'
import type { PageAgentTool } from '../tools' import type { PageAgentTool } from '../tools'

View File

@@ -30,6 +30,7 @@ export default defineConfig({
external: [ external: [
'chalk', 'chalk',
'zod', 'zod',
'zod/v4',
// all the internal packages // all the internal packages
/^@page-agent\//, /^@page-agent\//,
], ],

View File

@@ -43,7 +43,9 @@
"@page-agent/page-controller": "1.4.4", "@page-agent/page-controller": "1.4.4",
"@page-agent/ui": "1.4.4", "@page-agent/ui": "1.4.4",
"ai-motion": "^0.4.8", "ai-motion": "^0.4.8",
"chalk": "^5.6.2", "chalk": "^5.6.2"
"zod": "^4.3.5" },
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
} }
} }

View File

@@ -6,7 +6,7 @@
* - switch_to_tab: Switch to an existing tab * - switch_to_tab: Switch to an existing tab
* - close_tab: Close a tab (optionally switch to another) * - close_tab: Close a tab (optionally switch to another)
*/ */
import * as z from 'zod' import * as z from 'zod/v4'
import type { TabsController } from './TabsController' import type { TabsController } from './TabsController'

View File

@@ -37,7 +37,12 @@
"postpublish": "node -e \"['LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\"" "postpublish": "node -e \"['LICENSE'].forEach(f=>{try{require('fs').unlinkSync(f)}catch{}})\""
}, },
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
},
"devDependencies": {
"zod": "^4.3.5" "zod": "^4.3.5"
} }
} }

View File

@@ -1,7 +1,7 @@
/** /**
* OpenAI Client implementation * OpenAI Client implementation
*/ */
import * as z from 'zod' import * as z from 'zod/v4'
import { InvokeError, InvokeErrorType } from './errors' import { InvokeError, InvokeErrorType } from './errors'
import type { InvokeOptions, InvokeResult, LLMClient, LLMConfig, Message, Tool } from './types' import type { InvokeOptions, InvokeResult, LLMClient, LLMConfig, Message, Tool } from './types'

View File

@@ -1,7 +1,7 @@
/** /**
* Core types for LLM integration * Core types for LLM integration
*/ */
import type * as z from 'zod' import type * as z from 'zod/v4'
/** /**
* Message format - OpenAI standard (industry standard) * Message format - OpenAI standard (industry standard)

View File

@@ -2,7 +2,7 @@
* Utility functions for LLM integration * Utility functions for LLM integration
*/ */
import chalk from 'chalk' import chalk from 'chalk'
import * as z from 'zod' import * as z from 'zod/v4'
import type { Tool } from './types' import type { Tool } from './types'

View File

@@ -25,7 +25,7 @@ export default defineConfig({
}, },
outDir: resolve(__dirname, 'dist', 'lib'), outDir: resolve(__dirname, 'dist', 'lib'),
rollupOptions: { rollupOptions: {
external: ['chalk', 'zod'], external: ['chalk', 'zod', 'zod/v4'],
}, },
minify: false, minify: false,
sourcemap: true, sourcemap: true,

View File

@@ -48,7 +48,12 @@
"@page-agent/llms": "1.4.4", "@page-agent/llms": "1.4.4",
"@page-agent/page-controller": "1.4.4", "@page-agent/page-controller": "1.4.4",
"@page-agent/ui": "1.4.4", "@page-agent/ui": "1.4.4",
"chalk": "^5.6.2", "chalk": "^5.6.2"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
},
"devDependencies": {
"zod": "^4.3.5" "zod": "^4.3.5"
} }
} }

View File

@@ -30,6 +30,7 @@ export default defineConfig({
external: [ external: [
'chalk', 'chalk',
'zod', 'zod',
'zod/v4',
// all the internal packages // all the internal packages
/^@page-agent\//, /^@page-agent\//,
], ],

View File

@@ -16,6 +16,22 @@ export default function CustomTools() {
</p> </p>
<div className="space-y-8"> <div className="space-y-8">
<section>
<Heading id="zod-version" className="text-2xl font-bold mb-4">
{isZh ? 'Zod 版本' : 'Zod Version'}
</Heading>
<p className="text-gray-600 dark:text-gray-300 mb-4">
{isZh
? 'Page Agent 使用 Zod 定义工具的输入 schema。支持 Zod 3 (>=3.25.0) 和 Zod 4请从 zod/v4 子路径导入。不支持 Zod Mini。'
: 'Page Agent uses Zod for tool input schemas. Both Zod 3 (>=3.25.0) and Zod 4 are supported. Always import from the zod/v4 subpath. Zod Mini is not supported.'}
</p>
<CodeEditor
code={`// Zod 3 (>=3.25.0) or Zod 4
import { z } from 'zod/v4'`}
language="javascript"
/>
</section>
<section> <section>
<Heading id="define-tools" className="text-2xl font-bold mb-4"> <Heading id="define-tools" className="text-2xl font-bold mb-4">
{isZh ? '定义工具' : 'Define Tools'} {isZh ? '定义工具' : 'Define Tools'}
@@ -27,7 +43,7 @@ export default function CustomTools() {
</p> </p>
<CodeEditor <CodeEditor
code={`import { z } from 'zod' code={`import { z } from 'zod/v4'
import { PageAgent, tool } from 'page-agent' import { PageAgent, tool } from 'page-agent'
const pageAgent = new PageAgent({ const pageAgent = new PageAgent({