Merge branch 'main' into feat/ext

This commit is contained in:
Simon
2026-01-22 15:31:07 +08:00
15 changed files with 61 additions and 43 deletions

View File

@@ -40,7 +40,7 @@
```html ```html
<script <script
src="https://registry.npmmirror.com/page-agent/1.0.0-beta.4/files/dist/iife/page-agent.demo.js" src="https://registry.npmmirror.com/page-agent/1.0.0-beta.5/files/dist/iife/page-agent.demo.js"
crossorigin="true" crossorigin="true"
></script> ></script>
``` ```
@@ -50,8 +50,8 @@
| 镜像 | URL | | 镜像 | URL |
| ------ | ----------------------------------------------------------------------------------------- | | ------ | ----------------------------------------------------------------------------------------- |
| Global | https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.4/dist/iife/page-agent.demo.js | | Global | https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.5/dist/iife/page-agent.demo.js |
| China | https://registry.npmmirror.com/page-agent/1.0.0-beta.4/files/dist/iife/page-agent.demo.js | | China | https://registry.npmmirror.com/page-agent/1.0.0-beta.5/files/dist/iife/page-agent.demo.js |
### NPM 安装 ### NPM 安装

View File

@@ -40,7 +40,7 @@ Fastest way to try PageAgent with our free Demo LLM:
```html ```html
<script <script
src="https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.4/dist/iife/page-agent.demo.js" src="https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.5/dist/iife/page-agent.demo.js"
crossorigin="true" crossorigin="true"
></script> ></script>
``` ```
@@ -50,8 +50,8 @@ Fastest way to try PageAgent with our free Demo LLM:
| Mirrors | URL | | Mirrors | URL |
| ------- | ----------------------------------------------------------------------------------------- | | ------- | ----------------------------------------------------------------------------------------- |
| Global | https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.4/dist/iife/page-agent.demo.js | | Global | https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.5/dist/iife/page-agent.demo.js |
| China | https://registry.npmmirror.com/page-agent/1.0.0-beta.4/files/dist/iife/page-agent.demo.js | | China | https://registry.npmmirror.com/page-agent/1.0.0-beta.5/files/dist/iife/page-agent.demo.js |
### NPM Installation ### NPM Installation

28
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "root", "name": "root",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "root", "name": "root",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT", "license": "MIT",
"workspaces": [ "workspaces": [
"packages/page-controller", "packages/page-controller",
@@ -11292,11 +11292,11 @@
}, },
"packages/core": { "packages/core": {
"name": "@page-agent/core", "name": "@page-agent/core",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@page-agent/llms": "1.0.0-beta.4", "@page-agent/llms": "1.0.0-beta.5",
"@page-agent/page-controller": "1.0.0-beta.4", "@page-agent/page-controller": "1.0.0-beta.5",
"chalk": "^5.6.2", "chalk": "^5.6.2",
"zod": "^4.3.5" "zod": "^4.3.5"
} }
@@ -11348,7 +11348,7 @@
}, },
"packages/llms": { "packages/llms": {
"name": "@page-agent/llms", "name": "@page-agent/llms",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2",
@@ -11356,20 +11356,20 @@
} }
}, },
"packages/page-agent": { "packages/page-agent": {
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@page-agent/core": "1.0.0-beta.4", "@page-agent/core": "1.0.0-beta.5",
"@page-agent/llms": "1.0.0-beta.4", "@page-agent/llms": "1.0.0-beta.5",
"@page-agent/page-controller": "1.0.0-beta.4", "@page-agent/page-controller": "1.0.0-beta.5",
"@page-agent/ui": "1.0.0-beta.4", "@page-agent/ui": "1.0.0-beta.5",
"chalk": "^5.6.2", "chalk": "^5.6.2",
"zod": "^4.3.5" "zod": "^4.3.5"
} }
}, },
"packages/page-controller": { "packages/page-controller": {
"name": "@page-agent/page-controller", "name": "@page-agent/page-controller",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"ai-motion": "^0.4.8" "ai-motion": "^0.4.8"
@@ -11377,12 +11377,12 @@
}, },
"packages/ui": { "packages/ui": {
"name": "@page-agent/ui", "name": "@page-agent/ui",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"license": "MIT" "license": "MIT"
}, },
"packages/website": { "packages/website": {
"name": "@page-agent/website", "name": "@page-agent/website",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"dependencies": { "dependencies": {
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-separator": "^1.1.8",

View File

@@ -1,7 +1,7 @@
{ {
"name": "root", "name": "root",
"private": true, "private": true,
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"workspaces": [ "workspaces": [
"packages/page-controller", "packages/page-controller",

View File

@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/core", "name": "@page-agent/core",
"private": false, "private": false,
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"main": "./dist/esm/page-agent-core.js", "main": "./dist/esm/page-agent-core.js",
"module": "./dist/esm/page-agent-core.js", "module": "./dist/esm/page-agent-core.js",
@@ -45,7 +45,7 @@
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2",
"zod": "^4.3.5", "zod": "^4.3.5",
"@page-agent/llms": "1.0.0-beta.4", "@page-agent/llms": "1.0.0-beta.5",
"@page-agent/page-controller": "1.0.0-beta.4" "@page-agent/page-controller": "1.0.0-beta.5"
} }
} }

View File

@@ -99,8 +99,7 @@ export class PageAgentCore extends EventTarget {
this.emitActivity({ type: 'retrying', attempt, maxAttempts }) this.emitActivity({ type: 'retrying', attempt, maxAttempts })
// Also push to history for panel rendering // Also push to history for panel rendering
this.history.push({ this.history.push({
type: 'error', type: 'retry',
errorType: 'retry',
message: `LLM retry attempt ${attempt} of ${maxAttempts}`, message: `LLM retry attempt ${attempt} of ${maxAttempts}`,
attempt, attempt,
maxAttempts, maxAttempts,
@@ -114,7 +113,6 @@ export class PageAgentCore extends EventTarget {
// Also push to history for panel rendering // Also push to history for panel rendering
this.history.push({ this.history.push({
type: 'error', type: 'error',
errorType: 'error',
message, message,
rawResponse: (error as InvokeError).rawResponse, rawResponse: (error as InvokeError).rawResponse,
}) })

View File

@@ -69,14 +69,21 @@ export interface UserTakeoverEvent {
} }
/** /**
* Error event (retry or error from LLM) * Retry event - LLM call is being retried
*/
export interface RetryEvent {
type: 'retry'
message: string
attempt: number
maxAttempts: number
}
/**
* Error event - fatal error from LLM or execution
*/ */
export interface AgentErrorEvent { export interface AgentErrorEvent {
type: 'error' type: 'error'
errorType: 'retry' | 'error'
message: string message: string
attempt?: number
maxAttempts?: number
rawResponse?: unknown rawResponse?: unknown
} }
@@ -87,6 +94,7 @@ export type HistoricalEvent =
| AgentStepEvent | AgentStepEvent
| ObservationEvent | ObservationEvent
| UserTakeoverEvent | UserTakeoverEvent
| RetryEvent
| AgentErrorEvent | AgentErrorEvent
/** /**

View File

@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/llms", "name": "@page-agent/llms",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"main": "./dist/lib/page-agent-llms.js", "main": "./dist/lib/page-agent-llms.js",
"module": "./dist/lib/page-agent-llms.js", "module": "./dist/lib/page-agent-llms.js",

View File

@@ -1,7 +1,7 @@
{ {
"name": "page-agent", "name": "page-agent",
"private": false, "private": false,
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"main": "./dist/esm/page-agent.js", "main": "./dist/esm/page-agent.js",
"module": "./dist/esm/page-agent.js", "module": "./dist/esm/page-agent.js",
@@ -46,9 +46,9 @@
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2",
"zod": "^4.3.5", "zod": "^4.3.5",
"@page-agent/llms": "1.0.0-beta.4", "@page-agent/llms": "1.0.0-beta.5",
"@page-agent/page-controller": "1.0.0-beta.4", "@page-agent/page-controller": "1.0.0-beta.5",
"@page-agent/core": "1.0.0-beta.4", "@page-agent/core": "1.0.0-beta.5",
"@page-agent/ui": "1.0.0-beta.4" "@page-agent/ui": "1.0.0-beta.5"
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/page-controller", "name": "@page-agent/page-controller",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"main": "./dist/lib/page-controller.js", "main": "./dist/lib/page-controller.js",
"module": "./dist/lib/page-controller.js", "module": "./dist/lib/page-controller.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/ui", "name": "@page-agent/ui",
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"main": "./dist/lib/page-agent-ui.js", "main": "./dist/lib/page-agent-ui.js",
"module": "./dist/lib/page-agent-ui.js", "module": "./dist/lib/page-agent-ui.js",

View File

@@ -608,6 +608,13 @@ export class Panel {
) )
} else if (event.type === 'user_takeover') { } else if (event.type === 'user_takeover') {
cards.push(createCard({ icon: '👤', content: 'User takeover', meta, type: 'input' })) cards.push(createCard({ icon: '👤', content: 'User takeover', meta, type: 'input' }))
} else if (event.type === 'retry') {
const retryInfo = `${event.message || 'Retrying'} (${event.attempt}/${event.maxAttempts})`
cards.push(createCard({ icon: '🔄', content: retryInfo, meta, type: 'observation' }))
} else if (event.type === 'error') {
cards.push(
createCard({ icon: '❌', content: event.message || 'Error', meta, type: 'observation' })
)
} }
return cards return cards

View File

@@ -33,7 +33,7 @@ export interface PanelAgentAdapter extends EventTarget {
/** History of agent events */ /** History of agent events */
readonly history: readonly { readonly history: readonly {
type: 'step' | 'observation' | 'user_takeover' | 'error' type: 'step' | 'observation' | 'user_takeover' | 'retry' | 'error'
stepIndex?: number stepIndex?: number
/** For 'step' type */ /** For 'step' type */
reflection?: { reflection?: {
@@ -49,6 +49,11 @@ export interface PanelAgentAdapter extends EventTarget {
} }
/** For 'observation' type */ /** For 'observation' type */
content?: string content?: string
/** For 'retry' type */
attempt?: number
maxAttempts?: number
/** For 'retry' and 'error' types */
message?: string
}[] }[]
/** Current task being executed */ /** Current task being executed */

View File

@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/website", "name": "@page-agent/website",
"private": true, "private": true,
"version": "1.0.0-beta.4", "version": "1.0.0-beta.5",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --host 0.0.0.0", "dev": "vite --host 0.0.0.0",

View File

@@ -1,8 +1,8 @@
// Demo build (auto-init with demo LLM, for quick testing) // Demo build (auto-init with demo LLM, for quick testing)
export const CDN_DEMO_URL = export const CDN_DEMO_URL =
'https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.4/dist/iife/page-agent.demo.js' 'https://cdn.jsdelivr.net/npm/page-agent@1.0.0-beta.5/dist/iife/page-agent.demo.js'
export const CDN_DEMO_CN_URL = export const CDN_DEMO_CN_URL =
'https://registry.npmmirror.com/page-agent/1.0.0-beta.4/files/dist/iife/page-agent.demo.js' 'https://registry.npmmirror.com/page-agent/1.0.0-beta.5/files/dist/iife/page-agent.demo.js'
// Demo LLM for website testing // Demo LLM for website testing
export const DEMO_MODEL = 'PAGE-AGENT-FREE-TESTING-RANDOM' export const DEMO_MODEL = 'PAGE-AGENT-FREE-TESTING-RANDOM'