@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.
- package/README.md +208 -0
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/dist/agents.d.ts +26 -0
- package/dist/agents.js +152 -0
- package/dist/agents.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/client-selection.d.ts +13 -0
- package/dist/client-selection.js +97 -0
- package/dist/client-selection.js.map +1 -0
- package/dist/clients.d.ts +70 -0
- package/dist/clients.js +282 -0
- package/dist/clients.js.map +1 -0
- package/dist/codex-plugin.d.ts +52 -0
- package/dist/codex-plugin.js +417 -0
- package/dist/codex-plugin.js.map +1 -0
- package/dist/command.d.ts +17 -0
- package/dist/command.js +59 -0
- package/dist/command.js.map +1 -0
- package/dist/doctor.d.ts +10 -0
- package/dist/doctor.js +105 -0
- package/dist/doctor.js.map +1 -0
- package/dist/globe-frames.d.ts +6 -0
- package/dist/globe-frames.js +208 -0
- package/dist/globe-frames.js.map +1 -0
- package/dist/globe.d.ts +12 -0
- package/dist/globe.js +73 -0
- package/dist/globe.js.map +1 -0
- package/dist/index.d.ts +118 -0
- package/dist/index.js +568 -0
- package/dist/index.js.map +1 -0
- package/dist/native-payments.d.ts +34 -0
- package/dist/native-payments.js +191 -0
- package/dist/native-payments.js.map +1 -0
- package/dist/plugin-bundle/.codex-plugin/plugin.json +35 -0
- package/dist/plugin-bundle/.mcp.json +9 -0
- package/dist/plugin-bundle/README.md +26 -0
- package/dist/plugin-bundle/assets/favicon.svg +7 -0
- package/dist/plugin-bundle/assets/mercator-overview.png +0 -0
- package/dist/plugin-bundle/assets/service-network.png +0 -0
- package/dist/plugin-bundle/assets/workflow-composition.png +0 -0
- package/dist/setup-progress.d.ts +13 -0
- package/dist/setup-progress.js +22 -0
- package/dist/setup-progress.js.map +1 -0
- package/dist/submit.d.ts +15 -0
- package/dist/submit.js +127 -0
- package/dist/submit.js.map +1 -0
- package/dist/wallet.d.ts +77 -0
- package/dist/wallet.js +319 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +56 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import { Cli, z } from 'incur';
|
|
2
|
+
import packageMetadata from '../package.json' with { type: 'json' };
|
|
3
|
+
import { installCodexAgents, removeCodexAgents } from './agents.js';
|
|
4
|
+
import { selectClients } from './client-selection.js';
|
|
5
|
+
import { CLIENT_IDS, Client, configurationState, installedClients, mergeConfigFile, removalPlan, removeConfigFile, setupPlan, } from './clients.js';
|
|
6
|
+
import { inspectCodexPlugin, installCodexPlugin, removeCodexPlugin, } from './codex-plugin.js';
|
|
7
|
+
import { runInteractiveCommand } from './command.js';
|
|
8
|
+
import { diagnose } from './doctor.js';
|
|
9
|
+
import { setupNativePayments } from './native-payments.js';
|
|
10
|
+
import { startTerminalSetupProgress } from './setup-progress.js';
|
|
11
|
+
import { submitPaidJob } from './submit.js';
|
|
12
|
+
import { inspectWallet, openFundingPage, setupWallet, WalletRequiredError, } from './wallet.js';
|
|
13
|
+
const DEFAULT_ENDPOINT = 'https://mercator.tempo.xyz/mcp';
|
|
14
|
+
const defaultDependencies = {
|
|
15
|
+
configurationState,
|
|
16
|
+
diagnose,
|
|
17
|
+
inspectCodexPlugin,
|
|
18
|
+
installCodexAgents,
|
|
19
|
+
installCodexPlugin,
|
|
20
|
+
inspectWallet,
|
|
21
|
+
installedClients,
|
|
22
|
+
mergeConfigFile,
|
|
23
|
+
removeCodexAgents,
|
|
24
|
+
removeCodexPlugin,
|
|
25
|
+
removeConfigFile,
|
|
26
|
+
openFundingPage,
|
|
27
|
+
runCommand: runInteractiveCommand,
|
|
28
|
+
selectClients,
|
|
29
|
+
setupNativePayments,
|
|
30
|
+
startSetupProgress: startTerminalSetupProgress,
|
|
31
|
+
submitPaidJob,
|
|
32
|
+
setupWallet,
|
|
33
|
+
};
|
|
34
|
+
const setupOptions = z.object({
|
|
35
|
+
all: z.boolean().default(false).describe('Configure every detected client'),
|
|
36
|
+
agents: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.default(true)
|
|
39
|
+
.describe('Install Codex AGENTS.md guidance; disable with --no-agents'),
|
|
40
|
+
client: z.array(z.enum(CLIENT_IDS)).default([]).describe('Target a client; repeatable'),
|
|
41
|
+
dryRun: z.boolean().default(false).describe('Show changes without writing them'),
|
|
42
|
+
force: z
|
|
43
|
+
.boolean()
|
|
44
|
+
.default(false)
|
|
45
|
+
.describe('Recreate Mercator MCP without changing wallet or key state'),
|
|
46
|
+
plugin: z
|
|
47
|
+
.boolean()
|
|
48
|
+
.default(true)
|
|
49
|
+
.describe('Install the local desktop plugin; disable with --no-plugin'),
|
|
50
|
+
removeAgents: z
|
|
51
|
+
.boolean()
|
|
52
|
+
.default(false)
|
|
53
|
+
.describe('Remove managed Codex guidance without running setup'),
|
|
54
|
+
url: z.url().default(DEFAULT_ENDPOINT).describe('Mercator MCP endpoint'),
|
|
55
|
+
});
|
|
56
|
+
const submitOptions = z.object({
|
|
57
|
+
body: z.string().describe('JSON job body returned by create_job'),
|
|
58
|
+
maxSpend: z.string().describe('Maximum accepted direct charge'),
|
|
59
|
+
url: z.url().describe('Mercator REST jobs endpoint'),
|
|
60
|
+
});
|
|
61
|
+
/** Creates the Mercator CLI router with injectable side-effect dependencies. */
|
|
62
|
+
export function createMercatorCli(overrides = {}) {
|
|
63
|
+
const dependencies = { ...defaultDependencies, ...overrides };
|
|
64
|
+
const runSetup = async (context, options) => {
|
|
65
|
+
const progress = context.agent ? undefined : dependencies.startSetupProgress();
|
|
66
|
+
let result;
|
|
67
|
+
try {
|
|
68
|
+
result = await setup(options, dependencies, progress);
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
await progress?.stop();
|
|
72
|
+
}
|
|
73
|
+
if (!result.ready) {
|
|
74
|
+
return context.error({
|
|
75
|
+
code: 'SETUP_INCOMPLETE',
|
|
76
|
+
exitCode: 1,
|
|
77
|
+
message: context.agent
|
|
78
|
+
? `Mercator setup completed, but readiness checks failed: ${JSON.stringify(result)}`
|
|
79
|
+
: formatSetupResult(result),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return context.agent ? result : formatSetupResult(result);
|
|
83
|
+
};
|
|
84
|
+
const runWalletSetup = async (context, action) => {
|
|
85
|
+
const report = await dependencies.setupWallet(action ? { action } : {});
|
|
86
|
+
if (report.sessionClient !== 'ready') {
|
|
87
|
+
return context.error({
|
|
88
|
+
code: 'WALLET_REQUIRED',
|
|
89
|
+
exitCode: 1,
|
|
90
|
+
message: report.guidance.join('\n'),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return { ready: true, report };
|
|
94
|
+
};
|
|
95
|
+
const walletCommand = Cli.create('wallet', {
|
|
96
|
+
description: 'Set up or inspect the payment wallet',
|
|
97
|
+
run: async (context) => runWalletSetup(context),
|
|
98
|
+
})
|
|
99
|
+
.command('connect', {
|
|
100
|
+
description: 'Connect an existing wallet in the browser',
|
|
101
|
+
run: async (context) => runWalletSetup(context, 'connect'),
|
|
102
|
+
})
|
|
103
|
+
.command('create', {
|
|
104
|
+
description: 'Create a wallet on this machine',
|
|
105
|
+
run: async (context) => runWalletSetup(context, 'create'),
|
|
106
|
+
})
|
|
107
|
+
.command('status', {
|
|
108
|
+
description: 'Show payment wallet readiness without onboarding',
|
|
109
|
+
run: async () => dependencies.inspectWallet(),
|
|
110
|
+
})
|
|
111
|
+
.command('balance', {
|
|
112
|
+
description: 'Show the balance of the connected wallet',
|
|
113
|
+
run: async (context) => {
|
|
114
|
+
const report = await dependencies.inspectWallet();
|
|
115
|
+
if (!report.address ||
|
|
116
|
+
!report.provider ||
|
|
117
|
+
report.sessionClient !== 'ready' ||
|
|
118
|
+
report.balances === undefined) {
|
|
119
|
+
return context.error({
|
|
120
|
+
code: 'WALLET_REQUIRED',
|
|
121
|
+
exitCode: 1,
|
|
122
|
+
message: report.guidance.join('\n'),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
address: report.address,
|
|
127
|
+
balances: report.balances,
|
|
128
|
+
provider: report.provider,
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
})
|
|
132
|
+
.command('fund', {
|
|
133
|
+
description: 'Open the Mercator funding page for the connected wallet',
|
|
134
|
+
run: async (context) => {
|
|
135
|
+
const report = await dependencies.inspectWallet();
|
|
136
|
+
if (!report.address || !report.provider || report.sessionClient !== 'ready') {
|
|
137
|
+
return context.error({
|
|
138
|
+
code: 'WALLET_REQUIRED',
|
|
139
|
+
exitCode: 1,
|
|
140
|
+
message: report.guidance.join('\n'),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
const result = await dependencies.openFundingPage(report.address);
|
|
144
|
+
return {
|
|
145
|
+
address: report.address,
|
|
146
|
+
...(report.balances !== undefined ? { balances: report.balances } : {}),
|
|
147
|
+
opened: result.opened,
|
|
148
|
+
provider: report.provider,
|
|
149
|
+
url: result.url,
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
return Cli.create('mercator', {
|
|
154
|
+
description: 'Install, diagnose, and remove Mercator agent integrations',
|
|
155
|
+
examples: [
|
|
156
|
+
{ description: 'Set up Mercator for Codex', options: { client: [Client.Codex] } },
|
|
157
|
+
],
|
|
158
|
+
options: setupOptions,
|
|
159
|
+
update: false,
|
|
160
|
+
version: packageMetadata.version,
|
|
161
|
+
run: async (context) => runSetup(context, context.options),
|
|
162
|
+
})
|
|
163
|
+
.command('setup', {
|
|
164
|
+
description: 'Install MCP, optional guidance, and MPP payment integrations',
|
|
165
|
+
options: setupOptions,
|
|
166
|
+
run: async (context) => runSetup(context, context.options),
|
|
167
|
+
})
|
|
168
|
+
.command('uninstall', {
|
|
169
|
+
description: 'Remove Mercator MCP registrations, plugin, and managed guidance',
|
|
170
|
+
destructive: true,
|
|
171
|
+
options: z.object({
|
|
172
|
+
client: z
|
|
173
|
+
.array(z.enum(CLIENT_IDS))
|
|
174
|
+
.default([])
|
|
175
|
+
.describe('Remove only these client integrations; repeatable'),
|
|
176
|
+
dryRun: z.boolean().default(false).describe('Show changes without writing them'),
|
|
177
|
+
}),
|
|
178
|
+
run: async (context) => {
|
|
179
|
+
return uninstall(context.options, dependencies);
|
|
180
|
+
},
|
|
181
|
+
})
|
|
182
|
+
.command(walletCommand)
|
|
183
|
+
.command('submit', {
|
|
184
|
+
description: 'Submit a bounded paid job with the Mercator wallet',
|
|
185
|
+
options: submitOptions,
|
|
186
|
+
run: async (context) => {
|
|
187
|
+
try {
|
|
188
|
+
return await dependencies.submitPaidJob(context.options);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error instanceof WalletRequiredError) {
|
|
192
|
+
return context.error({
|
|
193
|
+
code: error.code,
|
|
194
|
+
exitCode: 1,
|
|
195
|
+
message: error.message,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
})
|
|
202
|
+
.command('doctor', {
|
|
203
|
+
description: 'Check plugin, transport, discovery, sessions, and wallet readiness',
|
|
204
|
+
options: z.object({
|
|
205
|
+
url: z.url().default(DEFAULT_ENDPOINT).describe('Mercator MCP endpoint'),
|
|
206
|
+
}),
|
|
207
|
+
run: async (context) => {
|
|
208
|
+
const result = await doctor(context.options, dependencies);
|
|
209
|
+
if (!result.ready) {
|
|
210
|
+
return context.error({
|
|
211
|
+
code: 'DIAGNOSIS_FAILED',
|
|
212
|
+
exitCode: 1,
|
|
213
|
+
message: `One or more Mercator readiness checks failed: ${JSON.stringify(result.report)}`,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
},
|
|
218
|
+
})
|
|
219
|
+
.command('clients', {
|
|
220
|
+
description: 'List supported agent clients',
|
|
221
|
+
run: () => ({ clients: CLIENT_IDS }),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/** Runs the CLI and returns its exit code without terminating the current process. */
|
|
225
|
+
export async function run(argv, overrides = {}) {
|
|
226
|
+
let exitCode = 0;
|
|
227
|
+
let frameworkOutput = '';
|
|
228
|
+
const setupFlags = new Set([
|
|
229
|
+
'--agents',
|
|
230
|
+
'--all',
|
|
231
|
+
'--client',
|
|
232
|
+
'--dry-run',
|
|
233
|
+
'--force',
|
|
234
|
+
'--no-agents',
|
|
235
|
+
'--no-plugin',
|
|
236
|
+
'--plugin',
|
|
237
|
+
'--remove-agents',
|
|
238
|
+
'--url',
|
|
239
|
+
]);
|
|
240
|
+
const normalizedArgv = argv[0] && setupFlags.has(argv[0]) ? ['setup', ...argv] : argv;
|
|
241
|
+
await createMercatorCli(overrides).serve(normalizedArgv, {
|
|
242
|
+
exit: (code) => {
|
|
243
|
+
exitCode = code;
|
|
244
|
+
},
|
|
245
|
+
stdout: (value) => {
|
|
246
|
+
frameworkOutput += value;
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
if (frameworkOutput) {
|
|
250
|
+
const output = frameworkOutput.trimEnd();
|
|
251
|
+
if (exitCode === 0)
|
|
252
|
+
console.log(output);
|
|
253
|
+
else
|
|
254
|
+
console.error(output);
|
|
255
|
+
}
|
|
256
|
+
return exitCode;
|
|
257
|
+
}
|
|
258
|
+
async function setup(options, dependencies, progress) {
|
|
259
|
+
progress?.report(options.dryRun ? 'Preparing setup preview...' : 'Preparing setup...');
|
|
260
|
+
if (options.removeAgents && !options.agents) {
|
|
261
|
+
throw new Error('--remove-agents and --no-agents cannot be used together');
|
|
262
|
+
}
|
|
263
|
+
if (options.all && options.client.length > 0) {
|
|
264
|
+
throw new Error('--all and --client cannot be used together');
|
|
265
|
+
}
|
|
266
|
+
if (options.force && options.removeAgents) {
|
|
267
|
+
throw new Error('--force and --remove-agents cannot be used together');
|
|
268
|
+
}
|
|
269
|
+
if (options.removeAgents) {
|
|
270
|
+
progress?.report('Removing managed Codex guidance...');
|
|
271
|
+
const result = await dependencies.removeCodexAgents({ dryRun: options.dryRun });
|
|
272
|
+
return { agents: result, clients: [], dryRun: options.dryRun, ready: true };
|
|
273
|
+
}
|
|
274
|
+
let clients;
|
|
275
|
+
let plugin;
|
|
276
|
+
const clientResults = [];
|
|
277
|
+
const detectedStates = new Map();
|
|
278
|
+
if (options.client.length > 0) {
|
|
279
|
+
clients = [...new Set(options.client)];
|
|
280
|
+
progress?.report(`Using requested clients: ${clients.join(', ')}.`);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
progress?.report('Detecting installed clients...');
|
|
284
|
+
clients = await dependencies.installedClients();
|
|
285
|
+
if (clients.length === 0) {
|
|
286
|
+
progress?.report('No agent CLI detected.');
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
progress?.report(`Detected clients: ${clients.join(', ')}.`);
|
|
290
|
+
}
|
|
291
|
+
if (clients.length > 1 && !options.all) {
|
|
292
|
+
let reusingConfiguredClients = false;
|
|
293
|
+
if (!options.dryRun) {
|
|
294
|
+
progress?.report('Checking existing MCP registrations...');
|
|
295
|
+
await Promise.all(clients.map(async (client) => {
|
|
296
|
+
const state = await dependencies.configurationState(setupPlan(client, options.url));
|
|
297
|
+
detectedStates.set(client, state);
|
|
298
|
+
}));
|
|
299
|
+
const configured = clients.filter((client) => detectedStates.get(client) === 'current');
|
|
300
|
+
if (configured.length > 0) {
|
|
301
|
+
clients = configured;
|
|
302
|
+
reusingConfiguredClients = true;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (clients.length > 1 && !reusingConfiguredClients) {
|
|
306
|
+
progress?.report('Waiting for client selection...');
|
|
307
|
+
clients = progress
|
|
308
|
+
? await dependencies.selectClients(clients, { globe: progress.globe })
|
|
309
|
+
: await dependencies.selectClients(clients);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (clients.length === 0 && !options.plugin) {
|
|
314
|
+
throw new Error('No supported agent CLI detected and local plugin installation is disabled. Install a supported agent CLI or rerun without --no-plugin.');
|
|
315
|
+
}
|
|
316
|
+
if (options.plugin) {
|
|
317
|
+
progress?.report('Bootstrapping the local desktop plugin...');
|
|
318
|
+
plugin = await dependencies.installCodexPlugin({
|
|
319
|
+
dryRun: options.dryRun,
|
|
320
|
+
packageVersion: packageMetadata.version,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
for (const client of clients) {
|
|
324
|
+
const plan = setupPlan(client, options.url);
|
|
325
|
+
if (options.dryRun) {
|
|
326
|
+
progress?.report(`Planning ${client} MCP configuration...`);
|
|
327
|
+
clientResults.push({
|
|
328
|
+
action: options.force
|
|
329
|
+
? `Recreate the Mercator MCP registration, then run: ${describeSetupPlan(plan)}`
|
|
330
|
+
: describeSetupPlan(plan),
|
|
331
|
+
client,
|
|
332
|
+
status: 'planned',
|
|
333
|
+
});
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
if (!detectedStates.has(client)) {
|
|
337
|
+
progress?.report(`Checking ${client} MCP configuration...`);
|
|
338
|
+
}
|
|
339
|
+
const state = detectedStates.get(client) ?? (await dependencies.configurationState(plan));
|
|
340
|
+
if (state === 'current' && !options.force) {
|
|
341
|
+
clientResults.push({ client, status: 'already_configured' });
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
if (state === 'different' && !options.force) {
|
|
345
|
+
throw new Error(`${client}: Mercator is already configured differently. ${plan.undo}, then run this command again.`);
|
|
346
|
+
}
|
|
347
|
+
if (options.force && state !== 'missing') {
|
|
348
|
+
progress?.report(`Removing existing ${client} MCP registration...`);
|
|
349
|
+
await removeClientConfiguration(client, dependencies);
|
|
350
|
+
}
|
|
351
|
+
progress?.report(`Configuring ${client} MCP...`);
|
|
352
|
+
if (plan.kind === 'file')
|
|
353
|
+
await dependencies.mergeConfigFile(plan);
|
|
354
|
+
else
|
|
355
|
+
await dependencies.runCommand(plan.command, plan.args);
|
|
356
|
+
clientResults.push({
|
|
357
|
+
client,
|
|
358
|
+
status: options.force && state !== 'missing' ? 'reconfigured' : 'configured',
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
let agents;
|
|
362
|
+
if (options.agents && (plugin !== undefined || clients.includes(Client.Codex))) {
|
|
363
|
+
progress?.report('Refreshing managed Codex guidance...');
|
|
364
|
+
agents = await dependencies.installCodexAgents({ dryRun: options.dryRun });
|
|
365
|
+
}
|
|
366
|
+
progress?.report('Checking native payment integrations...');
|
|
367
|
+
const nativePayments = await dependencies.setupNativePayments(clients, {
|
|
368
|
+
dryRun: options.dryRun || options.force,
|
|
369
|
+
endpoint: options.url,
|
|
370
|
+
});
|
|
371
|
+
const hasGenericClient = plugin !== undefined ||
|
|
372
|
+
clients.some((client) => client !== Client.OpenClaw && client !== Client.Hermes);
|
|
373
|
+
let walletReport;
|
|
374
|
+
if (hasGenericClient) {
|
|
375
|
+
if (options.force) {
|
|
376
|
+
progress?.report('Checking payment wallet...');
|
|
377
|
+
walletReport = await dependencies.inspectWallet();
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
progress?.report('Preparing payment wallet...');
|
|
381
|
+
walletReport = await dependencies.setupWallet({
|
|
382
|
+
dryRun: options.dryRun,
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
if (options.dryRun) {
|
|
387
|
+
return {
|
|
388
|
+
...(agents ? { agents } : {}),
|
|
389
|
+
clients: clientResults,
|
|
390
|
+
dryRun: true,
|
|
391
|
+
nativePayments,
|
|
392
|
+
...(plugin ? { plugin } : {}),
|
|
393
|
+
ready: true,
|
|
394
|
+
...(walletReport ? { wallet: withoutBalances(walletReport) } : {}),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
progress?.report('Running Mercator readiness checks...');
|
|
398
|
+
const diagnosis = walletReport
|
|
399
|
+
? await doctor({ url: options.url }, dependencies, progress)
|
|
400
|
+
: await diagnoseWithoutWallet(options.url, dependencies, progress);
|
|
401
|
+
const nativePaymentsReady = nativePayments.every((report) => report.status === 'ready');
|
|
402
|
+
return {
|
|
403
|
+
...(agents
|
|
404
|
+
? {
|
|
405
|
+
agents: {
|
|
406
|
+
...agents,
|
|
407
|
+
reloadRequired: agents.state !== 'current',
|
|
408
|
+
},
|
|
409
|
+
}
|
|
410
|
+
: {}),
|
|
411
|
+
clients: clientResults,
|
|
412
|
+
diagnosis: diagnosis.report,
|
|
413
|
+
dryRun: false,
|
|
414
|
+
nativePayments,
|
|
415
|
+
...(plugin ? { plugin } : {}),
|
|
416
|
+
ready: diagnosis.ready &&
|
|
417
|
+
nativePaymentsReady &&
|
|
418
|
+
(walletReport === undefined || walletReport.sessionClient === 'ready'),
|
|
419
|
+
...(walletReport ? { wallet: withoutBalances(walletReport) } : {}),
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
async function removeClientConfiguration(client, dependencies) {
|
|
423
|
+
const removal = removalPlan(client);
|
|
424
|
+
if (removal.kind === 'manual') {
|
|
425
|
+
throw new Error(`${client}: Cannot force setup automatically. ${removal.instructions}`);
|
|
426
|
+
}
|
|
427
|
+
if (removal.kind === 'file') {
|
|
428
|
+
await dependencies.removeConfigFile(removal);
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
await dependencies.runCommand(removal.command, removal.args);
|
|
432
|
+
}
|
|
433
|
+
function formatSetupResult(result) {
|
|
434
|
+
if ('agents' in result && result.agents && 'paths' in result.agents) {
|
|
435
|
+
const { paths, state } = result.agents;
|
|
436
|
+
const title = state === 'removed'
|
|
437
|
+
? 'Mercator guidance removed.'
|
|
438
|
+
: state === 'planned'
|
|
439
|
+
? 'Mercator guidance removal preview:'
|
|
440
|
+
: 'Mercator guidance was not installed.';
|
|
441
|
+
return [title, ...paths.map((path) => `- ${path}`)].join('\n');
|
|
442
|
+
}
|
|
443
|
+
const lines = [
|
|
444
|
+
result.dryRun
|
|
445
|
+
? 'Mercator setup preview:'
|
|
446
|
+
: result.ready
|
|
447
|
+
? 'Mercator setup complete.'
|
|
448
|
+
: 'Mercator setup incomplete.',
|
|
449
|
+
];
|
|
450
|
+
for (const client of result.clients) {
|
|
451
|
+
const action = client.action ? ` — ${client.action}` : '';
|
|
452
|
+
lines.push(`- ${client.client} MCP: ${humanizeStatus(client.status)}${action}`);
|
|
453
|
+
}
|
|
454
|
+
if ('plugin' in result && result.plugin) {
|
|
455
|
+
lines.push(`- Codex/ChatGPT plugin: ${humanizeStatus(result.plugin.status)} (${result.plugin.pluginPath})`);
|
|
456
|
+
if (result.plugin.reloadRequired && !result.dryRun) {
|
|
457
|
+
lines.push(' Restart ChatGPT desktop to load Mercator.');
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if ('agents' in result && result.agents) {
|
|
461
|
+
lines.push(`- Codex guidance: ${humanizeStatus(result.agents.state)} (${result.agents.path})`);
|
|
462
|
+
if ('reloadRequired' in result.agents && result.agents.reloadRequired) {
|
|
463
|
+
lines.push(' Restart Codex to load the updated guidance.');
|
|
464
|
+
}
|
|
465
|
+
if (result.agents.shadowed) {
|
|
466
|
+
lines.push(' Warning: AGENTS.override.md shadows this guidance.');
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if ('nativePayments' in result) {
|
|
470
|
+
for (const payment of result.nativePayments) {
|
|
471
|
+
lines.push(`- ${payment.client} payments: ${humanizeStatus(payment.status)}`);
|
|
472
|
+
if (payment.status === 'action_required' || payment.status === 'planned') {
|
|
473
|
+
lines.push(...payment.guidance.map((guidance) => ` ${guidance}`));
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if ('wallet' in result && result.wallet) {
|
|
478
|
+
const walletLabel = result.wallet.provider
|
|
479
|
+
? `${humanizeStatus(result.wallet.provider)} wallet`
|
|
480
|
+
: 'Payment wallet';
|
|
481
|
+
lines.push(`- ${walletLabel}: ${humanizeStatus(result.wallet.status)}`);
|
|
482
|
+
if (result.wallet.status !== 'ready') {
|
|
483
|
+
lines.push(...result.wallet.guidance.map((guidance) => ` ${guidance}`));
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
if ('diagnosis' in result) {
|
|
487
|
+
lines.push(`- MCP transport: ${humanizeStatus(result.diagnosis.transport)}`, `- Service discovery: ${humanizeStatus(result.diagnosis.discovery)}`);
|
|
488
|
+
}
|
|
489
|
+
return lines.join('\n');
|
|
490
|
+
}
|
|
491
|
+
function humanizeStatus(status) {
|
|
492
|
+
return status.replaceAll('_', ' ');
|
|
493
|
+
}
|
|
494
|
+
function describeSetupPlan(plan) {
|
|
495
|
+
return plan.kind === 'command'
|
|
496
|
+
? [plan.command, ...plan.args].join(' ')
|
|
497
|
+
: `Update ${plan.path}`;
|
|
498
|
+
}
|
|
499
|
+
async function uninstall(options, dependencies) {
|
|
500
|
+
let plugin;
|
|
501
|
+
if (options.client.length === 0 || options.client.includes(Client.Codex)) {
|
|
502
|
+
plugin = await dependencies.removeCodexPlugin({ dryRun: options.dryRun });
|
|
503
|
+
}
|
|
504
|
+
const clients = options.client.length > 0 ? [...new Set(options.client)] : CLIENT_IDS;
|
|
505
|
+
const clientResults = [];
|
|
506
|
+
for (const client of clients) {
|
|
507
|
+
const removal = removalPlan(client);
|
|
508
|
+
if (removal.kind === 'manual') {
|
|
509
|
+
clientResults.push({ client, instructions: removal.instructions, status: 'manual' });
|
|
510
|
+
continue;
|
|
511
|
+
}
|
|
512
|
+
if (removal.kind === 'file') {
|
|
513
|
+
const state = await dependencies.removeConfigFile(removal, {
|
|
514
|
+
dryRun: options.dryRun,
|
|
515
|
+
});
|
|
516
|
+
clientResults.push({ client, status: state });
|
|
517
|
+
continue;
|
|
518
|
+
}
|
|
519
|
+
const state = await dependencies.configurationState(setupPlan(client, DEFAULT_ENDPOINT));
|
|
520
|
+
if (state === 'missing') {
|
|
521
|
+
clientResults.push({ client, status: 'missing' });
|
|
522
|
+
continue;
|
|
523
|
+
}
|
|
524
|
+
if (options.dryRun) {
|
|
525
|
+
clientResults.push({ client, status: 'planned' });
|
|
526
|
+
continue;
|
|
527
|
+
}
|
|
528
|
+
await dependencies.runCommand(removal.command, removal.args);
|
|
529
|
+
clientResults.push({ client, status: 'removed' });
|
|
530
|
+
}
|
|
531
|
+
let agents;
|
|
532
|
+
if (options.client.length === 0 || options.client.includes(Client.Codex)) {
|
|
533
|
+
agents = await dependencies.removeCodexAgents({ dryRun: options.dryRun });
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
536
|
+
...(agents ? { agents } : {}),
|
|
537
|
+
clients: clientResults,
|
|
538
|
+
dryRun: options.dryRun,
|
|
539
|
+
...(plugin ? { plugin } : {}),
|
|
540
|
+
preserved: ['wallets', 'keys', 'balances', 'payment_sessions', 'mpp_plugins'],
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
async function doctor(options, dependencies, progress) {
|
|
544
|
+
const [report, walletReport, plugin] = await Promise.all([
|
|
545
|
+
dependencies.diagnose(options.url, undefined, progress?.report),
|
|
546
|
+
dependencies.inspectWallet(),
|
|
547
|
+
dependencies.inspectCodexPlugin({ packageVersion: packageMetadata.version }),
|
|
548
|
+
]);
|
|
549
|
+
const combined = { ...report, plugin, wallet: withoutBalances(walletReport) };
|
|
550
|
+
return {
|
|
551
|
+
ready: report.transport === 'ready' &&
|
|
552
|
+
report.discovery === 'ready' &&
|
|
553
|
+
walletReport.sessionClient === 'ready',
|
|
554
|
+
report: combined,
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
function withoutBalances({ balances: _, ...report }) {
|
|
558
|
+
return report;
|
|
559
|
+
}
|
|
560
|
+
async function diagnoseWithoutWallet(endpoint, dependencies, progress) {
|
|
561
|
+
const report = await dependencies.diagnose(endpoint, undefined, progress?.report);
|
|
562
|
+
return {
|
|
563
|
+
ready: report.transport === 'ready' && report.discovery === 'ready',
|
|
564
|
+
report,
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
export { diagnose, inspectCodexPlugin, inspectWallet, installCodexPlugin, openFundingPage, removeCodexPlugin, setupPlan, setupWallet, };
|
|
568
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ClientId } from './clients.js';
|
|
2
|
+
import { type CommandResult } from './command.js';
|
|
3
|
+
/** Native payment integrations managed by their agent runtime. */
|
|
4
|
+
declare const NativePayment: {
|
|
5
|
+
readonly HermesMpp: "hermes-mpp";
|
|
6
|
+
readonly OpenClawMpp: "openclaw-mpp";
|
|
7
|
+
};
|
|
8
|
+
/** Native integration setup states returned without sensitive wallet material. */
|
|
9
|
+
export type NativePaymentReport = {
|
|
10
|
+
client: Extract<ClientId, 'hermes' | 'openclaw'>;
|
|
11
|
+
guidance: string[];
|
|
12
|
+
integration: (typeof NativePayment)[keyof typeof NativePayment];
|
|
13
|
+
status: 'action_required' | 'planned' | 'ready';
|
|
14
|
+
};
|
|
15
|
+
type NativePaymentDependencies = {
|
|
16
|
+
commandAvailable: (command: string) => Promise<boolean>;
|
|
17
|
+
env: NodeJS.ProcessEnv;
|
|
18
|
+
home: string;
|
|
19
|
+
interactive: boolean;
|
|
20
|
+
readTextFile: (path: string) => Promise<string>;
|
|
21
|
+
runCaptured: (command: string, args: string[]) => Promise<CommandResult>;
|
|
22
|
+
runInteractive: (command: string, args: string[]) => Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
type NativePaymentOptions = {
|
|
25
|
+
dryRun: boolean;
|
|
26
|
+
endpoint: string;
|
|
27
|
+
};
|
|
28
|
+
/** Configures runtime-native payment integrations for selected clients. */
|
|
29
|
+
export declare function setupNativePayments(clients: readonly ClientId[], options: NativePaymentOptions, overrides?: Partial<NativePaymentDependencies>): Promise<NativePaymentReport[]>;
|
|
30
|
+
/** Reads only the Hermes MPP origin allowlist, never other environment values. */
|
|
31
|
+
export declare function parseAllowedOrigins(content: string): string[] | undefined;
|
|
32
|
+
/** Adds one exact origin without removing or duplicating existing entries. */
|
|
33
|
+
export declare function mergeAllowedOrigins(existing: readonly string[], origin: string): string[];
|
|
34
|
+
export {};
|