@jango-blockchained/hoox-shared 1.0.9 → 1.1.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 +17 -0
- package/dist/analytics.d.ts +23 -1
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +14 -3
- package/dist/api-client.d.ts +12 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +74 -7
- package/dist/colors.d.ts +63 -24
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +60 -19
- package/dist/config.d.ts +34 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +61 -6
- package/dist/cron-handler.d.ts +2 -2
- package/dist/cron-handler.d.ts.map +1 -1
- package/dist/d1/index.js +1 -0
- package/dist/d1/repository.js +297 -0
- package/dist/d1/schemas.js +81 -0
- package/dist/exchanges/base-exchange-client.js +120 -0
- package/dist/exchanges/types.js +1 -0
- package/dist/index.d.ts +21 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +580 -60
- package/dist/middleware/auth.d.ts +42 -6
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +151 -0
- package/dist/middleware/cors.d.ts +28 -2
- package/dist/middleware/cors.d.ts.map +1 -1
- package/dist/middleware/cors.js +77 -0
- package/dist/middleware/index.d.ts +2 -2
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +192 -107
- package/dist/middleware/logger.js +202 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +181 -0
- package/dist/middleware/security-headers.js +58 -0
- package/dist/middleware/validate.js +56 -0
- package/dist/operator-transport.d.ts +61 -0
- package/dist/operator-transport.d.ts.map +1 -0
- package/dist/operator-transport.js +87 -0
- package/dist/path-utils.d.ts +59 -1
- package/dist/path-utils.d.ts.map +1 -1
- package/dist/path-utils.js +89 -2
- package/dist/queue-handler.d.ts +3 -3
- package/dist/queue-handler.d.ts.map +1 -1
- package/dist/router.d.ts +2 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/schemas/index.js +7 -4
- package/dist/schemas/registry.js +387 -0
- package/dist/schemas/types.js +1 -0
- package/dist/schemas/validators.d.ts.map +1 -1
- package/dist/schemas/validators.js +290 -0
- package/dist/service-bindings.d.ts +65 -0
- package/dist/service-bindings.d.ts.map +1 -1
- package/dist/service-bindings.js +216 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +97 -2
- package/dist/sse.d.ts +12 -3
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +70 -7
- package/dist/stores/config-store.d.ts.map +1 -1
- package/dist/stores/config-store.js +129 -6
- package/dist/stores/service-store.d.ts.map +1 -1
- package/dist/stores/service-store.js +96 -25
- package/dist/types.d.ts +66 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +11 -0
- package/dist/wizard/engine.js +501 -0
- package/dist/wizard/index.js +2 -1
- package/dist/wizard/persistence.js +31 -0
- package/dist/wizard/presets.js +199 -0
- package/dist/wizard/provisioner.js +1 -0
- package/dist/wizard/types.js +1 -0
- package/package.json +38 -12
package/dist/router.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* Path parameters are extracted and passed as the 4th argument to handlers.
|
|
7
7
|
*/
|
|
8
8
|
import type { Router } from "./types/router";
|
|
9
|
-
export type { Handler, RouteParams } from "./types/router";
|
|
10
|
-
export declare function createRouter<TEnv =
|
|
9
|
+
export type { Handler, MiddlewareHandler, RouteParams } from "./types/router";
|
|
10
|
+
export declare function createRouter<TEnv = unknown>(): Router<TEnv>;
|
|
11
11
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9E,wBAAgB,YAAY,CAAC,IAAI,GAAG,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAsM3D"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -36,7 +36,7 @@ function deriveCalledBy(manifests) {
|
|
|
36
36
|
var manifests = {
|
|
37
37
|
hoox: {
|
|
38
38
|
name: "hoox",
|
|
39
|
-
path: "workers/hoox",
|
|
39
|
+
path: "workers/hoox-worker",
|
|
40
40
|
vars: {
|
|
41
41
|
WEBHOOK_API_KEY_BINDING: {
|
|
42
42
|
type: "secret",
|
|
@@ -380,6 +380,7 @@ var manifests = {
|
|
|
380
380
|
var CALLED_BY = deriveCalledBy(manifests);
|
|
381
381
|
var WORKER_MANIFESTS = manifests;
|
|
382
382
|
var WORKER_NAMES = Object.keys(manifests).sort();
|
|
383
|
+
|
|
383
384
|
// src/schemas/validators.ts
|
|
384
385
|
import { parse } from "jsonc-parser";
|
|
385
386
|
function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
@@ -405,7 +406,8 @@ function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
|
405
406
|
});
|
|
406
407
|
return errors;
|
|
407
408
|
}
|
|
408
|
-
const
|
|
409
|
+
const wrangler = parsed;
|
|
410
|
+
const declaredVars = wrangler.vars ?? {};
|
|
409
411
|
for (const [name, def] of Object.entries(manifest.vars)) {
|
|
410
412
|
if (!(name in declaredVars)) {
|
|
411
413
|
errors.push({
|
|
@@ -426,7 +428,7 @@ function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
|
426
428
|
});
|
|
427
429
|
}
|
|
428
430
|
}
|
|
429
|
-
const declaredServices =
|
|
431
|
+
const declaredServices = wrangler.services ?? [];
|
|
430
432
|
for (const expected of manifest.services) {
|
|
431
433
|
const match = declaredServices.find((s) => s.binding === expected.binding && s.service === expected.service);
|
|
432
434
|
if (!match) {
|
|
@@ -482,7 +484,8 @@ function validateRootSecrets(workerName, manifest, rootJsoncContent) {
|
|
|
482
484
|
});
|
|
483
485
|
return errors;
|
|
484
486
|
}
|
|
485
|
-
const
|
|
487
|
+
const rootWrangler = parsed;
|
|
488
|
+
const rootSecrets = rootWrangler.workers?.[workerName]?.secrets ?? [];
|
|
486
489
|
const expectedSecrets = Object.entries(manifest.vars).filter(([_, def]) => def.type === "secret").map(([name]) => name);
|
|
487
490
|
for (const expected of expectedSecrets) {
|
|
488
491
|
if (!rootSecrets.includes(expected)) {
|
|
@@ -0,0 +1,387 @@
|
|
|
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/schemas/registry.ts
|
|
19
|
+
function deriveCalledBy(manifests) {
|
|
20
|
+
const calledBy = {};
|
|
21
|
+
for (const [workerName, manifest] of Object.entries(manifests)) {
|
|
22
|
+
if (!calledBy[workerName])
|
|
23
|
+
calledBy[workerName] = new Set;
|
|
24
|
+
for (const svc of manifest.services) {
|
|
25
|
+
if (!calledBy[svc.service])
|
|
26
|
+
calledBy[svc.service] = new Set;
|
|
27
|
+
calledBy[svc.service].add(workerName);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const result = {};
|
|
31
|
+
for (const [worker, callers] of Object.entries(calledBy)) {
|
|
32
|
+
result[worker] = [...callers].sort();
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
var manifests = {
|
|
37
|
+
hoox: {
|
|
38
|
+
name: "hoox",
|
|
39
|
+
path: "workers/hoox-worker",
|
|
40
|
+
vars: {
|
|
41
|
+
WEBHOOK_API_KEY_BINDING: {
|
|
42
|
+
type: "secret",
|
|
43
|
+
description: "External webhook auth key"
|
|
44
|
+
},
|
|
45
|
+
INTERNAL_KEY_BINDING: {
|
|
46
|
+
type: "secret",
|
|
47
|
+
description: "Inter-worker auth key"
|
|
48
|
+
},
|
|
49
|
+
HA_TOKEN_BINDING: { type: "secret", description: "Home Assistant token" }
|
|
50
|
+
},
|
|
51
|
+
services: [
|
|
52
|
+
{
|
|
53
|
+
binding: "TRADE_SERVICE",
|
|
54
|
+
service: "trade-worker",
|
|
55
|
+
description: "Trading functionality"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
binding: "TELEGRAM_SERVICE",
|
|
59
|
+
service: "telegram-worker",
|
|
60
|
+
description: "Notifications"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
infrastructure: {
|
|
64
|
+
kv: [
|
|
65
|
+
{ binding: "SESSIONS_KV", description: "Webhook session storage" },
|
|
66
|
+
{
|
|
67
|
+
binding: "CONFIG_KV",
|
|
68
|
+
description: "Configuration + rate limiter state"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
vectorize: [{ binding: "VECTORIZE_INDEX", index: "my-rag-index" }],
|
|
72
|
+
ai: true,
|
|
73
|
+
queues: { producer: ["trade-execution"] },
|
|
74
|
+
durableObjects: [
|
|
75
|
+
{ name: "IDEMPOTENCY_STORE", className: "IdempotencyStore" }
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
middleware: [
|
|
79
|
+
"requireAuth",
|
|
80
|
+
"requireInternalAuth",
|
|
81
|
+
"cors",
|
|
82
|
+
"rateLimit",
|
|
83
|
+
"logger",
|
|
84
|
+
"validate"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"trade-worker": {
|
|
88
|
+
name: "trade-worker",
|
|
89
|
+
path: "workers/trade-worker",
|
|
90
|
+
vars: {
|
|
91
|
+
INTERNAL_KEY_BINDING: {
|
|
92
|
+
type: "secret",
|
|
93
|
+
description: "Inter-worker auth key"
|
|
94
|
+
},
|
|
95
|
+
TELEGRAM_INTERNAL_KEY_BINDING: {
|
|
96
|
+
type: "secret",
|
|
97
|
+
description: "Telegram outbound auth"
|
|
98
|
+
},
|
|
99
|
+
BINANCE_KEY_BINDING: { type: "secret", description: "Binance API key" },
|
|
100
|
+
BINANCE_SECRET_BINDING: {
|
|
101
|
+
type: "secret",
|
|
102
|
+
description: "Binance API secret"
|
|
103
|
+
},
|
|
104
|
+
MEXC_KEY_BINDING: { type: "secret", description: "MEXC API key" },
|
|
105
|
+
MEXC_SECRET_BINDING: { type: "secret", description: "MEXC API secret" },
|
|
106
|
+
BYBIT_KEY_BINDING: { type: "secret", description: "Bybit API key" },
|
|
107
|
+
BYBIT_SECRET_BINDING: { type: "secret", description: "Bybit API secret" }
|
|
108
|
+
},
|
|
109
|
+
services: [
|
|
110
|
+
{
|
|
111
|
+
binding: "D1_SERVICE",
|
|
112
|
+
service: "d1-worker",
|
|
113
|
+
description: "Database operations"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
binding: "TELEGRAM_SERVICE",
|
|
117
|
+
service: "telegram-worker",
|
|
118
|
+
description: "Notifications"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
infrastructure: {
|
|
122
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
|
|
123
|
+
d1: [
|
|
124
|
+
{
|
|
125
|
+
binding: "DB",
|
|
126
|
+
database: "trade-data-db",
|
|
127
|
+
description: "Trade operations"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
r2: [
|
|
131
|
+
{
|
|
132
|
+
binding: "REPORTS_BUCKET",
|
|
133
|
+
bucket: "trade-reports",
|
|
134
|
+
description: "Trade reports"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
binding: "SYSTEM_LOGS_BUCKET",
|
|
138
|
+
bucket: "hoox-system-logs",
|
|
139
|
+
description: "Verbose exchange logs"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
queues: { consumer: ["trade-execution"] }
|
|
143
|
+
},
|
|
144
|
+
middleware: ["requireInternalAuth"]
|
|
145
|
+
},
|
|
146
|
+
"telegram-worker": {
|
|
147
|
+
name: "telegram-worker",
|
|
148
|
+
path: "workers/telegram-worker",
|
|
149
|
+
vars: {
|
|
150
|
+
INTERNAL_KEY_BINDING: {
|
|
151
|
+
type: "secret",
|
|
152
|
+
description: "Inter-worker auth key"
|
|
153
|
+
},
|
|
154
|
+
TG_BOT_TOKEN_BINDING: {
|
|
155
|
+
type: "secret",
|
|
156
|
+
description: "Telegram bot token"
|
|
157
|
+
},
|
|
158
|
+
TG_CHAT_ID_BINDING: { type: "secret", description: "Default chat ID" },
|
|
159
|
+
TELEGRAM_SECRET_TOKEN: {
|
|
160
|
+
type: "secret",
|
|
161
|
+
description: "Webhook verification token"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
services: [],
|
|
165
|
+
infrastructure: {
|
|
166
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
|
|
167
|
+
r2: [
|
|
168
|
+
{
|
|
169
|
+
binding: "UPLOADS_BUCKET",
|
|
170
|
+
bucket: "user-uploads",
|
|
171
|
+
description: "User uploaded files"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
vectorize: [{ binding: "VECTORIZE_INDEX", index: "my-rag-index" }],
|
|
175
|
+
ai: true
|
|
176
|
+
},
|
|
177
|
+
middleware: ["requireInternalAuth"]
|
|
178
|
+
},
|
|
179
|
+
"d1-worker": {
|
|
180
|
+
name: "d1-worker",
|
|
181
|
+
path: "workers/d1-worker",
|
|
182
|
+
vars: {
|
|
183
|
+
INTERNAL_KEY_BINDING: {
|
|
184
|
+
type: "secret",
|
|
185
|
+
description: "Inter-worker auth key"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
services: [],
|
|
189
|
+
infrastructure: {
|
|
190
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
|
|
191
|
+
d1: [
|
|
192
|
+
{
|
|
193
|
+
binding: "DB",
|
|
194
|
+
database: "trade-data-db",
|
|
195
|
+
description: "Main database"
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
middleware: ["requireInternalAuth"]
|
|
200
|
+
},
|
|
201
|
+
"web3-wallet-worker": {
|
|
202
|
+
name: "web3-wallet-worker",
|
|
203
|
+
path: "workers/web3-wallet-worker",
|
|
204
|
+
vars: {
|
|
205
|
+
WALLET_PK_SECRET: { type: "secret", description: "Wallet private key" },
|
|
206
|
+
WALLET_MNEMONIC_SECRET: {
|
|
207
|
+
type: "secret",
|
|
208
|
+
description: "Wallet mnemonic phrase"
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
services: [
|
|
212
|
+
{
|
|
213
|
+
binding: "TELEGRAM_SERVICE",
|
|
214
|
+
service: "telegram-worker",
|
|
215
|
+
description: "Notifications"
|
|
216
|
+
}
|
|
217
|
+
],
|
|
218
|
+
infrastructure: {},
|
|
219
|
+
middleware: ["requireInternalAuth"]
|
|
220
|
+
},
|
|
221
|
+
"agent-worker": {
|
|
222
|
+
name: "agent-worker",
|
|
223
|
+
path: "workers/agent-worker",
|
|
224
|
+
vars: {
|
|
225
|
+
AGENT_INTERNAL_KEY: { type: "secret", description: "Agent worker auth" },
|
|
226
|
+
INTERNAL_KEY_BINDING: {
|
|
227
|
+
type: "secret",
|
|
228
|
+
description: "Inter-worker auth key"
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
services: [
|
|
232
|
+
{
|
|
233
|
+
binding: "TRADE_SERVICE",
|
|
234
|
+
service: "trade-worker",
|
|
235
|
+
description: "Trading functionality"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
binding: "TELEGRAM_SERVICE",
|
|
239
|
+
service: "telegram-worker",
|
|
240
|
+
description: "Notifications"
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
infrastructure: {
|
|
244
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
|
|
245
|
+
d1: [
|
|
246
|
+
{
|
|
247
|
+
binding: "DB",
|
|
248
|
+
database: "trade-data-db",
|
|
249
|
+
description: "Portfolio queries"
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
ai: true
|
|
253
|
+
},
|
|
254
|
+
middleware: ["requireInternalAuth"],
|
|
255
|
+
cron: ["*/5 * * * *"]
|
|
256
|
+
},
|
|
257
|
+
"email-worker": {
|
|
258
|
+
name: "email-worker",
|
|
259
|
+
path: "workers/email-worker",
|
|
260
|
+
vars: {
|
|
261
|
+
INTERNAL_KEY_BINDING: {
|
|
262
|
+
type: "secret",
|
|
263
|
+
description: "Inter-worker auth key"
|
|
264
|
+
},
|
|
265
|
+
EMAIL_HOST_BINDING: { type: "secret", description: "Email IMAP host" },
|
|
266
|
+
EMAIL_USER_BINDING: { type: "secret", description: "Email username" },
|
|
267
|
+
EMAIL_PASS_BINDING: { type: "secret", description: "Email password" },
|
|
268
|
+
TRADE_WORKER_NAME: {
|
|
269
|
+
type: "plaintext",
|
|
270
|
+
description: "Trade worker service name",
|
|
271
|
+
default: "trade-worker"
|
|
272
|
+
},
|
|
273
|
+
USE_IMAP: {
|
|
274
|
+
type: "plaintext",
|
|
275
|
+
description: "Use IMAP for email",
|
|
276
|
+
default: "false"
|
|
277
|
+
},
|
|
278
|
+
MAILGUN_API_KEY: { type: "secret", description: "Mailgun API key" },
|
|
279
|
+
EMAIL_SCAN_SUBJECT: { type: "secret", description: "Email scan subject" }
|
|
280
|
+
},
|
|
281
|
+
services: [
|
|
282
|
+
{
|
|
283
|
+
binding: "TRADE_SERVICE",
|
|
284
|
+
service: "trade-worker",
|
|
285
|
+
description: "Trading functionality"
|
|
286
|
+
}
|
|
287
|
+
],
|
|
288
|
+
infrastructure: {
|
|
289
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }]
|
|
290
|
+
},
|
|
291
|
+
middleware: ["requireInternalAuth"],
|
|
292
|
+
cron: ["*/5 * * * *"]
|
|
293
|
+
},
|
|
294
|
+
"analytics-worker": {
|
|
295
|
+
name: "analytics-worker",
|
|
296
|
+
path: "workers/analytics-worker",
|
|
297
|
+
vars: {
|
|
298
|
+
CLOUDFLARE_API_TOKEN: {
|
|
299
|
+
type: "secret",
|
|
300
|
+
description: "CF API token for Analytics SQL"
|
|
301
|
+
},
|
|
302
|
+
CLOUDFLARE_ACCOUNT_ID: {
|
|
303
|
+
type: "plaintext",
|
|
304
|
+
description: "CF Account ID"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
services: [],
|
|
308
|
+
infrastructure: {
|
|
309
|
+
analyticsEngine: true
|
|
310
|
+
},
|
|
311
|
+
middleware: []
|
|
312
|
+
},
|
|
313
|
+
"report-worker": {
|
|
314
|
+
name: "report-worker",
|
|
315
|
+
path: "workers/report-worker",
|
|
316
|
+
vars: {
|
|
317
|
+
CF_API_TOKEN_BINDING: {
|
|
318
|
+
type: "secret",
|
|
319
|
+
description: "CF API token for Browser Rendering"
|
|
320
|
+
},
|
|
321
|
+
ACCOUNT_ID: { type: "plaintext", description: "CF Account ID" }
|
|
322
|
+
},
|
|
323
|
+
services: [
|
|
324
|
+
{
|
|
325
|
+
binding: "D1_SERVICE",
|
|
326
|
+
service: "d1-worker",
|
|
327
|
+
description: "Database queries"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
binding: "TELEGRAM_SERVICE",
|
|
331
|
+
service: "telegram-worker",
|
|
332
|
+
description: "Notifications"
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
infrastructure: {
|
|
336
|
+
r2: [
|
|
337
|
+
{
|
|
338
|
+
binding: "REPORTS_BUCKET",
|
|
339
|
+
bucket: "trade-reports",
|
|
340
|
+
description: "PDF reports"
|
|
341
|
+
}
|
|
342
|
+
]
|
|
343
|
+
},
|
|
344
|
+
middleware: ["requireInternalAuth"],
|
|
345
|
+
cron: ["0 8 * * *", "0 18 * * *"]
|
|
346
|
+
},
|
|
347
|
+
dashboard: {
|
|
348
|
+
name: "dashboard",
|
|
349
|
+
path: "workers/dashboard",
|
|
350
|
+
vars: {
|
|
351
|
+
DASHBOARD_USER: {
|
|
352
|
+
type: "secret",
|
|
353
|
+
description: "Dashboard admin username"
|
|
354
|
+
},
|
|
355
|
+
DASHBOARD_PASS: {
|
|
356
|
+
type: "secret",
|
|
357
|
+
description: "Dashboard admin password"
|
|
358
|
+
},
|
|
359
|
+
SESSION_SECRET: { type: "secret", description: "Session encryption key" }
|
|
360
|
+
},
|
|
361
|
+
services: [
|
|
362
|
+
{
|
|
363
|
+
binding: "D1_SERVICE",
|
|
364
|
+
service: "d1-worker",
|
|
365
|
+
description: "Database queries"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
binding: "AGENT_SERVICE",
|
|
369
|
+
service: "agent-worker",
|
|
370
|
+
description: "AI risk data"
|
|
371
|
+
}
|
|
372
|
+
],
|
|
373
|
+
infrastructure: {
|
|
374
|
+
kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
|
|
375
|
+
ai: true
|
|
376
|
+
},
|
|
377
|
+
middleware: []
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
var CALLED_BY = deriveCalledBy(manifests);
|
|
381
|
+
var WORKER_MANIFESTS = manifests;
|
|
382
|
+
var WORKER_NAMES = Object.keys(manifests).sort();
|
|
383
|
+
export {
|
|
384
|
+
WORKER_NAMES,
|
|
385
|
+
WORKER_MANIFESTS,
|
|
386
|
+
CALLED_BY
|
|
387
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// @bun
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/schemas/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/schemas/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAalE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,GACnB,eAAe,EAAE,CA4GnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,MAAM,GACvB,eAAe,EAAE,CA2CnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,GACrB,eAAe,EAAE,CA6BnB;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAmItE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAYhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IACL,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,GACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAWhE"}
|