@x402scan/mcp 0.2.1-beta.0 → 0.2.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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getBaseUrl,
3
3
  safeFetchJson
4
- } from "./chunk-EU6ZUX43.js";
4
+ } from "./chunk-KFKTJHP4.js";
5
5
 
6
6
  // src/server/lib/version.ts
7
7
  import { readFileSync } from "fs";
@@ -9,7 +9,7 @@ import { dirname, join } from "path";
9
9
  import { fileURLToPath } from "url";
10
10
  function getVersion() {
11
11
  if (true) {
12
- return "0.2.1-beta.0";
12
+ return "0.2.1";
13
13
  }
14
14
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
15
15
  const pkg = JSON.parse(
@@ -49,4 +49,4 @@ export {
49
49
  MCP_VERSION,
50
50
  DIST_TAG
51
51
  };
52
- //# sourceMappingURL=chunk-ND5UYYF3.js.map
52
+ //# sourceMappingURL=chunk-3XUDQYUW.js.map
@@ -564,44 +564,16 @@ var log = {
564
564
  path: LOG_FILE
565
565
  };
566
566
 
567
- // src/shared/wallet.ts
568
- import { existsSync as existsSync2 } from "fs";
569
- import { getAddress } from "viem";
570
- import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
571
- import z2 from "zod";
567
+ // src/shared/redeem-invite.ts
568
+ import z3 from "zod";
572
569
 
573
- // src/shared/neverthrow/json/index.ts
574
- var type = "json";
575
- var jsonErr = (surface, error) => {
576
- return err2(type, surface, error);
577
- };
578
- var safeStringifyJson = (surface, value) => {
579
- return resultFromThrowable(
580
- type,
581
- surface,
582
- () => JSON.stringify(value, null, 2),
583
- () => ({
584
- cause: "stringify",
585
- message: "Could not stringify JSON"
586
- })
587
- );
588
- };
589
- var safeParseJson = (surface, value) => {
590
- return resultFromThrowable(
591
- type,
592
- surface,
593
- () => JSON.parse(value),
594
- (e) => ({
595
- cause: "parse",
596
- message: e instanceof Error ? e.message : "Could not parse JSON"
597
- })
598
- );
599
- };
570
+ // src/shared/neverthrow/fetch/index.ts
571
+ import contentType from "content-type";
600
572
 
601
573
  // src/shared/neverthrow/parse/index.ts
602
574
  import z from "zod";
603
- var type2 = "json";
604
- var parseErr = (surface, error) => err2(type2, surface, error);
575
+ var type = "json";
576
+ var parseErr = (surface, error) => err2(type, surface, error);
605
577
  var safeParse = (surface, schema, value) => {
606
578
  const parseResult = schema.safeParse(value);
607
579
  if (!parseResult.success) {
@@ -614,75 +586,17 @@ var safeParse = (surface, schema, value) => {
614
586
  return ok2(parseResult.data);
615
587
  };
616
588
 
617
- // src/shared/wallet.ts
618
- var WALLET_FILE = configFile("wallet.json");
619
- var storedWalletSchema = z2.object({
620
- privateKey: z2.string().regex(/^0x[a-fA-F0-9]{64}$/, "Invalid Ethereum private key").transform((privateKey) => privateKey),
621
- address: z2.string().regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address").transform((address) => getAddress(address)),
622
- createdAt: z2.string()
623
- });
624
- var walletSurface = "wallet";
625
- async function getWallet() {
626
- if (process.env.X402_PRIVATE_KEY) {
627
- const account2 = privateKeyToAccount(process.env.X402_PRIVATE_KEY);
628
- log.info(`Using wallet from env: ${account2.address}`);
629
- return ok2({ account: account2, isNew: false });
630
- }
631
- const readFileResult = await safeReadFile(walletSurface, WALLET_FILE);
632
- if (!readFileResult.isOk()) {
633
- const fileExistsResult = existsSync2(WALLET_FILE);
634
- if (fileExistsResult) {
635
- return fsErr(walletSurface, {
636
- cause: "file_not_readable",
637
- message: `The file exists but is not readable. Fix corrupted state file: ${WALLET_FILE}`
638
- });
639
- }
640
- }
641
- if (readFileResult.isOk()) {
642
- const data = readFileResult.value;
643
- const jsonParseResult = safeParseJson(walletSurface, data);
644
- if (jsonParseResult.isErr()) {
645
- return jsonErr(walletSurface, {
646
- cause: "parse",
647
- message: `The data in ${WALLET_FILE} is not valid JSON`
648
- });
649
- }
650
- const parseResult = safeParse(
651
- walletSurface,
652
- storedWalletSchema,
653
- jsonParseResult.value
654
- );
655
- if (parseResult.isErr()) {
656
- return parseResult;
657
- }
658
- const account2 = privateKeyToAccount(parseResult.value.privateKey);
659
- log.info(`Loaded wallet: ${account2.address}`);
660
- return ok2({ account: account2, isNew: false });
661
- }
662
- const privateKey = generatePrivateKey();
663
- const account = privateKeyToAccount(privateKey);
664
- const stored = {
665
- privateKey,
666
- address: account.address,
667
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
668
- };
669
- const saveResult = await safeWriteFile(
670
- walletSurface,
671
- WALLET_FILE,
672
- JSON.stringify(stored, null, 2)
673
- ).andThen(() => safeChmod(walletSurface, WALLET_FILE, 384));
674
- if (saveResult.isErr()) {
675
- return saveResult;
676
- }
677
- log.info(`Created wallet: ${account.address}`);
678
- log.info(`Saved to: ${WALLET_FILE}`);
679
- return ok2({ account, isNew: true });
680
- }
681
-
682
- // src/shared/redeem-invite.ts
683
- import z4 from "zod";
684
-
685
589
  // src/shared/neverthrow/fetch/index.ts
590
+ var IMAGE_TYPES = /* @__PURE__ */ new Set([
591
+ "image/png",
592
+ "image/jpeg",
593
+ "image/gif",
594
+ "image/webp",
595
+ "image/svg+xml",
596
+ "image/tiff",
597
+ "image/bmp",
598
+ "image/ico"
599
+ ]);
686
600
  var errorType2 = "fetch";
687
601
  var fetchErr = (surface, error) => err2(errorType2, surface, error);
688
602
  var fetchOk = (value) => ok2(value);
@@ -721,49 +635,54 @@ var safeParseResponse = (surface, response) => {
721
635
  errorType2,
722
636
  surface,
723
637
  (async () => {
724
- const contentType = response.headers.get("content-type") ?? "";
725
- if (contentType.includes("application/json")) {
726
- return {
727
- type: "json",
728
- data: await response.json()
729
- };
730
- } else if (contentType.includes("image/png") || contentType.includes("image/jpeg") || contentType.includes("image/gif") || contentType.includes("image/webp") || contentType.includes("image/svg+xml") || contentType.includes("image/tiff") || contentType.includes("image/bmp") || contentType.includes("image/ico")) {
638
+ const header = response.headers.get("content-type");
639
+ const { type: mimeType } = header ? contentType.parse(header) : { type: "application/octet-stream" };
640
+ switch (mimeType) {
641
+ case "application/json":
642
+ return {
643
+ type: "json",
644
+ data: await response.json()
645
+ };
646
+ case "application/pdf":
647
+ return {
648
+ type: "pdf",
649
+ mimeType,
650
+ data: await response.arrayBuffer()
651
+ };
652
+ case "application/octet-stream":
653
+ return {
654
+ type: "octet-stream",
655
+ mimeType,
656
+ data: await response.arrayBuffer()
657
+ };
658
+ case "multipart/form-data":
659
+ return { type: "formData", data: await response.formData() };
660
+ }
661
+ if (IMAGE_TYPES.has(mimeType)) {
731
662
  return {
732
663
  type: "image",
733
- mimeType: contentType,
664
+ mimeType,
734
665
  data: await response.arrayBuffer()
735
666
  };
736
- } else if (contentType.includes("audio/")) {
667
+ }
668
+ if (mimeType.startsWith("audio/")) {
737
669
  return {
738
670
  type: "audio",
739
- mimeType: contentType,
671
+ mimeType,
740
672
  data: await response.arrayBuffer()
741
673
  };
742
- } else if (contentType.includes("video/")) {
674
+ }
675
+ if (mimeType.startsWith("video/")) {
743
676
  return {
744
677
  type: "video",
745
- mimeType: contentType,
678
+ mimeType,
746
679
  data: await response.arrayBuffer()
747
680
  };
748
- } else if (contentType.includes("application/pdf")) {
749
- return {
750
- type: "pdf",
751
- mimeType: contentType,
752
- data: await response.arrayBuffer()
753
- };
754
- } else if (contentType.includes("application/octet-stream")) {
755
- return {
756
- type: "octet-stream",
757
- mimeType: contentType,
758
- data: await response.arrayBuffer()
759
- };
760
- } else if (contentType.includes("multipart/form-data")) {
761
- return { type: "formData", data: await response.formData() };
762
- } else if (contentType.includes("text/")) {
681
+ }
682
+ if (mimeType.startsWith("text/")) {
763
683
  return { type: "text", data: await response.text() };
764
- } else {
765
- throw new Error(`Unsupported content type: ${contentType}`);
766
684
  }
685
+ throw new Error(`Unsupported content type: ${header}`);
767
686
  })(),
768
687
  (e) => ({
769
688
  cause: "parse",
@@ -791,35 +710,22 @@ var openDepositLink = async (address, flags) => {
791
710
  };
792
711
 
793
712
  // src/shared/state.ts
794
- import z3 from "zod";
713
+ import z2 from "zod";
795
714
  import fs2 from "fs";
796
-
797
- // src/shared/origins.ts
798
- var DEFAULT_ORIGINS = [
799
- "https://enrichx402.com",
800
- "https://stablestudio.io"
801
- ];
802
-
803
- // src/shared/state.ts
804
715
  var STATE_FILE = configFile("state.json");
805
- var stateSchema = z3.looseObject({
806
- redeemedCodes: z3.array(z3.string()).default([]),
807
- origins: z3.array(z3.string()).default(DEFAULT_ORIGINS)
808
- });
809
- var defaultState = {
810
- redeemedCodes: [],
811
- origins: DEFAULT_ORIGINS
812
- };
716
+ var stateSchema = z2.looseObject({
717
+ redeemedCodes: z2.array(z2.string())
718
+ }).partial();
813
719
  var getState = () => {
814
720
  const stateFileExists = fs2.existsSync(STATE_FILE);
815
721
  if (!stateFileExists) {
816
- fs2.writeFileSync(STATE_FILE, JSON.stringify(defaultState, null, 2));
817
- return defaultState;
722
+ fs2.writeFileSync(STATE_FILE, "{}");
723
+ return {};
818
724
  }
819
725
  const stateFileContent = fs2.readFileSync(STATE_FILE, "utf-8");
820
726
  const result = stateSchema.safeParse(JSON.parse(stateFileContent));
821
727
  if (!result.success) {
822
- return defaultState;
728
+ return {};
823
729
  }
824
730
  return result.data;
825
731
  };
@@ -855,10 +761,10 @@ var redeemInviteCode = async ({
855
761
  recipientAddr: address
856
762
  })
857
763
  }),
858
- z4.object({
859
- redemptionId: z4.string(),
860
- txHash: z4.string(),
861
- amount: z4.coerce.number()
764
+ z3.object({
765
+ redemptionId: z3.string(),
766
+ txHash: z3.string(),
767
+ amount: z3.coerce.number()
862
768
  })
863
769
  );
864
770
  if (result.isOk()) {
@@ -869,6 +775,105 @@ var redeemInviteCode = async ({
869
775
  return result;
870
776
  };
871
777
 
778
+ // src/shared/wallet.ts
779
+ import { existsSync as existsSync2 } from "fs";
780
+ import { getAddress } from "viem";
781
+ import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
782
+ import z4 from "zod";
783
+
784
+ // src/shared/neverthrow/json/index.ts
785
+ var type2 = "json";
786
+ var jsonErr = (surface, error) => {
787
+ return err2(type2, surface, error);
788
+ };
789
+ var safeStringifyJson = (surface, value) => {
790
+ return resultFromThrowable(
791
+ type2,
792
+ surface,
793
+ () => JSON.stringify(value, null, 2),
794
+ () => ({
795
+ cause: "stringify",
796
+ message: "Could not stringify JSON"
797
+ })
798
+ );
799
+ };
800
+ var safeParseJson = (surface, value) => {
801
+ return resultFromThrowable(
802
+ type2,
803
+ surface,
804
+ () => JSON.parse(value),
805
+ (e) => ({
806
+ cause: "parse",
807
+ message: e instanceof Error ? e.message : "Could not parse JSON"
808
+ })
809
+ );
810
+ };
811
+
812
+ // src/shared/wallet.ts
813
+ var WALLET_FILE = configFile("wallet.json");
814
+ var storedWalletSchema = z4.object({
815
+ privateKey: z4.string().regex(/^0x[a-fA-F0-9]{64}$/, "Invalid Ethereum private key").transform((privateKey) => privateKey),
816
+ address: z4.string().regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address").transform((address) => getAddress(address)),
817
+ createdAt: z4.string()
818
+ });
819
+ var walletSurface = "wallet";
820
+ async function getWallet() {
821
+ if (process.env.X402_PRIVATE_KEY) {
822
+ const account2 = privateKeyToAccount(process.env.X402_PRIVATE_KEY);
823
+ log.info(`Using wallet from env: ${account2.address}`);
824
+ return ok2({ account: account2, isNew: false });
825
+ }
826
+ const readFileResult = await safeReadFile(walletSurface, WALLET_FILE);
827
+ if (!readFileResult.isOk()) {
828
+ const fileExistsResult = existsSync2(WALLET_FILE);
829
+ if (fileExistsResult) {
830
+ return fsErr(walletSurface, {
831
+ cause: "file_not_readable",
832
+ message: `The file exists but is not readable. Fix corrupted state file: ${WALLET_FILE}`
833
+ });
834
+ }
835
+ }
836
+ if (readFileResult.isOk()) {
837
+ const data = readFileResult.value;
838
+ const jsonParseResult = safeParseJson(walletSurface, data);
839
+ if (jsonParseResult.isErr()) {
840
+ return jsonErr(walletSurface, {
841
+ cause: "parse",
842
+ message: `The data in ${WALLET_FILE} is not valid JSON`
843
+ });
844
+ }
845
+ const parseResult = safeParse(
846
+ walletSurface,
847
+ storedWalletSchema,
848
+ jsonParseResult.value
849
+ );
850
+ if (parseResult.isErr()) {
851
+ return parseResult;
852
+ }
853
+ const account2 = privateKeyToAccount(parseResult.value.privateKey);
854
+ log.info(`Loaded wallet: ${account2.address}`);
855
+ return ok2({ account: account2, isNew: false });
856
+ }
857
+ const privateKey = generatePrivateKey();
858
+ const account = privateKeyToAccount(privateKey);
859
+ const stored = {
860
+ privateKey,
861
+ address: account.address,
862
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
863
+ };
864
+ const saveResult = await safeWriteFile(
865
+ walletSurface,
866
+ WALLET_FILE,
867
+ JSON.stringify(stored, null, 2)
868
+ ).andThen(() => safeChmod(walletSurface, WALLET_FILE, 384));
869
+ if (saveResult.isErr()) {
870
+ return saveResult;
871
+ }
872
+ log.info(`Created wallet: ${account.address}`);
873
+ log.info(`Saved to: ${WALLET_FILE}`);
874
+ return ok2({ account, isNew: true });
875
+ }
876
+
872
877
  // src/shared/networks.ts
873
878
  import {
874
879
  base,
@@ -949,11 +954,6 @@ export {
949
954
  resultFromThrowable,
950
955
  ok2 as ok,
951
956
  err2 as err,
952
- safeStringifyJson,
953
- getState,
954
- safeReadFile,
955
- safeWriteFile,
956
- log,
957
957
  fetchErr,
958
958
  fetchOk,
959
959
  fetchHttpErr,
@@ -961,12 +961,16 @@ export {
961
961
  safeFetchJson,
962
962
  safeParseResponse,
963
963
  isFetchError,
964
- DEFAULT_NETWORK,
965
- getChainName,
964
+ safeStringifyJson,
966
965
  getBaseUrl,
967
966
  getDepositLink,
968
967
  openDepositLink,
969
- getWallet,
970
- redeemInviteCode
968
+ safeReadFile,
969
+ safeWriteFile,
970
+ log,
971
+ DEFAULT_NETWORK,
972
+ getChainName,
973
+ redeemInviteCode,
974
+ getWallet
971
975
  };
972
- //# sourceMappingURL=chunk-EU6ZUX43.js.map
976
+ //# sourceMappingURL=chunk-KFKTJHP4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/neverthrow/fs/index.ts","../../../../../node_modules/.pnpm/neverthrow@8.2.0/node_modules/neverthrow/dist/index.es.js","../../../../internal/neverthrow/src/index.ts","../../src/shared/fs.ts","../../src/shared/log.ts","../../src/shared/redeem-invite.ts","../../src/shared/neverthrow/fetch/index.ts","../../src/shared/neverthrow/parse/index.ts","../../src/shared/utils.ts","../../src/shared/state.ts","../../src/shared/wallet.ts","../../src/shared/neverthrow/json/index.ts","../../src/shared/networks.ts"],"sourcesContent":["import { readFile, writeFile, appendFile, chmod } from 'fs/promises';\n\nimport { err, resultFromPromise } from '@x402scan/neverthrow';\n\nimport type { BaseFileSystemError } from './types';\n\nconst errorType = 'fs';\n\nexport const fsErr = (surface: string, error: BaseFileSystemError) =>\n err(errorType, surface, error);\n\nconst fsResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseFileSystemError\n) => resultFromPromise(errorType, surface, promise, error);\n\nexport const safeReadFile = (surface: string, path: string) =>\n fsResultFromPromise(surface, readFile(path, 'utf-8'), () => ({\n cause: 'file_not_readable',\n message: 'Failed to read file',\n }));\n\nexport const safeWriteFile = (surface: string, path: string, data: string) =>\n fsResultFromPromise(surface, writeFile(path, data), () => ({\n cause: 'file_not_writable',\n message: 'Failed to write file',\n }));\n\nexport const safeAppendFile = (surface: string, path: string, data: string) =>\n fsResultFromPromise(surface, appendFile(path, data), () => ({\n cause: 'file_not_writable',\n message: 'Failed to append file',\n }));\n\nexport const safeChmod = (surface: string, path: string, mode: number) =>\n fsResultFromPromise(surface, chmod(path, mode), () => ({\n cause: 'file_not_chmodable',\n message: 'Failed to chmod file',\n }));\n","const defaultErrorConfig = {\r\n withStackTrace: false,\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nconst createNeverThrowError = (message, result, config = defaultErrorConfig) => {\r\n const data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n const maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data,\r\n message,\r\n stack: maybeStack,\r\n };\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nclass ResultAsync {\r\n constructor(res) {\r\n this._promise = res;\r\n }\r\n static fromSafePromise(promise) {\r\n const newPromise = promise.then((value) => new Ok(value));\r\n return new ResultAsync(newPromise);\r\n }\r\n static fromPromise(promise, errorFn) {\r\n const newPromise = promise\r\n .then((value) => new Ok(value))\r\n .catch((e) => new Err(errorFn(e)));\r\n return new ResultAsync(newPromise);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n return new ResultAsync((() => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n return new Ok(yield fn(...args));\r\n }\r\n catch (error) {\r\n return new Err(errorFn ? errorFn(error) : error);\r\n }\r\n }))());\r\n };\r\n }\r\n static combine(asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n }\r\n static combineWithAllErrors(asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n }\r\n map(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n return new Ok(yield f(res.value));\r\n })));\r\n }\r\n andThrough(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newRes = yield f(res.value);\r\n if (newRes.isErr()) {\r\n return new Err(newRes.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n andTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n try {\r\n yield f(res.value);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n orTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n try {\r\n yield f(res.error);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Err(res.error);\r\n })));\r\n }\r\n mapErr(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n return new Err(yield f(res.error));\r\n })));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return new ResultAsync(this._promise.then((res) => {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return f(res.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n match(ok, _err) {\r\n return this._promise.then((res) => res.match(ok, _err));\r\n }\r\n unwrapOr(t) {\r\n return this._promise.then((res) => res.unwrapOr(t));\r\n }\r\n /**\r\n * @deprecated will be removed in 9.0.0.\r\n *\r\n * You can use `safeTry` without this method.\r\n * @example\r\n * ```typescript\r\n * safeTry(async function* () {\r\n * const okValue = yield* yourResult\r\n * })\r\n * ```\r\n * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`.\r\n */\r\n safeUnwrap() {\r\n return __asyncGenerator(this, arguments, function* safeUnwrap_1() {\r\n return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap()))))));\r\n });\r\n }\r\n // Makes ResultAsync implement PromiseLike<Result>\r\n then(successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n }\r\n [Symbol.asyncIterator]() {\r\n return __asyncGenerator(this, arguments, function* _a() {\r\n const result = yield __await(this._promise);\r\n if (result.isErr()) {\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield yield __await(errAsync(result.error));\r\n }\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return yield __await(result.value);\r\n });\r\n }\r\n}\r\nfunction okAsync(value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n}\r\nfunction errAsync(err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n}\r\nconst fromPromise = ResultAsync.fromPromise;\r\nconst fromSafePromise = ResultAsync.fromSafePromise;\r\nconst fromAsyncThrowable = ResultAsync.fromThrowable;\n\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nconst combineResultList = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr()) {\r\n acc = err(result.error);\r\n break;\r\n }\r\n else {\r\n acc.map((list) => list.push(result.value));\r\n }\r\n }\r\n return acc;\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync<T, E> and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nconst combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nconst combineResultListWithAllErrors = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr() && acc.isErr()) {\r\n acc.error.push(result.error);\r\n }\r\n else if (result.isErr() && acc.isOk()) {\r\n acc = err([result.error]);\r\n }\r\n else if (result.isOk() && acc.isOk()) {\r\n acc.value.push(result.value);\r\n }\r\n // do nothing when result.isOk() && acc.isErr()\r\n }\r\n return acc;\r\n};\r\nconst combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n try {\r\n const result = fn(...args);\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nfunction ok(value) {\r\n return new Ok(value);\r\n}\r\nfunction err(err) {\r\n return new Err(err);\r\n}\r\nfunction safeTry(body) {\r\n const n = body().next();\r\n if (n instanceof Promise) {\r\n return new ResultAsync(n.then((r) => r.value));\r\n }\r\n return n.value;\r\n}\r\nclass Ok {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n isOk() {\r\n return true;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n map(f) {\r\n return ok(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n mapErr(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThrough(f) {\r\n return f(this.value).map((_value) => this.value);\r\n }\r\n andTee(f) {\r\n try {\r\n f(this.value);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return ok(this.value);\r\n }\r\n orTee(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(_f) {\r\n return ok(this.value);\r\n }\r\n asyncAndThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n asyncAndThrough(f) {\r\n return f(this.value).map(() => this.value);\r\n }\r\n asyncMap(f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n unwrapOr(_v) {\r\n return this.value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n match(ok, _err) {\r\n return ok(this.value);\r\n }\r\n safeUnwrap() {\r\n const value = this.value;\r\n /* eslint-disable-next-line require-yield */\r\n return (function* () {\r\n return value;\r\n })();\r\n }\r\n _unsafeUnwrap(_) {\r\n return this.value;\r\n }\r\n _unsafeUnwrapErr(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias, require-yield\r\n *[Symbol.iterator]() {\r\n return this.value;\r\n }\r\n}\r\nclass Err {\r\n constructor(error) {\r\n this.error = error;\r\n }\r\n isOk() {\r\n return false;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n map(_f) {\r\n return err(this.error);\r\n }\r\n mapErr(f) {\r\n return err(f(this.error));\r\n }\r\n andThrough(_f) {\r\n return err(this.error);\r\n }\r\n andTee(_f) {\r\n return err(this.error);\r\n }\r\n orTee(f) {\r\n try {\r\n f(this.error);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(_f) {\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return f(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncAndThen(_f) {\r\n return errAsync(this.error);\r\n }\r\n asyncAndThrough(_f) {\r\n return errAsync(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncMap(_f) {\r\n return errAsync(this.error);\r\n }\r\n unwrapOr(v) {\r\n return v;\r\n }\r\n match(_ok, err) {\r\n return err(this.error);\r\n }\r\n safeUnwrap() {\r\n const error = this.error;\r\n return (function* () {\r\n yield err(error);\r\n throw new Error('Do not use this generator out of `safeTry`');\r\n })();\r\n }\r\n _unsafeUnwrap(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n }\r\n _unsafeUnwrapErr(_) {\r\n return this.error;\r\n }\r\n *[Symbol.iterator]() {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const self = this;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield self;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return self;\r\n }\r\n}\r\nconst fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromAsyncThrowable, fromPromise, fromSafePromise, fromThrowable, ok, okAsync, safeTry };\n","import {\n ResultAsync as NeverthrowResultAsync,\n Result as NeverthrowResult,\n ok as neverthrowOk,\n err as neverthrowErr,\n okAsync as neverthrowOkAsync,\n errAsync as neverthrowErrAsync,\n} from 'neverthrow';\n\nimport type { ResultAsync, BaseError, Error, Result } from './types';\n\nexport function resultFromPromise<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => E\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromPromise(promise, e => ({\n ...error(e),\n type,\n surface,\n }));\n}\n\nexport function resultFromThrowable<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n fn: () => T,\n error: (e: unknown) => E\n): Result<T, E> {\n return NeverthrowResult.fromThrowable(fn, e => ({\n ...error(e),\n type,\n surface,\n }))();\n}\n\nexport function resultFromSafePromise<E extends BaseError, T = unknown>(\n promise: Promise<T>\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromSafePromise(promise);\n}\n\nexport function ok<T>(data: T) {\n return neverthrowOk(data);\n}\n\nexport function err<BE extends BaseError>(\n type: string,\n surface: string,\n error: BE\n) {\n return neverthrowErr<never, Error<BE>>({\n ...error,\n type,\n surface,\n });\n}\n\nexport function okAsync<T>(data: T): ResultAsync<T, never> {\n return neverthrowOkAsync(data);\n}\n\nexport function errAsync<E extends BaseError>(surface: string, error: E) {\n return neverthrowErrAsync({\n ...error,\n surface,\n });\n}\n","import { join } from 'path';\nimport { homedir } from 'os';\nimport * as fs from 'fs';\n\nconst BASE_DIRECTORY = join(homedir(), '.x402scan-mcp');\n\nif (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n}\n\nexport const configFile = (name: `${string}.${string}`) => {\n if (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n }\n const filePath = join(BASE_DIRECTORY, name);\n return filePath;\n};\n","import { safeAppendFile } from '@/shared/neverthrow/fs';\n\nimport { configFile } from './fs';\n\nconst LOG_FILE = configFile('mcp.log');\nconst DEBUG = process.env.X402_DEBUG === 'true';\n\nfunction format(args: unknown[]): string {\n return args\n .map(a =>\n typeof a === 'object' && a !== null ? JSON.stringify(a) : String(a)\n )\n .join(' ');\n}\n\nfunction write(level: string, msg: string, args: unknown[]): void {\n const formatted = args.length ? `${msg} ${format(args)}` : msg;\n const line = `[${new Date().toISOString()}] [${level}] ${formatted}\\n`;\n safeAppendFile('log', LOG_FILE, line);\n if (process.env.X402_DEBUG === 'true') {\n console.error(`[x402scan] ${formatted}`);\n }\n}\n\nexport const log = {\n info: (msg: string, ...args: unknown[]) => write('INFO', msg, args),\n error: (msg: string, ...args: unknown[]) => write('ERROR', msg, args),\n debug: (msg: string, ...args: unknown[]) =>\n DEBUG && write('DEBUG', msg, args),\n path: LOG_FILE,\n};\n","import z from 'zod';\n\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { err } from '@x402scan/neverthrow';\n\nimport { getBaseUrl } from './utils';\nimport { getState, setState } from './state';\n\nimport type { Address } from 'viem';\n\nexport interface RedeemInviteProps {\n code: string;\n dev: boolean;\n address: Address;\n surface: string;\n}\n\nexport const redeemInviteCode = async ({\n code,\n dev,\n address,\n surface,\n}: RedeemInviteProps) => {\n const state = getState();\n\n if (state.redeemedCodes?.includes(code)) {\n return err('user', surface, {\n cause: 'conflict',\n message: 'This invite code has already been redeemed',\n });\n }\n\n const result = await safeFetchJson(\n surface,\n new Request(`${getBaseUrl(dev)}/api/invite/redeem`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n code,\n recipientAddr: address,\n }),\n }),\n z.object({\n redemptionId: z.string(),\n txHash: z.string(),\n amount: z.coerce.number(),\n })\n );\n\n if (result.isOk()) {\n setState({\n redeemedCodes: [...(state.redeemedCodes ?? []), code],\n });\n }\n\n return result;\n};\n","import contentType from 'content-type';\nimport { err, ok, resultFromPromise } from '@x402scan/neverthrow';\n\nimport type z from 'zod';\n\nimport type { BaseError, Error } from '@x402scan/neverthrow/types';\nimport type { BaseFetchError, FetchError, ParsedResponse } from './types';\nimport type { JsonObject } from '../json/types';\nimport { safeParse } from '../parse';\n\nconst IMAGE_TYPES = new Set([\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml',\n 'image/tiff',\n 'image/bmp',\n 'image/ico',\n]);\n\nconst errorType = 'fetch';\n\nexport const fetchErr = (surface: string, error: BaseFetchError) =>\n err(errorType, surface, error);\nexport const fetchOk = <T>(value: T) => ok(value);\n\nexport const fetchHttpErr = (surface: string, response: Response) =>\n fetchErr(surface, {\n cause: 'http' as const,\n statusCode: response.status,\n message: response.statusText,\n response,\n });\n\nexport const safeFetch = (surface: string, request: Request) => {\n return resultFromPromise(\n errorType,\n surface,\n fetch(request),\n error =>\n ({\n cause: 'network',\n message: error instanceof Error ? error.message : 'Network error',\n }) as BaseFetchError\n );\n};\n\nexport const safeFetchJson = <T>(\n surface: string,\n request: Request,\n schema: z.ZodSchema<T>\n) => {\n return safeFetch(surface, request)\n .andThen(response => {\n if (!response.ok) {\n return fetchHttpErr(surface, response);\n }\n\n return resultFromPromise(errorType, surface, response.json(), () => ({\n cause: 'parse' as const,\n message: 'Could not parse JSON from response',\n statusCode: response.status,\n contentType: response.headers.get('content-type') ?? 'Not specified',\n }));\n })\n .andThen(data => safeParse(surface, schema, data));\n};\n\nexport const safeParseResponse = (surface: string, response: Response) => {\n return resultFromPromise(\n errorType,\n surface,\n (async (): Promise<ParsedResponse> => {\n const header = response.headers.get('content-type');\n const { type: mimeType } = header\n ? contentType.parse(header)\n : { type: 'application/octet-stream' };\n\n switch (mimeType) {\n case 'application/json':\n return {\n type: 'json' as const,\n data: (await response.json()) as JsonObject,\n };\n case 'application/pdf':\n return {\n type: 'pdf' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n case 'application/octet-stream':\n return {\n type: 'octet-stream' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n case 'multipart/form-data':\n return { type: 'formData' as const, data: await response.formData() };\n }\n\n if (IMAGE_TYPES.has(mimeType)) {\n return {\n type: 'image' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('audio/')) {\n return {\n type: 'audio' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('video/')) {\n return {\n type: 'video' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('text/')) {\n return { type: 'text' as const, data: await response.text() };\n }\n\n throw new Error(`Unsupported content type: ${header}`);\n })(),\n e => ({\n cause: 'parse' as const,\n message: e instanceof Error ? e.message : 'Could not parse response',\n statusCode: response.status,\n contentType: response.headers.get('content-type') ?? 'Not specified',\n })\n );\n};\n\nexport const isFetchError = (error: Error<BaseError>): error is FetchError => {\n return error.type === errorType;\n};\n","import z from 'zod';\n\nimport { err, ok } from '@x402scan/neverthrow';\n\nimport type { BaseParseError } from './types';\n\nconst type = 'json';\n\nconst parseErr = (surface: string, error: BaseParseError) =>\n err(type, surface, error);\n\nexport const safeParse = <T>(\n surface: string,\n schema: z.ZodSchema<T>,\n value: unknown\n) => {\n const parseResult = schema.safeParse(value);\n if (!parseResult.success) {\n return parseErr(surface, {\n cause: 'invalid_data',\n message: JSON.stringify(z.treeifyError(parseResult.error), null, 2),\n error: parseResult.error,\n });\n }\n return ok(parseResult.data);\n};\n","import open from 'open';\n\nimport type { GlobalFlags } from '@/types';\n\nexport const getBaseUrl = (dev: boolean) => {\n return dev ? 'http://localhost:3000' : 'https://x402scan.com';\n};\n\nexport const getDepositLink = (address: string, flags: GlobalFlags) => {\n return `${getBaseUrl(flags.dev)}/mcp/deposit/${address}`;\n};\n\nexport const openDepositLink = async (address: string, flags: GlobalFlags) => {\n const depositLink = getDepositLink(address, flags);\n await open(depositLink);\n};\n","import z from 'zod';\nimport fs from 'fs';\n\nimport { configFile } from './fs';\n\nconst STATE_FILE = configFile('state.json');\n\nconst stateSchema = z\n .looseObject({\n redeemedCodes: z.array(z.string()),\n })\n .partial();\n\nexport const getState = () => {\n const stateFileExists = fs.existsSync(STATE_FILE);\n if (!stateFileExists) {\n fs.writeFileSync(STATE_FILE, '{}');\n return {};\n }\n\n const stateFileContent = fs.readFileSync(STATE_FILE, 'utf-8');\n const result = stateSchema.safeParse(JSON.parse(stateFileContent));\n if (!result.success) {\n return {};\n }\n return result.data;\n};\n\nexport const setState = (state: z.infer<typeof stateSchema>) => {\n const existing = getState();\n const newState = stateSchema.parse({ ...existing, ...state });\n fs.writeFileSync(STATE_FILE, JSON.stringify(newState, null, 2));\n};\n","import { existsSync } from 'fs';\n\nimport { getAddress } from 'viem';\nimport { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';\n\nimport z from 'zod';\n\nimport { ok } from '@x402scan/neverthrow';\n\nimport {\n fsErr,\n safeChmod,\n safeReadFile,\n safeWriteFile,\n} from '@/shared/neverthrow/fs';\nimport { jsonErr, safeParseJson } from '@/shared/neverthrow/json';\nimport { safeParse } from '@/shared/neverthrow/parse';\n\nimport { log } from './log';\nimport { configFile } from './fs';\n\nimport type { Hex } from 'viem';\n\nconst WALLET_FILE = configFile('wallet.json');\n\nconst storedWalletSchema = z.object({\n privateKey: z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid Ethereum private key')\n .transform(privateKey => privateKey as Hex),\n address: z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid Ethereum address')\n .transform(address => getAddress(address)),\n createdAt: z.string(),\n});\n\nconst walletSurface = 'wallet';\n\nexport async function getWallet() {\n if (process.env.X402_PRIVATE_KEY) {\n const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY as Hex);\n log.info(`Using wallet from env: ${account.address}`);\n return ok({ account, isNew: false });\n }\n\n const readFileResult = await safeReadFile(walletSurface, WALLET_FILE);\n\n if (!readFileResult.isOk()) {\n const fileExistsResult = existsSync(WALLET_FILE);\n // file exists but is not readable\n if (fileExistsResult) {\n return fsErr(walletSurface, {\n cause: 'file_not_readable',\n message: `The file exists but is not readable. Fix corrupted state file: ${WALLET_FILE}`,\n });\n }\n }\n\n if (readFileResult.isOk()) {\n const data = readFileResult.value;\n const jsonParseResult = safeParseJson(walletSurface, data);\n\n // file exists but is not valid JSON\n if (jsonParseResult.isErr()) {\n return jsonErr(walletSurface, {\n cause: 'parse',\n message: `The data in ${WALLET_FILE} is not valid JSON`,\n });\n }\n\n const parseResult = safeParse(\n walletSurface,\n storedWalletSchema,\n jsonParseResult.value\n );\n\n // file has valid JSON but is not a valid wallet configuration\n if (parseResult.isErr()) {\n return parseResult;\n }\n\n const account = privateKeyToAccount(parseResult.value.privateKey);\n log.info(`Loaded wallet: ${account.address}`);\n return ok({ account, isNew: false });\n }\n\n // Generate new\n const privateKey = generatePrivateKey();\n const account = privateKeyToAccount(privateKey);\n const stored = {\n privateKey,\n address: account.address,\n createdAt: new Date().toISOString(),\n };\n\n const saveResult = await safeWriteFile(\n walletSurface,\n WALLET_FILE,\n JSON.stringify(stored, null, 2)\n ).andThen(() => safeChmod(walletSurface, WALLET_FILE, 0o600));\n\n if (saveResult.isErr()) {\n return saveResult;\n }\n\n log.info(`Created wallet: ${account.address}`);\n log.info(`Saved to: ${WALLET_FILE}`);\n\n return ok({ account, isNew: true });\n}\n","import { err, resultFromThrowable } from '@x402scan/neverthrow';\n\nimport type { BaseJsonError, JsonObject } from './types';\n\nconst type = 'json';\n\nexport const jsonErr = (surface: string, error: BaseJsonError) => {\n return err(type, surface, error);\n};\n\nexport const safeStringifyJson = (surface: string, value: JsonObject) => {\n return resultFromThrowable(\n type,\n surface,\n () => JSON.stringify(value, null, 2),\n () => ({\n cause: 'stringify' as const,\n message: 'Could not stringify JSON',\n })\n );\n};\n\nexport const safeParseJson = (surface: string, value: string) => {\n return resultFromThrowable(\n type,\n surface,\n () => JSON.parse(value) as JsonObject,\n e => ({\n cause: 'parse' as const,\n message: e instanceof Error ? e.message : 'Could not parse JSON',\n })\n );\n};\n","import {\n base,\n baseSepolia,\n mainnet,\n sepolia,\n optimism,\n arbitrum,\n polygon,\n} from 'viem/chains';\n\nimport type { Chain } from 'viem';\n\nexport interface ChainConfig {\n chain: Chain;\n caip2: string;\n v1Name: string;\n usdcAddress: `0x${string}`;\n}\n\nconst CHAIN_CONFIGS: Record<string, ChainConfig> = {\n 'eip155:8453': {\n chain: base,\n caip2: 'eip155:8453',\n v1Name: 'base',\n usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n },\n 'eip155:84532': {\n chain: baseSepolia,\n caip2: 'eip155:84532',\n v1Name: 'base-sepolia',\n usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n },\n 'eip155:1': {\n chain: mainnet,\n caip2: 'eip155:1',\n v1Name: 'ethereum',\n usdcAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n 'eip155:11155111': {\n chain: sepolia,\n caip2: 'eip155:11155111',\n v1Name: 'ethereum-sepolia',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n },\n 'eip155:10': {\n chain: optimism,\n caip2: 'eip155:10',\n v1Name: 'optimism',\n usdcAddress: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n },\n 'eip155:42161': {\n chain: arbitrum,\n caip2: 'eip155:42161',\n v1Name: 'arbitrum',\n usdcAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n },\n 'eip155:137': {\n chain: polygon,\n caip2: 'eip155:137',\n v1Name: 'polygon',\n usdcAddress: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',\n },\n};\n\nconst V1_TO_CAIP2: Record<string, string> = {\n base: 'eip155:8453',\n 'base-sepolia': 'eip155:84532',\n ethereum: 'eip155:1',\n 'ethereum-sepolia': 'eip155:11155111',\n optimism: 'eip155:10',\n arbitrum: 'eip155:42161',\n polygon: 'eip155:137',\n};\n\nexport const DEFAULT_NETWORK = 'eip155:8453';\n\n/** Convert any network identifier to CAIP-2 format */\nexport function toCaip2(network: string): string {\n if (network.startsWith('eip155:')) return network;\n return V1_TO_CAIP2[network.toLowerCase()] ?? network;\n}\n\n/** Get chain config from network identifier */\nexport function getChainConfig(network: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[toCaip2(network)];\n}\n\n/** Get USDC address for a network */\nexport function getUSDCAddress(network: string): `0x${string}` | undefined {\n return getChainConfig(network)?.usdcAddress;\n}\n\n/** Extract chain ID from CAIP-2 identifier */\nexport function getChainId(network: string): number | undefined {\n const caip2 = toCaip2(network);\n const match = /^eip155:(\\d+)$/.exec(caip2);\n return match ? parseInt(match[1]!, 10) : undefined;\n}\n\n/** Get human-readable chain name */\nexport function getChainName(network: string): string {\n return getChainConfig(network)?.chain.name ?? network;\n}\n\n/** Check if network is a testnet */\nexport function isTestnet(network: string): boolean {\n return getChainConfig(network)?.chain.testnet === true;\n}\n"],"mappings":"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","names":["v","ok","err","Result","fromThrowable","ok","err","type","ok","err","type","err","z","err","ok","errorType","err","ok","z","fs","z","fs","err","z","existsSync","z","type","err","z","account","ok","existsSync"]}
@@ -3,7 +3,7 @@ import {
3
3
  getChainName,
4
4
  getDepositLink,
5
5
  redeemInviteCode
6
- } from "./chunk-EU6ZUX43.js";
6
+ } from "./chunk-KFKTJHP4.js";
7
7
 
8
8
  // src/cli/lib/deposit.ts
9
9
  import chalk from "chalk";
@@ -109,4 +109,4 @@ export {
109
109
  wait,
110
110
  promptDeposit
111
111
  };
112
- //# sourceMappingURL=chunk-6PC7EDX4.js.map
112
+ //# sourceMappingURL=chunk-QVYPYKAK.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  promptDeposit
3
- } from "./chunk-6PC7EDX4.js";
3
+ } from "./chunk-QVYPYKAK.js";
4
4
  import {
5
5
  getWallet,
6
6
  log
7
- } from "./chunk-EU6ZUX43.js";
7
+ } from "./chunk-KFKTJHP4.js";
8
8
 
9
9
  // src/cli/fund/index.ts
10
10
  import { intro, log as clackLog, outro } from "@clack/prompts";
@@ -27,4 +27,4 @@ var fundMcpServer = async (flags) => {
27
27
  export {
28
28
  fundMcpServer
29
29
  };
30
- //# sourceMappingURL=fund-POQ5MUH3.js.map
30
+ //# sourceMappingURL=fund-A7FNU5XT.js.map
package/dist/esm/index.js CHANGED
@@ -24,7 +24,7 @@ void yargs(hideBin(process.argv)).scriptName("@x402scan/mcp").option("dev", {
24
24
  "Start the MCP server",
25
25
  (yargs2) => yargs2,
26
26
  async (args) => {
27
- const { startServer } = await import("./server-EI242I3L.js");
27
+ const { startServer } = await import("./server-XJLPLQA4.js");
28
28
  await startServer(args);
29
29
  }
30
30
  ).command(
@@ -37,7 +37,7 @@ void yargs(hideBin(process.argv)).scriptName("@x402scan/mcp").option("dev", {
37
37
  default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
38
38
  }),
39
39
  async (args) => {
40
- const { installMcpServer } = await import("./install-CNZYLKS6.js");
40
+ const { installMcpServer } = await import("./install-4D27M7NG.js");
41
41
  await installMcpServer(args);
42
42
  }
43
43
  ).command(
@@ -45,7 +45,7 @@ void yargs(hideBin(process.argv)).scriptName("@x402scan/mcp").option("dev", {
45
45
  "Open the funding page",
46
46
  (yargs2) => yargs2,
47
47
  async (args) => {
48
- const { fundMcpServer } = await import("./fund-POQ5MUH3.js");
48
+ const { fundMcpServer } = await import("./fund-A7FNU5XT.js");
49
49
  await fundMcpServer(args);
50
50
  }
51
51
  ).strict().demandCommand(0, 1, "", "Too many commands provided").help().parseAsync().catch((err) => {