@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.
- package/dist/ApprovalQueue.d.ts +18 -0
- package/dist/ApprovalQueue.d.ts.map +1 -0
- package/dist/ApprovalQueue.js +420 -0
- package/dist/ApprovalQueue.js.map +1 -0
- package/dist/StewardLogo.d.ts +11 -0
- package/dist/StewardLogo.d.ts.map +1 -0
- package/dist/StewardLogo.js +36 -0
- package/dist/StewardLogo.js.map +1 -0
- package/dist/StewardView.d.ts +13 -0
- package/dist/StewardView.d.ts.map +1 -0
- package/dist/StewardView.helpers.d.ts +15 -0
- package/dist/StewardView.helpers.d.ts.map +1 -0
- package/dist/StewardView.helpers.js +45 -0
- package/dist/StewardView.helpers.js.map +1 -0
- package/dist/StewardView.interact.d.ts +2 -0
- package/dist/StewardView.interact.d.ts.map +1 -0
- package/dist/StewardView.interact.js +54 -0
- package/dist/StewardView.interact.js.map +1 -0
- package/dist/StewardView.js +249 -0
- package/dist/StewardView.js.map +1 -0
- package/dist/TransactionHistory.d.ts +22 -0
- package/dist/TransactionHistory.d.ts.map +1 -0
- package/dist/TransactionHistory.js +361 -0
- package/dist/TransactionHistory.js.map +1 -0
- package/dist/__fixtures__/steward-sdk-fixtures.d.ts +10 -0
- package/dist/__fixtures__/steward-sdk-fixtures.d.ts.map +1 -0
- package/dist/__fixtures__/steward-sdk-fixtures.js +60 -0
- package/dist/__fixtures__/steward-sdk-fixtures.js.map +1 -0
- package/dist/actions/wallet-action-shared.d.ts +15 -0
- package/dist/actions/wallet-action-shared.d.ts.map +1 -0
- package/dist/actions/wallet-action-shared.js +16 -0
- package/dist/actions/wallet-action-shared.js.map +1 -0
- package/dist/api/binance-skill-helpers.d.ts +21 -0
- package/dist/api/binance-skill-helpers.d.ts.map +1 -0
- package/dist/api/binance-skill-helpers.js +790 -0
- package/dist/api/binance-skill-helpers.js.map +1 -0
- package/dist/api/bsc-trade.d.ts +36 -0
- package/dist/api/bsc-trade.d.ts.map +1 -0
- package/dist/api/bsc-trade.js +796 -0
- package/dist/api/bsc-trade.js.map +1 -0
- package/dist/api/trade-safety.d.ts +35 -0
- package/dist/api/trade-safety.d.ts.map +1 -0
- package/dist/api/trade-safety.js +56 -0
- package/dist/api/trade-safety.js.map +1 -0
- package/dist/api/tx-service.d.ts +53 -0
- package/dist/api/tx-service.d.ts.map +1 -0
- package/dist/api/tx-service.js +206 -0
- package/dist/api/tx-service.js.map +1 -0
- package/dist/api/wallet-bsc-routes.d.ts +63 -0
- package/dist/api/wallet-bsc-routes.d.ts.map +1 -0
- package/dist/api/wallet-bsc-routes.js +337 -0
- package/dist/api/wallet-bsc-routes.js.map +1 -0
- package/dist/api/wallet-capability.d.ts +2 -0
- package/dist/api/wallet-capability.d.ts.map +1 -0
- package/dist/api/wallet-capability.js +15 -0
- package/dist/api/wallet-capability.js.map +1 -0
- package/dist/api/wallet-dex-prices.d.ts +43 -0
- package/dist/api/wallet-dex-prices.d.ts.map +1 -0
- package/dist/api/wallet-dex-prices.js +132 -0
- package/dist/api/wallet-dex-prices.js.map +1 -0
- package/dist/api/wallet-evm-balance.d.ts +72 -0
- package/dist/api/wallet-evm-balance.d.ts.map +1 -0
- package/dist/api/wallet-evm-balance.js +697 -0
- package/dist/api/wallet-evm-balance.js.map +1 -0
- package/dist/api/wallet-routes.d.ts +27 -0
- package/dist/api/wallet-routes.d.ts.map +1 -0
- package/dist/api/wallet-routes.js +556 -0
- package/dist/api/wallet-routes.js.map +1 -0
- package/dist/api/wallet-rpc.d.ts +73 -0
- package/dist/api/wallet-rpc.d.ts.map +1 -0
- package/dist/api/wallet-rpc.js +460 -0
- package/dist/api/wallet-rpc.js.map +1 -0
- package/dist/api/wallet-trade-routes.d.ts +104 -0
- package/dist/api/wallet-trade-routes.d.ts.map +1 -0
- package/dist/api/wallet-trade-routes.js +353 -0
- package/dist/api/wallet-trade-routes.js.map +1 -0
- package/dist/api/wallet-trading-profile.d.ts +31 -0
- package/dist/api/wallet-trading-profile.d.ts.map +1 -0
- package/dist/api/wallet-trading-profile.js +500 -0
- package/dist/api/wallet-trading-profile.js.map +1 -0
- package/dist/api/wallet.d.ts +60 -0
- package/dist/api/wallet.d.ts.map +1 -0
- package/dist/api/wallet.js +617 -0
- package/dist/api/wallet.js.map +1 -0
- package/dist/chain-utils.d.ts +10 -0
- package/dist/chain-utils.d.ts.map +1 -0
- package/dist/chain-utils.js +81 -0
- package/dist/chain-utils.js.map +1 -0
- package/dist/components/StewardSpatialView.d.ts +74 -0
- package/dist/components/StewardSpatialView.d.ts.map +1 -0
- package/dist/components/StewardSpatialView.js +309 -0
- package/dist/components/StewardSpatialView.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +21 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +319 -0
- package/dist/plugin.js.map +1 -0
- package/dist/providers/steward-balance.d.ts +12 -0
- package/dist/providers/steward-balance.d.ts.map +1 -0
- package/dist/providers/steward-balance.js +85 -0
- package/dist/providers/steward-balance.js.map +1 -0
- package/dist/providers/steward-receive-address.d.ts +12 -0
- package/dist/providers/steward-receive-address.d.ts.map +1 -0
- package/dist/providers/steward-receive-address.js +47 -0
- package/dist/providers/steward-receive-address.js.map +1 -0
- package/dist/register-routes.d.ts +2 -0
- package/dist/register-routes.d.ts.map +1 -0
- package/dist/register-routes.js +6 -0
- package/dist/register-routes.js.map +1 -0
- package/dist/register-terminal-view.d.ts +15 -0
- package/dist/register-terminal-view.d.ts.map +1 -0
- package/dist/register-terminal-view.js +34 -0
- package/dist/register-terminal-view.js.map +1 -0
- package/dist/routes/steward-bridge.d.ts +202 -0
- package/dist/routes/steward-bridge.d.ts.map +1 -0
- package/dist/routes/steward-bridge.js +776 -0
- package/dist/routes/steward-bridge.js.map +1 -0
- package/dist/routes/steward-compat-routes.d.ts +21 -0
- package/dist/routes/steward-compat-routes.d.ts.map +1 -0
- package/dist/routes/steward-compat-routes.js +350 -0
- package/dist/routes/steward-compat-routes.js.map +1 -0
- package/dist/routes/wallet-browser-compat-routes.d.ts +6 -0
- package/dist/routes/wallet-browser-compat-routes.d.ts.map +1 -0
- package/dist/routes/wallet-browser-compat-routes.js +402 -0
- package/dist/routes/wallet-browser-compat-routes.js.map +1 -0
- package/dist/routes/wallet-bsc-core-routes.d.ts +15 -0
- package/dist/routes/wallet-bsc-core-routes.d.ts.map +1 -0
- package/dist/routes/wallet-bsc-core-routes.js +59 -0
- package/dist/routes/wallet-bsc-core-routes.js.map +1 -0
- package/dist/routes/wallet-compat-routes.d.ts +13 -0
- package/dist/routes/wallet-compat-routes.d.ts.map +1 -0
- package/dist/routes/wallet-compat-routes.js +206 -0
- package/dist/routes/wallet-compat-routes.js.map +1 -0
- package/dist/routes/wallet-core-routes.d.ts +16 -0
- package/dist/routes/wallet-core-routes.d.ts.map +1 -0
- package/dist/routes/wallet-core-routes.js +48 -0
- package/dist/routes/wallet-core-routes.js.map +1 -0
- package/dist/routes/wallet-trade-compat-routes.d.ts +11 -0
- package/dist/routes/wallet-trade-compat-routes.d.ts.map +1 -0
- package/dist/routes/wallet-trade-compat-routes.js +570 -0
- package/dist/routes/wallet-trade-compat-routes.js.map +1 -0
- package/dist/security/hydrate-wallet-keys-from-platform-store.d.ts +7 -0
- package/dist/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -0
- package/dist/security/hydrate-wallet-keys-from-platform-store.js +43 -0
- package/dist/security/hydrate-wallet-keys-from-platform-store.js.map +1 -0
- package/dist/security/wallet-os-store-actions.d.ts +14 -0
- package/dist/security/wallet-os-store-actions.d.ts.map +1 -0
- package/dist/security/wallet-os-store-actions.js +63 -0
- package/dist/security/wallet-os-store-actions.js.map +1 -0
- package/dist/services/steward-credentials.d.ts +2 -0
- package/dist/services/steward-credentials.d.ts.map +1 -0
- package/dist/services/steward-credentials.js +2 -0
- package/dist/services/steward-credentials.js.map +1 -0
- package/dist/services/steward-evm-account.d.ts +75 -0
- package/dist/services/steward-evm-account.d.ts.map +1 -0
- package/dist/services/steward-evm-account.js +279 -0
- package/dist/services/steward-evm-account.js.map +1 -0
- package/dist/services/steward-evm-bridge.d.ts +36 -0
- package/dist/services/steward-evm-bridge.d.ts.map +1 -0
- package/dist/services/steward-evm-bridge.js +78 -0
- package/dist/services/steward-evm-bridge.js.map +1 -0
- package/dist/services/steward-sidecar/health-check.d.ts +2 -0
- package/dist/services/steward-sidecar/health-check.d.ts.map +1 -0
- package/dist/services/steward-sidecar/health-check.js +2 -0
- package/dist/services/steward-sidecar/health-check.js.map +1 -0
- package/dist/services/steward-sidecar/helpers.d.ts +2 -0
- package/dist/services/steward-sidecar/helpers.d.ts.map +1 -0
- package/dist/services/steward-sidecar/helpers.js +2 -0
- package/dist/services/steward-sidecar/helpers.js.map +1 -0
- package/dist/services/steward-sidecar/process-management.d.ts +2 -0
- package/dist/services/steward-sidecar/process-management.d.ts.map +1 -0
- package/dist/services/steward-sidecar/process-management.js +2 -0
- package/dist/services/steward-sidecar/process-management.js.map +1 -0
- package/dist/services/steward-sidecar/types.d.ts +2 -0
- package/dist/services/steward-sidecar/types.d.ts.map +1 -0
- package/dist/services/steward-sidecar/types.js +2 -0
- package/dist/services/steward-sidecar/types.js.map +1 -0
- package/dist/services/steward-sidecar/wallet-setup.d.ts +2 -0
- package/dist/services/steward-sidecar/wallet-setup.d.ts.map +1 -0
- package/dist/services/steward-sidecar/wallet-setup.js +2 -0
- package/dist/services/steward-sidecar/wallet-setup.js.map +1 -0
- package/dist/services/steward-sidecar.d.ts +2 -0
- package/dist/services/steward-sidecar.d.ts.map +1 -0
- package/dist/services/steward-sidecar.js +2 -0
- package/dist/services/steward-sidecar.js.map +1 -0
- package/dist/services/steward-wallet.d.ts +25 -0
- package/dist/services/steward-wallet.d.ts.map +1 -0
- package/dist/services/steward-wallet.js +333 -0
- package/dist/services/steward-wallet.js.map +1 -0
- package/dist/steward-ui-state.d.ts +14 -0
- package/dist/steward-ui-state.d.ts.map +1 -0
- package/dist/steward-ui-state.js +46 -0
- package/dist/steward-ui-state.js.map +1 -0
- package/dist/steward-view-bundle.d.ts +3 -0
- package/dist/steward-view-bundle.d.ts.map +1 -0
- package/dist/steward-view-bundle.js +7 -0
- package/dist/steward-view-bundle.js.map +1 -0
- package/dist/types/bsc-trade.d.ts +180 -0
- package/dist/types/bsc-trade.d.ts.map +1 -0
- package/dist/types/bsc-trade.js +1 -0
- package/dist/types/bsc-trade.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/steward.d.ts +83 -0
- package/dist/types/steward.d.ts.map +1 -0
- package/dist/types/steward.js +1 -0
- package/dist/types/steward.js.map +1 -0
- package/dist/ui.d.ts +7 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +7 -0
- package/dist/ui.js.map +1 -0
- package/dist/views/bundle.js +601 -0
- package/dist/views/bundle.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
PagePanel,
|
|
5
|
+
Spinner,
|
|
6
|
+
StatusBadge,
|
|
7
|
+
statusLabelForState,
|
|
8
|
+
statusToneForState
|
|
9
|
+
} from "@elizaos/ui";
|
|
10
|
+
import { useAgentElement } from "@elizaos/ui/agent-surface";
|
|
11
|
+
import { Copy, ExternalLink } from "lucide-react";
|
|
12
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
13
|
+
import {
|
|
14
|
+
formatWeiValue,
|
|
15
|
+
getChainName,
|
|
16
|
+
getExplorerTxUrl,
|
|
17
|
+
truncateAddress
|
|
18
|
+
} from "./chain-utils.js";
|
|
19
|
+
const POLL_INTERVAL_MS = 2e4;
|
|
20
|
+
const STATUS_OPTIONS = [
|
|
21
|
+
{ value: "", label: "All Statuses" },
|
|
22
|
+
{ value: "pending", label: "Pending" },
|
|
23
|
+
{ value: "signed", label: "Signed" },
|
|
24
|
+
{ value: "broadcast", label: "Broadcast" },
|
|
25
|
+
{ value: "confirmed", label: "Confirmed" },
|
|
26
|
+
{ value: "rejected", label: "Rejected" },
|
|
27
|
+
{ value: "failed", label: "Failed" }
|
|
28
|
+
];
|
|
29
|
+
const CHAIN_OPTIONS = [
|
|
30
|
+
{ value: "", label: "All Chains" },
|
|
31
|
+
{ value: 1, label: "Ethereum" },
|
|
32
|
+
{ value: 8453, label: "Base" },
|
|
33
|
+
{ value: 56, label: "BSC" },
|
|
34
|
+
{ value: 137, label: "Polygon" },
|
|
35
|
+
{ value: 42161, label: "Arbitrum" },
|
|
36
|
+
{ value: 101, label: "Solana" }
|
|
37
|
+
];
|
|
38
|
+
function TxAddressButton({
|
|
39
|
+
txId,
|
|
40
|
+
address,
|
|
41
|
+
onCopy
|
|
42
|
+
}) {
|
|
43
|
+
const { ref, agentProps } = useAgentElement({
|
|
44
|
+
id: `copy-address-${txId}`,
|
|
45
|
+
role: "button",
|
|
46
|
+
label: `Copy recipient address for transaction ${txId}`,
|
|
47
|
+
group: "history-rows",
|
|
48
|
+
description: "Copy the destination address to the clipboard",
|
|
49
|
+
onActivate: onCopy
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsxs(
|
|
52
|
+
"button",
|
|
53
|
+
{
|
|
54
|
+
ref,
|
|
55
|
+
...agentProps,
|
|
56
|
+
type: "button",
|
|
57
|
+
className: "inline-flex items-center gap-1 font-mono text-xs text-txt hover:text-accent transition-colors cursor-pointer",
|
|
58
|
+
onClick: onCopy,
|
|
59
|
+
title: address,
|
|
60
|
+
children: [
|
|
61
|
+
truncateAddress(address),
|
|
62
|
+
/* @__PURE__ */ jsx(Copy, { className: "h-3 w-3 opacity-0 group-hover:opacity-60" })
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function TxHashLink({
|
|
68
|
+
txId,
|
|
69
|
+
txHash,
|
|
70
|
+
href
|
|
71
|
+
}) {
|
|
72
|
+
const { ref, agentProps } = useAgentElement({
|
|
73
|
+
id: `open-explorer-${txId}`,
|
|
74
|
+
role: "link",
|
|
75
|
+
label: `Open transaction ${txId} in block explorer`,
|
|
76
|
+
group: "history-rows",
|
|
77
|
+
description: "Open this transaction on its chain block explorer"
|
|
78
|
+
});
|
|
79
|
+
return /* @__PURE__ */ jsxs(
|
|
80
|
+
"a",
|
|
81
|
+
{
|
|
82
|
+
ref,
|
|
83
|
+
...agentProps,
|
|
84
|
+
href,
|
|
85
|
+
target: "_blank",
|
|
86
|
+
rel: "noopener noreferrer",
|
|
87
|
+
className: "inline-flex items-center gap-1 font-mono text-xs text-accent hover:text-accent/80 transition-colors",
|
|
88
|
+
title: txHash,
|
|
89
|
+
children: [
|
|
90
|
+
truncateAddress(txHash, 4),
|
|
91
|
+
/* @__PURE__ */ jsx(ExternalLink, { className: "h-3 w-3" })
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
function TransactionHistory({
|
|
97
|
+
getStewardHistory,
|
|
98
|
+
copyToClipboard,
|
|
99
|
+
setActionNotice,
|
|
100
|
+
embedded = false
|
|
101
|
+
}) {
|
|
102
|
+
const [records, setRecords] = useState([]);
|
|
103
|
+
const [_total, setTotal] = useState(0);
|
|
104
|
+
const [loading, setLoading] = useState(true);
|
|
105
|
+
const [error, setError] = useState(null);
|
|
106
|
+
const [statusFilter, setStatusFilter] = useState("");
|
|
107
|
+
const [chainFilter, setChainFilter] = useState("");
|
|
108
|
+
const [page, setPage] = useState(0);
|
|
109
|
+
const pageSize = 25;
|
|
110
|
+
const statusFilterElement = useAgentElement({
|
|
111
|
+
id: "filter-status",
|
|
112
|
+
role: "select",
|
|
113
|
+
label: "Status filter",
|
|
114
|
+
group: "history-filters",
|
|
115
|
+
description: "Filter transactions by status",
|
|
116
|
+
options: STATUS_OPTIONS.map((opt) => opt.value),
|
|
117
|
+
getValue: () => statusFilter,
|
|
118
|
+
onFill: (value) => {
|
|
119
|
+
setStatusFilter(value);
|
|
120
|
+
setPage(0);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
const chainFilterElement = useAgentElement({
|
|
124
|
+
id: "filter-chain",
|
|
125
|
+
role: "select",
|
|
126
|
+
label: "Chain filter",
|
|
127
|
+
group: "history-filters",
|
|
128
|
+
description: "Filter transactions by chain",
|
|
129
|
+
options: CHAIN_OPTIONS.map((opt) => String(opt.value)),
|
|
130
|
+
getValue: () => String(chainFilter),
|
|
131
|
+
onFill: (value) => {
|
|
132
|
+
setChainFilter(value === "" ? "" : Number(value));
|
|
133
|
+
setPage(0);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
const prevPageElement = useAgentElement({
|
|
137
|
+
id: "page-previous",
|
|
138
|
+
role: "button",
|
|
139
|
+
label: "Previous page",
|
|
140
|
+
group: "history-pagination",
|
|
141
|
+
description: "Go to the previous page of transactions"
|
|
142
|
+
});
|
|
143
|
+
const nextPageElement = useAgentElement({
|
|
144
|
+
id: "page-next",
|
|
145
|
+
role: "button",
|
|
146
|
+
label: "Next page",
|
|
147
|
+
group: "history-pagination",
|
|
148
|
+
description: "Go to the next page of transactions"
|
|
149
|
+
});
|
|
150
|
+
const loadData = useCallback(async () => {
|
|
151
|
+
setLoading(true);
|
|
152
|
+
setError(null);
|
|
153
|
+
try {
|
|
154
|
+
const result = await getStewardHistory({
|
|
155
|
+
status: statusFilter || void 0,
|
|
156
|
+
limit: 200,
|
|
157
|
+
offset: 0
|
|
158
|
+
});
|
|
159
|
+
setRecords(result.records ?? []);
|
|
160
|
+
setTotal(result.total ?? 0);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
setError(
|
|
163
|
+
err instanceof Error ? err.message : "Failed to load transactions"
|
|
164
|
+
);
|
|
165
|
+
setRecords([]);
|
|
166
|
+
} finally {
|
|
167
|
+
setLoading(false);
|
|
168
|
+
}
|
|
169
|
+
}, [getStewardHistory, statusFilter]);
|
|
170
|
+
useEffect(() => {
|
|
171
|
+
void loadData();
|
|
172
|
+
const interval = setInterval(() => void loadData(), POLL_INTERVAL_MS);
|
|
173
|
+
return () => clearInterval(interval);
|
|
174
|
+
}, [loadData]);
|
|
175
|
+
const filtered = useMemo(() => {
|
|
176
|
+
let items = records;
|
|
177
|
+
if (chainFilter !== "") {
|
|
178
|
+
items = items.filter((tx) => tx.request?.chainId === chainFilter);
|
|
179
|
+
}
|
|
180
|
+
return [...items].sort((a, b) => {
|
|
181
|
+
const aTime = new Date(a.createdAt).getTime();
|
|
182
|
+
const bTime = new Date(b.createdAt).getTime();
|
|
183
|
+
return bTime - aTime;
|
|
184
|
+
});
|
|
185
|
+
}, [records, chainFilter]);
|
|
186
|
+
const pageCount = Math.max(1, Math.ceil(filtered.length / pageSize));
|
|
187
|
+
const paginated = filtered.slice(page * pageSize, (page + 1) * pageSize);
|
|
188
|
+
const handleCopy = useCallback(
|
|
189
|
+
async (text, label) => {
|
|
190
|
+
await copyToClipboard(text);
|
|
191
|
+
setActionNotice(`${label} copied`, "success", 2e3);
|
|
192
|
+
},
|
|
193
|
+
[copyToClipboard, setActionNotice]
|
|
194
|
+
);
|
|
195
|
+
const formatTime = (dateStr) => {
|
|
196
|
+
try {
|
|
197
|
+
const d = new Date(dateStr);
|
|
198
|
+
return d.toLocaleDateString("en-US", {
|
|
199
|
+
month: "short",
|
|
200
|
+
day: "numeric",
|
|
201
|
+
year: "numeric",
|
|
202
|
+
hour: "2-digit",
|
|
203
|
+
minute: "2-digit"
|
|
204
|
+
});
|
|
205
|
+
} catch {
|
|
206
|
+
return dateStr;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
return /* @__PURE__ */ jsxs("div", { className: embedded ? "flex min-h-0 flex-1 flex-col" : "space-y-4", children: [
|
|
210
|
+
error ? /* @__PURE__ */ jsx(PagePanel.Notice, { tone: "danger", children: error }) : null,
|
|
211
|
+
loading && records.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 items-center justify-center px-6 py-16", children: [
|
|
212
|
+
/* @__PURE__ */ jsx(Spinner, { className: "h-5 w-5 text-muted" }),
|
|
213
|
+
/* @__PURE__ */ jsx("span", { className: "ml-3 text-sm text-muted", children: "Loading transactions\u2026" })
|
|
214
|
+
] }) : null,
|
|
215
|
+
!loading && filtered.length === 0 ? /* @__PURE__ */ jsx(
|
|
216
|
+
PagePanel.Empty,
|
|
217
|
+
{
|
|
218
|
+
variant: embedded ? "workspace" : "panel",
|
|
219
|
+
title: "None"
|
|
220
|
+
}
|
|
221
|
+
) : null,
|
|
222
|
+
paginated.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
223
|
+
/* @__PURE__ */ jsxs(PagePanel.Toolbar, { children: [
|
|
224
|
+
/* @__PURE__ */ jsx(
|
|
225
|
+
"select",
|
|
226
|
+
{
|
|
227
|
+
ref: statusFilterElement.ref,
|
|
228
|
+
...statusFilterElement.agentProps,
|
|
229
|
+
value: statusFilter,
|
|
230
|
+
onChange: (e) => {
|
|
231
|
+
setStatusFilter(e.target.value);
|
|
232
|
+
setPage(0);
|
|
233
|
+
},
|
|
234
|
+
"aria-label": "Status filter",
|
|
235
|
+
className: "h-9 rounded-md border border-border/50 bg-transparent px-3 text-sm text-txt focus:border-accent/40 focus:outline-none",
|
|
236
|
+
children: STATUS_OPTIONS.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
|
|
237
|
+
}
|
|
238
|
+
),
|
|
239
|
+
/* @__PURE__ */ jsx(
|
|
240
|
+
"select",
|
|
241
|
+
{
|
|
242
|
+
ref: chainFilterElement.ref,
|
|
243
|
+
...chainFilterElement.agentProps,
|
|
244
|
+
value: chainFilter,
|
|
245
|
+
onChange: (e) => {
|
|
246
|
+
setChainFilter(
|
|
247
|
+
e.target.value === "" ? "" : Number(e.target.value)
|
|
248
|
+
);
|
|
249
|
+
setPage(0);
|
|
250
|
+
},
|
|
251
|
+
"aria-label": "Chain filter",
|
|
252
|
+
className: "h-9 rounded-md border border-border/50 bg-transparent px-3 text-sm text-txt focus:border-accent/40 focus:outline-none",
|
|
253
|
+
children: CHAIN_OPTIONS.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, String(opt.value)))
|
|
254
|
+
}
|
|
255
|
+
),
|
|
256
|
+
/* @__PURE__ */ jsxs("span", { className: "ml-auto text-xs text-muted", children: [
|
|
257
|
+
filtered.length,
|
|
258
|
+
" transaction",
|
|
259
|
+
filtered.length !== 1 ? "s" : ""
|
|
260
|
+
] })
|
|
261
|
+
] }),
|
|
262
|
+
/* @__PURE__ */ jsxs("div", { className: embedded ? "overflow-hidden" : void 0, children: [
|
|
263
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs("table", { className: "w-full text-sm", children: [
|
|
264
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { className: "text-left text-xs font-semibold uppercase tracking-wider text-muted/70", children: [
|
|
265
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "Time" }),
|
|
266
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "Status" }),
|
|
267
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "To" }),
|
|
268
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "Amount" }),
|
|
269
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "Chain" }),
|
|
270
|
+
/* @__PURE__ */ jsx("th", { className: "px-4 py-3", children: "Tx Hash" })
|
|
271
|
+
] }) }),
|
|
272
|
+
/* @__PURE__ */ jsx("tbody", { children: paginated.map((tx) => /* @__PURE__ */ jsxs(
|
|
273
|
+
"tr",
|
|
274
|
+
{
|
|
275
|
+
className: "group transition-colors hover:bg-accent/4",
|
|
276
|
+
children: [
|
|
277
|
+
/* @__PURE__ */ jsx("td", { className: "whitespace-nowrap px-4 py-3 text-xs text-muted", children: formatTime(tx.createdAt) }),
|
|
278
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsx(
|
|
279
|
+
StatusBadge,
|
|
280
|
+
{
|
|
281
|
+
label: statusLabelForState(
|
|
282
|
+
tx.status
|
|
283
|
+
),
|
|
284
|
+
tone: statusToneForState(
|
|
285
|
+
tx.status
|
|
286
|
+
)
|
|
287
|
+
}
|
|
288
|
+
) }),
|
|
289
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsx(
|
|
290
|
+
TxAddressButton,
|
|
291
|
+
{
|
|
292
|
+
txId: tx.id,
|
|
293
|
+
address: tx.request?.to ?? "",
|
|
294
|
+
onCopy: () => void handleCopy(tx.request?.to ?? "", "Address")
|
|
295
|
+
}
|
|
296
|
+
) }),
|
|
297
|
+
/* @__PURE__ */ jsx("td", { className: "whitespace-nowrap px-4 py-3 text-xs font-medium text-txt", children: formatWeiValue(
|
|
298
|
+
tx.request?.value ?? "0",
|
|
299
|
+
tx.request?.chainId ?? 8453
|
|
300
|
+
) }),
|
|
301
|
+
/* @__PURE__ */ jsx("td", { className: "whitespace-nowrap px-4 py-3 text-xs text-muted", children: getChainName(tx.request?.chainId ?? 0) }),
|
|
302
|
+
/* @__PURE__ */ jsx("td", { className: "px-4 py-3", children: tx.txHash ? /* @__PURE__ */ jsx(
|
|
303
|
+
TxHashLink,
|
|
304
|
+
{
|
|
305
|
+
txId: tx.id,
|
|
306
|
+
txHash: tx.txHash,
|
|
307
|
+
href: getExplorerTxUrl(
|
|
308
|
+
tx.request?.chainId ?? 8453,
|
|
309
|
+
tx.txHash
|
|
310
|
+
) ?? "#"
|
|
311
|
+
}
|
|
312
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-xs text-muted/50", children: "\u2014" }) })
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
tx.id
|
|
316
|
+
)) })
|
|
317
|
+
] }) }),
|
|
318
|
+
pageCount > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3", children: [
|
|
319
|
+
/* @__PURE__ */ jsx(
|
|
320
|
+
Button,
|
|
321
|
+
{
|
|
322
|
+
ref: prevPageElement.ref,
|
|
323
|
+
...prevPageElement.agentProps,
|
|
324
|
+
variant: "ghost",
|
|
325
|
+
size: "sm",
|
|
326
|
+
disabled: page === 0,
|
|
327
|
+
onClick: () => setPage((p) => Math.max(0, p - 1)),
|
|
328
|
+
className: "h-8 rounded-lg px-3 text-xs",
|
|
329
|
+
"aria-label": "Previous page",
|
|
330
|
+
children: "Previous"
|
|
331
|
+
}
|
|
332
|
+
),
|
|
333
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xs text-muted", children: [
|
|
334
|
+
"Page ",
|
|
335
|
+
page + 1,
|
|
336
|
+
" of ",
|
|
337
|
+
pageCount
|
|
338
|
+
] }),
|
|
339
|
+
/* @__PURE__ */ jsx(
|
|
340
|
+
Button,
|
|
341
|
+
{
|
|
342
|
+
ref: nextPageElement.ref,
|
|
343
|
+
...nextPageElement.agentProps,
|
|
344
|
+
variant: "ghost",
|
|
345
|
+
size: "sm",
|
|
346
|
+
disabled: page >= pageCount - 1,
|
|
347
|
+
onClick: () => setPage((p) => Math.min(pageCount - 1, p + 1)),
|
|
348
|
+
className: "h-8 rounded-lg px-3 text-xs",
|
|
349
|
+
"aria-label": "Next page",
|
|
350
|
+
children: "Next"
|
|
351
|
+
}
|
|
352
|
+
)
|
|
353
|
+
] })
|
|
354
|
+
] })
|
|
355
|
+
] })
|
|
356
|
+
] });
|
|
357
|
+
}
|
|
358
|
+
export {
|
|
359
|
+
TransactionHistory
|
|
360
|
+
};
|
|
361
|
+
//# sourceMappingURL=TransactionHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/TransactionHistory.tsx"],"sourcesContent":["/**\n * Transaction history table — lists all transactions for the agent from Steward vault.\n */\n\nimport {\n Button,\n PagePanel,\n Spinner,\n StatusBadge,\n statusLabelForState,\n statusToneForState,\n} from \"@elizaos/ui\";\nimport { useAgentElement } from \"@elizaos/ui/agent-surface\";\nimport { Copy, ExternalLink } from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n formatWeiValue,\n getChainName,\n getExplorerTxUrl,\n truncateAddress,\n} from \"./chain-utils.js\";\nimport type { StewardTxRecord, StewardTxStatus } from \"./types/steward.js\";\n\ninterface TransactionHistoryProps {\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 copyToClipboard: (text: string) => Promise<void>;\n setActionNotice: (\n text: string,\n tone?: \"info\" | \"success\" | \"error\",\n ttlMs?: number,\n ) => void;\n embedded?: boolean;\n}\n\nconst POLL_INTERVAL_MS = 20_000;\n\nconst STATUS_OPTIONS: Array<{ value: string; label: string }> = [\n { value: \"\", label: \"All Statuses\" },\n { value: \"pending\", label: \"Pending\" },\n { value: \"signed\", label: \"Signed\" },\n { value: \"broadcast\", label: \"Broadcast\" },\n { value: \"confirmed\", label: \"Confirmed\" },\n { value: \"rejected\", label: \"Rejected\" },\n { value: \"failed\", label: \"Failed\" },\n];\n\nconst CHAIN_OPTIONS: Array<{ value: number | \"\"; label: string }> = [\n { value: \"\", label: \"All Chains\" },\n { value: 1, label: \"Ethereum\" },\n { value: 8453, label: \"Base\" },\n { value: 56, label: \"BSC\" },\n { value: 137, label: \"Polygon\" },\n { value: 42161, label: \"Arbitrum\" },\n { value: 101, label: \"Solana\" },\n];\n\nfunction TxAddressButton({\n txId,\n address,\n onCopy,\n}: {\n txId: string;\n address: string;\n onCopy: () => void;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: `copy-address-${txId}`,\n role: \"button\",\n label: `Copy recipient address for transaction ${txId}`,\n group: \"history-rows\",\n description: \"Copy the destination address to the clipboard\",\n onActivate: onCopy,\n });\n return (\n <button\n ref={ref}\n {...agentProps}\n type=\"button\"\n className=\"inline-flex items-center gap-1 font-mono text-xs text-txt hover:text-accent transition-colors cursor-pointer\"\n onClick={onCopy}\n title={address}\n >\n {truncateAddress(address)}\n <Copy className=\"h-3 w-3 opacity-0 group-hover:opacity-60\" />\n </button>\n );\n}\n\nfunction TxHashLink({\n txId,\n txHash,\n href,\n}: {\n txId: string;\n txHash: string;\n href: string;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLAnchorElement>({\n id: `open-explorer-${txId}`,\n role: \"link\",\n label: `Open transaction ${txId} in block explorer`,\n group: \"history-rows\",\n description: \"Open this transaction on its chain block explorer\",\n });\n return (\n <a\n ref={ref}\n {...agentProps}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 font-mono text-xs text-accent hover:text-accent/80 transition-colors\"\n title={txHash}\n >\n {truncateAddress(txHash, 4)}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n );\n}\n\nexport function TransactionHistory({\n getStewardHistory,\n copyToClipboard,\n setActionNotice,\n embedded = false,\n}: TransactionHistoryProps) {\n const [records, setRecords] = useState<StewardTxRecord[]>([]);\n const [_total, setTotal] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [statusFilter, setStatusFilter] = useState(\"\");\n const [chainFilter, setChainFilter] = useState<number | \"\">(\"\");\n const [page, setPage] = useState(0);\n const pageSize = 25;\n\n const statusFilterElement = useAgentElement<HTMLSelectElement>({\n id: \"filter-status\",\n role: \"select\",\n label: \"Status filter\",\n group: \"history-filters\",\n description: \"Filter transactions by status\",\n options: STATUS_OPTIONS.map((opt) => opt.value),\n getValue: () => statusFilter,\n onFill: (value) => {\n setStatusFilter(value);\n setPage(0);\n },\n });\n const chainFilterElement = useAgentElement<HTMLSelectElement>({\n id: \"filter-chain\",\n role: \"select\",\n label: \"Chain filter\",\n group: \"history-filters\",\n description: \"Filter transactions by chain\",\n options: CHAIN_OPTIONS.map((opt) => String(opt.value)),\n getValue: () => String(chainFilter),\n onFill: (value) => {\n setChainFilter(value === \"\" ? \"\" : Number(value));\n setPage(0);\n },\n });\n const prevPageElement = useAgentElement<HTMLButtonElement>({\n id: \"page-previous\",\n role: \"button\",\n label: \"Previous page\",\n group: \"history-pagination\",\n description: \"Go to the previous page of transactions\",\n });\n const nextPageElement = useAgentElement<HTMLButtonElement>({\n id: \"page-next\",\n role: \"button\",\n label: \"Next page\",\n group: \"history-pagination\",\n description: \"Go to the next page of transactions\",\n });\n\n const loadData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await getStewardHistory({\n status: statusFilter || undefined,\n limit: 200,\n offset: 0,\n });\n setRecords(result.records ?? []);\n setTotal(result.total ?? 0);\n } catch (err) {\n setError(\n err instanceof Error ? err.message : \"Failed to load transactions\",\n );\n setRecords([]);\n } finally {\n setLoading(false);\n }\n }, [getStewardHistory, statusFilter]);\n\n useEffect(() => {\n void loadData();\n const interval = setInterval(() => void loadData(), POLL_INTERVAL_MS);\n return () => clearInterval(interval);\n }, [loadData]);\n\n // Client-side chain filter + sort\n const filtered = useMemo(() => {\n let items = records;\n if (chainFilter !== \"\") {\n items = items.filter((tx) => tx.request?.chainId === chainFilter);\n }\n // Sort newest first\n return [...items].sort((a, b) => {\n const aTime = new Date(a.createdAt).getTime();\n const bTime = new Date(b.createdAt).getTime();\n return bTime - aTime;\n });\n }, [records, chainFilter]);\n\n const pageCount = Math.max(1, Math.ceil(filtered.length / pageSize));\n const paginated = filtered.slice(page * pageSize, (page + 1) * pageSize);\n\n const handleCopy = useCallback(\n async (text: string, label: string) => {\n await copyToClipboard(text);\n setActionNotice(`${label} copied`, \"success\", 2000);\n },\n [copyToClipboard, setActionNotice],\n );\n\n const formatTime = (dateStr: string) => {\n try {\n const d = new Date(dateStr);\n return d.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n } catch {\n return dateStr;\n }\n };\n\n return (\n <div className={embedded ? \"flex min-h-0 flex-1 flex-col\" : \"space-y-4\"}>\n {error ? (\n <PagePanel.Notice tone=\"danger\">{error}</PagePanel.Notice>\n ) : null}\n\n {loading && records.length === 0 ? (\n <div className=\"flex min-h-0 flex-1 items-center justify-center px-6 py-16\">\n <Spinner className=\"h-5 w-5 text-muted\" />\n <span className=\"ml-3 text-sm text-muted\">Loading transactions…</span>\n </div>\n ) : null}\n\n {!loading && filtered.length === 0 ? (\n <PagePanel.Empty\n variant={embedded ? \"workspace\" : \"panel\"}\n title=\"None\"\n />\n ) : null}\n\n {/* Table */}\n {paginated.length > 0 && (\n <>\n <PagePanel.Toolbar>\n <select\n ref={statusFilterElement.ref}\n {...statusFilterElement.agentProps}\n value={statusFilter}\n onChange={(e) => {\n setStatusFilter(e.target.value);\n setPage(0);\n }}\n aria-label=\"Status filter\"\n className=\"h-9 rounded-md border border-border/50 bg-transparent px-3 text-sm text-txt focus:border-accent/40 focus:outline-none\"\n >\n {STATUS_OPTIONS.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n\n <select\n ref={chainFilterElement.ref}\n {...chainFilterElement.agentProps}\n value={chainFilter}\n onChange={(e) => {\n setChainFilter(\n e.target.value === \"\" ? \"\" : Number(e.target.value),\n );\n setPage(0);\n }}\n aria-label=\"Chain filter\"\n className=\"h-9 rounded-md border border-border/50 bg-transparent px-3 text-sm text-txt focus:border-accent/40 focus:outline-none\"\n >\n {CHAIN_OPTIONS.map((opt) => (\n <option key={String(opt.value)} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n\n <span className=\"ml-auto text-xs text-muted\">\n {filtered.length} transaction{filtered.length !== 1 ? \"s\" : \"\"}\n </span>\n </PagePanel.Toolbar>\n\n <div className={embedded ? \"overflow-hidden\" : undefined}>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs font-semibold uppercase tracking-wider text-muted/70\">\n <th className=\"px-4 py-3\">Time</th>\n <th className=\"px-4 py-3\">Status</th>\n <th className=\"px-4 py-3\">To</th>\n <th className=\"px-4 py-3\">Amount</th>\n <th className=\"px-4 py-3\">Chain</th>\n <th className=\"px-4 py-3\">Tx Hash</th>\n </tr>\n </thead>\n <tbody>\n {paginated.map((tx) => (\n <tr\n key={tx.id}\n className=\"group transition-colors hover:bg-accent/4\"\n >\n <td className=\"whitespace-nowrap px-4 py-3 text-xs text-muted\">\n {formatTime(tx.createdAt)}\n </td>\n <td className=\"px-4 py-3\">\n <StatusBadge\n label={statusLabelForState(\n tx.status as StewardTxStatus,\n )}\n tone={statusToneForState(\n tx.status as StewardTxStatus,\n )}\n />\n </td>\n <td className=\"px-4 py-3\">\n <TxAddressButton\n txId={tx.id}\n address={tx.request?.to ?? \"\"}\n onCopy={() =>\n void handleCopy(tx.request?.to ?? \"\", \"Address\")\n }\n />\n </td>\n <td className=\"whitespace-nowrap px-4 py-3 text-xs font-medium text-txt\">\n {formatWeiValue(\n tx.request?.value ?? \"0\",\n tx.request?.chainId ?? 8453,\n )}\n </td>\n <td className=\"whitespace-nowrap px-4 py-3 text-xs text-muted\">\n {getChainName(tx.request?.chainId ?? 0)}\n </td>\n <td className=\"px-4 py-3\">\n {tx.txHash ? (\n <TxHashLink\n txId={tx.id}\n txHash={tx.txHash}\n href={\n getExplorerTxUrl(\n tx.request?.chainId ?? 8453,\n tx.txHash,\n ) ?? \"#\"\n }\n />\n ) : (\n <span className=\"text-xs text-muted/50\">—</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pageCount > 1 && (\n <div className=\"flex items-center justify-between px-4 py-3\">\n <Button\n ref={prevPageElement.ref}\n {...prevPageElement.agentProps}\n variant=\"ghost\"\n size=\"sm\"\n disabled={page === 0}\n onClick={() => setPage((p) => Math.max(0, p - 1))}\n className=\"h-8 rounded-lg px-3 text-xs\"\n aria-label=\"Previous page\"\n >\n Previous\n </Button>\n <span className=\"text-xs text-muted\">\n Page {page + 1} of {pageCount}\n </span>\n <Button\n ref={nextPageElement.ref}\n {...nextPageElement.agentProps}\n variant=\"ghost\"\n size=\"sm\"\n disabled={page >= pageCount - 1}\n onClick={() => setPage((p) => Math.min(pageCount - 1, p + 1))}\n className=\"h-8 rounded-lg px-3 text-xs\"\n aria-label=\"Next page\"\n >\n Next\n </Button>\n </div>\n )}\n </div>\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentBalance, PolicyResult, TxRecord } from "@stwd/sdk";
|
|
2
|
+
export declare const sdkPolicyResultRejected: PolicyResult;
|
|
3
|
+
export declare const sdkPolicyResultPassed: PolicyResult;
|
|
4
|
+
/** A confirmed TxRecord with a real Date createdAt and a txHash. */
|
|
5
|
+
export declare const sdkTxRecordConfirmed: TxRecord;
|
|
6
|
+
/** A pending TxRecord carrying a rejecting policy result; no txHash yet. */
|
|
7
|
+
export declare const sdkTxRecordPending: TxRecord;
|
|
8
|
+
/** AgentBalance as returned by StewardClient.getBalance(). */
|
|
9
|
+
export declare const sdkAgentBalance: AgentBalance;
|
|
10
|
+
//# sourceMappingURL=steward-sdk-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steward-sdk-fixtures.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/steward-sdk-fixtures.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAEZ,QAAQ,EACT,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,uBAAuB,EAAE,YAKrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAUF,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,EAAE,QAUlC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,QAYhC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,YAS7B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const sdkPolicyResultRejected = {
|
|
2
|
+
policyId: "policy-spend-limit",
|
|
3
|
+
type: "spending-limit",
|
|
4
|
+
passed: false,
|
|
5
|
+
reason: "Exceeds per-tx spending limit"
|
|
6
|
+
};
|
|
7
|
+
const sdkPolicyResultPassed = {
|
|
8
|
+
policyId: "policy-allowed-chains",
|
|
9
|
+
type: "allowed-chains",
|
|
10
|
+
passed: true
|
|
11
|
+
};
|
|
12
|
+
const baseRequest = {
|
|
13
|
+
agentId: "agent-alpha",
|
|
14
|
+
tenantId: "tenant-1",
|
|
15
|
+
to: "0xfeed000000000000000000000000000000000000",
|
|
16
|
+
value: "1000000000000000000",
|
|
17
|
+
chainId: 8453
|
|
18
|
+
};
|
|
19
|
+
const sdkTxRecordConfirmed = {
|
|
20
|
+
id: "tx-confirmed",
|
|
21
|
+
agentId: "agent-alpha",
|
|
22
|
+
status: "confirmed",
|
|
23
|
+
request: { ...baseRequest },
|
|
24
|
+
txHash: "0xconfirmedhash000000000000000000000000000000000000000000000000abcd",
|
|
25
|
+
policyResults: [sdkPolicyResultPassed],
|
|
26
|
+
createdAt: /* @__PURE__ */ new Date("2026-05-18T12:00:00.000Z"),
|
|
27
|
+
signedAt: /* @__PURE__ */ new Date("2026-05-18T12:00:05.000Z"),
|
|
28
|
+
confirmedAt: /* @__PURE__ */ new Date("2026-05-18T12:00:30.000Z")
|
|
29
|
+
};
|
|
30
|
+
const sdkTxRecordPending = {
|
|
31
|
+
id: "tx-pending",
|
|
32
|
+
agentId: "agent-alpha",
|
|
33
|
+
status: "pending",
|
|
34
|
+
request: {
|
|
35
|
+
...baseRequest,
|
|
36
|
+
to: "0xdead000000000000000000000000000000000000",
|
|
37
|
+
value: "500000000000000000",
|
|
38
|
+
chainId: 1
|
|
39
|
+
},
|
|
40
|
+
policyResults: [sdkPolicyResultRejected],
|
|
41
|
+
createdAt: /* @__PURE__ */ new Date("2026-05-18T13:00:00.000Z")
|
|
42
|
+
};
|
|
43
|
+
const sdkAgentBalance = {
|
|
44
|
+
agentId: "agent-alpha",
|
|
45
|
+
walletAddress: "0xabc0000000000000000000000000000000000000",
|
|
46
|
+
balances: {
|
|
47
|
+
native: "2500000000000000000",
|
|
48
|
+
nativeFormatted: "2.5",
|
|
49
|
+
chainId: 8453,
|
|
50
|
+
symbol: "ETH"
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
export {
|
|
54
|
+
sdkAgentBalance,
|
|
55
|
+
sdkPolicyResultPassed,
|
|
56
|
+
sdkPolicyResultRejected,
|
|
57
|
+
sdkTxRecordConfirmed,
|
|
58
|
+
sdkTxRecordPending
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=steward-sdk-fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/__fixtures__/steward-sdk-fixtures.ts"],"sourcesContent":["// Fixtures shaped against the REAL upstream @stwd/sdk v0.10.1 contract\n// (node_modules/@stwd/sdk/dist/types.d.ts). These are deliberately typed with\n// the SDK's own interfaces so a future SDK shape change breaks compilation here\n// instead of silently drifting from the parsers in src/routes/steward-bridge.ts.\n//\n// Key contract facts encoded below (verified against the d.ts):\n// - PolicyResult = { policyId, type, passed: boolean, reason? } (NO `status`)\n// - TxRecord.createdAt / signedAt / confirmedAt are `Date` objects\n// - AgentBalance nests under `balances: { native, nativeFormatted, chainId, symbol }`\n// - StewardClient.signTransaction -> { txHash } | { signedTx } | StewardPendingApproval\n// - StewardPendingApproval = { status: \"pending_approval\", results: PolicyResult[] }\nimport type {\n AgentBalance,\n PolicyResult,\n SignRequest,\n TxRecord,\n} from \"@stwd/sdk\";\n\nexport const sdkPolicyResultRejected: PolicyResult = {\n policyId: \"policy-spend-limit\",\n type: \"spending-limit\",\n passed: false,\n reason: \"Exceeds per-tx spending limit\",\n};\n\nexport const sdkPolicyResultPassed: PolicyResult = {\n policyId: \"policy-allowed-chains\",\n type: \"allowed-chains\",\n passed: true,\n};\n\nconst baseRequest: SignRequest = {\n agentId: \"agent-alpha\",\n tenantId: \"tenant-1\",\n to: \"0xfeed000000000000000000000000000000000000\",\n value: \"1000000000000000000\",\n chainId: 8453,\n};\n\n/** A confirmed TxRecord with a real Date createdAt and a txHash. */\nexport const sdkTxRecordConfirmed: TxRecord = {\n id: \"tx-confirmed\",\n agentId: \"agent-alpha\",\n status: \"confirmed\",\n request: { ...baseRequest },\n txHash: \"0xconfirmedhash000000000000000000000000000000000000000000000000abcd\",\n policyResults: [sdkPolicyResultPassed],\n createdAt: new Date(\"2026-05-18T12:00:00.000Z\"),\n signedAt: new Date(\"2026-05-18T12:00:05.000Z\"),\n confirmedAt: new Date(\"2026-05-18T12:00:30.000Z\"),\n};\n\n/** A pending TxRecord carrying a rejecting policy result; no txHash yet. */\nexport const sdkTxRecordPending: TxRecord = {\n id: \"tx-pending\",\n agentId: \"agent-alpha\",\n status: \"pending\",\n request: {\n ...baseRequest,\n to: \"0xdead000000000000000000000000000000000000\",\n value: \"500000000000000000\",\n chainId: 1,\n },\n policyResults: [sdkPolicyResultRejected],\n createdAt: new Date(\"2026-05-18T13:00:00.000Z\"),\n};\n\n/** AgentBalance as returned by StewardClient.getBalance(). */\nexport const sdkAgentBalance: AgentBalance = {\n agentId: \"agent-alpha\",\n walletAddress: \"0xabc0000000000000000000000000000000000000\",\n balances: {\n native: \"2500000000000000000\",\n nativeFormatted: \"2.5\",\n chainId: 8453,\n symbol: \"ETH\",\n },\n};\n"],"mappings":"AAkBO,MAAM,0BAAwC;AAAA,EACnD,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,MAAM,wBAAsC;AAAA,EACjD,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AACV;AAEA,MAAM,cAA2B;AAAA,EAC/B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AACX;AAGO,MAAM,uBAAiC;AAAA,EAC5C,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS,EAAE,GAAG,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR,eAAe,CAAC,qBAAqB;AAAA,EACrC,WAAW,oBAAI,KAAK,0BAA0B;AAAA,EAC9C,UAAU,oBAAI,KAAK,0BAA0B;AAAA,EAC7C,aAAa,oBAAI,KAAK,0BAA0B;AAClD;AAGO,MAAM,qBAA+B;AAAA,EAC1C,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,IACP,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,eAAe,CAAC,uBAAuB;AAAA,EACvC,WAAW,oBAAI,KAAK,0BAA0B;AAChD;AAGO,MAAM,kBAAgC;AAAA,EAC3C,SAAS;AAAA,EACT,eAAe;AAAA,EACf,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants and helpers for wallet action handlers
|
|
3
|
+
* (execute-trade, transfer-token, check-balance).
|
|
4
|
+
*
|
|
5
|
+
* @module actions/wallet-action-shared
|
|
6
|
+
*/
|
|
7
|
+
/** Resolve the loopback API port for wallet action calls at runtime. */
|
|
8
|
+
export declare function getWalletActionApiPort(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Build Authorization headers for loopback API calls.
|
|
11
|
+
* Reads the resolved API token from the environment and formats it as a Bearer token.
|
|
12
|
+
* Returns an empty object when no token is configured.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildAuthHeaders(): Record<string, string>;
|
|
15
|
+
//# sourceMappingURL=wallet-action-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-action-shared.d.ts","sourceRoot":"","sources":["../../src/actions/wallet-action-shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wEAAwE;AACxE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMzD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { resolveApiToken, resolveDesktopApiPort } from "@elizaos/core";
|
|
2
|
+
function getWalletActionApiPort() {
|
|
3
|
+
return String(resolveDesktopApiPort(process.env));
|
|
4
|
+
}
|
|
5
|
+
function buildAuthHeaders() {
|
|
6
|
+
const token = resolveApiToken(process.env);
|
|
7
|
+
if (!token) return {};
|
|
8
|
+
return {
|
|
9
|
+
Authorization: /^Bearer\s+/i.test(token) ? token : `Bearer ${token}`
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
buildAuthHeaders,
|
|
14
|
+
getWalletActionApiPort
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=wallet-action-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/actions/wallet-action-shared.ts"],"sourcesContent":["/**\n * Shared constants and helpers for wallet action handlers\n * (execute-trade, transfer-token, check-balance).\n *\n * @module actions/wallet-action-shared\n */\n\nimport { resolveApiToken, resolveDesktopApiPort } from \"@elizaos/core\";\n\n/** Resolve the loopback API port for wallet action calls at runtime. */\nexport function getWalletActionApiPort(): string {\n return String(resolveDesktopApiPort(process.env));\n}\n\n/**\n * Build Authorization headers for loopback API calls.\n * Reads the resolved API token from the environment and formats it as a Bearer token.\n * Returns an empty object when no token is configured.\n */\nexport function buildAuthHeaders(): Record<string, string> {\n const token = resolveApiToken(process.env);\n if (!token) return {};\n return {\n Authorization: /^Bearer\\s+/i.test(token) ? token : `Bearer ${token}`,\n };\n}\n"],"mappings":"AAOA,SAAS,iBAAiB,6BAA6B;AAGhD,SAAS,yBAAiC;AAC/C,SAAO,OAAO,sBAAsB,QAAQ,GAAG,CAAC;AAClD;AAOO,SAAS,mBAA2C;AACzD,QAAM,QAAQ,gBAAgB,QAAQ,GAAG;AACzC,MAAI,CAAC,MAAO,QAAO,CAAC;AACpB,SAAO;AAAA,IACL,eAAe,cAAc,KAAK,KAAK,IAAI,QAAQ,UAAU,KAAK;AAAA,EACpE;AACF;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binance direct-skill request helpers.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from server.ts. Handles direct dispatch of Binance DeFi skills
|
|
5
|
+
* (meme-rush, trading-signal, token-info, etc.) and fallback action parsing.
|
|
6
|
+
*/
|
|
7
|
+
import { type ActionParameters, type AgentRuntime, type createMessageMemory } from "@elizaos/core";
|
|
8
|
+
export type FallbackParsedAction = {
|
|
9
|
+
name: string;
|
|
10
|
+
parameters?: ActionParameters;
|
|
11
|
+
};
|
|
12
|
+
export declare function inferBalanceChainFromText(input: string): "all" | "solana" | "bsc" | "base" | "ethereum";
|
|
13
|
+
export declare function shouldForceCheckBalanceFallback(parsedActions: FallbackParsedAction[], userText: string, responseText: string): boolean;
|
|
14
|
+
export declare function isBalanceIntent(input: string): boolean;
|
|
15
|
+
export declare function parseFallbackActionBlocks(value: unknown, _responseText?: string): FallbackParsedAction[];
|
|
16
|
+
export declare function executeFallbackParsedActions(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>, parsedActions: FallbackParsedAction[], appendIncomingText: (incoming: string) => void, onActionCallback: (actionTag: string, hasText: boolean) => void, options?: {
|
|
17
|
+
getCurrentText?: () => string;
|
|
18
|
+
onCallbackText?: (incoming: string) => void;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
export declare function maybeHandleDirectBinanceSkillRequest(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>, appendIncomingText: (incoming: string) => void, replaceText?: (text: string) => void): Promise<string | null>;
|
|
21
|
+
//# sourceMappingURL=binance-skill-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binance-skill-helpers.d.ts","sourceRoot":"","sources":["../../src/api/binance-skill-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAiBvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAyFF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GACZ,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAOhD;AAED,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,oBAAoB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAWT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,oBAAoB,EAAE,CAqBxB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,aAAa,EAAE,oBAAoB,EAAE,EACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,EAC/D,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,GACA,OAAO,CAAC,IAAI,CAAC,CA4Gf;AAgrBD,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkIxB"}
|