opentool 0.8.1 → 0.8.3

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/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { B as BuildConfig, m as BuildMetadata, H as HTTP_METHODS, f as HttpHandl
4
4
  import { z, ZodSchema } from 'zod';
5
5
  export { CurrencySpec, DEFAULT_FACILITATOR, DefineX402PaymentConfig, EIP3009Authorization, PAYMENT_HEADERS, RequireX402PaymentOptions, RequireX402PaymentOutcome, RequireX402PaymentSuccess, SUPPORTED_CURRENCIES, X402BrowserClient, X402BrowserClientConfig, X402Client, X402ClientConfig, X402FacilitatorConfig, X402PayRequest, X402PayResult, X402Payment, X402PaymentContext, X402PaymentDefinition, X402PaymentRequiredError, X402VerificationResult, defineX402Payment, getX402PaymentContext, payX402, payX402WithWallet, requireX402Payment, withX402Payment } from './x402/index.js';
6
6
  export { DEFAULT_CHAIN, DEFAULT_TOKENS, chains, getRpcUrl, registry, tokens, wallet, walletToolkit } from './wallet/index.js';
7
- export { HyperliquidApiError, HyperliquidApproveBuilderFeeOptions, HyperliquidApproveBuilderFeeResponse, HyperliquidBuilderApprovalError, HyperliquidBuilderApprovalRecordInput, HyperliquidBuilderFee, HyperliquidClearinghouseState, HyperliquidDepositResult, HyperliquidEnvironment, HyperliquidExchangeClient, HyperliquidExchangeResponse, HyperliquidGrouping, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidOrderIntent, HyperliquidOrderOptions, HyperliquidOrderResponse, HyperliquidOrderStatus, HyperliquidTermsError, HyperliquidTermsRecordInput, HyperliquidTriggerOptions, HyperliquidTriggerType, HyperliquidWithdrawResult, NonceSource, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, scheduleHyperliquidCancel, sendHyperliquidSpot, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid } from './adapters/hyperliquid/index.js';
7
+ export { HyperliquidApiError, HyperliquidApproveBuilderFeeOptions, HyperliquidApproveBuilderFeeResponse, HyperliquidBuilderApprovalError, HyperliquidBuilderApprovalRecordInput, HyperliquidBuilderFee, HyperliquidClearinghouseState, HyperliquidDepositResult, HyperliquidEnvironment, HyperliquidExchangeClient, HyperliquidExchangeResponse, HyperliquidGrouping, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidOrderIntent, HyperliquidOrderOptions, HyperliquidOrderResponse, HyperliquidOrderStatus, HyperliquidTermsError, HyperliquidTermsRecordInput, HyperliquidTriggerOptions, HyperliquidTriggerType, HyperliquidWithdrawResult, NonceSource, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidPortfolioMargin, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid } from './adapters/hyperliquid/index.js';
8
8
  export { AIAbortError, AIClientConfig, AIError, AIFetchError, AIRequestMetadata, AIResponseError, ChatCompletionChoice, ChatCompletionLogProbs, ChatCompletionResponse, ChatCompletionUsage, ChatMessage, ChatMessageContentPart, ChatMessageContentPartImageUrl, ChatMessageContentPartText, ChatMessageRole, DEFAULT_BASE_URL, DEFAULT_MODEL, DEFAULT_TIMEOUT_MS, FunctionToolDefinition, GenerateTextOptions, GenerateTextResult, GenerationParameters, JsonSchema, ResolvedAIClientConfig, ResponseErrorDetails, StreamTextOptions, StreamTextResult, StreamingEventHandlers, ToolChoice, ToolDefinition, ToolExecutionPolicy, WEBSEARCH_TOOL_DEFINITION, WEBSEARCH_TOOL_NAME, WebSearchOptions, createAIClient, ensureTextContent, flattenMessageContent, generateText, getModelConfig, isStreamingSupported, isToolCallingSupported, listModels, normalizeModelName, resolveConfig, resolveToolset, streamText } from './ai/index.js';
9
9
  export { StoreAction, StoreError, StoreEventInput, StoreOptions, StoreResponse, StoreRetrieveParams, StoreRetrieveResult, retrieve, store } from './store/index.js';
10
10
  export { C as ChainMetadata, i as ChainReference, a as ChainTokenMap, H as Hex, g as HexAddress, R as RpcProviderOptions, h as RpcUrlResolver, T as TokenMetadata, l as TurnkeyOptions, k as TurnkeySignWith, r as WalletBaseContext, s as WalletContext, c as WalletFullContext, n as WalletOptions, m as WalletOptionsBase, b as WalletPrivateKeyOptions, j as WalletProviderType, f as WalletReadonlyContext, e as WalletReadonlyOptions, W as WalletRegistry, o as WalletSendTransactionParams, q as WalletSignerContext, p as WalletTransferParams, d as WalletTurnkeyOptions } from './types-BVLpaY4O.js';
package/dist/index.js CHANGED
@@ -1479,6 +1479,29 @@ async function createTurnkeyProvider(config) {
1479
1479
  };
1480
1480
  }
1481
1481
 
1482
+ // src/wallet/env.ts
1483
+ function readTrimmed(name) {
1484
+ const value = process.env[name];
1485
+ const trimmed = typeof value === "string" ? value.trim() : "";
1486
+ return trimmed.length ? trimmed : void 0;
1487
+ }
1488
+ function readTurnkeyEnv() {
1489
+ const suborgId = readTrimmed("TURNKEY_SUBORG_ID");
1490
+ if (!suborgId) return void 0;
1491
+ const apiPublicKey = readTrimmed("TURNKEY_API_PUBLIC_KEY");
1492
+ const apiPrivateKey = readTrimmed("TURNKEY_API_PRIVATE_KEY");
1493
+ const signWith = readTrimmed("TURNKEY_WALLET_ADDRESS");
1494
+ if (!apiPublicKey || !apiPrivateKey || !signWith) return void 0;
1495
+ const apiBaseUrl = readTrimmed("TURNKEY_API_BASE_URL");
1496
+ return {
1497
+ organizationId: suborgId,
1498
+ apiPublicKey,
1499
+ apiPrivateKey,
1500
+ signWith,
1501
+ ...apiBaseUrl ? { apiBaseUrl } : {}
1502
+ };
1503
+ }
1504
+
1482
1505
  // src/wallet/index.ts
1483
1506
  function resolveChainSlug(reference) {
1484
1507
  if (reference === void 0) {
@@ -1522,22 +1545,9 @@ function getRpcUrl(chain, options) {
1522
1545
  }
1523
1546
  async function wallet(options = {}) {
1524
1547
  const envPrivateKey = process.env.PRIVATE_KEY?.trim();
1525
- const envTurnkey = {
1526
- organizationId: process.env.TURNKEY_SUBORG_ID?.trim(),
1527
- apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY?.trim(),
1528
- apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY?.trim(),
1529
- signWith: process.env.TURNKEY_WALLET_ADDRESS?.trim(),
1530
- apiBaseUrl: process.env.TURNKEY_API_BASE_URL?.trim()
1531
- };
1548
+ const envTurnkey = readTurnkeyEnv();
1532
1549
  const effectivePrivateKey = options.privateKey ?? envPrivateKey;
1533
- const hasTurnkeyEnv = envTurnkey.organizationId && envTurnkey.apiPublicKey && envTurnkey.apiPrivateKey && envTurnkey.signWith;
1534
- const effectiveTurnkey = options.turnkey ?? (hasTurnkeyEnv ? {
1535
- organizationId: envTurnkey.organizationId,
1536
- apiPublicKey: envTurnkey.apiPublicKey,
1537
- apiPrivateKey: envTurnkey.apiPrivateKey,
1538
- signWith: envTurnkey.signWith,
1539
- ...envTurnkey.apiBaseUrl ? { apiBaseUrl: envTurnkey.apiBaseUrl } : {}
1540
- } : void 0);
1550
+ const effectiveTurnkey = options.turnkey ?? envTurnkey;
1541
1551
  if (effectivePrivateKey && effectiveTurnkey) {
1542
1552
  throw new Error("wallet() cannot be initialized with both privateKey and turnkey credentials");
1543
1553
  }
@@ -1957,6 +1967,37 @@ async function signApproveBuilderFee(args) {
1957
1967
  });
1958
1968
  return splitSignature(signatureHex);
1959
1969
  }
1970
+ async function signUserPortfolioMargin(args) {
1971
+ const { wallet: wallet2, action } = args;
1972
+ const domain = {
1973
+ name: "HyperliquidSignTransaction",
1974
+ version: "1",
1975
+ chainId: Number.parseInt(action.signatureChainId, 16),
1976
+ verifyingContract: ZERO_ADDRESS
1977
+ };
1978
+ const message = {
1979
+ enabled: action.enabled,
1980
+ hyperliquidChain: action.hyperliquidChain,
1981
+ user: action.user,
1982
+ nonce: BigInt(action.nonce)
1983
+ };
1984
+ const types = {
1985
+ "HyperliquidTransaction:UserPortfolioMargin": [
1986
+ { name: "enabled", type: "bool" },
1987
+ { name: "hyperliquidChain", type: "string" },
1988
+ { name: "user", type: "address" },
1989
+ { name: "nonce", type: "uint64" }
1990
+ ]
1991
+ };
1992
+ const signatureHex = await wallet2.walletClient.signTypedData({
1993
+ account: wallet2.account,
1994
+ domain,
1995
+ types,
1996
+ primaryType: "HyperliquidTransaction:UserPortfolioMargin",
1997
+ message
1998
+ });
1999
+ return splitSignature(signatureHex);
2000
+ }
1960
2001
  function splitSignature(signature) {
1961
2002
  const cleaned = signature.slice(2);
1962
2003
  const rHex = `0x${cleaned.slice(0, 64)}`;
@@ -2157,7 +2198,58 @@ var HyperliquidExchangeClient = class {
2157
2198
  ...params
2158
2199
  });
2159
2200
  }
2201
+ setPortfolioMargin(params) {
2202
+ const base2 = {
2203
+ wallet: this.wallet,
2204
+ enabled: params.enabled,
2205
+ environment: this.environment,
2206
+ vaultAddress: this.vaultAddress,
2207
+ expiresAfter: this.expiresAfter,
2208
+ nonceSource: this.nonceSource
2209
+ };
2210
+ return setHyperliquidPortfolioMargin(
2211
+ params.user ? { ...base2, user: params.user } : base2
2212
+ );
2213
+ }
2160
2214
  };
2215
+ async function setHyperliquidPortfolioMargin(options) {
2216
+ const env = options.environment ?? "mainnet";
2217
+ if (!options.wallet?.account || !options.wallet.walletClient) {
2218
+ throw new Error(
2219
+ "Wallet with signing capability is required for portfolio margin."
2220
+ );
2221
+ }
2222
+ const nonce = options.nonce ?? options.walletNonceProvider?.() ?? options.wallet.nonceSource?.() ?? options.nonceSource?.() ?? Date.now();
2223
+ const signatureChainId = getSignatureChainId(env);
2224
+ const hyperliquidChain = HL_CHAIN_LABEL[env];
2225
+ const user = normalizeAddress(
2226
+ options.user ?? options.wallet.address
2227
+ );
2228
+ const action = {
2229
+ type: "userPortfolioMargin",
2230
+ enabled: Boolean(options.enabled),
2231
+ hyperliquidChain,
2232
+ signatureChainId,
2233
+ user,
2234
+ nonce
2235
+ };
2236
+ const signature = await signUserPortfolioMargin({
2237
+ wallet: options.wallet,
2238
+ action
2239
+ });
2240
+ const body = {
2241
+ action,
2242
+ nonce,
2243
+ signature
2244
+ };
2245
+ if (options.vaultAddress) {
2246
+ body.vaultAddress = normalizeAddress(options.vaultAddress);
2247
+ }
2248
+ if (typeof options.expiresAfter === "number") {
2249
+ body.expiresAfter = options.expiresAfter;
2250
+ }
2251
+ return postExchange(env, body);
2252
+ }
2161
2253
  async function cancelHyperliquidOrders(options) {
2162
2254
  options.cancels.forEach((c) => assertSymbol(c.symbol));
2163
2255
  const action = {
@@ -2480,15 +2572,35 @@ async function postExchange(env, body) {
2480
2572
  headers: { "content-type": "application/json" },
2481
2573
  body: JSON.stringify(body)
2482
2574
  });
2483
- const json = await response.json().catch(() => null);
2484
- if (!response.ok || !json) {
2485
- throw new HyperliquidApiError(
2486
- "Hyperliquid exchange action failed.",
2487
- json ?? { status: response.status }
2488
- );
2575
+ const text = await response.text().catch(() => "");
2576
+ const json = (() => {
2577
+ if (!text) return null;
2578
+ try {
2579
+ return JSON.parse(text);
2580
+ } catch {
2581
+ return null;
2582
+ }
2583
+ })();
2584
+ if (!response.ok) {
2585
+ throw new HyperliquidApiError("Hyperliquid exchange action failed.", {
2586
+ status: response.status,
2587
+ statusText: response.statusText,
2588
+ body: json ?? (text ? text : null)
2589
+ });
2590
+ }
2591
+ if (!json) {
2592
+ throw new HyperliquidApiError("Hyperliquid exchange action failed.", {
2593
+ status: response.status,
2594
+ statusText: response.statusText,
2595
+ body: text ? text : null
2596
+ });
2489
2597
  }
2490
2598
  if (json.status !== "ok") {
2491
- throw new HyperliquidApiError("Hyperliquid exchange returned error.", json);
2599
+ throw new HyperliquidApiError("Hyperliquid exchange returned error.", {
2600
+ status: response.status,
2601
+ statusText: response.statusText,
2602
+ body: json
2603
+ });
2492
2604
  }
2493
2605
  return json;
2494
2606
  }
@@ -4656,6 +4768,6 @@ function timestamp() {
4656
4768
  return (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19);
4657
4769
  }
4658
4770
 
4659
- export { AIAbortError, AIError, AIFetchError, AIResponseError, DEFAULT_BASE_URL, DEFAULT_CHAIN, DEFAULT_FACILITATOR, DEFAULT_MODEL, DEFAULT_TIMEOUT_MS, DEFAULT_TOKENS, HTTP_METHODS2 as HTTP_METHODS, HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, PAYMENT_HEADERS, SUPPORTED_CURRENCIES, StoreError, WEBSEARCH_TOOL_DEFINITION, WEBSEARCH_TOOL_NAME, X402BrowserClient, X402Client, X402PaymentRequiredError, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, chains, createAIClient, createDevServer, createHyperliquidSubAccount, createMcpAdapter, createMonotonicNonceFactory, createStdioServer, defineX402Payment, depositToHyperliquidBridge, ensureTextContent, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, flattenMessageContent, generateMetadata, generateMetadataCommand, generateText, getHyperliquidMaxBuilderFee, getModelConfig, getRpcUrl, getX402PaymentContext, isStreamingSupported, isToolCallingSupported, listModels, loadAndValidateTools, modifyHyperliquidOrder, normalizeModelName, payX402, payX402WithWallet, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, registry, requireX402Payment, reserveHyperliquidRequestWeight, resolveConfig2 as resolveConfig, resolveRuntimePath, resolveToolset, responseToToolResponse, retrieve, scheduleHyperliquidCancel, sendHyperliquidSpot, store, streamText, tokens, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, validateCommand, wallet, walletToolkit, withX402Payment, withdrawFromHyperliquid };
4771
+ export { AIAbortError, AIError, AIFetchError, AIResponseError, DEFAULT_BASE_URL, DEFAULT_CHAIN, DEFAULT_FACILITATOR, DEFAULT_MODEL, DEFAULT_TIMEOUT_MS, DEFAULT_TOKENS, HTTP_METHODS2 as HTTP_METHODS, HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, PAYMENT_HEADERS, SUPPORTED_CURRENCIES, StoreError, WEBSEARCH_TOOL_DEFINITION, WEBSEARCH_TOOL_NAME, X402BrowserClient, X402Client, X402PaymentRequiredError, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, chains, createAIClient, createDevServer, createHyperliquidSubAccount, createMcpAdapter, createMonotonicNonceFactory, createStdioServer, defineX402Payment, depositToHyperliquidBridge, ensureTextContent, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, flattenMessageContent, generateMetadata, generateMetadataCommand, generateText, getHyperliquidMaxBuilderFee, getModelConfig, getRpcUrl, getX402PaymentContext, isStreamingSupported, isToolCallingSupported, listModels, loadAndValidateTools, modifyHyperliquidOrder, normalizeModelName, payX402, payX402WithWallet, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, registry, requireX402Payment, reserveHyperliquidRequestWeight, resolveConfig2 as resolveConfig, resolveRuntimePath, resolveToolset, responseToToolResponse, retrieve, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidPortfolioMargin, store, streamText, tokens, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, validateCommand, wallet, walletToolkit, withX402Payment, withdrawFromHyperliquid };
4660
4772
  //# sourceMappingURL=index.js.map
4661
4773
  //# sourceMappingURL=index.js.map