@agentsmarket/cli 0.1.0 → 0.1.1
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/dist/commands/init.js +43 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/lib/mcp-install.d.ts +23 -0
- package/dist/lib/mcp-install.js +149 -0
- package/dist/lib/mcp-install.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/init.js
CHANGED
|
@@ -13,6 +13,7 @@ import { generateKeypair, agentIdFromPublicKey, exportPublicKeyHex, exportPrivat
|
|
|
13
13
|
import { generatePaymentKeypair, exportPaymentAddress, exportPaymentPrivateKeyPem, } from '../lib/payment-keys.js';
|
|
14
14
|
import { saveConfig, savePrivateKey, savePaymentKey, configExists, getKeyPath, getConfigPath, } from '../lib/config.js';
|
|
15
15
|
import { authedJson } from '../lib/http.js';
|
|
16
|
+
import { installMcpForAll } from '../lib/mcp-install.js';
|
|
16
17
|
export async function initCommand() {
|
|
17
18
|
// 1. Check if already initialized
|
|
18
19
|
if (configExists()) {
|
|
@@ -41,13 +42,9 @@ export async function initCommand() {
|
|
|
41
42
|
// 4. Print success message
|
|
42
43
|
console.log('✓ Agent created locally');
|
|
43
44
|
console.log('');
|
|
44
|
-
console.log(' Agent ID:
|
|
45
|
-
console.log('
|
|
46
|
-
console.log('
|
|
47
|
-
console.log(' Network: Base Sepolia (testnet)');
|
|
48
|
-
console.log(' Agent key: ' + getKeyPath());
|
|
49
|
-
console.log(' Payment key: ~/.config/agentsmarket/payment.key');
|
|
50
|
-
console.log(' Config file: ' + getConfigPath());
|
|
45
|
+
console.log(' Agent ID: ' + agentId);
|
|
46
|
+
console.log(' Agent key: ' + getKeyPath());
|
|
47
|
+
console.log(' Config file: ' + getConfigPath());
|
|
51
48
|
// 5. Register agent on marketplace server (best-effort)
|
|
52
49
|
console.log('');
|
|
53
50
|
console.log('→ Registering on marketplace server...');
|
|
@@ -65,15 +62,49 @@ export async function initCommand() {
|
|
|
65
62
|
console.warn(' Your agent works locally but cannot use the marketplace yet.');
|
|
66
63
|
console.warn(' Retry later with: agentsmarket register');
|
|
67
64
|
}
|
|
68
|
-
// 6.
|
|
65
|
+
// 6. Auto-install MCP server into detected agent configs
|
|
66
|
+
console.log('');
|
|
67
|
+
console.log('→ Detecting MCP-aware agents (OpenCode / Claude Code / Cursor)...');
|
|
68
|
+
const mcpReport = installMcpForAll();
|
|
69
|
+
if (mcpReport.length === 0) {
|
|
70
|
+
console.log(' - None detected. Configure manually per https://agentsmarket.world/INSTRUCTIONS.md');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
for (const r of mcpReport) {
|
|
74
|
+
if (r.action === 'installed') {
|
|
75
|
+
console.log(` ✓ MCP installed for ${r.agent} → ${r.path}`);
|
|
76
|
+
}
|
|
77
|
+
else if (r.action === 'updated') {
|
|
78
|
+
console.log(` ✓ MCP updated for ${r.agent} → ${r.path}`);
|
|
79
|
+
console.log(` Backup: ${r.backup}`);
|
|
80
|
+
}
|
|
81
|
+
else if (r.action === 'unchanged') {
|
|
82
|
+
console.log(` - ${r.agent}: MCP entry already present`);
|
|
83
|
+
}
|
|
84
|
+
else if (r.action === 'skipped') {
|
|
85
|
+
console.log(` - ${r.agent}: skipped (${r.reason})`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
console.log('');
|
|
89
|
+
console.log(' Restart your agent (OpenCode/Claude/Cursor) so it picks up the new MCP server.');
|
|
90
|
+
}
|
|
69
91
|
console.log('');
|
|
70
92
|
console.log('⚠️ BACK UP YOUR KEY — without it, you lose your agent identity,');
|
|
71
93
|
console.log(' reputation, and any funds associated with this address.');
|
|
72
|
-
console.log(' Recommended:
|
|
94
|
+
console.log(' Recommended:');
|
|
95
|
+
console.log(' cp ' + getKeyPath() + ' ~/.config/agentsmarket/agent.key.backup');
|
|
96
|
+
console.log(' # Then encrypt + store in password manager or USB drive.');
|
|
97
|
+
console.log('');
|
|
98
|
+
console.log('Next step — tell your agent what you want to do. For example:');
|
|
99
|
+
console.log(' "Search for a skill that summarizes articles"');
|
|
100
|
+
console.log(' "Show me the apple_design_v1 skill"');
|
|
101
|
+
console.log(' "Publish my own SKILL.md to the marketplace"');
|
|
73
102
|
console.log('');
|
|
74
|
-
console.log('
|
|
75
|
-
console.log('
|
|
76
|
-
console.log('
|
|
103
|
+
console.log('Available CLI commands:');
|
|
104
|
+
console.log(' agentsmarket search <query> # find skills');
|
|
105
|
+
console.log(' agentsmarket call <skill_id> # invoke a skill');
|
|
106
|
+
console.log(' agentsmarket publish <path> # publish your SKILL.md');
|
|
107
|
+
console.log(' agentsmarket info # show agent details + network');
|
|
77
108
|
console.log('');
|
|
78
109
|
console.log('Your Agent ID: ' + agentId);
|
|
79
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-install agentsmarket MCP server into detected agent configs.
|
|
3
|
+
*
|
|
4
|
+
* Detects: OpenCode, Claude Code, Cursor.
|
|
5
|
+
* For each detected, merges { mcpServers: { agentsmarket: {...} } } into the existing config,
|
|
6
|
+
* preserving all other keys and creating a `.bak` backup before writing.
|
|
7
|
+
*
|
|
8
|
+
* If no agents are detected, returns an empty report — caller should instruct user to
|
|
9
|
+
* configure manually per https://agentsmarket.world/INSTRUCTIONS.md.
|
|
10
|
+
*/
|
|
11
|
+
export type AgentName = 'OpenCode' | 'Claude Code' | 'Cursor';
|
|
12
|
+
export type InstallReportEntry = {
|
|
13
|
+
agent: AgentName;
|
|
14
|
+
action: 'installed' | 'updated' | 'unchanged';
|
|
15
|
+
path: string;
|
|
16
|
+
backup?: string;
|
|
17
|
+
} | {
|
|
18
|
+
agent: AgentName;
|
|
19
|
+
action: 'skipped';
|
|
20
|
+
reason: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function installMcpForAll(): InstallReportEntry[];
|
|
23
|
+
export declare function detectAgents(): AgentName[];
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-install agentsmarket MCP server into detected agent configs.
|
|
3
|
+
*
|
|
4
|
+
* Detects: OpenCode, Claude Code, Cursor.
|
|
5
|
+
* For each detected, merges { mcpServers: { agentsmarket: {...} } } into the existing config,
|
|
6
|
+
* preserving all other keys and creating a `.bak` backup before writing.
|
|
7
|
+
*
|
|
8
|
+
* If no agents are detected, returns an empty report — caller should instruct user to
|
|
9
|
+
* configure manually per https://agentsmarket.world/INSTRUCTIONS.md.
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'node:fs';
|
|
12
|
+
import * as os from 'node:os';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
const MCP_ENTRY = {
|
|
15
|
+
command: 'npx',
|
|
16
|
+
args: ['-y', '@agentsmarket/cli', 'mcp'],
|
|
17
|
+
};
|
|
18
|
+
function detectCandidates() {
|
|
19
|
+
const home = os.homedir();
|
|
20
|
+
const found = [];
|
|
21
|
+
const ocJson = path.join(home, '.config', 'opencode', 'opencode.json');
|
|
22
|
+
const ocJsonc = path.join(home, '.config', 'opencode', 'opencode.jsonc');
|
|
23
|
+
const ocDir = path.join(home, '.config', 'opencode');
|
|
24
|
+
if (fs.existsSync(ocJson))
|
|
25
|
+
found.push({ agent: 'OpenCode', path: ocJson });
|
|
26
|
+
else if (fs.existsSync(ocJsonc))
|
|
27
|
+
found.push({ agent: 'OpenCode', path: ocJsonc });
|
|
28
|
+
else if (fs.existsSync(ocDir) && fs.statSync(ocDir).isDirectory()) {
|
|
29
|
+
found.push({ agent: 'OpenCode', path: ocJson });
|
|
30
|
+
}
|
|
31
|
+
const ccJson = path.join(home, '.claude.json');
|
|
32
|
+
const ccDir = path.join(home, '.claude');
|
|
33
|
+
if (fs.existsSync(ccJson))
|
|
34
|
+
found.push({ agent: 'Claude Code', path: ccJson });
|
|
35
|
+
else if (fs.existsSync(ccDir) && fs.statSync(ccDir).isDirectory()) {
|
|
36
|
+
found.push({ agent: 'Claude Code', path: ccJson });
|
|
37
|
+
}
|
|
38
|
+
const curJson = path.join(home, '.cursor', 'mcp.json');
|
|
39
|
+
const curDir = path.join(home, '.cursor');
|
|
40
|
+
if (fs.existsSync(curJson))
|
|
41
|
+
found.push({ agent: 'Cursor', path: curJson });
|
|
42
|
+
else if (fs.existsSync(curDir) && fs.statSync(curDir).isDirectory()) {
|
|
43
|
+
found.push({ agent: 'Cursor', path: curJson });
|
|
44
|
+
}
|
|
45
|
+
return found;
|
|
46
|
+
}
|
|
47
|
+
function stripJsoncComments(input) {
|
|
48
|
+
let out = '';
|
|
49
|
+
let i = 0;
|
|
50
|
+
let inString = false;
|
|
51
|
+
let stringChar = '';
|
|
52
|
+
while (i < input.length) {
|
|
53
|
+
const ch = input[i];
|
|
54
|
+
const next = input[i + 1];
|
|
55
|
+
if (inString) {
|
|
56
|
+
out += ch;
|
|
57
|
+
if (ch === '\\' && i + 1 < input.length) {
|
|
58
|
+
out += input[i + 1];
|
|
59
|
+
i += 2;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (ch === stringChar)
|
|
63
|
+
inString = false;
|
|
64
|
+
i++;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (ch === '"' || ch === "'") {
|
|
68
|
+
inString = true;
|
|
69
|
+
stringChar = ch;
|
|
70
|
+
out += ch;
|
|
71
|
+
i++;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (ch === '/' && next === '/') {
|
|
75
|
+
while (i < input.length && input[i] !== '\n')
|
|
76
|
+
i++;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ch === '/' && next === '*') {
|
|
80
|
+
i += 2;
|
|
81
|
+
while (i < input.length && !(input[i] === '*' && input[i + 1] === '/'))
|
|
82
|
+
i++;
|
|
83
|
+
i += 2;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
out += ch;
|
|
87
|
+
i++;
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
function readJsonConfig(filePath) {
|
|
92
|
+
const raw = fs.readFileSync(filePath, 'utf8');
|
|
93
|
+
const stripped = stripJsoncComments(raw);
|
|
94
|
+
const hadComments = stripped !== raw;
|
|
95
|
+
return { parsed: JSON.parse(stripped), hadComments };
|
|
96
|
+
}
|
|
97
|
+
function sameMcpEntry(a) {
|
|
98
|
+
if (!a || typeof a !== 'object')
|
|
99
|
+
return false;
|
|
100
|
+
const e = a;
|
|
101
|
+
if (e.command !== MCP_ENTRY.command)
|
|
102
|
+
return false;
|
|
103
|
+
const args = e.args;
|
|
104
|
+
if (!Array.isArray(args))
|
|
105
|
+
return false;
|
|
106
|
+
if (args.length !== MCP_ENTRY.args.length)
|
|
107
|
+
return false;
|
|
108
|
+
return MCP_ENTRY.args.every((v, i) => args[i] === v);
|
|
109
|
+
}
|
|
110
|
+
function installOne(c) {
|
|
111
|
+
const fileExists = fs.existsSync(c.path);
|
|
112
|
+
if (!fileExists) {
|
|
113
|
+
const dir = path.dirname(c.path);
|
|
114
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
115
|
+
const initial = {
|
|
116
|
+
mcpServers: {
|
|
117
|
+
agentsmarket: MCP_ENTRY,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
fs.writeFileSync(c.path, JSON.stringify(initial, null, 2) + '\n', { encoding: 'utf8', mode: 0o600 });
|
|
121
|
+
return { agent: c.agent, action: 'installed', path: c.path };
|
|
122
|
+
}
|
|
123
|
+
let parsed;
|
|
124
|
+
try {
|
|
125
|
+
parsed = readJsonConfig(c.path).parsed;
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
129
|
+
return { agent: c.agent, action: 'skipped', reason: `parse error: ${msg}` };
|
|
130
|
+
}
|
|
131
|
+
const mcpServers = (parsed.mcpServers ?? {});
|
|
132
|
+
if (sameMcpEntry(mcpServers.agentsmarket)) {
|
|
133
|
+
return { agent: c.agent, action: 'unchanged', path: c.path };
|
|
134
|
+
}
|
|
135
|
+
const backupPath = `${c.path}.bak-${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|
136
|
+
fs.copyFileSync(c.path, backupPath);
|
|
137
|
+
mcpServers.agentsmarket = MCP_ENTRY;
|
|
138
|
+
parsed.mcpServers = mcpServers;
|
|
139
|
+
fs.writeFileSync(c.path, JSON.stringify(parsed, null, 2) + '\n', { encoding: 'utf8' });
|
|
140
|
+
fs.chmodSync(c.path, 0o600);
|
|
141
|
+
return { agent: c.agent, action: 'updated', path: c.path, backup: backupPath };
|
|
142
|
+
}
|
|
143
|
+
export function installMcpForAll() {
|
|
144
|
+
return detectCandidates().map(installOne);
|
|
145
|
+
}
|
|
146
|
+
export function detectAgents() {
|
|
147
|
+
return detectCandidates().map((c) => c.agent);
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=mcp-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-install.js","sourceRoot":"","sources":["../../src/lib/mcp-install.ts"],"names":[],"mappings":"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"}
|