@tempoxyz/mercator 0.0.0

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 (52) hide show
  1. package/README.md +208 -0
  2. package/THIRD_PARTY_NOTICES.md +11 -0
  3. package/dist/agents.d.ts +26 -0
  4. package/dist/agents.js +152 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/bin.d.ts +2 -0
  7. package/dist/bin.js +4 -0
  8. package/dist/bin.js.map +1 -0
  9. package/dist/client-selection.d.ts +13 -0
  10. package/dist/client-selection.js +97 -0
  11. package/dist/client-selection.js.map +1 -0
  12. package/dist/clients.d.ts +70 -0
  13. package/dist/clients.js +282 -0
  14. package/dist/clients.js.map +1 -0
  15. package/dist/codex-plugin.d.ts +52 -0
  16. package/dist/codex-plugin.js +417 -0
  17. package/dist/codex-plugin.js.map +1 -0
  18. package/dist/command.d.ts +17 -0
  19. package/dist/command.js +59 -0
  20. package/dist/command.js.map +1 -0
  21. package/dist/doctor.d.ts +10 -0
  22. package/dist/doctor.js +105 -0
  23. package/dist/doctor.js.map +1 -0
  24. package/dist/globe-frames.d.ts +6 -0
  25. package/dist/globe-frames.js +208 -0
  26. package/dist/globe-frames.js.map +1 -0
  27. package/dist/globe.d.ts +12 -0
  28. package/dist/globe.js +73 -0
  29. package/dist/globe.js.map +1 -0
  30. package/dist/index.d.ts +118 -0
  31. package/dist/index.js +568 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/native-payments.d.ts +34 -0
  34. package/dist/native-payments.js +191 -0
  35. package/dist/native-payments.js.map +1 -0
  36. package/dist/plugin-bundle/.codex-plugin/plugin.json +35 -0
  37. package/dist/plugin-bundle/.mcp.json +9 -0
  38. package/dist/plugin-bundle/README.md +26 -0
  39. package/dist/plugin-bundle/assets/favicon.svg +7 -0
  40. package/dist/plugin-bundle/assets/mercator-overview.png +0 -0
  41. package/dist/plugin-bundle/assets/service-network.png +0 -0
  42. package/dist/plugin-bundle/assets/workflow-composition.png +0 -0
  43. package/dist/setup-progress.d.ts +13 -0
  44. package/dist/setup-progress.js +22 -0
  45. package/dist/setup-progress.js.map +1 -0
  46. package/dist/submit.d.ts +15 -0
  47. package/dist/submit.js +127 -0
  48. package/dist/submit.js.map +1 -0
  49. package/dist/wallet.d.ts +77 -0
  50. package/dist/wallet.js +319 -0
  51. package/dist/wallet.js.map +1 -0
  52. package/package.json +56 -0
package/dist/wallet.js ADDED
@@ -0,0 +1,319 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { Expiry, Provider, Store, secp256k1 } from 'accounts';
3
+ import { Provider as CliProvider, Storage } from 'accounts/cli';
4
+ import { Mppx, tempo as mppxTempo } from 'mppx/client';
5
+ import { formatUnits, parseUnits, toHex } from 'viem';
6
+ import { Addresses } from 'viem/tempo';
7
+ import { runInteractiveCommand } from './command.js';
8
+ /** machineUSD, preferred as the automatic swap source for Mercator charges. */
9
+ const MACHINE_USD = '0x20c0000000000000000000006637932dE5413804';
10
+ /** PathUSD, accepted directly for Mercator charges. */
11
+ const PATH_USD = Addresses.pathUsd;
12
+ /** Bridged USDC accepted as a Mercator payment funding token. */
13
+ const USDC_E = '0x20c000000000000000000000b9537d11c60e8b50';
14
+ /** Tokens that can fund a Mercator payment through Accounts auto-swap. */
15
+ const PAYMENT_TOKENS = [
16
+ MACHINE_USD,
17
+ PATH_USD,
18
+ USDC_E,
19
+ ];
20
+ /** Funding tokens that Accounts may swap into Mercator's billing token. */
21
+ const SWAP_TOKENS = [MACHINE_USD, PATH_USD];
22
+ /** Mercator-owned Accounts SDK storage, separate from other wallet clients. */
23
+ const STORAGE_PATH = '~/.mercator/wallet.json';
24
+ /** Trusted first-party page used to fund an unfunded Mercator wallet. */
25
+ const FUNDING_ORIGIN = 'https://mercator.tempo.xyz';
26
+ /** Tempo mainnet, the only chain accepted by Mercator payments. */
27
+ const CHAIN_ID = 4217;
28
+ /** Mercator-owned wallet implementations. */
29
+ export const WalletProvider = {
30
+ Local: 'local',
31
+ Tempo: 'tempo',
32
+ };
33
+ /** Signals that payment requires explicit wallet setup before retrying. */
34
+ export class WalletRequiredError extends Error {
35
+ code = 'WALLET_REQUIRED';
36
+ constructor(message = 'No payment wallet is configured. Run `mercator wallet`, then retry this command.') {
37
+ super(message);
38
+ this.name = 'WalletRequiredError';
39
+ }
40
+ }
41
+ /** Process-backed wallet dependencies used outside tests. */
42
+ const defaultDependencies = {
43
+ activeProvider,
44
+ chooseProvider,
45
+ connectTempo,
46
+ createLocal,
47
+ inspect: inspectAccount,
48
+ interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),
49
+ openUrl,
50
+ setActiveProvider,
51
+ };
52
+ /** Inspects Mercator wallet state without creating or reconnecting an account. */
53
+ export async function inspectWallet(overrides = {}) {
54
+ const dependencies = { ...defaultDependencies, ...overrides };
55
+ const active = await dependencies.activeProvider();
56
+ if (active) {
57
+ return reportFor(active, await dependencies.inspect(active));
58
+ }
59
+ const tempo = await dependencies.inspect(WalletProvider.Tempo);
60
+ if (tempo.address)
61
+ return reportFor(WalletProvider.Tempo, tempo);
62
+ const local = await dependencies.inspect(WalletProvider.Local);
63
+ if (local.address)
64
+ return reportFor(WalletProvider.Local, local);
65
+ return missingWalletReport();
66
+ }
67
+ /** Creates a local disk wallet or connects Tempo Wallet through the Accounts SDK. */
68
+ export async function setupWallet(options = {}, overrides = {}) {
69
+ const dependencies = { ...defaultDependencies, ...overrides };
70
+ if (options.action) {
71
+ const selected = options.action === 'connect' ? WalletProvider.Tempo : WalletProvider.Local;
72
+ return configureWallet(selected, dependencies);
73
+ }
74
+ const report = await inspectWallet(dependencies);
75
+ if (options.dryRun || report.sessionClient === 'ready')
76
+ return report;
77
+ if (!dependencies.interactive)
78
+ return report;
79
+ return configureWallet(report.provider ?? (await dependencies.chooseProvider()), dependencies);
80
+ }
81
+ /** Creates an Accounts provider for the active Mercator payment wallet. */
82
+ export async function createPaymentProvider(baseFetch) {
83
+ const report = await inspectWallet();
84
+ if (!report.address || !report.provider || report.sessionClient !== 'ready') {
85
+ throw new WalletRequiredError(report.provider ? report.guidance.join('\n') : undefined);
86
+ }
87
+ const instance = accountProvider(report.provider);
88
+ await Store.waitForHydration(instance.store);
89
+ const payment = Mppx.create({
90
+ ...(baseFetch ? { fetch: baseFetch } : {}),
91
+ methods: [
92
+ mppxTempo({
93
+ account: instance.getAccount(),
94
+ autoSwap: { tokenIn: [...SWAP_TOKENS] },
95
+ expectedChainId: CHAIN_ID,
96
+ mode: 'pull',
97
+ ...instance.getMppxParameters(),
98
+ }),
99
+ ],
100
+ polyfill: false,
101
+ });
102
+ return { address: report.address, fetch: payment.fetch, provider: instance };
103
+ }
104
+ /** Returns the Mercator funding page for a wallet address. */
105
+ export function fundingUrl(address, origin = FUNDING_ORIGIN) {
106
+ const url = new URL('/fund', origin);
107
+ url.searchParams.set('address', address);
108
+ return url.href;
109
+ }
110
+ async function inspectAccount(provider) {
111
+ const instance = accountProvider(provider);
112
+ await Store.waitForHydration(instance.store);
113
+ const [address] = await instance.request({ method: 'eth_accounts' });
114
+ if (!address)
115
+ return { funded: false, usable: false };
116
+ if (provider === WalletProvider.Tempo) {
117
+ if (!(await hasPaymentAuthorization(instance, address))) {
118
+ return { address, funded: false, usable: false };
119
+ }
120
+ }
121
+ return { address, ...(await fundingState(instance, address)), usable: true };
122
+ }
123
+ async function createLocal() {
124
+ const instance = accountProvider(WalletProvider.Local);
125
+ await Store.waitForHydration(instance.store);
126
+ let result = await instance.request({ method: 'wallet_connect' });
127
+ if (!result.accounts[0]) {
128
+ result = await instance.request({
129
+ method: 'wallet_connect',
130
+ params: [{ capabilities: { method: 'register', name: 'Mercator' } }],
131
+ });
132
+ }
133
+ const address = result.accounts[0]?.address;
134
+ if (!address)
135
+ throw new Error('Accounts SDK did not create a local Mercator wallet.');
136
+ return { address, ...(await fundingState(instance, address)), usable: true };
137
+ }
138
+ async function connectTempo() {
139
+ const instance = accountProvider(WalletProvider.Tempo);
140
+ await Store.waitForHydration(instance.store);
141
+ const limit = parseUnits('100', 6);
142
+ const result = await instance.request({
143
+ method: 'wallet_connect',
144
+ params: [
145
+ {
146
+ capabilities: {
147
+ authorizeAccessKey: {
148
+ expiry: Expiry.days(30),
149
+ limits: PAYMENT_TOKENS.map((token) => ({ limit: toHex(limit), token })),
150
+ },
151
+ },
152
+ },
153
+ ],
154
+ });
155
+ const address = result.accounts[0]?.address;
156
+ if (!address)
157
+ throw new Error('Tempo Wallet did not authorize a Mercator account.');
158
+ return { address, ...(await fundingState(instance, address)), usable: true };
159
+ }
160
+ function accountProvider(provider) {
161
+ const storage = Storage.filesystem({
162
+ key: provider === WalletProvider.Local ? 'mercator-local' : 'mercator-tempo',
163
+ path: process.env.MERCATOR_WALLET_PATH ?? STORAGE_PATH,
164
+ });
165
+ if (provider === WalletProvider.Tempo)
166
+ return CliProvider.create({ mpp: false, storage });
167
+ return Provider.create({
168
+ adapter: secp256k1({ name: 'Mercator' }),
169
+ mpp: false,
170
+ storage,
171
+ });
172
+ }
173
+ /** Checks whether a stored Tempo key can spend a supported Mercator payment token. */
174
+ export async function hasPaymentAuthorization(provider, address) {
175
+ const store = provider.store;
176
+ for (const key of store.getState().accessKeys) {
177
+ if (key.access.toLowerCase() !== address.toLowerCase() || key.chainId !== CHAIN_ID)
178
+ continue;
179
+ if (key.limits?.length &&
180
+ !key.limits.some((limit) => limit.limit > 0n &&
181
+ PAYMENT_TOKENS.some((token) => token.toLowerCase() === limit.token.toLowerCase())))
182
+ continue;
183
+ const status = await provider.getAccessKeyStatus({
184
+ accessKey: key.address,
185
+ address,
186
+ chainId: CHAIN_ID,
187
+ });
188
+ if (status === 'pending' || status === 'published')
189
+ return true;
190
+ }
191
+ return false;
192
+ }
193
+ async function fundingState(provider, address) {
194
+ const balances = await provider.request({
195
+ method: 'wallet_getBalances',
196
+ params: [{ account: address, chainId: toHex(CHAIN_ID), tokens: [...PAYMENT_TOKENS] }],
197
+ });
198
+ const amount = (token) => {
199
+ const balance = balances.find((candidate) => candidate.address.toLowerCase() === token.toLowerCase());
200
+ return balance ? formatUnits(BigInt(balance.balance), balance.decimals) : '0';
201
+ };
202
+ return {
203
+ balances: {
204
+ machineUSD: amount(MACHINE_USD),
205
+ pathUSD: amount(PATH_USD),
206
+ 'USDC.e': amount(USDC_E),
207
+ },
208
+ funded: balances.some((balance) => BigInt(balance.balance) > 0n),
209
+ };
210
+ }
211
+ function reportFor(provider, state) {
212
+ const balances = state.balances ? { balances: state.balances } : {};
213
+ if (!state.usable || !state.address) {
214
+ return {
215
+ ...(state.address ? { address: state.address } : {}),
216
+ guidance: [
217
+ provider === WalletProvider.Tempo
218
+ ? 'Reconnect your payment wallet: mercator wallet connect'
219
+ : 'Create a wallet on this machine: mercator wallet create',
220
+ ],
221
+ provider,
222
+ sessionClient: 'unavailable',
223
+ status: provider === WalletProvider.Tempo ? 'needs_login' : 'needs_account',
224
+ };
225
+ }
226
+ if (!state.funded) {
227
+ return {
228
+ address: state.address,
229
+ ...balances,
230
+ guidance: [
231
+ 'Fund this wallet: mercator wallet fund',
232
+ `Funding page: ${fundingUrl(state.address)}`,
233
+ ],
234
+ provider,
235
+ sessionClient: 'ready',
236
+ status: 'needs_funding',
237
+ };
238
+ }
239
+ return {
240
+ address: state.address,
241
+ ...balances,
242
+ guidance: [`Mercator payments are ready with ${formatProvider(provider)}.`],
243
+ provider,
244
+ sessionClient: 'ready',
245
+ status: 'ready',
246
+ };
247
+ }
248
+ function missingWalletReport() {
249
+ return {
250
+ guidance: [
251
+ 'Run `mercator wallet` in an interactive terminal to connect or create a payment wallet.',
252
+ ],
253
+ sessionClient: 'unavailable',
254
+ status: 'needs_account',
255
+ };
256
+ }
257
+ async function configureWallet(provider, dependencies) {
258
+ const state = provider === WalletProvider.Tempo
259
+ ? await dependencies.connectTempo()
260
+ : await dependencies.createLocal();
261
+ await dependencies.setActiveProvider(provider);
262
+ const report = reportFor(provider, state);
263
+ if (report.status === 'needs_funding' && report.address) {
264
+ await openFundingPage(report.address, dependencies);
265
+ }
266
+ return report;
267
+ }
268
+ async function chooseProvider() {
269
+ const prompt = createInterface({ input: process.stdin, output: process.stdout });
270
+ try {
271
+ while (true) {
272
+ const answer = await prompt.question('Choose a payment wallet:\n 1. Connect an existing wallet\n 2. Create a wallet on this machine\nSelection [1]: ');
273
+ if (answer.trim() === '' || answer.trim() === '1')
274
+ return WalletProvider.Tempo;
275
+ if (answer.trim() === '2')
276
+ return WalletProvider.Local;
277
+ }
278
+ }
279
+ finally {
280
+ prompt.close();
281
+ }
282
+ }
283
+ function walletPreferenceStorage() {
284
+ return Storage.filesystem({
285
+ key: 'mercator-settings',
286
+ path: process.env.MERCATOR_WALLET_PATH ?? STORAGE_PATH,
287
+ });
288
+ }
289
+ async function activeProvider() {
290
+ const provider = await walletPreferenceStorage().getItem('active-wallet');
291
+ return provider === WalletProvider.Local || provider === WalletProvider.Tempo
292
+ ? provider
293
+ : undefined;
294
+ }
295
+ async function setActiveProvider(provider) {
296
+ await walletPreferenceStorage().setItem('active-wallet', provider);
297
+ }
298
+ export async function openFundingPage(address, overrides = {}) {
299
+ const dependencies = { ...defaultDependencies, ...overrides };
300
+ const url = fundingUrl(address);
301
+ try {
302
+ await dependencies.openUrl(url);
303
+ return { opened: true, url };
304
+ }
305
+ catch {
306
+ return { opened: false, url };
307
+ }
308
+ }
309
+ async function openUrl(url) {
310
+ if (process.platform === 'darwin')
311
+ return runInteractiveCommand('open', [url]);
312
+ if (process.platform === 'win32')
313
+ return runInteractiveCommand('cmd', ['/c', 'start', '', url]);
314
+ return runInteractiveCommand('xdg-open', [url]);
315
+ }
316
+ function formatProvider(provider) {
317
+ return provider === WalletProvider.Tempo ? 'Tempo Wallet' : 'the local disk wallet';
318
+ }
319
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@tempoxyz/mercator",
3
+ "version": "0.0.0",
4
+ "description": "Install Mercator MCP and prepare its payment wallet",
5
+ "type": "module",
6
+ "bin": {
7
+ "mercator": "dist/bin.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "THIRD_PARTY_NOTICES.md"
12
+ ],
13
+ "engines": {
14
+ "node": ">=24"
15
+ },
16
+ "homepage": "https://mercator.tempo.xyz",
17
+ "keywords": [
18
+ "agent",
19
+ "mercator",
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "tempo"
23
+ ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "repository": {
28
+ "directory": "packages/cli",
29
+ "type": "git",
30
+ "url": "https://github.com/tempoxyz/mercator.git"
31
+ },
32
+ "scripts": {
33
+ "build": "tsc --project tsconfig.json && node scripts/copy-plugin.mjs",
34
+ "check:types": "tsc --project tsconfig.json --noEmit",
35
+ "prepack": "pnpm build",
36
+ "test": "vitest run",
37
+ "test:coverage": "vitest run --coverage --coverage.provider=istanbul",
38
+ "test:mutation": "stryker run",
39
+ "test:package": "node scripts/package-smoke.mjs"
40
+ },
41
+ "devDependencies": {
42
+ "@stryker-mutator/core": "10.0.0",
43
+ "@stryker-mutator/vitest-runner": "10.0.0",
44
+ "@types/node": "24.13.3",
45
+ "@vitest/coverage-istanbul": "4.1.10",
46
+ "fast-check": "4.9.0",
47
+ "typescript": "5.9.3",
48
+ "vitest": "4.1.10"
49
+ },
50
+ "dependencies": {
51
+ "accounts": "0.16.2",
52
+ "incur": "0.5.1",
53
+ "mppx": "https://pkg.pr.new/mppx@825",
54
+ "viem": "2.55.13"
55
+ }
56
+ }