@senpi/runtime 3.0.75 → 3.0.79
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/README.md
CHANGED
|
@@ -206,7 +206,10 @@ error at runtime — the scan skips it and the strategy silently trades nothing
|
|
|
206
206
|
enumerates *every* dead name with the exact file and key path it appears in (`catalog.assets`, or an
|
|
207
207
|
instance's `scanners[].inputs`), plus the read-only re-check command and the re-run. A bare ticker
|
|
208
208
|
counts as live if either `T` or `xyz:T` is; a package that hardcodes nothing (a derived universe)
|
|
209
|
-
never reads the instrument list at all.
|
|
209
|
+
never reads the instrument list at all. Names under an **exclusion** key (`excludeAssets`, `deny…`,
|
|
210
|
+
`skip…`) are not hardcoded instruments in this sense and are never checked: the package is naming
|
|
211
|
+
what it will *not* trade, and such a list routinely names things the venue does not carry — which is
|
|
212
|
+
usually the reason they are on it. When the live instrument list **cannot be read**, the deploy
|
|
210
213
|
fails closed — the step reports the read failure with no refusal code and names no instrument dead,
|
|
211
214
|
because unknown is never "not live", and nothing is created either way.
|
|
212
215
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-universe.d.ts","sourceRoot":"","sources":["../../src/universe/package-universe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-universe.d.ts","sourceRoot":"","sources":["../../src/universe/package-universe.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAsD3E,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,gBAAgB,EAAE,CAkB9E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,gBAAgB,EAAE,EAC/B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GACxB,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAWjC;AAED,sGAAsG;AACtG,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,mBAAmB;AAC7B,uEAAuE;AACrE;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9E,8FAA8F;GAC5F;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAqB9B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAiBlF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3D;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAgBR;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAazF"}
|
|
@@ -30,7 +30,9 @@
|
|
|
30
30
|
* SCOPE (deliberate): `strategy.yaml` `catalog.assets` plus each deploy INSTANCE's runtime.yaml
|
|
31
31
|
* `scanners[].inputs` — the set the verb installs. Dynamically-discovered tickers (derived
|
|
32
32
|
* universes) are out of scope by design: they are chosen at scan time from live data and cannot
|
|
33
|
-
* be dead-on-arrival the way a hardcoded name can.
|
|
33
|
+
* be dead-on-arrival the way a hardcoded name can. Names under an EXCLUSION key are out of scope
|
|
34
|
+
* for the same reason read backwards — the package is naming what it will not trade, and a name it
|
|
35
|
+
* refuses to trade has no obligation to be live (see `EXCLUSION_KEY_RE`).
|
|
34
36
|
*/
|
|
35
37
|
import { join } from "node:path";
|
|
36
38
|
import { parse as parseYaml } from "yaml";
|
|
@@ -46,6 +48,27 @@ import { readRuntimeYaml } from "../deploy/package.js";
|
|
|
46
48
|
const TICKER_RE = /^(xyz:)?[A-Z][A-Z0-9]{0,11}$/;
|
|
47
49
|
/** Mirror of KEY_HINT: only values under keys that suggest an asset list are ticker candidates. */
|
|
48
50
|
const KEY_HINT_RE = /(asset|universe|basket|coin|symbol|market|whitelist|sleeve|defensiv|equit|probe|allowed|watch|class|volume|metal|energ|indice|long|short)/i;
|
|
51
|
+
/**
|
|
52
|
+
* POLARITY (lockstep with validate_universe.py `EXCLUSION_KEY` — change neither side alone): a key
|
|
53
|
+
* that reads as an EXCLUSION names what the strategy will not trade, and `KEY_HINT_RE` cannot tell
|
|
54
|
+
* the two apart because the hint is a substring of both (`excludeAssets` matches on `asset`).
|
|
55
|
+
* Demanding those names be live asks the exact inverse of the question this file exists to ask, and
|
|
56
|
+
* `bloodhound`/`ibis` — derived-universe packages that hardcode no universe at all — were refused on
|
|
57
|
+
* `excludeAssets: ["USDC", "USDT"]`, stablecoins listed there precisely BECAUSE the venue does not
|
|
58
|
+
* carry them as instruments.
|
|
59
|
+
*
|
|
60
|
+
* Matched over the WHOLE key path, not the leaf, so `exclude: { assets: [...] }` is covered too.
|
|
61
|
+
* `KEY_HINT_RE` stays leaf-only: it asks "is this value an instrument name", which the nearest key
|
|
62
|
+
* answers, while polarity is set by any ancestor.
|
|
63
|
+
*
|
|
64
|
+
* THE RULE FOR EDITING THIS PATTERN — the two failure modes are not symmetric. A MISS (an exclusion
|
|
65
|
+
* key whose name carries no stem here, e.g. `notAssets`) produces the loud refusal we already have,
|
|
66
|
+
* and an author can act on it. An OVER-MATCH (a REQUIRED universe key read as an exclusion, e.g. a
|
|
67
|
+
* bare `block` alternation swallowing `blockchainAssets`) lets a dead name through the money gate to
|
|
68
|
+
* fail silently at scan time — the failure this whole check exists to prevent. So keep the stems
|
|
69
|
+
* narrow and specific, and prefer a miss to a reach: `non`/`not` are deliberately absent.
|
|
70
|
+
*/
|
|
71
|
+
const EXCLUSION_KEY_RE = /(exclud|deny|blacklist|blocklist|blocked|banned|forbidden|ignor|skip|omit)/i;
|
|
49
72
|
/** Mirror of NOT_TICKERS: uppercase enum-ish values that are never tickers. */
|
|
50
73
|
const NOT_TICKERS = new Set([
|
|
51
74
|
"WEEK",
|
|
@@ -68,8 +91,9 @@ const NOT_TICKERS = new Set([
|
|
|
68
91
|
]);
|
|
69
92
|
/**
|
|
70
93
|
* Mirror of validate_universe.py `_collect`: walk the value, remembering the key path, and take a
|
|
71
|
-
* string that is ticker-shaped, is not an enum-ish non-ticker,
|
|
72
|
-
* suggests an asset list
|
|
94
|
+
* string that is ticker-shaped, is not an enum-ish non-ticker, sits under a key whose LEAF name
|
|
95
|
+
* suggests an asset list, and is not under an exclusion key anywhere in its path. A list keeps its
|
|
96
|
+
* parent's key path (its elements are the asset names).
|
|
73
97
|
*
|
|
74
98
|
* TRAILING-NEWLINE RULE (both sides, in lockstep — change neither alone): a YAML block scalar
|
|
75
99
|
* (`- |`) clip-chomps to `"BTC\n"`, so exactly ONE trailing newline is tolerated and the ticker is
|
|
@@ -93,6 +117,11 @@ function collect(node, keyPath, file, out) {
|
|
|
93
117
|
}
|
|
94
118
|
if (typeof node !== "string")
|
|
95
119
|
return;
|
|
120
|
+
// Polarity first: nothing under an exclusion key is a name this package intends to trade, so it
|
|
121
|
+
// is not a candidate at all — see EXCLUSION_KEY_RE for why this is path-wide and why the stems
|
|
122
|
+
// stay narrow.
|
|
123
|
+
if (EXCLUSION_KEY_RE.test(keyPath))
|
|
124
|
+
return;
|
|
96
125
|
const leaf = keyPath.split(".").pop() ?? keyPath;
|
|
97
126
|
// Exactly one trailing newline is stripped before every predicate — see the rule above.
|
|
98
127
|
const ticker = node.endsWith("\n") ? node.slice(0, -1) : node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-universe.js","sourceRoot":"","sources":["../../src/universe/package-universe.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"package-universe.js","sourceRoot":"","sources":["../../src/universe/package-universe.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "runtime",
|
|
3
3
|
"name": "Senpi Runtime",
|
|
4
4
|
"description": "Senpi runtime plugin for OpenClaw. Orchestrates scanners, LLM-based trade decisions, and a DSL trailing stop-loss exit engine.",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.79",
|
|
6
6
|
"commandAliases": [
|
|
7
7
|
{
|
|
8
8
|
"name": "senpi"
|