@hoox-sh/hoox-shared 1.4.0 → 1.6.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 (110) hide show
  1. package/README.md +6 -0
  2. package/dist/agent-config-fields.d.ts +5 -0
  3. package/dist/agent-config-fields.d.ts.map +1 -1
  4. package/dist/agent-config-fields.js +21 -29
  5. package/dist/analytics.d.ts +3 -4
  6. package/dist/analytics.d.ts.map +1 -1
  7. package/dist/analytics.js +64 -19
  8. package/dist/api-client.js +12 -21
  9. package/dist/colors.js +5 -21
  10. package/dist/config.d.ts +10 -2
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +267 -51
  13. package/dist/cron-handler.js +0 -16
  14. package/dist/d1/index.js +8 -25
  15. package/dist/d1/repository.js +3 -19
  16. package/dist/d1/schemas.js +4 -20
  17. package/dist/dashboard-manifest.d.ts +2 -1
  18. package/dist/dashboard-manifest.d.ts.map +1 -1
  19. package/dist/dashboard-manifest.js +37 -33
  20. package/dist/entitlements.d.ts +46 -0
  21. package/dist/entitlements.d.ts.map +1 -0
  22. package/dist/entitlements.js +15 -0
  23. package/dist/errors.d.ts +1 -0
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +7 -23
  26. package/dist/exchange-client.d.ts +0 -19
  27. package/dist/exchange-client.d.ts.map +1 -1
  28. package/dist/exchange-client.js +1 -83
  29. package/dist/exchanges/base-exchange-client.d.ts.map +1 -1
  30. package/dist/exchanges/base-exchange-client.js +4 -19
  31. package/dist/exchanges/index.js +4 -19
  32. package/dist/format-time.js +2 -18
  33. package/dist/formatters.js +12 -28
  34. package/dist/health.js +3 -19
  35. package/dist/index.d.ts +7 -4
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +3568 -3766
  38. package/dist/kill-switch.js +12 -20
  39. package/dist/kvKeys.d.ts +8 -0
  40. package/dist/kvKeys.d.ts.map +1 -1
  41. package/dist/kvKeys.js +42 -46
  42. package/dist/kvUtils.js +8 -24
  43. package/dist/legal.js +5 -21
  44. package/dist/middleware/auth.d.ts +9 -0
  45. package/dist/middleware/auth.d.ts.map +1 -1
  46. package/dist/middleware/auth.js +9 -25
  47. package/dist/middleware/cors.js +4 -20
  48. package/dist/middleware/index.js +144 -165
  49. package/dist/middleware/logger.d.ts +2 -0
  50. package/dist/middleware/logger.d.ts.map +1 -1
  51. package/dist/middleware/logger.js +9 -25
  52. package/dist/middleware/rate-limit.d.ts +7 -0
  53. package/dist/middleware/rate-limit.d.ts.map +1 -1
  54. package/dist/middleware/rate-limit.js +5 -20
  55. package/dist/middleware/security-headers.js +2 -18
  56. package/dist/middleware/validate.d.ts +2 -0
  57. package/dist/middleware/validate.d.ts.map +1 -1
  58. package/dist/middleware/validate.js +5 -21
  59. package/dist/middleware/wait-until.js +2 -18
  60. package/dist/operator-transport.js +13 -17
  61. package/dist/path-utils.d.ts.map +1 -1
  62. package/dist/path-utils.js +28 -34
  63. package/dist/queue-handler.d.ts.map +1 -1
  64. package/dist/queue-handler.js +19 -24
  65. package/dist/router.d.ts +5 -0
  66. package/dist/router.d.ts.map +1 -1
  67. package/dist/router.js +0 -16
  68. package/dist/schemas/index.js +75 -50
  69. package/dist/schemas/registry.d.ts.map +1 -1
  70. package/dist/schemas/registry.js +33 -21
  71. package/dist/schemas/validators.d.ts.map +1 -1
  72. package/dist/schemas/validators.js +41 -43
  73. package/dist/service-bindings.d.ts +4 -0
  74. package/dist/service-bindings.d.ts.map +1 -1
  75. package/dist/service-bindings.js +13 -29
  76. package/dist/session.d.ts +10 -3
  77. package/dist/session.d.ts.map +1 -1
  78. package/dist/session.js +111 -51
  79. package/dist/sse.d.ts.map +1 -1
  80. package/dist/sse.js +34 -24
  81. package/dist/stores/config-store.d.ts +2 -50
  82. package/dist/stores/config-store.d.ts.map +1 -1
  83. package/dist/stores/config-store.js +153 -156
  84. package/dist/stores/service-store.d.ts +2 -192
  85. package/dist/stores/service-store.d.ts.map +1 -1
  86. package/dist/stores/service-store.js +40 -35
  87. package/dist/stores/ui-store.d.ts +2 -48
  88. package/dist/stores/ui-store.d.ts.map +1 -1
  89. package/dist/stores/ui-store.js +0 -16
  90. package/dist/tenant.d.ts +62 -0
  91. package/dist/tenant.d.ts.map +1 -0
  92. package/dist/tenant.js +56 -0
  93. package/dist/test-utils.js +11 -27
  94. package/dist/types.d.ts +10 -3
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js +29 -24
  97. package/dist/wizard/engine.d.ts.map +1 -1
  98. package/dist/wizard/engine.js +33 -27
  99. package/dist/wizard/index.d.ts +1 -0
  100. package/dist/wizard/index.d.ts.map +1 -1
  101. package/dist/wizard/index.js +48 -39
  102. package/dist/wizard/persistence.d.ts +4 -0
  103. package/dist/wizard/persistence.d.ts.map +1 -1
  104. package/dist/wizard/persistence.js +7 -19
  105. package/dist/wizard/presets.d.ts.map +1 -1
  106. package/dist/wizard/presets.js +13 -25
  107. package/dist/wizard/types.d.ts +6 -0
  108. package/dist/wizard/types.d.ts.map +1 -1
  109. package/dist/wizard/types.js +5 -0
  110. package/package.json +7 -2
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copyright (c) 2026 HOOX · HOOX · jango-blockchained (hoox-sh)
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Open-core tenant entitlement types (verify-prep, NO enforcement).
7
+ *
8
+ * This module is intentionally thin: pure types + pure helpers only.
9
+ * No fetch, no KV/D1, no Stripe, no secrets. It lives in the open core so
10
+ * self-hosted single-tenant deployments keep working unchanged, while the
11
+ * commercial layer can build `verifyTenant` (hx_live_…) on top of these
12
+ * shapes (see OPEN_CORE_FEATURE_SPLIT.md: tenant billing/metering/quotas
13
+ * are commercial; basic `TenantContext` stays open).
14
+ *
15
+ * Enforcement (cache lookup, quota checks, 401/402/429) does NOT live here.
16
+ */
17
+ import type { TenantContext } from "./types";
18
+ /** Billable capability scopes — one account, one key format, per-service-kind. */
19
+ export type EntitlementScope = "trade" | "signal" | "pyne:run" | "agent:chat" | "axis:stream" | "axis:run";
20
+ /**
21
+ * Tenant context enriched with commercial entitlement data.
22
+ * Produced by the commercial `verifyTenant` hook; open self-host paths
23
+ * simply never attach scopes and keep working as before.
24
+ */
25
+ export interface EntitledContext extends TenantContext {
26
+ /** Granted capability scopes for this tenant/key. */
27
+ scopes: EntitlementScope[];
28
+ /** Plan id from the console system-of-record (e.g. "edge", "pro"). */
29
+ plan: string;
30
+ /** Optional per-scope/meter numeric caps (e.g. { "pyne_calls": 500000 }). */
31
+ limits?: Record<string, number>;
32
+ /** True when the caller presented a hosted `hx_live_…` tenant key. */
33
+ tenantPassthrough?: boolean;
34
+ }
35
+ /**
36
+ * Pure scope check — no I/O.
37
+ * Returns false for missing/empty scope lists (fail-closed, no throw).
38
+ */
39
+ export declare function hasScope(ctx: Pick<EntitledContext, "scopes"> | null | undefined, scope: EntitlementScope): boolean;
40
+ /**
41
+ * Pure edge-cache key builder — no I/O, no secrets.
42
+ * Takes an already-hashed key prefix (never the raw bearer) and returns
43
+ * the KV/D1 lookup key (`hx:<hashPrefix>`, 60s TTL at the edge).
44
+ */
45
+ export declare function verifyCacheKey(keyHashPrefix: string): string;
46
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,aAAa,GACb,UAAU,CAAC;AAEf;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,qDAAqD;IACrD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,EACvD,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG5D"}
@@ -0,0 +1,15 @@
1
+ // @bun
2
+ // src/entitlements.ts
3
+ function hasScope(ctx, scope) {
4
+ if (!ctx || !Array.isArray(ctx.scopes))
5
+ return false;
6
+ return ctx.scopes.includes(scope);
7
+ }
8
+ function verifyCacheKey(keyHashPrefix) {
9
+ const clean = (keyHashPrefix ?? "").trim();
10
+ return `hx:${clean}`;
11
+ }
12
+ export {
13
+ hasScope,
14
+ verifyCacheKey
15
+ };
package/dist/errors.d.ts CHANGED
@@ -19,6 +19,7 @@ export type { AppError };
19
19
  * }
20
20
  */
21
21
  export declare function toError(err: unknown, fallback?: string): string;
22
+ /** JSON Response with sanitized payload and `Content-Type: application/json`. */
22
23
  export declare function createJsonResponse(data: unknown, status?: number): Response;
23
24
  /**
24
25
  * Create a success response with standard format
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,SAAkB,GAAG,MAAM,CAcxE;AA4FD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,QAAQ,CAcV;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;0BACK,MAAM;;;;;+BAUD,MAAM;qBAShB,OAAO;CAUzB,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,SAAkB,GAAG,MAAM,CAcxE;AA4FD,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,QAAQ,CAcV;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;0BACK,MAAM;;;;;+BAUD,MAAM;qBAShB,OAAO;CAUzB,CAAC"}
package/dist/errors.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/errors.ts
19
3
  function toError(err, fallback = "Unknown error") {
20
4
  if (err instanceof Error)
@@ -72,14 +56,14 @@ function sanitizeOutput(data) {
72
56
  const obj = data;
73
57
  const keys = Object.keys(obj);
74
58
  if (keys.length < 10) {
75
- const sanitized2 = {};
59
+ const sanitized = {};
76
60
  for (const k of keys) {
77
61
  if (k === "stack" || k === "cause")
78
62
  continue;
79
63
  const v = obj[k];
80
- sanitized2[k] = v instanceof Error ? { name: v.name, message: v.message } : sanitizeOutput(v);
64
+ sanitized[k] = v instanceof Error ? { name: v.name, message: v.message } : sanitizeOutput(v);
81
65
  }
82
- return sanitized2;
66
+ return sanitized;
83
67
  }
84
68
  if (!hasSensitiveFields(obj) && !hasErrorValues(obj)) {
85
69
  return obj;
@@ -143,9 +127,9 @@ var Errors = {
143
127
  }
144
128
  };
145
129
  export {
146
- toError,
147
- createSuccessResponse,
148
- createJsonResponse,
130
+ Errors,
149
131
  createErrorResponse,
150
- Errors
132
+ createJsonResponse,
133
+ createSuccessResponse,
134
+ toError
151
135
  };
@@ -76,23 +76,4 @@ export declare class ExchangeRouter<TClient, TEnv> {
76
76
  client: TClient;
77
77
  };
78
78
  }
79
- export declare abstract class BaseExchangeClient {
80
- protected readonly apiKey: string;
81
- protected readonly apiSecret: string;
82
- protected readonly baseUrl: string;
83
- protected readonly isTestnet: boolean;
84
- constructor(config: ExchangeConfig);
85
- protected abstract getDefaultBaseUrl(): string;
86
- protected abstract generateSignature(params: Record<string, string | number | boolean>): Promise<string>;
87
- protected abstract buildHeaders(method: string, path: string, params?: Record<string, string | number | boolean>): Headers;
88
- protected fetch<T>(method: string, path: string, params?: Record<string, string | number | boolean>): Promise<T>;
89
- abstract setLeverage(symbol: string, leverage: number): Promise<void>;
90
- abstract executeTrade(params: TradeParams): Promise<OrderResponse>;
91
- abstract getAccountInfo(): Promise<Record<string, unknown>>;
92
- abstract getPositions(symbol?: string): Promise<Position[]>;
93
- openLong(symbol: string, quantity: number, price?: number, orderType?: string): Promise<OrderResponse>;
94
- openShort(symbol: string, quantity: number, price?: number, orderType?: string): Promise<OrderResponse>;
95
- closeLong(symbol: string, quantity: number): Promise<OrderResponse>;
96
- closeShort(symbol: string, quantity: number): Promise<OrderResponse>;
97
- }
98
79
  //# sourceMappingURL=exchange-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-client.d.ts","sourceRoot":"","sources":["../src/exchange-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange-client.d.ts","sourceRoot":"","sources":["../src/exchange-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;GAMG;AACH,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,EAAE,IAAI;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAChE,cAAc,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc,CAAC,OAAO,EAAE,IAAI;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAEJ,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI;IAIlE,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,IAAI,EACT,OAAO,CAAC,EAAE,mBAAmB,GAC5B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;CAkBzC"}
@@ -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/exchange-client.ts
19
3
  class ExchangeRouter {
20
4
  providers = new Map;
@@ -36,72 +20,6 @@ class ExchangeRouter {
36
20
  return { exchange: key, client: provider.createClient(env, options) };
37
21
  }
38
22
  }
39
-
40
- class BaseExchangeClient {
41
- apiKey;
42
- apiSecret;
43
- baseUrl;
44
- isTestnet;
45
- constructor(config) {
46
- if (!config.apiKey || !config.apiSecret) {
47
- throw new Error("API key and secret are required.");
48
- }
49
- this.apiKey = config.apiKey;
50
- this.apiSecret = config.apiSecret;
51
- this.baseUrl = config.baseUrl || this.getDefaultBaseUrl();
52
- this.isTestnet = config.testnet || false;
53
- }
54
- async fetch(method, path, params) {
55
- const url = `${this.baseUrl}${path}`;
56
- const headers = this.buildHeaders(method, path, params);
57
- const body = params ? new URLSearchParams(params).toString() : undefined;
58
- const response = await fetch(url, {
59
- method,
60
- headers,
61
- body: method !== "GET" ? body : undefined
62
- });
63
- if (!response.ok) {
64
- const error = await response.text();
65
- throw new Error(`Exchange API error: ${response.status} - ${error}`);
66
- }
67
- return response.json();
68
- }
69
- async openLong(symbol, quantity, price, orderType = "MARKET") {
70
- return this.executeTrade({
71
- symbol,
72
- side: "long",
73
- orderType,
74
- quantity,
75
- price
76
- });
77
- }
78
- async openShort(symbol, quantity, price, orderType = "MARKET") {
79
- return this.executeTrade({
80
- symbol,
81
- side: "short",
82
- orderType,
83
- quantity,
84
- price
85
- });
86
- }
87
- async closeLong(symbol, quantity) {
88
- return this.executeTrade({
89
- symbol,
90
- side: "long",
91
- quantity,
92
- reduceOnly: true
93
- });
94
- }
95
- async closeShort(symbol, quantity) {
96
- return this.executeTrade({
97
- symbol,
98
- side: "short",
99
- quantity,
100
- reduceOnly: true
101
- });
102
- }
103
- }
104
23
  export {
105
- ExchangeRouter,
106
- BaseExchangeClient
24
+ ExchangeRouter
107
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"base-exchange-client.d.ts","sourceRoot":"","sources":["../../src/exchanges/base-exchange-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-exchange-client.d.ts","sourceRoot":"","sources":["../../src/exchanges/base-exchange-client.ts"],"names":[],"mappings":"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"}
@@ -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/exchanges/base-exchange-client.ts
19
3
  class BaseExchangeClient {
20
4
  apiKey;
@@ -55,13 +39,14 @@ class BaseExchangeClient {
55
39
  return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
56
40
  }
57
41
  async fetch(method, path, params) {
58
- const url = `${this.baseUrl}${path}`;
42
+ const encoded = params ? new URLSearchParams(Object.fromEntries(Object.entries(params).map(([k, v]) => [k, String(v)]))).toString() : "";
43
+ const isGet = method === "GET" || method === "HEAD";
44
+ const url = isGet && encoded ? `${this.baseUrl}${path}${path.includes("?") ? "&" : "?"}${encoded}` : `${this.baseUrl}${path}`;
59
45
  const headers = this.buildHeaders(method, path, params);
60
- const body = params ? new URLSearchParams(params).toString() : undefined;
61
46
  const response = await fetch(url, {
62
47
  method,
63
48
  headers,
64
- body: method !== "GET" ? body : undefined
49
+ body: isGet || !encoded ? undefined : encoded
65
50
  });
66
51
  if (!response.ok) {
67
52
  const error = await response.text();
@@ -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/exchanges/base-exchange-client.ts
19
3
  class BaseExchangeClient {
20
4
  apiKey;
@@ -55,13 +39,14 @@ class BaseExchangeClient {
55
39
  return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
56
40
  }
57
41
  async fetch(method, path, params) {
58
- const url = `${this.baseUrl}${path}`;
42
+ const encoded = params ? new URLSearchParams(Object.fromEntries(Object.entries(params).map(([k, v]) => [k, String(v)]))).toString() : "";
43
+ const isGet = method === "GET" || method === "HEAD";
44
+ const url = isGet && encoded ? `${this.baseUrl}${path}${path.includes("?") ? "&" : "?"}${encoded}` : `${this.baseUrl}${path}`;
59
45
  const headers = this.buildHeaders(method, path, params);
60
- const body = params ? new URLSearchParams(params).toString() : undefined;
61
46
  const response = await fetch(url, {
62
47
  method,
63
48
  headers,
64
- body: method !== "GET" ? body : undefined
49
+ body: isGet || !encoded ? undefined : encoded
65
50
  });
66
51
  if (!response.ok) {
67
52
  const error = await response.text();
@@ -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/format-time.ts
19
3
  function formatRelativeTime(timestampMs, nowMs) {
20
4
  const now = nowMs ?? Date.now();
@@ -52,6 +36,6 @@ function formatDuration(durationMs) {
52
36
  return `${seconds}s`;
53
37
  }
54
38
  export {
55
- formatRelativeTime,
56
- formatDuration
39
+ formatDuration,
40
+ formatRelativeTime
57
41
  };
@@ -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/formatters.ts
19
3
  function formatNumber(n) {
20
4
  if (!isFinite(n))
@@ -139,17 +123,17 @@ function formatCpu(ms) {
139
123
  return `${ms.toFixed(1)}ms`;
140
124
  }
141
125
  export {
142
- formatUptime,
143
- formatTimestamp,
144
- formatRequests,
145
- formatRelativeTime,
146
- formatPercent,
147
- formatNumber,
148
- formatMemory,
149
- formatLatency,
150
- formatDurationCompact,
151
- formatDuration,
152
- formatCurrency,
126
+ formatCompactCurrency,
153
127
  formatCpu,
154
- formatCompactCurrency
128
+ formatCurrency,
129
+ formatDuration,
130
+ formatDurationCompact,
131
+ formatLatency,
132
+ formatMemory,
133
+ formatNumber,
134
+ formatPercent,
135
+ formatRelativeTime,
136
+ formatRequests,
137
+ formatTimestamp,
138
+ formatUptime
155
139
  };
package/dist/health.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/errors.ts
19
3
  function toError(err, fallback = "Unknown error") {
20
4
  if (err instanceof Error)
@@ -72,14 +56,14 @@ function sanitizeOutput(data) {
72
56
  const obj = data;
73
57
  const keys = Object.keys(obj);
74
58
  if (keys.length < 10) {
75
- const sanitized2 = {};
59
+ const sanitized = {};
76
60
  for (const k of keys) {
77
61
  if (k === "stack" || k === "cause")
78
62
  continue;
79
63
  const v = obj[k];
80
- sanitized2[k] = v instanceof Error ? { name: v.name, message: v.message } : sanitizeOutput(v);
64
+ sanitized[k] = v instanceof Error ? { name: v.name, message: v.message } : sanitizeOutput(v);
81
65
  }
82
- return sanitized2;
66
+ return sanitized;
83
67
  }
84
68
  if (!hasSensitiveFields(obj) && !hasErrorValues(obj)) {
85
69
  return obj;
package/dist/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export type { StandardResponse, ApiSuccessResponse, ApiErrorResponse, ApiRespons
18
18
  export { TradeActionSchema, WebhookPayloadSchema, TradeQueueMessageSchema, TradeSignalSchema, PositionSchema, BalanceSchema, } from "./types";
19
19
  export type { TradeAction, WebhookPayload, TradeQueueMessage, TradeSignal, } from "./types";
20
20
  export { KVKeys } from "./kvKeys";
21
+ export { effectiveTenantId, isTenantFlagOn, isTenantMode, scopeKey, scopeR2Key, tenantContextOf, tenantScope, withTenantId, } from "./tenant";
22
+ export type { TenantEnv, TenantScope } from "./tenant";
21
23
  export { KILL_SWITCH_KEYS, KILL_SWITCH_ACTIVE_PREFIX, isTruthyKillSwitchFlag, checkKillSwitch, isTradingPaused, } from "./kill-switch";
22
24
  export type { KillSwitchFailMode, KillSwitchResult, CheckKillSwitchOptions, KillSwitchKv, } from "./kill-switch";
23
25
  export { toError, Errors, createJsonResponse, createSuccessResponse, createErrorResponse, } from "./errors";
@@ -35,11 +37,9 @@ export { createQueueHandler } from "./queue-handler";
35
37
  export type { QueueHandlerOptions } from "./queue-handler";
36
38
  export { createCronHandler } from "./cron-handler";
37
39
  export type { CronHandlerOptions } from "./cron-handler";
38
- export { D1Repository } from "./d1/index";
39
40
  export { serviceFetch, authenticatedServiceFetch, ServiceAuthError, InternalAuthKeyFields, D1_READ_AUTH_KEY_FIELDS, D1_WRITE_AUTH_KEY_FIELDS, TRADE_EXECUTE_AUTH_KEY_FIELDS, TRADE_READ_AUTH_KEY_FIELDS, TELEGRAM_ALERT_AUTH_KEY_FIELDS, WALLET_EXECUTE_AUTH_KEY_FIELDS, DASHBOARD_D1_READ_AUTH_KEY_FIELDS, DASHBOARD_TRADE_EXECUTE_AUTH_KEY_FIELDS, DASHBOARD_TELEGRAM_ALERT_AUTH_KEY_FIELDS, resolveInternalAuthKey, } from "./service-bindings";
40
41
  export type { AuthenticatedServiceEnv } from "./service-bindings";
41
42
  export type { TradeRecord, PositionRecord, BalanceRecord, SystemLogRecord, TradeSignalRecord, D1QueryResult, BatchStatement, } from "./d1/index";
42
- export * from "./test-utils";
43
43
  export { Colors, CoolBracketPalette, ConnectionStatusColor, WorkerStatusColor, LogLevelColor, AlertSeverityColor, } from "./colors";
44
44
  export type { ColorKey, CoolBracketColor, ConnectionStatusKey, WorkerStatusKey, LogLevelColorKey, AlertSeverityColorKey, } from "./colors";
45
45
  export { formatNumber, formatCurrency, formatCompactCurrency, formatDuration, formatDurationCompact, formatTimestamp, formatRelativeTime, formatPercent, formatUptime, formatLatency, formatRequests, formatMemory, formatCpu, } from "./formatters";
@@ -52,9 +52,12 @@ export type { SSECallback, SSEStatusCallback, SubscribeSSEOptions, } from "./sse
52
52
  export { resolveOperatorTransportProfile, buildOperatorAuthHeaders, hasOperatorClientCredentials, operatorUrl, } from "./operator-transport";
53
53
  export type { OperatorTransport, OperatorTransportProfile, OperatorTransportEnv, ResolveOperatorTransportOptions, } from "./operator-transport";
54
54
  export { restoreSession, saveSession } from "./session";
55
- export type { SessionState } from "./session";
55
+ export type { SessionState, RestoredSession } from "./session";
56
56
  export { formatRelativeTime as formatRelativeTimeFromTime } from "./format-time";
57
+ export { VIEW_IDS } from "./types";
57
58
  export type { ViewId, ModalState, WorkerStatus, WorkerInfo, TradeSide, Trade, AlertSeverity, Alert, LogLevel, LogEntry, SystemMetrics, ConnectionStatus, LogFilter, NotificationPreferences, CliErrorType, CliErrorDetails, } from "./types";
59
+ export type { EntitledContext, EntitlementScope } from "./entitlements";
60
+ export { hasScope, verifyCacheKey } from "./entitlements";
58
61
  export { getHooxHome, resolveHooxPath, isWithinHooxHome, getRelativeHooxPath, getHooxRepoPath, getHooxConfigDir, getHooxDataDir, getHooxWranglerPath, getHooxStatePath, isHooxSetupRoot, findHooxSetupRoot, resolveHooxRuntimeRoot, getTuiEntryCandidates, getRememberedMonorepoPath, getRememberedMonorepoRoot, rememberMonorepoRoot, } from "./path-utils";
59
62
  export type { HooxPath, RuntimeRootSource, RuntimeRootResult, RememberedMonorepo, } from "./path-utils";
60
63
  export { DASHBOARD_WORKER_PREFIX, DASHBOARD_SECTION_PREFIX, DASHBOARD_FIELD_KV_OVERRIDES, DASHBOARD_SECTIONS_NOT_FLAT_KV, DASHBOARD_SECTIONS_UI_SKIP, DASHBOARD_WORKER_IDS, buildDashboardKvKey, isDashboardSectionFlatKv, isDashboardSectionEditable, stripJsonc, parseDashboardManifest, dashboardWorkerDir, kvManifestFromDashboardManifests, loadDashboardKvManifestFromRoot, loadDashboardManifestsFromRoot, } from "./dashboard-manifest";
@@ -63,7 +66,7 @@ export { AGENT_CONFIG_KV_KEY, AGENT_CONFIG_EMBEDDED_FIELDS, DASHBOARD_SECTIONS_A
63
66
  export type { AgentConfigFieldSpec } from "./agent-config-fields";
64
67
  export type { StepId, WorkerPresetName, WorkerPreset, WorkerConfig, WorkersJsonConfig, IntegratedService, ProvisioningPlan, ProvisionResult, WizardCloudflareConfig, WizardState, StepDefinition, } from "./wizard";
65
68
  export type { Provisioner } from "./wizard";
66
- export { WizardEngine, PRESETS, WORKER_DEPENDENCIES, INTEGRATIONS, resolveDependencies, serializeState, deserializeState, WIZARD_STATE_PATH, } from "./wizard";
69
+ export { WizardEngine, PRESETS, WORKER_DEPENDENCIES, INTEGRATIONS, resolveDependencies, serializeState, deserializeState, WIZARD_STATE_PATH, CLOUDFLARE_API_TOKEN_PLACEHOLDER, } from "./wizard";
67
70
  export * from "./schemas/index.js";
68
71
  export { useUIStore } from "./stores/ui-store";
69
72
  export { useServiceStore } from "./stores/service-store";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}