From db2ab1e91435b7d0b5aef35c6bceecb0f2944653 Mon Sep 17 00:00:00 2001 From: Quanwei Tang <1076451802@qq.com> Date: Sun, 9 Aug 2026 10:23:04 +0800 Subject: [PATCH 1/2] feat: add secure local web UI --- .github/workflows/ci.yml | 2 +- .../CodexProviderSync.App.csproj | 6 +- .../CodexProviderSync.Application.csproj | 6 +- .../CodexProviderSync.Automation.csproj | 6 +- .../CodexProviderSync.Core.csproj | 6 +- .../ApplicationAndDialogContractTests.cs | 2 +- .../CodexProviderSync.GuiE2E.csproj | 6 +- .../CodexProviderSync.Mac.csproj | 6 +- package-lock.json | 1266 ++++++++++++++++- package.json | 26 +- scripts/publish-npm.js | 89 ++ src/backup.js | 19 + src/cli.js | 45 + src/history.js | 184 +++ src/node-version.js | 22 +- src/web-server.js | 705 +++++++++ src/web-state.js | 240 ++++ test/history-requests.test.js | 26 + test/history.test.js | 49 + test/sync-service.test.js | 8 +- test/web-server.test.js | 379 +++++ web/dist/assets/index-00e598c3.css | 1 + web/dist/assets/index-33db301d.js | 42 + web/dist/assets/index-33db301d.js.map | 1 + web/dist/index.html | 16 + web/index.html | 14 + web/src/App.jsx | 950 +++++++++++++ web/src/api.js | 87 ++ web/src/history-requests.js | 24 + web/src/hooks.js | 18 + web/src/icons.jsx | 21 + web/src/main.jsx | 11 + web/src/styles.css | 352 +++++ web/vite.config.js | 20 + 34 files changed, 4620 insertions(+), 35 deletions(-) create mode 100755 scripts/publish-npm.js mode change 100644 => 100755 src/cli.js create mode 100644 src/history.js create mode 100644 src/web-server.js create mode 100644 src/web-state.js create mode 100644 test/history-requests.test.js create mode 100644 test/history.test.js create mode 100644 test/web-server.test.js create mode 100644 web/dist/assets/index-00e598c3.css create mode 100644 web/dist/assets/index-33db301d.js create mode 100644 web/dist/assets/index-33db301d.js.map create mode 100644 web/dist/index.html create mode 100644 web/index.html create mode 100644 web/src/App.jsx create mode 100644 web/src/api.js create mode 100644 web/src/history-requests.js create mode 100644 web/src/hooks.js create mode 100644 web/src/icons.jsx create mode 100644 web/src/main.jsx create mode 100644 web/src/styles.css create mode 100644 web/vite.config.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 961eed2..c955470 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: - windows-latest - ubuntu-latest node-version: - - "16" + - "16.20.2" - "24" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/desktop/CodexProviderSync.App/CodexProviderSync.App.csproj b/desktop/CodexProviderSync.App/CodexProviderSync.App.csproj index 4c9f712..523285c 100644 --- a/desktop/CodexProviderSync.App/CodexProviderSync.App.csproj +++ b/desktop/CodexProviderSync.App/CodexProviderSync.App.csproj @@ -24,9 +24,9 @@ CodexProviderSync Codex Provider Sync Dailin521 - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 diff --git a/desktop/CodexProviderSync.Application/CodexProviderSync.Application.csproj b/desktop/CodexProviderSync.Application/CodexProviderSync.Application.csproj index fc42569..446ef02 100644 --- a/desktop/CodexProviderSync.Application/CodexProviderSync.Application.csproj +++ b/desktop/CodexProviderSync.Application/CodexProviderSync.Application.csproj @@ -5,9 +5,9 @@ enable enable false - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 diff --git a/desktop/CodexProviderSync.Automation/CodexProviderSync.Automation.csproj b/desktop/CodexProviderSync.Automation/CodexProviderSync.Automation.csproj index aaaa3de..bbdbc8e 100644 --- a/desktop/CodexProviderSync.Automation/CodexProviderSync.Automation.csproj +++ b/desktop/CodexProviderSync.Automation/CodexProviderSync.Automation.csproj @@ -7,9 +7,9 @@ enable CodexProviderSync.Automation CodexProviderSync.Automation - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 diff --git a/desktop/CodexProviderSync.Core/CodexProviderSync.Core.csproj b/desktop/CodexProviderSync.Core/CodexProviderSync.Core.csproj index 424e3c2..2c51005 100644 --- a/desktop/CodexProviderSync.Core/CodexProviderSync.Core.csproj +++ b/desktop/CodexProviderSync.Core/CodexProviderSync.Core.csproj @@ -4,9 +4,9 @@ net10.0 enable enable - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 diff --git a/desktop/CodexProviderSync.GuiE2E.Tests/ApplicationAndDialogContractTests.cs b/desktop/CodexProviderSync.GuiE2E.Tests/ApplicationAndDialogContractTests.cs index c114784..eba44b7 100644 --- a/desktop/CodexProviderSync.GuiE2E.Tests/ApplicationAndDialogContractTests.cs +++ b/desktop/CodexProviderSync.GuiE2E.Tests/ApplicationAndDialogContractTests.cs @@ -100,7 +100,7 @@ public void Verify_AcceptsExpectedConfirmationAndNoUpdateDialogs() "update-no-update", "#32770", "Codex Provider Sync", - ["当前已是最新版本(v0.4.0)。", "确定"]); + ["当前已是最新版本(v0.5.0)。", "确定"]); Assert.True(sync.Passed, sync.Error); Assert.True(noUpdate.Passed, noUpdate.Error); diff --git a/desktop/CodexProviderSync.GuiE2E/CodexProviderSync.GuiE2E.csproj b/desktop/CodexProviderSync.GuiE2E/CodexProviderSync.GuiE2E.csproj index 4c62f6d..c008ca0 100644 --- a/desktop/CodexProviderSync.GuiE2E/CodexProviderSync.GuiE2E.csproj +++ b/desktop/CodexProviderSync.GuiE2E/CodexProviderSync.GuiE2E.csproj @@ -7,9 +7,9 @@ enable true CodexProviderSync.GuiE2E - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 diff --git a/desktop/CodexProviderSync.Mac/CodexProviderSync.Mac.csproj b/desktop/CodexProviderSync.Mac/CodexProviderSync.Mac.csproj index 9c39121..ec3b6aa 100644 --- a/desktop/CodexProviderSync.Mac/CodexProviderSync.Mac.csproj +++ b/desktop/CodexProviderSync.Mac/CodexProviderSync.Mac.csproj @@ -17,9 +17,9 @@ CodexProviderSync Codex Provider Sync Dailin521 - 0.4.1 - 0.4.1.0 - 0.4.1.0 + 0.5.0 + 0.5.0.0 + 0.5.0.0 true diff --git a/package-lock.json b/package-lock.json index ce490d8..3f26e9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,822 @@ { "name": "codex-provider-sync", - "version": "0.4.1", + "version": "0.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codex-provider-sync", - "version": "0.4.1", + "version": "0.5.0", "license": "MIT", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, "bin": { "codex-provider": "src/cli.js" }, + "devDependencies": { + "@vitejs/plugin-react": "^4.3.4", + "vite": "^4.5.14" + }, "engines": { - "node": ">=16.0.0" + "node": ">=16.20.2" }, "optionalDependencies": { "better-sqlite3": "8.7.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -38,6 +837,19 @@ ], "optional": true }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.12", + "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/better-sqlite3": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.7.0.tgz", @@ -69,6 +881,47 @@ "readable-stream": "^3.4.0" } }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist/node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -93,12 +946,58 @@ "ieee754": "^1.1.13" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "optional": true }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -132,6 +1031,13 @@ "node": ">=8" } }, + "node_modules/electron-to-chromium": { + "version": "1.5.400", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.400.tgz", + "integrity": "sha512-96EWDNjM59SYflgeV5Ylsf4EMiq1a25YjCnJH7cxn/AF2H3pILRweaUnoLax0yKHWdpOzY6JKEu45e8irqZIHA==", + "dev": true, + "license": "ISC" + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -141,6 +1047,54 @@ "once": "^1.4.0" } }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -162,6 +1116,31 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "optional": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -200,6 +1179,60 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "optional": true }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -227,6 +1260,32 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "optional": true }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.17", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", @@ -254,6 +1313,42 @@ "wrappy": "1" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.25", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.25.tgz", + "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", @@ -306,6 +1401,41 @@ "rc": "cli.js" } }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -320,6 +1450,23 @@ "node": ">= 6" } }, + "node_modules/rollup": { + "version": "3.30.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.30.0.tgz", + "integrity": "sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -340,6 +1487,15 @@ ], "optional": true }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/semver": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", @@ -397,6 +1553,16 @@ "simple-concat": "^1.0.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -455,17 +1621,111 @@ "node": "*" } }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "optional": true }, + "node_modules/vite": { + "version": "4.5.14", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.14.tgz", + "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "optional": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" } } } diff --git a/package.json b/package.json index 64d9367..66391d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codex-provider-sync", - "version": "0.4.1", + "version": "0.5.0", "description": "Synchronize Codex session provider metadata across rollout files and SQLite state.", "type": "module", "files": [ @@ -8,16 +8,21 @@ "CHANGELOG.md", "AGENTS.md", "docs", - "src" + "src", + "web/dist" ], "bin": { - "codex-provider": "./src/cli.js" + "codex-provider": "src/cli.js" }, "scripts": { - "test": "node --test" + "test": "node --test", + "web:build": "vite build --config web/vite.config.js", + "web:start": "node src/cli.js web", + "publish:npm": "node scripts/publish-npm.js", + "prepare": "npm run web:build" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.20.2" }, "keywords": [ "codex", @@ -28,5 +33,16 @@ "license": "MIT", "optionalDependencies": { "better-sqlite3": "8.7.0" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.3.4", + "vite": "^4.5.14" + }, + "overrides": { + "node-releases": "2.0.18" } } diff --git a/scripts/publish-npm.js b/scripts/publish-npm.js new file mode 100755 index 0000000..fc5913b --- /dev/null +++ b/scripts/publish-npm.js @@ -0,0 +1,89 @@ +#!/usr/bin/env node + +import fs from "node:fs"; +import path from "node:path"; +import { spawnSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); + +function usage() { + console.log(`Usage: npm run publish:npm -- [options] + +Options: + --dry-run Build, test, and preview the package without publishing. + --skip-tests Skip npm test (the Web UI build still runs). + --otp CODE Pass a one-time npm 2FA code without storing it. + --tag TAG Publish with an npm dist-tag (default: latest). + --registry URL npm registry (default: https://registry.npmjs.org/). +`); +} + +function parseArgs(argv) { + const options = { dryRun: false, skipTests: false, otp: process.env.NPM_OTP ?? "", tag: "latest", registry: "https://registry.npmjs.org/" }; + for (let index = 0; index < argv.length; index += 1) { + const argument = argv[index]; + if (argument === "--help" || argument === "-h") { usage(); process.exit(0); } + if (argument === "--dry-run") { options.dryRun = true; continue; } + if (argument === "--skip-tests") { options.skipTests = true; continue; } + if (argument === "--otp" || argument === "--tag" || argument === "--registry") { + const value = argv[++index]; + if (!value) throw new Error(`${argument} requires a value.`); + if (argument === "--otp") options.otp = value; + if (argument === "--tag") options.tag = value; + if (argument === "--registry") options.registry = value; + continue; + } + throw new Error(`Unknown option: ${argument}`); + } + return options; +} + +function npmCommand() { + return process.platform === "win32" ? "npm.cmd" : "npm"; +} + +function runNpm(args, { env = process.env } = {}) { + console.log(`\n$ npm ${args.map((value) => value === env.NPM_OTP ? "--otp ******" : value).join(" ")}`); + const result = spawnSync(npmCommand(), args, { cwd: rootDir, env, stdio: "inherit" }); + if (result.error) throw result.error; + if (result.status !== 0) throw new Error(`npm ${args[0]} failed with exit code ${result.status}.`); +} + +function packageInfo() { + const packagePath = path.join(rootDir, "package.json"); + const manifest = JSON.parse(fs.readFileSync(packagePath, "utf8")); + if (!manifest.name || !manifest.version) throw new Error("package.json must define name and version."); + if (!manifest.bin?.["codex-provider"]) throw new Error("package.json must expose the codex-provider bin entry."); + const binPath = path.resolve(rootDir, manifest.bin["codex-provider"]); + if (!fs.existsSync(binPath)) throw new Error(`npm bin entry does not exist: ${binPath}`); + return manifest; +} + +function main() { + const options = parseArgs(process.argv.slice(2)); + const manifest = packageInfo(); + console.log(`Preparing ${manifest.name}@${manifest.version} for npm.`); + + const registryArgs = ["--registry", options.registry]; + runNpm(["whoami", ...registryArgs]); + runNpm(["run", "web:build"]); + if (!options.skipTests) runNpm(["test"]); + runNpm(["pack", "--dry-run", "--json", ...registryArgs]); + + const publishArgs = ["publish", "--access", "public", "--tag", options.tag, ...registryArgs]; + if (options.otp) publishArgs.push("--otp", options.otp); + if (options.dryRun) { + console.log("npm dry-run completed; nothing was published."); + return; + } + runNpm(publishArgs, { env: { ...process.env, ...(options.otp ? { NPM_OTP: options.otp } : {}) } }); + console.log(`${manifest.name}@${manifest.version} published successfully.`); +} + +try { + main(); +} catch (error) { + console.error(`\nPublish failed: ${error instanceof Error ? error.message : String(error)}`); + process.exitCode = 1; +} diff --git a/src/backup.js b/src/backup.js index 2fa3606..fbbc20e 100644 --- a/src/backup.js +++ b/src/backup.js @@ -403,6 +403,25 @@ export async function getBackupSummary(codexHome) { }; } +export async function listBackups(codexHome) { + const backupRoot = defaultBackupRoot(codexHome); + const backupDirs = await listManagedBackupDirectories(backupRoot); + const backups = []; + + for (const entry of backupDirs) { + const metadataPath = path.join(entry.fullPath, "metadata.json"); + const metadata = JSON.parse(await fs.readFile(metadataPath, "utf8")); + backups.push({ + id: entry.name, + path: entry.fullPath, + sizeBytes: await getDirectorySize(entry.fullPath), + metadata + }); + } + + return { backupRoot, backups }; +} + export async function pruneBackups(codexHome, keepCount = DEFAULT_BACKUP_RETENTION_COUNT) { if (!Number.isInteger(keepCount) || keepCount < 0) { throw new Error(`Invalid keep count: ${keepCount}. Expected a non-negative integer.`); diff --git a/src/cli.js b/src/cli.js old mode 100644 new mode 100755 index 8052edb..271b28d --- a/src/cli.js +++ b/src/cli.js @@ -19,6 +19,7 @@ Usage: codex-provider sync [--provider ID] [--keep N] [--codex-home PATH] [--sqlite-home PATH] codex-provider switch [--model NAME] [--keep-root-model] [--keep N] [--codex-home PATH] [--sqlite-home PATH] codex-provider watch [--codex-home PATH] [--sqlite-home PATH] [--debounce-ms N] [--once] [--no-state-db] + codex-provider web [--port N] [--no-open] [--reset-access] [--codex-home PATH] [--sqlite-home PATH] codex-provider prune-backups [--keep N] [--codex-home PATH] codex-provider restore [--no-config] [--no-db] [--no-sessions] [--allow-sqlite-home-relocation] [--codex-home PATH] [--sqlite-home PATH] codex-provider install-windows-launcher [--dir PATH] [--codex-home PATH] [--sqlite-home PATH] @@ -33,6 +34,13 @@ watch flags: --debounce-ms N wait N milliseconds after a change before syncing (default 750) --once exit after the first successful sync --no-state-db only watch config.toml, ignore SQLite state events + +web flags: + --port N bind the local Web UI to 127.0.0.1:N (default 8791) + --no-open do not open the system browser automatically + --reset-access invalidate all paired browsers before creating a new pairing + --codex-home PATH set the default server-managed storage profile + --sqlite-home PATH set the default profile SQLite Home override `); } @@ -196,6 +204,8 @@ async function main() { return; } + assertSupportedNodeVersion(); + if (command === "status") { const { getStatus, renderStatus } = await loadService(); const status = await getStatus({ @@ -313,6 +323,41 @@ async function main() { return; } + if (command === "web") { + const { startWebUi } = await import("./web-server.js"); + const port = flags.port === undefined ? 8791 : parseKeepCount(flags.port, { allowZero: true }); + const handle = await startWebUi({ + port, + openBrowser: !flags["no-open"], + resetAccess: Boolean(flags["reset-access"]), + codexHome: flags["codex-home"], + sqliteHome: flags["sqlite-home"] + }); + console.log(`Codex Provider Sync Web UI: ${handle.url}`); + if (flags["no-open"] || !handle.browserOpened) { + console.log(`One-time pairing link: ${handle.pairingUrl}`); + } + if (handle.reused) { + console.log("Opened the existing Codex Provider Sync Web UI instance."); + return; + } + console.log("The server only listens on 127.0.0.1. Press Ctrl+C to stop it."); + await new Promise((resolve) => { + let closing = false; + const close = async () => { + if (closing) { + return; + } + closing = true; + await handle.close().catch(() => {}); + resolve(); + }; + process.once("SIGINT", close); + process.once("SIGTERM", close); + }); + return; + } + if (command === "restore") { const { runRestore } = await loadService(); const backupDir = positionals[1] ?? flags.backup; diff --git a/src/history.js b/src/history.js new file mode 100644 index 0000000..7e13706 --- /dev/null +++ b/src/history.js @@ -0,0 +1,184 @@ +import fs from "node:fs/promises"; +import fsSync from "node:fs"; +import path from "node:path"; +import readline from "node:readline"; + +import { SESSION_DIRS } from "./constants.js"; + +const DEFAULT_PAGE_SIZE = 50; +const MAX_PAGE_SIZE = 100; +const DEFAULT_MESSAGE_LIMIT = 200; + +function normalizeText(value) { + if (typeof value !== "string") return ""; + return value.replace(/\r\n/g, "\n").trim(); +} + +function firstText(...values) { + for (const value of values) { + const text = normalizeText(value); + if (text) return text; + } + return ""; +} + +function contentText(value) { + if (typeof value === "string") return normalizeText(value); + if (!Array.isArray(value)) return ""; + return value + .filter((item) => item && typeof item === "object" && (item.type === "output_text" || item.type === "text" || item.type === "input_text")) + .map((item) => normalizeText(item.text)) + .filter(Boolean) + .join("\n"); +} + +function messageFromRecord(record) { + if (!record || typeof record !== "object") return null; + const timestamp = record.timestamp ?? record.payload?.timestamp ?? null; + const eventType = record.payload?.type; + if (record.type === "event_msg" && (eventType === "user_message" || eventType === "assistant_message")) { + const role = eventType === "user_message" ? "user" : "assistant"; + const text = firstText(record.payload?.message, record.payload?.text); + return text ? { role, text, timestamp } : null; + } + + for (const key of ["payload", "item", "msg"]) { + const value = record[key]; + if (!value || typeof value !== "object" || !["user", "assistant"].includes(value.role)) continue; + const text = firstText(contentText(value.content), value.message, value.text); + return text ? { role: value.role, text, timestamp } : null; + } + if (record.type === "user_message" || record.type === "assistant_message") { + const text = firstText(record.message, record.text, record.payload?.message, record.payload?.text); + return text ? { role: record.type === "user_message" ? "user" : "assistant", text, timestamp } : null; + } + return null; +} + +async function listRolloutFiles(root) { + const result = []; + async function walk(directory) { + let entries; + try { + entries = await fs.readdir(directory, { withFileTypes: true }); + } catch (error) { + if (error?.code === "ENOENT") return; + throw error; + } + for (const entry of entries) { + const fullPath = path.join(directory, entry.name); + if (entry.isDirectory()) await walk(fullPath); + else if (entry.isFile() && entry.name.startsWith("rollout-") && entry.name.endsWith(".jsonl")) result.push(fullPath); + } + } + await walk(root); + return result; +} + +async function readRollout(filePath, archived) { + const stat = await fs.stat(filePath); + const stream = fsSync.createReadStream(filePath, { encoding: "utf8" }); + const lines = readline.createInterface({ input: stream, crlfDelay: Infinity }); + let meta = null; + const messages = []; + let sequence = 0; + try { + for await (const line of lines) { + if (!line.trim()) continue; + let record; + try { record = JSON.parse(line); } catch { continue; } + if (!meta && record.type === "session_meta" && record.payload && typeof record.payload === "object") { + const payload = record.payload; + meta = { + id: typeof payload.id === "string" ? payload.id : null, + title: firstText(payload.title, payload.name), + cwd: firstText(payload.cwd), + provider: firstText(payload.model_provider) || "(missing)", + model: firstText(payload.model), + createdAt: record.timestamp ?? payload.timestamp ?? null + }; + } + const message = messageFromRecord(record); + if (message) messages.push({ ...message, sequence: ++sequence }); + } + } finally { + lines.close(); + stream.destroy(); + } + if (!meta?.id) return null; + const updatedAt = messages.at(-1)?.timestamp ?? stat.mtime.toISOString(); + return { ...meta, updatedAt, archived, messages, messageCount: messages.length, filePath, mtimeMs: stat.mtimeMs }; +} + +async function collectHistory(codexHome) { + const sessions = []; + for (const dirName of SESSION_DIRS) { + const files = await listRolloutFiles(path.join(codexHome, dirName)); + for (const filePath of files) { + const session = await readRollout(filePath, dirName === "archived_sessions"); + if (session) sessions.push(session); + } + } + const byId = new Map(); + for (const session of sessions) { + const existing = byId.get(session.id); + if (!existing || session.mtimeMs >= existing.mtimeMs) byId.set(session.id, session); + } + return [...byId.values()].sort((a, b) => Date.parse(b.updatedAt || 0) - Date.parse(a.updatedAt || 0) || b.mtimeMs - a.mtimeMs); +} + +function publicSession(session) { + const firstUserMessage = session.messages.find((message) => message.role === "user")?.text ?? ""; + return { + id: session.id, + title: session.title || firstUserMessage.slice(0, 80) || "未命名会话", + cwd: session.cwd, + provider: session.provider, + model: session.model, + archived: session.archived, + createdAt: session.createdAt, + updatedAt: session.updatedAt, + messageCount: session.messageCount, + firstUserMessage: firstUserMessage.slice(0, 240) + }; +} + +export function validateHistoryPage(pageValue, pageSizeValue = DEFAULT_PAGE_SIZE) { + const page = pageValue === undefined ? 1 : Number(pageValue); + const pageSize = pageSizeValue === undefined ? DEFAULT_PAGE_SIZE : Number(pageSizeValue); + if (!Number.isInteger(page) || page < 1) throw new Error("page must be a positive integer."); + if (!Number.isInteger(pageSize) || pageSize < 10 || pageSize > MAX_PAGE_SIZE) throw new Error(`pageSize must be an integer between 10 and ${MAX_PAGE_SIZE}.`); + return { page, pageSize }; +} + +export async function listHistory(codexHome, options = {}) { + const { page, pageSize } = validateHistoryPage(options.page, options.pageSize ?? DEFAULT_PAGE_SIZE); + const query = normalizeText(options.query).toLowerCase(); + const project = normalizeText(options.project).toLowerCase(); + const provider = normalizeText(options.provider); + const archived = options.archived ?? "all"; + if (!["all", "active", "archived"].includes(archived)) throw new Error("archived must be all, active, or archived."); + const sessions = await collectHistory(codexHome); + const filtered = sessions.filter((session) => { + if (provider && session.provider !== provider) return false; + if (archived !== "all" && session.archived !== (archived === "archived")) return false; + if (project && !session.cwd.toLowerCase().includes(project)) return false; + if (query) { + const haystack = [session.title, session.cwd, session.provider, session.messages[0]?.text, ...session.messages.map((message) => message.text)].join("\n").toLowerCase(); + if (!haystack.includes(query)) return false; + } + return true; + }); + const start = (page - 1) * pageSize; + return { page, pageSize, total: filtered.length, hasNextPage: start + pageSize < filtered.length, sessions: filtered.slice(start, start + pageSize).map(publicSession) }; +} + +export async function getHistorySession(codexHome, sessionId, { messageLimit = DEFAULT_MESSAGE_LIMIT } = {}) { + if (typeof sessionId !== "string" || !sessionId.trim()) throw new Error("sessionId is required."); + const sessions = await collectHistory(codexHome); + const session = sessions.find((item) => item.id === sessionId); + if (!session) throw new Error("The selected session was not found in this Codex Home."); + const safeLimit = Number.isInteger(messageLimit) && messageLimit > 0 ? Math.min(messageLimit, DEFAULT_MESSAGE_LIMIT) : DEFAULT_MESSAGE_LIMIT; + const messages = session.messages.slice(-safeLimit); + return { session: publicSession(session), messages, truncated: messages.length < session.messages.length, returnedMessageCount: messages.length }; +} diff --git a/src/node-version.js b/src/node-version.js index e317efd..05c18de 100644 --- a/src/node-version.js +++ b/src/node-version.js @@ -1,13 +1,27 @@ -export const MINIMUM_NODE_MAJOR_VERSION = 16; +export const MINIMUM_NODE_VERSION = "16.20.2"; + +function parseVersion(value) { + const match = String(value).replace(/^v/, "").match(/^(\d+)\.(\d+)\.(\d+)/); + return match ? match.slice(1).map((part) => Number.parseInt(part, 10)) : null; +} + +function versionAtLeast(current, minimum) { + for (let index = 0; index < minimum.length; index += 1) { + if (current[index] > minimum[index]) return true; + if (current[index] < minimum[index]) return false; + } + return true; +} export function getUnsupportedNodeVersionMessage(nodeVersion = process.versions.node) { - const majorVersion = Number.parseInt(String(nodeVersion).split(".")[0] ?? "", 10); - if (Number.isInteger(majorVersion) && majorVersion >= MINIMUM_NODE_MAJOR_VERSION) { + const current = parseVersion(nodeVersion); + const minimum = parseVersion(MINIMUM_NODE_VERSION); + if (current && minimum && versionAtLeast(current, minimum)) { return null; } const displayVersion = String(nodeVersion).startsWith("v") ? String(nodeVersion) : `v${nodeVersion}`; - return `codex-provider-sync requires Node.js ${MINIMUM_NODE_MAJOR_VERSION}+. ` + return `codex-provider-sync requires Node.js ${MINIMUM_NODE_VERSION} or newer. ` + `Current Node.js version: ${displayVersion}. ` + "Please upgrade Node.js, then reinstall or rerun codex-provider."; } diff --git a/src/web-server.js b/src/web-server.js new file mode 100644 index 0000000..e9d9b7a --- /dev/null +++ b/src/web-server.js @@ -0,0 +1,705 @@ +import crypto from "node:crypto"; +import fs from "node:fs/promises"; +import http from "node:http"; +import path from "node:path"; +import { spawn } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +import { listBackups } from "./backup.js"; +import { readConfigText, readRootModelFromConfigText } from "./config-file.js"; +import { defaultCodexHome } from "./constants.js"; +import { getHistorySession, listHistory } from "./history.js"; +import { getStatus, runPruneBackups, runRestore, runSwitch, runSync } from "./service.js"; +import { createMemoryWebUiState, WebUiStateStore } from "./web-state.js"; + +const DEFAULT_PORT = 8791; +const MAX_REQUEST_BYTES = 64 * 1024; +const ACTIVITY_LIMIT = 250; +const PAIRING_TTL_MS = 5 * 60 * 1000; +const DEVICE_SECRET_BYTES = 32; +const STATE_FILENAME = "provider-sync-web.json"; +const RUNTIME_FILENAME = "provider-sync-web.runtime.json"; +const WEB_ROOT = fileURLToPath(new URL("../web/dist/", import.meta.url)); +const MIME_TYPES = new Map([ + [".css", "text/css; charset=utf-8"], + [".html", "text/html; charset=utf-8"], + [".ico", "image/x-icon"], + [".js", "text/javascript; charset=utf-8"], + [".json", "application/json; charset=utf-8"], + [".map", "application/json; charset=utf-8"], + [".png", "image/png"], + [".svg", "image/svg+xml"], + [".webp", "image/webp"] +]); + +function sendJson(response, statusCode, value) { + const body = JSON.stringify(value); + response.writeHead(statusCode, { + "Cache-Control": "no-store", + "Content-Type": "application/json; charset=utf-8", + "Content-Length": Buffer.byteLength(body), + "X-Content-Type-Options": "nosniff" + }); + response.end(body); +} + +function sendError(response, statusCode, error, code) { + const message = error instanceof Error ? error.message : String(error); + sendJson(response, statusCode, { error: message, ...(code ? { code } : {}) }); +} + +async function readJsonBody(request) { + const chunks = []; + let received = 0; + for await (const chunk of request) { + received += chunk.length; + if (received > MAX_REQUEST_BYTES) { + throw new Error(`Request body exceeds ${MAX_REQUEST_BYTES} bytes.`); + } + chunks.push(chunk); + } + if (chunks.length === 0) { + return {}; + } + try { + return JSON.parse(Buffer.concat(chunks).toString("utf8")); + } catch { + throw new Error("Request body must be valid JSON."); + } +} + +function requireString(value, label, { optional = false, maxLength = 4096 } = {}) { + if (value === undefined || value === null || value === "") { + if (optional) { + return undefined; + } + throw new Error(`${label} is required.`); + } + if (typeof value !== "string" || !value.trim()) { + throw new Error(`${label} must be a non-empty string.`); + } + const normalized = value.trim(); + if (normalized.length > maxLength) { + throw new Error(`${label} is too long.`); + } + return normalized; +} + +function requireProvider(value) { + const provider = requireString(value, "provider", { maxLength: 200 }); + if (!/^[A-Za-z0-9_.-]+$/.test(provider)) { + throw new Error("provider may only contain letters, numbers, dots, underscores, and hyphens."); + } + return provider; +} + +function requireKeepCount(value, { allowZero = false } = {}) { + const minimum = allowZero ? 0 : 1; + if (!Number.isInteger(value) || value < minimum || value > 100000) { + throw new Error(`keepCount must be an integer between ${minimum} and 100000.`); + } + return value; +} + +function resolveStorageProfile(input, stateStore) { + if (Object.hasOwn(input ?? {}, "codexHome") || Object.hasOwn(input ?? {}, "sqliteHome")) { + throw new Error("Storage paths must be selected through a server-managed profileId."); + } + const profileId = requireString(input?.profileId ?? "default", "profileId", { maxLength: 80 }); + const profile = stateStore.getProfile(profileId); + return { + profileId: profile.id, + codexHome: profile.codexHome, + ...(profile.sqliteHome ? { sqliteHome: profile.sqliteHome } : {}) + }; +} + +function serializeStatus(status) { + const rollout = status.rolloutCounts ?? { sessions: {}, archived_sessions: {} }; + const sqlite = status.sqliteCounts; + const normalizeCounts = (counts) => Object.fromEntries( + Object.entries(counts ?? {}).sort(([left], [right]) => left.localeCompare(right)) + ); + const normalizeDistribution = (distribution) => ({ + sessions: normalizeCounts(distribution?.sessions), + archived_sessions: normalizeCounts(distribution?.archived_sessions) + }); + const rolloutJson = JSON.stringify(normalizeDistribution(rollout)); + const sqliteComparable = sqlite && !sqlite.unreadable + ? JSON.stringify(normalizeDistribution(sqlite)) + : null; + return { + ...status, + alignment: { + aligned: Boolean(sqliteComparable && rolloutJson === sqliteComparable), + sqliteReadable: Boolean(sqlite && !sqlite.unreadable), + targetProvider: status.currentProvider + } + }; +} + +function stageMessage(event) { + const messages = { + scan_rollout_files: "Scanning rollout files", + check_locked_rollout_files: "Checking locked rollout files", + create_backup: "Creating backup", + update_config: "Updating config.toml", + update_sqlite: "Updating SQLite metadata", + rewrite_rollout_files: "Rewriting rollout metadata", + clean_backups: "Cleaning old backups" + }; + const base = messages[event?.stage] ?? event?.stage ?? "Operation progress"; + return event?.status === "complete" ? `${base} complete` : base; +} + +function openLocalUrl(url, platform = process.platform) { + let command; + let args; + if (platform === "win32") { + command = "cmd"; + args = ["/d", "/s", "/c", "start", "", url]; + } else if (platform === "darwin") { + command = "open"; + args = [url]; + } else { + command = "xdg-open"; + args = [url]; + } + return new Promise((resolve) => { + let settled = false; + const finish = (opened) => { + if (settled) return; + settled = true; + clearTimeout(timeout); + resolve(opened); + }; + const child = spawn(command, args, { stdio: "ignore" }); + const timeout = setTimeout(() => { + child.unref(); + finish(true); + }, 3000); + child.once("error", () => finish(false)); + child.once("exit", (code) => finish(code === 0)); + }); +} + +function canOpenLocalUrl(platform = process.platform, environment = process.env) { + if (platform !== "linux") return true; + return Boolean(environment.DISPLAY || environment.WAYLAND_DISPLAY); +} + +async function serveStatic(response, pathname, webRoot) { + let relativePath = pathname === "/" ? "index.html" : pathname.slice(1); + try { + relativePath = decodeURIComponent(relativePath); + } catch { + sendError(response, 400, "Invalid URL encoding."); + return; + } + + const root = path.resolve(webRoot); + let filePath = path.resolve(root, relativePath); + if (filePath !== root && !filePath.startsWith(`${root}${path.sep}`)) { + sendError(response, 403, "Static path is outside the Web UI root."); + return; + } + + let file; + try { + file = await fs.readFile(filePath); + } catch (error) { + if (error?.code !== "ENOENT" || path.extname(relativePath)) { + sendError(response, error?.code === "ENOENT" ? 404 : 500, error); + return; + } + filePath = path.join(root, "index.html"); + file = await fs.readFile(filePath); + } + + const extension = path.extname(filePath).toLowerCase(); + if (extension === ".html") { + file = Buffer.from(file.toString("utf8").replace("__CODEX_PROVIDER_SYNC_BOOTSTRAP__", "{}"), "utf8"); + } + response.writeHead(200, { + "Cache-Control": extension === ".html" ? "no-store" : "public, max-age=3600", + "Content-Type": MIME_TYPES.get(extension) ?? "application/octet-stream", + "Content-Length": file.length, + "Referrer-Policy": "no-referrer", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "DENY", + "Content-Security-Policy": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'" + }); + response.end(file); +} + +function randomSecret() { + return crypto.randomBytes(DEVICE_SECRET_BYTES).toString("base64url"); +} + +function secretDigest(secret) { + return crypto.createHash("sha256").update(String(secret), "utf8").digest(); +} + +function secretsMatch(secret, expectedDigest) { + if (typeof secret !== "string" || !expectedDigest) return false; + const candidate = secretDigest(secret); + return candidate.length === expectedDigest.length && crypto.timingSafeEqual(candidate, expectedDigest); +} + +function isLoopbackHostname(hostname) { + const normalized = String(hostname).toLowerCase().replace(/^\[|\]$/g, ""); + return normalized === "127.0.0.1" || normalized === "localhost" || normalized === "::1"; +} + +function validBrowserOrigin(request, { required = false } = {}) { + const value = request.headers.origin; + if (!value) return !required; + const host = request.headers.host; + if (!host) return false; + try { + const originUrl = new URL(value); + const hostUrl = new URL(`http://${host}`); + return originUrl.protocol === "http:" + && isLoopbackHostname(originUrl.hostname) + && isLoopbackHostname(hostUrl.hostname) + && originUrl.host.toLowerCase() === hostUrl.host.toLowerCase(); + } catch { + return false; + } +} + +export function createWebUiServer({ + webRoot = WEB_ROOT, + services = {}, + stateStore = createMemoryWebUiState({ codexHome: defaultCodexHome() }), + internalSecret = randomSecret(), + pairingTtlMs = PAIRING_TTL_MS, + now = () => Date.now() +} = {}) { + const api = { + getStatus: services.getStatus ?? getStatus, + listBackups: services.listBackups ?? listBackups, + runSync: services.runSync ?? runSync, + runSwitch: services.runSwitch ?? runSwitch, + runRestore: services.runRestore ?? runRestore, + runPruneBackups: services.runPruneBackups ?? runPruneBackups, + readConfigText: services.readConfigText ?? readConfigText, + readRootModelFromConfigText: services.readRootModelFromConfigText ?? readRootModelFromConfigText, + listHistory: services.listHistory ?? listHistory, + getHistorySession: services.getHistorySession ?? getHistorySession + }; + const activity = []; + let activityId = 0; + let activeOperation = null; + let baseUrl = null; + let pairing = null; + + const record = (level, message, detail = null, operation = activeOperation?.kind ?? null) => { + activityId += 1; + activity.push({ id: activityId, timestamp: new Date().toISOString(), level, message, detail, operation }); + if (activity.length > ACTIVITY_LIMIT) { + activity.splice(0, activity.length - ACTIVITY_LIMIT); + } + }; + + const issuePairing = () => { + const secret = randomSecret(); + pairing = { + digest: secretDigest(secret), + expiresAt: now() + pairingTtlMs + }; + return secret; + }; + + const authorize = (request) => { + return stateStore.hasCredential(request.headers["x-codex-provider-device"]); + }; + + const requireAuthorizedBrowser = (request, response, { originRequired = request.method !== "GET" } = {}) => { + if (!validBrowserOrigin(request, { required: originRequired })) { + sendError(response, 403, "Invalid browser Origin for this loopback request.", "INVALID_ORIGIN"); + return false; + } + if (!authorize(request)) { + sendError(response, 403, "This browser is not paired with the Web UI.", "PAIRING_REQUIRED"); + return false; + } + return true; + }; + + const withOperation = async (kind, response, operation) => { + if (activeOperation) { + sendJson(response, 409, { error: `Another operation is already running: ${activeOperation.kind}.` }); + return; + } + activeOperation = { kind, startedAt: new Date().toISOString() }; + record("info", `${kind} started`); + try { + const result = await operation(); + record("success", `${kind} completed`); + sendJson(response, 200, { result }); + } catch (error) { + record("error", `${kind} failed`, error instanceof Error ? error.message : String(error)); + sendError(response, 400, error); + } finally { + activeOperation = null; + } + }; + + const server = http.createServer(async (request, response) => { + const requestUrl = new URL(request.url ?? "/", baseUrl ?? "http://127.0.0.1"); + const pathname = requestUrl.pathname; + + try { + if (request.method === "POST" && pathname === "/api/pair") { + if (!validBrowserOrigin(request, { required: true })) { + sendError(response, 403, "Invalid browser Origin for pairing.", "INVALID_ORIGIN"); + return; + } + const supplied = request.headers["x-codex-provider-pairing"]; + if (!pairing || pairing.expiresAt < now() || !secretsMatch(supplied, pairing.digest)) { + sendError(response, 403, "The pairing link is invalid, expired, or already used.", "PAIRING_REQUIRED"); + return; + } + pairing = null; + const deviceCredential = randomSecret(); + await stateStore.addCredential(deviceCredential); + sendJson(response, 200, { deviceCredential }); + return; + } + + if (request.method === "POST" && pathname === "/api/internal/new-pairing") { + if (!secretsMatch(request.headers["x-codex-provider-internal"], secretDigest(internalSecret))) { + sendError(response, 403, "Invalid Web UI instance secret."); + return; + } + const body = await readJsonBody(request); + if (body.resetAccess) await stateStore.resetCredentials(); + sendJson(response, 200, { pairingToken: issuePairing() }); + return; + } + + if (request.method === "GET" && pathname === "/api/health") { + sendJson(response, 200, { ok: true, service: "codex-provider-sync", activeOperation }); + return; + } + + if (pathname.startsWith("/api/")) { + if (!requireAuthorizedBrowser(request, response)) { + return; + } + + if (request.method === "GET" && pathname === "/api/profiles") { + sendJson(response, 200, { profiles: stateStore.listProfiles() }); + return; + } + + if (request.method === "GET" && pathname === "/api/activity") { + const after = Number.parseInt(requestUrl.searchParams.get("after") ?? "0", 10) || 0; + sendJson(response, 200, { activity: activity.filter((entry) => entry.id > after), activeOperation }); + return; + } + + if (request.method !== "POST") { + sendError(response, 405, "API endpoint requires POST."); + return; + } + + const body = await readJsonBody(request); + if (pathname === "/api/profiles/save") { + const profile = await stateStore.saveProfile({ + id: requireString(body.profileId, "profileId", { maxLength: 80 }), + name: requireString(body.name, "name", { maxLength: 120 }), + codexHome: requireString(body.codexHome, "codexHome"), + sqliteHome: requireString(body.sqliteHome, "sqliteHome", { optional: true }) + }); + sendJson(response, 200, { profile }); + return; + } + + if (pathname === "/api/profiles/delete") { + await stateStore.deleteProfile(requireString(body.profileId, "profileId", { maxLength: 80 })); + sendJson(response, 200, { ok: true }); + return; + } + + if (pathname === "/api/access/forget") { + await stateStore.removeCredential(request.headers["x-codex-provider-device"]); + sendJson(response, 200, { ok: true }); + return; + } + + if (pathname === "/api/status") { + const storage = resolveStorageProfile(body, stateStore); + const status = serializeStatus(await api.getStatus(storage)); + status.profileId = storage.profileId; + record("info", "Status refreshed", status.codexHome, null); + sendJson(response, 200, { status }); + return; + } + + if (pathname === "/api/backups") { + const { codexHome } = resolveStorageProfile(body, stateStore); + sendJson(response, 200, await api.listBackups(codexHome)); + return; + } + + if (pathname === "/api/history") { + const storage = resolveStorageProfile(body, stateStore); + const history = await api.listHistory(storage.codexHome, body); + sendJson(response, 200, { history }); + return; + } + + if (pathname === "/api/history/session") { + const storage = resolveStorageProfile(body, stateStore); + const sessionId = requireString(body.sessionId, "sessionId", { maxLength: 300 }); + const history = await api.getHistorySession(storage.codexHome, sessionId); + sendJson(response, 200, { history }); + return; + } + + if (pathname === "/api/sync") { + await withOperation("sync", response, async () => { + const storage = resolveStorageProfile(body, stateStore); + const provider = requireProvider(body.provider); + const keepCount = requireKeepCount(body.keepCount); + const configText = await api.readConfigText(path.join(storage.codexHome, "config.toml")); + const model = api.readRootModelFromConfigText(configText); + return api.runSync({ + ...storage, + provider, + keepCount, + model, + onProgress: (event) => record("progress", stageMessage(event), event) + }); + }); + return; + } + + if (pathname === "/api/switch") { + await withOperation("switch", response, async () => { + const storage = resolveStorageProfile(body, stateStore); + const provider = requireProvider(body.provider); + const keepCount = requireKeepCount(body.keepCount); + const model = requireString(body.model, "model", { optional: true, maxLength: 500 }); + return api.runSwitch({ + ...storage, + provider, + keepCount, + model, + keepRootModel: Boolean(body.keepRootModel), + onProgress: (event) => record("progress", stageMessage(event), event) + }); + }); + return; + } + + if (pathname === "/api/restore") { + await withOperation("restore", response, async () => { + const storage = resolveStorageProfile(body, stateStore); + const backupId = requireString(body.backupId, "backupId", { maxLength: 300 }); + const listed = await api.listBackups(storage.codexHome); + const backup = listed.backups.find((entry) => entry.id === backupId); + if (!backup) { + throw new Error("The selected backup is not a managed backup for this Codex Home."); + } + const restoreConfig = Boolean(body.restoreConfig); + const restoreDatabase = Boolean(body.restoreDatabase); + const restoreSessions = Boolean(body.restoreSessions); + if (!restoreConfig && !restoreDatabase && !restoreSessions) { + throw new Error("Select at least one backup content type to restore."); + } + return api.runRestore({ + ...storage, + backupDir: backup.path, + restoreConfig, + restoreDatabase, + restoreSessions, + allowSqliteHomeRelocation: Boolean(body.allowSqliteHomeRelocation) + }); + }); + return; + } + + if (pathname === "/api/prune") { + await withOperation("prune backups", response, async () => { + const { codexHome } = resolveStorageProfile(body, stateStore); + return api.runPruneBackups({ codexHome, keepCount: requireKeepCount(body.keepCount, { allowZero: true }) }); + }); + return; + } + + sendError(response, 404, "Unknown API endpoint."); + return; + } + + if (request.method !== "GET" && request.method !== "HEAD") { + sendError(response, 405, "Method not allowed."); + return; + } + await serveStatic(response, pathname, webRoot); + } catch (error) { + sendError(response, 500, error); + } + }); + + return { + server, + internalSecret, + issuePairing, + setBaseUrl(value) { + baseUrl = value; + }, + getActivity() { + return [...activity]; + } + }; +} + +function requestExistingPairing({ port, internalSecret, resetAccess }) { + return new Promise((resolve, reject) => { + const body = JSON.stringify({ resetAccess }); + const request = http.request({ + hostname: "127.0.0.1", + port, + path: "/api/internal/new-pairing", + method: "POST", + headers: { + "Content-Type": "application/json", + "Content-Length": Buffer.byteLength(body), + "X-Codex-Provider-Internal": internalSecret + }, + timeout: 1500 + }, (response) => { + const chunks = []; + response.on("data", (chunk) => chunks.push(chunk)); + response.on("end", () => { + try { + const payload = JSON.parse(Buffer.concat(chunks).toString("utf8")); + if (response.statusCode !== 200 || typeof payload.pairingToken !== "string") { + reject(new Error("The existing listener is not a compatible Codex Provider Sync Web UI.")); + return; + } + resolve(payload.pairingToken); + } catch (error) { + reject(error); + } + }); + }); + request.once("timeout", () => request.destroy(new Error("Timed out contacting the existing Web UI."))); + request.once("error", reject); + request.end(body); + }); +} + +async function readRuntimeDescriptor(runtimeFile) { + try { + const value = JSON.parse(await fs.readFile(runtimeFile, "utf8")); + if (Number.isInteger(value?.port) && value.port > 0 && typeof value?.internalSecret === "string") { + return value; + } + } catch { + // A missing, stale, or malformed descriptor is treated as no live instance. + } + return null; +} + +async function removeOwnedRuntimeDescriptor(runtimeFile, internalSecret) { + const current = await readRuntimeDescriptor(runtimeFile); + if (current?.internalSecret === internalSecret) { + await fs.rm(runtimeFile, { force: true }).catch(() => {}); + } +} + +export async function startWebUi({ + port = DEFAULT_PORT, + openBrowser = true, + resetAccess = false, + codexHome, + sqliteHome, + stateFile, + runtimeFile, + webRoot = WEB_ROOT, + services, + platform = process.platform, + environment = process.env, + openUrl = openLocalUrl +} = {}) { + if (!Number.isInteger(port) || port < 0 || port > 65535) { + throw new Error(`Invalid Web UI port: ${port}.`); + } + await fs.access(path.join(webRoot, "index.html")).catch(() => { + throw new Error(`Web UI build not found at ${webRoot}. Run \"npm run web:build\" first.`); + }); + + const controlCodexHome = path.resolve(codexHome ?? process.env.CODEX_HOME ?? defaultCodexHome()); + const resolvedStateFile = path.resolve(stateFile ?? path.join(controlCodexHome, STATE_FILENAME)); + const resolvedRuntimeFile = path.resolve(runtimeFile ?? path.join(controlCodexHome, RUNTIME_FILENAME)); + const existing = await readRuntimeDescriptor(resolvedRuntimeFile); + if (existing) { + try { + const pairingToken = await requestExistingPairing({ + port: existing.port, + internalSecret: existing.internalSecret, + resetAccess + }); + const url = `http://127.0.0.1:${existing.port}`; + const pairingUrl = `${url}/#pair=${encodeURIComponent(pairingToken)}`; + const browserOpened = openBrowser && canOpenLocalUrl(platform, environment) + ? await openUrl(pairingUrl, platform) + : false; + return { + reused: true, + url, + pairingUrl, + browserOpened, + close: async () => {} + }; + } catch { + await fs.rm(resolvedRuntimeFile, { force: true }).catch(() => {}); + } + } + + const stateStore = new WebUiStateStore({ + filePath: resolvedStateFile, + defaultProfile: { codexHome: controlCodexHome, sqliteHome } + }); + await stateStore.initialize({ resetAccess }); + const internalSecret = randomSecret(); + const handle = createWebUiServer({ webRoot, services, stateStore, internalSecret }); + try { + await new Promise((resolve, reject) => { + handle.server.once("error", reject); + handle.server.listen(port, "127.0.0.1", resolve); + }); + } catch (error) { + if (error?.code === "EADDRINUSE") { + throw new Error(`Web UI port ${port} is already in use by another program. Stop that program or choose --port .`, { cause: error }); + } + throw error; + } + const address = handle.server.address(); + const actualPort = typeof address === "object" && address ? address.port : port; + const url = `http://127.0.0.1:${actualPort}`; + handle.setBaseUrl(url); + const pairingUrl = `${url}/#pair=${encodeURIComponent(handle.issuePairing())}`; + await fs.mkdir(path.dirname(resolvedRuntimeFile), { recursive: true }); + await fs.writeFile(resolvedRuntimeFile, `${JSON.stringify({ port: actualPort, internalSecret, pid: process.pid })}\n`, { encoding: "utf8", mode: 0o600 }); + await fs.chmod(resolvedRuntimeFile, 0o600).catch(() => {}); + const browserOpened = openBrowser && canOpenLocalUrl(platform, environment) + ? await openUrl(pairingUrl, platform) + : false; + return { + ...handle, + reused: false, + url, + pairingUrl, + browserOpened, + stateFile: resolvedStateFile, + close: async () => { + await new Promise((resolve, reject) => handle.server.close((error) => error ? reject(error) : resolve())); + await removeOwnedRuntimeDescriptor(resolvedRuntimeFile, internalSecret); + } + }; +} diff --git a/src/web-state.js b/src/web-state.js new file mode 100644 index 0000000..98cacc2 --- /dev/null +++ b/src/web-state.js @@ -0,0 +1,240 @@ +import crypto from "node:crypto"; +import fs from "node:fs/promises"; +import path from "node:path"; + +const STATE_VERSION = 1; +const DEFAULT_PROFILE_ID = "default"; + +function hashSecret(secret) { + return crypto.createHash("sha256").update(String(secret), "utf8").digest("hex"); +} + +function normalizeOptionalPath(value) { + if (value === undefined || value === null || String(value).trim() === "") { + return null; + } + return path.resolve(String(value).trim()); +} + +function normalizeProfile({ id, name, codexHome, sqliteHome }) { + const normalizedId = String(id ?? "").trim(); + const normalizedName = String(name ?? "").trim(); + if (!/^[A-Za-z0-9_.-]{1,80}$/.test(normalizedId)) { + throw new Error("profileId may only contain letters, numbers, dots, underscores, and hyphens."); + } + if (!normalizedName || normalizedName.length > 120) { + throw new Error("Profile name must be between 1 and 120 characters."); + } + if (typeof codexHome !== "string" || !codexHome.trim()) { + throw new Error("Codex Home is required for a storage profile."); + } + if (codexHome.includes("\0") || String(sqliteHome ?? "").includes("\0")) { + throw new Error("Storage paths may not contain NUL characters."); + } + return { + id: normalizedId, + name: normalizedName, + codexHome: path.resolve(codexHome.trim()), + sqliteHome: normalizeOptionalPath(sqliteHome) + }; +} + +async function assertDirectoryWhenPresent(value, label) { + if (!value) { + return; + } + try { + const stats = await fs.stat(value); + if (!stats.isDirectory()) { + throw new Error(`${label} must refer to a directory: ${value}`); + } + } catch (error) { + if (error?.code !== "ENOENT") { + throw error; + } + } +} + +function emptyState(defaultProfile) { + return { + version: STATE_VERSION, + credentialHashes: [], + profiles: [defaultProfile] + }; +} + +export class WebUiStateStore { + constructor({ filePath, defaultProfile }) { + if (!filePath) { + throw new Error("Web UI state file path is required."); + } + this.filePath = path.resolve(filePath); + this.defaultProfile = normalizeProfile({ + id: DEFAULT_PROFILE_ID, + name: "Default", + ...defaultProfile + }); + this.state = emptyState(this.defaultProfile); + this.writeQueue = Promise.resolve(); + } + + async initialize({ resetAccess = false } = {}) { + try { + const parsed = JSON.parse(await fs.readFile(this.filePath, "utf8")); + if (parsed?.version === STATE_VERSION && Array.isArray(parsed.profiles) && Array.isArray(parsed.credentialHashes)) { + const namedProfiles = parsed.profiles + .filter((profile) => profile?.id !== DEFAULT_PROFILE_ID) + .map((profile) => normalizeProfile(profile)); + this.state = { + version: STATE_VERSION, + credentialHashes: parsed.credentialHashes.filter((value) => typeof value === "string" && /^[a-f0-9]{64}$/.test(value)), + profiles: [this.defaultProfile, ...namedProfiles] + }; + } + } catch (error) { + if (error?.code !== "ENOENT") { + throw new Error(`Unable to read Web UI state at ${this.filePath}: ${error.message}`, { cause: error }); + } + } + if (resetAccess) { + this.state.credentialHashes = []; + } + await this.persist(); + return this.snapshot(); + } + + snapshot() { + return { + version: this.state.version, + credentialHashes: [...this.state.credentialHashes], + profiles: this.state.profiles.map((profile) => ({ ...profile })) + }; + } + + listProfiles() { + return this.state.profiles.map((profile) => ({ ...profile })); + } + + getProfile(profileId = DEFAULT_PROFILE_ID) { + const profile = this.state.profiles.find((entry) => entry.id === profileId); + if (!profile) { + throw new Error(`Unknown storage profile: ${profileId}`); + } + return { ...profile }; + } + + async saveProfile(input) { + const profile = normalizeProfile(input); + if (profile.id === DEFAULT_PROFILE_ID) { + throw new Error("The default storage profile is controlled by Web UI startup flags."); + } + await assertDirectoryWhenPresent(profile.codexHome, "Codex Home"); + await assertDirectoryWhenPresent(profile.sqliteHome, "SQLite Home"); + const index = this.state.profiles.findIndex((entry) => entry.id === profile.id); + if (index >= 0) { + this.state.profiles[index] = profile; + } else { + this.state.profiles.push(profile); + } + await this.persist(); + return { ...profile }; + } + + async deleteProfile(profileId) { + if (profileId === DEFAULT_PROFILE_ID) { + throw new Error("The default storage profile cannot be deleted."); + } + const before = this.state.profiles.length; + this.state.profiles = this.state.profiles.filter((entry) => entry.id !== profileId); + if (this.state.profiles.length === before) { + throw new Error(`Unknown storage profile: ${profileId}`); + } + await this.persist(); + } + + hasCredential(secret) { + if (typeof secret !== "string" || secret.length < 32) { + return false; + } + const candidate = Buffer.from(hashSecret(secret), "hex"); + return this.state.credentialHashes.some((stored) => { + const expected = Buffer.from(stored, "hex"); + return expected.length === candidate.length && crypto.timingSafeEqual(expected, candidate); + }); + } + + async addCredential(secret) { + const digest = hashSecret(secret); + if (!this.state.credentialHashes.includes(digest)) { + this.state.credentialHashes.push(digest); + await this.persist(); + } + } + + async removeCredential(secret) { + const digest = hashSecret(secret); + this.state.credentialHashes = this.state.credentialHashes.filter((stored) => stored !== digest); + await this.persist(); + } + + async resetCredentials() { + this.state.credentialHashes = []; + await this.persist(); + } + + async persist() { + const serialized = `${JSON.stringify(this.state, null, 2)}\n`; + const target = this.filePath; + this.writeQueue = this.writeQueue.then(async () => { + await fs.mkdir(path.dirname(target), { recursive: true }); + const temporary = `${target}.tmp-${process.pid}-${crypto.randomBytes(6).toString("hex")}`; + await fs.writeFile(temporary, serialized, { encoding: "utf8", mode: 0o600 }); + await fs.rename(temporary, target); + await fs.chmod(target, 0o600).catch(() => {}); + }); + return this.writeQueue; + } +} + +export function createMemoryWebUiState(defaultProfile) { + const normalizedDefault = normalizeProfile({ id: DEFAULT_PROFILE_ID, name: "Default", ...defaultProfile }); + let credentialHashes = []; + let profiles = [normalizedDefault]; + return { + listProfiles: () => profiles.map((profile) => ({ ...profile })), + getProfile(profileId = DEFAULT_PROFILE_ID) { + const profile = profiles.find((entry) => entry.id === profileId); + if (!profile) throw new Error(`Unknown storage profile: ${profileId}`); + return { ...profile }; + }, + async saveProfile(input) { + const profile = normalizeProfile(input); + if (profile.id === DEFAULT_PROFILE_ID) throw new Error("The default storage profile is controlled by Web UI startup flags."); + const index = profiles.findIndex((entry) => entry.id === profile.id); + if (index >= 0) profiles[index] = profile; + else profiles.push(profile); + return { ...profile }; + }, + async deleteProfile(profileId) { + if (profileId === DEFAULT_PROFILE_ID) throw new Error("The default storage profile cannot be deleted."); + profiles = profiles.filter((entry) => entry.id !== profileId); + }, + hasCredential(secret) { + return credentialHashes.includes(hashSecret(secret)); + }, + async addCredential(secret) { + const digest = hashSecret(secret); + if (!credentialHashes.includes(digest)) credentialHashes.push(digest); + }, + async removeCredential(secret) { + const digest = hashSecret(secret); + credentialHashes = credentialHashes.filter((stored) => stored !== digest); + }, + async resetCredentials() { + credentialHashes = []; + }, + credentialHashes: () => [...credentialHashes] + }; +} + +export { DEFAULT_PROFILE_ID, hashSecret }; diff --git a/test/history-requests.test.js b/test/history-requests.test.js new file mode 100644 index 0000000..dcf1713 --- /dev/null +++ b/test/history-requests.test.js @@ -0,0 +1,26 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import { createLatestRequestGate, scheduleDebounced } from "../web/src/history-requests.js"; + +test("starting a newer History request aborts the older request and rejects its response", () => { + const gate = createLatestRequestGate(); + const first = gate.begin(); + const second = gate.begin(); + + assert.equal(first.signal.aborted, true); + assert.equal(second.signal.aborted, false); + assert.equal(gate.isLatest(first.sequence), false); + assert.equal(gate.isLatest(second.sequence), true); +}); + +test("History query debounce uses a 300ms delay and can be cancelled", () => { + const calls = []; + const timers = { + setTimeout(callback, delay) { calls.push(["set", delay, callback]); return 17; }, + clearTimeout(id) { calls.push(["clear", id]); } + }; + const cancel = scheduleDebounced(() => {}, 300, timers); + cancel(); + assert.deepEqual(calls.slice(0, 2).map((call) => call.slice(0, 2)), [["set", 300], ["clear", 17]]); +}); diff --git a/test/history.test.js b/test/history.test.js new file mode 100644 index 0000000..4f69e08 --- /dev/null +++ b/test/history.test.js @@ -0,0 +1,49 @@ +import assert from "node:assert/strict"; +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { getHistorySession, listHistory } from "../src/history.js"; + +async function fixture() { + const home = await fs.mkdtemp(path.join(os.tmpdir(), "codex-history-")); + const file = path.join(home, "sessions", "2026", "08", "04", "rollout-one.jsonl"); + await fs.mkdir(path.dirname(file), { recursive: true }); + const lines = [ + { type: "session_meta", timestamp: "2026-08-04T08:00:00.000Z", payload: { id: "thread-one", title: "测试会话", cwd: "/work/demo", model_provider: "openai", model: "gpt-5" } }, + { type: "event_msg", timestamp: "2026-08-04T08:01:00.000Z", payload: { type: "user_message", message: "请总结这个项目" } }, + { type: "event_msg", timestamp: "2026-08-04T08:02:00.000Z", payload: { type: "assistant_message", message: "这是项目总结。" } }, + { type: "response_item", timestamp: "2026-08-04T08:03:00.000Z", payload: { type: "message", role: "assistant", content: [{ type: "output_text", text: "Agent 的详细回答。" }] } }, + { type: "event_msg", payload: { type: "tool_call", arguments: "secret" } }, + { type: "event_msg", payload: { encrypted_content: "gAAA" } } + ]; + await fs.writeFile(file, lines.map((line) => JSON.stringify(line)).join("\n") + "\n", "utf8"); + return { home, file }; +} + +test("history lists readable sessions and filters message text", async () => { + const { home } = await fixture(); + try { + const result = await listHistory(home, { page: 1, pageSize: 50, query: "总结" }); + assert.equal(result.total, 1); + assert.equal(result.sessions[0].id, "thread-one"); + assert.equal(result.sessions[0].messageCount, 3); + } finally { + await fs.rm(home, { recursive: true, force: true }); + } +}); + +test("history detail returns only safe messages with a limit", async () => { + const { home } = await fixture(); + try { + const result = await getHistorySession(home, "thread-one", { messageLimit: 1 }); + assert.equal(result.returnedMessageCount, 1); + assert.equal(result.truncated, true); + assert.equal(result.messages[0].role, "assistant"); + assert.equal(result.messages[0].text, "Agent 的详细回答。"); + assert.doesNotMatch(JSON.stringify(result), /encrypted_content|tool_call|secret/); + } finally { + await fs.rm(home, { recursive: true, force: true }); + } +}); diff --git a/test/sync-service.test.js b/test/sync-service.test.js index d69163a..b64794a 100644 --- a/test/sync-service.test.js +++ b/test/sync-service.test.js @@ -3852,11 +3852,13 @@ test("cli rejects non-integer keep values", async () => { assert.match(result.stderr, /Invalid --keep value: 1\.5/); }); -test("node version guard allows Node 16 and rejects older releases", () => { - assert.equal(getUnsupportedNodeVersionMessage("16.0.0"), null); +test("node version guard requires Node 16.20.2 or newer", () => { + assert.equal(getUnsupportedNodeVersionMessage("16.20.2"), null); + assert.equal(getUnsupportedNodeVersionMessage("18.0.0"), null); + assert.match(getUnsupportedNodeVersionMessage("16.20.1"), /requires Node\.js 16\.20\.2/); assert.match( getUnsupportedNodeVersionMessage("14.21.3"), - /requires Node\.js 16\+/ + /requires Node\.js 16\.20\.2/ ); }); diff --git a/test/web-server.test.js b/test/web-server.test.js new file mode 100644 index 0000000..ca0c852 --- /dev/null +++ b/test/web-server.test.js @@ -0,0 +1,379 @@ +import assert from "node:assert/strict"; +import fs from "node:fs/promises"; +import http from "node:http"; +import os from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { createWebUiServer, startWebUi } from "../src/web-server.js"; +import { createMemoryWebUiState, WebUiStateStore } from "../src/web-state.js"; + +function request({ origin, pathname = "/", method = "GET", body, headers = {}, hostHeader }) { + return new Promise((resolve, reject) => { + const target = new URL(origin); + const serialized = body === undefined ? null : JSON.stringify(body); + const client = http.request({ + hostname: target.hostname, + port: target.port, + path: pathname, + method, + headers: { + ...(hostHeader ? { Host: hostHeader } : {}), + ...(serialized ? { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(serialized) } : {}), + ...headers + } + }, (response) => { + const chunks = []; + response.on("data", (chunk) => chunks.push(chunk)); + response.on("end", () => { + const text = Buffer.concat(chunks).toString("utf8"); + let payload = null; + try { payload = JSON.parse(text); } catch {} + resolve({ status: response.statusCode, text, payload, headers: response.headers }); + }); + }); + client.once("error", reject); + if (serialized) client.write(serialized); + client.end(); + }); +} + +async function startFixture(services = {}, options = {}) { + const root = await fs.mkdtemp(path.join(os.tmpdir(), "codex-provider-sync-web-")); + await fs.writeFile( + path.join(root, "index.html"), + 'fixture', + "utf8" + ); + const stateStore = options.stateStore ?? createMemoryWebUiState({ codexHome: "/tmp/.codex" }); + const handle = createWebUiServer({ webRoot: root, services, stateStore, now: options.now, pairingTtlMs: options.pairingTtlMs }); + await new Promise((resolve, reject) => { + handle.server.once("error", reject); + handle.server.listen(0, "127.0.0.1", resolve); + }); + const address = handle.server.address(); + const origin = `http://127.0.0.1:${address.port}`; + handle.setBaseUrl(origin); + return { + ...handle, + stateStore, + root, + origin, + async pair(pairingToken = handle.issuePairing(), { originHeader = origin, hostHeader } = {}) { + const response = await request({ + origin, + pathname: "/api/pair", + method: "POST", + headers: { Origin: originHeader, "X-Codex-Provider-Pairing": pairingToken }, + hostHeader + }); + return { response, credential: response.payload?.deviceCredential }; + }, + close: async () => { + await new Promise((resolve, reject) => handle.server.close((error) => error ? reject(error) : resolve())); + await fs.rm(root, { recursive: true, force: true }); + } + }; +} + +async function api(handle, pathname, body = {}, credential, { originHeader = handle.origin, hostHeader } = {}) { + return request({ + origin: handle.origin, + pathname, + method: "POST", + body, + hostHeader, + headers: { + Origin: originHeader, + "X-Codex-Provider-Device": credential ?? "" + } + }); +} + +function statusFixture(overrides = {}) { + return { + codexHome: "/tmp/.codex", + sqliteHome: "/tmp/.codex/sqlite", + sqliteHomeSource: "default", + sqliteAccess: { supported: true, reason: null, message: null }, + checkedStateDbPaths: ["/tmp/.codex/sqlite/state_5.sqlite"], + currentProvider: "openai", + currentProviderImplicit: false, + configuredProviders: ["openai", "relay"], + rolloutCounts: { sessions: { relay: 2, openai: 3 }, archived_sessions: { openai: 1 } }, + lockedRolloutFiles: [], + encryptedContentCounts: { sessions: {}, archived_sessions: {} }, + encryptedContentWarning: null, + sqliteCounts: { sessions: { openai: 3, relay: 2 }, archived_sessions: { openai: 1 } }, + stateDbLocation: { path: "/tmp/.codex/sqlite/state_5.sqlite", source: "sqlite-dir" }, + sqliteRepairStats: { userEventRowsNeedingRepair: 0, cwdRowsNeedingRepair: 0 }, + projectThreadVisibility: [], + backupRoot: "/tmp/.codex/backups_state/provider-sync", + backupSummary: { count: 0, totalBytes: 0 }, + ...overrides + }; +} + +test("anonymous HTML contains no API or pairing credential and write APIs require pairing", async () => { + const handle = await startFixture({ getStatus: async () => statusFixture() }); + try { + const pairingToken = handle.issuePairing(); + const page = await request({ origin: handle.origin }); + assert.equal(page.status, 200); + assert.doesNotMatch(page.text, new RegExp(pairingToken)); + assert.doesNotMatch(page.text, /apiToken|X-Codex-Provider-Token/); + assert.doesNotMatch(page.text, /__CODEX_PROVIDER_SYNC_BOOTSTRAP__/); + assert.match(page.headers["content-security-policy"], /script-src 'self';/); + + const denied = await api(handle, "/api/status", { profileId: "default" }, "wrong-token"); + assert.equal(denied.status, 403); + assert.equal(denied.payload.code, "PAIRING_REQUIRED"); + + const paired = await handle.pair(pairingToken); + assert.equal(paired.response.status, 200); + assert.ok(paired.credential.length >= 32); + const replay = await handle.pair(pairingToken); + assert.equal(replay.response.status, 403); + + const allowed = await api(handle, "/api/status", { profileId: "default" }, paired.credential); + assert.equal(allowed.status, 200); + } finally { + await handle.close(); + } +}); + +test("pairing credentials expire and pairing material is never recorded as activity", async () => { + let currentTime = 1000; + const handle = await startFixture({}, { now: () => currentTime, pairingTtlMs: 300 }); + try { + const pairingToken = handle.issuePairing(); + currentTime += 301; + const expired = await handle.pair(pairingToken); + assert.equal(expired.response.status, 403); + assert.doesNotMatch(JSON.stringify(handle.getActivity()), new RegExp(pairingToken)); + } finally { + await handle.close(); + } +}); + +test("Origin validation uses the actual loopback Host and supports forwarded ports", async () => { + const handle = await startFixture({ getStatus: async () => statusFixture() }); + try { + const { credential } = await handle.pair(); + const invalid = await api(handle, "/api/status", { profileId: "default" }, credential, { originHeader: "http://evil.example" }); + assert.equal(invalid.status, 403); + assert.equal(invalid.payload.code, "INVALID_ORIGIN"); + + const forwardedHost = "localhost:19091"; + const forwarded = await api(handle, "/api/status", { profileId: "default" }, credential, { + originHeader: `http://${forwardedHost}`, + hostHeader: forwardedHost + }); + assert.equal(forwarded.status, 200); + } finally { + await handle.close(); + } +}); + +test("server-managed profiles reject per-operation paths and resolve profileId", async () => { + const calls = []; + const handle = await startFixture({ getStatus: async (storage) => { calls.push(storage); return statusFixture({ codexHome: storage.codexHome }); } }); + try { + const { credential } = await handle.pair(); + const rawPath = await api(handle, "/api/status", { codexHome: "/tmp/other" }, credential); + assert.equal(rawPath.status, 500); + assert.match(rawPath.payload.error, /server-managed profileId/); + + const saved = await api(handle, "/api/profiles/save", { + profileId: "work", + name: "Work", + codexHome: "/tmp/work-codex", + sqliteHome: "/tmp/work-sqlite" + }, credential); + assert.equal(saved.status, 200); + + const response = await api(handle, "/api/status", { profileId: "work" }, credential); + assert.equal(response.status, 200); + assert.equal(calls.at(-1).codexHome, path.resolve("/tmp/work-codex")); + assert.equal(calls.at(-1).sqliteHome, path.resolve("/tmp/work-sqlite")); + } finally { + await handle.close(); + } +}); + +test("Web UI sync delegates only server-resolved storage to the shared service", async () => { + const calls = []; + const handle = await startFixture({ + readConfigText: async () => 'model_provider = "openai"\nmodel = "gpt-5"\n', + readRootModelFromConfigText: () => "gpt-5", + runSync: async (options) => { calls.push(options); options.onProgress({ stage: "create_backup", status: "start" }); return { targetProvider: options.provider, backupDir: "/tmp/backup" }; } + }); + try { + const { credential } = await handle.pair(); + const invalid = await api(handle, "/api/sync", { profileId: "default", provider: "bad provider", keepCount: 5 }, credential); + assert.equal(invalid.status, 400); + const response = await api(handle, "/api/sync", { profileId: "default", provider: "openai", keepCount: 5 }, credential); + assert.equal(response.status, 200); + assert.equal(calls.length, 1); + assert.equal(calls[0].codexHome, path.resolve("/tmp/.codex")); + assert.equal(calls[0].model, "gpt-5"); + assert.ok(handle.getActivity().some((entry) => entry.message === "Creating backup")); + } finally { + await handle.close(); + } +}); + +test("Web UI restore only accepts managed backups for the selected profile", async () => { + let restored = false; + const handle = await startFixture({ + listBackups: async () => ({ backupRoot: "/tmp/.codex/backups_state/provider-sync", backups: [{ id: "known", path: "/tmp/.codex/backups_state/provider-sync/known", metadata: {} }] }), + runRestore: async () => { restored = true; return { targetProvider: "openai" }; } + }); + try { + const { credential } = await handle.pair(); + const response = await api(handle, "/api/restore", { profileId: "default", backupId: "../../outside", restoreDatabase: true, restoreSessions: true }, credential); + assert.equal(response.status, 400); + assert.equal(restored, false); + } finally { + await handle.close(); + } +}); + +test("Web UI history endpoints delegate through the selected profile", async () => { + const calls = []; + const handle = await startFixture({ + listHistory: async (codexHome, options) => { calls.push(["list", codexHome, options]); return { page: 1, pageSize: 50, total: 1, hasNextPage: false, sessions: [{ id: "thread", title: "safe" }] }; }, + getHistorySession: async (codexHome, sessionId) => { calls.push(["detail", codexHome, sessionId]); return { session: { id: sessionId }, messages: [], truncated: false, returnedMessageCount: 0 }; } + }); + try { + const { credential } = await handle.pair(); + assert.equal((await api(handle, "/api/history", { profileId: "default", query: "safe" }, credential)).status, 200); + assert.equal((await api(handle, "/api/history/session", { profileId: "default", sessionId: "thread" }, credential)).status, 200); + assert.deepEqual(calls.map((call) => call[0]), ["list", "detail"]); + } finally { + await handle.close(); + } +}); + +test("device credentials persist only as hashes and reset invalidates them", async () => { + const root = await fs.mkdtemp(path.join(os.tmpdir(), "codex-provider-sync-state-")); + const filePath = path.join(root, "web-state.json"); + const credential = "device-secret-that-must-not-be-persisted-verbatim"; + try { + const first = new WebUiStateStore({ filePath, defaultProfile: { codexHome: root } }); + await first.initialize(); + await first.addCredential(credential); + const serialized = await fs.readFile(filePath, "utf8"); + assert.doesNotMatch(serialized, new RegExp(credential)); + + const restarted = new WebUiStateStore({ filePath, defaultProfile: { codexHome: root } }); + await restarted.initialize(); + assert.equal(restarted.hasCredential(credential), true); + await restarted.resetCredentials(); + assert.equal(restarted.hasCredential(credential), false); + } finally { + await fs.rm(root, { recursive: true, force: true }); + } +}); + +test("startWebUi listens only on IPv4 loopback and reuses its existing instance", async () => { + const root = await fs.mkdtemp(path.join(os.tmpdir(), "codex-provider-sync-start-")); + const webRoot = path.join(root, "web"); + const stateFile = path.join(root, "state.json"); + const runtimeFile = path.join(root, "runtime.json"); + await fs.mkdir(webRoot); + await fs.writeFile(path.join(webRoot, "index.html"), "fixture"); + let first; + try { + first = await startWebUi({ port: 0, openBrowser: false, codexHome: root, stateFile, runtimeFile, webRoot }); + assert.equal(first.server.address().address, "127.0.0.1"); + const initialToken = new URL(first.pairingUrl).hash.slice("#pair=".length); + const paired = await request({ + origin: first.url, + pathname: "/api/pair", + method: "POST", + headers: { Origin: first.url, "X-Codex-Provider-Pairing": initialToken } + }); + const originalCredential = paired.payload.deviceCredential; + const second = await startWebUi({ port: 0, openBrowser: false, resetAccess: true, codexHome: root, stateFile, runtimeFile, webRoot }); + assert.equal(second.reused, true); + assert.equal(second.url, first.url); + assert.match(second.pairingUrl, /#pair=/); + const invalidated = await request({ + origin: first.url, + pathname: "/api/status", + method: "POST", + body: { profileId: "default" }, + headers: { Origin: first.url, "X-Codex-Provider-Device": originalCredential } + }); + assert.equal(invalidated.status, 403); + } finally { + await first?.close(); + await fs.rm(root, { recursive: true, force: true }); + } +}); + +test("startWebUi reports occupied ports clearly and handles unavailable or headless browser openers", async () => { + const root = await fs.mkdtemp(path.join(os.tmpdir(), "codex-provider-sync-port-")); + const webRoot = path.join(root, "web"); + await fs.mkdir(webRoot); + await fs.writeFile(path.join(webRoot, "index.html"), "fixture"); + const occupied = http.createServer(); + await new Promise((resolve, reject) => { + occupied.once("error", reject); + occupied.listen(0, "127.0.0.1", resolve); + }); + let handle; + try { + const occupiedPort = occupied.address().port; + await assert.rejects( + startWebUi({ + port: occupiedPort, + openBrowser: false, + codexHome: root, + stateFile: path.join(root, "occupied-state.json"), + runtimeFile: path.join(root, "occupied-runtime.json"), + webRoot + }), + /port .* already in use by another program/ + ); + handle = await startWebUi({ + port: 0, + openBrowser: true, + platform: "linux", + environment: { DISPLAY: ":0" }, + openUrl: async () => false, + codexHome: root, + stateFile: path.join(root, "headless-state.json"), + runtimeFile: path.join(root, "headless-runtime.json"), + webRoot + }); + assert.equal(handle.browserOpened, false); + assert.match(handle.pairingUrl, /#pair=/); + await handle.close(); + handle = null; + + let openAttempts = 0; + handle = await startWebUi({ + port: 0, + openBrowser: true, + platform: "linux", + environment: {}, + openUrl: async () => { + openAttempts += 1; + return true; + }, + codexHome: root, + stateFile: path.join(root, "no-display-state.json"), + runtimeFile: path.join(root, "no-display-runtime.json"), + webRoot + }); + assert.equal(openAttempts, 0); + assert.equal(handle.browserOpened, false); + assert.match(handle.pairingUrl, /#pair=/); + } finally { + await handle?.close(); + await new Promise((resolve) => occupied.close(resolve)); + await fs.rm(root, { recursive: true, force: true }); + } +}); diff --git a/web/dist/assets/index-00e598c3.css b/web/dist/assets/index-00e598c3.css new file mode 100644 index 0000000..0efc5e7 --- /dev/null +++ b/web/dist/assets/index-00e598c3.css @@ -0,0 +1 @@ +:root{color:#172033;background:#f5f7fa;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--accent: #2463eb;--accent-strong: #174fc8;--accent-soft: #edf3ff;--success: #11865b;--success-soft: #eaf8f2;--warning: #b36309;--warning-soft: #fff7e6;--danger: #c43c45;--danger-soft: #fff0f0;--text: #172033;--muted: #687388;--subtle: #8a94a7;--border: #dfe4ec;--border-strong: #cdd4df;--surface: #ffffff;--sidebar: #fbfcfe;--mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f5f7fa}button,input,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(36,99,235,.18);outline-offset:1px}.app-shell{min-height:100vh;display:grid;grid-template-columns:198px minmax(0,1fr);grid-template-rows:68px minmax(0,1fr)}.app-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.brand,.header-actions,.service-state,.brand-mark,.nav-item,.sidebar-provider-value,.path-input-wrap,.button,.alignment-state,.column-label,.warning-row,.execution-head,.backup-assurance,.text-button,.backup-row,.backup-root-line,.live-operation,.modal-callout,.restore-summary,.toast>div{display:flex;align-items:center}.brand{gap:11px}.brand-mark{width:36px;height:36px;justify-content:center;color:#fff;background:#202a3d;border-radius:9px;box-shadow:0 5px 13px #17203329}.brand-name{font-size:15px;font-weight:720;letter-spacing:-.01em}.brand-subtitle{margin-top:2px;color:var(--muted);font-size:11px}.header-actions{gap:16px}.service-state{gap:8px;color:#4f5b70;font-size:12px}.status-dot{width:7px;height:7px;border-radius:50%;background:#9aa4b5;box-shadow:0 0 0 3px #9aa4b51f;flex:0 0 auto}.status-dot--success{background:var(--success);box-shadow:0 0 0 3px #11865b1f}.status-dot--warning{background:#db820d;box-shadow:0 0 0 3px #db820d1f}.status-dot--danger{background:var(--danger);box-shadow:0 0 0 3px #c43c451f}.sidebar{grid-column:1;grid-row:2;position:sticky;top:68px;height:calc(100vh - 68px);display:flex;flex-direction:column;padding:19px 12px 16px;background:var(--sidebar);border-right:1px solid var(--border)}.navigation{display:grid;gap:4px}.nav-item{width:100%;gap:10px;border:0;border-radius:7px;background:transparent;padding:10px 12px;color:#657087;font-size:13px;text-align:left;cursor:pointer}.nav-item:hover{background:#f0f3f8;color:#354157}.nav-item--active{background:var(--accent-soft);color:#174fc8;font-weight:650;box-shadow:inset 2px 0 0 var(--accent)}.sidebar-foot{margin-top:auto;padding:14px 10px 0;border-top:1px solid var(--border)}.sidebar-provider-label{color:var(--subtle);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.sidebar-provider-value{gap:8px;margin-top:8px;font-family:var(--mono);font-size:12px;font-weight:700}.sidebar-version{margin-top:12px;color:#a0a8b6;font-size:10px}.main-area{grid-column:2;grid-row:2;min-width:0}.storage-bar{min-height:88px;display:grid;grid-template-columns:minmax(220px,.8fr) minmax(260px,1.2fr) auto auto auto;gap:10px;align-items:end;padding:15px 26px 16px;background:rgba(255,255,255,.92);border-bottom:1px solid var(--border);position:sticky;top:68px;z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.path-field{display:grid;gap:6px;min-width:0;color:#455168;font-size:11px;font-weight:650}.path-field span small{color:var(--subtle);font-weight:450}.path-input-wrap{height:36px;gap:8px;padding:0 10px;border:1px solid var(--border-strong);background:#fff;border-radius:7px;color:#8791a3}.path-input-wrap:focus-within{border-color:#8eaff6;box-shadow:0 0 0 3px #2463eb17}.path-input-wrap input,.path-input-wrap select{min-width:0;width:100%;border:0;outline:0;color:#273247;font-family:var(--mono);font-size:11px;background:transparent}.storage-refresh{height:36px}.view-content{max-width:1480px;margin:0 auto;padding:24px 26px 42px}.history-view{height:calc(100dvh - 156px);min-height:0;display:flex;flex-direction:column;overflow:hidden}h1,h2,p{margin-top:0}h1{margin-bottom:6px;font-size:25px;letter-spacing:-.025em}h2{margin-bottom:5px;font-size:16px;letter-spacing:-.014em}.section-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.section-title-row p,.execution-head p,.page-intro p{margin-bottom:0;color:var(--muted);font-size:12px;line-height:1.55}.section-title-row--compact{align-items:center}.button{min-height:36px;justify-content:center;gap:7px;padding:0 13px;border:1px solid transparent;border-radius:7px;font-size:12px;font-weight:650;cursor:pointer;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{opacity:.48;cursor:not-allowed}.button--primary{color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 5px 12px #2463eb2e}.button--primary:hover:not(:disabled){background:var(--accent-strong)}.button--secondary{color:#3d4960;background:#fff;border-color:var(--border-strong);box-shadow:0 1px 2px #1720330a}.button--secondary:hover:not(:disabled){background:#f8faff;border-color:#b7c2d2}.button--quiet{background:#f5f7fa;border-color:#edf0f5;color:#3e4b62}.button--danger{color:#fff;background:var(--danger);border-color:var(--danger)}.button--compact{min-height:31px;padding:0 10px;font-size:11px}.text-button{gap:3px;border:0;background:transparent;color:var(--accent);font-size:11px;font-weight:650;cursor:pointer}.icon-button{width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;cursor:pointer;color:var(--muted)}.icon-button:hover{background:#f1f3f7}.status-panel,.data-section,.recent-backups,.backup-list-section,.activity-console{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 1px 2px #17203306}.status-panel{padding:20px 22px 21px}.alignment-state{gap:7px;min-height:30px;padding:0 10px;border:1px solid var(--border);border-radius:6px;font-size:11px;font-weight:650}.alignment-state--success{color:var(--success);border-color:#bfe4d4;background:var(--success-soft)}.alignment-state--warning{color:var(--warning);border-color:#ead2a4;background:var(--warning-soft)}.summary-strip{display:grid;grid-template-columns:repeat(4,1fr);margin-top:20px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.summary-item{min-width:0;padding:15px 18px;border-right:1px solid var(--border)}.summary-item:first-child{padding-left:0}.summary-item:last-child{border-right:0}.summary-item>span{display:block;color:var(--muted);font-size:10px}.summary-item strong{display:block;margin-top:5px;font-size:19px;letter-spacing:-.025em;overflow:hidden;text-overflow:ellipsis}.summary-item small{display:block;margin-top:3px;color:var(--subtle);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.distribution-grid{display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);gap:22px;padding-top:19px}.distribution-divider{background:var(--border)}.column-label{gap:7px;margin-bottom:14px;color:#3f4a5f;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.distribution-block+.distribution-block{margin-top:16px}.distribution-heading,.distribution-meta{display:flex;justify-content:space-between;gap:12px}.distribution-heading{margin-bottom:8px;color:var(--muted);font-size:11px}.distribution-heading strong{color:#3c485e}.distribution-list{display:grid;gap:8px}.distribution-meta{margin-bottom:5px;color:var(--muted);font-family:var(--mono);font-size:10px}.provider-name{color:#303b50}.bar-track{height:5px;overflow:hidden;background:#edf0f5;border-radius:99px}.bar-fill{display:block;height:100%;background:#9eabc0;border-radius:inherit}.bar-fill--current{background:var(--accent)}.empty-inline{color:var(--subtle);font-size:11px}.warning-stack{margin-top:12px;display:grid;gap:7px}.warning-row{align-items:flex-start;gap:10px;padding:10px 13px;border:1px solid;border-radius:7px;font-size:11px}.warning-row svg{margin-top:1px;flex:0 0 auto}.warning-row div{display:grid;gap:2px}.warning-row span{color:#6e5d47;line-height:1.5;word-break:break-word}.warning-row--warning{background:var(--warning-soft);border-color:#ebd7ae;color:var(--warning)}.warning-row--danger{background:var(--danger-soft);border-color:#efc2c4;color:var(--danger)}.warning-row--info{background:#eef6ff;border-color:#c9def8;color:#2463a7}.warning-row--info span{color:#4f6a89}.overview-lower-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start;margin-top:18px}.overview-main-column{min-width:0;width:100%;display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.data-section,.recent-backups{min-width:0;padding:18px 20px}.table-scroll{overflow-x:auto;margin-top:15px}.data-table{width:100%;border-collapse:collapse;font-size:11px}.data-table th{padding:9px 10px;color:var(--muted);background:#f8fafc;border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-weight:650;text-align:left;white-space:nowrap}.data-table td{padding:11px 10px;border-bottom:1px solid #edf0f4;color:#465268;vertical-align:top}.data-table tbody tr:last-child td{border-bottom:0}.path-cell{max-width:260px;font-family:var(--mono);color:#263249!important;word-break:break-all}.table-empty{color:var(--subtle)!important;text-align:center;padding:25px!important}.execution-panel{position:sticky;top:174px;padding:19px;background:#fff;border:1px solid #cdd8e9;border-radius:10px;box-shadow:0 9px 24px #26375312}.execution-head{align-items:flex-start;justify-content:space-between;gap:14px}.execution-head>svg{color:var(--accent);margin-top:2px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:17px;padding:4px;background:#f1f4f8;border-radius:8px}.segmented-option{min-width:0;display:grid;gap:3px;padding:9px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;text-align:left}.segmented-option span{font-size:11px;font-weight:700}.segmented-option small{color:var(--subtle);font-size:9px}.segmented-option--active{background:#fff;color:#263249;border-color:#dce3ee;box-shadow:0 2px 5px #17203312}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:12px;margin-top:15px}.form-field{display:grid;align-content:start;gap:6px;color:#4c586d;font-size:10px;font-weight:650}.form-field select,.form-field input,.custom-model-option input[type=text]{width:100%;height:35px;padding:0 9px;color:#273247;background:#fff;border:1px solid var(--border-strong);border-radius:6px;font-size:11px}.form-field small{color:var(--subtle);font-weight:450;line-height:1.35}.form-field .field-error{color:var(--danger)}.manual-provider-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;margin-top:9px}.manual-provider-row input{min-width:0;height:32px;padding:0 9px;color:#273247;background:#fff;border:1px solid var(--border-strong);border-radius:6px;font-family:var(--mono);font-size:10px}.manual-remove{grid-column:1 / -1;justify-self:start;padding:0;border:0;background:transparent;color:var(--danger);font-size:9px;cursor:pointer}.model-options,.restore-options{margin:16px 0 0;padding:13px;border:1px solid var(--border);border-radius:7px}.model-options legend,.restore-options legend{padding:0 5px;color:#566176;font-size:10px;font-weight:700}.model-options>label,.restore-options>label{display:flex;align-items:flex-start;gap:8px;padding:7px 0;color:#364258;font-size:11px;cursor:pointer}.model-options input[type=radio],.restore-options input[type=checkbox]{margin:2px 0 0;accent-color:var(--accent)}.model-options label>span,.restore-options label>span{min-width:0;display:grid;gap:2px;flex:1}.model-options small,.restore-options small{color:var(--muted);font-size:9px;font-weight:450;line-height:1.4}.custom-model-option input[type=text]{margin-top:5px}.backup-assurance{gap:7px;margin-top:14px;color:var(--success);font-size:10px}.execute-button{width:100%;height:40px;margin-top:14px}.backup-rows{margin-top:13px;border-top:1px solid var(--border)}.backup-row{min-width:0;gap:11px;padding:11px 0;border-bottom:1px solid #edf0f4}.backup-row:last-child{border-bottom:0}.backup-icon{width:30px;height:30px;display:grid;place-items:center;color:#5e6a80;background:#f1f4f8;border-radius:7px;flex:0 0 auto}.backup-main{min-width:0;display:grid;gap:2px;flex:1}.backup-main strong{font-size:11px}.backup-main span,.backup-size{color:var(--muted);font-size:10px}.empty-state{padding:25px 0 12px;color:var(--subtle);font-size:11px;text-align:center}.page-intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:4px 2px 20px}.prune-control{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px}.prune-control input{width:64px;height:34px;border:1px solid var(--border-strong);border-radius:6px;text-align:center}.backup-list-section{overflow:hidden}.backup-root-line{gap:8px;padding:13px 17px;background:#f8fafc;border-bottom:1px solid var(--border);color:#59657a;font-size:10px}.backup-root-line span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono);white-space:nowrap}.backup-root-line strong{color:#465168;font-size:10px}.full-backup-row{display:grid;grid-template-columns:190px 230px minmax(220px,1fr) auto;gap:22px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--border)}.full-backup-row:last-child{border-bottom:0}.backup-date,.backup-source{min-width:0;display:grid;gap:5px}.backup-date strong{font-size:12px}.backup-date span,.backup-source span{color:var(--subtle);font-size:9px}.backup-facts{display:flex;gap:15px;color:var(--muted);font-size:10px}.backup-facts span{display:grid;gap:3px}.backup-facts strong{color:#344057}.backup-source code{overflow:hidden;color:#445169;font-family:var(--mono);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.backup-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;color:var(--muted);font-size:10px}.large-empty{display:grid;justify-items:center;gap:7px;padding:70px 20px;color:var(--subtle)}.large-empty strong{color:#59657a;font-size:13px}.large-empty span{font-size:11px}.live-operation{gap:7px;color:var(--warning);font-size:11px}.activity-console{overflow:hidden}.console-head{display:flex;justify-content:space-between;padding:12px 15px;color:#b6c2d4;background:#202a3b;border-bottom:1px solid #354156;font-family:var(--mono);font-size:10px}.console-body{min-height:440px;max-height:calc(100vh - 250px);overflow:auto;padding:7px 0;background:#17202f;content-visibility:auto}.console-row{display:grid;grid-template-columns:150px 70px minmax(220px,1fr) minmax(0,1.2fr);gap:12px;padding:8px 15px;border-bottom:1px solid rgba(255,255,255,.035);color:#d7deea;font-family:var(--mono);font-size:10px;line-height:1.45}.console-row time,.console-detail{color:#7e8ca3}.console-level{color:#8fa3c1;text-transform:uppercase}.console-row--success .console-level{color:#54d19f}.console-row--error .console-level{color:#ff8790}.console-row--progress .console-level{color:#79a8ff}.console-empty{padding:30px 15px;color:#708098;font-family:var(--mono);font-size:11px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(20,28,43,.46);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(600px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border:1px solid #cfd6e1;border-radius:12px;box-shadow:0 24px 70px #0e172840;animation:modal-in .16s ease-out}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:17px 19px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:16px}.modal-body{padding:18px 19px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding:13px 19px;background:#f8fafc;border-top:1px solid var(--border)}.modal-callout{align-items:flex-start;gap:10px;padding:11px 12px;color:#9a5909;background:var(--warning-soft);border:1px solid #ead4aa;border-radius:7px}.modal-callout>svg{margin-top:1px;flex:0 0 auto}.modal-callout div{display:grid;gap:3px}.modal-callout span{color:#735f43;font-size:10px;line-height:1.55;word-break:break-word}.modal-callout--danger{color:var(--danger);background:var(--danger-soft);border-color:#efc1c4}.modal-callout--warning{margin-top:14px}.operation-scope{margin:16px 0 0;border-top:1px solid var(--border)}.operation-scope>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:14px;padding:9px 0;border-bottom:1px solid #edf0f4;font-size:11px}.operation-scope dt{color:var(--muted)}.operation-scope dd{margin:0;color:#2d394f;font-family:var(--mono);word-break:break-word}.operation-scope small{color:var(--subtle)}.restore-summary{align-items:flex-start;gap:10px;padding-bottom:13px;border-bottom:1px solid var(--border)}.restore-summary div{min-width:0;display:grid;gap:4px}.restore-summary strong{font-size:12px}.restore-summary code{color:var(--muted);font-family:var(--mono);font-size:9px;word-break:break-all}.restore-options{margin-bottom:14px}.profile-form{display:grid;gap:12px}.profile-form label{display:grid;gap:6px;color:#4c586d;font-size:10px;font-weight:650}.profile-form input{width:100%;height:36px;padding:0 10px;color:#273247;border:1px solid var(--border-strong);border-radius:6px;font:11px var(--mono)}.access-gate{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:12px;padding:24px;color:#344057;background:#f5f7fb;text-align:center}.access-gate svg{color:var(--accent)}.access-gate h1{margin:0;font-size:22px}.access-gate p{max-width:520px;margin:0;color:var(--muted);line-height:1.6}.access-gate code{padding:8px 12px;color:#273247;background:#fff;border:1px solid var(--border);border-radius:6px}.toast{position:fixed;right:22px;bottom:22px;z-index:120;width:min(390px,calc(100vw - 44px));display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px 14px;background:#fff;border:1px solid var(--border-strong);border-left:3px solid var(--accent);border-radius:8px;box-shadow:0 15px 40px #161f302e;animation:toast-in .2s ease-out}.toast>div{align-items:flex-start;gap:9px}.toast span{display:grid;gap:3px}.toast strong{font-size:12px}.toast small{color:var(--muted);font-size:10px;line-height:1.4;word-break:break-word}.toast button{border:0;background:transparent;color:var(--muted);cursor:pointer}.toast--success{border-left-color:var(--success)}.toast--success>div>svg{color:var(--success)}.toast--error{border-left-color:var(--danger)}.toast--error>div>svg{color:var(--danger)}.spin{animation:spin 1s linear infinite}.history-toolbar{display:grid;grid-template-columns:minmax(220px,1.7fr) repeat(3,minmax(130px,1fr));gap:9px;margin-bottom:14px}.history-toolbar input,.history-toolbar select{width:100%;min-width:0;padding:10px 11px;border:1px solid var(--border-strong);border-radius:7px;background:#fff;color:var(--text);font:inherit}.history-error{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;color:var(--danger);background:#fff5f3;border:1px solid #f2c9c2;border-radius:7px;font-size:12px}.history-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.4fr);flex:1 1 auto;min-height:0;height:100%;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:#fff}.history-list-panel{display:flex;min-width:0;min-height:0;flex-direction:column;overflow:hidden;border-right:1px solid var(--border);background:#fbfcfe}.history-list-head{display:flex;justify-content:space-between;padding:13px 15px;color:var(--muted);border-bottom:1px solid var(--border);font-size:11px}.history-list{flex:1 1 auto;min-height:0;height:0;overflow-y:auto;overscroll-behavior:contain}.history-session-row{display:block;width:100%;padding:13px 15px;text-align:left;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);cursor:pointer}.history-session-row:hover,.history-session-row--selected{background:#eef5ff}.history-session-top{display:flex;justify-content:space-between;gap:9px}.history-session-top strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.history-session-top time{flex:none;color:var(--subtle);font-size:10px}.history-session-row p{display:-webkit-box;margin:7px 0;overflow:hidden;color:var(--muted);font-size:11px;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}.history-session-meta{display:flex;flex-wrap:wrap;gap:7px;color:var(--subtle);font-size:10px}.history-session-meta span:first-child{color:var(--accent)}.history-pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-top:1px solid var(--border)}.history-pagination span{color:var(--muted);font-size:11px}.history-detail-panel{min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;background:#fff}.history-detail-head{display:flex;justify-content:space-between;gap:12px;padding:20px 22px 15px;border-bottom:1px solid var(--border)}.history-detail-head h2{margin:0 0 6px;font-size:17px}.history-detail-head p{margin:0;color:var(--muted);font:10px/1.4 var(--mono);word-break:break-word}.history-detail-head>span{flex:none;height:fit-content;padding:4px 7px;color:var(--accent);background:#edf4ff;border-radius:4px;font-size:10px}.history-truncated{display:flex;align-items:center;gap:7px;margin:14px 22px 0;padding:9px 10px;color:#8b631c;background:#fff8e7;border:1px solid #f0dfae;border-radius:6px;font-size:11px}.message-stream{display:grid;gap:14px;padding:20px 22px 28px}.chat-message{max-width:88%}.chat-message--user{justify-self:end}.chat-message--assistant{justify-self:start}.chat-message-label{display:flex;justify-content:space-between;gap:12px;margin-bottom:5px;color:var(--muted);font-size:10px}.chat-message--user .chat-message-label{color:var(--accent)}.chat-message-label time{color:var(--subtle);font:9px var(--mono)}.chat-message-body{padding:11px 13px;white-space:pre-wrap;word-break:break-word;color:var(--text);background:#f5f7fb;border:1px solid var(--border);border-radius:8px;font-size:12px;line-height:1.6}.chat-message--user .chat-message-body{background:#edf4ff;border-color:#d5e4fb}.chat-message-body code{padding:1px 4px;background:rgba(45,57,79,.08);border-radius:3px;font:11px var(--mono)}.chat-message-body pre{margin:8px 0 0;padding:10px;overflow:auto;background:#1f2937;color:#f7f9fc;border-radius:5px;white-space:pre}.chat-message-body pre code{padding:0;background:transparent;color:inherit}@keyframes spin{to{transform:rotate(360deg)}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media (max-width: 1120px){.app-shell{grid-template-columns:168px minmax(0,1fr)}.overview-lower-grid{grid-template-columns:1fr}.execution-panel{position:static}.full-backup-row{grid-template-columns:170px 1fr auto}.backup-source{grid-column:1 / 3;grid-row:2}.backup-row-actions{grid-column:3;grid-row:1 / 3}}@media (max-width: 820px){.app-shell{display:block}.app-header{height:62px;padding:0 14px}.brand-subtitle,.service-state{display:none}.sidebar{position:sticky;top:62px;z-index:25;width:100%;height:auto;display:block;padding:7px 10px;border-right:0;border-bottom:1px solid var(--border)}.navigation{display:grid;grid-template-columns:repeat(4,1fr)}.nav-item{justify-content:center;padding:8px}.nav-item--active{box-shadow:inset 0 -2px 0 var(--accent)}.sidebar-foot{display:none}.storage-bar{position:static;grid-template-columns:1fr;padding:14px}.view-content{padding:18px 14px 32px}.summary-strip{grid-template-columns:1fr 1fr}.summary-item{border-bottom:1px solid var(--border)}.summary-item:nth-child(2){border-right:0}.summary-item:nth-child(3),.summary-item:nth-child(4){border-bottom:0}.summary-item:nth-child(3){padding-left:0}.distribution-grid{grid-template-columns:1fr}.distribution-divider{height:1px}.page-intro{align-items:flex-start;flex-direction:column}.full-backup-row{grid-template-columns:1fr auto;gap:12px}.backup-facts,.backup-source{grid-column:1 / -1}.backup-row-actions{grid-column:2;grid-row:1}.console-row{grid-template-columns:115px 62px minmax(180px,1fr)}.console-detail{grid-column:3}.history-toolbar{grid-template-columns:1fr 1fr}.history-toolbar input{grid-column:1 / -1}.history-view{height:calc(100dvh - 270px);min-height:520px}.history-layout{grid-template-columns:1fr;min-height:0}.history-list-panel{min-height:0;max-height:40%;border-right:0;border-bottom:1px solid var(--border)}.history-detail-panel{min-height:0}}@media (max-width: 560px){.header-actions .button span{display:none}.brand-name{font-size:13px}.status-panel,.data-section,.recent-backups{padding:16px}.section-title-row{align-items:flex-start;flex-direction:column}.summary-strip{grid-template-columns:1fr}.summary-item{padding-left:0;border-right:0;border-bottom:1px solid var(--border)!important}.summary-item:last-child{border-bottom:0!important}.form-grid,.segmented{grid-template-columns:1fr}.backup-size{display:none}.prune-control{width:100%;justify-content:space-between}.operation-scope>div{grid-template-columns:1fr;gap:4px}.modal{max-height:calc(100vh - 20px)}.modal-backdrop{padding:10px}.history-toolbar{grid-template-columns:1fr}.history-toolbar input{grid-column:auto}.history-view{height:calc(100dvh - 300px);min-height:500px}.history-detail-head,.message-stream{padding-left:15px;padding-right:15px}.chat-message{max-width:96%}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}} diff --git a/web/dist/assets/index-33db301d.js b/web/dist/assets/index-33db301d.js new file mode 100644 index 0000000..d95fe84 --- /dev/null +++ b/web/dist/assets/index-33db301d.js @@ -0,0 +1,42 @@ +(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const i of l)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function t(l){const i={};return l.integrity&&(i.integrity=l.integrity),l.referrerPolicy&&(i.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?i.credentials="include":l.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(l){if(l.ep)return;l.ep=!0;const i=t(l);fetch(l.href,i)}})();function Rc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var yu={exports:{}},jl={},gu={exports:{}},F={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hr=Symbol.for("react.element"),Mc=Symbol.for("react.portal"),Ic=Symbol.for("react.fragment"),Oc=Symbol.for("react.strict_mode"),Dc=Symbol.for("react.profiler"),Fc=Symbol.for("react.provider"),$c=Symbol.for("react.context"),Ac=Symbol.for("react.forward_ref"),Uc=Symbol.for("react.suspense"),Hc=Symbol.for("react.memo"),Bc=Symbol.for("react.lazy"),ss=Symbol.iterator;function Vc(e){return e===null||typeof e!="object"?null:(e=ss&&e[ss]||e["@@iterator"],typeof e=="function"?e:null)}var xu={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},wu=Object.assign,ju={};function Ct(e,n,t){this.props=e,this.context=n,this.refs=ju,this.updater=t||xu}Ct.prototype.isReactComponent={};Ct.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};Ct.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ku(){}ku.prototype=Ct.prototype;function oo(e,n,t){this.props=e,this.context=n,this.refs=ju,this.updater=t||xu}var so=oo.prototype=new ku;so.constructor=oo;wu(so,Ct.prototype);so.isPureReactComponent=!0;var us=Array.isArray,Su=Object.prototype.hasOwnProperty,uo={current:null},Cu={key:!0,ref:!0,__self:!0,__source:!0};function Nu(e,n,t){var r,l={},i=null,s=null;if(n!=null)for(r in n.ref!==void 0&&(s=n.ref),n.key!==void 0&&(i=""+n.key),n)Su.call(n,r)&&!Cu.hasOwnProperty(r)&&(l[r]=n[r]);var u=arguments.length-2;if(u===1)l.children=t;else if(1>>1,b=S[H];if(0>>1;Hl(Pt,M))Zel(L,Pt)?(S[H]=L,S[Ze]=M,H=Ze):(S[H]=Pt,S[Ge]=M,H=Ge);else if(Zel(L,M))S[H]=L,S[Ze]=M,H=Ze;else break e}}return T}function l(S,T){var M=S.sortIndex-T.sortIndex;return M!==0?M:S.id-T.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var s=Date,u=s.now();e.unstable_now=function(){return s.now()-u}}var a=[],d=[],v=1,m=null,h=3,g=!1,w=!1,C=!1,I=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function p(S){for(var T=t(d);T!==null;){if(T.callback===null)r(d);else if(T.startTime<=S)r(d),T.sortIndex=T.expirationTime,n(a,T);else break;T=t(d)}}function y(S){if(C=!1,p(S),!w)if(t(a)!==null)w=!0,z(N);else{var T=t(d);T!==null&&J(y,T.startTime-S)}}function N(S,T){w=!1,C&&(C=!1,f(E),E=-1),g=!0;var M=h;try{for(p(T),m=t(a);m!==null&&(!(m.expirationTime>T)||S&&!G());){var H=m.callback;if(typeof H=="function"){m.callback=null,h=m.priorityLevel;var b=H(m.expirationTime<=T);T=e.unstable_now(),typeof b=="function"?m.callback=b:m===t(a)&&r(a),p(T)}else r(a);m=t(a)}if(m!==null)var Xn=!0;else{var Ge=t(d);Ge!==null&&J(y,Ge.startTime-T),Xn=!1}return Xn}finally{m=null,h=M,g=!1}}var j=!1,k=null,E=-1,D=5,R=-1;function G(){return!(e.unstable_now()-RS||125H?(S.sortIndex=M,n(d,S),t(a)===null&&S===t(d)&&(C?(f(E),E=-1):C=!0,J(y,M-H))):(S.sortIndex=b,n(a,S),w||g||(w=!0,z(N))),S},e.unstable_shouldYield=G,e.unstable_wrapCallback=function(S){var T=h;return function(){var M=h;h=T;try{return S.apply(this,arguments)}finally{h=M}}}})(Lu);zu.exports=Lu;var ed=zu.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var nd=_,Ce=ed;function x(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fi=Object.prototype.hasOwnProperty,td=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,cs={},ds={};function rd(e){return fi.call(ds,e)?!0:fi.call(cs,e)?!1:td.test(e)?ds[e]=!0:(cs[e]=!0,!1)}function ld(e,n,t,r){if(t!==null&&t.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return r?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function id(e,n,t,r){if(n===null||typeof n>"u"||ld(e,n,t,r))return!0;if(r)return!1;if(t!==null)switch(t.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function me(e,n,t,r,l,i,s){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=t,this.propertyName=e,this.type=n,this.sanitizeURL=i,this.removeEmptyString=s}var se={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){se[e]=new me(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];se[n]=new me(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){se[e]=new me(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){se[e]=new me(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){se[e]=new me(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){se[e]=new me(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){se[e]=new me(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){se[e]=new me(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){se[e]=new me(e,5,!1,e.toLowerCase(),null,!1,!1)});var fo=/[\-:]([a-z])/g;function po(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(fo,po);se[n]=new me(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(fo,po);se[n]=new me(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(fo,po);se[n]=new me(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){se[e]=new me(e,1,!1,e.toLowerCase(),null,!1,!1)});se.xlinkHref=new me("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){se[e]=new me(e,1,!1,e.toLowerCase(),null,!0,!0)});function ho(e,n,t,r){var l=se.hasOwnProperty(n)?se[n]:null;(l!==null?l.type!==0:r||!(2u||l[s]!==i[u]){var a=` +`+l[s].replace(" at new "," at ");return e.displayName&&a.includes("")&&(a=a.replace("",e.displayName)),a}while(1<=s&&0<=u);break}}}finally{Bl=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?Dt(e):""}function od(e){switch(e.tag){case 5:return Dt(e.type);case 16:return Dt("Lazy");case 13:return Dt("Suspense");case 19:return Dt("SuspenseList");case 0:case 2:case 15:return e=Vl(e.type,!1),e;case 11:return e=Vl(e.type.render,!1),e;case 1:return e=Vl(e.type,!0),e;default:return""}}function vi(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Jn:return"Fragment";case Zn:return"Portal";case pi:return"Profiler";case mo:return"StrictMode";case hi:return"Suspense";case mi:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Mu:return(e.displayName||"Context")+".Consumer";case Ru:return(e._context.displayName||"Context")+".Provider";case vo:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case yo:return n=e.displayName||null,n!==null?n:vi(e.type)||"Memo";case pn:n=e._payload,e=e._init;try{return vi(e(n))}catch{}}return null}function sd(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return vi(n);case 8:return n===mo?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Pn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ou(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function ud(e){var n=Ou(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var l=t.get,i=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(s){r=""+s,i.call(this,s)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function kr(e){e._valueTracker||(e._valueTracker=ud(e))}function Du(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=Ou(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function Gr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function yi(e,n){var t=n.checked;return q({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function ps(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=Pn(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Fu(e,n){n=n.checked,n!=null&&ho(e,"checked",n,!1)}function gi(e,n){Fu(e,n);var t=Pn(n.value),r=n.type;if(t!=null)r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?xi(e,n.type,t):n.hasOwnProperty("defaultValue")&&xi(e,n.type,Pn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function hs(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function xi(e,n,t){(n!=="number"||Gr(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var Ft=Array.isArray;function ct(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l"+n.valueOf().toString()+"",n=Sr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Zt(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}var Ut={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ad=["Webkit","ms","Moz","O"];Object.keys(Ut).forEach(function(e){ad.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Ut[n]=Ut[e]})});function Hu(e,n,t){return n==null||typeof n=="boolean"||n===""?"":t||typeof n!="number"||n===0||Ut.hasOwnProperty(e)&&Ut[e]?(""+n).trim():n+"px"}function Bu(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=Hu(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}var cd=q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ki(e,n){if(n){if(cd[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(x(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(x(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(x(61))}if(n.style!=null&&typeof n.style!="object")throw Error(x(62))}}function Si(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ci=null;function go(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ni=null,dt=null,ft=null;function ys(e){if(e=yr(e)){if(typeof Ni!="function")throw Error(x(280));var n=e.stateNode;n&&(n=El(n),Ni(e.stateNode,e.type,n))}}function Vu(e){dt?ft?ft.push(e):ft=[e]:dt=e}function Qu(){if(dt){var e=dt,n=ft;if(ft=dt=null,ys(e),n)for(e=0;e>>=0,e===0?32:31-(jd(e)/kd|0)|0}var Cr=64,Nr=4194304;function $t(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function el(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,i=e.pingedLanes,s=t&268435455;if(s!==0){var u=s&~l;u!==0?r=$t(u):(i&=s,i!==0&&(r=$t(i)))}else s=t&~l,s!==0?r=$t(s):i!==0&&(r=$t(i));if(r===0)return 0;if(n!==0&&n!==r&&!(n&l)&&(l=r&-r,i=n&-n,l>=i||l===16&&(i&4194240)!==0))return n;if(r&4&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0t;t++)n.push(e);return n}function mr(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-$e(n),e[n]=t}function Ed(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Bt),Es=String.fromCharCode(32),Ps=!1;function ca(e,n){switch(e){case"keyup":return ef.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function da(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var bn=!1;function tf(e,n){switch(e){case"compositionend":return da(n);case"keypress":return n.which!==32?null:(Ps=!0,Es);case"textInput":return e=n.data,e===Es&&Ps?null:e;default:return null}}function rf(e,n){if(bn)return e==="compositionend"||!Eo&&ca(e,n)?(e=ua(),Hr=So=yn=null,bn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=Ts(t)}}function ma(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?ma(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function va(){for(var e=window,n=Gr();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href=="string"}catch{t=!1}if(t)e=n.contentWindow;else break;n=Gr(e.document)}return n}function Po(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function pf(e){var n=va(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&ma(t.ownerDocument.documentElement,t)){if(r!==null&&Po(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,i=Math.min(r.start,l);r=r.end===void 0?i:Math.min(r.end,l),!e.extend&&i>r&&(l=r,r=i,i=l),l=Rs(t,i);var s=Rs(t,r);l&&s&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),i>r?(e.addRange(n),e.extend(s.node,s.offset)):(n.setEnd(s.node,s.offset),e.addRange(n)))}}for(n=[],e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,et=null,Ti=null,Qt=null,Ri=!1;function Ms(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;Ri||et==null||et!==Gr(r)||(r=et,"selectionStart"in r&&Po(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Qt&&rr(Qt,r)||(Qt=r,r=rl(Ti,"onSelect"),0rt||(e.current=$i[rt],$i[rt]=null,rt--)}function U(e,n){rt++,$i[rt]=e.current,e.current=n}var _n={},de=Ln(_n),ge=Ln(!1),Un=_n;function yt(e,n){var t=e.type.contextTypes;if(!t)return _n;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},i;for(i in t)l[i]=n[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function xe(e){return e=e.childContextTypes,e!=null}function il(){V(ge),V(de)}function Us(e,n,t){if(de.current!==_n)throw Error(x(168));U(de,n),U(ge,t)}function Na(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(x(108,sd(e)||"Unknown",l));return q({},t,r)}function ol(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_n,Un=de.current,U(de,e),U(ge,ge.current),!0}function Hs(e,n,t){var r=e.stateNode;if(!r)throw Error(x(169));t?(e=Na(e,n,Un),r.__reactInternalMemoizedMergedChildContext=e,V(ge),V(de),U(de,e)):V(ge),U(ge,t)}var en=null,Pl=!1,ri=!1;function Ea(e){en===null?en=[e]:en.push(e)}function Nf(e){Pl=!0,Ea(e)}function Tn(){if(!ri&&en!==null){ri=!0;var e=0,n=A;try{var t=en;for(A=1;e>=s,l-=s,nn=1<<32-$e(n)+l|t<E?(D=k,k=null):D=k.sibling;var R=h(f,k,p[E],y);if(R===null){k===null&&(k=D);break}e&&k&&R.alternate===null&&n(f,k),c=i(R,c,E),j===null?N=R:j.sibling=R,j=R,k=D}if(E===p.length)return t(f,k),Q&&Rn(f,E),N;if(k===null){for(;EE?(D=k,k=null):D=k.sibling;var G=h(f,k,R.value,y);if(G===null){k===null&&(k=D);break}e&&k&&G.alternate===null&&n(f,k),c=i(G,c,E),j===null?N=G:j.sibling=G,j=G,k=D}if(R.done)return t(f,k),Q&&Rn(f,E),N;if(k===null){for(;!R.done;E++,R=p.next())R=m(f,R.value,y),R!==null&&(c=i(R,c,E),j===null?N=R:j.sibling=R,j=R);return Q&&Rn(f,E),N}for(k=r(f,k);!R.done;E++,R=p.next())R=g(k,f,E,R.value,y),R!==null&&(e&&R.alternate!==null&&k.delete(R.key===null?E:R.key),c=i(R,c,E),j===null?N=R:j.sibling=R,j=R);return e&&k.forEach(function(Be){return n(f,Be)}),Q&&Rn(f,E),N}function I(f,c,p,y){if(typeof p=="object"&&p!==null&&p.type===Jn&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case jr:e:{for(var N=p.key,j=c;j!==null;){if(j.key===N){if(N=p.type,N===Jn){if(j.tag===7){t(f,j.sibling),c=l(j,p.props.children),c.return=f,f=c;break e}}else if(j.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===pn&&Qs(N)===j.type){t(f,j.sibling),c=l(j,p.props),c.ref=Mt(f,j,p),c.return=f,f=c;break e}t(f,j);break}else n(f,j);j=j.sibling}p.type===Jn?(c=An(p.props.children,f.mode,y,p.key),c.return=f,f=c):(y=Xr(p.type,p.key,p.props,null,f.mode,y),y.ref=Mt(f,c,p),y.return=f,f=y)}return s(f);case Zn:e:{for(j=p.key;c!==null;){if(c.key===j)if(c.tag===4&&c.stateNode.containerInfo===p.containerInfo&&c.stateNode.implementation===p.implementation){t(f,c.sibling),c=l(c,p.children||[]),c.return=f,f=c;break e}else{t(f,c);break}else n(f,c);c=c.sibling}c=di(p,f.mode,y),c.return=f,f=c}return s(f);case pn:return j=p._init,I(f,c,j(p._payload),y)}if(Ft(p))return w(f,c,p,y);if(_t(p))return C(f,c,p,y);Rr(f,p)}return typeof p=="string"&&p!==""||typeof p=="number"?(p=""+p,c!==null&&c.tag===6?(t(f,c.sibling),c=l(c,p),c.return=f,f=c):(t(f,c),c=ci(p,f.mode,y),c.return=f,f=c),s(f)):t(f,c)}return I}var xt=La(!0),Ta=La(!1),al=Ln(null),cl=null,ot=null,To=null;function Ro(){To=ot=cl=null}function Mo(e){var n=al.current;V(al),e._currentValue=n}function Hi(e,n,t){for(;e!==null;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,r!==null&&(r.childLanes|=n)):r!==null&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function ht(e,n){cl=e,To=ot=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(ye=!0),e.firstContext=null)}function Te(e){var n=e._currentValue;if(To!==e)if(e={context:e,memoizedValue:n,next:null},ot===null){if(cl===null)throw Error(x(308));ot=e,cl.dependencies={lanes:0,firstContext:e}}else ot=ot.next=e;return n}var On=null;function Io(e){On===null?On=[e]:On.push(e)}function Ra(e,n,t,r){var l=n.interleaved;return l===null?(t.next=t,Io(n)):(t.next=l.next,l.next=t),n.interleaved=t,sn(e,r)}function sn(e,n){e.lanes|=n;var t=e.alternate;for(t!==null&&(t.lanes|=n),t=e,e=e.return;e!==null;)e.childLanes|=n,t=e.alternate,t!==null&&(t.childLanes|=n),t=e,e=e.return;return t.tag===3?t.stateNode:null}var hn=!1;function Oo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ma(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function rn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Sn(e,n,t){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,$&2){var l=r.pending;return l===null?n.next=n:(n.next=l.next,l.next=n),r.pending=n,sn(e,t)}return l=r.interleaved,l===null?(n.next=n,Io(r)):(n.next=l.next,l.next=n),r.interleaved=n,sn(e,t)}function Vr(e,n,t){if(n=n.updateQueue,n!==null&&(n=n.shared,(t&4194240)!==0)){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,wo(e,t)}}function Ws(e,n){var t=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,t===r)){var l=null,i=null;if(t=t.firstBaseUpdate,t!==null){do{var s={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null};i===null?l=i=s:i=i.next=s,t=t.next}while(t!==null);i===null?l=i=n:i=i.next=n}else l=i=n;t={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=t;return}e=t.lastBaseUpdate,e===null?t.firstBaseUpdate=n:e.next=n,t.lastBaseUpdate=n}function dl(e,n,t,r){var l=e.updateQueue;hn=!1;var i=l.firstBaseUpdate,s=l.lastBaseUpdate,u=l.shared.pending;if(u!==null){l.shared.pending=null;var a=u,d=a.next;a.next=null,s===null?i=d:s.next=d,s=a;var v=e.alternate;v!==null&&(v=v.updateQueue,u=v.lastBaseUpdate,u!==s&&(u===null?v.firstBaseUpdate=d:u.next=d,v.lastBaseUpdate=a))}if(i!==null){var m=l.baseState;s=0,v=d=a=null,u=i;do{var h=u.lane,g=u.eventTime;if((r&h)===h){v!==null&&(v=v.next={eventTime:g,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var w=e,C=u;switch(h=n,g=t,C.tag){case 1:if(w=C.payload,typeof w=="function"){m=w.call(g,m,h);break e}m=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=C.payload,h=typeof w=="function"?w.call(g,m,h):w,h==null)break e;m=q({},m,h);break e;case 2:hn=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,h=l.effects,h===null?l.effects=[u]:h.push(u))}else g={eventTime:g,lane:h,tag:u.tag,payload:u.payload,callback:u.callback,next:null},v===null?(d=v=g,a=m):v=v.next=g,s|=h;if(u=u.next,u===null){if(u=l.shared.pending,u===null)break;h=u,u=h.next,h.next=null,l.lastBaseUpdate=h,l.shared.pending=null}}while(1);if(v===null&&(a=m),l.baseState=a,l.firstBaseUpdate=d,l.lastBaseUpdate=v,n=l.shared.interleaved,n!==null){l=n;do s|=l.lane,l=l.next;while(l!==n)}else i===null&&(l.shared.lanes=0);Vn|=s,e.lanes=s,e.memoizedState=m}}function Ks(e,n,t){if(e=n.effects,n.effects=null,e!==null)for(n=0;nt?t:4,e(!0);var r=ii.transition;ii.transition={};try{e(!1),n()}finally{A=t,ii.transition=r}}function Ga(){return Re().memoizedState}function zf(e,n,t){var r=Nn(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},Za(e))Ja(n,t);else if(t=Ra(e,n,t,r),t!==null){var l=pe();Ae(t,e,r,l),ba(t,n,r)}}function Lf(e,n,t){var r=Nn(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(Za(e))Ja(n,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=n.lastRenderedReducer,i!==null))try{var s=n.lastRenderedState,u=i(s,t);if(l.hasEagerState=!0,l.eagerState=u,Ue(u,s)){var a=n.interleaved;a===null?(l.next=l,Io(n)):(l.next=a.next,a.next=l),n.interleaved=l;return}}catch{}finally{}t=Ra(e,n,l,r),t!==null&&(l=pe(),Ae(t,e,r,l),ba(t,n,r))}}function Za(e){var n=e.alternate;return e===K||n!==null&&n===K}function Ja(e,n){Wt=pl=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function ba(e,n,t){if(t&4194240){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,wo(e,t)}}var hl={readContext:Te,useCallback:ue,useContext:ue,useEffect:ue,useImperativeHandle:ue,useInsertionEffect:ue,useLayoutEffect:ue,useMemo:ue,useReducer:ue,useRef:ue,useState:ue,useDebugValue:ue,useDeferredValue:ue,useTransition:ue,useMutableSource:ue,useSyncExternalStore:ue,useId:ue,unstable_isNewReconciler:!1},Tf={readContext:Te,useCallback:function(e,n){return Qe().memoizedState=[e,n===void 0?null:n],e},useContext:Te,useEffect:Ys,useImperativeHandle:function(e,n,t){return t=t!=null?t.concat([e]):null,Wr(4194308,4,Wa.bind(null,n,e),t)},useLayoutEffect:function(e,n){return Wr(4194308,4,e,n)},useInsertionEffect:function(e,n){return Wr(4,2,e,n)},useMemo:function(e,n){var t=Qe();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=Qe();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=zf.bind(null,K,e),[r.memoizedState,e]},useRef:function(e){var n=Qe();return e={current:e},n.memoizedState=e},useState:qs,useDebugValue:Vo,useDeferredValue:function(e){return Qe().memoizedState=e},useTransition:function(){var e=qs(!1),n=e[0];return e=_f.bind(null,e[1]),Qe().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=K,l=Qe();if(Q){if(t===void 0)throw Error(x(407));t=t()}else{if(t=n(),le===null)throw Error(x(349));Bn&30||Fa(r,n,t)}l.memoizedState=t;var i={value:t,getSnapshot:n};return l.queue=i,Ys(Aa.bind(null,r,i,e),[e]),r.flags|=2048,dr(9,$a.bind(null,r,i,t,n),void 0,null),t},useId:function(){var e=Qe(),n=le.identifierPrefix;if(Q){var t=tn,r=nn;t=(r&~(1<<32-$e(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=ar++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(t,{is:r.is}):(e=s.createElement(t),t==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,t),e[We]=n,e[or]=r,ac(e,n,!1,!1),n.stateNode=e;e:{switch(s=Si(t,r),t){case"dialog":B("cancel",e),B("close",e),l=r;break;case"iframe":case"object":case"embed":B("load",e),l=r;break;case"video":case"audio":for(l=0;lkt&&(n.flags|=128,r=!0,It(i,!1),n.lanes=4194304)}else{if(!r)if(e=fl(s),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),It(i,!0),i.tail===null&&i.tailMode==="hidden"&&!s.alternate&&!Q)return ae(n),null}else 2*Z()-i.renderingStartTime>kt&&t!==1073741824&&(n.flags|=128,r=!0,It(i,!1),n.lanes=4194304);i.isBackwards?(s.sibling=n.child,n.child=s):(t=i.last,t!==null?t.sibling=s:n.child=s,i.last=s)}return i.tail!==null?(n=i.tail,i.rendering=n,i.tail=n.sibling,i.renderingStartTime=Z(),n.sibling=null,t=W.current,U(W,r?t&1|2:t&1),n):(ae(n),null);case 22:case 23:return Xo(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?je&1073741824&&(ae(n),n.subtreeFlags&6&&(n.flags|=8192)):ae(n),null;case 24:return null;case 25:return null}throw Error(x(156,n.tag))}function Af(e,n){switch(zo(n),n.tag){case 1:return xe(n.type)&&il(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return wt(),V(ge),V(de),$o(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return Fo(n),null;case 13:if(V(W),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(x(340));gt()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return V(W),null;case 4:return wt(),null;case 10:return Mo(n.type._context),null;case 22:case 23:return Xo(),null;case 24:return null;default:return null}}var Ir=!1,ce=!1,Uf=typeof WeakSet=="function"?WeakSet:Set,P=null;function st(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){X(e,n,r)}else t.current=null}function Gi(e,n,t){try{t()}catch(r){X(e,n,r)}}var iu=!1;function Hf(e,n){if(Mi=nl,e=va(),Po(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{t.nodeType,i.nodeType}catch{t=null;break e}var s=0,u=-1,a=-1,d=0,v=0,m=e,h=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(u=s+l),m!==i||r!==0&&m.nodeType!==3||(a=s+r),m.nodeType===3&&(s+=m.nodeValue.length),(g=m.firstChild)!==null;)h=m,m=g;for(;;){if(m===e)break n;if(h===t&&++d===l&&(u=s),h===i&&++v===r&&(a=s),(g=m.nextSibling)!==null)break;m=h,h=m.parentNode}m=g}t=u===-1||a===-1?null:{start:u,end:a}}else t=null}t=t||{start:0,end:0}}else t=null;for(Ii={focusedElem:e,selectionRange:t},nl=!1,P=n;P!==null;)if(n=P,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,P=e;else for(;P!==null;){n=P;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var C=w.memoizedProps,I=w.memoizedState,f=n.stateNode,c=f.getSnapshotBeforeUpdate(n.elementType===n.type?C:Ie(n.type,C),I);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var p=n.stateNode.containerInfo;p.nodeType===1?p.textContent="":p.nodeType===9&&p.documentElement&&p.removeChild(p.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(x(163))}}catch(y){X(n,n.return,y)}if(e=n.sibling,e!==null){e.return=n.return,P=e;break}P=n.return}return w=iu,iu=!1,w}function Kt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var i=l.destroy;l.destroy=void 0,i!==void 0&&Gi(n,t,i)}l=l.next}while(l!==r)}}function Ll(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function Zi(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function fc(e){var n=e.alternate;n!==null&&(e.alternate=null,fc(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[We],delete n[or],delete n[Fi],delete n[Sf],delete n[Cf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function pc(e){return e.tag===5||e.tag===3||e.tag===4}function ou(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||pc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ji(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=ll));else if(r!==4&&(e=e.child,e!==null))for(Ji(e,n,t),e=e.sibling;e!==null;)Ji(e,n,t),e=e.sibling}function bi(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(bi(e,n,t),e=e.sibling;e!==null;)bi(e,n,t),e=e.sibling}var ie=null,De=!1;function fn(e,n,t){for(t=t.child;t!==null;)hc(e,n,t),t=t.sibling}function hc(e,n,t){if(Ke&&typeof Ke.onCommitFiberUnmount=="function")try{Ke.onCommitFiberUnmount(kl,t)}catch{}switch(t.tag){case 5:ce||st(t,n);case 6:var r=ie,l=De;ie=null,fn(e,n,t),ie=r,De=l,ie!==null&&(De?(e=ie,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):ie.removeChild(t.stateNode));break;case 18:ie!==null&&(De?(e=ie,t=t.stateNode,e.nodeType===8?ti(e.parentNode,t):e.nodeType===1&&ti(e,t),nr(e)):ti(ie,t.stateNode));break;case 4:r=ie,l=De,ie=t.stateNode.containerInfo,De=!0,fn(e,n,t),ie=r,De=l;break;case 0:case 11:case 14:case 15:if(!ce&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var i=l,s=i.destroy;i=i.tag,s!==void 0&&(i&2||i&4)&&Gi(t,n,s),l=l.next}while(l!==r)}fn(e,n,t);break;case 1:if(!ce&&(st(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(u){X(t,n,u)}fn(e,n,t);break;case 21:fn(e,n,t);break;case 22:t.mode&1?(ce=(r=ce)||t.memoizedState!==null,fn(e,n,t),ce=r):fn(e,n,t);break;default:fn(e,n,t)}}function su(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new Uf),n.forEach(function(r){var l=Gf.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Me(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=s),r&=~i}if(r=l,r=Z()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Vf(r/1960))-r,10e?16:e,gn===null)var r=!1;else{if(e=gn,gn=null,yl=0,$&6)throw Error(x(331));var l=$;for($|=4,P=e.current;P!==null;){var i=P,s=i.child;if(P.flags&16){var u=i.deletions;if(u!==null){for(var a=0;aZ()-qo?$n(e,0):Ko|=t),we(e,n)}function kc(e,n){n===0&&(e.mode&1?(n=Nr,Nr<<=1,!(Nr&130023424)&&(Nr=4194304)):n=1);var t=pe();e=sn(e,n),e!==null&&(mr(e,n,t),we(e,t))}function Xf(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),kc(e,t)}function Gf(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(x(314))}r!==null&&r.delete(n),kc(e,t)}var Sc;Sc=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||ge.current)ye=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return ye=!1,Ff(e,n,t);ye=!!(e.flags&131072)}else ye=!1,Q&&n.flags&1048576&&Pa(n,ul,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;Kr(e,n),e=n.pendingProps;var l=yt(n,de.current);ht(n,t),l=Uo(null,n,r,e,l,t);var i=Ho();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,xe(r)?(i=!0,ol(n)):i=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Oo(n),l.updater=zl,n.stateNode=l,l._reactInternals=n,Vi(n,r,e,t),n=Ki(null,n,r,!0,i,t)):(n.tag=0,Q&&i&&_o(n),fe(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(Kr(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=Jf(r),e=Ie(r,e),l){case 0:n=Wi(null,n,r,e,t);break e;case 1:n=tu(null,n,r,e,t);break e;case 11:n=eu(null,n,r,e,t);break e;case 14:n=nu(null,n,r,Ie(r.type,e),t);break e}throw Error(x(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ie(r,l),Wi(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ie(r,l),tu(e,n,r,l,t);case 3:e:{if(oc(n),e===null)throw Error(x(387));r=n.pendingProps,i=n.memoizedState,l=i.element,Ma(e,n),dl(n,r,null,t);var s=n.memoizedState;if(r=s.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},n.updateQueue.baseState=i,n.memoizedState=i,n.flags&256){l=jt(Error(x(423)),n),n=ru(e,n,r,t,l);break e}else if(r!==l){l=jt(Error(x(424)),n),n=ru(e,n,r,t,l);break e}else for(ke=kn(n.stateNode.containerInfo.firstChild),Se=n,Q=!0,Fe=null,t=Ta(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(gt(),r===l){n=un(e,n,t);break e}fe(e,n,r,t)}n=n.child}return n;case 5:return Ia(n),e===null&&Ui(n),r=n.type,l=n.pendingProps,i=e!==null?e.memoizedProps:null,s=l.children,Oi(r,l)?s=null:i!==null&&Oi(r,i)&&(n.flags|=32),ic(e,n),fe(e,n,s,t),n.child;case 6:return e===null&&Ui(n),null;case 13:return sc(e,n,t);case 4:return Do(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=xt(n,null,r,t):fe(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ie(r,l),eu(e,n,r,l,t);case 7:return fe(e,n,n.pendingProps,t),n.child;case 8:return fe(e,n,n.pendingProps.children,t),n.child;case 12:return fe(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,i=n.memoizedProps,s=l.value,U(al,r._currentValue),r._currentValue=s,i!==null)if(Ue(i.value,s)){if(i.children===l.children&&!ge.current){n=un(e,n,t);break e}}else for(i=n.child,i!==null&&(i.return=n);i!==null;){var u=i.dependencies;if(u!==null){s=i.child;for(var a=u.firstContext;a!==null;){if(a.context===r){if(i.tag===1){a=rn(-1,t&-t),a.tag=2;var d=i.updateQueue;if(d!==null){d=d.shared;var v=d.pending;v===null?a.next=a:(a.next=v.next,v.next=a),d.pending=a}}i.lanes|=t,a=i.alternate,a!==null&&(a.lanes|=t),Hi(i.return,t,n),u.lanes|=t;break}a=a.next}}else if(i.tag===10)s=i.type===n.type?null:i.child;else if(i.tag===18){if(s=i.return,s===null)throw Error(x(341));s.lanes|=t,u=s.alternate,u!==null&&(u.lanes|=t),Hi(s,t,n),s=i.sibling}else s=i.child;if(s!==null)s.return=i;else for(s=i;s!==null;){if(s===n){s=null;break}if(i=s.sibling,i!==null){i.return=s.return,s=i;break}s=s.return}i=s}fe(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,ht(n,t),l=Te(l),r=r(l),n.flags|=1,fe(e,n,r,t),n.child;case 14:return r=n.type,l=Ie(r,n.pendingProps),l=Ie(r.type,l),nu(e,n,r,l,t);case 15:return rc(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ie(r,l),Kr(e,n),n.tag=1,xe(r)?(e=!0,ol(n)):e=!1,ht(n,t),ec(n,r,l),Vi(n,r,l,t),Ki(null,n,r,!0,e,t);case 19:return uc(e,n,t);case 22:return lc(e,n,t)}throw Error(x(156,n.tag))};function Cc(e,n){return Zu(e,n)}function Zf(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ze(e,n,t,r){return new Zf(e,n,t,r)}function Zo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Jf(e){if(typeof e=="function")return Zo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===vo)return 11;if(e===yo)return 14}return 2}function En(e,n){var t=e.alternate;return t===null?(t=ze(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function Xr(e,n,t,r,l,i){var s=2;if(r=e,typeof e=="function")Zo(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Jn:return An(t.children,l,i,n);case mo:s=8,l|=8;break;case pi:return e=ze(12,t,n,l|2),e.elementType=pi,e.lanes=i,e;case hi:return e=ze(13,t,n,l),e.elementType=hi,e.lanes=i,e;case mi:return e=ze(19,t,n,l),e.elementType=mi,e.lanes=i,e;case Iu:return Rl(t,l,i,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ru:s=10;break e;case Mu:s=9;break e;case vo:s=11;break e;case yo:s=14;break e;case pn:s=16,r=null;break e}throw Error(x(130,e==null?e:typeof e,""))}return n=ze(s,t,n,l),n.elementType=e,n.type=r,n.lanes=i,n}function An(e,n,t,r){return e=ze(7,e,r,n),e.lanes=t,e}function Rl(e,n,t,r){return e=ze(22,e,r,n),e.elementType=Iu,e.lanes=t,e.stateNode={isHidden:!1},e}function ci(e,n,t){return e=ze(6,e,null,n),e.lanes=t,e}function di(e,n,t){return n=ze(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function bf(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wl(0),this.expirationTimes=Wl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Jo(e,n,t,r,l,i,s,u,a){return e=new bf(e,n,t,u,a),n===1?(n=1,i===!0&&(n|=8)):n=0,i=ze(3,null,null,n),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},Oo(i),e}function ep(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_c)}catch(e){console.error(e)}}_c(),_u.exports=Ne;var ip=_u.exports,zc,mu=ip;zc=mu.createRoot,mu.hydrateRoot;const Fl="cps.web.deviceCredential";class wl extends Error{constructor(n="此浏览器需要重新配对。请重新运行 codex-provider web。"){super(n),this.name="PairingRequiredError"}}function op(){return!!window.localStorage.getItem(Fl)}async function sp(){const n=new URLSearchParams(window.location.hash.replace(/^#/,"")).get("pair");if(!n)return op();const t=await fetch("/api/pair",{method:"POST",headers:{"X-Codex-Provider-Pairing":n}}),r=await t.json().catch(()=>({}));if(!t.ok||!r.deviceCredential)throw new wl(r.error??"配对链接无效、已过期或已被使用。请重新运行 codex-provider web。");return window.localStorage.setItem(Fl,r.deviceCredential),window.history.replaceState(null,"",`${window.location.pathname}${window.location.search}`),!0}function ts(){return{"X-Codex-Provider-Device":window.localStorage.getItem(Fl)??""}}async function rs(e,n){const t=await e.json().catch(()=>({}));if(!e.ok)throw t.code==="PAIRING_REQUIRED"?(window.dispatchEvent(new CustomEvent("cps:pairing-required",{detail:t.error})),new wl(t.error)):new Error(t.error??n);return t}async function Oe(e,n={},{signal:t}={}){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...ts()},body:JSON.stringify(n),signal:t});return rs(r,`Request failed with HTTP ${r.status}.`)}async function up(e=0){const n=await fetch(`/api/activity?after=${e}`,{headers:ts()});return rs(n,`Activity request failed with HTTP ${n.status}.`)}async function ap(){const e=await fetch("/api/profiles",{headers:ts()});return rs(e,`Profile request failed with HTTP ${e.status}.`)}async function cp(){try{await Oe("/api/access/forget")}finally{window.localStorage.removeItem(Fl)}}async function dp(e={},n={}){return Oe("/api/history",e,n)}async function fp(e={},n={}){return Oe("/api/history/session",e,n)}function Fn(e,n){const[t,r]=_.useState(()=>{try{const l=window.localStorage.getItem(e);return l?JSON.parse(l):n}catch{return n}});return _.useEffect(()=>{window.localStorage.setItem(e,JSON.stringify(t))},[e,t]),[t,r]}function vu(){let e=0,n=null;return{begin(){return n==null||n.abort(),n=new AbortController,e+=1,{sequence:e,controller:n,signal:n.signal}},isLatest(t){return t===e},cancel(){n==null||n.abort(),e+=1}}}function pp(e,n=300,t=globalThis){const r=t.setTimeout(e,n);return()=>t.clearTimeout(r)}function He({children:e,size:n=18,className:t=""}){return o.jsx("svg",{className:t,width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e})}const Wn=e=>o.jsxs(He,{...e,children:[o.jsx("path",{d:"M20 6v5h-5"}),o.jsx("path",{d:"M4 18v-5h5"}),o.jsx("path",{d:"M18.3 9A7 7 0 0 0 6.7 6.7L4 11"}),o.jsx("path",{d:"M5.7 15A7 7 0 0 0 17.3 17.3L20 13"})]}),ls=e=>o.jsxs(He,{...e,children:[o.jsx("ellipse",{cx:"12",cy:"5",rx:"8",ry:"3"}),o.jsx("path",{d:"M4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5"}),o.jsx("path",{d:"M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6"})]}),Kn=e=>o.jsxs(He,{...e,children:[o.jsx("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),o.jsx("path",{d:"M3 3v5h5"}),o.jsx("path",{d:"M12 7v5l3 2"})]}),hp=e=>o.jsx(He,{...e,children:o.jsx("path",{d:"M3 12h4l2-7 4 14 2-7h6"})}),mp=e=>o.jsxs(He,{...e,children:[o.jsx("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),o.jsx("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),o.jsx("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),o.jsx("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1"})]}),lo=e=>o.jsxs(He,{...e,children:[o.jsx("path",{d:"M12 3 4.5 6v5.3c0 4.6 3.2 8 7.5 9.7 4.3-1.7 7.5-5.1 7.5-9.7V6L12 3Z"}),o.jsx("path",{d:"m9 12 2 2 4-4"})]}),vp=e=>o.jsx(He,{...e,children:o.jsx("path",{d:"m9 18 6-6-6-6"})}),Lc=e=>o.jsx(He,{...e,children:o.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),is=e=>o.jsx(He,{...e,children:o.jsx("path",{d:"m5 12 4 4L19 6"})}),an=e=>o.jsxs(He,{...e,children:[o.jsx("path",{d:"M12 3 2.8 19h18.4L12 3Z"}),o.jsx("path",{d:"M12 9v4M12 17h.01"})]}),os=e=>o.jsx(He,{...e,children:o.jsx("path",{d:"M3 6.5h6l2 2h10v9.5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6.5Z"})}),yp=[{id:"overview",label:"概览",icon:mp},{id:"history",label:"聊天记录",icon:Kn},{id:"backups",label:"备份",icon:Kn},{id:"activity",label:"活动",icon:hp}],gp={backupRoot:"",backups:[]};function Xt(e){return new Intl.NumberFormat("zh-CN").format(Number(e)||0)}function pr(e){const n=["B","KB","MB","GB","TB"];let t=Number(e)||0,r=0;for(;t>=1024&&r=10?1:2).replace(/\.0$/,"")} ${n[r]}`}function St(e){return e?new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(new Date(e)):"未知时间"}function xp(e,n){return e.split(/(`[^`]+`|\*\*[^*]+\*\*|\*[^*]+\*)/g).map((r,l)=>r.startsWith("`")&&r.endsWith("`")?o.jsx("code",{children:r.slice(1,-1)},`${n}-code-${l}`):r.startsWith("**")&&r.endsWith("**")?o.jsx("strong",{children:r.slice(2,-2)},`${n}-strong-${l}`):r.startsWith("*")&&r.endsWith("*")?o.jsx("em",{children:r.slice(1,-1)},`${n}-em-${l}`):o.jsx(co.Fragment,{children:r},`${n}-text-${l}`))}function wp({text:e}){return String(e??"").split(/(```[^\n]*\n[\s\S]*?```)/g).map((t,r)=>{if(t.startsWith("```")&&t.endsWith("```")){const l=t.slice(3,-3).replace(/^\w*\n/,"");return o.jsx("pre",{children:o.jsx("code",{children:l})},`block-${r}`)}return t.split(` +`).map((l,i,s)=>o.jsxs(co.Fragment,{children:[xp(l,`${r}-${i}`),ir.replace(/[\\/]+$/,"").replaceAll("\\","/").toLowerCase();return t(e)===t(n)}function io(e){var r,l,i,s;if(!e)return[];const n=new Map,t=(u,a)=>{for(const d of u??[]){if(!d||d==="(missing)")continue;const v=n.get(d)??new Set;v.add(a),n.set(d,v)}};return t(e.configuredProviders,"config"),t(Object.keys(((r=e.rolloutCounts)==null?void 0:r.sessions)??{}),"rollout"),t(Object.keys(((l=e.rolloutCounts)==null?void 0:l.archived_sessions)??{}),"rollout"),t(Object.keys(((i=e.sqliteCounts)==null?void 0:i.sessions)??{}),"sqlite"),t(Object.keys(((s=e.sqliteCounts)==null?void 0:s.archived_sessions)??{}),"sqlite"),t([e.currentProvider],"config"),[...n.entries()].map(([u,a])=>{var d;return{id:u,sources:[...a],configured:(d=e.configuredProviders)==null?void 0:d.includes(u),current:u===e.currentProvider}}).sort((u,a)=>Number(a.current)-Number(u.current)||u.id.localeCompare(a.id))}function Tc({tone:e="neutral"}){return o.jsx("span",{className:`status-dot status-dot--${e}`,"aria-hidden":"true"})}function Sp({status:e,busy:n,onRefresh:t}){var l,i;const r=((l=e==null?void 0:e.sqliteAccess)==null?void 0:l.supported)!==!1&&!((i=e==null?void 0:e.sqliteCounts)!=null&&i.unreadable);return o.jsxs("header",{className:"app-header",children:[o.jsxs("div",{className:"brand",children:[o.jsx("div",{className:"brand-mark",children:o.jsx(ls,{size:19})}),o.jsxs("div",{children:[o.jsx("div",{className:"brand-name",children:"Codex Provider Sync"}),o.jsx("div",{className:"brand-subtitle",children:"本机元数据一致性工具"})]})]}),o.jsxs("div",{className:"header-actions",children:[o.jsxs("div",{className:"service-state",children:[o.jsx(Tc,{tone:n?"warning":r?"success":"danger"}),o.jsx("span",{children:n?"操作执行中":r?"本地服务就绪":"需要检查"})]}),o.jsxs("button",{className:"button button--secondary button--compact",type:"button",onClick:t,disabled:n,children:[o.jsx(Wn,{size:16}),"刷新"]})]})]})}function Cp({view:e,setView:n,status:t,onForgetBrowser:r}){return o.jsxs("aside",{className:"sidebar",children:[o.jsx("nav",{className:"navigation","aria-label":"主导航",children:yp.map(l=>{const i=l.icon;return o.jsxs("button",{className:`nav-item ${e===l.id?"nav-item--active":""}`,type:"button",onClick:()=>n(l.id),children:[o.jsx(i,{size:17}),o.jsx("span",{children:l.label})]},l.id)})}),o.jsxs("div",{className:"sidebar-foot",children:[o.jsx("div",{className:"sidebar-provider-label",children:"当前 Provider"}),o.jsxs("div",{className:"sidebar-provider-value",children:[o.jsx(Tc,{tone:"success"}),o.jsx("span",{children:(t==null?void 0:t.currentProvider)??"未读取"})]}),o.jsx("div",{className:"sidebar-version",children:"Web UI · localhost only"}),o.jsx("button",{className:"button button--quiet button--compact",type:"button",onClick:r,children:"忘记此浏览器"})]})]})}function Np({profiles:e,profileId:n,setProfileId:t,status:r,onAddProfile:l,onDeleteProfile:i,onRefresh:s,loading:u}){return o.jsxs("section",{className:"storage-bar","aria-label":"存储位置",children:[o.jsxs("label",{className:"path-field path-field--wide",children:[o.jsx("span",{children:"存储配置"}),o.jsxs("div",{className:"path-input-wrap",children:[o.jsx(os,{size:16}),o.jsx("select",{value:n,onChange:a=>t(a.target.value),children:e.map(a=>o.jsx("option",{value:a.id,children:a.name},a.id))})]})]}),o.jsxs("label",{className:"path-field",children:[o.jsxs("span",{children:["当前路径 ",o.jsx("small",{children:"由服务端解析"})]}),o.jsxs("div",{className:"path-input-wrap",children:[o.jsx(ls,{size:16}),o.jsx("input",{value:(r==null?void 0:r.codexHome)??"",readOnly:!0,placeholder:"读取状态后显示"})]})]}),o.jsx("button",{className:"button button--secondary storage-refresh",type:"button",onClick:l,children:"新增配置"}),n!=="default"?o.jsx("button",{className:"button button--quiet storage-refresh",type:"button",onClick:i,children:"删除配置"}):null,o.jsxs("button",{className:"button button--secondary storage-refresh",type:"button",onClick:s,disabled:u,children:[o.jsx(Wn,{size:16,className:u?"spin":""}),"读取状态"]})]})}function Fr({title:e,counts:n,currentProvider:t}){const r=Object.entries(n??{}).sort((i,s)=>s[1]-i[1]),l=r.reduce((i,[,s])=>i+s,0);return o.jsxs("div",{className:"distribution-block",children:[o.jsxs("div",{className:"distribution-heading",children:[o.jsx("span",{children:e}),o.jsx("strong",{children:Xt(l)})]}),o.jsx("div",{className:"distribution-list",children:r.length===0?o.jsx("div",{className:"empty-inline",children:"无记录"}):r.map(([i,s])=>o.jsxs("div",{className:"distribution-row",children:[o.jsxs("div",{className:"distribution-meta",children:[o.jsx("span",{className:"provider-name",children:i}),o.jsx("span",{children:Xt(s)})]}),o.jsx("div",{className:"bar-track",children:o.jsx("span",{className:i===t?"bar-fill bar-fill--current":"bar-fill",style:{width:`${Math.max(5,l?s/l*100:0)}%`}})})]},i))})]})}function Ep({status:e,loading:n}){var i,s,u,a,d,v,m,h,g,w,C,I,f;const t=Object.values(((i=e==null?void 0:e.rolloutCounts)==null?void 0:i.sessions)??{}).reduce((c,p)=>c+p,0)+Object.values(((s=e==null?void 0:e.rolloutCounts)==null?void 0:s.archived_sessions)??{}).reduce((c,p)=>c+p,0),r=Object.values(((u=e==null?void 0:e.sqliteCounts)==null?void 0:u.sessions)??{}).reduce((c,p)=>c+p,0)+Object.values(((a=e==null?void 0:e.sqliteCounts)==null?void 0:a.archived_sessions)??{}).reduce((c,p)=>c+p,0),l=(d=e==null?void 0:e.alignment)==null?void 0:d.aligned;return o.jsxs("section",{className:"status-panel",children:[o.jsxs("div",{className:"section-title-row",children:[o.jsxs("div",{children:[o.jsx("h2",{children:"状态总览"}),o.jsx("p",{children:"比较 rollout 文件、SQLite 线程索引和当前 Provider。"})]}),o.jsxs("div",{className:`alignment-state ${l?"alignment-state--success":"alignment-state--warning"}`,children:[n?o.jsx(Wn,{size:16,className:"spin"}):l?o.jsx(is,{size:16}):o.jsx(an,{size:16}),o.jsx("span",{children:n?"正在检查":l?"元数据已对齐":"发现不一致"})]})]}),o.jsxs("div",{className:"summary-strip",children:[o.jsxs("div",{className:"summary-item",children:[o.jsx("span",{children:"当前 Provider"}),o.jsx("strong",{children:(e==null?void 0:e.currentProvider)??"—"}),o.jsx("small",{children:e!=null&&e.currentProviderImplicit?"隐式默认":"config.toml 根级配置"})]}),o.jsxs("div",{className:"summary-item",children:[o.jsx("span",{children:"Rollout 文件"}),o.jsx("strong",{children:Xt(t)}),o.jsx("small",{children:"sessions + archived"})]}),o.jsxs("div",{className:"summary-item",children:[o.jsx("span",{children:"SQLite threads"}),o.jsx("strong",{children:(v=e==null?void 0:e.sqliteCounts)!=null&&v.unreadable?"不可读":Xt(r)}),o.jsx("small",{children:((m=e==null?void 0:e.stateDbLocation)==null?void 0:m.source)??"未定位数据库"})]}),o.jsxs("div",{className:"summary-item",children:[o.jsx("span",{children:"托管备份"}),o.jsx("strong",{children:Xt((h=e==null?void 0:e.backupSummary)==null?void 0:h.count)}),o.jsx("small",{children:pr((g=e==null?void 0:e.backupSummary)==null?void 0:g.totalBytes)})]})]}),o.jsxs("div",{className:"distribution-grid",children:[o.jsxs("div",{className:"distribution-column",children:[o.jsxs("div",{className:"column-label",children:[o.jsx(os,{size:16})," Rollout files"]}),o.jsx(Fr,{title:"sessions",counts:(w=e==null?void 0:e.rolloutCounts)==null?void 0:w.sessions,currentProvider:e==null?void 0:e.currentProvider}),o.jsx(Fr,{title:"archived_sessions",counts:(C=e==null?void 0:e.rolloutCounts)==null?void 0:C.archived_sessions,currentProvider:e==null?void 0:e.currentProvider})]}),o.jsx("div",{className:"distribution-divider"}),o.jsxs("div",{className:"distribution-column",children:[o.jsxs("div",{className:"column-label",children:[o.jsx(ls,{size:16})," SQLite state"]}),o.jsx(Fr,{title:"sessions",counts:(I=e==null?void 0:e.sqliteCounts)==null?void 0:I.sessions,currentProvider:e==null?void 0:e.currentProvider}),o.jsx(Fr,{title:"archived_sessions",counts:(f=e==null?void 0:e.sqliteCounts)==null?void 0:f.archived_sessions,currentProvider:e==null?void 0:e.currentProvider})]})]})]})}function Pp({status:e}){var r,l,i;const n=[];((r=e==null?void 0:e.sqliteAccess)==null?void 0:r.supported)===!1&&n.push({tone:"danger",title:"SQLite 路径不可安全访问",detail:e.sqliteAccess.message}),(l=e==null?void 0:e.sqliteCounts)!=null&&l.unreadable&&n.push({tone:"danger",title:"SQLite 当前不可读",detail:e.sqliteCounts.error}),(i=e==null?void 0:e.lockedRolloutFiles)!=null&&i.length&&n.push({tone:"warning",title:`${e.lockedRolloutFiles.length} 个 rollout 文件正在使用`,detail:"同步会跳过这些活跃文件;会话结束后可再次执行。"}),e!=null&&e.encryptedContentWarning&&n.push({tone:"warning",title:"检测到 encrypted_content",detail:e.encryptedContentWarning});const t=e==null?void 0:e.sqliteRepairStats;return(t!=null&&t.userEventRowsNeedingRepair||t!=null&&t.cwdRowsNeedingRepair)&&n.push({tone:"info",title:"SQLite 有待修复字段",detail:`user-event ${t.userEventRowsNeedingRepair??0},cwd ${t.cwdRowsNeedingRepair??0}`}),n.length===0?null:o.jsx("section",{className:"warning-stack","aria-label":"诊断信息",children:n.map((s,u)=>o.jsxs("div",{className:`warning-row warning-row--${s.tone}`,children:[o.jsx(an,{size:17}),o.jsxs("div",{children:[o.jsx("strong",{children:s.title}),o.jsx("span",{children:s.detail})]})]},`${s.title}-${u}`))})}function _p({projects:e=[]}){return o.jsxs("section",{className:"data-section",children:[o.jsx("div",{className:"section-title-row section-title-row--compact",children:o.jsxs("div",{children:[o.jsx("h2",{children:"项目可见性"}),o.jsx("p",{children:"检查 Desktop 项目路径、全局排序和首屏 50 条命中。"})]})}),o.jsx("div",{className:"table-scroll",children:o.jsxs("table",{className:"data-table",children:[o.jsx("thead",{children:o.jsxs("tr",{children:[o.jsx("th",{children:"项目根目录"}),o.jsx("th",{children:"交互会话"}),o.jsx("th",{children:"首屏"}),o.jsx("th",{children:"Ranks"}),o.jsx("th",{children:"CWD 精确匹配"}),o.jsx("th",{children:"Provider"})]})}),o.jsx("tbody",{children:e.length===0?o.jsx("tr",{children:o.jsx("td",{colSpan:"6",className:"table-empty",children:"没有可显示的项目诊断。"})}):e.map(n=>o.jsxs("tr",{children:[o.jsx("td",{className:"path-cell",children:n.root}),o.jsx("td",{children:n.interactiveThreads}),o.jsxs("td",{children:[n.firstPageThreads,"/50"]}),o.jsx("td",{children:n.rankPreview||"—"}),o.jsxs("td",{children:[n.exactCwdMatches,"/",n.interactiveThreads]}),o.jsx("td",{children:Object.entries(n.providerCounts??{}).map(([t,r])=>`${t} ${r}`).join(" · ")||"—"})]},n.root))})]})})]})}function zp({value:e,onChange:n,disabled:t}){return o.jsxs("div",{className:"segmented",role:"radiogroup","aria-label":"执行模式",children:[o.jsxs("button",{type:"button",className:e==="sync"?"segmented-option segmented-option--active":"segmented-option",onClick:()=>n("sync"),disabled:t,children:[o.jsx("span",{children:"仅同步元数据"}),o.jsx("small",{children:"不修改 config.toml"})]}),o.jsxs("button",{type:"button",className:e==="switch"?"segmented-option segmented-option--active":"segmented-option",onClick:()=>n("switch"),disabled:t,children:[o.jsx("span",{children:"切换 Provider 并同步"}),o.jsx("small",{children:"更新根级配置"})]})]})}function Lp({status:e,providers:n,selectedProvider:t,setSelectedProvider:r,onAddManualProvider:l,onRemoveManualProvider:i,onRequestExecute:s,busy:u}){var j,k;const[a,d]=Fn("cps.web.mode","sync"),[v,m]=Fn("cps.web.modelMode","auto"),[h,g]=Fn("cps.web.customModel",""),[w,C]=Fn("cps.web.keepCount",5),[I,f]=_.useState(""),c=n.find(E=>E.id===t),p=c==null?void 0:c.configured,y=/^[A-Za-z0-9_.-]+$/.test(I.trim()),N=u||!t||((j=e==null?void 0:e.sqliteAccess)==null?void 0:j.supported)===!1||((k=e==null?void 0:e.sqliteCounts)==null?void 0:k.unreadable);return o.jsxs("section",{className:"execution-panel",children:[o.jsxs("div",{className:"execution-head",children:[o.jsxs("div",{children:[o.jsx("h2",{children:"执行同步"}),o.jsx("p",{children:"所有写操作都会先创建备份。执行前请关闭 Codex CLI、App 和 app-server。"})]}),o.jsx(lo,{size:22})]}),o.jsx(zp,{value:a,onChange:d,disabled:u}),o.jsxs("div",{className:"form-grid",children:[o.jsxs("label",{className:"form-field",children:[o.jsx("span",{children:"目标 Provider"}),o.jsx("select",{value:t,onChange:E=>r(E.target.value),disabled:u,children:n.map(E=>o.jsxs("option",{value:E.id,children:[E.id,E.current?"(当前)":""]},E.id))}),a==="switch"&&!p?o.jsx("small",{className:"field-error",children:"切换模式要求该 Provider 已定义在 config.toml。"}):null]}),o.jsxs("label",{className:"form-field form-field--short",children:[o.jsx("span",{children:"保留备份数"}),o.jsx("input",{type:"number",min:"1",max:"100000",value:w,onChange:E=>C(Number(E.target.value)),disabled:u}),o.jsx("small",{children:"同步后自动清理"})]})]}),o.jsxs("div",{className:"manual-provider-row",children:[o.jsx("input",{type:"text",value:I,onChange:E=>f(E.target.value),placeholder:"手动添加 Provider ID",spellCheck:"false",disabled:u}),o.jsx("button",{className:"button button--quiet button--compact",type:"button",disabled:u||!y,onClick:()=>{l(I.trim()),f("")},children:"添加"}),c!=null&&c.manual?o.jsx("button",{className:"manual-remove",type:"button",onClick:()=>i(t),disabled:u,children:"删除当前手动项"}):null]}),a==="switch"?o.jsxs("fieldset",{className:"model-options",disabled:u,children:[o.jsx("legend",{children:"根级 model"}),o.jsxs("label",{children:[o.jsx("input",{type:"radio",name:"model-mode",checked:v==="auto",onChange:()=>m("auto")}),o.jsxs("span",{children:[o.jsx("strong",{children:"跟随 Provider 配置"}),o.jsxs("small",{children:["采用 `[model_providers.",t,"]` 中的 model"]})]})]}),o.jsxs("label",{children:[o.jsx("input",{type:"radio",name:"model-mode",checked:v==="keep",onChange:()=>m("keep")}),o.jsxs("span",{children:[o.jsx("strong",{children:"保留当前根级 model"}),o.jsx("small",{children:"只切换 model_provider"})]})]}),o.jsxs("label",{className:"custom-model-option",children:[o.jsx("input",{type:"radio",name:"model-mode",checked:v==="custom",onChange:()=>m("custom")}),o.jsxs("span",{children:[o.jsx("strong",{children:"自定义 model"}),o.jsx("input",{type:"text",value:h,onFocus:()=>m("custom"),onChange:E=>g(E.target.value),placeholder:"例如 MiniMax-M3"})]})]})]}):null,o.jsxs("div",{className:"backup-assurance",children:[o.jsx(is,{size:16}),o.jsx("span",{children:"修改前创建 metadata v2 备份,并记录 SQLite Home"})]}),o.jsxs("button",{className:"button button--primary execute-button",type:"button",disabled:N||a==="switch"&&!p||a==="switch"&&v==="custom"&&!h.trim(),onClick:()=>s({mode:a,modelMode:v,model:h.trim(),keepCount:w}),children:[u?o.jsx(Wn,{size:17,className:"spin"}):o.jsx(lo,{size:17}),u?"正在执行…":a==="switch"?"切换并同步":"执行同步"]})]})}function Tp({backups:e,onViewAll:n,onRestore:t}){return o.jsxs("section",{className:"recent-backups",children:[o.jsxs("div",{className:"section-title-row section-title-row--compact",children:[o.jsxs("div",{children:[o.jsx("h2",{children:"最近备份"}),o.jsx("p",{children:e.backupRoot||"同步后将在 Codex Home 下创建备份"})]}),o.jsxs("button",{type:"button",className:"text-button",onClick:n,children:["查看全部 ",o.jsx(vp,{size:14})]})]}),o.jsx("div",{className:"backup-rows",children:e.backups.length===0?o.jsx("div",{className:"empty-state",children:"尚无由本工具创建的备份。"}):e.backups.slice(0,3).map(r=>o.jsxs("div",{className:"backup-row",children:[o.jsx("div",{className:"backup-icon",children:o.jsx(Kn,{size:17})}),o.jsxs("div",{className:"backup-main",children:[o.jsx("strong",{children:St(r.metadata.createdAt)}),o.jsxs("span",{children:[r.metadata.targetProvider," · ",r.metadata.changedSessionFiles??0," 个 rollout"]})]}),o.jsx("div",{className:"backup-size",children:pr(r.sizeBytes)}),o.jsx("button",{className:"button button--quiet button--compact",type:"button",onClick:()=>t(r),children:"恢复"})]},r.id))})]})}function Rp({status:e,backups:n,providers:t,selectedProvider:r,setSelectedProvider:l,onAddManualProvider:i,onRemoveManualProvider:s,onExecute:u,onRestore:a,setView:d,busy:v,loading:m}){return o.jsxs("div",{className:"view-content",children:[o.jsx(Ep,{status:e,loading:m}),o.jsx(Pp,{status:e}),o.jsxs("div",{className:"overview-lower-grid",children:[o.jsxs("div",{className:"overview-main-column",children:[o.jsx(_p,{projects:(e==null?void 0:e.projectThreadVisibility)??[]}),o.jsx(Tp,{backups:n,onViewAll:()=>d("backups"),onRestore:a})]}),o.jsx(Lp,{status:e,providers:t,selectedProvider:r,setSelectedProvider:l,onAddManualProvider:i,onRemoveManualProvider:s,onRequestExecute:u,busy:v})]})]})}function Mp({backups:e,status:n,busy:t,onRestore:r,onPrune:l}){const[i,s]=Fn("cps.web.keepCount",5);return o.jsxs("div",{className:"view-content",children:[o.jsxs("section",{className:"page-intro",children:[o.jsxs("div",{children:[o.jsx("h1",{children:"备份"}),o.jsx("p",{children:"管理当前 Codex Home 下由本工具创建的 metadata v2 备份。"})]}),o.jsxs("div",{className:"prune-control",children:[o.jsxs("label",{children:["保留最近 ",o.jsx("input",{type:"number",min:"0",max:"100000",value:i,onChange:u=>s(Number(u.target.value))})," 份"]}),o.jsx("button",{className:"button button--secondary",type:"button",disabled:t,onClick:()=>l(i),children:"清理旧备份"})]})]}),o.jsxs("section",{className:"backup-list-section",children:[o.jsxs("div",{className:"backup-root-line",children:[o.jsx(os,{size:16}),o.jsx("span",{children:e.backupRoot||(n==null?void 0:n.backupRoot)||"—"}),o.jsxs("strong",{children:[e.backups.length," 份 · ",pr(e.backups.reduce((u,a)=>u+a.sizeBytes,0))]})]}),o.jsx("div",{className:"full-backup-list",children:e.backups.length===0?o.jsxs("div",{className:"large-empty",children:[o.jsx(Kn,{size:26}),o.jsx("strong",{children:"还没有备份"}),o.jsx("span",{children:"执行一次同步或切换后,备份会显示在这里。"})]}):e.backups.map(u=>{var a;return o.jsxs("article",{className:"full-backup-row",children:[o.jsxs("div",{className:"backup-date",children:[o.jsx("strong",{children:St(u.metadata.createdAt)}),o.jsx("span",{children:u.id})]}),o.jsxs("div",{className:"backup-facts",children:[o.jsxs("span",{children:["Provider ",o.jsx("strong",{children:u.metadata.targetProvider})]}),o.jsxs("span",{children:["Rollout ",o.jsx("strong",{children:u.metadata.changedSessionFiles??0})]}),o.jsxs("span",{children:["SQLite ",o.jsx("strong",{children:(a=u.metadata.sqliteDbFiles)!=null&&a.length?"已包含":"未包含"})]})]}),o.jsxs("div",{className:"backup-source",children:[o.jsx("span",{children:"SQLite Home"}),o.jsx("code",{children:u.metadata.sqliteHome??"旧版 metadata 未记录"})]}),o.jsxs("div",{className:"backup-row-actions",children:[o.jsx("span",{children:pr(u.sizeBytes)}),o.jsx("button",{className:"button button--secondary button--compact",type:"button",disabled:t,onClick:()=>r(u),children:"恢复"})]})]},u.id)})})]})]})}function Ip({activity:e,activeOperation:n}){return o.jsxs("div",{className:"view-content",children:[o.jsxs("section",{className:"page-intro",children:[o.jsxs("div",{children:[o.jsx("h1",{children:"活动日志"}),o.jsx("p",{children:"当前 Web UI 会话中的状态刷新、同步阶段和操作结果。"})]}),n?o.jsxs("div",{className:"live-operation",children:[o.jsx(Wn,{size:16,className:"spin"})," ",n.kind]}):null]}),o.jsxs("section",{className:"activity-console",children:[o.jsxs("div",{className:"console-head",children:[o.jsx("span",{children:"Activity log"}),o.jsxs("span",{children:[e.length," entries"]})]}),o.jsx("div",{className:"console-body",children:e.length===0?o.jsx("div",{className:"console-empty",children:"等待操作…"}):e.map(t=>o.jsxs("div",{className:`console-row console-row--${t.level}`,children:[o.jsx("time",{children:St(t.timestamp)}),o.jsx("span",{className:"console-level",children:t.level}),o.jsx("span",{className:"console-message",children:t.message}),typeof t.detail=="string"?o.jsx("span",{className:"console-detail",children:t.detail}):null]},t.id))})]})]})}function Op({profileId:e,status:n}){const[t,r]=_.useState(""),[l,i]=_.useState(""),[s,u]=_.useState(""),[a,d]=_.useState(""),[v,m]=_.useState("all"),[h,g]=_.useState(1),[w,C]=_.useState({sessions:[],total:0,pageSize:50,hasNextPage:!1}),[I,f]=_.useState(""),[c,p]=_.useState(null),[y,N]=_.useState(!1),[j,k]=_.useState(!1),[E,D]=_.useState(""),R=_.useRef(null),G=_.useRef(null);R.current||(R.current=vu()),G.current||(G.current=vu());const Be=io(n),Ye=[...new Set(((n==null?void 0:n.projectThreadVisibility)??[]).map(z=>z.root))];_.useEffect(()=>pp(()=>i(t),300,window),[t]);const Xe=_.useCallback(async()=>{const{controller:z,sequence:J}=R.current.begin();N(!0),D("");try{const S=await dp({...at(e),page:h,pageSize:50,query:l,provider:s,project:a,archived:v},{signal:z.signal});if(!R.current.isLatest(J))return;C(S.history),f(T=>{var M;return S.history.sessions.some(H=>H.id===T)?T:((M=S.history.sessions[0])==null?void 0:M.id)??""})}catch(S){S.name!=="AbortError"&&R.current.isLatest(J)&&D(S.message)}finally{R.current.isLatest(J)&&N(!1)}},[e,h,l,s,a,v]);_.useEffect(()=>(Xe(),()=>R.current.cancel()),[Xe]),_.useEffect(()=>{if(G.current.cancel(),!I){p(null),k(!1);return}const{controller:z,sequence:J}=G.current.begin();return p(null),k(!0),D(""),fp({...at(e),sessionId:I},{signal:z.signal}).then(S=>{G.current.isLatest(J)&&p(S.history)}).catch(S=>{S.name!=="AbortError"&&G.current.isLatest(J)&&D(S.message)}).finally(()=>{G.current.isLatest(J)&&k(!1)}),()=>z.abort()},[e,I]);const dn=z=>J=>{z(J.target.value),g(1)};return o.jsxs("div",{className:"view-content history-view",children:[o.jsxs("section",{className:"page-intro",children:[o.jsxs("div",{children:[o.jsx("h1",{children:"聊天记录"}),o.jsx("p",{children:"从 rollout 文件读取历史会话,只读查看,不修改本地数据。"})]}),o.jsxs("button",{className:"button button--secondary",type:"button",onClick:Xe,disabled:y,children:[o.jsx(Wn,{size:16,className:y?"spin":""}),"刷新"]})]}),o.jsxs("section",{className:"history-toolbar",children:[o.jsx("input",{value:t,onChange:dn(r),onKeyDown:z=>{z.key==="Enter"&&(i(t),g(1))},placeholder:"搜索标题、项目、Provider 或消息内容"}),o.jsxs("select",{value:s,onChange:dn(u),children:[o.jsx("option",{value:"",children:"全部 Provider"}),Be.map(z=>o.jsx("option",{value:z.id,children:z.id},z.id))]}),o.jsxs("select",{value:a,onChange:dn(d),children:[o.jsx("option",{value:"",children:"全部项目"}),Ye.map(z=>o.jsx("option",{value:z,children:z},z))]}),o.jsxs("select",{value:v,onChange:dn(m),children:[o.jsx("option",{value:"all",children:"全部会话"}),o.jsx("option",{value:"active",children:"活跃会话"}),o.jsx("option",{value:"archived",children:"已归档"})]})]}),E?o.jsxs("div",{className:"history-error",children:[o.jsx(an,{size:16}),E]}):null,o.jsxs("section",{className:"history-layout",children:[o.jsxs("div",{className:"history-list-panel",children:[o.jsxs("div",{className:"history-list-head",children:[o.jsxs("strong",{children:[w.total," 个会话"]}),o.jsxs("span",{children:["第 ",w.page," 页"]})]}),o.jsxs("div",{className:"history-list",children:[y&&!w.sessions.length?o.jsx("div",{className:"large-empty",children:"读取中…"}):null,!y&&!w.sessions.length?o.jsxs("div",{className:"large-empty",children:[o.jsx(Kn,{size:24}),o.jsx("strong",{children:"没有匹配的会话"})]}):null,w.sessions.map(z=>o.jsxs("button",{type:"button",className:`history-session-row ${z.id===I?"history-session-row--selected":""}`,onClick:()=>f(z.id),children:[o.jsxs("div",{className:"history-session-top",children:[o.jsx("strong",{children:z.title}),o.jsx("time",{children:St(z.updatedAt)})]}),o.jsx("p",{children:z.firstUserMessage||"没有可读的用户消息"}),o.jsxs("div",{className:"history-session-meta",children:[o.jsx("span",{children:z.provider}),o.jsxs("span",{children:[z.messageCount," 条消息"]}),o.jsx("span",{children:z.archived?"已归档":"活跃"})]})]},z.id))]}),o.jsxs("div",{className:"history-pagination",children:[o.jsx("button",{className:"button button--quiet button--compact",type:"button",disabled:h<=1||y,onClick:()=>g(z=>z-1),children:"上一页"}),o.jsx("span",{children:h}),o.jsx("button",{className:"button button--quiet button--compact",type:"button",disabled:!w.hasNextPage||y,onClick:()=>g(z=>z+1),children:"下一页"})]})]}),o.jsx("div",{className:"history-detail-panel",children:j?o.jsxs("div",{className:"large-empty",children:[o.jsx(Wn,{size:24,className:"spin"}),o.jsx("strong",{children:"正在读取会话"})]}):c?o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"history-detail-head",children:[o.jsxs("div",{children:[o.jsx("h2",{children:c.session.title}),o.jsxs("p",{children:[c.session.cwd||"未知项目"," · ",c.session.provider," · ",c.session.messageCount," 条消息"]})]}),o.jsx("span",{children:c.session.archived?"已归档":"活跃"})]}),c.truncated?o.jsxs("div",{className:"history-truncated",children:[o.jsx(an,{size:15}),"仅显示最近 ",c.returnedMessageCount," 条消息。"]}):null,o.jsx("div",{className:"message-stream",children:c.messages.map(z=>o.jsxs("article",{className:`chat-message chat-message--${z.role}`,children:[o.jsxs("div",{className:"chat-message-label",children:[z.role==="user"?"你":"Codex",o.jsx("time",{children:St(z.timestamp)})]}),o.jsx("div",{className:"chat-message-body",children:o.jsx(wp,{text:z.text})})]},`${z.sequence}-${z.timestamp}`))})]}):o.jsxs("div",{className:"large-empty",children:[o.jsx(Kn,{size:28}),o.jsx("strong",{children:"选择一个会话"}),o.jsx("span",{children:"聊天内容将在这里显示。"})]})})]})]})}function $l({title:e,children:n,confirmLabel:t,onConfirm:r,onCancel:l,tone:i="primary",confirmDisabled:s=!1}){return o.jsx("div",{className:"modal-backdrop",role:"presentation",onMouseDown:u=>u.target===u.currentTarget&&l(),children:o.jsxs("section",{className:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"modal-title",children:[o.jsxs("div",{className:"modal-head",children:[o.jsx("h2",{id:"modal-title",children:e}),o.jsx("button",{type:"button",className:"icon-button",onClick:l,"aria-label":"关闭",children:o.jsx(Lc,{size:18})})]}),o.jsx("div",{className:"modal-body",children:n}),o.jsxs("div",{className:"modal-actions",children:[o.jsx("button",{className:"button button--secondary",type:"button",onClick:l,children:"取消"}),o.jsx("button",{className:`button button--${i}`,type:"button",disabled:s,onClick:r,children:t})]})]})})}function Dp({plan:e,status:n,selectedProvider:t,onCancel:r,onConfirm:l}){return o.jsxs($l,{title:e.mode==="switch"?"确认切换并同步":"确认同步元数据",confirmLabel:e.mode==="switch"?"确认切换并同步":"确认执行同步",onCancel:r,onConfirm:l,children:[o.jsxs("div",{className:"modal-callout",children:[o.jsx(an,{size:18}),o.jsxs("div",{children:[o.jsx("strong",{children:"请确认 Codex 已完全关闭"}),o.jsx("span",{children:"关闭 Codex CLI、Codex App、app-server 及相关终端,避免 SQLite 或 rollout 被占用。"})]})]}),o.jsxs("dl",{className:"operation-scope",children:[o.jsxs("div",{children:[o.jsx("dt",{children:"Codex Home"}),o.jsx("dd",{children:n==null?void 0:n.codexHome})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"SQLite Home"}),o.jsxs("dd",{children:[n==null?void 0:n.sqliteHome," ",o.jsxs("small",{children:["(",n==null?void 0:n.sqliteHomeSource,")"]})]})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"当前 Provider"}),o.jsx("dd",{children:n==null?void 0:n.currentProvider})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"目标 Provider"}),o.jsx("dd",{children:t})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"配置变更"}),o.jsx("dd",{children:e.mode==="switch"?"更新 config.toml 根级 model_provider":"不修改 config.toml"})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"Model 策略"}),o.jsx("dd",{children:e.mode!=="switch"?"跟随当前根级 model":e.modelMode==="auto"?"跟随目标 Provider 配置":e.modelMode==="keep"?"保留当前根级 model":`设置为 ${e.model}`})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"备份策略"}),o.jsxs("dd",{children:["修改前创建备份,保留最近 ",e.keepCount," 份"]})]})]})]})}function Fp({backup:e,status:n,onCancel:t,onConfirm:r}){const[l,i]=_.useState(!1),[s,u]=_.useState(!0),[a,d]=_.useState(!0),v=jp(n),m=s&&e.metadata.version>=2&&e.metadata.sqliteHome&&!kp(e.metadata.sqliteHome,v),h=m&&l;return o.jsxs($l,{title:"恢复备份",confirmLabel:"覆盖当前元数据",tone:"danger",onCancel:t,confirmDisabled:!l&&!s&&!a||h,onConfirm:()=>r({restoreConfig:l,restoreDatabase:s,restoreSessions:a,allowSqliteHomeRelocation:!!m}),children:[o.jsxs("div",{className:"restore-summary",children:[o.jsx(Kn,{size:20}),o.jsxs("div",{children:[o.jsxs("strong",{children:[St(e.metadata.createdAt)," · ",e.metadata.targetProvider]}),o.jsx("code",{children:e.path})]})]}),o.jsxs("fieldset",{className:"restore-options",children:[o.jsx("legend",{children:"选择要覆盖的内容"}),o.jsxs("label",{children:[o.jsx("input",{type:"checkbox",checked:l,onChange:g=>i(g.target.checked)}),o.jsxs("span",{children:[o.jsx("strong",{children:"config.toml 与 global state"}),o.jsx("small",{children:"恢复 Provider 配置和 Desktop workspace roots"})]})]}),o.jsxs("label",{children:[o.jsx("input",{type:"checkbox",checked:s,onChange:g=>u(g.target.checked)}),o.jsxs("span",{children:[o.jsx("strong",{children:"SQLite 线程数据库"}),o.jsx("small",{children:"恢复 state_5.sqlite 及备份中的 WAL/SHM"})]})]}),o.jsxs("label",{children:[o.jsx("input",{type:"checkbox",checked:a,onChange:g=>d(g.target.checked)}),o.jsxs("span",{children:[o.jsx("strong",{children:"Rollout 元数据"}),o.jsx("small",{children:"恢复 session_meta 和被修改的 turn_context.model"})]})]})]}),m?o.jsxs("div",{className:`modal-callout ${h?"modal-callout--danger":"modal-callout--warning"}`,children:[o.jsx(an,{size:18}),o.jsxs("div",{children:[o.jsx("strong",{children:"SQLite Home 与备份来源不同"}),o.jsxs("span",{children:["来源:",e.metadata.sqliteHome,o.jsx("br",{}),"目标:",v,o.jsx("br",{}),h?"迁移数据库时不能同时恢复旧 config.toml。":"确认后数据库将恢复到当前目标位置。"]})]})]}):null,o.jsxs("div",{className:"modal-callout",children:[o.jsx(an,{size:18}),o.jsxs("div",{children:[o.jsx("strong",{children:"恢复前请关闭 Codex"}),o.jsx("span",{children:"该操作将覆盖所选的当前元数据;请确认 Codex CLI、App 和 app-server 已关闭。"})]})]})]})}function $p({keepCount:e,backups:n,onCancel:t,onConfirm:r}){const l=Math.max(0,n.backups.length-e);return o.jsxs($l,{title:"清理旧备份",confirmLabel:`删除 ${l} 份旧备份`,tone:"danger",onCancel:t,onConfirm:r,confirmDisabled:l===0,children:[o.jsxs("div",{className:"modal-callout modal-callout--warning",children:[o.jsx(an,{size:18}),o.jsxs("div",{children:[o.jsx("strong",{children:"被删除的备份无法直接恢复"}),o.jsx("span",{children:"只处理当前 Codex Home 下由本工具管理的备份目录。"})]})]}),o.jsxs("dl",{className:"operation-scope",children:[o.jsxs("div",{children:[o.jsx("dt",{children:"当前备份"}),o.jsxs("dd",{children:[n.backups.length," 份"]})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"保留"}),o.jsxs("dd",{children:["最近 ",e," 份"]})]}),o.jsxs("div",{children:[o.jsx("dt",{children:"将删除"}),o.jsxs("dd",{children:[l," 份"]})]})]})]})}function Ap({onCancel:e,onConfirm:n}){const[t,r]=_.useState(""),[l,i]=_.useState(""),[s,u]=_.useState(""),[a,d]=_.useState(""),v=/^[A-Za-z0-9_.-]{1,80}$/.test(t)&&l.trim()&&s.trim();return o.jsx($l,{title:"新增存储配置",confirmLabel:"保存配置",onCancel:e,confirmDisabled:!v,onConfirm:()=>n({profileId:t,name:l,codexHome:s,sqliteHome:a}),children:o.jsxs("div",{className:"profile-form",children:[o.jsxs("label",{children:[o.jsx("span",{children:"配置 ID"}),o.jsx("input",{value:t,onChange:m=>r(m.target.value),placeholder:"work",spellCheck:"false"})]}),o.jsxs("label",{children:[o.jsx("span",{children:"显示名称"}),o.jsx("input",{value:l,onChange:m=>i(m.target.value),placeholder:"工作环境"})]}),o.jsxs("label",{children:[o.jsx("span",{children:"Codex Home"}),o.jsx("input",{value:s,onChange:m=>u(m.target.value),placeholder:"/home/user/.codex",spellCheck:"false"})]}),o.jsxs("label",{children:[o.jsx("span",{children:"SQLite Home(可选)"}),o.jsx("input",{value:a,onChange:m=>d(m.target.value),placeholder:"留空时由服务端按配置解析",spellCheck:"false"})]})]})})}function Up({toast:e,onClose:n}){return _.useEffect(()=>{if(!e)return;const t=window.setTimeout(n,6e3);return()=>window.clearTimeout(t)},[e,n]),e?o.jsxs("div",{className:`toast toast--${e.tone}`,children:[o.jsxs("div",{children:[e.tone==="success"?o.jsx(is,{size:18}):o.jsx(an,{size:18}),o.jsxs("span",{children:[o.jsx("strong",{children:e.title}),e.message?o.jsx("small",{children:e.message}):null]})]}),o.jsx("button",{type:"button",onClick:n,"aria-label":"关闭通知",children:o.jsx(Lc,{size:16})})]}):null}function Hp(){const[e,n]=_.useState("overview"),[t,r]=_.useState("checking"),[l,i]=_.useState(""),[s,u]=Fn("cps.web.profileId","default"),[a,d]=_.useState([]),[v,m]=Fn("cps.web.manualProviders",[]),[h,g]=_.useState(null),[w,C]=_.useState(gp),[I,f]=_.useState(""),[c,p]=_.useState(!0),[y,N]=_.useState(!1),[j,k]=_.useState(null),[E,D]=_.useState(null),[R,G]=_.useState([]),[Be,Ye]=_.useState(null),Xe=_.useRef(0),dn=_.useMemo(()=>{const L=io(h),O=new Set(L.map(Y=>Y.id));return[...L.map(Y=>({...Y,manual:v.includes(Y.id)})),...v.filter(Y=>!O.has(Y)).map(Y=>({id:Y,sources:["manual"],configured:!1,current:!1,manual:!0}))]},[h,v]),z=_.useCallback(async({quiet:L=!1}={})=>{L||p(!0);try{const O=at(s),[Y,xr]=await Promise.all([Oe("/api/status",O),Oe("/api/backups",O)]);g(Y.status),C(xr),f(Je=>Je&&io(Y.status).some(Al=>Al.id===Je)?Je:Y.status.currentProvider)}catch(O){D({tone:"error",title:"状态读取失败",message:O.message})}finally{L||p(!1)}},[s]),J=_.useCallback(async()=>{const L=await ap();d(L.profiles),u(O=>L.profiles.some(Y=>Y.id===O)?O:"default")},[u]);_.useEffect(()=>{let L=!1;return sp().then(async O=>{if(!O)throw new wl;await J(),L||r("ready")}).catch(O=>{L||(r(O instanceof wl?"required":"error"),i(O.message))}),()=>{L=!0}},[J]),_.useEffect(()=>{t==="ready"&&z()},[t,s]),_.useEffect(()=>{const L=O=>{r("required"),i(O.detail||"设备凭证已失效。请重新运行 codex-provider web。")};return window.addEventListener("cps:pairing-required",L),()=>window.removeEventListener("cps:pairing-required",L)},[]),_.useEffect(()=>{if(t!=="ready")return;let L=!1;const O=async()=>{var xr;try{const Je=await up(Xe.current);if(L)return;(xr=Je.activity)!=null&&xr.length&&(Xe.current=Je.activity[Je.activity.length-1].id,G(Al=>[...Al,...Je.activity].slice(-250))),Ye(Je.activeOperation??null)}catch{}};O();const Y=window.setInterval(O,900);return()=>{L=!0,window.clearInterval(Y)}},[t]);const S=_.useCallback(async()=>{const L=j.plan;k(null),N(!0),n("activity");try{const O={...at(s),provider:I,keepCount:L.keepCount},Y=L.mode==="switch"?await Oe("/api/switch",{...O,model:L.modelMode==="custom"?L.model:void 0,keepRootModel:L.modelMode==="keep"}):await Oe("/api/sync",O);D({tone:"success",title:L.mode==="switch"?"切换并同步完成":"同步完成",message:`备份:${Y.result.backupDir}`}),await z({quiet:!0})}catch(O){D({tone:"error",title:"操作失败",message:O.message})}finally{N(!1)}},[j,s,I,z]),T=_.useCallback(async L=>{const O=j.backup;k(null),N(!0),n("activity");try{await Oe("/api/restore",{...at(s),backupId:O.id,...L}),D({tone:"success",title:"备份恢复完成",message:O.id}),await z({quiet:!0})}catch(Y){D({tone:"error",title:"恢复失败",message:Y.message})}finally{N(!1)}},[j,s,z]),M=_.useCallback(async()=>{const L=j.keepCount;k(null),N(!0);try{const O=await Oe("/api/prune",{...at(s),keepCount:L});D({tone:"success",title:"旧备份清理完成",message:`删除 ${O.result.deletedCount} 份,释放 ${pr(O.result.freedBytes)}`}),await z({quiet:!0})}catch(O){D({tone:"error",title:"备份清理失败",message:O.message})}finally{N(!1)}},[j,s,z]),H=_.useCallback(()=>D(null),[]),b=_.useCallback(async L=>{try{const O=await Oe("/api/profiles/save",L);k(null),await J(),u(O.profile.id),D({tone:"success",title:"存储配置已保存",message:O.profile.name})}catch(O){D({tone:"error",title:"配置保存失败",message:O.message})}},[J,u]),Xn=_.useCallback(async()=>{try{await Oe("/api/profiles/delete",{profileId:s}),u("default"),await J()}catch(L){D({tone:"error",title:"配置删除失败",message:L.message})}},[s,J,u]),Ge=_.useCallback(async()=>{await cp().catch(()=>{}),r("required"),i("此浏览器的设备凭证已失效。重新运行 codex-provider web 即可自动配对。")},[]),Pt=_.useCallback(L=>{m(O=>[...new Set([...O,L])].sort()),f(L)},[m]),Ze=_.useCallback(L=>{m(O=>O.filter(Y=>Y!==L)),f((h==null?void 0:h.currentProvider)??"")},[m,h==null?void 0:h.currentProvider]);return t!=="ready"?o.jsxs("div",{className:"access-gate",children:[o.jsx(lo,{size:32}),o.jsx("h1",{children:t==="checking"?"正在完成安全配对":"需要重新配对"}),o.jsx("p",{children:t==="checking"?"请稍候…":l||"请重新运行 codex-provider web。"}),t!=="checking"?o.jsx("code",{children:"codex-provider web"}):null]}):o.jsxs("div",{className:"app-shell",children:[o.jsx(Sp,{status:h,busy:y||!!Be,onRefresh:()=>z()}),o.jsx(Cp,{view:e,setView:n,status:h,onForgetBrowser:Ge}),o.jsxs("main",{className:"main-area",children:[o.jsx(Np,{profiles:a,profileId:s,setProfileId:u,status:h,onAddProfile:()=>k({type:"profile"}),onDeleteProfile:Xn,onRefresh:()=>z(),loading:c}),e==="overview"?o.jsx(Rp,{status:h,backups:w,providers:dn,selectedProvider:I,setSelectedProvider:f,onAddManualProvider:Pt,onRemoveManualProvider:Ze,onExecute:L=>k({type:"execute",plan:L}),onRestore:L=>k({type:"restore",backup:L}),setView:n,busy:y,loading:c}):null,e==="history"?o.jsx(Op,{profileId:s,status:h}):null,e==="backups"?o.jsx(Mp,{backups:w,status:h,busy:y,onRestore:L=>k({type:"restore",backup:L}),onPrune:L=>k({type:"prune",keepCount:L})}):null,e==="activity"?o.jsx(Ip,{activity:R,activeOperation:Be}):null]}),(j==null?void 0:j.type)==="execute"?o.jsx(Dp,{plan:j.plan,status:h,selectedProvider:I,onCancel:()=>k(null),onConfirm:S}):null,(j==null?void 0:j.type)==="restore"?o.jsx(Fp,{backup:j.backup,status:h,onCancel:()=>k(null),onConfirm:T}):null,(j==null?void 0:j.type)==="prune"?o.jsx($p,{keepCount:j.keepCount,backups:w,onCancel:()=>k(null),onConfirm:M}):null,(j==null?void 0:j.type)==="profile"?o.jsx(Ap,{onCancel:()=>k(null),onConfirm:b}):null,o.jsx(Up,{toast:E,onClose:H})]})}zc(document.getElementById("root")).render(o.jsx(co.StrictMode,{children:o.jsx(Hp,{})})); +//# sourceMappingURL=index-33db301d.js.map diff --git a/web/dist/assets/index-33db301d.js.map b/web/dist/assets/index-33db301d.js.map new file mode 100644 index 0000000..e4e9976 --- /dev/null +++ b/web/dist/assets/index-33db301d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-33db301d.js","sources":["../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/client.js","../../src/api.js","../../src/hooks.js","../../src/history-requests.js","../../src/icons.jsx","../../src/App.jsx","../../src/main.jsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 ({}));\n if (!response.ok || !payload.deviceCredential) {\n throw new PairingRequiredError(payload.error ?? \"配对链接无效、已过期或已被使用。请重新运行 codex-provider web。\");\n }\n window.localStorage.setItem(DEVICE_STORAGE_KEY, payload.deviceCredential);\n window.history.replaceState(null, \"\", `${window.location.pathname}${window.location.search}`);\n return true;\n}\n\nfunction deviceHeaders() {\n return { \"X-Codex-Provider-Device\": window.localStorage.getItem(DEVICE_STORAGE_KEY) ?? \"\" };\n}\n\nasync function parseResponse(response, fallback) {\n const payload = await response.json().catch(() => ({}));\n if (!response.ok) {\n if (payload.code === \"PAIRING_REQUIRED\") {\n window.dispatchEvent(new CustomEvent(\"cps:pairing-required\", { detail: payload.error }));\n throw new PairingRequiredError(payload.error);\n }\n throw new Error(payload.error ?? fallback);\n }\n return payload;\n}\n\nexport async function apiRequest(path, body = {}, { signal } = {}) {\n const response = await fetch(path, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...deviceHeaders()\n },\n body: JSON.stringify(body),\n signal\n });\n return parseResponse(response, `Request failed with HTTP ${response.status}.`);\n}\n\nexport async function getActivity(after = 0) {\n const response = await fetch(`/api/activity?after=${after}`, {\n headers: deviceHeaders()\n });\n return parseResponse(response, `Activity request failed with HTTP ${response.status}.`);\n}\n\nexport async function getProfiles() {\n const response = await fetch(\"/api/profiles\", { headers: deviceHeaders() });\n return parseResponse(response, `Profile request failed with HTTP ${response.status}.`);\n}\n\nexport async function forgetThisBrowser() {\n try {\n await apiRequest(\"/api/access/forget\");\n } finally {\n window.localStorage.removeItem(DEVICE_STORAGE_KEY);\n }\n}\n\nexport async function getHistory(body = {}, options = {}) {\n return apiRequest(\"/api/history\", body, options);\n}\n\nexport async function getHistorySession(body = {}, options = {}) {\n return apiRequest(\"/api/history/session\", body, options);\n}\n","import { useEffect, useState } from \"react\";\n\nexport function usePersistentState(key, initialValue) {\n const [value, setValue] = useState(() => {\n try {\n const stored = window.localStorage.getItem(key);\n return stored ? JSON.parse(stored) : initialValue;\n } catch {\n return initialValue;\n }\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue];\n}\n","export function createLatestRequestGate() {\n let sequence = 0;\n let controller = null;\n return {\n begin() {\n controller?.abort();\n controller = new AbortController();\n sequence += 1;\n return { sequence, controller, signal: controller.signal };\n },\n isLatest(candidate) {\n return candidate === sequence;\n },\n cancel() {\n controller?.abort();\n sequence += 1;\n }\n };\n}\n\nexport function scheduleDebounced(callback, delay = 300, timers = globalThis) {\n const id = timers.setTimeout(callback, delay);\n return () => timers.clearTimeout(id);\n}\n","import React from \"react\";\n\nfunction Icon({ children, size = 18, className = \"\" }) {\n return (\n \n {children}\n \n );\n}\n\nexport const RefreshIcon = (props) => ;\nexport const DatabaseIcon = (props) => ;\nexport const HistoryIcon = (props) => ;\nexport const ActivityIcon = (props) => ;\nexport const OverviewIcon = (props) => ;\nexport const ShieldIcon = (props) => ;\nexport const ChevronIcon = (props) => ;\nexport const XIcon = (props) => ;\nexport const CheckIcon = (props) => ;\nexport const AlertIcon = (props) => ;\nexport const FolderIcon = (props) => ;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n PairingRequiredError,\n apiRequest,\n forgetThisBrowser,\n getActivity,\n getHistory,\n getHistorySession,\n getProfiles,\n initializeAccess\n} from \"./api.js\";\nimport { usePersistentState } from \"./hooks.js\";\nimport { createLatestRequestGate, scheduleDebounced } from \"./history-requests.js\";\nimport {\n ActivityIcon,\n AlertIcon,\n CheckIcon,\n ChevronIcon,\n DatabaseIcon,\n FolderIcon,\n HistoryIcon,\n OverviewIcon,\n RefreshIcon,\n ShieldIcon,\n XIcon\n} from \"./icons.jsx\";\n\nconst NAV_ITEMS = [\n { id: \"overview\", label: \"概览\", icon: OverviewIcon },\n { id: \"history\", label: \"聊天记录\", icon: HistoryIcon },\n { id: \"backups\", label: \"备份\", icon: HistoryIcon },\n { id: \"activity\", label: \"活动\", icon: ActivityIcon }\n];\n\nconst EMPTY_BACKUPS = { backupRoot: \"\", backups: [] };\n\nfunction formatNumber(value) {\n return new Intl.NumberFormat(\"zh-CN\").format(Number(value) || 0);\n}\n\nfunction formatBytes(bytes) {\n const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n let value = Number(bytes) || 0;\n let index = 0;\n while (value >= 1024 && index < units.length - 1) {\n value /= 1024;\n index += 1;\n }\n return index === 0 ? `${value} B` : `${value.toFixed(value >= 10 ? 1 : 2).replace(/\\.0$/, \"\")} ${units[index]}`;\n}\n\nfunction formatDate(value) {\n if (!value) return \"未知时间\";\n return new Intl.DateTimeFormat(\"zh-CN\", {\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false\n }).format(new Date(value));\n}\n\nfunction renderInlineMarkdown(text, keyPrefix) {\n const parts = text.split(/(`[^`]+`|\\*\\*[^*]+\\*\\*|\\*[^*]+\\*)/g);\n return parts.map((part, index) => {\n if (part.startsWith(\"`\") && part.endsWith(\"`\")) return {part.slice(1, -1)};\n if (part.startsWith(\"**\") && part.endsWith(\"**\")) return {part.slice(2, -2)};\n if (part.startsWith(\"*\") && part.endsWith(\"*\")) return {part.slice(1, -1)};\n return {part};\n });\n}\n\nfunction SafeMarkdown({ text }) {\n const blocks = String(text ?? \"\").split(/(```[^\\n]*\\n[\\s\\S]*?```)/g);\n return blocks.map((block, index) => {\n if (block.startsWith(\"```\") && block.endsWith(\"```\")) {\n const lines = block.slice(3, -3).replace(/^\\w*\\n/, \"\");\n return
{lines}
;\n }\n return block.split(\"\\n\").map((line, lineIndex, lines) => {renderInlineMarkdown(line, `${index}-${lineIndex}`)}{lineIndex < lines.length - 1 ?
: null}
);\n });\n}\n\nfunction storagePayload(profileId) {\n return { profileId: profileId || \"default\" };\n}\n\nfunction getTargetSqliteHome(status) {\n const databasePath = status?.stateDbLocation?.path;\n if (!databasePath) return status?.sqliteHome ?? \"\";\n const separator = databasePath.includes(\"\\\\\") ? \"\\\\\" : \"/\";\n const parts = databasePath.split(separator);\n parts.pop();\n return parts.join(separator) || separator;\n}\n\nfunction pathsEqual(left, right) {\n if (!left || !right) return false;\n const normalize = (value) => value.replace(/[\\\\/]+$/, \"\").replaceAll(\"\\\\\", \"/\").toLowerCase();\n return normalize(left) === normalize(right);\n}\n\nfunction providersFromStatus(status) {\n if (!status) return [];\n const sources = new Map();\n const add = (values, source) => {\n for (const value of values ?? []) {\n if (!value || value === \"(missing)\") continue;\n const bucket = sources.get(value) ?? new Set();\n bucket.add(source);\n sources.set(value, bucket);\n }\n };\n add(status.configuredProviders, \"config\");\n add(Object.keys(status.rolloutCounts?.sessions ?? {}), \"rollout\");\n add(Object.keys(status.rolloutCounts?.archived_sessions ?? {}), \"rollout\");\n add(Object.keys(status.sqliteCounts?.sessions ?? {}), \"sqlite\");\n add(Object.keys(status.sqliteCounts?.archived_sessions ?? {}), \"sqlite\");\n add([status.currentProvider], \"config\");\n return [...sources.entries()]\n .map(([id, providerSources]) => ({\n id,\n sources: [...providerSources],\n configured: status.configuredProviders?.includes(id),\n current: id === status.currentProvider\n }))\n .sort((left, right) => Number(right.current) - Number(left.current) || left.id.localeCompare(right.id));\n}\n\nfunction StatusDot({ tone = \"neutral\" }) {\n return ;\n}\n\nfunction AppHeader({ status, busy, onRefresh }) {\n const healthy = status?.sqliteAccess?.supported !== false && !status?.sqliteCounts?.unreadable;\n return (\n
\n
\n
\n
\n
Codex Provider Sync
\n
本机元数据一致性工具
\n
\n
\n
\n
\n \n {busy ? \"操作执行中\" : healthy ? \"本地服务就绪\" : \"需要检查\"}\n
\n \n
\n
\n );\n}\n\nfunction Sidebar({ view, setView, status, onForgetBrowser }) {\n return (\n \n );\n}\n\nfunction StorageBar({ profiles, profileId, setProfileId, status, onAddProfile, onDeleteProfile, onRefresh, loading }) {\n return (\n
\n \n \n \n {profileId !== \"default\" ? : null}\n \n
\n );\n}\n\nfunction ProviderBars({ title, counts, currentProvider }) {\n const entries = Object.entries(counts ?? {}).sort((left, right) => right[1] - left[1]);\n const total = entries.reduce((sum, [, count]) => sum + count, 0);\n return (\n
\n
\n {title}\n {formatNumber(total)}\n
\n
\n {entries.length === 0 ?
无记录
: entries.map(([provider, count]) => (\n
\n
\n {provider}\n {formatNumber(count)}\n
\n
\n \n
\n
\n ))}\n
\n
\n );\n}\n\nfunction StatusPanel({ status, loading }) {\n const rolloutTotal = Object.values(status?.rolloutCounts?.sessions ?? {}).reduce((sum, value) => sum + value, 0)\n + Object.values(status?.rolloutCounts?.archived_sessions ?? {}).reduce((sum, value) => sum + value, 0);\n const sqliteTotal = Object.values(status?.sqliteCounts?.sessions ?? {}).reduce((sum, value) => sum + value, 0)\n + Object.values(status?.sqliteCounts?.archived_sessions ?? {}).reduce((sum, value) => sum + value, 0);\n const aligned = status?.alignment?.aligned;\n return (\n
\n
\n
\n

状态总览

\n

比较 rollout 文件、SQLite 线程索引和当前 Provider。

\n
\n
\n {loading ? : aligned ? : }\n {loading ? \"正在检查\" : aligned ? \"元数据已对齐\" : \"发现不一致\"}\n
\n
\n\n
\n
\n 当前 Provider\n {status?.currentProvider ?? \"—\"}\n {status?.currentProviderImplicit ? \"隐式默认\" : \"config.toml 根级配置\"}\n
\n
\n Rollout 文件\n {formatNumber(rolloutTotal)}\n sessions + archived\n
\n
\n SQLite threads\n {status?.sqliteCounts?.unreadable ? \"不可读\" : formatNumber(sqliteTotal)}\n {status?.stateDbLocation?.source ?? \"未定位数据库\"}\n
\n
\n 托管备份\n {formatNumber(status?.backupSummary?.count)}\n {formatBytes(status?.backupSummary?.totalBytes)}\n
\n
\n\n
\n
\n
Rollout files
\n \n \n
\n
\n
\n
SQLite state
\n \n \n
\n
\n
\n );\n}\n\nfunction Warnings({ status }) {\n const items = [];\n if (status?.sqliteAccess?.supported === false) {\n items.push({ tone: \"danger\", title: \"SQLite 路径不可安全访问\", detail: status.sqliteAccess.message });\n }\n if (status?.sqliteCounts?.unreadable) {\n items.push({ tone: \"danger\", title: \"SQLite 当前不可读\", detail: status.sqliteCounts.error });\n }\n if (status?.lockedRolloutFiles?.length) {\n items.push({ tone: \"warning\", title: `${status.lockedRolloutFiles.length} 个 rollout 文件正在使用`, detail: \"同步会跳过这些活跃文件;会话结束后可再次执行。\" });\n }\n if (status?.encryptedContentWarning) {\n items.push({ tone: \"warning\", title: \"检测到 encrypted_content\", detail: status.encryptedContentWarning });\n }\n const repairs = status?.sqliteRepairStats;\n if (repairs?.userEventRowsNeedingRepair || repairs?.cwdRowsNeedingRepair) {\n items.push({ tone: \"info\", title: \"SQLite 有待修复字段\", detail: `user-event ${repairs.userEventRowsNeedingRepair ?? 0},cwd ${repairs.cwdRowsNeedingRepair ?? 0}` });\n }\n if (items.length === 0) return null;\n return (\n
\n {items.map((item, index) => (\n
\n \n
{item.title}{item.detail}
\n
\n ))}\n
\n );\n}\n\nfunction ProjectVisibility({ projects = [] }) {\n return (\n
\n
\n

项目可见性

检查 Desktop 项目路径、全局排序和首屏 50 条命中。

\n
\n
\n \n \n \n {projects.length === 0 ? (\n \n ) : projects.map((project) => (\n \n \n \n \n \n \n \n \n ))}\n \n
项目根目录交互会话首屏RanksCWD 精确匹配Provider
没有可显示的项目诊断。
{project.root}{project.interactiveThreads}{project.firstPageThreads}/50{project.rankPreview || \"—\"}{project.exactCwdMatches}/{project.interactiveThreads}{Object.entries(project.providerCounts ?? {}).map(([provider, count]) => `${provider} ${count}`).join(\" · \") || \"—\"}
\n
\n
\n );\n}\n\nfunction SegmentedControl({ value, onChange, disabled }) {\n return (\n
\n \n \n
\n );\n}\n\nfunction ExecutionPanel({ status, providers, selectedProvider, setSelectedProvider, onAddManualProvider, onRemoveManualProvider, onRequestExecute, busy }) {\n const [mode, setMode] = usePersistentState(\"cps.web.mode\", \"sync\");\n const [modelMode, setModelMode] = usePersistentState(\"cps.web.modelMode\", \"auto\");\n const [customModel, setCustomModel] = usePersistentState(\"cps.web.customModel\", \"\");\n const [keepCount, setKeepCount] = usePersistentState(\"cps.web.keepCount\", 5);\n const [manualProvider, setManualProvider] = useState(\"\");\n const selectedOption = providers.find((provider) => provider.id === selectedProvider);\n const switchAllowed = selectedOption?.configured;\n const validManualProvider = /^[A-Za-z0-9_.-]+$/.test(manualProvider.trim());\n const executeDisabled = busy || !selectedProvider || status?.sqliteAccess?.supported === false || status?.sqliteCounts?.unreadable;\n\n return (\n
\n
\n

执行同步

所有写操作都会先创建备份。执行前请关闭 Codex CLI、App 和 app-server。

\n \n
\n \n
\n \n \n
\n
\n setManualProvider(event.target.value)}\n placeholder=\"手动添加 Provider ID\"\n spellCheck=\"false\"\n disabled={busy}\n />\n {\n onAddManualProvider(manualProvider.trim());\n setManualProvider(\"\");\n }}\n >\n 添加\n \n {selectedOption?.manual ? : null}\n
\n\n {mode === \"switch\" ? (\n
\n 根级 model\n \n \n \n
\n ) : null}\n\n
修改前创建 metadata v2 备份,并记录 SQLite Home
\n onRequestExecute({ mode, modelMode, model: customModel.trim(), keepCount })}\n >\n {busy ? : }\n {busy ? \"正在执行…\" : mode === \"switch\" ? \"切换并同步\" : \"执行同步\"}\n \n
\n );\n}\n\nfunction RecentBackups({ backups, onViewAll, onRestore }) {\n return (\n
\n
\n

最近备份

{backups.backupRoot || \"同步后将在 Codex Home 下创建备份\"}

\n \n
\n
\n {backups.backups.length === 0 ?
尚无由本工具创建的备份。
: backups.backups.slice(0, 3).map((backup) => (\n
\n
\n
{formatDate(backup.metadata.createdAt)}{backup.metadata.targetProvider} · {backup.metadata.changedSessionFiles ?? 0} 个 rollout
\n
{formatBytes(backup.sizeBytes)}
\n \n
\n ))}\n
\n
\n );\n}\n\nfunction Overview({ status, backups, providers, selectedProvider, setSelectedProvider, onAddManualProvider, onRemoveManualProvider, onExecute, onRestore, setView, busy, loading }) {\n return (\n
\n \n \n
\n
\n \n setView(\"backups\")} onRestore={onRestore} />\n
\n \n
\n
\n );\n}\n\nfunction BackupsView({ backups, status, busy, onRestore, onPrune }) {\n const [keepCount, setKeepCount] = usePersistentState(\"cps.web.keepCount\", 5);\n return (\n
\n
\n

备份

管理当前 Codex Home 下由本工具创建的 metadata v2 备份。

\n
\n
\n
\n
{backups.backupRoot || status?.backupRoot || \"—\"}{backups.backups.length} 份 · {formatBytes(backups.backups.reduce((sum, backup) => sum + backup.sizeBytes, 0))}
\n
\n {backups.backups.length === 0 ?
还没有备份执行一次同步或切换后,备份会显示在这里。
: backups.backups.map((backup) => (\n
\n
{formatDate(backup.metadata.createdAt)}{backup.id}
\n
Provider {backup.metadata.targetProvider}Rollout {backup.metadata.changedSessionFiles ?? 0}SQLite {backup.metadata.sqliteDbFiles?.length ? \"已包含\" : \"未包含\"}
\n
SQLite Home{backup.metadata.sqliteHome ?? \"旧版 metadata 未记录\"}
\n
{formatBytes(backup.sizeBytes)}
\n
\n ))}\n
\n
\n
\n );\n}\n\nfunction ActivityView({ activity, activeOperation }) {\n return (\n
\n

活动日志

当前 Web UI 会话中的状态刷新、同步阶段和操作结果。

{activeOperation ?
{activeOperation.kind}
: null}
\n
\n
Activity log{activity.length} entries
\n
\n {activity.length === 0 ?
等待操作…
: activity.map((entry) => (\n
\n \n {entry.level}\n {entry.message}\n {typeof entry.detail === \"string\" ? {entry.detail} : null}\n
\n ))}\n
\n
\n
\n );\n}\n\nfunction HistoryView({ profileId, status }) {\n const [query, setQuery] = useState(\"\");\n const [committedQuery, setCommittedQuery] = useState(\"\");\n const [provider, setProvider] = useState(\"\");\n const [project, setProject] = useState(\"\");\n const [archived, setArchived] = useState(\"all\");\n const [page, setPage] = useState(1);\n const [history, setHistory] = useState({ sessions: [], total: 0, pageSize: 50, hasNextPage: false });\n const [selectedId, setSelectedId] = useState(\"\");\n const [detail, setDetail] = useState(null);\n const [loading, setLoading] = useState(false);\n const [detailLoading, setDetailLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const listRequest = useRef(null);\n const detailRequest = useRef(null);\n if (!listRequest.current) listRequest.current = createLatestRequestGate();\n if (!detailRequest.current) detailRequest.current = createLatestRequestGate();\n const providers = providersFromStatus(status);\n const projects = [...new Set((status?.projectThreadVisibility ?? []).map((item) => item.root))];\n\n useEffect(() => {\n return scheduleDebounced(() => setCommittedQuery(query), 300, window);\n }, [query]);\n\n const loadList = useCallback(async () => {\n const { controller, sequence } = listRequest.current.begin();\n setLoading(true); setError(\"\");\n try {\n const payload = await getHistory({ ...storagePayload(profileId), page, pageSize: 50, query: committedQuery, provider, project, archived }, { signal: controller.signal });\n if (!listRequest.current.isLatest(sequence)) return;\n setHistory(payload.history);\n setSelectedId((current) => payload.history.sessions.some((session) => session.id === current) ? current : payload.history.sessions[0]?.id ?? \"\");\n } catch (requestError) {\n if (requestError.name !== \"AbortError\" && listRequest.current.isLatest(sequence)) setError(requestError.message);\n } finally {\n if (listRequest.current.isLatest(sequence)) setLoading(false);\n }\n }, [profileId, page, committedQuery, provider, project, archived]);\n\n useEffect(() => {\n loadList();\n return () => listRequest.current.cancel();\n }, [loadList]);\n useEffect(() => {\n detailRequest.current.cancel();\n if (!selectedId) { setDetail(null); setDetailLoading(false); return undefined; }\n const { controller, sequence } = detailRequest.current.begin();\n setDetail(null);\n setDetailLoading(true);\n setError(\"\");\n getHistorySession({ ...storagePayload(profileId), sessionId: selectedId }, { signal: controller.signal })\n .then((payload) => { if (detailRequest.current.isLatest(sequence)) setDetail(payload.history); })\n .catch((requestError) => { if (requestError.name !== \"AbortError\" && detailRequest.current.isLatest(sequence)) setError(requestError.message); })\n .finally(() => { if (detailRequest.current.isLatest(sequence)) setDetailLoading(false); });\n return () => controller.abort();\n }, [profileId, selectedId]);\n\n const updateFilter = (setter) => (event) => { setter(event.target.value); setPage(1); };\n return (\n
\n

聊天记录

从 rollout 文件读取历史会话,只读查看,不修改本地数据。

\n
\n { if (event.key === \"Enter\") { setCommittedQuery(query); setPage(1); } }} placeholder=\"搜索标题、项目、Provider 或消息内容\" />\n \n \n \n
\n {error ?
{error}
: null}\n
\n
\n
{history.total} 个会话第 {history.page} 页
\n
\n {loading && !history.sessions.length ?
读取中…
: null}\n {!loading && !history.sessions.length ?
没有匹配的会话
: null}\n {history.sessions.map((session) => )}\n
\n
{page}
\n
\n
\n {detailLoading ?
正在读取会话
: !detail ?
选择一个会话聊天内容将在这里显示。
: <>

{detail.session.title}

{detail.session.cwd || \"未知项目\"} · {detail.session.provider} · {detail.session.messageCount} 条消息

{detail.session.archived ? \"已归档\" : \"活跃\"}
{detail.truncated ?
仅显示最近 {detail.returnedMessageCount} 条消息。
: null}
{detail.messages.map((message) =>
{message.role === \"user\" ? \"你\" : \"Codex\"}
)}
}\n
\n
\n
\n );\n}\n\nfunction Modal({ title, children, confirmLabel, onConfirm, onCancel, tone = \"primary\", confirmDisabled = false }) {\n return (\n
event.target === event.currentTarget && onCancel()}>\n
\n

{title}

\n
{children}
\n
\n
\n
\n );\n}\n\nfunction ExecuteModal({ plan, status, selectedProvider, onCancel, onConfirm }) {\n return (\n \n
请确认 Codex 已完全关闭关闭 Codex CLI、Codex App、app-server 及相关终端,避免 SQLite 或 rollout 被占用。
\n
\n
Codex Home
{status?.codexHome}
\n
SQLite Home
{status?.sqliteHome} ({status?.sqliteHomeSource})
\n
当前 Provider
{status?.currentProvider}
\n
目标 Provider
{selectedProvider}
\n
配置变更
{plan.mode === \"switch\" ? \"更新 config.toml 根级 model_provider\" : \"不修改 config.toml\"}
\n
Model 策略
{plan.mode !== \"switch\" ? \"跟随当前根级 model\" : plan.modelMode === \"auto\" ? \"跟随目标 Provider 配置\" : plan.modelMode === \"keep\" ? \"保留当前根级 model\" : `设置为 ${plan.model}`}
\n
备份策略
修改前创建备份,保留最近 {plan.keepCount} 份
\n
\n
\n );\n}\n\nfunction RestoreModal({ backup, status, onCancel, onConfirm }) {\n const [restoreConfig, setRestoreConfig] = useState(false);\n const [restoreDatabase, setRestoreDatabase] = useState(true);\n const [restoreSessions, setRestoreSessions] = useState(true);\n const targetSqliteHome = getTargetSqliteHome(status);\n const relocates = restoreDatabase && backup.metadata.version >= 2 && backup.metadata.sqliteHome && !pathsEqual(backup.metadata.sqliteHome, targetSqliteHome);\n const relocationBlocked = relocates && restoreConfig;\n return (\n onConfirm({ restoreConfig, restoreDatabase, restoreSessions, allowSqliteHomeRelocation: Boolean(relocates) })}\n >\n
{formatDate(backup.metadata.createdAt)} · {backup.metadata.targetProvider}{backup.path}
\n
\n 选择要覆盖的内容\n \n \n \n
\n {relocates ?
SQLite Home 与备份来源不同来源:{backup.metadata.sqliteHome}
目标:{targetSqliteHome}
{relocationBlocked ? \"迁移数据库时不能同时恢复旧 config.toml。\" : \"确认后数据库将恢复到当前目标位置。\"}
: null}\n
恢复前请关闭 Codex该操作将覆盖所选的当前元数据;请确认 Codex CLI、App 和 app-server 已关闭。
\n \n );\n}\n\nfunction PruneModal({ keepCount, backups, onCancel, onConfirm }) {\n const deleteCount = Math.max(0, backups.backups.length - keepCount);\n return (\n \n
被删除的备份无法直接恢复只处理当前 Codex Home 下由本工具管理的备份目录。
\n
当前备份
{backups.backups.length} 份
保留
最近 {keepCount} 份
将删除
{deleteCount} 份
\n
\n );\n}\n\nfunction ProfileModal({ onCancel, onConfirm }) {\n const [profileId, setProfileId] = useState(\"\");\n const [name, setName] = useState(\"\");\n const [codexHome, setCodexHome] = useState(\"\");\n const [sqliteHome, setSqliteHome] = useState(\"\");\n const valid = /^[A-Za-z0-9_.-]{1,80}$/.test(profileId) && name.trim() && codexHome.trim();\n return (\n onConfirm({ profileId, name, codexHome, sqliteHome })}>\n
\n \n \n \n \n
\n
\n );\n}\n\nfunction Toast({ toast, onClose }) {\n useEffect(() => {\n if (!toast) return undefined;\n const timer = window.setTimeout(onClose, 6000);\n return () => window.clearTimeout(timer);\n }, [toast, onClose]);\n if (!toast) return null;\n return
{toast.tone === \"success\" ? : }{toast.title}{toast.message ? {toast.message} : null}
;\n}\n\nexport default function App() {\n const [view, setView] = useState(\"overview\");\n const [accessState, setAccessState] = useState(\"checking\");\n const [accessMessage, setAccessMessage] = useState(\"\");\n const [profileId, setProfileId] = usePersistentState(\"cps.web.profileId\", \"default\");\n const [profiles, setProfiles] = useState([]);\n const [manualProviders, setManualProviders] = usePersistentState(\"cps.web.manualProviders\", []);\n const [status, setStatus] = useState(null);\n const [backups, setBackups] = useState(EMPTY_BACKUPS);\n const [selectedProvider, setSelectedProvider] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [busy, setBusy] = useState(false);\n const [modal, setModal] = useState(null);\n const [toast, setToast] = useState(null);\n const [activity, setActivity] = useState([]);\n const [activeOperation, setActiveOperation] = useState(null);\n const lastActivityId = useRef(0);\n\n const providers = useMemo(() => {\n const detected = providersFromStatus(status);\n const detectedIds = new Set(detected.map((provider) => provider.id));\n return [\n ...detected.map((provider) => ({\n ...provider,\n manual: manualProviders.includes(provider.id)\n })),\n ...manualProviders\n .filter((provider) => !detectedIds.has(provider))\n .map((id) => ({ id, sources: [\"manual\"], configured: false, current: false, manual: true }))\n ];\n }, [status, manualProviders]);\n\n const refresh = useCallback(async ({ quiet = false } = {}) => {\n if (!quiet) setLoading(true);\n try {\n const storage = storagePayload(profileId);\n const [statusPayload, backupPayload] = await Promise.all([\n apiRequest(\"/api/status\", storage),\n apiRequest(\"/api/backups\", storage)\n ]);\n setStatus(statusPayload.status);\n setBackups(backupPayload);\n setSelectedProvider((current) => current && providersFromStatus(statusPayload.status).some((provider) => provider.id === current)\n ? current\n : statusPayload.status.currentProvider);\n } catch (error) {\n setToast({ tone: \"error\", title: \"状态读取失败\", message: error.message });\n } finally {\n if (!quiet) setLoading(false);\n }\n }, [profileId]);\n\n const refreshProfiles = useCallback(async () => {\n const payload = await getProfiles();\n setProfiles(payload.profiles);\n setProfileId((current) => payload.profiles.some((profile) => profile.id === current) ? current : \"default\");\n }, [setProfileId]);\n\n useEffect(() => {\n let cancelled = false;\n initializeAccess()\n .then(async (paired) => {\n if (!paired) throw new PairingRequiredError();\n await refreshProfiles();\n if (!cancelled) setAccessState(\"ready\");\n })\n .catch((error) => {\n if (cancelled) return;\n setAccessState(error instanceof PairingRequiredError ? \"required\" : \"error\");\n setAccessMessage(error.message);\n });\n return () => { cancelled = true; };\n }, [refreshProfiles]);\n\n useEffect(() => {\n if (accessState === \"ready\") refresh();\n }, [accessState, profileId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const requirePairing = (event) => {\n setAccessState(\"required\");\n setAccessMessage(event.detail || \"设备凭证已失效。请重新运行 codex-provider web。\");\n };\n window.addEventListener(\"cps:pairing-required\", requirePairing);\n return () => window.removeEventListener(\"cps:pairing-required\", requirePairing);\n }, []);\n\n useEffect(() => {\n if (accessState !== \"ready\") return undefined;\n let stopped = false;\n const poll = async () => {\n try {\n const payload = await getActivity(lastActivityId.current);\n if (stopped) return;\n if (payload.activity?.length) {\n lastActivityId.current = payload.activity[payload.activity.length - 1].id;\n setActivity((current) => [...current, ...payload.activity].slice(-250));\n }\n setActiveOperation(payload.activeOperation ?? null);\n } catch {\n // A transient poll failure should not interrupt a running operation.\n }\n };\n poll();\n const timer = window.setInterval(poll, 900);\n return () => { stopped = true; window.clearInterval(timer); };\n }, [accessState]);\n\n const execute = useCallback(async () => {\n const plan = modal.plan;\n setModal(null);\n setBusy(true);\n setView(\"activity\");\n try {\n const common = { ...storagePayload(profileId), provider: selectedProvider, keepCount: plan.keepCount };\n const payload = plan.mode === \"switch\"\n ? await apiRequest(\"/api/switch\", { ...common, model: plan.modelMode === \"custom\" ? plan.model : undefined, keepRootModel: plan.modelMode === \"keep\" })\n : await apiRequest(\"/api/sync\", common);\n setToast({ tone: \"success\", title: plan.mode === \"switch\" ? \"切换并同步完成\" : \"同步完成\", message: `备份:${payload.result.backupDir}` });\n await refresh({ quiet: true });\n } catch (error) {\n setToast({ tone: \"error\", title: \"操作失败\", message: error.message });\n } finally {\n setBusy(false);\n }\n }, [modal, profileId, selectedProvider, refresh]);\n\n const restore = useCallback(async (options) => {\n const backup = modal.backup;\n setModal(null);\n setBusy(true);\n setView(\"activity\");\n try {\n await apiRequest(\"/api/restore\", { ...storagePayload(profileId), backupId: backup.id, ...options });\n setToast({ tone: \"success\", title: \"备份恢复完成\", message: backup.id });\n await refresh({ quiet: true });\n } catch (error) {\n setToast({ tone: \"error\", title: \"恢复失败\", message: error.message });\n } finally {\n setBusy(false);\n }\n }, [modal, profileId, refresh]);\n\n const prune = useCallback(async () => {\n const keepCount = modal.keepCount;\n setModal(null);\n setBusy(true);\n try {\n const payload = await apiRequest(\"/api/prune\", { ...storagePayload(profileId), keepCount });\n setToast({ tone: \"success\", title: \"旧备份清理完成\", message: `删除 ${payload.result.deletedCount} 份,释放 ${formatBytes(payload.result.freedBytes)}` });\n await refresh({ quiet: true });\n } catch (error) {\n setToast({ tone: \"error\", title: \"备份清理失败\", message: error.message });\n } finally {\n setBusy(false);\n }\n }, [modal, profileId, refresh]);\n\n const closeToast = useCallback(() => setToast(null), []);\n const saveProfile = useCallback(async (profile) => {\n try {\n const payload = await apiRequest(\"/api/profiles/save\", profile);\n setModal(null);\n await refreshProfiles();\n setProfileId(payload.profile.id);\n setToast({ tone: \"success\", title: \"存储配置已保存\", message: payload.profile.name });\n } catch (error) {\n setToast({ tone: \"error\", title: \"配置保存失败\", message: error.message });\n }\n }, [refreshProfiles, setProfileId]);\n const deleteProfile = useCallback(async () => {\n try {\n await apiRequest(\"/api/profiles/delete\", { profileId });\n setProfileId(\"default\");\n await refreshProfiles();\n } catch (error) {\n setToast({ tone: \"error\", title: \"配置删除失败\", message: error.message });\n }\n }, [profileId, refreshProfiles, setProfileId]);\n const forgetBrowser = useCallback(async () => {\n await forgetThisBrowser().catch(() => {});\n setAccessState(\"required\");\n setAccessMessage(\"此浏览器的设备凭证已失效。重新运行 codex-provider web 即可自动配对。\");\n }, []);\n const addManualProvider = useCallback((provider) => {\n setManualProviders((current) => [...new Set([...current, provider])].sort());\n setSelectedProvider(provider);\n }, [setManualProviders]);\n const removeManualProvider = useCallback((provider) => {\n setManualProviders((current) => current.filter((item) => item !== provider));\n setSelectedProvider(status?.currentProvider ?? \"\");\n }, [setManualProviders, status?.currentProvider]);\n\n if (accessState !== \"ready\") {\n return

{accessState === \"checking\" ? \"正在完成安全配对\" : \"需要重新配对\"}

{accessState === \"checking\" ? \"请稍候…\" : accessMessage || \"请重新运行 codex-provider web。\"}

{accessState !== \"checking\" ? codex-provider web : null}
;\n }\n\n return (\n
\n refresh()} />\n \n
\n setModal({ type: \"profile\" })} onDeleteProfile={deleteProfile} onRefresh={() => refresh()} loading={loading} />\n {view === \"overview\" ? setModal({ type: \"execute\", plan })} onRestore={(backup) => setModal({ type: \"restore\", backup })} setView={setView} busy={busy} loading={loading} /> : null}\n {view === \"history\" ? : null}\n {view === \"backups\" ? setModal({ type: \"restore\", backup })} onPrune={(keepCount) => setModal({ type: \"prune\", keepCount })} /> : null}\n {view === \"activity\" ? : null}\n
\n {modal?.type === \"execute\" ? setModal(null)} onConfirm={execute} /> : null}\n {modal?.type === \"restore\" ? setModal(null)} onConfirm={restore} /> : null}\n {modal?.type === \"prune\" ? setModal(null)} onConfirm={prune} /> : null}\n {modal?.type === \"profile\" ? setModal(null)} onConfirm={saveProfile} /> : null}\n \n
\n );\n}\n","import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport App from \"./App.jsx\";\nimport \"./styles.css\";\n\ncreateRoot(document.getElementById(\"root\")).render(\n \n \n \n);\n"],"names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","reactDom_production_min","checkDCE","err","reactDomModule","createRoot","DEVICE_STORAGE_KEY","PairingRequiredError","message","hasDeviceCredential","initializeAccess","pairingToken","response","payload","deviceHeaders","parseResponse","fallback","apiRequest","path","body","signal","getActivity","after","getProfiles","forgetThisBrowser","getHistory","options","getHistorySession","usePersistentState","key","initialValue","value","setValue","useState","stored","useEffect","createLatestRequestGate","sequence","controller","candidate","scheduleDebounced","callback","delay","timers","Icon","children","size","className","jsx","RefreshIcon","props","jsxs","DatabaseIcon","HistoryIcon","ActivityIcon","OverviewIcon","ShieldIcon","ChevronIcon","XIcon","CheckIcon","AlertIcon","FolderIcon","NAV_ITEMS","EMPTY_BACKUPS","formatNumber","formatBytes","bytes","units","index","formatDate","renderInlineMarkdown","text","keyPrefix","part","React","SafeMarkdown","block","lines","line","lineIndex","storagePayload","profileId","getTargetSqliteHome","status","databasePath","_a","separator","parts","pathsEqual","left","right","normalize","providersFromStatus","sources","add","values","source","bucket","_b","_c","_d","providerSources","StatusDot","tone","AppHeader","busy","onRefresh","healthy","Sidebar","view","setView","onForgetBrowser","item","StorageBar","profiles","setProfileId","onAddProfile","onDeleteProfile","loading","event","profile","ProviderBars","title","counts","currentProvider","entries","total","sum","count","provider","StatusPanel","rolloutTotal","sqliteTotal","aligned","_e","_f","_g","_h","_i","_j","_k","_l","_m","Warnings","items","repairs","ProjectVisibility","projects","project","SegmentedControl","onChange","disabled","ExecutionPanel","providers","selectedProvider","setSelectedProvider","onAddManualProvider","onRemoveManualProvider","onRequestExecute","mode","setMode","modelMode","setModelMode","customModel","setCustomModel","keepCount","setKeepCount","manualProvider","setManualProvider","selectedOption","switchAllowed","validManualProvider","executeDisabled","RecentBackups","backups","onViewAll","onRestore","backup","Overview","onExecute","BackupsView","onPrune","ActivityView","activity","activeOperation","entry","HistoryView","query","setQuery","committedQuery","setCommittedQuery","setProvider","setProject","archived","setArchived","page","setPage","history","setHistory","selectedId","setSelectedId","detail","setDetail","setLoading","detailLoading","setDetailLoading","error","setError","listRequest","useRef","detailRequest","loadList","useCallback","current","session","requestError","updateFilter","setter","Fragment","Modal","confirmLabel","onConfirm","onCancel","confirmDisabled","ExecuteModal","plan","RestoreModal","restoreConfig","setRestoreConfig","restoreDatabase","setRestoreDatabase","restoreSessions","setRestoreSessions","targetSqliteHome","relocates","relocationBlocked","PruneModal","deleteCount","ProfileModal","name","setName","codexHome","setCodexHome","sqliteHome","setSqliteHome","valid","Toast","toast","onClose","timer","App","accessState","setAccessState","accessMessage","setAccessMessage","setProfiles","manualProviders","setManualProviders","setStatus","setBackups","setBusy","modal","setModal","setToast","setActivity","setActiveOperation","lastActivityId","useMemo","detected","detectedIds","refresh","quiet","storage","statusPayload","backupPayload","refreshProfiles","cancelled","paired","requirePairing","stopped","poll","execute","common","restore","prune","closeToast","saveProfile","deleteProfile","forgetBrowser","addManualProvider","removeManualProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]} \ No newline at end of file diff --git a/web/dist/index.html b/web/dist/index.html new file mode 100644 index 0000000..481bc23 --- /dev/null +++ b/web/dist/index.html @@ -0,0 +1,16 @@ + + + + + + + + Codex Provider Sync + + + + +
+ + + diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..c4f650d --- /dev/null +++ b/web/index.html @@ -0,0 +1,14 @@ + + + + + + + + Codex Provider Sync + + +
+ + + diff --git a/web/src/App.jsx b/web/src/App.jsx new file mode 100644 index 0000000..5865af2 --- /dev/null +++ b/web/src/App.jsx @@ -0,0 +1,950 @@ +import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"; + +import { + PairingRequiredError, + apiRequest, + forgetThisBrowser, + getActivity, + getHistory, + getHistorySession, + getProfiles, + initializeAccess +} from "./api.js"; +import { usePersistentState } from "./hooks.js"; +import { createLatestRequestGate, scheduleDebounced } from "./history-requests.js"; +import { + ActivityIcon, + AlertIcon, + CheckIcon, + ChevronIcon, + DatabaseIcon, + FolderIcon, + HistoryIcon, + OverviewIcon, + RefreshIcon, + ShieldIcon, + XIcon +} from "./icons.jsx"; + +const NAV_ITEMS = [ + { id: "overview", label: "概览", icon: OverviewIcon }, + { id: "history", label: "聊天记录", icon: HistoryIcon }, + { id: "backups", label: "备份", icon: HistoryIcon }, + { id: "activity", label: "活动", icon: ActivityIcon } +]; + +const EMPTY_BACKUPS = { backupRoot: "", backups: [] }; + +function formatNumber(value) { + return new Intl.NumberFormat("zh-CN").format(Number(value) || 0); +} + +function formatBytes(bytes) { + const units = ["B", "KB", "MB", "GB", "TB"]; + let value = Number(bytes) || 0; + let index = 0; + while (value >= 1024 && index < units.length - 1) { + value /= 1024; + index += 1; + } + return index === 0 ? `${value} B` : `${value.toFixed(value >= 10 ? 1 : 2).replace(/\.0$/, "")} ${units[index]}`; +} + +function formatDate(value) { + if (!value) return "未知时间"; + return new Intl.DateTimeFormat("zh-CN", { + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false + }).format(new Date(value)); +} + +function renderInlineMarkdown(text, keyPrefix) { + const parts = text.split(/(`[^`]+`|\*\*[^*]+\*\*|\*[^*]+\*)/g); + return parts.map((part, index) => { + if (part.startsWith("`") && part.endsWith("`")) return {part.slice(1, -1)}; + if (part.startsWith("**") && part.endsWith("**")) return {part.slice(2, -2)}; + if (part.startsWith("*") && part.endsWith("*")) return {part.slice(1, -1)}; + return {part}; + }); +} + +function SafeMarkdown({ text }) { + const blocks = String(text ?? "").split(/(```[^\n]*\n[\s\S]*?```)/g); + return blocks.map((block, index) => { + if (block.startsWith("```") && block.endsWith("```")) { + const lines = block.slice(3, -3).replace(/^\w*\n/, ""); + return
{lines}
; + } + return block.split("\n").map((line, lineIndex, lines) => {renderInlineMarkdown(line, `${index}-${lineIndex}`)}{lineIndex < lines.length - 1 ?
: null}
); + }); +} + +function storagePayload(profileId) { + return { profileId: profileId || "default" }; +} + +function getTargetSqliteHome(status) { + const databasePath = status?.stateDbLocation?.path; + if (!databasePath) return status?.sqliteHome ?? ""; + const separator = databasePath.includes("\\") ? "\\" : "/"; + const parts = databasePath.split(separator); + parts.pop(); + return parts.join(separator) || separator; +} + +function pathsEqual(left, right) { + if (!left || !right) return false; + const normalize = (value) => value.replace(/[\\/]+$/, "").replaceAll("\\", "/").toLowerCase(); + return normalize(left) === normalize(right); +} + +function providersFromStatus(status) { + if (!status) return []; + const sources = new Map(); + const add = (values, source) => { + for (const value of values ?? []) { + if (!value || value === "(missing)") continue; + const bucket = sources.get(value) ?? new Set(); + bucket.add(source); + sources.set(value, bucket); + } + }; + add(status.configuredProviders, "config"); + add(Object.keys(status.rolloutCounts?.sessions ?? {}), "rollout"); + add(Object.keys(status.rolloutCounts?.archived_sessions ?? {}), "rollout"); + add(Object.keys(status.sqliteCounts?.sessions ?? {}), "sqlite"); + add(Object.keys(status.sqliteCounts?.archived_sessions ?? {}), "sqlite"); + add([status.currentProvider], "config"); + return [...sources.entries()] + .map(([id, providerSources]) => ({ + id, + sources: [...providerSources], + configured: status.configuredProviders?.includes(id), + current: id === status.currentProvider + })) + .sort((left, right) => Number(right.current) - Number(left.current) || left.id.localeCompare(right.id)); +} + +function StatusDot({ tone = "neutral" }) { + return