@senpi/trading-recipe 1.0.49 → 1.0.51
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/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +39 -0
- package/dist/debug.js.map +1 -0
- package/dist/dsl/config/parse-phase.d.ts.map +1 -1
- package/dist/dsl/config/parse-phase.js +9 -3
- package/dist/dsl/config/parse-phase.js.map +1 -1
- package/dist/dsl/config/parse-preset.d.ts.map +1 -1
- package/dist/dsl/config/parse-preset.js +12 -4
- package/dist/dsl/config/parse-preset.js.map +1 -1
- package/dist/dsl/config/validation.d.ts +1 -1
- package/dist/dsl/config/validation.d.ts.map +1 -1
- package/dist/dsl/config/validation.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
package/dist/debug.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":""}
|
package/dist/debug.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Example: Run DSL config validation via the real parser
|
|
2
|
+
import { parseDslPluginConfig, DslConfigValidationError } from "./dsl/config/index.js";
|
|
3
|
+
const config = {
|
|
4
|
+
interval_seconds: 30,
|
|
5
|
+
dsl_preset: {
|
|
6
|
+
phase1: {
|
|
7
|
+
enabled: true,
|
|
8
|
+
max_loss_pct: 2.0,
|
|
9
|
+
retrace_threshold: 7,
|
|
10
|
+
consecutive_breaches_required: 3
|
|
11
|
+
},
|
|
12
|
+
phase2: {
|
|
13
|
+
// enabled: true,
|
|
14
|
+
tiers: [
|
|
15
|
+
{ trigger_pct: 5, lock_hw_pct: 40 },
|
|
16
|
+
{ trigger_pct: 12, lock_hw_pct: 55 },
|
|
17
|
+
{ trigger_pct: 15, lock_hw_pct: 75 },
|
|
18
|
+
{ trigger_pct: 20, lock_hw_pct: 85 }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
try {
|
|
24
|
+
const parsed = parseDslPluginConfig(config);
|
|
25
|
+
console.log("Validation result: OK");
|
|
26
|
+
console.log("Parsed DSL config:", parsed);
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
if (e instanceof DslConfigValidationError) {
|
|
30
|
+
console.error("Validation failed:");
|
|
31
|
+
for (const issue of e.issues) {
|
|
32
|
+
console.error(` [${issue.code}] ${issue.message} at ${issue.path}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.error(e);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,MAAM,MAAM,GAAG;IACb,gBAAgB,EAAE,EAAE;IACpB,UAAU,EAAE;QACV,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,GAAG;YACjB,iBAAiB,EAAE,CAAC;YACpB,6BAA6B,EAAE,CAAC;SACjC;QACD,MAAM,EAAE;YACR,mBAAmB;YACjB,KAAK,EAAE;gBACL,EAAE,WAAW,EAAE,CAAC,EAAG,WAAW,EAAE,EAAE,EAAE;gBACpC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;gBACpC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;gBACpC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;aACrC;SACF;KACF;CACF,CAAC;AAEF,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,IAAI,CAAC,YAAY,wBAAwB,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-phase.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"parse-phase.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAkElG;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,iBAAiB,EAAE,OAAO,GACzB;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAuC5B"}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
import { DslConfigValidationError, dslValidationIssue } from "./validation.js";
|
|
5
5
|
export function readPhase1(presetName, phase1, presetMaxLossPct) {
|
|
6
6
|
if (!phase1 || typeof phase1 !== "object") {
|
|
7
|
-
throw new
|
|
7
|
+
throw new DslConfigValidationError([
|
|
8
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "phase1 is required with max_loss_pct, retrace_threshold, consecutive_breaches_required", `${presetName}.phase1`),
|
|
9
|
+
]);
|
|
8
10
|
}
|
|
9
11
|
const phase1Enabled = phase1.enabled !== false;
|
|
10
12
|
if (!phase1Enabled) {
|
|
@@ -47,7 +49,9 @@ export function readPhase1(presetName, phase1, presetMaxLossPct) {
|
|
|
47
49
|
}
|
|
48
50
|
export function readPhase2Scalars(presetName, phase2, requireTiersArray) {
|
|
49
51
|
if (!phase2 || typeof phase2 !== "object") {
|
|
50
|
-
throw new
|
|
52
|
+
throw new DslConfigValidationError([
|
|
53
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "phase2 is required", `${presetName}.phase2`),
|
|
54
|
+
]);
|
|
51
55
|
}
|
|
52
56
|
const phase2Enabled = phase2.enabled !== false;
|
|
53
57
|
const legacyKeys = [
|
|
@@ -65,7 +69,9 @@ export function readPhase2Scalars(presetName, phase2, requireTiersArray) {
|
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
71
|
if (requireTiersArray && (!Array.isArray(phase2.tiers) || phase2.tiers.length === 0)) {
|
|
68
|
-
throw new
|
|
72
|
+
throw new DslConfigValidationError([
|
|
73
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "phase2.tiers must be a non-empty array", `${presetName}.phase2.tiers`),
|
|
74
|
+
]);
|
|
69
75
|
}
|
|
70
76
|
return { phase2Enabled };
|
|
71
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-phase.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,MAAM,UAAU,UAAU,CACxB,UAAkB,EAClB,MAA6B,EAC7B,gBAAoC;IAEpC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"parse-phase.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-preset.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA2ChD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,SAAS,EACd,kBAAkB,GAAE,MAAU,GAC7B,eAAe,
|
|
1
|
+
{"version":3,"file":"parse-preset.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA2ChD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,SAAS,EACd,kBAAkB,GAAE,MAAU,GAC7B,eAAe,CAqDjB"}
|
|
@@ -40,18 +40,24 @@ export function parsePreset(name, raw, minIntervalMinutes = 0) {
|
|
|
40
40
|
}
|
|
41
41
|
const tiersRaw = raw.tiers;
|
|
42
42
|
if (!Array.isArray(tiersRaw) || tiersRaw.length === 0) {
|
|
43
|
-
throw new
|
|
43
|
+
throw new DslConfigValidationError([
|
|
44
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", 'must have "tiers" or "phase2.tiers"', `${name}`),
|
|
45
|
+
]);
|
|
44
46
|
}
|
|
45
47
|
const tiers = tiersRaw.map((t, i) => parseTier(name, t, i, "tiers"));
|
|
46
48
|
for (let i = 1; i < tiers.length; i++) {
|
|
47
49
|
if (tiers[i].triggerPct <= tiers[i - 1].triggerPct) {
|
|
48
|
-
throw new
|
|
50
|
+
throw new DslConfigValidationError([
|
|
51
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "tiers must be sorted ascending by trigger_pct", `${name}.tiers`),
|
|
52
|
+
]);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
const p1 = readPhase1(name, raw.phase1, raw.max_loss_pct);
|
|
52
56
|
const p2 = readPhase2Scalars(name, raw.phase2, false);
|
|
53
57
|
if (!p1.phase1Enabled && !p2.phase2Enabled) {
|
|
54
|
-
throw new
|
|
58
|
+
throw new DslConfigValidationError([
|
|
59
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "phase1.enabled and phase2.enabled cannot both be false (at least one phase must be active)", `${name}`),
|
|
60
|
+
]);
|
|
55
61
|
}
|
|
56
62
|
const cuts = parseGlobalCuts(name, raw, minIntervalMinutes);
|
|
57
63
|
return {
|
|
@@ -74,7 +80,9 @@ function parsePresetPhaseFormat(name, raw, minIntervalMinutes = 0) {
|
|
|
74
80
|
const tiers = raw.phase2.tiers.map((t, i) => parseTier(name, t, i, "phase2.tiers"));
|
|
75
81
|
for (let i = 1; i < tiers.length; i++) {
|
|
76
82
|
if (tiers[i].triggerPct <= tiers[i - 1].triggerPct) {
|
|
77
|
-
throw new
|
|
83
|
+
throw new DslConfigValidationError([
|
|
84
|
+
dslValidationIssue("INVALID_PRESET_CONFIG", "phase2.tiers must be sorted ascending by trigger_pct", `${name}.phase2.tiers`),
|
|
85
|
+
]);
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
88
|
const cuts = parseGlobalCuts(name, raw, minIntervalMinutes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-preset.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,SAAS,wBAAwB,CAAC,UAAkB,EAAE,GAAc;IAClE,IAAI,GAAG,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,qBAAqB,EACrB,wEAAwE,EACxE,GAAG,UAAU,sBAAsB,CACpC;SACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,MAA6C,CAAC;IAC7D,IAAI,EAAE,EAAE,CAAC;QACP,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,iBAAiB,CAAU,EAAE,CAAC;YAC9E,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,wBAAwB,CAAC;oBACjC,kBAAkB,CAChB,qBAAqB,EACrB,UAAU,CAAC,wBAAwB,CAAC,kCAAkC,EACtE,GAAG,UAAU,WAAW,CAAC,EAAE,CAC5B;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,UAAkB,EAClB,GAAc,EACd,kBAA0B;IAE1B,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAC9F,OAAO;QACL,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;QACnC,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,GAAc,EACd,qBAA6B,CAAC;IAE9B,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,cAAc,GAClB,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"parse-preset.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Exit DSL validation: interval bounds and structured errors for primitive field checks.
|
|
3
3
|
*/
|
|
4
|
-
export type DslValidationIssueCode = "INVALID_INTERVAL_SECONDS" | "INVALID_MAX_LOSS_PCT" | "INVALID_RETRACE_THRESHOLD" | "INVALID_TRIGGER_PCT" | "INVALID_LOCK_HW_PCT" | "INVALID_BREACHES" | "INVALID_CONSECUTIVE_BREACHES" | "INVALID_PHASE2_TRIGGER_TIER" | "INVALID_TIME_CUT_INTERVAL" | "INVALID_WEAK_PEAK_MIN_VALUE" | "UNKNOWN_DSL_CONFIG_KEY" | "DSL_PRESET_SOURCE_CONFLICT" | "LEGACY_PRESET_FIELD" | "LEGACY_PHASE1_FIELD" | "LEGACY_PHASE2_FIELD" | "LEGACY_TIER_FIELD";
|
|
4
|
+
export type DslValidationIssueCode = "INVALID_INTERVAL_SECONDS" | "INVALID_PRESET_CONFIG" | "INVALID_MAX_LOSS_PCT" | "INVALID_RETRACE_THRESHOLD" | "INVALID_TRIGGER_PCT" | "INVALID_LOCK_HW_PCT" | "INVALID_BREACHES" | "INVALID_CONSECUTIVE_BREACHES" | "INVALID_PHASE2_TRIGGER_TIER" | "INVALID_TIME_CUT_INTERVAL" | "INVALID_WEAK_PEAK_MIN_VALUE" | "UNKNOWN_DSL_CONFIG_KEY" | "DSL_PRESET_SOURCE_CONFLICT" | "LEGACY_PRESET_FIELD" | "LEGACY_PHASE1_FIELD" | "LEGACY_PHASE2_FIELD" | "LEGACY_TIER_FIELD";
|
|
5
5
|
export interface DslValidationIssue {
|
|
6
6
|
code: DslValidationIssueCode;
|
|
7
7
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,sBAAsB,GAC9B,0BAA0B,GAC1B,sBAAsB,GACtB,2BAA2B,GAC3B,qBAAqB,GACrB,qBAAqB,GACrB,kBAAkB,GAClB,8BAA8B,GAC9B,6BAA6B,GAC7B,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GACxB,4BAA4B,GAC5B,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;gBAE1B,MAAM,EAAE,kBAAkB,EAAE;IAWxC,MAAM,IAAI;QAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;KAAE;CAG3C;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,kBAAkB,CAEpB;AAgBD,6DAA6D;AAC7D,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAyBN"}
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,sBAAsB,GAC9B,0BAA0B,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,2BAA2B,GAC3B,qBAAqB,GACrB,qBAAqB,GACrB,kBAAkB,GAClB,8BAA8B,GAC9B,6BAA6B,GAC7B,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GACxB,4BAA4B,GAC5B,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;gBAE1B,MAAM,EAAE,kBAAkB,EAAE;IAWxC,MAAM,IAAI;QAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;KAAE;CAG3C;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,kBAAkB,CAEpB;AAgBD,6DAA6D;AAC7D,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAyBN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/dsl/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/dsl/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,MAAM,CAAuB;IAEtC,YAAY,MAA4B;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK;YAC1B,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;YACnD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AAED,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAChC,IAA4B,EAC5B,OAAe,EACf,IAAY;IAEZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,KAAK,CACZ,IAA4B,EAC5B,OAAe,EACf,IAAY;IAEZ,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,MAA4B;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CACrC,eAAuB,EACvB,UAAkB,EAClB,UAAkB;IAElB,MAAM,IAAI,GAAG,uBAAuB,CAAC;IACrC,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,IACE,OAAO,eAAe,KAAK,QAAQ;QACnC,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;QAClC,eAAe,GAAG,UAAU,EAC5B,CAAC;QACD,MAAM,CAAC,IAAI,CACT,KAAK,CACH,0BAA0B,EAC1B,yBAAyB,UAAU,EAAE,EACrC,IAAI,CACL,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,eAAe,GAAG,UAAU,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CACT,KAAK,CACH,0BAA0B,EAC1B,cAAc,UAAU,EAAE,EAC1B,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IACD,aAAa,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC"}
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@senpi/trading-recipe",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.51",
|
|
4
4
|
"description": "Trading recipe plugin for OpenClaw",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"prepare": "npm run setup:hooks",
|
|
16
16
|
"build": "npm i && tsc",
|
|
17
17
|
"start": "node dist/index.js",
|
|
18
|
+
"debug": "npm run build && node dist/debug.js",
|
|
18
19
|
"dev": "npm run build && node dist/index.js",
|
|
19
20
|
"watch": "tsc --watch",
|
|
20
21
|
"test": "vitest run",
|