@elizaos/plugin-steward-app 2.0.3-beta.5 → 2.0.3-beta.7

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 (219) hide show
  1. package/dist/ApprovalQueue.d.ts +18 -0
  2. package/dist/ApprovalQueue.d.ts.map +1 -0
  3. package/dist/ApprovalQueue.js +420 -0
  4. package/dist/ApprovalQueue.js.map +1 -0
  5. package/dist/StewardLogo.d.ts +11 -0
  6. package/dist/StewardLogo.d.ts.map +1 -0
  7. package/dist/StewardLogo.js +36 -0
  8. package/dist/StewardLogo.js.map +1 -0
  9. package/dist/StewardView.d.ts +13 -0
  10. package/dist/StewardView.d.ts.map +1 -0
  11. package/dist/StewardView.helpers.d.ts +15 -0
  12. package/dist/StewardView.helpers.d.ts.map +1 -0
  13. package/dist/StewardView.helpers.js +45 -0
  14. package/dist/StewardView.helpers.js.map +1 -0
  15. package/dist/StewardView.interact.d.ts +2 -0
  16. package/dist/StewardView.interact.d.ts.map +1 -0
  17. package/dist/StewardView.interact.js +54 -0
  18. package/dist/StewardView.interact.js.map +1 -0
  19. package/dist/StewardView.js +249 -0
  20. package/dist/StewardView.js.map +1 -0
  21. package/dist/TransactionHistory.d.ts +22 -0
  22. package/dist/TransactionHistory.d.ts.map +1 -0
  23. package/dist/TransactionHistory.js +361 -0
  24. package/dist/TransactionHistory.js.map +1 -0
  25. package/dist/__fixtures__/steward-sdk-fixtures.d.ts +10 -0
  26. package/dist/__fixtures__/steward-sdk-fixtures.d.ts.map +1 -0
  27. package/dist/__fixtures__/steward-sdk-fixtures.js +60 -0
  28. package/dist/__fixtures__/steward-sdk-fixtures.js.map +1 -0
  29. package/dist/actions/wallet-action-shared.d.ts +15 -0
  30. package/dist/actions/wallet-action-shared.d.ts.map +1 -0
  31. package/dist/actions/wallet-action-shared.js +16 -0
  32. package/dist/actions/wallet-action-shared.js.map +1 -0
  33. package/dist/api/binance-skill-helpers.d.ts +21 -0
  34. package/dist/api/binance-skill-helpers.d.ts.map +1 -0
  35. package/dist/api/binance-skill-helpers.js +790 -0
  36. package/dist/api/binance-skill-helpers.js.map +1 -0
  37. package/dist/api/bsc-trade.d.ts +36 -0
  38. package/dist/api/bsc-trade.d.ts.map +1 -0
  39. package/dist/api/bsc-trade.js +796 -0
  40. package/dist/api/bsc-trade.js.map +1 -0
  41. package/dist/api/trade-safety.d.ts +35 -0
  42. package/dist/api/trade-safety.d.ts.map +1 -0
  43. package/dist/api/trade-safety.js +56 -0
  44. package/dist/api/trade-safety.js.map +1 -0
  45. package/dist/api/tx-service.d.ts +53 -0
  46. package/dist/api/tx-service.d.ts.map +1 -0
  47. package/dist/api/tx-service.js +206 -0
  48. package/dist/api/tx-service.js.map +1 -0
  49. package/dist/api/wallet-bsc-routes.d.ts +63 -0
  50. package/dist/api/wallet-bsc-routes.d.ts.map +1 -0
  51. package/dist/api/wallet-bsc-routes.js +337 -0
  52. package/dist/api/wallet-bsc-routes.js.map +1 -0
  53. package/dist/api/wallet-capability.d.ts +2 -0
  54. package/dist/api/wallet-capability.d.ts.map +1 -0
  55. package/dist/api/wallet-capability.js +15 -0
  56. package/dist/api/wallet-capability.js.map +1 -0
  57. package/dist/api/wallet-dex-prices.d.ts +43 -0
  58. package/dist/api/wallet-dex-prices.d.ts.map +1 -0
  59. package/dist/api/wallet-dex-prices.js +132 -0
  60. package/dist/api/wallet-dex-prices.js.map +1 -0
  61. package/dist/api/wallet-evm-balance.d.ts +72 -0
  62. package/dist/api/wallet-evm-balance.d.ts.map +1 -0
  63. package/dist/api/wallet-evm-balance.js +697 -0
  64. package/dist/api/wallet-evm-balance.js.map +1 -0
  65. package/dist/api/wallet-routes.d.ts +27 -0
  66. package/dist/api/wallet-routes.d.ts.map +1 -0
  67. package/dist/api/wallet-routes.js +556 -0
  68. package/dist/api/wallet-routes.js.map +1 -0
  69. package/dist/api/wallet-rpc.d.ts +73 -0
  70. package/dist/api/wallet-rpc.d.ts.map +1 -0
  71. package/dist/api/wallet-rpc.js +460 -0
  72. package/dist/api/wallet-rpc.js.map +1 -0
  73. package/dist/api/wallet-trade-routes.d.ts +104 -0
  74. package/dist/api/wallet-trade-routes.d.ts.map +1 -0
  75. package/dist/api/wallet-trade-routes.js +353 -0
  76. package/dist/api/wallet-trade-routes.js.map +1 -0
  77. package/dist/api/wallet-trading-profile.d.ts +31 -0
  78. package/dist/api/wallet-trading-profile.d.ts.map +1 -0
  79. package/dist/api/wallet-trading-profile.js +500 -0
  80. package/dist/api/wallet-trading-profile.js.map +1 -0
  81. package/dist/api/wallet.d.ts +60 -0
  82. package/dist/api/wallet.d.ts.map +1 -0
  83. package/dist/api/wallet.js +617 -0
  84. package/dist/api/wallet.js.map +1 -0
  85. package/dist/chain-utils.d.ts +10 -0
  86. package/dist/chain-utils.d.ts.map +1 -0
  87. package/dist/chain-utils.js +81 -0
  88. package/dist/chain-utils.js.map +1 -0
  89. package/dist/components/StewardSpatialView.d.ts +74 -0
  90. package/dist/components/StewardSpatialView.d.ts.map +1 -0
  91. package/dist/components/StewardSpatialView.js +309 -0
  92. package/dist/components/StewardSpatialView.js.map +1 -0
  93. package/dist/index.d.ts +20 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +77 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/plugin.d.ts +21 -0
  98. package/dist/plugin.d.ts.map +1 -0
  99. package/dist/plugin.js +319 -0
  100. package/dist/plugin.js.map +1 -0
  101. package/dist/providers/steward-balance.d.ts +12 -0
  102. package/dist/providers/steward-balance.d.ts.map +1 -0
  103. package/dist/providers/steward-balance.js +85 -0
  104. package/dist/providers/steward-balance.js.map +1 -0
  105. package/dist/providers/steward-receive-address.d.ts +12 -0
  106. package/dist/providers/steward-receive-address.d.ts.map +1 -0
  107. package/dist/providers/steward-receive-address.js +47 -0
  108. package/dist/providers/steward-receive-address.js.map +1 -0
  109. package/dist/register-routes.d.ts +2 -0
  110. package/dist/register-routes.d.ts.map +1 -0
  111. package/dist/register-routes.js +6 -0
  112. package/dist/register-routes.js.map +1 -0
  113. package/dist/register-terminal-view.d.ts +15 -0
  114. package/dist/register-terminal-view.d.ts.map +1 -0
  115. package/dist/register-terminal-view.js +34 -0
  116. package/dist/register-terminal-view.js.map +1 -0
  117. package/dist/routes/steward-bridge.d.ts +202 -0
  118. package/dist/routes/steward-bridge.d.ts.map +1 -0
  119. package/dist/routes/steward-bridge.js +776 -0
  120. package/dist/routes/steward-bridge.js.map +1 -0
  121. package/dist/routes/steward-compat-routes.d.ts +21 -0
  122. package/dist/routes/steward-compat-routes.d.ts.map +1 -0
  123. package/dist/routes/steward-compat-routes.js +350 -0
  124. package/dist/routes/steward-compat-routes.js.map +1 -0
  125. package/dist/routes/wallet-browser-compat-routes.d.ts +6 -0
  126. package/dist/routes/wallet-browser-compat-routes.d.ts.map +1 -0
  127. package/dist/routes/wallet-browser-compat-routes.js +402 -0
  128. package/dist/routes/wallet-browser-compat-routes.js.map +1 -0
  129. package/dist/routes/wallet-bsc-core-routes.d.ts +15 -0
  130. package/dist/routes/wallet-bsc-core-routes.d.ts.map +1 -0
  131. package/dist/routes/wallet-bsc-core-routes.js +59 -0
  132. package/dist/routes/wallet-bsc-core-routes.js.map +1 -0
  133. package/dist/routes/wallet-compat-routes.d.ts +13 -0
  134. package/dist/routes/wallet-compat-routes.d.ts.map +1 -0
  135. package/dist/routes/wallet-compat-routes.js +206 -0
  136. package/dist/routes/wallet-compat-routes.js.map +1 -0
  137. package/dist/routes/wallet-core-routes.d.ts +16 -0
  138. package/dist/routes/wallet-core-routes.d.ts.map +1 -0
  139. package/dist/routes/wallet-core-routes.js +48 -0
  140. package/dist/routes/wallet-core-routes.js.map +1 -0
  141. package/dist/routes/wallet-trade-compat-routes.d.ts +11 -0
  142. package/dist/routes/wallet-trade-compat-routes.d.ts.map +1 -0
  143. package/dist/routes/wallet-trade-compat-routes.js +570 -0
  144. package/dist/routes/wallet-trade-compat-routes.js.map +1 -0
  145. package/dist/security/hydrate-wallet-keys-from-platform-store.d.ts +7 -0
  146. package/dist/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -0
  147. package/dist/security/hydrate-wallet-keys-from-platform-store.js +43 -0
  148. package/dist/security/hydrate-wallet-keys-from-platform-store.js.map +1 -0
  149. package/dist/security/wallet-os-store-actions.d.ts +14 -0
  150. package/dist/security/wallet-os-store-actions.d.ts.map +1 -0
  151. package/dist/security/wallet-os-store-actions.js +63 -0
  152. package/dist/security/wallet-os-store-actions.js.map +1 -0
  153. package/dist/services/steward-credentials.d.ts +2 -0
  154. package/dist/services/steward-credentials.d.ts.map +1 -0
  155. package/dist/services/steward-credentials.js +2 -0
  156. package/dist/services/steward-credentials.js.map +1 -0
  157. package/dist/services/steward-evm-account.d.ts +75 -0
  158. package/dist/services/steward-evm-account.d.ts.map +1 -0
  159. package/dist/services/steward-evm-account.js +279 -0
  160. package/dist/services/steward-evm-account.js.map +1 -0
  161. package/dist/services/steward-evm-bridge.d.ts +36 -0
  162. package/dist/services/steward-evm-bridge.d.ts.map +1 -0
  163. package/dist/services/steward-evm-bridge.js +78 -0
  164. package/dist/services/steward-evm-bridge.js.map +1 -0
  165. package/dist/services/steward-sidecar/health-check.d.ts +2 -0
  166. package/dist/services/steward-sidecar/health-check.d.ts.map +1 -0
  167. package/dist/services/steward-sidecar/health-check.js +2 -0
  168. package/dist/services/steward-sidecar/health-check.js.map +1 -0
  169. package/dist/services/steward-sidecar/helpers.d.ts +2 -0
  170. package/dist/services/steward-sidecar/helpers.d.ts.map +1 -0
  171. package/dist/services/steward-sidecar/helpers.js +2 -0
  172. package/dist/services/steward-sidecar/helpers.js.map +1 -0
  173. package/dist/services/steward-sidecar/process-management.d.ts +2 -0
  174. package/dist/services/steward-sidecar/process-management.d.ts.map +1 -0
  175. package/dist/services/steward-sidecar/process-management.js +2 -0
  176. package/dist/services/steward-sidecar/process-management.js.map +1 -0
  177. package/dist/services/steward-sidecar/types.d.ts +2 -0
  178. package/dist/services/steward-sidecar/types.d.ts.map +1 -0
  179. package/dist/services/steward-sidecar/types.js +2 -0
  180. package/dist/services/steward-sidecar/types.js.map +1 -0
  181. package/dist/services/steward-sidecar/wallet-setup.d.ts +2 -0
  182. package/dist/services/steward-sidecar/wallet-setup.d.ts.map +1 -0
  183. package/dist/services/steward-sidecar/wallet-setup.js +2 -0
  184. package/dist/services/steward-sidecar/wallet-setup.js.map +1 -0
  185. package/dist/services/steward-sidecar.d.ts +2 -0
  186. package/dist/services/steward-sidecar.d.ts.map +1 -0
  187. package/dist/services/steward-sidecar.js +2 -0
  188. package/dist/services/steward-sidecar.js.map +1 -0
  189. package/dist/services/steward-wallet.d.ts +25 -0
  190. package/dist/services/steward-wallet.d.ts.map +1 -0
  191. package/dist/services/steward-wallet.js +333 -0
  192. package/dist/services/steward-wallet.js.map +1 -0
  193. package/dist/steward-ui-state.d.ts +14 -0
  194. package/dist/steward-ui-state.d.ts.map +1 -0
  195. package/dist/steward-ui-state.js +46 -0
  196. package/dist/steward-ui-state.js.map +1 -0
  197. package/dist/steward-view-bundle.d.ts +3 -0
  198. package/dist/steward-view-bundle.d.ts.map +1 -0
  199. package/dist/steward-view-bundle.js +7 -0
  200. package/dist/steward-view-bundle.js.map +1 -0
  201. package/dist/types/bsc-trade.d.ts +180 -0
  202. package/dist/types/bsc-trade.d.ts.map +1 -0
  203. package/dist/types/bsc-trade.js +1 -0
  204. package/dist/types/bsc-trade.js.map +1 -0
  205. package/dist/types/index.d.ts +3 -0
  206. package/dist/types/index.d.ts.map +1 -0
  207. package/dist/types/index.js +3 -0
  208. package/dist/types/index.js.map +1 -0
  209. package/dist/types/steward.d.ts +83 -0
  210. package/dist/types/steward.d.ts.map +1 -0
  211. package/dist/types/steward.js +1 -0
  212. package/dist/types/steward.js.map +1 -0
  213. package/dist/ui.d.ts +7 -0
  214. package/dist/ui.d.ts.map +1 -0
  215. package/dist/ui.js +7 -0
  216. package/dist/ui.js.map +1 -0
  217. package/dist/views/bundle.js +601 -0
  218. package/dist/views/bundle.js.map +1 -0
  219. package/package.json +8 -8
@@ -0,0 +1,78 @@
1
+ import { setStewardEvmBridgeActive } from "@elizaos/agent";
2
+ import {
3
+ initStewardEvmAccount,
4
+ isStewardCloudProvisioned,
5
+ isStewardSigningReady
6
+ } from "./steward-evm-account.js";
7
+ const STEWARD_BOOTSTRAP_PRIVATE_KEY_SENTINEL = "0x0000000000000000000000000000000000000000000000000000000000000001";
8
+ let _stewardAccount = null;
9
+ let _initialized = false;
10
+ async function stewardEvmPreBoot(runtime) {
11
+ if (!isStewardSigningReady()) {
12
+ return;
13
+ }
14
+ console.log(
15
+ isStewardCloudProvisioned() ? "[StewardEvmBridge] Cloud-provisioned Steward detected" : "[StewardEvmBridge] Self-hosted Steward detected"
16
+ );
17
+ try {
18
+ _stewardAccount = await initStewardEvmAccount();
19
+ if (_stewardAccount) {
20
+ const existing = runtime.getSetting("EVM_PRIVATE_KEY");
21
+ if (!existing) {
22
+ runtime.setSetting(
23
+ "EVM_PRIVATE_KEY",
24
+ STEWARD_BOOTSTRAP_PRIVATE_KEY_SENTINEL
25
+ );
26
+ console.log("[StewardEvmBridge] Set reserved EVM_PRIVATE_KEY sentinel");
27
+ }
28
+ const addr = _stewardAccount.address;
29
+ if (addr && addr !== "0x0000000000000000000000000000000000000000") {
30
+ process.env.ELIZA_MANAGED_EVM_ADDRESS = addr;
31
+ console.log(`[StewardEvmBridge] Set ELIZA_MANAGED_EVM_ADDRESS=${addr}`);
32
+ }
33
+ _initialized = true;
34
+ setStewardEvmBridgeActive(true);
35
+ }
36
+ } catch (err) {
37
+ const msg = err instanceof Error ? err.message : String(err);
38
+ console.error(`[StewardEvmBridge] Pre-boot failed: ${msg}`);
39
+ console.warn("[StewardEvmBridge] Plugin-evm will use default key behavior");
40
+ }
41
+ }
42
+ async function stewardEvmPostBoot(runtime) {
43
+ if (!_initialized || !_stewardAccount) {
44
+ return;
45
+ }
46
+ try {
47
+ const evmService = runtime.getService("evm");
48
+ if (!evmService?.walletProvider) {
49
+ console.warn(
50
+ "[StewardEvmBridge] EVMService not found or no walletProvider \u2014 cannot inject Steward account"
51
+ );
52
+ return;
53
+ }
54
+ const wp = evmService.walletProvider;
55
+ const oldAddress = evmService.walletProvider.getAddress?.();
56
+ wp._account = _stewardAccount;
57
+ const newAddress = evmService.walletProvider.getAddress?.();
58
+ console.log(
59
+ `[StewardEvmBridge] \u2713 Replaced EVM account: ${oldAddress} \u2192 ${newAddress} (Steward-backed)`
60
+ );
61
+ } catch (err) {
62
+ const msg = err instanceof Error ? err.message : String(err);
63
+ console.error(`[StewardEvmBridge] Post-boot failed: ${msg}`);
64
+ }
65
+ }
66
+ function getStewardEvmAccount() {
67
+ return _stewardAccount;
68
+ }
69
+ function isStewardEvmBridgeActive() {
70
+ return _initialized && _stewardAccount !== null;
71
+ }
72
+ export {
73
+ getStewardEvmAccount,
74
+ isStewardEvmBridgeActive,
75
+ stewardEvmPostBoot,
76
+ stewardEvmPreBoot
77
+ };
78
+ //# sourceMappingURL=steward-evm-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/steward-evm-bridge.ts"],"sourcesContent":["/**\n * Steward EVM Bridge — intercepts plugin-wallet EVM initialization in cloud-provisioned\n * containers to route signing through Steward API instead of local private keys.\n *\n * Strategy:\n * 1. Before the runtime starts plugins, check if we're in cloud-provisioned mode\n * 2. If so, create a Steward viem Account\n * 3. Inject a reserved EVM_PRIVATE_KEY setting so initWalletProvider doesn't\n * generate a random key, then immediately replace the account on the\n * WalletProvider after EVMService starts\n *\n * This module exports a boot hook that should be called early in the runtime\n * initialization, before plugins are loaded.\n */\n\nimport { setStewardEvmBridgeActive } from \"@elizaos/agent\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n initStewardEvmAccount,\n isStewardCloudProvisioned,\n isStewardSigningReady,\n} from \"./steward-evm-account.js\";\n\n// Reserved private-key-shaped seed that satisfies plugin-wallet validation but is\n// replaced by the Steward account before signing. Its derived address must never\n// be funded; it exists only to prevent auto-generation/persistence of a random key.\nconst STEWARD_BOOTSTRAP_PRIVATE_KEY_SENTINEL =\n \"0x0000000000000000000000000000000000000000000000000000000000000001\";\n\n/** Stash the account globally so we can retrieve it in the post-start hook. */\nlet _stewardAccount: Awaited<ReturnType<typeof initStewardEvmAccount>> = null;\nlet _initialized = false;\n\n/**\n * Pre-boot hook: call before plugins are loaded.\n * Sets a reserved EVM_PRIVATE_KEY if in Steward mode so that initWalletProvider\n * does not auto-generate and persist a random key.\n */\nexport async function stewardEvmPreBoot(runtime: IAgentRuntime): Promise<void> {\n if (!isStewardSigningReady()) {\n return;\n }\n\n console.log(\n isStewardCloudProvisioned()\n ? \"[StewardEvmBridge] Cloud-provisioned Steward detected\"\n : \"[StewardEvmBridge] Self-hosted Steward detected\",\n );\n\n try {\n _stewardAccount = await initStewardEvmAccount();\n if (_stewardAccount) {\n // Set the reserved seed so initWalletProvider doesn't generate a random\n // key and doesn't try to persist it to the database.\n const existing = runtime.getSetting(\"EVM_PRIVATE_KEY\");\n if (!existing) {\n runtime.setSetting(\n \"EVM_PRIVATE_KEY\",\n STEWARD_BOOTSTRAP_PRIVATE_KEY_SENTINEL,\n );\n console.log(\"[StewardEvmBridge] Set reserved EVM_PRIVATE_KEY sentinel\");\n }\n // Expose the steward-managed address so getWalletAddresses() and\n // resolveWalletCapabilityStatus() can discover it synchronously,\n // even before initStewardWalletCache() runs.\n const addr = _stewardAccount.address;\n if (addr && addr !== \"0x0000000000000000000000000000000000000000\") {\n process.env.ELIZA_MANAGED_EVM_ADDRESS = addr;\n console.log(`[StewardEvmBridge] Set ELIZA_MANAGED_EVM_ADDRESS=${addr}`);\n }\n _initialized = true;\n setStewardEvmBridgeActive(true);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(`[StewardEvmBridge] Pre-boot failed: ${msg}`);\n console.warn(\"[StewardEvmBridge] Plugin-evm will use default key behavior\");\n }\n}\n\n/**\n * Post-boot hook: call after plugins have started.\n * Replaces the WalletProvider's account on the EVMService with the Steward account.\n */\nexport async function stewardEvmPostBoot(\n runtime: IAgentRuntime,\n): Promise<void> {\n if (!_initialized || !_stewardAccount) {\n return;\n }\n\n try {\n const evmService = runtime.getService(\"evm\") as {\n walletProvider?: {\n _account?: unknown;\n getAddress?: () => string;\n };\n } | null;\n\n if (!evmService?.walletProvider) {\n console.warn(\n \"[StewardEvmBridge] EVMService not found or no walletProvider — cannot inject Steward account\",\n );\n return;\n }\n\n // Replace the account on the WalletProvider instance.\n // WalletProvider stores the account as `this._account` (see initializeAccount).\n // TypeScript doesn't expose it, but it's a simple property assignment.\n const wp = evmService.walletProvider as Record<string, unknown>;\n const oldAddress = (\n evmService.walletProvider as { getAddress?: () => string }\n ).getAddress?.();\n wp._account = _stewardAccount;\n\n const newAddress = (\n evmService.walletProvider as { getAddress?: () => string }\n ).getAddress?.();\n console.log(\n `[StewardEvmBridge] ✓ Replaced EVM account: ${oldAddress} → ${newAddress} (Steward-backed)`,\n );\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(`[StewardEvmBridge] Post-boot failed: ${msg}`);\n }\n}\n\n/**\n * Get the Steward account if initialized (for use by other services).\n */\nexport function getStewardEvmAccount(): Awaited<\n ReturnType<typeof initStewardEvmAccount>\n> {\n return _stewardAccount;\n}\n\n/**\n * Check if Steward EVM bridge is active.\n */\nexport function isStewardEvmBridgeActive(): boolean {\n return _initialized && _stewardAccount !== null;\n}\n"],"mappings":"AAeA,SAAS,iCAAiC;AAE1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,MAAM,yCACJ;AAGF,IAAI,kBAAqE;AACzE,IAAI,eAAe;AAOnB,eAAsB,kBAAkB,SAAuC;AAC7E,MAAI,CAAC,sBAAsB,GAAG;AAC5B;AAAA,EACF;AAEA,UAAQ;AAAA,IACN,0BAA0B,IACtB,0DACA;AAAA,EACN;AAEA,MAAI;AACF,sBAAkB,MAAM,sBAAsB;AAC9C,QAAI,iBAAiB;AAGnB,YAAM,WAAW,QAAQ,WAAW,iBAAiB;AACrD,UAAI,CAAC,UAAU;AACb,gBAAQ;AAAA,UACN;AAAA,UACA;AAAA,QACF;AACA,gBAAQ,IAAI,0DAA0D;AAAA,MACxE;AAIA,YAAM,OAAO,gBAAgB;AAC7B,UAAI,QAAQ,SAAS,8CAA8C;AACjE,gBAAQ,IAAI,4BAA4B;AACxC,gBAAQ,IAAI,oDAAoD,IAAI,EAAE;AAAA,MACxE;AACA,qBAAe;AACf,gCAA0B,IAAI;AAAA,IAChC;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,YAAQ,MAAM,uCAAuC,GAAG,EAAE;AAC1D,YAAQ,KAAK,6DAA6D;AAAA,EAC5E;AACF;AAMA,eAAsB,mBACpB,SACe;AACf,MAAI,CAAC,gBAAgB,CAAC,iBAAiB;AACrC;AAAA,EACF;AAEA,MAAI;AACF,UAAM,aAAa,QAAQ,WAAW,KAAK;AAO3C,QAAI,CAAC,YAAY,gBAAgB;AAC/B,cAAQ;AAAA,QACN;AAAA,MACF;AACA;AAAA,IACF;AAKA,UAAM,KAAK,WAAW;AACtB,UAAM,aACJ,WAAW,eACX,aAAa;AACf,OAAG,WAAW;AAEd,UAAM,aACJ,WAAW,eACX,aAAa;AACf,YAAQ;AAAA,MACN,mDAA8C,UAAU,WAAM,UAAU;AAAA,IAC1E;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,YAAQ,MAAM,wCAAwC,GAAG,EAAE;AAAA,EAC7D;AACF;AAKO,SAAS,uBAEd;AACA,SAAO;AACT;AAKO,SAAS,2BAAoC;AAClD,SAAO,gBAAgB,oBAAoB;AAC7C;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=health-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../../src/services/steward-sidecar/health-check.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/steward-sidecar/health-check.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/services/steward-sidecar/helpers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/steward-sidecar/helpers.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=process-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-management.d.ts","sourceRoot":"","sources":["../../../src/services/steward-sidecar/process-management.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=process-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/steward-sidecar/process-management.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/steward-sidecar/types.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/steward-sidecar/types.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=wallet-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-setup.d.ts","sourceRoot":"","sources":["../../../src/services/steward-sidecar/wallet-setup.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=wallet-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/steward-sidecar/wallet-setup.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=steward-sidecar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steward-sidecar.d.ts","sourceRoot":"","sources":["../../src/services/steward-sidecar.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "@elizaos/app-core";
2
+ //# sourceMappingURL=steward-sidecar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/steward-sidecar.ts"],"sourcesContent":["export * from \"@elizaos/app-core\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,25 @@
1
+ import type { StewardApprovalActionResponse, StewardPendingApproval, StewardSignRequest, StewardSignResponse, StewardStatusResponse } from "../types/steward.js";
2
+ interface PersistedStewardCredentials {
3
+ apiUrl: string;
4
+ tenantId: string;
5
+ agentId: string;
6
+ apiKey: string;
7
+ agentToken: string;
8
+ walletAddresses?: {
9
+ evm?: string;
10
+ solana?: string;
11
+ };
12
+ agentName?: string;
13
+ }
14
+ interface EffectiveStewardConfig extends PersistedStewardCredentials {
15
+ }
16
+ export declare function resolveEffectiveStewardConfig(env?: NodeJS.ProcessEnv): EffectiveStewardConfig | null;
17
+ export declare function isStewardWalletConfigured(env?: NodeJS.ProcessEnv): boolean;
18
+ export declare function getStewardWalletUnavailableMessage(): string;
19
+ export declare function getStewardWalletStatus(env?: NodeJS.ProcessEnv): Promise<StewardStatusResponse>;
20
+ export declare function getStewardPendingApprovals(env?: NodeJS.ProcessEnv): Promise<StewardPendingApproval[]>;
21
+ export declare function approveStewardWalletRequest(txId: string, env?: NodeJS.ProcessEnv): Promise<StewardApprovalActionResponse>;
22
+ export declare function rejectStewardWalletRequest(txId: string, reason?: string, env?: NodeJS.ProcessEnv): Promise<StewardApprovalActionResponse>;
23
+ export declare function signWithStewardWallet(request: StewardSignRequest, env?: NodeJS.ProcessEnv): Promise<StewardSignResponse>;
24
+ export {};
25
+ //# sourceMappingURL=steward-wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steward-wallet.d.ts","sourceRoot":"","sources":["../../src/services/steward-wallet.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,6BAA6B,EAC7B,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAQ1B,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,sBAAuB,SAAQ,2BAA2B;CAAG;AA2CvE,wBAAgB,6BAA6B,CAC3C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,sBAAsB,GAAG,IAAI,CAsB/B;AAqBD,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAIT;AAED,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAgGD,wBAAsB,sBAAsB,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAwFhC;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA+BnC;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,6BAA6B,CAAC,CA+BxC;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,6BAA6B,CAAC,CAsBxC;AAuBD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,EAC3B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA4D9B"}
@@ -0,0 +1,333 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { resolveStateDir } from "@elizaos/core";
4
+ import { getWalletAddresses } from "../api/wallet.js";
5
+ const DEFAULT_TIMEOUT_MS = 12e3;
6
+ function resolveStewardCredentialsPath() {
7
+ return path.join(resolveStateDir(), "steward-credentials.json");
8
+ }
9
+ function normalizeEnvValue(value) {
10
+ if (typeof value !== "string") {
11
+ return null;
12
+ }
13
+ const trimmed = value.trim();
14
+ return trimmed.length > 0 ? trimmed : null;
15
+ }
16
+ function resolvePersistedStewardCredentials() {
17
+ const credentialsPath = resolveStewardCredentialsPath();
18
+ try {
19
+ if (!fs.existsSync(credentialsPath)) {
20
+ return null;
21
+ }
22
+ const parsed = JSON.parse(
23
+ fs.readFileSync(credentialsPath, "utf8")
24
+ );
25
+ if (!normalizeEnvValue(parsed.apiUrl)) {
26
+ return null;
27
+ }
28
+ return {
29
+ apiUrl: normalizeEnvValue(parsed.apiUrl) ?? "",
30
+ tenantId: normalizeEnvValue(parsed.tenantId) ?? "",
31
+ agentId: normalizeEnvValue(parsed.agentId) ?? "",
32
+ apiKey: normalizeEnvValue(parsed.apiKey) ?? "",
33
+ agentToken: normalizeEnvValue(parsed.agentToken) ?? "",
34
+ walletAddresses: parsed.walletAddresses && typeof parsed.walletAddresses === "object" && !Array.isArray(parsed.walletAddresses) ? parsed.walletAddresses : void 0,
35
+ agentName: normalizeEnvValue(parsed.agentName ?? void 0) ?? void 0
36
+ };
37
+ } catch {
38
+ return null;
39
+ }
40
+ }
41
+ function resolveEffectiveStewardConfig(env = process.env) {
42
+ const persisted = resolvePersistedStewardCredentials();
43
+ const apiUrl = normalizeEnvValue(env.STEWARD_API_URL) ?? persisted?.apiUrl;
44
+ if (!apiUrl) {
45
+ return null;
46
+ }
47
+ return {
48
+ apiUrl,
49
+ tenantId: normalizeEnvValue(env.STEWARD_TENANT_ID) ?? persisted?.tenantId ?? "",
50
+ agentId: normalizeEnvValue(env.STEWARD_AGENT_ID) ?? normalizeEnvValue(env.ELIZA_STEWARD_AGENT_ID) ?? persisted?.agentId ?? "",
51
+ apiKey: normalizeEnvValue(env.STEWARD_API_KEY) ?? persisted?.apiKey ?? "",
52
+ agentToken: normalizeEnvValue(env.STEWARD_AGENT_TOKEN) ?? persisted?.agentToken ?? "",
53
+ walletAddresses: persisted?.walletAddresses,
54
+ agentName: persisted?.agentName
55
+ };
56
+ }
57
+ function resolveStewardWalletAgentId(env = process.env) {
58
+ const config = resolveEffectiveStewardConfig(env);
59
+ const addresses = getWalletAddresses();
60
+ return normalizeEnvValue(env.STEWARD_AGENT_ID) ?? normalizeEnvValue(env.ELIZA_STEWARD_AGENT_ID) ?? normalizeEnvValue(config?.agentId) ?? normalizeEnvValue(addresses.evmAddress ?? void 0);
61
+ }
62
+ function resolveStewardWalletBaseUrl(env = process.env) {
63
+ return resolveEffectiveStewardConfig(env)?.apiUrl ?? null;
64
+ }
65
+ function isStewardWalletConfigured(env = process.env) {
66
+ return Boolean(
67
+ resolveStewardWalletBaseUrl(env) && resolveStewardWalletAgentId(env)
68
+ );
69
+ }
70
+ function getStewardWalletUnavailableMessage() {
71
+ return "Eliza agent wallet is unavailable. Configure Steward in Eliza wallet settings or set STEWARD_API_URL and Steward credentials.";
72
+ }
73
+ function buildStewardWalletHeaders(env = process.env) {
74
+ const config = resolveEffectiveStewardConfig(env);
75
+ const headers = new Headers();
76
+ headers.set("Accept", "application/json");
77
+ headers.set("Content-Type", "application/json");
78
+ const bearerToken = normalizeEnvValue(env.STEWARD_AGENT_TOKEN) ?? config?.agentToken ?? null;
79
+ const apiKey = normalizeEnvValue(env.STEWARD_API_KEY) ?? config?.apiKey ?? null;
80
+ const tenantId = normalizeEnvValue(env.STEWARD_TENANT_ID) ?? config?.tenantId ?? null;
81
+ if (bearerToken) {
82
+ headers.set("Authorization", `Bearer ${bearerToken}`);
83
+ } else if (apiKey) {
84
+ headers.set("X-Steward-Key", apiKey);
85
+ }
86
+ if (tenantId) {
87
+ headers.set("X-Steward-Tenant", tenantId);
88
+ }
89
+ return headers;
90
+ }
91
+ async function readErrorBody(response) {
92
+ try {
93
+ return (await response.text()).trim().slice(0, 240);
94
+ } catch {
95
+ return "";
96
+ }
97
+ }
98
+ async function requestStewardWallet(pathname, init, env = process.env) {
99
+ const baseUrl = resolveStewardWalletBaseUrl(env);
100
+ if (!baseUrl) {
101
+ throw new Error(getStewardWalletUnavailableMessage());
102
+ }
103
+ return fetch(`${baseUrl.replace(/\/{1,1024}$/, "")}${pathname}`, {
104
+ ...init,
105
+ headers: init?.headers ?? buildStewardWalletHeaders(env),
106
+ signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS)
107
+ });
108
+ }
109
+ function resolveWalletAddresses(_env, config, agentRecord) {
110
+ const localAddresses = getWalletAddresses();
111
+ const remoteWalletAddresses = agentRecord?.walletAddresses && typeof agentRecord.walletAddresses === "object" && !Array.isArray(agentRecord.walletAddresses) ? agentRecord.walletAddresses : null;
112
+ const remoteEvm = normalizeEnvValue(
113
+ typeof remoteWalletAddresses?.evm === "string" ? remoteWalletAddresses.evm : void 0
114
+ ) ?? normalizeEnvValue(
115
+ typeof agentRecord?.walletAddress === "string" ? agentRecord.walletAddress : void 0
116
+ );
117
+ const remoteSolana = normalizeEnvValue(
118
+ typeof remoteWalletAddresses?.solana === "string" ? remoteWalletAddresses.solana : void 0
119
+ );
120
+ return {
121
+ evm: localAddresses.evmAddress ?? remoteEvm ?? config?.walletAddresses?.evm?.trim() ?? null,
122
+ solana: localAddresses.solanaAddress ?? remoteSolana ?? config?.walletAddresses?.solana?.trim() ?? null
123
+ };
124
+ }
125
+ async function getStewardWalletStatus(env = process.env) {
126
+ const config = resolveEffectiveStewardConfig(env);
127
+ const agentId = resolveStewardWalletAgentId(env);
128
+ const localAddresses = getWalletAddresses();
129
+ const fallbackWalletAddresses = {
130
+ evm: localAddresses.evmAddress ?? config?.walletAddresses?.evm?.trim() ?? null,
131
+ solana: localAddresses.solanaAddress ?? config?.walletAddresses?.solana?.trim() ?? null
132
+ };
133
+ if (!config?.apiUrl || !agentId) {
134
+ return {
135
+ configured: false,
136
+ available: false,
137
+ connected: false,
138
+ baseUrl: config?.apiUrl ?? void 0,
139
+ agentId: agentId ?? void 0,
140
+ agentName: config?.agentName,
141
+ evmAddress: fallbackWalletAddresses.evm ?? void 0,
142
+ walletAddresses: fallbackWalletAddresses,
143
+ error: null
144
+ };
145
+ }
146
+ try {
147
+ const response = await requestStewardWallet(
148
+ `/agents/${encodeURIComponent(agentId)}`,
149
+ void 0,
150
+ env
151
+ );
152
+ if (!response.ok) {
153
+ const details = await readErrorBody(response);
154
+ return {
155
+ configured: true,
156
+ available: true,
157
+ connected: false,
158
+ baseUrl: config.apiUrl,
159
+ agentId,
160
+ agentName: config.agentName,
161
+ evmAddress: fallbackWalletAddresses.evm ?? void 0,
162
+ walletAddresses: fallbackWalletAddresses,
163
+ error: `Steward agent lookup failed (${response.status})${details ? `: ${details}` : ""}`
164
+ };
165
+ }
166
+ const body = await response.json().catch(() => ({}));
167
+ const agentRecord = body.data && typeof body.data === "object" && !Array.isArray(body.data) ? body.data : body;
168
+ const walletAddresses = resolveWalletAddresses(env, config, agentRecord);
169
+ return {
170
+ configured: true,
171
+ available: true,
172
+ connected: true,
173
+ baseUrl: config.apiUrl,
174
+ agentId,
175
+ agentName: normalizeEnvValue(
176
+ typeof agentRecord.name === "string" ? agentRecord.name : void 0
177
+ ) ?? config.agentName,
178
+ evmAddress: walletAddresses.evm ?? void 0,
179
+ walletAddresses,
180
+ error: null,
181
+ vaultHealth: "ok"
182
+ };
183
+ } catch (error) {
184
+ return {
185
+ configured: true,
186
+ available: true,
187
+ connected: false,
188
+ baseUrl: config.apiUrl,
189
+ agentId,
190
+ agentName: config.agentName,
191
+ evmAddress: fallbackWalletAddresses.evm ?? void 0,
192
+ walletAddresses: fallbackWalletAddresses,
193
+ error: error instanceof Error ? error.message : String(error),
194
+ vaultHealth: "error"
195
+ };
196
+ }
197
+ }
198
+ async function getStewardPendingApprovals(env = process.env) {
199
+ const agentId = resolveStewardWalletAgentId(env);
200
+ if (!agentId) {
201
+ throw new Error(getStewardWalletUnavailableMessage());
202
+ }
203
+ const response = await requestStewardWallet(
204
+ `/vault/${encodeURIComponent(agentId)}/pending`,
205
+ void 0,
206
+ env
207
+ );
208
+ if (response.status === 404) {
209
+ return [];
210
+ }
211
+ if (!response.ok) {
212
+ const details = await readErrorBody(response);
213
+ throw new Error(
214
+ `Steward pending approvals failed (${response.status})${details ? `: ${details}` : ""}`
215
+ );
216
+ }
217
+ const body = await response.json().catch(() => ({}));
218
+ const data = Array.isArray(body.data) ? body.data : Array.isArray(body) ? body : [];
219
+ return data;
220
+ }
221
+ async function approveStewardWalletRequest(txId, env = process.env) {
222
+ const agentId = resolveStewardWalletAgentId(env);
223
+ if (!agentId) {
224
+ throw new Error(getStewardWalletUnavailableMessage());
225
+ }
226
+ const response = await requestStewardWallet(
227
+ `/vault/${encodeURIComponent(agentId)}/approve/${encodeURIComponent(txId)}`,
228
+ { method: "POST" },
229
+ env
230
+ );
231
+ if (!response.ok) {
232
+ const details = await readErrorBody(response);
233
+ throw new Error(
234
+ `Steward approve failed (${response.status})${details ? `: ${details}` : ""}`
235
+ );
236
+ }
237
+ const body = await response.json().catch(() => ({}));
238
+ const payload = body.data && typeof body.data === "object" && !Array.isArray(body.data) ? body.data : body;
239
+ return {
240
+ ok: true,
241
+ txHash: typeof payload.txHash === "string" ? payload.txHash : void 0
242
+ };
243
+ }
244
+ async function rejectStewardWalletRequest(txId, reason, env = process.env) {
245
+ const agentId = resolveStewardWalletAgentId(env);
246
+ if (!agentId) {
247
+ throw new Error(getStewardWalletUnavailableMessage());
248
+ }
249
+ const response = await requestStewardWallet(
250
+ `/vault/${encodeURIComponent(agentId)}/reject/${encodeURIComponent(txId)}`,
251
+ {
252
+ method: "POST",
253
+ body: JSON.stringify(reason?.trim() ? { reason } : {})
254
+ },
255
+ env
256
+ );
257
+ if (!response.ok) {
258
+ const details = await readErrorBody(response);
259
+ throw new Error(
260
+ `Steward reject failed (${response.status})${details ? `: ${details}` : ""}`
261
+ );
262
+ }
263
+ return { ok: true };
264
+ }
265
+ function normalizeViolations(raw) {
266
+ if (!Array.isArray(raw)) {
267
+ return void 0;
268
+ }
269
+ return raw.filter(
270
+ (entry) => Boolean(entry) && typeof entry === "object" && typeof entry.policy === "string" && typeof entry.reason === "string"
271
+ ).map((entry) => ({
272
+ policy: entry.policy,
273
+ reason: entry.reason
274
+ }));
275
+ }
276
+ async function signWithStewardWallet(request, env = process.env) {
277
+ const agentId = resolveStewardWalletAgentId(env);
278
+ if (!agentId) {
279
+ throw new Error(getStewardWalletUnavailableMessage());
280
+ }
281
+ const response = await requestStewardWallet(
282
+ `/vault/${encodeURIComponent(agentId)}/sign`,
283
+ {
284
+ method: "POST",
285
+ body: JSON.stringify({
286
+ to: request.to,
287
+ value: request.value,
288
+ chainId: request.chainId,
289
+ data: request.data,
290
+ broadcast: request.broadcast ?? true,
291
+ description: request.description
292
+ })
293
+ },
294
+ env
295
+ );
296
+ const body = await response.json().catch(() => ({}));
297
+ const payload = body.data && typeof body.data === "object" && !Array.isArray(body.data) ? body.data : body;
298
+ if (response.ok && body.ok === true) {
299
+ return {
300
+ approved: true,
301
+ txHash: typeof payload.txHash === "string" ? payload.txHash : void 0
302
+ };
303
+ }
304
+ if (response.status === 202) {
305
+ return {
306
+ approved: false,
307
+ pending: true,
308
+ txId: typeof payload.txId === "string" ? payload.txId : void 0,
309
+ violations: normalizeViolations(payload.violations)
310
+ };
311
+ }
312
+ if (response.status === 403) {
313
+ return {
314
+ approved: false,
315
+ denied: true,
316
+ violations: normalizeViolations(payload.violations)
317
+ };
318
+ }
319
+ throw new Error(
320
+ typeof body.error === "string" ? body.error : `Steward sign failed (${response.status})`
321
+ );
322
+ }
323
+ export {
324
+ approveStewardWalletRequest,
325
+ getStewardPendingApprovals,
326
+ getStewardWalletStatus,
327
+ getStewardWalletUnavailableMessage,
328
+ isStewardWalletConfigured,
329
+ rejectStewardWalletRequest,
330
+ resolveEffectiveStewardConfig,
331
+ signWithStewardWallet
332
+ };
333
+ //# sourceMappingURL=steward-wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/steward-wallet.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { resolveStateDir } from \"@elizaos/core\";\nimport { getWalletAddresses } from \"../api/wallet.js\";\nimport type {\n StewardApprovalActionResponse,\n StewardPendingApproval,\n StewardSignRequest,\n StewardSignResponse,\n StewardStatusResponse,\n} from \"../types/steward.js\";\n\nconst DEFAULT_TIMEOUT_MS = 12_000;\n\nfunction resolveStewardCredentialsPath(): string {\n return path.join(resolveStateDir(), \"steward-credentials.json\");\n}\n\ninterface PersistedStewardCredentials {\n apiUrl: string;\n tenantId: string;\n agentId: string;\n apiKey: string;\n agentToken: string;\n walletAddresses?: {\n evm?: string;\n solana?: string;\n };\n agentName?: string;\n}\n\ninterface EffectiveStewardConfig extends PersistedStewardCredentials {}\n\nfunction normalizeEnvValue(value: string | undefined): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction resolvePersistedStewardCredentials(): PersistedStewardCredentials | null {\n const credentialsPath = resolveStewardCredentialsPath();\n try {\n if (!fs.existsSync(credentialsPath)) {\n return null;\n }\n\n const parsed = JSON.parse(\n fs.readFileSync(credentialsPath, \"utf8\"),\n ) as Partial<PersistedStewardCredentials>;\n if (!normalizeEnvValue(parsed.apiUrl)) {\n return null;\n }\n\n return {\n apiUrl: normalizeEnvValue(parsed.apiUrl) ?? \"\",\n tenantId: normalizeEnvValue(parsed.tenantId) ?? \"\",\n agentId: normalizeEnvValue(parsed.agentId) ?? \"\",\n apiKey: normalizeEnvValue(parsed.apiKey) ?? \"\",\n agentToken: normalizeEnvValue(parsed.agentToken) ?? \"\",\n walletAddresses:\n parsed.walletAddresses &&\n typeof parsed.walletAddresses === \"object\" &&\n !Array.isArray(parsed.walletAddresses)\n ? parsed.walletAddresses\n : undefined,\n agentName: normalizeEnvValue(parsed.agentName ?? undefined) ?? undefined,\n };\n } catch {\n return null;\n }\n}\n\nexport function resolveEffectiveStewardConfig(\n env: NodeJS.ProcessEnv = process.env,\n): EffectiveStewardConfig | null {\n const persisted = resolvePersistedStewardCredentials();\n const apiUrl = normalizeEnvValue(env.STEWARD_API_URL) ?? persisted?.apiUrl;\n if (!apiUrl) {\n return null;\n }\n\n return {\n apiUrl,\n tenantId:\n normalizeEnvValue(env.STEWARD_TENANT_ID) ?? persisted?.tenantId ?? \"\",\n agentId:\n normalizeEnvValue(env.STEWARD_AGENT_ID) ??\n normalizeEnvValue(env.ELIZA_STEWARD_AGENT_ID) ??\n persisted?.agentId ??\n \"\",\n apiKey: normalizeEnvValue(env.STEWARD_API_KEY) ?? persisted?.apiKey ?? \"\",\n agentToken:\n normalizeEnvValue(env.STEWARD_AGENT_TOKEN) ?? persisted?.agentToken ?? \"\",\n walletAddresses: persisted?.walletAddresses,\n agentName: persisted?.agentName,\n };\n}\n\nfunction resolveStewardWalletAgentId(\n env: NodeJS.ProcessEnv = process.env,\n): string | null {\n const config = resolveEffectiveStewardConfig(env);\n const addresses = getWalletAddresses();\n return (\n normalizeEnvValue(env.STEWARD_AGENT_ID) ??\n normalizeEnvValue(env.ELIZA_STEWARD_AGENT_ID) ??\n normalizeEnvValue(config?.agentId) ??\n normalizeEnvValue(addresses.evmAddress ?? undefined)\n );\n}\n\nfunction resolveStewardWalletBaseUrl(\n env: NodeJS.ProcessEnv = process.env,\n): string | null {\n return resolveEffectiveStewardConfig(env)?.apiUrl ?? null;\n}\n\nexport function isStewardWalletConfigured(\n env: NodeJS.ProcessEnv = process.env,\n): boolean {\n return Boolean(\n resolveStewardWalletBaseUrl(env) && resolveStewardWalletAgentId(env),\n );\n}\n\nexport function getStewardWalletUnavailableMessage(): string {\n return \"Eliza agent wallet is unavailable. Configure Steward in Eliza wallet settings or set STEWARD_API_URL and Steward credentials.\";\n}\n\nfunction buildStewardWalletHeaders(\n env: NodeJS.ProcessEnv = process.env,\n): Headers {\n const config = resolveEffectiveStewardConfig(env);\n const headers = new Headers();\n headers.set(\"Accept\", \"application/json\");\n headers.set(\"Content-Type\", \"application/json\");\n\n const bearerToken =\n normalizeEnvValue(env.STEWARD_AGENT_TOKEN) ?? config?.agentToken ?? null;\n const apiKey =\n normalizeEnvValue(env.STEWARD_API_KEY) ?? config?.apiKey ?? null;\n const tenantId =\n normalizeEnvValue(env.STEWARD_TENANT_ID) ?? config?.tenantId ?? null;\n\n if (bearerToken) {\n headers.set(\"Authorization\", `Bearer ${bearerToken}`);\n } else if (apiKey) {\n headers.set(\"X-Steward-Key\", apiKey);\n }\n if (tenantId) {\n headers.set(\"X-Steward-Tenant\", tenantId);\n }\n return headers;\n}\n\nasync function readErrorBody(response: Response): Promise<string> {\n try {\n return (await response.text()).trim().slice(0, 240);\n } catch {\n return \"\";\n }\n}\n\nasync function requestStewardWallet(\n pathname: string,\n init?: RequestInit,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<Response> {\n const baseUrl = resolveStewardWalletBaseUrl(env);\n if (!baseUrl) {\n throw new Error(getStewardWalletUnavailableMessage());\n }\n\n return fetch(`${baseUrl.replace(/\\/{1,1024}$/, \"\")}${pathname}`, {\n ...init,\n headers: init?.headers ?? buildStewardWalletHeaders(env),\n signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS),\n });\n}\n\nfunction resolveWalletAddresses(\n _env: NodeJS.ProcessEnv,\n config: EffectiveStewardConfig | null,\n agentRecord?: Record<string, unknown> | null,\n): { evm: string | null; solana: string | null } {\n const localAddresses = getWalletAddresses();\n const remoteWalletAddresses =\n agentRecord?.walletAddresses &&\n typeof agentRecord.walletAddresses === \"object\" &&\n !Array.isArray(agentRecord.walletAddresses)\n ? (agentRecord.walletAddresses as Record<string, unknown>)\n : null;\n const remoteEvm =\n normalizeEnvValue(\n typeof remoteWalletAddresses?.evm === \"string\"\n ? remoteWalletAddresses.evm\n : undefined,\n ) ??\n normalizeEnvValue(\n typeof agentRecord?.walletAddress === \"string\"\n ? agentRecord.walletAddress\n : undefined,\n );\n const remoteSolana = normalizeEnvValue(\n typeof remoteWalletAddresses?.solana === \"string\"\n ? remoteWalletAddresses.solana\n : undefined,\n );\n\n return {\n evm:\n localAddresses.evmAddress ??\n remoteEvm ??\n config?.walletAddresses?.evm?.trim() ??\n null,\n solana:\n localAddresses.solanaAddress ??\n remoteSolana ??\n config?.walletAddresses?.solana?.trim() ??\n null,\n };\n}\n\nexport async function getStewardWalletStatus(\n env: NodeJS.ProcessEnv = process.env,\n): Promise<StewardStatusResponse> {\n const config = resolveEffectiveStewardConfig(env);\n const agentId = resolveStewardWalletAgentId(env);\n const localAddresses = getWalletAddresses();\n const fallbackWalletAddresses = {\n evm:\n localAddresses.evmAddress ?? config?.walletAddresses?.evm?.trim() ?? null,\n solana:\n localAddresses.solanaAddress ??\n config?.walletAddresses?.solana?.trim() ??\n null,\n };\n\n if (!config?.apiUrl || !agentId) {\n return {\n configured: false,\n available: false,\n connected: false,\n baseUrl: config?.apiUrl ?? undefined,\n agentId: agentId ?? undefined,\n agentName: config?.agentName,\n evmAddress: fallbackWalletAddresses.evm ?? undefined,\n walletAddresses: fallbackWalletAddresses,\n error: null,\n };\n }\n\n try {\n const response = await requestStewardWallet(\n `/agents/${encodeURIComponent(agentId)}`,\n undefined,\n env,\n );\n\n if (!response.ok) {\n const details = await readErrorBody(response);\n return {\n configured: true,\n available: true,\n connected: false,\n baseUrl: config.apiUrl,\n agentId,\n agentName: config.agentName,\n evmAddress: fallbackWalletAddresses.evm ?? undefined,\n walletAddresses: fallbackWalletAddresses,\n error: `Steward agent lookup failed (${response.status})${details ? `: ${details}` : \"\"}`,\n };\n }\n\n const body = (await response.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n const agentRecord =\n body.data && typeof body.data === \"object\" && !Array.isArray(body.data)\n ? (body.data as Record<string, unknown>)\n : body;\n const walletAddresses = resolveWalletAddresses(env, config, agentRecord);\n\n return {\n configured: true,\n available: true,\n connected: true,\n baseUrl: config.apiUrl,\n agentId,\n agentName:\n normalizeEnvValue(\n typeof agentRecord.name === \"string\" ? agentRecord.name : undefined,\n ) ?? config.agentName,\n evmAddress: walletAddresses.evm ?? undefined,\n walletAddresses,\n error: null,\n vaultHealth: \"ok\",\n };\n } catch (error) {\n return {\n configured: true,\n available: true,\n connected: false,\n baseUrl: config.apiUrl,\n agentId,\n agentName: config.agentName,\n evmAddress: fallbackWalletAddresses.evm ?? undefined,\n walletAddresses: fallbackWalletAddresses,\n error: error instanceof Error ? error.message : String(error),\n vaultHealth: \"error\",\n };\n }\n}\n\nexport async function getStewardPendingApprovals(\n env: NodeJS.ProcessEnv = process.env,\n): Promise<StewardPendingApproval[]> {\n const agentId = resolveStewardWalletAgentId(env);\n if (!agentId) {\n throw new Error(getStewardWalletUnavailableMessage());\n }\n\n const response = await requestStewardWallet(\n `/vault/${encodeURIComponent(agentId)}/pending`,\n undefined,\n env,\n );\n if (response.status === 404) {\n return [];\n }\n if (!response.ok) {\n const details = await readErrorBody(response);\n throw new Error(\n `Steward pending approvals failed (${response.status})${details ? `: ${details}` : \"\"}`,\n );\n }\n\n const body = (await response.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n const data = Array.isArray(body.data)\n ? body.data\n : Array.isArray(body)\n ? body\n : [];\n return data as StewardPendingApproval[];\n}\n\nexport async function approveStewardWalletRequest(\n txId: string,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<StewardApprovalActionResponse> {\n const agentId = resolveStewardWalletAgentId(env);\n if (!agentId) {\n throw new Error(getStewardWalletUnavailableMessage());\n }\n\n const response = await requestStewardWallet(\n `/vault/${encodeURIComponent(agentId)}/approve/${encodeURIComponent(txId)}`,\n { method: \"POST\" },\n env,\n );\n if (!response.ok) {\n const details = await readErrorBody(response);\n throw new Error(\n `Steward approve failed (${response.status})${details ? `: ${details}` : \"\"}`,\n );\n }\n\n const body = (await response.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n const payload =\n body.data && typeof body.data === \"object\" && !Array.isArray(body.data)\n ? (body.data as Record<string, unknown>)\n : body;\n\n return {\n ok: true,\n txHash: typeof payload.txHash === \"string\" ? payload.txHash : undefined,\n };\n}\n\nexport async function rejectStewardWalletRequest(\n txId: string,\n reason?: string,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<StewardApprovalActionResponse> {\n const agentId = resolveStewardWalletAgentId(env);\n if (!agentId) {\n throw new Error(getStewardWalletUnavailableMessage());\n }\n\n const response = await requestStewardWallet(\n `/vault/${encodeURIComponent(agentId)}/reject/${encodeURIComponent(txId)}`,\n {\n method: \"POST\",\n body: JSON.stringify(reason?.trim() ? { reason } : {}),\n },\n env,\n );\n if (!response.ok) {\n const details = await readErrorBody(response);\n throw new Error(\n `Steward reject failed (${response.status})${details ? `: ${details}` : \"\"}`,\n );\n }\n\n return { ok: true };\n}\n\nfunction normalizeViolations(\n raw: unknown,\n): Array<{ policy: string; reason: string }> | undefined {\n if (!Array.isArray(raw)) {\n return undefined;\n }\n\n return raw\n .filter(\n (entry): entry is { policy: string; reason: string } =>\n Boolean(entry) &&\n typeof entry === \"object\" &&\n typeof (entry as Record<string, unknown>).policy === \"string\" &&\n typeof (entry as Record<string, unknown>).reason === \"string\",\n )\n .map((entry) => ({\n policy: entry.policy,\n reason: entry.reason,\n }));\n}\n\nexport async function signWithStewardWallet(\n request: StewardSignRequest,\n env: NodeJS.ProcessEnv = process.env,\n): Promise<StewardSignResponse> {\n const agentId = resolveStewardWalletAgentId(env);\n if (!agentId) {\n throw new Error(getStewardWalletUnavailableMessage());\n }\n\n const response = await requestStewardWallet(\n `/vault/${encodeURIComponent(agentId)}/sign`,\n {\n method: \"POST\",\n body: JSON.stringify({\n to: request.to,\n value: request.value,\n chainId: request.chainId,\n data: request.data,\n broadcast: request.broadcast ?? true,\n description: request.description,\n }),\n },\n env,\n );\n\n const body = (await response.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n const payload =\n body.data && typeof body.data === \"object\" && !Array.isArray(body.data)\n ? (body.data as Record<string, unknown>)\n : body;\n\n if (response.ok && body.ok === true) {\n return {\n approved: true,\n txHash: typeof payload.txHash === \"string\" ? payload.txHash : undefined,\n };\n }\n\n if (response.status === 202) {\n return {\n approved: false,\n pending: true,\n txId: typeof payload.txId === \"string\" ? payload.txId : undefined,\n violations: normalizeViolations(payload.violations),\n };\n }\n\n if (response.status === 403) {\n return {\n approved: false,\n denied: true,\n violations: normalizeViolations(payload.violations),\n };\n }\n\n throw new Error(\n typeof body.error === \"string\"\n ? body.error\n : `Steward sign failed (${response.status})`,\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,14 @@
1
+ import type { WalletConfigStatus, WalletEntry } from "@elizaos/core";
2
+ import type { StewardStatusResponse } from "./types/steward.js";
3
+ export interface StewardUiState {
4
+ connected: boolean;
5
+ showFeatures: boolean;
6
+ title: string;
7
+ description: string;
8
+ }
9
+ export declare function resolveStewardUiState(args: {
10
+ stewardStatus?: StewardStatusResponse | null;
11
+ walletConfig?: WalletConfigStatus | null;
12
+ wallets?: WalletEntry[] | null;
13
+ }): StewardUiState;
14
+ //# sourceMappingURL=steward-ui-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steward-ui-state.d.ts","sourceRoot":"","sources":["../src/steward-ui-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,aAAa,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;CAChC,GAAG,cAAc,CA4CjB"}