package browser import ( "fmt" "path/filepath" "browseros-dev/proc" ) type ArgsConfig struct { Root string Ports proc.Ports UserDataDir string Headless bool LoadDevExtensions bool } func BuildArgs(cfg ArgsConfig) []string { binary := "/Applications/BrowserOS.app/Contents/MacOS/BrowserOS" args := []string{binary} if cfg.LoadDevExtensions { args = append(args, "--no-first-run", "--no-default-browser-check") } args = append(args, "--use-mock-keychain", "--show-component-extension-options", "--disable-browseros-server", "--browseros-dock-icon=dev", ) if cfg.LoadDevExtensions { args = append(args, "--disable-browseros-extensions") } else { args = append(args, "--enable-logging=stderr") } if cfg.Headless { args = append(args, "--headless=new") } args = append(args, fmt.Sprintf("--remote-debugging-port=%d", cfg.Ports.CDP), fmt.Sprintf("--browseros-mcp-port=%d", cfg.Ports.Server), fmt.Sprintf("--browseros-extension-port=%d", cfg.Ports.Extension), fmt.Sprintf("--user-data-dir=%s", cfg.UserDataDir), ) if cfg.LoadDevExtensions { agentExtDir := filepath.Join(cfg.Root, "apps/agent/dist/chrome-mv3-dev") args = append(args, fmt.Sprintf("--load-extension=%s", agentExtDir)) args = append(args, "chrome://newtab") } return args }