@senpi/runtime 3.0.118 → 3.0.123
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/actions/open-position/open-position.action.d.ts.map +1 -1
- package/dist/actions/open-position/open-position.action.js +9 -0
- package/dist/actions/open-position/open-position.action.js.map +1 -1
- package/dist/cli/guide-commands.d.ts.map +1 -1
- package/dist/cli/guide-commands.js +16 -8
- package/dist/cli/guide-commands.js.map +1 -1
- package/dist/constants/dsl/index.d.ts +17 -6
- package/dist/constants/dsl/index.d.ts.map +1 -1
- package/dist/constants/dsl/index.js +17 -6
- package/dist/constants/dsl/index.js.map +1 -1
- package/dist/dsl/engine/floors.d.ts +25 -1
- package/dist/dsl/engine/floors.d.ts.map +1 -1
- package/dist/dsl/engine/floors.js +38 -6
- package/dist/dsl/engine/floors.js.map +1 -1
- package/dist/dsl/engine/index.d.ts +1 -1
- package/dist/dsl/engine/index.d.ts.map +1 -1
- package/dist/dsl/engine/index.js +1 -1
- package/dist/dsl/engine/index.js.map +1 -1
- package/dist/dsl/engine/round.d.ts +22 -2
- package/dist/dsl/engine/round.d.ts.map +1 -1
- package/dist/dsl/engine/round.js +78 -5
- package/dist/dsl/engine/round.js.map +1 -1
- package/dist/dsl/engine/tick.d.ts.map +1 -1
- package/dist/dsl/engine/tick.js +31 -16
- package/dist/dsl/engine/tick.js.map +1 -1
- package/dist/dsl/events/initial-state.d.ts +1 -1
- package/dist/dsl/events/initial-state.d.ts.map +1 -1
- package/dist/dsl/events/initial-state.js +4 -7
- package/dist/dsl/events/initial-state.js.map +1 -1
- package/dist/dsl/monitor/exchange-sync.d.ts +8 -3
- package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -1
- package/dist/dsl/monitor/exchange-sync.js +16 -4
- package/dist/dsl/monitor/exchange-sync.js.map +1 -1
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
- package/dist/dsl/monitor/process-one-position.js +88 -3
- package/dist/dsl/monitor/process-one-position.js.map +1 -1
- package/dist/dsl/plugin/index.d.ts +8 -4
- package/dist/dsl/plugin/index.d.ts.map +1 -1
- package/dist/dsl/plugin/index.js +8 -4
- package/dist/dsl/plugin/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -7
- package/dist/index.js.map +1 -1
- package/dist/runtime/boot-skip.d.ts +73 -0
- package/dist/runtime/boot-skip.d.ts.map +1 -0
- package/dist/runtime/boot-skip.js +113 -0
- package/dist/runtime/boot-skip.js.map +1 -0
- package/dist/runtime/create-runtime-context.d.ts +2 -0
- package/dist/runtime/create-runtime-context.d.ts.map +1 -1
- package/dist/runtime/create-runtime-context.js +1 -0
- package/dist/runtime/create-runtime-context.js.map +1 -1
- package/dist/runtime/lifecycle-events.d.ts +42 -1
- package/dist/runtime/lifecycle-events.d.ts.map +1 -1
- package/dist/runtime/lifecycle-events.js +81 -1
- package/dist/runtime/lifecycle-events.js.map +1 -1
- package/dist/runtime/lifecycle-reaper.d.ts +202 -0
- package/dist/runtime/lifecycle-reaper.d.ts.map +1 -0
- package/dist/runtime/lifecycle-reaper.js +390 -0
- package/dist/runtime/lifecycle-reaper.js.map +1 -0
- package/dist/runtime/run.d.ts +5 -0
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +1 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runtime.d.ts +2 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +1 -0
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/update-apply-deps.d.ts +23 -2
- package/dist/runtime/update-apply-deps.d.ts.map +1 -1
- package/dist/runtime/update-apply-deps.js +11 -5
- package/dist/runtime/update-apply-deps.js.map +1 -1
- package/dist/skills-manager/manifest.d.ts.map +1 -1
- package/dist/skills-manager/manifest.js +1 -0
- package/dist/skills-manager/manifest.js.map +1 -1
- package/dist/skills-manager/skills-manifest.json +1 -0
- package/dist/types/dsl/index.d.ts +1 -1
- package/dist/types/dsl/index.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +8 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/utils/event-catalog.d.ts +91 -0
- package/dist/utils/event-catalog.d.ts.map +1 -1
- package/dist/utils/event-catalog.js +13 -0
- package/dist/utils/event-catalog.js.map +1 -1
- package/dist/utils/keyed-mutex.d.ts +3 -2
- package/dist/utils/keyed-mutex.d.ts.map +1 -1
- package/dist/utils/keyed-mutex.js +3 -2
- package/dist/utils/keyed-mutex.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The lifecycle reaper: a runtime exists iff its strategy is open.
|
|
3
|
+
*
|
|
4
|
+
* Every close path — raw `strategy_close`, close.py, the web app, a withdraw to $0,
|
|
5
|
+
* `strategy_close_positions` — ends at the backend, and none of them tells the box. Without this
|
|
6
|
+
* module a closed strategy's runtime keeps scanning, logging and posting until something deletes it
|
|
7
|
+
* by hand; boot (since 3.0.119) merely declines to start it again, leaving the registry row behind.
|
|
8
|
+
* The reaper reads strategy status for every registered wallet and removes the runtimes whose
|
|
9
|
+
* strategy the platform reports gone.
|
|
10
|
+
*
|
|
11
|
+
* Safety invariant — deletion needs POSITIVE evidence: `CLOSED` from a successful read. That is the
|
|
12
|
+
* only thing the reaper ever deletes on.
|
|
13
|
+
* Any other dead status (`dead_not_closed`: FAILED, and the INACTIVE/TERMINATED/CLOSING_DONE names
|
|
14
|
+
* `isDead` also accepts) is reported and never deleted. Only CLOSED means a close ran: strategy-manager
|
|
15
|
+
* reaches it through the offboarding flow, which closes the positions first. FAILED is written by
|
|
16
|
+
* onboarding's final-failure path, which refunds the withdrawable balance but closes nothing, and a
|
|
17
|
+
* FAILED strategy cannot be closed afterwards (CloseStrategy accepts only ACTIVE or PAUSED). If it
|
|
18
|
+
* holds positions, the runtime's DSL is their only stop, and deleting the runtime tears it down.
|
|
19
|
+
* A wallet missing from a successful read (`wallet_absent`) is reported and never deleted: real
|
|
20
|
+
* absence is an edge case (0 of ~345 boot wallets over 7 days), while a well-formed answer can omit
|
|
21
|
+
* a live wallet (the backend's address filter is case-sensitive and scoped to the token's user).
|
|
22
|
+
* A failed, timed-out or unrecognisable read, a closing / live / paused / unknown status, and a row
|
|
23
|
+
* without a usable wallet never delete anything.
|
|
24
|
+
*/
|
|
25
|
+
import { isClosing, isDead } from "../senpi/strategy-status.js";
|
|
26
|
+
import { isTrackableWallet, readBootWalletStatuses, trackableWalletKeys, } from "./boot-skip.js";
|
|
27
|
+
import { buildReapCandidateEvent, buildReapSkippedEvent, buildReapUnknownWalletEvent, } from "./lifecycle-events.js";
|
|
28
|
+
/** The one status the reaper deletes on; see the module doc for why the other dead ones are held. */
|
|
29
|
+
const REAPABLE_STATUS = "CLOSED";
|
|
30
|
+
/**
|
|
31
|
+
* Decide one registry row against one successful status read.
|
|
32
|
+
*
|
|
33
|
+
* A failed read never reaches this function — the controller skips the whole pass — so "unreadable"
|
|
34
|
+
* cannot be mistaken for "absent" here by construction.
|
|
35
|
+
*/
|
|
36
|
+
export function decideReap(entry, answer) {
|
|
37
|
+
if (!isTrackableWallet(entry.wallet))
|
|
38
|
+
return { action: "untracked" };
|
|
39
|
+
const status = answer.statuses.get(entry.wallet.trim().toLowerCase());
|
|
40
|
+
if (status === undefined)
|
|
41
|
+
return { action: "hold", reason: "wallet_absent" };
|
|
42
|
+
if (isDead(status)) {
|
|
43
|
+
return status.toUpperCase() === REAPABLE_STATUS
|
|
44
|
+
? { action: "reap", reason: "closed_status", status }
|
|
45
|
+
: { action: "hold", reason: "dead_not_closed", status };
|
|
46
|
+
}
|
|
47
|
+
if (isClosing(status))
|
|
48
|
+
return { action: "keep", lifecycle: "closing", status };
|
|
49
|
+
// ACTIVE, PAUSED, initializing, MANUAL_REVIEW, or a status added after this release: all alive
|
|
50
|
+
// as far as the reaper is concerned. Reaping requires positive death.
|
|
51
|
+
return { action: "keep", lifecycle: "open", status };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The lifecycle a read status maps to; `undefined` means the (confirmed) answer did not carry the
|
|
55
|
+
* wallet.
|
|
56
|
+
*/
|
|
57
|
+
export function lifecycleForStatus(status) {
|
|
58
|
+
if (status === undefined)
|
|
59
|
+
return "absent";
|
|
60
|
+
if (isDead(status))
|
|
61
|
+
return "closed";
|
|
62
|
+
if (isClosing(status))
|
|
63
|
+
return "closing";
|
|
64
|
+
return "open";
|
|
65
|
+
}
|
|
66
|
+
// ── Controller ──────────────────────────────────────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Release default for deleting candidates. `false` = observe-only: candidates are emitted as
|
|
69
|
+
* `runtime.reap_candidate` and nothing is deleted. It flips in the release after the observe-only
|
|
70
|
+
* fleet validation (plan Task 8); `SENPI_REAPER_ENFORCE` overrides it per box.
|
|
71
|
+
*/
|
|
72
|
+
export const REAPER_ENFORCEMENT_DEFAULT = false;
|
|
73
|
+
/** Delay between `start()` completing and the post-boot pass — lets MCP and the gateway settle. */
|
|
74
|
+
export const REAPER_BOOT_DELAY_MS = 120_000;
|
|
75
|
+
/** Sweep cadence. Bounds how long a closed strategy that never trades keeps its runtime. */
|
|
76
|
+
export const REAPER_SWEEP_INTERVAL_MS = 60 * 60 * 1000;
|
|
77
|
+
/**
|
|
78
|
+
* Per-wallet debounce for the `STRATEGY_NOT_ACTIVE` escalation. Matches the backend-pause TTL: the
|
|
79
|
+
* open action re-probes a paused wallet about that often, and each rejection would otherwise re-read.
|
|
80
|
+
*/
|
|
81
|
+
export const REAPER_WALLET_DEBOUNCE_MS = 5 * 60 * 1000;
|
|
82
|
+
/**
|
|
83
|
+
* Whether this box deletes candidates. `SENPI_REAPER_ENFORCE=true|false` wins; any other value (or
|
|
84
|
+
* none) falls back to {@link REAPER_ENFORCEMENT_DEFAULT} — a typo must never turn deletion on.
|
|
85
|
+
*/
|
|
86
|
+
export function resolveReaperEnforcement(env) {
|
|
87
|
+
const raw = env.SENPI_REAPER_ENFORCE?.trim().toLowerCase();
|
|
88
|
+
if (raw === "true")
|
|
89
|
+
return true;
|
|
90
|
+
if (raw === "false")
|
|
91
|
+
return false;
|
|
92
|
+
return REAPER_ENFORCEMENT_DEFAULT;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* An explicit post-boot delay from `SENPI_REAPER_BOOT_DELAY_MS` (a non-negative integer), else
|
|
96
|
+
* `undefined`. For dev-box testing (run the post-boot pass at once) and the plugin tests; being set
|
|
97
|
+
* at all also arms the reaper's timers where the unit-test seam `SENPI_RUNTIME_API_DISABLED` would
|
|
98
|
+
* otherwise keep them off.
|
|
99
|
+
*/
|
|
100
|
+
export function resolveReaperBootDelayMs(env) {
|
|
101
|
+
const raw = env.SENPI_REAPER_BOOT_DELAY_MS?.trim();
|
|
102
|
+
if (raw === undefined || !/^\d+$/.test(raw))
|
|
103
|
+
return undefined;
|
|
104
|
+
return Number(raw);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* How long `stop()` waits for a pass already under way to finish its current step. A pass checks
|
|
108
|
+
* for the stop before every delete, so this bounds one status read or one delete, not a whole pass.
|
|
109
|
+
*/
|
|
110
|
+
export const REAPER_STOP_DRAIN_MS = 10_000;
|
|
111
|
+
/**
|
|
112
|
+
* How long the reaper waits on one delete. The delete's DSL teardown and `stop()` have no deadline
|
|
113
|
+
* of their own; without this, one that never settles holds the single-flight slot forever and every
|
|
114
|
+
* later sweep and not-active check silently does nothing until restart. On expiry the delete is
|
|
115
|
+
* logged as not removed, the pass moves on, and the delete itself keeps running in the background.
|
|
116
|
+
* It still holds the runtime's change lock, so a later pass's attempt on that id is a CONFLICT, not
|
|
117
|
+
* a second delete.
|
|
118
|
+
*/
|
|
119
|
+
export const REAPER_DELETE_TIMEOUT_MS = 5 * 60 * 1000;
|
|
120
|
+
/** Marker for a wallet a confirmed answer did not carry. */
|
|
121
|
+
const ABSENT = Symbol("absent");
|
|
122
|
+
/**
|
|
123
|
+
* Build the reaper. Construction does no I/O; nothing happens until `start()` or `runPass()`.
|
|
124
|
+
*/
|
|
125
|
+
export function createLifecycleReaper(deps) {
|
|
126
|
+
const now = deps.now ?? Date.now;
|
|
127
|
+
const debounceMs = deps.walletDebounceMs ?? REAPER_WALLET_DEBOUNCE_MS;
|
|
128
|
+
const lastWalletCheck = new Map();
|
|
129
|
+
const lastStatus = new Map();
|
|
130
|
+
const reportedUnknown = new Set();
|
|
131
|
+
/**
|
|
132
|
+
* What each runtime was last reported as a candidate for. Every sweep re-reads every row, so a
|
|
133
|
+
* candidate that stays put would log the same warn 24 times a day, and a count of candidate events
|
|
134
|
+
* would overstate distinct runtimes. A runtime is reported again when its reason, status or wallet
|
|
135
|
+
* changes, or when it stops being a candidate and becomes one again. Per process: a restart reports
|
|
136
|
+
* each candidate once more, which also confirms it is still there.
|
|
137
|
+
*/
|
|
138
|
+
const reportedCandidate = new Map();
|
|
139
|
+
let bootTimer;
|
|
140
|
+
let sweepTimer;
|
|
141
|
+
let stopped = false;
|
|
142
|
+
/**
|
|
143
|
+
* Set by `start()`, cleared by `stop()`. `checkWallet` waits for it: boot hands the escalation to
|
|
144
|
+
* each runtime while later ones are still being wired, and a delete in that window finds no
|
|
145
|
+
* launcher to stop yet — boot then registers and starts one for a runtime that no longer exists.
|
|
146
|
+
* The post-boot pass covers anything that escalated earlier.
|
|
147
|
+
*/
|
|
148
|
+
let started = false;
|
|
149
|
+
/** Bumped by every `stop()`: a pass started before it stays cancelled even after a restart. */
|
|
150
|
+
let generation = 0;
|
|
151
|
+
/** The running pass, if any: the single-flight guard, and what `stop()` drains. */
|
|
152
|
+
let inFlightPass;
|
|
153
|
+
function recordStatuses(requested, statuses) {
|
|
154
|
+
const confirmed = requested.some((w) => statuses.has(w));
|
|
155
|
+
for (const wallet of requested) {
|
|
156
|
+
const status = statuses.get(wallet);
|
|
157
|
+
if (status !== undefined)
|
|
158
|
+
lastStatus.set(wallet, status);
|
|
159
|
+
else if (confirmed)
|
|
160
|
+
lastStatus.set(wallet, ABSENT);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function lifecycleOf(wallet) {
|
|
164
|
+
if (!isTrackableWallet(wallet))
|
|
165
|
+
return { lifecycle: "unknown" };
|
|
166
|
+
const known = lastStatus.get(wallet.trim().toLowerCase());
|
|
167
|
+
if (known === undefined)
|
|
168
|
+
return { lifecycle: "unchecked" };
|
|
169
|
+
if (known === ABSENT)
|
|
170
|
+
return { lifecycle: "absent" };
|
|
171
|
+
return { lifecycle: lifecycleForStatus(known), strategyStatus: known };
|
|
172
|
+
}
|
|
173
|
+
/** Emit `runtime.reap_candidate` unless this runtime was already reported for the same thing. */
|
|
174
|
+
function reportCandidate(input) {
|
|
175
|
+
const key = `${input.reason}|${input.strategyStatus ?? ""}|${input.address.trim().toLowerCase()}`;
|
|
176
|
+
if (reportedCandidate.get(input.runtimeId) === key)
|
|
177
|
+
return;
|
|
178
|
+
reportedCandidate.set(input.runtimeId, key);
|
|
179
|
+
deps.emit(() => buildReapCandidateEvent(input));
|
|
180
|
+
}
|
|
181
|
+
async function reap(entry, decision, trigger) {
|
|
182
|
+
const wallet = entry.wallet.trim().toLowerCase();
|
|
183
|
+
reportCandidate({
|
|
184
|
+
runtimeId: entry.id,
|
|
185
|
+
address: wallet,
|
|
186
|
+
reason: decision.reason,
|
|
187
|
+
strategyStatus: decision.status,
|
|
188
|
+
enforce: deps.enforce,
|
|
189
|
+
actionable: true,
|
|
190
|
+
trigger,
|
|
191
|
+
});
|
|
192
|
+
if (!deps.enforce)
|
|
193
|
+
return;
|
|
194
|
+
const timeoutMs = deps.deleteTimeoutMs ?? REAPER_DELETE_TIMEOUT_MS;
|
|
195
|
+
let deadline;
|
|
196
|
+
let result;
|
|
197
|
+
try {
|
|
198
|
+
result = await Promise.race([
|
|
199
|
+
deps.deleteRuntime(entry.id, decision.reason, wallet),
|
|
200
|
+
new Promise((resolve) => {
|
|
201
|
+
deadline = setTimeout(() => resolve({
|
|
202
|
+
ok: false,
|
|
203
|
+
code: "TIMEOUT",
|
|
204
|
+
message: `the delete did not finish within ${timeoutMs}ms; it continues in the background`,
|
|
205
|
+
}), timeoutMs);
|
|
206
|
+
deadline.unref?.();
|
|
207
|
+
}),
|
|
208
|
+
]);
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
result = { ok: false, code: "THREW", message: err instanceof Error ? err.message : String(err) };
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
clearTimeout(deadline);
|
|
215
|
+
}
|
|
216
|
+
if (result.ok) {
|
|
217
|
+
// Ids are reused on reinstall; a new runtime under this id that closes again is a new candidate.
|
|
218
|
+
reportedCandidate.delete(entry.id);
|
|
219
|
+
deps.logger.info("[senpi-runtime][reaper] removed runtime: its strategy is gone", {
|
|
220
|
+
runtimeId: entry.id,
|
|
221
|
+
wallet,
|
|
222
|
+
reason: decision.reason,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
deps.logger.warn("[senpi-runtime][reaper] runtime not removed", {
|
|
227
|
+
runtimeId: entry.id,
|
|
228
|
+
wallet,
|
|
229
|
+
code: result.code,
|
|
230
|
+
err: result.message,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async function pass(trigger, onlyWallet) {
|
|
235
|
+
const gen = generation;
|
|
236
|
+
const cancelled = () => stopped || gen !== generation;
|
|
237
|
+
let runtimes;
|
|
238
|
+
try {
|
|
239
|
+
runtimes = (await deps.readRegistry()).runtimes;
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
deps.logger.warn("[senpi-runtime][reaper] registry unreadable; pass skipped", {
|
|
243
|
+
err: err instanceof Error ? err.message : String(err),
|
|
244
|
+
});
|
|
245
|
+
deps.emit(() => buildReapSkippedEvent({ skipReason: "registry_unreadable", trigger, walletCount: 0 }));
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const scoped = onlyWallet === undefined
|
|
249
|
+
? runtimes
|
|
250
|
+
: runtimes.filter((e) => isTrackableWallet(e.wallet) && e.wallet.trim().toLowerCase() === onlyWallet);
|
|
251
|
+
if (onlyWallet === undefined) {
|
|
252
|
+
for (const entry of scoped) {
|
|
253
|
+
if (!isTrackableWallet(entry.wallet) && !reportedUnknown.has(entry.id)) {
|
|
254
|
+
reportedUnknown.add(entry.id);
|
|
255
|
+
deps.emit(() => buildReapUnknownWalletEvent(entry.id));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const wallets = trackableWalletKeys(scoped);
|
|
260
|
+
if (wallets.length === 0 || cancelled())
|
|
261
|
+
return;
|
|
262
|
+
const read = await readBootWalletStatuses(wallets, deps.readStatuses, deps.readTimeoutMs);
|
|
263
|
+
if (!read.ok) {
|
|
264
|
+
deps.logger.warn("[senpi-runtime][reaper] strategy status unreadable; nothing removed this pass", {
|
|
265
|
+
trigger,
|
|
266
|
+
reason: read.reason,
|
|
267
|
+
err: read.message,
|
|
268
|
+
});
|
|
269
|
+
deps.emit(() => buildReapSkippedEvent({
|
|
270
|
+
skipReason: read.reason === "timeout" ? "read_timeout" : "read_failed",
|
|
271
|
+
trigger,
|
|
272
|
+
walletCount: wallets.length,
|
|
273
|
+
}));
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
recordStatuses(wallets, read.statuses);
|
|
277
|
+
const answer = { statuses: read.statuses };
|
|
278
|
+
for (const entry of scoped) {
|
|
279
|
+
if (cancelled())
|
|
280
|
+
return;
|
|
281
|
+
if (!isTrackableWallet(entry.wallet))
|
|
282
|
+
continue;
|
|
283
|
+
const decision = decideReap(entry, answer);
|
|
284
|
+
if (decision.action === "reap") {
|
|
285
|
+
await reap({ id: entry.id, wallet: entry.wallet }, decision, trigger);
|
|
286
|
+
}
|
|
287
|
+
else if (decision.action === "hold") {
|
|
288
|
+
reportCandidate({
|
|
289
|
+
runtimeId: entry.id,
|
|
290
|
+
address: entry.wallet,
|
|
291
|
+
reason: decision.reason,
|
|
292
|
+
strategyStatus: decision.reason === "dead_not_closed" ? decision.status : undefined,
|
|
293
|
+
enforce: deps.enforce,
|
|
294
|
+
actionable: false,
|
|
295
|
+
trigger,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
reportedCandidate.delete(entry.id);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// A full pass saw every registered row: forget runtimes that are no longer registered.
|
|
303
|
+
if (onlyWallet === undefined && !cancelled()) {
|
|
304
|
+
const registered = new Set(scoped.map((e) => e.id));
|
|
305
|
+
for (const id of reportedCandidate.keys()) {
|
|
306
|
+
if (!registered.has(id))
|
|
307
|
+
reportedCandidate.delete(id);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async function runPass(trigger, onlyWallet) {
|
|
312
|
+
if (stopped || inFlightPass !== undefined)
|
|
313
|
+
return;
|
|
314
|
+
inFlightPass = (async () => {
|
|
315
|
+
try {
|
|
316
|
+
await pass(trigger, onlyWallet?.trim().toLowerCase());
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
// Backstop: every expected failure is handled inside `pass`; nothing may escape to a timer
|
|
320
|
+
// callback or to the open action that escalated.
|
|
321
|
+
deps.logger.warn("[senpi-runtime][reaper] pass failed", {
|
|
322
|
+
trigger,
|
|
323
|
+
err: err instanceof Error ? err.message : String(err),
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
})();
|
|
327
|
+
try {
|
|
328
|
+
await inFlightPass;
|
|
329
|
+
}
|
|
330
|
+
finally {
|
|
331
|
+
inFlightPass = undefined;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
function checkWallet(wallet) {
|
|
335
|
+
if (!started || stopped || inFlightPass !== undefined || !isTrackableWallet(wallet))
|
|
336
|
+
return;
|
|
337
|
+
const key = wallet.trim().toLowerCase();
|
|
338
|
+
const last = lastWalletCheck.get(key);
|
|
339
|
+
if (last !== undefined && now() - last < debounceMs)
|
|
340
|
+
return;
|
|
341
|
+
lastWalletCheck.set(key, now());
|
|
342
|
+
void runPass("not_active", key);
|
|
343
|
+
}
|
|
344
|
+
function start() {
|
|
345
|
+
if (bootTimer !== undefined)
|
|
346
|
+
return;
|
|
347
|
+
// The plugin service can be stopped and started again in one process (as the auto-update
|
|
348
|
+
// coordinator is); a restart must re-arm the reaper, not leave it silently off.
|
|
349
|
+
stopped = false;
|
|
350
|
+
started = true;
|
|
351
|
+
bootTimer = setTimeout(() => {
|
|
352
|
+
void runPass("post_boot");
|
|
353
|
+
}, deps.bootDelayMs ?? REAPER_BOOT_DELAY_MS);
|
|
354
|
+
bootTimer.unref?.();
|
|
355
|
+
sweepTimer = setInterval(() => {
|
|
356
|
+
void runPass("sweep");
|
|
357
|
+
}, deps.sweepIntervalMs ?? REAPER_SWEEP_INTERVAL_MS);
|
|
358
|
+
sweepTimer.unref?.();
|
|
359
|
+
}
|
|
360
|
+
async function stop() {
|
|
361
|
+
stopped = true;
|
|
362
|
+
started = false;
|
|
363
|
+
generation += 1;
|
|
364
|
+
if (bootTimer !== undefined)
|
|
365
|
+
clearTimeout(bootTimer);
|
|
366
|
+
if (sweepTimer !== undefined)
|
|
367
|
+
clearInterval(sweepTimer);
|
|
368
|
+
bootTimer = undefined;
|
|
369
|
+
sweepTimer = undefined;
|
|
370
|
+
const running = inFlightPass;
|
|
371
|
+
if (running === undefined)
|
|
372
|
+
return;
|
|
373
|
+
let drainTimer;
|
|
374
|
+
const drained = await Promise.race([
|
|
375
|
+
running.then(() => true),
|
|
376
|
+
new Promise((resolve) => {
|
|
377
|
+
drainTimer = setTimeout(() => resolve(false), deps.stopDrainMs ?? REAPER_STOP_DRAIN_MS);
|
|
378
|
+
drainTimer.unref?.();
|
|
379
|
+
}),
|
|
380
|
+
]);
|
|
381
|
+
clearTimeout(drainTimer);
|
|
382
|
+
if (!drained) {
|
|
383
|
+
deps.logger.warn("[senpi-runtime][reaper] a pass was still running at stop; teardown continues without it", {
|
|
384
|
+
drainMs: deps.stopDrainMs ?? REAPER_STOP_DRAIN_MS,
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return { runPass, checkWallet, recordStatuses, lifecycleOf, start, stop };
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=lifecycle-reaper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-reaper.js","sourceRoot":"","sources":["../../src/runtime/lifecycle-reaper.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/run.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ export interface RunOptions {
|
|
|
22
22
|
* telemetry can disambiguate multiple installs of the same recipe.
|
|
23
23
|
*/
|
|
24
24
|
runtimeId?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Called when the backend rejects an order because this runtime's strategy is not ACTIVE. The
|
|
27
|
+
* plugin passes the lifecycle reaper's per-wallet check here; see `RuntimeContext.onStrategyNotActive`.
|
|
28
|
+
*/
|
|
29
|
+
onStrategyNotActive?: (address: string) => void;
|
|
25
30
|
}
|
|
26
31
|
export interface RuntimeHandle {
|
|
27
32
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/run.js
CHANGED
package/dist/runtime/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,8 @@ export interface RuntimeOptions {
|
|
|
17
17
|
scannerProviders?: ScannerDataProviders;
|
|
18
18
|
/** Stable UUID identifying this install (from the plugin registry). */
|
|
19
19
|
runtimeId?: string;
|
|
20
|
+
/** Lifecycle-reaper escalation, handed to every action context; see `RuntimeContext.onStrategyNotActive`. */
|
|
21
|
+
onStrategyNotActive?: (address: string) => void;
|
|
20
22
|
/**
|
|
21
23
|
* Unresolved config (raw, pre-`${VAR}`). Stamped into telemetry's recipe fingerprint and lifecycle
|
|
22
24
|
* snapshot — never the resolved config, which would inline secrets. Absent → telemetry omits the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/E,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AA0CjF,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAiBrE,OAAO,KAAK,EAKV,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AA6CnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAyFD,qBAAa,OAAO;IAClB,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,SAAS,CAA+B;IAEhD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,qBAAqB,CAAsC;IACnE,6FAA6F;IAC7F,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,2FAA2F;IAC3F,OAAO,CAAC,kBAAkB,CAAC,CAAyB;IACpD,OAAO,CAAC,aAAa,CAAC,CAAmB;IACzC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAuB;IAExC,4FAA4F;IAC5F,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,kBAAkB,CAA8B;IACxD,yGAAyG;IACzG,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,0GAA0G;IAC1G,OAAO,CAAC,8BAA8B,CAA6B;IACnE,0FAA0F;IAC1F,OAAO,CAAC,sBAAsB,CAA+C;IAC7E,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,cAAc,CAAkB;IACxC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB,CAAyC;IAClE;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB,CAA2C;IACxE,OAAO,CAAC,mBAAmB,CAAuB;IAElD,kGAAkG;IAClG,OAAO,CAAC,oBAAoB,CAA8E;IAC1G,OAAO,CAAC,iBAAiB,CAAyD;IAElF;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAWjC,qFAAqF;IACrF,OAAO,CAAC,aAAa,CAAiB;IAEtC,4FAA4F;IAC5F,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,uGAAuG;IACvG,OAAO,CAAC,oBAAoB,CAAgC;IAG5D,0EAA0E;IAC1E,OAAO,CAAC,cAAc,CAAgC;IACtD,yFAAyF;IACzF,OAAO,CAAC,aAAa,CAAmF;IACxG,4FAA4F;IAC5F,OAAO,CAAC,gBAAgB,CAAS;IACjC,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB,CAA8C;IACzE,+IAA+I;IAC/I,OAAO,CAAC,cAAc,CAAuB;IAC7C,wEAAwE;IACxE,OAAO,CAAC,mBAAmB,CAAK;IAEhC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc;IAK1D,IAAI,GAAG,IAAI,cAAc,GAAG,IAAI,CAE/B;IAEK,eAAe,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI1D;;;OAGG;IACH,sBAAsB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI3E,wEAAwE;IACxE,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI5F,sDAAsD;IACtD,yBAAyB,CACvB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAInC;;;;;;;;;OASG;IACG,yBAAyB,CAC7B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC;IAQvC;;;;;;OAMG;IACH,0BAA0B,CACxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/E,OAAO;IASV;;;OAGG;IACH,8BAA8B,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI;IAOtE;;;;;OAKG;IACI,mBAAmB,IAAI,MAAM;IAIpC;;;;;;;;;;;OAWG;IACI,aAAa,IAAI,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,UAAU,CACrB,IAAI,EAAE,cAAc,EACpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAkC5B;;;OAGG;YACW,2BAA2B;IASzC;;;;;OAKG;YACW,iBAAiB;IA6CzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkS5B;;OAEG;IACH,uEAAuE;IACvE;;;;;;;;OAQG;YACW,eAAe;IAK7B;;;;;;;;;;;;;;;;OAgBG;YACW,mBAAmB;IA+IjC;;;;;;;;;;OAUG;YACW,gBAAgB;IAsE9B;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IA6E9B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;;;;;;;;;;OAYG;IACG,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAgB/C,uBAAuB;IA8CrC;;;;;;;;;;;;;;;;;;OAkBG;YACW,gBAAgB;IAmB9B;;;;;;;;;;;OAWG;YACW,4BAA4B;IASpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAStD,0FAA0F;IACpF,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;YACW,iBAAiB;IA8I/B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;;OAIG;YACW,oBAAoB;IAiElC;;;OAGG;YACW,kBAAkB;IAc1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAYb,UAAU;CAyDzB"}
|
package/dist/runtime/runtime.js
CHANGED
|
@@ -745,6 +745,7 @@ export class Runtime {
|
|
|
745
745
|
maxLeverageCache,
|
|
746
746
|
positionIdRegistry: this.positionIdRegistry,
|
|
747
747
|
notificationLabel,
|
|
748
|
+
onStrategyNotActive: this.options.onStrategyNotActive,
|
|
748
749
|
});
|
|
749
750
|
const actionRuntimeModule = new ActionRuntimeModule({ stateDir: layout.actionRoot });
|
|
750
751
|
const { runActionsForSignal } = await createActions(config, {
|