MCPcopy Create free account
hub / github.com/backnotprop/plannotator / openBrowser

Function openBrowser

packages/server/browser.ts:188–245  ·  view source on GitHub ↗
(
  url: string,
  options?: { isRemote?: boolean; useGlimpse?: boolean }
)

Source from the content-addressed store, hash-verified

186}
187
188export async function openBrowser(
189 url: string,
190 options?: { isRemote?: boolean; useGlimpse?: boolean }
191): Promise<boolean> {
192 try {
193 const rawPlannotatorBrowser = process.env.PLANNOTATOR_BROWSER;
194 const rawBrowser = process.env.BROWSER;
195 const plannotatorBrowser = isNoOpBrowserSentinel(rawPlannotatorBrowser)
196 ? undefined
197 : rawPlannotatorBrowser;
198 const envBrowser = isNoOpBrowserSentinel(rawBrowser) ? undefined : rawBrowser;
199 const browser = plannotatorBrowser || envBrowser;
200 const isRemote = options?.isRemote ?? false;
201 if (shouldTryRemoteBrowserFallback(isRemote)) {
202 const openedViaIpc = await tryVscodeIpc(url);
203 if (openedViaIpc) {
204 return true;
205 }
206 }
207
208 if (options?.useGlimpse && !browser && !isRemote && resolveUseGlimpse(loadConfig())) {
209 const openedViaGlimpse = await openGlimpse(url);
210 if (openedViaGlimpse) {
211 return true;
212 }
213 }
214
215 const platform = process.platform;
216 const wsl = await isWSL();
217
218 if (browser) {
219 if (plannotatorBrowser && platform === "darwin") {
220 if (plannotatorBrowser.includes("/") && !plannotatorBrowser.endsWith(".app")) {
221 await $`${plannotatorBrowser} ${url}`.quiet();
222 } else {
223 await $`open -a ${plannotatorBrowser} ${url}`.quiet();
224 }
225 } else if ((platform === "win32" || wsl) && plannotatorBrowser) {
226 await $`cmd.exe /c start "" ${plannotatorBrowser} ${url}`.quiet();
227 } else {
228 await $`${browser} ${url}`.quiet();
229 }
230 } else {
231 // Default system browser
232 if (platform === "win32" || wsl) {
233 await $`cmd.exe /c start ${url}`.quiet();
234 } else if (platform === "darwin") {
235 await $`open ${url}`.quiet();
236 } else {
237 await $`xdg-open ${url}`.quiet();
238 }
239 }
240 return true;
241 } catch {
242 // Shell-based open failed — try VS Code IPC registry as fallback
243 return tryVscodeIpc(url);
244 }
245}

Callers 1

index.tsFile · 0.90

Calls 7

resolveUseGlimpseFunction · 0.90
loadConfigFunction · 0.90
tryVscodeIpcFunction · 0.85
isWSLFunction · 0.85
isNoOpBrowserSentinelFunction · 0.70
openGlimpseFunction · 0.70

Tested by

no test coverage detected