@clawnch/clawncher-sdk 0.3.2 → 0.3.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/README.md +89 -0
- package/dist/deployer.d.ts +13 -0
- package/dist/deployer.d.ts.map +1 -1
- package/dist/deployer.js +8 -0
- package/dist/deployer.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/herd-auth.d.ts +79 -0
- package/dist/herd-auth.d.ts.map +1 -0
- package/dist/herd-auth.js +188 -0
- package/dist/herd-auth.js.map +1 -0
- package/dist/herd-hal.d.ts +92 -0
- package/dist/herd-hal.d.ts.map +1 -0
- package/dist/herd-hal.js +337 -0
- package/dist/herd-hal.js.map +1 -0
- package/dist/herd-types.d.ts +479 -0
- package/dist/herd-types.d.ts.map +1 -0
- package/dist/herd-types.js +18 -0
- package/dist/herd-types.js.map +1 -0
- package/dist/herd.d.ts +223 -0
- package/dist/herd.d.ts.map +1 -0
- package/dist/herd.js +1486 -0
- package/dist/herd.js.map +1 -0
- package/dist/hummingbot-types.d.ts +702 -0
- package/dist/hummingbot-types.d.ts.map +1 -0
- package/dist/hummingbot-types.js +12 -0
- package/dist/hummingbot-types.js.map +1 -0
- package/dist/hummingbot.d.ts +747 -0
- package/dist/hummingbot.d.ts.map +1 -0
- package/dist/hummingbot.js +1478 -0
- package/dist/hummingbot.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/price.d.ts +16 -11
- package/dist/price.d.ts.map +1 -1
- package/dist/price.js +56 -25
- package/dist/price.js.map +1 -1
- package/dist/uniswap-quoter.d.ts +25 -4
- package/dist/uniswap-quoter.d.ts.map +1 -1
- package/dist/uniswap-quoter.js +52 -8
- package/dist/uniswap-quoter.js.map +1 -1
- package/dist/walletconnect-signer.d.ts +154 -0
- package/dist/walletconnect-signer.d.ts.map +1 -0
- package/dist/walletconnect-signer.js +307 -0
- package/dist/walletconnect-signer.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -823,6 +823,95 @@ if (status.wayfinderInstalled) {
|
|
|
823
823
|
|
|
824
824
|
Supported chains: Ethereum (1), Base (8453), Arbitrum (42161), Polygon (137), BSC (56), Avalanche (43114), HyperEVM (999).
|
|
825
825
|
|
|
826
|
+
## Hummingbot Market Making
|
|
827
|
+
|
|
828
|
+
Operate [Hummingbot](https://github.com/hummingbot/hummingbot) programmatically — 101 methods covering all 14 API routers (accounts, connectors, trading, executors, controllers, bots, scripts, market data, portfolio, gateway, rate oracle, backtesting, history, Docker).
|
|
829
|
+
|
|
830
|
+
```typescript
|
|
831
|
+
import { HummingbotClient } from '@clawnch/clawncher-sdk';
|
|
832
|
+
|
|
833
|
+
const hb = new HummingbotClient({
|
|
834
|
+
apiUrl: 'http://localhost:8000', // or HUMMINGBOT_API_URL
|
|
835
|
+
username: 'admin', // or HUMMINGBOT_USERNAME
|
|
836
|
+
password: 'admin', // or HUMMINGBOT_PASSWORD
|
|
837
|
+
});
|
|
838
|
+
|
|
839
|
+
// Health check (unauthenticated)
|
|
840
|
+
const health = await hb.checkHealth();
|
|
841
|
+
|
|
842
|
+
// Portfolio across all connected exchanges
|
|
843
|
+
const portfolio = await hb.getPortfolioOverview();
|
|
844
|
+
|
|
845
|
+
// Place an order
|
|
846
|
+
await hb.placeOrder({
|
|
847
|
+
connectorName: 'binance',
|
|
848
|
+
tradingPair: 'ETH-USDT',
|
|
849
|
+
tradeType: 'BUY',
|
|
850
|
+
amount: '0.1',
|
|
851
|
+
orderType: 'MARKET',
|
|
852
|
+
});
|
|
853
|
+
|
|
854
|
+
// Market data
|
|
855
|
+
const candles = await hb.getCandles('binance', 'ETH-USDT', '1h', 7);
|
|
856
|
+
const book = await hb.getOrderBook('binance', 'ETH-USDT');
|
|
857
|
+
const prices = await hb.getPrices('binance', 'ETH-USDT');
|
|
858
|
+
|
|
859
|
+
// Create and deploy a bot with a controller config
|
|
860
|
+
await hb.upsertControllerConfig({ id: 'mm_eth', controller_type: 'market_making', /* ... */ });
|
|
861
|
+
await hb.deployBot({ controllers: ['mm_eth'], connectorName: 'binance' });
|
|
862
|
+
|
|
863
|
+
// Executor management
|
|
864
|
+
await hb.createExecutor({
|
|
865
|
+
executorType: 'grid_executor',
|
|
866
|
+
connectorName: 'binance',
|
|
867
|
+
tradingPair: 'ETH-USDT',
|
|
868
|
+
side: 1,
|
|
869
|
+
startPrice: 3000,
|
|
870
|
+
endPrice: 3500,
|
|
871
|
+
totalAmountQuote: 1000,
|
|
872
|
+
levels: 10,
|
|
873
|
+
});
|
|
874
|
+
|
|
875
|
+
// Gateway (DEX / on-chain)
|
|
876
|
+
const chains = await hb.listGatewayChains();
|
|
877
|
+
await hb.executeGatewayAmmTrade({ chain: 'ethereum', network: 'mainnet', /* ... */ });
|
|
878
|
+
const pools = await hb.listCLMMPools({ chain: 'ethereum', network: 'mainnet', connector: 'uniswap' });
|
|
879
|
+
|
|
880
|
+
// Backtesting
|
|
881
|
+
const result = await hb.runBacktest({ startTime: 1700000000, endTime: 1700100000, config: { /* ... */ } });
|
|
882
|
+
|
|
883
|
+
// Strategy templates (local, no API call)
|
|
884
|
+
const templates = hb.getStrategyTemplates();
|
|
885
|
+
const built = hb.buildFromTemplate('pure_market_making', { connector: 'binance', tradingPair: 'ETH-USDT' });
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
### Strategy Templates
|
|
889
|
+
|
|
890
|
+
9 built-in templates — 4 for the Clawnch token lifecycle, 5 general-purpose:
|
|
891
|
+
|
|
892
|
+
| Template | Purpose |
|
|
893
|
+
|----------|---------|
|
|
894
|
+
| `clawnch_initial_liquidity` | Tight spreads for freshly launched tokens |
|
|
895
|
+
| `clawnch_post_launch_mm` | Wider spreads with depth as volume grows |
|
|
896
|
+
| `clawnch_fee_optimization` | Uniswap V4 hook fee optimization |
|
|
897
|
+
| `clawnch_accumulation` | DCA position building over time |
|
|
898
|
+
| `pure_market_making` | Standard bid/ask market making |
|
|
899
|
+
| `avellaneda_market_making` | Inventory-aware spread adjustment |
|
|
900
|
+
| `grid_trading` | Grid orders across a price range |
|
|
901
|
+
| `dca_buying` | Dollar-cost averaging |
|
|
902
|
+
| `twap_execution` | Time-weighted average price execution |
|
|
903
|
+
|
|
904
|
+
### Environment Variables
|
|
905
|
+
|
|
906
|
+
| Variable | Default | Description |
|
|
907
|
+
|----------|---------|-------------|
|
|
908
|
+
| `HUMMINGBOT_API_URL` | `http://localhost:8000` | Hummingbot API server URL |
|
|
909
|
+
| `HUMMINGBOT_USERNAME` | `admin` | HTTP Basic Auth username |
|
|
910
|
+
| `HUMMINGBOT_PASSWORD` | `admin` | HTTP Basic Auth password |
|
|
911
|
+
| `HUMMINGBOT_TIMEOUT` | `30000` | Request timeout (ms) |
|
|
912
|
+
| `HUMMINGBOT_MAX_RETRIES` | `3` | Retry count for 5xx/network errors |
|
|
913
|
+
| `HUMMINGBOT_RETRY_DELAY` | `1000` | Base retry delay (ms) |
|
|
914
|
+
|
|
826
915
|
## Related Packages
|
|
827
916
|
|
|
828
917
|
- **[@clawnch/clawtomaton](https://www.npmjs.com/package/@clawnch/clawtomaton)** — Autonomous AI agents built on this SDK. Agents generate wallets, burn $CLAWNCH to activate, deploy tokens, and sustain themselves through LP fees.
|
package/dist/deployer.d.ts
CHANGED
|
@@ -83,6 +83,12 @@ export interface TokenContext {
|
|
|
83
83
|
messageId?: string;
|
|
84
84
|
id?: string;
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Paired token for liquidity pool.
|
|
88
|
+
* - 'WETH': Standard WETH pair (default, deepest liquidity)
|
|
89
|
+
* - 'USDC': Stablecoin pair (cleaner P&L, no ETH correlation)
|
|
90
|
+
*/
|
|
91
|
+
export type PairedToken = 'WETH' | 'USDC';
|
|
86
92
|
/**
|
|
87
93
|
* Token deployment options
|
|
88
94
|
*/
|
|
@@ -117,6 +123,13 @@ export interface DeployOptions {
|
|
|
117
123
|
* Returns validation result and translated config.
|
|
118
124
|
*/
|
|
119
125
|
dryRun?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Paired token for the liquidity pool (default: 'WETH').
|
|
128
|
+
* - 'WETH': Standard ETH pair — deepest liquidity, established default
|
|
129
|
+
* - 'USDC': Stablecoin pair — token price isolated from ETH volatility,
|
|
130
|
+
* cleaner USD-denominated P&L for agents, lower impermanent loss
|
|
131
|
+
*/
|
|
132
|
+
pairedToken?: PairedToken;
|
|
120
133
|
}
|
|
121
134
|
/**
|
|
122
135
|
* Deployment result
|
package/dist/deployer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,OAAO,EAEb,MAAM,MAAM,CAAC;AAId,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
|
package/dist/deployer.js
CHANGED
|
@@ -14,6 +14,7 @@ import { Clanker } from 'clanker-sdk/v4';
|
|
|
14
14
|
import { POOL_POSITIONS } from 'clanker-sdk';
|
|
15
15
|
import { base, baseSepolia } from 'viem/chains';
|
|
16
16
|
import { getAddresses, getChainId } from './addresses.js';
|
|
17
|
+
import { getCommonAddresses } from './uniswap-addresses.js';
|
|
17
18
|
import { ClawnchErrorCode, ClawnchDeployError } from './errors.js';
|
|
18
19
|
// ============================================================================
|
|
19
20
|
// Internal helpers
|
|
@@ -159,6 +160,9 @@ export class ClawnchDeployer {
|
|
|
159
160
|
token: translateFeePreference(r.feePreference),
|
|
160
161
|
})),
|
|
161
162
|
};
|
|
163
|
+
// Resolve paired token address
|
|
164
|
+
const common = getCommonAddresses(this.network);
|
|
165
|
+
const pairedTokenAddress = options.pairedToken === 'USDC' ? common.usdc : common.weth;
|
|
162
166
|
// Build base config
|
|
163
167
|
const clankerConfig = {
|
|
164
168
|
name: options.name,
|
|
@@ -174,6 +178,10 @@ export class ClawnchDeployer {
|
|
|
174
178
|
...(options.context || {}),
|
|
175
179
|
},
|
|
176
180
|
};
|
|
181
|
+
// Set paired token if USDC (Clanker defaults to WETH if not specified)
|
|
182
|
+
if (options.pairedToken === 'USDC') {
|
|
183
|
+
clankerConfig.pairedToken = pairedTokenAddress;
|
|
184
|
+
}
|
|
177
185
|
// Image
|
|
178
186
|
if (options.image) {
|
|
179
187
|
clankerConfig.image = options.image;
|
package/dist/deployer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAQL,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -23,7 +23,8 @@ export declare enum ClawnchErrorCode {
|
|
|
23
23
|
FEATURE_NOT_AVAILABLE = "FEATURE_NOT_AVAILABLE",
|
|
24
24
|
INVALID_CHAIN = "INVALID_CHAIN",
|
|
25
25
|
RPC_ERROR = "RPC_ERROR",
|
|
26
|
-
TIMEOUT = "TIMEOUT"
|
|
26
|
+
TIMEOUT = "TIMEOUT",
|
|
27
|
+
HERD_UNAVAILABLE = "HERD_UNAVAILABLE"
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Structured error class for Clawncher SDK operations
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,gBAAgB;IAE1B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,qBAAqB,0BAA0B;IAC/C,4BAA4B,iCAAiC;IAG7D,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IAGzC,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IAGvC,qBAAqB,0BAA0B;IAG/C,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IACvB,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,gBAAgB;IAE1B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,qBAAqB,0BAA0B;IAC/C,4BAA4B,iCAAiC;IAG7D,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IAGzC,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IAGvC,qBAAqB,0BAA0B;IAG/C,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IACvB,OAAO,YAAY;IAGnB,gBAAgB,qBAAqB;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAIzB,IAAI,EAAE,gBAAgB;aAEtB,KAAK,CAAC,EAAE,KAAK;IAL/B,QAAQ,CAAC,IAAI,wBAAwB;gBAGnB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAIhC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAEtE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,WAAW,GAAE,MAAa,GACzB,OAAO,CAAC,CAAC,CAAC,CAiCZ"}
|
package/dist/errors.js
CHANGED
|
@@ -32,6 +32,8 @@ export var ClawnchErrorCode;
|
|
|
32
32
|
// Network errors
|
|
33
33
|
ClawnchErrorCode["RPC_ERROR"] = "RPC_ERROR";
|
|
34
34
|
ClawnchErrorCode["TIMEOUT"] = "TIMEOUT";
|
|
35
|
+
// Herd integration errors
|
|
36
|
+
ClawnchErrorCode["HERD_UNAVAILABLE"] = "HERD_UNAVAILABLE";
|
|
35
37
|
})(ClawnchErrorCode || (ClawnchErrorCode = {}));
|
|
36
38
|
/**
|
|
37
39
|
* Structured error class for Clawncher SDK operations
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,gBAgCX;AAhCD,WAAY,gBAAgB;IAC1B,oBAAoB;IACpB,+CAA2B,CAAA;IAC3B,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IAEnC,uBAAuB;IACvB,mEAA+C,CAAA;IAC/C,iFAA6D,CAAA;IAE7D,oBAAoB;IACpB,mDAA+B,CAAA;IAC/B,+CAA2B,CAAA;IAC3B,6DAAyC,CAAA;IAEzC,kBAAkB;IAClB,iDAA6B,CAAA;IAC7B,2DAAuC,CAAA;IAEvC,wBAAwB;IACxB,mEAA+C,CAAA;IAE/C,eAAe;IACf,mDAA+B,CAAA;IAE/B,iBAAiB;IACjB,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IAEnB,0BAA0B;IAC1B,yDAAqC,CAAA;AACvC,CAAC,EAhCW,gBAAgB,KAAhB,gBAAgB,QAgC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAIzB;IAEA;IALT,IAAI,GAAG,oBAAoB,CAAC;IAErC,YACkB,IAAsB,EACtC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAkB;QAEtB,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,kBAAkB,CAAC;AAC3C,CAAC;AAED,4EAA4E;AAC5E,gBAAgB;AAChB,4EAA4E;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,aAAqB,CAAC,EACtB,cAAsB,IAAI;IAE1B,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAEhB,sCAAsC;YACtC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAuB;oBACvC,gBAAgB,CAAC,WAAW;oBAC5B,gBAAgB,CAAC,YAAY;oBAC7B,gBAAgB,CAAC,cAAc;oBAC/B,gBAAgB,CAAC,eAAe;oBAChC,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,4BAA4B;oBAC7C,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,aAAa;oBAC9B,gBAAgB,CAAC,kBAAkB;iBACpC,CAAC;gBACF,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,GAAG,CAAC;YACjD,CAAC;YAED,yCAAyC;YACzC,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM;YAElC,uCAAuC;YACvC,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Herd MCP Authentication
|
|
3
|
+
*
|
|
4
|
+
* Manages OAuth credentials for the Herd MCP server.
|
|
5
|
+
* Supports three modes:
|
|
6
|
+
* 1. Environment variable (HERD_ACCESS_TOKEN)
|
|
7
|
+
* 2. Stored token file (~/.clawncher/herd-auth.json)
|
|
8
|
+
* 3. Interactive OAuth PKCE flow (opens browser)
|
|
9
|
+
*
|
|
10
|
+
* The MCP SDK's StreamableHTTPClientTransport handles OAuth natively.
|
|
11
|
+
* This module manages credential persistence and retrieval so that
|
|
12
|
+
* tokens obtained in one session (e.g. CLI `clawncher herd auth`)
|
|
13
|
+
* can be reused by the SDK, MCP server, and Clawtomaton agents.
|
|
14
|
+
*/
|
|
15
|
+
export interface HerdTokenStore {
|
|
16
|
+
/** OAuth access token */
|
|
17
|
+
accessToken: string;
|
|
18
|
+
/** OAuth refresh token (if available) */
|
|
19
|
+
refreshToken?: string;
|
|
20
|
+
/** Token type (usually 'Bearer') */
|
|
21
|
+
tokenType: string;
|
|
22
|
+
/** Expiry as ISO 8601 string */
|
|
23
|
+
expiresAt?: string;
|
|
24
|
+
/** When the token was stored */
|
|
25
|
+
storedAt: string;
|
|
26
|
+
}
|
|
27
|
+
export interface HerdAuthConfig {
|
|
28
|
+
/** Override the default token file path (~/.clawncher/herd-auth.json) */
|
|
29
|
+
tokenPath?: string;
|
|
30
|
+
/** Direct access token — skips file/env lookup */
|
|
31
|
+
accessToken?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare const HERD_MCP_URL = "https://mcp.herd.eco/v1";
|
|
34
|
+
export declare class HerdAuth {
|
|
35
|
+
private tokenStore;
|
|
36
|
+
private tokenPath;
|
|
37
|
+
constructor(config?: HerdAuthConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Get the current access token, resolving from env var or stored file.
|
|
40
|
+
* Returns null if no token is available (user needs to authenticate).
|
|
41
|
+
*/
|
|
42
|
+
getAccessToken(): string | null;
|
|
43
|
+
/**
|
|
44
|
+
* Check if authentication is available (token exists and not expired).
|
|
45
|
+
*/
|
|
46
|
+
isAuthenticated(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get the Authorization header value.
|
|
49
|
+
* Throws if not authenticated.
|
|
50
|
+
*/
|
|
51
|
+
getAuthHeader(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Store a token obtained from OAuth flow or other source.
|
|
54
|
+
*/
|
|
55
|
+
saveToken(token: Omit<HerdTokenStore, 'storedAt'>): void;
|
|
56
|
+
/**
|
|
57
|
+
* Clear stored credentials.
|
|
58
|
+
*/
|
|
59
|
+
clearToken(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Create HerdAuth from environment variable.
|
|
62
|
+
* Returns null if env var is not set.
|
|
63
|
+
*/
|
|
64
|
+
static fromEnv(): HerdAuth | null;
|
|
65
|
+
/**
|
|
66
|
+
* Create HerdAuth from stored token file.
|
|
67
|
+
* Returns null if no stored token exists.
|
|
68
|
+
*/
|
|
69
|
+
static fromStoredToken(tokenPath?: string): HerdAuth | null;
|
|
70
|
+
/**
|
|
71
|
+
* Create HerdAuth with automatic resolution:
|
|
72
|
+
* env var > stored file > null
|
|
73
|
+
*/
|
|
74
|
+
static resolve(config?: HerdAuthConfig): HerdAuth;
|
|
75
|
+
private isExpired;
|
|
76
|
+
private loadFromFile;
|
|
77
|
+
private writeToFile;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=herd-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herd-auth.d.ts","sourceRoot":"","sources":["../src/herd-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAUD,eAAO,MAAM,YAAY,4BAA4B,CAAC;AAMtD,qBAAa,QAAQ;IACnB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE,cAAmB;IAiBvC;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IA6B/B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACH,aAAa,IAAI,MAAM;IAcvB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,IAAI;IAQxD;;OAEG;IACH,UAAU,IAAI,IAAI;IAgBlB;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI;IAMjC;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAM3D;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,QAAQ;IAQrD,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;CAapB"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Herd MCP Authentication
|
|
3
|
+
*
|
|
4
|
+
* Manages OAuth credentials for the Herd MCP server.
|
|
5
|
+
* Supports three modes:
|
|
6
|
+
* 1. Environment variable (HERD_ACCESS_TOKEN)
|
|
7
|
+
* 2. Stored token file (~/.clawncher/herd-auth.json)
|
|
8
|
+
* 3. Interactive OAuth PKCE flow (opens browser)
|
|
9
|
+
*
|
|
10
|
+
* The MCP SDK's StreamableHTTPClientTransport handles OAuth natively.
|
|
11
|
+
* This module manages credential persistence and retrieval so that
|
|
12
|
+
* tokens obtained in one session (e.g. CLI `clawncher herd auth`)
|
|
13
|
+
* can be reused by the SDK, MCP server, and Clawtomaton agents.
|
|
14
|
+
*/
|
|
15
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
16
|
+
import { join, dirname } from 'node:path';
|
|
17
|
+
import { homedir } from 'node:os';
|
|
18
|
+
// =========================================================================
|
|
19
|
+
// Constants
|
|
20
|
+
// =========================================================================
|
|
21
|
+
const DEFAULT_CONFIG_DIR = join(homedir(), '.clawncher');
|
|
22
|
+
const DEFAULT_TOKEN_FILE = 'herd-auth.json';
|
|
23
|
+
const ENV_VAR = 'HERD_ACCESS_TOKEN';
|
|
24
|
+
export const HERD_MCP_URL = 'https://mcp.herd.eco/v1';
|
|
25
|
+
// =========================================================================
|
|
26
|
+
// HerdAuth
|
|
27
|
+
// =========================================================================
|
|
28
|
+
export class HerdAuth {
|
|
29
|
+
tokenStore = null;
|
|
30
|
+
tokenPath;
|
|
31
|
+
constructor(config = {}) {
|
|
32
|
+
this.tokenPath = config.tokenPath || join(DEFAULT_CONFIG_DIR, DEFAULT_TOKEN_FILE);
|
|
33
|
+
// Direct token takes highest priority
|
|
34
|
+
if (config.accessToken) {
|
|
35
|
+
this.tokenStore = {
|
|
36
|
+
accessToken: config.accessToken,
|
|
37
|
+
tokenType: 'Bearer',
|
|
38
|
+
storedAt: new Date().toISOString(),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// -----------------------------------------------------------------------
|
|
43
|
+
// Token Resolution (env > stored file > null)
|
|
44
|
+
// -----------------------------------------------------------------------
|
|
45
|
+
/**
|
|
46
|
+
* Get the current access token, resolving from env var or stored file.
|
|
47
|
+
* Returns null if no token is available (user needs to authenticate).
|
|
48
|
+
*/
|
|
49
|
+
getAccessToken() {
|
|
50
|
+
// 1. Already loaded in memory
|
|
51
|
+
if (this.tokenStore) {
|
|
52
|
+
if (this.isExpired())
|
|
53
|
+
return null;
|
|
54
|
+
return this.tokenStore.accessToken;
|
|
55
|
+
}
|
|
56
|
+
// 2. Environment variable
|
|
57
|
+
const envToken = process.env[ENV_VAR];
|
|
58
|
+
if (envToken) {
|
|
59
|
+
this.tokenStore = {
|
|
60
|
+
accessToken: envToken,
|
|
61
|
+
tokenType: 'Bearer',
|
|
62
|
+
storedAt: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
return envToken;
|
|
65
|
+
}
|
|
66
|
+
// 3. Stored file
|
|
67
|
+
const stored = this.loadFromFile();
|
|
68
|
+
if (stored) {
|
|
69
|
+
this.tokenStore = stored;
|
|
70
|
+
if (this.isExpired())
|
|
71
|
+
return null;
|
|
72
|
+
return stored.accessToken;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if authentication is available (token exists and not expired).
|
|
78
|
+
*/
|
|
79
|
+
isAuthenticated() {
|
|
80
|
+
return this.getAccessToken() !== null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the Authorization header value.
|
|
84
|
+
* Throws if not authenticated.
|
|
85
|
+
*/
|
|
86
|
+
getAuthHeader() {
|
|
87
|
+
const token = this.getAccessToken();
|
|
88
|
+
if (!token) {
|
|
89
|
+
throw new Error('Herd authentication required. Run `clawncher herd auth` or set HERD_ACCESS_TOKEN.');
|
|
90
|
+
}
|
|
91
|
+
return `Bearer ${token}`;
|
|
92
|
+
}
|
|
93
|
+
// -----------------------------------------------------------------------
|
|
94
|
+
// Token Storage
|
|
95
|
+
// -----------------------------------------------------------------------
|
|
96
|
+
/**
|
|
97
|
+
* Store a token obtained from OAuth flow or other source.
|
|
98
|
+
*/
|
|
99
|
+
saveToken(token) {
|
|
100
|
+
this.tokenStore = {
|
|
101
|
+
...token,
|
|
102
|
+
storedAt: new Date().toISOString(),
|
|
103
|
+
};
|
|
104
|
+
this.writeToFile(this.tokenStore);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clear stored credentials.
|
|
108
|
+
*/
|
|
109
|
+
clearToken() {
|
|
110
|
+
this.tokenStore = null;
|
|
111
|
+
try {
|
|
112
|
+
const { unlinkSync } = require('node:fs');
|
|
113
|
+
if (existsSync(this.tokenPath)) {
|
|
114
|
+
unlinkSync(this.tokenPath);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// Ignore file deletion errors
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// -----------------------------------------------------------------------
|
|
122
|
+
// Static Factories
|
|
123
|
+
// -----------------------------------------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* Create HerdAuth from environment variable.
|
|
126
|
+
* Returns null if env var is not set.
|
|
127
|
+
*/
|
|
128
|
+
static fromEnv() {
|
|
129
|
+
const token = process.env[ENV_VAR];
|
|
130
|
+
if (!token)
|
|
131
|
+
return null;
|
|
132
|
+
return new HerdAuth({ accessToken: token });
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Create HerdAuth from stored token file.
|
|
136
|
+
* Returns null if no stored token exists.
|
|
137
|
+
*/
|
|
138
|
+
static fromStoredToken(tokenPath) {
|
|
139
|
+
const auth = new HerdAuth({ tokenPath });
|
|
140
|
+
if (auth.getAccessToken())
|
|
141
|
+
return auth;
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create HerdAuth with automatic resolution:
|
|
146
|
+
* env var > stored file > null
|
|
147
|
+
*/
|
|
148
|
+
static resolve(config = {}) {
|
|
149
|
+
return new HerdAuth(config);
|
|
150
|
+
}
|
|
151
|
+
// -----------------------------------------------------------------------
|
|
152
|
+
// Internal
|
|
153
|
+
// -----------------------------------------------------------------------
|
|
154
|
+
isExpired() {
|
|
155
|
+
if (!this.tokenStore?.expiresAt)
|
|
156
|
+
return false;
|
|
157
|
+
return new Date(this.tokenStore.expiresAt) <= new Date();
|
|
158
|
+
}
|
|
159
|
+
loadFromFile() {
|
|
160
|
+
try {
|
|
161
|
+
if (!existsSync(this.tokenPath))
|
|
162
|
+
return null;
|
|
163
|
+
const raw = readFileSync(this.tokenPath, 'utf-8');
|
|
164
|
+
const parsed = JSON.parse(raw);
|
|
165
|
+
if (!parsed.accessToken)
|
|
166
|
+
return null;
|
|
167
|
+
return parsed;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
writeToFile(store) {
|
|
174
|
+
try {
|
|
175
|
+
const dir = dirname(this.tokenPath);
|
|
176
|
+
if (!existsSync(dir)) {
|
|
177
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
178
|
+
}
|
|
179
|
+
writeFileSync(this.tokenPath, JSON.stringify(store, null, 2), {
|
|
180
|
+
mode: 0o600,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Non-fatal — token is still in memory
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=herd-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herd-auth.js","sourceRoot":"","sources":["../src/herd-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HAL Expression Builder — Programmatic construction of Herd Action Language expressions.
|
|
3
|
+
*
|
|
4
|
+
* HAL (Herd Action Language) is a JSON DSL for composing blockchain transactions
|
|
5
|
+
* and data reads. Instead of requiring users to hand-write the nested JSON,
|
|
6
|
+
* this module provides a TypeScript builder API.
|
|
7
|
+
*
|
|
8
|
+
* Use cases:
|
|
9
|
+
* - Pre-simulate any transaction before sending
|
|
10
|
+
* - Generate reusable adapters for common Clawncher operations
|
|
11
|
+
* - Validate parameter types at compile time
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const hal = new HalBuilder();
|
|
16
|
+
*
|
|
17
|
+
* // Build an ERC-20 transfer adapter
|
|
18
|
+
* const expr = hal.buildTransferAdapter({
|
|
19
|
+
* token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
20
|
+
* blockchain: 'base',
|
|
21
|
+
* decimals: 6,
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Simulate it via Herd
|
|
25
|
+
* const result = await herd.simulateAction(expr, {
|
|
26
|
+
* to: '0xRecipient...',
|
|
27
|
+
* amount: '100',
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import type { HerdBlockchain, HalExpression, HalSimulationResult } from './herd-types.js';
|
|
32
|
+
export interface TransferAdapterOptions {
|
|
33
|
+
/** Token contract address */
|
|
34
|
+
token: string;
|
|
35
|
+
/** Blockchain */
|
|
36
|
+
blockchain: HerdBlockchain;
|
|
37
|
+
/** Token decimals (default: 18) */
|
|
38
|
+
decimals?: number;
|
|
39
|
+
/** Token name for metadata */
|
|
40
|
+
tokenName?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface SwapActionOptions {
|
|
43
|
+
/** Sell token address */
|
|
44
|
+
sellToken: string;
|
|
45
|
+
/** Buy token address */
|
|
46
|
+
buyToken: string;
|
|
47
|
+
/** Blockchain */
|
|
48
|
+
blockchain: HerdBlockchain;
|
|
49
|
+
/** Whether to include the approval step */
|
|
50
|
+
includeApproval?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface ReadBalanceOptions {
|
|
53
|
+
/** Token contract address */
|
|
54
|
+
token: string;
|
|
55
|
+
/** Blockchain */
|
|
56
|
+
blockchain: HerdBlockchain;
|
|
57
|
+
}
|
|
58
|
+
export declare class HalBuilder {
|
|
59
|
+
/**
|
|
60
|
+
* Build a HAL adapter expression for an ERC-20 transfer.
|
|
61
|
+
*
|
|
62
|
+
* Parameters exposed to the user: `to` (address), `amount` (human-readable).
|
|
63
|
+
* The adapter handles decimal conversion and calldata encoding.
|
|
64
|
+
*/
|
|
65
|
+
buildTransferAdapter(options: TransferAdapterOptions): HalExpression;
|
|
66
|
+
/**
|
|
67
|
+
* Build a HAL action for a swap using 0x API.
|
|
68
|
+
*
|
|
69
|
+
* This generates an action with an optional approval step (conditional
|
|
70
|
+
* on whether the wallet has already approved the spender).
|
|
71
|
+
*/
|
|
72
|
+
buildSwapAction(options: SwapActionOptions): HalExpression;
|
|
73
|
+
/**
|
|
74
|
+
* Build a HAL read adapter for checking an ERC-20 balance.
|
|
75
|
+
*/
|
|
76
|
+
buildBalanceReader(options: ReadBalanceOptions): HalExpression;
|
|
77
|
+
/**
|
|
78
|
+
* Build a HAL read adapter for checking allowance.
|
|
79
|
+
*/
|
|
80
|
+
buildAllowanceReader(options: ReadBalanceOptions & {
|
|
81
|
+
spender?: string;
|
|
82
|
+
}): HalExpression;
|
|
83
|
+
/**
|
|
84
|
+
* Build a HAL approve adapter.
|
|
85
|
+
*/
|
|
86
|
+
buildApproveAdapter(options: TransferAdapterOptions): HalExpression;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse a raw HAL simulation response into typed structure.
|
|
90
|
+
*/
|
|
91
|
+
export declare function parseSimulationResult(raw: unknown): HalSimulationResult;
|
|
92
|
+
//# sourceMappingURL=herd-hal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herd-hal.d.ts","sourceRoot":"","sources":["../src/herd-hal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,mBAAmB,EAEpB,MAAM,iBAAiB,CAAC;AAiJzB,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,UAAU;IACrB;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa;IA4CpE;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa;IAuE1D;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa;IAqC9D;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAyCvF;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa;CA2CpE;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAkBvE"}
|