@37chengshan/ompweb 4.0.0 → 4.0.1
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 +10 -7
- package/.next/build-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +4 -4
- package/.next/required-server-files.js +2 -2
- package/.next/required-server-files.json +2 -2
- package/.next/routes-manifest.json +18 -0
- package/.next/server/app/_global-error/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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/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/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 +2 -2
- package/.next/server/app/api/git/diff/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/github/status/route.js +1 -0
- package/.next/server/app/api/github/status/route.js.nft.json +1 -0
- package/.next/server/app/api/github/status/route_client-reference-manifest.js +1 -0
- 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/fetch/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/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/reveal/route.js +1 -1
- package/.next/server/app/api/scripts/route.js +1 -0
- package/.next/server/app/api/scripts/route.js.nft.json +1 -0
- package/.next/server/app/api/scripts/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/scripts/run/route.js +1 -0
- package/.next/server/app/api/scripts/run/route.js.nft.json +1 -0
- package/.next/server/app/api/scripts/run/route_client-reference-manifest.js +1 -0
- 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]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/plan/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/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 +2 -2
- 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/terminal/input/route.js +1 -1
- package/.next/server/app/api/terminal/open/route.js +1 -1
- package/.next/server/app/api/terminal/resize/route.js +1 -1
- package/.next/server/app/api/terminal/session/route.js +1 -1
- package/.next/server/app/api/terminal/stream/route.js +2 -2
- package/.next/server/app/api/web-auth/session/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +10 -7
- package/.next/server/chunks/5309.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/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/KmgSpHtt3ScXfRBhfF13-/_buildManifest.js +1 -0
- package/.next/static/chunks/2584-f6cc0dc1511c8e00.js +1 -0
- package/.next/static/chunks/303.9661abdb4e0093ec.js +126 -0
- package/.next/static/chunks/3550.d3f97c806e3623e2.js +1 -0
- package/.next/static/chunks/app/_global-error/page-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/agents/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/github/status/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/home/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/models/fetch/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/models/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/omp-settings/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/omp-update/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/omp-version/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/projects/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/providers/enable/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/reveal/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/scripts/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/scripts/run/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/plan/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/archive/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/skills/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/terminal/input/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/terminal/open/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/terminal/resize/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/terminal/session/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/terminal/stream/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/web-auth/session/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/app/{page-e43d8cfb87af3f75.js → page-122708b0165e41be.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b0b6e7e566c944c1.js +1 -0
- package/.next/static/chunks/webpack-63dfdf9f94b72b35.js +1 -0
- package/.next/static/css/7bbf54d710e156ee.css +1 -0
- package/bin/omp-web-desktop.js +159 -0
- package/package.json +5 -3
- package/templates/desktop/OmpWeb.app/Contents/Info.plist +26 -0
- package/templates/desktop/OmpWeb.app/Contents/MacOS/ompweb-launcher +7 -0
- package/templates/desktop/OmpWeb.app/Contents/Resources/OmpWeb.icns +0 -0
- package/templates/desktop/mac-start.command +16 -0
- package/templates/desktop/win-start.vbs +9 -0
- package/.next/static/G2FKm6vfWCTLf8u88ZEKD/_buildManifest.js +0 -1
- package/.next/static/chunks/2584-546fd9660d43b568.js +0 -1
- package/.next/static/chunks/5297.8542d7c14b651a1f.js +0 -127
- package/.next/static/chunks/8673.8f38e67890334c5a.js +0 -1
- package/.next/static/chunks/app/_global-error/page-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/agents/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/home/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/models/fetch/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/models/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/omp-settings/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/omp-update/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/omp-version/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/projects/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/providers/enable/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/reveal/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/plan/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/archive/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/skills/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/terminal/input/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/terminal/open/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/terminal/resize/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/terminal/session/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/terminal/stream/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/web-auth/session/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-7af7352bce3ca8fa.js +0 -1
- package/.next/static/chunks/webpack-4b3b3713e4dbf1e8.js +0 -1
- package/.next/static/css/dda9acc8fa0835d6.css +0 -1
- /package/.next/static/{G2FKm6vfWCTLf8u88ZEKD → KmgSpHtt3ScXfRBhfF13-}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Desktop launcher for omp-web: starts the Next server with a hidden console
|
|
6
|
+
* (Windows: windowsHide on the child; macOS: no Terminal banner, designed to
|
|
7
|
+
* be launched from a double-clickable .command that hides its terminal) and
|
|
8
|
+
* opens the browser. The plain `ompweb` CLI remains the primary entry point;
|
|
9
|
+
* this is an additive convenience for app-style launches.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
|
+
const { getUnsupportedNodeVersionMessage, isNodeVersionSupported } = require("./node-version");
|
|
14
|
+
|
|
15
|
+
if (!isNodeVersionSupported(process.versions.node)) {
|
|
16
|
+
console.error(getUnsupportedNodeVersionMessage(process.versions.node));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
21
|
+
const { spawn, execFileSync } = require("child_process");
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
23
|
+
const path = require("path");
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
|
+
const fs = require("fs");
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
27
|
+
const { parseLaunchOptions } = require("./omp-web-options");
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const { isPortAvailable } = require("./port-availability");
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
31
|
+
const { wireChildProcessLifecycle } = require("./process-lifecycle");
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
33
|
+
const { getBrowserUrl, isLoopbackHost } = require("./network-addresses");
|
|
34
|
+
|
|
35
|
+
const pkgDir = path.join(__dirname, "..");
|
|
36
|
+
const nextDir = path.join(pkgDir, ".next");
|
|
37
|
+
|
|
38
|
+
let nextBin;
|
|
39
|
+
try {
|
|
40
|
+
nextBin = require.resolve("next/dist/bin/next", { paths: [pkgDir] });
|
|
41
|
+
} catch {
|
|
42
|
+
console.error("Could not resolve next. Is ompweb installed correctly?");
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const launchOptions = parseLaunchOptions();
|
|
47
|
+
if (launchOptions.help || launchOptions.version) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// `ompweb-desktop --install`: copy the packaged OmpWeb.app template to
|
|
52
|
+
// ~/Applications (macOS) so the app has a real double-clickable entry.
|
|
53
|
+
if (process.argv.includes("--install")) {
|
|
54
|
+
installDesktopApp();
|
|
55
|
+
process.exit(0);
|
|
56
|
+
}
|
|
57
|
+
const port = launchOptions.port;
|
|
58
|
+
const hostname = launchOptions.hostname;
|
|
59
|
+
const password = launchOptions.password;
|
|
60
|
+
if (password) process.env.OMP_WEB_PASSWORD = password;
|
|
61
|
+
const passwordEnabled = typeof password === "string" && password.length > 0;
|
|
62
|
+
|
|
63
|
+
if (!fs.existsSync(nextDir)) {
|
|
64
|
+
console.error("Build artifacts not found. Run `npm run build` once, or use `ompweb` for the dev flow.");
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!isLoopbackHost(hostname) && !passwordEnabled) {
|
|
69
|
+
console.error(`Refusing to listen on ${hostname} without OMP_WEB_PASSWORD (or --password).`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const browserUrl = getBrowserUrl(hostname, port);
|
|
74
|
+
|
|
75
|
+
async function main() {
|
|
76
|
+
if (!await isPortAvailable(port, hostname)) {
|
|
77
|
+
// Already running: just surface it (a second desktop launch is a no-op).
|
|
78
|
+
console.error(`Port ${port} already in use — opening ${browserUrl}.`);
|
|
79
|
+
openBrowser();
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const nextArgs = ["start", "-p", port, "-H", hostname];
|
|
84
|
+
// windowsHide keeps the console window off the screen on Windows; detached +
|
|
85
|
+
// stdio ignore turns the launcher into a fire-and-forget app start on macOS.
|
|
86
|
+
const child = spawn(process.execPath, [nextBin, ...nextArgs], {
|
|
87
|
+
cwd: pkgDir,
|
|
88
|
+
detached: process.platform !== "win32",
|
|
89
|
+
windowsHide: true,
|
|
90
|
+
stdio: process.platform === "win32" ? "ignore" : ["ignore", "pipe", "pipe"],
|
|
91
|
+
env: {
|
|
92
|
+
...process.env,
|
|
93
|
+
OMP_WEB_PACKAGE_DIR: pkgDir,
|
|
94
|
+
OMP_WEB_LAUNCHER_PID: String(process.pid),
|
|
95
|
+
OMP_WEB_PORT: port,
|
|
96
|
+
OMP_WEB_HOSTNAME: hostname,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
wireChildProcessLifecycle(child);
|
|
100
|
+
|
|
101
|
+
if (process.platform !== "win32") {
|
|
102
|
+
// Keep the child's output out of the way; only relay fatal startup errors.
|
|
103
|
+
child.stdout?.on("data", (chunk) => {
|
|
104
|
+
if (chunk.toString().includes("Error")) process.stdout.write(chunk);
|
|
105
|
+
});
|
|
106
|
+
child.stderr?.on("data", (chunk) => process.stderr.write(chunk));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
let opened = false;
|
|
110
|
+
child.stdout?.on("data", (chunk) => {
|
|
111
|
+
if (!opened && chunk.toString().includes("Ready")) {
|
|
112
|
+
opened = true;
|
|
113
|
+
openBrowser();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// Fallback: open the browser shortly after spawn even if the ready banner
|
|
118
|
+
// is not detected (custom ports, log buffering).
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
if (!opened) {
|
|
121
|
+
opened = true;
|
|
122
|
+
openBrowser();
|
|
123
|
+
}
|
|
124
|
+
}, 4000);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function openBrowser() {
|
|
128
|
+
const isWindows = process.platform === "win32";
|
|
129
|
+
const isMac = process.platform === "darwin";
|
|
130
|
+
const openCmd = isWindows ? "explorer.exe" : isMac ? "open" : "xdg-open";
|
|
131
|
+
const opener = spawn(openCmd, [browserUrl], { stdio: "ignore", detached: true });
|
|
132
|
+
opener.on("error", () => { /* best effort */ });
|
|
133
|
+
opener.unref();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Copy the bundled OmpWeb.app to ~/Applications (macOS only). */
|
|
137
|
+
function installDesktopApp() {
|
|
138
|
+
if (process.platform !== "darwin") {
|
|
139
|
+
console.error("--install creates a macOS .app; on Windows use the win-start.vbs template instead.");
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
const template = path.join(pkgDir, "templates", "desktop", "OmpWeb.app");
|
|
143
|
+
if (!fs.existsSync(path.join(template, "Contents", "MacOS", "ompweb-launcher"))) {
|
|
144
|
+
console.error("OmpWeb.app template not found in this package.");
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
const target = path.join(process.env.HOME || "", "Applications", "OmpWeb.app");
|
|
148
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
149
|
+
fs.cpSync(template, target, { recursive: true });
|
|
150
|
+
// Ad-hoc sign so macOS Gatekeeper does not quarantine the launcher.
|
|
151
|
+
try { execFileSync("codesign", ["--force", "--sign", "-", target], { stdio: "ignore" }); } catch { /* best effort */ }
|
|
152
|
+
console.log(`Installed OmpWeb.app → ${target}`);
|
|
153
|
+
console.log("Double-click it to start omp-web (or run: open " + target + ")");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
main().catch((error) => {
|
|
157
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
158
|
+
process.exitCode = 1;
|
|
159
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@37chengshan/ompweb",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Web UI for the oh-my-pi (omp) coding agent",
|
|
5
5
|
"homepage": "https://github.com/kahme247/ompweb#readme",
|
|
6
6
|
"repository": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"node": ">=22.19.0"
|
|
16
16
|
},
|
|
17
17
|
"bin": {
|
|
18
|
-
"ompweb": "bin/omp-web.js"
|
|
18
|
+
"ompweb": "bin/omp-web.js",
|
|
19
|
+
"ompweb-desktop": "bin/omp-web-desktop.js"
|
|
19
20
|
},
|
|
20
21
|
"files": [
|
|
21
22
|
"bin",
|
|
@@ -29,7 +30,8 @@
|
|
|
29
30
|
"!.next/**/*.map",
|
|
30
31
|
"public",
|
|
31
32
|
"next.config.ts",
|
|
32
|
-
"package.json"
|
|
33
|
+
"package.json",
|
|
34
|
+
"templates"
|
|
33
35
|
],
|
|
34
36
|
"scripts": {
|
|
35
37
|
"dev": "next dev -H 127.0.0.1 -p 30178",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDisplayName</key>
|
|
6
|
+
<string>OmpWeb</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>ompweb-launcher</string>
|
|
9
|
+
<key>CFBundleIconFile</key>
|
|
10
|
+
<string>OmpWeb</string>
|
|
11
|
+
<key>CFBundleIdentifier</key>
|
|
12
|
+
<string>io.github.37chengshan.ompweb</string>
|
|
13
|
+
<key>CFBundleName</key>
|
|
14
|
+
<string>OmpWeb</string>
|
|
15
|
+
<key>CFBundlePackageType</key>
|
|
16
|
+
<string>APPL</string>
|
|
17
|
+
<key>CFBundleShortVersionString</key>
|
|
18
|
+
<string>4.0.0</string>
|
|
19
|
+
<key>CFBundleVersion</key>
|
|
20
|
+
<string>4.0.0</string>
|
|
21
|
+
<key>LSMinimumSystemVersion</key>
|
|
22
|
+
<string>12.0</string>
|
|
23
|
+
<key>NSHighResolutionCapable</key>
|
|
24
|
+
<true/>
|
|
25
|
+
</dict>
|
|
26
|
+
</plist>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# OmpWeb desktop launcher — starts the omp-web server (hidden) and opens the browser.
|
|
3
|
+
set -e
|
|
4
|
+
# Hide this terminal-less launch context's window (when launched via Terminal).
|
|
5
|
+
osascript -e 'tell application "Terminal" to set visible of front window to false' >/dev/null 2>&1 || true
|
|
6
|
+
nohup ompweb-desktop --port 30177 >/dev/null 2>&1 &
|
|
7
|
+
disown 2>/dev/null || true
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# macOS desktop launcher for omp-web: double-click to start without a
|
|
3
|
+
# terminal window. Requires the ompweb package installed globally
|
|
4
|
+
# (npm install -g @37chengshan/ompweb). The plain `ompweb` CLI is unchanged.
|
|
5
|
+
set -e
|
|
6
|
+
cd "$(dirname "$0")/../.."
|
|
7
|
+
|
|
8
|
+
# Hide this Terminal window immediately (no black box).
|
|
9
|
+
osascript -e 'tell application "Terminal" to set visible of front window to false' >/dev/null 2>&1 || true
|
|
10
|
+
|
|
11
|
+
# Start the desktop launcher detached; it opens the browser itself.
|
|
12
|
+
nohup ompweb-desktop --port 30177 >/dev/null 2>&1 &
|
|
13
|
+
disown 2>/dev/null || true
|
|
14
|
+
|
|
15
|
+
# Show a notification so the user knows the app started.
|
|
16
|
+
osascript -e 'display notification "omp-web started — opening your browser" with title "omp-web"' >/dev/null 2>&1 || true
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
' Windows desktop launcher for omp-web: double-click to start without a
|
|
2
|
+
' console window (WScript runs this with no visible window).
|
|
3
|
+
' Requires the ompweb package installed globally (npm install -g @37chengshan/ompweb).
|
|
4
|
+
' The plain `ompweb` CLI is unchanged.
|
|
5
|
+
Option Explicit
|
|
6
|
+
Dim shell
|
|
7
|
+
Set shell = CreateObject("WScript.Shell")
|
|
8
|
+
' 0 = hidden window; the desktop launcher opens the browser itself.
|
|
9
|
+
shell.Run "ompweb-desktop --port 30177", 0, False
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:48,errorRate:1e-4,numBits:921,numHashes:14,bitArray:[0,1,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,1,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,0,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,1,0,1,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,1,0,1,0,0,1,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,0,0,1,0,0,1,1,0,0,1,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,1,1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,1,0,1,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,0,1,1,1,0,1,0,0,0,1,1,0,0,1,1]},__routerFilterDynamic:{numItems:6,errorRate:1e-4,numBits:116,numHashes:14,bitArray:[1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,0,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|