@senpi/runtime 3.0.140 → 3.0.142
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/constants/telemetry.d.ts +2 -0
- package/dist/constants/telemetry.d.ts.map +1 -1
- package/dist/constants/telemetry.js +2 -0
- package/dist/constants/telemetry.js.map +1 -1
- package/dist/dsl/plugin/index.d.ts +0 -1
- package/dist/dsl/plugin/index.d.ts.map +1 -1
- package/dist/dsl/plugin/index.js +3 -6
- package/dist/dsl/plugin/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/runtime/events-telemetry.d.ts +33 -9
- package/dist/runtime/events-telemetry.d.ts.map +1 -1
- package/dist/runtime/events-telemetry.js +126 -53
- package/dist/runtime/events-telemetry.js.map +1 -1
- package/dist/runtime/runtime.d.ts +4 -2
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +10 -4
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/strategies-telemetry.d.ts +33 -0
- package/dist/runtime/strategies-telemetry.d.ts.map +1 -1
- package/dist/runtime/strategies-telemetry.js +16 -1
- package/dist/runtime/strategies-telemetry.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -11,24 +11,47 @@ export interface StrategyScannerPayload {
|
|
|
11
11
|
intervalSeconds: number;
|
|
12
12
|
lastAliveAt: number | null;
|
|
13
13
|
}
|
|
14
|
+
/** One tier of a DSL state, in the same order as the state's `tiers`. */
|
|
14
15
|
export interface StrategyDslTierPayload {
|
|
16
|
+
/** ROE % that reaches the tier. */
|
|
15
17
|
triggerPct: number;
|
|
18
|
+
/** % of high-water ROE locked as floor at the tier. */
|
|
16
19
|
lockHwPct: number;
|
|
20
|
+
/**
|
|
21
|
+
* Price that reaches the tier: `entryPrice * (1 + sign * triggerPct / 100 / leverage)`, with
|
|
22
|
+
* `sign` 1 for LONG and -1 for SHORT. Not rounded. It solves the move check of
|
|
23
|
+
* `tierIndexFromPrice` (`src/dsl/engine/floors.ts`) for equality.
|
|
24
|
+
*/
|
|
17
25
|
triggerPrice: number;
|
|
26
|
+
/**
|
|
27
|
+
* `currentTierIndex !== null && i <= currentTierIndex`, where `i` is this tier's index: the
|
|
28
|
+
* current tier is this tier or a higher one.
|
|
29
|
+
*/
|
|
18
30
|
reached: boolean;
|
|
19
31
|
}
|
|
32
|
+
/** One active DSL state of a strategy wallet. Fields are copied from the DSL state unless noted. */
|
|
20
33
|
export interface StrategyDslPayload {
|
|
21
34
|
asset: string;
|
|
35
|
+
/** Position dex. `""` for the main dex. */
|
|
22
36
|
dex: string;
|
|
23
37
|
direction: "LONG" | "SHORT";
|
|
24
38
|
entryPrice: number;
|
|
25
39
|
leverage: number;
|
|
26
40
|
phase: 1 | 2;
|
|
41
|
+
/** Phase 1 absolute floor price: DSL state `phase1.absoluteFloor`. */
|
|
27
42
|
firstStopLoss: number;
|
|
43
|
+
/** Price at the last monitor check. */
|
|
28
44
|
lastPrice: number;
|
|
45
|
+
/** Epoch ms of the last monitor check (`lastCheck`). `null` when the ISO string does not parse. */
|
|
29
46
|
lastPriceAt: number | null;
|
|
47
|
+
/** Current floor price. */
|
|
30
48
|
floorPrice: number;
|
|
49
|
+
/** Index into `tiers` of the current tier. `null` before the first tier is reached. */
|
|
31
50
|
currentTierIndex: number | null;
|
|
51
|
+
/**
|
|
52
|
+
* Epoch ms when the current tier was reached. `null` when the state has none or its ISO string
|
|
53
|
+
* does not parse.
|
|
54
|
+
*/
|
|
32
55
|
tierSince: number | null;
|
|
33
56
|
tiers: StrategyDslTierPayload[];
|
|
34
57
|
}
|
|
@@ -36,6 +59,11 @@ export interface StrategyPayload {
|
|
|
36
59
|
address: string;
|
|
37
60
|
name: string;
|
|
38
61
|
scanners: StrategyScannerPayload[];
|
|
62
|
+
/**
|
|
63
|
+
* One row per active DSL state of the strategy wallet. `[]` when the runtime has no handle, is
|
|
64
|
+
* not started, has no DSL, has no active DSL state, or when reading or copying its DSL states
|
|
65
|
+
* throws.
|
|
66
|
+
*/
|
|
39
67
|
dsl: StrategyDslPayload[];
|
|
40
68
|
}
|
|
41
69
|
export interface StrategiesPayload {
|
|
@@ -84,6 +112,11 @@ export declare function createStrategiesPublisher(deps: {
|
|
|
84
112
|
dslStates: DslStatesFn;
|
|
85
113
|
getBroadcast: () => StrategiesBroadcastFn | undefined;
|
|
86
114
|
onError?: (err: unknown) => void;
|
|
115
|
+
/**
|
|
116
|
+
* Called when a runtime's DSL read throws, once per runtime id and error message. A tick in
|
|
117
|
+
* which that runtime's read does not throw, including a tick where the runtime is no longer in
|
|
118
|
+
* the store, re-arms it for that runtime.
|
|
119
|
+
*/
|
|
87
120
|
onDslError?: (runtimeId: string, err: unknown) => void;
|
|
88
121
|
epoch?: string;
|
|
89
122
|
now?: () => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategies-telemetry.d.ts","sourceRoot":"","sources":["../../src/runtime/strategies-telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,aAAa,qDAAe,CAAC;AAE1C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,sBAAsB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,GAAG,EAAE,kBAAkB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,gHAAgH;AAChH,MAAM,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEtF,yGAAyG;AACzG,MAAM,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,SAAS,QAAQ,EAAE,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5B,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"strategies-telemetry.d.ts","sourceRoot":"","sources":["../../src/runtime/strategies-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { randomUUID } from "node:crypto";
|
|
|
6
6
|
import { STRATEGIES_EVENT_NAME, STRATEGIES_PUBLISH_INTERVAL_MS } from "../constants/telemetry.js";
|
|
7
7
|
/** Minted once per plugin process. `plugin.senpi.events` carries the same value. */
|
|
8
8
|
export const PROCESS_EPOCH = randomUUID();
|
|
9
|
+
/** Trimmed, lower-cased address, used to compare wallets. */
|
|
9
10
|
function normalizeAddress(address) {
|
|
10
11
|
return address.trim().toLowerCase();
|
|
11
12
|
}
|
|
@@ -92,16 +93,30 @@ export function createStrategiesPublisher(deps) {
|
|
|
92
93
|
const empty = () => ({ v: 1, epoch, generatedAt: now(), strategies: [] });
|
|
93
94
|
let last = empty();
|
|
94
95
|
let timer;
|
|
96
|
+
// Runtime id -> message of the DSL read error already reported for it.
|
|
97
|
+
const reportedDslErrors = new Map();
|
|
95
98
|
const tick = () => {
|
|
96
99
|
try {
|
|
100
|
+
const failedThisTick = new Set();
|
|
97
101
|
last = buildStrategiesPayload({
|
|
98
102
|
epoch,
|
|
99
103
|
generatedAt: now(),
|
|
100
104
|
store: deps.store,
|
|
101
105
|
lastAliveAt: deps.lastAliveAt,
|
|
102
106
|
dslStates: deps.dslStates,
|
|
103
|
-
onDslError:
|
|
107
|
+
onDslError: (runtimeId, err) => {
|
|
108
|
+
failedThisTick.add(runtimeId);
|
|
109
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
110
|
+
if (reportedDslErrors.get(runtimeId) === message)
|
|
111
|
+
return;
|
|
112
|
+
reportedDslErrors.set(runtimeId, message);
|
|
113
|
+
deps.onDslError?.(runtimeId, err);
|
|
114
|
+
},
|
|
104
115
|
});
|
|
116
|
+
for (const runtimeId of reportedDslErrors.keys()) {
|
|
117
|
+
if (!failedThisTick.has(runtimeId))
|
|
118
|
+
reportedDslErrors.delete(runtimeId);
|
|
119
|
+
}
|
|
105
120
|
deps.getBroadcast()?.(STRATEGIES_EVENT_NAME, last, { dropIfSlow: true });
|
|
106
121
|
}
|
|
107
122
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategies-telemetry.js","sourceRoot":"","sources":["../../src/runtime/strategies-telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAIlG,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"strategies-telemetry.js","sourceRoot":"","sources":["../../src/runtime/strategies-telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAIlG,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;AAqF1C,6DAA6D;AAC7D,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,mEAAmE;AACnE,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAe;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACvC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACzC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,gBAAgB,EAAE,OAAO;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3E,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtF,OAAO,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,OAAO;SAC1C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAQtC;IACC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,2FAA2F;IAC3F,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAwB,EAAE;QAC3E,IAAI,CAAC;YACH,OAAO,KAAK;iBACT,SAAS,CAAC,SAAS,CAAC;iBACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;iBACnG,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,UAAU,CAAC,IAAI,CAAC;YACd,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;aAC7D,CAAC,CAAC;YACH,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;AAClF,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAczC;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,KAAK,GAAG,GAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,KAAiD,CAAC;IACtD,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEpD,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;YACzC,IAAI,GAAG,sBAAsB,CAAC;gBAC5B,KAAK;gBACL,WAAW,EAAE,GAAG,EAAE;gBAClB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;oBAC7B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC9B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO;wBAAE,OAAO;oBACzD,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC1C,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACpC,CAAC;aACF,CAAC,CAAC;YACH,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;oBAAE,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,qBAAqB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;YACH,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,IAAI,EAAE,CAAC;YACP,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAC1D,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC;QACD,IAAI;YACF,IAAI,KAAK,KAAK,SAAS;gBAAE,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,GAAG,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;KACxB,CAAC;AACJ,CAAC"}
|
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.142",
|
|
6
6
|
"commandAliases": [
|
|
7
7
|
{
|
|
8
8
|
"name": "senpi"
|