@dfm-fi/agent 0.2.926 → 0.2.937

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 CHANGED
@@ -41,6 +41,12 @@ the agent.
41
41
 
42
42
  ## Security model (read first)
43
43
 
44
+ - **RECOMMENDED: `DFM_API_KEY` (keyless).** No Solana keypair anywhere on this
45
+ machine — writes route to the DFM backend and sign with **your Privy operating
46
+ wallet**, behind that wallet's own policy caps + a pre-sign simulation, and the
47
+ key is revocable instantly. See [Install](#install). Everything below this
48
+ point describes the **legacy local-keypair** mode (`DFM_AGENT_KEYPAIR_PATH`),
49
+ kept for existing installs and local dev/test wallets.
44
50
  - The agent authenticates as **its own test wallet**, whose keypair is loaded
45
51
  **locally by you** from a file path (`DFM_AGENT_KEYPAIR_PATH`) or an inline env
46
52
  (`DFM_AGENT_KEYPAIR_JSON`). The keypair **never crosses the MCP boundary** — it
@@ -121,11 +127,22 @@ npx -y @dfm-fi/agent install
121
127
 
122
128
  That detects the `claude` CLI and runs the registration for you (and always prints the manual command + Claude Desktop config as a fallback). Add real-money tools with:
123
129
 
130
+ ```bash
131
+ npx -y @dfm-fi/agent install --write --api-key dfm_...
132
+ ```
133
+
134
+ **Mint the key from a signed-in session:** `POST /agent/keys` (or the SKILLS panel in the app). It resolves server-side to your wallet + that credential's own caps, and is revocable instantly — nothing ever leaves your machine that can move funds on its own. Writes sign with **your Privy operating wallet**, never a raw Solana keypair. (`--dry-run` prints what it would do without registering.)
135
+
136
+ <details><summary>Legacy: a local throwaway keypair instead of an API key</summary>
137
+
138
+ Not recommended for real usage — a leaked keypair IS the wallet, permanently, with no revoke (an API key is instantly revocable). Kept for existing installs and local dev/test wallets:
139
+
124
140
  ```bash
125
141
  npx -y @dfm-fi/agent install --write --keypair /abs/path/test-wallet.json
126
142
  ```
127
143
 
128
- (No Solana RPC key neededthe DFM backend broadcasts your signed tx. `--dry-run` prints what it would do without registering.)
144
+ `--api-key` and `--keypair` are mutually exclusive a keypair, if present, always wins over an API key, so the installer rejects passing both rather than silently picking one.
145
+ </details>
129
146
 
130
147
  <details><summary>Prefer to register it yourself? The manual commands</summary>
131
148
 
@@ -134,10 +151,10 @@ Read-only:
134
151
  claude mcp add dfm -- npx -y @dfm-fi/agent@latest
135
152
  ```
136
153
 
137
- Full write-enabled (Claude Code, no RPC key needed):
154
+ Full write-enabled, RECOMMENDED (Claude Code, no RPC key needed, no local keypair):
138
155
  ```bash
139
156
  claude mcp add dfm \
140
- --env DFM_AGENT_KEYPAIR_PATH=/abs/path/test-wallet.json \
157
+ --env DFM_API_KEY=dfm_... \
141
158
  --env DFM_AGENT_WRITE_ENABLED=true \
142
159
  -- npx -y @dfm-fi/agent@latest
143
160
  ```
@@ -150,14 +167,16 @@ claude mcp add dfm \
150
167
  "command": "npx",
151
168
  "args": ["-y", "@dfm-fi/agent"],
152
169
  "env": {
153
- "DFM_AGENT_KEYPAIR_PATH": "/abs/path/test-wallet.json",
170
+ "DFM_API_KEY": "dfm_...",
154
171
  "DFM_AGENT_WRITE_ENABLED": "true"
155
172
  }
156
173
  }
157
174
  }
158
175
  }
159
176
  ```
160
- (For read-only, drop `DFM_AGENT_WRITE_ENABLED` — the read tools need no keypair.
177
+ (For read-only, drop `DFM_API_KEY` + `DFM_AGENT_WRITE_ENABLED` — the read tools
178
+ need neither. Legacy local-keypair signing: swap `DFM_API_KEY` for
179
+ `DFM_AGENT_KEYPAIR_PATH=/abs/path/test-wallet.json` — see the legacy note above.
161
180
  Optional: add `--env HELIUS_RPC_URL=https://…` to submit through your OWN RPC
162
181
  instead of the backend.)
163
182
  </details>
package/dist/cli.js CHANGED
@@ -34,13 +34,17 @@ function printHelp() {
34
34
  @dfm-fi/agent v${version()} — drive DFM v2 DTF vaults from an AI agent (MCP).
35
35
 
36
36
  INSTALL (one command — registers the MCP server for Claude Code/Desktop):
37
- npx -y @dfm-fi/agent install read-only tools
38
- npx -y @dfm-fi/agent install --write --keypair <path> + real-money tools
37
+ npx -y @dfm-fi/agent install read-only tools
38
+ npx -y @dfm-fi/agent install --write --api-key dfm_… + real-money tools (RECOMMENDED —
39
+ signs with YOUR Privy operating
40
+ wallet, no keypair anywhere)
41
+ npx -y @dfm-fi/agent install --write --keypair <path> legacy — local throwaway key
39
42
 
40
43
  COMMANDS:
41
- install [--write] [--keypair <abs>] [--name <n>] [--dry-run]
44
+ install [--write] [--api-key <dfm_…>] [--keypair <abs>] [--name <n>] [--dry-run]
42
45
  Register the MCP server (auto via the \`claude\` CLI when
43
46
  present; always prints the manual command + Desktop config).
47
+ --api-key and --keypair are mutually exclusive.
44
48
  serve Start the stdio MCP server explicitly.
45
49
  help Show this help.
46
50
  version Print the version.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;mBACK,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC3B,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,0EAA0E;IAC1E,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,KAAK;YACR,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACvB,OAAO;QACT,KAAK,OAAO;YACV,MAAM,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,KAAK,EAAE;YACL,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,8DAA8D;YAC9D,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChD,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,EAAE,CAAC;YACzB,CAAC;YACD,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;YAC3C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;mBACK,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,0EAA0E;IAC1E,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,KAAK;YACR,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACvB,OAAO;QACT,KAAK,OAAO;YACV,MAAM,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,KAAK,EAAE;YACL,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,8DAA8D;YAC9D,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChD,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,EAAE,CAAC;YACzB,CAAC;YACD,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;YAC3C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAqFA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD9D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAwGA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E9D"}
package/dist/install.js CHANGED
@@ -7,14 +7,25 @@
7
7
  * is that a person can find ONE command on the landing page, paste it, and be
8
8
  * done — no manual JSON editing, no RPC key.
9
9
  *
10
- * npx -y @dfm-fi/agent install # read-only tools
11
- * npx -y @dfm-fi/agent install --write --keypair PATH # + real-money tools
10
+ * npx -y @dfm-fi/agent install # read-only tools
11
+ * npx -y @dfm-fi/agent install --write --api-key dfm_… # RECOMMENDED signs with
12
+ * # YOUR Privy operating wallet,
13
+ * # no keypair anywhere
14
+ * npx -y @dfm-fi/agent install --write --keypair PATH # legacy — local throwaway key
12
15
  *
13
16
  * Flags:
14
17
  * --write also enable the WRITE tools (launch/deposit/redeem/manage)
18
+ * --api-key <key> a `dfm_…` credential (mint one with POST /agent/keys from a
19
+ * signed-in session). RECOMMENDED for --write: every write
20
+ * routes through /agent/operating/execute and signs with
21
+ * YOUR Privy-custodied operating wallet — no Solana keypair
22
+ * ever touches this machine. Mutually exclusive with --keypair
23
+ * (agent/src/keyless.ts: a keypair present always wins, so
24
+ * passing both would silently ignore --api-key).
15
25
  * --keypair <path> absolute path to the throwaway test-wallet keypair json
16
- * (only meaningful with --write; if omitted, drop the key at
17
- * ~/.config/dfm/agent-wallet.json and it's picked up zero-config)
26
+ * (only meaningful with --write; if omitted AND no --api-key,
27
+ * drop the key at ~/.config/dfm/agent-wallet.json and it's
28
+ * picked up zero-config — legacy local-signing path)
18
29
  * --name <name> MCP server name in Claude (default: dfm)
19
30
  * --dry-run print what would run; don't execute / don't register
20
31
  */
@@ -28,18 +39,31 @@ function parse(args) {
28
39
  return {
29
40
  write: args.includes('--write'),
30
41
  keypair: get('--keypair'),
42
+ apiKey: get('--api-key'),
31
43
  name: get('--name') ?? 'dfm',
32
44
  dryRun: args.includes('--dry-run'),
33
45
  };
34
46
  }
47
+ /** The env pairs (flat KEY, VALUE, KEY, VALUE…) this install grants — shared by
48
+ * the `claude mcp add` argv and the Desktop config snippet, so the two can
49
+ * never drift apart on what auth mode gets wired up. */
50
+ function envPairs(o) {
51
+ if (!o.write)
52
+ return [];
53
+ const pairs = [['DFM_AGENT_WRITE_ENABLED', 'true']];
54
+ // --api-key takes the credential path; --keypair takes the legacy local-signing
55
+ // path. runInstall() already rejects passing both, so at most one applies here.
56
+ if (o.apiKey)
57
+ pairs.push(['DFM_API_KEY', o.apiKey]);
58
+ else if (o.keypair)
59
+ pairs.push(['DFM_AGENT_KEYPAIR_PATH', o.keypair]);
60
+ return pairs;
61
+ }
35
62
  /** The `claude mcp add …` argv that registers this package as an MCP server. */
36
63
  function claudeAddArgs(o) {
37
64
  const env = [];
38
- if (o.write) {
39
- env.push('--env', 'DFM_AGENT_WRITE_ENABLED=true');
40
- if (o.keypair)
41
- env.push('--env', `DFM_AGENT_KEYPAIR_PATH=${o.keypair}`);
42
- }
65
+ for (const [k, v] of envPairs(o))
66
+ env.push('--env', `${k}=${v}`);
43
67
  // `-- npx -y @dfm-fi/agent@latest` is the server launch command. No subcommand
44
68
  // after the package name → cli.ts sees a non-TTY stdin (Claude pipes it) and
45
69
  // starts the stdio MCP server. The `@latest` tag is LOAD-BEARING: without it,
@@ -52,12 +76,7 @@ function quote(args) {
52
76
  return args.map((a) => (/[\s='"]/.test(a) ? JSON.stringify(a) : a)).join(' ');
53
77
  }
54
78
  function claudeDesktopSnippet(o) {
55
- const env = {};
56
- if (o.write) {
57
- env.DFM_AGENT_WRITE_ENABLED = 'true';
58
- if (o.keypair)
59
- env.DFM_AGENT_KEYPAIR_PATH = o.keypair;
60
- }
79
+ const env = Object.fromEntries(envPairs(o));
61
80
  // `@latest` so npx always re-resolves to the newest publish (never a stale cache).
62
81
  const entry = { command: 'npx', args: ['-y', `${PKG}@latest`] };
63
82
  if (Object.keys(env).length)
@@ -83,6 +102,15 @@ export async function runInstall(args) {
83
102
  console.error('\n Error: --keypair path must not contain an "=" character.\n');
84
103
  process.exit(1);
85
104
  }
105
+ // Reject BOTH auth flags together rather than silently picking one: per
106
+ // agent/src/keyless.ts, a keypair present ALWAYS wins over DFM_API_KEY, so a
107
+ // user passing both would have --api-key silently ignored with no error —
108
+ // exactly the confusing-default class of bug this flag exists to close.
109
+ if (o.keypair && o.apiKey) {
110
+ console.error('\n Error: --keypair and --api-key are mutually exclusive (a keypair, if present, ' +
111
+ 'always wins — --api-key would be silently ignored). Pick one; --api-key is RECOMMENDED.\n');
112
+ process.exit(1);
113
+ }
86
114
  const addArgs = claudeAddArgs(o);
87
115
  const manualCmd = `claude ${quote(addArgs)}`;
88
116
  console.log(`\n DFM agent — ${o.write ? 'FULL (read + real-money write)' : 'read-only'} install\n`);
@@ -115,15 +143,25 @@ export async function runInstall(args) {
115
143
  console.log(' • Restart Claude Code / Claude Desktop so it picks up the server.');
116
144
  console.log(' • Try: "list the DFM vaults" (read-only — works with no key).');
117
145
  if (o.write) {
118
- if (!o.keypair) {
119
- console.log(' • WRITE is ON but no --keypair was given: drop your throwaway test-wallet');
120
- console.log(' keypair json at ~/.config/dfm/agent-wallet.json (zero-config pickup).');
146
+ if (o.apiKey) {
147
+ console.log(' • Writes sign with YOUR Privy operating wallet (no keypair on this machine).');
148
+ console.log(' No active/funded operating wallet yet? Ask Kim, or see /account in the app.');
149
+ }
150
+ else if (!o.keypair) {
151
+ console.log(' • WRITE is ON but no --api-key or --keypair was given. RECOMMENDED: re-run with');
152
+ console.log(' --api-key dfm_… (mint one with POST /agent/keys, signed in) — no keypair, ever.');
153
+ console.log(' Legacy fallback: drop a throwaway keypair json at ~/.config/dfm/agent-wallet.json.');
154
+ }
155
+ else {
156
+ console.log(' • Legacy local-keypair signing: this machine holds real signing power over that');
157
+ console.log(' wallet directly, with none of the operating wallet\'s caps/simulation/revoke.');
158
+ console.log(' RECOMMENDED instead: --api-key dfm_… (mint one with POST /agent/keys).');
121
159
  }
122
160
  console.log(' • WRITE tools move REAL money on Solana mainnet and only ever act on');
123
161
  console.log(' the signed-in wallet\'s own funds. Use a throwaway, allowlisted wallet.');
124
162
  }
125
163
  else {
126
- console.log(' • To enable real-money tools later, re-run with: --write --keypair <abs path>');
164
+ console.log(' • To enable real-money tools later, re-run with: --write --api-key dfm_… (RECOMMENDED)');
127
165
  }
128
166
  console.log('\n Docs: https://www.npmjs.com/package/' + PKG + '\n');
129
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dfm-fi/agent",
3
- "version": "0.2.926",
3
+ "version": "0.2.937",
4
4
  "description": "DFM v2 MCP server — drive the full DTF launch → deposit → redeem (+ manage) lifecycle from an AI agent against the live API.",
5
5
  "type": "module",
6
6
  "bin": {