agentcash 0.11.2 → 0.11.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.
Files changed (26) hide show
  1. package/dist/cjs/run-server.cjs +171 -22
  2. package/dist/esm/{chunk-RWYXPIDK.js → chunk-E5L2YGJQ.js} +2 -2
  3. package/dist/esm/{chunk-QPHNB77R.js → chunk-EC77HB5T.js} +1 -1
  4. package/dist/esm/chunk-EC77HB5T.js.map +1 -0
  5. package/dist/esm/{chunk-3NHHOAYY.js → chunk-KOPH43LN.js} +2 -2
  6. package/dist/esm/{chunk-ZRM5POEW.js → chunk-LM3LUZC5.js} +2 -2
  7. package/dist/esm/index.js +13 -13
  8. package/dist/esm/{install-WOSQ5SPS.js → install-SGVC2LKS.js} +3 -3
  9. package/dist/esm/{onboard-F2E5VASS.js → onboard-7YSFZQ63.js} +4 -4
  10. package/dist/esm/{report-error-QUXZHGCB.js → report-error-T3Y7ZQ56.js} +3 -3
  11. package/dist/esm/{server-GJZF7DXM.js → server-3VK43ILT.js} +2 -2
  12. package/dist/esm/{server-MBCZGZKK.js → server-76NAS5TN.js} +5 -5
  13. package/dist/esm/{try-OOK7FEWW.js → try-BY4Q2SI3.js} +2 -2
  14. package/dist/esm/{wallet-5D2DDA5U.js → wallet-TMC44VRS.js} +2 -2
  15. package/package.json +4 -4
  16. package/dist/esm/chunk-QPHNB77R.js.map +0 -1
  17. /package/dist/esm/{chunk-RWYXPIDK.js.map → chunk-E5L2YGJQ.js.map} +0 -0
  18. /package/dist/esm/{chunk-3NHHOAYY.js.map → chunk-KOPH43LN.js.map} +0 -0
  19. /package/dist/esm/{chunk-ZRM5POEW.js.map → chunk-LM3LUZC5.js.map} +0 -0
  20. /package/dist/esm/{install-WOSQ5SPS.js.map → install-SGVC2LKS.js.map} +0 -0
  21. /package/dist/esm/{onboard-F2E5VASS.js.map → onboard-7YSFZQ63.js.map} +0 -0
  22. /package/dist/esm/{report-error-QUXZHGCB.js.map → report-error-T3Y7ZQ56.js.map} +0 -0
  23. /package/dist/esm/{server-GJZF7DXM.js.map → server-3VK43ILT.js.map} +0 -0
  24. /package/dist/esm/{server-MBCZGZKK.js.map → server-76NAS5TN.js.map} +0 -0
  25. /package/dist/esm/{try-OOK7FEWW.js.map → try-BY4Q2SI3.js.map} +0 -0
  26. /package/dist/esm/{wallet-5D2DDA5U.js.map → wallet-TMC44VRS.js.map} +0 -0
@@ -123713,7 +123713,7 @@ init_cjs_shims();
123713
123713
  // src/operations/check-endpoint.ts
123714
123714
  init_cjs_shims();
123715
123715
 
123716
- // ../../../node_modules/.pnpm/@agentcash+discovery@1.1.3/node_modules/@agentcash/discovery/dist/index.js
123716
+ // ../../../node_modules/.pnpm/@agentcash+discovery@1.3.0/node_modules/@agentcash/discovery/dist/index.js
123717
123717
  init_cjs_shims();
123718
123718
  var import_dereference_json_schema = __toESM(require_dereference_json_schema(), 1);
123719
123719
  var __defProp2 = Object.defineProperty;
@@ -137401,7 +137401,8 @@ var WellKnownParsedSchema = external_exports5.object({
137401
137401
  routes: external_exports5.array(
137402
137402
  external_exports5.object({
137403
137403
  path: external_exports5.string(),
137404
- method: external_exports5.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "TRACE"])
137404
+ method: external_exports5.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "TRACE"]),
137405
+ price: external_exports5.string().optional()
137405
137406
  })
137406
137407
  ),
137407
137408
  instructions: external_exports5.string().optional()
@@ -137485,9 +137486,9 @@ function toAbsoluteUrl(origin, value) {
137485
137486
  return null;
137486
137487
  }
137487
137488
  }
137488
- function toFetchError(err3) {
137489
- const cause = err3 instanceof DOMException && (err3.name === "TimeoutError" || err3.name === "AbortError") ? "timeout" : "network";
137490
- return { cause, message: String(err3) };
137489
+ function toFetchError(err22) {
137490
+ const cause = err22 instanceof DOMException && (err22.name === "TimeoutError" || err22.name === "AbortError") ? "timeout" : "network";
137491
+ return { cause, message: String(err22) };
137491
137492
  }
137492
137493
  function fetchSafe(url22, init) {
137493
137494
  return ResultAsync.fromPromise(fetch(url22, init), toFetchError);
@@ -137574,12 +137575,17 @@ async function parseBody2(response, origin, url22) {
137574
137575
  if (!doc.success) return null;
137575
137576
  const parsed = WellKnownParsedSchema.safeParse(toWellKnownParsed(origin, doc.data));
137576
137577
  if (!parsed.success) return null;
137577
- return { raw: payload, ...parsed.data, fetchedUrl: url22 };
137578
+ return {
137579
+ raw: payload,
137580
+ ...parsed.data,
137581
+ protocol: "x402",
137582
+ fetchedUrl: url22
137583
+ };
137578
137584
  } catch {
137579
137585
  return null;
137580
137586
  }
137581
137587
  }
137582
- function getWellKnown(origin, headers, signal) {
137588
+ function getX402WellKnown(origin, headers, signal) {
137583
137589
  const url22 = `${origin}/.well-known/x402`;
137584
137590
  return fetchSafe(url22, {
137585
137591
  method: "GET",
@@ -137590,6 +137596,122 @@ function getWellKnown(origin, headers, signal) {
137590
137596
  return ResultAsync.fromSafePromise(parseBody2(response, origin, url22));
137591
137597
  });
137592
137598
  }
137599
+ var MppEndpointSchema = external_exports5.object({
137600
+ method: external_exports5.string(),
137601
+ path: external_exports5.string(),
137602
+ description: external_exports5.string().optional(),
137603
+ payment: external_exports5.object({
137604
+ intent: external_exports5.string().optional(),
137605
+ method: external_exports5.string().optional(),
137606
+ amount: external_exports5.string().optional(),
137607
+ currency: external_exports5.string().optional()
137608
+ }).optional()
137609
+ });
137610
+ var MppWellKnownDocSchema = external_exports5.object({
137611
+ version: external_exports5.number().optional(),
137612
+ name: external_exports5.string().optional(),
137613
+ description: external_exports5.string().optional(),
137614
+ categories: external_exports5.array(external_exports5.string()).optional(),
137615
+ methods: external_exports5.record(external_exports5.string(), external_exports5.unknown()).optional(),
137616
+ endpoints: external_exports5.array(MppEndpointSchema).default([]),
137617
+ docs: external_exports5.object({
137618
+ homepage: external_exports5.string().optional(),
137619
+ apiReference: external_exports5.string().optional()
137620
+ }).optional()
137621
+ });
137622
+ var MPP_DECIMALS = 6;
137623
+ function formatMppAmount(raw) {
137624
+ if (!raw) return void 0;
137625
+ const n = Number(raw);
137626
+ if (!Number.isFinite(n)) return void 0;
137627
+ return `$${(n / 10 ** MPP_DECIMALS).toFixed(MPP_DECIMALS)}`;
137628
+ }
137629
+ function toWellKnownParsed2(doc) {
137630
+ const routes = doc.endpoints.flatMap((entry) => {
137631
+ const method = parseMethod(entry.method);
137632
+ if (!method) return [];
137633
+ const path = normalizePath(entry.path);
137634
+ if (!path) return [];
137635
+ const price = formatMppAmount(entry.payment?.amount);
137636
+ return [{ path, method, ...price ? { price } : {} }];
137637
+ });
137638
+ return {
137639
+ routes,
137640
+ ...doc.description ? { instructions: doc.description } : {}
137641
+ };
137642
+ }
137643
+ async function parseBody3(response, url22) {
137644
+ try {
137645
+ const payload = await response.json();
137646
+ const doc = MppWellKnownDocSchema.safeParse(payload);
137647
+ if (!doc.success) return null;
137648
+ const parsed = WellKnownParsedSchema.safeParse(toWellKnownParsed2(doc.data));
137649
+ if (!parsed.success) return null;
137650
+ return {
137651
+ raw: payload,
137652
+ ...parsed.data,
137653
+ ...doc.data.name ? { title: doc.data.name } : {},
137654
+ ...doc.data.description ? { description: doc.data.description } : {},
137655
+ protocol: "mpp",
137656
+ fetchedUrl: url22
137657
+ };
137658
+ } catch {
137659
+ return null;
137660
+ }
137661
+ }
137662
+ function getMppWellKnown(origin, headers, signal) {
137663
+ const url22 = `${origin}/.well-known/mpp`;
137664
+ return fetchSafe(url22, {
137665
+ method: "GET",
137666
+ headers: { Accept: "application/json", ...headers },
137667
+ signal
137668
+ }).andThen((response) => {
137669
+ if (!response.ok) return okAsync(null);
137670
+ return ResultAsync.fromSafePromise(parseBody3(response, url22));
137671
+ });
137672
+ }
137673
+ function mergeError(a, b) {
137674
+ return {
137675
+ cause: a.cause === "network" || b.cause === "network" ? "network" : "timeout",
137676
+ message: `x402: ${a.message} | mpp: ${b.message}`
137677
+ };
137678
+ }
137679
+ function merge22(x402, mpp) {
137680
+ const seen = /* @__PURE__ */ new Set();
137681
+ const routes = [...x402.routes, ...mpp.routes].filter((r) => {
137682
+ const key = `${r.method} ${r.path}`;
137683
+ if (seen.has(key)) return false;
137684
+ seen.add(key);
137685
+ return true;
137686
+ });
137687
+ return {
137688
+ raw: { ...mpp.raw, ...x402.raw },
137689
+ routes,
137690
+ protocol: "x402+mpp",
137691
+ // Prefer x402 instructions; fall back to mpp
137692
+ ...x402.instructions || mpp.instructions ? { instructions: x402.instructions ?? mpp.instructions } : {},
137693
+ fetchedUrl: x402.fetchedUrl
137694
+ };
137695
+ }
137696
+ function getWellKnown(origin, headers, signal) {
137697
+ return new ResultAsync(
137698
+ Promise.all([
137699
+ getX402WellKnown(origin, headers, signal),
137700
+ getMppWellKnown(origin, headers, signal)
137701
+ ]).then(([x402Result, mppResult]) => {
137702
+ const x402 = x402Result.isOk() ? x402Result.value : null;
137703
+ const mpp = mppResult.isOk() ? mppResult.value : null;
137704
+ if (x402 && mpp) return ok(merge22(x402, mpp));
137705
+ if (x402) return ok(x402);
137706
+ if (mpp) return ok(mpp);
137707
+ if (x402Result.isErr() && mppResult.isErr())
137708
+ return err(mergeError(x402Result.error, mppResult.error));
137709
+ if (x402Result.isErr()) return err(x402Result.error);
137710
+ if (mppResult.isErr()) return err(mppResult.error);
137711
+ return ok(null);
137712
+ })
137713
+ );
137714
+ }
137593
137715
  function formatPrice(pricing) {
137594
137716
  if (pricing.pricingMode === "fixed") return `$${pricing.price}`;
137595
137717
  if (pricing.pricingMode === "range") return `$${pricing.minPrice}-$${pricing.maxPrice}`;
@@ -137614,15 +137736,27 @@ function checkL2ForOpenAPI(openApi) {
137614
137736
  source: "openapi"
137615
137737
  };
137616
137738
  }
137739
+ var WELL_KNOWN_PROTOCOLS = {
137740
+ x402: ["x402"],
137741
+ mpp: ["mpp"],
137742
+ "x402+mpp": ["x402", "mpp"]
137743
+ };
137617
137744
  function checkL2ForWellknown(wellKnown) {
137745
+ const protocols = WELL_KNOWN_PROTOCOLS[wellKnown.protocol];
137618
137746
  const routes = wellKnown.routes.map((route) => ({
137619
137747
  path: route.path,
137620
137748
  method: route.method,
137621
137749
  summary: `${route.method} ${route.path}`,
137622
137750
  authMode: "paid",
137623
- protocols: ["x402"]
137751
+ protocols,
137752
+ ...route.price ? { price: route.price } : {}
137624
137753
  }));
137625
- return { routes, source: "well-known/x402" };
137754
+ return {
137755
+ ...wellKnown.title ? { title: wellKnown.title } : {},
137756
+ ...wellKnown.description ? { description: wellKnown.description } : {},
137757
+ routes,
137758
+ source: `well-known/${wellKnown.protocol}`
137759
+ };
137626
137760
  }
137627
137761
  function checkL4ForOpenAPI(openApi) {
137628
137762
  if (openApi.guidance) {
@@ -137632,7 +137766,7 @@ function checkL4ForOpenAPI(openApi) {
137632
137766
  }
137633
137767
  function checkL4ForWellknown(wellKnown) {
137634
137768
  if (wellKnown.instructions) {
137635
- return { guidance: wellKnown.instructions, source: "well-known/x402" };
137769
+ return { guidance: wellKnown.instructions, source: `well-known/${wellKnown.protocol}` };
137636
137770
  }
137637
137771
  return null;
137638
137772
  }
@@ -137699,7 +137833,13 @@ async function discoverOriginSchema(options) {
137699
137833
  const base2 = {
137700
137834
  found: true,
137701
137835
  origin,
137702
- source: "well-known/x402",
137836
+ source: l2.source,
137837
+ ...l2.title ? {
137838
+ info: {
137839
+ title: l2.title,
137840
+ ...l2.description ? { description: l2.description } : {}
137841
+ }
137842
+ } : {},
137703
137843
  endpoints: l2.routes
137704
137844
  };
137705
137845
  return withGuidance(base2, l4, guidanceMode);
@@ -137918,6 +138058,19 @@ function getProbe(url22, headers, signal, inputBody) {
137918
138058
  ).then((results) => results.filter((r) => r !== null))
137919
138059
  );
137920
138060
  }
138061
+ function parseBase64Json(encoded) {
138062
+ return Result.fromThrowable(
138063
+ () => {
138064
+ const decoded = typeof Buffer !== "undefined" ? Buffer.from(encoded, "base64").toString("utf8") : atob(encoded);
138065
+ const parsed = JSON.parse(decoded);
138066
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
138067
+ throw new Error("not an object");
138068
+ }
138069
+ return parsed;
138070
+ },
138071
+ (e5) => e5
138072
+ )();
138073
+ }
137921
138074
  var TEMPO_DEFAULT_CHAIN_ID = 4217;
137922
138075
  function parseAuthParams2(segment) {
137923
138076
  const params = {};
@@ -137940,14 +138093,9 @@ function extractPaymentOptions4(wwwAuthenticate) {
137940
138093
  const description = params["description"];
137941
138094
  const requestStr = params["request"];
137942
138095
  if (!paymentMethod || !intent || !realm || !requestStr) continue;
137943
- let request;
137944
- try {
137945
- const parsed = JSON.parse(requestStr);
137946
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) continue;
137947
- request = parsed;
137948
- } catch {
137949
- continue;
137950
- }
138096
+ const requestResult = parseBase64Json(requestStr);
138097
+ if (requestResult.isErr()) continue;
138098
+ const request = requestResult.value;
137951
138099
  const asset = typeof request["currency"] === "string" ? request["currency"] : void 0;
137952
138100
  const amountRaw = request["amount"];
137953
138101
  const amount2 = typeof amountRaw === "string" ? amountRaw : typeof amountRaw === "number" ? String(amountRaw) : void 0;
@@ -138124,7 +138272,8 @@ function getL3ForProbe(probe, path, method) {
138124
138272
  ...inputSchema ? { inputSchema } : {},
138125
138273
  ...outputSchema ? { outputSchema } : {},
138126
138274
  ...paymentOptions.length ? { paymentOptions } : {},
138127
- ...probeResult.paymentRequiredBody !== void 0 ? { paymentRequiredBody: probeResult.paymentRequiredBody } : {}
138275
+ ...probeResult.paymentRequiredBody !== void 0 ? { paymentRequiredBody: probeResult.paymentRequiredBody } : {},
138276
+ ...probeResult.wwwAuthenticate ? { wwwAuthenticate: probeResult.wwwAuthenticate } : {}
138128
138277
  };
138129
138278
  }
138130
138279
  function getAdvisoriesForOpenAPI(openApi, path) {
@@ -138472,7 +138621,7 @@ var import_path2 = require("path");
138472
138621
  var import_url2 = require("url");
138473
138622
  function getVersion3() {
138474
138623
  if (true) {
138475
- return "0.11.2";
138624
+ return "0.11.3";
138476
138625
  }
138477
138626
  const __dirname2 = (0, import_path2.dirname)((0, import_url2.fileURLToPath)(importMetaUrl));
138478
138627
  const pkg2 = JSON.parse(
@@ -138733,7 +138882,7 @@ var import_path3 = require("path");
138733
138882
  var import_url4 = require("url");
138734
138883
  function getVersion4() {
138735
138884
  if (true) {
138736
- return "0.11.2";
138885
+ return "0.11.3";
138737
138886
  }
138738
138887
  const __dirname2 = (0, import_path3.dirname)((0, import_url4.fileURLToPath)(importMetaUrl));
138739
138888
  const pkg2 = JSON.parse(
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-27DZCYDB.js";
7
7
  import {
8
8
  INSTALL_PACKAGE_SPECIFIER
9
- } from "./chunk-ZRM5POEW.js";
9
+ } from "./chunk-LM3LUZC5.js";
10
10
  import {
11
11
  log,
12
12
  safeReadFile,
@@ -610,4 +610,4 @@ export {
610
610
  tryAddServer,
611
611
  addServer
612
612
  };
613
- //# sourceMappingURL=chunk-RWYXPIDK.js.map
613
+ //# sourceMappingURL=chunk-E5L2YGJQ.js.map
@@ -87,4 +87,4 @@ export {
87
87
  getBalances,
88
88
  listAccountsWithBalances
89
89
  };
90
- //# sourceMappingURL=chunk-QPHNB77R.js.map
90
+ //# sourceMappingURL=chunk-EC77HB5T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/operations/onboarding-cta.ts","../../src/operations/wallet.ts"],"sourcesContent":["import { getState } from '@/shared/state';\nimport { getBaseUrl } from '@/shared/utils';\n\nimport type { GlobalFlags } from '@/types';\n\nexport function shouldShowOnboardingCta(): boolean {\n return (getState().redeemedCodes?.length ?? 0) === 0;\n}\n\nexport function getOnboardingCta(flags: GlobalFlags) {\n const onboardLink = `${getBaseUrl(flags.dev)}/onboard`;\n\n return {\n message: `Welcome to AgentCash. To get started, complete onboarding at ${onboardLink} and receive your reward.`,\n onboardLink,\n };\n}\n","import { Network } from '@agentcash/networks';\n\nimport { getBalance } from '@/shared/balance';\nimport { getDepositLink } from '@/shared/utils';\n\nimport {\n shouldShowOnboardingCta,\n getOnboardingCta,\n} from '@/operations/onboarding-cta';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Wallets } from '@/wallet';\nimport type { SolanaAddress } from '@agentcash/networks';\n\nexport const getWalletInfo = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n return getBalances(surface, wallets, flags);\n};\n\nexport const listAccountsWithAddresses = (wallets: Wallets) => {\n const {\n evm: { address: evmAddress },\n svm: { address: svmAddress },\n } = wallets;\n return Object.values(Network).map(network => ({\n address:\n network === Network.SOLANA ? (svmAddress as SolanaAddress) : evmAddress,\n network,\n }));\n};\n\nexport const getBalances = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n const {\n evm: { address: evmAddress },\n svm: { address: svmAddress },\n } = wallets;\n const balanceResults = await Promise.all(\n Object.values(Network).map(network =>\n getBalance(\n surface,\n network === Network.SOLANA\n ? { address: svmAddress, network }\n : { address: evmAddress, network },\n flags\n )\n )\n );\n\n const accounts = balanceResults\n .filter(balance => balance.isOk())\n .map(balance => {\n const address =\n balance.value.paymentNetwork === Network.SOLANA\n ? (svmAddress as SolanaAddress)\n : evmAddress;\n\n const depositLink = getDepositLink(\n address,\n flags,\n balance.value.paymentNetwork\n );\n\n return {\n balance: balance.value.balance,\n network: balance.value.paymentNetwork,\n address,\n depositLink,\n };\n });\n\n const totalBalance = accounts.reduce(\n (acc, balance) => acc + balance.balance,\n 0\n );\n\n return {\n accounts,\n totalBalance,\n onboardingCta: shouldShowOnboardingCta()\n ? getOnboardingCta(flags)\n : undefined,\n };\n};\n\nexport const listAccountsWithBalances = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n return getBalances(surface, wallets, flags);\n};\n"],"mappings":";;;;;;;;;;;;;;;AAKO,SAAS,0BAAmC;AACjD,UAAQ,SAAS,EAAE,eAAe,UAAU,OAAO;AACrD;AAEO,SAAS,iBAAiB,OAAoB;AACnD,QAAM,cAAc,GAAG,WAAW,MAAM,GAAG,CAAC;AAE5C,SAAO;AAAA,IACL,SAAS,gEAAgE,WAAW;AAAA,IACpF;AAAA,EACF;AACF;;;ACFO,IAAM,gBAAgB,OAC3B,SACA,SACA,UACG;AACH,SAAO,YAAY,SAAS,SAAS,KAAK;AAC5C;AAEO,IAAM,4BAA4B,CAAC,YAAqB;AAC7D,QAAM;AAAA,IACJ,KAAK,EAAE,SAAS,WAAW;AAAA,IAC3B,KAAK,EAAE,SAAS,WAAW;AAAA,EAC7B,IAAI;AACJ,SAAO,OAAO,OAAO,OAAO,EAAE,IAAI,cAAY;AAAA,IAC5C,SACE,oCAA8B,aAA+B;AAAA,IAC/D;AAAA,EACF,EAAE;AACJ;AAEO,IAAM,cAAc,OACzB,SACA,SACA,UACG;AACH,QAAM;AAAA,IACJ,KAAK,EAAE,SAAS,WAAW;AAAA,IAC3B,KAAK,EAAE,SAAS,WAAW;AAAA,EAC7B,IAAI;AACJ,QAAM,iBAAiB,MAAM,QAAQ;AAAA,IACnC,OAAO,OAAO,OAAO,EAAE;AAAA,MAAI,aACzB;AAAA,QACE;AAAA,QACA,oCACI,EAAE,SAAS,YAAY,QAAQ,IAC/B,EAAE,SAAS,YAAY,QAAQ;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,eACd,OAAO,aAAW,QAAQ,KAAK,CAAC,EAChC,IAAI,aAAW;AACd,UAAM,UACJ,QAAQ,MAAM,2CACT,aACD;AAEN,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA,QAAQ,MAAM;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,SAAS,QAAQ,MAAM;AAAA,MACvB,SAAS,QAAQ,MAAM;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,eAAe,SAAS;AAAA,IAC5B,CAAC,KAAK,YAAY,MAAM,QAAQ;AAAA,IAChC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe,wBAAwB,IACnC,iBAAiB,KAAK,IACtB;AAAA,EACN;AACF;AAEO,IAAM,2BAA2B,OACtC,SACA,SACA,UACG;AACH,SAAO,YAAY,SAAS,SAAS,KAAK;AAC5C;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MCP_VERSION
3
- } from "./chunk-ZRM5POEW.js";
3
+ } from "./chunk-LM3LUZC5.js";
4
4
  import {
5
5
  getBaseUrl,
6
6
  safeFetchJson
@@ -49,4 +49,4 @@ async function submitErrorReport(surface, input, address, dev) {
49
49
  export {
50
50
  submitErrorReport
51
51
  };
52
- //# sourceMappingURL=chunk-3NHHOAYY.js.map
52
+ //# sourceMappingURL=chunk-KOPH43LN.js.map
@@ -4,7 +4,7 @@ import { dirname, join } from "path";
4
4
  import { fileURLToPath } from "url";
5
5
  function getVersion() {
6
6
  if (true) {
7
- return "0.11.2";
7
+ return "0.11.3";
8
8
  }
9
9
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
10
10
  const pkg = JSON.parse(
@@ -23,4 +23,4 @@ export {
23
23
  MCP_VERSION,
24
24
  INSTALL_PACKAGE_SPECIFIER
25
25
  };
26
- //# sourceMappingURL=chunk-ZRM5POEW.js.map
26
+ //# sourceMappingURL=chunk-LM3LUZC5.js.map
package/dist/esm/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-27DZCYDB.js";
5
5
  import {
6
6
  MCP_VERSION
7
- } from "./chunk-ZRM5POEW.js";
7
+ } from "./chunk-LM3LUZC5.js";
8
8
  import {
9
9
  paymentNetworks,
10
10
  paymentProtocols,
@@ -172,7 +172,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
172
172
  demandOption: true
173
173
  }),
174
174
  async (args) => {
175
- const { tryCommand } = await import("./try-OOK7FEWW.js");
175
+ const { tryCommand } = await import("./try-BY4Q2SI3.js");
176
176
  await tryCommand(args);
177
177
  }
178
178
  ).command(
@@ -260,7 +260,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
260
260
  description: "The invite code to redeem (optional)"
261
261
  }),
262
262
  async (args) => {
263
- const { onboardCommand } = await import("./onboard-F2E5VASS.js");
263
+ const { onboardCommand } = await import("./onboard-7YSFZQ63.js");
264
264
  await onboardCommand({ ...args, code: args.code ?? args.invite });
265
265
  }
266
266
  ).command(
@@ -271,7 +271,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
271
271
  "Deprecated alias. Prints migration guidance for 'balance' and 'accounts'.",
272
272
  (yargs3) => yargs3,
273
273
  async (args) => {
274
- const { legacyWalletInfoCommand } = await import("./wallet-5D2DDA5U.js");
274
+ const { legacyWalletInfoCommand } = await import("./wallet-TMC44VRS.js");
275
275
  await legacyWalletInfoCommand(args);
276
276
  }
277
277
  ).command(
@@ -279,7 +279,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
279
279
  "Deprecated alias. Prints migration guidance for 'balance'.",
280
280
  (yargs3) => yargs3,
281
281
  async (args) => {
282
- const { legacyWalletBalanceCommand } = await import("./wallet-5D2DDA5U.js");
282
+ const { legacyWalletBalanceCommand } = await import("./wallet-TMC44VRS.js");
283
283
  await legacyWalletBalanceCommand(args);
284
284
  }
285
285
  ).command(
@@ -291,7 +291,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
291
291
  demandOption: true
292
292
  }),
293
293
  async (args) => {
294
- const { legacyWalletRedeemCommand } = await import("./wallet-5D2DDA5U.js");
294
+ const { legacyWalletRedeemCommand } = await import("./wallet-TMC44VRS.js");
295
295
  await legacyWalletRedeemCommand(args);
296
296
  }
297
297
  ).command(
@@ -299,7 +299,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
299
299
  "Deprecated alias for wallet address lookup.",
300
300
  (yargs3) => yargs3,
301
301
  async (args) => {
302
- const { legacyWalletAddressCommand } = await import("./wallet-5D2DDA5U.js");
302
+ const { legacyWalletAddressCommand } = await import("./wallet-TMC44VRS.js");
303
303
  await legacyWalletAddressCommand(args);
304
304
  }
305
305
  ).demandCommand(1, "You must specify a wallet subcommand").strict(),
@@ -310,7 +310,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
310
310
  DESCRIPTIONS.getBalance.cli,
311
311
  (yargs2) => yargs2,
312
312
  async (args) => {
313
- const { getBalanceCommand } = await import("./wallet-5D2DDA5U.js");
313
+ const { getBalanceCommand } = await import("./wallet-TMC44VRS.js");
314
314
  await getBalanceCommand(args);
315
315
  }
316
316
  ).command(
@@ -318,7 +318,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
318
318
  DESCRIPTIONS.listAccounts.cli,
319
319
  (yargs2) => yargs2,
320
320
  async (args) => {
321
- const { listAccountsCommand } = await import("./wallet-5D2DDA5U.js");
321
+ const { listAccountsCommand } = await import("./wallet-TMC44VRS.js");
322
322
  await listAccountsCommand(args);
323
323
  }
324
324
  ).command(
@@ -330,7 +330,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
330
330
  demandOption: true
331
331
  }),
332
332
  async (args) => {
333
- const { walletRedeemCommand } = await import("./wallet-5D2DDA5U.js");
333
+ const { walletRedeemCommand } = await import("./wallet-TMC44VRS.js");
334
334
  await walletRedeemCommand(args);
335
335
  }
336
336
  ).command(
@@ -389,7 +389,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
389
389
  description: TOOL_PARAMS.reportError.fullReport
390
390
  }),
391
391
  async (args) => {
392
- const { reportErrorCommand } = await import("./report-error-QUXZHGCB.js");
392
+ const { reportErrorCommand } = await import("./report-error-T3Y7ZQ56.js");
393
393
  await reportErrorCommand(args);
394
394
  }
395
395
  ).command(
@@ -397,7 +397,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
397
397
  "Start the MCP server (default when no command specified)",
398
398
  (yargs2) => yargs2,
399
399
  async (args) => {
400
- const { serverCommand } = await import("./server-GJZF7DXM.js");
400
+ const { serverCommand } = await import("./server-3VK43ILT.js");
401
401
  await serverCommand(args);
402
402
  }
403
403
  ).command(
@@ -411,7 +411,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
411
411
  default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
412
412
  }),
413
413
  async (args) => {
414
- const { installMcpServer } = await import("./install-WOSQ5SPS.js");
414
+ const { installMcpServer } = await import("./install-SGVC2LKS.js");
415
415
  await installMcpServer(args);
416
416
  }
417
417
  ).command(
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KEUYTMIM.js";
4
4
  import {
5
5
  addServer
6
- } from "./chunk-RWYXPIDK.js";
6
+ } from "./chunk-E5L2YGJQ.js";
7
7
  import {
8
8
  wait
9
9
  } from "./chunk-DZNSJ2BA.js";
@@ -14,7 +14,7 @@ import {
14
14
  Clients,
15
15
  clientMetadata
16
16
  } from "./chunk-27DZCYDB.js";
17
- import "./chunk-ZRM5POEW.js";
17
+ import "./chunk-LM3LUZC5.js";
18
18
  import "./chunk-6XGAIMNK.js";
19
19
  import {
20
20
  getBalance
@@ -177,4 +177,4 @@ var installMcpServer = async (args) => {
177
177
  export {
178
178
  installMcpServer
179
179
  };
180
- //# sourceMappingURL=install-WOSQ5SPS.js.map
180
+ //# sourceMappingURL=install-SGVC2LKS.js.map
@@ -4,17 +4,17 @@ import {
4
4
  import {
5
5
  getPlatformPath,
6
6
  tryAddServer
7
- } from "./chunk-RWYXPIDK.js";
7
+ } from "./chunk-E5L2YGJQ.js";
8
8
  import "./chunk-DZNSJ2BA.js";
9
9
  import {
10
10
  redeemInviteCode
11
11
  } from "./chunk-LI5257FZ.js";
12
12
  import "./chunk-27DZCYDB.js";
13
- import "./chunk-ZRM5POEW.js";
13
+ import "./chunk-LM3LUZC5.js";
14
14
  import {
15
15
  getOnboardingCta,
16
16
  getWalletInfo
17
- } from "./chunk-QPHNB77R.js";
17
+ } from "./chunk-EC77HB5T.js";
18
18
  import "./chunk-6XGAIMNK.js";
19
19
  import "./chunk-C25DJ6BH.js";
20
20
  import {
@@ -382,4 +382,4 @@ var onboardCommand = async (args) => {
382
382
  export {
383
383
  onboardCommand
384
384
  };
385
- //# sourceMappingURL=onboard-F2E5VASS.js.map
385
+ //# sourceMappingURL=onboard-7YSFZQ63.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  submitErrorReport
3
- } from "./chunk-3NHHOAYY.js";
4
- import "./chunk-ZRM5POEW.js";
3
+ } from "./chunk-KOPH43LN.js";
4
+ import "./chunk-LM3LUZC5.js";
5
5
  import {
6
6
  getWalletOrExit
7
7
  } from "./chunk-OZD4QBHS.js";
@@ -34,4 +34,4 @@ var reportErrorCommand = async (args) => {
34
34
  export {
35
35
  reportErrorCommand
36
36
  };
37
- //# sourceMappingURL=report-error-QUXZHGCB.js.map
37
+ //# sourceMappingURL=report-error-T3Y7ZQ56.js.map
@@ -5,10 +5,10 @@ var serverCommand = async (args) => {
5
5
  "MCP server started. If you meant to explore the CLI, run: npx agentcash --help\n"
6
6
  );
7
7
  }
8
- const { startServer } = await import("./server-MBCZGZKK.js");
8
+ const { startServer } = await import("./server-76NAS5TN.js");
9
9
  await startServer(args);
10
10
  };
11
11
  export {
12
12
  serverCommand
13
13
  };
14
- //# sourceMappingURL=server-GJZF7DXM.js.map
14
+ //# sourceMappingURL=server-3VK43ILT.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  submitErrorReport
3
- } from "./chunk-3NHHOAYY.js";
3
+ } from "./chunk-KOPH43LN.js";
4
4
  import {
5
5
  redeemInviteCode
6
6
  } from "./chunk-LI5257FZ.js";
7
- import "./chunk-ZRM5POEW.js";
7
+ import "./chunk-LM3LUZC5.js";
8
8
  import {
9
9
  executeFetch
10
10
  } from "./chunk-PITBMGHN.js";
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  getBalances,
27
27
  listAccountsWithBalances
28
- } from "./chunk-QPHNB77R.js";
28
+ } from "./chunk-EC77HB5T.js";
29
29
  import "./chunk-6XGAIMNK.js";
30
30
  import "./chunk-C25DJ6BH.js";
31
31
  import {
@@ -594,7 +594,7 @@ import { dirname, join } from "path";
594
594
  import { fileURLToPath } from "url";
595
595
  function getVersion() {
596
596
  if (true) {
597
- return "0.11.2";
597
+ return "0.11.3";
598
598
  }
599
599
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
600
600
  const pkg = JSON.parse(
@@ -658,4 +658,4 @@ var startServer = async (flags) => {
658
658
  export {
659
659
  startServer
660
660
  };
661
- //# sourceMappingURL=server-MBCZGZKK.js.map
661
+ //# sourceMappingURL=server-76NAS5TN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getWalletInfo
3
- } from "./chunk-QPHNB77R.js";
3
+ } from "./chunk-EC77HB5T.js";
4
4
  import "./chunk-6XGAIMNK.js";
5
5
  import "./chunk-C25DJ6BH.js";
6
6
  import {
@@ -99,4 +99,4 @@ var tryCommand = async (args) => {
99
99
  export {
100
100
  tryCommand
101
101
  };
102
- //# sourceMappingURL=try-OOK7FEWW.js.map
102
+ //# sourceMappingURL=try-BY4Q2SI3.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getBalances,
9
9
  listAccountsWithAddresses,
10
10
  listAccountsWithBalances
11
- } from "./chunk-QPHNB77R.js";
11
+ } from "./chunk-EC77HB5T.js";
12
12
  import "./chunk-6XGAIMNK.js";
13
13
  import "./chunk-C25DJ6BH.js";
14
14
  import {
@@ -216,4 +216,4 @@ export {
216
216
  listAccountsCommand,
217
217
  walletRedeemCommand
218
218
  };
219
- //# sourceMappingURL=wallet-5D2DDA5U.js.map
219
+ //# sourceMappingURL=wallet-TMC44VRS.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcash",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "description": "Generic MCP server for calling x402-protected APIs with automatic payment handling",
5
5
  "type": "module",
6
6
  "main": "dist/esm/lib.js",
@@ -12,7 +12,7 @@
12
12
  "dist"
13
13
  ],
14
14
  "dependencies": {
15
- "@agentcash/discovery": "1.1.3",
15
+ "@agentcash/discovery": "1.3.0",
16
16
  "@clack/prompts": "^0.11.0",
17
17
  "@iarna/toml": "^2.2.5",
18
18
  "@modelcontextprotocol/sdk": "^1.27.0",
@@ -45,11 +45,11 @@
45
45
  "tsx": "^4.21.0",
46
46
  "typescript": "^5.9.3",
47
47
  "vitest": "^4.0.18",
48
+ "@agentcash/balance": "0.0.2",
48
49
  "@agentcash/eslint-config": "0.0.1",
49
50
  "@agentcash/networks": "0.0.2",
50
- "@agentcash/neverthrow": "1.0.1",
51
51
  "@agentcash/typescript-config": "0.0.1",
52
- "@agentcash/balance": "0.0.2"
52
+ "@agentcash/neverthrow": "1.0.1"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=20"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/operations/onboarding-cta.ts","../../src/operations/wallet.ts"],"sourcesContent":["import { getState } from '@/shared/state';\nimport { getBaseUrl } from '@/shared/utils';\n\nimport type { GlobalFlags } from '@/types';\n\nexport function shouldShowOnboardingCta(): boolean {\n return (getState().redeemedCodes?.length ?? 0) === 0;\n}\n\nexport function getOnboardingCta(flags: GlobalFlags) {\n const onboardLink = `${getBaseUrl(flags.dev)}/onboard`;\n\n return {\n message: `Welcome to AgentCash. To get started, complete onboarding at ${onboardLink} and receive your reward.`,\n onboardLink,\n };\n}\n","import { Network } from '@agentcash/networks';\n\nimport { getBalance } from '@/shared/balance';\nimport { getDepositLink } from '@/shared/utils';\n\nimport {\n shouldShowOnboardingCta,\n getOnboardingCta,\n} from '@/operations/onboarding-cta';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Wallets } from '@/wallet';\nimport type { SolanaAddress } from '@agentcash/networks';\n\nexport const getWalletInfo = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n return getBalances(surface, wallets, flags);\n};\n\nexport const listAccountsWithAddresses = (wallets: Wallets) => {\n const {\n evm: { address: evmAddress },\n svm: { address: svmAddress },\n } = wallets;\n return Object.values(Network).map(network => ({\n address: network === Network.SOLANA ? (svmAddress as SolanaAddress) : evmAddress,\n network,\n }));\n};\n\nexport const getBalances = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n const {\n evm: { address: evmAddress },\n svm: { address: svmAddress },\n } = wallets;\n const balanceResults = await Promise.all(\n Object.values(Network).map(network =>\n getBalance(\n surface,\n network === Network.SOLANA\n ? { address: svmAddress, network }\n : { address: evmAddress, network },\n flags\n )\n )\n );\n\n const accounts = balanceResults\n .filter(balance => balance.isOk())\n .map(balance => {\n const address =\n balance.value.paymentNetwork === Network.SOLANA\n ? (svmAddress as SolanaAddress)\n : evmAddress;\n\n const depositLink = getDepositLink(\n address,\n flags,\n balance.value.paymentNetwork\n );\n\n return {\n balance: balance.value.balance,\n network: balance.value.paymentNetwork,\n address,\n depositLink,\n };\n });\n\n const totalBalance = accounts.reduce(\n (acc, balance) => acc + balance.balance,\n 0\n );\n\n return {\n accounts,\n totalBalance,\n onboardingCta: shouldShowOnboardingCta()\n ? getOnboardingCta(flags)\n : undefined,\n };\n};\n\nexport const listAccountsWithBalances = async (\n surface: string,\n wallets: Wallets,\n flags: GlobalFlags\n) => {\n return getBalances(surface, wallets, flags);\n};\n"],"mappings":";;;;;;;;;;;;;;;AAKO,SAAS,0BAAmC;AACjD,UAAQ,SAAS,EAAE,eAAe,UAAU,OAAO;AACrD;AAEO,SAAS,iBAAiB,OAAoB;AACnD,QAAM,cAAc,GAAG,WAAW,MAAM,GAAG,CAAC;AAE5C,SAAO;AAAA,IACL,SAAS,gEAAgE,WAAW;AAAA,IACpF;AAAA,EACF;AACF;;;ACFO,IAAM,gBAAgB,OAC3B,SACA,SACA,UACG;AACH,SAAO,YAAY,SAAS,SAAS,KAAK;AAC5C;AAEO,IAAM,4BAA4B,CAAC,YAAqB;AAC7D,QAAM;AAAA,IACJ,KAAK,EAAE,SAAS,WAAW;AAAA,IAC3B,KAAK,EAAE,SAAS,WAAW;AAAA,EAC7B,IAAI;AACJ,SAAO,OAAO,OAAO,OAAO,EAAE,IAAI,cAAY;AAAA,IAC5C,SAAS,oCAA8B,aAA+B;AAAA,IACtE;AAAA,EACF,EAAE;AACJ;AAEO,IAAM,cAAc,OACzB,SACA,SACA,UACG;AACH,QAAM;AAAA,IACJ,KAAK,EAAE,SAAS,WAAW;AAAA,IAC3B,KAAK,EAAE,SAAS,WAAW;AAAA,EAC7B,IAAI;AACJ,QAAM,iBAAiB,MAAM,QAAQ;AAAA,IACnC,OAAO,OAAO,OAAO,EAAE;AAAA,MAAI,aACzB;AAAA,QACE;AAAA,QACA,oCACI,EAAE,SAAS,YAAY,QAAQ,IAC/B,EAAE,SAAS,YAAY,QAAQ;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,eACd,OAAO,aAAW,QAAQ,KAAK,CAAC,EAChC,IAAI,aAAW;AACd,UAAM,UACJ,QAAQ,MAAM,2CACT,aACD;AAEN,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA,QAAQ,MAAM;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,SAAS,QAAQ,MAAM;AAAA,MACvB,SAAS,QAAQ,MAAM;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,eAAe,SAAS;AAAA,IAC5B,CAAC,KAAK,YAAY,MAAM,QAAQ;AAAA,IAChC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe,wBAAwB,IACnC,iBAAiB,KAAK,IACtB;AAAA,EACN;AACF;AAEO,IAAM,2BAA2B,OACtC,SACA,SACA,UACG;AACH,SAAO,YAAY,SAAS,SAAS,KAAK;AAC5C;","names":[]}