@elizaos/plugin-steward-app 2.0.3-beta.6 → 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,54 @@
1
+ import {
2
+ loadStewardTuiState,
3
+ postStewardJson,
4
+ stewardJson
5
+ } from "./StewardView.helpers.js";
6
+ async function interact(capability, params) {
7
+ if (capability === "terminal-steward-state") {
8
+ return { viewType: "tui", ...await loadStewardTuiState() };
9
+ }
10
+ if (capability === "terminal-steward-pending") {
11
+ return {
12
+ viewType: "tui",
13
+ pending: await stewardJson(
14
+ "/api/wallet/steward-pending-approvals"
15
+ )
16
+ };
17
+ }
18
+ if (capability === "terminal-steward-history") {
19
+ const status = typeof params?.status === "string" ? params.status : "";
20
+ const limit = typeof params?.limit === "number" ? params.limit : 50;
21
+ const offset = typeof params?.offset === "number" ? params.offset : 0;
22
+ const search = new URLSearchParams({
23
+ limit: String(limit),
24
+ offset: String(offset)
25
+ });
26
+ if (status) search.set("status", status);
27
+ return {
28
+ viewType: "tui",
29
+ history: await stewardJson(
30
+ `/api/wallet/steward-tx-records?${search}`
31
+ )
32
+ };
33
+ }
34
+ if (capability === "terminal-steward-approve" || capability === "terminal-steward-deny") {
35
+ const txId = typeof params?.txId === "string" ? params.txId.trim() : "";
36
+ if (!txId) throw new Error("txId is required");
37
+ const deny = capability === "terminal-steward-deny";
38
+ return {
39
+ viewType: "tui",
40
+ result: await postStewardJson(
41
+ deny ? "/api/wallet/steward-deny-tx" : "/api/wallet/steward-approve-tx",
42
+ {
43
+ txId,
44
+ reason: typeof params?.reason === "string" ? params.reason : void 0
45
+ }
46
+ )
47
+ };
48
+ }
49
+ throw new Error(`Unsupported capability "${capability}"`);
50
+ }
51
+ export {
52
+ interact
53
+ };
54
+ //# sourceMappingURL=StewardView.interact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/StewardView.interact.ts"],"sourcesContent":["// View-bundle `interact` capability handler, split out of StewardView.tsx so\n// that file exports only React components and stays Fast-Refresh-compatible\n// (Vite would full-reload a component file that also exports a plain function).\n// The view bundle re-exports `interact` via ./steward-view-bundle.ts.\nimport {\n loadStewardTuiState,\n postStewardJson,\n type StewardTxRecordsResponse,\n stewardJson,\n} from \"./StewardView.helpers\";\nimport type {\n StewardApprovalActionResponse,\n StewardPendingApproval,\n} from \"./types/steward.js\";\n\nexport async function interact(\n capability: string,\n params?: Record<string, unknown>,\n): Promise<unknown> {\n if (capability === \"terminal-steward-state\") {\n return { viewType: \"tui\", ...(await loadStewardTuiState()) };\n }\n\n if (capability === \"terminal-steward-pending\") {\n return {\n viewType: \"tui\",\n pending: await stewardJson<StewardPendingApproval[]>(\n \"/api/wallet/steward-pending-approvals\",\n ),\n };\n }\n\n if (capability === \"terminal-steward-history\") {\n const status = typeof params?.status === \"string\" ? params.status : \"\";\n const limit = typeof params?.limit === \"number\" ? params.limit : 50;\n const offset = typeof params?.offset === \"number\" ? params.offset : 0;\n const search = new URLSearchParams({\n limit: String(limit),\n offset: String(offset),\n });\n if (status) search.set(\"status\", status);\n return {\n viewType: \"tui\",\n history: await stewardJson<StewardTxRecordsResponse>(\n `/api/wallet/steward-tx-records?${search}`,\n ),\n };\n }\n\n if (\n capability === \"terminal-steward-approve\" ||\n capability === \"terminal-steward-deny\"\n ) {\n const txId = typeof params?.txId === \"string\" ? params.txId.trim() : \"\";\n if (!txId) throw new Error(\"txId is required\");\n const deny = capability === \"terminal-steward-deny\";\n return {\n viewType: \"tui\",\n result: await postStewardJson<StewardApprovalActionResponse>(\n deny ? \"/api/wallet/steward-deny-tx\" : \"/api/wallet/steward-approve-tx\",\n {\n txId,\n reason:\n typeof params?.reason === \"string\" ? params.reason : undefined,\n },\n ),\n };\n }\n\n throw new Error(`Unsupported capability \"${capability}\"`);\n}\n"],"mappings":"AAIA;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAMP,eAAsB,SACpB,YACA,QACkB;AAClB,MAAI,eAAe,0BAA0B;AAC3C,WAAO,EAAE,UAAU,OAAO,GAAI,MAAM,oBAAoB,EAAG;AAAA,EAC7D;AAEA,MAAI,eAAe,4BAA4B;AAC7C,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS,MAAM;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,eAAe,4BAA4B;AAC7C,UAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,OAAO,SAAS;AACpE,UAAM,QAAQ,OAAO,QAAQ,UAAU,WAAW,OAAO,QAAQ;AACjE,UAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,OAAO,SAAS;AACpE,UAAM,SAAS,IAAI,gBAAgB;AAAA,MACjC,OAAO,OAAO,KAAK;AAAA,MACnB,QAAQ,OAAO,MAAM;AAAA,IACvB,CAAC;AACD,QAAI,OAAQ,QAAO,IAAI,UAAU,MAAM;AACvC,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS,MAAM;AAAA,QACb,kCAAkC,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,MACE,eAAe,8BACf,eAAe,yBACf;AACA,UAAM,OAAO,OAAO,QAAQ,SAAS,WAAW,OAAO,KAAK,KAAK,IAAI;AACrE,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAC7C,UAAM,OAAO,eAAe;AAC5B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,QAAQ,MAAM;AAAA,QACZ,OAAO,gCAAgC;AAAA,QACvC;AAAA,UACE;AAAA,UACA,QACE,OAAO,QAAQ,WAAW,WAAW,OAAO,SAAS;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,IAAI,MAAM,2BAA2B,UAAU,GAAG;AAC1D;","names":[]}
@@ -0,0 +1,249 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useAppSelectorShallow } from "@elizaos/ui";
3
+ import { SpatialSurface } from "@elizaos/ui/spatial";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import {
6
+ StewardSpatialView,
7
+ toStewardApprovalRow,
8
+ toStewardHistoryRow
9
+ } from "./components/StewardSpatialView.js";
10
+ const PAGE_SIZE = 25;
11
+ const STATUS_CYCLE = [
12
+ null,
13
+ "pending",
14
+ "signed",
15
+ "broadcast",
16
+ "confirmed",
17
+ "rejected",
18
+ "failed"
19
+ ];
20
+ const CHAIN_CYCLE = [
21
+ null,
22
+ 1,
23
+ 8453,
24
+ 56,
25
+ 137,
26
+ 42161,
27
+ 101
28
+ ];
29
+ function nextInCycle(cycle, current) {
30
+ const idx = cycle.findIndex((value) => value === current);
31
+ return cycle[(idx + 1) % cycle.length];
32
+ }
33
+ function StewardView() {
34
+ const {
35
+ getStewardStatus,
36
+ getStewardHistory,
37
+ getStewardPending,
38
+ approveStewardTx,
39
+ rejectStewardTx,
40
+ copyToClipboard,
41
+ setActionNotice
42
+ } = useAppSelectorShallow((s) => ({
43
+ getStewardStatus: s.getStewardStatus,
44
+ getStewardHistory: s.getStewardHistory,
45
+ getStewardPending: s.getStewardPending,
46
+ approveStewardTx: s.approveStewardTx,
47
+ rejectStewardTx: s.rejectStewardTx,
48
+ copyToClipboard: s.copyToClipboard,
49
+ setActionNotice: s.setActionNotice
50
+ }));
51
+ const [tab, setTab] = useState("approvals");
52
+ const [status, setStatus] = useState(null);
53
+ const [pending, setPending] = useState([]);
54
+ const [history, setHistory] = useState([]);
55
+ const [statusFilter, setStatusFilter] = useState(null);
56
+ const [chainFilter, setChainFilter] = useState(null);
57
+ const [page, setPage] = useState(0);
58
+ const [loading, setLoading] = useState(false);
59
+ const [error, setError] = useState(null);
60
+ const prevCountRef = useRef(0);
61
+ const refresh = useCallback(async () => {
62
+ setLoading(true);
63
+ setError(null);
64
+ try {
65
+ const next = await getStewardStatus();
66
+ setStatus(next);
67
+ if (!next.connected) {
68
+ setPending([]);
69
+ setHistory([]);
70
+ return;
71
+ }
72
+ const [nextPending, historyResult] = await Promise.all([
73
+ getStewardPending(),
74
+ getStewardHistory({
75
+ status: statusFilter ?? void 0,
76
+ limit: 200,
77
+ offset: 0
78
+ })
79
+ ]);
80
+ const pendingList = Array.isArray(nextPending) ? nextPending : [];
81
+ const prevCount = prevCountRef.current;
82
+ if (pendingList.length > prevCount && prevCount > 0) {
83
+ const delta = pendingList.length - prevCount;
84
+ setActionNotice(
85
+ `${delta} new approval${delta > 1 ? "s" : ""} pending`,
86
+ "info",
87
+ 3e3
88
+ );
89
+ }
90
+ prevCountRef.current = pendingList.length;
91
+ setPending(pendingList);
92
+ setHistory(historyResult.records ?? []);
93
+ } catch (caught) {
94
+ setError(
95
+ caught instanceof Error ? caught.message : "Steward refresh failed"
96
+ );
97
+ } finally {
98
+ setLoading(false);
99
+ }
100
+ }, [
101
+ getStewardStatus,
102
+ getStewardPending,
103
+ getStewardHistory,
104
+ statusFilter,
105
+ setActionNotice
106
+ ]);
107
+ useEffect(() => {
108
+ void refresh();
109
+ const interval = setInterval(() => void refresh(), 2e4);
110
+ return () => clearInterval(interval);
111
+ }, [refresh]);
112
+ const handleApprove = useCallback(
113
+ async (queueId) => {
114
+ const entry = pending.find((item) => item.queueId === queueId);
115
+ const txId = entry?.transaction.id;
116
+ if (!txId) return;
117
+ try {
118
+ const result = await approveStewardTx(txId);
119
+ if (result.ok !== false) {
120
+ setActionNotice("Transaction approved", "success", 3e3);
121
+ setPending(
122
+ (prev) => prev.filter((item) => item.queueId !== queueId)
123
+ );
124
+ prevCountRef.current = Math.max(0, prevCountRef.current - 1);
125
+ } else {
126
+ setActionNotice(result.error ?? "Approval failed", "error", 4e3);
127
+ }
128
+ } catch (caught) {
129
+ setActionNotice(
130
+ caught instanceof Error ? caught.message : "Approval failed",
131
+ "error",
132
+ 4e3
133
+ );
134
+ }
135
+ },
136
+ [pending, approveStewardTx, setActionNotice]
137
+ );
138
+ const handleReject = useCallback(
139
+ async (queueId) => {
140
+ const entry = pending.find((item) => item.queueId === queueId);
141
+ const txId = entry?.transaction.id;
142
+ if (!txId) return;
143
+ try {
144
+ const result = await rejectStewardTx(txId);
145
+ if (result.ok !== false) {
146
+ setActionNotice("Transaction rejected", "info", 3e3);
147
+ setPending(
148
+ (prev) => prev.filter((item) => item.queueId !== queueId)
149
+ );
150
+ prevCountRef.current = Math.max(0, prevCountRef.current - 1);
151
+ } else {
152
+ setActionNotice(result.error ?? "Rejection failed", "error", 4e3);
153
+ }
154
+ } catch (caught) {
155
+ setActionNotice(
156
+ caught instanceof Error ? caught.message : "Rejection failed",
157
+ "error",
158
+ 4e3
159
+ );
160
+ }
161
+ },
162
+ [pending, rejectStewardTx, setActionNotice]
163
+ );
164
+ const handleCopy = useCallback(
165
+ async (value) => {
166
+ if (!value) return;
167
+ await copyToClipboard(value);
168
+ setActionNotice("Address copied", "success", 2e3);
169
+ },
170
+ [copyToClipboard, setActionNotice]
171
+ );
172
+ const onAction = useCallback(
173
+ (action) => {
174
+ if (action.startsWith("approve:")) {
175
+ void handleApprove(action.slice("approve:".length));
176
+ return;
177
+ }
178
+ if (action.startsWith("reject:")) {
179
+ void handleReject(action.slice("reject:".length));
180
+ return;
181
+ }
182
+ if (action.startsWith("copy:")) {
183
+ void handleCopy(action.slice("copy:".length));
184
+ return;
185
+ }
186
+ switch (action) {
187
+ case "tab:approvals":
188
+ setTab("approvals");
189
+ return;
190
+ case "tab:history":
191
+ setTab("history");
192
+ return;
193
+ case "refresh":
194
+ void refresh();
195
+ return;
196
+ case "filter-status":
197
+ setStatusFilter((current) => nextInCycle(STATUS_CYCLE, current));
198
+ setPage(0);
199
+ return;
200
+ case "filter-chain":
201
+ setChainFilter((current) => nextInCycle(CHAIN_CYCLE, current));
202
+ setPage(0);
203
+ return;
204
+ case "page-prev":
205
+ setPage((p) => Math.max(0, p - 1));
206
+ return;
207
+ case "page-next":
208
+ setPage((p) => p + 1);
209
+ return;
210
+ }
211
+ },
212
+ [handleApprove, handleReject, handleCopy, refresh]
213
+ );
214
+ const filteredHistory = useMemo(() => {
215
+ const rows = history.filter(
216
+ (tx) => chainFilter === null || tx.request.chainId === chainFilter
217
+ ).map(toStewardHistoryRow).sort(
218
+ (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()
219
+ );
220
+ return rows;
221
+ }, [history, chainFilter]);
222
+ const pageCount = Math.max(1, Math.ceil(filteredHistory.length / PAGE_SIZE));
223
+ const clampedPage = Math.min(page, pageCount - 1);
224
+ const pageRows = filteredHistory.slice(
225
+ clampedPage * PAGE_SIZE,
226
+ (clampedPage + 1) * PAGE_SIZE
227
+ );
228
+ const snapshot = {
229
+ tab,
230
+ connected: status?.connected ?? false,
231
+ configured: status?.configured ?? false,
232
+ available: status?.available ?? false,
233
+ evmAddress: status?.evmAddress ?? null,
234
+ pendingApprovals: pending.map(toStewardApprovalRow),
235
+ history: pageRows,
236
+ historyTotal: filteredHistory.length,
237
+ statusFilter,
238
+ chainFilter,
239
+ page: clampedPage,
240
+ pageSize: PAGE_SIZE,
241
+ loading,
242
+ error: error ?? status?.error ?? null
243
+ };
244
+ return /* @__PURE__ */ jsx(SpatialSurface, { children: /* @__PURE__ */ jsx(StewardSpatialView, { snapshot, onAction }) });
245
+ }
246
+ export {
247
+ StewardView
248
+ };
249
+ //# sourceMappingURL=StewardView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/StewardView.tsx"],"sourcesContent":["/**\n * StewardView — the single GUI/XR data wrapper for the Steward surface.\n *\n * It owns the live vault data (status, pending approvals, transaction history)\n * read through the app store accessors, builds one {@link StewardSnapshot}, and\n * renders the one presentational {@link StewardSpatialView} inside a\n * {@link SpatialSurface}. Omitting the `modality` prop lets `SpatialSurface`\n * auto-detect GUI vs XR via `window.__elizaXRContext`, so the SAME component\n * serves both surfaces. The TUI surface renders the same `StewardSpatialView`\n * through the terminal registry (see `register-terminal-view.tsx`).\n */\n\nimport { useAppSelectorShallow } from \"@elizaos/ui\";\nimport { SpatialSurface } from \"@elizaos/ui/spatial\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n type StewardHistoryRow,\n StewardSpatialView,\n type StewardSnapshot,\n toStewardApprovalRow,\n toStewardHistoryRow,\n} from \"./components/StewardSpatialView.js\";\nimport type {\n StewardApprovalActionResponse,\n StewardPendingApproval,\n StewardStatusResponse,\n StewardTxRecord,\n} from \"./types/steward.js\";\n\ntype StewardTab = \"approvals\" | \"history\";\n\nconst PAGE_SIZE = 25;\n\n/** Status filter cycle for the history tab (null = all). */\nconst STATUS_CYCLE: Array<string | null> = [\n null,\n \"pending\",\n \"signed\",\n \"broadcast\",\n \"confirmed\",\n \"rejected\",\n \"failed\",\n];\n\n/** Chain filter cycle for the history tab (null = all). */\nconst CHAIN_CYCLE: Array<number | null> = [\n null,\n 1,\n 8453,\n 56,\n 137,\n 42161,\n 101,\n];\n\nfunction nextInCycle<T>(cycle: T[], current: T): T {\n const idx = cycle.findIndex((value) => value === current);\n return cycle[(idx + 1) % cycle.length];\n}\n\ninterface StewardStore {\n getStewardStatus: () => Promise<StewardStatusResponse>;\n getStewardHistory: (opts?: {\n status?: string;\n limit?: number;\n offset?: number;\n }) => Promise<{\n records: StewardTxRecord[];\n total: number;\n offset: number;\n limit: number;\n }>;\n getStewardPending: () => Promise<StewardPendingApproval[]>;\n approveStewardTx: (txId: string) => Promise<StewardApprovalActionResponse>;\n rejectStewardTx: (\n txId: string,\n reason?: string,\n ) => Promise<StewardApprovalActionResponse>;\n copyToClipboard: (text: string) => Promise<void>;\n setActionNotice: (\n text: string,\n tone?: \"info\" | \"success\" | \"error\",\n ttlMs?: number,\n ) => void;\n}\n\nexport function StewardView() {\n const {\n getStewardStatus,\n getStewardHistory,\n getStewardPending,\n approveStewardTx,\n rejectStewardTx,\n copyToClipboard,\n setActionNotice,\n } = useAppSelectorShallow((s: StewardStore) => ({\n getStewardStatus: s.getStewardStatus,\n getStewardHistory: s.getStewardHistory,\n getStewardPending: s.getStewardPending,\n approveStewardTx: s.approveStewardTx,\n rejectStewardTx: s.rejectStewardTx,\n copyToClipboard: s.copyToClipboard,\n setActionNotice: s.setActionNotice,\n }));\n\n const [tab, setTab] = useState<StewardTab>(\"approvals\");\n const [status, setStatus] = useState<StewardStatusResponse | null>(null);\n const [pending, setPending] = useState<StewardPendingApproval[]>([]);\n const [history, setHistory] = useState<StewardTxRecord[]>([]);\n const [statusFilter, setStatusFilter] = useState<string | null>(null);\n const [chainFilter, setChainFilter] = useState<number | null>(null);\n const [page, setPage] = useState(0);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const prevCountRef = useRef(0);\n\n const refresh = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const next = await getStewardStatus();\n setStatus(next);\n if (!next.connected) {\n setPending([]);\n setHistory([]);\n return;\n }\n const [nextPending, historyResult] = await Promise.all([\n getStewardPending(),\n getStewardHistory({\n status: statusFilter ?? undefined,\n limit: 200,\n offset: 0,\n }),\n ]);\n const pendingList = Array.isArray(nextPending) ? nextPending : [];\n const prevCount = prevCountRef.current;\n if (pendingList.length > prevCount && prevCount > 0) {\n const delta = pendingList.length - prevCount;\n setActionNotice(\n `${delta} new approval${delta > 1 ? \"s\" : \"\"} pending`,\n \"info\",\n 3000,\n );\n }\n prevCountRef.current = pendingList.length;\n setPending(pendingList);\n setHistory(historyResult.records ?? []);\n } catch (caught) {\n setError(\n caught instanceof Error ? caught.message : \"Steward refresh failed\",\n );\n } finally {\n setLoading(false);\n }\n }, [\n getStewardStatus,\n getStewardPending,\n getStewardHistory,\n statusFilter,\n setActionNotice,\n ]);\n\n // Initial load + a quiet 20s poll, torn down on unmount.\n useEffect(() => {\n void refresh();\n const interval = setInterval(() => void refresh(), 20_000);\n return () => clearInterval(interval);\n }, [refresh]);\n\n const handleApprove = useCallback(\n async (queueId: string) => {\n const entry = pending.find((item) => item.queueId === queueId);\n const txId = entry?.transaction.id;\n if (!txId) return;\n try {\n const result = await approveStewardTx(txId);\n if (result.ok !== false) {\n setActionNotice(\"Transaction approved\", \"success\", 3000);\n setPending((prev) =>\n prev.filter((item) => item.queueId !== queueId),\n );\n prevCountRef.current = Math.max(0, prevCountRef.current - 1);\n } else {\n setActionNotice(result.error ?? \"Approval failed\", \"error\", 4000);\n }\n } catch (caught) {\n setActionNotice(\n caught instanceof Error ? caught.message : \"Approval failed\",\n \"error\",\n 4000,\n );\n }\n },\n [pending, approveStewardTx, setActionNotice],\n );\n\n const handleReject = useCallback(\n async (queueId: string) => {\n const entry = pending.find((item) => item.queueId === queueId);\n const txId = entry?.transaction.id;\n if (!txId) return;\n try {\n const result = await rejectStewardTx(txId);\n if (result.ok !== false) {\n setActionNotice(\"Transaction rejected\", \"info\", 3000);\n setPending((prev) =>\n prev.filter((item) => item.queueId !== queueId),\n );\n prevCountRef.current = Math.max(0, prevCountRef.current - 1);\n } else {\n setActionNotice(result.error ?? \"Rejection failed\", \"error\", 4000);\n }\n } catch (caught) {\n setActionNotice(\n caught instanceof Error ? caught.message : \"Rejection failed\",\n \"error\",\n 4000,\n );\n }\n },\n [pending, rejectStewardTx, setActionNotice],\n );\n\n const handleCopy = useCallback(\n async (value: string) => {\n if (!value) return;\n await copyToClipboard(value);\n setActionNotice(\"Address copied\", \"success\", 2000);\n },\n [copyToClipboard, setActionNotice],\n );\n\n const onAction = useCallback(\n (action: string) => {\n if (action.startsWith(\"approve:\")) {\n void handleApprove(action.slice(\"approve:\".length));\n return;\n }\n if (action.startsWith(\"reject:\")) {\n void handleReject(action.slice(\"reject:\".length));\n return;\n }\n if (action.startsWith(\"copy:\")) {\n void handleCopy(action.slice(\"copy:\".length));\n return;\n }\n switch (action) {\n case \"tab:approvals\":\n setTab(\"approvals\");\n return;\n case \"tab:history\":\n setTab(\"history\");\n return;\n case \"refresh\":\n void refresh();\n return;\n case \"filter-status\":\n setStatusFilter((current) => nextInCycle(STATUS_CYCLE, current));\n setPage(0);\n return;\n case \"filter-chain\":\n setChainFilter((current) => nextInCycle(CHAIN_CYCLE, current));\n setPage(0);\n return;\n case \"page-prev\":\n setPage((p) => Math.max(0, p - 1));\n return;\n case \"page-next\":\n setPage((p) => p + 1);\n return;\n }\n },\n [handleApprove, handleReject, handleCopy, refresh],\n );\n\n // Client-side chain filter + newest-first sort, then paginate.\n const filteredHistory = useMemo(() => {\n const rows: StewardHistoryRow[] = history\n .filter(\n (tx) => chainFilter === null || tx.request.chainId === chainFilter,\n )\n .map(toStewardHistoryRow)\n .sort(\n (a, b) =>\n new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n );\n return rows;\n }, [history, chainFilter]);\n\n const pageCount = Math.max(1, Math.ceil(filteredHistory.length / PAGE_SIZE));\n const clampedPage = Math.min(page, pageCount - 1);\n const pageRows = filteredHistory.slice(\n clampedPage * PAGE_SIZE,\n (clampedPage + 1) * PAGE_SIZE,\n );\n\n const snapshot: StewardSnapshot = {\n tab,\n connected: status?.connected ?? false,\n configured: status?.configured ?? false,\n available: status?.available ?? false,\n evmAddress: status?.evmAddress ?? null,\n pendingApprovals: pending.map(toStewardApprovalRow),\n history: pageRows,\n historyTotal: filteredHistory.length,\n statusFilter,\n chainFilter,\n page: clampedPage,\n pageSize: PAGE_SIZE,\n loading,\n error: error ?? status?.error ?? null,\n };\n\n return (\n <SpatialSurface>\n <StewardSpatialView snapshot={snapshot} onAction={onAction} />\n </SpatialSurface>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Transaction history table — lists all transactions for the agent from Steward vault.
3
+ */
4
+ import type { StewardTxRecord } from "./types/steward.js";
5
+ interface TransactionHistoryProps {
6
+ getStewardHistory: (opts?: {
7
+ status?: string;
8
+ limit?: number;
9
+ offset?: number;
10
+ }) => Promise<{
11
+ records: StewardTxRecord[];
12
+ total: number;
13
+ offset: number;
14
+ limit: number;
15
+ }>;
16
+ copyToClipboard: (text: string) => Promise<void>;
17
+ setActionNotice: (text: string, tone?: "info" | "success" | "error", ttlMs?: number) => void;
18
+ embedded?: boolean;
19
+ }
20
+ export declare function TransactionHistory({ getStewardHistory, copyToClipboard, setActionNotice, embedded, }: TransactionHistoryProps): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=TransactionHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionHistory.d.ts","sourceRoot":"","sources":["../src/TransactionHistory.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,iBAAiB,CAAC;AAExE,UAAU,uBAAuB;IAC/B,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,OAAO,CAAC;QACZ,OAAO,EAAE,eAAe,EAAE,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwFD,wBAAgB,kBAAkB,CAAC,EACjC,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,QAAgB,GACjB,EAAE,uBAAuB,2CAsSzB"}