openbroker 1.3.2 → 1.4.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/CHANGELOG.md +12 -0
- package/dist/auto/audit.d.ts +57 -0
- package/dist/auto/audit.d.ts.map +1 -0
- package/dist/auto/audit.js +407 -0
- package/dist/auto/cli.d.ts +2 -0
- package/dist/auto/cli.d.ts.map +1 -0
- package/dist/auto/cli.js +423 -0
- package/dist/auto/events.d.ts +11 -0
- package/dist/auto/events.d.ts.map +1 -0
- package/dist/auto/events.js +36 -0
- package/dist/auto/examples/dca.d.ts +4 -0
- package/dist/auto/examples/dca.d.ts.map +1 -0
- package/dist/auto/examples/dca.js +60 -0
- package/dist/auto/examples/funding-arb.d.ts +4 -0
- package/dist/auto/examples/funding-arb.d.ts.map +1 -0
- package/dist/auto/examples/funding-arb.js +81 -0
- package/dist/auto/examples/grid.d.ts +4 -0
- package/dist/auto/examples/grid.d.ts.map +1 -0
- package/dist/auto/examples/grid.js +114 -0
- package/dist/auto/examples/mm-maker.d.ts +4 -0
- package/dist/auto/examples/mm-maker.d.ts.map +1 -0
- package/dist/auto/examples/mm-maker.js +131 -0
- package/dist/auto/examples/mm-spread.d.ts +4 -0
- package/dist/auto/examples/mm-spread.d.ts.map +1 -0
- package/dist/auto/examples/mm-spread.js +119 -0
- package/dist/auto/examples/price-alert.d.ts +4 -0
- package/dist/auto/examples/price-alert.d.ts.map +1 -0
- package/dist/auto/examples/price-alert.js +85 -0
- package/dist/auto/keep-awake.d.ts +11 -0
- package/dist/auto/keep-awake.d.ts.map +1 -0
- package/dist/auto/keep-awake.js +70 -0
- package/dist/auto/loader.d.ts +22 -0
- package/dist/auto/loader.d.ts.map +1 -0
- package/dist/auto/loader.js +127 -0
- package/dist/auto/prune.d.ts +40 -0
- package/dist/auto/prune.d.ts.map +1 -0
- package/dist/auto/prune.js +204 -0
- package/dist/auto/registry.d.ts +24 -0
- package/dist/auto/registry.d.ts.map +1 -0
- package/dist/auto/registry.js +93 -0
- package/dist/auto/report.d.ts +3 -0
- package/dist/auto/report.d.ts.map +1 -0
- package/dist/auto/report.js +385 -0
- package/dist/auto/runtime.d.ts +33 -0
- package/dist/auto/runtime.d.ts.map +1 -0
- package/dist/auto/runtime.js +844 -0
- package/dist/auto/types.d.ts +236 -0
- package/dist/auto/types.d.ts.map +1 -0
- package/dist/auto/types.js +3 -0
- package/dist/core/client.d.ts +684 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +2040 -0
- package/dist/core/config.d.ts +22 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +143 -0
- package/dist/core/types.d.ts +221 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/utils.d.ts +61 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +142 -0
- package/dist/core/ws.d.ts +121 -0
- package/dist/core/ws.d.ts.map +1 -0
- package/dist/core/ws.js +222 -0
- package/dist/info/account.d.ts +3 -0
- package/dist/info/account.d.ts.map +1 -0
- package/dist/info/account.js +198 -0
- package/dist/info/all-markets.d.ts +3 -0
- package/dist/info/all-markets.d.ts.map +1 -0
- package/dist/info/all-markets.js +272 -0
- package/dist/info/candles.d.ts +3 -0
- package/dist/info/candles.d.ts.map +1 -0
- package/dist/info/candles.js +120 -0
- package/dist/info/fees.d.ts +3 -0
- package/dist/info/fees.d.ts.map +1 -0
- package/dist/info/fees.js +87 -0
- package/dist/info/fills.d.ts +3 -0
- package/dist/info/fills.d.ts.map +1 -0
- package/dist/info/fills.js +105 -0
- package/dist/info/funding-history.d.ts +3 -0
- package/dist/info/funding-history.d.ts.map +1 -0
- package/dist/info/funding-history.js +98 -0
- package/dist/info/funding-scan.d.ts +3 -0
- package/dist/info/funding-scan.d.ts.map +1 -0
- package/dist/info/funding-scan.js +178 -0
- package/dist/info/funding.d.ts +3 -0
- package/dist/info/funding.d.ts.map +1 -0
- package/dist/info/funding.js +158 -0
- package/dist/info/markets.d.ts +3 -0
- package/dist/info/markets.d.ts.map +1 -0
- package/dist/info/markets.js +178 -0
- package/dist/info/order-status.d.ts +3 -0
- package/dist/info/order-status.d.ts.map +1 -0
- package/dist/info/order-status.js +85 -0
- package/dist/info/orders.d.ts +3 -0
- package/dist/info/orders.d.ts.map +1 -0
- package/dist/info/orders.js +162 -0
- package/dist/info/outcomes.d.ts +3 -0
- package/dist/info/outcomes.d.ts.map +1 -0
- package/dist/info/outcomes.js +175 -0
- package/dist/info/positions.d.ts +3 -0
- package/dist/info/positions.d.ts.map +1 -0
- package/dist/info/positions.js +127 -0
- package/dist/info/rate-limit.d.ts +3 -0
- package/dist/info/rate-limit.d.ts.map +1 -0
- package/dist/info/rate-limit.js +58 -0
- package/dist/info/search-markets.d.ts +3 -0
- package/dist/info/search-markets.d.ts.map +1 -0
- package/dist/info/search-markets.js +296 -0
- package/dist/info/spot.d.ts +3 -0
- package/dist/info/spot.d.ts.map +1 -0
- package/dist/info/spot.js +192 -0
- package/dist/info/trades.d.ts +3 -0
- package/dist/info/trades.d.ts.map +1 -0
- package/dist/info/trades.js +97 -0
- package/dist/lib.d.ts +14 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +17 -0
- package/dist/operations/bracket.d.ts +28 -0
- package/dist/operations/bracket.d.ts.map +1 -0
- package/dist/operations/bracket.js +266 -0
- package/dist/operations/cancel.d.ts +3 -0
- package/dist/operations/cancel.d.ts.map +1 -0
- package/dist/operations/cancel.js +107 -0
- package/dist/operations/chase.d.ts +25 -0
- package/dist/operations/chase.d.ts.map +1 -0
- package/dist/operations/chase.js +215 -0
- package/dist/operations/limit-order.d.ts +3 -0
- package/dist/operations/limit-order.d.ts.map +1 -0
- package/dist/operations/limit-order.js +144 -0
- package/dist/operations/market-order.d.ts +3 -0
- package/dist/operations/market-order.d.ts.map +1 -0
- package/dist/operations/market-order.js +153 -0
- package/dist/operations/outcome-order.d.ts +3 -0
- package/dist/operations/outcome-order.d.ts.map +1 -0
- package/dist/operations/outcome-order.js +171 -0
- package/dist/operations/scale.d.ts +3 -0
- package/dist/operations/scale.d.ts.map +1 -0
- package/dist/operations/scale.js +212 -0
- package/dist/operations/set-tpsl.d.ts +3 -0
- package/dist/operations/set-tpsl.d.ts.map +1 -0
- package/dist/operations/set-tpsl.js +277 -0
- package/dist/operations/spot-order.d.ts +3 -0
- package/dist/operations/spot-order.d.ts.map +1 -0
- package/dist/operations/spot-order.js +173 -0
- package/dist/operations/trigger-order.d.ts +3 -0
- package/dist/operations/trigger-order.d.ts.map +1 -0
- package/dist/operations/trigger-order.js +177 -0
- package/dist/operations/twap-cancel.d.ts +3 -0
- package/dist/operations/twap-cancel.d.ts.map +1 -0
- package/dist/operations/twap-cancel.js +57 -0
- package/dist/operations/twap-status.d.ts +3 -0
- package/dist/operations/twap-status.d.ts.map +1 -0
- package/dist/operations/twap-status.js +81 -0
- package/dist/operations/twap.d.ts +3 -0
- package/dist/operations/twap.d.ts.map +1 -0
- package/dist/operations/twap.js +124 -0
- package/dist/setup/approve-builder.d.ts +3 -0
- package/dist/setup/approve-builder.d.ts.map +1 -0
- package/dist/setup/approve-builder.js +155 -0
- package/dist/setup/env.d.ts +4 -0
- package/dist/setup/env.d.ts.map +1 -0
- package/dist/setup/env.js +8 -0
- package/dist/setup/onboard.d.ts +10 -0
- package/dist/setup/onboard.d.ts.map +1 -0
- package/dist/setup/onboard.js +462 -0
- package/package.json +10 -4
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { HyperliquidClient } from '../core/client.js';
|
|
2
|
+
/** What an automation .ts file exports */
|
|
3
|
+
export type AutomationFactory = (api: AutomationAPI) => void | Promise<void>;
|
|
4
|
+
/** Config field descriptor for example automations */
|
|
5
|
+
export interface AutomationConfigField {
|
|
6
|
+
type: 'string' | 'number' | 'boolean';
|
|
7
|
+
description: string;
|
|
8
|
+
default: unknown;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** Config metadata exported by example automations as `export const config` */
|
|
12
|
+
export interface AutomationConfig {
|
|
13
|
+
description: string;
|
|
14
|
+
fields: Record<string, AutomationConfigField>;
|
|
15
|
+
}
|
|
16
|
+
export type AutomationEventType = 'tick' | 'price_change' | 'funding_update' | 'position_opened' | 'position_closed' | 'position_changed' | 'pnl_threshold' | 'margin_warning' | 'order_filled' | 'order_update' | 'liquidation';
|
|
17
|
+
export interface AutomationEventPayloads {
|
|
18
|
+
tick: {
|
|
19
|
+
timestamp: number;
|
|
20
|
+
pollCount: number;
|
|
21
|
+
};
|
|
22
|
+
price_change: {
|
|
23
|
+
coin: string;
|
|
24
|
+
oldPrice: number;
|
|
25
|
+
newPrice: number;
|
|
26
|
+
changePct: number;
|
|
27
|
+
};
|
|
28
|
+
funding_update: {
|
|
29
|
+
coin: string;
|
|
30
|
+
fundingRate: number;
|
|
31
|
+
annualized: number;
|
|
32
|
+
premium: number;
|
|
33
|
+
};
|
|
34
|
+
position_opened: {
|
|
35
|
+
coin: string;
|
|
36
|
+
side: 'long' | 'short';
|
|
37
|
+
size: number;
|
|
38
|
+
entryPrice: number;
|
|
39
|
+
};
|
|
40
|
+
position_closed: {
|
|
41
|
+
coin: string;
|
|
42
|
+
previousSize: number;
|
|
43
|
+
entryPrice: number;
|
|
44
|
+
};
|
|
45
|
+
position_changed: {
|
|
46
|
+
coin: string;
|
|
47
|
+
oldSize: number;
|
|
48
|
+
newSize: number;
|
|
49
|
+
entryPrice: number;
|
|
50
|
+
};
|
|
51
|
+
pnl_threshold: {
|
|
52
|
+
coin: string;
|
|
53
|
+
unrealizedPnl: number;
|
|
54
|
+
changePct: number;
|
|
55
|
+
positionValue: number;
|
|
56
|
+
};
|
|
57
|
+
margin_warning: {
|
|
58
|
+
marginUsedPct: number;
|
|
59
|
+
equity: number;
|
|
60
|
+
marginUsed: number;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Fires on every trade fill — partial and terminal — sourced from the
|
|
64
|
+
* Hyperliquid `userFills` WS stream. `size` is the fill delta (NOT remaining
|
|
65
|
+
* size of the order). `fee` and `closedPnl` are in USD (converted from the
|
|
66
|
+
* raw fee denomination using `price` when `feeToken !== "USDC"`, which
|
|
67
|
+
* happens on spot buys where the fee is charged in the received asset).
|
|
68
|
+
* `feeToken` is the original denomination so consumers can identify legs
|
|
69
|
+
* that won't carry a builder fee (Hyperliquid only charges builder fees on
|
|
70
|
+
* USDC-denominated trades). `crossed` is true when this side was the taker.
|
|
71
|
+
* Fee/pnl/crossed/feeToken are optional so older consumers that only read
|
|
72
|
+
* coin/oid/side/size/price keep working.
|
|
73
|
+
*/
|
|
74
|
+
order_filled: {
|
|
75
|
+
coin: string;
|
|
76
|
+
oid: number;
|
|
77
|
+
side: 'buy' | 'sell';
|
|
78
|
+
size: number;
|
|
79
|
+
price: number;
|
|
80
|
+
fee?: number;
|
|
81
|
+
feeToken?: string;
|
|
82
|
+
closedPnl?: number;
|
|
83
|
+
crossed?: boolean;
|
|
84
|
+
};
|
|
85
|
+
/** Real-time order lifecycle event via WebSocket (filled, canceled, rejected, triggered, etc.) */
|
|
86
|
+
order_update: {
|
|
87
|
+
coin: string;
|
|
88
|
+
oid: number;
|
|
89
|
+
side: 'buy' | 'sell';
|
|
90
|
+
size: number;
|
|
91
|
+
price: number;
|
|
92
|
+
origSize: number;
|
|
93
|
+
status: string;
|
|
94
|
+
statusTimestamp: number;
|
|
95
|
+
};
|
|
96
|
+
/** Liquidation event via WebSocket — only source for liquidation alerts */
|
|
97
|
+
liquidation: {
|
|
98
|
+
lid: number;
|
|
99
|
+
liquidator: string;
|
|
100
|
+
liquidatedUser: string;
|
|
101
|
+
liquidatedNtlPos: number;
|
|
102
|
+
liquidatedAccountValue: number;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export type AutomationEventHandler<E extends AutomationEventType> = (payload: AutomationEventPayloads[E]) => void | Promise<void>;
|
|
106
|
+
export interface AutomationState {
|
|
107
|
+
get<T = unknown>(key: string, defaultValue?: T): T | undefined;
|
|
108
|
+
set<T = unknown>(key: string, value: T): void;
|
|
109
|
+
delete(key: string): void;
|
|
110
|
+
clear(): void;
|
|
111
|
+
}
|
|
112
|
+
export interface AutomationLogger {
|
|
113
|
+
info(message: string): void;
|
|
114
|
+
warn(message: string): void;
|
|
115
|
+
error(message: string): void;
|
|
116
|
+
debug(message: string): void;
|
|
117
|
+
}
|
|
118
|
+
export interface AutomationAudit {
|
|
119
|
+
/** Record a custom audit note for later reporting. */
|
|
120
|
+
record(kind: string, payload?: unknown): void;
|
|
121
|
+
/** Record a numeric metric with optional dimensions/tags. */
|
|
122
|
+
metric(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Hook for external monitoring packages (e.g. `openbroker-monitoring`) to
|
|
126
|
+
* receive audit events. The runtime fans out every note, metric, and
|
|
127
|
+
* audited write-method call to every observer it has loaded.
|
|
128
|
+
*
|
|
129
|
+
* Observers are auto-loaded via convention dynamic-import — the runtime
|
|
130
|
+
* tries `await import('openbroker-monitoring')` at startup and uses the
|
|
131
|
+
* default export (a factory returning an observer or null).
|
|
132
|
+
*/
|
|
133
|
+
export interface AutomationAuditObserver {
|
|
134
|
+
onNote?(kind: string, payload?: unknown): void;
|
|
135
|
+
onMetric?(name: string, value: number, tags?: Record<string, unknown>): void;
|
|
136
|
+
onAgentAction?(action: string, status: 'success' | 'error', details: Record<string, unknown>, txHash?: string): void;
|
|
137
|
+
}
|
|
138
|
+
export interface PublishOptions {
|
|
139
|
+
/** Human-readable name for the hook (appears in logs). Default: "ob-auto-<id>" */
|
|
140
|
+
name?: string;
|
|
141
|
+
/** Wake mode: "now" triggers immediate agent turn, "next-heartbeat" queues. Default: "now" */
|
|
142
|
+
wakeMode?: 'now' | 'next-heartbeat';
|
|
143
|
+
/** Whether to deliver the agent response to messaging channels. Default: true */
|
|
144
|
+
deliver?: boolean;
|
|
145
|
+
/** Target channel (e.g. "slack", "telegram", "last"). Default: agent decides */
|
|
146
|
+
channel?: string;
|
|
147
|
+
}
|
|
148
|
+
export interface AutomationAPI {
|
|
149
|
+
/** Full Hyperliquid client (42+ methods) */
|
|
150
|
+
client: HyperliquidClient;
|
|
151
|
+
/** Convenience utilities from core */
|
|
152
|
+
utils: {
|
|
153
|
+
roundPrice: (price: number, szDecimals: number, isSpot?: boolean) => string;
|
|
154
|
+
roundSize: (size: number, szDecimals: number) => string;
|
|
155
|
+
sleep: (ms: number) => Promise<void>;
|
|
156
|
+
normalizeCoin: (coin: string) => string;
|
|
157
|
+
formatUsd: (amount: number | string) => string;
|
|
158
|
+
formatPercent: (value: number | string, decimals?: number) => string;
|
|
159
|
+
annualizeFundingRate: (hourlyRate: number | string) => number;
|
|
160
|
+
};
|
|
161
|
+
/** Subscribe to a market/account event */
|
|
162
|
+
on<E extends AutomationEventType>(event: E, handler: AutomationEventHandler<E>): void;
|
|
163
|
+
/** Run a handler on a recurring interval (ms). Aligned to the poll loop. */
|
|
164
|
+
every(intervalMs: number, handler: () => void | Promise<void>): void;
|
|
165
|
+
/** Called after all handlers are registered and polling begins */
|
|
166
|
+
onStart(handler: () => void | Promise<void>): void;
|
|
167
|
+
/** Called when automation is stopping (SIGINT, manual stop). Use for cleanup. */
|
|
168
|
+
onStop(handler: () => void | Promise<void>): void;
|
|
169
|
+
/** Called when a handler throws. The error is already logged — use this for recovery logic. */
|
|
170
|
+
onError(handler: (error: Error) => void | Promise<void>): void;
|
|
171
|
+
/**
|
|
172
|
+
* Publish a message to the OpenClaw agent via webhook.
|
|
173
|
+
* Sends to POST /hooks/agent on the local gateway, triggering an agent turn.
|
|
174
|
+
* The agent receives the message and can act on it (notify user, trade, etc.).
|
|
175
|
+
*
|
|
176
|
+
* @param message — The message string the agent will receive
|
|
177
|
+
* @param options — Optional: name, wakeMode, deliver, channel
|
|
178
|
+
* @returns true if delivered, false if webhook is not configured
|
|
179
|
+
*/
|
|
180
|
+
publish(message: string, options?: PublishOptions): Promise<boolean>;
|
|
181
|
+
/** Persisted key-value state (~/.openbroker/state/<id>.json) */
|
|
182
|
+
state: AutomationState;
|
|
183
|
+
/** Structured logger */
|
|
184
|
+
log: AutomationLogger;
|
|
185
|
+
/** Local audit trail persisted to ~/.openbroker/automation-audit.sqlite */
|
|
186
|
+
audit: AutomationAudit;
|
|
187
|
+
/** Unique automation ID (derived from filename or --id flag) */
|
|
188
|
+
id: string;
|
|
189
|
+
/** True if running in --dry mode (write methods are intercepted) */
|
|
190
|
+
dryRun: boolean;
|
|
191
|
+
}
|
|
192
|
+
export interface AutomationSnapshot {
|
|
193
|
+
prices: Map<string, number>;
|
|
194
|
+
positions: Map<string, PositionSnapshot>;
|
|
195
|
+
openOrderIds: Set<number>;
|
|
196
|
+
equity: number;
|
|
197
|
+
marginUsed: number;
|
|
198
|
+
marginUsedPct: number;
|
|
199
|
+
fundingRates: Map<string, {
|
|
200
|
+
rate: number;
|
|
201
|
+
premium: number;
|
|
202
|
+
}>;
|
|
203
|
+
timestamp: number;
|
|
204
|
+
}
|
|
205
|
+
export interface PositionSnapshot {
|
|
206
|
+
coin: string;
|
|
207
|
+
size: number;
|
|
208
|
+
entryPrice: number;
|
|
209
|
+
positionValue: number;
|
|
210
|
+
unrealizedPnl: number;
|
|
211
|
+
liquidationPx: number | null;
|
|
212
|
+
leverage: number;
|
|
213
|
+
marginUsed: number;
|
|
214
|
+
}
|
|
215
|
+
export interface ScheduledTask {
|
|
216
|
+
intervalMs: number;
|
|
217
|
+
handler: () => void | Promise<void>;
|
|
218
|
+
lastRun: number;
|
|
219
|
+
}
|
|
220
|
+
export interface RunningAutomation {
|
|
221
|
+
id: string;
|
|
222
|
+
scriptPath: string;
|
|
223
|
+
startedAt: Date;
|
|
224
|
+
pollCount: number;
|
|
225
|
+
eventsEmitted: number;
|
|
226
|
+
dryRun: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Stop the automation.
|
|
229
|
+
* @param opts.persist If false, keep the entry in the file registry so it
|
|
230
|
+
* restarts when the gateway comes back up. Default: true (fully remove).
|
|
231
|
+
*/
|
|
232
|
+
stop: (opts?: {
|
|
233
|
+
persist?: boolean;
|
|
234
|
+
}) => Promise<void>;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../scripts/auto/types.ts"],"names":[],"mappings":"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"}
|