@hoox-sh/hoox-shared 1.5.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 (64) hide show
  1. package/dist/agent-config-fields.d.ts +5 -0
  2. package/dist/agent-config-fields.d.ts.map +1 -1
  3. package/dist/analytics.d.ts.map +1 -1
  4. package/dist/analytics.js +8 -3
  5. package/dist/config.d.ts +10 -2
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +256 -24
  8. package/dist/errors.d.ts +1 -0
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/exchange-client.d.ts +0 -19
  11. package/dist/exchange-client.d.ts.map +1 -1
  12. package/dist/exchange-client.js +0 -66
  13. package/dist/exchanges/base-exchange-client.d.ts.map +1 -1
  14. package/dist/exchanges/base-exchange-client.js +4 -3
  15. package/dist/exchanges/index.js +4 -3
  16. package/dist/index.d.ts +2 -3
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +293 -604
  19. package/dist/middleware/auth.d.ts +9 -0
  20. package/dist/middleware/auth.d.ts.map +1 -1
  21. package/dist/middleware/index.js +3 -2
  22. package/dist/middleware/logger.d.ts +2 -0
  23. package/dist/middleware/logger.d.ts.map +1 -1
  24. package/dist/middleware/rate-limit.d.ts +7 -0
  25. package/dist/middleware/rate-limit.d.ts.map +1 -1
  26. package/dist/middleware/rate-limit.js +3 -2
  27. package/dist/middleware/validate.d.ts +2 -0
  28. package/dist/middleware/validate.d.ts.map +1 -1
  29. package/dist/path-utils.d.ts.map +1 -1
  30. package/dist/path-utils.js +13 -3
  31. package/dist/queue-handler.d.ts.map +1 -1
  32. package/dist/queue-handler.js +19 -8
  33. package/dist/router.d.ts +5 -0
  34. package/dist/router.d.ts.map +1 -1
  35. package/dist/schemas/index.js +40 -23
  36. package/dist/schemas/registry.d.ts.map +1 -1
  37. package/dist/schemas/registry.js +4 -1
  38. package/dist/schemas/validators.d.ts.map +1 -1
  39. package/dist/schemas/validators.js +36 -22
  40. package/dist/service-bindings.d.ts +4 -0
  41. package/dist/service-bindings.d.ts.map +1 -1
  42. package/dist/session.d.ts +10 -3
  43. package/dist/session.d.ts.map +1 -1
  44. package/dist/session.js +109 -33
  45. package/dist/sse.d.ts.map +1 -1
  46. package/dist/sse.js +24 -6
  47. package/dist/stores/config-store.d.ts +2 -50
  48. package/dist/stores/config-store.d.ts.map +1 -1
  49. package/dist/stores/config-store.js +145 -134
  50. package/dist/stores/service-store.d.ts +2 -192
  51. package/dist/stores/service-store.d.ts.map +1 -1
  52. package/dist/stores/service-store.js +24 -6
  53. package/dist/stores/ui-store.d.ts +2 -48
  54. package/dist/stores/ui-store.d.ts.map +1 -1
  55. package/dist/tenant.d.ts +1 -0
  56. package/dist/tenant.d.ts.map +1 -1
  57. package/dist/types.d.ts +6 -1
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/types.js +19 -0
  60. package/dist/wizard/engine.d.ts.map +1 -1
  61. package/dist/wizard/engine.js +13 -7
  62. package/dist/wizard/index.js +13 -7
  63. package/dist/wizard/presets.js +3 -3
  64. package/package.json +1 -1
@@ -18,12 +18,17 @@ export type AgentConfigFieldSpec = {
18
18
  export declare const AGENT_CONFIG_EMBEDDED_FIELDS: Readonly<Record<string, AgentConfigFieldSpec>>;
19
19
  /** Sections whose fields are edited via agent:config (not flat KV). */
20
20
  export declare const DASHBOARD_SECTIONS_AGENT_CONFIG: ReadonlySet<string>;
21
+ /** True when `fieldKey` is stored inside the agent:config KV document. */
21
22
  export declare function isAgentConfigEmbeddedField(fieldKey: string): boolean;
23
+ /** True when the dashboard section is edited via agent:config (not flat KV). */
22
24
  export declare function isAgentConfigSection(sectionId: string): boolean;
23
25
  /** Parse agent:config KV payload (handles double-encoded JSON strings). */
24
26
  export declare function parseAgentConfigJson(raw: string | null | undefined): Record<string, unknown>;
27
+ /** Serialize an agent:config object for CONFIG_KV. */
25
28
  export declare function serializeAgentConfigForKv(config: Record<string, unknown>): string;
29
+ /** Read one embedded agent:config field as a scalar or JSON string. */
26
30
  export declare function getAgentConfigEmbeddedValue(config: Record<string, unknown>, fieldKey: string): string | number | boolean | undefined;
31
+ /** Immutably set one embedded agent:config field and return the next document. */
27
32
  export declare function setAgentConfigEmbeddedValue(config: Record<string, unknown>, fieldKey: string, value: string | number | boolean): Record<string, unknown>;
28
33
  /** Expand agent:config into dashboard composite field keys for UI forms. */
29
34
  export declare function expandAgentConfigToFieldMap(config: Record<string, unknown>): Record<string, string | number | boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config-fields.d.ts","sourceRoot":"","sources":["../src/agent-config-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,iBAAkB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EACC,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,YAAY,GACZ,yBAAyB,GACzB,qBAAqB,GACrB,mBAAmB,CAAC;CACzB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAiBrC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,EAAE,WAAW,CAAC,MAAM,CAG9D,CAAC;AAEH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAER;AAUD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CA+BvC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAO3C;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB"}
1
+ {"version":3,"file":"agent-config-fields.d.ts","sourceRoot":"","sources":["../src/agent-config-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,iBAAkB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EACC,iBAAiB,GACjB,eAAe,GACf,WAAW,GACX,YAAY,GACZ,yBAAyB,GACzB,qBAAqB,GACrB,mBAAmB,CAAC;CACzB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAiBrC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,EAAE,WAAW,CAAC,MAAM,CAG9D,CAAC;AAEH,0EAA0E;AAC1E,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AAED,sDAAsD;AACtD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAER;AAUD,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CA+BvC;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAO3C;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
package/dist/analytics.js CHANGED
@@ -68,14 +68,19 @@ async function trackAnalytics(env, endpoint, body, options) {
68
68
  "Content-Type": "application/json"
69
69
  };
70
70
  const internalKey = env.INTERNAL_KEY_BINDING;
71
- if (internalKey) {
72
- headers["X-Internal-Auth-Key"] = internalKey;
71
+ if (!internalKey) {
72
+ console.error("Analytics tracking skipped: INTERNAL_KEY_BINDING missing");
73
+ return;
73
74
  }
74
- await env.ANALYTICS_SERVICE.fetch(new Request(`http://localhost${endpoint}`, {
75
+ headers["X-Internal-Auth-Key"] = internalKey;
76
+ const response = await env.ANALYTICS_SERVICE.fetch(new Request(`http://localhost${endpoint}`, {
75
77
  method: "POST",
76
78
  headers,
77
79
  body: JSON.stringify(payload)
78
80
  }));
81
+ if (!response.ok) {
82
+ console.error(`Analytics tracking failed: HTTP ${response.status} ${response.statusText}`);
83
+ }
79
84
  } catch (e) {
80
85
  console.error("Analytics tracking failed:", e);
81
86
  }
package/dist/config.d.ts CHANGED
@@ -28,8 +28,12 @@ export interface HooxConfig {
28
28
  soundEnabled: boolean;
29
29
  defaultView: string;
30
30
  }
31
- /** Read config from disk, merging with defaults and env vars */
31
+ /**
32
+ * Read operator config from `$HOOX_HOME/config.json` (default `~/.hoox`).
33
+ * Env `HOOX_API_URL` / `HOOX_API_TOKEN` override file values.
34
+ */
32
35
  export declare function readConfigSync(): HooxConfig;
36
+ /** Async alias of {@link readConfigSync}. */
33
37
  export declare function readConfig(): Promise<HooxConfig>;
34
38
  /**
35
39
  * Ensure `~/.hoox` exists with owner-only permissions.
@@ -53,8 +57,12 @@ export declare function isUnixModeGroupOrWorldAccessible(mode: number): boolean;
53
57
  export declare function isConfigWorldOrGroupReadable(filePath?: string): boolean;
54
58
  /** Human-readable warning when config perms are too open. */
55
59
  export declare function formatConfigPermissionWarning(filePath?: string): string | null;
56
- /** Write config to disk with owner-only permissions. */
60
+ /**
61
+ * Write operator config to `$HOOX_HOME/config.json` with owner-only mode.
62
+ * Throws when the directory or file cannot be written.
63
+ */
57
64
  export declare function writeConfigSync(config: HooxConfig): void;
65
+ /** Async alias of {@link writeConfigSync}. Throws on I/O failure. */
58
66
  export declare function writeConfig(config: HooxConfig): Promise<void>;
59
67
  /** Validate config — returns array of error messages */
60
68
  export declare function validateConfig(config: Partial<HooxConfig>): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,8DAA8D;AAC9D,eAAO,MAAM,aAAa,MAAQ,CAAC;AACnC,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,MAAQ,CAAC;AAE3C,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD,gEAAgE;AAChE,wBAAgB,cAAc,IAAI,UAAU,CAsB3C;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAgB,GAAG,IAAI,CAS/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAA8B,GACnC,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,GAAE,MAAoB,GAC7B,OAAO,CAOT;AAED,6DAA6D;AAC7D,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAoB,GAC7B,MAAM,GAAG,IAAI,CAOf;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAWxD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AASD,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAqBpE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgCH,8DAA8D;AAC9D,eAAO,MAAM,aAAa,MAAQ,CAAC;AACnC,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,MAAQ,CAAC;AAE3C,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAsB3C;AAED,6CAA6C;AAC7C,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAkB,GAAG,IAAI,CASjE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAA8B,GACnC,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,GAAE,MAAqB,GAC9B,OAAO,CAOT;AAED,6DAA6D;AAC7D,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAqB,GAC9B,MAAM,GAAG,IAAI,CAOf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAOxD;AAED,qEAAqE;AACrE,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AASD,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAqBpE"}
package/dist/config.js CHANGED
@@ -1,17 +1,253 @@
1
1
  // @bun
2
2
  // src/config.ts
3
3
  import {
4
- readFileSync,
5
- writeFileSync,
4
+ readFileSync as readFileSync2,
5
+ writeFileSync as writeFileSync2,
6
+ existsSync as existsSync2,
7
+ mkdirSync as mkdirSync2,
8
+ chmodSync as chmodSync2,
9
+ statSync
10
+ } from "fs";
11
+ import { join as join2 } from "path";
12
+
13
+ // src/path-utils.ts
14
+ import {
6
15
  existsSync,
7
16
  mkdirSync,
8
- chmodSync,
9
- statSync
17
+ readFileSync,
18
+ writeFileSync,
19
+ chmodSync
10
20
  } from "fs";
11
- import { join } from "path";
12
21
  import { homedir } from "os";
13
- var HOX_DIR = join(homedir(), ".hoox");
14
- var CONFIG_PATH = join(HOX_DIR, "config.json");
22
+ import { dirname, join, resolve, sep } from "path";
23
+ function createHooxPath(path) {
24
+ return path;
25
+ }
26
+ function isInsideDir(child, parent) {
27
+ const resolvedChild = resolve(child);
28
+ const resolvedParent = resolve(parent);
29
+ const cmpChild = process.platform === "win32" ? resolvedChild.toLowerCase() : resolvedChild;
30
+ const cmpParent = process.platform === "win32" ? resolvedParent.toLowerCase() : resolvedParent;
31
+ if (cmpChild === cmpParent)
32
+ return true;
33
+ const prefix = cmpParent.endsWith(sep) ? cmpParent : cmpParent + sep;
34
+ return cmpChild.startsWith(prefix);
35
+ }
36
+ function getHooxHome() {
37
+ try {
38
+ const override = process.env.HOOX_HOME?.trim();
39
+ if (override) {
40
+ return createHooxPath(resolve(override));
41
+ }
42
+ const home = homedir();
43
+ if (!home || home.length === 0) {
44
+ return createHooxPath(resolve(process.cwd(), ".hoox"));
45
+ }
46
+ return createHooxPath(join(home, ".hoox"));
47
+ } catch {
48
+ return createHooxPath(resolve(process.cwd(), ".hoox"));
49
+ }
50
+ }
51
+ function isHooxSetupRoot(dir) {
52
+ if (!dir)
53
+ return false;
54
+ try {
55
+ const root = resolve(dir);
56
+ if (!existsSync(join(root, "packages", "cli", "package.json"))) {
57
+ return false;
58
+ }
59
+ return existsSync(join(root, "wrangler.jsonc")) || existsSync(join(root, "wrangler.jsonc.example")) || existsSync(join(root, "workers")) || existsSync(join(root, ".gitmodules"));
60
+ } catch {
61
+ return false;
62
+ }
63
+ }
64
+ function getRememberedMonorepoPath() {
65
+ return resolveHooxPath("config/monorepo.json");
66
+ }
67
+ function getRememberedMonorepoRoot() {
68
+ try {
69
+ const path = getRememberedMonorepoPath();
70
+ if (!existsSync(path))
71
+ return null;
72
+ const raw = readFileSync(path, "utf-8");
73
+ const data = JSON.parse(raw);
74
+ if (!data.root || typeof data.root !== "string")
75
+ return null;
76
+ const resolved = resolve(data.root);
77
+ return isHooxSetupRoot(resolved) ? resolved : null;
78
+ } catch {
79
+ return null;
80
+ }
81
+ }
82
+ function rememberMonorepoRoot(root) {
83
+ try {
84
+ const resolved = resolve(root);
85
+ if (!isHooxSetupRoot(resolved))
86
+ return false;
87
+ const configDir = getHooxConfigDir();
88
+ mkdirSync(configDir, { recursive: true, mode: 448 });
89
+ try {
90
+ chmodSync(configDir, 448);
91
+ } catch {}
92
+ const payload = {
93
+ root: resolved,
94
+ updatedAt: new Date().toISOString()
95
+ };
96
+ const path = getRememberedMonorepoPath();
97
+ writeFileSync(path, JSON.stringify(payload, null, 2) + `
98
+ `, {
99
+ mode: 384
100
+ });
101
+ try {
102
+ chmodSync(path, 384);
103
+ } catch {}
104
+ return true;
105
+ } catch {
106
+ return false;
107
+ }
108
+ }
109
+ function findHooxSetupRoot(startDir = process.cwd()) {
110
+ let dir = resolve(startDir);
111
+ for (;; ) {
112
+ if (isHooxSetupRoot(dir))
113
+ return dir;
114
+ const parent = dirname(dir);
115
+ if (parent === dir)
116
+ return null;
117
+ dir = parent;
118
+ }
119
+ }
120
+ function resolveHooxRuntimeRoot(options) {
121
+ const env = options?.env ?? process.env;
122
+ const cwd = resolve(options?.cwd ?? process.cwd());
123
+ const globalRepo = getHooxRepoPath();
124
+ const remembered = options?.skipRemembered ? null : getRememberedMonorepoRoot();
125
+ const envRepo = env.HOOX_REPO?.trim();
126
+ if (envRepo) {
127
+ const resolved = resolve(envRepo);
128
+ if (isHooxSetupRoot(resolved)) {
129
+ return {
130
+ root: resolved,
131
+ source: "env",
132
+ checked: {
133
+ env: resolved,
134
+ cwd: findHooxSetupRoot(cwd),
135
+ remembered,
136
+ global: globalRepo
137
+ }
138
+ };
139
+ }
140
+ return {
141
+ root: null,
142
+ source: "env",
143
+ checked: {
144
+ env: resolved,
145
+ cwd: findHooxSetupRoot(cwd),
146
+ remembered,
147
+ global: globalRepo
148
+ }
149
+ };
150
+ }
151
+ const local = findHooxSetupRoot(cwd);
152
+ if (local) {
153
+ return {
154
+ root: local,
155
+ source: "cwd",
156
+ checked: { cwd: local, remembered, global: globalRepo }
157
+ };
158
+ }
159
+ if (remembered) {
160
+ return {
161
+ root: remembered,
162
+ source: "remembered",
163
+ checked: { cwd: null, remembered, global: globalRepo }
164
+ };
165
+ }
166
+ if (isHooxSetupRoot(globalRepo)) {
167
+ return {
168
+ root: globalRepo,
169
+ source: "global",
170
+ checked: { cwd: null, remembered: null, global: globalRepo }
171
+ };
172
+ }
173
+ return {
174
+ root: null,
175
+ source: "none",
176
+ checked: { cwd: null, remembered: null, global: globalRepo }
177
+ };
178
+ }
179
+ function getTuiEntryCandidates(runtimeRoot) {
180
+ const root = resolve(runtimeRoot);
181
+ return [
182
+ join(root, "packages", "tui", "src", "main.tsx"),
183
+ join(root, "packages", "tui", "dist", "main.js"),
184
+ join(root, "packages", "tui", "src", "main.ts")
185
+ ];
186
+ }
187
+ function resolveHooxPath(relativePath) {
188
+ if (!relativePath || typeof relativePath !== "string") {
189
+ throw new Error("relativePath must be a non-empty string");
190
+ }
191
+ if (relativePath.includes("..")) {
192
+ throw new Error(`Path traversal detected in relativePath: "${relativePath}"`);
193
+ }
194
+ const normalizedPath = relativePath.replace(/\\/g, "/");
195
+ const hooxHome = getHooxHome();
196
+ const fullPath = join(hooxHome, normalizedPath);
197
+ const resolvedPath = resolve(fullPath);
198
+ const resolvedHome = resolve(hooxHome);
199
+ if (!isInsideDir(resolvedPath, resolvedHome)) {
200
+ throw new Error(`Resolved path "${resolvedPath}" is outside Hoox home directory`);
201
+ }
202
+ return createHooxPath(resolvedPath);
203
+ }
204
+ function isWithinHooxHome(path) {
205
+ try {
206
+ const hooxHome = getHooxHome();
207
+ const resolvedPath = resolve(path);
208
+ const resolvedHome = resolve(hooxHome);
209
+ return isInsideDir(resolvedPath, resolvedHome);
210
+ } catch {
211
+ return false;
212
+ }
213
+ }
214
+ function getRelativeHooxPath(absolutePath) {
215
+ try {
216
+ if (!isWithinHooxHome(absolutePath)) {
217
+ return null;
218
+ }
219
+ const hooxHome = getHooxHome();
220
+ const resolvedPath = resolve(absolutePath);
221
+ const resolvedHome = resolve(hooxHome);
222
+ const relativePath = resolvedPath.slice(resolvedHome.length);
223
+ return relativePath.startsWith("/") || relativePath.startsWith("\\") ? relativePath.slice(1) : relativePath;
224
+ } catch {
225
+ return null;
226
+ }
227
+ }
228
+ function getHooxRepoPath() {
229
+ return resolveHooxPath("repo");
230
+ }
231
+ function getHooxConfigDir() {
232
+ return resolveHooxPath("config");
233
+ }
234
+ function getHooxDataDir() {
235
+ return resolveHooxPath("data");
236
+ }
237
+ function getHooxWranglerPath() {
238
+ return resolveHooxPath("config/wrangler.jsonc");
239
+ }
240
+ function getHooxStatePath() {
241
+ return resolveHooxPath("data/state.json");
242
+ }
243
+
244
+ // src/config.ts
245
+ function hooxDir() {
246
+ return getHooxHome();
247
+ }
248
+ function configPath() {
249
+ return join2(hooxDir(), "config.json");
250
+ }
15
251
  var HOOX_DIR_MODE = 448;
16
252
  var HOOX_CONFIG_FILE_MODE = 384;
17
253
  var DEFAULT_CONFIG = {
@@ -37,8 +273,8 @@ function readConfigSync() {
37
273
  };
38
274
  let fileConfig = {};
39
275
  try {
40
- if (existsSync(CONFIG_PATH)) {
41
- fileConfig = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
276
+ if (existsSync2(configPath())) {
277
+ fileConfig = JSON.parse(readFileSync2(configPath(), "utf-8"));
42
278
  }
43
279
  } catch {}
44
280
  return {
@@ -50,44 +286,40 @@ function readConfigSync() {
50
286
  async function readConfig() {
51
287
  return readConfigSync();
52
288
  }
53
- function ensureHooxDirSecure(dir = HOX_DIR) {
54
- if (!existsSync(dir)) {
55
- mkdirSync(dir, { recursive: true, mode: HOOX_DIR_MODE });
289
+ function ensureHooxDirSecure(dir = hooxDir()) {
290
+ if (!existsSync2(dir)) {
291
+ mkdirSync2(dir, { recursive: true, mode: HOOX_DIR_MODE });
56
292
  }
57
293
  try {
58
- chmodSync(dir, HOOX_DIR_MODE);
294
+ chmodSync2(dir, HOOX_DIR_MODE);
59
295
  } catch {}
60
296
  }
61
297
  function writeSecureFileSync(filePath, contents, mode = HOOX_CONFIG_FILE_MODE) {
62
- writeFileSync(filePath, contents, { encoding: "utf-8", mode });
298
+ writeFileSync2(filePath, contents, { encoding: "utf-8", mode });
63
299
  try {
64
- chmodSync(filePath, mode);
300
+ chmodSync2(filePath, mode);
65
301
  } catch {}
66
302
  }
67
303
  function isUnixModeGroupOrWorldAccessible(mode) {
68
304
  return (mode & 63) !== 0;
69
305
  }
70
- function isConfigWorldOrGroupReadable(filePath = CONFIG_PATH) {
306
+ function isConfigWorldOrGroupReadable(filePath = configPath()) {
71
307
  try {
72
- if (!existsSync(filePath))
308
+ if (!existsSync2(filePath))
73
309
  return false;
74
310
  return isUnixModeGroupOrWorldAccessible(statSync(filePath).mode & 511);
75
311
  } catch {
76
312
  return false;
77
313
  }
78
314
  }
79
- function formatConfigPermissionWarning(filePath = CONFIG_PATH) {
315
+ function formatConfigPermissionWarning(filePath = configPath()) {
80
316
  if (!isConfigWorldOrGroupReadable(filePath))
81
317
  return null;
82
318
  return `Warning: ${filePath} is group/world-accessible. ` + `Run: chmod 600 ${filePath} (and chmod 700 on the parent dir). ` + `This file may contain apiToken / operator secrets.`;
83
319
  }
84
320
  function writeConfigSync(config) {
85
- try {
86
- ensureHooxDirSecure(HOX_DIR);
87
- writeSecureFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), HOOX_CONFIG_FILE_MODE);
88
- } catch (err) {
89
- console.error("Failed to write config:", err);
90
- }
321
+ ensureHooxDirSecure(hooxDir());
322
+ writeSecureFileSync(configPath(), JSON.stringify(config, null, 2), HOOX_CONFIG_FILE_MODE);
91
323
  }
92
324
  async function writeConfig(config) {
93
325
  writeConfigSync(config);
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"}
@@ -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"}
@@ -20,72 +20,6 @@ class ExchangeRouter {
20
20
  return { exchange: key, client: provider.createClient(env, options) };
21
21
  }
22
22
  }
23
-
24
- class BaseExchangeClient {
25
- apiKey;
26
- apiSecret;
27
- baseUrl;
28
- isTestnet;
29
- constructor(config) {
30
- if (!config.apiKey || !config.apiSecret) {
31
- throw new Error("API key and secret are required.");
32
- }
33
- this.apiKey = config.apiKey;
34
- this.apiSecret = config.apiSecret;
35
- this.baseUrl = config.baseUrl || this.getDefaultBaseUrl();
36
- this.isTestnet = config.testnet || false;
37
- }
38
- async fetch(method, path, params) {
39
- const url = `${this.baseUrl}${path}`;
40
- const headers = this.buildHeaders(method, path, params);
41
- const body = params ? new URLSearchParams(params).toString() : undefined;
42
- const response = await fetch(url, {
43
- method,
44
- headers,
45
- body: method !== "GET" ? body : undefined
46
- });
47
- if (!response.ok) {
48
- const error = await response.text();
49
- throw new Error(`Exchange API error: ${response.status} - ${error}`);
50
- }
51
- return response.json();
52
- }
53
- async openLong(symbol, quantity, price, orderType = "MARKET") {
54
- return this.executeTrade({
55
- symbol,
56
- side: "long",
57
- orderType,
58
- quantity,
59
- price
60
- });
61
- }
62
- async openShort(symbol, quantity, price, orderType = "MARKET") {
63
- return this.executeTrade({
64
- symbol,
65
- side: "short",
66
- orderType,
67
- quantity,
68
- price
69
- });
70
- }
71
- async closeLong(symbol, quantity) {
72
- return this.executeTrade({
73
- symbol,
74
- side: "long",
75
- quantity,
76
- reduceOnly: true
77
- });
78
- }
79
- async closeShort(symbol, quantity) {
80
- return this.executeTrade({
81
- symbol,
82
- side: "short",
83
- quantity,
84
- reduceOnly: true
85
- });
86
- }
87
- }
88
23
  export {
89
- BaseExchangeClient,
90
24
  ExchangeRouter
91
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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"}
@@ -39,13 +39,14 @@ class BaseExchangeClient {
39
39
  return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
40
40
  }
41
41
  async fetch(method, path, params) {
42
- 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}`;
43
45
  const headers = this.buildHeaders(method, path, params);
44
- const body = params ? new URLSearchParams(params).toString() : undefined;
45
46
  const response = await fetch(url, {
46
47
  method,
47
48
  headers,
48
- body: method !== "GET" ? body : undefined
49
+ body: isGet || !encoded ? undefined : encoded
49
50
  });
50
51
  if (!response.ok) {
51
52
  const error = await response.text();
@@ -39,13 +39,14 @@ class BaseExchangeClient {
39
39
  return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
40
40
  }
41
41
  async fetch(method, path, params) {
42
- 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}`;
43
45
  const headers = this.buildHeaders(method, path, params);
44
- const body = params ? new URLSearchParams(params).toString() : undefined;
45
46
  const response = await fetch(url, {
46
47
  method,
47
48
  headers,
48
- body: method !== "GET" ? body : undefined
49
+ body: isGet || !encoded ? undefined : encoded
49
50
  });
50
51
  if (!response.ok) {
51
52
  const error = await response.text();
package/dist/index.d.ts CHANGED
@@ -37,11 +37,9 @@ export { createQueueHandler } from "./queue-handler";
37
37
  export type { QueueHandlerOptions } from "./queue-handler";
38
38
  export { createCronHandler } from "./cron-handler";
39
39
  export type { CronHandlerOptions } from "./cron-handler";
40
- export { D1Repository } from "./d1/index";
41
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";
42
41
  export type { AuthenticatedServiceEnv } from "./service-bindings";
43
42
  export type { TradeRecord, PositionRecord, BalanceRecord, SystemLogRecord, TradeSignalRecord, D1QueryResult, BatchStatement, } from "./d1/index";
44
- export * from "./test-utils";
45
43
  export { Colors, CoolBracketPalette, ConnectionStatusColor, WorkerStatusColor, LogLevelColor, AlertSeverityColor, } from "./colors";
46
44
  export type { ColorKey, CoolBracketColor, ConnectionStatusKey, WorkerStatusKey, LogLevelColorKey, AlertSeverityColorKey, } from "./colors";
47
45
  export { formatNumber, formatCurrency, formatCompactCurrency, formatDuration, formatDurationCompact, formatTimestamp, formatRelativeTime, formatPercent, formatUptime, formatLatency, formatRequests, formatMemory, formatCpu, } from "./formatters";
@@ -54,8 +52,9 @@ export type { SSECallback, SSEStatusCallback, SubscribeSSEOptions, } from "./sse
54
52
  export { resolveOperatorTransportProfile, buildOperatorAuthHeaders, hasOperatorClientCredentials, operatorUrl, } from "./operator-transport";
55
53
  export type { OperatorTransport, OperatorTransportProfile, OperatorTransportEnv, ResolveOperatorTransportOptions, } from "./operator-transport";
56
54
  export { restoreSession, saveSession } from "./session";
57
- export type { SessionState } from "./session";
55
+ export type { SessionState, RestoredSession } from "./session";
58
56
  export { formatRelativeTime as formatRelativeTimeFromTime } from "./format-time";
57
+ export { VIEW_IDS } from "./types";
59
58
  export type { ViewId, ModalState, WorkerStatus, WorkerInfo, TradeSide, Trade, AlertSeverity, Alert, LogLevel, LogEntry, SystemMetrics, ConnectionStatus, LogFilter, NotificationPreferences, CliErrorType, CliErrorDetails, } from "./types";
60
59
  export type { EntitledContext, EntitlementScope } from "./entitlements";
61
60
  export { hasScope, verifyCacheKey } from "./entitlements";
@@ -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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"}