@senpi/runtime 3.0.55 → 3.0.57
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/cli/senpi-commands.d.ts.map +1 -1
- package/dist/cli/senpi-commands.js +2 -0
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/cli/validate-command.d.ts +29 -0
- package/dist/cli/validate-command.d.ts.map +1 -0
- package/dist/cli/validate-command.js +89 -0
- package/dist/cli/validate-command.js.map +1 -0
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
- package/dist/dsl/monitor/process-one-position.js +5 -1
- package/dist/dsl/monitor/process-one-position.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/load-runtime-config.d.ts +38 -0
- package/dist/runtime/load-runtime-config.d.ts.map +1 -1
- package/dist/runtime/load-runtime-config.js +33 -25
- package/dist/runtime/load-runtime-config.js.map +1 -1
- package/dist/runtime/runtime-schema.d.ts +100 -100
- package/dist/scanners/external/scaffold/__main__.py +8 -0
- package/dist/scanners/external/scaffold/ctx.py +15 -1
- package/dist/scanners/external/scaffold/http_post.py +22 -0
- package/dist/scanners/external/scaffold/import_check.py +305 -0
- package/dist/scanners/external/scaffold/preflight.py +541 -0
- package/dist/scanners/external/scaffold/scaffold.py +11 -2
- package/dist/scanners/implementations/market-regime.d.ts +1 -1
- package/dist/telemetry/metrics.d.ts +6 -0
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +45 -0
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/utils/event-catalog.d.ts +22 -0
- package/dist/utils/event-catalog.d.ts.map +1 -1
- package/dist/utils/event-catalog.js +6 -0
- package/dist/utils/event-catalog.js.map +1 -1
- package/dist/validate/codes.d.ts +163 -0
- package/dist/validate/codes.d.ts.map +1 -0
- package/dist/validate/codes.js +375 -0
- package/dist/validate/codes.js.map +1 -0
- package/dist/validate/coverage.d.ts +34 -0
- package/dist/validate/coverage.d.ts.map +1 -0
- package/dist/validate/coverage.js +34 -0
- package/dist/validate/coverage.js.map +1 -0
- package/dist/validate/import-stage.d.ts +56 -0
- package/dist/validate/import-stage.d.ts.map +1 -0
- package/dist/validate/import-stage.js +238 -0
- package/dist/validate/import-stage.js.map +1 -0
- package/dist/validate/index.d.ts +28 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +27 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/validate/install-gate.d.ts +44 -0
- package/dist/validate/install-gate.d.ts.map +1 -0
- package/dist/validate/install-gate.js +66 -0
- package/dist/validate/install-gate.js.map +1 -0
- package/dist/validate/live-stage.d.ts +108 -0
- package/dist/validate/live-stage.d.ts.map +1 -0
- package/dist/validate/live-stage.js +416 -0
- package/dist/validate/live-stage.js.map +1 -0
- package/dist/validate/proof.d.ts +104 -0
- package/dist/validate/proof.d.ts.map +1 -0
- package/dist/validate/proof.js +256 -0
- package/dist/validate/proof.js.map +1 -0
- package/dist/validate/recipe-checks.d.ts +79 -0
- package/dist/validate/recipe-checks.d.ts.map +1 -0
- package/dist/validate/recipe-checks.js +202 -0
- package/dist/validate/recipe-checks.js.map +1 -0
- package/dist/validate/recipe.d.ts +41 -0
- package/dist/validate/recipe.d.ts.map +1 -0
- package/dist/validate/recipe.js +215 -0
- package/dist/validate/recipe.js.map +1 -0
- package/dist/validate/report.d.ts +35 -0
- package/dist/validate/report.d.ts.map +1 -0
- package/dist/validate/report.js +78 -0
- package/dist/validate/report.js.map +1 -0
- package/dist/validate/run.d.ts +101 -0
- package/dist/validate/run.d.ts.map +1 -0
- package/dist/validate/run.js +444 -0
- package/dist/validate/run.js.map +1 -0
- package/dist/validate/signal-stage.d.ts +40 -0
- package/dist/validate/signal-stage.d.ts.map +1 -0
- package/dist/validate/signal-stage.js +116 -0
- package/dist/validate/signal-stage.js.map +1 -0
- package/dist/validate/target.d.ts +70 -0
- package/dist/validate/target.d.ts.map +1 -0
- package/dist/validate/target.js +231 -0
- package/dist/validate/target.js.map +1 -0
- package/dist/validate/telemetry.d.ts +24 -0
- package/dist/validate/telemetry.d.ts.map +1 -0
- package/dist/validate/telemetry.js +60 -0
- package/dist/validate/telemetry.js.map +1 -0
- package/dist/validate/types.d.ts +115 -0
- package/dist/validate/types.d.ts.map +1 -0
- package/dist/validate/types.js +31 -0
- package/dist/validate/types.js.map +1 -0
- package/dist/validate/wallet.d.ts +63 -0
- package/dist/validate/wallet.d.ts.map +1 -0
- package/dist/validate/wallet.js +66 -0
- package/dist/validate/wallet.js.map +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* SECURITY: Do not log the resolved config or pathOrContent; they may contain
|
|
4
4
|
* secrets substituted from environment variables.
|
|
5
5
|
*/
|
|
6
|
+
import { type ZodIssue } from "zod";
|
|
6
7
|
import { type RuntimeConfig } from "./runtime-schema.js";
|
|
7
8
|
export interface LoadRuntimeConfigOptions {
|
|
8
9
|
fromPath?: boolean;
|
|
@@ -12,6 +13,43 @@ export interface LoadRuntimeConfigOptions {
|
|
|
12
13
|
* Keep this in sync with runtimeConfigSchema (name + strategy with wallet).
|
|
13
14
|
*/
|
|
14
15
|
export declare const MINIMAL_RECIPE_YAML_SAMPLE = "# Required: name and a strategy with a wallet\nname: my-recipe\n# version: 1 # optional; defaults to current (1). Supports integer or semver string.\nstrategy:\n wallet: \"your-wallet-address\"\n # optional: slots, margin_pct, margin_per_slot, enabled, etc.\n\n# Optional: scanners, actions, exit. Run: openclaw senpi guide examples\n";
|
|
16
|
+
/**
|
|
17
|
+
* The clarified form of a schema issue: the message, and the hint that explains it when one applies.
|
|
18
|
+
*
|
|
19
|
+
* Kept as two fields rather than one joined string because there are two consumers with different
|
|
20
|
+
* needs. The thrown error reads as prose, so it concatenates them; `senpi validate` renders them as
|
|
21
|
+
* separate fields (`what` and `why`), and re-splitting a joined sentence would be guesswork.
|
|
22
|
+
*/
|
|
23
|
+
export interface ClarifiedIssue {
|
|
24
|
+
message: string;
|
|
25
|
+
hint?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Return a clearer message for known validation paths, plus the hint that applies.
|
|
29
|
+
*
|
|
30
|
+
* Exported so the validate collector uses the same {@link HINTS} table as the thrown error — one
|
|
31
|
+
* source of guidance, rendered two ways, rather than a second table that drifts.
|
|
32
|
+
*/
|
|
33
|
+
export declare function clarifyIssue(issue: Pick<ZodIssue, "code" | "path" | "message">): ClarifiedIssue;
|
|
34
|
+
/**
|
|
35
|
+
* Rejects configs where two or more scanner entries share the same `name`.
|
|
36
|
+
*
|
|
37
|
+
* Scanner names are used as artifact keys for context-producing scanners and as
|
|
38
|
+
* identifiers throughout the composition graph, so uniqueness is a hard
|
|
39
|
+
* runtime invariant. The error message includes every offending index
|
|
40
|
+
* (`scanners.<i>`) so operators can locate both occurrences in YAML rather
|
|
41
|
+
* than only the second one encountered.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* Names that appear more than once, mapped to every index they appear at.
|
|
45
|
+
*
|
|
46
|
+
* Exported so the validate collector detects duplicates the same way the thrown assert does. Only
|
|
47
|
+
* the detection is shared — each caller formats its own output, which is why this returns positions
|
|
48
|
+
* rather than a message.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findDuplicateNames(items: readonly {
|
|
51
|
+
name: string;
|
|
52
|
+
}[]): Map<string, number[]>;
|
|
15
53
|
/**
|
|
16
54
|
* Load trading recipe from a file path or YAML string.
|
|
17
55
|
* - If fromPath is true, pathOrContent is a file path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-runtime-config.d.ts","sourceRoot":"","sources":["../../src/runtime/load-runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"load-runtime-config.d.ts","sourceRoot":"","sources":["../../src/runtime/load-runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAK9E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,sVAQtC,CAAC;AAgDF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GACjD,cAAc,CAoBhB;AA0BD;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAgB5F;AAsCD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAwEzE"}
|
|
@@ -70,23 +70,33 @@ function formatPath(path) {
|
|
|
70
70
|
return path.join(".");
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
|
-
* Return a clearer message for known validation paths
|
|
73
|
+
* Return a clearer message for known validation paths, plus the hint that applies.
|
|
74
|
+
*
|
|
75
|
+
* Exported so the validate collector uses the same {@link HINTS} table as the thrown error — one
|
|
76
|
+
* source of guidance, rendered two ways, rather than a second table that drifts.
|
|
74
77
|
*/
|
|
75
|
-
function
|
|
78
|
+
export function clarifyIssue(issue) {
|
|
76
79
|
const path = issue.path;
|
|
77
80
|
const message = issue.message;
|
|
78
81
|
const pathStr = path.length > 0 ? path.join(".") : "root";
|
|
79
82
|
if (pathStr.endsWith(".type") &&
|
|
80
83
|
pathStr.includes(".context.") &&
|
|
81
84
|
issue.code === ZodIssueCode.invalid_union_discriminator) {
|
|
82
|
-
return
|
|
85
|
+
return {
|
|
86
|
+
message: "Unsupported action context type. Supported built-in types are 'signal', 'context', 'strategy', and 'asset-trend'. Scanner-derived entries use 'scanner' and reference a configured scanner name; strategy and asset-trend entries use 'value'.",
|
|
87
|
+
};
|
|
83
88
|
}
|
|
84
89
|
for (const { pathMatch, messageMatch, hint } of HINTS) {
|
|
85
90
|
if (pathMatch.test(pathStr) && messageMatch.test(message)) {
|
|
86
|
-
return
|
|
91
|
+
return { message, hint };
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
|
-
return message;
|
|
94
|
+
return { message };
|
|
95
|
+
}
|
|
96
|
+
/** The thrown-error rendering: message and hint joined into one sentence, exactly as before. */
|
|
97
|
+
function clarifyMessage(issue) {
|
|
98
|
+
const { message, hint } = clarifyIssue(issue);
|
|
99
|
+
return hint === undefined ? message : `${message}. ${hint}`;
|
|
90
100
|
}
|
|
91
101
|
/**
|
|
92
102
|
* Format ZodError into a readable, path-based message and append a minimal YAML sample.
|
|
@@ -111,20 +121,30 @@ function formatZodError(message, issues) {
|
|
|
111
121
|
* (`scanners.<i>`) so operators can locate both occurrences in YAML rather
|
|
112
122
|
* than only the second one encountered.
|
|
113
123
|
*/
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Names that appear more than once, mapped to every index they appear at.
|
|
126
|
+
*
|
|
127
|
+
* Exported so the validate collector detects duplicates the same way the thrown assert does. Only
|
|
128
|
+
* the detection is shared — each caller formats its own output, which is why this returns positions
|
|
129
|
+
* rather than a message.
|
|
130
|
+
*/
|
|
131
|
+
export function findDuplicateNames(items) {
|
|
116
132
|
const firstSeen = new Map();
|
|
117
133
|
const duplicates = new Map();
|
|
118
|
-
|
|
119
|
-
const prior = firstSeen.get(
|
|
134
|
+
items.forEach((item, index) => {
|
|
135
|
+
const prior = firstSeen.get(item.name);
|
|
120
136
|
if (prior === undefined) {
|
|
121
|
-
firstSeen.set(
|
|
137
|
+
firstSeen.set(item.name, index);
|
|
122
138
|
return;
|
|
123
139
|
}
|
|
124
|
-
const list = duplicates.get(
|
|
140
|
+
const list = duplicates.get(item.name) ?? [prior];
|
|
125
141
|
list.push(index);
|
|
126
|
-
duplicates.set(
|
|
142
|
+
duplicates.set(item.name, list);
|
|
127
143
|
});
|
|
144
|
+
return duplicates;
|
|
145
|
+
}
|
|
146
|
+
function assertUniqueScannerNames(config) {
|
|
147
|
+
const duplicates = findDuplicateNames(config.scanners ?? []);
|
|
128
148
|
if (duplicates.size === 0)
|
|
129
149
|
return;
|
|
130
150
|
const details = Array.from(duplicates.entries())
|
|
@@ -142,19 +162,7 @@ function assertUniqueScannerNames(config) {
|
|
|
142
162
|
* assume one entry per name — so duplicates would silently share state rather than fail loudly.
|
|
143
163
|
*/
|
|
144
164
|
function assertUniqueActionNames(config) {
|
|
145
|
-
const
|
|
146
|
-
const firstSeen = new Map();
|
|
147
|
-
const duplicates = new Map();
|
|
148
|
-
actions.forEach((action, index) => {
|
|
149
|
-
const prior = firstSeen.get(action.name);
|
|
150
|
-
if (prior === undefined) {
|
|
151
|
-
firstSeen.set(action.name, index);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const list = duplicates.get(action.name) ?? [prior];
|
|
155
|
-
list.push(index);
|
|
156
|
-
duplicates.set(action.name, list);
|
|
157
|
-
});
|
|
165
|
+
const duplicates = findDuplicateNames(config.actions ?? []);
|
|
158
166
|
if (duplicates.size === 0)
|
|
159
167
|
return;
|
|
160
168
|
const details = Array.from(duplicates.entries())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-runtime-config.js","sourceRoot":"","sources":["../../src/runtime/load-runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,8BAA8B,CAAC;AAMxF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;CAQzC,CAAC;AAEF,MAAM,KAAK,GAAqE;IAC9E;QACE,SAAS,EAAE,iBAAiB;QAC5B,YAAY,EAAE,oEAAoE;QAClF,IAAI,EAAE,uRAAuR;KAC9R;IACD;QACE,SAAS,EAAE,wCAAwC;QACnD,YAAY,EAAE,8BAA8B;QAC5C,IAAI,EAAE,6FAA6F;KACpG;IACD;QACE,SAAS,EAAE,0BAA0B;QACrC,YAAY,EAAE,yCAAyC;QACvD,IAAI,EAAE,uLAAuL;KAC9L;IACD;QACE,SAAS,EAAE,gBAAgB;QAC3B,YAAY,EAAE,mBAAmB;QACjC,IAAI,EAAE,0TAA0T;KACjU;IACD;QACE,SAAS,EAAE,gBAAgB;QAC3B,YAAY,EAAE,0BAA0B;QACxC,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,SAAS,EAAE,6BAA6B;QACxC,YAAY,EAAE,6BAA6B;QAC3C,IAAI,EAAE,wHAAwH;KAC/H;IACD;QACE,SAAS,EAAE,iBAAiB;QAC5B,YAAY,EAAE,mBAAmB;QACjC,IAAI,EAAE,2MAA2M;KAClN;CACF,CAAC;AAEF;;GAEG;AACH,SAAS,UAAU,CAAC,IAAyB;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"load-runtime-config.js","sourceRoot":"","sources":["../../src/runtime/load-runtime-config.ts"],"names":[],"mappings":"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"}
|