botanary 0.5.2 → 0.6.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 (100) hide show
  1. package/dist/botanary.js +2 -0
  2. package/package.json +8 -6
  3. package/dist/bin/botanary.js +0 -25
  4. package/dist/bin/botanary.js.map +0 -1
  5. package/dist/src/app-url.js +0 -52
  6. package/dist/src/app-url.js.map +0 -1
  7. package/dist/src/cli.js +0 -195
  8. package/dist/src/cli.js.map +0 -1
  9. package/dist/src/commands/account.js +0 -171
  10. package/dist/src/commands/account.js.map +0 -1
  11. package/dist/src/commands/agent.js +0 -338
  12. package/dist/src/commands/agent.js.map +0 -1
  13. package/dist/src/commands/authority.js +0 -634
  14. package/dist/src/commands/authority.js.map +0 -1
  15. package/dist/src/commands/mcp.js +0 -163
  16. package/dist/src/commands/mcp.js.map +0 -1
  17. package/dist/src/commands/services.js +0 -460
  18. package/dist/src/commands/services.js.map +0 -1
  19. package/dist/src/commands/session-writes.js +0 -196
  20. package/dist/src/commands/session-writes.js.map +0 -1
  21. package/dist/src/commands/sign.js +0 -311
  22. package/dist/src/commands/sign.js.map +0 -1
  23. package/dist/src/commands/system.js +0 -135
  24. package/dist/src/commands/system.js.map +0 -1
  25. package/dist/src/commands/tokens.js +0 -36
  26. package/dist/src/commands/tokens.js.map +0 -1
  27. package/dist/src/commands/utilities.js +0 -119
  28. package/dist/src/commands/utilities.js.map +0 -1
  29. package/dist/src/commands/wallet.js +0 -1013
  30. package/dist/src/commands/wallet.js.map +0 -1
  31. package/dist/src/commands/watch.js +0 -259
  32. package/dist/src/commands/watch.js.map +0 -1
  33. package/dist/src/completion.js +0 -69
  34. package/dist/src/completion.js.map +0 -1
  35. package/dist/src/config-store.js +0 -52
  36. package/dist/src/config-store.js.map +0 -1
  37. package/dist/src/context.js +0 -19
  38. package/dist/src/context.js.map +0 -1
  39. package/dist/src/errors.js +0 -116
  40. package/dist/src/errors.js.map +0 -1
  41. package/dist/src/help/examples.js +0 -904
  42. package/dist/src/help/examples.js.map +0 -1
  43. package/dist/src/help/format.js +0 -144
  44. package/dist/src/help/format.js.map +0 -1
  45. package/dist/src/help/groups.js +0 -39
  46. package/dist/src/help/groups.js.map +0 -1
  47. package/dist/src/install-method.js +0 -50
  48. package/dist/src/install-method.js.map +0 -1
  49. package/dist/src/mcp-snippets.js +0 -27
  50. package/dist/src/mcp-snippets.js.map +0 -1
  51. package/dist/src/outcome.js +0 -63
  52. package/dist/src/outcome.js.map +0 -1
  53. package/dist/src/package-version.js +0 -53
  54. package/dist/src/package-version.js.map +0 -1
  55. package/dist/src/parser.js +0 -48
  56. package/dist/src/parser.js.map +0 -1
  57. package/dist/src/progress.js +0 -56
  58. package/dist/src/progress.js.map +0 -1
  59. package/dist/src/prompt-doc.js +0 -92
  60. package/dist/src/prompt-doc.js.map +0 -1
  61. package/dist/src/render/accounts.js +0 -21
  62. package/dist/src/render/accounts.js.map +0 -1
  63. package/dist/src/render/activity.js +0 -34
  64. package/dist/src/render/activity.js.map +0 -1
  65. package/dist/src/render/agents.js +0 -42
  66. package/dist/src/render/agents.js.map +0 -1
  67. package/dist/src/render/balance.js +0 -85
  68. package/dist/src/render/balance.js.map +0 -1
  69. package/dist/src/render/banner.js +0 -17
  70. package/dist/src/render/banner.js.map +0 -1
  71. package/dist/src/render/chains.js +0 -52
  72. package/dist/src/render/chains.js.map +0 -1
  73. package/dist/src/render/colors.js +0 -50
  74. package/dist/src/render/colors.js.map +0 -1
  75. package/dist/src/render/gas.js +0 -34
  76. package/dist/src/render/gas.js.map +0 -1
  77. package/dist/src/render/grant.js +0 -34
  78. package/dist/src/render/grant.js.map +0 -1
  79. package/dist/src/render/kv.js +0 -60
  80. package/dist/src/render/kv.js.map +0 -1
  81. package/dist/src/render/mandates.js +0 -111
  82. package/dist/src/render/mandates.js.map +0 -1
  83. package/dist/src/render/print.js +0 -18
  84. package/dist/src/render/print.js.map +0 -1
  85. package/dist/src/render/redact.js +0 -23
  86. package/dist/src/render/redact.js.map +0 -1
  87. package/dist/src/render/table.js +0 -16
  88. package/dist/src/render/table.js.map +0 -1
  89. package/dist/src/repl.js +0 -232
  90. package/dist/src/repl.js.map +0 -1
  91. package/dist/src/review.js +0 -52
  92. package/dist/src/review.js.map +0 -1
  93. package/dist/src/run-installer.js +0 -30
  94. package/dist/src/run-installer.js.map +0 -1
  95. package/dist/src/settings.js +0 -88
  96. package/dist/src/settings.js.map +0 -1
  97. package/dist/src/update-check.js +0 -91
  98. package/dist/src/update-check.js.map +0 -1
  99. package/dist/src/validate.js +0 -138
  100. package/dist/src/validate.js.map +0 -1
@@ -1,338 +0,0 @@
1
- import * as clack from '@clack/prompts';
2
- import { proposePayment, proposeSwap, describeGrant, botanaryMcpHome, openBrowser, pairingLink, } from 'botanary-mcp';
3
- import { randomBytes } from 'node:crypto';
4
- import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
5
- import { join } from 'node:path';
6
- import { glyphs } from '../render/colors.js';
7
- import { group } from '../help/groups.js';
8
- import { printResult } from '../render/print.js';
9
- import { renderGrant } from '../render/grant.js';
10
- import { step } from '../progress.js';
11
- import { confirmOrThrow, dryRunPayload, renderReview } from '../review.js';
12
- import { classifyAgentAction } from '../outcome.js';
13
- import { assertAddress, assertTierAllows, familyOf, findChain, parseAmount } from '../validate.js';
14
- import { invalidArgs } from '../errors.js';
15
- export function registerAgentCommands(program) {
16
- const agent = group(program.command('agent').description('This machine\'s own agent identity, grant, and spend under it'), 'Agent');
17
- agent
18
- .command('identity')
19
- .description("This machine's local agent key: address, public key, fingerprint")
20
- .action(async () => {
21
- const ctx = program.opts().__ctx;
22
- const identity = await ctx.runtime.identity();
23
- printResult(ctx, { address: identity.address, publicKey: identity.publicKey, fingerprint: identity.fingerprint, keyStorage: identity.backend });
24
- });
25
- agent
26
- .command('whoami')
27
- .description('What Botanary says about this agent: claimed, live, which account')
28
- .action(async () => {
29
- const ctx = program.opts().__ctx;
30
- // Deliberately NOT wrapped in a try/catch that softens the failure: GET /agents/me failing IS the
31
- // answer when this agent was never claimed, and reporting a fabricated "connected" is the one thing
32
- // this command must never do. `botanary whoami` is the forgiving both-lanes view.
33
- const self = await step(ctx, 'Asking Botanary about this agent', () => ctx.runtime.me());
34
- printResult(ctx, self, () => renderGrant(self, describeGrant(self)));
35
- });
36
- agent
37
- .command('account')
38
- .description('The one account this agent is bound to')
39
- .option('--chain-id <chainId>', 'Return the account row for this chain')
40
- .action(async (opts) => {
41
- const ctx = program.opts().__ctx;
42
- const chainId = opts.chainId === undefined ? undefined : Number(opts.chainId);
43
- if (chainId !== undefined && !Number.isFinite(chainId)) {
44
- throw invalidArgs(`--chain-id must be a number, got ${JSON.stringify(opts.chainId)}.`);
45
- }
46
- const account = await step(ctx, 'Reading the bound account', () => ctx.runtime.getAccount(chainId === undefined ? {} : { chainId }));
47
- printResult(ctx, account);
48
- });
49
- agent
50
- .command('balance')
51
- .description("The bound account's balance, read as this agent")
52
- .action(async () => {
53
- const ctx = program.opts().__ctx;
54
- const balance = await step(ctx, 'Reading balance', () => ctx.runtime.getBalance());
55
- printResult(ctx, balance);
56
- });
57
- agent
58
- .command('request')
59
- .description('Ask the owner to approve something this grant cannot cover')
60
- .requiredOption('--reason <reason>', 'What the owner will see, e.g. "Pay the September invoice"')
61
- .requiredOption('--calls-file <path>', 'JSON file: an array of { to, data, value, chainId }')
62
- .action(async (opts) => {
63
- const ctx = program.opts().__ctx;
64
- let calls;
65
- try {
66
- calls = JSON.parse(await readFile(opts.callsFile, 'utf8'));
67
- }
68
- catch (e) {
69
- throw invalidArgs(`Could not read --calls-file "${opts.callsFile}": ${e instanceof Error ? e.message : String(e)}`, 'It must be a readable JSON file containing an array of calls.');
70
- }
71
- if (!Array.isArray(calls) || calls.length === 0) {
72
- throw invalidArgs('--calls-file must contain a non-empty JSON array of calls.');
73
- }
74
- for (const [index, call] of calls.entries()) {
75
- const c = call;
76
- if (typeof c.to !== 'string' || typeof c.data !== 'string' || typeof c.value !== 'string' || typeof c.chainId !== 'number') {
77
- throw invalidArgs(`Call ${index} is malformed.`, 'Each call needs a string `to`, a string `data`, a string `value` and a numeric `chainId`.');
78
- }
79
- }
80
- const result = await step(ctx, 'Raising the request', () => ctx.runtime.raiseRequest(calls, opts.reason));
81
- printResult(ctx, result);
82
- });
83
- agent
84
- .command('pair')
85
- .description('Show (or rotate) the pairing code, register it, and open the pairing screen')
86
- .option('--regenerate', 'Rotate to a fresh code')
87
- .option('--no-open', 'Print the code and the link without opening a browser')
88
- .action(async (opts) => {
89
- const ctx = program.opts().__ctx;
90
- const identity = await ctx.runtime.identity();
91
- // REGISTERS ON BOTH PATHS. `regeneratePairingCode()` only mints locally, so `--regenerate` used
92
- // to hand the owner a fresh code the backend had never heard of - the exact "Pairing failed.
93
- // Check the code and try again." that botanary-mcp's `registerPairing` exists to prevent. It
94
- // matters more now this command opens a browser: a window onto a form that rejects the code
95
- // stages a failure rather than a pairing. `pair()` returns the same code `pairingCode()` would.
96
- const pairing = await step(ctx, opts.regenerate ? 'Rotating the pairing code' : 'Generating the pairing code', async () => {
97
- if (opts.regenerate)
98
- await ctx.runtime.regeneratePairingCode();
99
- return ctx.runtime.pair();
100
- });
101
- // The SAME link botanary-mcp's `get_pairing_code` opens, from the same helper - two copies of
102
- // that template is how the two surfaces drift into sending an owner to different places.
103
- const url = pairingLink(ctx.runtime.apiBaseUrl, pairing.code);
104
- // Interactive only, and never under `--json`: a command whose output is being piped must not
105
- // take over the screen. Mirrors `sign`'s own gate, and `openBrowser` never throws - the headless
106
- // path is this same flow with the URL printed.
107
- const opened = ctx.interactive && opts.open !== false ? await openBrowser(url) : false;
108
- if (!ctx.json) {
109
- console.log(glyphs.info(`Pairing code: ${pairing.code}`));
110
- console.log(opened
111
- ? glyphs.info(`Opened Botanary with the code already filled in: ${url}`)
112
- : `In Botanary, open Connected agents and enter this code - or go straight there: ${url}`);
113
- }
114
- printResult(ctx, { ...pairing, address: identity.address, pairingUrl: url, browserOpened: opened });
115
- });
116
- agent
117
- .command('grant')
118
- .description('This agent\'s current grant, rendered in plain terms (what_may_i_do)')
119
- .action(async () => {
120
- const ctx = program.opts().__ctx;
121
- const self = await step(ctx, 'Reading this agent\'s grant', () => ctx.runtime.me());
122
- const description = describeGrant(self);
123
- printResult(ctx, { description, grant: self.grant }, () => renderGrant(self, description));
124
- });
125
- agent
126
- .command('requests')
127
- .description('Every approval request this agent has filed, and the owner\'s verdict on each (list_requests)')
128
- .action(async () => {
129
- const ctx = program.opts().__ctx;
130
- printResult(ctx, await step(ctx, 'Reading requests', () => ctx.runtime.listRequests()));
131
- });
132
- agent
133
- .command('spend')
134
- .description('Spend under this agent\'s own grant, unattended (propose_payment)')
135
- .option('--recipient <address>', 'Destination address (0x... on EVM)')
136
- .option('--amount <amount>', 'Amount in display units, e.g. 5')
137
- .option('--token <addressOrAssetRef>', 'Token the grant budgets - contract address or CAIP-19 asset ref, never a symbol')
138
- .option('--chain-id <chainId>', 'Chain the grant is on - see `botanary agent grant`')
139
- .action(async (opts) => {
140
- const ctx = program.opts().__ctx;
141
- // Validate required inputs before making network calls. If chain-id is not specified and we're
142
- // not in interactive mode, fail immediately with missing input - do not fetch chains first.
143
- let { amount: amountRaw, token: tokenSymbol, recipient } = opts;
144
- const chainId = opts.chainId ?? ctx.chain;
145
- if (!ctx.interactive && (!chainId || !amountRaw || !tokenSymbol || !recipient)) {
146
- throw invalidArgs('Missing required input', 'Use --amount, --token, --recipient, and --chain-id, or run in an interactive terminal.');
147
- }
148
- const chains = await step(ctx, 'Reading chains', () => ctx.runtime.listChains());
149
- const chain = findChain(chains, chainId);
150
- assertTierAllows(chain, 'authority');
151
- const family = familyOf(chain.namespace);
152
- if (ctx.interactive && (!amountRaw || !tokenSymbol || !recipient)) {
153
- const answers = await clack.group({
154
- amount: () => clack.text({
155
- message: 'Amount?',
156
- initialValue: amountRaw,
157
- validate: (value) => {
158
- const parsed = Number(String(value).trim());
159
- return Number.isFinite(parsed) && parsed > 0 ? undefined : 'A positive number, e.g. 5';
160
- },
161
- }),
162
- token: () => clack.text({ message: 'Token?', initialValue: tokenSymbol }),
163
- recipient: () => clack.text({ message: 'To?', initialValue: recipient }),
164
- }, { onCancel: () => { clack.cancel('Cancelled.'); process.exit(0); } });
165
- ({ amount: amountRaw, token: tokenSymbol, recipient } = answers);
166
- }
167
- const amount = parseAmount(amountRaw);
168
- if (!tokenSymbol)
169
- throw invalidArgs('--token is required.', 'A token this grant budgets - see `botanary agent grant`.');
170
- const to = assertAddress(recipient, family);
171
- const rows = [
172
- { label: 'amount', value: `${amount} ${tokenSymbol}` },
173
- { label: 'to', value: to },
174
- { label: 'chain', value: `${chain.name} (${chain.key}, ${chain.tier})` },
175
- { label: 'signed by', value: "this agent's own grant, unattended" },
176
- ];
177
- const warnings = ['This spends without asking the owner. The grant is the only bound.'];
178
- if (ctx.dryRun) {
179
- printResult(ctx, dryRunPayload('Review this spend', rows, warnings), () => renderReview('Dry run - nothing will be sent', rows, warnings));
180
- return;
181
- }
182
- await confirmOrThrow(ctx, 'Review this spend', rows, warnings);
183
- const result = await step(ctx, 'Spending under the grant', () => proposePayment(ctx.runtime, { recipient: to, amount, token: tokenSymbol, chainId: chain.chainId ?? Number.NaN }));
184
- const outcome = classifyAgentAction(result);
185
- ctx.outcome.exit = outcome.exit;
186
- printResult(ctx, result);
187
- });
188
- agent
189
- .command('swap')
190
- .description('Swap under this agent\'s own grant, unattended (propose_swap)')
191
- .option('--token-in <addressOrAssetRef>', 'Token to sell - contract address or CAIP-19 asset ref, never a symbol')
192
- .option('--token-out <addressOrAssetRef>', 'Token to buy - contract address or CAIP-19 asset ref, never a symbol')
193
- .option('--amount-in <amount>', 'Amount of --token-in to sell, in display units')
194
- .option('--chain-id <chainId>', 'Chain the grant is on - see `botanary agent grant`')
195
- .option('--max-slippage-bps <bps>', 'Maximum acceptable slippage, in basis points')
196
- .action(async (opts) => {
197
- const ctx = program.opts().__ctx;
198
- const { tokenIn, tokenOut, amountIn, maxSlippageBps } = opts;
199
- const chainId = opts.chainId ?? ctx.chain;
200
- if (!tokenIn)
201
- throw invalidArgs('--token-in is required.', 'The token to sell.');
202
- if (!tokenOut)
203
- throw invalidArgs('--token-out is required.', 'The token to buy.');
204
- if (!amountIn)
205
- throw invalidArgs('--amount-in is required.', 'How much to sell, in display units.');
206
- if (!chainId)
207
- throw invalidArgs('--chain-id is required.', 'The chain the grant is on - see `botanary agent grant`.');
208
- const chains = await step(ctx, 'Reading chains', () => ctx.runtime.listChains());
209
- const chain = findChain(chains, chainId);
210
- assertTierAllows(chain, 'authority');
211
- const amount = parseAmount(amountIn, '--amount-in');
212
- const rows = [
213
- { label: 'sell', value: `${amount} ${tokenIn}` },
214
- { label: 'buy', value: tokenOut },
215
- { label: 'chain', value: `${chain.name} (${chain.key}, ${chain.tier})` },
216
- { label: 'signed by', value: "this agent's own grant, unattended" },
217
- ];
218
- const warnings = ['This swaps without asking the owner. The grant is the only bound.'];
219
- if (ctx.dryRun) {
220
- printResult(ctx, dryRunPayload('Review this swap', rows, warnings), () => renderReview('Dry run - nothing will be sent', rows, warnings));
221
- return;
222
- }
223
- await confirmOrThrow(ctx, 'Review this swap', rows, warnings);
224
- const result = await step(ctx, 'Swapping under the grant', () => proposeSwap(ctx.runtime, {
225
- assetIn: tokenIn,
226
- assetOut: tokenOut,
227
- amountIn: amount,
228
- chainId: chain.chainId ?? Number.NaN,
229
- ...(maxSlippageBps ? { maxSlippageBps: Number(maxSlippageBps) } : {}),
230
- }));
231
- const outcome = classifyAgentAction(result);
232
- ctx.outcome.exit = outcome.exit;
233
- printResult(ctx, result);
234
- });
235
- agent
236
- .command('status <opId>')
237
- .description('Check on a pending action this agent relayed (get_action_status)')
238
- .action(async (opId) => {
239
- const ctx = program.opts().__ctx;
240
- printResult(ctx, await step(ctx, 'Checking action status', () => ctx.runtime.getUserOp(opId)));
241
- });
242
- agent
243
- .command('apis')
244
- .description('Paid (x402) third-party API endpoints this agent may call, with live price and remaining budget (list_apis)')
245
- .requiredOption('--chain-id <chainId>', 'Chain the grant is on - see `botanary agent grant`')
246
- .action(async (opts) => {
247
- const ctx = program.opts().__ctx;
248
- printResult(ctx, await step(ctx, 'Reading APIs', () => ctx.runtime.listApis(Number(opts.chainId))));
249
- });
250
- agent
251
- .command('pay <endpointId>')
252
- .description('Call a paid API endpoint and pay for it inside the owner-committed on-chain budget (call_api)')
253
- .requiredOption('--chain-id <chainId>', 'Chain the grant is on - see `botanary agent grant`')
254
- .requiredOption('--provider-id <providerId>', 'Provider that owns the endpoint')
255
- .requiredOption('--url <url>', 'The endpoint URL to call')
256
- .action(async (endpointId, opts) => {
257
- const ctx = program.opts().__ctx;
258
- const chainId = Number(opts.chainId);
259
- const providerId = String(opts.providerId);
260
- const url = String(opts.url);
261
- const chains = await step(ctx, 'Reading chains', () => ctx.runtime.listChains());
262
- const chain = findChain(chains, chainId);
263
- assertTierAllows(chain, 'authority');
264
- const rows = [
265
- { label: 'endpoint', value: endpointId },
266
- { label: 'provider', value: providerId },
267
- { label: 'url', value: url },
268
- { label: 'chain', value: `${chain.name} (${chain.key}, ${chain.tier})` },
269
- { label: 'signed by', value: "this agent's own budget, unattended" },
270
- ];
271
- const warnings = ['This calls an API and deducts from the on-chain budget without asking the owner.'];
272
- if (ctx.dryRun) {
273
- printResult(ctx, dryRunPayload('Review this API call', rows, warnings), () => renderReview('Dry run - nothing will be called', rows, warnings));
274
- return;
275
- }
276
- await confirmOrThrow(ctx, 'Review this API call', rows, warnings);
277
- const result = await step(ctx, 'Calling the API', () => ctx.runtime.callApi({ chainId, providerId, endpointId, url }));
278
- const outcome = classifyAgentAction(result);
279
- ctx.outcome.exit = outcome.exit;
280
- printResult(ctx, result);
281
- });
282
- agent
283
- .command('budget')
284
- .description('Remaining authorizations, per-call max, expiry and epoch for this agent on a chain (get_api_budget)')
285
- .requiredOption('--chain-id <chainId>', 'Chain the grant is on - see `botanary agent grant`')
286
- .action(async (opts) => {
287
- const ctx = program.opts().__ctx;
288
- printResult(ctx, await step(ctx, 'Reading budget', () => ctx.runtime.getApiBudget(Number(opts.chainId))));
289
- });
290
- const FORGET_TOKEN_TTL_MS = 5 * 60 * 1000;
291
- const pendingForgetPath = () => join(botanaryMcpHome(), '.cli-forget-pending.json');
292
- agent
293
- .command('forget')
294
- .description('Step 1 of 2: preview what forgetting the local identity would destroy')
295
- .action(async () => {
296
- const ctx = program.opts().__ctx;
297
- const hadIdentity = await ctx.runtime.store.hasIdentity();
298
- if (!hadIdentity) {
299
- printResult(ctx, { hadIdentity: false, message: 'No agent identity is stored on this machine - nothing to delete.' });
300
- return;
301
- }
302
- const confirmationToken = randomBytes(16).toString('hex');
303
- await mkdir(botanaryMcpHome(), { recursive: true });
304
- await writeFile(pendingForgetPath(), JSON.stringify({ token: confirmationToken, expiresAt: Date.now() + FORGET_TOKEN_TTL_MS }), 'utf8');
305
- printResult(ctx, {
306
- hadIdentity: true,
307
- confirmationToken,
308
- message: `Run \`botanary agent confirm-forget ${confirmationToken}\` within 5 minutes to actually delete the key from this machine.`,
309
- });
310
- });
311
- agent
312
- .command('confirm-forget <token>')
313
- .description('Step 2 of 2: actually delete the agent key from this machine, given the token from forget')
314
- .action(async (token) => {
315
- const ctx = program.opts().__ctx;
316
- let pending = null;
317
- try {
318
- pending = JSON.parse(await readFile(pendingForgetPath(), 'utf8'));
319
- }
320
- catch {
321
- pending = null;
322
- }
323
- const valid = !!pending && pending.token === token && pending.expiresAt > Date.now();
324
- if (!valid) {
325
- throw invalidArgs('No matching, unexpired confirmation token.', 'Run `botanary agent forget` first, then pass the token it prints to `confirm-forget` within 5 minutes.');
326
- }
327
- await rm(pendingForgetPath(), { force: true });
328
- await ctx.runtime.store.forget();
329
- ctx.runtime.reset();
330
- if (ctx.json) {
331
- console.log(JSON.stringify({ status: 'deleted' }));
332
- }
333
- else {
334
- console.log(glyphs.success('Deleted the agent key from this machine.'));
335
- }
336
- });
337
- }
338
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/commands/agent.ts"],"names":[],"mappings":"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"}