@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.
- package/dist/agent-config-fields.d.ts +5 -0
- package/dist/agent-config-fields.d.ts.map +1 -1
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +8 -3
- package/dist/config.d.ts +10 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +256 -24
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/exchange-client.d.ts +0 -19
- package/dist/exchange-client.d.ts.map +1 -1
- package/dist/exchange-client.js +0 -66
- package/dist/exchanges/base-exchange-client.d.ts.map +1 -1
- package/dist/exchanges/base-exchange-client.js +4 -3
- package/dist/exchanges/index.js +4 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +293 -604
- package/dist/middleware/auth.d.ts +9 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/index.js +3 -2
- package/dist/middleware/logger.d.ts +2 -0
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/rate-limit.d.ts +7 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +3 -2
- package/dist/middleware/validate.d.ts +2 -0
- package/dist/middleware/validate.d.ts.map +1 -1
- package/dist/path-utils.d.ts.map +1 -1
- package/dist/path-utils.js +13 -3
- package/dist/queue-handler.d.ts.map +1 -1
- package/dist/queue-handler.js +19 -8
- package/dist/router.d.ts +5 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/schemas/index.js +40 -23
- package/dist/schemas/registry.d.ts.map +1 -1
- package/dist/schemas/registry.js +4 -1
- package/dist/schemas/validators.d.ts.map +1 -1
- package/dist/schemas/validators.js +36 -22
- package/dist/service-bindings.d.ts +4 -0
- package/dist/service-bindings.d.ts.map +1 -1
- package/dist/session.d.ts +10 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +109 -33
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +24 -6
- package/dist/stores/config-store.d.ts +2 -50
- package/dist/stores/config-store.d.ts.map +1 -1
- package/dist/stores/config-store.js +145 -134
- package/dist/stores/service-store.d.ts +2 -192
- package/dist/stores/service-store.d.ts.map +1 -1
- package/dist/stores/service-store.js +24 -6
- package/dist/stores/ui-store.d.ts +2 -48
- package/dist/stores/ui-store.d.ts.map +1 -1
- package/dist/tenant.d.ts +1 -0
- package/dist/tenant.d.ts.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/dist/wizard/engine.d.ts.map +1 -1
- package/dist/wizard/engine.js +13 -7
- package/dist/wizard/index.js +13 -7
- package/dist/wizard/presets.js +3 -3
- 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"}
|
package/dist/analytics.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
71
|
+
if (!internalKey) {
|
|
72
|
+
console.error("Analytics tracking skipped: INTERNAL_KEY_BINDING missing");
|
|
73
|
+
return;
|
|
73
74
|
}
|
|
74
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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[];
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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
|
-
|
|
9
|
-
|
|
17
|
+
readFileSync,
|
|
18
|
+
writeFileSync,
|
|
19
|
+
chmodSync
|
|
10
20
|
} from "fs";
|
|
11
|
-
import { join } from "path";
|
|
12
21
|
import { homedir } from "os";
|
|
13
|
-
|
|
14
|
-
|
|
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 (
|
|
41
|
-
fileConfig = JSON.parse(
|
|
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 =
|
|
54
|
-
if (!
|
|
55
|
-
|
|
289
|
+
function ensureHooxDirSecure(dir = hooxDir()) {
|
|
290
|
+
if (!existsSync2(dir)) {
|
|
291
|
+
mkdirSync2(dir, { recursive: true, mode: HOOX_DIR_MODE });
|
|
56
292
|
}
|
|
57
293
|
try {
|
|
58
|
-
|
|
294
|
+
chmodSync2(dir, HOOX_DIR_MODE);
|
|
59
295
|
} catch {}
|
|
60
296
|
}
|
|
61
297
|
function writeSecureFileSync(filePath, contents, mode = HOOX_CONFIG_FILE_MODE) {
|
|
62
|
-
|
|
298
|
+
writeFileSync2(filePath, contents, { encoding: "utf-8", mode });
|
|
63
299
|
try {
|
|
64
|
-
|
|
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 =
|
|
306
|
+
function isConfigWorldOrGroupReadable(filePath = configPath()) {
|
|
71
307
|
try {
|
|
72
|
-
if (!
|
|
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 =
|
|
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
|
-
|
|
86
|
-
|
|
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
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -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":"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
|
+
{"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"}
|
package/dist/exchange-client.js
CHANGED
|
@@ -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":"AAAA;;;GAGG;AAEH,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,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,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;AAED;;;;GAIG;AACH,8BAAsB,kBAAkB;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAGxD,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB;IAgBjC,wEAAwE;IACxE,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM;IAIzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,MAAM;IAE9C,SAAS,CAAC,iBAAiB,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC;IAIlB,SAAS,CAAC,YAAY,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAClD,OAAO;IAIV;;OAEG;YACW,SAAS;IAWvB;;OAEG;cACa,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAazC,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACjD,OAAO,CAAC,CAAC,CAAC;
|
|
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
|
|
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:
|
|
49
|
+
body: isGet || !encoded ? undefined : encoded
|
|
49
50
|
});
|
|
50
51
|
if (!response.ok) {
|
|
51
52
|
const error = await response.text();
|
package/dist/exchanges/index.js
CHANGED
|
@@ -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
|
|
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:
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AAIH,OAAO,EACL,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAIjB,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,cAAc,EACd,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|