@sodax/dapp-kit 2.0.0-rc.2 → 2.0.0-rc.21
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 +29 -74
- package/dist/index.d.ts +780 -58
- package/dist/index.mjs +841 -143
- package/package.json +31 -19
- package/src/hooks/_mutationContract.test.ts +15 -2
- package/src/hooks/backend/index.ts +1 -5
- package/src/hooks/bitcoin/index.ts +2 -0
- package/src/hooks/bitcoin/resolveBtcReadAddress.test.ts +54 -0
- package/src/hooks/bitcoin/resolveBtcReadAddress.ts +21 -0
- package/src/hooks/bitcoin/useBitcoinTradingSetup.ts +45 -0
- package/src/hooks/bitcoin/useEnsureRadfiAccessToken.ts +57 -0
- package/src/hooks/bitcoin/useFundTradingWallet.ts +1 -1
- package/src/hooks/bitcoin/useRadfiAuth.ts +2 -2
- package/src/hooks/bitcoin/useRadfiWithdraw.ts +2 -2
- package/src/hooks/bitcoin/useRenewUtxos.ts +2 -2
- package/src/hooks/bitcoin/useTradingWallet.ts +1 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/leverageYield/index.ts +9 -0
- package/src/hooks/leverageYield/useLeverageYieldDeposit.ts +40 -0
- package/src/hooks/leverageYield/useLeverageYieldEffectiveApr.ts +42 -0
- package/src/hooks/leverageYield/useLeverageYieldNotifySolver.ts +34 -0
- package/src/hooks/leverageYield/useLeverageYieldPosition.ts +40 -0
- package/src/hooks/leverageYield/useLeverageYieldPreviewRedeem.ts +43 -0
- package/src/hooks/leverageYield/useLeverageYieldShareBalances.ts +74 -0
- package/src/hooks/leverageYield/useLeverageYieldTotalAssets.ts +36 -0
- package/src/hooks/leverageYield/useLeverageYieldVaultSwap.ts +50 -0
- package/src/hooks/leverageYield/useLeverageYieldWithdraw.ts +40 -0
- package/src/hooks/mm/useATokensBalances.ts +7 -1
- package/src/hooks/mm/useUserFormattedSummary.ts +5 -1
- package/src/hooks/mm/useUserReservesData.ts +5 -1
- package/src/hooks/partner/index.ts +4 -0
- package/src/hooks/partner/useFeeClaimWithdraw.ts +88 -0
- package/src/hooks/partner/useGetIntentDetails.ts +39 -0
- package/src/hooks/partner/useGetUserIntent.ts +35 -0
- package/src/hooks/partner/usePartnerCancelIntent.ts +52 -0
- package/src/hooks/shared/index.ts +4 -0
- package/src/hooks/shared/isUserRejectedError.test.ts +42 -0
- package/src/hooks/shared/isUserRejectedError.ts +30 -0
- package/src/hooks/shared/useGetUserHubWalletAddress.ts +5 -1
- package/src/hooks/shared/useNearStorageCheck.ts +45 -0
- package/src/hooks/shared/useNearStorageGate.ts +60 -0
- package/src/hooks/shared/useRegisterNearStorage.ts +46 -0
- package/src/hooks/swapsApi/index.ts +41 -0
- package/src/hooks/swapsApi/isTerminalSwapIntentStatus.test.ts +24 -0
- package/src/hooks/swapsApi/isTerminalSwapIntentStatus.ts +11 -0
- package/src/hooks/swapsApi/useSwapsApiAllowance.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiApprove.ts +42 -0
- package/src/hooks/swapsApi/useSwapsApiCancelIntent.ts +41 -0
- package/src/hooks/swapsApi/useSwapsApiCreateIntent.ts +41 -0
- package/src/hooks/swapsApi/useSwapsApiCreateLimitOrder.ts +41 -0
- package/src/hooks/swapsApi/useSwapsApiDeadline.ts +36 -0
- package/src/hooks/swapsApi/useSwapsApiEstimateGas.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiFilledIntent.ts +41 -0
- package/src/hooks/swapsApi/useSwapsApiIntent.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiIntentExtraData.ts +41 -0
- package/src/hooks/swapsApi/useSwapsApiIntentHash.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiIntentPacket.ts +43 -0
- package/src/hooks/swapsApi/useSwapsApiPartnerFee.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiQuote.ts +55 -0
- package/src/hooks/swapsApi/useSwapsApiSolverFee.ts +40 -0
- package/src/hooks/swapsApi/useSwapsApiStatus.ts +45 -0
- package/src/hooks/swapsApi/useSwapsApiSubmitIntent.ts +43 -0
- package/src/hooks/{backend/useBackendSubmitSwapTx.ts → swapsApi/useSwapsApiSubmitTx.ts} +16 -17
- package/src/hooks/swapsApi/useSwapsApiSubmitTxStatus.ts +55 -0
- package/src/hooks/swapsApi/useSwapsApiTokens.ts +34 -0
- package/src/hooks/swapsApi/useSwapsApiTokensByChain.ts +40 -0
- package/src/providers/SodaxProvider.tsx +17 -14
- package/src/utils/index.ts +1 -0
- package/src/utils/nearStorageGate.test.ts +46 -0
- package/src/utils/nearStorageGate.ts +39 -0
- package/ai-exported/AGENTS.md +0 -134
- package/ai-exported/integration/README.md +0 -49
- package/ai-exported/integration/ai-rules.md +0 -79
- package/ai-exported/integration/architecture.md +0 -274
- package/ai-exported/integration/features/README.md +0 -29
- package/ai-exported/integration/features/auxiliary-services.md +0 -169
- package/ai-exported/integration/features/bitcoin.md +0 -87
- package/ai-exported/integration/features/bridge.md +0 -91
- package/ai-exported/integration/features/dex.md +0 -152
- package/ai-exported/integration/features/migration.md +0 -118
- package/ai-exported/integration/features/money-market.md +0 -116
- package/ai-exported/integration/features/staking.md +0 -123
- package/ai-exported/integration/features/swap.md +0 -101
- package/ai-exported/integration/quickstart.md +0 -187
- package/ai-exported/integration/recipes/README.md +0 -136
- package/ai-exported/integration/recipes/backend-queries.md +0 -157
- package/ai-exported/integration/recipes/bitcoin.md +0 -193
- package/ai-exported/integration/recipes/bridge.md +0 -174
- package/ai-exported/integration/recipes/dex.md +0 -204
- package/ai-exported/integration/recipes/invalidations.md +0 -115
- package/ai-exported/integration/recipes/migration.md +0 -212
- package/ai-exported/integration/recipes/money-market.md +0 -206
- package/ai-exported/integration/recipes/mutation-error-handling.md +0 -118
- package/ai-exported/integration/recipes/observability.md +0 -93
- package/ai-exported/integration/recipes/setup.md +0 -144
- package/ai-exported/integration/recipes/staking.md +0 -202
- package/ai-exported/integration/recipes/swap.md +0 -272
- package/ai-exported/integration/recipes/wallet-connectivity.md +0 -101
- package/ai-exported/integration/reference/README.md +0 -12
- package/ai-exported/integration/reference/glossary.md +0 -188
- package/ai-exported/integration/reference/hooks-index.md +0 -190
- package/ai-exported/integration/reference/public-api.md +0 -110
- package/ai-exported/integration/reference/querykey-conventions.md +0 -179
- package/ai-exported/migration/README.md +0 -60
- package/ai-exported/migration/ai-rules.md +0 -81
- package/ai-exported/migration/breaking-changes/hook-signatures.md +0 -233
- package/ai-exported/migration/breaking-changes/querykey-conventions.md +0 -108
- package/ai-exported/migration/breaking-changes/result-handling.md +0 -211
- package/ai-exported/migration/breaking-changes/sdk-leakage.md +0 -165
- package/ai-exported/migration/checklist.md +0 -89
- package/ai-exported/migration/features/README.md +0 -34
- package/ai-exported/migration/features/auxiliary-services.md +0 -114
- package/ai-exported/migration/features/bitcoin.md +0 -88
- package/ai-exported/migration/features/bridge.md +0 -123
- package/ai-exported/migration/features/dex.md +0 -101
- package/ai-exported/migration/features/migration.md +0 -120
- package/ai-exported/migration/features/money-market.md +0 -97
- package/ai-exported/migration/features/staking.md +0 -109
- package/ai-exported/migration/features/swap.md +0 -118
- package/ai-exported/migration/recipes.md +0 -188
- package/ai-exported/migration/reference/README.md +0 -15
- package/ai-exported/migration/reference/deleted-hooks.md +0 -110
- package/ai-exported/migration/reference/error-shape-crosswalk.md +0 -144
- package/ai-exported/migration/reference/renamed-hooks.md +0 -66
- package/dist/index.cjs +0 -2642
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1550
- package/dist/index.mjs.map +0 -1
- package/src/hooks/backend/useBackendSubmitSwapTxStatus.ts +0 -59
package/README.md
CHANGED
|
@@ -10,10 +10,10 @@ High-level React hooks library for dApp developers. Wraps `@sodax/sdk` with Reac
|
|
|
10
10
|
- **Staking** — `useStake`, `useUnstake`, `useInstantUnstake`, `useClaim`, `useCancelUnstake`, approval hooks, info/config/ratio queries
|
|
11
11
|
- **DEX** — `useDexDeposit`, `useDexWithdraw`, `useSupplyLiquidity`, `useDecreaseLiquidity`, `useClaimRewards`, pool/position queries, param builders
|
|
12
12
|
- **Migration** — `useMigrateIcxToSoda`, `useRevertMigrateSodaToIcx`, `useMigratebnUSD`, `useMigrateBaln`, `useMigrationApprove`, `useMigrationAllowance`
|
|
13
|
-
- **Bitcoin (
|
|
13
|
+
- **Bitcoin (Bound Exchange)** — `useRadfiAuth`, `useRadfiSession`, `useTradingWallet`, `useTradingWalletBalance`, `useBitcoinBalance`, `useFundTradingWallet`, `useRadfiWithdraw`, `useExpiredUtxos`, `useRenewUtxos`
|
|
14
14
|
- **Partner** — `useFetchAssetsBalances`, `useGetAutoSwapPreferences`, `useIsTokenApproved`, `useApproveToken`, `useSetSwapPreference`, `useFeeClaimSwap`
|
|
15
15
|
- **Recovery** — `useHubAssetBalances`, `useWithdrawHubAsset`
|
|
16
|
-
- **Backend Queries** — Intent tracking, orderbook, money market position queries
|
|
16
|
+
- **Backend Queries** — Intent tracking, swap-tx submission + status, orderbook, money market position queries
|
|
17
17
|
- **Shared** — `useXBalances`, `useDeriveUserWalletAddress`, `useGetUserHubWalletAddress`, `useStellarTrustlineCheck`, `useRequestTrustline`, `useEstimateGas`
|
|
18
18
|
|
|
19
19
|
## Installation
|
|
@@ -35,11 +35,11 @@ RPC URLs are injected through `config.chains`. `SodaxProvider` is the outermost
|
|
|
35
35
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
36
36
|
import { SodaxProvider, createSodaxQueryClient } from '@sodax/dapp-kit';
|
|
37
37
|
import { SodaxWalletProvider, type SodaxWalletConfig } from '@sodax/wallet-sdk-react';
|
|
38
|
-
import { ChainKeys, type
|
|
38
|
+
import { ChainKeys, type SodaxOptions } from '@sodax/sdk';
|
|
39
39
|
|
|
40
40
|
const queryClient = createSodaxQueryClient();
|
|
41
41
|
|
|
42
|
-
const sodaxConfig:
|
|
42
|
+
const sodaxConfig: SodaxOptions = {
|
|
43
43
|
chains: {
|
|
44
44
|
[ChainKeys.SONIC_MAINNET]: { rpcUrl: 'https://sonic-rpc.publicnode.com' },
|
|
45
45
|
[ChainKeys.BSC_MAINNET]: { rpcUrl: 'https://bsc-dataseed.binance.org' },
|
|
@@ -117,7 +117,7 @@ function SwapButton({ intentParams }: { intentParams: CreateIntentParams }) {
|
|
|
117
117
|
|
|
118
118
|
## Requirements
|
|
119
119
|
|
|
120
|
-
- Node.js >=
|
|
120
|
+
- Node.js >= 20.12.0
|
|
121
121
|
- React >= 18
|
|
122
122
|
- TypeScript
|
|
123
123
|
|
|
@@ -125,7 +125,7 @@ function SwapButton({ intentParams }: { intentParams: CreateIntentParams }) {
|
|
|
125
125
|
|
|
126
126
|
### Provider
|
|
127
127
|
|
|
128
|
-
- [`SodaxProvider`](src/providers/SodaxProvider.tsx) — Wraps your app, creates the `Sodax` SDK instance. Accepts `config?:
|
|
128
|
+
- [`SodaxProvider`](src/providers/SodaxProvider.tsx) — Wraps your app, creates the `Sodax` SDK instance. Accepts `config?: SodaxOptions`.
|
|
129
129
|
- [`createSodaxQueryClient()`](src/providers/createSodaxQueryClient.ts) — Factory for a `QueryClient` with global mutation observability (`onMutationError` hook, `meta.silent` opt-out).
|
|
130
130
|
|
|
131
131
|
### Swap Hooks
|
|
@@ -213,13 +213,13 @@ function SwapButton({ intentParams }: { intentParams: CreateIntentParams }) {
|
|
|
213
213
|
- [`useMigrationApprove()`](src/hooks/migrate/useMigrationApprove.ts) — Approve token spending before migration
|
|
214
214
|
- [`useMigrationAllowance()`](src/hooks/migrate/useMigrationAllowance.ts) — Check if approval is needed
|
|
215
215
|
|
|
216
|
-
### Bitcoin (
|
|
216
|
+
### Bitcoin (Bound Exchange) Hooks
|
|
217
217
|
|
|
218
|
-
- [`useRadfiSession()`](src/hooks/bitcoin/useRadfiSession.ts) — Manage
|
|
219
|
-
- [`useRadfiAuth()`](src/hooks/bitcoin/useRadfiAuth.ts) — Authenticate with
|
|
218
|
+
- [`useRadfiSession()`](src/hooks/bitcoin/useRadfiSession.ts) — Manage Bound Exchange session (login, auto-refresh)
|
|
219
|
+
- [`useRadfiAuth()`](src/hooks/bitcoin/useRadfiAuth.ts) — Authenticate with Bound Exchange via BIP322 signing
|
|
220
220
|
- [`useTradingWallet()`](src/hooks/bitcoin/useTradingWallet.ts) — Get trading wallet address from persisted session
|
|
221
221
|
- [`useBitcoinBalance()`](src/hooks/bitcoin/useBitcoinBalance.ts) — BTC balance for any address
|
|
222
|
-
- [`useTradingWalletBalance()`](src/hooks/bitcoin/useTradingWalletBalance.ts) — Trading wallet balance from
|
|
222
|
+
- [`useTradingWalletBalance()`](src/hooks/bitcoin/useTradingWalletBalance.ts) — Trading wallet balance from Bound Exchange API
|
|
223
223
|
- [`useFundTradingWallet()`](src/hooks/bitcoin/useFundTradingWallet.ts) — Fund trading wallet from personal wallet
|
|
224
224
|
- [`useRadfiWithdraw()`](src/hooks/bitcoin/useRadfiWithdraw.ts) — Withdraw from trading wallet
|
|
225
225
|
- [`useExpiredUtxos()`](src/hooks/bitcoin/useExpiredUtxos.ts) — Fetch expired UTXOs (polls every 60s)
|
|
@@ -262,8 +262,17 @@ function SwapButton({ intentParams }: { intentParams: CreateIntentParams }) {
|
|
|
262
262
|
- [`useBackendMoneyMarketAssetBorrowers()`](src/hooks/backend/useBackendMoneyMarketAssetBorrowers.ts) — Asset borrowers
|
|
263
263
|
- [`useBackendMoneyMarketAssetSuppliers()`](src/hooks/backend/useBackendMoneyMarketAssetSuppliers.ts) — Asset suppliers
|
|
264
264
|
- [`useBackendAllMoneyMarketBorrowers()`](src/hooks/backend/useBackendAllMoneyMarketBorrowers.ts) — All borrowers
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
|
|
266
|
+
### Swaps API Hooks (`sodax.api.swaps`)
|
|
267
|
+
|
|
268
|
+
Typed wrappers over the backend Swaps API v2 — one `useSwapsApi*` hook per endpoint (21 total). Highlights:
|
|
269
|
+
|
|
270
|
+
- [`useSwapsApiQuote()`](src/hooks/swapsApi/useSwapsApiQuote.ts) — Solver quote for a cross-chain swap
|
|
271
|
+
- [`useSwapsApiCreateIntent()`](src/hooks/swapsApi/useSwapsApiCreateIntent.ts) — Build an unsigned create-intent tx
|
|
272
|
+
- [`useSwapsApiSubmitTx()`](src/hooks/swapsApi/useSwapsApiSubmitTx.ts) — Submit swap tx to backend
|
|
273
|
+
- [`useSwapsApiSubmitTxStatus()`](src/hooks/swapsApi/useSwapsApiSubmitTxStatus.ts) — Check submitted swap status
|
|
274
|
+
|
|
275
|
+
See [`src/hooks/swapsApi/`](src/hooks/swapsApi/) for the full set (tokens, deadline, allowance, approve, submit/cancel intent, status, hash, packet, extra-data, intent lookups, limit orders, gas, fees).
|
|
267
276
|
|
|
268
277
|
### DEX Utils
|
|
269
278
|
|
|
@@ -286,75 +295,21 @@ pnpm lint # Lint code
|
|
|
286
295
|
|
|
287
296
|
## AI agent docs
|
|
288
297
|
|
|
289
|
-
`@sodax/dapp-kit`
|
|
290
|
-
|
|
291
|
-
### Get started
|
|
298
|
+
AI-readable docs for `@sodax/dapp-kit` (and the other `@sodax/*` packages) are shipped via [`@sodax/skills`](https://github.com/icon-project/sodax-sdks/tree/main/packages/skills) — a separate npm package bundling Claude-Code SKILL.md files and a long-form knowledge tree.
|
|
292
299
|
|
|
293
|
-
|
|
300
|
+
**Recommended: [`skills` CLI](https://github.com/vercel-labs/skills)** — from your project root:
|
|
294
301
|
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
> SODAX cross-chain swaps into my React app.
|
|
298
|
-
|
|
299
|
-
> Read node_modules/@sodax/dapp-kit/ai-exported/AGENTS.md. My app uses
|
|
300
|
-
> v1 dapp-kit (useSpokeProvider, custom approve return shapes) — port to v2.
|
|
301
|
-
|
|
302
|
-
> Look up the canonical mutation hook shape in
|
|
303
|
-
> node_modules/@sodax/dapp-kit/ai-exported/integration/architecture.md.
|
|
302
|
+
```bash
|
|
303
|
+
npx skills@latest add icon-project/sodax-sdks/packages/skills
|
|
304
304
|
```
|
|
305
305
|
|
|
306
|
-
|
|
306
|
+
**npm + `AGENTS.md` pointer** (fallback for web chats, or when you prefer a devDependency over the CLI):
|
|
307
307
|
|
|
308
|
+
```bash
|
|
309
|
+
pnpm add -D @sodax/skills
|
|
308
310
|
```
|
|
309
|
-
ai-exported/
|
|
310
|
-
├── AGENTS.md # Tool-neutral entry point — start here
|
|
311
|
-
├── integration/ # Building NEW v2 dapp-kit code
|
|
312
|
-
│ ├── README.md, ai-rules.md # Index + DO / DO NOT / workflow for agents
|
|
313
|
-
│ ├── quickstart.md # Install + wire providers + first feature
|
|
314
|
-
│ ├── architecture.md # Hook shapes, queryKey conventions, useSafeMutation, mutateAsyncSafe
|
|
315
|
-
│ ├── features/ # 8 feature pages: swap, money-market, staking, bridge,
|
|
316
|
-
│ │ # dex, migration, bitcoin (Radfi), auxiliary-services
|
|
317
|
-
│ ├── recipes/ # 13 patterns: setup, wallet-connectivity, per-feature flows,
|
|
318
|
-
│ │ # mutation error handling, observability, invalidations
|
|
319
|
-
│ └── reference/ # 4 lookup tables: full hook index, queryKey conventions,
|
|
320
|
-
│ # public API surface, glossary
|
|
321
|
-
└── migration/ # Porting EXISTING v1 dapp-kit code to v2
|
|
322
|
-
├── README.md, ai-rules.md # Index + workflow for porting agents
|
|
323
|
-
├── checklist.md # Top-down cross-cutting checklist
|
|
324
|
-
├── breaking-changes/ # 4 cross-cutting changes: hook-signatures, result-handling,
|
|
325
|
-
│ # querykey-conventions, sdk-leakage
|
|
326
|
-
├── features/ # 8 per-feature porting playbooks
|
|
327
|
-
├── recipes.md # Codemods + adapters
|
|
328
|
-
└── reference/ # 3 reference tables: deleted hooks, renamed hooks,
|
|
329
|
-
# error-shape crosswalk
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
### Scope
|
|
333
|
-
|
|
334
|
-
This tree documents `@sodax/dapp-kit` (a React hooks library) only. It assumes:
|
|
335
|
-
|
|
336
|
-
- **TypeScript + React** (>=18). Examples use TSX.
|
|
337
|
-
- **Framework-agnostic**: works in any React app (Vite, Next.js client components, CRA, Remix, etc.). **No Next.js Server Components content** — dapp-kit is client-side React.
|
|
338
|
-
- **Sibling packages used in examples**: `@sodax/sdk` (peer; types and config; re-exported transparently from dapp-kit), `@sodax/wallet-sdk-react` (sibling; `useWalletProvider` is in every signed-flow example), `@tanstack/react-query` (peer).
|
|
339
|
-
- **`@sodax/types` is re-exported** through `@sodax/sdk` (which dapp-kit re-exports); consumers don't add it as a separate dependency.
|
|
340
|
-
|
|
341
|
-
The underlying Core SDK has its own ai-exported tree at `node_modules/@sodax/sdk/ai-exported/` (resolves correctly in node_modules). The dapp-kit migration tree links to it for SDK-leakage topics (chain-key terminology, `Result<T>` semantics, `SodaxError<C>`).
|
|
342
|
-
|
|
343
|
-
### Integrity guarantees
|
|
344
|
-
|
|
345
|
-
Every release passes seven CI checks against `ai-exported/`:
|
|
346
|
-
|
|
347
|
-
| Guard | What it catches |
|
|
348
|
-
|---|---|
|
|
349
|
-
| `check:ai-exported` | Each `useFoo` hook reference in markdown matches a real exported hook from `@sodax/dapp-kit` (or an upstream allowlist: React, React Query, wallet-sdk-react). |
|
|
350
|
-
| `check:ai-scope` | No accidental imports from forbidden packages (e.g. `@sodax/wallet-sdk-core` for Node-only flows; `@sodax/types` directly). |
|
|
351
|
-
| `check:ai-links` | Every relative link between markdown files resolves (including cross-package links into `../../../sdk/ai-exported/`). |
|
|
352
|
-
| `check:ai-imports` | Every `import … from '@sodax/dapp-kit'` example in the docs typechecks against the package source. |
|
|
353
|
-
| `check:ai-snippets` | Every fenced ````ts`/````tsx` block is typechecked AS-IS against source (opt-out via `// @ai-snippets-skip` for genuinely illustrative blocks). Catches call-shape drift like wrong `useQuote({ params: <Request> })` vs canonical `useQuote({ params: { payload: <Request> } })`. |
|
|
354
|
-
| `check:ai-keys` | Every `queryKey:` / `mutationKey:` literal in docs (both `kind: [...]` declarations and backticked-array table cells) matches a real source key prefix. Catches drift like `['staking', 'stakingInfo']` in docs when source uses `['staking', 'info']`. |
|
|
355
|
-
| `check:ai-consistency` | Polling-interval claims in docs (e.g. "polls 3s", "auto-refresh every 2s") match the actual `refetchInterval` value in source. Catches drift like docs claiming 1s when source is 3000ms. |
|
|
356
311
|
|
|
357
|
-
|
|
312
|
+
Then point your agent at `node_modules/@sodax/skills/AGENTS.md`. See [docs/ai-integration-guide.md](https://github.com/icon-project/sodax-sdks/blob/main/docs/ai-integration-guide.md) for all install modes and per-tool wiring.
|
|
358
313
|
|
|
359
314
|
## License
|
|
360
315
|
|