@elisym/mcp 0.7.0 → 0.8.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 +18 -2
- package/dist/index.js +35 -28
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -139,9 +139,25 @@ Check my wallet balance
|
|
|
139
139
|
|
|
140
140
|
The assistant will use elisym MCP tools automatically to discover agents, submit jobs, handle payments, and receive results.
|
|
141
141
|
|
|
142
|
-
### Agent Skill (Claude Code, Hermes, OpenClaw)
|
|
142
|
+
### Agent Skill (Claude Code, Hermes, OpenClaw, Cursor, Windsurf, ...)
|
|
143
143
|
|
|
144
|
-
Alongside the MCP server, elisym ships
|
|
144
|
+
Alongside the MCP server, elisym ships [agentskills.io](https://agentskills.io)-compatible skills in [`skills/`](../../skills/) in the monorepo root. Install them into any agent runtime supported by [Vercel's Skills CLI](https://skills.sh):
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npx skills add elisymlabs/elisym
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
This installs [`elisym-customer`](../../skills/elisym-customer/SKILL.md) (discover, hire, and pay agents) and [`elisym-provider`](../../skills/elisym-provider/SKILL.md) (run a provider that accepts paid jobs). The skills teach the host agent when to reach for elisym and walk it through discovery, job submission, payment, and result handling on top of this MCP server.
|
|
151
|
+
|
|
152
|
+
**Hermes (Nous Research)** is not a target of the Vercel Skills CLI yet - copy the files manually:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
mkdir -p ~/.hermes/skills/elisym-customer ~/.hermes/skills/elisym-provider
|
|
156
|
+
curl -o ~/.hermes/skills/elisym-customer/SKILL.md \
|
|
157
|
+
https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym-customer/SKILL.md
|
|
158
|
+
curl -o ~/.hermes/skills/elisym-provider/SKILL.md \
|
|
159
|
+
https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym-provider/SKILL.md
|
|
160
|
+
```
|
|
145
161
|
|
|
146
162
|
## Security
|
|
147
163
|
|
package/dist/index.js
CHANGED
|
@@ -1815,7 +1815,6 @@ ${text}`);
|
|
|
1815
1815
|
}
|
|
1816
1816
|
})
|
|
1817
1817
|
];
|
|
1818
|
-
var LAST_SEEN_ONLINE_WINDOW_SECS = 10 * 60;
|
|
1819
1818
|
var SEARCH_PING_TIMEOUT_MS = 3e3;
|
|
1820
1819
|
var STOP_WORDS = /* @__PURE__ */ new Set([
|
|
1821
1820
|
"a",
|
|
@@ -1982,24 +1981,20 @@ var discoveryTools = [
|
|
|
1982
1981
|
)
|
|
1983
1982
|
);
|
|
1984
1983
|
}
|
|
1985
|
-
if (!include_offline) {
|
|
1986
|
-
const
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
}
|
|
2000
|
-
});
|
|
2001
|
-
filtered = survivors;
|
|
2002
|
-
}
|
|
1984
|
+
if (!include_offline && filtered.length > 0) {
|
|
1985
|
+
const probes = await Promise.allSettled(
|
|
1986
|
+
filtered.map(
|
|
1987
|
+
(candidate) => agent.client.ping.pingAgent(candidate.pubkey, SEARCH_PING_TIMEOUT_MS)
|
|
1988
|
+
)
|
|
1989
|
+
);
|
|
1990
|
+
const survivors = [];
|
|
1991
|
+
filtered.forEach((candidate, index) => {
|
|
1992
|
+
const probe = probes[index];
|
|
1993
|
+
if (probe?.status === "fulfilled" && probe.value.online) {
|
|
1994
|
+
survivors.push(candidate);
|
|
1995
|
+
}
|
|
1996
|
+
});
|
|
1997
|
+
filtered = survivors;
|
|
2003
1998
|
}
|
|
2004
1999
|
if (query) {
|
|
2005
2000
|
const isAscii = /^[\u0000-\u007F]*$/.test(query);
|
|
@@ -2862,7 +2857,10 @@ program.action(
|
|
|
2862
2857
|
await startServer(ctx);
|
|
2863
2858
|
})
|
|
2864
2859
|
);
|
|
2865
|
-
program.command("init [name]").description("Create a new agent identity").option("-d, --description <desc>", "Agent description", "Elisym MCP agent").option("-n, --network <network>", "Solana network (devnet only)", "devnet").option("--install", "Also install into MCP clients").
|
|
2860
|
+
program.command("init [name]").description("Create a new agent identity").option("-d, --description <desc>", "Agent description", "Elisym MCP agent").option("-n, --network <network>", "Solana network (devnet only)", "devnet").option("--install", "Also install into MCP clients").option(
|
|
2861
|
+
"--passphrase <value>",
|
|
2862
|
+
'Passphrase to encrypt secret keys at rest. Empty string ("") skips encryption. Also reads ELISYM_PASSPHRASE env var. When neither is provided, prompts interactively.'
|
|
2863
|
+
).action(
|
|
2866
2864
|
safe(async (name, options) => {
|
|
2867
2865
|
const { default: inquirer } = await import('inquirer');
|
|
2868
2866
|
if (!name) {
|
|
@@ -2898,14 +2896,23 @@ program.command("init [name]").description("Create a new agent identity").option
|
|
|
2898
2896
|
);
|
|
2899
2897
|
process.exit(1);
|
|
2900
2898
|
}
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2899
|
+
let passphrase;
|
|
2900
|
+
const envPassphrase = process.env.ELISYM_PASSPHRASE;
|
|
2901
|
+
if (options.passphrase !== void 0) {
|
|
2902
|
+
passphrase = options.passphrase;
|
|
2903
|
+
} else if (envPassphrase !== void 0) {
|
|
2904
|
+
passphrase = envPassphrase;
|
|
2905
|
+
} else {
|
|
2906
|
+
const answer = await inquirer.prompt([
|
|
2907
|
+
{
|
|
2908
|
+
type: "password",
|
|
2909
|
+
name: "passphrase",
|
|
2910
|
+
message: "Passphrase to encrypt secret keys (leave blank for none):",
|
|
2911
|
+
mask: "*"
|
|
2912
|
+
}
|
|
2913
|
+
]);
|
|
2914
|
+
passphrase = answer.passphrase ?? "";
|
|
2915
|
+
}
|
|
2909
2916
|
const nostrSecretKey = generateSecretKey();
|
|
2910
2917
|
const nostrPubkey = getPublicKey(nostrSecretKey);
|
|
2911
2918
|
const solanaSigner = await generateKeyPairSigner(true);
|