@hoox-sh/hoox-shared 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/agent-config-fields.js +23 -29
- package/dist/analytics.d.ts +3 -4
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +56 -16
- package/dist/api-client.js +12 -21
- package/dist/colors.js +5 -21
- package/dist/config.js +11 -27
- package/dist/cron-handler.js +0 -16
- package/dist/d1/index.js +12 -27
- package/dist/d1/repository.js +7 -21
- package/dist/d1/schemas.js +4 -20
- package/dist/dashboard-manifest.d.ts +2 -1
- package/dist/dashboard-manifest.d.ts.map +1 -1
- package/dist/dashboard-manifest.js +37 -33
- package/dist/entitlements.d.ts +46 -0
- package/dist/entitlements.d.ts.map +1 -0
- package/dist/entitlements.js +15 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -25
- package/dist/exchange-client.js +2 -18
- package/dist/exchanges/base-exchange-client.js +0 -16
- package/dist/exchanges/index.js +0 -16
- package/dist/format-time.js +2 -18
- package/dist/formatters.js +12 -28
- package/dist/health.js +7 -21
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3895 -3653
- package/dist/kill-switch.js +14 -20
- package/dist/kvKeys.d.ts +11 -0
- package/dist/kvKeys.d.ts.map +1 -1
- package/dist/kvKeys.js +44 -45
- package/dist/kvUtils.d.ts +34 -1
- package/dist/kvUtils.d.ts.map +1 -1
- package/dist/kvUtils.js +60 -23
- package/dist/legal.js +5 -21
- package/dist/middleware/auth.d.ts +6 -3
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +27 -29
- package/dist/middleware/cors.js +4 -20
- package/dist/middleware/index.d.ts +3 -2
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +222 -164
- package/dist/middleware/logger.js +13 -27
- package/dist/middleware/rate-limit.js +2 -18
- package/dist/middleware/security-headers.js +2 -18
- package/dist/middleware/validate.d.ts +16 -0
- package/dist/middleware/validate.d.ts.map +1 -1
- package/dist/middleware/validate.js +39 -19
- package/dist/middleware/wait-until.d.ts +32 -0
- package/dist/middleware/wait-until.d.ts.map +1 -0
- package/dist/middleware/wait-until.js +30 -0
- package/dist/operator-transport.js +13 -17
- package/dist/path-utils.js +15 -31
- package/dist/queue-handler.d.ts +6 -0
- package/dist/queue-handler.d.ts.map +1 -1
- package/dist/queue-handler.js +51 -36
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +12 -18
- package/dist/schemas/index.d.ts +2 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +91 -38
- package/dist/schemas/registry.d.ts +13 -0
- package/dist/schemas/registry.d.ts.map +1 -1
- package/dist/schemas/registry.js +82 -30
- package/dist/schemas/types.d.ts +5 -0
- package/dist/schemas/types.d.ts.map +1 -1
- package/dist/schemas/validators.d.ts.map +1 -1
- package/dist/schemas/validators.js +8 -22
- package/dist/service-bindings.js +31 -34
- package/dist/session.js +2 -18
- package/dist/sse.js +10 -18
- package/dist/stores/config-store.js +8 -22
- package/dist/stores/service-store.js +17 -30
- package/dist/stores/ui-store.js +0 -16
- package/dist/tenant.d.ts +61 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +56 -0
- package/dist/test-utils.js +11 -27
- package/dist/types.d.ts +26 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +16 -26
- package/dist/wizard/engine.d.ts.map +1 -1
- package/dist/wizard/engine.js +39 -56
- package/dist/wizard/index.d.ts +1 -0
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +54 -68
- package/dist/wizard/persistence.d.ts +4 -0
- package/dist/wizard/persistence.d.ts.map +1 -1
- package/dist/wizard/persistence.js +7 -19
- package/dist/wizard/presets.d.ts.map +1 -1
- package/dist/wizard/presets.js +16 -54
- package/dist/wizard/types.d.ts +6 -0
- package/dist/wizard/types.d.ts.map +1 -1
- package/dist/wizard/types.js +5 -0
- package/package.json +7 -2
package/dist/types.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
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
2
|
// src/types.ts
|
|
19
3
|
import { z } from "zod";
|
|
20
4
|
var TradeActionSchema = z.enum([
|
|
@@ -23,26 +7,30 @@ var TradeActionSchema = z.enum([
|
|
|
23
7
|
"CLOSE_LONG",
|
|
24
8
|
"CLOSE_SHORT"
|
|
25
9
|
]);
|
|
10
|
+
var MAX_WEBHOOK_LEVERAGE = 125;
|
|
11
|
+
var MAX_WEBHOOK_QUANTITY = 1e6;
|
|
26
12
|
var WebhookPayloadSchema = z.object({
|
|
27
13
|
exchange: z.string().min(1),
|
|
28
14
|
action: TradeActionSchema,
|
|
29
15
|
symbol: z.string().min(1).max(20),
|
|
30
|
-
quantity: z.number().positive().finite(),
|
|
16
|
+
quantity: z.number().positive().finite().max(MAX_WEBHOOK_QUANTITY),
|
|
31
17
|
price: z.number().positive().finite().optional(),
|
|
32
18
|
orderType: z.string().optional(),
|
|
33
|
-
leverage: z.number().int().positive().optional(),
|
|
34
|
-
test: z.boolean().optional()
|
|
19
|
+
leverage: z.number().int().positive().max(MAX_WEBHOOK_LEVERAGE).optional(),
|
|
20
|
+
test: z.boolean().optional(),
|
|
21
|
+
tenantId: z.string().min(1).max(64).optional()
|
|
35
22
|
}).strict();
|
|
36
23
|
var TradeQueueMessageSchema = z.object({
|
|
37
24
|
requestId: z.string().min(1).max(128),
|
|
38
25
|
exchange: z.string().min(1).max(64),
|
|
39
26
|
action: TradeActionSchema,
|
|
40
27
|
symbol: z.string().min(1).max(32),
|
|
41
|
-
quantity: z.number().positive().finite(),
|
|
28
|
+
quantity: z.number().positive().finite().max(MAX_WEBHOOK_QUANTITY),
|
|
42
29
|
price: z.number().positive().finite().optional(),
|
|
43
|
-
leverage: z.number().int().positive().max(
|
|
30
|
+
leverage: z.number().int().positive().max(MAX_WEBHOOK_LEVERAGE).optional(),
|
|
44
31
|
test: z.boolean().optional(),
|
|
45
32
|
idempotencyKey: z.string().min(1).max(512).optional(),
|
|
33
|
+
tenantId: z.string().min(1).max(64).optional(),
|
|
46
34
|
queuedAt: z.string().min(1).max(64)
|
|
47
35
|
}).strict();
|
|
48
36
|
var TradeSignalSchema = z.object({
|
|
@@ -75,10 +63,12 @@ var BalanceSchema = z.object({
|
|
|
75
63
|
timestamp: z.number().int().positive()
|
|
76
64
|
}).strict();
|
|
77
65
|
export {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
TradeActionSchema,
|
|
66
|
+
BalanceSchema,
|
|
67
|
+
MAX_WEBHOOK_LEVERAGE,
|
|
68
|
+
MAX_WEBHOOK_QUANTITY,
|
|
82
69
|
PositionSchema,
|
|
83
|
-
|
|
70
|
+
TradeActionSchema,
|
|
71
|
+
TradeQueueMessageSchema,
|
|
72
|
+
TradeSignalSchema,
|
|
73
|
+
WebhookPayloadSchema
|
|
84
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/wizard/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/wizard/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAkKjB,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;IAQhC,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;IA6BjD,0CAA0C;IAC1C,MAAM,IAAI,IAAI;IAiBd,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,WAAW,IAAI,iBAAiB;IAoEhC;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB;IA8CvC,OAAO,CAAC,UAAU;CA4DnB"}
|
package/dist/wizard/engine.js
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
var
|
|
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);
|
|
2
|
+
// src/wizard/types.ts
|
|
3
|
+
var CLOUDFLARE_API_TOKEN_PLACEHOLDER = "<USE_CLOUDFLARE_API_TOKEN_ENV_OR_WRANGLER_AUTH>";
|
|
17
4
|
|
|
18
5
|
// src/wizard/presets.ts
|
|
19
6
|
var PRESETS = [
|
|
@@ -35,7 +22,7 @@ var PRESETS = [
|
|
|
35
22
|
"analytics-worker",
|
|
36
23
|
"telegram-worker"
|
|
37
24
|
],
|
|
38
|
-
integrations: ["
|
|
25
|
+
integrations: ["exchange", "telegram"]
|
|
39
26
|
},
|
|
40
27
|
{
|
|
41
28
|
name: "full",
|
|
@@ -52,15 +39,7 @@ var PRESETS = [
|
|
|
52
39
|
"web3-wallet-worker",
|
|
53
40
|
"pyne-worker"
|
|
54
41
|
],
|
|
55
|
-
integrations: [
|
|
56
|
-
"binance",
|
|
57
|
-
"bybit",
|
|
58
|
-
"mexc",
|
|
59
|
-
"telegram",
|
|
60
|
-
"openai",
|
|
61
|
-
"wallet",
|
|
62
|
-
"pyne"
|
|
63
|
-
]
|
|
42
|
+
integrations: ["exchange", "telegram", "openai", "wallet", "pyne"]
|
|
64
43
|
}
|
|
65
44
|
];
|
|
66
45
|
var WORKER_DEPENDENCIES = {
|
|
@@ -92,30 +71,12 @@ function resolveDependencies(selected) {
|
|
|
92
71
|
}
|
|
93
72
|
var INTEGRATIONS = [
|
|
94
73
|
{
|
|
95
|
-
key: "
|
|
96
|
-
label: "Binance
|
|
74
|
+
key: "exchange",
|
|
75
|
+
label: "Exchange API (Binance / Bybit / MEXC)",
|
|
97
76
|
workerName: "trade-worker",
|
|
98
77
|
secrets: {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
key: "mexc",
|
|
105
|
-
label: "MEXC Exchange",
|
|
106
|
-
workerName: "trade-worker",
|
|
107
|
-
secrets: {
|
|
108
|
-
MEXC_KEY_BINDING: "MEXC API Key",
|
|
109
|
-
MEXC_SECRET_BINDING: "MEXC API Secret"
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "bybit",
|
|
114
|
-
label: "Bybit Exchange",
|
|
115
|
-
workerName: "trade-worker",
|
|
116
|
-
secrets: {
|
|
117
|
-
BYBIT_KEY_BINDING: "Bybit API Key",
|
|
118
|
-
BYBIT_SECRET_BINDING: "Bybit API Secret"
|
|
78
|
+
EXCHANGE_KEY_BINDING: "Exchange API Key",
|
|
79
|
+
EXCHANGE_SECRET_BINDING: "Exchange API Secret"
|
|
119
80
|
}
|
|
120
81
|
},
|
|
121
82
|
{
|
|
@@ -125,6 +86,10 @@ var INTEGRATIONS = [
|
|
|
125
86
|
secrets: {
|
|
126
87
|
WALLET_MNEMONIC_SECRET: "Wallet Mnemonic Phrase",
|
|
127
88
|
WALLET_PK_SECRET: "Wallet Private Key"
|
|
89
|
+
},
|
|
90
|
+
optionalSecrets: {
|
|
91
|
+
SOLANA_PRIVATE_KEY: "Solana private key (base58; leave empty to auto-generate)",
|
|
92
|
+
JUPITER_API_KEY: "Jupiter Swap API key (portal.jup.ag; Solana DEX)"
|
|
128
93
|
}
|
|
129
94
|
},
|
|
130
95
|
{
|
|
@@ -193,7 +158,7 @@ var BASE_WORKERS = {
|
|
|
193
158
|
"d1-worker": {
|
|
194
159
|
enabled: true,
|
|
195
160
|
path: "workers/d1-worker",
|
|
196
|
-
vars: { database_name: "
|
|
161
|
+
vars: { database_name: "trade-data-db" }
|
|
197
162
|
},
|
|
198
163
|
hoox: { enabled: true, path: "workers/hoox-worker", vars: {} },
|
|
199
164
|
"agent-worker": { enabled: true, path: "workers/agent-worker", vars: {} },
|
|
@@ -345,7 +310,11 @@ class WizardEngine {
|
|
|
345
310
|
return { ...this.state };
|
|
346
311
|
}
|
|
347
312
|
getCurrentStep() {
|
|
348
|
-
|
|
313
|
+
const step = STEPS.find((s) => s.id === this.state.step) ?? STEPS[0];
|
|
314
|
+
if (!step) {
|
|
315
|
+
throw new Error("Wizard has no steps defined");
|
|
316
|
+
}
|
|
317
|
+
return step;
|
|
349
318
|
}
|
|
350
319
|
getCompletedSteps() {
|
|
351
320
|
return [...this.state.completedSteps];
|
|
@@ -368,8 +337,11 @@ class WizardEngine {
|
|
|
368
337
|
this.state.completedSteps.push(this.state.step);
|
|
369
338
|
}
|
|
370
339
|
const currentIdx = STEP_ORDER.indexOf(this.state.step);
|
|
371
|
-
if (currentIdx < STEP_ORDER.length - 1) {
|
|
372
|
-
|
|
340
|
+
if (currentIdx >= 0 && currentIdx < STEP_ORDER.length - 1) {
|
|
341
|
+
const nextStep = STEP_ORDER[currentIdx + 1];
|
|
342
|
+
if (nextStep !== undefined) {
|
|
343
|
+
this.state.step = nextStep;
|
|
344
|
+
}
|
|
373
345
|
}
|
|
374
346
|
this.state.updatedAt = Date.now();
|
|
375
347
|
return [];
|
|
@@ -380,6 +352,8 @@ class WizardEngine {
|
|
|
380
352
|
const currentIdx = STEP_ORDER.indexOf(this.state.step);
|
|
381
353
|
if (currentIdx > 0) {
|
|
382
354
|
const previousStep = STEP_ORDER[currentIdx - 1];
|
|
355
|
+
if (previousStep === undefined)
|
|
356
|
+
return;
|
|
383
357
|
this.state.step = previousStep;
|
|
384
358
|
this.state.completedSteps = this.state.completedSteps.filter((s) => s !== this.state.step || STEP_ORDER.indexOf(s) <= STEP_ORDER.indexOf(previousStep));
|
|
385
359
|
}
|
|
@@ -415,7 +389,10 @@ class WizardEngine {
|
|
|
415
389
|
if (integration.vars) {
|
|
416
390
|
Object.assign(workers[workerName].vars, integration.vars);
|
|
417
391
|
}
|
|
418
|
-
for (const secretName of
|
|
392
|
+
for (const secretName of [
|
|
393
|
+
...Object.keys(integration.secrets),
|
|
394
|
+
...Object.keys(integration.optionalSecrets ?? {})
|
|
395
|
+
]) {
|
|
419
396
|
if (!workers[workerName].secrets.includes(secretName)) {
|
|
420
397
|
workers[workerName].secrets.push(secretName);
|
|
421
398
|
}
|
|
@@ -433,7 +410,7 @@ class WizardEngine {
|
|
|
433
410
|
}
|
|
434
411
|
return {
|
|
435
412
|
global: {
|
|
436
|
-
cloudflare_api_token:
|
|
413
|
+
cloudflare_api_token: CLOUDFLARE_API_TOKEN_PLACEHOLDER,
|
|
437
414
|
cloudflare_account_id: cf?.accountId ?? "",
|
|
438
415
|
cloudflare_secret_store_id: cf?.secretStoreId ?? "",
|
|
439
416
|
subdomain_prefix: cf?.subdomain ?? ""
|
|
@@ -446,19 +423,20 @@ class WizardEngine {
|
|
|
446
423
|
d1Databases: [],
|
|
447
424
|
kvNamespaces: [],
|
|
448
425
|
r2Buckets: [],
|
|
449
|
-
queues: []
|
|
426
|
+
queues: [],
|
|
427
|
+
vectorizeIndexes: []
|
|
450
428
|
};
|
|
451
429
|
const allWorkers = [
|
|
452
430
|
...Object.keys(BASE_WORKERS),
|
|
453
431
|
...this.state.selectedWorkers,
|
|
454
432
|
...this.state.selectedIntegrations.map((k) => {
|
|
455
|
-
const i = INTEGRATIONS.find((
|
|
433
|
+
const i = INTEGRATIONS.find((i) => i.key === k);
|
|
456
434
|
return i?.workerName ?? "";
|
|
457
435
|
}).filter(Boolean)
|
|
458
436
|
];
|
|
459
437
|
const workerSet = new Set(allWorkers);
|
|
460
438
|
if (workerSet.has("d1-worker")) {
|
|
461
|
-
plan.d1Databases.push("
|
|
439
|
+
plan.d1Databases.push("trade-data-db");
|
|
462
440
|
}
|
|
463
441
|
if (workerSet.has("hoox") || workerSet.has("analytics-worker")) {
|
|
464
442
|
plan.kvNamespaces.push("CONFIG_KV");
|
|
@@ -466,8 +444,13 @@ class WizardEngine {
|
|
|
466
444
|
if (workerSet.has("web3-wallet-worker")) {
|
|
467
445
|
plan.kvNamespaces.push("WEB3_CACHE_KV");
|
|
468
446
|
}
|
|
447
|
+
if (workerSet.has("hoox") || workerSet.has("telegram-worker")) {
|
|
448
|
+
plan.vectorizeIndexes = plan.vectorizeIndexes ?? [];
|
|
449
|
+
plan.vectorizeIndexes.push("hoox-rag-index");
|
|
450
|
+
}
|
|
469
451
|
plan.d1Databases = [...new Set(plan.d1Databases)];
|
|
470
452
|
plan.kvNamespaces = [...new Set(plan.kvNamespaces)];
|
|
453
|
+
plan.vectorizeIndexes = [...new Set(plan.vectorizeIndexes ?? [])];
|
|
471
454
|
return plan;
|
|
472
455
|
}
|
|
473
456
|
applyInput(input) {
|
package/dist/wizard/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export type { StepId, WorkerPresetName, WorkerPreset } from "./types";
|
|
6
6
|
export type { WorkerConfig, WorkersJsonConfig, IntegratedService, ProvisioningPlan, ProvisionResult, WizardCloudflareConfig, WizardState, StepDefinition, } from "./types";
|
|
7
|
+
export { CLOUDFLARE_API_TOKEN_PLACEHOLDER } from "./types";
|
|
7
8
|
export type { Provisioner } from "./provisioner";
|
|
8
9
|
export { WizardEngine } from "./engine";
|
|
9
10
|
export { PRESETS, WORKER_DEPENDENCIES, INTEGRATIONS, BASE_WORKERS, BASE_SECRETS, resolveDependencies, } from "./presets";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,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,OAAO,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAC3D,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"}
|
package/dist/wizard/index.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
var
|
|
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
|
-
|
|
2
|
+
// src/wizard/types.ts
|
|
3
|
+
var CLOUDFLARE_API_TOKEN_PLACEHOLDER = "<USE_CLOUDFLARE_API_TOKEN_ENV_OR_WRANGLER_AUTH>";
|
|
18
4
|
// src/wizard/presets.ts
|
|
19
5
|
var PRESETS = [
|
|
20
6
|
{
|
|
@@ -35,7 +21,7 @@ var PRESETS = [
|
|
|
35
21
|
"analytics-worker",
|
|
36
22
|
"telegram-worker"
|
|
37
23
|
],
|
|
38
|
-
integrations: ["
|
|
24
|
+
integrations: ["exchange", "telegram"]
|
|
39
25
|
},
|
|
40
26
|
{
|
|
41
27
|
name: "full",
|
|
@@ -52,15 +38,7 @@ var PRESETS = [
|
|
|
52
38
|
"web3-wallet-worker",
|
|
53
39
|
"pyne-worker"
|
|
54
40
|
],
|
|
55
|
-
integrations: [
|
|
56
|
-
"binance",
|
|
57
|
-
"bybit",
|
|
58
|
-
"mexc",
|
|
59
|
-
"telegram",
|
|
60
|
-
"openai",
|
|
61
|
-
"wallet",
|
|
62
|
-
"pyne"
|
|
63
|
-
]
|
|
41
|
+
integrations: ["exchange", "telegram", "openai", "wallet", "pyne"]
|
|
64
42
|
}
|
|
65
43
|
];
|
|
66
44
|
var WORKER_DEPENDENCIES = {
|
|
@@ -92,30 +70,12 @@ function resolveDependencies(selected) {
|
|
|
92
70
|
}
|
|
93
71
|
var INTEGRATIONS = [
|
|
94
72
|
{
|
|
95
|
-
key: "
|
|
96
|
-
label: "Binance
|
|
73
|
+
key: "exchange",
|
|
74
|
+
label: "Exchange API (Binance / Bybit / MEXC)",
|
|
97
75
|
workerName: "trade-worker",
|
|
98
76
|
secrets: {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
key: "mexc",
|
|
105
|
-
label: "MEXC Exchange",
|
|
106
|
-
workerName: "trade-worker",
|
|
107
|
-
secrets: {
|
|
108
|
-
MEXC_KEY_BINDING: "MEXC API Key",
|
|
109
|
-
MEXC_SECRET_BINDING: "MEXC API Secret"
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "bybit",
|
|
114
|
-
label: "Bybit Exchange",
|
|
115
|
-
workerName: "trade-worker",
|
|
116
|
-
secrets: {
|
|
117
|
-
BYBIT_KEY_BINDING: "Bybit API Key",
|
|
118
|
-
BYBIT_SECRET_BINDING: "Bybit API Secret"
|
|
77
|
+
EXCHANGE_KEY_BINDING: "Exchange API Key",
|
|
78
|
+
EXCHANGE_SECRET_BINDING: "Exchange API Secret"
|
|
119
79
|
}
|
|
120
80
|
},
|
|
121
81
|
{
|
|
@@ -125,6 +85,10 @@ var INTEGRATIONS = [
|
|
|
125
85
|
secrets: {
|
|
126
86
|
WALLET_MNEMONIC_SECRET: "Wallet Mnemonic Phrase",
|
|
127
87
|
WALLET_PK_SECRET: "Wallet Private Key"
|
|
88
|
+
},
|
|
89
|
+
optionalSecrets: {
|
|
90
|
+
SOLANA_PRIVATE_KEY: "Solana private key (base58; leave empty to auto-generate)",
|
|
91
|
+
JUPITER_API_KEY: "Jupiter Swap API key (portal.jup.ag; Solana DEX)"
|
|
128
92
|
}
|
|
129
93
|
},
|
|
130
94
|
{
|
|
@@ -193,7 +157,7 @@ var BASE_WORKERS = {
|
|
|
193
157
|
"d1-worker": {
|
|
194
158
|
enabled: true,
|
|
195
159
|
path: "workers/d1-worker",
|
|
196
|
-
vars: { database_name: "
|
|
160
|
+
vars: { database_name: "trade-data-db" }
|
|
197
161
|
},
|
|
198
162
|
hoox: { enabled: true, path: "workers/hoox-worker", vars: {} },
|
|
199
163
|
"agent-worker": { enabled: true, path: "workers/agent-worker", vars: {} },
|
|
@@ -345,7 +309,11 @@ class WizardEngine {
|
|
|
345
309
|
return { ...this.state };
|
|
346
310
|
}
|
|
347
311
|
getCurrentStep() {
|
|
348
|
-
|
|
312
|
+
const step = STEPS.find((s) => s.id === this.state.step) ?? STEPS[0];
|
|
313
|
+
if (!step) {
|
|
314
|
+
throw new Error("Wizard has no steps defined");
|
|
315
|
+
}
|
|
316
|
+
return step;
|
|
349
317
|
}
|
|
350
318
|
getCompletedSteps() {
|
|
351
319
|
return [...this.state.completedSteps];
|
|
@@ -368,8 +336,11 @@ class WizardEngine {
|
|
|
368
336
|
this.state.completedSteps.push(this.state.step);
|
|
369
337
|
}
|
|
370
338
|
const currentIdx = STEP_ORDER.indexOf(this.state.step);
|
|
371
|
-
if (currentIdx < STEP_ORDER.length - 1) {
|
|
372
|
-
|
|
339
|
+
if (currentIdx >= 0 && currentIdx < STEP_ORDER.length - 1) {
|
|
340
|
+
const nextStep = STEP_ORDER[currentIdx + 1];
|
|
341
|
+
if (nextStep !== undefined) {
|
|
342
|
+
this.state.step = nextStep;
|
|
343
|
+
}
|
|
373
344
|
}
|
|
374
345
|
this.state.updatedAt = Date.now();
|
|
375
346
|
return [];
|
|
@@ -380,6 +351,8 @@ class WizardEngine {
|
|
|
380
351
|
const currentIdx = STEP_ORDER.indexOf(this.state.step);
|
|
381
352
|
if (currentIdx > 0) {
|
|
382
353
|
const previousStep = STEP_ORDER[currentIdx - 1];
|
|
354
|
+
if (previousStep === undefined)
|
|
355
|
+
return;
|
|
383
356
|
this.state.step = previousStep;
|
|
384
357
|
this.state.completedSteps = this.state.completedSteps.filter((s) => s !== this.state.step || STEP_ORDER.indexOf(s) <= STEP_ORDER.indexOf(previousStep));
|
|
385
358
|
}
|
|
@@ -415,7 +388,10 @@ class WizardEngine {
|
|
|
415
388
|
if (integration.vars) {
|
|
416
389
|
Object.assign(workers[workerName].vars, integration.vars);
|
|
417
390
|
}
|
|
418
|
-
for (const secretName of
|
|
391
|
+
for (const secretName of [
|
|
392
|
+
...Object.keys(integration.secrets),
|
|
393
|
+
...Object.keys(integration.optionalSecrets ?? {})
|
|
394
|
+
]) {
|
|
419
395
|
if (!workers[workerName].secrets.includes(secretName)) {
|
|
420
396
|
workers[workerName].secrets.push(secretName);
|
|
421
397
|
}
|
|
@@ -433,7 +409,7 @@ class WizardEngine {
|
|
|
433
409
|
}
|
|
434
410
|
return {
|
|
435
411
|
global: {
|
|
436
|
-
cloudflare_api_token:
|
|
412
|
+
cloudflare_api_token: CLOUDFLARE_API_TOKEN_PLACEHOLDER,
|
|
437
413
|
cloudflare_account_id: cf?.accountId ?? "",
|
|
438
414
|
cloudflare_secret_store_id: cf?.secretStoreId ?? "",
|
|
439
415
|
subdomain_prefix: cf?.subdomain ?? ""
|
|
@@ -446,19 +422,20 @@ class WizardEngine {
|
|
|
446
422
|
d1Databases: [],
|
|
447
423
|
kvNamespaces: [],
|
|
448
424
|
r2Buckets: [],
|
|
449
|
-
queues: []
|
|
425
|
+
queues: [],
|
|
426
|
+
vectorizeIndexes: []
|
|
450
427
|
};
|
|
451
428
|
const allWorkers = [
|
|
452
429
|
...Object.keys(BASE_WORKERS),
|
|
453
430
|
...this.state.selectedWorkers,
|
|
454
431
|
...this.state.selectedIntegrations.map((k) => {
|
|
455
|
-
const i = INTEGRATIONS.find((
|
|
432
|
+
const i = INTEGRATIONS.find((i) => i.key === k);
|
|
456
433
|
return i?.workerName ?? "";
|
|
457
434
|
}).filter(Boolean)
|
|
458
435
|
];
|
|
459
436
|
const workerSet = new Set(allWorkers);
|
|
460
437
|
if (workerSet.has("d1-worker")) {
|
|
461
|
-
plan.d1Databases.push("
|
|
438
|
+
plan.d1Databases.push("trade-data-db");
|
|
462
439
|
}
|
|
463
440
|
if (workerSet.has("hoox") || workerSet.has("analytics-worker")) {
|
|
464
441
|
plan.kvNamespaces.push("CONFIG_KV");
|
|
@@ -466,8 +443,13 @@ class WizardEngine {
|
|
|
466
443
|
if (workerSet.has("web3-wallet-worker")) {
|
|
467
444
|
plan.kvNamespaces.push("WEB3_CACHE_KV");
|
|
468
445
|
}
|
|
446
|
+
if (workerSet.has("hoox") || workerSet.has("telegram-worker")) {
|
|
447
|
+
plan.vectorizeIndexes = plan.vectorizeIndexes ?? [];
|
|
448
|
+
plan.vectorizeIndexes.push("hoox-rag-index");
|
|
449
|
+
}
|
|
469
450
|
plan.d1Databases = [...new Set(plan.d1Databases)];
|
|
470
451
|
plan.kvNamespaces = [...new Set(plan.kvNamespaces)];
|
|
452
|
+
plan.vectorizeIndexes = [...new Set(plan.vectorizeIndexes ?? [])];
|
|
471
453
|
return plan;
|
|
472
454
|
}
|
|
473
455
|
applyInput(input) {
|
|
@@ -520,10 +502,13 @@ class WizardEngine {
|
|
|
520
502
|
}
|
|
521
503
|
}
|
|
522
504
|
}
|
|
523
|
-
|
|
524
505
|
// src/wizard/persistence.ts
|
|
525
506
|
function serializeState(state) {
|
|
526
|
-
|
|
507
|
+
const copy = {
|
|
508
|
+
...state,
|
|
509
|
+
cloudflareConfig: state.cloudflareConfig ? { ...state.cloudflareConfig, apiToken: "" } : undefined
|
|
510
|
+
};
|
|
511
|
+
return JSON.stringify(copy, null, 2);
|
|
527
512
|
}
|
|
528
513
|
function deserializeState(json) {
|
|
529
514
|
const parsed = JSON.parse(json);
|
|
@@ -531,14 +516,15 @@ function deserializeState(json) {
|
|
|
531
516
|
}
|
|
532
517
|
var WIZARD_STATE_PATH = ".wizard-state.json";
|
|
533
518
|
export {
|
|
534
|
-
|
|
535
|
-
resolveDependencies,
|
|
536
|
-
deserializeState,
|
|
537
|
-
WizardEngine,
|
|
538
|
-
WORKER_DEPENDENCIES,
|
|
539
|
-
WIZARD_STATE_PATH,
|
|
540
|
-
PRESETS,
|
|
541
|
-
INTEGRATIONS,
|
|
519
|
+
BASE_SECRETS,
|
|
542
520
|
BASE_WORKERS,
|
|
543
|
-
|
|
521
|
+
CLOUDFLARE_API_TOKEN_PLACEHOLDER,
|
|
522
|
+
INTEGRATIONS,
|
|
523
|
+
PRESETS,
|
|
524
|
+
WIZARD_STATE_PATH,
|
|
525
|
+
WORKER_DEPENDENCIES,
|
|
526
|
+
WizardEngine,
|
|
527
|
+
deserializeState,
|
|
528
|
+
resolveDependencies,
|
|
529
|
+
serializeState
|
|
544
530
|
};
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
import type { WizardState } from "./types";
|
|
6
6
|
/**
|
|
7
7
|
* Serialize wizard state to JSON string.
|
|
8
|
+
*
|
|
9
|
+
* The Cloudflare API token is stripped — `.wizard-state.json` must not
|
|
10
|
+
* hold live credentials. Resume re-reads `CLOUDFLARE_API_TOKEN` from the
|
|
11
|
+
* environment (or re-prompts).
|
|
8
12
|
*/
|
|
9
13
|
export declare function serializeState(state: WizardState): string;
|
|
10
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/wizard/persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/wizard/persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAQzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAG1D;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAC"}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
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
2
|
// src/wizard/persistence.ts
|
|
19
3
|
function serializeState(state) {
|
|
20
|
-
|
|
4
|
+
const copy = {
|
|
5
|
+
...state,
|
|
6
|
+
cloudflareConfig: state.cloudflareConfig ? { ...state.cloudflareConfig, apiToken: "" } : undefined
|
|
7
|
+
};
|
|
8
|
+
return JSON.stringify(copy, null, 2);
|
|
21
9
|
}
|
|
22
10
|
function deserializeState(json) {
|
|
23
11
|
const parsed = JSON.parse(json);
|
|
@@ -25,7 +13,7 @@ function deserializeState(json) {
|
|
|
25
13
|
}
|
|
26
14
|
var WIZARD_STATE_PATH = ".wizard-state.json";
|
|
27
15
|
export {
|
|
28
|
-
|
|
16
|
+
WIZARD_STATE_PATH,
|
|
29
17
|
deserializeState,
|
|
30
|
-
|
|
18
|
+
serializeState
|
|
31
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/wizard/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI/D,eAAO,MAAM,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/wizard/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI/D,eAAO,MAAM,OAAO,EAAE,YAAY,EAsCjC,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAOxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAkBhE;AAID;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAqF3C,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,MAAM,CAC/B,MAAM,EACN;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAmBjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAIjD,CAAC"}
|