@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,481 @@
1
+ /**
2
+ * senpi guide subcommands — in-shell reference for @senpi-ai/runtime.
3
+ *
4
+ * All reference text is static string constants. This is intentional: the
5
+ * scanner registry does not expose configSchema or description metadata at
6
+ * runtime (ScannerEngine.list() only returns id/enabled/intervalSeconds).
7
+ *
8
+ * TODO: replace static strings with dynamic registry metadata once
9
+ * ScannerEngine exposes configSchema per scanner type. Relevant type is
10
+ * ScannerRegistrationSummary in src/scanners/engine/engine.ts.
11
+ */
12
+ const CHANGELOG_URL = "https://github.com/Senpi-ai/senpi-trading-runtime/blob/main/CHANGELOG.md";
13
+ // ── Reference text constants ────────────────────────────────────────────────
14
+ const OVERVIEW_TEXT = (version) => `
15
+ @senpi-ai/runtime v${version}
16
+
17
+ Event-driven automated trading plugin for OpenClaw. Orchestrates scanners,
18
+ LLM-based trade decisions, and a DSL trailing stop-loss exit engine.
19
+
20
+ Flow: Scanner → signal queue → Action (optional LLM) → position → DSL exit
21
+
22
+ Quick commands:
23
+ senpi guide scanners Scanner types and config fields
24
+ senpi guide actions Action types and decision modes
25
+ senpi guide dsl DSL exit: phases, lock modes, tiers, time-based cuts
26
+ senpi dsl positions Active DSL positions (CLI inspection)
27
+ senpi dsl inspect Full DSL state for one asset
28
+ senpi dsl closes Archived closes with reason
29
+ senpi guide examples Print minimal strategy YAML
30
+ senpi guide schema Full YAML schema field reference
31
+ senpi guide version Plugin version and changelog URL
32
+
33
+ Docs: docs/runtime-docs/
34
+ `.trim();
35
+ const SCANNERS_TEXT = `
36
+ Scanner types
37
+ ─────────────────────────────────────────────────────────────────────────────
38
+
39
+ emerging_movers
40
+ Watches the Senpi smart-money leaderboard for rank and contribution
41
+ movements. Stateful — compares each scan to stored history.
42
+ Typical interval: 20s–60s
43
+
44
+ Signal types (priority order):
45
+ FIRST_JUMP (score 0.95) 10+ rank jump from deep, first appearance
46
+ CONTRIB_EXPLOSION (score 0.90) 3x+ contribution spike in one scan
47
+ IMMEDIATE_MOVER (score 0.85) 10+ rank jump, token was already tracked
48
+ NEW_ENTRY_DEEP (score 0.80) New entry landing directly in top 20
49
+ DEEP_CLIMBER (score 0.60) Moderate rank gain from a deep position
50
+
51
+ Config fields:
52
+ topN number 50 Track top N by SM contribution
53
+ minRankJump number 5 Min rank improvement for DEEP_CLIMBER
54
+ minTopTradersGain number 0.1 Min contribution threshold
55
+ minScansBeforeSignals number 2 Warm-up scans before emitting signals
56
+ historyLimit number 60 Max history entries per token
57
+ immediateJumpThreshold number 10 Rank jump for IMMEDIATE_MOVER/FIRST_JUMP
58
+ deepClimbRankThreshold number 25 Starting rank for deep-climb detection
59
+ contribExplosionMultiplier number 3.0 Ratio for CONTRIB_EXPLOSION
60
+ firstJumpMinPrevRank number 30 Prev-rank floor for FIRST_JUMP
61
+
62
+ ──────────────────────────────────────────────────────────────────────────────
63
+
64
+ momentum
65
+ Emits directional breakout signals based on candle price movement.
66
+ Works best paired with the prescreener scanner.
67
+ Typical interval: 1m
68
+
69
+ Signal types: MOMENTUM_BREAKOUT (LONG or SHORT)
70
+
71
+ Config fields:
72
+ timeframe string "1h" Candle timeframe to analyze
73
+ minMovePct number 1.5 Min price change % to emit a signal
74
+ maxCandidates number 20 Max assets evaluated per scan
75
+ minDayVolume number 1e6 Min 24h volume filter (fallback only)
76
+ minSignalScore number 0.2 Min signal score threshold (0–1)
77
+ requirePrescreened boolean true Only scan assets from the prescreener
78
+
79
+ ──────────────────────────────────────────────────────────────────────────────
80
+
81
+ prescreener
82
+ Infrastructure scanner. Ranks liquid instruments by a composite
83
+ liquidity/momentum/OI score and publishes a shared artifact consumed
84
+ by momentum and oi_tracker. Add this scanner before those in your YAML.
85
+ Typical interval: 5m
86
+
87
+ Signal types: none (artifact producer only)
88
+
89
+ Config fields:
90
+ topN number 30 Assets passed through to downstream scanners
91
+ minDayVolume number 1e6 Min 24h notional volume
92
+ minLeverage number 2 Min max-leverage (filters illiquid markets)
93
+ minOpenInterest number 0 Min open interest
94
+
95
+ ──────────────────────────────────────────────────────────────────────────────
96
+
97
+ oi_tracker
98
+ Infrastructure scanner. Samples open interest per instrument and writes
99
+ an oi-history artifact. Used by downstream scanners that need OI trend data.
100
+ Typical interval: 1m
101
+
102
+ Signal types: none (artifact producer only)
103
+
104
+ Config fields:
105
+ minDayVolume number 1e6 Min 24h volume; instruments below are skipped
106
+ maxHistory number 60 Max OI snapshots retained per instrument
107
+
108
+ ──────────────────────────────────────────────────────────────────────────────
109
+
110
+ position_tracker
111
+ Wallet position monitor: compares clearing-house snapshots and emits lifecycle deltas.
112
+ Use with action POSITION_TRACKER to feed the DSL exit engine.
113
+ Typical interval: 10s–60s
114
+
115
+ Type aliases (same scanner): position-tracker
116
+
117
+ Scanner signal types (signalType per result — not YAML action_type values):
118
+ POSITION_OPENED, POSITION_CLOSED, POSITION_INCREASED,
119
+ POSITION_DECREASED, POSITION_FLIPPED
120
+ Use action_type: POSITION_TRACKER with scanners: […] to handle these for DSL/hooks.
121
+
122
+ Config fields:
123
+ sizeChangeEpsilon number 1e-9 Treat abs(size diff) below this as unchanged (float noise)
124
+ `.trim();
125
+ const ACTIONS_TEXT = `
126
+ Action types
127
+ ─────────────────────────────────────────────────────────────────────────────
128
+
129
+ OPEN_POSITION
130
+ Opens a new position on Senpi. Checks slot availability before executing.
131
+
132
+ Required YAML fields:
133
+ action_type OPEN_POSITION
134
+ decision_mode llm | no_decision
135
+ scanners list of scanner names that feed this action
136
+ min_confidence 0–10; signals below this score are skipped
137
+
138
+ Optional fields:
139
+ decision_model Claude model id (required when decision_mode: llm)
140
+ context list of context fields injected into the prompt
141
+ currently supported: signal
142
+ decision_prompt system prompt template; use {{signal}} for signal JSON
143
+
144
+ XYZ DEX (Hyperliquid xyz book): payload may use base + payload.dex "xyz" (e.g. GOLD), or
145
+ xyz:BASE with or without dex set; the DSL layer normalizes to stored state { asset: base, dex }.
146
+ Main book: plain symbols (e.g. BTC). CLOSE_POSITION: same hook shapes; include dex when closing
147
+ xyz-book positions so DSL can resolve state (optional if only one open position matches the base).
148
+
149
+ Decision modes:
150
+ llm Claude evaluates each signal. Prompt receives {{signal}} as JSON.
151
+ Claude must respond with:
152
+ {
153
+ "execute": true | false,
154
+ "actionType": "OPEN_POSITION",
155
+ "confidence": 1–10,
156
+ "reasoning": "one sentence",
157
+ "payload": { "asset": "SOL", "direction": "LONG" | "SHORT" }
158
+ }
159
+ Trades are skipped when execute=false or confidence < min_confidence.
160
+
161
+ no_decision Opens a position for every qualifying signal immediately.
162
+ No LLM call. Use with tight DSL stops to manage risk.
163
+ `.trim();
164
+ const DSL_TEXT = `
165
+ DSL exit engine — two-phase trailing stop-loss (DSL v2)
166
+ ─────────────────────────────────────────────────────────────────────────────
167
+
168
+ The DSL monitors open positions on a configurable interval and closes them
169
+ when price breaches the computed floor or when preset time cuts fire.
170
+ Phase 1: max_loss absolute floor + phase1 retrace from high-water; consecutive
171
+ breach counting applies only in phase 1. Phase 2: tier floors from lock_hw_pct
172
+ (% of current high-water ROE); phase 2 begins when price crosses the first
173
+ tier (no phase2_trigger_tier). Optional hard_timeout, weak_peak_cut, and
174
+ dead_weight_cut live on the preset (not nested under phase1). When any of these
175
+ has enabled: true, interval_in_minutes is required (finite number > 0);
176
+ weak_peak_cut also requires min_value (finite ROE % > 0). hard_timeout
177
+ applies only in phase 1: entering phase 2 before the interval elapses cancels it;
178
+ same tick as first tier (phase 2) skips hard_timeout in favor of tier advance.
179
+ dead_weight_cut: stagnation clock resets every tick while current ROE > 0 (mark vs entry);
180
+ after interval_in_minutes with current ROE ≤ 0 on the tick, close with dead_weight_cut.
181
+
182
+ exit:
183
+ engine: dsl
184
+ interval_seconds: 30
185
+
186
+ dsl_preset:
187
+ hard_timeout: ... # optional; same level as phase1 / phase2
188
+ weak_peak_cut: ...
189
+ dead_weight_cut: ...
190
+ phase1: ...
191
+ phase2: ...
192
+
193
+ ──────────────────────────────────────────────────────────────────────────────
194
+ Phase 1 — Fixed floor + high-water trailing
195
+ Floor = max(absolute_floor, trailing_floor). Absolute floor from max_loss_pct
196
+ (entry × (1 − max_loss_pct/100/leverage) for LONG). Trailing uses phase1
197
+ retrace_threshold (ROE %) from high-water.
198
+
199
+ phase1:
200
+ # enabled: false # optional; default true — false = skip Phase 1 logic; tiers can still advance
201
+ max_loss_pct: 3.0 # e.g. 3% max loss at 1×
202
+ retrace_threshold: 10 # ROE % retrace from HWM in phase 1 (required when enabled)
203
+ consecutive_breaches_required: 3 # ticks below floor before exit in phase 1 only (required when enabled)
204
+ # Exchange SL in Phase 1: max_loss absolute floor only; tighter engine floors use closePosition.
205
+
206
+ ──────────────────────────────────────────────────────────────────────────────
207
+ Phase 2 — Tier floors (no per-tier breaches or retrace YAML)
208
+ Floor = tier floor from lock_hw_pct once the tier is active. Price below
209
+ effective floor closes immediately (no consecutive breach counter in phase 2).
210
+ Exchange SL tracks the full effective floor (editPosition on tier/phase and moves).
211
+
212
+ phase2:
213
+ # enabled: false # optional; default true — false = never enter phase 2
214
+ tiers:
215
+ # trigger_pct = ROE % from entry that activates this tier (strictly increasing list)
216
+ # lock_hw_pct = required; % of current high-water ROE to lock (0–100)
217
+ - { trigger_pct: 10, lock_hw_pct: 50 }
218
+ - { trigger_pct: 20, lock_hw_pct: 70 }
219
+
220
+ Legacy keys removed: phase2_trigger_tier; phase2.retrace_threshold / consecutive_breaches_required;
221
+ tier breaches / retrace; phase1-nested time cuts (use preset hard_timeout / weak_peak_cut / dead_weight_cut).
222
+
223
+ ──────────────────────────────────────────────────────────────────────────────
224
+ State and events
225
+ Per-position state under stateDir; on-disk version must match the runtime.
226
+ Close reasons include exchange_sl_hit, hard_timeout, weak_peak_cut, dead_weight_cut, dsl_breach, etc.
227
+ Close reason is preserved on pendingClose retry. DSL bus events: dsl.created, dsl.tier_advanced,
228
+ dsl.sl_updated, dsl.phase_changed, dsl.closed, dsl.deleted, and hook position.closed /
229
+ on_position_increased / on_position_decreased (same hook names as HookSystem.fire).
230
+
231
+ ──────────────────────────────────────────────────────────────────────────────
232
+ Commands
233
+ senpi dsl positions List active DSL-tracked positions
234
+ senpi dsl positions --json Output as JSON
235
+ senpi dsl inspect <asset> Full state for one position (e.g. SOL, xyz:GOLD)
236
+ senpi dsl inspect <asset> --json Output full DslState as JSON
237
+ senpi dsl closes List archived closes with reason and PnL
238
+ senpi dsl closes --limit 20 Limit output
239
+ `.trim();
240
+ const SCHEMA_TEXT = `
241
+ YAML schema — top-level keys
242
+ ─────────────────────────────────────────────────────────────────────────────
243
+ Key Type Req Description
244
+ name string Yes Recipe name
245
+ version number/string No Recipe version (default: 1). Integer or semver string; major version is the schema version.
246
+ description string No Human-readable description
247
+ strategy object Yes Single strategy config (wallet, budget, slots, etc.)
248
+ scanners array * Scanner definitions (* required when actions
249
+ have OPEN_POSITION or a scanners list)
250
+ actions array No Action definitions
251
+ exit object No Exit / DSL block
252
+ health object No Health check config
253
+ hooks array No Hook definitions
254
+ notifications object No telegram_chat_id; gateway_token optional
255
+ (defaults to OPENCLAW_GATEWAY_TOKEN env).
256
+ Optional dsl_lifecycle (false disables DSL Telegram),
257
+ dsl_notify_sl_updates (true = noisy SL sync)
258
+ advanced object No Extra options
259
+
260
+ strategy
261
+ wallet string Yes Wallet address; supports \${VAR} substitution
262
+ budget number No Total budget
263
+ slots number No Max concurrent positions
264
+ margin_per_slot number No Margin per slot
265
+ trading_risk string No conservative | moderate | aggressive
266
+ enabled boolean No Default true
267
+
268
+ scanners[]
269
+ name string Yes Unique name referenced in actions.scanners
270
+ type string Yes emerging_movers | momentum | prescreener | oi_tracker
271
+ interval string Yes e.g. "30s", "2m", "1h"
272
+ blocked_assets array No
273
+ config object No Scanner-specific config (see: senpi guide scanners)
274
+ advanced object No
275
+
276
+ actions[]
277
+ name string Yes
278
+ action_type string Yes OPEN_POSITION
279
+ decision_mode string Yes llm | no_decision
280
+ decision_model string No Required when decision_mode: llm
281
+ scanners string[] No Scanner names this action listens to
282
+ min_confidence number No 0–10
283
+ context string[] No [signal]
284
+ decision_prompt string No Prompt template with {{signal}}
285
+ params object No
286
+
287
+ exit
288
+ engine string No dsl
289
+ interval_seconds number No Default 30; integer 5–3600 (Zod + DSL parse)
290
+ dsl_preset object No Single exit profile (required to start DslPlugin)
291
+ sm_flip any No Non-DSL exit hook data (allowed; ignored by DSL parse)
292
+
293
+ Preset: max_loss_pct (or phase1.max_loss_pct), phase1 (optional enabled;
294
+ max_loss_pct, retrace_threshold ROE %, consecutive_breaches_required),
295
+ phase2 (optional enabled; tiers only — trigger_pct, lock_hw_pct per row),
296
+ optional hard_timeout / weak_peak_cut / dead_weight_cut at preset root
297
+ (when enabled: true, require interval_in_minutes; weak_peak_cut also min_value).
298
+ phase1.enabled and phase2.enabled cannot both be false. Each tier row:
299
+ lock_hw_pct [0,100]. Unknown keys under exit / presets / phase1 / phase2 / tiers throw
300
+ DslConfigValidationError (UNKNOWN_DSL_CONFIG_KEY) at load. DSL parse also
301
+ enforces strictly increasing trigger_pct per tier list, bounds on
302
+ interval/max_loss/trigger/lock_hw, and integer breach counts; see dsl-reference
303
+ Config validation. See: senpi guide dsl
304
+
305
+ Environment substitution: \${VAR} and \${VAR:-default} resolved at load time.
306
+ `.trim();
307
+ const MINIMAL_YAML = `
308
+ name: minimal
309
+ version: 1.0.0
310
+ description: Watch-only strategy — logs signals, opens no positions.
311
+
312
+ strategy:
313
+ wallet: "\${WALLET_ADDRESS}"
314
+ budget: "0"
315
+ slots: 1
316
+ margin_per_slot: 0
317
+ trading_risk: conservative
318
+ enabled: true
319
+
320
+ scanners:
321
+ - name: emerging_movers
322
+ type: emerging_movers
323
+ interval: 60s
324
+ config:
325
+ topN: 20
326
+ minRankJump: 5
327
+ minScansBeforeSignals: 2
328
+
329
+ actions:
330
+ - name: log_signals
331
+ action_type: OPEN_POSITION
332
+ decision_mode: no_decision
333
+ scanners: [emerging_movers]
334
+ min_confidence: 0
335
+
336
+ exit:
337
+ engine: dsl
338
+ interval_seconds: 60
339
+ dsl_preset:
340
+ phase1:
341
+ consecutive_breaches_required: 3
342
+ max_loss_pct: 5.0
343
+ retrace_threshold: 10
344
+ phase2:
345
+ tiers:
346
+ - { trigger_pct: 1, lock_hw_pct: 50 }
347
+ `.trim();
348
+ export const CHEATSHEET_TEXT = `
349
+ Senpi Plugin Commands Cheatsheet
350
+ ================================
351
+
352
+ All CLI commands and gateway methods exposed by @senpi-ai/runtime.
353
+
354
+ CLI Commands
355
+ ------------
356
+ All commands are prefixed with: openclaw senpi
357
+
358
+ senpi config — Manage CLI preferences (~/.openclaw/senpi-cli.json)
359
+ config set-chat-id <chatId> Store Telegram chat ID for lifecycle notifications
360
+ config set-senpi-jwt-token <token> Store Senpi MCP JWT (Bearer)
361
+ config set-state-dir <dir> Set base state directory
362
+ config get <key> Print one value (telegram-chat-id | senpi-jwt-token | state-dir)
363
+ config list List all preferences (secrets masked)
364
+ config unset <key> Remove a key
365
+ config reset Clear all preferences
366
+
367
+ senpi runtime — Manage runtimes
368
+ runtime create Add a runtime from a YAML file
369
+ -p, --path <path> Path to strategy YAML file
370
+ -c, --content <yaml> Inline YAML content
371
+ --runtime-id <id> Override auto-derived ID
372
+ runtime delete [id] Remove a runtime
373
+ --id <runtime_id> Delete by runtime ID
374
+ --address <wallet> Delete by wallet address
375
+ runtime list List installed runtimes (id, wallet, source, status)
376
+
377
+ senpi dsl — Inspect DSL exit engine
378
+ dsl positions Active DSL-tracked positions
379
+ -r, --runtime <id> Filter by runtime ID
380
+ -a, --address <addr> Filter by strategy address
381
+ --json Raw JSON output
382
+ dsl inspect <asset> Full DSL state for one position
383
+ -r, --runtime <id> Filter by runtime ID
384
+ -a, --address <addr> Filter by strategy address
385
+ --json Raw JSON output
386
+ dsl closes Archived closes with reason and ROE
387
+ -r, --runtime <id> Filter by runtime ID
388
+ -a, --address <addr> Filter by strategy address
389
+ -l, --limit <n> Max rows
390
+ --json Raw JSON output
391
+
392
+ senpi guide — In-shell reference
393
+ guide Overview and quick commands
394
+ guide scanners Scanner types and config fields
395
+ guide actions Action types and decision modes
396
+ guide dsl DSL exit engine reference
397
+ guide examples Print minimal strategy YAML
398
+ guide schema Full YAML schema field reference
399
+ guide version Plugin version and changelog URL
400
+
401
+ Gateway Methods
402
+ ---------------
403
+ Called via: openclaw gateway call <method> --params '<json>'
404
+ Responses: { ok: boolean, payload?: ..., error?: { code, message } }
405
+
406
+ senpi.installRuntime
407
+ Params: runtimeYamlPath (string) OR runtimeYamlContent (string); id (string, optional)
408
+ Success: { id, name, wallet }
409
+ Errors: INVALID_REQUEST (missing YAML, duplicate ID/wallet), UNAVAILABLE (bad YAML, start failure)
410
+
411
+ senpi.listRuntimes
412
+ Params: (none)
413
+ Success: { recipes: [{ id, wallet, source, status }] }
414
+
415
+ senpi.deleteRuntime
416
+ Params: id (string) OR address (string)
417
+ Success: { id }
418
+ Errors: NOT_FOUND, INVALID_REQUEST
419
+
420
+ senpi.listDslPositions
421
+ Params: runtimeId? (string), address? (string)
422
+ Success: { positions: [{ runtimeId, address, asset, direction, entryPrice, lastPrice,
423
+ currentROE, phase, currentTierIndex, floorPrice, currentBreachCount,
424
+ breachesRequired, elapsedMinutes, pendingClose }] }
425
+
426
+ senpi.getDslPositionState
427
+ Params: asset (string, required), runtimeId? (string), address? (string)
428
+ Success: { positions: [{ runtimeId, address, state: <full DslState> }] }
429
+ Errors: INVALID_REQUEST (no asset), NOT_FOUND
430
+
431
+ senpi.listDslArchives
432
+ Params: runtimeId? (string), address? (string), limit? (number)
433
+ Success: { closes: [{ runtimeId, address, asset, direction, entryPrice, lastPrice,
434
+ closeReason, closedAt, peakROE, currentROE, elapsedMinutes, phase }] }
435
+ Close reasons: dsl_breach, hard_timeout, weak_peak_cut, dead_weight_cut, exchange_sl_hit, manual
436
+
437
+ Full cheatsheet with sample responses: docs/plugin-commands-cheatsheet.md
438
+ `.trim();
439
+ /**
440
+ * Register `senpi guide [subcommand]` on the senpi Commander subprogram.
441
+ * @param senpi - the `senpi` Commander command object
442
+ * @param version - plugin version string (from package.json; see `src/version.ts`)
443
+ */
444
+ export function registerGuideCommands(senpi, version) {
445
+ const guide = senpi.command("guide")
446
+ .description("In-shell reference for @senpi-ai/runtime");
447
+ guide.action(() => {
448
+ process.stdout.write(OVERVIEW_TEXT(version) + "\n");
449
+ });
450
+ guide.command("scanners")
451
+ .description("Scanner types and config fields")
452
+ .action(() => {
453
+ process.stdout.write(SCANNERS_TEXT + "\n");
454
+ });
455
+ guide.command("actions")
456
+ .description("Action types and decision modes")
457
+ .action(() => {
458
+ process.stdout.write(ACTIONS_TEXT + "\n");
459
+ });
460
+ guide.command("dsl")
461
+ .description("DSL exit engine: phases, lock modes, tiers, time-based cuts")
462
+ .action(() => {
463
+ process.stdout.write(DSL_TEXT + "\n");
464
+ });
465
+ guide.command("examples")
466
+ .description("Print minimal strategy YAML to stdout")
467
+ .action(() => {
468
+ process.stdout.write(MINIMAL_YAML + "\n");
469
+ });
470
+ guide.command("schema")
471
+ .description("Full YAML schema field reference")
472
+ .action(() => {
473
+ process.stdout.write(SCHEMA_TEXT + "\n");
474
+ });
475
+ guide.command("version")
476
+ .description("Plugin version and changelog URL")
477
+ .action(() => {
478
+ process.stdout.write(`@senpi-ai/runtime v${version}\n${CHANGELOG_URL}\n`);
479
+ });
480
+ }
481
+ //# sourceMappingURL=guide-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Persistent Senpi CLI preferences: ~/.openclaw/senpi-cli.json (override via OPENCLAW_SENPI_CLI_CONFIG).
3
+ * Priority when resolving at runtime: plugin config > stored file > env > default (per key).
4
+ */
5
+ export declare const SENPI_CLI_KEYS: {
6
+ readonly TELEGRAM_CHAT_ID: "telegram-chat-id";
7
+ readonly SENPI_JWT_TOKEN: "senpi-jwt-token";
8
+ readonly STATE_DIR: "state-dir";
9
+ };
10
+ export type SenpiCliKey = (typeof SENPI_CLI_KEYS)[keyof typeof SENPI_CLI_KEYS];
11
+ /** Last 4 chars masked as ••••••••abcd */
12
+ export declare function maskSensitiveValue(value: string): string;
13
+ export declare function formatConfigListValue(key: string, value: string | undefined): string;
14
+ export declare function getSenpiCliConfigPath(): string;
15
+ export declare function readSenpiCliStore(): Record<string, string>;
16
+ export declare function writeSenpiCliStore(store: Record<string, string>): void;
17
+ export declare function setSenpiCliKey(key: string, value: string): void;
18
+ export declare function unsetSenpiCliKey(key: string): void;
19
+ export declare function resetSenpiCliStore(): void;
20
+ /** Telegram lifecycle notifications: stored > TELEGRAM_CHAT_ID > SENPI_LIFECYCLE_TELEGRAM_CHAT_ID */
21
+ export declare function resolveTelegramChatIdFromStore(store: Record<string, string>): string | undefined;
22
+ /** MCP JWT / API key: plugin config > stored > SENPI_API_KEY */
23
+ export declare function resolveSenpiApiKeyFromStore(store: Record<string, string>, configApiKey: string | undefined): string | undefined;
24
+ /**
25
+ * Base Senpi state directory (registry root): plugin stateDir > stored > SENPI_STATE_DIR > OpenClaw state/senpi-state > ~/.openclaw/senpi-state
26
+ */
27
+ export declare function resolveSenpiBaseStateDir(options: {
28
+ store: Record<string, string>;
29
+ configStateDir: string | undefined;
30
+ resolveOpenclawStateDir: (() => string) | undefined;
31
+ getDefaultStateDir: () => string;
32
+ }): string;
33
+ //# sourceMappingURL=senpi-cli-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senpi-cli-config.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-cli-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAI/E,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIpF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAYD,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAItE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,qGAAqG;AACrG,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAQhG;AAED,gEAAgE;AAChE,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAQpB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,uBAAuB,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IACpD,kBAAkB,EAAE,MAAM,MAAM,CAAC;CAClC,GAAG,MAAM,CAaT"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Persistent Senpi CLI preferences: ~/.openclaw/senpi-cli.json (override via OPENCLAW_SENPI_CLI_CONFIG).
3
+ * Priority when resolving at runtime: plugin config > stored file > env > default (per key).
4
+ */
5
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
6
+ import { homedir } from "node:os";
7
+ import { dirname, join } from "node:path";
8
+ export const SENPI_CLI_KEYS = {
9
+ TELEGRAM_CHAT_ID: "telegram-chat-id",
10
+ SENPI_JWT_TOKEN: "senpi-jwt-token",
11
+ STATE_DIR: "state-dir",
12
+ };
13
+ const SENSITIVE_KEYS = new Set([SENPI_CLI_KEYS.SENPI_JWT_TOKEN]);
14
+ /** Last 4 chars masked as ••••••••abcd */
15
+ export function maskSensitiveValue(value) {
16
+ const t = value.trim();
17
+ if (t.length <= 4)
18
+ return t.length > 0 ? "••••" : "(empty)";
19
+ return `••••••••${t.slice(-4)}`;
20
+ }
21
+ export function formatConfigListValue(key, value) {
22
+ if (value === undefined || value.length === 0)
23
+ return "(not set)";
24
+ if (SENSITIVE_KEYS.has(key))
25
+ return maskSensitiveValue(value);
26
+ return value;
27
+ }
28
+ export function getSenpiCliConfigPath() {
29
+ const override = process.env.OPENCLAW_SENPI_CLI_CONFIG?.trim();
30
+ if (override)
31
+ return override;
32
+ const home = homedir();
33
+ if (!home)
34
+ return join(process.cwd(), ".openclaw", "senpi-cli.json");
35
+ return join(home, ".openclaw", "senpi-cli.json");
36
+ }
37
+ function expandUserPath(p) {
38
+ const t = p.trim();
39
+ if (t.startsWith("~/") || t === "~") {
40
+ const h = homedir();
41
+ if (!h)
42
+ return t.replace(/^~/, "");
43
+ return t === "~" ? h : join(h, t.slice(2));
44
+ }
45
+ return t;
46
+ }
47
+ export function readSenpiCliStore() {
48
+ const path = getSenpiCliConfigPath();
49
+ if (!existsSync(path))
50
+ return {};
51
+ try {
52
+ const raw = readFileSync(path, "utf8");
53
+ const o = JSON.parse(raw);
54
+ if (!o || typeof o !== "object" || Array.isArray(o))
55
+ return {};
56
+ const out = {};
57
+ for (const [k, v] of Object.entries(o)) {
58
+ if (typeof v === "string" && v.length > 0)
59
+ out[k] = v;
60
+ }
61
+ return out;
62
+ }
63
+ catch {
64
+ return {};
65
+ }
66
+ }
67
+ export function writeSenpiCliStore(store) {
68
+ const path = getSenpiCliConfigPath();
69
+ mkdirSync(dirname(path), { recursive: true });
70
+ writeFileSync(path, `${JSON.stringify(store, null, 2)}\n`, "utf8");
71
+ }
72
+ export function setSenpiCliKey(key, value) {
73
+ const store = readSenpiCliStore();
74
+ store[key] = value.trim();
75
+ writeSenpiCliStore(store);
76
+ }
77
+ export function unsetSenpiCliKey(key) {
78
+ const store = readSenpiCliStore();
79
+ delete store[key];
80
+ writeSenpiCliStore(store);
81
+ }
82
+ export function resetSenpiCliStore() {
83
+ writeSenpiCliStore({});
84
+ }
85
+ /** Telegram lifecycle notifications: stored > TELEGRAM_CHAT_ID > SENPI_LIFECYCLE_TELEGRAM_CHAT_ID */
86
+ export function resolveTelegramChatIdFromStore(store) {
87
+ const a = store[SENPI_CLI_KEYS.TELEGRAM_CHAT_ID]?.trim();
88
+ if (a)
89
+ return a;
90
+ const e1 = process.env.TELEGRAM_CHAT_ID?.trim();
91
+ if (e1)
92
+ return e1;
93
+ const e2 = process.env.SENPI_LIFECYCLE_TELEGRAM_CHAT_ID?.trim();
94
+ if (e2)
95
+ return e2;
96
+ return undefined;
97
+ }
98
+ /** MCP JWT / API key: plugin config > stored > SENPI_API_KEY */
99
+ export function resolveSenpiApiKeyFromStore(store, configApiKey) {
100
+ const c = configApiKey?.trim();
101
+ if (c)
102
+ return c;
103
+ const s = store[SENPI_CLI_KEYS.SENPI_JWT_TOKEN]?.trim();
104
+ if (s)
105
+ return s;
106
+ const e = process.env.SENPI_API_KEY?.trim();
107
+ if (e)
108
+ return e;
109
+ return undefined;
110
+ }
111
+ /**
112
+ * Base Senpi state directory (registry root): plugin stateDir > stored > SENPI_STATE_DIR > OpenClaw state/senpi-state > ~/.openclaw/senpi-state
113
+ */
114
+ export function resolveSenpiBaseStateDir(options) {
115
+ const { store, configStateDir, resolveOpenclawStateDir, getDefaultStateDir: defaultDir } = options;
116
+ if (typeof configStateDir === "string" && configStateDir.trim().length > 0) {
117
+ return expandUserPath(configStateDir);
118
+ }
119
+ const stored = store[SENPI_CLI_KEYS.STATE_DIR]?.trim();
120
+ if (stored)
121
+ return expandUserPath(stored);
122
+ const env = process.env.SENPI_STATE_DIR?.trim();
123
+ if (env)
124
+ return expandUserPath(env);
125
+ if (typeof resolveOpenclawStateDir === "function") {
126
+ return join(resolveOpenclawStateDir(), "senpi-state");
127
+ }
128
+ return defaultDir();
129
+ }
130
+ //# sourceMappingURL=senpi-cli-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senpi-cli-config.js","sourceRoot":"","sources":["../../src/cli/senpi-cli-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;CACd,CAAC;AAIX,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AAEzE,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,OAAO,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,KAAyB;IAC1E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAClE,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/D,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA6B;IAC9D,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAa;IACvD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,8BAA8B,CAAC,KAA6B;IAC1E,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,2BAA2B,CACzC,KAA6B,EAC7B,YAAgC;IAEhC,MAAM,CAAC,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChB,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAKxC;IACC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACnG,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACvD,IAAI,MAAM;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,GAAG;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,uBAAuB,KAAK,UAAU,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE,aAAa,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC"}