@jango-blockchained/hoox-shared 1.0.8

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 (115) hide show
  1. package/README.md +27 -0
  2. package/dist/analytics.d.ts +22 -0
  3. package/dist/analytics.d.ts.map +1 -0
  4. package/dist/analytics.js +34 -0
  5. package/dist/api-client.d.ts +34 -0
  6. package/dist/api-client.d.ts.map +1 -0
  7. package/dist/api-client.js +124 -0
  8. package/dist/colors.d.ts +34 -0
  9. package/dist/colors.d.ts.map +1 -0
  10. package/dist/colors.js +42 -0
  11. package/dist/config.d.ts +24 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +91 -0
  14. package/dist/d1/index.d.ts +5 -0
  15. package/dist/d1/index.d.ts.map +1 -0
  16. package/dist/d1/index.js +316 -0
  17. package/dist/d1/repository.d.ts +77 -0
  18. package/dist/d1/repository.d.ts.map +1 -0
  19. package/dist/d1/schemas.d.ts +85 -0
  20. package/dist/d1/schemas.d.ts.map +1 -0
  21. package/dist/errors.d.ts +39 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +106 -0
  24. package/dist/exchange-client.d.ts +84 -0
  25. package/dist/exchange-client.d.ts.map +1 -0
  26. package/dist/exchange-client.js +104 -0
  27. package/dist/format-time.d.ts +24 -0
  28. package/dist/format-time.d.ts.map +1 -0
  29. package/dist/format-time.js +57 -0
  30. package/dist/formatters.d.ts +32 -0
  31. package/dist/formatters.d.ts.map +1 -0
  32. package/dist/formatters.js +155 -0
  33. package/dist/health.d.ts +19 -0
  34. package/dist/health.d.ts.map +1 -0
  35. package/dist/health.js +117 -0
  36. package/dist/index.d.ts +45 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +2581 -0
  39. package/dist/kvKeys.d.ts +72 -0
  40. package/dist/kvKeys.d.ts.map +1 -0
  41. package/dist/kvKeys.js +107 -0
  42. package/dist/kvUtils.d.ts +26 -0
  43. package/dist/kvUtils.d.ts.map +1 -0
  44. package/dist/kvUtils.js +127 -0
  45. package/dist/legal.d.ts +11 -0
  46. package/dist/legal.d.ts.map +1 -0
  47. package/dist/legal.js +40 -0
  48. package/dist/middleware/auth.d.ts +59 -0
  49. package/dist/middleware/auth.d.ts.map +1 -0
  50. package/dist/middleware/cors.d.ts +28 -0
  51. package/dist/middleware/cors.d.ts.map +1 -0
  52. package/dist/middleware/index.d.ts +10 -0
  53. package/dist/middleware/index.d.ts.map +1 -0
  54. package/dist/middleware/index.js +375 -0
  55. package/dist/middleware/logger.d.ts +16 -0
  56. package/dist/middleware/logger.d.ts.map +1 -0
  57. package/dist/middleware/rate-limit.d.ts +24 -0
  58. package/dist/middleware/rate-limit.d.ts.map +1 -0
  59. package/dist/middleware/security-headers.d.ts +39 -0
  60. package/dist/middleware/security-headers.d.ts.map +1 -0
  61. package/dist/middleware/validate.d.ts +21 -0
  62. package/dist/middleware/validate.d.ts.map +1 -0
  63. package/dist/router.d.ts +11 -0
  64. package/dist/router.d.ts.map +1 -0
  65. package/dist/router.js +123 -0
  66. package/dist/schemas/index.d.ts +4 -0
  67. package/dist/schemas/index.d.ts.map +1 -0
  68. package/dist/schemas/index.js +656 -0
  69. package/dist/schemas/registry.d.ts +8 -0
  70. package/dist/schemas/registry.d.ts.map +1 -0
  71. package/dist/schemas/types.d.ts +79 -0
  72. package/dist/schemas/types.d.ts.map +1 -0
  73. package/dist/schemas/validators.d.ts +35 -0
  74. package/dist/schemas/validators.d.ts.map +1 -0
  75. package/dist/service-bindings.d.ts +32 -0
  76. package/dist/service-bindings.d.ts.map +1 -0
  77. package/dist/service-bindings.js +31 -0
  78. package/dist/session.d.ts +46 -0
  79. package/dist/session.d.ts.map +1 -0
  80. package/dist/session.js +79 -0
  81. package/dist/sse.d.ts +26 -0
  82. package/dist/sse.d.ts.map +1 -0
  83. package/dist/sse.js +91 -0
  84. package/dist/stores/config-store.d.ts +87 -0
  85. package/dist/stores/config-store.d.ts.map +1 -0
  86. package/dist/stores/config-store.js +132 -0
  87. package/dist/stores/service-store.d.ts +206 -0
  88. package/dist/stores/service-store.d.ts.map +1 -0
  89. package/dist/stores/service-store.js +359 -0
  90. package/dist/stores/ui-store.d.ts +63 -0
  91. package/dist/stores/ui-store.d.ts.map +1 -0
  92. package/dist/stores/ui-store.js +62 -0
  93. package/dist/types/errors.d.ts +16 -0
  94. package/dist/types/errors.d.ts.map +1 -0
  95. package/dist/types/errors.js +1 -0
  96. package/dist/types/router.d.ts +22 -0
  97. package/dist/types/router.d.ts.map +1 -0
  98. package/dist/types/router.js +1 -0
  99. package/dist/types.d.ts +317 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +70 -0
  102. package/dist/wizard/engine.d.ts +42 -0
  103. package/dist/wizard/engine.d.ts.map +1 -0
  104. package/dist/wizard/index.d.ts +7 -0
  105. package/dist/wizard/index.d.ts.map +1 -0
  106. package/dist/wizard/index.js +519 -0
  107. package/dist/wizard/persistence.d.ts +14 -0
  108. package/dist/wizard/persistence.d.ts.map +1 -0
  109. package/dist/wizard/presets.d.ts +34 -0
  110. package/dist/wizard/presets.d.ts.map +1 -0
  111. package/dist/wizard/provisioner.d.ts +11 -0
  112. package/dist/wizard/provisioner.d.ts.map +1 -0
  113. package/dist/wizard/types.d.ts +72 -0
  114. package/dist/wizard/types.d.ts.map +1 -0
  115. package/package.json +83 -0
@@ -0,0 +1,62 @@
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __returnValue = (v) => v;
4
+ function __exportSetter(name, newValue) {
5
+ this[name] = __returnValue.bind(null, newValue);
6
+ }
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true,
12
+ configurable: true,
13
+ set: __exportSetter.bind(all, name)
14
+ });
15
+ };
16
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
+
18
+ // src/stores/ui-store.ts
19
+ import { create } from "zustand";
20
+ import { immer } from "zustand/middleware/immer";
21
+ var DEFAULT_VIEW = "dashboard";
22
+ var initialState = {
23
+ activeView: DEFAULT_VIEW,
24
+ sidebarExpanded: true,
25
+ modal: null,
26
+ commandPaletteOpen: false,
27
+ previousView: null
28
+ };
29
+ var useUIStore = create()(immer((set) => ({
30
+ ...initialState,
31
+ setView: (view) => set((state) => {
32
+ if (state.activeView !== view) {
33
+ state.previousView = state.activeView;
34
+ }
35
+ state.activeView = view;
36
+ state.commandPaletteOpen = false;
37
+ }),
38
+ toggleSidebar: () => set((state) => {
39
+ state.sidebarExpanded = !state.sidebarExpanded;
40
+ }),
41
+ openPalette: () => set((state) => {
42
+ state.commandPaletteOpen = true;
43
+ }),
44
+ closePalette: () => set((state) => {
45
+ state.commandPaletteOpen = false;
46
+ }),
47
+ showModal: (modal) => set((state) => {
48
+ state.modal = modal;
49
+ }),
50
+ dismissModal: () => set((state) => {
51
+ state.modal = null;
52
+ }),
53
+ goBack: () => set((state) => {
54
+ if (state.previousView) {
55
+ state.activeView = state.previousView;
56
+ state.previousView = null;
57
+ }
58
+ })
59
+ })));
60
+ export {
61
+ useUIStore
62
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Error type definitions for centralized error handling
3
+ * Used across all workers and dashboard
4
+ */
5
+ export interface AppError {
6
+ message: string;
7
+ status: number;
8
+ code?: string;
9
+ details?: Record<string, unknown>;
10
+ }
11
+ export type ErrorResponse = {
12
+ error: string;
13
+ code?: string;
14
+ details?: Record<string, unknown>;
15
+ };
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC"}
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Router type definitions for standardized worker routing
3
+ * Compatible with Cloudflare Workers edge runtime
4
+ */
5
+ export type RouteParams = Record<string, string>;
6
+ export type Handler<TEnv = Record<string, unknown>> = (request: Request, env: TEnv, ctx: ExecutionContext, params?: RouteParams) => Promise<Response | void>;
7
+ export interface RouteDefinition<TEnv = Record<string, unknown>> {
8
+ path: string;
9
+ method: string;
10
+ handler: Handler<TEnv>;
11
+ middleware?: Handler<TEnv>[];
12
+ params?: string[];
13
+ regex?: RegExp;
14
+ }
15
+ export interface Router<TEnv = Record<string, unknown>> {
16
+ get(path: string, handler: Handler<TEnv>, middleware?: Handler<TEnv>[]): void;
17
+ post(path: string, handler: Handler<TEnv>, middleware?: Handler<TEnv>[]): void;
18
+ put(path: string, handler: Handler<TEnv>, middleware?: Handler<TEnv>[]): void;
19
+ delete(path: string, handler: Handler<TEnv>, middleware?: Handler<TEnv>[]): void;
20
+ handle(request: Request, env: TEnv, ctx: ExecutionContext): Promise<Response>;
21
+ }
22
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACpD,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,gBAAgB,EACrB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAE9B,MAAM,WAAW,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAC9E,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EACtB,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAC3B,IAAI,CAAC;IACR,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAC9E,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EACtB,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAC3B,IAAI,CAAC;IACR,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/E"}
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,317 @@
1
+ import { z } from "zod";
2
+ export declare const TradeActionSchema: z.ZodEnum<{
3
+ LONG: "LONG";
4
+ SHORT: "SHORT";
5
+ CLOSE_LONG: "CLOSE_LONG";
6
+ CLOSE_SHORT: "CLOSE_SHORT";
7
+ }>;
8
+ export declare const WebhookPayloadSchema: z.ZodObject<{
9
+ exchange: z.ZodString;
10
+ action: z.ZodEnum<{
11
+ LONG: "LONG";
12
+ SHORT: "SHORT";
13
+ CLOSE_LONG: "CLOSE_LONG";
14
+ CLOSE_SHORT: "CLOSE_SHORT";
15
+ }>;
16
+ symbol: z.ZodString;
17
+ quantity: z.ZodNumber;
18
+ price: z.ZodOptional<z.ZodNumber>;
19
+ orderType: z.ZodOptional<z.ZodString>;
20
+ leverage: z.ZodOptional<z.ZodNumber>;
21
+ }, z.core.$strict>;
22
+ export declare const TradeSignalSchema: z.ZodObject<{
23
+ id: z.ZodOptional<z.ZodNumber>;
24
+ source: z.ZodString;
25
+ symbol: z.ZodString;
26
+ action: z.ZodEnum<{
27
+ LONG: "LONG";
28
+ SHORT: "SHORT";
29
+ CLOSE_LONG: "CLOSE_LONG";
30
+ CLOSE_SHORT: "CLOSE_SHORT";
31
+ }>;
32
+ price: z.ZodOptional<z.ZodNumber>;
33
+ quantity: z.ZodNumber;
34
+ leverage: z.ZodOptional<z.ZodNumber>;
35
+ status: z.ZodOptional<z.ZodEnum<{
36
+ pending: "pending";
37
+ executed: "executed";
38
+ failed: "failed";
39
+ skipped: "skipped";
40
+ }>>;
41
+ createdAt: z.ZodOptional<z.ZodString>;
42
+ executedAt: z.ZodOptional<z.ZodString>;
43
+ error: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strict>;
45
+ export declare const PositionSchema: z.ZodObject<{
46
+ id: z.ZodString;
47
+ symbol: z.ZodString;
48
+ side: z.ZodEnum<{
49
+ LONG: "LONG";
50
+ SHORT: "SHORT";
51
+ CLOSE_LONG: "CLOSE_LONG";
52
+ CLOSE_SHORT: "CLOSE_SHORT";
53
+ }>;
54
+ quantity: z.ZodNumber;
55
+ entry_price: z.ZodNumber;
56
+ current_price: z.ZodNumber;
57
+ unrealized_pnl: z.ZodNumber;
58
+ timestamp: z.ZodNumber;
59
+ }, z.core.$strict>;
60
+ export declare const BalanceSchema: z.ZodObject<{
61
+ asset: z.ZodString;
62
+ free: z.ZodNumber;
63
+ locked: z.ZodNumber;
64
+ timestamp: z.ZodNumber;
65
+ }, z.core.$strict>;
66
+ export interface StandardResponse {
67
+ success: boolean;
68
+ result?: unknown;
69
+ error?: string | null;
70
+ message?: string;
71
+ tradeResult?: unknown;
72
+ notificationResult?: unknown;
73
+ }
74
+ export interface ApiSuccessResponse<T> {
75
+ success: true;
76
+ data: T;
77
+ }
78
+ export interface ApiErrorResponse {
79
+ success: false;
80
+ error: string;
81
+ }
82
+ export type ApiResponse<T> = ApiSuccessResponse<T> | ApiErrorResponse;
83
+ export interface WorkerServiceBinding {
84
+ binding: string;
85
+ service: string;
86
+ }
87
+ export interface WorkerD1Binding {
88
+ binding: string;
89
+ database_id?: string;
90
+ database_name?: string;
91
+ }
92
+ export interface WorkerQueueConfig {
93
+ producers?: {
94
+ binding: string;
95
+ queue: string;
96
+ }[];
97
+ consumers?: {
98
+ queue: string;
99
+ }[];
100
+ }
101
+ export interface WorkerSecretsStoreBinding {
102
+ name?: string;
103
+ secret_name: string;
104
+ store_id?: string;
105
+ binding?: string;
106
+ }
107
+ export interface WorkerConfigManifestLite {
108
+ name?: string;
109
+ account_id?: string;
110
+ compatibility_date?: string;
111
+ compatibility_flags?: string[];
112
+ pages_build_output_dir?: string;
113
+ services?: WorkerServiceBinding[];
114
+ d1_databases?: WorkerD1Binding[];
115
+ secrets_store?: {
116
+ bindings?: WorkerSecretsStoreBinding[];
117
+ };
118
+ secrets_store_secrets?: WorkerSecretsStoreBinding[];
119
+ queues?: WorkerQueueConfig;
120
+ durable_objects?: {
121
+ bindings?: {
122
+ name: string;
123
+ class_name: string;
124
+ }[];
125
+ };
126
+ migrations?: {
127
+ tag: string;
128
+ new_sqlite_classes?: string[];
129
+ }[];
130
+ }
131
+ export interface HousekeepingCheck {
132
+ worker: string;
133
+ type: "error" | "warning" | "info";
134
+ message: string;
135
+ }
136
+ export interface HousekeepingSummary {
137
+ errors: number;
138
+ warnings: number;
139
+ info: number;
140
+ }
141
+ export interface HousekeepingPayload {
142
+ timestamp: string;
143
+ totalWorkers: number;
144
+ checkedWorkers: number;
145
+ issues: HousekeepingCheck[];
146
+ summary: HousekeepingSummary;
147
+ }
148
+ export interface SettingsPayload {
149
+ worker: string;
150
+ key: string;
151
+ value: string | number | boolean;
152
+ }
153
+ export interface Env {
154
+ [key: string]: any;
155
+ }
156
+ /**
157
+ * Base environment type for workers with common Cloudflare bindings.
158
+ * Workers should extend this with their specific bindings.
159
+ */
160
+ export interface BaseEnv {
161
+ /** Optional analytics service binding for tracking */
162
+ ANALYTICS_SERVICE?: Fetcher;
163
+ /** Optional KV namespace for configuration */
164
+ CONFIG_KV?: KVNamespace;
165
+ [key: string]: unknown;
166
+ }
167
+ export type Result<T> = {
168
+ ok: true;
169
+ value: T;
170
+ } | {
171
+ ok: false;
172
+ error: string;
173
+ };
174
+ export type TradeAction = z.infer<typeof TradeActionSchema>;
175
+ export type WebhookPayload = z.infer<typeof WebhookPayloadSchema>;
176
+ export type TradeSignal = z.infer<typeof TradeSignalSchema>;
177
+ export interface QueryPayload {
178
+ query: string;
179
+ params?: unknown[];
180
+ }
181
+ export interface BatchPayload {
182
+ statements: QueryPayload[];
183
+ }
184
+ /**
185
+ * Generic process request body for internal worker-to-worker calls.
186
+ * The payload type varies per worker (WebhookPayload, NotificationPayload, etc.)
187
+ */
188
+ export interface ProcessRequestBody<T = unknown> {
189
+ requestId?: string;
190
+ internalAuthKey?: string;
191
+ payload: T;
192
+ }
193
+ /** View identifier for TUI navigation. */
194
+ export type ViewId = "dashboard" | "workers" | "worker-detail" | "trade-monitor" | "logs-viewer" | "service-manager" | "config-editor" | "setup-wizard" | "settings";
195
+ /** Modal dialog state for the TUI. */
196
+ export interface ModalState {
197
+ type: "confirm" | "alert" | "prompt" | "custom";
198
+ title: string;
199
+ message?: string;
200
+ data?: unknown;
201
+ onConfirm?: () => void;
202
+ onCancel?: () => void;
203
+ }
204
+ export type WorkerStatus = "operational" | "degraded" | "down";
205
+ /**
206
+ * Information about a Cloudflare Worker for the TUI dashboard.
207
+ * Mirrors the data surfaced from the hoox-setup REST API.
208
+ */
209
+ export interface WorkerInfo {
210
+ id: string;
211
+ name: string;
212
+ status: WorkerStatus;
213
+ /** Uptime in seconds */
214
+ uptime: number;
215
+ /** CPU usage percentage (0-100) */
216
+ cpu: number;
217
+ /** Memory usage in MB */
218
+ memory: number;
219
+ /** Total request count */
220
+ requests: number;
221
+ /** Number of Durable Object instances */
222
+ durableObjectCount: number;
223
+ /** Number of edge locations the worker is deployed to */
224
+ edgeCount: number;
225
+ /** Worker version string */
226
+ version?: string;
227
+ /** Last deployment timestamp in ms */
228
+ lastDeployed?: number;
229
+ }
230
+ export type TradeSide = "buy" | "sell";
231
+ /**
232
+ * A single trade event for the TUI trade monitor.
233
+ */
234
+ export interface Trade {
235
+ id: string;
236
+ symbol: string;
237
+ side: TradeSide;
238
+ price: number;
239
+ quantity: number;
240
+ /** Unix timestamp in milliseconds */
241
+ timestamp: number;
242
+ exchange: string;
243
+ /** Optional strategy identifier */
244
+ strategy?: string;
245
+ /** Profit/Loss for this trade */
246
+ pnl?: number;
247
+ }
248
+ export type AlertSeverity = "info" | "warning" | "error" | "critical";
249
+ /**
250
+ * A system alert surfaced in the TUI dashboard.
251
+ */
252
+ export interface Alert {
253
+ id: string;
254
+ /** Alert category/type identifier */
255
+ type: string;
256
+ severity: AlertSeverity;
257
+ message: string;
258
+ /** Unix timestamp in milliseconds */
259
+ timestamp: number;
260
+ /** Optional linked worker ID */
261
+ workerId?: string;
262
+ acknowledged: boolean;
263
+ /** Source of the alert */
264
+ source?: string;
265
+ }
266
+ export type LogLevel = "debug" | "info" | "warn" | "error";
267
+ /**
268
+ * A single log entry for the TUI logs viewer.
269
+ */
270
+ export interface LogEntry {
271
+ id: string;
272
+ level: LogLevel;
273
+ message: string;
274
+ /** Unix timestamp in milliseconds */
275
+ timestamp: number;
276
+ workerId?: string;
277
+ source?: string;
278
+ /** Optional structured metadata */
279
+ metadata?: Record<string, unknown>;
280
+ }
281
+ /**
282
+ * Aggregate system-level metrics for the TUI dashboard overview.
283
+ */
284
+ export interface SystemMetrics {
285
+ /** Total number of configured workers */
286
+ totalWorkers: number;
287
+ /** Workers currently operational */
288
+ onlineWorkers: number;
289
+ /** Total P&L in USD */
290
+ totalPnl: number;
291
+ /** Active trading strategies count */
292
+ activeStrategies: number;
293
+ /** Trades in the last 24 hours */
294
+ dailyTrades: number;
295
+ /** AI agent calls in the last 24 hours */
296
+ aiCalls: number;
297
+ /** System uptime in seconds */
298
+ uptime: number;
299
+ /** Last update timestamp in ms */
300
+ lastUpdated: number;
301
+ }
302
+ /** Connection status for the TUI data-fetching state machine. */
303
+ export type ConnectionStatus = "connected" | "polling" | "offline" | "reconnecting";
304
+ /** Log filtering preferences. */
305
+ export interface LogFilter {
306
+ levels: LogLevel[];
307
+ workers: string[];
308
+ searchText: string;
309
+ }
310
+ /** Notification channel preferences. */
311
+ export interface NotificationPreferences {
312
+ alerts: boolean;
313
+ trades: boolean;
314
+ debug: boolean;
315
+ system: boolean;
316
+ }
317
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,70 @@
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __returnValue = (v) => v;
4
+ function __exportSetter(name, newValue) {
5
+ this[name] = __returnValue.bind(null, newValue);
6
+ }
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true,
12
+ configurable: true,
13
+ set: __exportSetter.bind(all, name)
14
+ });
15
+ };
16
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
+
18
+ // src/types.ts
19
+ import { z } from "zod";
20
+ var TradeActionSchema = z.enum([
21
+ "LONG",
22
+ "SHORT",
23
+ "CLOSE_LONG",
24
+ "CLOSE_SHORT"
25
+ ]);
26
+ var WebhookPayloadSchema = z.object({
27
+ exchange: z.string().min(1),
28
+ action: TradeActionSchema,
29
+ symbol: z.string().min(1).max(20),
30
+ quantity: z.number().positive().finite(),
31
+ price: z.number().positive().finite().optional(),
32
+ orderType: z.string().optional(),
33
+ leverage: z.number().int().positive().optional()
34
+ }).strict();
35
+ var TradeSignalSchema = z.object({
36
+ id: z.number().int().positive().optional(),
37
+ source: z.string().min(1),
38
+ symbol: z.string().min(1),
39
+ action: TradeActionSchema,
40
+ price: z.number().positive().finite().optional(),
41
+ quantity: z.number().positive().finite(),
42
+ leverage: z.number().int().positive().optional(),
43
+ status: z.enum(["pending", "executed", "failed", "skipped"]).optional(),
44
+ createdAt: z.string().optional(),
45
+ executedAt: z.string().optional(),
46
+ error: z.string().optional()
47
+ }).strict();
48
+ var PositionSchema = z.object({
49
+ id: z.string(),
50
+ symbol: z.string().min(1),
51
+ side: TradeActionSchema,
52
+ quantity: z.number().positive(),
53
+ entry_price: z.number().positive(),
54
+ current_price: z.number().positive(),
55
+ unrealized_pnl: z.number(),
56
+ timestamp: z.number().int().positive()
57
+ }).strict();
58
+ var BalanceSchema = z.object({
59
+ asset: z.string().min(1),
60
+ free: z.number().min(0),
61
+ locked: z.number().min(0),
62
+ timestamp: z.number().int().positive()
63
+ }).strict();
64
+ export {
65
+ WebhookPayloadSchema,
66
+ TradeSignalSchema,
67
+ TradeActionSchema,
68
+ PositionSchema,
69
+ BalanceSchema
70
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * WizardEngine — Pure-logic state machine for the setup wizard.
3
+ *
4
+ * Manages step transitions, validation, and config building.
5
+ * Does NOT depend on Node/Bun APIs — Worker-compatible.
6
+ */
7
+ import type { StepId, StepDefinition, WizardState, WorkersJsonConfig, ProvisioningPlan } from "./types";
8
+ export declare class WizardEngine {
9
+ private state;
10
+ constructor(initialState?: Partial<WizardState>);
11
+ /** Get a copy of the current state. */
12
+ getState(): WizardState;
13
+ /** Get the current step definition. */
14
+ getCurrentStep(): StepDefinition;
15
+ /** Get list of completed step IDs. */
16
+ getCompletedSteps(): StepId[];
17
+ /** Whether the current step can be proceeded (optional or already completed). */
18
+ canProceed(): boolean;
19
+ /** Whether the user can navigate back from the current step. */
20
+ canGoBack(): boolean;
21
+ /**
22
+ * Execute the current step with the given input.
23
+ * Returns validation errors. If empty, advances to the next step.
24
+ */
25
+ execute(input: Record<string, unknown>): string[];
26
+ /** Navigate back to the previous step. */
27
+ goBack(): void;
28
+ /** Reset engine to initial state. */
29
+ reset(): void;
30
+ /**
31
+ * Build the full WorkersJsonConfig from current state.
32
+ * This is the output of the wizard — written to wrangler.jsonc.
33
+ */
34
+ buildConfig(): WorkersJsonConfig;
35
+ /**
36
+ * Determine what Cloudflare resources need to be provisioned
37
+ * based on selected workers and integrations.
38
+ */
39
+ getProvisioningPlan(): ProvisioningPlan;
40
+ private applyInput;
41
+ }
42
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/wizard/engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAiKjB,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAc;gBAEf,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAI/C,uCAAuC;IACvC,QAAQ,IAAI,WAAW;IAIvB,uCAAuC;IACvC,cAAc,IAAI,cAAc;IAIhC,sCAAsC;IACtC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,iFAAiF;IACjF,UAAU,IAAI,OAAO;IAKrB,gEAAgE;IAChE,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE;IA0BjD,0CAA0C;IAC1C,MAAM,IAAI,IAAI;IAgBd,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,WAAW,IAAI,iBAAiB;IA+DhC;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB;IAwCvC,OAAO,CAAC,UAAU;CA4DnB"}
@@ -0,0 +1,7 @@
1
+ export type { StepId, WorkerPresetName, WorkerPreset } from "./types";
2
+ export type { WorkerConfig, WorkersJsonConfig, IntegratedService, ProvisioningPlan, ProvisionResult, WizardCloudflareConfig, WizardState, StepDefinition, } from "./types";
3
+ export type { Provisioner } from "./provisioner";
4
+ export { WizardEngine } from "./engine";
5
+ export { PRESETS, WORKER_DEPENDENCIES, INTEGRATIONS, BASE_WORKERS, BASE_SECRETS, resolveDependencies, } from "./presets";
6
+ export { serializeState, deserializeState, WIZARD_STATE_PATH, } from "./persistence";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtE,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC"}