@relai-fi/x402 0.5.39 → 0.6.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +380 -21
- package/dist/index.cjs +75 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins.cjs +21467 -45
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.d.cts +2 -1
- package/dist/plugins.d.ts +2 -1
- package/dist/plugins.js +21477 -33
- package/dist/plugins.js.map +1 -1
- package/dist/relay-feedback.cjs +86 -0
- package/dist/relay-feedback.cjs.map +1 -0
- package/dist/relay-feedback.d.cts +63 -0
- package/dist/relay-feedback.d.ts +63 -0
- package/dist/relay-feedback.js +61 -0
- package/dist/relay-feedback.js.map +1 -0
- package/dist/server-Dr3JOA0-.d.ts +713 -0
- package/dist/server-t9nKvoKl.d.cts +713 -0
- package/dist/server.cjs +15 -0
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +2 -1
- package/dist/server.d.ts +2 -1
- package/dist/server.js +15 -0
- package/dist/server.js.map +1 -1
- package/package.json +10 -1
- package/dist/server-CaSmhDnd.d.ts +0 -312
- package/dist/server-CyfEHW9D.d.cts +0 -312
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { B as BridgePluginConfig, D as DynamicPrice, F as FreeTierPluginConfig, b as PaymentInfo, g as PluginContext, h as PluginResult, P as ProtectOptions, R as Relai, d as RelaiIntegritasFlow, e as RelaiIntegritasOptions, f as RelaiPlugin, a as RelaiServerConfig, S as SettleResult, c as StripePayTo, R as default, s as stripePayTo } from './server-
|
|
1
|
+
export { B as BridgePluginConfig, D as DynamicPrice, j as FeedbackPluginConfig, F as FreeTierPluginConfig, b as PaymentInfo, g as PluginContext, h as PluginResult, P as ProtectOptions, R as Relai, d as RelaiIntegritasFlow, e as RelaiIntegritasOptions, f as RelaiPlugin, a as RelaiServerConfig, i as ScorePluginConfig, S as SettleResult, k as SolanaFeedbackPluginConfig, c as StripePayTo, R as default, s as stripePayTo } from './server-t9nKvoKl.cjs';
|
|
2
2
|
export { RelayWebSocketFactory, RelayWebSocketLike, X402Client, X402ClientConfig, X402FetchInit, X402IntegritasConfig, X402IntegritasFlow, X402NetworkSelectionMode, X402RelayWsConfig, X402RelayWsError, X402RelayWsResponse, X402RequestOptions, default as createX402Client } from './client.cjs';
|
|
3
|
+
export { RelayFeedbackConfig, submitRelayFeedback } from './relay-feedback.cjs';
|
|
3
4
|
export { A as AcceptsExtra, B as BASE_MAINNET_NETWORK, C as CAIP2_TO_NETWORK, b as CHAIN_IDS, E as EXPLORER_TX_URL, l as EvmWallet, N as NETWORK_CAIP2, e as NETWORK_LABELS, d as NETWORK_TOKENS, c as NetworkToken, P as PaymentAccept, o as PaymentRequired, R as RELAI_FACILITATOR_URL, h as RELAI_NETWORKS, a as RelaiNetwork, m as ResourceInfo, S as SOLANA_MAINNET_NETWORK, k as SolanaWallet, U as USDC_ADDRESSES, g as USDC_BASE, f as USDC_SOLANA, W as WalletSet, j as isEvm, i as isSolana, n as normalizeNetwork, r as resolveToken } from './types-Y9ni5XwY.cjs';
|
|
4
5
|
export { BridgeBalances, BridgeQuoteResult, BridgeResult } from './management.cjs';
|
|
5
6
|
export { NETWORK_V1_TO_V2, NETWORK_V2_TO_V1, convertPayloadToVersion, convertV1ToV2, convertV2ToV1, detectPayloadVersion, formatUsd, fromAtomicUnits, isEvmNetwork, isSolanaNetwork, networkV1ToV2, networkV2ToV1, normalizePaymentHeader, toAtomicUnits } from './utils/index.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { B as BridgePluginConfig, D as DynamicPrice, F as FreeTierPluginConfig, b as PaymentInfo, g as PluginContext, h as PluginResult, P as ProtectOptions, R as Relai, d as RelaiIntegritasFlow, e as RelaiIntegritasOptions, f as RelaiPlugin, a as RelaiServerConfig, S as SettleResult, c as StripePayTo, R as default, s as stripePayTo } from './server-
|
|
1
|
+
export { B as BridgePluginConfig, D as DynamicPrice, j as FeedbackPluginConfig, F as FreeTierPluginConfig, b as PaymentInfo, g as PluginContext, h as PluginResult, P as ProtectOptions, R as Relai, d as RelaiIntegritasFlow, e as RelaiIntegritasOptions, f as RelaiPlugin, a as RelaiServerConfig, i as ScorePluginConfig, S as SettleResult, k as SolanaFeedbackPluginConfig, c as StripePayTo, R as default, s as stripePayTo } from './server-Dr3JOA0-.js';
|
|
2
2
|
export { RelayWebSocketFactory, RelayWebSocketLike, X402Client, X402ClientConfig, X402FetchInit, X402IntegritasConfig, X402IntegritasFlow, X402NetworkSelectionMode, X402RelayWsConfig, X402RelayWsError, X402RelayWsResponse, X402RequestOptions, default as createX402Client } from './client.js';
|
|
3
|
+
export { RelayFeedbackConfig, submitRelayFeedback } from './relay-feedback.js';
|
|
3
4
|
export { A as AcceptsExtra, B as BASE_MAINNET_NETWORK, C as CAIP2_TO_NETWORK, b as CHAIN_IDS, E as EXPLORER_TX_URL, l as EvmWallet, N as NETWORK_CAIP2, e as NETWORK_LABELS, d as NETWORK_TOKENS, c as NetworkToken, P as PaymentAccept, o as PaymentRequired, R as RELAI_FACILITATOR_URL, h as RELAI_NETWORKS, a as RelaiNetwork, m as ResourceInfo, S as SOLANA_MAINNET_NETWORK, k as SolanaWallet, U as USDC_ADDRESSES, g as USDC_BASE, f as USDC_SOLANA, W as WalletSet, j as isEvm, i as isSolana, n as normalizeNetwork, r as resolveToken } from './types-Y9ni5XwY.js';
|
|
4
5
|
export { BridgeBalances, BridgeQuoteResult, BridgeResult } from './management.js';
|
|
5
6
|
export { NETWORK_V1_TO_V2, NETWORK_V2_TO_V1, convertPayloadToVersion, convertV1ToV2, convertV2ToV1, detectPayloadVersion, formatUsd, fromAtomicUnits, isEvmNetwork, isSolanaNetwork, networkV1ToV2, networkV2ToV1, normalizePaymentHeader, toAtomicUnits } from './utils/index.js';
|
package/dist/index.js
CHANGED
|
@@ -508,6 +508,9 @@ var Relai = class {
|
|
|
508
508
|
const self = this;
|
|
509
509
|
return async (req, res, next) => {
|
|
510
510
|
try {
|
|
511
|
+
if (req.headers["x-preflight"] === "true" || req.headers["x-preflight"] === "1") {
|
|
512
|
+
return res.status(200).json({ status: "ok", preflight: true });
|
|
513
|
+
}
|
|
511
514
|
const resolvedPrice = typeof options.price === "function" ? await options.price(req) : options.price;
|
|
512
515
|
if (typeof resolvedPrice !== "number" || !isFinite(resolvedPrice) || resolvedPrice <= 0) {
|
|
513
516
|
return res.status(400).json({ error: "Invalid price configuration" });
|
|
@@ -570,6 +573,18 @@ var Relai = class {
|
|
|
570
573
|
if (!plugin.beforePaymentCheck) continue;
|
|
571
574
|
try {
|
|
572
575
|
const pluginResult = await plugin.beforePaymentCheck(req, pluginCtx);
|
|
576
|
+
if (pluginResult?.reject) {
|
|
577
|
+
const rejectStatus = pluginResult.rejectStatus || 503;
|
|
578
|
+
if (pluginResult.headers) {
|
|
579
|
+
for (const [k, v] of Object.entries(pluginResult.headers)) {
|
|
580
|
+
res.setHeader(k, v);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
return res.status(rejectStatus).json({
|
|
584
|
+
error: pluginResult.rejectMessage || "Service unavailable",
|
|
585
|
+
plugin: plugin.name
|
|
586
|
+
});
|
|
587
|
+
}
|
|
573
588
|
if (pluginResult?.skip) {
|
|
574
589
|
if (pluginResult.headers) {
|
|
575
590
|
for (const [k, v] of Object.entries(pluginResult.headers)) {
|
|
@@ -1897,6 +1912,64 @@ function createX402Client(config) {
|
|
|
1897
1912
|
return { fetch: x402Fetch };
|
|
1898
1913
|
}
|
|
1899
1914
|
|
|
1915
|
+
// src/relay-feedback.ts
|
|
1916
|
+
import { ethers } from "ethers";
|
|
1917
|
+
var RELAY_FEEDBACK_REPUTATION_ABI = [
|
|
1918
|
+
"function giveFeedback(uint256 agentId, int128 value, uint8 valueDecimals, string tag1, string tag2, string endpoint, string feedbackURI, bytes32 feedbackHash) external"
|
|
1919
|
+
];
|
|
1920
|
+
function submitRelayFeedback(config) {
|
|
1921
|
+
const agentId = String(config.agentId);
|
|
1922
|
+
const endpoint = config.endpoint ?? "";
|
|
1923
|
+
const responseTimeMs = config.responseTimeMs ?? 0;
|
|
1924
|
+
const privateKey = config.feedbackWalletPrivateKey ?? (typeof process !== "undefined" ? process.env?.FEEDBACK_WALLET_PRIVATE_KEY ?? process.env?.ERC8004_FEEDBACK_WALLET_PRIVATE_KEY : void 0);
|
|
1925
|
+
const reputationAddress = config.reputationRegistryAddress ?? (typeof process !== "undefined" ? process.env?.ERC8004_REPUTATION_REGISTRY : void 0);
|
|
1926
|
+
const rpcUrl = config.rpcUrl ?? (typeof process !== "undefined" ? process.env?.ERC8004_RPC_URL : void 0) ?? "https://base-sepolia-testnet.skalenodes.com/v1/jubilant-horrible-ancha";
|
|
1927
|
+
if (!privateKey || !reputationAddress) {
|
|
1928
|
+
console.warn("[relai:submitRelayFeedback] FEEDBACK_WALLET_PRIVATE_KEY or ERC8004_REPUTATION_REGISTRY not set \u2014 skipping");
|
|
1929
|
+
return;
|
|
1930
|
+
}
|
|
1931
|
+
const provider = new ethers.JsonRpcProvider(rpcUrl);
|
|
1932
|
+
const signer = new ethers.Wallet(privateKey, provider);
|
|
1933
|
+
const reputation = new ethers.Contract(reputationAddress, RELAY_FEEDBACK_REPUTATION_ABI, signer);
|
|
1934
|
+
const id = BigInt(agentId);
|
|
1935
|
+
(async () => {
|
|
1936
|
+
const successValue = config.success ? 10000n : 0n;
|
|
1937
|
+
try {
|
|
1938
|
+
const srTx = await reputation.giveFeedback(
|
|
1939
|
+
id,
|
|
1940
|
+
successValue,
|
|
1941
|
+
2,
|
|
1942
|
+
"successRate",
|
|
1943
|
+
"",
|
|
1944
|
+
endpoint,
|
|
1945
|
+
"",
|
|
1946
|
+
ethers.ZeroHash
|
|
1947
|
+
);
|
|
1948
|
+
await srTx.wait();
|
|
1949
|
+
console.log(`[relai:submitRelayFeedback] successRate confirmed agentId=${agentId} success=${config.success}`);
|
|
1950
|
+
} catch (err) {
|
|
1951
|
+
console.warn(`[relai:submitRelayFeedback] successRate failed (non-fatal): ${err?.message}`);
|
|
1952
|
+
}
|
|
1953
|
+
if (responseTimeMs > 0) {
|
|
1954
|
+
try {
|
|
1955
|
+
const rtTx = await reputation.giveFeedback(
|
|
1956
|
+
id,
|
|
1957
|
+
BigInt(Math.max(0, Math.round(responseTimeMs))),
|
|
1958
|
+
0,
|
|
1959
|
+
"responseTime",
|
|
1960
|
+
"",
|
|
1961
|
+
endpoint,
|
|
1962
|
+
"",
|
|
1963
|
+
ethers.ZeroHash
|
|
1964
|
+
);
|
|
1965
|
+
console.log(`[relai:submitRelayFeedback] responseTime sent agentId=${agentId} ms=${responseTimeMs} tx=${rtTx.hash}`);
|
|
1966
|
+
} catch (err) {
|
|
1967
|
+
console.warn(`[relai:submitRelayFeedback] responseTime failed (non-fatal): ${err?.message}`);
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
})();
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1900
1973
|
// src/utils/payload-converter.ts
|
|
1901
1974
|
var NETWORK_V1_TO_V2 = {
|
|
1902
1975
|
"solana": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
|
|
@@ -2071,6 +2144,7 @@ export {
|
|
|
2071
2144
|
normalizePaymentHeader,
|
|
2072
2145
|
resolveToken,
|
|
2073
2146
|
stripePayTo,
|
|
2147
|
+
submitRelayFeedback,
|
|
2074
2148
|
toAtomicUnits
|
|
2075
2149
|
};
|
|
2076
2150
|
//# sourceMappingURL=index.js.map
|