agentcash 0.14.4 → 0.15.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.
Files changed (94) hide show
  1. package/dist/cjs/run-server.cjs +41391 -17817
  2. package/dist/esm/{add-skill-MO4YPAYM.js → add-skill-5HFBHQTQ.js} +10 -10
  3. package/dist/esm/{bridge-Q4YWH4WW.js → bridge-BOLVXKCD.js} +7 -7
  4. package/dist/esm/{check-3GPSLBNI.js → check-FEWY37RD.js} +7 -7
  5. package/dist/esm/{chunk-JKK2XT7N.js → chunk-2C7X7XIG.js} +3 -3
  6. package/dist/esm/{chunk-UCADMHNP.js → chunk-2E4ZDG2M.js} +2 -2
  7. package/dist/esm/{chunk-YUPRVVFP.js → chunk-4MCPQDKM.js} +3 -3
  8. package/dist/esm/{chunk-JX2XE6FD.js → chunk-4TIYIVZF.js} +1 -1
  9. package/dist/esm/chunk-4TIYIVZF.js.map +1 -0
  10. package/dist/esm/{chunk-ONGJJBKT.js → chunk-66AVEFTO.js} +4 -4
  11. package/dist/esm/{chunk-CUZFVI2X.js → chunk-7CV5CENJ.js} +2 -2
  12. package/dist/esm/{chunk-MSNAPI5G.js → chunk-BIO4Y27B.js} +3 -3
  13. package/dist/esm/{chunk-WRNDLZ3K.js → chunk-BM5W5OV2.js} +3 -3
  14. package/dist/esm/{chunk-BNFMFAEF.js → chunk-C7B6LEPE.js} +3 -3
  15. package/dist/esm/{chunk-JVMJVMWB.js → chunk-EDI77S36.js} +209 -84
  16. package/dist/esm/chunk-EDI77S36.js.map +1 -0
  17. package/dist/esm/{chunk-KJCWPVQE.js → chunk-EM6OE6WL.js} +3 -3
  18. package/dist/esm/chunk-FBGNOXFP.js +102 -0
  19. package/dist/esm/chunk-FBGNOXFP.js.map +1 -0
  20. package/dist/esm/{chunk-NPJV7AMV.js → chunk-HTGTKVXB.js} +6 -2
  21. package/dist/esm/chunk-HTGTKVXB.js.map +1 -0
  22. package/dist/esm/{chunk-L4U6AJW3.js → chunk-K3WB4R2P.js} +3 -2
  23. package/dist/esm/{chunk-L4U6AJW3.js.map → chunk-K3WB4R2P.js.map} +1 -1
  24. package/dist/esm/{chunk-2OKYUR7B.js → chunk-MKA2PTOE.js} +5 -7
  25. package/dist/esm/chunk-MKA2PTOE.js.map +1 -0
  26. package/dist/esm/{chunk-2SZ6MZS3.js → chunk-O57QVTLM.js} +2 -2
  27. package/dist/esm/{chunk-QOMU3YLK.js → chunk-PQXKQJIU.js} +2 -2
  28. package/dist/esm/{chunk-BFOYXXLG.js → chunk-RAS5DZPQ.js} +15 -1
  29. package/dist/esm/chunk-RAS5DZPQ.js.map +1 -0
  30. package/dist/esm/{chunk-7KT6UCTT.js → chunk-SLTRGQ7W.js} +8 -3
  31. package/dist/esm/{chunk-7KT6UCTT.js.map → chunk-SLTRGQ7W.js.map} +1 -1
  32. package/dist/esm/chunk-TX7S7QGG.js +146 -0
  33. package/dist/esm/chunk-TX7S7QGG.js.map +1 -0
  34. package/dist/esm/{chunk-3PYQIEMA.js → chunk-W37JKCLN.js} +41 -3
  35. package/dist/esm/chunk-W37JKCLN.js.map +1 -0
  36. package/dist/esm/{chunk-TTAO2EJK.js → chunk-YPFBBTA2.js} +1 -1
  37. package/dist/esm/chunk-YPFBBTA2.js.map +1 -0
  38. package/dist/esm/{discover-TE2BZJMA.js → discover-TXEJNB5A.js} +5 -5
  39. package/dist/esm/{fetch-ZAECKP5C.js → fetch-AFKCCCHZ.js} +12 -11
  40. package/dist/esm/{fetch-ZAECKP5C.js.map → fetch-AFKCCCHZ.js.map} +1 -1
  41. package/dist/esm/{fund-HHL4QEU5.js → fund-FCOUEG7T.js} +5 -5
  42. package/dist/esm/index.js +70 -34
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/{install-EOF353SY.js → install-LAWJMMPO.js} +8 -8
  45. package/dist/esm/{onboard-EMUCEMFN.js → onboard-W7CUGJJM.js} +12 -12
  46. package/dist/esm/{origins-MBWKIWLR.js → origins-EVVF3N4G.js} +6 -6
  47. package/dist/esm/{register-NSQPYCWI.js → register-5KLJDRG4.js} +62 -21
  48. package/dist/esm/register-5KLJDRG4.js.map +1 -0
  49. package/dist/esm/{report-error-7RCKDM2N.js → report-error-HN4YXEOC.js} +5 -5
  50. package/dist/esm/{search-SYBTWXON.js → search-MEGI3KJW.js} +11 -10
  51. package/dist/esm/{search-SYBTWXON.js.map → search-MEGI3KJW.js.map} +1 -1
  52. package/dist/esm/{server-ZIKTGUST.js → server-7QJB55AW.js} +2 -2
  53. package/dist/esm/{server-NHOKDQHU.js → server-M7SLAGFR.js} +83 -18
  54. package/dist/esm/server-M7SLAGFR.js.map +1 -0
  55. package/dist/esm/sessions-NUOSJC6M.js +74 -0
  56. package/dist/esm/sessions-NUOSJC6M.js.map +1 -0
  57. package/dist/esm/{settings-RLSKK5RM.js → settings-SBL7WIBQ.js} +2 -2
  58. package/dist/esm/{try-MXWZSHRS.js → try-4RHB5KHZ.js} +10 -10
  59. package/dist/esm/try-4RHB5KHZ.js.map +1 -0
  60. package/dist/esm/{wallet-QOS3FPSF.js → wallet-PY4ZDHNZ.js} +12 -12
  61. package/package.json +8 -8
  62. package/dist/esm/chunk-2OKYUR7B.js.map +0 -1
  63. package/dist/esm/chunk-3PYQIEMA.js.map +0 -1
  64. package/dist/esm/chunk-BFOYXXLG.js.map +0 -1
  65. package/dist/esm/chunk-JVMJVMWB.js.map +0 -1
  66. package/dist/esm/chunk-JX2XE6FD.js.map +0 -1
  67. package/dist/esm/chunk-NPJV7AMV.js.map +0 -1
  68. package/dist/esm/chunk-TTAO2EJK.js.map +0 -1
  69. package/dist/esm/register-NSQPYCWI.js.map +0 -1
  70. package/dist/esm/server-NHOKDQHU.js.map +0 -1
  71. package/dist/esm/try-MXWZSHRS.js.map +0 -1
  72. /package/dist/esm/{add-skill-MO4YPAYM.js.map → add-skill-5HFBHQTQ.js.map} +0 -0
  73. /package/dist/esm/{bridge-Q4YWH4WW.js.map → bridge-BOLVXKCD.js.map} +0 -0
  74. /package/dist/esm/{check-3GPSLBNI.js.map → check-FEWY37RD.js.map} +0 -0
  75. /package/dist/esm/{chunk-JKK2XT7N.js.map → chunk-2C7X7XIG.js.map} +0 -0
  76. /package/dist/esm/{chunk-UCADMHNP.js.map → chunk-2E4ZDG2M.js.map} +0 -0
  77. /package/dist/esm/{chunk-YUPRVVFP.js.map → chunk-4MCPQDKM.js.map} +0 -0
  78. /package/dist/esm/{chunk-ONGJJBKT.js.map → chunk-66AVEFTO.js.map} +0 -0
  79. /package/dist/esm/{chunk-CUZFVI2X.js.map → chunk-7CV5CENJ.js.map} +0 -0
  80. /package/dist/esm/{chunk-MSNAPI5G.js.map → chunk-BIO4Y27B.js.map} +0 -0
  81. /package/dist/esm/{chunk-WRNDLZ3K.js.map → chunk-BM5W5OV2.js.map} +0 -0
  82. /package/dist/esm/{chunk-BNFMFAEF.js.map → chunk-C7B6LEPE.js.map} +0 -0
  83. /package/dist/esm/{chunk-KJCWPVQE.js.map → chunk-EM6OE6WL.js.map} +0 -0
  84. /package/dist/esm/{chunk-2SZ6MZS3.js.map → chunk-O57QVTLM.js.map} +0 -0
  85. /package/dist/esm/{chunk-QOMU3YLK.js.map → chunk-PQXKQJIU.js.map} +0 -0
  86. /package/dist/esm/{discover-TE2BZJMA.js.map → discover-TXEJNB5A.js.map} +0 -0
  87. /package/dist/esm/{fund-HHL4QEU5.js.map → fund-FCOUEG7T.js.map} +0 -0
  88. /package/dist/esm/{install-EOF353SY.js.map → install-LAWJMMPO.js.map} +0 -0
  89. /package/dist/esm/{onboard-EMUCEMFN.js.map → onboard-W7CUGJJM.js.map} +0 -0
  90. /package/dist/esm/{origins-MBWKIWLR.js.map → origins-EVVF3N4G.js.map} +0 -0
  91. /package/dist/esm/{report-error-7RCKDM2N.js.map → report-error-HN4YXEOC.js.map} +0 -0
  92. /package/dist/esm/{server-ZIKTGUST.js.map → server-7QJB55AW.js.map} +0 -0
  93. /package/dist/esm/{settings-RLSKK5RM.js.map → settings-SBL7WIBQ.js.map} +0 -0
  94. /package/dist/esm/{wallet-QOS3FPSF.js.map → wallet-PY4ZDHNZ.js.map} +0 -0
@@ -1,29 +1,29 @@
1
1
  import {
2
2
  resolveOrigin
3
- } from "./chunk-2SZ6MZS3.js";
3
+ } from "./chunk-O57QVTLM.js";
4
4
  import {
5
5
  installSkills
6
6
  } from "./chunk-FVVSNDQR.js";
7
7
  import {
8
8
  addUserOrigin
9
9
  } from "./chunk-YIU364NZ.js";
10
- import "./chunk-L4U6AJW3.js";
11
- import "./chunk-3PYQIEMA.js";
10
+ import "./chunk-K3WB4R2P.js";
11
+ import "./chunk-W37JKCLN.js";
12
12
  import "./chunk-KVSTJRSJ.js";
13
13
  import "./chunk-FB5CMO3J.js";
14
14
  import "./chunk-U6FRXL3X.js";
15
- import {
16
- errorResponse,
17
- outputAndExit,
18
- successResponse
19
- } from "./chunk-7EBJ4BCH.js";
20
15
  import {
21
16
  safeMkdir,
22
17
  safeMkdtemp,
23
18
  safeRm,
24
19
  safeWriteFile
25
20
  } from "./chunk-QZCSZB7E.js";
26
- import "./chunk-TTAO2EJK.js";
21
+ import {
22
+ errorResponse,
23
+ outputAndExit,
24
+ successResponse
25
+ } from "./chunk-7EBJ4BCH.js";
26
+ import "./chunk-YPFBBTA2.js";
27
27
  import "./chunk-YWNBUUBR.js";
28
28
  import "./chunk-ITCDZXBZ.js";
29
29
 
@@ -97,4 +97,4 @@ var addSkillCommand = async (input) => {
97
97
  export {
98
98
  addSkillCommand
99
99
  };
100
- //# sourceMappingURL=add-skill-MO4YPAYM.js.map
100
+ //# sourceMappingURL=add-skill-5HFBHQTQ.js.map
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  bridge,
3
3
  bridgeSchema
4
- } from "./chunk-2OKYUR7B.js";
4
+ } from "./chunk-MKA2PTOE.js";
5
5
  import {
6
6
  DESCRIPTIONS
7
- } from "./chunk-3PYQIEMA.js";
8
- import "./chunk-BFOYXXLG.js";
7
+ } from "./chunk-W37JKCLN.js";
8
+ import "./chunk-RAS5DZPQ.js";
9
9
  import {
10
10
  getWalletOrExit
11
11
  } from "./chunk-7AT3NXJ2.js";
12
12
  import "./chunk-F3KGAMIA.js";
13
- import "./chunk-NPJV7AMV.js";
13
+ import "./chunk-HTGTKVXB.js";
14
14
  import "./chunk-KVSTJRSJ.js";
15
15
  import "./chunk-U6FRXL3X.js";
16
+ import "./chunk-QZCSZB7E.js";
16
17
  import {
17
18
  errorResponse,
18
19
  fromNeverthrowError,
19
20
  outputAndExit,
20
21
  successResponse
21
22
  } from "./chunk-7EBJ4BCH.js";
22
- import "./chunk-QZCSZB7E.js";
23
- import "./chunk-TTAO2EJK.js";
23
+ import "./chunk-YPFBBTA2.js";
24
24
  import "./chunk-YWNBUUBR.js";
25
25
  import "./chunk-ITCDZXBZ.js";
26
26
 
@@ -54,4 +54,4 @@ var bridgeCommand = async (args) => {
54
54
  export {
55
55
  bridgeCommand
56
56
  };
57
- //# sourceMappingURL=bridge-Q4YWH4WW.js.map
57
+ //# sourceMappingURL=bridge-BOLVXKCD.js.map
@@ -3,9 +3,9 @@ import {
3
3
  } from "./chunk-5CMVFNXO.js";
4
4
  import {
5
5
  cliRequestSchema
6
- } from "./chunk-JKK2XT7N.js";
7
- import "./chunk-7KT6UCTT.js";
8
- import "./chunk-3PYQIEMA.js";
6
+ } from "./chunk-2C7X7XIG.js";
7
+ import "./chunk-SLTRGQ7W.js";
8
+ import "./chunk-W37JKCLN.js";
9
9
  import "./chunk-IKPLMFAK.js";
10
10
  import {
11
11
  RequestMethod
@@ -14,16 +14,16 @@ import {
14
14
  getWalletOrExit
15
15
  } from "./chunk-7AT3NXJ2.js";
16
16
  import "./chunk-F3KGAMIA.js";
17
- import "./chunk-NPJV7AMV.js";
17
+ import "./chunk-HTGTKVXB.js";
18
18
  import "./chunk-KVSTJRSJ.js";
19
19
  import "./chunk-FB5CMO3J.js";
20
+ import "./chunk-QZCSZB7E.js";
20
21
  import {
21
22
  errorResponse,
22
23
  outputAndExit,
23
24
  successResponse
24
25
  } from "./chunk-7EBJ4BCH.js";
25
- import "./chunk-QZCSZB7E.js";
26
- import "./chunk-TTAO2EJK.js";
26
+ import "./chunk-YPFBBTA2.js";
27
27
  import "./chunk-YWNBUUBR.js";
28
28
  import "./chunk-ITCDZXBZ.js";
29
29
 
@@ -69,4 +69,4 @@ var checkCommand = async (args) => {
69
69
  export {
70
70
  checkCommand
71
71
  };
72
- //# sourceMappingURL=check-3GPSLBNI.js.map
72
+ //# sourceMappingURL=check-FEWY37RD.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  coreRequestSchema,
3
3
  fetchShape
4
- } from "./chunk-7KT6UCTT.js";
4
+ } from "./chunk-SLTRGQ7W.js";
5
5
  import {
6
6
  REQUEST_PARAMS
7
- } from "./chunk-3PYQIEMA.js";
7
+ } from "./chunk-W37JKCLN.js";
8
8
 
9
9
  // src/shared/request/schemas/cli.ts
10
10
  import z from "zod";
@@ -46,4 +46,4 @@ export {
46
46
  cliRequestSchema,
47
47
  cliFetchRequestSchema
48
48
  };
49
- //# sourceMappingURL=chunk-JKK2XT7N.js.map
49
+ //# sourceMappingURL=chunk-2C7X7XIG.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  safeFetch,
6
6
  safeFetchJson
7
- } from "./chunk-BFOYXXLG.js";
7
+ } from "./chunk-RAS5DZPQ.js";
8
8
  import {
9
9
  safeMkdir,
10
10
  safeMkdtemp,
@@ -163,4 +163,4 @@ async function installGitHubSkill(surface, source, options) {
163
163
  export {
164
164
  installGitHubSkill
165
165
  };
166
- //# sourceMappingURL=chunk-UCADMHNP.js.map
166
+ //# sourceMappingURL=chunk-2E4ZDG2M.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-ISF2WVEZ.js";
4
4
  import {
5
5
  getBalance
6
- } from "./chunk-KJCWPVQE.js";
6
+ } from "./chunk-EM6OE6WL.js";
7
7
  import {
8
8
  Network
9
- } from "./chunk-NPJV7AMV.js";
9
+ } from "./chunk-HTGTKVXB.js";
10
10
  import {
11
11
  getBaseUrl,
12
12
  getDepositLink
@@ -90,4 +90,4 @@ export {
90
90
  getBalances,
91
91
  listAccountsWithBalances
92
92
  };
93
- //# sourceMappingURL=chunk-YUPRVVFP.js.map
93
+ //# sourceMappingURL=chunk-4MCPQDKM.js.map
@@ -34,4 +34,4 @@ export {
34
34
  setSettings,
35
35
  DEFAULT_MAX_AMOUNT
36
36
  };
37
- //# sourceMappingURL=chunk-JX2XE6FD.js.map
37
+ //# sourceMappingURL=chunk-4TIYIVZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/settings.ts","../../src/operations/fetch/types.ts"],"sourcesContent":["import z from 'zod';\nimport fs from 'fs';\n\nimport { configFile } from './fs';\n\nconst SETTINGS_FILE = configFile('settings.json');\n\nconst settingsSchema = z\n .object({\n maxAmount: z.number().positive(),\n })\n .partial();\n\ntype Settings = z.infer<typeof settingsSchema>;\n\nexport const getSettings = (): Settings => {\n if (!fs.existsSync(SETTINGS_FILE)) {\n return {};\n }\n\n const content = fs.readFileSync(SETTINGS_FILE, 'utf-8');\n const result = settingsSchema.safeParse(JSON.parse(content));\n if (!result.success) {\n return {};\n }\n return result.data;\n};\n\nexport const setSettings = (settings: Settings) => {\n const existing = getSettings();\n const newSettings = settingsSchema.parse({ ...existing, ...settings });\n fs.writeFileSync(SETTINGS_FILE, JSON.stringify(newSettings, null, 2));\n};\n","import type { GlobalFlags } from '@/types';\nimport type { Wallets } from '@/wallet';\nimport type { PaymentProtocol } from '@/shared/protocols/types';\nimport type z from 'zod';\nimport type { fetchShape } from '@/shared/request/schemas/core';\nimport type { Network } from '@agentcash/networks';\n\n// Type aliases (not interfaces) so PaymentInfo remains assignable to\n// JsonStringifyValue in successResponse — interfaces are augmentable and\n// therefore not assignable to index-signature types.\n/* eslint-disable @typescript-eslint/consistent-type-definitions */\ntype SettledPayment = { success: boolean; transactionHash: string };\n\ntype ChannelPayment = { success: boolean; channelId: string };\n\ntype PaymentInfo = {\n protocol: PaymentProtocol;\n price: string;\n network: Network;\n payment: SettledPayment | ChannelPayment | null;\n};\n/* eslint-enable @typescript-eslint/consistent-type-definitions */\n\nexport interface ExecuteFetchResult {\n response: Response;\n paymentInfo: PaymentInfo | null;\n}\n\n/** Default max amount (in USD/USDC) allowed without explicit opt-in. */\nexport const DEFAULT_MAX_AMOUNT = 5;\n\nexport interface ExecuteFetchOptions {\n surface: string;\n wallets: Wallets;\n flags: GlobalFlags;\n params: z.infer<z.ZodObject<typeof fetchShape>>;\n}\n"],"mappings":";;;;;AAAA,OAAO,OAAO;AACd,OAAO,QAAQ;AAIf,IAAM,gBAAgB,WAAW,eAAe;AAEhD,IAAM,iBAAiB,EACpB,OAAO;AAAA,EACN,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC,EACA,QAAQ;AAIJ,IAAM,cAAc,MAAgB;AACzC,MAAI,CAAC,GAAG,WAAW,aAAa,GAAG;AACjC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAU,GAAG,aAAa,eAAe,OAAO;AACtD,QAAM,SAAS,eAAe,UAAU,KAAK,MAAM,OAAO,CAAC;AAC3D,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,OAAO;AAChB;AAEO,IAAM,cAAc,CAAC,aAAuB;AACjD,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,eAAe,MAAM,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AACrE,KAAG,cAAc,eAAe,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AACtE;;;ACHO,IAAM,qBAAqB;","names":[]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  TOOL_PARAMS
3
- } from "./chunk-3PYQIEMA.js";
3
+ } from "./chunk-W37JKCLN.js";
4
4
  import {
5
5
  executeFetch
6
- } from "./chunk-JVMJVMWB.js";
6
+ } from "./chunk-EDI77S36.js";
7
7
  import {
8
8
  safeParseResponse
9
- } from "./chunk-BFOYXXLG.js";
9
+ } from "./chunk-RAS5DZPQ.js";
10
10
  import {
11
11
  log
12
12
  } from "./chunk-QZCSZB7E.js";
@@ -89,4 +89,4 @@ export {
89
89
  searchSchema,
90
90
  search
91
91
  };
92
- //# sourceMappingURL=chunk-ONGJJBKT.js.map
92
+ //# sourceMappingURL=chunk-66AVEFTO.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-27DZCYDB.js";
7
7
  import {
8
8
  INSTALL_PACKAGE_SPECIFIER
9
- } from "./chunk-QOMU3YLK.js";
9
+ } from "./chunk-PQXKQJIU.js";
10
10
  import {
11
11
  log,
12
12
  safeReadFile,
@@ -628,4 +628,4 @@ export {
628
628
  tryAddServer,
629
629
  addServer
630
630
  };
631
- //# sourceMappingURL=chunk-CUZFVI2X.js.map
631
+ //# sourceMappingURL=chunk-7CV5CENJ.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-ISF2WVEZ.js";
5
5
  import {
6
6
  safeFetchJson
7
- } from "./chunk-BFOYXXLG.js";
7
+ } from "./chunk-RAS5DZPQ.js";
8
8
  import {
9
9
  optionalNetworkSchema
10
- } from "./chunk-NPJV7AMV.js";
10
+ } from "./chunk-HTGTKVXB.js";
11
11
  import {
12
12
  getBaseUrl
13
13
  } from "./chunk-U6FRXL3X.js";
@@ -87,4 +87,4 @@ var redeemInviteCode = async (surface, args, globalArgs, wallets) => {
87
87
  export {
88
88
  redeemInviteCode
89
89
  };
90
- //# sourceMappingURL=chunk-MSNAPI5G.js.map
90
+ //# sourceMappingURL=chunk-BIO4Y27B.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MCP_VERSION
3
- } from "./chunk-QOMU3YLK.js";
3
+ } from "./chunk-PQXKQJIU.js";
4
4
  import {
5
5
  safeFetchJson
6
- } from "./chunk-BFOYXXLG.js";
6
+ } from "./chunk-RAS5DZPQ.js";
7
7
  import {
8
8
  getBaseUrl
9
9
  } from "./chunk-U6FRXL3X.js";
@@ -51,4 +51,4 @@ async function submitErrorReport(surface, input, address, dev) {
51
51
  export {
52
52
  submitErrorReport
53
53
  };
54
- //# sourceMappingURL=chunk-WRNDLZ3K.js.map
54
+ //# sourceMappingURL=chunk-BM5W5OV2.js.map
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-DZNSJ2BA.js";
4
4
  import {
5
5
  redeemInviteCode
6
- } from "./chunk-MSNAPI5G.js";
6
+ } from "./chunk-BIO4Y27B.js";
7
7
  import {
8
8
  EVM_CONFIGS,
9
9
  getTxExplorerUrl
10
- } from "./chunk-NPJV7AMV.js";
10
+ } from "./chunk-HTGTKVXB.js";
11
11
  import {
12
12
  getDepositLink
13
13
  } from "./chunk-U6FRXL3X.js";
@@ -106,4 +106,4 @@ var promptDeposit = async (surface, args, wallets) => {
106
106
  export {
107
107
  promptDeposit
108
108
  };
109
- //# sourceMappingURL=chunk-BNFMFAEF.js.map
109
+ //# sourceMappingURL=chunk-C7B6LEPE.js.map
@@ -1,23 +1,34 @@
1
+ import {
2
+ assertTempoUsdc,
3
+ createTempoClient,
4
+ mppErr,
5
+ mppOk,
6
+ mppResultFromPromise,
7
+ safeCreateMppCredential,
8
+ safeGetMppChallenge,
9
+ safeGetMppReceipt,
10
+ sessionRequestFailedErr
11
+ } from "./chunk-FBGNOXFP.js";
1
12
  import {
2
13
  DEFAULT_MAX_AMOUNT,
3
14
  getSettings
4
- } from "./chunk-JX2XE6FD.js";
15
+ } from "./chunk-4TIYIVZF.js";
5
16
  import {
6
17
  buildRequest
7
18
  } from "./chunk-IKPLMFAK.js";
8
19
  import {
9
20
  getBalance
10
- } from "./chunk-KJCWPVQE.js";
21
+ } from "./chunk-EM6OE6WL.js";
11
22
  import {
12
23
  fetchErr,
13
24
  fetchOk,
14
- safeFetch
15
- } from "./chunk-BFOYXXLG.js";
25
+ safeFetch,
26
+ safeReadResponseText
27
+ } from "./chunk-RAS5DZPQ.js";
16
28
  import {
17
- EVM_CONFIGS,
18
29
  caip2ToNetwork,
19
30
  networkToCaip2
20
- } from "./chunk-NPJV7AMV.js";
31
+ } from "./chunk-HTGTKVXB.js";
21
32
  import {
22
33
  formatUsd,
23
34
  getDepositLink,
@@ -28,7 +39,7 @@ import {
28
39
  } from "./chunk-QZCSZB7E.js";
29
40
  import {
30
41
  BLACKLISTED_ORIGINS
31
- } from "./chunk-TTAO2EJK.js";
42
+ } from "./chunk-YPFBBTA2.js";
32
43
  import {
33
44
  err,
34
45
  ok,
@@ -214,9 +225,10 @@ var x402ResultFromPromise = (surface, promise, error) => resultFromPromise(error
214
225
  var x402ResultFromThrowable = (surface, fn, error) => resultFromThrowable(errorType, surface, fn, error);
215
226
  var x402ProbeClient = new x402HTTPClient(new x402Client());
216
227
  var safeGetPaymentRequired = (surface, response) => {
228
+ const probe = response.clone();
217
229
  return x402ResultFromPromise(
218
230
  surface,
219
- response.json().then(
231
+ probe.json().then(
220
232
  (json) => x402ProbeClient.getPaymentRequiredResponse(
221
233
  (name) => response.headers.get(name),
222
234
  json
@@ -379,62 +391,7 @@ function detectPaymentProtocols(response) {
379
391
  }
380
392
 
381
393
  // src/shared/protocols/mpp/handle-payment.ts
382
- import { formatUnits } from "viem";
383
-
384
- // src/shared/protocols/mpp/index.ts
385
- import { Challenge, Receipt } from "mppx";
386
- import { Methods } from "mppx/tempo";
387
- import { Mppx, tempo as tempoMethod } from "mppx/client";
388
- import { createClient, http as http2 } from "viem";
389
- import { tempo } from "viem/chains";
390
- var errorType2 = "mpp";
391
- var mppOk = (value) => ok(value);
392
- var mppErr = (surface, error) => err(errorType2, surface, error);
393
- var mppResultFromPromise = (surface, promise, error) => resultFromPromise(errorType2, surface, promise, error);
394
- var mppResultFromThrowable = (surface, fn, error) => resultFromThrowable(errorType2, surface, fn, error);
395
- var safeGetMppChallenge = (surface, response) => {
396
- return mppResultFromThrowable(
397
- surface,
398
- () => Challenge.fromResponse(response, { methods: [Methods.charge] }),
399
- (error) => ({
400
- cause: "parse_mpp_challenge",
401
- message: error instanceof Error ? error.message : "Failed to parse MPP challenge from response"
402
- })
403
- );
404
- };
405
- var safeCreateMppCredential = (surface, wallets, response) => {
406
- const TEMPO_RPC_URL = "https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz";
407
- const client = Mppx.create({
408
- polyfill: false,
409
- methods: [
410
- tempoMethod({
411
- account: wallets.evm,
412
- getClient: () => createClient({
413
- chain: tempo,
414
- transport: http2(TEMPO_RPC_URL)
415
- })
416
- })
417
- ]
418
- });
419
- return mppResultFromPromise(
420
- surface,
421
- client.createCredential(response),
422
- (error) => ({
423
- cause: "create_mpp_credential",
424
- message: error instanceof Error ? error.message : "Failed to create MPP credential"
425
- })
426
- );
427
- };
428
- var safeGetMppReceipt = (surface, response) => {
429
- return mppResultFromThrowable(
430
- surface,
431
- () => Receipt.fromResponse(response),
432
- (error) => ({
433
- cause: "parse_mpp_receipt",
434
- message: error instanceof Error ? error.message : "Failed to parse MPP receipt from response"
435
- })
436
- );
437
- };
394
+ import { formatUnits as formatUnits2 } from "viem";
438
395
 
439
396
  // src/shared/protocols/before-payment.ts
440
397
  var beforePayment = async (props) => {
@@ -473,12 +430,176 @@ var insufficientBalanceErrorMessage = (props, balance) => {
473
430
  ].join("\n");
474
431
  };
475
432
 
433
+ // src/shared/protocols/mpp/session/handle-session-payment.ts
434
+ import { formatUnits } from "viem";
435
+ import { tempo as tempoClient } from "mppx/client";
436
+
437
+ // src/shared/protocols/mpp/session/run-request-session.ts
438
+ async function runRequestSession(surface, sm, url, init, channelId) {
439
+ const fetchInit = {
440
+ ...init,
441
+ ...channelId ? { context: { channelId } } : {}
442
+ };
443
+ const fetchResult = await mppResultFromPromise(
444
+ surface,
445
+ sm.fetch(url, fetchInit),
446
+ (e) => sessionRequestFailedErr(e)
447
+ );
448
+ if (fetchResult.isErr()) return fetchResult;
449
+ const paymentResponse = fetchResult.value;
450
+ if (paymentResponse.status === 402) {
451
+ const body = await safeReadResponseText(surface, paymentResponse).unwrapOr(
452
+ ""
453
+ );
454
+ const detail = body ? `: ${body}` : "";
455
+ return mppErr(surface, {
456
+ cause: "mpp_payment_rejected",
457
+ message: `MPP session payment was rejected by the server (402)${detail}`
458
+ });
459
+ }
460
+ return mppOk({
461
+ response: paymentResponse,
462
+ receipt: paymentResponse.receipt
463
+ });
464
+ }
465
+
466
+ // src/shared/protocols/mpp/session/run-streaming-session.ts
467
+ var MAX_BUFFERED_BYTES = 50 * 1024 * 1024;
468
+ async function runStreamingSession(surface, sm, url, init, channelId) {
469
+ let latestReceipt = null;
470
+ const { signal, ...rest } = init;
471
+ const sseResult = await sm.sse(url, {
472
+ ...rest,
473
+ ...signal ? { signal } : {},
474
+ ...channelId ? { context: { channelId } } : {},
475
+ onReceipt: (receipt) => {
476
+ latestReceipt = receipt;
477
+ }
478
+ });
479
+ const chunks = [];
480
+ let bytes = 0;
481
+ for await (const chunk of sseResult) {
482
+ bytes += chunk.length;
483
+ chunks.push(chunk);
484
+ if (bytes > MAX_BUFFERED_BYTES) {
485
+ return mppErr(surface, {
486
+ cause: "mpp_session_response_too_large",
487
+ message: `Streaming response exceeded the ${MAX_BUFFERED_BYTES}-byte buffering cap (got ${bytes} bytes).`
488
+ });
489
+ }
490
+ }
491
+ const response = new Response(chunks.join("\n"), {
492
+ status: 200,
493
+ headers: {
494
+ "Content-Type": "text/plain",
495
+ "Cache-Control": "private"
496
+ }
497
+ });
498
+ return mppOk({ response, receipt: latestReceipt });
499
+ }
500
+
501
+ // src/shared/protocols/mpp/session/utils.ts
502
+ var USDC_DECIMALS = 6;
503
+ var DEFAULT_TICK_BUDGET = 10;
504
+ function resolveDepositUsd(suggestedDeposit, tickCostUsd, options) {
505
+ const maxAmount = options.params.maxAmount ?? getSettings().maxAmount ?? DEFAULT_MAX_AMOUNT;
506
+ const desired = suggestedDeposit !== void 0 ? tokenStringToNumber(suggestedDeposit, USDC_DECIMALS) : tickCostUsd * DEFAULT_TICK_BUDGET;
507
+ return Math.min(desired, maxAmount);
508
+ }
509
+ function formatDepositCap(depositUsd) {
510
+ if (!Number.isFinite(depositUsd) || depositUsd <= 0) {
511
+ return "0";
512
+ }
513
+ return depositUsd.toFixed(USDC_DECIMALS);
514
+ }
515
+ async function bufferRequestForReplay(request) {
516
+ const init = {
517
+ method: request.method,
518
+ headers: new Headers(request.headers),
519
+ credentials: request.credentials,
520
+ redirect: request.redirect,
521
+ referrer: request.referrer === "" ? void 0 : request.referrer,
522
+ integrity: request.integrity || void 0,
523
+ signal: request.signal
524
+ };
525
+ const hasBody = request.method !== "GET" && request.method !== "HEAD" && request.body !== null;
526
+ if (hasBody) {
527
+ init.body = await request.arrayBuffer();
528
+ }
529
+ return init;
530
+ }
531
+
532
+ // src/shared/protocols/mpp/session/handle-session-payment.ts
533
+ async function handleMppSessionPayment(challenge, { request, options }) {
534
+ const { surface, wallets } = options;
535
+ const tickCostAtomic = BigInt(challenge.request.amount);
536
+ const tickCostUsd = Number(formatUnits(tickCostAtomic, USDC_DECIMALS));
537
+ const tokenAddress = challenge.request.currency;
538
+ const tokenCheck = assertTempoUsdc(surface, tokenAddress);
539
+ if (tokenCheck.isErr()) return tokenCheck;
540
+ const depositUsd = resolveDepositUsd(
541
+ challenge.request.suggestedDeposit,
542
+ tickCostUsd,
543
+ options
544
+ );
545
+ const beforePaymentResult = await beforePayment({
546
+ options,
547
+ balanceInput: {
548
+ address: wallets.evm.address,
549
+ network: "tempo" /* TEMPO */,
550
+ tokenAddress
551
+ },
552
+ amount: depositUsd,
553
+ protocol: "mpp" /* MPP */
554
+ });
555
+ if (beforePaymentResult.isErr()) return beforePaymentResult;
556
+ const replayInitResult = await mppResultFromPromise(
557
+ surface,
558
+ bufferRequestForReplay(request),
559
+ (e) => sessionRequestFailedErr(
560
+ e,
561
+ "Failed to buffer request body for session replay"
562
+ )
563
+ );
564
+ if (replayInitResult.isErr()) return replayInitResult;
565
+ const sm = tempoClient.session({
566
+ account: wallets.evm,
567
+ client: createTempoClient(),
568
+ maxDeposit: formatDepositCap(depositUsd),
569
+ decimals: USDC_DECIMALS
570
+ });
571
+ const isStreaming = challenge.meta?.streaming === "true" || options.params.stream === true;
572
+ const reuseChannelId = options.params.channelId;
573
+ const sessionResult = isStreaming ? await runStreamingSession(
574
+ surface,
575
+ sm,
576
+ request.url,
577
+ replayInitResult.value,
578
+ reuseChannelId
579
+ ) : await runRequestSession(
580
+ surface,
581
+ sm,
582
+ request.url,
583
+ replayInitResult.value,
584
+ reuseChannelId
585
+ );
586
+ if (sessionResult.isErr()) return sessionResult;
587
+ const { response: finalResponse, receipt } = sessionResult.value;
588
+ const price = receipt ? formatUsd(tokenStringToNumber(receipt.spent, USDC_DECIMALS)) : `from ${formatUsd(tickCostUsd)}/tick`;
589
+ return mppOk({
590
+ response: finalResponse,
591
+ paymentInfo: {
592
+ protocol: "mpp" /* MPP */,
593
+ network: "tempo" /* TEMPO */,
594
+ price,
595
+ payment: receipt ? { success: true, channelId: receipt.channelId } : null
596
+ }
597
+ });
598
+ }
599
+
476
600
  // src/shared/protocols/mpp/handle-payment.ts
477
- async function handleMppPayment({
478
- response,
479
- request,
480
- options
481
- }) {
601
+ async function handleMppPayment(params) {
602
+ const { response, request, options } = params;
482
603
  const { surface, wallets } = options;
483
604
  const { timeout } = options.params;
484
605
  if (request.headers.has("Authorization")) {
@@ -492,14 +613,14 @@ async function handleMppPayment({
492
613
  return challengeResult;
493
614
  }
494
615
  const challenge = challengeResult.value;
495
- const amount = Number(formatUnits(BigInt(challenge.request.amount), 6));
616
+ if (challenge.intent === "session") {
617
+ return handleMppSessionPayment(challenge, params);
618
+ }
619
+ const amount = Number(formatUnits2(BigInt(challenge.request.amount), 6));
496
620
  const tokenAddress = challenge.request.currency;
497
- const expectedToken = EVM_CONFIGS["tempo" /* TEMPO */].usdcAddress.toLowerCase();
498
- if (tokenAddress.toLowerCase() !== expectedToken) {
499
- return mppErr(surface, {
500
- cause: "unsupported_token",
501
- message: `Endpoint requires payment in token ${tokenAddress} on Tempo, but agentcash only supports ${EVM_CONFIGS["tempo" /* TEMPO */].usdcAddress}. The endpoint may be configured for a different token (e.g. PathUSD vs USDC).`
502
- });
621
+ const tokenCheck = assertTempoUsdc(surface, tokenAddress);
622
+ if (tokenCheck.isErr()) {
623
+ return tokenCheck;
503
624
  }
504
625
  const beforePaymentResult = await beforePayment({
505
626
  options,
@@ -530,7 +651,7 @@ async function handleMppPayment({
530
651
  }
531
652
  const paidResponse = paidFetchResult.value;
532
653
  if (paidResponse.status === 402) {
533
- const body = await paidResponse.clone().text().catch(() => "");
654
+ const body = await safeReadResponseText(surface, paidResponse).unwrapOr("");
534
655
  const detail = body ? `: ${body}` : "";
535
656
  return mppErr(surface, {
536
657
  cause: "mpp_payment_rejected",
@@ -753,10 +874,14 @@ async function handleX402Payment({
753
874
  return paidResult;
754
875
  }
755
876
  const paidResponse = paidResult.value;
756
- const permit2Error = await detectPermit2AllowanceError(paidResponse, {
757
- walletAddress: wallets.evm.address,
758
- scheme: paymentPayload.accepted.scheme
759
- });
877
+ const permit2Error = await detectPermit2AllowanceError(
878
+ surface,
879
+ paidResponse,
880
+ {
881
+ walletAddress: wallets.evm.address,
882
+ scheme: paymentPayload.accepted.scheme
883
+ }
884
+ );
760
885
  if (permit2Error) {
761
886
  return x402Err(surface, permit2Error);
762
887
  }
@@ -779,11 +904,11 @@ async function handleX402Payment({
779
904
  }
780
905
  });
781
906
  }
782
- async function detectPermit2AllowanceError(response, context) {
907
+ async function detectPermit2AllowanceError(surface, response, context) {
783
908
  if (response.ok) {
784
909
  return null;
785
910
  }
786
- const body = await response.clone().text().catch(() => "");
911
+ const body = await safeReadResponseText(surface, response).unwrapOr("");
787
912
  if (!isPermit2AllowanceFailureBody(body)) {
788
913
  return null;
789
914
  }
@@ -875,4 +1000,4 @@ async function executeFetch(input, options) {
875
1000
  export {
876
1001
  executeFetch
877
1002
  };
878
- //# sourceMappingURL=chunk-JVMJVMWB.js.map
1003
+ //# sourceMappingURL=chunk-EDI77S36.js.map