@dfm-fi/agent 0.2.494 → 0.2.498

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
@@ -311,7 +311,7 @@ Notes:
311
311
  | `DFM_AGENT_KEYPAIR_PATH` | For auth | — | Path to a Solana secret-key JSON file (preferred). The wallet must be **allowlisted** + **funded** (USDC + a little SOL). |
312
312
  | `DFM_AGENT_KEYPAIR_JSON` | For auth | — | The secret-key JSON array inline (alternative; e.g. injected from a secret manager). |
313
313
  | `DFM_AGENT_WRITE_ENABLED` | No | `false` | Master kill-switch for **all** write tools (launch/deposit/redeem/cancel/update-envelope). |
314
- | `HELIUS_RPC_URL` / `DFM_RPC_URL` | For write | — | RPC to submit signed txs (mainnet refuses the public RPC fallback). |
314
+ | `HELIUS_RPC_URL` / `DFM_RPC_URL` | No (optional) | — | OPTIONAL override — submit through your OWN RPC instead of the backend broadcast (`POST /tx/submit`). Writes need NO client RPC by default; mainnet never uses the rate-limited public RPC. |
315
315
  | `SOLANA_CLUSTER` | No | `mainnet-beta` | `mainnet-beta` or `devnet`. |
316
316
 
317
317
  ## Architecture
package/dist/config.d.ts CHANGED
@@ -1,18 +1,3 @@
1
- /**
2
- * Agent configuration — loaded from env vars set by the OPERATOR locally.
3
- *
4
- * SECURITY MODEL (read before changing anything here):
5
- * - The agent operates with ITS OWN test-wallet keypair, loaded LOCALLY by the
6
- * operator from a file path (`DFM_AGENT_KEYPAIR_PATH`) or an env-injected
7
- * secret (`DFM_AGENT_KEYPAIR_JSON`). The keypair is NEVER passed through the
8
- * MCP protocol, tool arguments, or tool results, and is NEVER logged.
9
- * - That test wallet must be on the closed-alpha access allowlist (a sign-in
10
- * from a non-allowed wallet is rejected server-side — see auth.service).
11
- * - The protocol wallet (`9GjE…`) must NOT be used here. The agent signs with
12
- * a throwaway test wallet funded with a few dollars of USDC.
13
- * - All real-money WRITE tools (deposit / redeem) are GATED behind
14
- * `DFM_AGENT_WRITE_ENABLED=true` and default OFF.
15
- */
16
1
  export interface AgentConfig {
17
2
  /** DFM v2 backend API base, INCLUDING the `/api/v2` prefix. */
18
3
  apiUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,UAAU,IAAI,WAAW,CA4BxC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,UAAU,IAAI,WAAW,CA4BxC"}
package/dist/config.js CHANGED
@@ -13,6 +13,22 @@
13
13
  * - All real-money WRITE tools (deposit / redeem) are GATED behind
14
14
  * `DFM_AGENT_WRITE_ENABLED=true` and default OFF.
15
15
  */
16
+ import { existsSync } from 'node:fs';
17
+ import { homedir } from 'node:os';
18
+ import { join } from 'node:path';
19
+ /**
20
+ * Zero-config convenience: if `DFM_AGENT_KEYPAIR_PATH` is unset, fall back to the
21
+ * conventional `~/.config/dfm/agent-wallet.json` IF it exists. So a plugin user
22
+ * can just drop their throwaway test keypair there and skip the env var entirely.
23
+ * Returns undefined when neither is present (write tools then error clearly).
24
+ */
25
+ const DEFAULT_KEYPAIR_PATH = join(homedir(), '.config', 'dfm', 'agent-wallet.json');
26
+ function resolveKeypairPath() {
27
+ const explicit = process.env.DFM_AGENT_KEYPAIR_PATH;
28
+ if (explicit && explicit.trim().length > 0)
29
+ return explicit;
30
+ return existsSync(DEFAULT_KEYPAIR_PATH) ? DEFAULT_KEYPAIR_PATH : undefined;
31
+ }
16
32
  function parseCluster(raw) {
17
33
  return raw === 'mainnet-beta' ? 'mainnet-beta' : raw === 'devnet' ? 'devnet' : 'mainnet-beta';
18
34
  }
@@ -49,7 +65,7 @@ export function loadConfig() {
49
65
  cluster,
50
66
  rpcUrl,
51
67
  siwsDomain: process.env.SIWS_DOMAIN,
52
- keypairPath: process.env.DFM_AGENT_KEYPAIR_PATH,
68
+ keypairPath: resolveKeypairPath(),
53
69
  keypairJsonEnvPresent: typeof process.env.DFM_AGENT_KEYPAIR_JSON === 'string'
54
70
  && process.env.DFM_AGENT_KEYPAIR_JSON.trim().length > 0,
55
71
  writeEnabled,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmCH,SAAS,YAAY,CAAC,GAAuB;IAC3C,OAAO,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,gFAAgF;IAChF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,4BAA4B,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEzD,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACnE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,GAAG,+BAA+B,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;IAEpE,OAAO;QACL,MAAM;QACN,OAAO;QACP,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC/C,qBAAqB,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,QAAQ;eACxE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACzD,YAAY;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;AACpF,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACpD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAmCD,SAAS,YAAY,CAAC,GAAuB;IAC3C,OAAO,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,gFAAgF;IAChF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,4BAA4B,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEzD,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACnE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,GAAG,+BAA+B,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;IAEpE,OAAO;QACL,MAAM;QACN,OAAO;QACP,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACnC,WAAW,EAAE,kBAAkB,EAAE;QACjC,qBAAqB,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,QAAQ;eACxE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACzD,YAAY;KACb,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dfm-fi/agent",
3
- "version": "0.2.494",
3
+ "version": "0.2.498",
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": {