@hoox-sh/hoox-shared 1.2.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.
Files changed (161) hide show
  1. package/README.md +44 -0
  2. package/dist/agent-config-fields.d.ts +32 -0
  3. package/dist/agent-config-fields.d.ts.map +1 -0
  4. package/dist/agent-config-fields.js +220 -0
  5. package/dist/analytics.d.ts +47 -0
  6. package/dist/analytics.d.ts.map +1 -0
  7. package/dist/analytics.js +45 -0
  8. package/dist/api-client.d.ts +48 -0
  9. package/dist/api-client.d.ts.map +1 -0
  10. package/dist/api-client.js +191 -0
  11. package/dist/colors.d.ts +76 -0
  12. package/dist/colors.d.ts.map +1 -0
  13. package/dist/colors.js +82 -0
  14. package/dist/config.d.ts +61 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +146 -0
  17. package/dist/cron-handler.d.ts +38 -0
  18. package/dist/cron-handler.d.ts.map +1 -0
  19. package/dist/cron-handler.js +48 -0
  20. package/dist/d1/index.d.ts +9 -0
  21. package/dist/d1/index.d.ts.map +1 -0
  22. package/dist/d1/index.js +360 -0
  23. package/dist/d1/repository.d.ts +86 -0
  24. package/dist/d1/repository.d.ts.map +1 -0
  25. package/dist/d1/repository.js +297 -0
  26. package/dist/d1/schemas.d.ts +89 -0
  27. package/dist/d1/schemas.d.ts.map +1 -0
  28. package/dist/d1/schemas.js +81 -0
  29. package/dist/dashboard-manifest.d.ts +135 -0
  30. package/dist/dashboard-manifest.d.ts.map +1 -0
  31. package/dist/dashboard-manifest.js +401 -0
  32. package/dist/errors.d.ts +44 -0
  33. package/dist/errors.d.ts.map +1 -0
  34. package/dist/errors.js +149 -0
  35. package/dist/exchange-client.d.ts +98 -0
  36. package/dist/exchange-client.d.ts.map +1 -0
  37. package/dist/exchange-client.js +107 -0
  38. package/dist/exchanges/base-exchange-client.d.ts +81 -0
  39. package/dist/exchanges/base-exchange-client.d.ts.map +1 -0
  40. package/dist/exchanges/base-exchange-client.js +123 -0
  41. package/dist/exchanges/index.d.ts +7 -0
  42. package/dist/exchanges/index.d.ts.map +1 -0
  43. package/dist/exchanges/index.js +123 -0
  44. package/dist/exchanges/types.d.ts +23 -0
  45. package/dist/exchanges/types.d.ts.map +1 -0
  46. package/dist/exchanges/types.js +1 -0
  47. package/dist/format-time.d.ts +28 -0
  48. package/dist/format-time.d.ts.map +1 -0
  49. package/dist/format-time.js +57 -0
  50. package/dist/formatters.d.ts +36 -0
  51. package/dist/formatters.d.ts.map +1 -0
  52. package/dist/formatters.js +155 -0
  53. package/dist/health.d.ts +19 -0
  54. package/dist/health.d.ts.map +1 -0
  55. package/dist/health.js +160 -0
  56. package/dist/index.d.ts +72 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +4198 -0
  59. package/dist/kvKeys.d.ts +76 -0
  60. package/dist/kvKeys.d.ts.map +1 -0
  61. package/dist/kvKeys.js +107 -0
  62. package/dist/kvUtils.d.ts +30 -0
  63. package/dist/kvUtils.d.ts.map +1 -0
  64. package/dist/kvUtils.js +170 -0
  65. package/dist/legal.d.ts +15 -0
  66. package/dist/legal.d.ts.map +1 -0
  67. package/dist/legal.js +40 -0
  68. package/dist/middleware/auth.d.ts +102 -0
  69. package/dist/middleware/auth.d.ts.map +1 -0
  70. package/dist/middleware/auth.js +151 -0
  71. package/dist/middleware/cors.d.ts +58 -0
  72. package/dist/middleware/cors.d.ts.map +1 -0
  73. package/dist/middleware/cors.js +77 -0
  74. package/dist/middleware/index.d.ts +14 -0
  75. package/dist/middleware/index.d.ts.map +1 -0
  76. package/dist/middleware/index.js +635 -0
  77. package/dist/middleware/logger.d.ts +17 -0
  78. package/dist/middleware/logger.d.ts.map +1 -0
  79. package/dist/middleware/logger.js +202 -0
  80. package/dist/middleware/rate-limit.d.ts +30 -0
  81. package/dist/middleware/rate-limit.d.ts.map +1 -0
  82. package/dist/middleware/rate-limit.js +181 -0
  83. package/dist/middleware/security-headers.d.ts +43 -0
  84. package/dist/middleware/security-headers.d.ts.map +1 -0
  85. package/dist/middleware/security-headers.js +58 -0
  86. package/dist/middleware/validate.d.ts +25 -0
  87. package/dist/middleware/validate.d.ts.map +1 -0
  88. package/dist/middleware/validate.js +56 -0
  89. package/dist/operator-transport.d.ts +65 -0
  90. package/dist/operator-transport.d.ts.map +1 -0
  91. package/dist/operator-transport.js +87 -0
  92. package/dist/path-utils.d.ts +190 -0
  93. package/dist/path-utils.d.ts.map +1 -0
  94. package/dist/path-utils.js +188 -0
  95. package/dist/queue-handler.d.ts +47 -0
  96. package/dist/queue-handler.d.ts.map +1 -0
  97. package/dist/queue-handler.js +46 -0
  98. package/dist/router.d.ts +15 -0
  99. package/dist/router.d.ts.map +1 -0
  100. package/dist/router.js +130 -0
  101. package/dist/schemas/index.d.ts +8 -0
  102. package/dist/schemas/index.d.ts.map +1 -0
  103. package/dist/schemas/index.js +705 -0
  104. package/dist/schemas/registry.d.ts +12 -0
  105. package/dist/schemas/registry.d.ts.map +1 -0
  106. package/dist/schemas/registry.js +433 -0
  107. package/dist/schemas/types.d.ts +83 -0
  108. package/dist/schemas/types.d.ts.map +1 -0
  109. package/dist/schemas/types.js +1 -0
  110. package/dist/schemas/validators.d.ts +39 -0
  111. package/dist/schemas/validators.d.ts.map +1 -0
  112. package/dist/schemas/validators.js +290 -0
  113. package/dist/service-bindings.d.ts +78 -0
  114. package/dist/service-bindings.d.ts.map +1 -0
  115. package/dist/service-bindings.js +248 -0
  116. package/dist/session.d.ts +39 -0
  117. package/dist/session.d.ts.map +1 -0
  118. package/dist/session.js +261 -0
  119. package/dist/sse.d.ts +39 -0
  120. package/dist/sse.d.ts.map +1 -0
  121. package/dist/sse.js +154 -0
  122. package/dist/stores/config-store.d.ts +91 -0
  123. package/dist/stores/config-store.d.ts.map +1 -0
  124. package/dist/stores/config-store.js +255 -0
  125. package/dist/stores/service-store.d.ts +266 -0
  126. package/dist/stores/service-store.d.ts.map +1 -0
  127. package/dist/stores/service-store.js +516 -0
  128. package/dist/stores/ui-store.d.ts +67 -0
  129. package/dist/stores/ui-store.d.ts.map +1 -0
  130. package/dist/stores/ui-store.js +62 -0
  131. package/dist/test-utils.d.ts +136 -0
  132. package/dist/test-utils.d.ts.map +1 -0
  133. package/dist/test-utils.js +128 -0
  134. package/dist/types/errors.d.ts +20 -0
  135. package/dist/types/errors.d.ts.map +1 -0
  136. package/dist/types/errors.js +1 -0
  137. package/dist/types/router.d.ts +36 -0
  138. package/dist/types/router.d.ts.map +1 -0
  139. package/dist/types/router.js +1 -0
  140. package/dist/types.d.ts +442 -0
  141. package/dist/types.d.ts.map +1 -0
  142. package/dist/types.js +83 -0
  143. package/dist/wizard/engine.d.ts +46 -0
  144. package/dist/wizard/engine.d.ts.map +1 -0
  145. package/dist/wizard/engine.js +525 -0
  146. package/dist/wizard/index.d.ts +11 -0
  147. package/dist/wizard/index.d.ts.map +1 -0
  148. package/dist/wizard/index.js +544 -0
  149. package/dist/wizard/persistence.d.ts +18 -0
  150. package/dist/wizard/persistence.d.ts.map +1 -0
  151. package/dist/wizard/persistence.js +31 -0
  152. package/dist/wizard/presets.d.ts +38 -0
  153. package/dist/wizard/presets.d.ts.map +1 -0
  154. package/dist/wizard/presets.js +223 -0
  155. package/dist/wizard/provisioner.d.ts +15 -0
  156. package/dist/wizard/provisioner.d.ts.map +1 -0
  157. package/dist/wizard/provisioner.js +1 -0
  158. package/dist/wizard/types.d.ts +76 -0
  159. package/dist/wizard/types.d.ts.map +1 -0
  160. package/dist/wizard/types.js +1 -0
  161. package/package.json +117 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schemas/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2ajD,qEAAqE;AACrE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAA6B,CAAC;AAE7E,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAa,CAAC;AAE1E,gDAAgD;AAChD,eAAO,MAAM,YAAY,EAAE,MAAM,EAAkC,CAAC"}
@@ -0,0 +1,433 @@
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: ["*/15 * * * *"]
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
+ "pyne-worker": {
348
+ name: "pyne-worker",
349
+ path: "workers/pyne-worker",
350
+ vars: {
351
+ API_KEY: {
352
+ type: "secret",
353
+ description: "X-API-Key for /run and management endpoints"
354
+ },
355
+ ALERT_WEBHOOK_URL: {
356
+ type: "secret",
357
+ description: "Default HTTPS webhook for alert()/alertcondition()"
358
+ },
359
+ TRADE_WORKER_NAME: {
360
+ type: "plaintext",
361
+ description: "Trade worker service name",
362
+ default: "trade-worker"
363
+ }
364
+ },
365
+ services: [
366
+ {
367
+ binding: "TRADE_SERVICE",
368
+ service: "trade-worker",
369
+ description: "Forward strategy trade events"
370
+ }
371
+ ],
372
+ infrastructure: {
373
+ r2: [
374
+ {
375
+ binding: "OHLCV_DATA",
376
+ bucket: "pyne-worker-ohlcv",
377
+ description: "OHLCV klines + script registry"
378
+ }
379
+ ]
380
+ },
381
+ middleware: [],
382
+ cron: ["* * * * *"]
383
+ },
384
+ dashboard: {
385
+ name: "dashboard",
386
+ path: "workers/dashboard",
387
+ vars: {
388
+ DASHBOARD_USER: {
389
+ type: "secret",
390
+ description: "Dashboard admin username"
391
+ },
392
+ DASHBOARD_PASS: {
393
+ type: "secret",
394
+ description: "Dashboard admin password"
395
+ },
396
+ SESSION_SECRET: { type: "secret", description: "Session encryption key" },
397
+ PYNE_API_KEY: {
398
+ type: "secret",
399
+ description: "Dashboard \u2192 pyne-worker X-API-Key (match API_KEY)"
400
+ }
401
+ },
402
+ services: [
403
+ {
404
+ binding: "D1_SERVICE",
405
+ service: "d1-worker",
406
+ description: "Database queries"
407
+ },
408
+ {
409
+ binding: "AGENT_SERVICE",
410
+ service: "agent-worker",
411
+ description: "AI risk data"
412
+ },
413
+ {
414
+ binding: "PYNE_SERVICE",
415
+ service: "pyne-worker",
416
+ description: "PYNE edge evaluate"
417
+ }
418
+ ],
419
+ infrastructure: {
420
+ kv: [{ binding: "CONFIG_KV", description: "Configuration" }],
421
+ ai: true
422
+ },
423
+ middleware: []
424
+ }
425
+ };
426
+ var CALLED_BY = deriveCalledBy(manifests);
427
+ var WORKER_MANIFESTS = manifests;
428
+ var WORKER_NAMES = Object.keys(manifests).sort();
429
+ export {
430
+ WORKER_NAMES,
431
+ WORKER_MANIFESTS,
432
+ CALLED_BY
433
+ };
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Copyright (c) 2026 HOOX · HOOX · jango-blockchained (hoox-sh)
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Worker Manifest Schema — canonical definition of what each worker expects.
7
+ */
8
+ export interface WorkerManifest {
9
+ /** Worker name (e.g. "trade-worker") */
10
+ name: string;
11
+ /** Path relative to project root (e.g. "workers/trade-worker") */
12
+ path: string;
13
+ /** Vars the worker declares in its wrangler.jsonc `vars` section */
14
+ vars: Record<string, VarDef>;
15
+ /** Service bindings this worker calls */
16
+ services: ServiceBindingDef[];
17
+ /** Infrastructure bindings this worker needs */
18
+ infrastructure: InfraBindings;
19
+ /** Middleware this worker imports from @hoox-sh/hoox-shared */
20
+ middleware: string[];
21
+ /** Cron triggers (empty array = none) */
22
+ cron?: string[];
23
+ }
24
+ export interface VarDef {
25
+ type: "secret" | "plaintext";
26
+ description: string;
27
+ /** Default value for plaintext vars (optional) */
28
+ default?: string;
29
+ }
30
+ export interface ServiceBindingDef {
31
+ binding: string;
32
+ service: string;
33
+ description: string;
34
+ }
35
+ export interface InfraBindings {
36
+ kv?: KVBindingDef[];
37
+ d1?: D1BindingDef[];
38
+ r2?: R2BindingDef[];
39
+ queues?: QueueBindingDef;
40
+ ai?: boolean;
41
+ vectorize?: VectorizeBindingDef[];
42
+ analyticsEngine?: boolean;
43
+ durableObjects?: DOBindingDef[];
44
+ browser?: boolean;
45
+ }
46
+ export interface KVBindingDef {
47
+ binding: string;
48
+ description: string;
49
+ }
50
+ export interface D1BindingDef {
51
+ binding: string;
52
+ database: string;
53
+ description?: string;
54
+ }
55
+ export interface R2BindingDef {
56
+ binding: string;
57
+ bucket: string;
58
+ description?: string;
59
+ }
60
+ export interface QueueBindingDef {
61
+ producer?: string[];
62
+ consumer?: string[];
63
+ }
64
+ export interface VectorizeBindingDef {
65
+ binding: string;
66
+ index: string;
67
+ }
68
+ export interface DOBindingDef {
69
+ name: string;
70
+ className: string;
71
+ }
72
+ export interface ValidationError {
73
+ worker: string;
74
+ severity: "error" | "warning";
75
+ message: string;
76
+ file?: string;
77
+ }
78
+ export interface ValidationReport {
79
+ worker: string;
80
+ passed: boolean;
81
+ errors: ValidationError[];
82
+ }
83
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gDAAgD;IAChD,cAAc,EAAE,aAAa,CAAC;IAC9B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B"}
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) 2026 HOOX · HOOX · jango-blockchained (hoox-sh)
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import type { WorkerManifest, ValidationError } from "./types.js";
6
+ /**
7
+ * Validate a per-worker wrangler.jsonc against its manifest.
8
+ * Returns an array of errors (empty = perfect match).
9
+ */
10
+ export declare function validateWranglerJsonc(workerName: string, manifest: WorkerManifest, jsoncContent: string): ValidationError[];
11
+ /**
12
+ * Validate root wrangler.jsonc secrets list against manifest.
13
+ */
14
+ export declare function validateRootSecrets(workerName: string, manifest: WorkerManifest, rootJsoncContent: string): ValidationError[];
15
+ /**
16
+ * Validate .dev.vars content against manifest.
17
+ */
18
+ export declare function validateDevVars(workerName: string, manifest: WorkerManifest, devVarsContent: string): ValidationError[];
19
+ /**
20
+ * Generate a complete per-worker wrangler.jsonc from a manifest.
21
+ */
22
+ export declare function generateWranglerJsonc(manifest: WorkerManifest): string;
23
+ /**
24
+ * Generate a .dev.vars template from a manifest.
25
+ */
26
+ export declare function generateDevVars(manifest: WorkerManifest): string;
27
+ /**
28
+ * Run all validators for a worker.
29
+ */
30
+ export declare function validateAll(workerName: string, manifest: WorkerManifest, files: {
31
+ wranglerJsonc: string;
32
+ rootWranglerJsonc: string;
33
+ devVars: string;
34
+ }): {
35
+ worker: string;
36
+ passed: boolean;
37
+ errors: ValidationError[];
38
+ };
39
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/schemas/validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,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"}