@pedrofariasx/qwenproxy 1.6.2 → 1.6.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pedrofariasx/qwenproxy",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Local OpenAI-compatible proxy API that routes requests to Qwen (chat.qwen.ai) via Playwright browser automation.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -562,23 +562,21 @@ export async function getGuestHeaders(): Promise<Record<string, string>> {
562
562
  await guestPage!.focus(inputSelector);
563
563
  await guestPage!.fill(inputSelector, '');
564
564
  await guestPage!.type(inputSelector, 'a', { delay: 50 });
565
- await sleep(1500);
565
+ await sleep(1000);
566
566
 
567
- // Try pressing Enter first as it is highly reliable
568
- await guestPage!.focus(inputSelector);
569
- await guestPage!.keyboard.press('Enter');
570
-
571
567
  const selectors = ['.message-input-right-button-send .send-button', '.chat-prompt-send-button', 'button.send-button'];
568
+ let clicked = false;
572
569
  for (const selector of selectors) {
573
- try {
574
- const btn = await guestPage!.$(selector);
575
- if (btn && await btn.isVisible()) {
576
- await btn.click({ force: true, delay: 50 }).catch(() => {});
577
- }
578
- } catch (e) {
579
- // ignore click errors
570
+ const btn = await guestPage!.$(selector);
571
+ if (btn && await btn.isVisible()) {
572
+ await btn.click({ force: true, delay: 50 }).catch(() => {});
573
+ clicked = true;
574
+ break;
580
575
  }
581
576
  }
577
+ if (!clicked) {
578
+ await guestPage!.keyboard.press('Enter');
579
+ }
582
580
  } catch (e) {
583
581
  clearTimeout(timeout);
584
582
  reject(e);
@@ -827,45 +825,47 @@ async function _getQwenHeadersInternal(forceNew = false, accountId?: string): Pr
827
825
  console.log(`[Playwright] Triggering request for ${cacheKey}...`);
828
826
  const inputSelector = 'textarea:visible, [contenteditable="true"]:visible';
829
827
 
830
- try {
831
- await page.focus(inputSelector);
832
- await page.fill(inputSelector, '');
833
- await page.type(inputSelector, 'a', { delay: 50 });
834
- console.log(`[Playwright] Typed char for ${cacheKey}, waiting for UI to update...`);
835
- await sleep(1500);
828
+ await page.focus(inputSelector);
829
+ await page.fill(inputSelector, '');
830
+ await page.type(inputSelector, 'a', { delay: 100 });
831
+ console.log(`[Playwright] Typed char for ${cacheKey}, waiting for UI to update...`);
832
+ await sleep(2000);
836
833
 
837
- // Try pressing Enter first on the input field as it is highly reliable
838
- console.log(`[Playwright] Pressing Enter for ${cacheKey}...`);
839
- await page.focus(inputSelector);
840
- await page.keyboard.press('Enter');
834
+ const selectors = [
835
+ '.message-input-right-button-send .send-button',
836
+ '.chat-prompt-send-button',
837
+ 'button.send-button'
838
+ ];
841
839
 
842
- // Also attempt to click the send button in case Enter didn't submit
843
- const selectors = [
844
- '.message-input-right-button-send .send-button',
845
- '.chat-prompt-send-button',
846
- 'button.send-button'
847
- ];
840
+ let clicked = false;
841
+ for (const selector of selectors) {
842
+ try {
843
+ const btn = await page.$(selector);
844
+ if (btn && await btn.isVisible()) {
845
+ console.log(`[Playwright] Attempting click on: ${selector}`);
846
+
847
+ await page.evaluate((sel) => {
848
+ const element = document.querySelector(sel) as HTMLElement;
849
+ if (element) {
850
+ element.focus();
851
+ element.click();
852
+ }
853
+ }, selector);
848
854
 
849
- for (const selector of selectors) {
850
- try {
851
- const btn = await page.$(selector);
852
- if (btn && await btn.isVisible()) {
853
- console.log(`[Playwright] Also attempting click on: ${selector}`);
854
- await page.evaluate((sel) => {
855
- const element = document.querySelector(sel) as HTMLElement;
856
- if (element) {
857
- element.focus();
858
- element.click();
859
- }
860
- }, selector);
861
- await btn.click({ force: true, delay: 50 }).catch(() => {});
862
- }
863
- } catch (e) {
864
- // ignore click errors
855
+ await btn.click({ force: true, delay: 50 }).catch(() => {});
856
+
857
+ clicked = true;
858
+ break;
865
859
  }
860
+ } catch (e) {
861
+ console.error(`[Playwright] Error clicking ${selector} for ${cacheKey}:`, e);
866
862
  }
867
- } catch (triggerErr: any) {
868
- console.error(`[Playwright] Failed to trigger request for ${cacheKey}:`, triggerErr.message);
863
+ }
864
+
865
+ if (!clicked) {
866
+ console.log(`[Playwright] No send button found/clicked for ${cacheKey}, fallback to Enter...`);
867
+ await page.focus(inputSelector);
868
+ await page.keyboard.press('Enter');
869
869
  }
870
870
  });
871
871
  });