jcc_hyper_tool 0.1.5 → 0.1.6

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.
Files changed (135) hide show
  1. package/README.md +124 -17
  2. package/dist/advisor/actionRunner.d.ts +6 -0
  3. package/dist/advisor/actionRunner.d.ts.map +1 -1
  4. package/dist/advisor/actionRunner.js +38 -7
  5. package/dist/advisor/actionRunner.js.map +1 -1
  6. package/dist/advisor/actionSchema.d.ts +1209 -75
  7. package/dist/advisor/actionSchema.d.ts.map +1 -1
  8. package/dist/advisor/actionSchema.js +117 -5
  9. package/dist/advisor/actionSchema.js.map +1 -1
  10. package/dist/advisor/adviseDisplay.d.ts +26 -0
  11. package/dist/advisor/adviseDisplay.d.ts.map +1 -0
  12. package/dist/advisor/adviseDisplay.js +174 -0
  13. package/dist/advisor/adviseDisplay.js.map +1 -0
  14. package/dist/advisor/adviseEngine.d.ts +12 -2
  15. package/dist/advisor/adviseEngine.d.ts.map +1 -1
  16. package/dist/advisor/adviseEngine.js +88 -7
  17. package/dist/advisor/adviseEngine.js.map +1 -1
  18. package/dist/advisor/ambushPolicy.d.ts +47 -0
  19. package/dist/advisor/ambushPolicy.d.ts.map +1 -0
  20. package/dist/advisor/ambushPolicy.js +161 -0
  21. package/dist/advisor/ambushPolicy.js.map +1 -0
  22. package/dist/advisor/contextBuilder.d.ts +17 -0
  23. package/dist/advisor/contextBuilder.d.ts.map +1 -1
  24. package/dist/advisor/contextBuilder.js +25 -6
  25. package/dist/advisor/contextBuilder.js.map +1 -1
  26. package/dist/advisor/executionPolicy.d.ts +92 -0
  27. package/dist/advisor/executionPolicy.d.ts.map +1 -0
  28. package/dist/advisor/executionPolicy.js +273 -0
  29. package/dist/advisor/executionPolicy.js.map +1 -0
  30. package/dist/advisor/guards.d.ts +14 -0
  31. package/dist/advisor/guards.d.ts.map +1 -1
  32. package/dist/advisor/guards.js +143 -16
  33. package/dist/advisor/guards.js.map +1 -1
  34. package/dist/advisor/indicatorCompute.d.ts +45 -0
  35. package/dist/advisor/indicatorCompute.d.ts.map +1 -0
  36. package/dist/advisor/indicatorCompute.js +259 -0
  37. package/dist/advisor/indicatorCompute.js.map +1 -0
  38. package/dist/advisor/positionPlan.d.ts +33 -0
  39. package/dist/advisor/positionPlan.d.ts.map +1 -0
  40. package/dist/advisor/positionPlan.js +118 -0
  41. package/dist/advisor/positionPlan.js.map +1 -0
  42. package/dist/advisor/promptTemplate.d.ts +8 -2
  43. package/dist/advisor/promptTemplate.d.ts.map +1 -1
  44. package/dist/advisor/promptTemplate.js +175 -23
  45. package/dist/advisor/promptTemplate.js.map +1 -1
  46. package/dist/advisor/touchProbability.d.ts +54 -0
  47. package/dist/advisor/touchProbability.d.ts.map +1 -0
  48. package/dist/advisor/touchProbability.js +215 -0
  49. package/dist/advisor/touchProbability.js.map +1 -0
  50. package/dist/advisor/tpslPolicy.d.ts +22 -0
  51. package/dist/advisor/tpslPolicy.d.ts.map +1 -0
  52. package/dist/advisor/tpslPolicy.js +120 -0
  53. package/dist/advisor/tpslPolicy.js.map +1 -0
  54. package/dist/cli/advisorCli.d.ts.map +1 -1
  55. package/dist/cli/advisorCli.js +478 -126
  56. package/dist/cli/advisorCli.js.map +1 -1
  57. package/dist/cli/index.js +2 -0
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/riskCli.d.ts +3 -0
  60. package/dist/cli/riskCli.d.ts.map +1 -0
  61. package/dist/cli/riskCli.js +120 -0
  62. package/dist/cli/riskCli.js.map +1 -0
  63. package/dist/cli/strategyCli.d.ts.map +1 -1
  64. package/dist/cli/strategyCli.js +3 -1
  65. package/dist/cli/strategyCli.js.map +1 -1
  66. package/dist/cli/tradingCli.d.ts.map +1 -1
  67. package/dist/cli/tradingCli.js +31 -1
  68. package/dist/cli/tradingCli.js.map +1 -1
  69. package/dist/core/hyperliquid/asset.d.ts +2 -0
  70. package/dist/core/hyperliquid/asset.d.ts.map +1 -1
  71. package/dist/core/hyperliquid/asset.js +25 -0
  72. package/dist/core/hyperliquid/asset.js.map +1 -1
  73. package/dist/core/hyperliquid/orders.d.ts +5 -0
  74. package/dist/core/hyperliquid/orders.d.ts.map +1 -1
  75. package/dist/core/hyperliquid/orders.js +15 -5
  76. package/dist/core/hyperliquid/orders.js.map +1 -1
  77. package/dist/core/hyperliquid/rounding.d.ts +23 -0
  78. package/dist/core/hyperliquid/rounding.d.ts.map +1 -0
  79. package/dist/core/hyperliquid/rounding.js +53 -0
  80. package/dist/core/hyperliquid/rounding.js.map +1 -0
  81. package/dist/core/risk/isolatedTopUp.d.ts +112 -0
  82. package/dist/core/risk/isolatedTopUp.d.ts.map +1 -0
  83. package/dist/core/risk/isolatedTopUp.js +209 -0
  84. package/dist/core/risk/isolatedTopUp.js.map +1 -0
  85. package/dist/core/risk/isolatedTopUpHistory.d.ts +7 -0
  86. package/dist/core/risk/isolatedTopUpHistory.d.ts.map +1 -0
  87. package/dist/core/risk/isolatedTopUpHistory.js +26 -0
  88. package/dist/core/risk/isolatedTopUpHistory.js.map +1 -0
  89. package/dist/core/risk/isolatedTopUpParse.d.ts +16 -0
  90. package/dist/core/risk/isolatedTopUpParse.d.ts.map +1 -0
  91. package/dist/core/risk/isolatedTopUpParse.js +78 -0
  92. package/dist/core/risk/isolatedTopUpParse.js.map +1 -0
  93. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts +28 -0
  94. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts.map +1 -0
  95. package/dist/core/risk/runIsolatedTopUpReconcile.js +184 -0
  96. package/dist/core/risk/runIsolatedTopUpReconcile.js.map +1 -0
  97. package/dist/core/state/gridReconcile.d.ts +2 -0
  98. package/dist/core/state/gridReconcile.d.ts.map +1 -1
  99. package/dist/core/state/gridReconcile.js +42 -2
  100. package/dist/core/state/gridReconcile.js.map +1 -1
  101. package/dist/core/state/intentFactory.d.ts +1 -0
  102. package/dist/core/state/intentFactory.d.ts.map +1 -1
  103. package/dist/core/state/intentFactory.js +1 -0
  104. package/dist/core/state/intentFactory.js.map +1 -1
  105. package/dist/core/state/profileStore.d.ts.map +1 -1
  106. package/dist/core/state/profileStore.js +12 -16
  107. package/dist/core/state/profileStore.js.map +1 -1
  108. package/dist/core/state/runReconcile.d.ts.map +1 -1
  109. package/dist/core/state/runReconcile.js +53 -18
  110. package/dist/core/state/runReconcile.js.map +1 -1
  111. package/dist/core/state/schema.d.ts +439 -68
  112. package/dist/core/state/schema.d.ts.map +1 -1
  113. package/dist/core/state/schema.js +51 -0
  114. package/dist/core/state/schema.js.map +1 -1
  115. package/dist/core/state/snapshot.d.ts +13 -0
  116. package/dist/core/state/snapshot.d.ts.map +1 -1
  117. package/dist/core/state/snapshot.js +36 -0
  118. package/dist/core/state/snapshot.js.map +1 -1
  119. package/dist/core/state/store.d.ts +21 -3
  120. package/dist/core/state/store.d.ts.map +1 -1
  121. package/dist/core/state/store.js +122 -13
  122. package/dist/core/state/store.js.map +1 -1
  123. package/dist/core/state/types.d.ts +13 -0
  124. package/dist/core/state/types.d.ts.map +1 -1
  125. package/dist/daemon/index.js +47 -2
  126. package/dist/daemon/index.js.map +1 -1
  127. package/dist/daemon/validateChild.d.ts +13 -0
  128. package/dist/daemon/validateChild.d.ts.map +1 -0
  129. package/dist/daemon/validateChild.js +77 -0
  130. package/dist/daemon/validateChild.js.map +1 -0
  131. package/dist/strategies/grid.d.ts +1 -0
  132. package/dist/strategies/grid.d.ts.map +1 -1
  133. package/dist/strategies/grid.js +1 -0
  134. package/dist/strategies/grid.js.map +1 -1
  135. package/package.json +3 -1
@@ -0,0 +1,47 @@
1
+ import type { BracketIntentRecord, TradeStateFile } from "../core/state/schema.js";
2
+ import type { AdvisorAction } from "./actionSchema.js";
3
+ export type PendingAmbushSummary = {
4
+ intentId: string;
5
+ phase: string;
6
+ side: "buy" | "sell";
7
+ limitPx: number;
8
+ sz: number;
9
+ tpPx: number;
10
+ slPx: number;
11
+ expiresAtMs: number;
12
+ expiresInSec: number;
13
+ strategy?: "scalp" | "ambush";
14
+ };
15
+ export declare function isAmbushBracket(intent: BracketIntentRecord): boolean;
16
+ export declare function isActivePendingAmbush(intent: BracketIntentRecord, nowMs: number): boolean;
17
+ export declare function listPendingAmbushIntents(state: TradeStateFile, coin: string, nowMs: number): PendingAmbushSummary[];
18
+ export declare function hasActiveUnexpiredAmbush(state: TradeStateFile, coin: string, nowMs: number): boolean;
19
+ export declare function priceDeviationFraction(oldPx: number, newPx: number): number;
20
+ export declare function shouldReplaceAmbush(existingLimitPx: number, newLimitPx: number, thresholdPct: number): boolean;
21
+ export declare function requestBracketEntryCancel(statePath: string, intentId: string, nowMs: number): Promise<void>;
22
+ export declare function findActiveProtectionBracket(state: TradeStateFile, coin: string): BracketIntentRecord | undefined;
23
+ export declare function resolvePositionOpenAgeSec(params: {
24
+ state: TradeStateFile;
25
+ coin: string;
26
+ nowMs: number;
27
+ }): number | undefined;
28
+ export declare function hasPriceHitTpOrSl(side: "buy" | "sell", mid: number, tp: number, sl: number): boolean;
29
+ export type AmbushReplaceResult = {
30
+ cancelledIntentIds: string[];
31
+ skippedDuplicate: boolean;
32
+ };
33
+ /**
34
+ * Before placing a new ambush: cancel stale pending ambushes when price/side diverges;
35
+ * block duplicate placement when an unexpired ambush already matches the new estimate.
36
+ */
37
+ export declare function reconcilePendingAmbushBeforePlace(params: {
38
+ statePath: string;
39
+ coin: string;
40
+ action: Extract<AdvisorAction, {
41
+ action: "place_limit_ambush";
42
+ }>;
43
+ replaceDeviationPct: number;
44
+ nowMs: number;
45
+ }): Promise<AmbushReplaceResult>;
46
+ export declare function ambushActionSummary(action: AdvisorAction): string | undefined;
47
+ //# sourceMappingURL=ambushPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambushPolicy.d.ts","sourceRoot":"","sources":["../../src/advisor/ambushPolicy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC/B,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAGpE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWzF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,oBAAoB,EAAE,CAwBxB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAET;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAET;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,GACX,mBAAmB,GAAG,SAAS,CAUjC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,GAAG,SAAS,CAqCrB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAKT;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iCAAiC,CAAC,MAAM,EAAE;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,MAAM,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAC;IACjE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuB/B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAO7E"}
@@ -0,0 +1,161 @@
1
+ import { ConfigError } from "../core/errors.js";
2
+ import { readOrCreateTradeStateFile, updateTradeStateFileAtomic } from "../core/state/store.js";
3
+ import { isAdvisorBracketOpenAction } from "./actionSchema.js";
4
+ const PENDING_ENTRY_PHASES = new Set(["planned", "entry_pending", "entry_partial"]);
5
+ export function isAmbushBracket(intent) {
6
+ // undefined strategy = legacy intent, treated as ambush
7
+ return intent.strategy !== "scalp";
8
+ }
9
+ export function isActivePendingAmbush(intent, nowMs) {
10
+ if (!isAmbushBracket(intent)) {
11
+ return false;
12
+ }
13
+ if (!PENDING_ENTRY_PHASES.has(intent.phase)) {
14
+ return false;
15
+ }
16
+ if (intent.expiresAtMs !== undefined && nowMs > intent.expiresAtMs) {
17
+ return false;
18
+ }
19
+ return intent.phase !== "expired" && intent.phase !== "cancelled";
20
+ }
21
+ export function listPendingAmbushIntents(state, coin, nowMs) {
22
+ const out = [];
23
+ for (const [intentId, intent] of Object.entries(state.intents)) {
24
+ if (intent.kind !== "bracket" || intent.coin !== coin) {
25
+ continue;
26
+ }
27
+ if (!isActivePendingAmbush(intent, nowMs)) {
28
+ continue;
29
+ }
30
+ const expiresAtMs = intent.expiresAtMs ?? nowMs;
31
+ out.push({
32
+ intentId,
33
+ phase: intent.phase,
34
+ side: intent.entrySide,
35
+ limitPx: intent.entryLimitPx,
36
+ sz: intent.entrySz,
37
+ tpPx: intent.tpTriggerPx,
38
+ slPx: intent.slTriggerPx,
39
+ expiresAtMs,
40
+ expiresInSec: Math.max(0, Math.ceil((expiresAtMs - nowMs) / 1000)),
41
+ strategy: intent.strategy,
42
+ });
43
+ }
44
+ return out.sort((a, b) => a.expiresAtMs - b.expiresAtMs);
45
+ }
46
+ export function hasActiveUnexpiredAmbush(state, coin, nowMs) {
47
+ return listPendingAmbushIntents(state, coin, nowMs).length > 0;
48
+ }
49
+ export function priceDeviationFraction(oldPx, newPx) {
50
+ if (!Number.isFinite(oldPx) || oldPx <= 0) {
51
+ return Number.POSITIVE_INFINITY;
52
+ }
53
+ return Math.abs(newPx - oldPx) / oldPx;
54
+ }
55
+ export function shouldReplaceAmbush(existingLimitPx, newLimitPx, thresholdPct) {
56
+ return priceDeviationFraction(existingLimitPx, newLimitPx) > thresholdPct;
57
+ }
58
+ export async function requestBracketEntryCancel(statePath, intentId, nowMs) {
59
+ await updateTradeStateFileAtomic(statePath, (cur) => {
60
+ const row = cur.intents[intentId];
61
+ if (!row || row.kind !== "bracket") {
62
+ throw new ConfigError(`Bracket intent not found: ${intentId}`);
63
+ }
64
+ const nextB = { ...row, cancelRequested: true, updatedAtMs: nowMs };
65
+ return {
66
+ ...cur,
67
+ updatedAtMs: nowMs,
68
+ intents: { ...cur.intents, [intentId]: nextB },
69
+ events: [
70
+ ...cur.events,
71
+ {
72
+ t: nowMs,
73
+ intentId,
74
+ type: "user_cancel_request",
75
+ message: "cancelRequested=true (advise ambush replace)",
76
+ },
77
+ ],
78
+ };
79
+ }, nowMs);
80
+ }
81
+ export function findActiveProtectionBracket(state, coin) {
82
+ for (const intent of Object.values(state.intents)) {
83
+ if (intent.kind !== "bracket" || intent.coin !== coin) {
84
+ continue;
85
+ }
86
+ if (intent.phase === "protection_active" || intent.phase === "entry_filled") {
87
+ return intent;
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+ export function resolvePositionOpenAgeSec(params) {
93
+ const bracket = findActiveProtectionBracket(params.state, params.coin);
94
+ if (bracket) {
95
+ for (let i = params.state.events.length - 1; i >= 0; i--) {
96
+ const ev = params.state.events[i];
97
+ if (ev.intentId !== bracket.id) {
98
+ continue;
99
+ }
100
+ if (ev.message?.includes("entry_filled") || ev.type === "phase" && ev.message?.includes("entry_filled")) {
101
+ return Math.max(0, (params.nowMs - ev.t) / 1000);
102
+ }
103
+ }
104
+ return Math.max(0, (params.nowMs - bracket.createdAtMs) / 1000);
105
+ }
106
+ const history = params.state.adviseExecuteHistory;
107
+ if (!history) {
108
+ return undefined;
109
+ }
110
+ let latest;
111
+ for (const [key, rec] of Object.entries(history)) {
112
+ if (!key.startsWith(`${params.coin}:`)) {
113
+ continue;
114
+ }
115
+ if (rec.action !== "place_limit_ambush" &&
116
+ rec.action !== "open_with_bracket") {
117
+ continue;
118
+ }
119
+ if (latest === undefined || rec.atMs > latest) {
120
+ latest = rec.atMs;
121
+ }
122
+ }
123
+ if (latest === undefined) {
124
+ return undefined;
125
+ }
126
+ return Math.max(0, (params.nowMs - latest) / 1000);
127
+ }
128
+ export function hasPriceHitTpOrSl(side, mid, tp, sl) {
129
+ if (side === "buy") {
130
+ return mid >= tp || mid <= sl;
131
+ }
132
+ return mid <= tp || mid >= sl;
133
+ }
134
+ /**
135
+ * Before placing a new ambush: cancel stale pending ambushes when price/side diverges;
136
+ * block duplicate placement when an unexpired ambush already matches the new estimate.
137
+ */
138
+ export async function reconcilePendingAmbushBeforePlace(params) {
139
+ const state = await readOrCreateTradeStateFile(params.statePath, params.nowMs);
140
+ const pending = listPendingAmbushIntents(state, params.coin, params.nowMs);
141
+ const cancelledIntentIds = [];
142
+ for (const p of pending) {
143
+ const sideChanged = p.side !== params.action.side;
144
+ const priceDiverged = shouldReplaceAmbush(p.limitPx, params.action.limit_px, params.replaceDeviationPct);
145
+ if (sideChanged || priceDiverged) {
146
+ await requestBracketEntryCancel(params.statePath, p.intentId, params.nowMs);
147
+ cancelledIntentIds.push(p.intentId);
148
+ continue;
149
+ }
150
+ throw new ConfigError(`advise: pending ambush ${p.intentId} at ${p.limitPx} (${p.side}) matches new estimate within ${(params.replaceDeviationPct * 100).toFixed(2)}%; wait for TTL (${p.expiresInSec}s left) or choose "wait".`);
151
+ }
152
+ return { cancelledIntentIds, skippedDuplicate: false };
153
+ }
154
+ export function ambushActionSummary(action) {
155
+ if (!isAdvisorBracketOpenAction(action)) {
156
+ return undefined;
157
+ }
158
+ const ttl = action.action === "place_limit_ambush" ? ` TTL ${action.expires_in_min}m` : "";
159
+ return `${action.side} @ ${action.limit_px} sz ${action.sz} tp ${action.tp_px} sl ${action.sl_px}${ttl}`;
160
+ }
161
+ //# sourceMappingURL=ambushPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambushPolicy.js","sourceRoot":"","sources":["../../src/advisor/ambushPolicy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { HyperliquidInfoClient } from "../core/hyperliquid/client.js";
2
2
  import type { JsonValue } from "../core/hyperliquid/types.js";
3
+ import type { CompactCandle, IndicatorSummary } from "./indicatorCompute.js";
4
+ import type { ContextVersion } from "./promptTemplate.js";
3
5
  export type AdvisorPositionRow = {
4
6
  signed_sz: number;
5
7
  entry_px?: number;
@@ -11,11 +13,25 @@ export type AdvisorMarketSnapshot = {
11
13
  network: string;
12
14
  now_ms: number;
13
15
  mid: number | null;
16
+ /** Per-asset size decimals from HL meta (drives price rounding: max 6 - szDecimals decimal places). */
17
+ sz_decimals: number;
18
+ /** HL minimum order notional (USD). */
19
+ min_order_notional_usd: number;
20
+ /** Smallest sz at current mid meeting min notional; null when mid unknown. */
21
+ min_order_sz: number | null;
14
22
  positions: Record<string, AdvisorPositionRow>;
15
23
  kline_5m: JsonValue;
16
24
  kline_1h: JsonValue;
17
25
  kline_1d: JsonValue;
18
26
  user_note?: string;
27
+ /** Prompt context version controlling K-line vs pre-computed indicators. */
28
+ context_version: ContextVersion;
29
+ /** Pre-computed indicator summary (v2 only). */
30
+ indicator_summary?: IndicatorSummary;
31
+ /** Compact h/l/o/c/v candles for wave/Chan theory (v2 only). */
32
+ kline_5m_compact?: CompactCandle[];
33
+ kline_1h_compact?: CompactCandle[];
34
+ kline_1d_compact?: CompactCandle[];
19
35
  };
20
36
  export declare function readMidFromAllMids(mids: JsonValue, coin: string): number | null;
21
37
  /** Best-effort per-coin row from `clearinghouseState` (wire shapes vary). */
@@ -30,5 +46,6 @@ export declare function buildAdvisorMarketSnapshot(params: {
30
46
  kline5mBars: number;
31
47
  kline1hBars: number;
32
48
  kline1dBars: number;
49
+ contextVersion: ContextVersion;
33
50
  }): Promise<AdvisorMarketSnapshot>;
34
51
  //# sourceMappingURL=contextBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextBuilder.d.ts","sourceRoot":"","sources":["../../src/advisor/contextBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAM3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAO9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa/E;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,GACX,kBAAkB,GAAG,SAAS,CAuDhC;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkDjC"}
1
+ {"version":3,"file":"contextBuilder.d.ts","sourceRoot":"","sources":["../../src/advisor/contextBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAW3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,uGAAuG;IACvG,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,eAAe,EAAE,cAAc,CAAC;IAChC,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;CACpC,CAAC;AASF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa/E;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,GACX,kBAAkB,GAAG,SAAS,CAuDhC;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqEjC"}
@@ -1,6 +1,9 @@
1
+ import { perpSzDecimalsFromMeta } from "../core/hyperliquid/asset.js";
2
+ import { HL_MIN_ORDER_NOTIONAL_USD, minPerpOrderSzForNotional, } from "../core/hyperliquid/rounding.js";
1
3
  import { assertPerpKlineCoinInMeta, resolvePerpKlineCoinArg, } from "../core/hyperliquid/klineCoin.js";
2
4
  import { inferHlDexFromPrefixedPerpCoin } from "../core/hyperliquid/prefixedPerpCoin.js";
3
5
  import { signedPositionSizeForCoin } from "../core/state/snapshot.js";
6
+ import { buildCompactKlines, computeIndicatorSummary } from "./indicatorCompute.js";
4
7
  const MINUTE_MS = 60_000;
5
8
  const HOUR_MS = 60 * MINUTE_MS;
6
9
  const DAY_MS = 24 * HOUR_MS;
@@ -87,10 +90,11 @@ export function extractPositionDetail(chState, coin) {
87
90
  export async function buildAdvisorMarketSnapshot(params) {
88
91
  const resolvedCoin = resolvePerpKlineCoinArg(params.coin);
89
92
  const dexForMeta = inferHlDexFromPrefixedPerpCoin(resolvedCoin);
93
+ const meta = await params.info.meta(dexForMeta);
90
94
  if (dexForMeta) {
91
- const meta = await params.info.meta(dexForMeta);
92
95
  assertPerpKlineCoinInMeta(meta, resolvedCoin);
93
96
  }
97
+ const szDecimals = perpSzDecimalsFromMeta(meta, resolvedCoin);
94
98
  const endTime = params.nowMs;
95
99
  const s5 = endTime - params.kline5mBars * 5 * MINUTE_MS;
96
100
  const s1h = endTime - params.kline1hBars * HOUR_MS;
@@ -114,21 +118,36 @@ export async function buildAdvisorMarketSnapshot(params) {
114
118
  startTime: s1d,
115
119
  endTime,
116
120
  }),
117
- params.info.clearinghouseState(params.userAddress),
121
+ params.info.clearinghouseState(params.userAddress, dexForMeta),
118
122
  params.info.allMids(dexForMeta),
119
123
  ]);
120
124
  const pos = extractPositionDetail(ch, resolvedCoin);
121
125
  const positions = pos ? { [resolvedCoin]: pos } : {};
126
+ const mid = readMidFromAllMids(mids, resolvedCoin);
127
+ const trimmed5m = trimCandles(raw5m, params.kline5mBars);
128
+ const trimmed1h = trimCandles(raw1h, params.kline1hBars);
129
+ const trimmed1d = trimCandles(raw1d, params.kline1dBars);
130
+ const isV2 = params.contextVersion === "precomputed_indicators";
122
131
  return {
123
132
  coin: resolvedCoin,
124
133
  network: params.network,
125
134
  now_ms: params.nowMs,
126
- mid: readMidFromAllMids(mids, resolvedCoin),
135
+ mid,
136
+ sz_decimals: szDecimals,
137
+ min_order_notional_usd: HL_MIN_ORDER_NOTIONAL_USD,
138
+ min_order_sz: mid !== null && mid > 0 ? minPerpOrderSzForNotional(mid, szDecimals) : null,
127
139
  positions,
128
- kline_5m: trimCandles(raw5m, params.kline5mBars),
129
- kline_1h: trimCandles(raw1h, params.kline1hBars),
130
- kline_1d: trimCandles(raw1d, params.kline1dBars),
140
+ kline_5m: trimmed5m,
141
+ kline_1h: trimmed1h,
142
+ kline_1d: trimmed1d,
131
143
  user_note: params.userNote,
144
+ context_version: params.contextVersion,
145
+ indicator_summary: isV2
146
+ ? computeIndicatorSummary(trimmed5m, trimmed1h, trimmed1d)
147
+ : undefined,
148
+ kline_5m_compact: isV2 ? buildCompactKlines(trimmed5m, params.kline5mBars) : undefined,
149
+ kline_1h_compact: isV2 ? buildCompactKlines(trimmed1h, params.kline1hBars) : undefined,
150
+ kline_1d_compact: isV2 ? buildCompactKlines(trimmed1d, params.kline1dBars) : undefined,
132
151
  };
133
152
  }
134
153
  //# sourceMappingURL=contextBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextBuilder.js","sourceRoot":"","sources":["../../src/advisor/contextBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextBuilder.js","sourceRoot":"","sources":["../../src/advisor/contextBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGpF,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC;AAC/B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC;AAmC5B,SAAS,WAAW,CAAC,GAAc,EAAE,OAAe;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAe,EAAE,IAAY;IAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,GAAI,IAAgC,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CACnC,OAAkB,EAClB,IAAY;IAEZ,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,cAAc,GAAI,OAAmC,CAAC,cAAc,CAAC;IAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAI,EAA8B,CAAC,QAAQ,CAAC;QAC1D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,QAAmC,CAAC;QAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,GAAI,EAA8B,CAAC,QAAQ,CAAC;QACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,CAAC,GAAI,GAA+B,CAAC,KAAK,CAAC;YACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAI,EAA8B,CAAC,aAAa,CAAC;QAC3D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAWhD;IACC,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,yBAAyB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,MAAM,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC;IACxD,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;IACnD,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAElD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,EAAE;YACb,OAAO;SACR,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,OAAO;SACR,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,OAAO;SACR,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KAChC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,qBAAqB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,SAAS,GAAuC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,KAAK,wBAAwB,CAAC;IAEhE,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,GAAG;QACH,WAAW,EAAE,UAAU;QACvB,sBAAsB,EAAE,yBAAyB;QACjD,YAAY,EACV,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7E,SAAS;QACT,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,eAAe,EAAE,MAAM,CAAC,cAAc;QACtC,iBAAiB,EAAE,IAAI;YACrB,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC1D,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QACtF,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QACtF,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;KACvF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,92 @@
1
+ import type { JsonValue } from "../core/hyperliquid/types.js";
2
+ import type { TradeStateFile, UserProfile } from "../core/state/schema.js";
3
+ import type { AdvisorAction } from "./actionSchema.js";
4
+ import type { AdvisorGuardInputs } from "./guards.js";
5
+ import { type BracketTouchProbabilities } from "./touchProbability.js";
6
+ export type AdvisorExecutionPolicy = {
7
+ minConfidence: number;
8
+ limitJitterPct: number;
9
+ executeCooldownSec: number;
10
+ /** 0=off, 1=place entry at model SL (TP/SL shift by same delta). */
11
+ bracketSlEntryShift: number;
12
+ ambushReplaceDeviationPct: number;
13
+ antiRushCloseMinSec: number;
14
+ defaultAmbushExpiresMin: number;
15
+ };
16
+ export type AdvisorExecutionPolicyCli = {
17
+ minConfidence?: number;
18
+ limitJitterPct?: number;
19
+ executeCooldownSec?: number;
20
+ slEntryShift?: number;
21
+ ambushReplaceDeviationPct?: number;
22
+ antiRushCloseMinSec?: number;
23
+ defaultAmbushExpiresMin?: number;
24
+ auto?: boolean;
25
+ };
26
+ export type AdviseExecuteRecord = {
27
+ action: string;
28
+ atMs: number;
29
+ };
30
+ /** Shared size cap for bracket open and partial close. */
31
+ export declare function resolveAdvisorSzCap(inputs: AdvisorGuardInputs): number;
32
+ /** Profile minimum sz for bracket open (`minSzByCoin` overrides `defaultMinSz`). */
33
+ export declare function resolveAdvisorMinSz(inputs: AdvisorGuardInputs): number | undefined;
34
+ export declare function resolveAdvisorExecutionPolicy(profile: UserProfile | undefined, cli: AdvisorExecutionPolicyCli): AdvisorExecutionPolicy;
35
+ export declare function assertAdvisorConfidenceGate(action: AdvisorAction, minConfidence: number): void;
36
+ export declare function adviseExecuteCooldownKey(coin: string, action: AdvisorAction): string | null;
37
+ export declare function assertAdviseExecuteCooldown(params: {
38
+ history: Record<string, AdviseExecuteRecord> | undefined;
39
+ coin: string;
40
+ action: AdvisorAction;
41
+ cooldownSec: number;
42
+ nowMs: number;
43
+ }): void;
44
+ export declare function recordAdviseExecuteCooldown(params: {
45
+ statePath: string;
46
+ coin: string;
47
+ action: AdvisorAction;
48
+ nowMs: number;
49
+ }): Promise<void>;
50
+ /**
51
+ * Round advisor limit/trigger prices for exchange submission.
52
+ * When `szDecimals` is set, uses Hyperliquid per-asset rules (5 sig figs, 6 - szDecimals decimals).
53
+ */
54
+ export declare function roundAdvisorLimitPx(px: number, szDecimals?: number): number;
55
+ export declare function jitterLimitPrice(px: number, jitterPct: number, rng?: () => number, szDecimals?: number): number;
56
+ export declare function applyLimitJitterWithinBand(px: number, mid: number | null, jitterPct: number, maxDevPct: number, rng?: () => number, szDecimals?: number): {
57
+ px: number;
58
+ applied: boolean;
59
+ };
60
+ /**
61
+ * Shift bracket entry toward the model stop: delta = factor × (sl_px − limit_px).
62
+ * factor=1 → entry at SL; TP/SL and optional protection_limit_px move by the same delta.
63
+ */
64
+ export declare function applyBracketSlEntryShift(action: AdvisorAction, factor: number, szDecimals?: number): {
65
+ action: AdvisorAction;
66
+ notes: string[];
67
+ };
68
+ export declare function prepareAdvisorActionForExecution(action: AdvisorAction, options: {
69
+ slEntryShift: number;
70
+ limitJitterPct: number;
71
+ mid: number | null;
72
+ maxDevPct: number;
73
+ szDecimals?: number;
74
+ rng?: () => number;
75
+ kline1h?: JsonValue;
76
+ profile?: UserProfile;
77
+ }): {
78
+ action: AdvisorAction;
79
+ notes: string[];
80
+ touchProbs?: BracketTouchProbabilities;
81
+ };
82
+ export declare function applyAdvisorExecutionJitter(action: AdvisorAction, mid: number | null, jitterPct: number, maxDevPct: number, rng?: () => number, szDecimals?: number): {
83
+ action: AdvisorAction;
84
+ notes: string[];
85
+ };
86
+ export declare function resolveCloseSz(positionSignedSz: number | undefined, szCap: number): {
87
+ sz: number;
88
+ capped: boolean;
89
+ positionAbs: number;
90
+ };
91
+ export declare function readAdviseExecuteHistory(state: TradeStateFile | undefined): Record<string, AdviseExecuteRecord> | undefined;
92
+ //# sourceMappingURL=executionPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionPolicy.d.ts","sourceRoot":"","sources":["../../src/advisor/executionPolicy.ts"],"names":[],"mappings":"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"}