@senpi/runtime 3.0.94 → 3.0.96
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/index.d.ts.map +1 -1
- package/dist/index.js +79 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts +21 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +69 -5
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/update-apply-deps.d.ts +26 -1
- package/dist/runtime/update-apply-deps.d.ts.map +1 -1
- package/dist/runtime/update-apply-deps.js +48 -3
- package/dist/runtime/update-apply-deps.js.map +1 -1
- package/dist/runtime/update-handler.d.ts +14 -2
- package/dist/runtime/update-handler.d.ts.map +1 -1
- package/dist/runtime/update-handler.js +11 -2
- package/dist/runtime/update-handler.js.map +1 -1
- package/dist/runtime/update-plan.d.ts.map +1 -1
- package/dist/runtime/update-plan.js +14 -2
- package/dist/runtime/update-plan.js.map +1 -1
- package/dist/runtime/update-register.d.ts +3 -1
- package/dist/runtime/update-register.d.ts.map +1 -1
- package/dist/runtime/update-register.js.map +1 -1
- package/dist/runtime/update-report.d.ts +33 -4
- package/dist/runtime/update-report.d.ts.map +1 -1
- package/dist/runtime/update-report.js +82 -3
- package/dist/runtime/update-report.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* damage afterwards.
|
|
23
23
|
*/
|
|
24
24
|
import { resolveEffectiveConfig } from "./effective-config.js";
|
|
25
|
-
import { buildUpdateReport, } from "./update-report.js";
|
|
25
|
+
import { buildUpdateReport, diffRecipes, } from "./update-report.js";
|
|
26
26
|
/** Codes this module raises. Distinct from validate's set: these are update-time decisions. */
|
|
27
27
|
export const UPDATE_CODE = {
|
|
28
28
|
walletChanged: "E_UPDATE_WALLET_CHANGED",
|
|
@@ -57,7 +57,18 @@ function scannerNames(config) {
|
|
|
57
57
|
*/
|
|
58
58
|
function externalScannerNames(config) {
|
|
59
59
|
return (config.scanners ?? [])
|
|
60
|
-
.filter((s) =>
|
|
60
|
+
.filter((s) => {
|
|
61
|
+
const scanner = s;
|
|
62
|
+
if (String(scanner.type) !== "external_scanner")
|
|
63
|
+
return false;
|
|
64
|
+
// The SAME predicate `selectScanners` uses (intake-mount.ts): an external scanner missing
|
|
65
|
+
// `path` or `entrypoint` is skipped by the launcher, so it occupies no index and cannot
|
|
66
|
+
// orphan anything. Counting it here would model a different sequence from the one the state
|
|
67
|
+
// directories are named after — and the mismatch is silent in the dangerous direction:
|
|
68
|
+
// filling in a stub's `path` later shifts every scanner below it while this check, seeing
|
|
69
|
+
// the same names in the same order, reports no move at all.
|
|
70
|
+
return Boolean(scanner.path) && Boolean(scanner.entrypoint);
|
|
71
|
+
})
|
|
61
72
|
.map((s) => String(s.name));
|
|
62
73
|
}
|
|
63
74
|
/**
|
|
@@ -184,6 +195,7 @@ export function planUpdate(inputs) {
|
|
|
184
195
|
openPositions: inputs.openPositions,
|
|
185
196
|
closedGates: inputs.closedGates,
|
|
186
197
|
exitPresetChanged: exitPresetChanged(inputs.current, inputs.next),
|
|
198
|
+
changedFields: diffRecipes(inputs.current, inputs.next),
|
|
187
199
|
...(slotsOf(inputs.next) !== undefined ? { slots: slotsOf(inputs.next) } : {}),
|
|
188
200
|
}),
|
|
189
201
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-plan.js","sourceRoot":"","sources":["../../src/runtime/update-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"update-plan.js","sourceRoot":"","sources":["../../src/runtime/update-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,9 @@ export interface UpdateGatewayContext extends UpdateHandlerDeps {
|
|
|
32
32
|
* planning. Present together or not at all — recording without swapping, or the reverse, is not a
|
|
33
33
|
* coherent half-state to offer.
|
|
34
34
|
*/
|
|
35
|
-
applyToRuntime?(runtimeId: string, next: RuntimeConfig, recipe: RecipeSource): Promise<void
|
|
35
|
+
applyToRuntime?(runtimeId: string, next: RuntimeConfig, recipe: RecipeSource): Promise<void | {
|
|
36
|
+
scannersUnwired?: string;
|
|
37
|
+
}>;
|
|
36
38
|
writeRegistry?(runtimeId: string, recipe: RecipeSource): Promise<void>;
|
|
37
39
|
/**
|
|
38
40
|
* Called once an apply has FULLY succeeded — swapped and recorded.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-register.d.ts","sourceRoot":"","sources":["../../src/runtime/update-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;;;;;OAOG;IACH,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"update-register.d.ts","sourceRoot":"","sources":["../../src/runtime/update-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;;;;;OAOG;IACH,cAAc,CAAC,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,YAAY,CAAC;QACrB,cAAc,EAAE,YAAY,CAAC;QAC7B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;CACV;AAED,UAAU,UAAU;IAClB,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KACpE,KAAK,OAAO,CAAC,IAAI,CAAC,EACnB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxB,IAAI,CAAC;CACT;AAsDD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CA8HhG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-register.js","sourceRoot":"","sources":["../../src/runtime/update-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"update-register.js","sourceRoot":"","sources":["../../src/runtime/update-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAuDxD;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,SAA6B,EAAE,QAA4B;IACjF,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,SAA6B,EAAE,QAA4B;IAChF,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,SAAS,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC7E,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,2FAA2F;IAC3F,+FAA+F;IAC/F,kFAAkF;IAClF,MAAM,IAAI,GAAG,QAAQ;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;SACnF,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAe,EAAE,OAA6B;IACxF,GAAG,CAAC,qBAAqB,CACvB,cAAc,EACd,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,MAAM,EAAE,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvG,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EACL,gFAAgF;aACnF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,mFAAmF;aAC7F,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,6FAA6F;QAC7F,2FAA2F;QAC3F,sDAAsD;QACtD,MAAM,UAAU,GAAG,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACjF,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EACL,6DAA6D;oBAC7D,yDAAyD;aAC5D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAiB;YAC3B,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrG,CAAC;QAEF,sFAAsF;QACtF,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM;SACP,CAAC;QAEF,IAAI,OAAmD,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,GAAG,UAAU;gBAClB,CAAC,CAAC,MAAM,cAAc,CAClB,OAA+C,EAC/C,OAAO,CACR;gBACH,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,EAAE;oBACF,CAAC,CAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAY;oBACvC,CAAC,CAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAY,CACrE,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2FAA2F;YAC3F,2FAA2F;YAC3F,oEAAoE;YACpE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,UAAU;oBACjB,CAAC,CAAC,uFAAuF;wBACvF,sEAAsE;wBACtE,uDAAuD,MAAM,CAAC,GAAG,CAAC,EAAE;oBACtE,CAAC,CAAC,qFAAqF,MAAM,CAAC,GAAG,CAAC,EAAE;aACvG,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,sFAAsF;YACtF,yFAAyF;YACzF,0FAA0F;YAC1F,sFAAsF;YACtF,yFAAyF;YACzF,0FAA0F;YAC1F,wFAAwF;YACxF,2FAA2F;YAC3F,sFAAsF;YACtF,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;gBACrE,OAAO,EACL,OAAO,CAAC,KAAK,KAAK,QAAQ;oBACxB,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;oBACvD,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC7D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/D,OAAO,CAAC,SAAS,EAAE,CAAC;gBAClB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,sFAAsF;gBACtF,wDAAwD;gBACxD,MAAM,EAAE,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBACvE,cAAc,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE;gBACpC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;gBAC1C,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;YAC3B,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;SAClD,CAAC,CAAC;IACL,CAAC,EACD,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -66,12 +66,24 @@ export interface UpdateReportInputs {
|
|
|
66
66
|
/**
|
|
67
67
|
* The two recipes describe the same strategy.
|
|
68
68
|
*
|
|
69
|
-
* Not the same as "nothing to do": an apply
|
|
70
|
-
* scanner
|
|
71
|
-
*
|
|
72
|
-
* edited the scanner beside
|
|
69
|
+
* Not the same as "nothing to do": an apply rebuilds the components AND restarts the external
|
|
70
|
+
* scanner children, which is how a pure code change reaches a running strategy — a scanner reads
|
|
71
|
+
* its entrypoint at spawn, so the restart is the delivery. The report has to say that, because
|
|
72
|
+
* "no changes" over a recipe the user just edited the scanner beside reads as "your edit did
|
|
73
|
+
* nothing".
|
|
73
74
|
*/
|
|
74
75
|
recipeUnchanged?: boolean;
|
|
76
|
+
/** Every leaf this update moves. Empty when the two recipes agree. */
|
|
77
|
+
changedFields?: readonly ChangedField[];
|
|
78
|
+
/**
|
|
79
|
+
* Set when the recipe applied but the external scanner children could not be restarted.
|
|
80
|
+
*
|
|
81
|
+
* The apply succeeded — the new configuration is live in-process — so this is not a failure. But
|
|
82
|
+
* the outgoing children were already stopped, so for a strategy whose entries come from an
|
|
83
|
+
* external scanner it is a silent trading halt, and a report that says only "Updated" would be
|
|
84
|
+
* the last thing anyone read before wondering why nothing traded.
|
|
85
|
+
*/
|
|
86
|
+
scannersUnwired?: string;
|
|
75
87
|
}
|
|
76
88
|
export interface UpdateReport extends UpdateReportInputs {
|
|
77
89
|
/** Notes present after the update that were not present before — the newly-ineffective fields. */
|
|
@@ -84,6 +96,23 @@ export interface UpdateReport extends UpdateReportInputs {
|
|
|
84
96
|
*/
|
|
85
97
|
slotHeadroom?: number;
|
|
86
98
|
}
|
|
99
|
+
/** One leaf of the recipe that this update moves. */
|
|
100
|
+
export interface ChangedField {
|
|
101
|
+
/** Dotted path, with named list entries keyed by name rather than index. */
|
|
102
|
+
path: string;
|
|
103
|
+
kind: "changed" | "added" | "removed";
|
|
104
|
+
before?: unknown;
|
|
105
|
+
after?: unknown;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Every leaf the new recipe moves, relative to the running one.
|
|
109
|
+
*
|
|
110
|
+
* The report used to describe consequences — masked fields, clamped values, open positions — and
|
|
111
|
+
* never the change itself, so a plan over a recipe that altered eleven fields rendered identically
|
|
112
|
+
* to a plan over an unchanged one. For a verb that plans by default so a human can check the change
|
|
113
|
+
* before committing it, that left nothing to check.
|
|
114
|
+
*/
|
|
115
|
+
export declare function diffRecipes(before: unknown, after: unknown): ChangedField[];
|
|
87
116
|
export declare function buildUpdateReport(inputs: UpdateReportInputs): UpdateReport;
|
|
88
117
|
/**
|
|
89
118
|
* The human rendering. Ordered by what a reader needs first: what changed, then what it will not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-report.d.ts","sourceRoot":"","sources":["../../src/runtime/update-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,gGAAgG;IAChG,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,+DAA+D;IAC/D,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;IACrC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"update-report.d.ts","sourceRoot":"","sources":["../../src/runtime/update-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,gGAAgG;IAChG,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,+DAA+D;IAC/D,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;IACrC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,kGAAkG;IAClG,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiDD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,EAAE,CAI3E;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAY1E;AAiBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgI/D"}
|
|
@@ -23,6 +23,63 @@
|
|
|
23
23
|
* it was handed. That keeps the whole thing golden-file testable, and it means `--dry-run` and a
|
|
24
24
|
* real apply produce the identical document apart from {@link UpdateReport.applied}.
|
|
25
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* Values are rendered back to the reader, and a resolved recipe can carry a credential — a
|
|
28
|
+
* notification token, an API key pulled in from `${VAR}`. Printing "what changed" must not be the
|
|
29
|
+
* thing that prints a secret into a terminal and a CI log, so anything whose key looks like one is
|
|
30
|
+
* reported as changed without its value.
|
|
31
|
+
*/
|
|
32
|
+
const SECRETISH = /(token|secret|password|passwd|api[-_]?key|private[-_]?key|credential|auth)/i;
|
|
33
|
+
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
34
|
+
/** `name`-keyed where the list has names (scanners, actions); index-keyed otherwise. */
|
|
35
|
+
function listKey(entry, index) {
|
|
36
|
+
const name = isObj(entry) ? entry["name"] : undefined;
|
|
37
|
+
return typeof name === "string" && name.length > 0 ? name : String(index);
|
|
38
|
+
}
|
|
39
|
+
function walk(before, after, path, out) {
|
|
40
|
+
if (Object.is(before, after))
|
|
41
|
+
return;
|
|
42
|
+
if (Array.isArray(before) && Array.isArray(after)) {
|
|
43
|
+
const keys = [];
|
|
44
|
+
const b = new Map();
|
|
45
|
+
const a = new Map();
|
|
46
|
+
before.forEach((v, i) => { const k = listKey(v, i); b.set(k, v); keys.push(k); });
|
|
47
|
+
after.forEach((v, i) => { const k = listKey(v, i); a.set(k, v); if (!keys.includes(k))
|
|
48
|
+
keys.push(k); });
|
|
49
|
+
for (const k of keys)
|
|
50
|
+
walk(b.get(k), a.get(k), `${path}[${k}]`, out);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (isObj(before) && isObj(after)) {
|
|
54
|
+
for (const k of new Set([...Object.keys(before), ...Object.keys(after)])) {
|
|
55
|
+
walk(before[k], after[k], path ? `${path}.${k}` : k, out);
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const redact = SECRETISH.test(path);
|
|
60
|
+
if (before === undefined) {
|
|
61
|
+
out.push({ path, kind: "added", ...(redact ? {} : { after }) });
|
|
62
|
+
}
|
|
63
|
+
else if (after === undefined) {
|
|
64
|
+
out.push({ path, kind: "removed", ...(redact ? {} : { before }) });
|
|
65
|
+
}
|
|
66
|
+
else if (JSON.stringify(before) !== JSON.stringify(after)) {
|
|
67
|
+
out.push({ path, kind: "changed", ...(redact ? {} : { before, after }) });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Every leaf the new recipe moves, relative to the running one.
|
|
72
|
+
*
|
|
73
|
+
* The report used to describe consequences — masked fields, clamped values, open positions — and
|
|
74
|
+
* never the change itself, so a plan over a recipe that altered eleven fields rendered identically
|
|
75
|
+
* to a plan over an unchanged one. For a verb that plans by default so a human can check the change
|
|
76
|
+
* before committing it, that left nothing to check.
|
|
77
|
+
*/
|
|
78
|
+
export function diffRecipes(before, after) {
|
|
79
|
+
const out = [];
|
|
80
|
+
walk(before, after, "", out);
|
|
81
|
+
return out.sort((x, y) => x.path.localeCompare(y.path));
|
|
82
|
+
}
|
|
26
83
|
function noteKey(n) {
|
|
27
84
|
// `authored` is part of the identity, and that is the headline case rather than a detail: a user
|
|
28
85
|
// who edits `trading_risk: moderate` to `aggressive` while `default_leverage` masks it has changed
|
|
@@ -65,6 +122,25 @@ export function renderUpdateReport(report) {
|
|
|
65
122
|
// means "this was a plan". The distinction is the difference between editing again and
|
|
66
123
|
// trusting the plan.
|
|
67
124
|
`Dry run for ${report.runtimeId} — nothing has been applied.`);
|
|
125
|
+
// First, because it is what the reader came for: a plan that does not name the change cannot be
|
|
126
|
+
// checked against the intent behind it.
|
|
127
|
+
const changed = report.changedFields ?? [];
|
|
128
|
+
if (changed.length > 0) {
|
|
129
|
+
const SHOWN = 40;
|
|
130
|
+
const fmt = (v) => v === undefined ? "(hidden)" : typeof v === "string" ? v : JSON.stringify(v);
|
|
131
|
+
out.push("", changed.length === 1 ? "This changes 1 field:" : `This changes ${changed.length} fields:`);
|
|
132
|
+
for (const c of changed.slice(0, SHOWN)) {
|
|
133
|
+
if (c.kind === "added")
|
|
134
|
+
out.push(` + ${c.path}: ${fmt(c.after)}`);
|
|
135
|
+
else if (c.kind === "removed")
|
|
136
|
+
out.push(` - ${c.path} (was ${fmt(c.before)})`);
|
|
137
|
+
else
|
|
138
|
+
out.push(` ${c.path}: ${fmt(c.before)} → ${fmt(c.after)}`);
|
|
139
|
+
}
|
|
140
|
+
if (changed.length > SHOWN) {
|
|
141
|
+
out.push(` … and ${changed.length - SHOWN} more`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
68
144
|
if (report.newlyIneffective.length > 0) {
|
|
69
145
|
out.push("", "These fields have no effect as written:");
|
|
70
146
|
for (const n of report.newlyIneffective) {
|
|
@@ -106,9 +182,9 @@ export function renderUpdateReport(report) {
|
|
|
106
182
|
}
|
|
107
183
|
if (report.recipeUnchanged === true) {
|
|
108
184
|
out.push("", report.applied
|
|
109
|
-
? "The recipe is unchanged. Components were rebuilt, so any edited scanner code is now live."
|
|
110
|
-
: "The recipe is unchanged. Applying would still rebuild the components
|
|
111
|
-
"scanner code reaches a running strategy.");
|
|
185
|
+
? "The recipe is unchanged. Components were rebuilt and the external scanners restarted, so any edited scanner code is now live."
|
|
186
|
+
: "The recipe is unchanged. Applying would still rebuild the components and restart the " +
|
|
187
|
+
"external scanners, which is how edited scanner code reaches a running strategy.");
|
|
112
188
|
}
|
|
113
189
|
if (report.applyBlockers && report.applyBlockers.length > 0) {
|
|
114
190
|
out.push("", report.applied ? "Applied despite:" : "This plan cannot be applied until:");
|
|
@@ -124,6 +200,9 @@ export function renderUpdateReport(report) {
|
|
|
124
200
|
if (report.closedGates.length === 0) {
|
|
125
201
|
out.push("", "Guardrail state not checked — each gate is derived from live venue history, and reading them", "turns a plan into a network round trip per gate. Thresholds apply on the next signal either way.");
|
|
126
202
|
}
|
|
203
|
+
if (report.applied && report.scannersUnwired !== undefined) {
|
|
204
|
+
out.push("", "WARNING — the recipe applied, but this runtime's external scanners are NOT running:", ` ${report.scannersUnwired}`, " No signals will arrive until they are restarted. Check `openclaw senpi scanner`.");
|
|
205
|
+
}
|
|
127
206
|
if (report.applied) {
|
|
128
207
|
// Both of these look like regressions in the minute after an update and are neither.
|
|
129
208
|
out.push("", "Expected for the next minute or so: scanners read `unknown` until each reports in, and risk", "gates may briefly refuse on a cold connection. Neither is a fault.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-report.js","sourceRoot":"","sources":["../../src/runtime/update-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"update-report.js","sourceRoot":"","sources":["../../src/runtime/update-report.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.96",
|
|
6
6
|
"commandAliases": [
|
|
7
7
|
{
|
|
8
8
|
"name": "senpi"
|