@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,168 @@
1
+ import { isConsumedArtifactBinding } from "../scanners/input-descriptors.js";
2
+ export function buildScannerComposition(config, definitions, logger) {
3
+ const nodes = new Map();
4
+ const producedContextByScanner = new Map();
5
+ for (const definition of definitions) {
6
+ const producedContracts = definition.artifacts?.produces ?? [];
7
+ const outputs = resolveScannerOutputs(definition, logger);
8
+ validateScannerOutputs(definition.id, outputs, producedContracts);
9
+ const producedContext = producedContracts[0] ?? null;
10
+ const node = {
11
+ id: definition.id,
12
+ outputs,
13
+ dependsOn: definition.dependsOn ?? [],
14
+ producedContext,
15
+ };
16
+ nodes.set(definition.id, node);
17
+ if (producedContext) {
18
+ producedContextByScanner.set(definition.id, producedContext);
19
+ }
20
+ }
21
+ const dependencyGraph = new Map();
22
+ const dependencySources = new Set();
23
+ for (const definition of definitions) {
24
+ const dependencies = definition.dependsOn ?? [];
25
+ validateScannerDependencies(definition, dependencies, nodes, producedContextByScanner);
26
+ dependencyGraph.set(definition.id, dependencies.map((dependency) => dependency.scanner));
27
+ for (const dependency of dependencies) {
28
+ dependencySources.add(dependency.scanner);
29
+ }
30
+ validateRequiredBindings(definition, dependencies, producedContextByScanner);
31
+ }
32
+ validateActionReferences(config, nodes);
33
+ const topologicalOrder = topologicallySort(nodes, dependencyGraph);
34
+ return {
35
+ scanners: nodes,
36
+ dependencyGraph,
37
+ dependencySources,
38
+ topologicalOrder,
39
+ producedContextByScanner,
40
+ getRunChain(scannerId) {
41
+ if (!nodes.has(scannerId)) {
42
+ throw new Error(`Scanner '${scannerId}' is not part of the configured composition.`);
43
+ }
44
+ const visited = new Set();
45
+ const order = [];
46
+ const visit = (id) => {
47
+ if (visited.has(id)) {
48
+ return;
49
+ }
50
+ visited.add(id);
51
+ for (const dependency of dependencyGraph.get(id) ?? []) {
52
+ visit(dependency);
53
+ }
54
+ order.push(id);
55
+ };
56
+ visit(scannerId);
57
+ return order;
58
+ },
59
+ };
60
+ }
61
+ function resolveScannerOutputs(definition, logger) {
62
+ const inferredContext = (definition.artifacts?.produces?.length ?? 0) > 0;
63
+ if (!definition.outputs) {
64
+ logger?.warn?.("Scanner is relying on inferred outputs metadata. Declare definition.outputs explicitly.", {
65
+ scannerId: definition.id,
66
+ inferredSignals: true,
67
+ inferredContext,
68
+ });
69
+ }
70
+ return {
71
+ signals: definition.outputs?.signals ?? true,
72
+ context: definition.outputs?.context ?? inferredContext,
73
+ };
74
+ }
75
+ function validateScannerOutputs(scannerId, outputs, producedContracts) {
76
+ if (outputs.context) {
77
+ if (producedContracts.length !== 1) {
78
+ throw new Error(`Scanner '${scannerId}' declares outputs.context=true but must produce exactly one context contract in v1.`);
79
+ }
80
+ }
81
+ else if (producedContracts.length > 0) {
82
+ throw new Error(`Scanner '${scannerId}' declares outputs.context=false but still produces shared context contracts.`);
83
+ }
84
+ }
85
+ function validateScannerDependencies(definition, dependencies, nodes, producedContextByScanner) {
86
+ for (const dependency of dependencies) {
87
+ const source = nodes.get(dependency.scanner);
88
+ if (!source) {
89
+ throw new Error(`Scanner '${definition.id}' depends on unknown scanner '${dependency.scanner}'.`);
90
+ }
91
+ if (!source.outputs.context) {
92
+ throw new Error(`Scanner '${definition.id}' depends on '${dependency.scanner}', but that scanner does not produce context.`);
93
+ }
94
+ if (!producedContextByScanner.has(dependency.scanner)) {
95
+ throw new Error(`Scanner '${definition.id}' depends on '${dependency.scanner}', but its context contract is not declared.`);
96
+ }
97
+ }
98
+ }
99
+ function validateRequiredBindings(definition, dependencies, producedContextByScanner) {
100
+ const requiredBindings = definition.inputs.filter(isConsumedArtifactBinding).filter((binding) => binding.required);
101
+ for (const binding of requiredBindings) {
102
+ const isWired = dependencies.some((dependency) => {
103
+ return producedContextByScanner.get(dependency.scanner)?.key === binding.contract.key;
104
+ });
105
+ if (!isWired) {
106
+ throw new Error(`Scanner '${definition.id}' requires context '${binding.contract.key}', but no depends_on entry wires a source scanner for it.`);
107
+ }
108
+ }
109
+ }
110
+ function validateActionReferences(config, nodes) {
111
+ for (const action of config.actions ?? []) {
112
+ for (const scannerId of action.scanners ?? []) {
113
+ const source = nodes.get(scannerId);
114
+ if (!source) {
115
+ throw new Error(`Action '${action.name}' references unknown trigger scanner '${scannerId}'.`);
116
+ }
117
+ if (!source.outputs.signals) {
118
+ throw new Error(`Action '${action.name}' uses '${scannerId}' as a trigger scanner, but that scanner does not emit signals.`);
119
+ }
120
+ }
121
+ for (const entry of action.context ?? []) {
122
+ if (entry.type === "signal") {
123
+ const source = nodes.get(entry.scanner);
124
+ if (!source) {
125
+ throw new Error(`Action '${action.name}' references unknown signal scanner '${entry.scanner}'.`);
126
+ }
127
+ if (!source.outputs.signals) {
128
+ throw new Error(`Action '${action.name}' requests signal context from '${entry.scanner}', but that scanner does not emit signals.`);
129
+ }
130
+ }
131
+ if (entry.type === "context") {
132
+ const source = nodes.get(entry.scanner);
133
+ if (!source) {
134
+ throw new Error(`Action '${action.name}' references unknown context scanner '${entry.scanner}'.`);
135
+ }
136
+ if (!source.outputs.context) {
137
+ throw new Error(`Action '${action.name}' requests retained context from '${entry.scanner}', but that scanner does not publish context.`);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ function topologicallySort(nodes, graph) {
144
+ const visiting = new Set();
145
+ const visited = new Set();
146
+ const order = [];
147
+ const visit = (scannerId, path) => {
148
+ if (visited.has(scannerId)) {
149
+ return;
150
+ }
151
+ if (visiting.has(scannerId)) {
152
+ const cycle = [...path, scannerId].join(" -> ");
153
+ throw new Error(`Scanner dependency cycle detected: ${cycle}`);
154
+ }
155
+ visiting.add(scannerId);
156
+ for (const dependency of graph.get(scannerId) ?? []) {
157
+ visit(dependency, [...path, scannerId]);
158
+ }
159
+ visiting.delete(scannerId);
160
+ visited.add(scannerId);
161
+ order.push(scannerId);
162
+ };
163
+ for (const scannerId of nodes.keys()) {
164
+ visit(scannerId, []);
165
+ }
166
+ return order;
167
+ }
168
+ //# sourceMappingURL=scanner-composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-composition.js","sourceRoot":"","sources":["../../src/runtime/scanner-composition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Scanner type registry: map type string to Scanner factory.
3
+ */
4
+ import type { Scanner } from "../scanners/protocol/scanner.js";
5
+ export type ScannerFactory = () => Scanner<any, any>;
6
+ /** Registers one scanner factory under a runtime type alias. */
7
+ declare function register(type: string, factory: ScannerFactory): void;
8
+ /** Returns the scanner factory currently associated with one runtime type alias. */
9
+ declare function get(type: string): ScannerFactory | undefined;
10
+ /**
11
+ * Create a scanner factory for the given type, with YAML name as the runtime id.
12
+ * The returned factory builds a fresh scanner instance for each registration and
13
+ * shallow-merges any YAML-level config overrides onto the scanner's default config.
14
+ */
15
+ declare function createScanner(type: string, yamlName: string, configOverrides?: unknown, dependsOn?: Array<{
16
+ scanner: string;
17
+ required?: boolean;
18
+ max_age?: string;
19
+ on_missing?: "fail" | "skip" | "degrade";
20
+ on_stale?: "fail" | "skip" | "degrade";
21
+ }>): ScannerFactory;
22
+ export declare const ScannerRegistry: {
23
+ register: typeof register;
24
+ get: typeof get;
25
+ createScanner: typeof createScanner;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=scanner-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-registry.d.ts","sourceRoot":"","sources":["../../src/runtime/scanner-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAc/D,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAIrD,gEAAgE;AAChE,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE7D;AAED,oFAAoF;AACpF,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAErD;AAED;;;;GAIG;AACH,iBAAS,aAAa,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,OAAO,EACzB,SAAS,CAAC,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC,GACD,cAAc,CAqBhB;AAoFD,eAAO,MAAM,eAAe;;;;CAI3B,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Scanner type registry: map type string to Scanner factory.
3
+ */
4
+ import { emergingMoversScanner } from "../scanners/implementations/emerging-movers.js";
5
+ import { momentumScanner } from "../scanners/implementations/momentum.js";
6
+ import { oiTrackerScanner } from "../scanners/implementations/oi-tracker.js";
7
+ import { prescreenerScanner } from "../scanners/implementations/prescreener.js";
8
+ import { liquidationWatchdogScanner } from "../scanners/implementations/liquidation-watchdog.js";
9
+ import { marketRegimeScanner } from "../scanners/implementations/market-regime.js";
10
+ import { smFlipScanner } from "../scanners/implementations/sm-flip.js";
11
+ import { opportunityScanner } from "../scanners/implementations/opportunity.js";
12
+ import { positionTrackerScanner } from "../scanners/implementations/position-tracker.js";
13
+ import { parseInterval } from "./parse-interval.js";
14
+ const registry = new Map();
15
+ /** Registers one scanner factory under a runtime type alias. */
16
+ function register(type, factory) {
17
+ registry.set(type, factory);
18
+ }
19
+ /** Returns the scanner factory currently associated with one runtime type alias. */
20
+ function get(type) {
21
+ return registry.get(type);
22
+ }
23
+ /**
24
+ * Create a scanner factory for the given type, with YAML name as the runtime id.
25
+ * The returned factory builds a fresh scanner instance for each registration and
26
+ * shallow-merges any YAML-level config overrides onto the scanner's default config.
27
+ */
28
+ function createScanner(type, yamlName, configOverrides, dependsOn) {
29
+ const factory = registry.get(type);
30
+ if (!factory) {
31
+ throw new Error(`Unknown scanner type: ${type}`);
32
+ }
33
+ return () => {
34
+ const scanner = factory();
35
+ const definition = {
36
+ ...scanner.definition,
37
+ id: yamlName,
38
+ dependsOn: mapScannerDependencies(yamlName, dependsOn),
39
+ defaultConfig: mergeConfigOverrides(scanner.definition.defaultConfig, configOverrides),
40
+ };
41
+ return {
42
+ ...scanner,
43
+ definition,
44
+ };
45
+ };
46
+ }
47
+ function mapScannerDependencies(scannerId, dependsOn) {
48
+ if (!dependsOn || dependsOn.length === 0) {
49
+ return undefined;
50
+ }
51
+ return dependsOn.map((dependency) => {
52
+ const maxAgeMs = dependency.max_age
53
+ ? parseDependencyDuration(scannerId, dependency.scanner, dependency.max_age)
54
+ : undefined;
55
+ return {
56
+ scanner: dependency.scanner,
57
+ required: dependency.required,
58
+ maxAgeMs,
59
+ onMissing: dependency.on_missing,
60
+ onStale: dependency.on_stale,
61
+ };
62
+ });
63
+ }
64
+ function parseDependencyDuration(targetScannerId, dependencyScannerId, raw) {
65
+ try {
66
+ return parseInterval(raw) * 1000;
67
+ }
68
+ catch (error) {
69
+ const detail = error instanceof Error ? error.message : String(error);
70
+ throw new Error(`Invalid depends_on.max_age '${raw}' for scanner '${targetScannerId}' dependency '${dependencyScannerId}': ${detail}`);
71
+ }
72
+ }
73
+ /**
74
+ * Applies runtime config overrides coming from trading strategy YAML registration.
75
+ * Object-shaped overrides are shallow-merged so omitted fields still inherit
76
+ * the scanner's built-in defaults.
77
+ */
78
+ function mergeConfigOverrides(defaultConfig, overrides) {
79
+ if (overrides === undefined) {
80
+ return defaultConfig;
81
+ }
82
+ if (isRecord(defaultConfig) && isRecord(overrides)) {
83
+ return {
84
+ ...defaultConfig,
85
+ ...structuredClone(overrides),
86
+ };
87
+ }
88
+ return structuredClone(overrides);
89
+ }
90
+ /** Narrow runtime config overrides to plain object values before attempting a merge. */
91
+ function isRecord(value) {
92
+ return value !== null && typeof value === "object" && !Array.isArray(value);
93
+ }
94
+ register("emerging_movers", emergingMoversScanner);
95
+ register("emerging-movers", emergingMoversScanner);
96
+ register("momentum", momentumScanner);
97
+ register("oi_tracker", oiTrackerScanner);
98
+ register("oi-tracker", oiTrackerScanner);
99
+ register("prescreener", prescreenerScanner);
100
+ register("liquidation_watchdog", liquidationWatchdogScanner);
101
+ register("liquidation-watchdog", liquidationWatchdogScanner);
102
+ register("market_regime", marketRegimeScanner);
103
+ register("market-regime", marketRegimeScanner);
104
+ register("sm_flip", smFlipScanner);
105
+ register("sm-flip", smFlipScanner);
106
+ register("opportunity", opportunityScanner);
107
+ register("position_tracker", positionTrackerScanner);
108
+ register("position-tracker", positionTrackerScanner);
109
+ export const ScannerRegistry = {
110
+ register,
111
+ get,
112
+ createScanner,
113
+ };
114
+ //# sourceMappingURL=scanner-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-registry.js","sourceRoot":"","sources":["../../src/runtime/scanner-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Canonical state-directory layout helpers and archive operations.
3
+ *
4
+ * The runtime uses these to build deterministic per-runtime state paths
5
+ * and to archive state directories when runtimes are deleted.
6
+ */
7
+ /**
8
+ * Describes the explicit paths the runtime provides to each component.
9
+ * Components must store their state only within the path they receive.
10
+ */
11
+ export interface StateLayout {
12
+ /** Runtime state root (e.g. `<baseStateDir>/<runtimeId>-<wallet>`). */
13
+ root: string;
14
+ /** Root passed to scanner stores (same as `root` today; scanners add `strategies/<wallet>/...` internally). */
15
+ scannerRoot: string;
16
+ /** Root passed to StateManager / DslPlugin (same as `root`; they add `<wallet>/dsl-*` internally). */
17
+ dslRoot: string;
18
+ }
19
+ /**
20
+ * Build the per-runtime state directory path.
21
+ * Convention: `<baseStateDir>/<runtimeId>-<wallet>`.
22
+ */
23
+ export declare function buildRuntimeStateDir(baseStateDir: string, runtimeId: string, wallet: string): string;
24
+ /** @deprecated Use buildRuntimeStateDir */
25
+ export declare const buildRecipeStateDir: typeof buildRuntimeStateDir;
26
+ /**
27
+ * Build a `StateLayout` from a runtime's state directory.
28
+ * Currently all roots resolve to the same directory; kept explicit so
29
+ * a future version can split them without changing call-sites.
30
+ */
31
+ export declare function buildStateLayout(runtimeStateDir: string): StateLayout;
32
+ export interface ArchiveEntry {
33
+ path: string;
34
+ runtimeId: string;
35
+ wallet: string;
36
+ timestamp: number;
37
+ }
38
+ /**
39
+ * Archive a runtime's state directory by moving it into the archives folder.
40
+ * Target: `<archiveBaseDir>/<runtimeId>-<wallet>-<timestamp>/`.
41
+ * Falls back to recursive copy + remove when `rename` fails (cross-device).
42
+ * Returns the archive destination path.
43
+ */
44
+ export declare function archiveStateDir(runtimeStateDir: string, archiveBaseDir: string, runtimeId: string, wallet: string): Promise<string>;
45
+ /**
46
+ * List archived runtime state directories, sorted newest-first.
47
+ * Parses directory names matching `<runtimeId>-<wallet>-<timestamp>`.
48
+ */
49
+ export declare function listArchives(archiveBaseDir: string): Promise<ArchiveEntry[]>;
50
+ //# sourceMappingURL=state-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-layout.d.ts","sourceRoot":"","sources":["../../src/runtime/state-layout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,+GAA+G;IAC/G,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpG;AAED,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,6BAAuB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAMrE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAajB;AAID;;;GAGG;AACH,wBAAsB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgClF"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Canonical state-directory layout helpers and archive operations.
3
+ *
4
+ * The runtime uses these to build deterministic per-runtime state paths
5
+ * and to archive state directories when runtimes are deleted.
6
+ */
7
+ import { join } from "node:path";
8
+ import { mkdir, rename, readdir, cp, rm, stat } from "node:fs/promises";
9
+ /**
10
+ * Build the per-runtime state directory path.
11
+ * Convention: `<baseStateDir>/<runtimeId>-<wallet>`.
12
+ */
13
+ export function buildRuntimeStateDir(baseStateDir, runtimeId, wallet) {
14
+ return join(baseStateDir, `${runtimeId}-${wallet}`);
15
+ }
16
+ /** @deprecated Use buildRuntimeStateDir */
17
+ export const buildRecipeStateDir = buildRuntimeStateDir;
18
+ /**
19
+ * Build a `StateLayout` from a runtime's state directory.
20
+ * Currently all roots resolve to the same directory; kept explicit so
21
+ * a future version can split them without changing call-sites.
22
+ */
23
+ export function buildStateLayout(runtimeStateDir) {
24
+ return {
25
+ root: runtimeStateDir,
26
+ scannerRoot: runtimeStateDir,
27
+ dslRoot: runtimeStateDir,
28
+ };
29
+ }
30
+ /**
31
+ * Archive a runtime's state directory by moving it into the archives folder.
32
+ * Target: `<archiveBaseDir>/<runtimeId>-<wallet>-<timestamp>/`.
33
+ * Falls back to recursive copy + remove when `rename` fails (cross-device).
34
+ * Returns the archive destination path.
35
+ */
36
+ export async function archiveStateDir(runtimeStateDir, archiveBaseDir, runtimeId, wallet) {
37
+ await mkdir(archiveBaseDir, { recursive: true });
38
+ const ts = Date.now();
39
+ const archiveName = `${runtimeId}-${wallet}-${ts}`;
40
+ const dest = join(archiveBaseDir, archiveName);
41
+ try {
42
+ await rename(runtimeStateDir, dest);
43
+ }
44
+ catch {
45
+ await cp(runtimeStateDir, dest, { recursive: true });
46
+ await rm(runtimeStateDir, { recursive: true, force: true });
47
+ }
48
+ return dest;
49
+ }
50
+ const ARCHIVE_DIR_PATTERN = /^(.+)-([^-]+-[^-]+)$/;
51
+ /**
52
+ * List archived runtime state directories, sorted newest-first.
53
+ * Parses directory names matching `<runtimeId>-<wallet>-<timestamp>`.
54
+ */
55
+ export async function listArchives(archiveBaseDir) {
56
+ let entries;
57
+ try {
58
+ entries = await readdir(archiveBaseDir);
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ const results = [];
64
+ for (const name of entries) {
65
+ const fullPath = join(archiveBaseDir, name);
66
+ let info;
67
+ try {
68
+ info = await stat(fullPath);
69
+ }
70
+ catch {
71
+ continue;
72
+ }
73
+ if (!info.isDirectory())
74
+ continue;
75
+ const m = ARCHIVE_DIR_PATTERN.exec(name);
76
+ if (!m)
77
+ continue;
78
+ const [, runtimeId, walletAndTs] = m;
79
+ const tsDash = walletAndTs.lastIndexOf("-");
80
+ const wallet = walletAndTs.slice(0, tsDash);
81
+ const ts = Number(walletAndTs.slice(tsDash + 1));
82
+ if (!Number.isFinite(ts) || ts <= 0)
83
+ continue;
84
+ results.push({ path: fullPath, runtimeId, wallet, timestamp: ts });
85
+ }
86
+ results.sort((a, b) => b.timestamp - a.timestamp);
87
+ return results;
88
+ }
89
+ //# sourceMappingURL=state-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-layout.js","sourceRoot":"","sources":["../../src/runtime/state-layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Internal registry of installed runtimes (installed_runtimes.json).
3
+ * Source of truth for what the plugin should run; read on boot, updated by CLI/RPC install/uninstall.
4
+ * Each entry uses exactly one of runtimeYamlPath or runtimeYamlContent (see InstalledRuntimeEntry).
5
+ * Migrates from installed_recipes.json and installed_strategies.json on first read if present.
6
+ */
7
+ export declare const REGISTRY_FILENAME = "installed_runtimes.json";
8
+ export interface InstalledRuntimeEntry {
9
+ id: string;
10
+ runtimeYamlPath?: string;
11
+ runtimeYamlContent?: string;
12
+ /** Major version extracted from YAML version field at install time. */
13
+ schemaVersion?: number;
14
+ /** Wallet address from strategy.wallet, stored at install time. */
15
+ wallet?: string;
16
+ }
17
+ export interface InstalledRuntimeRegistry {
18
+ version: number;
19
+ runtimes: InstalledRuntimeEntry[];
20
+ }
21
+ /** @deprecated Use InstalledRuntimeEntry */
22
+ export type InstalledRecipeEntry = InstalledRuntimeEntry;
23
+ /** @deprecated Use InstalledRuntimeRegistry */
24
+ export type InstalledRecipesRegistry = InstalledRuntimeRegistry;
25
+ /** @deprecated Use InstalledRuntimeEntry */
26
+ export type InstalledStrategyEntry = InstalledRuntimeEntry;
27
+ /** @deprecated Use InstalledRuntimeRegistry */
28
+ export type InstalledStrategiesRegistry = InstalledRuntimeRegistry;
29
+ /**
30
+ * Sanitize a string for use as registry id: replace non-alphanumeric with underscore, truncate.
31
+ */
32
+ export declare function sanitizeId(candidate: string): string;
33
+ /**
34
+ * Derive a human-readable, globally-unique runtime id from the YAML name and wallet.
35
+ * Format: `<slugified-name>-<4-char hash>` (e.g. "fox-strategy-a7k2").
36
+ * The hash is derived from name + wallet + timestamp + monotonic counter,
37
+ * so re-creating a runtime with the same name always produces a distinct id
38
+ * (no archive collisions).
39
+ */
40
+ export declare function deriveRuntimeId(name: string, wallet: string): string;
41
+ /** @deprecated Use deriveRuntimeId */
42
+ export declare const deriveRecipeId: typeof deriveRuntimeId;
43
+ /**
44
+ * Derive default id from file path (basename without extension).
45
+ * @deprecated Prefer deriveRuntimeId(name, wallet) which uses the YAML name field.
46
+ */
47
+ export declare function deriveIdFromPath(filePath: string, existingIds: string[]): string;
48
+ /**
49
+ * Derive default id for content-only entry: content-0, content-1, ...
50
+ */
51
+ export declare function deriveIdForContent(existingIds: string[]): string;
52
+ /**
53
+ * Read the installed runtimes registry from stateDir.
54
+ * Migrates from installed_recipes.json or installed_strategies.json if present.
55
+ * Missing or invalid file returns { version: 1, runtimes: [] }.
56
+ */
57
+ export declare function readRegistry(stateDir: string): Promise<InstalledRuntimeRegistry>;
58
+ /**
59
+ * Write the registry atomically (temp file then rename).
60
+ */
61
+ export declare function writeRegistry(stateDir: string, data: InstalledRuntimeRegistry): Promise<void>;
62
+ /**
63
+ * Validate that an entry has exactly one of runtimeYamlPath or runtimeYamlContent and id is safe.
64
+ */
65
+ export declare function validateEntry(entry: InstalledRuntimeEntry): {
66
+ ok: true;
67
+ } | {
68
+ ok: false;
69
+ error: string;
70
+ };
71
+ /**
72
+ * Check if an id is already present in the registry.
73
+ */
74
+ export declare function hasId(registry: InstalledRuntimeRegistry, id: string): boolean;
75
+ /**
76
+ * Find a registry entry by wallet address.
77
+ */
78
+ export declare function findByWallet(registry: InstalledRuntimeRegistry, wallet: string): InstalledRuntimeEntry | undefined;
79
+ //# sourceMappingURL=strategy-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-registry.d.ts","sourceRoot":"","sources":["../../src/runtime/strategy-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAI3D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD,+CAA+C;AAC/C,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAEhE,4CAA4C;AAC5C,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAoCnE;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKpD;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYpE;AAED,sCAAsC;AACtC,eAAO,MAAM,cAAc,wBAAkB,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAYhF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAShE;AA4BD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgEtF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBvG;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,wBAAwB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAElH"}