jcc_hyper_tool 0.1.4 → 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 (179) hide show
  1. package/README.md +159 -21
  2. package/dist/advisor/actionRunner.d.ts +35 -0
  3. package/dist/advisor/actionRunner.d.ts.map +1 -0
  4. package/dist/advisor/actionRunner.js +194 -0
  5. package/dist/advisor/actionRunner.js.map +1 -0
  6. package/dist/advisor/actionSchema.d.ts +1551 -0
  7. package/dist/advisor/actionSchema.d.ts.map +1 -0
  8. package/dist/advisor/actionSchema.js +202 -0
  9. package/dist/advisor/actionSchema.js.map +1 -0
  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 +53 -0
  15. package/dist/advisor/adviseEngine.d.ts.map +1 -0
  16. package/dist/advisor/adviseEngine.js +172 -0
  17. package/dist/advisor/adviseEngine.js.map +1 -0
  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 +51 -0
  23. package/dist/advisor/contextBuilder.d.ts.map +1 -0
  24. package/dist/advisor/contextBuilder.js +153 -0
  25. package/dist/advisor/contextBuilder.js.map +1 -0
  26. package/dist/advisor/deepseekClient.d.ts +26 -0
  27. package/dist/advisor/deepseekClient.d.ts.map +1 -0
  28. package/dist/advisor/deepseekClient.js +96 -0
  29. package/dist/advisor/deepseekClient.js.map +1 -0
  30. package/dist/advisor/executionPolicy.d.ts +92 -0
  31. package/dist/advisor/executionPolicy.d.ts.map +1 -0
  32. package/dist/advisor/executionPolicy.js +273 -0
  33. package/dist/advisor/executionPolicy.js.map +1 -0
  34. package/dist/advisor/guards.d.ts +31 -0
  35. package/dist/advisor/guards.d.ts.map +1 -0
  36. package/dist/advisor/guards.js +198 -0
  37. package/dist/advisor/guards.js.map +1 -0
  38. package/dist/advisor/indicatorCompute.d.ts +45 -0
  39. package/dist/advisor/indicatorCompute.d.ts.map +1 -0
  40. package/dist/advisor/indicatorCompute.js +259 -0
  41. package/dist/advisor/indicatorCompute.js.map +1 -0
  42. package/dist/advisor/positionPlan.d.ts +33 -0
  43. package/dist/advisor/positionPlan.d.ts.map +1 -0
  44. package/dist/advisor/positionPlan.js +118 -0
  45. package/dist/advisor/positionPlan.js.map +1 -0
  46. package/dist/advisor/promptTemplate.d.ts +11 -0
  47. package/dist/advisor/promptTemplate.d.ts.map +1 -0
  48. package/dist/advisor/promptTemplate.js +230 -0
  49. package/dist/advisor/promptTemplate.js.map +1 -0
  50. package/dist/advisor/sessionLog.d.ts +41 -0
  51. package/dist/advisor/sessionLog.d.ts.map +1 -0
  52. package/dist/advisor/sessionLog.js +7 -0
  53. package/dist/advisor/sessionLog.js.map +1 -0
  54. package/dist/advisor/touchProbability.d.ts +54 -0
  55. package/dist/advisor/touchProbability.d.ts.map +1 -0
  56. package/dist/advisor/touchProbability.js +215 -0
  57. package/dist/advisor/touchProbability.js.map +1 -0
  58. package/dist/advisor/tpslPolicy.d.ts +22 -0
  59. package/dist/advisor/tpslPolicy.d.ts.map +1 -0
  60. package/dist/advisor/tpslPolicy.js +120 -0
  61. package/dist/advisor/tpslPolicy.js.map +1 -0
  62. package/dist/cli/advisorCli.d.ts +3 -0
  63. package/dist/cli/advisorCli.d.ts.map +1 -0
  64. package/dist/cli/advisorCli.js +706 -0
  65. package/dist/cli/advisorCli.js.map +1 -0
  66. package/dist/cli/index.js +6 -2
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli/riskCli.d.ts +3 -0
  69. package/dist/cli/riskCli.d.ts.map +1 -0
  70. package/dist/cli/riskCli.js +120 -0
  71. package/dist/cli/riskCli.js.map +1 -0
  72. package/dist/cli/strategyCli.d.ts.map +1 -1
  73. package/dist/cli/strategyCli.js +4 -2
  74. package/dist/cli/strategyCli.js.map +1 -1
  75. package/dist/cli/tradingCli.d.ts.map +1 -1
  76. package/dist/cli/tradingCli.js +34 -2
  77. package/dist/cli/tradingCli.js.map +1 -1
  78. package/dist/core/cliBin.d.ts +8 -0
  79. package/dist/core/cliBin.d.ts.map +1 -0
  80. package/dist/core/cliBin.js +15 -0
  81. package/dist/core/cliBin.js.map +1 -0
  82. package/dist/core/errorFormat.d.ts +7 -0
  83. package/dist/core/errorFormat.d.ts.map +1 -0
  84. package/dist/core/errorFormat.js +59 -0
  85. package/dist/core/errorFormat.js.map +1 -0
  86. package/dist/core/errors.d.ts +2 -1
  87. package/dist/core/errors.d.ts.map +1 -1
  88. package/dist/core/errors.js +3 -1
  89. package/dist/core/errors.js.map +1 -1
  90. package/dist/core/hyperliquid/asset.d.ts +2 -0
  91. package/dist/core/hyperliquid/asset.d.ts.map +1 -1
  92. package/dist/core/hyperliquid/asset.js +25 -0
  93. package/dist/core/hyperliquid/asset.js.map +1 -1
  94. package/dist/core/hyperliquid/client.d.ts +3 -0
  95. package/dist/core/hyperliquid/client.d.ts.map +1 -1
  96. package/dist/core/hyperliquid/client.js +31 -21
  97. package/dist/core/hyperliquid/client.js.map +1 -1
  98. package/dist/core/hyperliquid/exchange.d.ts +3 -0
  99. package/dist/core/hyperliquid/exchange.d.ts.map +1 -1
  100. package/dist/core/hyperliquid/exchange.js +31 -21
  101. package/dist/core/hyperliquid/exchange.js.map +1 -1
  102. package/dist/core/hyperliquid/exchangeParse.d.ts +3 -0
  103. package/dist/core/hyperliquid/exchangeParse.d.ts.map +1 -1
  104. package/dist/core/hyperliquid/exchangeParse.js +62 -0
  105. package/dist/core/hyperliquid/exchangeParse.js.map +1 -1
  106. package/dist/core/hyperliquid/httpRequest.d.ts +36 -0
  107. package/dist/core/hyperliquid/httpRequest.d.ts.map +1 -0
  108. package/dist/core/hyperliquid/httpRequest.js +171 -0
  109. package/dist/core/hyperliquid/httpRequest.js.map +1 -0
  110. package/dist/core/hyperliquid/orders.d.ts +5 -0
  111. package/dist/core/hyperliquid/orders.d.ts.map +1 -1
  112. package/dist/core/hyperliquid/orders.js +15 -5
  113. package/dist/core/hyperliquid/orders.js.map +1 -1
  114. package/dist/core/hyperliquid/rounding.d.ts +23 -0
  115. package/dist/core/hyperliquid/rounding.d.ts.map +1 -0
  116. package/dist/core/hyperliquid/rounding.js +53 -0
  117. package/dist/core/hyperliquid/rounding.js.map +1 -0
  118. package/dist/core/risk/isolatedTopUp.d.ts +112 -0
  119. package/dist/core/risk/isolatedTopUp.d.ts.map +1 -0
  120. package/dist/core/risk/isolatedTopUp.js +209 -0
  121. package/dist/core/risk/isolatedTopUp.js.map +1 -0
  122. package/dist/core/risk/isolatedTopUpHistory.d.ts +7 -0
  123. package/dist/core/risk/isolatedTopUpHistory.d.ts.map +1 -0
  124. package/dist/core/risk/isolatedTopUpHistory.js +26 -0
  125. package/dist/core/risk/isolatedTopUpHistory.js.map +1 -0
  126. package/dist/core/risk/isolatedTopUpParse.d.ts +16 -0
  127. package/dist/core/risk/isolatedTopUpParse.d.ts.map +1 -0
  128. package/dist/core/risk/isolatedTopUpParse.js +78 -0
  129. package/dist/core/risk/isolatedTopUpParse.js.map +1 -0
  130. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts +28 -0
  131. package/dist/core/risk/runIsolatedTopUpReconcile.d.ts.map +1 -0
  132. package/dist/core/risk/runIsolatedTopUpReconcile.js +184 -0
  133. package/dist/core/risk/runIsolatedTopUpReconcile.js.map +1 -0
  134. package/dist/core/state/gcTradeState.js +1 -1
  135. package/dist/core/state/gcTradeState.js.map +1 -1
  136. package/dist/core/state/gridReconcile.d.ts +2 -0
  137. package/dist/core/state/gridReconcile.d.ts.map +1 -1
  138. package/dist/core/state/gridReconcile.js +42 -2
  139. package/dist/core/state/gridReconcile.js.map +1 -1
  140. package/dist/core/state/intentFactory.d.ts +1 -0
  141. package/dist/core/state/intentFactory.d.ts.map +1 -1
  142. package/dist/core/state/intentFactory.js +1 -0
  143. package/dist/core/state/intentFactory.js.map +1 -1
  144. package/dist/core/state/profileStore.d.ts +6 -0
  145. package/dist/core/state/profileStore.d.ts.map +1 -0
  146. package/dist/core/state/profileStore.js +26 -0
  147. package/dist/core/state/profileStore.js.map +1 -0
  148. package/dist/core/state/runReconcile.d.ts.map +1 -1
  149. package/dist/core/state/runReconcile.js +92 -30
  150. package/dist/core/state/runReconcile.js.map +1 -1
  151. package/dist/core/state/schema.d.ts +565 -124
  152. package/dist/core/state/schema.d.ts.map +1 -1
  153. package/dist/core/state/schema.js +62 -0
  154. package/dist/core/state/schema.js.map +1 -1
  155. package/dist/core/state/snapshot.d.ts +13 -0
  156. package/dist/core/state/snapshot.d.ts.map +1 -1
  157. package/dist/core/state/snapshot.js +36 -0
  158. package/dist/core/state/snapshot.js.map +1 -1
  159. package/dist/core/state/statePaths.d.ts +1 -0
  160. package/dist/core/state/statePaths.d.ts.map +1 -1
  161. package/dist/core/state/statePaths.js +4 -0
  162. package/dist/core/state/statePaths.js.map +1 -1
  163. package/dist/core/state/store.d.ts +21 -3
  164. package/dist/core/state/store.d.ts.map +1 -1
  165. package/dist/core/state/store.js +123 -14
  166. package/dist/core/state/store.js.map +1 -1
  167. package/dist/core/state/types.d.ts +13 -0
  168. package/dist/core/state/types.d.ts.map +1 -1
  169. package/dist/daemon/index.js +50 -5
  170. package/dist/daemon/index.js.map +1 -1
  171. package/dist/daemon/validateChild.d.ts +13 -0
  172. package/dist/daemon/validateChild.d.ts.map +1 -0
  173. package/dist/daemon/validateChild.js +77 -0
  174. package/dist/daemon/validateChild.js.map +1 -0
  175. package/dist/strategies/grid.d.ts +1 -0
  176. package/dist/strategies/grid.d.ts.map +1 -1
  177. package/dist/strategies/grid.js +1 -0
  178. package/dist/strategies/grid.js.map +1 -1
  179. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionSchema.d.ts","sourceRoot":"","sources":["../../src/advisor/actionSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ import { z } from "zod";
2
+ export const PriceTargetSchema = z.object({
3
+ level: z.number(),
4
+ label: z.string(),
5
+ time_est: z.string(),
6
+ probability: z.number().min(0).max(1).optional(),
7
+ });
8
+ export const Range15_30mSchema = z.object({
9
+ low: z.number().positive(),
10
+ high: z.number().positive(),
11
+ optimistic_side: z.enum(["buy", "sell"]),
12
+ confidence: z.number().min(0).max(1).optional(),
13
+ });
14
+ export const AnalysisSchema = z.object({
15
+ indicators: z.string(),
16
+ elliott_wave: z.string(),
17
+ chan_theory: z.string(),
18
+ price_targets: z.array(PriceTargetSchema).optional(),
19
+ time_horizon: z.string().optional(),
20
+ range_15_30m: Range15_30mSchema.optional(),
21
+ });
22
+ const analysisField = { analysis: AnalysisSchema.optional() };
23
+ export const AdvisorActionSchema = z.discriminatedUnion("action", [
24
+ z.object({
25
+ action: z.literal("wait"),
26
+ reason: z.string(),
27
+ confidence: z.number().min(0).max(1),
28
+ ...analysisField,
29
+ }),
30
+ z.object({
31
+ action: z.literal("open_with_bracket"),
32
+ side: z.enum(["buy", "sell"]),
33
+ limit_px: z.number().positive(),
34
+ sz: z.number().positive(),
35
+ tp_px: z.number().positive(),
36
+ sl_px: z.number().positive(),
37
+ is_market: z.boolean().default(true),
38
+ protection_limit_px: z.number().positive().optional(),
39
+ reason: z.string(),
40
+ confidence: z.number().min(0).max(1),
41
+ risk_flags: z.array(z.string()).default([]),
42
+ ...analysisField,
43
+ }),
44
+ z.object({
45
+ action: z.literal("close_position"),
46
+ method: z.enum(["market", "limit"]),
47
+ limit_px: z.number().positive().optional(),
48
+ /**
49
+ * Required when active_position_plan shows trend_toward_tp: model asserts price
50
+ * is unlikely to reach TP before SL/time horizon (not merely "no protection on book").
51
+ */
52
+ tp_unreachable: z.boolean().optional(),
53
+ reason: z.string(),
54
+ confidence: z.number().min(0).max(1),
55
+ ...analysisField,
56
+ }),
57
+ z.object({
58
+ action: z.literal("cancel_all"),
59
+ reason: z.string(),
60
+ ...analysisField,
61
+ }),
62
+ z.object({
63
+ action: z.literal("place_limit_ambush"),
64
+ side: z.enum(["buy", "sell"]),
65
+ limit_px: z.number().positive(),
66
+ sz: z.number().positive(),
67
+ tp_px: z.number().positive(),
68
+ sl_px: z.number().positive(),
69
+ /** TTL minutes for unfilled entry (typical 15–30). */
70
+ expires_in_min: z.number().positive(),
71
+ is_market: z.boolean().default(true),
72
+ protection_limit_px: z.number().positive().optional(),
73
+ range_15_30m: Range15_30mSchema.optional(),
74
+ reason: z.string(),
75
+ confidence: z.number().min(0).max(1),
76
+ risk_flags: z.array(z.string()).default([]),
77
+ ...analysisField,
78
+ }),
79
+ ]);
80
+ export function isAdvisorBracketOpenAction(action) {
81
+ return action.action === "open_with_bracket" || action.action === "place_limit_ambush";
82
+ }
83
+ /** Bracket and non–is_market paths need an explicit protection limit. */
84
+ export function refineBracketProtection(action) {
85
+ if (!isAdvisorBracketOpenAction(action)) {
86
+ return action;
87
+ }
88
+ if (action.is_market) {
89
+ return action;
90
+ }
91
+ if (action.protection_limit_px === undefined || !Number.isFinite(action.protection_limit_px)) {
92
+ throw new Error(`${action.action} with is_market=false requires protection_limit_px`);
93
+ }
94
+ return action;
95
+ }
96
+ export function extractJsonObjectFromModelText(raw) {
97
+ const t = raw.trim();
98
+ const fence = /^```(?:json)?\s*([\s\S]*?)```$/im.exec(t);
99
+ const body = fence ? fence[1].trim() : t;
100
+ const start = body.indexOf("{");
101
+ const end = body.lastIndexOf("}");
102
+ if (start < 0 || end <= start) {
103
+ throw new Error("Model output did not contain a JSON object");
104
+ }
105
+ return body.slice(start, end + 1);
106
+ }
107
+ export function parseAdvisorActionFromModelText(raw) {
108
+ const json = extractJsonObjectFromModelText(raw);
109
+ const obj = JSON.parse(json);
110
+ const parsed = AdvisorActionSchema.safeParse(obj);
111
+ if (!parsed.success) {
112
+ throw new Error(parsed.error.message);
113
+ }
114
+ const data = parsed.data;
115
+ if (data.action === "close_position" && data.method === "limit") {
116
+ if (data.limit_px === undefined || !Number.isFinite(data.limit_px)) {
117
+ throw new Error("close_position with method=limit requires limit_px");
118
+ }
119
+ }
120
+ return refineBracketProtection(data);
121
+ }
122
+ // ---------------------------------------------------------------------------
123
+ // Dual-output schema (scalp + ambush in one LLM call)
124
+ // ---------------------------------------------------------------------------
125
+ const StrategyActionSchema = z.discriminatedUnion("action", [
126
+ z.object({ action: z.literal("wait"), reason: z.string(), confidence: z.number().min(0).max(1) }),
127
+ z.object({
128
+ action: z.literal("open_with_bracket"),
129
+ side: z.enum(["buy", "sell"]),
130
+ limit_px: z.number().positive(),
131
+ sz: z.number().positive(),
132
+ tp_px: z.number().positive(),
133
+ sl_px: z.number().positive(),
134
+ is_market: z.boolean().default(true),
135
+ protection_limit_px: z.number().positive().optional(),
136
+ reason: z.string(),
137
+ confidence: z.number().min(0).max(1),
138
+ risk_flags: z.array(z.string()).default([]),
139
+ }),
140
+ z.object({
141
+ action: z.literal("close_position"),
142
+ method: z.enum(["market", "limit"]),
143
+ limit_px: z.number().positive().optional(),
144
+ tp_unreachable: z.boolean().optional(),
145
+ reason: z.string(),
146
+ confidence: z.number().min(0).max(1),
147
+ }),
148
+ z.object({
149
+ action: z.literal("cancel_all"),
150
+ reason: z.string(),
151
+ }),
152
+ z.object({
153
+ action: z.literal("place_limit_ambush"),
154
+ side: z.enum(["buy", "sell"]),
155
+ limit_px: z.number().positive(),
156
+ sz: z.number().positive(),
157
+ tp_px: z.number().positive(),
158
+ sl_px: z.number().positive(),
159
+ expires_in_min: z.number().positive(),
160
+ is_market: z.boolean().default(true),
161
+ protection_limit_px: z.number().positive().optional(),
162
+ range_15_30m: Range15_30mSchema.optional(),
163
+ reason: z.string(),
164
+ confidence: z.number().min(0).max(1),
165
+ risk_flags: z.array(z.string()).default([]),
166
+ }),
167
+ ]);
168
+ export const DualAdvisorResponseSchema = z.object({
169
+ analysis: AnalysisSchema,
170
+ scalp: StrategyActionSchema.optional(),
171
+ ambush: StrategyActionSchema.optional(),
172
+ });
173
+ export function parseDualAdvisorResponse(raw) {
174
+ const json = extractJsonObjectFromModelText(raw);
175
+ const obj = JSON.parse(json);
176
+ const parsed = DualAdvisorResponseSchema.safeParse(obj);
177
+ if (!parsed.success) {
178
+ throw new Error(parsed.error.message);
179
+ }
180
+ const data = parsed.data;
181
+ // Validate close_position limit_px
182
+ for (const slot of [data.scalp, data.ambush]) {
183
+ if (slot?.action === "close_position" && slot.method === "limit") {
184
+ if (slot.limit_px === undefined || !Number.isFinite(slot.limit_px)) {
185
+ throw new Error("close_position with method=limit requires limit_px");
186
+ }
187
+ }
188
+ }
189
+ return data;
190
+ }
191
+ /** Flatten dual response into executable actions (wait skipped). */
192
+ export function dualActionsFromResponse(resp) {
193
+ const out = [];
194
+ if (resp.scalp && resp.scalp.action !== "wait") {
195
+ out.push({ strategy: "scalp", action: resp.scalp });
196
+ }
197
+ if (resp.ambush && resp.ambush.action !== "wait") {
198
+ out.push({ strategy: "ambush", action: resp.ambush });
199
+ }
200
+ return out;
201
+ }
202
+ //# sourceMappingURL=actionSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionSchema.js","sourceRoot":"","sources":["../../src/advisor/actionSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { AdvisorAction, AdvisorAnalysis } from "./actionSchema.js";
2
+ export type AdvisorTurnDisplayInput = {
3
+ action: AdvisorAction;
4
+ coin: string;
5
+ mid: number | null;
6
+ logPath: string;
7
+ reasoningContent?: string | null;
8
+ /** Max chars of model reasoning shown in terminal (full text stays in session log). Use `Infinity` for no limit. */
9
+ reasoningPreviewMax?: number;
10
+ /** Dual-output: shared analysis from response. */
11
+ analysis?: AdvisorAnalysis;
12
+ };
13
+ /** Pass as `reasoningPreviewMax` to print the full model reasoning in terminal. */
14
+ export declare const UNLIMITED_REASONING_PREVIEW: number;
15
+ export type AdvisorExecutedDisplayInput = {
16
+ command: string;
17
+ action: AdvisorAction;
18
+ exitCode: number;
19
+ logPath: string;
20
+ };
21
+ /** Human-readable terminal block for one model turn. */
22
+ export declare function formatAdvisorTurnDisplay(input: AdvisorTurnDisplayInput): string;
23
+ export declare function formatAdvisorExecutedDisplay(input: AdvisorExecutedDisplayInput): string;
24
+ /** One-line hint for REPL `show` before the shell command. */
25
+ export declare function formatAdvisorShowHeader(action: AdvisorAction, coin: string): string;
26
+ //# sourceMappingURL=adviseDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adviseDisplay.d.ts","sourceRoot":"","sources":["../../src/advisor/adviseDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oHAAoH;IACpH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,2BAA2B,QAAW,CAAC;AAEpD,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAmIF,wDAAwD;AACxD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAiD/E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,2BAA2B,GAAG,MAAM,CAcvF;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnF"}
@@ -0,0 +1,174 @@
1
+ /** Pass as `reasoningPreviewMax` to print the full model reasoning in terminal. */
2
+ export const UNLIMITED_REASONING_PREVIEW = Infinity;
3
+ function line(char = "─", width = 56) {
4
+ return char.repeat(width);
5
+ }
6
+ function pct(confidence) {
7
+ return `${Math.round(confidence * 100)}%`;
8
+ }
9
+ function actionTitle(action) {
10
+ switch (action.action) {
11
+ case "wait":
12
+ return "观望 (wait)";
13
+ case "open_with_bracket":
14
+ return `开仓 + bracket (${action.side})`;
15
+ case "place_limit_ambush":
16
+ return `埋伏限价 + bracket (${action.side}, TTL ${action.expires_in_min}m)`;
17
+ case "close_position":
18
+ return `平仓 (${action.method})`;
19
+ case "cancel_all":
20
+ return "撤销全部挂单 (cancel_all)";
21
+ }
22
+ }
23
+ function formatAnalysis(analysis) {
24
+ if (!analysis) {
25
+ return [];
26
+ }
27
+ const out = [];
28
+ if (analysis.indicators?.trim()) {
29
+ out.push(` 指标: ${analysis.indicators.trim()}`);
30
+ }
31
+ if (analysis.elliott_wave?.trim()) {
32
+ out.push(` 波浪: ${analysis.elliott_wave.trim()}`);
33
+ }
34
+ if (analysis.chan_theory?.trim()) {
35
+ out.push(` 缠论: ${analysis.chan_theory.trim()}`);
36
+ }
37
+ if (analysis.time_horizon?.trim()) {
38
+ out.push(` 时间维度: ${analysis.time_horizon.trim()}`);
39
+ }
40
+ if (analysis.range_15_30m) {
41
+ const r = analysis.range_15_30m;
42
+ const conf = r.confidence !== undefined ? ` · 信心 ${pct(r.confidence)}` : "";
43
+ out.push(` 15–30m 区间: ${r.low}–${r.high} · 乐观方向 ${r.optimistic_side}${conf}`);
44
+ }
45
+ if (analysis.price_targets && analysis.price_targets.length > 0) {
46
+ for (const t of analysis.price_targets) {
47
+ const prob = t.probability !== undefined ? ` · 概率 ${pct(t.probability)}` : "";
48
+ out.push(` 目标价 ${t.level} (${t.label}, ${t.time_est})${prob}`);
49
+ }
50
+ }
51
+ return out;
52
+ }
53
+ function formatActionDetails(action, coin) {
54
+ const out = [];
55
+ switch (action.action) {
56
+ case "open_with_bracket":
57
+ out.push(` 合约: ${coin}`);
58
+ out.push(` 方向: ${action.side}`);
59
+ out.push(` 限价: ${action.limit_px}`);
60
+ out.push(` 数量: ${action.sz}`);
61
+ out.push(` 止盈: ${action.tp_px}`);
62
+ out.push(` 止损: ${action.sl_px}`);
63
+ out.push(` 保护单: ${action.is_market ? "触发后市价" : `限价 ${action.protection_limit_px}`}`);
64
+ if (action.risk_flags.length > 0) {
65
+ out.push(` 风险标记: ${action.risk_flags.join(", ")}`);
66
+ }
67
+ break;
68
+ case "place_limit_ambush":
69
+ out.push(` 合约: ${coin}`);
70
+ out.push(` 方向: ${action.side}`);
71
+ out.push(` 埋伏限价: ${action.limit_px}`);
72
+ out.push(` 数量: ${action.sz}`);
73
+ out.push(` 止盈: ${action.tp_px}`);
74
+ out.push(` 止损: ${action.sl_px}`);
75
+ out.push(` TTL: ${action.expires_in_min} 分钟`);
76
+ out.push(` 保护单: ${action.is_market ? "触发后市价" : `限价 ${action.protection_limit_px}`}`);
77
+ if (action.range_15_30m) {
78
+ const r = action.range_15_30m;
79
+ out.push(` 15–30m 区间: ${r.low}–${r.high} (${r.optimistic_side})`);
80
+ }
81
+ if (action.risk_flags.length > 0) {
82
+ out.push(` 风险标记: ${action.risk_flags.join(", ")}`);
83
+ }
84
+ break;
85
+ case "close_position":
86
+ out.push(` 合约: ${coin}`);
87
+ out.push(` 方式: ${action.method}`);
88
+ if (action.method === "limit" && action.limit_px !== undefined) {
89
+ out.push(` 限价: ${action.limit_px}`);
90
+ }
91
+ if (action.tp_unreachable === true) {
92
+ out.push(` TP 不可达: 是(thesis 已调整)`);
93
+ }
94
+ break;
95
+ case "cancel_all":
96
+ out.push(` 范围: state 中仍在簿上的挂单`);
97
+ break;
98
+ case "wait":
99
+ out.push(` 本轮: 不提交交易所指令`);
100
+ break;
101
+ }
102
+ return out;
103
+ }
104
+ function reasoningPreview(text, max) {
105
+ if (!text?.trim()) {
106
+ return [];
107
+ }
108
+ const trimmed = text.trim();
109
+ if (trimmed.length <= max) {
110
+ return trimmed.split("\n").map((l) => ` ${l}`);
111
+ }
112
+ const head = trimmed.slice(0, max).trimEnd();
113
+ return [
114
+ ...head.split("\n").map((l) => ` ${l}`),
115
+ ` …(推理全文 ${trimmed.length} 字,见审计日志)`,
116
+ ];
117
+ }
118
+ function isUnlimitedReasoningPreview(max) {
119
+ return !Number.isFinite(max) || max <= 0;
120
+ }
121
+ /** Human-readable terminal block for one model turn. */
122
+ export function formatAdvisorTurnDisplay(input) {
123
+ const { action, coin, mid, logPath } = input;
124
+ const previewMax = input.reasoningPreviewMax ?? 480;
125
+ const showFullReasoning = isUnlimitedReasoningPreview(previewMax);
126
+ const midStr = mid !== null && Number.isFinite(mid) ? String(mid) : "—";
127
+ const blocks = [
128
+ line("═"),
129
+ ` 顾问建议 · ${coin} · mid ${midStr}`,
130
+ line("═"),
131
+ "",
132
+ `【结论】${actionTitle(action)}`,
133
+ ];
134
+ if ("confidence" in action && typeof action.confidence === "number") {
135
+ blocks.push(`【信心】${pct(action.confidence)}`);
136
+ }
137
+ blocks.push("", "【理由】", ` ${action.reason.trim()}`);
138
+ const analysisLines = formatAnalysis(input.analysis ?? action.analysis);
139
+ if (analysisLines.length > 0) {
140
+ blocks.push("", "【分析】", ...analysisLines);
141
+ }
142
+ const detailLines = formatActionDetails(action, coin);
143
+ if (detailLines.length > 0) {
144
+ blocks.push("", "【参数】", ...detailLines);
145
+ }
146
+ const reasoningLines = reasoningPreview(input.reasoningContent, showFullReasoning ? Number.MAX_SAFE_INTEGER : previewMax);
147
+ if (reasoningLines.length > 0) {
148
+ blocks.push("", showFullReasoning ? "【推理原文】" : "【推理摘要】", ...reasoningLines);
149
+ }
150
+ blocks.push("", line("─"), `审计日志: ${logPath}`, showFullReasoning
151
+ ? "(完整 JSON action 已写入上述文件)"
152
+ : "(完整 JSON action / reasoning 已写入上述文件)", "");
153
+ return `${blocks.join("\n")}\n`;
154
+ }
155
+ export function formatAdvisorExecutedDisplay(input) {
156
+ const status = input.exitCode === 0 ? "成功" : `失败 (exit ${input.exitCode})`;
157
+ const blocks = [
158
+ line("═"),
159
+ ` 执行结果 · ${actionTitle(input.action)} · ${status}`,
160
+ line("═"),
161
+ "",
162
+ `命令: ${input.command}`,
163
+ "",
164
+ line("─"),
165
+ `审计日志: ${input.logPath}`,
166
+ "",
167
+ ];
168
+ return `${blocks.join("\n")}\n`;
169
+ }
170
+ /** One-line hint for REPL `show` before the shell command. */
171
+ export function formatAdvisorShowHeader(action, coin) {
172
+ return `【预览】${coin} · ${actionTitle(action)} · ${action.reason.trim()}\n`;
173
+ }
174
+ //# sourceMappingURL=adviseDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adviseDisplay.js","sourceRoot":"","sources":["../../src/advisor/adviseDisplay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { ChatTurn, DeepseekChatResult } from "./deepseekClient.js";
2
+ import type { AdvisorAction, DualAdvisorResponse } from "./actionSchema.js";
3
+ import type { UserProfile } from "../core/state/schema.js";
4
+ import { type GlobalCliPrefixedArgs } from "./actionRunner.js";
5
+ import type { AdvisorMarketSnapshot } from "./contextBuilder.js";
6
+ import { type AdvisorExecutionPolicy, type AdvisorExecutionPolicyCli } from "./executionPolicy.js";
7
+ export type AdvisorModelTurnResult = {
8
+ /** Messages for the next API call (assistant entries include `reasoning_content` when present). */
9
+ messages: ChatTurn[];
10
+ /** Parsed dual response (scalp + ambush). */
11
+ response: DualAdvisorResponse;
12
+ /** Executable actions extracted from response (wait skipped). */
13
+ actions: Array<{
14
+ strategy: "scalp" | "ambush";
15
+ action: AdvisorAction;
16
+ }>;
17
+ lastAssistant: DeepseekChatResult;
18
+ };
19
+ /**
20
+ * Calls DeepSeek; validates JSON/Zod; on failure appends repair instructions (bounded retries).
21
+ */
22
+ export declare function runAdvisorModelTurnWithRepair(params: {
23
+ messages: ChatTurn[];
24
+ apiKey: string;
25
+ fetchImpl?: typeof fetch;
26
+ /** Extra attempts after the first failure (2 retries → 3 tries total). */
27
+ maxRepair?: number;
28
+ }): Promise<AdvisorModelTurnResult>;
29
+ export type ExecuteAdvisorResult = {
30
+ exitCode: number;
31
+ stdout: string;
32
+ stderr: string;
33
+ command: string;
34
+ response: unknown;
35
+ };
36
+ export declare function executeAdvisorAction(params: {
37
+ action: AdvisorAction;
38
+ coin: string;
39
+ snapshot: AdvisorMarketSnapshot;
40
+ profile: UserProfile | undefined;
41
+ maxSz: number;
42
+ requireTpsl?: boolean;
43
+ globals: GlobalCliPrefixedArgs;
44
+ live: boolean;
45
+ assumeYes: boolean;
46
+ statePath: string | undefined;
47
+ noState: boolean;
48
+ confirmLive?: (prompt: string) => Promise<void>;
49
+ executionPolicy?: AdvisorExecutionPolicy;
50
+ executionPolicyCli?: AdvisorExecutionPolicyCli;
51
+ nowMs?: number;
52
+ }): Promise<ExecuteAdvisorResult>;
53
+ //# sourceMappingURL=adviseEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adviseEngine.d.ts","sourceRoot":"","sources":["../../src/advisor/adviseEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAsB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,sBAAsB,GAAG;IACnC,mGAAmG;IACnG,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,iEAAiE;IACjE,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IACxE,aAAa,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmClC;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuJhC"}