@agent-shield/plugin-elizaos 0.1.2 → 0.3.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.
Files changed (65) hide show
  1. package/README.md +215 -29
  2. package/dist/actions/index.d.ts +4 -3
  3. package/dist/actions/index.d.ts.map +1 -1
  4. package/dist/actions/index.js +9 -7
  5. package/dist/actions/index.js.map +1 -1
  6. package/dist/actions/pauseResume.d.ts +14 -0
  7. package/dist/actions/pauseResume.d.ts.map +1 -0
  8. package/dist/actions/pauseResume.js +89 -0
  9. package/dist/actions/pauseResume.js.map +1 -0
  10. package/dist/actions/status.d.ts +14 -0
  11. package/dist/actions/status.d.ts.map +1 -0
  12. package/dist/actions/status.js +74 -0
  13. package/dist/actions/status.js.map +1 -0
  14. package/dist/actions/transactionHistory.d.ts +14 -0
  15. package/dist/actions/transactionHistory.d.ts.map +1 -0
  16. package/dist/actions/transactionHistory.js +89 -0
  17. package/dist/actions/transactionHistory.js.map +1 -0
  18. package/dist/actions/{swap.d.ts → updatePolicy.d.ts} +4 -8
  19. package/dist/actions/updatePolicy.d.ts.map +1 -0
  20. package/dist/actions/updatePolicy.js +83 -0
  21. package/dist/actions/updatePolicy.js.map +1 -0
  22. package/dist/client-factory.d.ts +5 -8
  23. package/dist/client-factory.d.ts.map +1 -1
  24. package/dist/client-factory.js +53 -33
  25. package/dist/client-factory.js.map +1 -1
  26. package/dist/evaluators/policyCheck.d.ts +2 -2
  27. package/dist/evaluators/policyCheck.d.ts.map +1 -1
  28. package/dist/evaluators/policyCheck.js +25 -29
  29. package/dist/evaluators/policyCheck.js.map +1 -1
  30. package/dist/index.d.ts +3 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +7 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/plugin.d.ts +24 -68
  35. package/dist/plugin.d.ts.map +1 -1
  36. package/dist/plugin.js +14 -20
  37. package/dist/plugin.js.map +1 -1
  38. package/dist/providers/index.d.ts +1 -1
  39. package/dist/providers/index.d.ts.map +1 -1
  40. package/dist/providers/index.js +2 -2
  41. package/dist/providers/index.js.map +1 -1
  42. package/dist/providers/spendTracking.d.ts +7 -9
  43. package/dist/providers/spendTracking.d.ts.map +1 -1
  44. package/dist/providers/spendTracking.js +25 -32
  45. package/dist/providers/spendTracking.js.map +1 -1
  46. package/dist/providers/vaultStatus.d.ts +11 -15
  47. package/dist/providers/vaultStatus.d.ts.map +1 -1
  48. package/dist/providers/vaultStatus.js +22 -30
  49. package/dist/providers/vaultStatus.js.map +1 -1
  50. package/dist/types.d.ts +6 -10
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +4 -6
  53. package/dist/types.js.map +1 -1
  54. package/package.json +12 -8
  55. package/dist/actions/closePosition.d.ts +0 -27
  56. package/dist/actions/closePosition.d.ts.map +0 -1
  57. package/dist/actions/closePosition.js +0 -86
  58. package/dist/actions/closePosition.js.map +0 -1
  59. package/dist/actions/openPosition.d.ts +0 -31
  60. package/dist/actions/openPosition.d.ts.map +0 -1
  61. package/dist/actions/openPosition.js +0 -91
  62. package/dist/actions/openPosition.js.map +0 -1
  63. package/dist/actions/swap.d.ts.map +0 -1
  64. package/dist/actions/swap.js +0 -82
  65. package/dist/actions/swap.js.map +0 -1
package/dist/plugin.js CHANGED
@@ -8,35 +8,29 @@ const evaluators_1 = require("./evaluators");
8
8
  * AgentShield Plugin for ElizaOS.
9
9
  *
10
10
  * Provides:
11
- * - Actions: SHIELD_SWAP, SHIELD_OPEN_POSITION, SHIELD_CLOSE_POSITION
12
- * - Providers: vault status, spend tracking (injected into agent context)
13
- * - Evaluators: policy cap warning (runs after shield actions)
11
+ * - Actions: SHIELD_STATUS, SHIELD_UPDATE_POLICY, SHIELD_PAUSE_RESUME, SHIELD_TRANSACTION_HISTORY
12
+ * - Providers: shield status, spend tracking (injected into agent context)
13
+ * - Evaluators: policy cap warning (runs after actions)
14
14
  *
15
15
  * Required environment variables:
16
- * - AGENT_SHIELD_VAULT_OWNER — vault owner public key
17
- * - AGENT_SHIELD_VAULT_ID — vault identifier
18
- * - SOLANA_RPC_URL — Solana RPC endpoint
19
16
  * - SOLANA_WALLET_PRIVATE_KEY — agent wallet key
20
17
  *
21
18
  * Optional:
22
- * - AGENT_SHIELD_PROGRAM_IDcustom program ID override
19
+ * - AGENT_SHIELD_MAX_SPENDe.g. "500 USDC/day"
20
+ * - AGENT_SHIELD_BLOCK_UNKNOWN — "true" or "false" (default: true)
23
21
  */
24
22
  exports.agentShieldPlugin = {
25
23
  name: "agent-shield",
26
- description: "AgentShield — Permission-guarded DeFi vault for AI agents. " +
27
- "Routes swaps through Jupiter and perp trades through Flash Trade " +
28
- "with on-chain spending caps, token whitelists, and leverage limits.",
24
+ description: "AgentShield — Client-side spending controls for AI agents. " +
25
+ "Wraps wallet signing with policy enforcement, spending caps, " +
26
+ "and rate limiting. Zero on-chain setup required.",
29
27
  actions: [
30
- actions_1.swapAction,
31
- actions_1.openPositionAction,
32
- actions_1.closePositionAction,
33
- ],
34
- providers: [
35
- providers_1.vaultStatusProvider,
36
- providers_1.spendTrackingProvider,
37
- ],
38
- evaluators: [
39
- evaluators_1.policyCheckEvaluator,
28
+ actions_1.statusAction,
29
+ actions_1.updatePolicyAction,
30
+ actions_1.pauseResumeAction,
31
+ actions_1.transactionHistoryAction,
40
32
  ],
33
+ providers: [providers_1.shieldStatusProvider, providers_1.spendTrackingProvider],
34
+ evaluators: [evaluators_1.policyCheckEvaluator],
41
35
  };
42
36
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AAAA,uCAAgF;AAChF,2CAAyE;AACzE,6CAAoD;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,6DAA6D;QAC7D,mEAAmE;QACnE,qEAAqE;IAEvE,OAAO,EAAE;QACP,oBAAU;QACV,4BAAkB;QAClB,6BAAmB;KACpB;IAED,SAAS,EAAE;QACT,+BAAmB;QACnB,iCAAqB;KACtB;IAED,UAAU,EAAE;QACV,iCAAoB;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AAAA,uCAKmB;AACnB,2CAA0E;AAC1E,6CAAoD;AAEpD;;;;;;;;;;;;;;GAcG;AACU,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,6DAA6D;QAC7D,+DAA+D;QAC/D,kDAAkD;IAEpD,OAAO,EAAE;QACP,sBAAY;QACZ,4BAAkB;QAClB,2BAAiB;QACjB,kCAAwB;KACzB;IAED,SAAS,EAAE,CAAC,gCAAoB,EAAE,iCAAqB,CAAC;IAExD,UAAU,EAAE,CAAC,iCAAoB,CAAC;CACnC,CAAC"}
@@ -1,3 +1,3 @@
1
- export { vaultStatusProvider } from "./vaultStatus";
1
+ export { shieldStatusProvider } from "./vaultStatus";
2
2
  export { spendTrackingProvider } from "./spendTracking";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.spendTrackingProvider = exports.vaultStatusProvider = void 0;
3
+ exports.spendTrackingProvider = exports.shieldStatusProvider = void 0;
4
4
  var vaultStatus_1 = require("./vaultStatus");
5
- Object.defineProperty(exports, "vaultStatusProvider", { enumerable: true, get: function () { return vaultStatus_1.vaultStatusProvider; } });
5
+ Object.defineProperty(exports, "shieldStatusProvider", { enumerable: true, get: function () { return vaultStatus_1.shieldStatusProvider; } });
6
6
  var spendTracking_1 = require("./spendTracking");
7
7
  Object.defineProperty(exports, "spendTrackingProvider", { enumerable: true, get: function () { return spendTracking_1.spendTrackingProvider; } });
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAA3C,kHAAA,mBAAmB,OAAA;AAC5B,iDAAwD;AAA/C,sHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAC7B,iDAAwD;AAA/C,sHAAA,qBAAqB,OAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Spend Tracking Provider — injects rolling 24h spend data and
2
+ * Spend Tracking Provider — injects per-token spending data and
3
3
  * remaining budget into agent context.
4
4
  */
5
5
  export declare const spendTrackingProvider: {
@@ -8,18 +8,16 @@ export declare const spendTrackingProvider: {
8
8
  get: (runtime: any, _message: any, _state: any) => Promise<{
9
9
  text: string;
10
10
  values: {
11
- totalSpent24h: string;
12
- dailyCap: string;
13
- remainingBudget: string;
14
- usagePercent: string;
11
+ tokenCount: string;
12
+ maxUsagePercent: string;
13
+ isPaused: string;
15
14
  };
16
15
  } | {
17
16
  text: string;
18
17
  values: {
19
- totalSpent24h?: undefined;
20
- dailyCap?: undefined;
21
- remainingBudget?: undefined;
22
- usagePercent?: undefined;
18
+ tokenCount?: undefined;
19
+ maxUsagePercent?: undefined;
20
+ isPaused?: undefined;
23
21
  };
24
22
  }>;
25
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"spendTracking.d.ts","sourceRoot":"","sources":["../../src/providers/spendTracking.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;mBAIX,GAAG,YAAY,GAAG,UAAU,GAAG;;;;;;;;;;;;;;;;;CAuDrD,CAAC"}
1
+ {"version":3,"file":"spendTracking.d.ts","sourceRoot":"","sources":["../../src/providers/spendTracking.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;mBAKX,GAAG,YAAY,GAAG,UAAU,GAAG;;;;;;;;;;;;;;;CAkDrD,CAAC"}
@@ -3,50 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.spendTrackingProvider = void 0;
4
4
  const client_factory_1 = require("../client-factory");
5
5
  /**
6
- * Spend Tracking Provider — injects rolling 24h spend data and
6
+ * Spend Tracking Provider — injects per-token spending data and
7
7
  * remaining budget into agent context.
8
8
  */
9
9
  exports.spendTrackingProvider = {
10
10
  name: "AGENT_SHIELD_SPEND_TRACKING",
11
- description: "Provides rolling 24h spending data and remaining budget for the AgentShield vault",
11
+ description: "Provides per-token spending data and remaining budget from the shield wrapper",
12
12
  get: async (runtime, _message, _state) => {
13
13
  try {
14
- const { client, vaultOwner, vaultId } = (0, client_factory_1.getOrCreateClient)(runtime);
15
- const [vaultPda] = client.getVaultPDA(vaultOwner, vaultId);
16
- const tracker = await client.fetchTracker(vaultPda);
17
- const policy = await client.fetchPolicy(vaultPda);
18
- const now = Math.floor(Date.now() / 1000);
19
- const windowStart = now - 24 * 60 * 60;
20
- // Sum active spends within the 24h window
21
- let totalSpent = BigInt(0);
22
- const spendByToken = new Map();
23
- for (const entry of tracker.rollingSpends) {
24
- if (entry.timestamp.toNumber() >= windowStart) {
25
- const amount = BigInt(entry.amountSpent.toString());
26
- totalSpent += amount;
27
- const mint = entry.tokenMint.toBase58();
28
- spendByToken.set(mint, (spendByToken.get(mint) || BigInt(0)) + amount);
29
- }
14
+ const { wallet } = (0, client_factory_1.getOrCreateShieldedWallet)(runtime);
15
+ const summary = wallet.getSpendingSummary();
16
+ const lines = [`AgentShield Spending:`];
17
+ for (const t of summary.tokens) {
18
+ const label = t.symbol ?? t.mint.slice(0, 8) + "...";
19
+ const pct = t.limit > BigInt(0)
20
+ ? Number((t.spent * BigInt(100)) / t.limit)
21
+ : 0;
22
+ const windowHrs = t.windowMs / 3600000;
23
+ lines.push(` ${label}: ${t.spent.toString()} / ${t.limit.toString()} (${pct}%, ${windowHrs}h window)`);
24
+ lines.push(` Remaining: ${t.remaining.toString()}`);
30
25
  }
31
- const cap = BigInt(policy.dailySpendingCap.toString());
32
- const remaining = cap > totalSpent ? cap - totalSpent : BigInt(0);
33
- const usagePct = cap > BigInt(0) ? Number((totalSpent * BigInt(100)) / cap) : 0;
34
- const lines = [
35
- `AgentShield Spending (24h rolling):`,
36
- ` Total Spent: ${totalSpent.toString()} / ${cap.toString()} lamports (${usagePct}%)`,
37
- ` Remaining Budget: ${remaining.toString()} lamports`,
38
- ];
39
- for (const [mint, spent] of spendByToken.entries()) {
40
- lines.push(` ${mint.slice(0, 8)}...: ${spent.toString()} lamports`);
26
+ if (summary.tokens.length === 0) {
27
+ lines.push(" No spending limits configured.");
41
28
  }
42
29
  const text = lines.join("\n");
30
+ // Compute aggregate values for context
31
+ const maxUsagePct = summary.tokens.reduce((max, t) => {
32
+ const pct = t.limit > BigInt(0)
33
+ ? Number((t.spent * BigInt(100)) / t.limit)
34
+ : 0;
35
+ return Math.max(max, pct);
36
+ }, 0);
43
37
  return {
44
38
  text,
45
39
  values: {
46
- totalSpent24h: totalSpent.toString(),
47
- dailyCap: cap.toString(),
48
- remainingBudget: remaining.toString(),
49
- usagePercent: usagePct.toString(),
40
+ tokenCount: summary.tokens.length.toString(),
41
+ maxUsagePercent: maxUsagePct.toString(),
42
+ isPaused: summary.isPaused.toString(),
50
43
  },
51
44
  };
52
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spendTracking.js","sourceRoot":"","sources":["../../src/providers/spendTracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spendTracking.js","sourceRoot":"","sources":["../../src/providers/spendTracking.ts"],"names":[],"mappings":";;;AAAA,sDAA8D;AAE9D;;;GAGG;AACU,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,+EAA+E;IAEjF,GAAG,EAAE,KAAK,EAAE,OAAY,EAAE,QAAa,EAAE,MAAW,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0CAAyB,EAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAE5C,MAAM,KAAK,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAExC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACrD,MAAM,GAAG,GACP,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC3C,CAAC,CAAC,CAAC,CAAC;gBACR,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,GAAG,OAAS,CAAC;gBACzC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,SAAS,WAAW,CAC5F,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9B,uCAAuC;YACvC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACnD,MAAM,GAAG,GACP,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC3C,CAAC,CAAC,CAAC,CAAC;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE;oBACN,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC5C,eAAe,EAAE,WAAW,CAAC,QAAQ,EAAE;oBACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;iBACtC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,6CAA6C,KAAK,CAAC,OAAO,EAAE;gBAClE,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1,29 +1,25 @@
1
1
  /**
2
- * Vault Status Provider — injects vault status and policy summary
3
- * into every agent conversation turn.
2
+ * Shield Status Provider — injects shield enforcement state and
3
+ * policy summary into every agent conversation turn.
4
4
  */
5
- export declare const vaultStatusProvider: {
5
+ export declare const shieldStatusProvider: {
6
6
  name: string;
7
7
  description: string;
8
8
  get: (runtime: any, _message: any, _state: any) => Promise<{
9
9
  text: string;
10
10
  values: {
11
- vaultAddress: string;
12
- vaultStatus: string;
13
- dailySpendingCap: string;
14
- maxTransactionSize: string;
15
- openPositions: string;
16
- maxPositions: string;
11
+ walletAddress: string;
12
+ isPaused: string;
13
+ tokenCount: string;
14
+ rateLimitUsage: string;
17
15
  };
18
16
  } | {
19
17
  text: string;
20
18
  values: {
21
- vaultAddress?: undefined;
22
- vaultStatus?: undefined;
23
- dailySpendingCap?: undefined;
24
- maxTransactionSize?: undefined;
25
- openPositions?: undefined;
26
- maxPositions?: undefined;
19
+ walletAddress?: undefined;
20
+ isPaused?: undefined;
21
+ tokenCount?: undefined;
22
+ rateLimitUsage?: undefined;
27
23
  };
28
24
  }>;
29
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vaultStatus.d.ts","sourceRoot":"","sources":["../../src/providers/vaultStatus.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;mBAIT,GAAG,YAAY,GAAG,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;CA2CrD,CAAC"}
1
+ {"version":3,"file":"vaultStatus.d.ts","sourceRoot":"","sources":["../../src/providers/vaultStatus.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;mBAKV,GAAG,YAAY,GAAG,UAAU,GAAG;;;;;;;;;;;;;;;;;CAmCrD,CAAC"}
@@ -1,50 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vaultStatusProvider = void 0;
3
+ exports.shieldStatusProvider = void 0;
4
4
  const client_factory_1 = require("../client-factory");
5
5
  /**
6
- * Vault Status Provider — injects vault status and policy summary
7
- * into every agent conversation turn.
6
+ * Shield Status Provider — injects shield enforcement state and
7
+ * policy summary into every agent conversation turn.
8
8
  */
9
- exports.vaultStatusProvider = {
10
- name: "AGENT_SHIELD_VAULT_STATUS",
11
- description: "Provides current AgentShield vault status, owner, agent, and policy summary",
9
+ exports.shieldStatusProvider = {
10
+ name: "AGENT_SHIELD_STATUS",
11
+ description: "Provides current AgentShield enforcement state, wallet address, and pause status",
12
12
  get: async (runtime, _message, _state) => {
13
13
  try {
14
- const { client, vaultOwner, vaultId } = (0, client_factory_1.getOrCreateClient)(runtime);
15
- const [vaultPda] = client.getVaultPDA(vaultOwner, vaultId);
16
- const vault = await client.fetchVaultByAddress(vaultPda);
17
- const policy = await client.fetchPolicy(vaultPda);
18
- const status = Object.keys(vault.status)[0];
19
- const tokenCount = policy.allowedTokens.length;
20
- const protocolCount = policy.allowedProtocols.length;
14
+ const { wallet, publicKey } = (0, client_factory_1.getOrCreateShieldedWallet)(runtime);
15
+ const paused = wallet.isPaused;
16
+ const summary = wallet.getSpendingSummary();
17
+ const tokenLines = summary.tokens.map((t) => {
18
+ const label = t.symbol ?? t.mint.slice(0, 8) + "...";
19
+ return `${label}: ${t.spent.toString()} / ${t.limit.toString()}`;
20
+ });
21
21
  const text = [
22
- `AgentShield Vault: ${vaultPda.toBase58()}`,
23
- `Status: ${status}`,
24
- `Owner: ${vault.owner.toBase58()}`,
25
- `Agent: ${vault.agent.toBase58()}`,
26
- `Daily Cap: ${policy.dailySpendingCap.toString()} lamports`,
27
- `Max Tx Size: ${policy.maxTransactionSize.toString()} lamports`,
28
- `Whitelisted: ${tokenCount} tokens, ${protocolCount} protocols`,
29
- `Max Leverage: ${(policy.maxLeverageBps / 100).toFixed(1)}x`,
30
- `Positions: ${vault.openPositions}/${policy.maxConcurrentPositions}`,
31
- `Developer Fee Rate: ${(policy.developerFeeRate / 10000).toFixed(4)}%`,
22
+ `AgentShield: ${publicKey.toBase58()}`,
23
+ `Enforcement: ${paused ? "PAUSED" : "ACTIVE"}`,
24
+ `Spending: ${tokenLines.join(", ") || "no limits configured"}`,
25
+ `Rate limit: ${summary.rateLimit.count}/${summary.rateLimit.limit}`,
32
26
  ].join("\n");
33
27
  return {
34
28
  text,
35
29
  values: {
36
- vaultAddress: vaultPda.toBase58(),
37
- vaultStatus: status,
38
- dailySpendingCap: policy.dailySpendingCap.toString(),
39
- maxTransactionSize: policy.maxTransactionSize.toString(),
40
- openPositions: vault.openPositions.toString(),
41
- maxPositions: policy.maxConcurrentPositions.toString(),
30
+ walletAddress: publicKey.toBase58(),
31
+ isPaused: paused.toString(),
32
+ tokenCount: summary.tokens.length.toString(),
33
+ rateLimitUsage: `${summary.rateLimit.count}/${summary.rateLimit.limit}`,
42
34
  },
43
35
  };
44
36
  }
45
37
  catch (error) {
46
38
  return {
47
- text: `AgentShield: Unable to fetch vault status — ${error.message}`,
39
+ text: `AgentShield: Unable to fetch status — ${error.message}`,
48
40
  values: {},
49
41
  };
50
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vaultStatus.js","sourceRoot":"","sources":["../../src/providers/vaultStatus.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AAEtD;;;GAGG;AACU,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,6EAA6E;IAE1F,GAAG,EAAE,KAAK,EAAE,OAAY,EAAE,QAAa,EAAE,MAAW,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAA,kCAAiB,EAAC,OAAO,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE3D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;YAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAErD,MAAM,IAAI,GAAG;gBACX,sBAAsB,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC3C,WAAW,MAAM,EAAE;gBACnB,UAAU,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;gBAClC,UAAU,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;gBAClC,cAAc,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW;gBAC3D,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW;gBAC/D,gBAAgB,UAAU,YAAY,aAAa,YAAY;gBAC/D,iBAAiB,CAAC,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBAC5D,cAAc,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,sBAAsB,EAAE;gBACpE,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;aACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE;oBACN,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE;oBACjC,WAAW,EAAE,MAAM;oBACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;oBACpD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE;oBACxD,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAC7C,YAAY,EAAE,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE;iBACvD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,+CAA+C,KAAK,CAAC,OAAO,EAAE;gBACpE,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"vaultStatus.js","sourceRoot":"","sources":["../../src/providers/vaultStatus.ts"],"names":[],"mappings":";;;AAAA,sDAA8D;AAE9D;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,kFAAkF;IAEpF,GAAG,EAAE,KAAK,EAAE,OAAY,EAAE,QAAa,EAAE,MAAW,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,0CAAyB,EAAC,OAAO,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAE5C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACrD,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG;gBACX,gBAAgB,SAAS,CAAC,QAAQ,EAAE,EAAE;gBACtC,gBAAgB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC9C,aAAa,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE;gBAC9D,eAAe,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;aACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE;oBACN,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE;oBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC3B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC5C,cAAc,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;iBACxE;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,yCAAyC,KAAK,CAAC,OAAO,EAAE;gBAC9D,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -3,22 +3,18 @@
3
3
  * Configure these in your ElizaOS `.env` or character settings.
4
4
  */
5
5
  export declare const ENV_KEYS: {
6
- /** Vault owner public key (base58) */
7
- readonly VAULT_OWNER: "AGENT_SHIELD_VAULT_OWNER";
8
- /** Vault ID (u64 as string) */
9
- readonly VAULT_ID: "AGENT_SHIELD_VAULT_ID";
10
- /** Optional AgentShield program ID override */
11
- readonly PROGRAM_ID: "AGENT_SHIELD_PROGRAM_ID";
6
+ /** Spending limit, e.g. "500 USDC/day" */
7
+ readonly MAX_SPEND: "AGENT_SHIELD_MAX_SPEND";
8
+ /** Block unknown programs: "true" or "false" (default: true) */
9
+ readonly BLOCK_UNKNOWN: "AGENT_SHIELD_BLOCK_UNKNOWN";
12
10
  /** Solana RPC URL */
13
11
  readonly RPC_URL: "SOLANA_RPC_URL";
14
12
  /** Solana wallet private key (base58 or JSON array) */
15
13
  readonly WALLET_PRIVATE_KEY: "SOLANA_WALLET_PRIVATE_KEY";
16
14
  };
17
15
  export interface AgentShieldElizaConfig {
18
- vaultOwner: string;
19
- vaultId: string;
20
- programId?: string;
21
- rpcUrl: string;
16
+ maxSpend?: string;
17
+ blockUnknown: boolean;
22
18
  walletPrivateKey: string;
23
19
  }
24
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,QAAQ;IACnB,sCAAsC;;IAEtC,+BAA+B;;IAE/B,+CAA+C;;IAE/C,qBAAqB;;IAErB,uDAAuD;;CAE/C,CAAC;AAEX,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,QAAQ;IACnB,0CAA0C;;IAE1C,gEAAgE;;IAEhE,qBAAqB;;IAErB,uDAAuD;;CAE/C,CAAC;AAEX,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
package/dist/types.js CHANGED
@@ -6,12 +6,10 @@ exports.ENV_KEYS = void 0;
6
6
  * Configure these in your ElizaOS `.env` or character settings.
7
7
  */
8
8
  exports.ENV_KEYS = {
9
- /** Vault owner public key (base58) */
10
- VAULT_OWNER: "AGENT_SHIELD_VAULT_OWNER",
11
- /** Vault ID (u64 as string) */
12
- VAULT_ID: "AGENT_SHIELD_VAULT_ID",
13
- /** Optional AgentShield program ID override */
14
- PROGRAM_ID: "AGENT_SHIELD_PROGRAM_ID",
9
+ /** Spending limit, e.g. "500 USDC/day" */
10
+ MAX_SPEND: "AGENT_SHIELD_MAX_SPEND",
11
+ /** Block unknown programs: "true" or "false" (default: true) */
12
+ BLOCK_UNKNOWN: "AGENT_SHIELD_BLOCK_UNKNOWN",
15
13
  /** Solana RPC URL */
16
14
  RPC_URL: "SOLANA_RPC_URL",
17
15
  /** Solana wallet private key (base58 or JSON array) */
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,sCAAsC;IACtC,WAAW,EAAE,0BAA0B;IACvC,+BAA+B;IAC/B,QAAQ,EAAE,uBAAuB;IACjC,+CAA+C;IAC/C,UAAU,EAAE,yBAAyB;IACrC,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,uDAAuD;IACvD,kBAAkB,EAAE,2BAA2B;CACvC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,0CAA0C;IAC1C,SAAS,EAAE,wBAAwB;IACnC,gEAAgE;IAChE,aAAa,EAAE,4BAA4B;IAC3C,qBAAqB;IACrB,OAAO,EAAE,gBAAgB;IACzB,uDAAuD;IACvD,kBAAkB,EAAE,2BAA2B;CACvC,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@agent-shield/plugin-elizaos",
3
- "version": "0.1.2",
4
- "description": "AgentShield plugin for ElizaOS — provides DeFi actions, vault providers, and policy evaluators",
3
+ "version": "0.3.0",
4
+ "description": "AgentShield plugin for ElizaOS — shield() wrapper actions, providers, and policy evaluators",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
9
  "clean": "rm -rf dist",
10
+ "test": "mocha --require ts-node/register tests/**/*.test.ts --timeout 30000",
10
11
  "prepublishOnly": "npm run build"
11
12
  },
12
13
  "files": [
@@ -15,16 +16,19 @@
15
16
  ],
16
17
  "peerDependencies": {
17
18
  "@elizaos/core": ">=0.1.0",
18
- "@agent-shield/sdk": ">=0.1.0",
19
- "@solana/web3.js": ">=1.90.0",
20
- "@coral-xyz/anchor": ">=0.30.0"
19
+ "@agent-shield/solana": ">=0.1.0",
20
+ "@solana/web3.js": ">=1.90.0"
21
21
  },
22
22
  "devDependencies": {
23
- "typescript": "^5.3.0",
23
+ "typescript": "^5.3.3",
24
24
  "@elizaos/core": "^0.1.0",
25
- "@agent-shield/sdk": "0.1.2",
25
+ "@agent-shield/solana": "workspace:*",
26
26
  "@solana/web3.js": "^1.95.0",
27
- "@coral-xyz/anchor": "^0.32.0"
27
+ "@types/chai": "^4.3.11",
28
+ "@types/mocha": "^10.0.6",
29
+ "chai": "^4.4.1",
30
+ "mocha": "^10.3.0",
31
+ "ts-node": "^10.9.2"
28
32
  },
29
33
  "license": "MIT",
30
34
  "repository": {
@@ -1,27 +0,0 @@
1
- export declare const closePositionAction: {
2
- name: string;
3
- description: string;
4
- similes: string[];
5
- validate: (runtime: any, message: any) => Promise<boolean>;
6
- handler: (runtime: any, message: any, _state: any, _options: any, callback: (response: any) => void) => Promise<void>;
7
- examples: ({
8
- user: string;
9
- content: {
10
- text: string;
11
- targetSymbol: string;
12
- collateralSymbol: string;
13
- collateralAmount: string;
14
- side: string;
15
- };
16
- } | {
17
- user: string;
18
- content: {
19
- text: string;
20
- targetSymbol?: undefined;
21
- collateralSymbol?: undefined;
22
- collateralAmount?: undefined;
23
- side?: undefined;
24
- };
25
- })[][];
26
- };
27
- //# sourceMappingURL=closePosition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"closePosition.d.ts","sourceRoot":"","sources":["../../src/actions/closePosition.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;wBAYJ,GAAG,WAAW,GAAG,KAAG,OAAO,CAAC,OAAO,CAAC;uBAanD,GAAG,WACH,GAAG,UACJ,GAAG,YACD,GAAG,YACH,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;CAgEpC,CAAC"}
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.closePositionAction = void 0;
4
- const anchor_1 = require("@coral-xyz/anchor");
5
- const client_factory_1 = require("../client-factory");
6
- exports.closePositionAction = {
7
- name: "SHIELD_CLOSE_POSITION",
8
- description: "Close an existing perpetual position on Flash Trade through the AgentShield vault.",
9
- similes: [
10
- "close my position",
11
- "close the long",
12
- "close the short",
13
- "exit position through shield",
14
- "close leveraged trade",
15
- ],
16
- validate: async (runtime, message) => {
17
- try {
18
- (0, client_factory_1.getOrCreateClient)(runtime);
19
- }
20
- catch {
21
- return false;
22
- }
23
- const text = (message.content?.text || "").toLowerCase();
24
- const keywords = ["close position", "close long", "close short", "exit position"];
25
- return keywords.some((kw) => text.includes(kw));
26
- },
27
- handler: async (runtime, message, _state, _options, callback) => {
28
- try {
29
- const { client, vaultOwner, vaultId, agentKey } = (0, client_factory_1.getOrCreateClient)(runtime);
30
- const params = message.content;
31
- if (!params.targetSymbol || !params.collateralSymbol || !params.collateralAmount || !params.side) {
32
- callback({
33
- text: "Missing required fields: targetSymbol, collateralSymbol, collateralAmount, and side are required.",
34
- error: true,
35
- });
36
- return;
37
- }
38
- const sideObj = params.side === "long" ? { long: {} } : { short: {} };
39
- const result = await client.flashTradeClose({
40
- owner: vaultOwner,
41
- vaultId,
42
- agent: agentKey,
43
- targetSymbol: params.targetSymbol,
44
- collateralSymbol: params.collateralSymbol,
45
- collateralAmount: new anchor_1.BN(params.collateralAmount),
46
- side: sideObj,
47
- priceWithSlippage: {
48
- price: new anchor_1.BN(params.price || "0"),
49
- exponent: params.priceExponent || -8,
50
- },
51
- });
52
- const txSig = await client.executeFlashTrade(result, agentKey);
53
- callback({
54
- text: `Position closed through AgentShield vault.\nSide: ${params.side}\nTarget: ${params.targetSymbol}\nTransaction: ${txSig}`,
55
- data: { txSig },
56
- });
57
- }
58
- catch (error) {
59
- callback({
60
- text: `Close position failed: ${error.message}`,
61
- error: true,
62
- });
63
- }
64
- },
65
- examples: [
66
- [
67
- {
68
- user: "{{user1}}",
69
- content: {
70
- text: "Close my long SOL position",
71
- targetSymbol: "SOL",
72
- collateralSymbol: "USDC",
73
- collateralAmount: "100000000",
74
- side: "long",
75
- },
76
- },
77
- {
78
- user: "{{agent}}",
79
- content: {
80
- text: "Position closed through AgentShield vault.\nSide: long\nTarget: SOL\nTransaction: 7dEf...",
81
- },
82
- },
83
- ],
84
- ],
85
- };
86
- //# sourceMappingURL=closePosition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"closePosition.js","sourceRoot":"","sources":["../../src/actions/closePosition.ts"],"names":[],"mappings":";;;AAAA,8CAAuC;AACvC,sDAAsD;AAEzC,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,oFAAoF;IACtF,OAAO,EAAE;QACP,mBAAmB;QACnB,gBAAgB;QAChB,iBAAiB;QACjB,8BAA8B;QAC9B,uBAAuB;KACxB;IAED,QAAQ,EAAE,KAAK,EAAE,OAAY,EAAE,OAAY,EAAoB,EAAE;QAC/D,IAAI,CAAC;YACH,IAAA,kCAAiB,EAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,KAAK,EACZ,OAAY,EACZ,OAAY,EACZ,MAAW,EACX,QAAa,EACb,QAAiC,EACjC,EAAE;QACF,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAE/B,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjG,QAAQ,CAAC;oBACP,IAAI,EAAE,mGAAmG;oBACzG,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAEtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;gBAC1C,KAAK,EAAE,UAAU;gBACjB,OAAO;gBACP,KAAK,EAAE,QAAQ;gBACf,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,gBAAgB,EAAE,IAAI,WAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACjD,IAAI,EAAE,OAAc;gBACpB,iBAAiB,EAAE;oBACjB,KAAK,EAAE,IAAI,WAAE,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;oBAClC,QAAQ,EAAE,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;iBACrC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE/D,QAAQ,CAAC;gBACP,IAAI,EAAE,qDAAqD,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,YAAY,kBAAkB,KAAK,EAAE;gBAC/H,IAAI,EAAE,EAAE,KAAK,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,QAAQ,CAAC;gBACP,IAAI,EAAE,0BAA0B,KAAK,CAAC,OAAO,EAAE;gBAC/C,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ,EAAE;QACR;YACE;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,4BAA4B;oBAClC,YAAY,EAAE,KAAK;oBACnB,gBAAgB,EAAE,MAAM;oBACxB,gBAAgB,EAAE,WAAW;oBAC7B,IAAI,EAAE,MAAM;iBACb;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,2FAA2F;iBAClG;aACF;SACF;KACF;CACF,CAAC"}
@@ -1,31 +0,0 @@
1
- export declare const openPositionAction: {
2
- name: string;
3
- description: string;
4
- similes: string[];
5
- validate: (runtime: any, message: any) => Promise<boolean>;
6
- handler: (runtime: any, message: any, _state: any, _options: any, callback: (response: any) => void) => Promise<void>;
7
- examples: ({
8
- user: string;
9
- content: {
10
- text: string;
11
- targetSymbol: string;
12
- collateralSymbol: string;
13
- collateralAmount: string;
14
- sizeAmount: string;
15
- side: string;
16
- leverageBps: number;
17
- };
18
- } | {
19
- user: string;
20
- content: {
21
- text: string;
22
- targetSymbol?: undefined;
23
- collateralSymbol?: undefined;
24
- collateralAmount?: undefined;
25
- sizeAmount?: undefined;
26
- side?: undefined;
27
- leverageBps?: undefined;
28
- };
29
- })[][];
30
- };
31
- //# sourceMappingURL=openPosition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openPosition.d.ts","sourceRoot":"","sources":["../../src/actions/openPosition.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;wBAaH,GAAG,WAAW,GAAG,KAAG,OAAO,CAAC,OAAO,CAAC;uBAanD,GAAG,WACH,GAAG,UACJ,GAAG,YACD,GAAG,YACH,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;CAoEpC,CAAC"}