perplexity-user-mcp 0.8.39 → 0.8.44

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.
Files changed (133) hide show
  1. package/README.md +5 -0
  2. package/dist/attachments.d.ts +10 -20
  3. package/dist/browser-window.d.ts +1 -0
  4. package/dist/cf-warmup.d.ts +32 -0
  5. package/dist/checks/browser.d.ts +12 -100
  6. package/dist/checks/config.d.ts +25 -91
  7. package/dist/checks/ide.d.ts +31 -89
  8. package/dist/checks/mcp.d.ts +12 -61
  9. package/dist/checks/native-deps.d.ts +46 -131
  10. package/dist/checks/network.d.ts +13 -71
  11. package/dist/checks/probe.d.ts +20 -92
  12. package/dist/checks/profiles.d.ts +13 -99
  13. package/dist/checks/profiles.mjs +35 -0
  14. package/dist/checks/runtime.d.ts +24 -89
  15. package/dist/checks/vault.d.ts +13 -142
  16. package/dist/checks/vault.mjs +6 -11
  17. package/dist/{chunk-T6ARJK2P.mjs → chunk-2B5OQUXR.mjs} +6 -6
  18. package/dist/{chunk-2FPGJKCA.mjs → chunk-2EE7MNP2.mjs} +2 -2
  19. package/dist/{chunk-NJX4RBO6.mjs → chunk-2OVLCZHU.mjs} +28 -3
  20. package/dist/{chunk-WDIW33DA.mjs → chunk-3LUO5ATM.mjs} +1 -1
  21. package/dist/{chunk-B65IJQZJ.mjs → chunk-6E6XTHTG.mjs} +1 -1
  22. package/dist/{chunk-S677V2JU.mjs → chunk-C5I7KXHK.mjs} +32 -2
  23. package/dist/{chunk-TDXETAQT.mjs → chunk-DKEJZ4FI.mjs} +1 -1
  24. package/dist/{chunk-U7QPUNRH.mjs → chunk-DXR6EEZH.mjs} +26 -7
  25. package/dist/{chunk-HJIXH6CL.mjs → chunk-E3GRJXXJ.mjs} +2 -0
  26. package/dist/{chunk-RK4EBZJ3.mjs → chunk-E75J42W5.mjs} +11 -8
  27. package/dist/{chunk-452DK6OS.mjs → chunk-FNHYUE22.mjs} +2 -2
  28. package/dist/{chunk-D254EFYB.mjs → chunk-GBI2U336.mjs} +1 -1
  29. package/dist/chunk-GPUGKWXH.mjs +17 -0
  30. package/dist/{chunk-HNSPNCFH.mjs → chunk-KSNV3ZVY.mjs} +1 -1
  31. package/dist/{chunk-XTRJSV72.mjs → chunk-LGH5BSUY.mjs} +1 -1
  32. package/dist/{chunk-KJFX2ZXR.mjs → chunk-NMKNEEZB.mjs} +1 -1
  33. package/dist/{chunk-FKQ3HP4Q.mjs → chunk-TIWHN4IW.mjs} +1 -1
  34. package/dist/{chunk-V4U3JM4R.mjs → chunk-TSLRTZYR.mjs} +1 -1
  35. package/dist/{chunk-DQQISMYN.mjs → chunk-V4LHDNWJ.mjs} +2 -2
  36. package/dist/{chunk-C3HPFFTD.mjs → chunk-WHVJ724K.mjs} +84 -44
  37. package/dist/cli.d.ts +14 -1298
  38. package/dist/cli.mjs +35 -27
  39. package/dist/client.d.ts +27 -24
  40. package/dist/client.mjs +6 -6
  41. package/dist/cloud-sync.d.ts +65 -42
  42. package/dist/cloud-sync.mjs +8 -8
  43. package/dist/config.d.ts +35 -39
  44. package/dist/config.mjs +3 -3
  45. package/dist/cookie-jar.d.ts +77 -0
  46. package/dist/daemon/attach.d.ts +10 -11
  47. package/dist/daemon/attach.mjs +19 -17
  48. package/dist/daemon/audit.d.ts +5 -7
  49. package/dist/daemon/audit.mjs +2 -2
  50. package/dist/daemon/client-http.d.ts +10 -16
  51. package/dist/daemon/client-http.mjs +17 -17
  52. package/dist/daemon/index.d.ts +17 -14
  53. package/dist/daemon/index.mjs +18 -18
  54. package/dist/daemon/install-tunnel.d.ts +8 -34
  55. package/dist/daemon/install-tunnel.mjs +2 -2
  56. package/dist/daemon/launcher.d.ts +24 -29
  57. package/dist/daemon/launcher.mjs +16 -16
  58. package/dist/daemon/local-tokens.d.ts +23 -0
  59. package/dist/daemon/lockfile.d.ts +10 -12
  60. package/dist/daemon/lockfile.mjs +2 -2
  61. package/dist/daemon/oauth-consent-cache.d.ts +86 -0
  62. package/dist/daemon/oauth-provider.d.ts +132 -0
  63. package/dist/daemon/public-pages.d.ts +9 -0
  64. package/dist/daemon/security.d.ts +52 -0
  65. package/dist/daemon/server.d.ts +12 -83
  66. package/dist/daemon/server.mjs +11 -11
  67. package/dist/daemon/token.d.ts +7 -9
  68. package/dist/daemon/token.mjs +2 -2
  69. package/dist/daemon/tunnel-providers/cloudflared-named-setup.d.ts +140 -0
  70. package/dist/daemon/tunnel-providers/cloudflared-named.d.ts +45 -0
  71. package/dist/daemon/tunnel-providers/cloudflared-quick.d.ts +8 -0
  72. package/dist/daemon/tunnel-providers/index.d.ts +16 -327
  73. package/dist/daemon/tunnel-providers/index.mjs +3 -3
  74. package/dist/daemon/tunnel-providers/ngrok-config.d.ts +18 -0
  75. package/dist/daemon/tunnel-providers/ngrok.d.ts +68 -0
  76. package/dist/daemon/tunnel-providers/types.d.ts +56 -0
  77. package/dist/daemon/tunnel.d.ts +5 -7
  78. package/dist/debug-tracer.d.ts +2 -0
  79. package/dist/doctor-report.d.ts +17 -22
  80. package/dist/doctor.d.ts +12 -44
  81. package/dist/doctor.mjs +2 -2
  82. package/dist/export.d.ts +11 -18
  83. package/dist/export.mjs +4 -4
  84. package/dist/format.d.ts +52 -0
  85. package/dist/fs-utils.d.ts +8 -0
  86. package/dist/health-check.d.ts +1 -108
  87. package/dist/health-check.mjs +3 -3
  88. package/dist/history-store.d.ts +29 -65
  89. package/dist/history-store.mjs +2 -2
  90. package/dist/impit-login-runner.d.ts +1 -469
  91. package/dist/impit-login-runner.mjs +4 -4
  92. package/dist/index.d.ts +25 -149
  93. package/dist/index.mjs +22 -20
  94. package/dist/is-main-module.d.ts +9 -0
  95. package/dist/login-runner.d.ts +1 -333
  96. package/dist/login-runner.mjs +13 -13
  97. package/dist/login.d.ts +5 -0
  98. package/dist/logout.d.ts +2 -28
  99. package/dist/logout.mjs +3 -2
  100. package/dist/manual-login-runner.d.ts +1 -150
  101. package/dist/manual-login-runner.mjs +11 -11
  102. package/dist/{native-deps-IE4B55EL.mjs → native-deps-FCSYDL4W.mjs} +4 -4
  103. package/dist/native-deps.d.ts +36 -0
  104. package/dist/package-version.d.ts +1 -0
  105. package/dist/profiles.d.ts +41 -41
  106. package/dist/profiles.mjs +1 -1
  107. package/dist/prompts.d.ts +2 -0
  108. package/dist/redact.d.ts +14 -142
  109. package/dist/refresh.d.ts +11 -16
  110. package/dist/refresh.mjs +4 -4
  111. package/dist/reinit-watcher.d.ts +15 -24
  112. package/dist/reinit-watcher.mjs +2 -2
  113. package/dist/resources.d.ts +5 -0
  114. package/dist/safe-write.d.ts +16 -0
  115. package/dist/session-metadata.d.ts +45 -0
  116. package/dist/tool-config.d.ts +10 -0
  117. package/dist/tools.d.ts +23 -0
  118. package/dist/tty-prompt.d.ts +18 -34
  119. package/dist/vault.d.ts +114 -34
  120. package/dist/vault.mjs +6 -4
  121. package/dist/viewer-detect.d.ts +2 -4
  122. package/dist/viewers.d.ts +13 -18
  123. package/dist/viewers.mjs +1 -1
  124. package/package.json +3 -3
  125. package/dist/cloud-sync.d-Cqt6y18U.d.ts +0 -42
  126. package/dist/doctor.d-CXmUqOXX.d.ts +0 -43
  127. package/dist/history-store.d-BzjBF2m3.d.ts +0 -65
  128. package/dist/native-deps-BNThFHxa.d.ts +0 -175
  129. package/dist/profiles.d-DqS1oZWr.d.ts +0 -41
  130. package/dist/session-metadata-B9aV_n5g.d.ts +0 -148
  131. package/dist/vault.d-BSJWDLhp.d.ts +0 -37
  132. package/dist/viewer-detect.d-HWGnyFAA.d.ts +0 -4
  133. package/dist/viewers.d-BGCK6sw6.d.ts +0 -10
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  impitFetchJson,
3
3
  isImpitAvailable
4
- } from "./chunk-DQQISMYN.mjs";
4
+ } from "./chunk-V4LHDNWJ.mjs";
5
5
  import {
6
6
  FORMAT_TO_CONTENT_TYPE,
7
7
  exportThread,
8
8
  resolveExportApiFormat
9
- } from "./chunk-D254EFYB.mjs";
9
+ } from "./chunk-GBI2U336.mjs";
10
10
  import {
11
11
  ASI_ACCESS_ENDPOINT,
12
12
  AUTH_SESSION_ENDPOINT,
@@ -18,15 +18,14 @@ import {
18
18
  SUPPORTED_BLOCK_USE_CASES,
19
19
  THREAD_ENDPOINT,
20
20
  findBrowser,
21
- getOrCreateContext,
22
21
  getSavedCookies,
23
22
  resolveBrowserExecutable
24
- } from "./chunk-U7QPUNRH.mjs";
23
+ } from "./chunk-DXR6EEZH.mjs";
25
24
  import {
26
25
  getActiveName,
27
26
  getConfigDir,
28
27
  getProfilePaths
29
- } from "./chunk-HJIXH6CL.mjs";
28
+ } from "./chunk-E3GRJXXJ.mjs";
30
29
 
31
30
  // src/client.ts
32
31
  import { randomUUID } from "crypto";
@@ -558,47 +557,55 @@ var PerplexityClient = class _PerplexityClient {
558
557
  * Set env PERPLEXITY_HEADLESS_ONLY=1 to skip the headed phase (uses disk cache).
559
558
  */
560
559
  async init() {
561
- const activePaths = getActivePaths();
562
- if (!existsSync(activePaths.browserData)) {
563
- mkdirSync(activePaths.browserData, { recursive: true });
564
- }
565
- const browser = await resolveBrowserExecutable();
566
- console.error(`[perplexity-mcp] Using ${browser.source}: ${browser.path}`);
567
- const skipHeaded = process.env.PERPLEXITY_HEADLESS_ONLY === "1";
568
- if (!skipHeaded) {
569
- await this.headedBootstrap();
570
- } else {
571
- console.error("[perplexity-mcp] Skipping headed session (PERPLEXITY_HEADLESS_ONLY=1).");
572
- this.loadCachedAccountInfo();
573
- }
574
- console.error("[perplexity-mcp] Launching headless browser...");
575
- const launchOpts = buildLaunchOptions(true);
576
- this.browser = await chromium.launch({
577
- headless: launchOpts.headless,
578
- args: launchOpts.args,
579
- ...launchOpts.executablePath ? { executablePath: launchOpts.executablePath } : {},
580
- ...launchOpts.channel ? { channel: launchOpts.channel } : {},
581
- ignoreDefaultArgs: launchOpts.ignoreDefaultArgs
582
- });
583
- this.context = await getOrCreateContext(this.browser, {
584
- viewport: launchOpts.viewport,
585
- userAgent: launchOpts.userAgent
586
- });
587
- const saved = await getSavedCookies();
588
- if (saved.length > 0) {
589
- await this.context.addCookies(saved);
590
- console.error(`[perplexity-mcp] Injected ${saved.length} saved cookies into browser context.`);
591
- }
592
- this.page = await this.context.newPage();
560
+ const _initAt = Date.now();
593
561
  try {
594
- await this.page.goto(PERPLEXITY_URL, { waitUntil: "domcontentloaded", timeout: 3e4 });
595
- await this.page.waitForTimeout(2e3);
562
+ const activePaths = getActivePaths();
563
+ if (!existsSync(activePaths.browserData)) {
564
+ mkdirSync(activePaths.browserData, { recursive: true });
565
+ }
566
+ const browser = await resolveBrowserExecutable();
567
+ console.error(`[perplexity-mcp] Using ${browser.source}: ${browser.path}`);
568
+ const skipHeaded = process.env.PERPLEXITY_HEADLESS_ONLY === "1";
569
+ if (!skipHeaded) {
570
+ await this.headedBootstrap();
571
+ } else {
572
+ console.error("[perplexity-mcp] Skipping headed session (PERPLEXITY_HEADLESS_ONLY=1).");
573
+ this.loadCachedAccountInfo();
574
+ }
575
+ console.error("[perplexity-mcp] Launching headless persistent browser...");
576
+ const launchOpts = buildLaunchOptions(true);
577
+ this.context = await chromium.launchPersistentContext(
578
+ activePaths.browserData,
579
+ launchOpts
580
+ );
581
+ this.browser = this.context.browser();
582
+ const saved = await getSavedCookies();
583
+ if (saved.length > 0) {
584
+ const current = await this.context.cookies();
585
+ const currentNames = new Set(current.map((c) => c.name));
586
+ const toInject = saved.filter((c) => !currentNames.has(c.name));
587
+ if (toInject.length > 0) {
588
+ await this.context.addCookies(toInject);
589
+ console.error(`[perplexity-mcp] Injected ${toInject.length} missing cookies from vault.`);
590
+ } else {
591
+ console.error("[perplexity-mcp] All vault cookies already present on disk; skipping injection.");
592
+ }
593
+ }
594
+ this.page = await this.context.newPage();
595
+ try {
596
+ await this.page.goto(PERPLEXITY_URL, { waitUntil: "domcontentloaded", timeout: 3e4 });
597
+ await this.page.waitForTimeout(2e3);
598
+ } catch (err) {
599
+ console.error("[perplexity-mcp] Navigation warning:", err.message);
600
+ }
601
+ await this.checkAuth();
602
+ if (!this.accountInfo.modelsConfig) {
603
+ await this.loadAccountInfo();
604
+ }
605
+ this.writeDaemonStatus(_initAt, null);
596
606
  } catch (err) {
597
- console.error("[perplexity-mcp] Navigation warning:", err.message);
598
- }
599
- await this.checkAuth();
600
- if (!this.accountInfo.modelsConfig) {
601
- await this.loadAccountInfo();
607
+ this.writeDaemonStatus(_initAt, err instanceof Error ? err.message : String(err));
608
+ throw err;
602
609
  }
603
610
  }
604
611
  /**
@@ -1935,6 +1942,39 @@ View at: ${PERPLEXITY_URL}/search/${threadSlug}`,
1935
1942
  });
1936
1943
  this.browser = null;
1937
1944
  }
1945
+ this.authenticated = false;
1946
+ this.userId = null;
1947
+ this.writeDaemonStatus(Date.now(), null);
1948
+ }
1949
+ // ── Daemon status file ─────────────────────────────────────────────────────
1950
+ daemonTier() {
1951
+ if (!this.authenticated) return "Anonymous";
1952
+ if (this.accountInfo.isMax) return "Max";
1953
+ if (this.accountInfo.isPro) return "Pro";
1954
+ if (this.accountInfo.isEnterprise) return "Enterprise";
1955
+ return "Authenticated";
1956
+ }
1957
+ /**
1958
+ * Write daemon-status.json so the extension UI can show live auth state
1959
+ * instead of relying on the stale models-cache.json snapshot.
1960
+ * @param startedAt - Date.now() captured at the start of init/reinit
1961
+ * @param error - error message if init threw, null on success or shutdown
1962
+ */
1963
+ writeDaemonStatus(startedAt, error) {
1964
+ try {
1965
+ const paths = getActivePaths();
1966
+ const status = {
1967
+ authenticated: this.authenticated,
1968
+ tier: this.daemonTier(),
1969
+ userId: this.userId,
1970
+ pid: process.pid,
1971
+ lastInit: (/* @__PURE__ */ new Date()).toISOString(),
1972
+ initDurationMs: Date.now() - startedAt,
1973
+ error
1974
+ };
1975
+ writeFileSync(paths.daemonStatus, JSON.stringify(status, null, 2) + "\n");
1976
+ } catch {
1977
+ }
1938
1978
  }
1939
1979
  };
1940
1980