@senpi/runtime 1.0.95-dev.20260408174401

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.
Files changed (755) hide show
  1. package/README.md +155 -0
  2. package/dist/actions/close-position/close-position.action.d.ts +16 -0
  3. package/dist/actions/close-position/close-position.action.d.ts.map +1 -0
  4. package/dist/actions/close-position/close-position.action.js +220 -0
  5. package/dist/actions/close-position/close-position.action.js.map +1 -0
  6. package/dist/actions/decision-engine.d.ts +32 -0
  7. package/dist/actions/decision-engine.d.ts.map +1 -0
  8. package/dist/actions/decision-engine.js +103 -0
  9. package/dist/actions/decision-engine.js.map +1 -0
  10. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts +12 -0
  11. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -0
  12. package/dist/actions/llm-decision/anthropic-llm-decision.js +74 -0
  13. package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -0
  14. package/dist/actions/llm-decision/factory.d.ts +17 -0
  15. package/dist/actions/llm-decision/factory.d.ts.map +1 -0
  16. package/dist/actions/llm-decision/factory.js +29 -0
  17. package/dist/actions/llm-decision/factory.js.map +1 -0
  18. package/dist/actions/llm-decision/index.d.ts +8 -0
  19. package/dist/actions/llm-decision/index.d.ts.map +1 -0
  20. package/dist/actions/llm-decision/index.js +5 -0
  21. package/dist/actions/llm-decision/index.js.map +1 -0
  22. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +14 -0
  23. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -0
  24. package/dist/actions/llm-decision/openclaw-llm-decision.js +58 -0
  25. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -0
  26. package/dist/actions/llm-decision/shared.d.ts +41 -0
  27. package/dist/actions/llm-decision/shared.d.ts.map +1 -0
  28. package/dist/actions/llm-decision/shared.js +117 -0
  29. package/dist/actions/llm-decision/shared.js.map +1 -0
  30. package/dist/actions/open-position/open-position.action.d.ts +16 -0
  31. package/dist/actions/open-position/open-position.action.d.ts.map +1 -0
  32. package/dist/actions/open-position/open-position.action.js +278 -0
  33. package/dist/actions/open-position/open-position.action.js.map +1 -0
  34. package/dist/actions/position-tracker/position-tracker.action.d.ts +14 -0
  35. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -0
  36. package/dist/actions/position-tracker/position-tracker.action.js +201 -0
  37. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -0
  38. package/dist/actions/types.d.ts +123 -0
  39. package/dist/actions/types.d.ts.map +1 -0
  40. package/dist/actions/types.js +3 -0
  41. package/dist/actions/types.js.map +1 -0
  42. package/dist/cli/guide-commands.d.ts +27 -0
  43. package/dist/cli/guide-commands.d.ts.map +1 -0
  44. package/dist/cli/guide-commands.js +481 -0
  45. package/dist/cli/guide-commands.js.map +1 -0
  46. package/dist/cli/senpi-cli-config.d.ts +33 -0
  47. package/dist/cli/senpi-cli-config.d.ts.map +1 -0
  48. package/dist/cli/senpi-cli-config.js +130 -0
  49. package/dist/cli/senpi-cli-config.js.map +1 -0
  50. package/dist/cli/senpi-commands.d.ts +21 -0
  51. package/dist/cli/senpi-commands.d.ts.map +1 -0
  52. package/dist/cli/senpi-commands.js +471 -0
  53. package/dist/cli/senpi-commands.js.map +1 -0
  54. package/dist/cli/senpi-config-commands.d.ts +11 -0
  55. package/dist/cli/senpi-config-commands.d.ts.map +1 -0
  56. package/dist/cli/senpi-config-commands.js +113 -0
  57. package/dist/cli/senpi-config-commands.js.map +1 -0
  58. package/dist/constants/dsl/index.d.ts +62 -0
  59. package/dist/constants/dsl/index.d.ts.map +1 -0
  60. package/dist/constants/dsl/index.js +62 -0
  61. package/dist/constants/dsl/index.js.map +1 -0
  62. package/dist/context/context-builder.d.ts +14 -0
  63. package/dist/context/context-builder.d.ts.map +1 -0
  64. package/dist/context/context-builder.js +38 -0
  65. package/dist/context/context-builder.js.map +1 -0
  66. package/dist/context/index.d.ts +5 -0
  67. package/dist/context/index.d.ts.map +1 -0
  68. package/dist/context/index.js +5 -0
  69. package/dist/context/index.js.map +1 -0
  70. package/dist/context/interpolate.d.ts +6 -0
  71. package/dist/context/interpolate.d.ts.map +1 -0
  72. package/dist/context/interpolate.js +15 -0
  73. package/dist/context/interpolate.js.map +1 -0
  74. package/dist/context/providers/asset-trend.provider.d.ts +42 -0
  75. package/dist/context/providers/asset-trend.provider.d.ts.map +1 -0
  76. package/dist/context/providers/asset-trend.provider.js +90 -0
  77. package/dist/context/providers/asset-trend.provider.js.map +1 -0
  78. package/dist/context/providers/index.d.ts +5 -0
  79. package/dist/context/providers/index.d.ts.map +1 -0
  80. package/dist/context/providers/index.js +5 -0
  81. package/dist/context/providers/index.js.map +1 -0
  82. package/dist/context/providers/scanner-context.provider.d.ts +10 -0
  83. package/dist/context/providers/scanner-context.provider.d.ts.map +1 -0
  84. package/dist/context/providers/scanner-context.provider.js +20 -0
  85. package/dist/context/providers/scanner-context.provider.js.map +1 -0
  86. package/dist/context/providers/signal.provider.d.ts +11 -0
  87. package/dist/context/providers/signal.provider.d.ts.map +1 -0
  88. package/dist/context/providers/signal.provider.js +30 -0
  89. package/dist/context/providers/signal.provider.js.map +1 -0
  90. package/dist/context/providers/strategy.provider.d.ts +14 -0
  91. package/dist/context/providers/strategy.provider.d.ts.map +1 -0
  92. package/dist/context/providers/strategy.provider.js +71 -0
  93. package/dist/context/providers/strategy.provider.js.map +1 -0
  94. package/dist/context/types.d.ts +45 -0
  95. package/dist/context/types.d.ts.map +1 -0
  96. package/dist/context/types.js +18 -0
  97. package/dist/context/types.js.map +1 -0
  98. package/dist/debug.d.ts +2 -0
  99. package/dist/debug.d.ts.map +1 -0
  100. package/dist/debug.js +591 -0
  101. package/dist/debug.js.map +1 -0
  102. package/dist/dsl/config/exit-block.d.ts +11 -0
  103. package/dist/dsl/config/exit-block.d.ts.map +1 -0
  104. package/dist/dsl/config/exit-block.js +5 -0
  105. package/dist/dsl/config/exit-block.js.map +1 -0
  106. package/dist/dsl/config/index.d.ts +8 -0
  107. package/dist/dsl/config/index.d.ts.map +1 -0
  108. package/dist/dsl/config/index.js +6 -0
  109. package/dist/dsl/config/index.js.map +1 -0
  110. package/dist/dsl/config/parse-phase.d.ts +14 -0
  111. package/dist/dsl/config/parse-phase.d.ts.map +1 -0
  112. package/dist/dsl/config/parse-phase.js +78 -0
  113. package/dist/dsl/config/parse-phase.js.map +1 -0
  114. package/dist/dsl/config/parse-plugin-config.d.ts +8 -0
  115. package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -0
  116. package/dist/dsl/config/parse-plugin-config.js +27 -0
  117. package/dist/dsl/config/parse-plugin-config.js.map +1 -0
  118. package/dist/dsl/config/parse-preset.d.ts +7 -0
  119. package/dist/dsl/config/parse-preset.d.ts.map +1 -0
  120. package/dist/dsl/config/parse-preset.js +99 -0
  121. package/dist/dsl/config/parse-preset.js.map +1 -0
  122. package/dist/dsl/config/parse-tiers.d.ts +7 -0
  123. package/dist/dsl/config/parse-tiers.d.ts.map +1 -0
  124. package/dist/dsl/config/parse-tiers.js +31 -0
  125. package/dist/dsl/config/parse-tiers.js.map +1 -0
  126. package/dist/dsl/config/parse-timeouts.d.ts +16 -0
  127. package/dist/dsl/config/parse-timeouts.d.ts.map +1 -0
  128. package/dist/dsl/config/parse-timeouts.js +75 -0
  129. package/dist/dsl/config/parse-timeouts.js.map +1 -0
  130. package/dist/dsl/config/raw-types.d.ts +45 -0
  131. package/dist/dsl/config/raw-types.d.ts.map +1 -0
  132. package/dist/dsl/config/raw-types.js +5 -0
  133. package/dist/dsl/config/raw-types.js.map +1 -0
  134. package/dist/dsl/config/unknown-keys.d.ts +7 -0
  135. package/dist/dsl/config/unknown-keys.d.ts.map +1 -0
  136. package/dist/dsl/config/unknown-keys.js +119 -0
  137. package/dist/dsl/config/unknown-keys.js.map +1 -0
  138. package/dist/dsl/config/validation.d.ts +21 -0
  139. package/dist/dsl/config/validation.d.ts.map +1 -0
  140. package/dist/dsl/config/validation.js +45 -0
  141. package/dist/dsl/config/validation.js.map +1 -0
  142. package/dist/dsl/constants/index.d.ts +3 -0
  143. package/dist/dsl/constants/index.d.ts.map +1 -0
  144. package/dist/dsl/constants/index.js +3 -0
  145. package/dist/dsl/constants/index.js.map +1 -0
  146. package/dist/dsl/engine/exchange-stop.d.ts +16 -0
  147. package/dist/dsl/engine/exchange-stop.d.ts.map +1 -0
  148. package/dist/dsl/engine/exchange-stop.js +20 -0
  149. package/dist/dsl/engine/exchange-stop.js.map +1 -0
  150. package/dist/dsl/engine/floors.d.ts +32 -0
  151. package/dist/dsl/engine/floors.d.ts.map +1 -0
  152. package/dist/dsl/engine/floors.js +115 -0
  153. package/dist/dsl/engine/floors.js.map +1 -0
  154. package/dist/dsl/engine/index.d.ts +7 -0
  155. package/dist/dsl/engine/index.d.ts.map +1 -0
  156. package/dist/dsl/engine/index.js +7 -0
  157. package/dist/dsl/engine/index.js.map +1 -0
  158. package/dist/dsl/engine/round.d.ts +5 -0
  159. package/dist/dsl/engine/round.d.ts.map +1 -0
  160. package/dist/dsl/engine/round.js +9 -0
  161. package/dist/dsl/engine/round.js.map +1 -0
  162. package/dist/dsl/engine/state-updates.d.ts +8 -0
  163. package/dist/dsl/engine/state-updates.d.ts.map +1 -0
  164. package/dist/dsl/engine/state-updates.js +60 -0
  165. package/dist/dsl/engine/state-updates.js.map +1 -0
  166. package/dist/dsl/engine/tick.d.ts +6 -0
  167. package/dist/dsl/engine/tick.d.ts.map +1 -0
  168. package/dist/dsl/engine/tick.js +174 -0
  169. package/dist/dsl/engine/tick.js.map +1 -0
  170. package/dist/dsl/events/bus-types.d.ts +7 -0
  171. package/dist/dsl/events/bus-types.d.ts.map +1 -0
  172. package/dist/dsl/events/bus-types.js +6 -0
  173. package/dist/dsl/events/bus-types.js.map +1 -0
  174. package/dist/dsl/events/guards.d.ts +17 -0
  175. package/dist/dsl/events/guards.d.ts.map +1 -0
  176. package/dist/dsl/events/guards.js +116 -0
  177. package/dist/dsl/events/guards.js.map +1 -0
  178. package/dist/dsl/events/handlers.d.ts +19 -0
  179. package/dist/dsl/events/handlers.d.ts.map +1 -0
  180. package/dist/dsl/events/handlers.js +387 -0
  181. package/dist/dsl/events/handlers.js.map +1 -0
  182. package/dist/dsl/events/index.d.ts +4 -0
  183. package/dist/dsl/events/index.d.ts.map +1 -0
  184. package/dist/dsl/events/index.js +4 -0
  185. package/dist/dsl/events/index.js.map +1 -0
  186. package/dist/dsl/events/initial-state.d.ts +7 -0
  187. package/dist/dsl/events/initial-state.d.ts.map +1 -0
  188. package/dist/dsl/events/initial-state.js +96 -0
  189. package/dist/dsl/events/initial-state.js.map +1 -0
  190. package/dist/dsl/events/normalize-position-opened.d.ts +10 -0
  191. package/dist/dsl/events/normalize-position-opened.d.ts.map +1 -0
  192. package/dist/dsl/events/normalize-position-opened.js +13 -0
  193. package/dist/dsl/events/normalize-position-opened.js.map +1 -0
  194. package/dist/dsl/index.d.ts +13 -0
  195. package/dist/dsl/index.d.ts.map +1 -0
  196. package/dist/dsl/index.js +37 -0
  197. package/dist/dsl/index.js.map +1 -0
  198. package/dist/dsl/monitor/create-monitor.d.ts +24 -0
  199. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -0
  200. package/dist/dsl/monitor/create-monitor.js +162 -0
  201. package/dist/dsl/monitor/create-monitor.js.map +1 -0
  202. package/dist/dsl/monitor/effective-dex.d.ts +7 -0
  203. package/dist/dsl/monitor/effective-dex.d.ts.map +1 -0
  204. package/dist/dsl/monitor/effective-dex.js +11 -0
  205. package/dist/dsl/monitor/effective-dex.js.map +1 -0
  206. package/dist/dsl/monitor/exchange-sync.d.ts +16 -0
  207. package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -0
  208. package/dist/dsl/monitor/exchange-sync.js +37 -0
  209. package/dist/dsl/monitor/exchange-sync.js.map +1 -0
  210. package/dist/dsl/monitor/index.d.ts +6 -0
  211. package/dist/dsl/monitor/index.d.ts.map +1 -0
  212. package/dist/dsl/monitor/index.js +5 -0
  213. package/dist/dsl/monitor/index.js.map +1 -0
  214. package/dist/dsl/monitor/market-price.d.ts +5 -0
  215. package/dist/dsl/monitor/market-price.d.ts.map +1 -0
  216. package/dist/dsl/monitor/market-price.js +24 -0
  217. package/dist/dsl/monitor/market-price.js.map +1 -0
  218. package/dist/dsl/monitor/process-one-position.d.ts +19 -0
  219. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -0
  220. package/dist/dsl/monitor/process-one-position.js +438 -0
  221. package/dist/dsl/monitor/process-one-position.js.map +1 -0
  222. package/dist/dsl/notifications/formatter.d.ts +18 -0
  223. package/dist/dsl/notifications/formatter.d.ts.map +1 -0
  224. package/dist/dsl/notifications/formatter.js +69 -0
  225. package/dist/dsl/notifications/formatter.js.map +1 -0
  226. package/dist/dsl/notifications/index.d.ts +19 -0
  227. package/dist/dsl/notifications/index.d.ts.map +1 -0
  228. package/dist/dsl/notifications/index.js +90 -0
  229. package/dist/dsl/notifications/index.js.map +1 -0
  230. package/dist/dsl/plugin/index.d.ts +66 -0
  231. package/dist/dsl/plugin/index.d.ts.map +1 -0
  232. package/dist/dsl/plugin/index.js +398 -0
  233. package/dist/dsl/plugin/index.js.map +1 -0
  234. package/dist/dsl/plugin/options.d.ts +40 -0
  235. package/dist/dsl/plugin/options.d.ts.map +1 -0
  236. package/dist/dsl/plugin/options.js +5 -0
  237. package/dist/dsl/plugin/options.js.map +1 -0
  238. package/dist/dsl/types/index.d.ts +3 -0
  239. package/dist/dsl/types/index.d.ts.map +1 -0
  240. package/dist/dsl/types/index.js +3 -0
  241. package/dist/dsl/types/index.js.map +1 -0
  242. package/dist/health/index.d.ts +29 -0
  243. package/dist/health/index.d.ts.map +1 -0
  244. package/dist/health/index.js +191 -0
  245. package/dist/health/index.js.map +1 -0
  246. package/dist/health/types.d.ts +114 -0
  247. package/dist/health/types.d.ts.map +1 -0
  248. package/dist/health/types.js +2 -0
  249. package/dist/health/types.js.map +1 -0
  250. package/dist/index.d.ts +102 -0
  251. package/dist/index.d.ts.map +1 -0
  252. package/dist/index.js +772 -0
  253. package/dist/index.js.map +1 -0
  254. package/dist/leverage/max-leverage-cache.d.ts +10 -0
  255. package/dist/leverage/max-leverage-cache.d.ts.map +1 -0
  256. package/dist/leverage/max-leverage-cache.js +51 -0
  257. package/dist/leverage/max-leverage-cache.js.map +1 -0
  258. package/dist/leverage/resolve-leverage.d.ts +9 -0
  259. package/dist/leverage/resolve-leverage.d.ts.map +1 -0
  260. package/dist/leverage/resolve-leverage.js +15 -0
  261. package/dist/leverage/resolve-leverage.js.map +1 -0
  262. package/dist/risk/index.d.ts +9 -0
  263. package/dist/risk/index.d.ts.map +1 -0
  264. package/dist/risk/index.js +9 -0
  265. package/dist/risk/index.js.map +1 -0
  266. package/dist/runtime/action-registry.d.ts +12 -0
  267. package/dist/runtime/action-registry.d.ts.map +1 -0
  268. package/dist/runtime/action-registry.js +22 -0
  269. package/dist/runtime/action-registry.js.map +1 -0
  270. package/dist/runtime/auto-update/command-runner.d.ts +20 -0
  271. package/dist/runtime/auto-update/command-runner.d.ts.map +1 -0
  272. package/dist/runtime/auto-update/command-runner.js +54 -0
  273. package/dist/runtime/auto-update/command-runner.js.map +1 -0
  274. package/dist/runtime/auto-update/coordinator.d.ts +90 -0
  275. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -0
  276. package/dist/runtime/auto-update/coordinator.js +336 -0
  277. package/dist/runtime/auto-update/coordinator.js.map +1 -0
  278. package/dist/runtime/auto-update/gateway-restart.d.ts +49 -0
  279. package/dist/runtime/auto-update/gateway-restart.d.ts.map +1 -0
  280. package/dist/runtime/auto-update/gateway-restart.js +105 -0
  281. package/dist/runtime/auto-update/gateway-restart.js.map +1 -0
  282. package/dist/runtime/auto-update/policy.d.ts +24 -0
  283. package/dist/runtime/auto-update/policy.d.ts.map +1 -0
  284. package/dist/runtime/auto-update/policy.js +42 -0
  285. package/dist/runtime/auto-update/policy.js.map +1 -0
  286. package/dist/runtime/auto-update/preflight.d.ts +16 -0
  287. package/dist/runtime/auto-update/preflight.d.ts.map +1 -0
  288. package/dist/runtime/auto-update/preflight.js +20 -0
  289. package/dist/runtime/auto-update/preflight.js.map +1 -0
  290. package/dist/runtime/auto-update/state-store.d.ts +29 -0
  291. package/dist/runtime/auto-update/state-store.d.ts.map +1 -0
  292. package/dist/runtime/auto-update/state-store.js +51 -0
  293. package/dist/runtime/auto-update/state-store.js.map +1 -0
  294. package/dist/runtime/auto-update/types.d.ts +105 -0
  295. package/dist/runtime/auto-update/types.d.ts.map +1 -0
  296. package/dist/runtime/auto-update/types.js +56 -0
  297. package/dist/runtime/auto-update/types.js.map +1 -0
  298. package/dist/runtime/auto-update/version-source.d.ts +23 -0
  299. package/dist/runtime/auto-update/version-source.d.ts.map +1 -0
  300. package/dist/runtime/auto-update/version-source.js +25 -0
  301. package/dist/runtime/auto-update/version-source.js.map +1 -0
  302. package/dist/runtime/build-action-scan-payload.d.ts +20 -0
  303. package/dist/runtime/build-action-scan-payload.d.ts.map +1 -0
  304. package/dist/runtime/build-action-scan-payload.js +36 -0
  305. package/dist/runtime/build-action-scan-payload.js.map +1 -0
  306. package/dist/runtime/bus.d.ts +6 -0
  307. package/dist/runtime/bus.d.ts.map +1 -0
  308. package/dist/runtime/bus.js +22 -0
  309. package/dist/runtime/bus.js.map +1 -0
  310. package/dist/runtime/create-action-context.d.ts +34 -0
  311. package/dist/runtime/create-action-context.d.ts.map +1 -0
  312. package/dist/runtime/create-action-context.js +22 -0
  313. package/dist/runtime/create-action-context.js.map +1 -0
  314. package/dist/runtime/create-actions.d.ts +30 -0
  315. package/dist/runtime/create-actions.d.ts.map +1 -0
  316. package/dist/runtime/create-actions.js +70 -0
  317. package/dist/runtime/create-actions.js.map +1 -0
  318. package/dist/runtime/create-runtime-context.d.ts +35 -0
  319. package/dist/runtime/create-runtime-context.d.ts.map +1 -0
  320. package/dist/runtime/create-runtime-context.js +35 -0
  321. package/dist/runtime/create-runtime-context.js.map +1 -0
  322. package/dist/runtime/create-scanner-module.d.ts +14 -0
  323. package/dist/runtime/create-scanner-module.d.ts.map +1 -0
  324. package/dist/runtime/create-scanner-module.js +31 -0
  325. package/dist/runtime/create-scanner-module.js.map +1 -0
  326. package/dist/runtime/create-scanner-providers-for-run.d.ts +20 -0
  327. package/dist/runtime/create-scanner-providers-for-run.d.ts.map +1 -0
  328. package/dist/runtime/create-scanner-providers-for-run.js +34 -0
  329. package/dist/runtime/create-scanner-providers-for-run.js.map +1 -0
  330. package/dist/runtime/default-state-dir.d.ts +10 -0
  331. package/dist/runtime/default-state-dir.d.ts.map +1 -0
  332. package/dist/runtime/default-state-dir.js +22 -0
  333. package/dist/runtime/default-state-dir.js.map +1 -0
  334. package/dist/runtime/env-resolve.d.ts +17 -0
  335. package/dist/runtime/env-resolve.d.ts.map +1 -0
  336. package/dist/runtime/env-resolve.js +45 -0
  337. package/dist/runtime/env-resolve.js.map +1 -0
  338. package/dist/runtime/hook-system.d.ts +7 -0
  339. package/dist/runtime/hook-system.d.ts.map +1 -0
  340. package/dist/runtime/hook-system.js +16 -0
  341. package/dist/runtime/hook-system.js.map +1 -0
  342. package/dist/runtime/index.d.ts +37 -0
  343. package/dist/runtime/index.d.ts.map +1 -0
  344. package/dist/runtime/index.js +26 -0
  345. package/dist/runtime/index.js.map +1 -0
  346. package/dist/runtime/load-runtime-config.d.ts +23 -0
  347. package/dist/runtime/load-runtime-config.d.ts.map +1 -0
  348. package/dist/runtime/load-runtime-config.js +176 -0
  349. package/dist/runtime/load-runtime-config.js.map +1 -0
  350. package/dist/runtime/map-exit-config.d.ts +11 -0
  351. package/dist/runtime/map-exit-config.d.ts.map +1 -0
  352. package/dist/runtime/map-exit-config.js +86 -0
  353. package/dist/runtime/map-exit-config.js.map +1 -0
  354. package/dist/runtime/map-strategies-registration.d.ts +14 -0
  355. package/dist/runtime/map-strategies-registration.d.ts.map +1 -0
  356. package/dist/runtime/map-strategies-registration.js +44 -0
  357. package/dist/runtime/map-strategies-registration.js.map +1 -0
  358. package/dist/runtime/map-strategies.d.ts +14 -0
  359. package/dist/runtime/map-strategies.d.ts.map +1 -0
  360. package/dist/runtime/map-strategies.js +64 -0
  361. package/dist/runtime/map-strategies.js.map +1 -0
  362. package/dist/runtime/notifications.d.ts +19 -0
  363. package/dist/runtime/notifications.d.ts.map +1 -0
  364. package/dist/runtime/notifications.js +88 -0
  365. package/dist/runtime/notifications.js.map +1 -0
  366. package/dist/runtime/parse-interval.d.ts +11 -0
  367. package/dist/runtime/parse-interval.d.ts.map +1 -0
  368. package/dist/runtime/parse-interval.js +35 -0
  369. package/dist/runtime/parse-interval.js.map +1 -0
  370. package/dist/runtime/recipe-version.d.ts +3 -0
  371. package/dist/runtime/recipe-version.d.ts.map +1 -0
  372. package/dist/runtime/recipe-version.js +3 -0
  373. package/dist/runtime/recipe-version.js.map +1 -0
  374. package/dist/runtime/reconcile-state.d.ts +37 -0
  375. package/dist/runtime/reconcile-state.d.ts.map +1 -0
  376. package/dist/runtime/reconcile-state.js +179 -0
  377. package/dist/runtime/reconcile-state.js.map +1 -0
  378. package/dist/runtime/risk-guard.d.ts +6 -0
  379. package/dist/runtime/risk-guard.d.ts.map +1 -0
  380. package/dist/runtime/risk-guard.js +14 -0
  381. package/dist/runtime/risk-guard.js.map +1 -0
  382. package/dist/runtime/run.d.ts +30 -0
  383. package/dist/runtime/run.d.ts.map +1 -0
  384. package/dist/runtime/run.js +46 -0
  385. package/dist/runtime/run.js.map +1 -0
  386. package/dist/runtime/runtime-config.d.ts +6 -0
  387. package/dist/runtime/runtime-config.d.ts.map +1 -0
  388. package/dist/runtime/runtime-config.js +5 -0
  389. package/dist/runtime/runtime-config.js.map +1 -0
  390. package/dist/runtime/runtime-schema.d.ts +1859 -0
  391. package/dist/runtime/runtime-schema.d.ts.map +1 -0
  392. package/dist/runtime/runtime-schema.js +110 -0
  393. package/dist/runtime/runtime-schema.js.map +1 -0
  394. package/dist/runtime/runtime-version.d.ts +19 -0
  395. package/dist/runtime/runtime-version.d.ts.map +1 -0
  396. package/dist/runtime/runtime-version.js +29 -0
  397. package/dist/runtime/runtime-version.js.map +1 -0
  398. package/dist/runtime/runtime.d.ts +53 -0
  399. package/dist/runtime/runtime.d.ts.map +1 -0
  400. package/dist/runtime/runtime.js +335 -0
  401. package/dist/runtime/runtime.js.map +1 -0
  402. package/dist/runtime/scanner-composition.d.ts +23 -0
  403. package/dist/runtime/scanner-composition.d.ts.map +1 -0
  404. package/dist/runtime/scanner-composition.js +168 -0
  405. package/dist/runtime/scanner-composition.js.map +1 -0
  406. package/dist/runtime/scanner-registry.d.ts +28 -0
  407. package/dist/runtime/scanner-registry.d.ts.map +1 -0
  408. package/dist/runtime/scanner-registry.js +114 -0
  409. package/dist/runtime/scanner-registry.js.map +1 -0
  410. package/dist/runtime/state-layout.d.ts +50 -0
  411. package/dist/runtime/state-layout.d.ts.map +1 -0
  412. package/dist/runtime/state-layout.js +89 -0
  413. package/dist/runtime/state-layout.js.map +1 -0
  414. package/dist/runtime/strategy-registry.d.ts +79 -0
  415. package/dist/runtime/strategy-registry.d.ts.map +1 -0
  416. package/dist/runtime/strategy-registry.js +265 -0
  417. package/dist/runtime/strategy-registry.js.map +1 -0
  418. package/dist/runtime/validate-dsl-position-tracking.d.ts +3 -0
  419. package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -0
  420. package/dist/runtime/validate-dsl-position-tracking.js +27 -0
  421. package/dist/runtime/validate-dsl-position-tracking.js.map +1 -0
  422. package/dist/scanners/__tests__/default-engine-test-composition.d.ts +9 -0
  423. package/dist/scanners/__tests__/default-engine-test-composition.d.ts.map +1 -0
  424. package/dist/scanners/__tests__/default-engine-test-composition.js +84 -0
  425. package/dist/scanners/__tests__/default-engine-test-composition.js.map +1 -0
  426. package/dist/scanners/__tests__/fixtures/index.d.ts +3 -0
  427. package/dist/scanners/__tests__/fixtures/index.d.ts.map +1 -0
  428. package/dist/scanners/__tests__/fixtures/index.js +3 -0
  429. package/dist/scanners/__tests__/fixtures/index.js.map +1 -0
  430. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts +21 -0
  431. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts.map +1 -0
  432. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js +199 -0
  433. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js.map +1 -0
  434. package/dist/scanners/__tests__/fixtures/scan-results.d.ts +23 -0
  435. package/dist/scanners/__tests__/fixtures/scan-results.d.ts.map +1 -0
  436. package/dist/scanners/__tests__/fixtures/scan-results.js +128 -0
  437. package/dist/scanners/__tests__/fixtures/scan-results.js.map +1 -0
  438. package/dist/scanners/__tests__/fixtures/signals.d.ts +18 -0
  439. package/dist/scanners/__tests__/fixtures/signals.d.ts.map +1 -0
  440. package/dist/scanners/__tests__/fixtures/signals.js +84 -0
  441. package/dist/scanners/__tests__/fixtures/signals.js.map +1 -0
  442. package/dist/scanners/__tests__/test-helpers.d.ts +4 -0
  443. package/dist/scanners/__tests__/test-helpers.d.ts.map +1 -0
  444. package/dist/scanners/__tests__/test-helpers.js +23 -0
  445. package/dist/scanners/__tests__/test-helpers.js.map +1 -0
  446. package/dist/scanners/artifacts.d.ts +131 -0
  447. package/dist/scanners/artifacts.d.ts.map +1 -0
  448. package/dist/scanners/artifacts.js +72 -0
  449. package/dist/scanners/artifacts.js.map +1 -0
  450. package/dist/scanners/context-source-mapping.d.ts +4 -0
  451. package/dist/scanners/context-source-mapping.d.ts.map +1 -0
  452. package/dist/scanners/context-source-mapping.js +10 -0
  453. package/dist/scanners/context-source-mapping.js.map +1 -0
  454. package/dist/scanners/create-scanner.d.ts +13 -0
  455. package/dist/scanners/create-scanner.d.ts.map +1 -0
  456. package/dist/scanners/create-scanner.js +11 -0
  457. package/dist/scanners/create-scanner.js.map +1 -0
  458. package/dist/scanners/engine/config-validator.d.ts +7 -0
  459. package/dist/scanners/engine/config-validator.d.ts.map +1 -0
  460. package/dist/scanners/engine/config-validator.js +16 -0
  461. package/dist/scanners/engine/config-validator.js.map +1 -0
  462. package/dist/scanners/engine/data-providers.d.ts +48 -0
  463. package/dist/scanners/engine/data-providers.d.ts.map +1 -0
  464. package/dist/scanners/engine/data-providers.js +28 -0
  465. package/dist/scanners/engine/data-providers.js.map +1 -0
  466. package/dist/scanners/engine/engine.d.ts +92 -0
  467. package/dist/scanners/engine/engine.d.ts.map +1 -0
  468. package/dist/scanners/engine/engine.js +478 -0
  469. package/dist/scanners/engine/engine.js.map +1 -0
  470. package/dist/scanners/engine/index.d.ts +9 -0
  471. package/dist/scanners/engine/index.d.ts.map +1 -0
  472. package/dist/scanners/engine/index.js +7 -0
  473. package/dist/scanners/engine/index.js.map +1 -0
  474. package/dist/scanners/engine/input-resolver.d.ts +33 -0
  475. package/dist/scanners/engine/input-resolver.d.ts.map +1 -0
  476. package/dist/scanners/engine/input-resolver.js +216 -0
  477. package/dist/scanners/engine/input-resolver.js.map +1 -0
  478. package/dist/scanners/engine/lifecycle.d.ts +21 -0
  479. package/dist/scanners/engine/lifecycle.d.ts.map +1 -0
  480. package/dist/scanners/engine/lifecycle.js +2 -0
  481. package/dist/scanners/engine/lifecycle.js.map +1 -0
  482. package/dist/scanners/engine/result-builder.d.ts +30 -0
  483. package/dist/scanners/engine/result-builder.d.ts.map +1 -0
  484. package/dist/scanners/engine/result-builder.js +129 -0
  485. package/dist/scanners/engine/result-builder.js.map +1 -0
  486. package/dist/scanners/engine/strategy-registry.d.ts +48 -0
  487. package/dist/scanners/engine/strategy-registry.d.ts.map +1 -0
  488. package/dist/scanners/engine/strategy-registry.js +103 -0
  489. package/dist/scanners/engine/strategy-registry.js.map +1 -0
  490. package/dist/scanners/events.d.ts +41 -0
  491. package/dist/scanners/events.d.ts.map +1 -0
  492. package/dist/scanners/events.js +33 -0
  493. package/dist/scanners/events.js.map +1 -0
  494. package/dist/scanners/implementations/emerging-movers.d.ts +215 -0
  495. package/dist/scanners/implementations/emerging-movers.d.ts.map +1 -0
  496. package/dist/scanners/implementations/emerging-movers.js +713 -0
  497. package/dist/scanners/implementations/emerging-movers.js.map +1 -0
  498. package/dist/scanners/implementations/index.d.ts +9 -0
  499. package/dist/scanners/implementations/index.d.ts.map +1 -0
  500. package/dist/scanners/implementations/index.js +9 -0
  501. package/dist/scanners/implementations/index.js.map +1 -0
  502. package/dist/scanners/implementations/indicators.d.ts +40 -0
  503. package/dist/scanners/implementations/indicators.d.ts.map +1 -0
  504. package/dist/scanners/implementations/indicators.js +114 -0
  505. package/dist/scanners/implementations/indicators.js.map +1 -0
  506. package/dist/scanners/implementations/liquidation-watchdog.d.ts +66 -0
  507. package/dist/scanners/implementations/liquidation-watchdog.d.ts.map +1 -0
  508. package/dist/scanners/implementations/liquidation-watchdog.js +293 -0
  509. package/dist/scanners/implementations/liquidation-watchdog.js.map +1 -0
  510. package/dist/scanners/implementations/market-regime.d.ts +52 -0
  511. package/dist/scanners/implementations/market-regime.d.ts.map +1 -0
  512. package/dist/scanners/implementations/market-regime.js +205 -0
  513. package/dist/scanners/implementations/market-regime.js.map +1 -0
  514. package/dist/scanners/implementations/momentum.d.ts +21 -0
  515. package/dist/scanners/implementations/momentum.d.ts.map +1 -0
  516. package/dist/scanners/implementations/momentum.js +132 -0
  517. package/dist/scanners/implementations/momentum.js.map +1 -0
  518. package/dist/scanners/implementations/oi-tracker.d.ts +13 -0
  519. package/dist/scanners/implementations/oi-tracker.d.ts.map +1 -0
  520. package/dist/scanners/implementations/oi-tracker.js +71 -0
  521. package/dist/scanners/implementations/oi-tracker.js.map +1 -0
  522. package/dist/scanners/implementations/opportunity.d.ts +104 -0
  523. package/dist/scanners/implementations/opportunity.d.ts.map +1 -0
  524. package/dist/scanners/implementations/opportunity.js +445 -0
  525. package/dist/scanners/implementations/opportunity.js.map +1 -0
  526. package/dist/scanners/implementations/position-tracker.d.ts +120 -0
  527. package/dist/scanners/implementations/position-tracker.d.ts.map +1 -0
  528. package/dist/scanners/implementations/position-tracker.js +360 -0
  529. package/dist/scanners/implementations/position-tracker.js.map +1 -0
  530. package/dist/scanners/implementations/prescreener.d.ts +20 -0
  531. package/dist/scanners/implementations/prescreener.d.ts.map +1 -0
  532. package/dist/scanners/implementations/prescreener.js +101 -0
  533. package/dist/scanners/implementations/prescreener.js.map +1 -0
  534. package/dist/scanners/implementations/sm-flip.d.ts +43 -0
  535. package/dist/scanners/implementations/sm-flip.d.ts.map +1 -0
  536. package/dist/scanners/implementations/sm-flip.js +205 -0
  537. package/dist/scanners/implementations/sm-flip.js.map +1 -0
  538. package/dist/scanners/index.d.ts +26 -0
  539. package/dist/scanners/index.d.ts.map +1 -0
  540. package/dist/scanners/index.js +19 -0
  541. package/dist/scanners/index.js.map +1 -0
  542. package/dist/scanners/input-descriptors.d.ts +61 -0
  543. package/dist/scanners/input-descriptors.d.ts.map +1 -0
  544. package/dist/scanners/input-descriptors.js +43 -0
  545. package/dist/scanners/input-descriptors.js.map +1 -0
  546. package/dist/scanners/prepare-scanner-inputs.d.ts +12 -0
  547. package/dist/scanners/prepare-scanner-inputs.d.ts.map +1 -0
  548. package/dist/scanners/prepare-scanner-inputs.js +21 -0
  549. package/dist/scanners/prepare-scanner-inputs.js.map +1 -0
  550. package/dist/scanners/protocol/context.d.ts +95 -0
  551. package/dist/scanners/protocol/context.d.ts.map +1 -0
  552. package/dist/scanners/protocol/context.js +2 -0
  553. package/dist/scanners/protocol/context.js.map +1 -0
  554. package/dist/scanners/protocol/hooks.d.ts +18 -0
  555. package/dist/scanners/protocol/hooks.d.ts.map +1 -0
  556. package/dist/scanners/protocol/hooks.js +12 -0
  557. package/dist/scanners/protocol/hooks.js.map +1 -0
  558. package/dist/scanners/protocol/index.d.ts +5 -0
  559. package/dist/scanners/protocol/index.d.ts.map +1 -0
  560. package/dist/scanners/protocol/index.js +2 -0
  561. package/dist/scanners/protocol/index.js.map +1 -0
  562. package/dist/scanners/protocol/scanner.d.ts +47 -0
  563. package/dist/scanners/protocol/scanner.d.ts.map +1 -0
  564. package/dist/scanners/protocol/scanner.js +2 -0
  565. package/dist/scanners/protocol/scanner.js.map +1 -0
  566. package/dist/scanners/providers/adapter.d.ts +23 -0
  567. package/dist/scanners/providers/adapter.d.ts.map +1 -0
  568. package/dist/scanners/providers/adapter.js +227 -0
  569. package/dist/scanners/providers/adapter.js.map +1 -0
  570. package/dist/scanners/providers/cache.d.ts +20 -0
  571. package/dist/scanners/providers/cache.d.ts.map +1 -0
  572. package/dist/scanners/providers/cache.js +61 -0
  573. package/dist/scanners/providers/cache.js.map +1 -0
  574. package/dist/scanners/providers/client.d.ts +53 -0
  575. package/dist/scanners/providers/client.d.ts.map +1 -0
  576. package/dist/scanners/providers/client.js +174 -0
  577. package/dist/scanners/providers/client.js.map +1 -0
  578. package/dist/scanners/providers/factory.d.ts +43 -0
  579. package/dist/scanners/providers/factory.d.ts.map +1 -0
  580. package/dist/scanners/providers/factory.js +297 -0
  581. package/dist/scanners/providers/factory.js.map +1 -0
  582. package/dist/scanners/providers/types.d.ts +61 -0
  583. package/dist/scanners/providers/types.d.ts.map +1 -0
  584. package/dist/scanners/providers/types.js +6 -0
  585. package/dist/scanners/providers/types.js.map +1 -0
  586. package/dist/scanners/runtime-module.d.ts +79 -0
  587. package/dist/scanners/runtime-module.d.ts.map +1 -0
  588. package/dist/scanners/runtime-module.js +362 -0
  589. package/dist/scanners/runtime-module.js.map +1 -0
  590. package/dist/scanners/scanner-definition.d.ts +81 -0
  591. package/dist/scanners/scanner-definition.d.ts.map +1 -0
  592. package/dist/scanners/scanner-definition.js +19 -0
  593. package/dist/scanners/scanner-definition.js.map +1 -0
  594. package/dist/scanners/schema-utils.d.ts +6 -0
  595. package/dist/scanners/schema-utils.d.ts.map +1 -0
  596. package/dist/scanners/schema-utils.js +14 -0
  597. package/dist/scanners/schema-utils.js.map +1 -0
  598. package/dist/scanners/score-utils.d.ts +19 -0
  599. package/dist/scanners/score-utils.d.ts.map +1 -0
  600. package/dist/scanners/score-utils.js +47 -0
  601. package/dist/scanners/score-utils.js.map +1 -0
  602. package/dist/scanners/store/fs-utils.d.ts +12 -0
  603. package/dist/scanners/store/fs-utils.d.ts.map +1 -0
  604. package/dist/scanners/store/fs-utils.js +47 -0
  605. package/dist/scanners/store/fs-utils.js.map +1 -0
  606. package/dist/scanners/store/index.d.ts +5 -0
  607. package/dist/scanners/store/index.d.ts.map +1 -0
  608. package/dist/scanners/store/index.js +5 -0
  609. package/dist/scanners/store/index.js.map +1 -0
  610. package/dist/scanners/store/runtime-store.d.ts +50 -0
  611. package/dist/scanners/store/runtime-store.d.ts.map +1 -0
  612. package/dist/scanners/store/runtime-store.js +91 -0
  613. package/dist/scanners/store/runtime-store.js.map +1 -0
  614. package/dist/scanners/store/shared-artifact-store.d.ts +35 -0
  615. package/dist/scanners/store/shared-artifact-store.d.ts.map +1 -0
  616. package/dist/scanners/store/shared-artifact-store.js +89 -0
  617. package/dist/scanners/store/shared-artifact-store.js.map +1 -0
  618. package/dist/scanners/store/signal-store.d.ts +36 -0
  619. package/dist/scanners/store/signal-store.d.ts.map +1 -0
  620. package/dist/scanners/store/signal-store.js +135 -0
  621. package/dist/scanners/store/signal-store.js.map +1 -0
  622. package/dist/scanners/types.d.ts +115 -0
  623. package/dist/scanners/types.d.ts.map +1 -0
  624. package/dist/scanners/types.js +3 -0
  625. package/dist/scanners/types.js.map +1 -0
  626. package/dist/scripts/run-dsl-standalone-live.d.ts +48 -0
  627. package/dist/scripts/run-dsl-standalone-live.d.ts.map +1 -0
  628. package/dist/scripts/run-dsl-standalone-live.js +531 -0
  629. package/dist/scripts/run-dsl-standalone-live.js.map +1 -0
  630. package/dist/scripts/run-dsl-standalone-mock.d.ts +13 -0
  631. package/dist/scripts/run-dsl-standalone-mock.d.ts.map +1 -0
  632. package/dist/scripts/run-dsl-standalone-mock.js +264 -0
  633. package/dist/scripts/run-dsl-standalone-mock.js.map +1 -0
  634. package/dist/senpi/client.d.ts +99 -0
  635. package/dist/senpi/client.d.ts.map +1 -0
  636. package/dist/senpi/client.js +779 -0
  637. package/dist/senpi/client.js.map +1 -0
  638. package/dist/senpi/constants.d.ts +7 -0
  639. package/dist/senpi/constants.d.ts.map +1 -0
  640. package/dist/senpi/constants.js +7 -0
  641. package/dist/senpi/constants.js.map +1 -0
  642. package/dist/senpi/index.d.ts +3 -0
  643. package/dist/senpi/index.d.ts.map +1 -0
  644. package/dist/senpi/index.js +2 -0
  645. package/dist/senpi/index.js.map +1 -0
  646. package/dist/senpi/types.d.ts +162 -0
  647. package/dist/senpi/types.d.ts.map +1 -0
  648. package/dist/senpi/types.js +3 -0
  649. package/dist/senpi/types.js.map +1 -0
  650. package/dist/state/index.d.ts +3 -0
  651. package/dist/state/index.d.ts.map +1 -0
  652. package/dist/state/index.js +3 -0
  653. package/dist/state/index.js.map +1 -0
  654. package/dist/state/paths.d.ts +18 -0
  655. package/dist/state/paths.d.ts.map +1 -0
  656. package/dist/state/paths.js +51 -0
  657. package/dist/state/paths.js.map +1 -0
  658. package/dist/state/state-manager.d.ts +83 -0
  659. package/dist/state/state-manager.d.ts.map +1 -0
  660. package/dist/state/state-manager.js +380 -0
  661. package/dist/state/state-manager.js.map +1 -0
  662. package/dist/strategy/index.d.ts +2 -0
  663. package/dist/strategy/index.d.ts.map +1 -0
  664. package/dist/strategy/index.js +2 -0
  665. package/dist/strategy/index.js.map +1 -0
  666. package/dist/strategy/strategy-state.d.ts +51 -0
  667. package/dist/strategy/strategy-state.d.ts.map +1 -0
  668. package/dist/strategy/strategy-state.js +218 -0
  669. package/dist/strategy/strategy-state.js.map +1 -0
  670. package/dist/types/action.d.ts +15 -0
  671. package/dist/types/action.d.ts.map +1 -0
  672. package/dist/types/action.js +2 -0
  673. package/dist/types/action.js.map +1 -0
  674. package/dist/types/dsl/index.d.ts +286 -0
  675. package/dist/types/dsl/index.d.ts.map +1 -0
  676. package/dist/types/dsl/index.js +5 -0
  677. package/dist/types/dsl/index.js.map +1 -0
  678. package/dist/types/event-bus.d.ts +13 -0
  679. package/dist/types/event-bus.d.ts.map +1 -0
  680. package/dist/types/event-bus.js +6 -0
  681. package/dist/types/event-bus.js.map +1 -0
  682. package/dist/types/hooks.d.ts +30 -0
  683. package/dist/types/hooks.d.ts.map +1 -0
  684. package/dist/types/hooks.js +18 -0
  685. package/dist/types/hooks.js.map +1 -0
  686. package/dist/types/index.d.ts +6 -0
  687. package/dist/types/index.d.ts.map +1 -0
  688. package/dist/types/index.js +6 -0
  689. package/dist/types/index.js.map +1 -0
  690. package/dist/types/notification.d.ts +4 -0
  691. package/dist/types/notification.d.ts.map +1 -0
  692. package/dist/types/notification.js +3 -0
  693. package/dist/types/notification.js.map +1 -0
  694. package/dist/types/runtime.d.ts +18 -0
  695. package/dist/types/runtime.d.ts.map +1 -0
  696. package/dist/types/runtime.js +2 -0
  697. package/dist/types/runtime.js.map +1 -0
  698. package/dist/types/scanner.d.ts +59 -0
  699. package/dist/types/scanner.d.ts.map +1 -0
  700. package/dist/types/scanner.js +13 -0
  701. package/dist/types/scanner.js.map +1 -0
  702. package/dist/types/strategy.d.ts +106 -0
  703. package/dist/types/strategy.d.ts.map +1 -0
  704. package/dist/types/strategy.js +2 -0
  705. package/dist/types/strategy.js.map +1 -0
  706. package/dist/utils/clearing-house-staleness.d.ts +47 -0
  707. package/dist/utils/clearing-house-staleness.d.ts.map +1 -0
  708. package/dist/utils/clearing-house-staleness.js +73 -0
  709. package/dist/utils/clearing-house-staleness.js.map +1 -0
  710. package/dist/utils/logger/dsl.d.ts +8 -0
  711. package/dist/utils/logger/dsl.d.ts.map +1 -0
  712. package/dist/utils/logger/dsl.js +7 -0
  713. package/dist/utils/logger/dsl.js.map +1 -0
  714. package/dist/utils/logger.d.ts +23 -0
  715. package/dist/utils/logger.d.ts.map +1 -0
  716. package/dist/utils/logger.js +97 -0
  717. package/dist/utils/logger.js.map +1 -0
  718. package/dist/utils/perp-coin.d.ts +19 -0
  719. package/dist/utils/perp-coin.d.ts.map +1 -0
  720. package/dist/utils/perp-coin.js +40 -0
  721. package/dist/utils/perp-coin.js.map +1 -0
  722. package/dist/utils/response.d.ts +14 -0
  723. package/dist/utils/response.d.ts.map +1 -0
  724. package/dist/utils/response.js +44 -0
  725. package/dist/utils/response.js.map +1 -0
  726. package/dist/utils/retry.d.ts +19 -0
  727. package/dist/utils/retry.d.ts.map +1 -0
  728. package/dist/utils/retry.js +32 -0
  729. package/dist/utils/retry.js.map +1 -0
  730. package/dist/version.d.ts +6 -0
  731. package/dist/version.d.ts.map +1 -0
  732. package/dist/version.js +21 -0
  733. package/dist/version.js.map +1 -0
  734. package/examples/.env.example +25 -0
  735. package/examples/README.md +89 -0
  736. package/examples/scanners-consumer-quickstart.mjs +134 -0
  737. package/examples/scanners-emerging-movers-v4.mjs +287 -0
  738. package/examples/scanners-liquidation-watchdog.mjs +341 -0
  739. package/examples/scanners-live-mcp.mjs +208 -0
  740. package/examples/scanners-multi-strategy.mjs +165 -0
  741. package/examples/scanners-position-tracker-e2e.mjs +225 -0
  742. package/examples/scanners-scheduled-events.mjs +96 -0
  743. package/examples/scanners-senpi-provider-client.mjs +182 -0
  744. package/examples/scanners-single-strategy.mjs +198 -0
  745. package/examples/strategies/README.md +45 -0
  746. package/examples/strategies/dsl-showcase.yaml +63 -0
  747. package/examples/strategies/dsl.yaml +47 -0
  748. package/examples/strategies/fox-minimal-loosened.yaml +225 -0
  749. package/examples/strategies/fox-minimal.yaml +220 -0
  750. package/examples/strategies/minimal.yaml +44 -0
  751. package/examples/strategies/viper.yaml +59 -0
  752. package/examples/strategies/wolf.yaml +64 -0
  753. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +115 -0
  754. package/openclaw.plugin.json +67 -0
  755. package/package.json +53 -0
@@ -0,0 +1,362 @@
1
+ import { EventEmitter } from "node:events";
2
+ import { createLogger } from "../utils/logger.js";
3
+ import { ScannerEngine, } from "./engine/engine.js";
4
+ import { buildScannerComposition } from "../runtime/scanner-composition.js";
5
+ const logger = createLogger("[senpi-core][scanner-module]");
6
+ import { emitTerminalScannerRunEvent, } from "./events.js";
7
+ import { RuntimeStore } from "./store/runtime-store.js";
8
+ import { SharedArtifactStore } from "./store/shared-artifact-store.js";
9
+ import { SignalStore } from "./store/signal-store.js";
10
+ import { prepareScannerInputs, } from "./prepare-scanner-inputs.js";
11
+ /**
12
+ * Creates a standalone scanner runtime module with strategy-scoped scanner instances.
13
+ * Registered scanners are supplied as factories so the module never reuses mutable scanner objects.
14
+ */
15
+ export function createScannerRuntimeModule(options) {
16
+ return new DefaultScannerRuntimeModule(options);
17
+ }
18
+ class DefaultScannerRuntimeModule {
19
+ signalStore;
20
+ runtimeStore;
21
+ engine;
22
+ events = new EventEmitter();
23
+ now;
24
+ telemetry = new Map();
25
+ constructor(options) {
26
+ const now = options.now ?? Date.now;
27
+ this.now = now;
28
+ this.signalStore = new SignalStore(options.stateDir);
29
+ this.runtimeStore = new RuntimeStore(options.stateDir, now);
30
+ this.engine = new ScannerEngine({
31
+ now,
32
+ logger: options.logger ?? logger,
33
+ providers: options.providers,
34
+ stores: {
35
+ runtimeStore: this.runtimeStore,
36
+ signalStore: this.signalStore,
37
+ sharedArtifactStore: new SharedArtifactStore(options.stateDir, now),
38
+ },
39
+ lifecycle: {
40
+ onRunStart: (event) => {
41
+ this.events.emit("scanner:run:start", event);
42
+ },
43
+ onRunResult: (result) => {
44
+ emitTerminalScannerRunEvent((eventName, event) => {
45
+ this.events.emit(eventName, event);
46
+ }, result);
47
+ },
48
+ },
49
+ }, options.composition);
50
+ registerForStrategy(options.strategy, options.scanners, this.engine);
51
+ this.wireTelemetryListeners();
52
+ }
53
+ async start() {
54
+ logger.info("scanner module start() entered");
55
+ await this.engine.start();
56
+ logger.info("scanner module start() complete");
57
+ }
58
+ async stop() {
59
+ await this.engine.stop();
60
+ }
61
+ async runOnce(address, scannerId) {
62
+ return this.engine.runOnce(address, scannerId);
63
+ }
64
+ async runChain(address, scannerId) {
65
+ return this.engine.runChain(address, scannerId);
66
+ }
67
+ async listScanners(address) {
68
+ return this.engine.list(address);
69
+ }
70
+ async enableScanner(address, scannerId) {
71
+ this.engine.enable(address, scannerId);
72
+ }
73
+ async disableScanner(address, scannerId) {
74
+ this.engine.disable(address, scannerId);
75
+ }
76
+ async getScannerConfig(address, scannerId) {
77
+ return this.engine.getConfig(address, scannerId);
78
+ }
79
+ async setScannerConfig(address, scannerId, config) {
80
+ await this.engine.setConfig(address, scannerId, config);
81
+ }
82
+ async getScannerContext(address, scannerId) {
83
+ return this.engine.getScannerContext(address, scannerId);
84
+ }
85
+ async querySignals(filter) {
86
+ return this.signalStore.readSignals(filter);
87
+ }
88
+ async getHealthStatus() {
89
+ const registrations = this.engine.describeRegistrations();
90
+ const scannerStates = this.buildScannerHealthRows(registrations);
91
+ const enabled = registrations.filter((registration) => registration.enabled);
92
+ const counts = countScannerHealthRows(scannerStates);
93
+ const componentHealth = deriveWorstHealth(scannerStates
94
+ .filter((scanner) => scanner.enabled)
95
+ .map((scanner) => scanner.health), registrations.length);
96
+ return {
97
+ component: "scanners",
98
+ health: componentHealth,
99
+ updatedAt: new Date(this.now()).toISOString(),
100
+ summary: buildScannerSummary(componentHealth, registrations.length, enabled.length, counts.degraded, counts.unhealthy),
101
+ totals: {
102
+ registered: registrations.length,
103
+ enabled: enabled.length,
104
+ inFlight: counts.inFlight,
105
+ degraded: counts.degraded,
106
+ unhealthy: counts.unhealthy,
107
+ },
108
+ scanners: scannerStates.map(({ enabled: _enabled, inFlight: _inFlight, ...scanner }) => scanner),
109
+ };
110
+ }
111
+ async getSystemState() {
112
+ const registrations = this.engine.describeRegistrations();
113
+ const scanners = await Promise.all(registrations.map(async (registration) => {
114
+ const telemetry = this.ensureTelemetry(registration.address, registration.scannerId);
115
+ const runtime = await this.runtimeStore.read(registration.address, registration.scannerId);
116
+ const health = this.deriveScannerHealth(registration, telemetry);
117
+ return {
118
+ address: registration.address,
119
+ scannerId: registration.scannerId,
120
+ health,
121
+ enabled: registration.enabled,
122
+ initialized: registration.initialized,
123
+ intervalSeconds: registration.intervalSeconds,
124
+ inFlight: registration.inFlight || telemetry.inFlight,
125
+ lastRunStartedAt: telemetry.lastRunStartedAt,
126
+ lastRunFinishedAt: telemetry.lastRunFinishedAt,
127
+ lastRunStatus: telemetry.lastRunStatus,
128
+ lastRunReason: telemetry.lastRunReason,
129
+ lastError: telemetry.lastError,
130
+ lastErrorAt: telemetry.lastErrorAt,
131
+ nextRunAt: registration.nextRunAt,
132
+ runCount: telemetry.runCount,
133
+ errorCount: telemetry.errorCount,
134
+ consecutiveErrorCount: telemetry.consecutiveErrorCount,
135
+ configVersion: runtime?.configVersion ?? null,
136
+ runtimeUpdatedAt: runtime?.updatedAt ?? null,
137
+ config: runtime?.config ?? null,
138
+ state: runtime?.state ?? null,
139
+ };
140
+ }));
141
+ return {
142
+ component: "scanners",
143
+ health: deriveWorstHealth(scanners.map((scanner) => scanner.health), registrations.length),
144
+ updatedAt: new Date(this.now()).toISOString(),
145
+ state: {
146
+ totalRegistered: registrations.length,
147
+ totalEnabled: registrations.filter((registration) => registration.enabled).length,
148
+ scanners,
149
+ },
150
+ };
151
+ }
152
+ on(eventName, listener) {
153
+ this.events.on(eventName, listener);
154
+ }
155
+ off(eventName, listener) {
156
+ this.events.off(eventName, listener);
157
+ }
158
+ ensureTelemetry(address, scannerId) {
159
+ const key = telemetryKey(address, scannerId);
160
+ let telemetry = this.telemetry.get(key);
161
+ if (!telemetry) {
162
+ telemetry = {
163
+ inFlight: false,
164
+ lastRunStartedAt: null,
165
+ lastRunFinishedAt: null,
166
+ lastRunStatus: null,
167
+ lastRunReason: null,
168
+ lastError: null,
169
+ lastErrorAt: null,
170
+ runCount: 0,
171
+ errorCount: 0,
172
+ consecutiveErrorCount: 0,
173
+ };
174
+ this.telemetry.set(key, telemetry);
175
+ }
176
+ return telemetry;
177
+ }
178
+ wireTelemetryListeners() {
179
+ this.events.on("scanner:run:start", (event) => {
180
+ this.recordRunStart(event);
181
+ });
182
+ this.events.on("scanner:run:complete", (event) => {
183
+ this.recordRunComplete(event);
184
+ });
185
+ this.events.on("scanner:run:skip", (event) => {
186
+ this.recordRunSkip(event);
187
+ });
188
+ this.events.on("scanner:run:error", (event) => {
189
+ this.recordRunError(event);
190
+ });
191
+ }
192
+ recordRunStart(event) {
193
+ const telemetry = this.ensureTelemetry(event.address, event.scannerId);
194
+ telemetry.inFlight = true;
195
+ telemetry.lastRunStartedAt = event.timestamp;
196
+ }
197
+ recordRunComplete(event) {
198
+ const telemetry = this.ensureTelemetry(event.address, event.scannerId);
199
+ telemetry.inFlight = false;
200
+ telemetry.lastRunFinishedAt = this.now();
201
+ telemetry.lastRunStatus = event.result.status;
202
+ telemetry.lastRunReason = event.result.reason ?? null;
203
+ telemetry.runCount += 1;
204
+ telemetry.consecutiveErrorCount = 0;
205
+ }
206
+ recordRunSkip(event) {
207
+ const telemetry = this.ensureTelemetry(event.address, event.scannerId);
208
+ telemetry.inFlight = false;
209
+ // HALTED = overlap guard: no scan was attempted, so preserve existing error
210
+ // state. Only genuine completions (ok/heartbeat) should reset error counters.
211
+ if (event.status === "halted") {
212
+ return;
213
+ }
214
+ telemetry.lastRunFinishedAt = this.now();
215
+ telemetry.lastRunStatus = event.status;
216
+ telemetry.lastRunReason = event.reason;
217
+ telemetry.runCount += 1;
218
+ telemetry.consecutiveErrorCount = 0;
219
+ }
220
+ recordRunError(event) {
221
+ const telemetry = this.ensureTelemetry(event.address, event.scannerId);
222
+ telemetry.inFlight = false;
223
+ telemetry.lastRunFinishedAt = this.now();
224
+ telemetry.lastRunStatus = "error";
225
+ telemetry.lastRunReason = String(event.error);
226
+ telemetry.lastError = String(event.error);
227
+ telemetry.lastErrorAt = event.timestamp;
228
+ telemetry.runCount += 1;
229
+ telemetry.errorCount += 1;
230
+ telemetry.consecutiveErrorCount += 1;
231
+ }
232
+ buildScannerHealthRows(registrations) {
233
+ return registrations.map((registration) => {
234
+ const telemetry = this.ensureTelemetry(registration.address, registration.scannerId);
235
+ return {
236
+ address: registration.address,
237
+ scannerId: registration.scannerId,
238
+ enabled: registration.enabled,
239
+ inFlight: registration.inFlight || telemetry.inFlight,
240
+ health: this.deriveScannerHealth(registration, telemetry),
241
+ };
242
+ });
243
+ }
244
+ deriveScannerHealth(registration, telemetry) {
245
+ const intervalMs = Math.max(registration.intervalSeconds, 1) * 1000;
246
+ if (!registration.enabled) {
247
+ return "disabled";
248
+ }
249
+ if (telemetry.inFlight) {
250
+ if (telemetry.lastRunStartedAt == null) {
251
+ return "unknown";
252
+ }
253
+ const runningMs = this.now() - telemetry.lastRunStartedAt;
254
+ if (runningMs > intervalMs * 4) {
255
+ return "unhealthy";
256
+ }
257
+ if (runningMs > intervalMs * 2) {
258
+ return "degraded";
259
+ }
260
+ return "healthy";
261
+ }
262
+ const now = this.now();
263
+ const baseline = registration.nextRunAt ??
264
+ (telemetry.lastRunStartedAt != null
265
+ ? telemetry.lastRunStartedAt + intervalMs
266
+ : telemetry.lastRunFinishedAt);
267
+ if (baseline == null) {
268
+ return "unknown";
269
+ }
270
+ const overdueMs = now - baseline;
271
+ if (telemetry.lastRunStatus === "error" && telemetry.consecutiveErrorCount >= 2) {
272
+ return "unhealthy";
273
+ }
274
+ if (overdueMs > intervalMs * 4) {
275
+ return "unhealthy";
276
+ }
277
+ if (telemetry.lastRunStatus === "error" || overdueMs > intervalMs * 2) {
278
+ return "degraded";
279
+ }
280
+ return "healthy";
281
+ }
282
+ }
283
+ function countScannerHealthRows(rows) {
284
+ let inFlight = 0;
285
+ let degraded = 0;
286
+ let unhealthy = 0;
287
+ for (const row of rows) {
288
+ if (row.inFlight) {
289
+ inFlight += 1;
290
+ }
291
+ if (row.health === "degraded") {
292
+ degraded += 1;
293
+ }
294
+ if (row.health === "unhealthy") {
295
+ unhealthy += 1;
296
+ }
297
+ }
298
+ return { inFlight, degraded, unhealthy };
299
+ }
300
+ /**
301
+ * Builds a scanner composition from scanner factories.
302
+ *
303
+ * Convenience wrapper for the programmatic API: instantiates each factory once
304
+ * to extract definitions, validates the dependency graph, and returns both the
305
+ * composition and deduplicated factories ready to pass to `createScannerRuntimeModule`.
306
+ *
307
+ * Scanner definitions that consume shared artifacts from other scanners must
308
+ * declare `dependsOn` explicitly — no auto-inference is performed.
309
+ */
310
+ export function buildCompositionFromScanners(scanners) {
311
+ const prepared = prepareScannerInputs(scanners);
312
+ const composition = buildScannerComposition({
313
+ name: "scanner-runtime-module",
314
+ strategy: { wallet: "0x0000000000000000000000000000000000000000" },
315
+ actions: [],
316
+ }, prepared.map((s) => s.definition));
317
+ return {
318
+ composition,
319
+ scanners: prepared.map((s) => s.factory),
320
+ };
321
+ }
322
+ /** Registers every scanner factory for the strategy so each gets a fresh instance. */
323
+ function registerForStrategy(strategy, scanners, engine) {
324
+ for (const scannerFactory of scanners) {
325
+ engine.register(strategy, scannerFactory());
326
+ }
327
+ }
328
+ function telemetryKey(address, scannerId) {
329
+ return `${address}::${scannerId}`;
330
+ }
331
+ function deriveWorstHealth(healths, totalRegistrations) {
332
+ if (totalRegistrations === 0) {
333
+ return "disabled";
334
+ }
335
+ const active = healths.filter((health) => health !== "disabled");
336
+ if (active.length === 0) {
337
+ return "disabled";
338
+ }
339
+ if (active.includes("unhealthy")) {
340
+ return "unhealthy";
341
+ }
342
+ if (active.includes("degraded")) {
343
+ return "degraded";
344
+ }
345
+ if (active.includes("unknown")) {
346
+ return "unknown";
347
+ }
348
+ return "healthy";
349
+ }
350
+ function buildScannerSummary(health, total, enabled, degraded, unhealthy) {
351
+ if (total === 0) {
352
+ return "No scanners registered.";
353
+ }
354
+ if (enabled === 0) {
355
+ return "All scanners are disabled.";
356
+ }
357
+ if (health === "healthy") {
358
+ return `${enabled}/${total} scanners enabled and healthy.`;
359
+ }
360
+ return `${enabled}/${total} scanners enabled (${degraded} degraded, ${unhealthy} unhealthy).`;
361
+ }
362
+ //# sourceMappingURL=runtime-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-module.js","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { TSchema } from "@sinclair/typebox";
2
+ import type { SharedArtifactContract } from "./artifacts.js";
3
+ import type { ScannerInputDescriptor } from "./input-descriptors.js";
4
+ import type { ScannerId } from "./types.js";
5
+ /** Controls how much signal history is retained on disk. */
6
+ export declare enum RetentionPolicy {
7
+ /** Keep only the latest run and remove history. */
8
+ LAST_ONLY = "last_only",
9
+ /** Keep latest plus a bounded tail of previous runs. */
10
+ ROLLING_WINDOW = "rolling_window"
11
+ }
12
+ /** Controls when a run result should be persisted. */
13
+ export declare enum PersistencePolicy {
14
+ /** Persist every run result. */
15
+ ALWAYS = "always",
16
+ /** Persist only when at least one signal is actionable. */
17
+ ACTIONABLE_ONLY = "actionable_only",
18
+ /** Never persist; return result in-memory only. */
19
+ NEVER = "never"
20
+ }
21
+ export interface ScannerOutputs {
22
+ /** Whether the scanner emits action-oriented signals. */
23
+ signals: boolean;
24
+ /** Whether the scanner publishes one retained context output for others to consume. */
25
+ context: boolean;
26
+ }
27
+ export type ScannerDependencyPolicyMode = "fail" | "skip" | "degrade";
28
+ export interface ScannerContextDependency {
29
+ /** Source scanner id whose retained context output feeds this scanner. */
30
+ scanner: ScannerId;
31
+ /** Whether the dependency is required for a successful run. */
32
+ required?: boolean;
33
+ /** Maximum acceptable age of the source context in milliseconds. */
34
+ maxAgeMs?: number;
35
+ /** Behavior when the source context is missing. */
36
+ onMissing?: ScannerDependencyPolicyMode;
37
+ /** Behavior when the source context is stale. */
38
+ onStale?: ScannerDependencyPolicyMode;
39
+ }
40
+ /**
41
+ * Immutable scanner definition shared across all strategy runtimes.
42
+ * Runtime state/config for a scanner instance is kept separately in RuntimeStore.
43
+ */
44
+ export interface ScannerDefinition<Cfg = unknown, St = unknown> {
45
+ /** Scanner identifier; unique per strategy runtime instance. */
46
+ id: ScannerId;
47
+ /** Domain-level signal type emitted by this scanner. */
48
+ signalType: string;
49
+ /** Declares whether this scanner emits signals, retained context, or both. */
50
+ outputs: ScannerOutputs;
51
+ /** Human-readable purpose/behavior summary. */
52
+ description: string;
53
+ /** Default schedule interval in seconds. */
54
+ intervalSeconds: number;
55
+ /** Signal retention behavior for persisted runs. */
56
+ retention: RetentionPolicy;
57
+ /** Maximum number of history rows when using ROLLING_WINDOW. */
58
+ retentionMaxRuns?: number;
59
+ /** Persistence decision policy used by engine when hooks do not override. */
60
+ persistence: PersistencePolicy;
61
+ /** Declarative provider-backed and artifact-backed input requirements for each scan run. */
62
+ inputs: ScannerInputDescriptor[];
63
+ /** YAML-level scanner dependency wiring resolved at runtime registration time. */
64
+ dependsOn?: ScannerContextDependency[];
65
+ /**
66
+ * Optional metadata describing which shared artifacts the scanner produces.
67
+ * These artifacts are shared market intelligence between scanners, not trading signals.
68
+ */
69
+ artifacts?: {
70
+ produces?: SharedArtifactContract[];
71
+ };
72
+ /** Config validation schema enforced by engine before initialization/runs. */
73
+ configSchema: TSchema;
74
+ /** Default config used when runtime config does not exist yet. */
75
+ defaultConfig: Cfg;
76
+ /** Optional state validation schema enforced by the engine before initialize()/scan(). */
77
+ stateSchema?: TSchema;
78
+ /** Default state used when runtime state is missing or must be repaired. */
79
+ defaultState?: St;
80
+ }
81
+ //# sourceMappingURL=scanner-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-definition.d.ts","sourceRoot":"","sources":["../../src/scanners/scanner-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,4DAA4D;AAC5D,oBAAY,eAAe;IACzB,mDAAmD;IACnD,SAAS,cAAc;IACvB,wDAAwD;IACxD,cAAc,mBAAmB;CAClC;AAED,sDAAsD;AACtD,oBAAY,iBAAiB;IAC3B,gCAAgC;IAChC,MAAM,WAAW;IACjB,2DAA2D;IAC3D,eAAe,oBAAoB;IACnC,mDAAmD;IACnD,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,OAAO,EAAE,SAAS,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,iDAAiD;IACjD,OAAO,CAAC,EAAE,2BAA2B,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO;IAC5D,gEAAgE;IAChE,EAAE,EAAE,SAAS,CAAC;IACd,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,EAAE,cAAc,CAAC;IACxB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IAExB,oDAAoD;IACpD,SAAS,EAAE,eAAe,CAAC;IAC3B,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6EAA6E;IAC7E,WAAW,EAAE,iBAAiB,CAAC;IAE/B,4FAA4F;IAC5F,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,kFAAkF;IAClF,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAEvC;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,sBAAsB,EAAE,CAAC;KACrC,CAAC;IAEF,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,aAAa,EAAE,GAAG,CAAC;IACnB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,EAAE,CAAC;CACnB"}
@@ -0,0 +1,19 @@
1
+ /** Controls how much signal history is retained on disk. */
2
+ export var RetentionPolicy;
3
+ (function (RetentionPolicy) {
4
+ /** Keep only the latest run and remove history. */
5
+ RetentionPolicy["LAST_ONLY"] = "last_only";
6
+ /** Keep latest plus a bounded tail of previous runs. */
7
+ RetentionPolicy["ROLLING_WINDOW"] = "rolling_window";
8
+ })(RetentionPolicy || (RetentionPolicy = {}));
9
+ /** Controls when a run result should be persisted. */
10
+ export var PersistencePolicy;
11
+ (function (PersistencePolicy) {
12
+ /** Persist every run result. */
13
+ PersistencePolicy["ALWAYS"] = "always";
14
+ /** Persist only when at least one signal is actionable. */
15
+ PersistencePolicy["ACTIONABLE_ONLY"] = "actionable_only";
16
+ /** Never persist; return result in-memory only. */
17
+ PersistencePolicy["NEVER"] = "never";
18
+ })(PersistencePolicy || (PersistencePolicy = {}));
19
+ //# sourceMappingURL=scanner-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-definition.js","sourceRoot":"","sources":["../../src/scanners/scanner-definition.ts"],"names":[],"mappings":"AAKA,4DAA4D;AAC5D,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mDAAmD;IACnD,0CAAuB,CAAA;IACvB,wDAAwD;IACxD,oDAAiC,CAAA;AACnC,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,sDAAsD;AACtD,MAAM,CAAN,IAAY,iBAOX;AAPD,WAAY,iBAAiB;IAC3B,gCAAgC;IAChC,sCAAiB,CAAA;IACjB,2DAA2D;IAC3D,wDAAmC,CAAA;IACnC,mDAAmD;IACnD,oCAAe,CAAA;AACjB,CAAC,EAPW,iBAAiB,KAAjB,iBAAiB,QAO5B"}
@@ -0,0 +1,6 @@
1
+ import type { TSchema } from "@sinclair/typebox";
2
+ /** Returns true when a value conforms to the provided TypeBox schema. */
3
+ export declare function isSchemaValueValid(schema: TSchema | undefined, value: unknown): boolean;
4
+ /** Formats the first TypeBox validation error into a compact human-readable string. */
5
+ export declare function describeSchemaValidationError(schema: TSchema, value: unknown): string;
6
+ //# sourceMappingURL=schema-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../src/scanners/schema-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,KAAK,EAAE,OAAO,GACb,OAAO,CAKT;AAED,uFAAuF;AACvF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb,MAAM,CAGR"}
@@ -0,0 +1,14 @@
1
+ import { Value } from "@sinclair/typebox/value";
2
+ /** Returns true when a value conforms to the provided TypeBox schema. */
3
+ export function isSchemaValueValid(schema, value) {
4
+ if (!schema) {
5
+ return true;
6
+ }
7
+ return Value.Check(schema, value);
8
+ }
9
+ /** Formats the first TypeBox validation error into a compact human-readable string. */
10
+ export function describeSchemaValidationError(schema, value) {
11
+ const firstError = Value.Errors(schema, value).First();
12
+ return firstError ? `${firstError.path} ${firstError.message}` : "Unknown reason";
13
+ }
14
+ //# sourceMappingURL=schema-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../src/scanners/schema-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAChC,MAA2B,EAC3B,KAAc;IAEd,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAC3C,MAAe,EACf,KAAc;IAEd,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACpF,CAAC"}
@@ -0,0 +1,19 @@
1
+ /** Logger surface required by score guard utilities. */
2
+ export interface ScoreGuardLogger {
3
+ warn: (message: string, meta?: Record<string, unknown>) => void;
4
+ }
5
+ /** Clamps non-finite/out-of-range numbers into the [0, 1] interval. */
6
+ export declare function clamp01(value: number): number;
7
+ /**
8
+ * Coerces any non-finite/out-of-range score into the valid [0, 1] interval.
9
+ * Alias for clamp01 — kept for backward compatibility and semantic clarity.
10
+ */
11
+ export declare const clampScore: typeof clamp01;
12
+ /** Normalizes one value into [0, 1] based on the provided range. */
13
+ export declare function normalizeRange(value: number, min: number, max: number): number;
14
+ /**
15
+ * Enforces score range and emits a warning when a clamp occurs.
16
+ * Use this in engine output normalization before persistence.
17
+ */
18
+ export declare function enforceScoreRange(score: number, logger?: ScoreGuardLogger, context?: Record<string, unknown>): number;
19
+ //# sourceMappingURL=score-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-utils.d.ts","sourceRoot":"","sources":["../../src/scanners/score-utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACjE;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7C;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,gBAAU,CAAC;AAElC,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAW9E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,CAUR"}
@@ -0,0 +1,47 @@
1
+ /** Clamps non-finite/out-of-range numbers into the [0, 1] interval. */
2
+ export function clamp01(value) {
3
+ if (!Number.isFinite(value)) {
4
+ return 0;
5
+ }
6
+ if (value < 0) {
7
+ return 0;
8
+ }
9
+ if (value > 1) {
10
+ return 1;
11
+ }
12
+ return value;
13
+ }
14
+ /**
15
+ * Coerces any non-finite/out-of-range score into the valid [0, 1] interval.
16
+ * Alias for clamp01 — kept for backward compatibility and semantic clarity.
17
+ */
18
+ export const clampScore = clamp01;
19
+ /** Normalizes one value into [0, 1] based on the provided range. */
20
+ export function normalizeRange(value, min, max) {
21
+ if (!Number.isFinite(value) || max <= min) {
22
+ return 0;
23
+ }
24
+ if (value <= min) {
25
+ return 0;
26
+ }
27
+ if (value >= max) {
28
+ return 1;
29
+ }
30
+ return (value - min) / (max - min);
31
+ }
32
+ /**
33
+ * Enforces score range and emits a warning when a clamp occurs.
34
+ * Use this in engine output normalization before persistence.
35
+ */
36
+ export function enforceScoreRange(score, logger, context = {}) {
37
+ const clamped = clamp01(score);
38
+ if (clamped !== score && logger) {
39
+ logger.warn("Signal score out of range; clamped to [0, 1].", {
40
+ originalScore: score,
41
+ clampedScore: clamped,
42
+ ...context,
43
+ });
44
+ }
45
+ return clamped;
46
+ }
47
+ //# sourceMappingURL=score-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-utils.js","sourceRoot":"","sources":["../../src/scanners/score-utils.ts"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,MAAyB,EACzB,UAAmC,EAAE;IAErC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE;YAC3D,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,OAAO;YACrB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Returns true when a filesystem path exists and is accessible. */
2
+ export declare function pathExists(path: string): Promise<boolean>;
3
+ /** Serializes JSON with stable formatting and writes atomically. */
4
+ export declare function writeJsonAtomic(path: string, data: unknown): Promise<void>;
5
+ /**
6
+ * Writes text atomically by writing to a temporary file then renaming in-place.
7
+ * Ensures readers never observe partial content.
8
+ */
9
+ export declare function writeTextAtomic(path: string, content: string): Promise<void>;
10
+ /** Reads and parses JSON; returns null when file does not exist or is invalid. */
11
+ export declare function readJsonFile<T>(path: string): Promise<T | null>;
12
+ //# sourceMappingURL=fs-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../../../src/scanners/store/fs-utils.ts"],"names":[],"mappings":"AAGA,oEAAoE;AACpE,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,oEAAoE;AACpE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAclF;AAED,kFAAkF;AAClF,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAOrE"}