@senpi/runtime 3.0.130 → 3.0.132
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/dsl/index.d.ts +6 -0
- package/dist/constants/dsl/index.d.ts.map +1 -1
- package/dist/constants/dsl/index.js +6 -0
- package/dist/constants/dsl/index.js.map +1 -1
- package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
- package/dist/dsl/monitor/create-monitor.js +67 -0
- package/dist/dsl/monitor/create-monitor.js.map +1 -1
- package/dist/dsl/monitor/dsl-failure-events.d.ts +43 -2
- package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -1
- package/dist/dsl/monitor/dsl-failure-events.js +50 -2
- package/dist/dsl/monitor/dsl-failure-events.js.map +1 -1
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
- package/dist/dsl/monitor/process-one-position.js +100 -11
- package/dist/dsl/monitor/process-one-position.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/lifecycle-events.d.ts +5 -1
- package/dist/runtime/lifecycle-events.d.ts.map +1 -1
- package/dist/runtime/lifecycle-events.js +6 -1
- package/dist/runtime/lifecycle-events.js.map +1 -1
- package/dist/runtime/runtime.js +1 -1
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/telemetry/dsl-positions.d.ts +111 -0
- package/dist/telemetry/dsl-positions.d.ts.map +1 -0
- package/dist/telemetry/dsl-positions.js +118 -0
- package/dist/telemetry/dsl-positions.js.map +1 -0
- package/dist/telemetry/live-telemetry.d.ts +28 -9
- package/dist/telemetry/live-telemetry.d.ts.map +1 -1
- package/dist/telemetry/live-telemetry.js +120 -14
- package/dist/telemetry/live-telemetry.js.map +1 -1
- package/dist/telemetry/telemetry-publisher.d.ts +7 -0
- package/dist/telemetry/telemetry-publisher.d.ts.map +1 -1
- package/dist/telemetry/telemetry-publisher.js +9 -0
- package/dist/telemetry/telemetry-publisher.js.map +1 -1
- package/dist/types/dsl/index.d.ts +37 -0
- package/dist/types/dsl/index.d.ts.map +1 -1
- package/dist/utils/event-catalog.d.ts +36 -0
- package/dist/utils/event-catalog.d.ts.map +1 -1
- package/dist/utils/event-catalog.js +8 -0
- package/dist/utils/event-catalog.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -91,6 +91,12 @@ export declare const DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD = 5;
|
|
|
91
91
|
export declare const DSL_EXTERNAL_RETRIES = 2;
|
|
92
92
|
/** Delay in ms between retries for DSL SenpiClient calls. */
|
|
93
93
|
export declare const DSL_EXTERNAL_RETRY_DELAY_MS = 500;
|
|
94
|
+
/**
|
|
95
|
+
* Cap on the venue status string persisted as `lastVenueStatus`. Venue statuses are short words
|
|
96
|
+
* (`open`, `canceled`, `unknownOid`); the cap only bounds a malformed or hostile response so one
|
|
97
|
+
* unparsed payload cannot bloat every state file on disk.
|
|
98
|
+
*/
|
|
99
|
+
export declare const DSL_VENUE_STATUS_MAX_LENGTH = 64;
|
|
94
100
|
/**
|
|
95
101
|
* Read timeout for the handoff's live-SL lookup, well under the 45s default for reads.
|
|
96
102
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,uBAAuB,EAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;IASrB,4FAA4F;;CAEpF,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,0FAA0F;AAC1F,eAAO,MAAM,yBAAyB,QAAqB,CAAC;AAC5D,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,QAAqB,CAAC;AAEjE,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;;;;;;;IAavB,6FAA6F;;CAErF,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,gBAAgB,SAAU,CAAC;AACxC,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,eAAe,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,uBAAuB,EAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;IASrB,4FAA4F;;CAEpF,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,0FAA0F;AAC1F,eAAO,MAAM,yBAAyB,QAAqB,CAAC;AAC5D,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,QAAqB,CAAC;AAEjE,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;;;;;;;IAavB,6FAA6F;;CAErF,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,gBAAgB,SAAU,CAAC;AACxC,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,eAAe,WAAW,CAAC"}
|
|
@@ -91,6 +91,12 @@ export const DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD = 5;
|
|
|
91
91
|
export const DSL_EXTERNAL_RETRIES = 2;
|
|
92
92
|
/** Delay in ms between retries for DSL SenpiClient calls. */
|
|
93
93
|
export const DSL_EXTERNAL_RETRY_DELAY_MS = 500;
|
|
94
|
+
/**
|
|
95
|
+
* Cap on the venue status string persisted as `lastVenueStatus`. Venue statuses are short words
|
|
96
|
+
* (`open`, `canceled`, `unknownOid`); the cap only bounds a malformed or hostile response so one
|
|
97
|
+
* unparsed payload cannot bloat every state file on disk.
|
|
98
|
+
*/
|
|
99
|
+
export const DSL_VENUE_STATUS_MAX_LENGTH = 64;
|
|
94
100
|
/**
|
|
95
101
|
* Read timeout for the handoff's live-SL lookup, well under the 45s default for reads.
|
|
96
102
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;IAChD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;IACpD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;CAC5C,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,aAAa;IACtB,4FAA4F;IAC5F,SAAS,EAAE,eAAe;CAClB,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1D,0FAA0F;AAC1F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,mFAAmF;AACnF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;IAC1B,6FAA6F;IAC7F,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;IAChD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;IACpD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;CAC5C,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,aAAa;IACtB,4FAA4F;IAC5F,SAAS,EAAE,eAAe;CAClB,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1D,0FAA0F;AAC1F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,mFAAmF;AACnF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;IAC1B,6FAA6F;IAC7F,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-monitor.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/create-monitor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAYpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-monitor.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/create-monitor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAYpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAUpE,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,6FAA6F;IAC7F,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAC;IAC/D,oDAAoD;IACpD,wBAAwB,CAAC,EAAE,OAAO,sBAAsB,EAAE,wBAAwB,CAAC;IACnF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE;QACjB,aAAa,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjF,cAAc,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnF,CAAC;IACF,iGAAiG;IACjG,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,gBAAgB,CAAC;CACnC;AAMD,wBAAgB,6CAA6C,CAC3D,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAChD,MAAM,EAAE,CAIV;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAsU9F"}
|
|
@@ -12,6 +12,10 @@ import { runReconcile } from "../../runtime/reconcile-run.js";
|
|
|
12
12
|
import { effectiveDex } from "./effective-dex.js";
|
|
13
13
|
import { marketPriceForAsset } from "./market-price.js";
|
|
14
14
|
import { processOnePosition } from "./process-one-position.js";
|
|
15
|
+
import { buildTickAbortedEvent, buildTickRecoveredEvent } from "./dsl-failure-events.js";
|
|
16
|
+
import { emitEvent } from "../../actions/event-derivation.js";
|
|
17
|
+
import { recordDslDegradation } from "../../telemetry/metrics.js";
|
|
18
|
+
import { errorTypeOf } from "../../telemetry/spans/gen-ai.js";
|
|
15
19
|
function isoNow() {
|
|
16
20
|
return new Date().toISOString();
|
|
17
21
|
}
|
|
@@ -40,6 +44,62 @@ export function createPriceMonitor(options) {
|
|
|
40
44
|
}
|
|
41
45
|
return identity;
|
|
42
46
|
}
|
|
47
|
+
// Tick health, held on the monitor rather than on any position's state, because the abort this
|
|
48
|
+
// tracks happens BEFORE the per-position path runs: `consecutiveFetchFailures` and its
|
|
49
|
+
// `dsl.price_fetch_stale` latch sit past the clearinghouse gate and cannot see this failure at all.
|
|
50
|
+
//
|
|
51
|
+
// `undefined` until the first tick completes, and never seeded from boot time: the age this feeds
|
|
52
|
+
// means "when the exit engine last evaluated your positions", and a process that has evaluated
|
|
53
|
+
// nothing has no such moment to report. A zero or a start time there would read as healthy.
|
|
54
|
+
let lastCompletedTickAtMs;
|
|
55
|
+
// Edge-triggered, the same discipline `dsl.price_fetch_stale` uses: an outage that lasts an hour
|
|
56
|
+
// is one abort record and one recovery record, not 120 of each in a bounded ring. Re-armed only by
|
|
57
|
+
// a completed tick, so the pair always brackets a real outage.
|
|
58
|
+
let tickAbortEmitted = false;
|
|
59
|
+
let consecutiveAbortedTicks = 0;
|
|
60
|
+
/** How long ago the engine last evaluated anything; `undefined` when it never has. */
|
|
61
|
+
function lastCompletedTickAgeMs(nowMs) {
|
|
62
|
+
return lastCompletedTickAtMs == null ? undefined : nowMs - lastCompletedTickAtMs;
|
|
63
|
+
}
|
|
64
|
+
function noteTickAborted(reason, tickId, unevaluatedPositionCount, opts = {}) {
|
|
65
|
+
consecutiveAbortedTicks += 1;
|
|
66
|
+
if (tickAbortEmitted)
|
|
67
|
+
return;
|
|
68
|
+
tickAbortEmitted = true;
|
|
69
|
+
const ageMs = lastCompletedTickAgeMs(Date.now());
|
|
70
|
+
emitEvent(logger, () => buildTickAbortedEvent({
|
|
71
|
+
tickId,
|
|
72
|
+
reason,
|
|
73
|
+
unevaluatedPositionCount,
|
|
74
|
+
...(ageMs != null ? { lastCompletedTickAgeMs: ageMs } : {}),
|
|
75
|
+
...(opts.unavailableAddressCount != null
|
|
76
|
+
? { unavailableAddressCount: opts.unavailableAddressCount }
|
|
77
|
+
: {}),
|
|
78
|
+
...(opts.error !== undefined ? { error: opts.error } : {}),
|
|
79
|
+
}));
|
|
80
|
+
recordDslDegradation({
|
|
81
|
+
failure: "tick_aborted",
|
|
82
|
+
...(opts.error !== undefined ? { errorType: errorTypeOf(opts.error) } : {}),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/** Stamp this tick's completion, announcing the all-clear when it ends an abort outage. */
|
|
86
|
+
function noteTickCompleted(tickId) {
|
|
87
|
+
const completedAtMs = Date.now();
|
|
88
|
+
if (tickAbortEmitted) {
|
|
89
|
+
// Measured against the PREVIOUS completion, before this one is stamped: that gap is how long
|
|
90
|
+
// the positions went unevaluated, which is the number the outage is judged by.
|
|
91
|
+
const ageMs = lastCompletedTickAgeMs(completedAtMs);
|
|
92
|
+
const abortedTickCount = consecutiveAbortedTicks;
|
|
93
|
+
emitEvent(logger, () => buildTickRecoveredEvent({
|
|
94
|
+
tickId,
|
|
95
|
+
abortedTickCount,
|
|
96
|
+
...(ageMs != null ? { lastCompletedTickAgeMs: ageMs } : {}),
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
tickAbortEmitted = false;
|
|
100
|
+
consecutiveAbortedTicks = 0;
|
|
101
|
+
lastCompletedTickAtMs = completedAtMs;
|
|
102
|
+
}
|
|
43
103
|
async function tick() {
|
|
44
104
|
await withSpan("dsl.tick", {}, async (span) => {
|
|
45
105
|
const id = resolveIdentity();
|
|
@@ -87,6 +147,9 @@ export function createPriceMonitor(options) {
|
|
|
87
147
|
...tickLogMeta,
|
|
88
148
|
addresses: addressesWithUnavailableState,
|
|
89
149
|
});
|
|
150
|
+
noteTickAborted("clearinghouse_unavailable", tickId, activePositions.length, {
|
|
151
|
+
unavailableAddressCount: addressesWithUnavailableState.length,
|
|
152
|
+
});
|
|
90
153
|
return;
|
|
91
154
|
}
|
|
92
155
|
}
|
|
@@ -95,6 +158,9 @@ export function createPriceMonitor(options) {
|
|
|
95
158
|
...tickLogMeta,
|
|
96
159
|
error: e,
|
|
97
160
|
});
|
|
161
|
+
// A throw names no address — the reads run as one `Promise.all`, so the first rejection hides
|
|
162
|
+
// which of them (or how many) failed. The count is omitted rather than guessed at.
|
|
163
|
+
noteTickAborted("clearinghouse_error", tickId, activePositions.length, { error: e });
|
|
98
164
|
return;
|
|
99
165
|
}
|
|
100
166
|
if (reconcileAdopter) {
|
|
@@ -244,6 +310,7 @@ export function createPriceMonitor(options) {
|
|
|
244
310
|
await Promise.all(strategyPromises);
|
|
245
311
|
span.setAttribute("senpi.dsl.active_position_count", activePositions.length);
|
|
246
312
|
span.setAttribute("senpi.dsl.positions_processed", positionsToProcess.length);
|
|
313
|
+
noteTickCompleted(tickId);
|
|
247
314
|
const tickDurationMs = Date.now() - tickStartMs;
|
|
248
315
|
tickLog.call(logger, "[dsl] monitor tick complete", {
|
|
249
316
|
...tickLogMeta,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-monitor.js","sourceRoot":"","sources":["../../../src/dsl/monitor/create-monitor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-monitor.js","sourceRoot":"","sources":["../../../src/dsl/monitor/create-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* Pure builders for the DSL exit-engine's failure-state events — degradation the monitor tracks but
|
|
3
3
|
* that previously surfaced only as a tick-span error or a `warn` log: an exchange SL push that threw
|
|
4
4
|
* ({@link buildSlSyncFailedEvent}), a position with no price past the stale threshold
|
|
5
|
-
* ({@link buildPriceFetchStaleEvent}),
|
|
6
|
-
* ({@link buildHandoffFailedEvent})
|
|
5
|
+
* ({@link buildPriceFetchStaleEvent}), a Phase-2 backend handoff that degraded
|
|
6
|
+
* ({@link buildHandoffFailedEvent}), and the widest of them — a monitor tick that aborted before it
|
|
7
|
+
* reached a single position ({@link buildTickAbortedEvent}) and the tick that ends the outage
|
|
8
|
+
* ({@link buildTickRecoveredEvent}).
|
|
7
9
|
*
|
|
8
10
|
* Pure `(input) => EmittableEvent`; the monitor emits the result through `emitEvent`'s guard, so a
|
|
9
11
|
* throwing build or a telemetry failure can never disturb a tick. A thrown venue/backend error rides
|
|
@@ -41,4 +43,43 @@ export declare function buildHandoffFailedEvent(ctx: DslFailureContext, opts: {
|
|
|
41
43
|
error?: unknown;
|
|
42
44
|
redact?: Record<string, string>;
|
|
43
45
|
}): EmittableEvent<typeof EVENT_NAME.dslHandoffFailed>;
|
|
46
|
+
/** Why a whole monitor tick aborted: the clearinghouse read came back empty, or it threw. */
|
|
47
|
+
export type TickAbortReason = "clearinghouse_unavailable" | "clearinghouse_error";
|
|
48
|
+
/** What the tick-health pair reports. Ages are milliseconds, and absent means "never happened". */
|
|
49
|
+
export interface TickHealthInput {
|
|
50
|
+
/** The tick this event is about; absent when no tick id is behind the build. */
|
|
51
|
+
tickId?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Age of the last COMPLETED tick at the moment of the event. `undefined` when no tick has ever
|
|
54
|
+
* completed in this process — the caller passes nothing rather than a zero, because a zero here
|
|
55
|
+
* reads as "the engine evaluated your positions just now".
|
|
56
|
+
*/
|
|
57
|
+
lastCompletedTickAgeMs?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A monitor tick that aborted at the clearinghouse gate — no position under this monitor was
|
|
61
|
+
* evaluated, so no breach, no time cut and no stop sync ran for any of them. The per-position
|
|
62
|
+
* staleness counters live past this gate and never advance, which is why this event has to exist:
|
|
63
|
+
* `dsl.price_fetch_stale` cannot fire for this failure mode.
|
|
64
|
+
*
|
|
65
|
+
* The caller latches it, so a sustained outage costs one record rather than one per tick.
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildTickAbortedEvent(input: TickHealthInput & {
|
|
68
|
+
reason: TickAbortReason;
|
|
69
|
+
/** Addresses whose read came back unavailable; absent on the throwing path, which names none. */
|
|
70
|
+
unavailableAddressCount?: number;
|
|
71
|
+
/** Active positions this abort left unevaluated. */
|
|
72
|
+
unevaluatedPositionCount: number;
|
|
73
|
+
/** The thrown value on the `clearinghouse_error` path. */
|
|
74
|
+
error?: unknown;
|
|
75
|
+
}): EmittableEvent<typeof EVENT_NAME.dslTickAborted>;
|
|
76
|
+
/**
|
|
77
|
+
* The tick that ends an abort outage. Emitted once, on the first tick to complete after one or more
|
|
78
|
+
* aborted ones, so a reader told "not protected" is told when that stops being true. Its age field
|
|
79
|
+
* is measured before the recovering tick stamps its own completion, so it is the length of the gap.
|
|
80
|
+
*/
|
|
81
|
+
export declare function buildTickRecoveredEvent(input: TickHealthInput & {
|
|
82
|
+
/** Consecutive aborted ticks in the outage that just ended. */
|
|
83
|
+
abortedTickCount: number;
|
|
84
|
+
}): EmittableEvent<typeof EVENT_NAME.dslTickRecovered>;
|
|
44
85
|
//# sourceMappingURL=dsl-failure-events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl-failure-events.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/dsl-failure-events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dsl-failure-events.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/dsl-failure-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAA6B,MAAM,8BAA8B,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAiB9D,+FAA+F;AAC/F,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,cAAc,CAAC,OAAO,UAAU,CAAC,eAAe,CAAC,CAWnD;AAED,8FAA8F;AAC9F,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,GACnB,cAAc,CAAC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAUtD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE;IACJ,OAAO,EAAE,cAAc,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,GACA,cAAc,CAAC,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAmBpD;AAED,6FAA6F;AAC7F,MAAM,MAAM,eAAe,GAAG,2BAA2B,GAAG,qBAAqB,CAAC;AAElF,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAOD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GAAG;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,iGAAiG;IACjG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,oDAAoD;IACpD,wBAAwB,EAAE,MAAM,CAAC;IACjC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,cAAc,CAAC,OAAO,UAAU,CAAC,cAAc,CAAC,CAgBlD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,GAAG;IACvB,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACA,cAAc,CAAC,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAapD"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* Pure builders for the DSL exit-engine's failure-state events — degradation the monitor tracks but
|
|
3
3
|
* that previously surfaced only as a tick-span error or a `warn` log: an exchange SL push that threw
|
|
4
4
|
* ({@link buildSlSyncFailedEvent}), a position with no price past the stale threshold
|
|
5
|
-
* ({@link buildPriceFetchStaleEvent}),
|
|
6
|
-
* ({@link buildHandoffFailedEvent})
|
|
5
|
+
* ({@link buildPriceFetchStaleEvent}), a Phase-2 backend handoff that degraded
|
|
6
|
+
* ({@link buildHandoffFailedEvent}), and the widest of them — a monitor tick that aborted before it
|
|
7
|
+
* reached a single position ({@link buildTickAbortedEvent}) and the tick that ends the outage
|
|
8
|
+
* ({@link buildTickRecoveredEvent}).
|
|
7
9
|
*
|
|
8
10
|
* Pure `(input) => EmittableEvent`; the monitor emits the result through `emitEvent`'s guard, so a
|
|
9
11
|
* throwing build or a telemetry failure can never disturb a tick. A thrown venue/backend error rides
|
|
@@ -71,4 +73,50 @@ export function buildHandoffFailedEvent(ctx, opts) {
|
|
|
71
73
|
...(opts.error !== undefined ? { error: opts.error } : {}),
|
|
72
74
|
};
|
|
73
75
|
}
|
|
76
|
+
/** How the body phrases the age, including the case where there is no age to phrase. */
|
|
77
|
+
function ageText(ageMs) {
|
|
78
|
+
return ageMs == null ? "no tick has completed yet" : `last completed tick ${ageMs}ms ago`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* A monitor tick that aborted at the clearinghouse gate — no position under this monitor was
|
|
82
|
+
* evaluated, so no breach, no time cut and no stop sync ran for any of them. The per-position
|
|
83
|
+
* staleness counters live past this gate and never advance, which is why this event has to exist:
|
|
84
|
+
* `dsl.price_fetch_stale` cannot fire for this failure mode.
|
|
85
|
+
*
|
|
86
|
+
* The caller latches it, so a sustained outage costs one record rather than one per tick.
|
|
87
|
+
*/
|
|
88
|
+
export function buildTickAbortedEvent(input) {
|
|
89
|
+
return {
|
|
90
|
+
name: EVENT_NAME.dslTickAborted,
|
|
91
|
+
level: "warn",
|
|
92
|
+
body: `DSL monitor tick aborted (${input.reason}); ` +
|
|
93
|
+
`${input.unevaluatedPositionCount} position(s) unevaluated, ${ageText(input.lastCompletedTickAgeMs)}`,
|
|
94
|
+
attributes: eventAttrs({
|
|
95
|
+
"senpi.tick.id": input.tickId,
|
|
96
|
+
"senpi.dsl.tick_abort_reason": input.reason,
|
|
97
|
+
"senpi.dsl.last_completed_tick_age_ms": input.lastCompletedTickAgeMs,
|
|
98
|
+
"senpi.dsl.unavailable_address_count": input.unavailableAddressCount,
|
|
99
|
+
"senpi.dsl.unevaluated_position_count": input.unevaluatedPositionCount,
|
|
100
|
+
}),
|
|
101
|
+
...(input.error !== undefined ? { error: input.error } : {}),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The tick that ends an abort outage. Emitted once, on the first tick to complete after one or more
|
|
106
|
+
* aborted ones, so a reader told "not protected" is told when that stops being true. Its age field
|
|
107
|
+
* is measured before the recovering tick stamps its own completion, so it is the length of the gap.
|
|
108
|
+
*/
|
|
109
|
+
export function buildTickRecoveredEvent(input) {
|
|
110
|
+
return {
|
|
111
|
+
name: EVENT_NAME.dslTickRecovered,
|
|
112
|
+
level: "info",
|
|
113
|
+
body: `DSL monitor tick completed after ${input.abortedTickCount} aborted tick(s); ` +
|
|
114
|
+
ageText(input.lastCompletedTickAgeMs),
|
|
115
|
+
attributes: eventAttrs({
|
|
116
|
+
"senpi.tick.id": input.tickId,
|
|
117
|
+
"senpi.dsl.last_completed_tick_age_ms": input.lastCompletedTickAgeMs,
|
|
118
|
+
"senpi.dsl.aborted_tick_count": input.abortedTickCount,
|
|
119
|
+
}),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
74
122
|
//# sourceMappingURL=dsl-failure-events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl-failure-events.js","sourceRoot":"","sources":["../../../src/dsl/monitor/dsl-failure-events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dsl-failure-events.js","sourceRoot":"","sources":["../../../src/dsl/monitor/dsl-failure-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-one-position.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/process-one-position.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"process-one-position.d.ts","sourceRoot":"","sources":["../../../src/dsl/monitor/process-one-position.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAsBzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAiB/C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,QAAQ,GACV;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAYvD;AAuGD,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,GAAG,EAAE,aAAa,CAAC;IACnB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAC;IAC/D,oDAAoD;IACpD,wBAAwB,CAAC,EAAE,OAAO,sBAAsB,EAAE,wBAAwB,CAAC;CACpF;AAgFD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,IAAI,CAAC,CAs1Bf"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Per-position work for one monitor tick: SL fill check, pending close, dslTick, exchange sync.
|
|
3
3
|
*/
|
|
4
4
|
import { dslTick, exchangeStopLossTriggerPx } from "../engine/index.js";
|
|
5
|
-
import { CLOSE_REASON, MAX_CONSECUTIVE_CLOSE_FAILURES, DSL_EXTERNAL_RETRIES, DSL_EXTERNAL_RETRY_DELAY_MS, DSL_HANDOFF_SL_STATUS_TIMEOUT_MS, DSL_EVENTS, EVENTS, DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD, DSL_HEARTBEAT_FIRST_HOUR_MS, DSL_HEARTBEAT_INTERVAL_MS, DSL_HEARTBEAT_TIER_SUPPRESS_MS, } from "../../constants/dsl/index.js";
|
|
5
|
+
import { CLOSE_REASON, MAX_CONSECUTIVE_CLOSE_FAILURES, DSL_EXTERNAL_RETRIES, DSL_EXTERNAL_RETRY_DELAY_MS, DSL_HANDOFF_SL_STATUS_TIMEOUT_MS, DSL_EVENTS, EVENTS, DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD, DSL_HEARTBEAT_FIRST_HOUR_MS, DSL_HEARTBEAT_INTERVAL_MS, DSL_HEARTBEAT_TIER_SUPPRESS_MS, DSL_VENUE_STATUS_MAX_LENGTH, } from "../../constants/dsl/index.js";
|
|
6
6
|
import { logger } from "../../utils/logger/dsl.js";
|
|
7
7
|
import { withRetry } from "../../utils/retry.js";
|
|
8
8
|
import { isRetriableMcpError } from "../../senpi/client.js";
|
|
@@ -139,6 +139,40 @@ function isGoneVenueSlStatus(status) {
|
|
|
139
139
|
const s = status.trim().toLowerCase();
|
|
140
140
|
return GONE_VENUE_SL_STATUSES.has(s) || s.endsWith("rejected");
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* The venue's answer about the stop order, in the shape the state persists it.
|
|
144
|
+
*
|
|
145
|
+
* `undefined` whenever the venue named no status — a failed lookup, an unreadable response, or a
|
|
146
|
+
* response with no status field. Those are not answers, so they write nothing: an absent
|
|
147
|
+
* `lastVenueStatus` has to keep meaning "the venue has not told us", which is precisely what a
|
|
148
|
+
* reader needs to tell a confirmed stop from a believed one. Nothing is defaulted or synthesised
|
|
149
|
+
* for them.
|
|
150
|
+
*
|
|
151
|
+
* The status is stored verbatim (only length-capped), because the branching above already ignores
|
|
152
|
+
* everything outside the known-dead set — the unrecognised answer is the one worth keeping.
|
|
153
|
+
*/
|
|
154
|
+
function venueStatusStamp(status) {
|
|
155
|
+
const raw = status?.status;
|
|
156
|
+
if (raw == null)
|
|
157
|
+
return undefined;
|
|
158
|
+
return { lastVenueStatus: raw.slice(0, DSL_VENUE_STATUS_MAX_LENGTH), lastVenueStatusAt: Date.now() };
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The venue's answer about the BACKEND ratchet's `activeSLOrderId`, in the shape the state persists.
|
|
162
|
+
*
|
|
163
|
+
* A different order from the position's own `slOrderId`, so a different pair of fields: the handoff
|
|
164
|
+
* asks about the stop the backend placed, and recording that answer as the position's own would
|
|
165
|
+
* claim a confirmation the venue never gave for it.
|
|
166
|
+
*/
|
|
167
|
+
function backendSlStatusStamp(status) {
|
|
168
|
+
const raw = status?.status;
|
|
169
|
+
if (raw == null)
|
|
170
|
+
return undefined;
|
|
171
|
+
return {
|
|
172
|
+
backendSlVenueStatus: raw.slice(0, DSL_VENUE_STATUS_MAX_LENGTH),
|
|
173
|
+
backendSlVenueStatusAt: Date.now(),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
142
176
|
export async function processOnePosition(ctx, key, state, price, span) {
|
|
143
177
|
const { tickId, ts, now: isoNow, stateManager, strategyStates, bus, isSlPlacementInProgress = () => false } = ctx;
|
|
144
178
|
const strategy = strategyStates.get(state.address);
|
|
@@ -174,6 +208,9 @@ export async function processOnePosition(ctx, key, state, price, span) {
|
|
|
174
208
|
label: "getOrderStatus (SL-hit check)",
|
|
175
209
|
onRetry: (attempt, remaining, err) => logger.warn("[dsl] getOrderStatus retry", { asset: state.asset, attempt, remaining, err }),
|
|
176
210
|
}));
|
|
211
|
+
// The venue has answered. Every branch below keeps that answer; only a throw or a
|
|
212
|
+
// status-less response leaves the fields absent.
|
|
213
|
+
const venueStamp = venueStatusStamp(status);
|
|
177
214
|
if (status?.filled) {
|
|
178
215
|
span.addEvent("external_close_detected", { source: "sl_order" });
|
|
179
216
|
span.setAttribute("senpi.dsl.close_reason", CLOSE_REASON.EXCHANGE_SL_HIT);
|
|
@@ -183,7 +220,13 @@ export async function processOnePosition(ctx, key, state, price, span) {
|
|
|
183
220
|
slOrderId: state.slOrderId,
|
|
184
221
|
address: state.address,
|
|
185
222
|
});
|
|
186
|
-
const closedState = {
|
|
223
|
+
const closedState = {
|
|
224
|
+
...state,
|
|
225
|
+
...venueStamp,
|
|
226
|
+
active: false,
|
|
227
|
+
closedAt: ts,
|
|
228
|
+
closeReason: CLOSE_REASON.EXCHANGE_SL_HIT,
|
|
229
|
+
};
|
|
187
230
|
const archived = await archiveIfStillActive(stateManager, key, state.address, state.asset, effectiveDex(state), () => closedState, { tickId, skipMessage: "[dsl] skip SL-hit archive: state already cleared (concurrent close)" });
|
|
188
231
|
if (!archived)
|
|
189
232
|
return;
|
|
@@ -223,8 +266,17 @@ export async function processOnePosition(ctx, key, state, price, span) {
|
|
|
223
266
|
phase: state.phase,
|
|
224
267
|
});
|
|
225
268
|
recordDslDegradation({ failure: "sl_gone" });
|
|
226
|
-
await setIfStillActive(stateManager, key, state.address, state.asset, (current) => ({ ...current, slOrderId: null, lastSyncedFloorPrice: null }), { tickId, skipMessage: "[dsl] skip gone-SL clear: state already cleared (concurrent close)" });
|
|
227
|
-
state = { ...state, slOrderId: null, lastSyncedFloorPrice: null };
|
|
269
|
+
await setIfStillActive(stateManager, key, state.address, state.asset, (current) => ({ ...current, ...venueStamp, slOrderId: null, lastSyncedFloorPrice: null }), { tickId, skipMessage: "[dsl] skip gone-SL clear: state already cleared (concurrent close)" });
|
|
270
|
+
state = { ...state, ...venueStamp, slOrderId: null, lastSyncedFloorPrice: null };
|
|
271
|
+
}
|
|
272
|
+
else if (venueStamp) {
|
|
273
|
+
// The stop is neither filled nor in the known-dead set, so the branching above changes
|
|
274
|
+
// nothing — but the answer itself is the evidence, and it is the only thing that separates
|
|
275
|
+
// "a stop IS resting" from "we believe one is". Persisted here rather than left to the
|
|
276
|
+
// tick's own write, because the paths that return before it (no price, pendingClose error)
|
|
277
|
+
// merge onto the re-read state and would drop a stamp held only in this local copy.
|
|
278
|
+
await setIfStillActive(stateManager, key, state.address, state.asset, (current) => ({ ...current, ...venueStamp }), { tickId, skipMessage: "[dsl] skip venue-status stamp: state already cleared (concurrent close)" });
|
|
279
|
+
state = { ...state, ...venueStamp };
|
|
228
280
|
}
|
|
229
281
|
}
|
|
230
282
|
catch (e) {
|
|
@@ -831,15 +883,17 @@ const LIVE_VENUE_SL_STATUSES = new Set(["open", "triggered"]);
|
|
|
831
883
|
async function backendHasLiveSl(pos, strategy, tickId, asset) {
|
|
832
884
|
const slOrderId = parseSlOrderId(pos.activeSLOrderId);
|
|
833
885
|
if (slOrderId == null)
|
|
834
|
-
return false;
|
|
886
|
+
return { live: false };
|
|
835
887
|
try {
|
|
836
888
|
const status = await withRetry(() => strategy.getOrderStatus(slOrderId, { timeoutMs: DSL_HANDOFF_SL_STATUS_TIMEOUT_MS }), {
|
|
837
889
|
retries: DSL_EXTERNAL_RETRIES,
|
|
838
890
|
delayMs: DSL_EXTERNAL_RETRY_DELAY_MS,
|
|
839
891
|
label: "getOrderStatus (handoff live-SL check)",
|
|
840
892
|
});
|
|
841
|
-
|
|
842
|
-
|
|
893
|
+
const stamp = backendSlStatusStamp(status);
|
|
894
|
+
if (status?.status != null && LIVE_VENUE_SL_STATUSES.has(status.status)) {
|
|
895
|
+
return { live: true, ...(stamp === undefined ? {} : { stamp }) };
|
|
896
|
+
}
|
|
843
897
|
logger.warn("[dsl] backend ratchet names an exchange SL that is not resting on the venue", {
|
|
844
898
|
tickId,
|
|
845
899
|
asset,
|
|
@@ -847,7 +901,7 @@ async function backendHasLiveSl(pos, strategy, tickId, asset) {
|
|
|
847
901
|
slOrderId,
|
|
848
902
|
venueStatus: status?.status ?? null,
|
|
849
903
|
});
|
|
850
|
-
return false;
|
|
904
|
+
return { live: false, ...(stamp === undefined ? {} : { stamp }) };
|
|
851
905
|
}
|
|
852
906
|
catch (e) {
|
|
853
907
|
logger.warn("[dsl] could not read the backend ratchet's exchange SL status; treating it as not live", {
|
|
@@ -857,7 +911,36 @@ async function backendHasLiveSl(pos, strategy, tickId, asset) {
|
|
|
857
911
|
slOrderId,
|
|
858
912
|
err: e,
|
|
859
913
|
});
|
|
860
|
-
return false;
|
|
914
|
+
return { live: false };
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Persist the venue's answer about the backend's stop on a path that writes nothing else.
|
|
919
|
+
*
|
|
920
|
+
* That path is the one worth recording: the checks above leave the handoff at `"pending"` and
|
|
921
|
+
* return, so without this the reason it is stuck exists only in a warn line. A stamp held in a local
|
|
922
|
+
* copy would be dropped by the next write, which merges onto the re-read state, so it is written
|
|
923
|
+
* under the key lock like every other field.
|
|
924
|
+
*
|
|
925
|
+
* No stamp means the venue named no status — a failed lookup, or a ratchet with no order id to ask
|
|
926
|
+
* about. Nothing is written for those: an absent field has to keep meaning "the venue has not told
|
|
927
|
+
* us".
|
|
928
|
+
*/
|
|
929
|
+
async function recordBackendSlStatus(ctx, key, state, stamp) {
|
|
930
|
+
if (stamp === undefined)
|
|
931
|
+
return;
|
|
932
|
+
try {
|
|
933
|
+
await setIfStillActive(ctx.stateManager, key, state.address, state.asset, (current) => ({ ...current, ...stamp }), { tickId: ctx.tickId, skipMessage: "[dsl] skip backend SL status stamp: state already cleared (concurrent close)" });
|
|
934
|
+
Object.assign(state, stamp);
|
|
935
|
+
}
|
|
936
|
+
catch (e) {
|
|
937
|
+
// One caller sits inside the pre-check's try, whose catch falls through to sending an add. A
|
|
938
|
+
// failed write of an observability field must not be the reason a second ratchet is registered.
|
|
939
|
+
logger.warn("[dsl] could not persist the backend SL venue status", {
|
|
940
|
+
tickId: ctx.tickId,
|
|
941
|
+
asset: state.asset,
|
|
942
|
+
err: e,
|
|
943
|
+
});
|
|
861
944
|
}
|
|
862
945
|
}
|
|
863
946
|
async function attemptHandoffRegistration(ctx, key, next, _original, strategy) {
|
|
@@ -874,8 +957,10 @@ async function attemptHandoffRegistration(ctx, key, next, _original, strategy) {
|
|
|
874
957
|
const active = existing.filter((p) => !BACKEND_TERMINAL_STATUSES.has(p.status));
|
|
875
958
|
if (active.length > 0) {
|
|
876
959
|
const adopted = active[0];
|
|
877
|
-
|
|
960
|
+
const adoptedSlCheck = await backendHasLiveSl(adopted, strategy, tickId, next.asset);
|
|
961
|
+
if (!adoptedSlCheck.live) {
|
|
878
962
|
logger.warn("[dsl] pre-check found backend ratchet without an exchange SL; staying pending so the runtime keeps managing the SL", { tickId, asset: next.asset, adoptedId: adopted.id, status: adopted.status });
|
|
963
|
+
await recordBackendSlStatus(ctx, key, next, adoptedSlCheck.stamp);
|
|
879
964
|
return;
|
|
880
965
|
}
|
|
881
966
|
logger.info("[dsl] pre-check found existing backend ratchet, adopting instead of re-adding", {
|
|
@@ -894,6 +979,7 @@ async function attemptHandoffRegistration(ctx, key, next, _original, strategy) {
|
|
|
894
979
|
const adoptedSl = mapEnginePositionToStateFields(adopted);
|
|
895
980
|
const updated = {
|
|
896
981
|
...next,
|
|
982
|
+
...adoptedSlCheck.stamp,
|
|
897
983
|
slOrderId: adoptedSl.slOrderId,
|
|
898
984
|
lastSyncedFloorPrice: adoptedSl.lastSyncedFloorPrice,
|
|
899
985
|
handoffStatus: "ok",
|
|
@@ -945,7 +1031,8 @@ async function attemptHandoffRegistration(ctx, key, next, _original, strategy) {
|
|
|
945
1031
|
Object.assign(next, aborted);
|
|
946
1032
|
return;
|
|
947
1033
|
}
|
|
948
|
-
|
|
1034
|
+
const registeredSlCheck = await backendHasLiveSl(result.position, strategy, tickId, next.asset);
|
|
1035
|
+
if (!registeredSlCheck.live) {
|
|
949
1036
|
logger.warn("[dsl] backend created the position but has not placed an exchange SL; staying pending so the runtime keeps managing the SL", {
|
|
950
1037
|
tickId,
|
|
951
1038
|
asset: next.asset,
|
|
@@ -953,12 +1040,14 @@ async function attemptHandoffRegistration(ctx, key, next, _original, strategy) {
|
|
|
953
1040
|
status: result.position.status,
|
|
954
1041
|
rawResult: JSON.stringify(result).slice(0, 1000),
|
|
955
1042
|
});
|
|
1043
|
+
await recordBackendSlStatus(ctx, key, next, registeredSlCheck.stamp);
|
|
956
1044
|
return;
|
|
957
1045
|
}
|
|
958
1046
|
// Mirror the backend's stop on the registration tick itself — see the adopt site above.
|
|
959
1047
|
const registeredSl = mapEnginePositionToStateFields(result.position);
|
|
960
1048
|
const updated = {
|
|
961
1049
|
...next,
|
|
1050
|
+
...registeredSlCheck.stamp,
|
|
962
1051
|
slOrderId: registeredSl.slOrderId,
|
|
963
1052
|
lastSyncedFloorPrice: registeredSl.lastSyncedFloorPrice,
|
|
964
1053
|
handoffStatus: "ok",
|