mppx 0.8.12 → 0.8.13

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 (193) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +16 -1
  3. package/dist/cli/account.d.ts +88 -0
  4. package/dist/cli/account.d.ts.map +1 -1
  5. package/dist/cli/account.js +39 -9
  6. package/dist/cli/account.js.map +1 -1
  7. package/dist/cli/cli.d.ts +2 -1
  8. package/dist/cli/cli.d.ts.map +1 -1
  9. package/dist/cli/cli.js +59 -2
  10. package/dist/cli/cli.js.map +1 -1
  11. package/dist/cli/sessions/Manager.d.ts +31 -0
  12. package/dist/cli/sessions/Manager.d.ts.map +1 -0
  13. package/dist/cli/sessions/Manager.js +56 -0
  14. package/dist/cli/sessions/Manager.js.map +1 -0
  15. package/dist/cli/sessions/commands.d.ts +36 -0
  16. package/dist/cli/sessions/commands.d.ts.map +1 -0
  17. package/dist/cli/sessions/commands.js +407 -0
  18. package/dist/cli/sessions/commands.js.map +1 -0
  19. package/dist/cli/sessions/request.d.ts +35 -0
  20. package/dist/cli/sessions/request.d.ts.map +1 -0
  21. package/dist/cli/sessions/request.js +271 -0
  22. package/dist/cli/sessions/request.js.map +1 -0
  23. package/dist/cli/sessions/store.d.ts +134 -0
  24. package/dist/cli/sessions/store.d.ts.map +1 -0
  25. package/dist/cli/sessions/store.js +723 -0
  26. package/dist/cli/sessions/store.js.map +1 -0
  27. package/dist/cli/utils.d.ts +2 -0
  28. package/dist/cli/utils.d.ts.map +1 -1
  29. package/dist/cli/utils.js +12 -0
  30. package/dist/cli/utils.js.map +1 -1
  31. package/dist/cli/validate/index.d.ts.map +1 -1
  32. package/dist/cli/validate/index.js +12 -6
  33. package/dist/cli/validate/index.js.map +1 -1
  34. package/dist/cli/validate/messages.d.ts +2 -0
  35. package/dist/cli/validate/messages.d.ts.map +1 -0
  36. package/dist/cli/validate/messages.js +8 -0
  37. package/dist/cli/validate/messages.js.map +1 -0
  38. package/dist/client/node.d.ts +29 -0
  39. package/dist/client/node.d.ts.map +1 -0
  40. package/dist/client/node.js +177 -0
  41. package/dist/client/node.js.map +1 -0
  42. package/dist/internal/types.d.ts +24 -0
  43. package/dist/internal/types.d.ts.map +1 -1
  44. package/dist/stripe/server/Charge.d.ts +8 -4
  45. package/dist/stripe/server/Charge.d.ts.map +1 -1
  46. package/dist/stripe/server/Charge.js.map +1 -1
  47. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  48. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  49. package/dist/stripe/server/internal/html.gen.js +1 -1
  50. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  51. package/dist/tempo/client/Methods.d.ts +1 -1
  52. package/dist/tempo/internal/types.d.ts +10 -1
  53. package/dist/tempo/internal/types.d.ts.map +1 -1
  54. package/dist/tempo/legacy/client/Session.d.ts +2 -2
  55. package/dist/tempo/legacy/server/Session.d.ts +3 -3
  56. package/dist/tempo/legacy/server/Session.d.ts.map +1 -1
  57. package/dist/tempo/legacy/server/Session.js.map +1 -1
  58. package/dist/tempo/server/Charge.d.ts +3 -2
  59. package/dist/tempo/server/Charge.d.ts.map +1 -1
  60. package/dist/tempo/server/Charge.js.map +1 -1
  61. package/dist/tempo/server/Methods.d.ts +2 -23
  62. package/dist/tempo/server/Methods.d.ts.map +1 -1
  63. package/dist/tempo/server/Methods.js +2 -2
  64. package/dist/tempo/server/Methods.js.map +1 -1
  65. package/dist/tempo/server/Subscription.d.ts +3 -2
  66. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  67. package/dist/tempo/server/Subscription.js.map +1 -1
  68. package/dist/tempo/server/index.d.ts +1 -1
  69. package/dist/tempo/server/index.d.ts.map +1 -1
  70. package/dist/tempo/server/index.js.map +1 -1
  71. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  72. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  73. package/dist/tempo/server/internal/html.gen.js +1 -1
  74. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  75. package/dist/tempo/session/Snapshot.d.ts +9 -0
  76. package/dist/tempo/session/Snapshot.d.ts.map +1 -1
  77. package/dist/tempo/session/Snapshot.js +6 -0
  78. package/dist/tempo/session/Snapshot.js.map +1 -1
  79. package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -1
  80. package/dist/tempo/session/client/ChannelOps.js +11 -2
  81. package/dist/tempo/session/client/ChannelOps.js.map +1 -1
  82. package/dist/tempo/session/client/CredentialState.d.ts +21 -1
  83. package/dist/tempo/session/client/CredentialState.d.ts.map +1 -1
  84. package/dist/tempo/session/client/CredentialState.js +66 -1
  85. package/dist/tempo/session/client/CredentialState.js.map +1 -1
  86. package/dist/tempo/session/client/Session.d.ts +1 -1
  87. package/dist/tempo/session/client/SessionManager.d.ts +2 -2
  88. package/dist/tempo/session/client/SessionManager.d.ts.map +1 -1
  89. package/dist/tempo/session/client/SessionManager.js +128 -30
  90. package/dist/tempo/session/client/SessionManager.js.map +1 -1
  91. package/dist/tempo/session/client/Transports.d.ts +11 -2
  92. package/dist/tempo/session/client/Transports.d.ts.map +1 -1
  93. package/dist/tempo/session/client/Transports.js +33 -9
  94. package/dist/tempo/session/client/Transports.js.map +1 -1
  95. package/dist/tempo/session/client/internal/SessionManager.d.ts +19 -0
  96. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +1 -0
  97. package/dist/tempo/session/client/internal/SessionManager.js +13 -0
  98. package/dist/tempo/session/client/internal/SessionManager.js.map +1 -0
  99. package/dist/tempo/session/precompile/Chain.js +13 -4
  100. package/dist/tempo/session/precompile/Chain.js.map +1 -1
  101. package/dist/tempo/session/server/CredentialVerification.d.ts +3 -0
  102. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -1
  103. package/dist/tempo/session/server/CredentialVerification.js +14 -0
  104. package/dist/tempo/session/server/CredentialVerification.js.map +1 -1
  105. package/dist/tempo/session/server/MeteredStream.d.ts +7 -1
  106. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -1
  107. package/dist/tempo/session/server/MeteredStream.js +5 -4
  108. package/dist/tempo/session/server/MeteredStream.js.map +1 -1
  109. package/dist/tempo/session/server/RequestState.d.ts +5 -1
  110. package/dist/tempo/session/server/RequestState.d.ts.map +1 -1
  111. package/dist/tempo/session/server/RequestState.js +10 -4
  112. package/dist/tempo/session/server/RequestState.js.map +1 -1
  113. package/dist/tempo/session/server/Session.d.ts +21 -6
  114. package/dist/tempo/session/server/Session.d.ts.map +1 -1
  115. package/dist/tempo/session/server/Session.js +4 -1
  116. package/dist/tempo/session/server/Session.js.map +1 -1
  117. package/dist/tempo/session/server/Settlement.d.ts +20 -0
  118. package/dist/tempo/session/server/Settlement.d.ts.map +1 -1
  119. package/dist/tempo/session/server/Settlement.js +20 -0
  120. package/dist/tempo/session/server/Settlement.js.map +1 -1
  121. package/dist/tempo/session/server/Ws.d.ts +2 -0
  122. package/dist/tempo/session/server/Ws.d.ts.map +1 -1
  123. package/dist/tempo/session/server/Ws.js.map +1 -1
  124. package/dist/tempo/session/server/index.d.ts +1 -1
  125. package/dist/tempo/session/server/index.d.ts.map +1 -1
  126. package/dist/tempo/subscription/KeyAuthorization.d.ts +21 -21
  127. package/dist/validation/core.d.ts.map +1 -1
  128. package/dist/validation/core.js +6 -2
  129. package/dist/validation/core.js.map +1 -1
  130. package/dist/viem/Client.d.ts.map +1 -1
  131. package/dist/viem/Client.js +24 -17
  132. package/dist/viem/Client.js.map +1 -1
  133. package/package.json +6 -1
  134. package/src/cli/account.ts +45 -10
  135. package/src/cli/cli.test.ts +165 -70
  136. package/src/cli/cli.ts +67 -2
  137. package/src/cli/mcp.test.ts +11 -0
  138. package/src/cli/sessions/Manager.test.ts +249 -0
  139. package/src/cli/sessions/Manager.ts +93 -0
  140. package/src/cli/sessions/commands.ts +444 -0
  141. package/src/cli/sessions/request.test.ts +51 -0
  142. package/src/cli/sessions/request.ts +353 -0
  143. package/src/cli/sessions/store.test.ts +581 -0
  144. package/src/cli/sessions/store.ts +940 -0
  145. package/src/cli/utils.test.ts +23 -0
  146. package/src/cli/utils.ts +10 -0
  147. package/src/cli/validate/index.ts +12 -14
  148. package/src/cli/validate/messages.ts +7 -0
  149. package/src/cli/validate.test.ts +38 -5
  150. package/src/client/node.test.ts +115 -0
  151. package/src/client/node.ts +247 -0
  152. package/src/internal/types.test-d.ts +21 -0
  153. package/src/internal/types.ts +33 -0
  154. package/src/server/Mppx.test-d.ts +42 -0
  155. package/src/stripe/Methods.test.ts +10 -0
  156. package/src/stripe/server/Charge.test-d.ts +66 -0
  157. package/src/stripe/server/Charge.ts +8 -5
  158. package/src/stripe/server/internal/html.gen.ts +1 -1
  159. package/src/tempo/internal/types.ts +13 -2
  160. package/src/tempo/legacy/server/Defaults.test-d.ts +9 -0
  161. package/src/tempo/legacy/server/Session.ts +6 -5
  162. package/src/tempo/server/Charge.ts +6 -4
  163. package/src/tempo/server/Methods.ts +5 -4
  164. package/src/tempo/server/Subscription.ts +6 -4
  165. package/src/tempo/server/index.ts +5 -1
  166. package/src/tempo/server/internal/html.gen.ts +1 -1
  167. package/src/tempo/session/README.md +201 -0
  168. package/src/tempo/session/Snapshot.ts +21 -0
  169. package/src/tempo/session/client/ChannelOps.test.ts +40 -0
  170. package/src/tempo/session/client/ChannelOps.ts +12 -2
  171. package/src/tempo/session/client/CredentialState.test.ts +2 -2
  172. package/src/tempo/session/client/CredentialState.ts +103 -1
  173. package/src/tempo/session/client/Session.test.ts +3 -3
  174. package/src/tempo/session/client/SessionManager.test.ts +137 -4
  175. package/src/tempo/session/client/SessionManager.ts +139 -33
  176. package/src/tempo/session/client/Transports.test.ts +150 -8
  177. package/src/tempo/session/client/Transports.ts +48 -10
  178. package/src/tempo/session/client/internal/SessionManager.ts +36 -0
  179. package/src/tempo/session/precompile/Chain.test.ts +26 -0
  180. package/src/tempo/session/precompile/Chain.ts +17 -4
  181. package/src/tempo/session/server/CredentialVerification.ts +18 -1
  182. package/src/tempo/session/server/MeteredStream.ts +12 -5
  183. package/src/tempo/session/server/RequestState.test.ts +39 -3
  184. package/src/tempo/session/server/RequestState.ts +13 -6
  185. package/src/tempo/session/server/Session.test.ts +461 -0
  186. package/src/tempo/session/server/Session.ts +31 -8
  187. package/src/tempo/session/server/Settlement.ts +45 -0
  188. package/src/tempo/session/server/Ws.test.ts +113 -0
  189. package/src/tempo/session/server/Ws.ts +2 -0
  190. package/src/tempo/session/server/index.ts +2 -0
  191. package/src/validation/core.ts +7 -1
  192. package/src/viem/Client.test.ts +44 -1
  193. package/src/viem/Client.ts +31 -17
@@ -0,0 +1,407 @@
1
+ import { Cli, Errors, z } from 'incur';
2
+ import { createClient, http } from 'viem';
3
+ import { tempo as tempoMainnet, tempoModerato } from 'viem/tempo/chains';
4
+ import { normalizeHeaders } from '../../client/internal/Fetch.js';
5
+ import { canSignDescriptor } from '../../tempo/session/client/CredentialState.js';
6
+ import * as Chain from '../../tempo/session/precompile/Chain.js';
7
+ import * as Channel from '../../tempo/session/precompile/Channel.js';
8
+ import { resolvePersistentAccount } from '../account.js';
9
+ import { resolveChain, resolveRpcUrl } from '../utils.js';
10
+ import { closeWithSessionManager } from './Manager.js';
11
+ import { createSessionRegistry, SessionBusyError, SessionStateError, sessionResourceUrl, sessionScope, toChannelStore, } from './store.js';
12
+ const sessionOutputSchema = z.object({
13
+ status: z.enum(['opening', 'open', 'closing', 'stale']),
14
+ channelId: z.string(),
15
+ account: z.string().optional(),
16
+ payer: z.string(),
17
+ payee: z.string(),
18
+ authorizedSigner: z.string(),
19
+ token: z.string(),
20
+ escrow: z.string(),
21
+ chainId: z.number(),
22
+ cumulativeAmount: z.string(),
23
+ confirmedSpend: z.string(),
24
+ deposit: z.string(),
25
+ units: z.number(),
26
+ resourceUrl: z.string(),
27
+ createdAt: z.string(),
28
+ updatedAt: z.string(),
29
+ });
30
+ const sessionCloseOutputSchema = z.object({
31
+ channelId: z.string(),
32
+ status: z.enum(['closed', 'already-closed']),
33
+ spent: z.string(),
34
+ txHash: z.string().optional(),
35
+ });
36
+ const sessionBulkCloseOutputSchema = z.object({
37
+ closed: z.array(sessionCloseOutputSchema),
38
+ failed: z.array(z.object({ channelId: z.string(), message: z.string() })),
39
+ });
40
+ function networkChainId(network) {
41
+ return network === 'mainnet' ? tempoMainnet.id : tempoModerato.id;
42
+ }
43
+ function networkForChain(chainId) {
44
+ if (chainId === tempoMainnet.id)
45
+ return 'mainnet';
46
+ if (chainId === tempoModerato.id)
47
+ return 'testnet';
48
+ return undefined;
49
+ }
50
+ function parseHeaders(values) {
51
+ const headers = {};
52
+ for (const value of values ?? []) {
53
+ const index = value.indexOf(':');
54
+ if (index === -1)
55
+ throw new Errors.IncurError({
56
+ code: 'INVALID_HEADER',
57
+ message: `Invalid header format: ${value}`,
58
+ exitCode: 2,
59
+ });
60
+ headers[value.slice(0, index).trim()] = value.slice(index + 1).trim();
61
+ }
62
+ return headers;
63
+ }
64
+ function outputSession(record) {
65
+ return {
66
+ status: record.status,
67
+ channelId: record.channel.channelId,
68
+ ...(record.account.name && { account: record.account.name }),
69
+ payer: record.channel.descriptor.payer,
70
+ payee: record.channel.descriptor.payee,
71
+ authorizedSigner: record.channel.descriptor.authorizedSigner,
72
+ token: record.channel.descriptor.token,
73
+ escrow: record.channel.escrow,
74
+ chainId: record.channel.chainId,
75
+ cumulativeAmount: record.channel.cumulativeAmount.toString(),
76
+ confirmedSpend: record.spent.toString(),
77
+ deposit: record.channel.deposit.toString(),
78
+ units: record.units,
79
+ resourceUrl: record.endpoint,
80
+ createdAt: record.createdAt,
81
+ updatedAt: record.updatedAt,
82
+ };
83
+ }
84
+ /** Normalizes persistent session failures for CLI output. */
85
+ export function sessionCommandError(error, fallbackCode) {
86
+ if (error instanceof Errors.IncurError)
87
+ throw error;
88
+ if (error instanceof SessionBusyError)
89
+ throw new Errors.IncurError({
90
+ code: error.code,
91
+ message: error.message,
92
+ exitCode: error.exitCode,
93
+ cause: error,
94
+ });
95
+ if (error instanceof SessionStateError)
96
+ throw new Errors.IncurError({
97
+ code: error.code,
98
+ message: error.message,
99
+ exitCode: 65,
100
+ cause: error,
101
+ });
102
+ throw new Errors.IncurError({
103
+ code: fallbackCode,
104
+ message: error instanceof Error ? error.message : String(error),
105
+ exitCode: 75,
106
+ ...(error instanceof Error && { cause: error }),
107
+ });
108
+ }
109
+ async function resolveCloseAccount(record, accountOverride) {
110
+ const accountName = accountOverride ?? record.account.name;
111
+ const resolved = await resolvePersistentAccount(accountName);
112
+ if (!canSignDescriptor(resolved.account, record.channel.descriptor))
113
+ throw new Errors.IncurError({
114
+ code: 'SESSION_ACCOUNT_MISMATCH',
115
+ message: `Account ${resolved.account.address} cannot sign for session ${record.channel.channelId}.`,
116
+ exitCode: 2,
117
+ });
118
+ return resolved;
119
+ }
120
+ async function resolveCloseClient(chainId, options) {
121
+ if (options.network && networkChainId(options.network) !== chainId)
122
+ throw new Errors.IncurError({
123
+ code: 'CHAIN_MISMATCH',
124
+ message: `Session uses chainId ${chainId}, not ${options.network}.`,
125
+ exitCode: 2,
126
+ });
127
+ const network = options.network ?? networkForChain(chainId);
128
+ const rpcUrl = resolveRpcUrl(options.rpcUrl, { network });
129
+ const chain = await resolveChain({ network, rpcUrl });
130
+ if (chain.id !== chainId)
131
+ throw new Errors.IncurError({
132
+ code: 'CHAIN_MISMATCH',
133
+ message: `Session uses chainId ${chainId}, but RPC is chainId ${chain.id}.`,
134
+ exitCode: 2,
135
+ });
136
+ return createClient({ chain, transport: http(rpcUrl) });
137
+ }
138
+ const sessions = Cli.create('sessions', {
139
+ description: 'Manage persistent payment sessions (list, view, close)',
140
+ })
141
+ .command('list', {
142
+ description: 'List persistent payment sessions',
143
+ options: z.object({
144
+ account: z.string().optional().describe('Filter by account name'),
145
+ network: z.enum(['mainnet', 'testnet']).optional().describe('Filter by Tempo network'),
146
+ }),
147
+ output: z.object({ sessions: z.array(sessionOutputSchema) }),
148
+ alias: { account: 'a' },
149
+ async run(c) {
150
+ try {
151
+ const records = (await createSessionRegistry().list())
152
+ .filter((record) => {
153
+ if (c.options.account && record.account.name !== c.options.account)
154
+ return false;
155
+ if (c.options.network && record.channel.chainId !== networkChainId(c.options.network))
156
+ return false;
157
+ return true;
158
+ })
159
+ .map(outputSession);
160
+ const result = { sessions: records };
161
+ if (c.format === 'json' && c.formatExplicit)
162
+ return c.ok(result);
163
+ if (records.length === 0)
164
+ console.log('No sessions.');
165
+ for (const [index, record] of records.entries()) {
166
+ if (index > 0)
167
+ console.log('');
168
+ printSession(record);
169
+ }
170
+ return undefined;
171
+ }
172
+ catch (error) {
173
+ return sessionCommandError(error, 'SESSION_LIST_FAILED');
174
+ }
175
+ },
176
+ })
177
+ .command('view', {
178
+ description: 'View a persistent payment session',
179
+ args: z.object({ channelId: z.string().describe('Full session channel ID') }),
180
+ output: sessionOutputSchema,
181
+ async run(c) {
182
+ try {
183
+ const record = await createSessionRegistry().get(c.args.channelId);
184
+ if (!record)
185
+ throw new Errors.IncurError({
186
+ code: 'SESSION_NOT_FOUND',
187
+ message: `Session ${c.args.channelId} was not found.`,
188
+ exitCode: 2,
189
+ });
190
+ const result = outputSession(record);
191
+ if (c.format === 'json' && c.formatExplicit)
192
+ return c.ok(result);
193
+ printSession(result);
194
+ return undefined;
195
+ }
196
+ catch (error) {
197
+ return sessionCommandError(error, 'SESSION_VIEW_FAILED');
198
+ }
199
+ },
200
+ })
201
+ .command('close', {
202
+ description: 'Cooperatively close persistent payment sessions',
203
+ usage: [{ suffix: '<channel-id> [options]' }, { suffix: '--all --yes [options]' }],
204
+ args: z.object({ channelId: z.string().optional().describe('Full session channel ID') }),
205
+ options: z.object({
206
+ account: z.string().optional().describe('Account name'),
207
+ all: z.boolean().optional().default(false).describe('Close every matching session'),
208
+ header: z.array(z.string()).optional().describe('Add close request header (repeatable)'),
209
+ network: z.enum(['mainnet', 'testnet']).optional().describe('Tempo network'),
210
+ rpcUrl: z.string().optional().describe('RPC endpoint (env: MPPX_RPC_URL)'),
211
+ url: z.string().optional().describe('Override the stored resource URL'),
212
+ yes: z.boolean().optional().default(false).describe('Confirm closing every session'),
213
+ }),
214
+ output: z.union([sessionCloseOutputSchema, sessionBulkCloseOutputSchema]),
215
+ alias: { account: 'a', header: 'H', rpcUrl: 'r' },
216
+ async run(c) {
217
+ if (c.options.all && c.args.channelId)
218
+ return c.error({
219
+ code: 'INVALID_SESSION_CLOSE',
220
+ message: 'Specify a channel ID or --all, not both.',
221
+ exitCode: 2,
222
+ });
223
+ if (!c.options.all && !c.args.channelId)
224
+ return c.error({
225
+ code: 'INVALID_SESSION_CLOSE',
226
+ message: 'Specify a channel ID or --all.',
227
+ exitCode: 2,
228
+ });
229
+ if (c.options.all && !c.options.yes)
230
+ return c.error({
231
+ code: 'CONFIRMATION_REQUIRED',
232
+ message: 'Closing all sessions requires --yes.',
233
+ exitCode: 2,
234
+ });
235
+ if (c.options.all && (c.options.header || c.options.rpcUrl || c.options.url))
236
+ return c.error({
237
+ code: 'INVALID_SESSION_CLOSE',
238
+ message: '--header, --rpc-url, and --url only apply to a single session.',
239
+ exitCode: 2,
240
+ });
241
+ const registry = createSessionRegistry();
242
+ async function closeSession(channelId, options = {}) {
243
+ const candidate = await registry.get(channelId);
244
+ if (!candidate)
245
+ throw new Errors.IncurError({
246
+ code: 'SESSION_NOT_FOUND',
247
+ message: `Session ${channelId} was not found.`,
248
+ exitCode: 2,
249
+ });
250
+ const scope = sessionScope(candidate.channel);
251
+ const lock = await registry.acquire(scope);
252
+ try {
253
+ const record = await registry.get(channelId);
254
+ if (!record)
255
+ throw new Errors.IncurError({
256
+ code: 'SESSION_NOT_FOUND',
257
+ message: `Session ${channelId} was not found.`,
258
+ exitCode: 2,
259
+ });
260
+ const resolvedAccount = await resolveCloseAccount(record, options.account);
261
+ const client = await resolveCloseClient(record.channel.chainId, options);
262
+ const expectedId = Channel.computeId({
263
+ ...record.channel.descriptor,
264
+ escrow: record.channel.escrow,
265
+ chainId: record.channel.chainId,
266
+ });
267
+ if (expectedId.toLowerCase() !== record.channel.channelId.toLowerCase())
268
+ throw new Errors.IncurError({
269
+ code: 'SESSION_STATE_INVALID',
270
+ message: 'Stored descriptor does not derive the session channel ID.',
271
+ exitCode: 65,
272
+ });
273
+ const state = await Chain.getChannelState(client, record.channel.channelId, record.channel.escrow);
274
+ if (state.deposit === 0n) {
275
+ await registry.remove(record.channel.channelId);
276
+ return {
277
+ channelId: record.channel.channelId,
278
+ status: 'already-closed',
279
+ spent: record.spent.toString(),
280
+ };
281
+ }
282
+ const endpoint = sessionResourceUrl(options.resourceUrl ?? record.endpoint);
283
+ const account = {
284
+ ...(resolvedAccount.source === 'keychain' && { name: resolvedAccount.accountName }),
285
+ address: resolvedAccount.account.address,
286
+ };
287
+ const closingContext = (challenge = record.challenge) => ({
288
+ status: 'closing',
289
+ account,
290
+ endpoint,
291
+ challenge,
292
+ ...(record.receipt && { receipt: record.receipt }),
293
+ spent: record.spent,
294
+ units: record.units,
295
+ });
296
+ const closing = await registry.upsert({
297
+ ...closingContext(),
298
+ channel: record.channel,
299
+ });
300
+ const headers = parseHeaders(options.headers);
301
+ let latestChallenge = closing.challenge;
302
+ const closeFetch = async (input, init) => globalThis.fetch(input, {
303
+ ...init,
304
+ headers: { ...headers, ...normalizeHeaders(init?.headers) },
305
+ });
306
+ const result = await closeWithSessionManager({
307
+ channel: closing.channel,
308
+ challenge: closing.challenge,
309
+ fetch: closeFetch,
310
+ input: endpoint,
311
+ spent: closing.spent,
312
+ async onChallenge(challenge) {
313
+ latestChallenge = challenge;
314
+ await registry.upsert({
315
+ ...closingContext(challenge),
316
+ channel: closing.channel,
317
+ });
318
+ },
319
+ manager: {
320
+ account: resolvedAccount.account,
321
+ client,
322
+ channelStore: toChannelStore(registry, {
323
+ scope,
324
+ selection: closing.channel.channelId,
325
+ context: () => closingContext(latestChallenge),
326
+ }),
327
+ },
328
+ });
329
+ await registry.remove(closing.channel.channelId);
330
+ return {
331
+ channelId: closing.channel.channelId,
332
+ status: 'closed',
333
+ spent: result.receipt.spent,
334
+ txHash: result.receipt.txHash,
335
+ };
336
+ }
337
+ finally {
338
+ await lock.release();
339
+ }
340
+ }
341
+ try {
342
+ if (c.options.all) {
343
+ const records = (await registry.list()).filter((record) => (!c.options.account || record.account.name === c.options.account) &&
344
+ (!c.options.network || record.channel.chainId === networkChainId(c.options.network)));
345
+ const closed = [];
346
+ const failed = [];
347
+ for (const record of records) {
348
+ try {
349
+ closed.push(await closeSession(record.channel.channelId, {
350
+ account: c.options.account,
351
+ network: c.options.network,
352
+ }));
353
+ }
354
+ catch (error) {
355
+ failed.push({
356
+ channelId: record.channel.channelId,
357
+ message: error instanceof Error ? error.message : String(error),
358
+ });
359
+ }
360
+ }
361
+ const result = { closed, failed };
362
+ if (failed.length > 0) {
363
+ for (const failure of failed)
364
+ process.stderr.write(`${failure.channelId}: ${failure.message}\n`);
365
+ process.exitCode = 1;
366
+ }
367
+ if (c.format === 'json' && c.formatExplicit)
368
+ return c.ok(result);
369
+ for (const item of closed)
370
+ console.log(`${item.channelId} ${item.status} ${item.spent}`);
371
+ for (const failure of failed)
372
+ console.log(`${failure.channelId} failed ${failure.message}`);
373
+ return undefined;
374
+ }
375
+ const result = await closeSession(c.args.channelId, {
376
+ account: c.options.account,
377
+ headers: c.options.header,
378
+ network: c.options.network,
379
+ resourceUrl: c.options.url,
380
+ rpcUrl: c.options.rpcUrl,
381
+ });
382
+ if (c.format === 'json' && c.formatExplicit)
383
+ return c.ok(result);
384
+ console.log(`${result.channelId} ${result.status} ${result.spent}`);
385
+ if (result.txHash)
386
+ console.log(` transaction ${result.txHash}`);
387
+ return undefined;
388
+ }
389
+ catch (error) {
390
+ return sessionCommandError(error, 'SESSION_CLOSE_FAILED');
391
+ }
392
+ },
393
+ });
394
+ function printSession(record) {
395
+ console.log(record.channelId);
396
+ console.log(` status ${record.status}`);
397
+ console.log(` cumulative amount ${record.cumulativeAmount}`);
398
+ console.log(` confirmed spend ${record.confirmedSpend}`);
399
+ console.log(` deposit ${record.deposit}`);
400
+ console.log(` chain ${record.chainId}`);
401
+ console.log(` payer ${record.payer}`);
402
+ console.log(` payee ${record.payee}`);
403
+ console.log(` token ${record.token}`);
404
+ console.log(` resource ${record.resourceUrl}`);
405
+ }
406
+ export default sessions;
407
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/cli/sessions/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type * as Challenge from '../../Challenge.js';
2
+ import type { TempoSessionChallenge } from '../../tempo/session/client/Transports.js';
3
+ import { type Network } from '../utils.js';
4
+ import { type SessionRegistry, type SessionSelection } from './store.js';
5
+ /** CLI options needed to run a persistent Tempo session request. */
6
+ export type PersistentSessionRequestOptions = {
7
+ account?: string | undefined;
8
+ fail?: boolean | undefined;
9
+ include?: boolean | undefined;
10
+ network?: Network | undefined;
11
+ rpcUrl?: string | undefined;
12
+ session: string;
13
+ silent: boolean;
14
+ verbose: number;
15
+ };
16
+ /** Inputs for a persistent request after challenge selection and confirmation. */
17
+ export type PersistentSessionRequestParameters = {
18
+ challenge: TempoSessionChallenge;
19
+ challengeResponse: Response;
20
+ endpoint: string;
21
+ fetch: typeof globalThis.fetch;
22
+ fetchInput: RequestInfo | URL;
23
+ init: RequestInit;
24
+ info(message: string): void;
25
+ methodOptions: Record<string, string>;
26
+ options: PersistentSessionRequestOptions;
27
+ registry?: SessionRegistry | undefined;
28
+ };
29
+ /** Resolves `--session` and the `-M channel=` compatibility alias. */
30
+ export declare function resolveSessionSelection(session: string, channelAlias: string | undefined): SessionSelection;
31
+ /** @internal Resolves the manager deposit cap in human-readable token units. */
32
+ export declare function resolveSessionMaxDeposit(challenge: Challenge.Challenge, methodOptions: Record<string, string>, testnet: boolean): string | undefined;
33
+ /** Runs one manager-backed request while holding the payer and payment-scope lock. */
34
+ export declare function runPersistentSessionRequest(parameters: PersistentSessionRequestParameters): Promise<void>;
35
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/cli/sessions/request.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAOpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAGrF,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAOtB,MAAM,YAAY,CAAA;AAEnB,oEAAoE;AACpE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,kFAAkF;AAClF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,SAAS,EAAE,qBAAqB,CAAA;IAChC,iBAAiB,EAAE,QAAQ,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC9B,UAAU,EAAE,WAAW,GAAG,GAAG,CAAA;IAC7B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,EAAE,+BAA+B,CAAA;IACxC,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,gBAAgB,CAelB;AAMD,gFAAgF;AAChF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAMpB;AA4CD,sFAAsF;AACtF,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,kCAAkC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAgNf"}