ompgui 0.7.11 → 0.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +7 -6
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +5 -5
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.js +3 -3
- package/.next/required-server-files.json +3 -3
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +2 -2
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +2 -2
- package/.next/server/app/api/agents/[name]/route.js +1 -1
- package/.next/server/app/api/agents/route.js +1 -1
- package/.next/server/app/api/agents/unpack/route.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/daemon/route.js +1 -1
- package/.next/server/app/api/daemon/route.js.nft.json +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/connectivity/route.js +1 -1
- package/.next/server/app/api/models-config/connectivity/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/omp-settings/route.js +1 -1
- package/.next/server/app/api/omp-update/route.js +2 -2
- package/.next/server/app/api/omp-version/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/projects/route.js +2 -2
- package/.next/server/app/api/providers/enable/route.js +1 -1
- package/.next/server/app/api/relay/devices/[id]/route.js +1 -1
- package/.next/server/app/api/relay/devices/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/relay/devices/route.js +1 -1
- package/.next/server/app/api/relay/devices/route.js.nft.json +1 -1
- package/.next/server/app/api/relay/pair/route.js +1 -1
- package/.next/server/app/api/relay/pair/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/media/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
- package/.next/server/app/api/sessions/archive/route.js +1 -1
- package/.next/server/app/api/sessions/import/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/web-auth/pair/route.js +1 -0
- package/.next/server/app/api/web-auth/pair/route.js.nft.json +1 -0
- package/.next/server/app/api/web-auth/pair/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/web-auth/session/route.js +1 -1
- package/.next/server/app/api/web-auth/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pair/page.js +1 -1
- package/.next/server/app/pair/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pair.html +1 -1
- package/.next/server/app/pair.rsc +3 -3
- package/.next/server/app/pair.segments/_full.segment.rsc +3 -3
- package/.next/server/app/pair.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/pair.segments/pair/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/relay/route.js +1 -1
- package/.next/server/app-paths-manifest.json +7 -6
- package/.next/server/chunks/4008.js +2 -2
- package/.next/server/chunks/4395.js +2 -0
- package/.next/server/chunks/474.js +1 -1
- package/.next/server/chunks/4980.js +1 -1
- package/.next/server/chunks/6337.js +1 -1
- package/.next/server/chunks/7077.js +1 -1
- package/.next/server/chunks/8015.js +10 -10
- package/.next/server/chunks/933.js +1 -1
- package/.next/server/functions-config-manifest.json +2 -2
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +6 -5
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3944.2debfbacfd5e255f.js +1 -0
- package/.next/static/chunks/4315-ea1c0b248e80933c.js +1 -0
- package/.next/static/chunks/{6268.c8711c205efe98a6.js → 6268.be519bbc5c4347fe.js} +1 -1
- package/.next/static/chunks/app/_global-error/page-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agents/[name]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agents/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/agents/unpack/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/daemon/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/home/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/models/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/models-config/connectivity/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/omp-settings/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/omp-update/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/omp-version/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/projects/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/providers/enable/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/relay/devices/[id]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/relay/devices/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/relay/pair/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/archive/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/skills/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/usage/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/web-auth/pair/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/web-auth/session/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/login/page-7bf6a8dff8d8ec8a.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/app/{page-66dfb84af2e0fea1.js → page-8ddabaf903ef7161.js} +1 -1
- package/.next/static/chunks/app/pair/page-b038d0301aa512a0.js +1 -0
- package/.next/static/chunks/app/relay/route-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/{main-354b27ede3eb835a.js → main-07954eb1fcf84ef7.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ef9cf0833e5e0b87.js +1 -0
- package/.next/static/chunks/{webpack-7f93c1ded461bdcd.js → webpack-6bfb3928a1f4ac15.js} +1 -1
- package/.next/static/u7dbGv9ZBD6miViUAEmi7/_buildManifest.js +1 -0
- package/README.ja.md +13 -12
- package/README.ko.md +13 -12
- package/README.md +13 -12
- package/README.zh-CN.md +13 -12
- package/bin/ompgui-options.js +2 -2
- package/bin/ompgui-pair.js +1 -0
- package/next.config.ts +3 -0
- package/package.json +1 -1
- package/.next/server/chunks/9145.js +0 -2
- package/.next/static/RCJWKG4f3VN3XnWbJ4581/_buildManifest.js +0 -1
- package/.next/static/chunks/3944.6215b78f025077b3.js +0 -1
- package/.next/static/chunks/4315-fad7ccd6e548e08e.js +0 -1
- package/.next/static/chunks/app/_global-error/page-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agents/[name]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agents/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/agents/unpack/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/daemon/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/home/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/models/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/models-config/connectivity/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/omp-settings/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/omp-update/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/omp-version/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/projects/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/providers/enable/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/relay/devices/[id]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/relay/devices/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/relay/pair/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/archive/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/skills/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/usage/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/web-auth/session/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/login/page-a54174ed920300f7.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/app/pair/page-d72423ffc5654e29.js +0 -1
- package/.next/static/chunks/app/relay/route-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-08a33f204a956c10.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-08a33f204a956c10.js +0 -1
- /package/.next/static/{RCJWKG4f3VN3XnWbJ4581 → u7dbGv9ZBD6miViUAEmi7}/_ssgManifest.js +0 -0
package/README.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [简体中文](./README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
> **Android APK(Android 12+)** — 使用 Kotlin 配套应用连接远程 ompgui 服务器,并查看最新会话的只读离线快照。[下载 ompgui Remote v0.7.
|
|
5
|
+
> **Android APK(Android 12+)** — 使用 Kotlin 配套应用连接远程 ompgui 服务器,并查看最新会话的只读离线快照。[下载 ompgui Remote v0.7.12](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.12/ompgui-remote-v0.7.12.apk) · [发行说明](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.12)
|
|
6
6
|
|
|
7
7
|
> `android/` 中的实验性原生 Compose 客户端使用经过身份验证的 `/relay` WebSocket,提供会话/历史记录控制、带链接的消息、离线 Mermaid 图表与代码语法高亮,以及图片/PDF/音频/HTML/Markdown/DOCX 内联预览。文件仅在界面可见时自动刷新,并保留未保存的编辑;支持浏览允许访问的隐藏文件和搜索归档。模型与设置包括公开的 models.dev 目录、高级 OMP 设置,以及与配置状态分开显示的各会话实际 MCP 运行状态。附件通过流式传输暂存,而不是在手机端打包成一个巨大的 JSON:图片最多 10 个,每个 10 MiB;文本附件独立计数,最多 10 个,每个 256 KiB。OMP 自身的图像规范化处理和各提供商的图片数量限制仍然适用。
|
|
8
8
|
>
|
|
@@ -53,7 +53,7 @@ ompgui --hostname 0.0.0.0 # 在可信网络中暴露服务
|
|
|
53
53
|
ompgui -p 8080 -H 0.0.0.0 # 组合使用
|
|
54
54
|
ompgui --no-open # 不自动打开浏览器
|
|
55
55
|
|
|
56
|
-
ompgui --password "a-long-random-password" #
|
|
56
|
+
ompgui --password "a-long-random-password" # 本地登录及设备注册时的额外验证
|
|
57
57
|
|
|
58
58
|
PORT=8080 ompgui # 也支持环境变量
|
|
59
59
|
OMP_WEB_HOSTNAME=0.0.0.0 ompgui # 显式暴露到网络
|
|
@@ -62,7 +62,7 @@ OMP_WEB_PASSWORD='a-long-random-password' ompgui # 环境变量形式(POSIX)
|
|
|
62
62
|
OMP_WEB_NO_OPEN=1 ompgui # 作为后台服务运行时很有用
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
`OMP_WEB_PASSWORD` 或 `--password` 用于保护直接 localhost 访问,并在设备注册时额外验证密码。本地会话有效期为 30 天,修改密码会使其失效。无论是否设置密码,远程 Web 访问都必须使用已注册设备;仅凭密码或旧密码会话 Cookie 无法访问。远程连接请使用 HTTPS。
|
|
66
66
|
|
|
67
67
|
### macOS 后台服务
|
|
68
68
|
|
|
@@ -93,9 +93,9 @@ macOS 浏览器 GUI 的 **Settings → System & Updates → Background service**
|
|
|
93
93
|
|
|
94
94
|
从移动设备(iPhone、iPad、Android)或外部笔记本访问 `ompgui` 时,**强烈推荐使用 [Tailscale](https://tailscale.com/) 虚拟专用网(VPN)**。它通过端到端加密的点对点 Mesh 网络连接设备,无需端口转发或暴露公网 IP。
|
|
95
95
|
|
|
96
|
-
### 1.
|
|
96
|
+
### 1. 配置设备注册的额外密码
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
CLI 在绑定外部接口时要求密码。通过 Tailscale Serve/Funnel 访问时请保留默认回环绑定;密码仅是注册时的额外验证,不能替代设备注册:
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
# CLI 选项:绑定到所有网络接口并设置密码
|
|
@@ -110,16 +110,17 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
|
|
|
110
110
|
1. **安装 Tailscale**:在宿主电脑和移动设备上安装 [Tailscale](https://tailscale.com/download) 并登录同一账户。
|
|
111
111
|
2. **在宿主电脑上启动 ompgui**:
|
|
112
112
|
```bash
|
|
113
|
-
ompgui --
|
|
113
|
+
ompgui --password "your-strong-password"
|
|
114
114
|
```
|
|
115
115
|
3. **在移动端浏览器中访问**:
|
|
116
|
-
-
|
|
116
|
+
- 使用已连接到 ompgui 的 HTTPS Serve/Funnel 地址:
|
|
117
117
|
```text
|
|
118
|
-
|
|
119
|
-
# 或启用 MagicDNS 时
|
|
120
|
-
http://my-macbook:30177
|
|
118
|
+
https://host.ts.net:8443
|
|
121
119
|
```
|
|
122
|
-
4.
|
|
120
|
+
4. **注册浏览器**:在宿主电脑的 Settings → Connect Devices 创建链接,或运行 `ompgui pair --url wss://host.ts.net:8443/relay` 并指定实际 ompgui HTTPS/Funnel 地址。在远程浏览器打开输出的 **Browser** 链接,若设置了密码则输入,然后选择配对浏览器。直接 tailnet 访问也应先配置 HTTPS。浏览器与手机链接共享同一个十分钟一次性注册请求,只能由其中一个使用;为下一台设备重新生成链接。
|
|
121
|
+
5. **撤销访问**:使用 `ompgui devices`、`ompgui devices revoke <id>` 或 Settings → Connect Devices。它们与 Android APK 共享设备列表和撤销逻辑;撤销会关闭活动 Web 流及中继连接,并拒绝后续请求。
|
|
122
|
+
|
|
123
|
+
反向代理必须保留外部 Host 和 forwarding/Funnel 头。删除这些头并把 Host 改为 localhost,会使远程请求无法与直接本地请求区分。浏览器复用 APK 中继认证及 `~/.omp/agent/ompgui-relay.json`,持有有效期为 30 天、仅限当前主机的 HttpOnly 设备 Cookie;服务器只保存令牌哈希。这是凭据注册而非物理设备证明:复制令牌或 Cookie 即可在撤销前获得相同权限。
|
|
123
124
|
|
|
124
125
|
## 功能特性
|
|
125
126
|
|
|
@@ -142,7 +143,7 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
|
|
|
142
143
|
| --- | --- |
|
|
143
144
|
| `PORT` | 服务器端口(默认 `30177`;`-p/--port` 优先) |
|
|
144
145
|
| `OMP_WEB_HOSTNAME` | 绑定主机名(默认 `127.0.0.1`;`-H/--hostname` 优先) |
|
|
145
|
-
| `OMP_WEB_PASSWORD` |
|
|
146
|
+
| `OMP_WEB_PASSWORD` | 本地登录及设备注册时的额外验证密码;远程仍需已注册设备 |
|
|
146
147
|
| `OMP_WEB_NO_OPEN` | 设为 `1`/`true` 可跳过自动打开浏览器 |
|
|
147
148
|
| `OMP_WEB_OMP_BIN` | `omp` 不在 `PATH` 中时,指向其二进制文件的绝对路径 |
|
|
148
149
|
| `PI_CODING_AGENT_DIR` | 指向其他 omp agent 目录(默认 `~/.omp/agent`) |
|
package/bin/ompgui-options.js
CHANGED
|
@@ -28,8 +28,8 @@ Commands:
|
|
|
28
28
|
service enable | disable Toggle login auto-start without stopping or removing config
|
|
29
29
|
service uninstall Stop service and remove its configuration
|
|
30
30
|
update Update ompgui to the latest version
|
|
31
|
-
pair Create
|
|
32
|
-
devices List or revoke paired
|
|
31
|
+
pair Create one-time phone and browser pairing links
|
|
32
|
+
devices List or revoke paired devices`);
|
|
33
33
|
}
|
|
34
34
|
function parseLaunchOptions(args = process.argv.slice(2), env = process.env) {
|
|
35
35
|
const { values: cliArgs, positionals } = parseArgs({ args, options: { port:{type:"string",short:"p"}, hostname:{type:"string",short:"H"}, password:{type:"string"}, help:{type:"boolean",short:"h"}, version:{type:"boolean"}, "no-open":{type:"boolean"}, url:{type:"string"}, json:{type:"boolean"}, defer:{type:"boolean"} }, strict:false, allowPositionals:true });
|
package/bin/ompgui-pair.js
CHANGED
|
@@ -65,6 +65,7 @@ async function runPair(options) {
|
|
|
65
65
|
body: JSON.stringify(body),
|
|
66
66
|
});
|
|
67
67
|
console.log(offer.uri);
|
|
68
|
+
console.log("Browser: " + offer.browserUrl);
|
|
68
69
|
console.log(`Relay: ${offer.relayUrl}`);
|
|
69
70
|
console.log(`Expires: ${new Date(offer.expiresAt).toISOString()}`);
|
|
70
71
|
if (openBrowser) openPairPage(`${base}/pair`);
|
package/next.config.ts
CHANGED
|
@@ -36,6 +36,9 @@ const nextConfig = (phase: string): NextConfig => {
|
|
|
36
36
|
return config;
|
|
37
37
|
},
|
|
38
38
|
allowedDevOrigins: ["127.0.0.1", "192.168.*.*"],
|
|
39
|
+
// Keep dev RSC data self-contained: unregistered browsers cannot open HMR
|
|
40
|
+
// sockets, so a separate React debug stream would block login hydration.
|
|
41
|
+
experimental: { reactDebugChannel: false },
|
|
39
42
|
// Security: stop advertising the runtime, and surface dev-mode problems
|
|
40
43
|
// earlier. Source maps in the browser bundle leak server path layout and
|
|
41
44
|
// bloat downloads without helping end users of a published app.
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
exports.id=9145,exports.ids=[9145],exports.modules={20565:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){return"string"==typeof a?a:void 0}function f(a){return"number"==typeof a&&Number.isFinite(a)?a:void 0}c.d(b,{i:()=>f,oJ:()=>e,u4:()=>d})},49621:(a,b,c)=>{"use strict";c.d(b,{f4:()=>i,xR:()=>q,mx:()=>t,Rm:()=>r,AY:()=>s});var d=c(77598),e=c(73024),f=c(76760),g=c(85887),h=c(20565);c(78970);let i=6e5;function j(a,b=16){return`${a}${(0,d.randomBytes)(b).toString("base64url")}`}function k(){return(0,f.resolve)((0,g.$M)(),"ompgui-relay.json")}function l(){return{version:1,serverId:j("s_"),devices:[],pairing:null}}function m(a){let b=k(),c=`${b}.lock`;(0,e.mkdirSync)((0,f.dirname)(c),{recursive:!0});let d=Date.now()+3e3;for(;;){let b=null;try{b=(0,e.openSync)(c,"wx")}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-(0,e.statSync)(c).mtimeMs>1e4){(0,e.unlinkSync)(c);continue}}catch{continue}if(Date.now()>=d)throw Error("Timed out waiting for the ompgui relay device registry lock");!function(){let a=new SharedArrayBuffer(4);Atomics.wait(new Int32Array(a),0,0,25)}();continue}try{(0,e.writeSync)(b,String(process.pid))}finally{(0,e.closeSync)(b)}try{return a()}finally{try{(0,e.unlinkSync)(c)}catch{}}}}function n(){let a=k();if(!(0,e.existsSync)(a)){let a=l();return o(a),a}try{return function(a){try{let b=JSON.parse(a);if(!(0,h.u4)(b)||1!==b.version)return l();let c="string"==typeof b.serverId&&/^[A-Za-z0-9_-]{16,64}$/.test(b.serverId)?b.serverId:j("s_"),d=[];if(Array.isArray(b.devices))for(let a of b.devices)(0,h.u4)(a)&&"string"==typeof a.id&&a.id.startsWith("d_")&&"string"==typeof a.tokenHash&&64===a.tokenHash.length&&d.push({id:a.id,label:(("string"==typeof a.label?a.label:"")??"").replace(/[\u0000-\u001f\u007f]/g,"").trim().slice(0,64),tokenHash:a.tokenHash,createdAt:"string"==typeof a.createdAt?a.createdAt:new Date(0).toISOString(),lastSeenAt:"string"==typeof a.lastSeenAt?a.lastSeenAt:new Date(0).toISOString()});let e=null;if((0,h.u4)(b.pairing)){let a="string"==typeof b.pairing.secretHash?b.pairing.secretHash:"",c="number"==typeof b.pairing.expiresAt?b.pairing.expiresAt:0,d="string"==typeof b.pairing.relayUrl?b.pairing.relayUrl:"",f="string"==typeof b.pairing.createdAt?b.pairing.createdAt:new Date(0).toISOString();64===a.length&&c>0&&d&&(e={secretHash:a,expiresAt:c,relayUrl:d,createdAt:f})}let f="string"==typeof b.relayUrl?b.relayUrl:void 0;return{version:1,serverId:c,...f?{relayUrl:f}:{},devices:d,pairing:e}}catch{return l()}}((0,e.readFileSync)(a,"utf8"))}catch{return l()}}function o(a){let b=k();(0,e.mkdirSync)((0,f.dirname)(b),{recursive:!0});let c=`${b}.tmp-${process.pid}-${Date.now()}`;try{(0,e.writeFileSync)(c,`${JSON.stringify(a,null,2)}
|
|
2
|
-
`,"utf8"),(0,e.renameSync)(c,b)}catch(a){try{(0,e.existsSync)(c)&&(0,e.unlinkSync)(c)}catch{}throw a}}function p(){return m(()=>n())}function q(a){let b=a.now??Date.now(),c=a.ttlMs??i,e=(0,d.randomBytes)(32).toString("base64url");return m(()=>{let f=n();return f.relayUrl=a.relayUrl,f.pairing={secretHash:(0,d.createHash)("sha256").update(e,"utf8").digest("hex"),expiresAt:b+c,relayUrl:a.relayUrl,createdAt:new Date(b).toISOString()},o(f),{secret:e,serverId:f.serverId,expiresAt:f.pairing.expiresAt,relayUrl:a.relayUrl}})}function r(){return p().devices.map(({id:a,label:b,createdAt:c,lastSeenAt:d})=>({id:a,label:b,createdAt:c,lastSeenAt:d}))}function s(a){return m(()=>{let b=n(),c=b.devices.filter(b=>b.id!==a);return c.length!==b.devices.length&&(b.devices=c,o(b),!0)})}function t(a=Date.now()){let b=p(),c=b.pairing&&b.pairing.expiresAt>a?b.pairing:null;return{serverId:b.serverId,...b.relayUrl?{relayUrl:b.relayUrl}:{},pairingExpiresAt:c?.expiresAt??null,deviceCount:b.devices.length}}},78335:()=>{},78970:(a,b,c)=>{"use strict";function d(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b;for(let b=0;b<c;b+=1){var d;if(!((d=a.charCodeAt(b))>=65&&d<=90||d>=97&&d<=122||d>=48&&d<=57||43===d||47===d))return null}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return a.length/4*3-b}function e(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a){if(!b||"object"!=typeof b||"image"!==b.type)return"Each attachment must be an image";if(!function(a){if(!a||"object"!=typeof a||"string"!=typeof a.data||"string"!=typeof a.mimeType||!a.mimeType.startsWith("image/"))return!1;let b=d(a.data);return null!==b&&b<=0xa00000}(b))return"Each image must be valid base64 image data of 10MB or smaller"}return null}function f(a){if("object"!=typeof a||null===a||Array.isArray(a))return null;let b=a.source;if("object"==typeof b&&null!==b&&!Array.isArray(b)&&"base64"===b.type&&"string"==typeof b.data){let a="string"==typeof b.media_type?b.media_type:"";return a.toLowerCase().startsWith("image/")?{type:"image",data:b.data,mimeType:a}:null}return"string"==typeof a.data&&"string"==typeof a.mimeType?a.mimeType.toLowerCase().startsWith("image/")?{type:"image",data:a.data,mimeType:a.mimeType}:null:null}c.d(b,{K8:()=>j,Si:()=>d,gy:()=>i,kc:()=>e,x:()=>h,zJ:()=>g});class g extends Error{constructor(a){super("count"===a?"Tool result images exceed the limit of 10 images":"per_image"===a?"Tool result image exceeds the per-image limit of 10MB":"Tool result images exceed the total limit of 25MB"),this.code="tool_result_images_too_large",this.name="ToolResultImagesTooLargeError",this.reason=a}}function h(a){return d(a)??Math.floor(3*a.length/4)}function i(a){if(a.length>10)throw new g("count");for(let b of a)if(b>0xa00000)throw new g("per_image");let b=0;for(let c of a)b+=c;if(b>0x1900000)throw new g("total")}function j(a){let b=new Set,c=[],d=a=>{if(!a||"string"!=typeof a.data||"string"!=typeof a.mimeType)return;let d=`${a.mimeType}\0${a.data}`;b.has(d)||(b.add(d),c.push(a))};try{if(a&&"object"==typeof a&&Array.isArray(a.content))for(let b of a.content)"object"!=typeof b||null===b||Array.isArray(b)||"image"===b.type&&d(f(b));let b=a&&"object"==typeof a?a.details:void 0;if("object"==typeof b&&null!==b&&!Array.isArray(b)){let a=b.images;if(Array.isArray(a))for(let b of a)d(f(b))}}catch{}return c}},85887:(a,b,c)=>{"use strict";c.d(b,{$M:()=>l,OK:()=>r,_8:()=>u,ny:()=>o,oy:()=>j,pA:()=>q,tE:()=>n,yG:()=>p});var d=c(29021),e=c(21820),f=c(33873);let g=/^[a-z0-9][a-z0-9._-]{0,63}$/,h=/^(?:CON|PRN|AUX|NUL|COM[0-9]|LPT[0-9])(?:\..*)?$/i;function i(a){let b=a?.trim();if(b&&"default"!==b){if("."===b||".."===b||b.endsWith(".")||!g.test(b)||h.test(b))throw Error(`Invalid OMP profile "${a}". Profile names must match ${g.source}, cannot be "." or "..", cannot end with ".", and cannot be a Windows reserved device name (CON, PRN, AUX, NUL, COM0-9, LPT0-9, or any of those with an extension).`);return b}}function j(){return void 0!==process.env.OMP_PROFILE?i(process.env.OMP_PROFILE):i(process.env.PI_PROFILE)}function k(){let a=f.join((0,e.homedir)(),process.env.PI_CONFIG_DIR||".omp"),b=j();return b?f.join(a,"profiles",b):a}function l(){let a=j(),b=process.env.PI_CODING_AGENT_DIR;return b&&!a?f.resolve(b):f.join(k(),"agent")}function m(a){let b=function(){let a,b;if("linux"!==process.platform&&"darwin"!==process.platform||(a=j(),(b=process.env.PI_CODING_AGENT_DIR)&&!a&&f.resolve(b)!==f.join(k(),"agent")))return;let c=process.env.XDG_DATA_HOME;if(c)try{let a=f.join(c,"omp"),b=j();if(b){let c=f.join(a,"profiles",b);return(0,d.existsSync)(c)?c:void 0}return(0,d.existsSync)(a)?a:void 0}catch{return}}();return f.join(b??l(),a)}function n(){return m("sessions")}function o(){return f.join(f.dirname(n()),"archive","sessions")}function p(){return m("blobs")}function q(){let a=l(),b=f.join(a,"config.yml");if((0,d.existsSync)(b))return b;let c=f.join(a,"config.yaml");return(0,d.existsSync)(c)?c:b}function r(){let a=l(),b=f.join(a,"models.yml");if((0,d.existsSync)(b))return b;let c=f.join(a,"models.yaml");return(0,d.existsSync)(c)?c:b}function s(a){try{return d.realpathSync.native(a)}catch{return a}}function t(a,b){let c=b.replace(/[/\\:]/g,"-");return c?a.endsWith("-")?`${a}${c}`:`${a}-${c}`:a}function u(a){let b,c=s(f.resolve(a)),d=s((0,e.homedir)()),g=s((0,e.tmpdir)()),h=f.relative(d,c),i=f.relative(g,c);return""!==h&&(h.startsWith("..")||f.isAbsolute(h))?""!==i&&(i.startsWith("..")||f.isAbsolute(i))?(b=f.resolve(c),`--${b.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`):t("-tmp",i):t("-",h)}},96487:()=>{}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:52,errorRate:1e-4,numBits:997,numHashes:14,bitArray:[1,0,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,0,0,0,0,0,1,1,0,0,1,1,1,0,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,1,0,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,1,1,0,1,0,1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,0,1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,1,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,1]},__routerFilterDynamic:{numItems:8,errorRate:1e-4,numBits:154,numHashes:14,bitArray:[1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3944],{63944:(e,r,t)=>{t.r(r),t.d(r,{RelayPairPanel:()=>d});var a=t(95155),i=t(51128),l=t(12115),n=t(34906),s=t(4315),o=t(28594);function d({embedded:e=!1}){let{t:r}=(0,s.s9)(),[t,c]=(0,l.useState)(""),[y,h]=(0,l.useState)(),[x,u]=(0,l.useState)(null),[v,p]=(0,l.useState)([]),[g,f]=(0,l.useState)(null),[m,b]=(0,l.useState)(!1),[j,w]=(0,l.useState)(!1),S=(0,l.useMemo)(()=>x?function(e){let r=function(e){let r=e.trim();if(!r||r.length>2048)return null;try{let{data:e}=(0,o.lF)(r,{ecc:"M"});if(!Array.isArray(e)||e.length<21)return null;return e}catch{return null}}(e);if(!r)return null;let t=r.length,a=[];for(let e=0;e<t;e+=1){let i=r[e];if(!i||i.length!==t)return null;for(let r=0;r<t;r+=1)i[r]&&a.push(`M${r} ${e}h1v1h-1z`)}let i=a.join("");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${t} ${t}" width="100%" height="100%" shape-rendering="crispEdges" role="img"><rect width="${t}" height="${t}" fill="#fff"/><path fill="#000" d="${i}"/></svg>`}(x.uri):null,[x]),P=(0,l.useCallback)(async()=>{try{let[e,r]=await Promise.all([fetch("/api/relay/pair"),fetch("/api/relay/devices")]);if(e.ok){let r=await e.json(),t=null!==r&&"object"==typeof r&&"relayUrl"in r&&"string"==typeof r.relayUrl?r.relayUrl:void 0;t&&c(e=>e||t),h(t)}if(r.ok){let e=await r.json();p(e.devices??[])}}catch{}},[]);async function k(){b(!0),f(null),w(!1);try{let e=await fetch("/api/relay/pair",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.trim()?{url:t.trim()}:{})}),a=await e.json();if(!e.ok)return void f(a.error??r("relayPair.createFailed"));u(a),c(a.relayUrl),await P()}catch{f(r("relayPair.createFailed"))}finally{b(!1)}}async function z(){if(x)try{await navigator.clipboard.writeText(x.uri),w(!0)}catch{w(!1)}}async function C(e){f(null);try{if(!(await fetch(`/api/relay/devices/${encodeURIComponent(e)}`,{method:"DELETE"})).ok)return void f(r("relayPair.revokeFailed"));await P()}catch{f(r("relayPair.revokeFailed"))}}(0,l.useEffect)(()=>{P()},[P]);let $=(0,a.jsxs)(a.Fragment,{children:[e?null:(0,a.jsx)("div",{style:{width:40,height:40,display:"grid",placeItems:"center",borderRadius:"50%",background:"var(--user-bg)",color:"var(--accent)",marginBottom:20},children:(0,a.jsx)(i.A,{size:19,"aria-hidden":"true"})}),e?(0,a.jsx)("h3",{style:{margin:0,fontSize:"var(--text-base)",fontWeight:600,color:"var(--text)"},children:r("relayPair.title")}):(0,a.jsx)("h1",{className:"display-serif",style:{margin:0,fontSize:"calc(var(--text-xl) + var(--space-5) - var(--space-1))",color:"var(--text)"},children:r("relayPair.title")}),(0,a.jsx)("p",{style:{margin:e?"4px 0 16px":"10px 0 24px",color:"var(--text-muted)",fontSize:"var(--text-base)",lineHeight:1.5},children:r("relayPair.description")}),(0,a.jsx)("p",{style:{margin:"0 0 16px",color:"var(--text-dim)",fontSize:"var(--text-sm)",lineHeight:1.45},children:r("relayPair.steps")}),(0,a.jsxs)("div",{style:{display:"grid",gap:14},children:[(0,a.jsx)(n.D0,{label:r("relayPair.urlLabel"),hint:y&&!t?y:void 0,children:(0,a.jsx)(n.ks,{value:t,onChange:c,placeholder:"wss://machine.tailnet.ts.net/relay",autoComplete:"off",spellCheck:!1,mono:!0})}),(0,a.jsx)(n.$n,{type:"button",variant:"primary",busy:m,disabled:m,onClick:()=>void k(),children:m?r("relayPair.creating"):r("relayPair.create")}),g?(0,a.jsx)("p",{style:{margin:0,color:"var(--danger, #c44)",fontSize:"var(--text-sm)"},children:g}):null,x?(0,a.jsxs)("div",{style:{display:"grid",gap:8},children:[S?(0,a.jsxs)("div",{style:{display:"grid",justifyItems:"center",gap:8},children:[(0,a.jsx)("div",{role:"img","aria-label":r("relayPair.qrHint"),className:"relay-pair-qr",style:{width:212,height:212,boxSizing:"border-box",background:"#fff",color:"#000",padding:12,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",isolation:"isolate"},dangerouslySetInnerHTML:{__html:S}}),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)",textAlign:"center"},children:r("relayPair.qrHint")})]}):null,(0,a.jsx)("label",{style:{color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("relayPair.linkLabel")}),(0,a.jsx)("textarea",{readOnly:!0,value:x.uri,rows:4,style:{width:"100%",resize:"vertical",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",padding:10,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)"}}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void z(),children:j?r("relayPair.copied"):r("relayPair.copy")}),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:r("relayPair.expires",{time:new Date(x.expiresAt).toLocaleTimeString()})})]}):null,(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{style:{margin:"16px 0 8px",fontSize:"var(--text-base)",color:"var(--text)"},children:r("relayPair.devicesTitle")}),0===v.length?(0,a.jsx)("p",{style:{margin:0,color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("relayPair.noDevices")}):(0,a.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:8},children:v.map(e=>(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between",gap:12,alignItems:"center"},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{color:"var(--text)",fontSize:"var(--text-sm)"},children:e.label||e.id}),(0,a.jsx)("div",{style:{color:"var(--text-dim)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)"},children:e.id})]}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void C(e.id),children:r("relayPair.revoke")})]},e.id))})]})]})]});return e?(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:0,maxWidth:520},children:$}):(0,a.jsx)("main",{style:{flex:1,display:"grid",placeItems:"center",padding:20,background:"var(--bg)"},children:(0,a.jsx)("section",{style:{width:"min(100%, 520px)",padding:32,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)"},children:$})})}}}]);
|