Compare commits

...

7 Commits

Author SHA1 Message Date
Simon fa4664dfa5 chore(deps): bump dependencies (#612) 2026-07-10 17:41:53 +08:00
Simon 4122735bba chore(version): bump version to 1.12.1 2026-07-10 17:09:56 +08:00
Simon 1cab66b898 feat(llms): update model list and patches (#611)
* fix(llms): gpt patch

* feat(llms): patch `hunyuan` models

* feat(llms): update model list
2026-07-10 17:08:14 +08:00
Simon d5c994708c chore(llms): gate live model tests behind test:live (#610)
* chore(llms): gate live model tests behind test:live

Keep *.live.test.ts out of npm test so local CI stays fast; run them
explicitly via npm run test:live when checking provider compatibility.

* chore: skill gh permission
2026-07-10 15:48:52 +08:00
Simon 4c76a5f1d2 fix(ci): pin release workflow to npm 11 (#609)
npm@latest now resolves to npm 12, whose install-time security defaults break the release pipeline.
2026-07-10 14:49:17 +08:00
Simon e8c8ab0d78 chore(ci): remove workflow_dispatch from main workflows (#605) 2026-07-09 16:05:42 +08:00
Simon 9705fb964e docs: readme 2026-07-09 16:00:25 +08:00
22 changed files with 456 additions and 449 deletions
@@ -24,6 +24,13 @@ Before attempting to push or open a PR, verify that the necessary tools are avai
- Check that `gh` CLI is installed and authenticated (`gh auth status`). If not available, stop and ask the user to install and authenticate GitHub CLI first. - Check that `gh` CLI is installed and authenticated (`gh auth status`). If not available, stop and ask the user to install and authenticate GitHub CLI first.
- If the workflow uses MCP tools for GitHub operations, verify the MCP server is accessible. - If the workflow uses MCP tools for GitHub operations, verify the MCP server is accessible.
## Shell Permissions
`gh` reads credentials from the OS keyring. A sandboxed shell cannot reach the keyring and will report a false auth failure.
- Run every `gh` command (`gh auth status`, `gh pr create`, `gh pr view`, …) and every `git push` / `git fetch` that talks to GitHub with full permissions on the **first** attempt (`required_permissions: ["all"]` for the Shell tool). Do not probe these in the sandbox first.
- Local read-only git inspection (`git status`, `git diff`, `git log`, `git branch`) may stay sandboxed.
## Procedure ## Procedure
1. **Read contribution rules.** Read `CONTRIBUTING.md` and any package-level instructions (e.g. `packages/*/AGENTS.md`) relevant to the changed files. 1. **Read contribution rules.** Read `CONTRIBUTING.md` and any package-level instructions (e.g. `packages/*/AGENTS.md`) relevant to the changed files.
-1
View File
@@ -3,7 +3,6 @@ name: Deploy Website
on: on:
push: push:
branches: [main] branches: [main]
workflow_dispatch:
jobs: jobs:
deploy: deploy:
-1
View File
@@ -7,7 +7,6 @@ permissions:
on: on:
push: push:
branches: [main] branches: [main]
workflow_dispatch:
jobs: jobs:
test: test:
+2 -2
View File
@@ -23,9 +23,9 @@ jobs:
node-version: 24 node-version: 24
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'
# Ensure npm 11.5.1 or later is installed # Stay on the latest npm 11 release
- name: Update npm - name: Update npm
run: npm install -g npm@latest run: npm install -g npm@11
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci
+1
View File
@@ -132,6 +132,7 @@ const pageInfo = await this.pageController.getPageInfo()
- **Location**: co-located, `src/foo.test.ts` next to `src/foo.ts` - **Location**: co-located, `src/foo.test.ts` next to `src/foo.ts`
- **Coverage today**: `packages/llms` only — other packages will follow incrementally - **Coverage today**: `packages/llms` only — other packages will follow incrementally
- **Adding tests to a new package**: create `vitest.config.ts` in the package and add a `"test": "vitest run"` script. Root `npm test` and `node scripts/ci.js` pick it up through npm workspaces. - **Adding tests to a new package**: create `vitest.config.ts` in the package and add a `"test": "vitest run"` script. Root `npm test` and `node scripts/ci.js` pick it up through npm workspaces.
- **Live tests** (hit real external APIs, slow/costly): name them `*.live.test.ts`, exclude them from the package's `test` script, and expose them via a `test:live` script. Root `npm run test:live` runs all of them; they never run in `npm test` or CI. Template: `packages/llms`.
- **Template**: See @page-agent/llms - **Template**: See @page-agent/llms
```bash ```bash
+4 -5
View File
@@ -56,19 +56,18 @@ Fastest way to try PageAgent with our free Demo LLM:
```html ```html
<script <script
src="https://cdn.jsdelivr.net/npm/page-agent@1.12.0/dist/iife/page-agent.demo.js" src="https://cdn.jsdelivr.net/npm/page-agent@1.12.1/dist/iife/page-agent.demo.js"
crossorigin="anonymous" crossorigin="anonymous"
></script> ></script>
``` ```
> **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you agree to its [terms](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md). > **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you agree to its [terms](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md).
> Add `?autoInit=false` to load the script without creating the demo agent automatically. You can then instantiate it with `new window.PageAgent(...)`.
| Mirrors | URL | | Mirrors | URL |
| ------- | ----------------------------------------------------------------------------------- | | ------- | ----------------------------------------------------------------------------------- |
| Global | https://cdn.jsdelivr.net/npm/page-agent@1.12.0/dist/iife/page-agent.demo.js | | Global | https://cdn.jsdelivr.net/npm/page-agent@1.12.1/dist/iife/page-agent.demo.js |
| China | https://registry.npmmirror.com/page-agent/1.12.0/files/dist/iife/page-agent.demo.js | | China | https://registry.npmmirror.com/page-agent/1.12.1/files/dist/iife/page-agent.demo.js |
Add `?autoInit=false` to load the script without creating the demo agent automatically. You can then instantiate it with `new window.PageAgent(...)`.
### NPM Installation ### NPM Installation
+4 -5
View File
@@ -55,19 +55,18 @@
```html ```html
<script <script
src="https://cdn.jsdelivr.net/npm/page-agent@1.12.0/dist/iife/page-agent.demo.js" src="https://cdn.jsdelivr.net/npm/page-agent@1.12.1/dist/iife/page-agent.demo.js"
crossorigin="anonymous" crossorigin="anonymous"
></script> ></script>
``` ```
> **⚠️ 仅用于技术评估。** 该 Demo CDN 使用了免费的[测试 LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api),使用即表示您同意其[条款](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md)。 > **⚠️ 仅用于技术评估。** 该 Demo CDN 使用了免费的[测试 LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api),使用即表示您同意其[条款](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md)。
> 在 URL 后添加 `?autoInit=false` 可只加载脚本,不自动创建 Demo Agent;之后可通过 `new window.PageAgent(...)` 手动初始化。
| Mirrors | URL | | Mirrors | URL |
| ------- | ----------------------------------------------------------------------------------- | | ------- | ----------------------------------------------------------------------------------- |
| Global | https://cdn.jsdelivr.net/npm/page-agent@1.12.0/dist/iife/page-agent.demo.js | | Global | https://cdn.jsdelivr.net/npm/page-agent@1.12.1/dist/iife/page-agent.demo.js |
| China | https://registry.npmmirror.com/page-agent/1.12.0/files/dist/iife/page-agent.demo.js | | China | https://registry.npmmirror.com/page-agent/1.12.1/files/dist/iife/page-agent.demo.js |
在 URL 后添加 `?autoInit=false` 可只加载脚本,不自动创建 Demo Agent;之后可通过 `new window.PageAgent(...)` 手动初始化。
### NPM 安装 ### NPM 安装
+346 -385
View File
File diff suppressed because it is too large Load Diff
+7 -6
View File
@@ -1,7 +1,7 @@
{ {
"name": "root", "name": "root",
"private": true, "private": true,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"workspaces": [ "workspaces": [
"packages/page-controller", "packages/page-controller",
@@ -37,20 +37,21 @@
"postpublish": "npm run postpublish --workspaces --if-present", "postpublish": "npm run postpublish --workspaces --if-present",
"typecheck": "tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json", "typecheck": "tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json",
"test": "npm test --workspaces --if-present", "test": "npm test --workspaces --if-present",
"test:live": "npm run test:live --workspaces --if-present",
"lint": "eslint .", "lint": "eslint .",
"ci": "node scripts/ci.js", "ci": "node scripts/ci.js",
"cleanup": "rm -rf packages/*/dist && rm -rf packages/*/.output", "cleanup": "rm -rf packages/*/dist && rm -rf packages/*/.output",
"prepare": "husky || true" "prepare": "husky || true"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^21.2.0", "@commitlint/cli": "^21.2.1",
"@commitlint/config-conventional": "^21.2.0", "@commitlint/config-conventional": "^21.2.0",
"@eslint-react/eslint-plugin": "^5.11.2", "@eslint-react/eslint-plugin": "^5.13.2",
"@eslint/js": "^10.0.1", "@eslint/js": "^10.0.1",
"@microsoft/api-extractor": "^7.58.9", "@microsoft/api-extractor": "^7.58.9",
"@tailwindcss/vite": "^4.3.2", "@tailwindcss/vite": "^4.3.2",
"@trivago/prettier-plugin-sort-imports": "^6.0.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"@types/node": "^26.1.0", "@types/node": "^26.1.1",
"@vitejs/plugin-react": "^6.0.3", "@vitejs/plugin-react": "^6.0.3",
"chalk": "^5.6.2", "chalk": "^5.6.2",
"concurrently": "^10.0.3", "concurrently": "^10.0.3",
@@ -60,11 +61,11 @@
"happy-dom": "^20.10.6", "happy-dom": "^20.10.6",
"husky": "^9.1.7", "husky": "^9.1.7",
"lint-staged": "^17.0.8", "lint-staged": "^17.0.8",
"prettier": "^3.9.4", "prettier": "^3.9.5",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"typescript-eslint": "^8.63.0", "typescript-eslint": "^8.63.0",
"unplugin-dts": "^1.0.3", "unplugin-dts": "^1.0.3",
"vite": "^8.1.3", "vite": "^8.1.4",
"vite-plugin-css-injected-by-js": "^5.0.1", "vite-plugin-css-injected-by-js": "^5.0.1",
"vitest": "^4.1.10" "vitest": "^4.1.10"
}, },
+3 -3
View File
@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/core", "name": "@page-agent/core",
"private": false, "private": false,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"main": "./src/PageAgentCore.ts", "main": "./src/PageAgentCore.ts",
"types": "./src/PageAgentCore.ts", "types": "./src/PageAgentCore.ts",
@@ -55,8 +55,8 @@
}, },
"dependencies": { "dependencies": {
"chalk": "^5.6.2", "chalk": "^5.6.2",
"@page-agent/llms": "1.12.0", "@page-agent/llms": "1.12.1",
"@page-agent/page-controller": "1.12.0" "@page-agent/page-controller": "1.12.1"
}, },
"peerDependencies": { "peerDependencies": {
"zod": "^3.25.0 || ^4.0.0" "zod": "^3.25.0 || ^4.0.0"
+8 -8
View File
@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/ext", "name": "@page-agent/ext",
"private": true, "private": true,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "wxt", "dev": "wxt",
@@ -10,12 +10,12 @@
"postinstall": "wxt prepare" "postinstall": "wxt prepare"
}, },
"devDependencies": { "devDependencies": {
"@radix-ui/react-hover-card": "^1.1.18", "@radix-ui/react-hover-card": "^1.1.19",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.11", "@radix-ui/react-label": "^2.1.11",
"@radix-ui/react-separator": "^1.1.11", "@radix-ui/react-separator": "^1.1.11",
"@radix-ui/react-slot": "^1.3.0", "@radix-ui/react-slot": "^1.3.0",
"@radix-ui/react-switch": "^1.3.2", "@radix-ui/react-switch": "^1.3.3",
"@tailwindcss/vite": "^4.3.2", "@tailwindcss/vite": "^4.3.2",
"@types/chrome": "^0.2.2", "@types/chrome": "^0.2.2",
"@types/react": "^19.2.17", "@types/react": "^19.2.17",
@@ -24,7 +24,7 @@
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"idb": "^8.0.3", "idb": "^8.0.3",
"lucide-react": "^1.23.0", "lucide-react": "^1.24.0",
"motion": "^12.42.2", "motion": "^12.42.2",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"react": "^19.2.7", "react": "^19.2.7",
@@ -38,10 +38,10 @@
"wxt": "^0.20.27" "wxt": "^0.20.27"
}, },
"dependencies": { "dependencies": {
"@page-agent/core": "1.12.0", "@page-agent/core": "1.12.1",
"@page-agent/llms": "1.12.0", "@page-agent/llms": "1.12.1",
"@page-agent/page-controller": "1.12.0", "@page-agent/page-controller": "1.12.1",
"@page-agent/ui": "1.12.0", "@page-agent/ui": "1.12.1",
"ai-motion": "^0.4.8", "ai-motion": "^0.4.8",
"chalk": "^5.6.2" "chalk": "^5.6.2"
}, },
+3 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/llms", "name": "@page-agent/llms",
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"main": "./src/index.ts", "main": "./src/index.ts",
"types": "./src/index.ts", "types": "./src/index.ts",
@@ -43,7 +43,8 @@
"homepage": "https://alibaba.github.io/page-agent/", "homepage": "https://alibaba.github.io/page-agent/",
"scripts": { "scripts": {
"build": "vite build", "build": "vite build",
"test": "vitest run", "test": "vitest run --project llms",
"test:live": "vitest run --project llms:live",
"prepublishOnly": "node ../../scripts/pre-publish.js", "prepublishOnly": "node ../../scripts/pre-publish.js",
"postpublish": "node ../../scripts/post-publish.js" "postpublish": "node ../../scripts/post-publish.js"
}, },
@@ -10,9 +10,10 @@
* Tests `OpenAIClient` directly (not the `LLM` retry wrapper), so a failure * Tests `OpenAIClient` directly (not the `LLM` retry wrapper), so a failure
* always reflects the very first request/response no retry can mask it. * always reflects the very first request/response no retry can mask it.
* *
* Each provider's tests skip (not fail) when its `TESTING_*_KEY` env var is * Per the `*.live.test.ts` convention this suite is excluded from `npm test`
* absent, so this stays CI-safe. To actually run these, put keys in the * (slow, costs tokens) run it manually with `npm run test:live`. Each
* repo-root `.env`: * provider's tests skip (not fail) when its `TESTING_*_KEY` env var is
* absent. Keys live in the repo-root `.env`:
* *
* TESTING_OPENROUTER_KEY=... * TESTING_OPENROUTER_KEY=...
* TESTING_DEEPSEEK_KEY=... * TESTING_DEEPSEEK_KEY=...
@@ -50,6 +51,9 @@ const MODEL_GROUPS: Record<string, string[]> = {
'qwen3-max', 'qwen3-max',
], ],
OpenAI: [ OpenAI: [
'gpt-5.6-sol',
'gpt-5.6-terra',
'gpt-5.6-luna',
'gpt-5.5', 'gpt-5.5',
'gpt-5.4', 'gpt-5.4',
'gpt-5.4-mini', 'gpt-5.4-mini',
@@ -79,7 +83,8 @@ const MODEL_GROUPS: Record<string, string[]> = {
'claude-haiku-4-5', 'claude-haiku-4-5',
], ],
MiniMax: ['MiniMax-M3', 'MiniMax-M2.7', 'MiniMax-M2.5'], MiniMax: ['MiniMax-M3', 'MiniMax-M2.7', 'MiniMax-M2.5'],
xAI: ['grok-4.3', 'grok-build-0.1'], xAI: ['grok-4.5', 'grok-4.3', 'grok-build-0.1'],
Tencent: ['hy3'],
MoonshotAI: ['kimi-k2.7-code', 'kimi-k2.6', 'kimi-k2.5'], MoonshotAI: ['kimi-k2.7-code', 'kimi-k2.6', 'kimi-k2.5'],
'Z.AI': ['glm-5.2', 'glm-5.1', 'glm-5', 'glm-4.7'], 'Z.AI': ['glm-5.2', 'glm-5.1', 'glm-5', 'glm-4.7'],
} }
@@ -97,6 +102,7 @@ const OPENROUTER_VENDOR_SLUG: Record<string, string> = {
Anthropic: 'anthropic', Anthropic: 'anthropic',
MiniMax: 'minimax', MiniMax: 'minimax',
xAI: 'x-ai', xAI: 'x-ai',
Tencent: 'tencent',
MoonshotAI: 'moonshotai', MoonshotAI: 'moonshotai',
'Z.AI': 'z-ai', 'Z.AI': 'z-ai',
} }
@@ -106,7 +112,7 @@ const OPENROUTER_VENDOR_SLUG: Record<string, string> = {
* `<vendor-slug>/<lowercased-name>` heuristic dated snapshots, "-preview" * `<vendor-slug>/<lowercased-name>` heuristic dated snapshots, "-preview"
* suffixes, "v"-prefixed versions, or dots instead of hyphens in the * suffixes, "v"-prefixed versions, or dots instead of hyphens in the
* version number. Verified against `GET https://openrouter.ai/api/v1/models` * version number. Verified against `GET https://openrouter.ai/api/v1/models`
* on 2026-07-03; re-check when models are added to `MODEL_GROUPS`. * on 2026-07-10; re-check when models are added to `MODEL_GROUPS`.
*/ */
const OPENROUTER_ID_OVERRIDES: Record<string, string> = { const OPENROUTER_ID_OVERRIDES: Record<string, string> = {
'qwen3.6-max': 'qwen/qwen3.6-max-preview', 'qwen3.6-max': 'qwen/qwen3.6-max-preview',
+21 -6
View File
@@ -62,17 +62,26 @@ export function modelPatch(body: Record<string, any>, baseURL?: string) {
if (modelName.startsWith('gpt')) { if (modelName.startsWith('gpt')) {
if (modelName.startsWith('gpt-5')) { if (modelName.startsWith('gpt-5')) {
body.verbosity = 'low' body.verbosity = 'low'
// gpt-5 gpt-5-mini gpt-5-nano only supports "minimal";
// 5.1+ supports "none".
body.reasoning_effort = /^gpt-5(-|$)/.test(modelName) ? 'minimal' : 'none'
debug(`Patch GPT-5: verbosity=low, reasoning_effort=${body.reasoning_effort}`)
} }
// Since gpt-5.4, /chat/completions rejects any explicit reasoning_effort
// when function tools are present. Newer models are expected to follow.
// - gpt-5.1 / gpt-5.2 can fully disable reasoning
// - gpt-5 / -mini / -nano bottom out at "minimal"
// - everything else (gpt-4.x, chat-latest, gpt-5.4+) must not receive it
if (modelName.includes('chat-latest')) { if (modelName.includes('chat-latest')) {
debug('Omitting reasoning_effort and temperature for chat-latest') debug('Patch chat-latest: omit reasoning_effort and temperature')
delete body.reasoning_effort delete body.reasoning_effort
delete body.temperature delete body.temperature
} else if (/^gpt-5[12](-|$)/.test(modelName)) {
debug('Patch GPT-5.1/5.2: reasoning_effort=none')
body.reasoning_effort = 'none'
} else if (/^gpt-5(-|$)/.test(modelName)) {
debug('Patch GPT-5: reasoning_effort=minimal')
body.reasoning_effort = 'minimal'
} else {
debug('Patch GPT: omit reasoning_effort')
delete body.reasoning_effort
} }
} }
@@ -125,6 +134,12 @@ export function modelPatch(body: Record<string, any>, baseURL?: string) {
body.thinking = { type: 'disabled' } body.thinking = { type: 'disabled' }
} }
if (modelName.startsWith('hy')) {
debug('Patch Hunyuan: disable thinking, reasoning_effort=low')
body.thinking = { type: 'disabled' }
body.reasoning_effort = 'low'
}
if (modelName.startsWith('grok')) { if (modelName.startsWith('grok')) {
if (/^grok-4-?3/.test(modelName)) { if (/^grok-4-?3/.test(modelName)) {
debug('Patch Grok 4.3: reasoning_effort=none') debug('Patch Grok 4.3: reasoning_effort=none')
+20 -5
View File
@@ -1,12 +1,27 @@
import { defineConfig } from 'vitest/config' import { configDefaults, defineConfig } from 'vitest/config'
// Convention: `*.live.test.ts` hits real provider APIs (slow, costs tokens)
// and only runs via `npm run test:live`. Everything else runs on `npm test`.
export default defineConfig({ export default defineConfig({
test: { test: {
name: 'llms',
include: ['src/**/*.test.ts'],
// Keep live provider suites under OpenRouter's ~20 req/min free-route cap.
maxConcurrency: 2,
// Suppress console output from passing tests; failed tests still get their logs. // Suppress console output from passing tests; failed tests still get their logs.
silent: 'passed-only', silent: 'passed-only',
projects: [
{
test: {
name: 'llms',
include: ['src/**/*.test.ts'],
exclude: [...configDefaults.exclude, 'src/**/*.live.test.ts'],
},
},
{
test: {
name: 'llms:live',
include: ['src/**/*.live.test.ts'],
// Keep live provider suites under OpenRouter's ~20 req/min free-route cap.
maxConcurrency: 2,
},
},
],
}, },
}) })
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/mcp", "name": "@page-agent/mcp",
"private": false, "private": false,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"bin": { "bin": {
"page-agent-mcp": "src/index.js" "page-agent-mcp": "src/index.js"
+5 -5
View File
@@ -1,7 +1,7 @@
{ {
"name": "page-agent", "name": "page-agent",
"private": false, "private": false,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"main": "./src/PageAgent.ts", "main": "./src/PageAgent.ts",
"types": "./src/PageAgent.ts", "types": "./src/PageAgent.ts",
@@ -54,10 +54,10 @@
"postpublish": "node ../../scripts/post-publish.js" "postpublish": "node ../../scripts/post-publish.js"
}, },
"dependencies": { "dependencies": {
"@page-agent/core": "1.12.0", "@page-agent/core": "1.12.1",
"@page-agent/llms": "1.12.0", "@page-agent/llms": "1.12.1",
"@page-agent/page-controller": "1.12.0", "@page-agent/page-controller": "1.12.1",
"@page-agent/ui": "1.12.0", "@page-agent/ui": "1.12.1",
"chalk": "^5.6.2" "chalk": "^5.6.2"
}, },
"peerDependencies": { "peerDependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/page-controller", "name": "@page-agent/page-controller",
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"main": "./src/PageController.ts", "main": "./src/PageController.ts",
"types": "./src/PageController.ts", "types": "./src/PageController.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@page-agent/ui", "name": "@page-agent/ui",
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"main": "./src/index.ts", "main": "./src/index.ts",
"types": "./src/index.ts", "types": "./src/index.ts",
+4 -4
View File
@@ -1,7 +1,7 @@
{ {
"name": "@page-agent/website", "name": "@page-agent/website",
"private": true, "private": true,
"version": "1.12.0", "version": "1.12.1",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --host 0.0.0.0", "dev": "vite --host 0.0.0.0",
@@ -12,13 +12,13 @@
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-separator": "^1.1.11", "@radix-ui/react-separator": "^1.1.11",
"@radix-ui/react-slot": "^1.3.0", "@radix-ui/react-slot": "^1.3.0",
"@radix-ui/react-switch": "^1.3.2", "@radix-ui/react-switch": "^1.3.3",
"@radix-ui/react-tooltip": "^1.2.11", "@radix-ui/react-tooltip": "^1.2.12",
"@types/react": "^19.2.17", "@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3", "@types/react-dom": "^19.2.3",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"lucide-react": "^1.23.0", "lucide-react": "^1.24.0",
"motion": "^12.42.2", "motion": "^12.42.2",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"react": "^19.2.7", "react": "^19.2.7",
+2 -2
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.12.0/dist/iife/page-agent.demo.js' 'https://cdn.jsdelivr.net/npm/page-agent@1.12.1/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.12.0/files/dist/iife/page-agent.demo.js' 'https://registry.npmmirror.com/page-agent/1.12.1/files/dist/iife/page-agent.demo.js'
// Demo LLM for website testing (homepage quick trial uses flash) // Demo LLM for website testing (homepage quick trial uses flash)
export const DEMO_MODEL = 'qwen3.5-flash' export const DEMO_MODEL = 'qwen3.5-flash'
@@ -29,6 +29,9 @@ const MODEL_GROUPS: Record<string, string[]> = {
// 'qwen3-coder-next', // low success rate // 'qwen3-coder-next', // low success rate
], ],
OpenAI: [ OpenAI: [
'gpt-5.6-sol',
'gpt-5.6-terra',
'gpt-5.6-luna',
'gpt-5.5', 'gpt-5.5',
'gpt-5.4', 'gpt-5.4',
'gpt-5.4-mini', 'gpt-5.4-mini',
@@ -63,7 +66,8 @@ const MODEL_GROUPS: Record<string, string[]> = {
'MiniMax-M2.7', 'MiniMax-M2.7',
'MiniMax-M2.5', 'MiniMax-M2.5',
], ],
xAI: ['grok-4.3', 'grok-build-0.1'], xAI: ['grok-4.5', 'grok-4.3', 'grok-build-0.1'],
Tencent: ['hy3'],
MoonshotAI: ['kimi-k2.7-code', 'kimi-k2.6', 'kimi-k2.5'], MoonshotAI: ['kimi-k2.7-code', 'kimi-k2.6', 'kimi-k2.5'],
'Z.AI': ['glm-5.2', 'glm-5.1', 'glm-5', 'glm-4.7'], 'Z.AI': ['glm-5.2', 'glm-5.1', 'glm-5', 'glm-4.7'],
} }