@agenticvault/agentic-vault 0.1.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 (201) hide show
  1. package/.claude-plugin/plugin.json +19 -0
  2. package/.env.example +16 -0
  3. package/.mcp.json.example +18 -0
  4. package/LICENSE +21 -0
  5. package/README.ja.md +163 -0
  6. package/README.ko.md +163 -0
  7. package/README.md +161 -0
  8. package/README.zh-CN.md +163 -0
  9. package/README.zh-TW.md +163 -0
  10. package/dist/agentic/audit/logger.d.ts +7 -0
  11. package/dist/agentic/audit/logger.js +19 -0
  12. package/dist/agentic/audit/logger.js.map +1 -0
  13. package/dist/agentic/audit/types.d.ts +11 -0
  14. package/dist/agentic/audit/types.js +2 -0
  15. package/dist/agentic/audit/types.js.map +1 -0
  16. package/dist/agentic/cli.d.ts +8 -0
  17. package/dist/agentic/cli.js +87 -0
  18. package/dist/agentic/cli.js.map +1 -0
  19. package/dist/agentic/index.d.ts +5 -0
  20. package/dist/agentic/index.js +7 -0
  21. package/dist/agentic/index.js.map +1 -0
  22. package/dist/agentic/mcp/server.d.ts +8 -0
  23. package/dist/agentic/mcp/server.js +25 -0
  24. package/dist/agentic/mcp/server.js.map +1 -0
  25. package/dist/agentic/mcp/tools/decoded-call-pipeline.d.ts +14 -0
  26. package/dist/agentic/mcp/tools/decoded-call-pipeline.js +18 -0
  27. package/dist/agentic/mcp/tools/decoded-call-pipeline.js.map +1 -0
  28. package/dist/agentic/mcp/tools/get-address.d.ts +3 -0
  29. package/dist/agentic/mcp/tools/get-address.js +25 -0
  30. package/dist/agentic/mcp/tools/get-address.js.map +1 -0
  31. package/dist/agentic/mcp/tools/health-check.d.ts +3 -0
  32. package/dist/agentic/mcp/tools/health-check.js +25 -0
  33. package/dist/agentic/mcp/tools/health-check.js.map +1 -0
  34. package/dist/agentic/mcp/tools/index.d.ts +7 -0
  35. package/dist/agentic/mcp/tools/index.js +21 -0
  36. package/dist/agentic/mcp/tools/index.js.map +1 -0
  37. package/dist/agentic/mcp/tools/result-adapter.d.ts +10 -0
  38. package/dist/agentic/mcp/tools/result-adapter.js +15 -0
  39. package/dist/agentic/mcp/tools/result-adapter.js.map +1 -0
  40. package/dist/agentic/mcp/tools/shared.d.ts +71 -0
  41. package/dist/agentic/mcp/tools/shared.js +12 -0
  42. package/dist/agentic/mcp/tools/shared.js.map +1 -0
  43. package/dist/agentic/mcp/tools/sign-defi-call.d.ts +3 -0
  44. package/dist/agentic/mcp/tools/sign-defi-call.js +23 -0
  45. package/dist/agentic/mcp/tools/sign-defi-call.js.map +1 -0
  46. package/dist/agentic/mcp/tools/sign-permit.d.ts +3 -0
  47. package/dist/agentic/mcp/tools/sign-permit.js +39 -0
  48. package/dist/agentic/mcp/tools/sign-permit.js.map +1 -0
  49. package/dist/agentic/mcp/tools/sign-swap.d.ts +3 -0
  50. package/dist/agentic/mcp/tools/sign-swap.js +23 -0
  51. package/dist/agentic/mcp/tools/sign-swap.js.map +1 -0
  52. package/dist/agentic/mcp/tools/sign-transaction.d.ts +3 -0
  53. package/dist/agentic/mcp/tools/sign-transaction.js +68 -0
  54. package/dist/agentic/mcp/tools/sign-transaction.js.map +1 -0
  55. package/dist/agentic/mcp/tools/sign-typed-data.d.ts +3 -0
  56. package/dist/agentic/mcp/tools/sign-typed-data.js +50 -0
  57. package/dist/agentic/mcp/tools/sign-typed-data.js.map +1 -0
  58. package/dist/agentic/policy/engine.d.ts +2 -0
  59. package/dist/agentic/policy/engine.js +3 -0
  60. package/dist/agentic/policy/engine.js.map +1 -0
  61. package/dist/agentic/policy/types.d.ts +2 -0
  62. package/dist/agentic/policy/types.js +2 -0
  63. package/dist/agentic/policy/types.js.map +1 -0
  64. package/dist/cli/commands/decode.d.ts +1 -0
  65. package/dist/cli/commands/decode.js +51 -0
  66. package/dist/cli/commands/decode.js.map +1 -0
  67. package/dist/cli/commands/dry-run.d.ts +2 -0
  68. package/dist/cli/commands/dry-run.js +56 -0
  69. package/dist/cli/commands/dry-run.js.map +1 -0
  70. package/dist/cli/commands/encode.d.ts +1 -0
  71. package/dist/cli/commands/encode.js +77 -0
  72. package/dist/cli/commands/encode.js.map +1 -0
  73. package/dist/cli/commands/get-address.d.ts +3 -0
  74. package/dist/cli/commands/get-address.js +26 -0
  75. package/dist/cli/commands/get-address.js.map +1 -0
  76. package/dist/cli/commands/health.d.ts +3 -0
  77. package/dist/cli/commands/health.js +26 -0
  78. package/dist/cli/commands/health.js.map +1 -0
  79. package/dist/cli/commands/mcp.d.ts +6 -0
  80. package/dist/cli/commands/mcp.js +40 -0
  81. package/dist/cli/commands/mcp.js.map +1 -0
  82. package/dist/cli/commands/sign-permit.d.ts +2 -0
  83. package/dist/cli/commands/sign-permit.js +110 -0
  84. package/dist/cli/commands/sign-permit.js.map +1 -0
  85. package/dist/cli/commands/sign.d.ts +2 -0
  86. package/dist/cli/commands/sign.js +82 -0
  87. package/dist/cli/commands/sign.js.map +1 -0
  88. package/dist/cli/context.d.ts +10 -0
  89. package/dist/cli/context.js +84 -0
  90. package/dist/cli/context.js.map +1 -0
  91. package/dist/cli/formatters.d.ts +18 -0
  92. package/dist/cli/formatters.js +74 -0
  93. package/dist/cli/formatters.js.map +1 -0
  94. package/dist/cli/index.d.ts +2 -0
  95. package/dist/cli/index.js +108 -0
  96. package/dist/cli/index.js.map +1 -0
  97. package/dist/core/evm-signer-adapter.d.ts +42 -0
  98. package/dist/core/evm-signer-adapter.js +92 -0
  99. package/dist/core/evm-signer-adapter.js.map +1 -0
  100. package/dist/core/signing-provider.d.ts +14 -0
  101. package/dist/core/signing-provider.js +2 -0
  102. package/dist/core/signing-provider.js.map +1 -0
  103. package/dist/crypto/evm-signer.util.d.ts +43 -0
  104. package/dist/crypto/evm-signer.util.js +151 -0
  105. package/dist/crypto/evm-signer.util.js.map +1 -0
  106. package/dist/evm-signer.util.d.ts +1 -0
  107. package/dist/evm-signer.util.js +4 -0
  108. package/dist/evm-signer.util.js.map +1 -0
  109. package/dist/index.d.ts +11 -0
  110. package/dist/index.js +9 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/kms-client.d.ts +1 -0
  113. package/dist/kms-client.js +4 -0
  114. package/dist/kms-client.js.map +1 -0
  115. package/dist/kms-signer.d.ts +1 -0
  116. package/dist/kms-signer.js +4 -0
  117. package/dist/kms-signer.js.map +1 -0
  118. package/dist/protocols/catalog.d.ts +310 -0
  119. package/dist/protocols/catalog.js +162 -0
  120. package/dist/protocols/catalog.js.map +1 -0
  121. package/dist/protocols/decoders/aave-v3.d.ts +2 -0
  122. package/dist/protocols/decoders/aave-v3.js +105 -0
  123. package/dist/protocols/decoders/aave-v3.js.map +1 -0
  124. package/dist/protocols/decoders/erc20.d.ts +2 -0
  125. package/dist/protocols/decoders/erc20.js +51 -0
  126. package/dist/protocols/decoders/erc20.js.map +1 -0
  127. package/dist/protocols/decoders/uniswap-v3.d.ts +2 -0
  128. package/dist/protocols/decoders/uniswap-v3.js +57 -0
  129. package/dist/protocols/decoders/uniswap-v3.js.map +1 -0
  130. package/dist/protocols/dispatcher.d.ts +8 -0
  131. package/dist/protocols/dispatcher.js +32 -0
  132. package/dist/protocols/dispatcher.js.map +1 -0
  133. package/dist/protocols/index.d.ts +16 -0
  134. package/dist/protocols/index.js +19 -0
  135. package/dist/protocols/index.js.map +1 -0
  136. package/dist/protocols/policy/engine.d.ts +11 -0
  137. package/dist/protocols/policy/engine.js +67 -0
  138. package/dist/protocols/policy/engine.js.map +1 -0
  139. package/dist/protocols/policy/evaluators/aave-v3.d.ts +2 -0
  140. package/dist/protocols/policy/evaluators/aave-v3.js +118 -0
  141. package/dist/protocols/policy/evaluators/aave-v3.js.map +1 -0
  142. package/dist/protocols/policy/evaluators/erc20.d.ts +2 -0
  143. package/dist/protocols/policy/evaluators/erc20.js +55 -0
  144. package/dist/protocols/policy/evaluators/erc20.js.map +1 -0
  145. package/dist/protocols/policy/evaluators/uniswap-v3.d.ts +2 -0
  146. package/dist/protocols/policy/evaluators/uniswap-v3.js +46 -0
  147. package/dist/protocols/policy/evaluators/uniswap-v3.js.map +1 -0
  148. package/dist/protocols/policy/loader.d.ts +11 -0
  149. package/dist/protocols/policy/loader.js +70 -0
  150. package/dist/protocols/policy/loader.js.map +1 -0
  151. package/dist/protocols/policy/types.d.ts +38 -0
  152. package/dist/protocols/policy/types.js +2 -0
  153. package/dist/protocols/policy/types.js.map +1 -0
  154. package/dist/protocols/registry.d.ts +21 -0
  155. package/dist/protocols/registry.js +52 -0
  156. package/dist/protocols/registry.js.map +1 -0
  157. package/dist/protocols/types.d.ts +90 -0
  158. package/dist/protocols/types.js +2 -0
  159. package/dist/protocols/types.js.map +1 -0
  160. package/dist/protocols/workflows/get-address.d.ts +2 -0
  161. package/dist/protocols/workflows/get-address.js +41 -0
  162. package/dist/protocols/workflows/get-address.js.map +1 -0
  163. package/dist/protocols/workflows/health-check.d.ts +2 -0
  164. package/dist/protocols/workflows/health-check.js +41 -0
  165. package/dist/protocols/workflows/health-check.js.map +1 -0
  166. package/dist/protocols/workflows/index.d.ts +5 -0
  167. package/dist/protocols/workflows/index.js +5 -0
  168. package/dist/protocols/workflows/index.js.map +1 -0
  169. package/dist/protocols/workflows/sign-defi-call.d.ts +14 -0
  170. package/dist/protocols/workflows/sign-defi-call.js +157 -0
  171. package/dist/protocols/workflows/sign-defi-call.js.map +1 -0
  172. package/dist/protocols/workflows/sign-permit.d.ts +21 -0
  173. package/dist/protocols/workflows/sign-permit.js +320 -0
  174. package/dist/protocols/workflows/sign-permit.js.map +1 -0
  175. package/dist/protocols/workflows/types.d.ts +79 -0
  176. package/dist/protocols/workflows/types.js +2 -0
  177. package/dist/protocols/workflows/types.js.map +1 -0
  178. package/dist/provider/factory.d.ts +12 -0
  179. package/dist/provider/factory.js +19 -0
  180. package/dist/provider/factory.js.map +1 -0
  181. package/dist/providers/aws-kms/aws-kms-client.d.ts +19 -0
  182. package/dist/providers/aws-kms/aws-kms-client.js +47 -0
  183. package/dist/providers/aws-kms/aws-kms-client.js.map +1 -0
  184. package/dist/providers/aws-kms/aws-kms-provider.d.ts +17 -0
  185. package/dist/providers/aws-kms/aws-kms-provider.js +40 -0
  186. package/dist/providers/aws-kms/aws-kms-provider.js.map +1 -0
  187. package/dist/providers/aws-kms/index.d.ts +3 -0
  188. package/dist/providers/aws-kms/index.js +4 -0
  189. package/dist/providers/aws-kms/index.js.map +1 -0
  190. package/dist/providers/aws-kms/kms-signer-adapter.d.ts +41 -0
  191. package/dist/providers/aws-kms/kms-signer-adapter.js +101 -0
  192. package/dist/providers/aws-kms/kms-signer-adapter.js.map +1 -0
  193. package/dist/types.d.ts +13 -0
  194. package/dist/types.js +2 -0
  195. package/dist/types.js.map +1 -0
  196. package/package.json +109 -0
  197. package/policy.example.json +43 -0
  198. package/skills/audit-log/SKILL.md +32 -0
  199. package/skills/check-wallet/SKILL.md +23 -0
  200. package/skills/sign-permit/SKILL.md +29 -0
  201. package/skills/sign-swap/SKILL.md +29 -0
@@ -0,0 +1,7 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export { type ToolContext, type ToolSigner, type ToolPolicyEngine, type ToolAuditLogger, type ToolDispatcher } from './shared.js';
4
+ export interface RegisterToolsOptions {
5
+ unsafeRawSign?: boolean;
6
+ }
7
+ export declare function registerTools(server: McpServer, ctx: ToolContext, options?: RegisterToolsOptions): void;
@@ -0,0 +1,21 @@
1
+ import { registerGetAddress } from './get-address.js';
2
+ import { registerHealthCheck } from './health-check.js';
3
+ import { registerSignSwap } from './sign-swap.js';
4
+ import { registerSignPermit } from './sign-permit.js';
5
+ import { registerSignDefiCall } from './sign-defi-call.js';
6
+ import { registerSignTransaction } from './sign-transaction.js';
7
+ import { registerSignTypedData } from './sign-typed-data.js';
8
+ export function registerTools(server, ctx, options) {
9
+ // Always register safe tools
10
+ registerGetAddress(server, ctx);
11
+ registerHealthCheck(server, ctx);
12
+ registerSignSwap(server, ctx);
13
+ registerSignPermit(server, ctx);
14
+ registerSignDefiCall(server, ctx);
15
+ // Only register unsafe tools when explicitly opted in
16
+ if (options?.unsafeRawSign) {
17
+ registerSignTransaction(server, ctx);
18
+ registerSignTypedData(server, ctx);
19
+ }
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,MAAM,UAAU,aAAa,CAC3B,MAAiB,EACjB,GAAgB,EAChB,OAA8B;IAE9B,6BAA6B;IAC7B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAElC,sDAAsD;IACtD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { WorkflowResult } from '../../../protocols/index.js';
2
+ export interface McpToolResult {
3
+ [key: string]: unknown;
4
+ content: {
5
+ type: 'text';
6
+ text: string;
7
+ }[];
8
+ isError?: boolean;
9
+ }
10
+ export declare function toMcpResult(result: WorkflowResult): McpToolResult;
@@ -0,0 +1,15 @@
1
+ export function toMcpResult(result) {
2
+ switch (result.status) {
3
+ case 'approved':
4
+ return { content: [{ type: 'text', text: result.data }] };
5
+ case 'dry-run-approved': {
6
+ const replacer = (_k, v) => typeof v === 'bigint' ? v.toString() : v;
7
+ return { content: [{ type: 'text', text: JSON.stringify(result.details, replacer) }] };
8
+ }
9
+ case 'denied':
10
+ return { content: [{ type: 'text', text: result.reason }], isError: true };
11
+ case 'error':
12
+ return { content: [{ type: 'text', text: result.reason }], isError: true };
13
+ }
14
+ }
15
+ //# sourceMappingURL=result-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-adapter.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/result-adapter.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClG,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxF,CAAC;AACH,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ export declare const zodHexAddress: z.ZodString;
3
+ export declare const zodHexData: z.ZodString;
4
+ export declare const zodPositiveChainId: z.ZodNumber;
5
+ /**
6
+ * Tool context types — defined locally to avoid trust boundary violations.
7
+ * Uses structural typing so callers can pass the actual implementations.
8
+ */
9
+ /** Minimal decoded intent — structural supertype of the protocol layer's DecodedIntent union */
10
+ export interface ToolDecodedIntent {
11
+ protocol: string;
12
+ chainId: number;
13
+ to: `0x${string}`;
14
+ selector?: `0x${string}`;
15
+ action?: string;
16
+ args?: Record<string, unknown>;
17
+ rawData?: `0x${string}`;
18
+ reason?: string;
19
+ }
20
+ /** Minimal signer interface needed by MCP tools */
21
+ export interface ToolSigner {
22
+ getAddress(): Promise<`0x${string}`>;
23
+ signTransaction(tx: Record<string, unknown>): Promise<`0x${string}`>;
24
+ signTypedData(params: Record<string, unknown>): Promise<{
25
+ v: number;
26
+ r: `0x${string}`;
27
+ s: `0x${string}`;
28
+ }>;
29
+ healthCheck(): Promise<void>;
30
+ }
31
+ /** Policy evaluation result */
32
+ export interface ToolPolicyEvaluation {
33
+ allowed: boolean;
34
+ violations: string[];
35
+ }
36
+ /** Minimal policy engine interface needed by MCP tools (V2 — intent-aware) */
37
+ export interface ToolPolicyEngine {
38
+ evaluate(request: {
39
+ chainId: number;
40
+ to: `0x${string}`;
41
+ selector?: `0x${string}`;
42
+ amountWei?: bigint;
43
+ deadline?: number;
44
+ intent?: ToolDecodedIntent;
45
+ }): ToolPolicyEvaluation;
46
+ }
47
+ /** Protocol dispatcher interface for calldata decoding */
48
+ export interface ToolDispatcher {
49
+ dispatch(chainId: number, to: `0x${string}`, data: `0x${string}`): ToolDecodedIntent;
50
+ }
51
+ /** Audit entry fields that callers provide (timestamp and traceId auto-generated) */
52
+ export interface ToolAuditInput {
53
+ service: string;
54
+ action: string;
55
+ who: string;
56
+ what: string;
57
+ why: string;
58
+ result: 'approved' | 'denied' | 'error';
59
+ details?: Record<string, unknown>;
60
+ }
61
+ /** Minimal audit logger interface needed by MCP tools */
62
+ export interface ToolAuditLogger {
63
+ log(entry: ToolAuditInput): unknown;
64
+ }
65
+ /** Full context passed to each MCP tool */
66
+ export interface ToolContext {
67
+ signer: ToolSigner;
68
+ policyEngine: ToolPolicyEngine;
69
+ auditLogger: ToolAuditLogger;
70
+ dispatcher?: ToolDispatcher;
71
+ }
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Shared Zod schema refinements for MCP tool inputs.
4
+ * Validates hex format and address structure at the schema boundary.
5
+ */
6
+ const HEX_RE = /^0x[0-9a-fA-F]*$/;
7
+ export const zodHexAddress = z.string().refine((v) => HEX_RE.test(v) && v.length === 42, { message: 'Invalid address: must be 0x-prefixed 42-character hex string' });
8
+ export const zodHexData = z.string().refine((v) => HEX_RE.test(v) && v.length % 2 === 0, { message: 'Invalid hex data: must be 0x-prefixed even-length hex string' });
9
+ export const zodPositiveChainId = z.number().int().positive({
10
+ message: 'Invalid chainId: must be a positive integer',
11
+ });
12
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,EACxC,EAAE,OAAO,EAAE,8DAA8D,EAAE,CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAC3C,EAAE,OAAO,EAAE,8DAA8D,EAAE,CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;IAC1D,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export declare function registerSignDefiCall(server: McpServer, ctx: ToolContext): void;
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { zodHexAddress, zodHexData, zodPositiveChainId } from './shared.js';
3
+ import { executeDecodedCallPipeline } from './decoded-call-pipeline.js';
4
+ const inputSchema = {
5
+ chainId: zodPositiveChainId.describe('The chain ID for the transaction'),
6
+ to: zodHexAddress.describe('The target contract address'),
7
+ data: zodHexData.describe('The calldata (hex-encoded)'),
8
+ value: z.string().optional().describe('The value in wei (decimal string)'),
9
+ };
10
+ export function registerSignDefiCall(server, ctx) {
11
+ server.registerTool('sign_defi_call', {
12
+ description: 'Sign a DeFi contract interaction after calldata decoding and policy validation',
13
+ inputSchema,
14
+ }, async (args) => {
15
+ return executeDecodedCallPipeline(ctx, 'sign_defi_call', {
16
+ chainId: args.chainId,
17
+ to: args.to,
18
+ data: args.data,
19
+ value: args.value,
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=sign-defi-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-defi-call.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/sign-defi-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACxE,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACzD,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,GAAgB;IACtE,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;QACpC,WAAW,EAAE,gFAAgF;QAC7F,WAAW;KACZ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChB,OAAO,0BAA0B,CAAC,GAAG,EAAE,gBAAgB,EAAE;YACvD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAA2B;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export declare function registerSignPermit(server: McpServer, ctx: ToolContext): void;
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { zodHexAddress, zodPositiveChainId } from './shared.js';
3
+ import { signPermit } from '../../../protocols/index.js';
4
+ import { toMcpResult } from './result-adapter.js';
5
+ const inputSchema = {
6
+ chainId: zodPositiveChainId.describe('The chain ID'),
7
+ token: zodHexAddress.describe('The token contract address'),
8
+ spender: zodHexAddress.describe('The spender address'),
9
+ value: z.string().describe('The permit value in wei (decimal string)'),
10
+ deadline: z.number().describe('The permit deadline (unix timestamp)'),
11
+ domain: z.record(z.string(), z.unknown()).describe('The EIP-712 domain'),
12
+ types: z.record(z.string(), z.unknown()).describe('The EIP-712 types'),
13
+ message: z.record(z.string(), z.unknown()).describe('The EIP-712 message'),
14
+ };
15
+ export function registerSignPermit(server, ctx) {
16
+ server.registerTool('sign_permit', {
17
+ description: 'Sign an EIP-2612 permit after policy validation',
18
+ inputSchema,
19
+ }, async (args) => {
20
+ const result = await signPermit({
21
+ signer: ctx.signer,
22
+ policyEngine: ctx.policyEngine,
23
+ auditSink: ctx.auditLogger,
24
+ caller: 'mcp-client',
25
+ service: 'agentic-vault-mcp',
26
+ }, {
27
+ chainId: args.chainId,
28
+ token: args.token,
29
+ spender: args.spender,
30
+ value: args.value,
31
+ deadline: args.deadline,
32
+ domain: args.domain,
33
+ types: args.types,
34
+ message: args.message,
35
+ });
36
+ return toMcpResult(result);
37
+ });
38
+ }
39
+ //# sourceMappingURL=sign-permit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-permit.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/sign-permit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC;IACpD,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3D,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,GAAgB;IACpE,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;QACjC,WAAW,EAAE,iDAAiD;QAC9D,WAAW;KACZ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChB,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B;YACE,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,SAAS,EAAE,GAAG,CAAC,WAAW;YAC1B,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,mBAAmB;SAC7B,EACD;YACE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CACF,CAAC;QACF,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export declare function registerSignSwap(server: McpServer, ctx: ToolContext): void;
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { zodHexAddress, zodHexData, zodPositiveChainId } from './shared.js';
3
+ import { executeDecodedCallPipeline } from './decoded-call-pipeline.js';
4
+ const inputSchema = {
5
+ chainId: zodPositiveChainId.describe('The chain ID for the transaction'),
6
+ to: zodHexAddress.describe('The target contract address'),
7
+ data: zodHexData.describe('The calldata (hex-encoded)'),
8
+ value: z.string().optional().describe('The value in wei (decimal string)'),
9
+ };
10
+ export function registerSignSwap(server, ctx) {
11
+ server.registerTool('sign_swap', {
12
+ description: 'Sign a swap transaction after policy validation',
13
+ inputSchema,
14
+ }, async (args) => {
15
+ return executeDecodedCallPipeline(ctx, 'sign_swap', {
16
+ chainId: args.chainId,
17
+ to: args.to,
18
+ data: args.data,
19
+ value: args.value,
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=sign-swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-swap.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/sign-swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACxE,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACzD,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,GAAgB;IAClE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;QAC/B,WAAW,EAAE,iDAAiD;QAC9D,WAAW;KACZ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChB,OAAO,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE;YAClD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAA2B;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export declare function registerSignTransaction(server: McpServer, ctx: ToolContext): void;
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { zodHexAddress, zodHexData, zodPositiveChainId } from './shared.js';
3
+ const inputSchema = {
4
+ chainId: zodPositiveChainId.describe('The chain ID'),
5
+ to: zodHexAddress.describe('The target address'),
6
+ data: zodHexData.optional().describe('The calldata (hex-encoded)'),
7
+ value: z.string().optional().describe('The value in wei (decimal string)'),
8
+ nonce: z.number().optional().describe('The transaction nonce'),
9
+ gas: z.string().optional().describe('The gas limit (decimal string)'),
10
+ maxFeePerGas: z.string().optional().describe('Max fee per gas in wei'),
11
+ maxPriorityFeePerGas: z.string().optional().describe('Max priority fee per gas in wei'),
12
+ };
13
+ export function registerSignTransaction(server, ctx) {
14
+ server.registerTool('sign_transaction', {
15
+ description: '[UNSAFE] Sign a raw transaction. Only available when unsafeRawSign is enabled.',
16
+ inputSchema,
17
+ }, async (args) => {
18
+ const to = args.to.toLowerCase();
19
+ try {
20
+ const tx = {
21
+ chainId: args.chainId,
22
+ to,
23
+ type: 'eip1559',
24
+ };
25
+ if (args.data)
26
+ tx.data = args.data;
27
+ if (args.value)
28
+ tx.value = BigInt(args.value);
29
+ if (args.nonce !== undefined)
30
+ tx.nonce = args.nonce;
31
+ if (args.gas)
32
+ tx.gas = BigInt(args.gas);
33
+ if (args.maxFeePerGas)
34
+ tx.maxFeePerGas = BigInt(args.maxFeePerGas);
35
+ if (args.maxPriorityFeePerGas)
36
+ tx.maxPriorityFeePerGas = BigInt(args.maxPriorityFeePerGas);
37
+ const signedTx = await ctx.signer.signTransaction(tx);
38
+ ctx.auditLogger.log({
39
+ service: 'agentic-vault-mcp',
40
+ action: 'sign_transaction',
41
+ who: 'mcp-client',
42
+ what: `Signed raw transaction to ${to} on chain ${args.chainId}`,
43
+ why: 'Raw transaction signing (unsafeRawSign enabled)',
44
+ result: 'approved',
45
+ details: { chainId: args.chainId, to },
46
+ });
47
+ return {
48
+ content: [{ type: 'text', text: signedTx }],
49
+ };
50
+ }
51
+ catch (error) {
52
+ ctx.auditLogger.log({
53
+ service: 'agentic-vault-mcp',
54
+ action: 'sign_transaction',
55
+ who: 'mcp-client',
56
+ what: `Failed to sign raw transaction to ${to}`,
57
+ why: 'Signing error',
58
+ result: 'error',
59
+ details: { error: error instanceof Error ? error.message : String(error) },
60
+ });
61
+ return {
62
+ content: [{ type: 'text', text: `Signing error: ${error instanceof Error ? error.message : String(error)}` }],
63
+ isError: true,
64
+ };
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=sign-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-transaction.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/sign-transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type ToolContext } from './shared.js';
3
+ export declare function registerSignTypedData(server: McpServer, ctx: ToolContext): void;
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ const inputSchema = {
3
+ domain: z.record(z.string(), z.unknown()).describe('The EIP-712 domain'),
4
+ types: z.record(z.string(), z.unknown()).describe('The EIP-712 types'),
5
+ primaryType: z.string().describe('The primary type name'),
6
+ message: z.record(z.string(), z.unknown()).describe('The EIP-712 message'),
7
+ };
8
+ export function registerSignTypedData(server, ctx) {
9
+ server.registerTool('sign_typed_data', {
10
+ description: '[UNSAFE] Sign raw EIP-712 typed data. Only available when unsafeRawSign is enabled.',
11
+ inputSchema,
12
+ }, async (args) => {
13
+ try {
14
+ const sig = await ctx.signer.signTypedData({
15
+ domain: args.domain,
16
+ types: args.types,
17
+ primaryType: args.primaryType,
18
+ message: args.message,
19
+ });
20
+ ctx.auditLogger.log({
21
+ service: 'agentic-vault-mcp',
22
+ action: 'sign_typed_data',
23
+ who: 'mcp-client',
24
+ what: `Signed typed data with primaryType ${args.primaryType}`,
25
+ why: 'Raw typed data signing (unsafeRawSign enabled)',
26
+ result: 'approved',
27
+ details: { primaryType: args.primaryType },
28
+ });
29
+ return {
30
+ content: [{ type: 'text', text: JSON.stringify(sig) }],
31
+ };
32
+ }
33
+ catch (error) {
34
+ ctx.auditLogger.log({
35
+ service: 'agentic-vault-mcp',
36
+ action: 'sign_typed_data',
37
+ who: 'mcp-client',
38
+ what: `Failed to sign typed data with primaryType ${args.primaryType}`,
39
+ why: 'Signing error',
40
+ result: 'error',
41
+ details: { error: error instanceof Error ? error.message : String(error) },
42
+ });
43
+ return {
44
+ content: [{ type: 'text', text: `Signing error: ${error instanceof Error ? error.message : String(error)}` }],
45
+ isError: true,
46
+ };
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=sign-typed-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-typed-data.js","sourceRoot":"","sources":["../../../../src/agentic/mcp/tools/sign-typed-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACzD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,GAAgB;IACvE,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACrC,WAAW,EAAE,qFAAqF;QAClG,WAAW;KACZ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;gBAClB,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,iBAAiB;gBACzB,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,sCAAsC,IAAI,CAAC,WAAW,EAAE;gBAC9D,GAAG,EAAE,gDAAgD;gBACrD,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;aAC3C,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;gBAClB,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,iBAAiB;gBACzB,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,8CAA8C,IAAI,CAAC,WAAW,EAAE;gBACtE,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC3E,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACtH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** @deprecated Use @agenticvault/agentic-vault/protocols instead */
2
+ export { PolicyEngine } from '../index.js';
@@ -0,0 +1,3 @@
1
+ /** @deprecated Use @agenticvault/agentic-vault/protocols instead */
2
+ export { PolicyEngine } from '../index.js';
3
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/agentic/policy/engine.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** @deprecated Use @agenticvault/agentic-vault/protocols instead */
2
+ export type { PolicyConfig, PolicyRequest, PolicyEvaluation, PolicyConfigV2, PolicyRequestV2, ProtocolPolicyConfig, ProtocolPolicyEvaluator, } from '../index.js';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agentic/policy/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare function runDecode(argv: string[]): Promise<void>;
@@ -0,0 +1,51 @@
1
+ import { ProtocolDispatcher, createDefaultRegistry } from '../../protocols/index.js';
2
+ import { parseOutputFormat, toJson, toHuman, resolveStdinFlag } from '../formatters.js';
3
+ export async function runDecode(argv) {
4
+ let chainId = 0;
5
+ let to = '';
6
+ let data = '';
7
+ const format = parseOutputFormat(argv);
8
+ for (let i = 0; i < argv.length; i++) {
9
+ switch (argv[i]) {
10
+ case '--chain-id':
11
+ chainId = Number(argv[++i]);
12
+ break;
13
+ case '--to':
14
+ to = argv[++i];
15
+ break;
16
+ case '--data':
17
+ data = argv[++i];
18
+ break;
19
+ }
20
+ }
21
+ if (!chainId || !to || !data) {
22
+ throw new Error('Usage: agentic-vault decode --chain-id <id> --to <address> --data <hex|->');
23
+ }
24
+ data = await resolveStdinFlag(data);
25
+ const dispatcher = new ProtocolDispatcher(createDefaultRegistry());
26
+ const intent = dispatcher.dispatch(chainId, to.toLowerCase(), data);
27
+ if (format === 'human') {
28
+ const flat = {
29
+ protocol: intent.protocol,
30
+ chainId: intent.chainId,
31
+ to: intent.to,
32
+ };
33
+ if (intent.protocol !== 'unknown') {
34
+ flat.action = intent.action;
35
+ for (const [k, v] of Object.entries(intent.args)) {
36
+ flat[`args.${k}`] = typeof v === 'bigint' ? v.toString() : v;
37
+ }
38
+ }
39
+ else {
40
+ flat.reason = intent.reason;
41
+ }
42
+ process.stdout.write(toHuman(flat, 'Decoded Intent') + '\n');
43
+ }
44
+ else if (format === 'raw') {
45
+ process.stdout.write(toJson(intent, false) + '\n');
46
+ }
47
+ else {
48
+ process.stdout.write(toJson(intent) + '\n');
49
+ }
50
+ }
51
+ //# sourceMappingURL=decode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../src/cli/commands/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,YAAY;gBAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACtD,KAAK,MAAM;gBAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM;YACnC,KAAK,QAAQ;gBAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM;QACzC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAChC,OAAO,EACP,EAAE,CAAC,WAAW,EAAmB,EACjC,IAAqB,CACtB,CAAC;IAEF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAA4B;YACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,EAAE,EAAE,MAAM,CAAC,EAAE;SACd,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type WorkflowContext } from '../../protocols/index.js';
2
+ export declare function runDryRun(ctx: WorkflowContext, argv: string[]): Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { signDefiCall } from '../../protocols/index.js';
2
+ import { parseOutputFormat, toJson, toHuman, resolveStdinFlag } from '../formatters.js';
3
+ export async function runDryRun(ctx, argv) {
4
+ let chainId = 0;
5
+ let to = '';
6
+ let data = '';
7
+ let value;
8
+ const format = parseOutputFormat(argv);
9
+ for (let i = 0; i < argv.length; i++) {
10
+ switch (argv[i]) {
11
+ case '--chain-id':
12
+ chainId = Number(argv[++i]);
13
+ break;
14
+ case '--to':
15
+ to = argv[++i];
16
+ break;
17
+ case '--data':
18
+ data = argv[++i];
19
+ break;
20
+ case '--value':
21
+ value = argv[++i];
22
+ break;
23
+ }
24
+ }
25
+ if (!chainId || !to || !data) {
26
+ throw new Error('Usage: agentic-vault dry-run --chain-id <id> --to <address> --data <hex|-> [--value <wei>]');
27
+ }
28
+ data = await resolveStdinFlag(data);
29
+ const result = await signDefiCall(ctx, 'dry-run', { chainId, to, data, value });
30
+ switch (result.status) {
31
+ case 'dry-run-approved':
32
+ if (format === 'human') {
33
+ const d = result.details;
34
+ process.stdout.write(toHuman(d, 'Dry Run Result') + '\n');
35
+ }
36
+ else if (format === 'raw') {
37
+ process.stdout.write(toJson(result.details, false) + '\n');
38
+ }
39
+ else {
40
+ process.stdout.write(toJson(result.details) + '\n');
41
+ }
42
+ break;
43
+ case 'denied':
44
+ process.stderr.write(result.reason + '\n');
45
+ process.exitCode = 1;
46
+ break;
47
+ case 'error':
48
+ process.stderr.write(result.reason + '\n');
49
+ process.exitCode = 1;
50
+ break;
51
+ default:
52
+ process.stderr.write('Unexpected result\n');
53
+ process.exitCode = 1;
54
+ }
55
+ }
56
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../src/cli/commands/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAoB,EAAE,IAAc;IAClE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAyB,CAAC;IAC9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,YAAY;gBAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACtD,KAAK,MAAM;gBAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM;YACnC,KAAK,QAAQ;gBAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM;YACvC,KAAK,SAAS;gBAAE,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IAED,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEhF,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,kBAAkB;YACrB,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAkC,CAAC;gBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM;QACR;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function runEncode(argv: string[]): Promise<void>;