@clawmarket.cc/marketcc 0.5.5 → 0.5.7

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.
@@ -1,5 +1,6 @@
1
1
  import { createClient } from '../lib/api.js';
2
2
  import { handleApiError } from '../lib/errors.js';
3
+ import { buildListingTagLabels } from '../lib/listing-tags.js';
3
4
  import { renderTable } from '../lib/table.js';
4
5
  export default function registerBrowse(program) {
5
6
  program
@@ -20,11 +21,12 @@ export default function registerBrowse(program) {
20
21
  console.log('No listings found.');
21
22
  return;
22
23
  }
23
- const headers = ['ID', 'Title', 'Price (SOL)', 'Provider', 'Status'];
24
- const widths = [38, 30, 14, 16, 10];
24
+ const headers = ['ID', 'Title', 'Tags', 'Price (SOL)', 'Provider', 'Status'];
25
+ const widths = [36, 22, 22, 12, 14, 10];
25
26
  const rows = data.items.map((l) => [
26
27
  l.id,
27
28
  l.title,
29
+ buildListingTagLabels(l.listing_type, l.required_api_keys).join(', '),
28
30
  l.price_sol === 0 ? 'Free' : String(l.price_sol),
29
31
  l.profiles?.display_name || 'Unknown',
30
32
  l.status,
@@ -1 +1 @@
1
- {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,qBAAqB,EAAE,aAAa,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,IAAI,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAsD,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,IAAI,IAAI,GAAG,yBAAyB,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,IAAI,WAAW,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAmB,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAEnF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACjC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChD,CAAC,CAAC,QAAQ,EAAE,YAAY,IAAI,SAAS;gBACrC,CAAC,CAAC,MAAM;aACT,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAmB9C,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,qBAAqB,EAAE,aAAa,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,IAAI,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAAsD,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,IAAI,IAAI,GAAG,yBAAyB,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,IAAI,WAAW,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAmB,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAEnF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACjC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK;gBACP,qBAAqB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChD,CAAC,CAAC,QAAQ,EAAE,YAAY,IAAI,SAAS;gBACrC,CAAC,CAAC,MAAM;aACT,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,58 @@
1
- import { writeFile } from 'fs/promises';
1
+ import { writeFile, unlink } from 'node:fs/promises';
2
+ import { existsSync, statSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { tmpdir } from 'node:os';
2
6
  import { handleApiError } from '../lib/errors.js';
3
7
  import { loadConfig, getApiUrl } from '../lib/config.js';
8
+ import { DEFAULT_BOT_PATH } from './setup-keys.js';
9
+ import { installBotArchive } from './install-bot.js';
10
+ function inferFileName(downloadUrl) {
11
+ try {
12
+ const urlObj = new URL(downloadUrl);
13
+ const pathSegments = urlObj.pathname.split('/').filter(Boolean);
14
+ const rawName = pathSegments[pathSegments.length - 1] || 'download';
15
+ return decodeURIComponent(rawName);
16
+ }
17
+ catch {
18
+ return 'download';
19
+ }
20
+ }
21
+ function resolveOutputPath(candidatePath, fallbackName) {
22
+ if (!candidatePath) {
23
+ return fallbackName;
24
+ }
25
+ if (candidatePath.endsWith('/') || candidatePath.endsWith('\\')) {
26
+ return join(candidatePath, fallbackName);
27
+ }
28
+ if (existsSync(candidatePath)) {
29
+ try {
30
+ if (statSync(candidatePath).isDirectory()) {
31
+ return join(candidatePath, fallbackName);
32
+ }
33
+ }
34
+ catch {
35
+ // ignore and treat candidatePath as file path
36
+ }
37
+ }
38
+ return candidatePath;
39
+ }
40
+ function quoteArg(value) {
41
+ return JSON.stringify(value);
42
+ }
4
43
  export default function registerDownload(program) {
5
44
  program
6
45
  .command('download <access-key>')
7
- .description('Download a purchased file using an access key')
8
- .option('-o, --output <path>', 'Output file path')
46
+ .description('Download a purchased listing using an access key')
47
+ .option('-o, --output <path>', 'Output path (file path or directory)')
48
+ .option('--raw', 'For bot listings, save archive instead of auto-installing')
49
+ .option('-d, --install-dir <path>', `Bot install directory (default: ${DEFAULT_BOT_PATH})`)
50
+ .option('-f, --force-install', 'Overwrite existing bot files without prompt')
9
51
  .action(async (accessKey, opts) => {
52
+ let tempZipPath = null;
10
53
  try {
11
54
  const config = await loadConfig();
12
55
  const baseUrl = getApiUrl(config);
13
- // Step 1: Validate access key and get download token
14
56
  console.log('Validating access key...');
15
57
  const validateRes = await fetch(`${baseUrl}/api/files/download/validate`, {
16
58
  method: 'POST',
@@ -27,10 +69,10 @@ export default function registerDownload(program) {
27
69
  console.error(`Error: ${msg}`);
28
70
  process.exit(1);
29
71
  }
30
- const { download_token } = (await validateRes.json());
31
- // Step 2: Get download URL using token
72
+ const validateBody = (await validateRes.json());
73
+ const listingType = validateBody.listing_type === 'bot' ? 'bot' : 'md';
32
74
  console.log('Fetching download URL...');
33
- const downloadRes = await fetch(`${baseUrl}/api/files/download?token=${encodeURIComponent(download_token)}`);
75
+ const downloadRes = await fetch(`${baseUrl}/api/files/download?token=${encodeURIComponent(validateBody.download_token)}`);
34
76
  if (!downloadRes.ok) {
35
77
  const errBody = await downloadRes.json().catch(() => null);
36
78
  const msg = errBody?.error?.message || 'Failed to get download URL';
@@ -38,7 +80,6 @@ export default function registerDownload(program) {
38
80
  process.exit(1);
39
81
  }
40
82
  const { download_url } = (await downloadRes.json());
41
- // Step 3: Download the actual file from the signed URL
42
83
  console.log('Downloading file...');
43
84
  const fileRes = await fetch(download_url);
44
85
  if (!fileRes.ok) {
@@ -47,37 +88,61 @@ export default function registerDownload(program) {
47
88
  process.exit(1);
48
89
  }
49
90
  const buffer = Buffer.from(await fileRes.arrayBuffer());
50
- // Determine output filename
51
- let outputPath = opts.output;
52
- if (!outputPath) {
53
- // Extract filename from signed URL path
54
- try {
55
- const urlObj = new URL(download_url);
56
- const pathSegments = urlObj.pathname.split('/').filter(Boolean);
57
- outputPath = pathSegments[pathSegments.length - 1] || 'download';
58
- // Decode URL-encoded characters
59
- outputPath = decodeURIComponent(outputPath);
91
+ const detectedName = inferFileName(download_url) || (listingType === 'bot' ? 'bot-package.zip' : 'download');
92
+ let finalLocation = '';
93
+ if (listingType === 'bot' && !opts.raw) {
94
+ const installDir = opts.installDir || DEFAULT_BOT_PATH;
95
+ tempZipPath = join(tmpdir(), `marketcc-download-${randomUUID()}.zip`);
96
+ await writeFile(tempZipPath, buffer);
97
+ const installResult = await installBotArchive(tempZipPath, {
98
+ installDir,
99
+ runSetupKeys: (validateBody.required_api_keys || []).length > 0,
100
+ force: opts.forceInstall,
101
+ interactive: true,
102
+ });
103
+ if (installResult.installed) {
104
+ finalLocation = installResult.installDir;
60
105
  }
61
- catch {
62
- outputPath = 'download';
106
+ else {
107
+ const archiveOutputPath = resolveOutputPath(opts.output, detectedName);
108
+ await writeFile(archiveOutputPath, buffer);
109
+ finalLocation = archiveOutputPath;
110
+ console.log('');
111
+ console.log('Bot installation was skipped to avoid overwrite.');
112
+ console.log(`Archive saved at: ${archiveOutputPath}`);
113
+ console.log('Install later with:');
114
+ console.log(` marketcc install-bot ${quoteArg(archiveOutputPath)} --install-dir ${quoteArg(installDir)}`);
63
115
  }
64
116
  }
65
- await writeFile(outputPath, buffer);
66
- // Step 4: Confirm download — marks access key as used
117
+ else {
118
+ const outputPath = resolveOutputPath(opts.output, detectedName);
119
+ await writeFile(outputPath, buffer);
120
+ finalLocation = outputPath;
121
+ }
67
122
  const confirmRes = await fetch(`${baseUrl}/api/files/download/confirm`, {
68
123
  method: 'POST',
69
124
  headers: { 'Content-Type': 'application/json' },
70
- body: JSON.stringify({ download_token }),
125
+ body: JSON.stringify({ download_token: validateBody.download_token }),
71
126
  });
72
127
  if (!confirmRes.ok) {
73
128
  console.warn('Warning: Download succeeded but confirmation failed.');
74
129
  console.warn('The access key may still be usable for another download.');
75
130
  }
76
- console.log(`\nDownloaded: ${outputPath} (${buffer.length} bytes)`);
131
+ if (listingType === 'bot' && !opts.raw && finalLocation === (opts.installDir || DEFAULT_BOT_PATH)) {
132
+ console.log(`\nBot downloaded and installed at: ${finalLocation}`);
133
+ }
134
+ else {
135
+ console.log(`\nDownloaded: ${finalLocation} (${buffer.length} bytes)`);
136
+ }
77
137
  }
78
138
  catch (err) {
79
139
  handleApiError(err);
80
140
  }
141
+ finally {
142
+ if (tempZipPath) {
143
+ await unlink(tempZipPath).catch(() => undefined);
144
+ }
145
+ }
81
146
  });
82
147
  }
83
148
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAyB,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAElC,qDAAqD;YACrD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAExC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,8BAA8B,EAAE;gBACxE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;aACzC,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,+BAA+B,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAKnD,CAAC;YAEF,uCAAuC;YACvC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAExC,MAAM,WAAW,GAAG,MAAM,KAAK,CAC7B,GAAG,OAAO,6BAA6B,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAC5E,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,4BAA4B,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAA6B,CAAC;YAEhF,uDAAuD;YACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBACxF,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAExD,4BAA4B;YAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,wCAAwC;gBACxC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;oBACrC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAChE,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;oBACjE,gCAAgC;oBAChC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU,GAAG,UAAU,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEpC,sDAAsD;YACtD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,6BAA6B,EAAE;gBACtE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;aACzC,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAC3E,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Command } from 'commander';
2
+ export interface InstallBotArchiveOptions {
3
+ installDir?: string;
4
+ runSetupKeys?: boolean;
5
+ force?: boolean;
6
+ interactive?: boolean;
7
+ }
8
+ export interface InstallBotResult {
9
+ installed: boolean;
10
+ declined: boolean;
11
+ installDir: string;
12
+ overwrittenExisting: boolean;
13
+ }
14
+ export declare function installBotArchive(archivePath: string, options?: InstallBotArchiveOptions): Promise<InstallBotResult>;
15
+ export default function registerInstallBot(program: Command): void;
@@ -0,0 +1,114 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import { cp, mkdir, readdir, rm } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { tmpdir } from 'node:os';
6
+ import chalk from 'chalk';
7
+ import prompts from 'prompts';
8
+ import { DEFAULT_BOT_PATH, runSetupKeysFlow } from './setup-keys.js';
9
+ import { extractZipArchive, findSingleBotRoot, isZipPath, looksLikeExistingBotInstall, } from '../lib/bot-archive.js';
10
+ async function confirmOverwriteInstall(installDir) {
11
+ console.log(chalk.yellow('Warning: Existing OpenClaw files detected.'));
12
+ console.log(chalk.yellow(` Install path: ${installDir}`));
13
+ console.log(chalk.yellow(' This installation flow assumes one active bot instance per install directory.'));
14
+ console.log(chalk.yellow(' Continuing will overwrite existing files in that directory.'));
15
+ console.log('');
16
+ const response = await prompts({
17
+ type: 'confirm',
18
+ name: 'continueInstall',
19
+ message: 'Continue and overwrite existing files?',
20
+ initial: false,
21
+ });
22
+ return response.continueInstall === true;
23
+ }
24
+ function validateArchivePath(archivePath) {
25
+ if (!existsSync(archivePath)) {
26
+ throw new Error(`Archive not found: ${archivePath}`);
27
+ }
28
+ const stat = statSync(archivePath);
29
+ if (!stat.isFile()) {
30
+ throw new Error(`Archive path must be a file: ${archivePath}`);
31
+ }
32
+ if (!isZipPath(archivePath)) {
33
+ throw new Error('install-bot supports only .zip archives');
34
+ }
35
+ }
36
+ export async function installBotArchive(archivePath, options = {}) {
37
+ validateArchivePath(archivePath);
38
+ const installDir = options.installDir || DEFAULT_BOT_PATH;
39
+ const runSetup = options.runSetupKeys !== false;
40
+ const force = options.force === true;
41
+ const interactive = options.interactive !== false;
42
+ const overwrittenExisting = looksLikeExistingBotInstall(installDir);
43
+ if (overwrittenExisting && !force) {
44
+ if (!interactive) {
45
+ throw new Error(`Install path already contains files: ${installDir}`);
46
+ }
47
+ const shouldContinue = await confirmOverwriteInstall(installDir);
48
+ if (!shouldContinue) {
49
+ return {
50
+ installed: false,
51
+ declined: true,
52
+ installDir,
53
+ overwrittenExisting,
54
+ };
55
+ }
56
+ }
57
+ const extractDir = join(tmpdir(), `marketcc-install-${randomUUID()}`);
58
+ await mkdir(extractDir, { recursive: true });
59
+ try {
60
+ await extractZipArchive(archivePath, extractDir);
61
+ const botRoot = findSingleBotRoot(extractDir);
62
+ await mkdir(installDir, { recursive: true });
63
+ const entries = await readdir(botRoot);
64
+ for (const entry of entries) {
65
+ await cp(join(botRoot, entry), join(installDir, entry), { recursive: true, force: true });
66
+ }
67
+ }
68
+ finally {
69
+ await rm(extractDir, { recursive: true, force: true }).catch(() => undefined);
70
+ }
71
+ if (runSetup) {
72
+ await runSetupKeysFlow(installDir);
73
+ }
74
+ return {
75
+ installed: true,
76
+ declined: false,
77
+ installDir,
78
+ overwrittenExisting,
79
+ };
80
+ }
81
+ export default function registerInstallBot(program) {
82
+ program
83
+ .command('install-bot <archive>')
84
+ .description('Install a downloaded bot archive into an OpenClaw directory')
85
+ .option('-d, --install-dir <path>', `Install target directory (default: ${DEFAULT_BOT_PATH})`)
86
+ .option('--skip-setup-keys', 'Skip setup-keys prompt after extraction')
87
+ .option('-f, --force', 'Overwrite without confirmation prompt')
88
+ .action(async (archive, opts) => {
89
+ try {
90
+ const result = await installBotArchive(archive, {
91
+ installDir: opts.installDir,
92
+ runSetupKeys: !opts.skipSetupKeys,
93
+ force: opts.force,
94
+ interactive: true,
95
+ });
96
+ if (!result.installed) {
97
+ console.log('Installation cancelled. Archive was not modified.');
98
+ console.log(`Install later with: marketcc install-bot ${archive} --install-dir ${result.installDir}`);
99
+ return;
100
+ }
101
+ console.log(chalk.green(`Bot installed to: ${result.installDir}`));
102
+ }
103
+ catch (err) {
104
+ if (err instanceof Error) {
105
+ console.error(chalk.red(`Error: ${err.message}`));
106
+ }
107
+ else {
108
+ console.error(chalk.red('Unexpected install-bot error.'));
109
+ }
110
+ process.exit(1);
111
+ }
112
+ });
113
+ }
114
+ //# sourceMappingURL=install-bot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-bot.js","sourceRoot":"","sources":["../../src/commands/install-bot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { createAuthenticatedClient } from '../lib/api.js';
2
2
  import { handleApiError } from '../lib/errors.js';
3
+ import { buildListingTagLabels } from '../lib/listing-tags.js';
3
4
  import { renderTable } from '../lib/table.js';
4
5
  export default function registerLs(program) {
5
6
  program
@@ -11,15 +12,16 @@ export default function registerLs(program) {
11
12
  const data = await client.request('GET', '/api/profiles/me/listings');
12
13
  const listings = Array.isArray(data) ? data : data.items;
13
14
  if (listings.length === 0) {
14
- console.log("You haven't listed anything yet. Use `marketcc upload <file>` to create your first listing.");
15
+ console.log("You haven't listed anything yet. Use `marketcc upload <path>` to create your first listing.");
15
16
  return;
16
17
  }
17
- const headers = ['ID', 'Title', 'Price (SOL)', 'Status', 'Created'];
18
- const widths = [38, 30, 14, 10, 22];
18
+ const headers = ['ID', 'Title', 'Tags', 'Price (SOL)', 'Status', 'Created'];
19
+ const widths = [34, 20, 24, 12, 10, 16];
19
20
  const rows = listings.map((l) => [
20
21
  l.id,
21
22
  l.title,
22
- String(l.price_sol),
23
+ buildListingTagLabels(l.listing_type, l.required_api_keys).join(', '),
24
+ l.price_sol === 0 ? 'Free' : String(l.price_sol),
23
25
  l.status,
24
26
  new Date(l.created_at).toLocaleDateString(),
25
27
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,KAAK,EACL,2BAA2B,CAC5B,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;gBAC3G,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC/B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK;gBACP,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnB,CAAC,CAAC,MAAM;gBACR,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE;aAC5C,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAmB9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,KAAK,EACL,2BAA2B,CAC5B,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;gBAC3G,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC/B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK;gBACP,qBAAqB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChD,CAAC,CAAC,MAAM;gBACR,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE;aAC5C,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +1,10 @@
1
1
  import type { Command } from 'commander';
2
+ export declare const DEFAULT_BOT_PATH: string;
3
+ export interface SetupKeysResult {
4
+ configured: number;
5
+ remaining: number;
6
+ skipped: number;
7
+ manifestPath: string;
8
+ }
9
+ export declare function runSetupKeysFlow(botPath?: string): Promise<SetupKeysResult>;
2
10
  export default function registerSetupKeys(program: Command): void;