@senpi/runtime 3.0.4-dev.runtime-phase-2.20260626011132 → 3.0.6-dev.openclaw-upgrade-mai.20260701205227

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 (486) hide show
  1. package/dist/actions/action-events.d.ts +67 -0
  2. package/dist/actions/action-events.d.ts.map +1 -0
  3. package/dist/actions/action-events.js +164 -0
  4. package/dist/actions/action-events.js.map +1 -0
  5. package/dist/actions/close-position/close-position.action.d.ts +1 -1
  6. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  7. package/dist/actions/close-position/close-position.action.js +108 -86
  8. package/dist/actions/close-position/close-position.action.js.map +1 -1
  9. package/dist/actions/decision-engine.d.ts.map +1 -1
  10. package/dist/actions/decision-engine.js +40 -28
  11. package/dist/actions/decision-engine.js.map +1 -1
  12. package/dist/actions/event-derivation.d.ts +61 -0
  13. package/dist/actions/event-derivation.d.ts.map +1 -0
  14. package/dist/actions/event-derivation.js +180 -0
  15. package/dist/actions/event-derivation.js.map +1 -0
  16. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts +5 -9
  17. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -1
  18. package/dist/actions/llm-decision/anthropic-llm-decision.js +6 -87
  19. package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -1
  20. package/dist/actions/llm-decision/factory.d.ts +0 -6
  21. package/dist/actions/llm-decision/factory.d.ts.map +1 -1
  22. package/dist/actions/llm-decision/factory.js +0 -2
  23. package/dist/actions/llm-decision/factory.js.map +1 -1
  24. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
  25. package/dist/actions/llm-decision/openclaw-llm-decision.js +26 -7
  26. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
  27. package/dist/actions/open-position/open-position.action.d.ts +1 -1
  28. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  29. package/dist/actions/open-position/open-position.action.js +282 -224
  30. package/dist/actions/open-position/open-position.action.js.map +1 -1
  31. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  32. package/dist/actions/position-tracker/position-tracker.action.js +3 -6
  33. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  34. package/dist/cli/guide-commands.d.ts.map +1 -1
  35. package/dist/cli/guide-commands.js +61 -0
  36. package/dist/cli/guide-commands.js.map +1 -1
  37. package/dist/cli/senpi-cli-config.js +1 -1
  38. package/dist/cli/senpi-cli-config.js.map +1 -1
  39. package/dist/cli/senpi-commands.d.ts +14 -0
  40. package/dist/cli/senpi-commands.d.ts.map +1 -1
  41. package/dist/cli/senpi-commands.js +390 -2
  42. package/dist/cli/senpi-commands.js.map +1 -1
  43. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  44. package/dist/dsl/engine-client/event-mapping.js +0 -3
  45. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  46. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  47. package/dist/dsl/events/build-closed-event.js +0 -1
  48. package/dist/dsl/events/build-closed-event.js.map +1 -1
  49. package/dist/dsl/events/handlers.d.ts.map +1 -1
  50. package/dist/dsl/events/handlers.js +2 -4
  51. package/dist/dsl/events/handlers.js.map +1 -1
  52. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  53. package/dist/dsl/events/initial-state.js +1 -0
  54. package/dist/dsl/events/initial-state.js.map +1 -1
  55. package/dist/dsl/monitor/create-monitor.d.ts +3 -0
  56. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  57. package/dist/dsl/monitor/create-monitor.js +76 -58
  58. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  59. package/dist/dsl/monitor/dsl-failure-events.d.ts +42 -0
  60. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -0
  61. package/dist/dsl/monitor/dsl-failure-events.js +73 -0
  62. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -0
  63. package/dist/dsl/monitor/process-one-position.d.ts +2 -1
  64. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  65. package/dist/dsl/monitor/process-one-position.js +130 -196
  66. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  67. package/dist/dsl/plugin/index.d.ts +10 -0
  68. package/dist/dsl/plugin/index.d.ts.map +1 -1
  69. package/dist/dsl/plugin/index.js +51 -5
  70. package/dist/dsl/plugin/index.js.map +1 -1
  71. package/dist/dsl/plugin/options.d.ts +3 -0
  72. package/dist/dsl/plugin/options.d.ts.map +1 -1
  73. package/dist/health/types.d.ts +14 -0
  74. package/dist/health/types.d.ts.map +1 -1
  75. package/dist/health/types.js.map +1 -1
  76. package/dist/index.d.ts +19 -6
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +255 -80
  79. package/dist/index.js.map +1 -1
  80. package/dist/risk/risk-audit-log.d.ts +7 -0
  81. package/dist/risk/risk-audit-log.d.ts.map +1 -1
  82. package/dist/risk/risk-audit-log.js +48 -1
  83. package/dist/risk/risk-audit-log.js.map +1 -1
  84. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts +2 -0
  85. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts.map +1 -1
  86. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js +24 -3
  87. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js.map +1 -1
  88. package/dist/runtime/auto-update/coordinator.js +2 -2
  89. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  90. package/dist/runtime/create-actions.d.ts.map +1 -1
  91. package/dist/runtime/create-actions.js +40 -15
  92. package/dist/runtime/create-actions.js.map +1 -1
  93. package/dist/runtime/create-runtime-context.d.ts +1 -1
  94. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  95. package/dist/runtime/create-scanner-module.d.ts +2 -1
  96. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  97. package/dist/runtime/create-scanner-module.js +2 -1
  98. package/dist/runtime/create-scanner-module.js.map +1 -1
  99. package/dist/runtime/domain-events.d.ts +43 -0
  100. package/dist/runtime/domain-events.d.ts.map +1 -0
  101. package/dist/runtime/domain-events.js +181 -0
  102. package/dist/runtime/domain-events.js.map +1 -0
  103. package/dist/runtime/lifecycle-events.d.ts +86 -0
  104. package/dist/runtime/lifecycle-events.d.ts.map +1 -0
  105. package/dist/runtime/lifecycle-events.js +200 -0
  106. package/dist/runtime/lifecycle-events.js.map +1 -0
  107. package/dist/runtime/notifications.js +2 -2
  108. package/dist/runtime/notifications.js.map +1 -1
  109. package/dist/{tracking → runtime}/position-id-registry.d.ts +14 -1
  110. package/dist/runtime/position-id-registry.d.ts.map +1 -0
  111. package/dist/{tracking → runtime}/position-id-registry.js +20 -3
  112. package/dist/runtime/position-id-registry.js.map +1 -0
  113. package/dist/runtime/run.d.ts +2 -4
  114. package/dist/runtime/run.d.ts.map +1 -1
  115. package/dist/runtime/run.js.map +1 -1
  116. package/dist/runtime/runtime-schema.d.ts +276 -588
  117. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  118. package/dist/runtime/runtime-schema.js +8 -28
  119. package/dist/runtime/runtime-schema.js.map +1 -1
  120. package/dist/runtime/runtime.d.ts +23 -9
  121. package/dist/runtime/runtime.d.ts.map +1 -1
  122. package/dist/runtime/runtime.js +276 -248
  123. package/dist/runtime/runtime.js.map +1 -1
  124. package/dist/runtime/strategy-lifecycle.d.ts.map +1 -1
  125. package/dist/runtime/strategy-lifecycle.js +13 -1
  126. package/dist/runtime/strategy-lifecycle.js.map +1 -1
  127. package/dist/runtime/supervisor/long-running-supervisor.d.ts +3 -0
  128. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  129. package/dist/runtime/supervisor/long-running-supervisor.js +27 -53
  130. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  131. package/dist/runtime-api/intake/intake-events.d.ts +44 -0
  132. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -0
  133. package/dist/runtime-api/intake/intake-events.js +131 -0
  134. package/dist/runtime-api/intake/intake-events.js.map +1 -0
  135. package/dist/runtime-api/intake/scanner-launcher.d.ts +2 -0
  136. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  137. package/dist/runtime-api/intake/scanner-launcher.js +63 -17
  138. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  139. package/dist/runtime-api/intake/scanner-registry.d.ts +3 -0
  140. package/dist/runtime-api/intake/scanner-registry.d.ts.map +1 -1
  141. package/dist/runtime-api/intake/scanner-registry.js +3 -0
  142. package/dist/runtime-api/intake/scanner-registry.js.map +1 -1
  143. package/dist/runtime-api/intake/supervisor-events.d.ts +61 -0
  144. package/dist/runtime-api/intake/supervisor-events.d.ts.map +1 -0
  145. package/dist/runtime-api/intake/supervisor-events.js +173 -0
  146. package/dist/runtime-api/intake/supervisor-events.js.map +1 -0
  147. package/dist/runtime-api/routes/signals.d.ts +1 -1
  148. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  149. package/dist/runtime-api/routes/signals.js +121 -35
  150. package/dist/runtime-api/routes/signals.js.map +1 -1
  151. package/dist/runtime-api/server.d.ts.map +1 -1
  152. package/dist/runtime-api/server.js +10 -1
  153. package/dist/runtime-api/server.js.map +1 -1
  154. package/dist/scanners/engine/data-providers.d.ts +3 -0
  155. package/dist/scanners/engine/data-providers.d.ts.map +1 -1
  156. package/dist/scanners/engine/data-providers.js.map +1 -1
  157. package/dist/scanners/engine/engine.d.ts +18 -0
  158. package/dist/scanners/engine/engine.d.ts.map +1 -1
  159. package/dist/scanners/engine/engine.js +96 -2
  160. package/dist/scanners/engine/engine.js.map +1 -1
  161. package/dist/scanners/engine/input-resolver.d.ts.map +1 -1
  162. package/dist/scanners/engine/input-resolver.js +9 -7
  163. package/dist/scanners/engine/input-resolver.js.map +1 -1
  164. package/dist/scanners/external/scaffold/scaffold.py +1 -1
  165. package/dist/scanners/external/scaffold/senpi_mcp.py +34 -16
  166. package/dist/scanners/runtime-module.d.ts +3 -0
  167. package/dist/scanners/runtime-module.d.ts.map +1 -1
  168. package/dist/scanners/runtime-module.js +7 -0
  169. package/dist/scanners/runtime-module.js.map +1 -1
  170. package/dist/scripts/run-dsl-standalone-live.js +1 -1
  171. package/dist/scripts/run-dsl-standalone-live.js.map +1 -1
  172. package/dist/senpi/client.d.ts +10 -0
  173. package/dist/senpi/client.d.ts.map +1 -1
  174. package/dist/senpi/client.js +114 -46
  175. package/dist/senpi/client.js.map +1 -1
  176. package/dist/skills-manager/bootstrap.d.ts +12 -7
  177. package/dist/skills-manager/bootstrap.d.ts.map +1 -1
  178. package/dist/skills-manager/bootstrap.js +31 -20
  179. package/dist/skills-manager/bootstrap.js.map +1 -1
  180. package/dist/skills-manager/clone-groups.d.ts +20 -0
  181. package/dist/skills-manager/clone-groups.d.ts.map +1 -0
  182. package/dist/skills-manager/clone-groups.js +45 -0
  183. package/dist/skills-manager/clone-groups.js.map +1 -0
  184. package/dist/skills-manager/constants.d.ts +5 -33
  185. package/dist/skills-manager/constants.d.ts.map +1 -1
  186. package/dist/skills-manager/constants.js +11 -50
  187. package/dist/skills-manager/constants.js.map +1 -1
  188. package/dist/skills-manager/coordinator.d.ts +26 -119
  189. package/dist/skills-manager/coordinator.d.ts.map +1 -1
  190. package/dist/skills-manager/coordinator.js +148 -349
  191. package/dist/skills-manager/coordinator.js.map +1 -1
  192. package/dist/skills-manager/fetcher.d.ts +23 -2
  193. package/dist/skills-manager/fetcher.d.ts.map +1 -1
  194. package/dist/skills-manager/fetcher.js +36 -6
  195. package/dist/skills-manager/fetcher.js.map +1 -1
  196. package/dist/skills-manager/manifest.d.ts +160 -0
  197. package/dist/skills-manager/manifest.d.ts.map +1 -0
  198. package/dist/skills-manager/manifest.js +188 -0
  199. package/dist/skills-manager/manifest.js.map +1 -0
  200. package/dist/skills-manager/skills-manifest.json +19 -0
  201. package/dist/skills-manager/types.d.ts +61 -30
  202. package/dist/skills-manager/types.d.ts.map +1 -1
  203. package/dist/skills-manager/utils.d.ts +10 -26
  204. package/dist/skills-manager/utils.d.ts.map +1 -1
  205. package/dist/skills-manager/utils.js +18 -34
  206. package/dist/skills-manager/utils.js.map +1 -1
  207. package/dist/skills-manager/version-manager.d.ts +21 -91
  208. package/dist/skills-manager/version-manager.d.ts.map +1 -1
  209. package/dist/skills-manager/version-manager.js +48 -178
  210. package/dist/skills-manager/version-manager.js.map +1 -1
  211. package/dist/skills-manager/writer.d.ts +12 -1
  212. package/dist/skills-manager/writer.d.ts.map +1 -1
  213. package/dist/skills-manager/writer.js +50 -4
  214. package/dist/skills-manager/writer.js.map +1 -1
  215. package/dist/state/state-events.d.ts +13 -0
  216. package/dist/state/state-events.d.ts.map +1 -0
  217. package/dist/state/state-events.js +22 -0
  218. package/dist/state/state-events.js.map +1 -0
  219. package/dist/state/state-manager.d.ts.map +1 -1
  220. package/dist/state/state-manager.js +14 -1
  221. package/dist/state/state-manager.js.map +1 -1
  222. package/dist/telemetry/attributes.d.ts +13 -0
  223. package/dist/telemetry/attributes.d.ts.map +1 -0
  224. package/dist/telemetry/attributes.js +22 -0
  225. package/dist/telemetry/attributes.js.map +1 -0
  226. package/dist/{tracking → telemetry}/context.d.ts +12 -5
  227. package/dist/telemetry/context.d.ts.map +1 -0
  228. package/dist/{tracking → telemetry}/context.js +4 -4
  229. package/dist/telemetry/context.js.map +1 -0
  230. package/dist/{recording/records.d.ts → telemetry/event-builders.d.ts} +145 -33
  231. package/dist/telemetry/event-builders.d.ts.map +1 -0
  232. package/dist/{recording/wiring/record-builders.js → telemetry/event-builders.js} +94 -40
  233. package/dist/telemetry/event-builders.js.map +1 -0
  234. package/dist/telemetry/event-store.d.ts +66 -0
  235. package/dist/telemetry/event-store.d.ts.map +1 -0
  236. package/dist/telemetry/event-store.js +202 -0
  237. package/dist/telemetry/event-store.js.map +1 -0
  238. package/dist/telemetry/identity.d.ts +72 -0
  239. package/dist/telemetry/identity.d.ts.map +1 -0
  240. package/dist/{recording/wiring → telemetry}/identity.js +6 -2
  241. package/dist/telemetry/identity.js.map +1 -0
  242. package/dist/telemetry/metrics.d.ts +169 -0
  243. package/dist/telemetry/metrics.d.ts.map +1 -0
  244. package/dist/telemetry/metrics.js +437 -0
  245. package/dist/telemetry/metrics.js.map +1 -0
  246. package/dist/telemetry/otel-sdk.d.ts +93 -0
  247. package/dist/telemetry/otel-sdk.d.ts.map +1 -0
  248. package/dist/telemetry/otel-sdk.js +297 -0
  249. package/dist/telemetry/otel-sdk.js.map +1 -0
  250. package/dist/telemetry/spans/constants.d.ts +12 -0
  251. package/dist/telemetry/spans/constants.d.ts.map +1 -0
  252. package/dist/telemetry/spans/constants.js +12 -0
  253. package/dist/telemetry/spans/constants.js.map +1 -0
  254. package/dist/telemetry/spans/gen-ai.d.ts +74 -0
  255. package/dist/telemetry/spans/gen-ai.d.ts.map +1 -0
  256. package/dist/telemetry/spans/gen-ai.js +339 -0
  257. package/dist/telemetry/spans/gen-ai.js.map +1 -0
  258. package/dist/telemetry/spans/index.d.ts +11 -0
  259. package/dist/telemetry/spans/index.d.ts.map +1 -0
  260. package/dist/telemetry/spans/index.js +11 -0
  261. package/dist/telemetry/spans/index.js.map +1 -0
  262. package/dist/{tracking → telemetry}/spans/redact-pii.d.ts +19 -21
  263. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -0
  264. package/dist/{tracking → telemetry}/spans/redact-pii.js +35 -32
  265. package/dist/telemetry/spans/redact-pii.js.map +1 -0
  266. package/dist/telemetry/spans/sanitize-payload.d.ts.map +1 -0
  267. package/dist/telemetry/spans/sanitize-payload.js.map +1 -0
  268. package/dist/telemetry/spans/span-hooks.d.ts +18 -0
  269. package/dist/telemetry/spans/span-hooks.d.ts.map +1 -0
  270. package/dist/telemetry/spans/span-hooks.js +764 -0
  271. package/dist/telemetry/spans/span-hooks.js.map +1 -0
  272. package/dist/telemetry/tool-plane.d.ts +31 -0
  273. package/dist/telemetry/tool-plane.d.ts.map +1 -0
  274. package/dist/telemetry/tool-plane.js +70 -0
  275. package/dist/telemetry/tool-plane.js.map +1 -0
  276. package/dist/telemetry/trace-identity.d.ts +32 -0
  277. package/dist/telemetry/trace-identity.d.ts.map +1 -0
  278. package/dist/telemetry/trace-identity.js +62 -0
  279. package/dist/telemetry/trace-identity.js.map +1 -0
  280. package/dist/telemetry/tracing.d.ts +33 -0
  281. package/dist/telemetry/tracing.d.ts.map +1 -0
  282. package/dist/telemetry/tracing.js +70 -0
  283. package/dist/telemetry/tracing.js.map +1 -0
  284. package/dist/types/dsl/index.d.ts +8 -9
  285. package/dist/types/dsl/index.d.ts.map +1 -1
  286. package/dist/types/runtime.d.ts +1 -1
  287. package/dist/types/runtime.d.ts.map +1 -1
  288. package/dist/types/scanner.d.ts +2 -0
  289. package/dist/types/scanner.d.ts.map +1 -1
  290. package/dist/utils/event-catalog.d.ts +506 -0
  291. package/dist/utils/event-catalog.d.ts.map +1 -0
  292. package/dist/utils/event-catalog.js +142 -0
  293. package/dist/utils/event-catalog.js.map +1 -0
  294. package/dist/utils/logger.d.ts +63 -5
  295. package/dist/utils/logger.d.ts.map +1 -1
  296. package/dist/utils/logger.js +360 -27
  297. package/dist/utils/logger.js.map +1 -1
  298. package/dist/utils/wallet-address.d.ts +3 -0
  299. package/dist/utils/wallet-address.d.ts.map +1 -0
  300. package/dist/utils/wallet-address.js +17 -0
  301. package/dist/utils/wallet-address.js.map +1 -0
  302. package/openclaw.plugin.json +27 -9
  303. package/package.json +9 -3
  304. package/dist/actions/tracking-helpers.d.ts +0 -28
  305. package/dist/actions/tracking-helpers.d.ts.map +0 -1
  306. package/dist/actions/tracking-helpers.js +0 -93
  307. package/dist/actions/tracking-helpers.js.map +0 -1
  308. package/dist/recording/emitter.d.ts +0 -27
  309. package/dist/recording/emitter.d.ts.map +0 -1
  310. package/dist/recording/emitter.js +0 -2
  311. package/dist/recording/emitter.js.map +0 -1
  312. package/dist/recording/identity.d.ts +0 -34
  313. package/dist/recording/identity.d.ts.map +0 -1
  314. package/dist/recording/identity.js +0 -2
  315. package/dist/recording/identity.js.map +0 -1
  316. package/dist/recording/index.d.ts +0 -11
  317. package/dist/recording/index.d.ts.map +0 -1
  318. package/dist/recording/index.js +0 -2
  319. package/dist/recording/index.js.map +0 -1
  320. package/dist/recording/noop-emitter.d.ts +0 -23
  321. package/dist/recording/noop-emitter.d.ts.map +0 -1
  322. package/dist/recording/noop-emitter.js +0 -22
  323. package/dist/recording/noop-emitter.js.map +0 -1
  324. package/dist/recording/otel/attributes.d.ts +0 -35
  325. package/dist/recording/otel/attributes.d.ts.map +0 -1
  326. package/dist/recording/otel/attributes.js +0 -131
  327. package/dist/recording/otel/attributes.js.map +0 -1
  328. package/dist/recording/otel/constants.d.ts +0 -123
  329. package/dist/recording/otel/constants.d.ts.map +0 -1
  330. package/dist/recording/otel/constants.js +0 -172
  331. package/dist/recording/otel/constants.js.map +0 -1
  332. package/dist/recording/otel/ids.d.ts +0 -25
  333. package/dist/recording/otel/ids.d.ts.map +0 -1
  334. package/dist/recording/otel/ids.js +0 -37
  335. package/dist/recording/otel/ids.js.map +0 -1
  336. package/dist/recording/otel/index.d.ts +0 -13
  337. package/dist/recording/otel/index.d.ts.map +0 -1
  338. package/dist/recording/otel/index.js +0 -9
  339. package/dist/recording/otel/index.js.map +0 -1
  340. package/dist/recording/otel/mappers.d.ts +0 -100
  341. package/dist/recording/otel/mappers.d.ts.map +0 -1
  342. package/dist/recording/otel/mappers.js +0 -683
  343. package/dist/recording/otel/mappers.js.map +0 -1
  344. package/dist/recording/otel/otel-emitter.d.ts +0 -43
  345. package/dist/recording/otel/otel-emitter.d.ts.map +0 -1
  346. package/dist/recording/otel/otel-emitter.js +0 -99
  347. package/dist/recording/otel/otel-emitter.js.map +0 -1
  348. package/dist/recording/otel/redaction.d.ts +0 -47
  349. package/dist/recording/otel/redaction.d.ts.map +0 -1
  350. package/dist/recording/otel/redaction.js +0 -88
  351. package/dist/recording/otel/redaction.js.map +0 -1
  352. package/dist/recording/records.d.ts.map +0 -1
  353. package/dist/recording/records.js +0 -14
  354. package/dist/recording/records.js.map +0 -1
  355. package/dist/recording/transport/batcher.d.ts +0 -59
  356. package/dist/recording/transport/batcher.d.ts.map +0 -1
  357. package/dist/recording/transport/batcher.js +0 -234
  358. package/dist/recording/transport/batcher.js.map +0 -1
  359. package/dist/recording/transport/client.d.ts +0 -41
  360. package/dist/recording/transport/client.d.ts.map +0 -1
  361. package/dist/recording/transport/client.js +0 -69
  362. package/dist/recording/transport/client.js.map +0 -1
  363. package/dist/recording/transport/config.d.ts +0 -53
  364. package/dist/recording/transport/config.d.ts.map +0 -1
  365. package/dist/recording/transport/config.js +0 -41
  366. package/dist/recording/transport/config.js.map +0 -1
  367. package/dist/recording/transport/index.d.ts +0 -16
  368. package/dist/recording/transport/index.d.ts.map +0 -1
  369. package/dist/recording/transport/index.js +0 -12
  370. package/dist/recording/transport/index.js.map +0 -1
  371. package/dist/recording/transport/rows.d.ts +0 -88
  372. package/dist/recording/transport/rows.d.ts.map +0 -1
  373. package/dist/recording/transport/rows.js +0 -15
  374. package/dist/recording/transport/rows.js.map +0 -1
  375. package/dist/recording/wiring/emitter-factory.d.ts +0 -39
  376. package/dist/recording/wiring/emitter-factory.d.ts.map +0 -1
  377. package/dist/recording/wiring/emitter-factory.js +0 -62
  378. package/dist/recording/wiring/emitter-factory.js.map +0 -1
  379. package/dist/recording/wiring/identity.d.ts +0 -27
  380. package/dist/recording/wiring/identity.d.ts.map +0 -1
  381. package/dist/recording/wiring/identity.js.map +0 -1
  382. package/dist/recording/wiring/index.d.ts +0 -12
  383. package/dist/recording/wiring/index.d.ts.map +0 -1
  384. package/dist/recording/wiring/index.js +0 -9
  385. package/dist/recording/wiring/index.js.map +0 -1
  386. package/dist/recording/wiring/record-builders.d.ts +0 -107
  387. package/dist/recording/wiring/record-builders.d.ts.map +0 -1
  388. package/dist/recording/wiring/record-builders.js.map +0 -1
  389. package/dist/recording/wiring/subscriber.d.ts +0 -28
  390. package/dist/recording/wiring/subscriber.d.ts.map +0 -1
  391. package/dist/recording/wiring/subscriber.js +0 -173
  392. package/dist/recording/wiring/subscriber.js.map +0 -1
  393. package/dist/recording/wiring/values.d.ts +0 -19
  394. package/dist/recording/wiring/values.d.ts.map +0 -1
  395. package/dist/recording/wiring/values.js +0 -49
  396. package/dist/recording/wiring/values.js.map +0 -1
  397. package/dist/tracking/build-rehydrate-items.d.ts +0 -15
  398. package/dist/tracking/build-rehydrate-items.d.ts.map +0 -1
  399. package/dist/tracking/build-rehydrate-items.js +0 -19
  400. package/dist/tracking/build-rehydrate-items.js.map +0 -1
  401. package/dist/tracking/constants.d.ts +0 -24
  402. package/dist/tracking/constants.d.ts.map +0 -1
  403. package/dist/tracking/constants.js +0 -52
  404. package/dist/tracking/constants.js.map +0 -1
  405. package/dist/tracking/context.d.ts.map +0 -1
  406. package/dist/tracking/context.js.map +0 -1
  407. package/dist/tracking/index.d.ts +0 -16
  408. package/dist/tracking/index.d.ts.map +0 -1
  409. package/dist/tracking/index.js +0 -11
  410. package/dist/tracking/index.js.map +0 -1
  411. package/dist/tracking/plugin-event-tracker.d.ts +0 -13
  412. package/dist/tracking/plugin-event-tracker.d.ts.map +0 -1
  413. package/dist/tracking/plugin-event-tracker.js +0 -27
  414. package/dist/tracking/plugin-event-tracker.js.map +0 -1
  415. package/dist/tracking/position-id-registry.d.ts.map +0 -1
  416. package/dist/tracking/position-id-registry.js.map +0 -1
  417. package/dist/tracking/spans/constants.d.ts +0 -19
  418. package/dist/tracking/spans/constants.d.ts.map +0 -1
  419. package/dist/tracking/spans/constants.js +0 -31
  420. package/dist/tracking/spans/constants.js.map +0 -1
  421. package/dist/tracking/spans/fan-out-span-transport.d.ts +0 -22
  422. package/dist/tracking/spans/fan-out-span-transport.d.ts.map +0 -1
  423. package/dist/tracking/spans/fan-out-span-transport.js +0 -49
  424. package/dist/tracking/spans/fan-out-span-transport.js.map +0 -1
  425. package/dist/tracking/spans/index.d.ts +0 -13
  426. package/dist/tracking/spans/index.d.ts.map +0 -1
  427. package/dist/tracking/spans/index.js +0 -16
  428. package/dist/tracking/spans/index.js.map +0 -1
  429. package/dist/tracking/spans/otel/fit-row-budget.d.ts +0 -22
  430. package/dist/tracking/spans/otel/fit-row-budget.d.ts.map +0 -1
  431. package/dist/tracking/spans/otel/fit-row-budget.js +0 -91
  432. package/dist/tracking/spans/otel/fit-row-budget.js.map +0 -1
  433. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts +0 -16
  434. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts.map +0 -1
  435. package/dist/tracking/spans/otel/map-span-to-trace-row.js +0 -227
  436. package/dist/tracking/spans/otel/map-span-to-trace-row.js.map +0 -1
  437. package/dist/tracking/spans/otel/recording-span-transport.d.ts +0 -43
  438. package/dist/tracking/spans/otel/recording-span-transport.d.ts.map +0 -1
  439. package/dist/tracking/spans/otel/recording-span-transport.js +0 -67
  440. package/dist/tracking/spans/otel/recording-span-transport.js.map +0 -1
  441. package/dist/tracking/spans/otel/span-ids.d.ts +0 -22
  442. package/dist/tracking/spans/otel/span-ids.d.ts.map +0 -1
  443. package/dist/tracking/spans/otel/span-ids.js +0 -32
  444. package/dist/tracking/spans/otel/span-ids.js.map +0 -1
  445. package/dist/tracking/spans/plugin-span-tracker.d.ts +0 -9
  446. package/dist/tracking/spans/plugin-span-tracker.d.ts.map +0 -1
  447. package/dist/tracking/spans/plugin-span-tracker.js +0 -115
  448. package/dist/tracking/spans/plugin-span-tracker.js.map +0 -1
  449. package/dist/tracking/spans/redact-pii.d.ts.map +0 -1
  450. package/dist/tracking/spans/redact-pii.js.map +0 -1
  451. package/dist/tracking/spans/sanitize-payload.d.ts.map +0 -1
  452. package/dist/tracking/spans/sanitize-payload.js.map +0 -1
  453. package/dist/tracking/spans/span-hooks.d.ts +0 -28
  454. package/dist/tracking/spans/span-hooks.d.ts.map +0 -1
  455. package/dist/tracking/spans/span-hooks.js +0 -409
  456. package/dist/tracking/spans/span-hooks.js.map +0 -1
  457. package/dist/tracking/spans/span-tracker.d.ts +0 -133
  458. package/dist/tracking/spans/span-tracker.d.ts.map +0 -1
  459. package/dist/tracking/spans/span-tracker.js +0 -721
  460. package/dist/tracking/spans/span-tracker.js.map +0 -1
  461. package/dist/tracking/spans/span-transport.d.ts +0 -71
  462. package/dist/tracking/spans/span-transport.d.ts.map +0 -1
  463. package/dist/tracking/spans/span-transport.js +0 -240
  464. package/dist/tracking/spans/span-transport.js.map +0 -1
  465. package/dist/tracking/spans/types.d.ts +0 -101
  466. package/dist/tracking/spans/types.d.ts.map +0 -1
  467. package/dist/tracking/spans/types.js +0 -6
  468. package/dist/tracking/spans/types.js.map +0 -1
  469. package/dist/tracking/tracker.d.ts +0 -30
  470. package/dist/tracking/tracker.d.ts.map +0 -1
  471. package/dist/tracking/tracker.js +0 -66
  472. package/dist/tracking/tracker.js.map +0 -1
  473. package/dist/tracking/tracking-handler.d.ts +0 -12
  474. package/dist/tracking/tracking-handler.d.ts.map +0 -1
  475. package/dist/tracking/tracking-handler.js +0 -148
  476. package/dist/tracking/tracking-handler.js.map +0 -1
  477. package/dist/tracking/transport.d.ts +0 -35
  478. package/dist/tracking/transport.d.ts.map +0 -1
  479. package/dist/tracking/transport.js +0 -133
  480. package/dist/tracking/transport.js.map +0 -1
  481. package/dist/tracking/types.d.ts +0 -21
  482. package/dist/tracking/types.d.ts.map +0 -1
  483. package/dist/tracking/types.js +0 -6
  484. package/dist/tracking/types.js.map +0 -1
  485. /package/dist/{tracking → telemetry}/spans/sanitize-payload.d.ts +0 -0
  486. /package/dist/{tracking → telemetry}/spans/sanitize-payload.js +0 -0
@@ -0,0 +1,67 @@
1
+ import type { ActionResult, ActionType, DecisionMode, HookEvent, ScanResult } from './types.js';
2
+ import type { HookSystem } from '../types/hooks.js';
3
+ import { EVENT_NAME } from '../utils/event-catalog.js';
4
+ import { type EmittableEvent } from './event-derivation.js';
5
+ import type { PositionIdResolver } from '../telemetry/event-builders.js';
6
+ import { type PositionIdRegistry } from '../runtime/position-id-registry.js';
7
+ /** Discriminator for the three order events the descriptor builder maps to event-log records. */
8
+ export type OrderEventName = 'order.placed' | 'order.filled' | 'order.failed';
9
+ /**
10
+ * Pure: the deterministic narrative + safe scalar attributes for an order event, from its `data`
11
+ * bag. `order.failed` routes the venue error payload (free-text) to `redact`; everything else is a
12
+ * safe scalar. Returns `null` when the payload carries no asset — `senpi.asset` is a required
13
+ * attribute and an order event without one carries nothing queryable, so it is dropped rather than
14
+ * emitted with a placeholder. Live sites always pass a real asset;
15
+ * this is a defensive-only branch. Exported for unit-testing the emitted event shape without a logger.
16
+ */
17
+ export declare function buildOrderEventDescriptor(type: OrderEventName, data: Record<string, unknown>): EmittableEvent<typeof EVENT_NAME.orderPlaced | typeof EVENT_NAME.orderFilled | typeof EVENT_NAME.orderFailed> | null;
18
+ export interface ActionEventContext {
19
+ hookSystem: HookSystem;
20
+ actionName: string;
21
+ actionType: ActionType;
22
+ decisionMode: DecisionMode;
23
+ decisionModel?: string;
24
+ minConfidence?: number;
25
+ /**
26
+ * Read-only (address, dex, asset) → live position.id accessor over the PositionIdRegistry. Lets the
27
+ * `signal.outcome` events carry `senpi.position.id`, resolved via the PositionIdRegistry.
28
+ * Absent → the event simply omits the id (best-effort join hint).
29
+ */
30
+ resolvePositionId?: PositionIdResolver;
31
+ }
32
+ /** Fields an action supplies to build its {@link ActionEventContext} — the shared shape behind both actions' `eventCtx()`. */
33
+ export interface ActionEventContextInputs {
34
+ hookSystem: HookSystem;
35
+ actionName: string;
36
+ actionType: ActionType;
37
+ decisionMode: DecisionMode;
38
+ decisionModel?: string;
39
+ minConfidence?: number;
40
+ /** PositionIdRegistry, if wired. Absent → events omit `senpi.position.id` (best-effort join hint). */
41
+ positionIdRegistry?: PositionIdRegistry;
42
+ }
43
+ /**
44
+ * Shared factory for the per-action event context. Both the open- and close-position actions
45
+ * derive an identical context (only their own name/type/config/registry differ), so the
46
+ * construction lives here once rather than being duplicated in each action's `eventCtx()`.
47
+ */
48
+ export declare function buildActionEventContext(inputs: ActionEventContextInputs): ActionEventContext;
49
+ /** `order.placed` — an order was submitted / is resting. Reads only values already in scope. */
50
+ export declare function emitOrderPlaced(_hookSystem: HookSystem, _event: HookEvent, _address: string, data: Record<string, unknown>): void;
51
+ /** `order.filled` — a fill was confirmed. */
52
+ export declare function emitOrderFilled(_hookSystem: HookSystem, _event: HookEvent, _address: string, data: Record<string, unknown>): void;
53
+ /** `order.failed` — the venue rejected the order or the submit threw. */
54
+ export declare function emitOrderFailed(_hookSystem: HookSystem, _event: HookEvent, _address: string, data: Record<string, unknown>): void;
55
+ /** Fields an action supplies to build its per-pass scan provenance for the action-result event log. */
56
+ export interface ActionResultExtras {
57
+ scanResult?: ScanResult;
58
+ minConfidence?: number;
59
+ }
60
+ /**
61
+ * First-class event log for one action-result pass: decision.made + per-signal signal.outcome,
62
+ * derived from the assembled pass payload. The array is built fully inside emitEvents' guard, then
63
+ * emitted in one synchronous loop, so a throw can't leave a partial pair and the event log can't
64
+ * disturb the action path.
65
+ */
66
+ export declare function emitActionResultEvents(ctx: ActionEventContext, event: HookEvent, address: string, result: ActionResult, extras?: ActionResultExtras): void;
67
+ //# sourceMappingURL=action-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-events.d.ts","sourceRoot":"","sources":["../../src/actions/action-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAsD,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAmD,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAKlG,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,cAAc,CAAC,OAAO,UAAU,CAAC,WAAW,GAAG,OAAO,UAAU,CAAC,WAAW,GAAG,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CA2CtH;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED,8HAA8H;AAC9H,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CAa5F;AA+BD,gGAAgG;AAChG,wBAAgB,eAAe,CAC7B,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAEN;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAEN;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAEN;AAED,uGAAuG;AACvG,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,IAAI,CAmBN"}
@@ -0,0 +1,164 @@
1
+ import { createLogger } from '../utils/logger.js';
2
+ import { EVENT_NAME, JOIN_ATTR, eventAttrs, fmtThousands } from '../utils/event-catalog.js';
3
+ import { deriveActionResultEvents, emitEvent, emitEvents } from './event-derivation.js';
4
+ import { str, num, bool } from '../telemetry/event-builders.js';
5
+ import { positionRegistryKey } from '../runtime/position-id-registry.js';
6
+ import { recordOrder, recordDecision, recordSignalOutcome } from '../telemetry/metrics.js';
7
+ const eventLog = createLogger('[senpi-core][action-events]');
8
+ /**
9
+ * Pure: the deterministic narrative + safe scalar attributes for an order event, from its `data`
10
+ * bag. `order.failed` routes the venue error payload (free-text) to `redact`; everything else is a
11
+ * safe scalar. Returns `null` when the payload carries no asset — `senpi.asset` is a required
12
+ * attribute and an order event without one carries nothing queryable, so it is dropped rather than
13
+ * emitted with a placeholder. Live sites always pass a real asset;
14
+ * this is a defensive-only branch. Exported for unit-testing the emitted event shape without a logger.
15
+ */
16
+ export function buildOrderEventDescriptor(type, data) {
17
+ const asset = str(data.asset);
18
+ if (asset === undefined)
19
+ return null;
20
+ const direction = str(data.direction);
21
+ const dirTag = direction ? ` ${direction}` : '';
22
+ const size = num(data.size);
23
+ const fillPrice = num(data.fillPrice);
24
+ const fillSize = num(data.fillSize);
25
+ const attributes = eventAttrs({
26
+ [JOIN_ATTR.orderId]: str(data.orderId),
27
+ [JOIN_ATTR.positionId]: str(data.__positionId),
28
+ 'senpi.asset': asset,
29
+ 'senpi.order.direction': direction,
30
+ 'senpi.order.type': str(data.orderType),
31
+ 'senpi.order.size': size,
32
+ 'senpi.order.reduce_only': bool(data.reduceOnly),
33
+ 'senpi.order.fill_price': fillPrice,
34
+ 'senpi.order.fill_size': fillSize,
35
+ 'senpi.order.execution_as_maker': bool(data.executionAsMaker),
36
+ 'senpi.order.reason': str(data.reason),
37
+ 'senpi.order.error_name': str(data.errorName),
38
+ });
39
+ if (type === 'order.placed') {
40
+ const qty = size !== undefined ? ` ${size}` : '';
41
+ return { name: EVENT_NAME.orderPlaced, level: 'info', body: `Placed ${asset}${dirTag}${qty}`, attributes };
42
+ }
43
+ if (type === 'order.filled') {
44
+ const qty = fillSize !== undefined ? ` ${fillSize}` : size !== undefined ? ` ${size}` : '';
45
+ const at = fillPrice !== undefined ? ` @ ${fmtThousands(fillPrice)}` : '';
46
+ return { name: EVENT_NAME.orderFilled, level: 'info', body: `Filled ${asset}${dirTag}${qty}${at}`, attributes };
47
+ }
48
+ // order.failed — the venue error payload is free-text → `redact`; the reason code is a safe scalar.
49
+ const reason = str(data.reason);
50
+ const error = str(data.error);
51
+ return {
52
+ name: EVENT_NAME.orderFailed,
53
+ level: 'error',
54
+ body: `Order failed: ${asset}${dirTag}${reason ? ` (${reason})` : ''}`,
55
+ attributes,
56
+ ...(error ? { redact: { error } } : {}),
57
+ };
58
+ }
59
+ /**
60
+ * Shared factory for the per-action event context. Both the open- and close-position actions
61
+ * derive an identical context (only their own name/type/config/registry differ), so the
62
+ * construction lives here once rather than being duplicated in each action's `eventCtx()`.
63
+ */
64
+ export function buildActionEventContext(inputs) {
65
+ const registry = inputs.positionIdRegistry;
66
+ return {
67
+ hookSystem: inputs.hookSystem,
68
+ actionName: inputs.actionName,
69
+ actionType: inputs.actionType,
70
+ decisionMode: inputs.decisionMode,
71
+ decisionModel: inputs.decisionModel,
72
+ minConfidence: inputs.minConfidence,
73
+ resolvePositionId: registry
74
+ ? (address, dex, asset) => registry.get(positionRegistryKey(address, dex, asset))?.positionId
75
+ : undefined,
76
+ };
77
+ }
78
+ /** The signal projection echoed onto the action_result event log, or null when no scan result. */
79
+ function projectScannerSignals(scanResult) {
80
+ return scanResult?.signals?.map((s) => ({
81
+ asset: s.asset,
82
+ direction: s.direction,
83
+ score: s.score,
84
+ signalType: s.signalType,
85
+ factors: s.factors,
86
+ meta: s.meta,
87
+ })) ?? null;
88
+ }
89
+ /**
90
+ * First-class order-event emit (`order.placed` / `order.filled` / `order.failed`) at the existing
91
+ * submission/success/failure points. The build runs inside emitEvent's guard so the event log can
92
+ * never disturb the order path. A payload with no asset yields no descriptor — dropped, not emitted
93
+ * with a placeholder.
94
+ */
95
+ function emitOrderEvent(type, data) {
96
+ emitEvent(eventLog, () => buildOrderEventDescriptor(type, data));
97
+ const outcome = type === 'order.placed' ? 'placed' : type === 'order.filled' ? 'filled' : 'failed';
98
+ recordOrder({
99
+ asset: str(data.asset),
100
+ outcome,
101
+ reason: outcome === 'failed' ? str(data.reason) : undefined,
102
+ errorType: outcome === 'failed' ? str(data.errorName) : undefined,
103
+ });
104
+ }
105
+ /** `order.placed` — an order was submitted / is resting. Reads only values already in scope. */
106
+ export function emitOrderPlaced(_hookSystem, _event, _address, data) {
107
+ emitOrderEvent('order.placed', data);
108
+ }
109
+ /** `order.filled` — a fill was confirmed. */
110
+ export function emitOrderFilled(_hookSystem, _event, _address, data) {
111
+ emitOrderEvent('order.filled', data);
112
+ }
113
+ /** `order.failed` — the venue rejected the order or the submit threw. */
114
+ export function emitOrderFailed(_hookSystem, _event, _address, data) {
115
+ emitOrderEvent('order.failed', data);
116
+ }
117
+ /**
118
+ * First-class event log for one action-result pass: decision.made + per-signal signal.outcome,
119
+ * derived from the assembled pass payload. The array is built fully inside emitEvents' guard, then
120
+ * emitted in one synchronous loop, so a throw can't leave a partial pair and the event log can't
121
+ * disturb the action path.
122
+ */
123
+ export function emitActionResultEvents(ctx, event, address, result, extras) {
124
+ const data = {
125
+ actionName: ctx.actionName,
126
+ result,
127
+ scannerId: extras?.scanResult?.scannerId ?? null,
128
+ scannerSignals: projectScannerSignals(extras?.scanResult),
129
+ minConfidence: extras?.minConfidence ?? ctx.minConfidence ?? 1,
130
+ runId: event.data.__scanRunId ?? null,
131
+ };
132
+ emitEvents(eventLog, () => {
133
+ const events = deriveActionResultEvents({
134
+ payload: { address, data, timestamp: new Date().toISOString() },
135
+ nowMs: Date.now(),
136
+ resolvePositionId: ctx.resolvePositionId,
137
+ });
138
+ recordActionResultMetrics(events);
139
+ return events;
140
+ });
141
+ }
142
+ /**
143
+ * Metric plane for one action-result pass: the `decision.made` counter/duration and one `signal.outcome`
144
+ * count per evaluated signal — read straight off the derived event attributes so the metric and the
145
+ * event-log share their dimensions. Runs inside `emitEvents`' guard; recorders are themselves guarded.
146
+ */
147
+ function recordActionResultMetrics(events) {
148
+ for (const ev of events) {
149
+ if (ev.name === EVENT_NAME.decisionMade) {
150
+ const a = ev.attributes;
151
+ recordDecision({
152
+ mode: a?.['senpi.decision.mode'],
153
+ intent: a?.['senpi.decision.intent'],
154
+ byLlm: a?.['senpi.decision.by_llm'],
155
+ });
156
+ }
157
+ else if (ev.name === EVENT_NAME.signalOutcome) {
158
+ const a = ev.attributes;
159
+ if (a)
160
+ recordSignalOutcome({ result: a['senpi.outcome.result'], reasonCode: a['senpi.outcome.reason_code'] });
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=action-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-events.js","sourceRoot":"","sources":["../../src/actions/action-events.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare class ClosePositionAction implements Action {
7
7
  readonly actionType: "CLOSE_POSITION";
8
8
  private decisionEngine;
9
9
  constructor(config: ActionConfig, context: RuntimeContext);
10
- private trackingCtx;
10
+ private eventCtx;
11
11
  handle(event: HookEvent): Promise<ActionResult>;
12
12
  private normalizeSignals;
13
13
  private handleSignals;
@@ -1 +1 @@
1
- {"version":3,"file":"close-position.action.d.ts","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EAEV,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAa3D,qBAAa,mBAAoB,YAAW,MAAM;IAO9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAPjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAG,gBAAgB,CAAU;IAEhD,OAAO,CAAC,cAAc,CAAiB;gBAG7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc;IASjC,OAAO,CAAC,WAAW;IAWb,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAuMrD,OAAO,CAAC,gBAAgB;YAQV,aAAa;CA8H5B;AAID,eAAO,MAAM,oBAAoB,EAAE,aACO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,cAMnC,CAAC"}
1
+ {"version":3,"file":"close-position.action.d.ts","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EAEV,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAe3D,qBAAa,mBAAoB,YAAW,MAAM;IAO9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAPjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAG,gBAAgB,CAAU;IAEhD,OAAO,CAAC,cAAc,CAAiB;gBAG7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc;IASjC,OAAO,CAAC,QAAQ;IAYV,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAqLrD,OAAO,CAAC,gBAAgB;YAQV,aAAa;CAsJ5B;AAID,eAAO,MAAM,oBAAoB,EAAE,aACO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,cAMnC,CAAC"}
@@ -5,8 +5,10 @@ import { interpolatePrompt } from '../../context/interpolate.js';
5
5
  import { formatDecisionErrorNotification } from '../../runtime/notifications.js';
6
6
  import { createLogger } from '../../utils/logger.js';
7
7
  import { resolveCloseOrderType, resolveFeeOptimizedLimitOptions } from '../../utils/resolve-order-type.js';
8
- import { emitTrackingDecision, emitTrackingActionResult, emitOrderPlaced, emitOrderFilled, emitOrderFailed } from '../tracking-helpers.js';
8
+ import { emitActionResultEvents, emitOrderPlaced, emitOrderFilled, emitOrderFailed, buildActionEventContext } from '../action-events.js';
9
9
  import { parseCloseFillDetail } from '../../senpi/client.js';
10
+ import { withSpan } from '../../telemetry/tracing.js';
11
+ import { SpanStatusCode } from '@opentelemetry/api';
10
12
  const logger = createLogger('[actions][close-position]');
11
13
  // ─── Close Position Action ───────────────────────────────────────────────────
12
14
  export class ClosePositionAction {
@@ -24,19 +26,18 @@ export class ClosePositionAction {
24
26
  this.decisionEngine.register(new RuleDecisionStrategy());
25
27
  this.decisionEngine.register(new NoDecisionStrategy());
26
28
  }
27
- trackingCtx() {
28
- return {
29
+ eventCtx() {
30
+ return buildActionEventContext({
29
31
  hookSystem: this.context.hookSystem,
30
32
  actionName: this.name,
31
33
  actionType: this.actionType,
32
34
  decisionMode: this.config.decision_mode,
33
35
  decisionModel: this.config.decision_model,
34
36
  minConfidence: this.config.min_confidence,
35
- };
37
+ positionIdRegistry: this.context.positionIdRegistry,
38
+ });
36
39
  }
37
40
  async handle(event) {
38
- // Telemetry: pass start = "action began handling the scan event" (NOT "LLM call dispatched").
39
- const decisionStartedAt = Date.now();
40
41
  logger.info('handling close position', event);
41
42
  if (event.type !== HOOK_EVENT.ON_SIGNAL_DETECTED) {
42
43
  return {
@@ -86,8 +87,7 @@ export class ClosePositionAction {
86
87
  dex: typeof this.config.params.dex === 'string' ? this.config.params.dex : undefined,
87
88
  score: 1,
88
89
  }];
89
- // No decision phase ran on this path: stamp the handling start only (no decisionEndedAt).
90
- return this.handleSignals(signals, address, event, strategyState, undefined, undefined, { scanResult, decisionStartedAt });
90
+ return this.handleSignals(signals, address, event, strategyState, undefined, undefined, { scanResult });
91
91
  }
92
92
  // ── Decision engine path ──
93
93
  const providerRequest = {
@@ -109,7 +109,6 @@ export class ClosePositionAction {
109
109
  })
110
110
  : undefined;
111
111
  let decision;
112
- let decisionEndedAt;
113
112
  try {
114
113
  decision = await this.decisionEngine.decide(this.config.decision_mode, {
115
114
  prompt: interpolatedPrompt,
@@ -118,10 +117,8 @@ export class ClosePositionAction {
118
117
  actionType: this.actionType,
119
118
  event,
120
119
  });
121
- decisionEndedAt = Date.now();
122
120
  }
123
121
  catch (error) {
124
- decisionEndedAt = Date.now();
125
122
  const message = error instanceof Error ? error.message : String(error);
126
123
  logger.error('decision error', message);
127
124
  const notificationMessage = formatDecisionErrorNotification(message, {
@@ -129,8 +126,7 @@ export class ClosePositionAction {
129
126
  model: this.config.decision_model,
130
127
  });
131
128
  await this.context.notifications.notify(notificationMessage).catch(() => { });
132
- const trackingCtx = this.trackingCtx();
133
- emitTrackingDecision(trackingCtx, event, address, scanResult, { error: message }, undefined, interpolatedPrompt, contextData);
129
+ const eventCtx = this.eventCtx();
134
130
  const errorResult = {
135
131
  success: false,
136
132
  action_type: this.actionType,
@@ -149,14 +145,13 @@ export class ClosePositionAction {
149
145
  _decisionPrompt: interpolatedPrompt ?? null,
150
146
  },
151
147
  };
152
- emitTrackingActionResult(trackingCtx, event, address, errorResult, { scanResult, decisionStartedAt, decisionEndedAt });
148
+ emitActionResultEvents(eventCtx, event, address, errorResult, { scanResult });
153
149
  return errorResult;
154
150
  }
155
- const trackingCtx = this.trackingCtx();
151
+ const eventCtx = this.eventCtx();
156
152
  const minConfidence = this.config.min_confidence ?? 1;
157
- const trackingExtras = { scanResult, decisionStartedAt, decisionEndedAt, minConfidence };
153
+ const trackingExtras = { scanResult, minConfidence };
158
154
  const isBelowConfidence = decision.execute && decision.confidence < minConfidence;
159
- emitTrackingDecision(trackingCtx, event, address, scanResult, decision, minConfidence, interpolatedPrompt, contextData, isBelowConfidence ? 'below_confidence' : undefined);
160
155
  if (!decision.execute) {
161
156
  logger.info('decision no execute', decision);
162
157
  const rejectedResult = {
@@ -172,7 +167,7 @@ export class ClosePositionAction {
172
167
  _decisionPrompt: interpolatedPrompt ?? null,
173
168
  },
174
169
  };
175
- emitTrackingActionResult(trackingCtx, event, address, rejectedResult, trackingExtras);
170
+ emitActionResultEvents(eventCtx, event, address, rejectedResult, trackingExtras);
176
171
  return rejectedResult;
177
172
  }
178
173
  if (isBelowConfidence) {
@@ -189,7 +184,7 @@ export class ClosePositionAction {
189
184
  _decisionPrompt: interpolatedPrompt ?? null,
190
185
  },
191
186
  };
192
- emitTrackingActionResult(trackingCtx, event, address, belowConfResult, trackingExtras);
187
+ emitActionResultEvents(eventCtx, event, address, belowConfResult, trackingExtras);
193
188
  return belowConfResult;
194
189
  }
195
190
  // ── Unified signals path ──
@@ -203,7 +198,7 @@ export class ClosePositionAction {
203
198
  error: 'invalid_payload',
204
199
  data: { _decisionMeta: meta, _decisionPrompt: interpolatedPrompt ?? null },
205
200
  };
206
- emitTrackingActionResult(trackingCtx, event, address, invalidPayloadResult, trackingExtras);
201
+ emitActionResultEvents(eventCtx, event, address, invalidPayloadResult, trackingExtras);
207
202
  return invalidPayloadResult;
208
203
  }
209
204
  return this.handleSignals(signals, address, event, strategyState, meta, interpolatedPrompt, trackingExtras);
@@ -225,76 +220,103 @@ export class ClosePositionAction {
225
220
  ? resolveFeeOptimizedLimitOptions(this.config.params?.fee_optimized_limit_options)
226
221
  : undefined;
227
222
  for (const signal of signals) {
228
- // Telemetry: per-signal work window — every result entry below carries startedAt/endedAt.
229
- const signalStartedAt = Date.now();
230
223
  const asset = signal.asset;
231
- const signalDex = signal.dex;
232
- const dexForHook = typeof signalDex === 'string' && signalDex.trim() !== '' ? signalDex.trim() : undefined;
233
- const reason = signal.reason ?? signal.signalType ?? 'action_close';
234
- if (!strategyState.hasOpenPosition(asset, dexForHook)) {
235
- results.push({ asset, dex: dexForHook ?? null, orderType, success: true, reason: 'no_open_position', startedAt: signalStartedAt, endedAt: Date.now() });
236
- continue;
237
- }
238
- try {
239
- logger.info('closing position', { wallet: address, asset });
240
- const closeResult = await this.context.senpi.closePosition(address, asset, { reason, dex: dexForHook, orderType, feeOptimizedLimitOptions });
241
- // Closing-order detail (venue order id, fill price/size) — data-only stamps for the
242
- // lifecycle/signal telemetry; the venue order id is the ledger join key.
243
- const fill = parseCloseFillDetail(closeResult);
244
- await this.context.hookSystem.fire({
245
- type: HOOK_EVENT.ON_POSITION_CLOSED,
246
- runtimeName: event.runtimeName,
247
- address,
248
- data: {
249
- asset,
250
- wallet: address,
251
- reason: 'action_close',
252
- closeReason: reason,
253
- orderType,
254
- ...(dexForHook != null ? { dex: dexForHook } : {}),
255
- ...fill,
256
- __correlationId: event.data.__correlationId,
257
- },
258
- timestamp: new Date().toISOString(),
259
- });
260
- results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: true, reason, ...fill, startedAt: signalStartedAt, endedAt: Date.now() });
261
- // Task 8a order-event log (additive, fire-and-forget). A close is a reduce-only order;
262
- // close signals may lack a direction, so it is omitted. Emits placed + filled from `fill`.
263
- emitOrderPlaced(this.context.hookSystem, event, address, {
264
- orderId: fill.orderId,
265
- orderType,
266
- asset,
267
- size: fill.closedSize,
268
- reduceOnly: true,
269
- });
270
- // Only a confirmed fill is `order.filled` — a fee-optimized-limit close the venue accepts
271
- // but leaves resting returns no closedPrice/closedSize, so emitting filled there would be a
272
- // phantom fill (mirrors open-position's `if (submittedOrder?.filled)` guard).
273
- if (fill.closedPrice !== undefined && fill.closedSize !== undefined) {
274
- emitOrderFilled(this.context.hookSystem, event, address, {
224
+ await withSpan('signal.evaluation', { 'senpi.signal.asset': asset }, async (span) => {
225
+ // Stamp the per-terminal outcome on the evaluation span; ERROR status carries the reason.
226
+ const outcome = (result, reasonCode, errorMessage) => {
227
+ span.setAttribute('senpi.outcome.result', result);
228
+ span.setAttribute('senpi.outcome.reason_code', reasonCode);
229
+ if (errorMessage !== undefined) {
230
+ span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
231
+ }
232
+ };
233
+ // Telemetry: per-signal work window — every result entry below carries startedAt/endedAt.
234
+ const signalStartedAt = Date.now();
235
+ const signalDex = signal.dex;
236
+ const dexForHook = typeof signalDex === 'string' && signalDex.trim() !== '' ? signalDex.trim() : undefined;
237
+ const reason = signal.reason ?? signal.signalType ?? 'action_close';
238
+ if (!strategyState.hasOpenPosition(asset, dexForHook)) {
239
+ results.push({ asset, dex: dexForHook ?? null, orderType, success: true, reason: 'no_open_position', startedAt: signalStartedAt, endedAt: Date.now() });
240
+ outcome('skipped', 'no_open_position');
241
+ return;
242
+ }
243
+ try {
244
+ logger.info('closing position', { wallet: address, asset });
245
+ // Closing-order detail (venue order id, fill price/size) — data-only stamps for the
246
+ // lifecycle/signal telemetry; the venue order id is the ledger join key.
247
+ const fill = await withSpan('mcp.closePosition', { 'senpi.signal.asset': asset }, async (mcpSpan) => {
248
+ const closeResult = await this.context.senpi.closePosition(address, asset, { reason, dex: dexForHook, orderType, feeOptimizedLimitOptions });
249
+ // A throw signals failure (no success flag) and is auto-recorded by withSpan;
250
+ // only the success case is annotated here.
251
+ const f = parseCloseFillDetail(closeResult);
252
+ if (f.orderId !== undefined)
253
+ mcpSpan.setAttribute('senpi.order.id', f.orderId);
254
+ if (f.closedSize !== undefined)
255
+ mcpSpan.setAttribute('senpi.order.size', f.closedSize);
256
+ if (f.executionAsMaker != null)
257
+ mcpSpan.setAttribute('senpi.outcome.execution_as_maker', f.executionAsMaker);
258
+ mcpSpan.addEvent('order.placed');
259
+ if (f.closedPrice !== undefined && f.closedSize !== undefined) {
260
+ mcpSpan.addEvent('order.filled');
261
+ }
262
+ return f;
263
+ });
264
+ await this.context.hookSystem.fire({
265
+ type: HOOK_EVENT.ON_POSITION_CLOSED,
266
+ runtimeName: event.runtimeName,
267
+ address,
268
+ data: {
269
+ asset,
270
+ wallet: address,
271
+ reason: 'action_close',
272
+ closeReason: reason,
273
+ orderType,
274
+ ...(dexForHook != null ? { dex: dexForHook } : {}),
275
+ ...fill,
276
+ },
277
+ timestamp: new Date().toISOString(),
278
+ });
279
+ results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: true, reason, ...fill, startedAt: signalStartedAt, endedAt: Date.now() });
280
+ outcome('closed', reason);
281
+ // Task 8a order-event log (additive, fire-and-forget). A close is a reduce-only order;
282
+ // close signals may lack a direction, so it is omitted. Emits placed + filled from `fill`.
283
+ emitOrderPlaced(this.context.hookSystem, event, address, {
275
284
  orderId: fill.orderId,
285
+ orderType,
286
+ asset,
287
+ size: fill.closedSize,
288
+ reduceOnly: true,
289
+ });
290
+ // Only a confirmed fill is `order.filled` — a fee-optimized-limit close the venue accepts
291
+ // but leaves resting returns no closedPrice/closedSize, so emitting filled there would be a
292
+ // phantom fill (mirrors open-position's `if (submittedOrder?.filled)` guard).
293
+ if (fill.closedPrice !== undefined && fill.closedSize !== undefined) {
294
+ emitOrderFilled(this.context.hookSystem, event, address, {
295
+ orderId: fill.orderId,
296
+ asset,
297
+ fillPrice: fill.closedPrice,
298
+ fillSize: fill.closedSize,
299
+ executionAsMaker: fill.executionAsMaker,
300
+ });
301
+ }
302
+ closedCount++;
303
+ }
304
+ catch (error) {
305
+ const message = error instanceof Error ? error.message : String(error);
306
+ logger.error('close failed', error, { asset });
307
+ results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: false, reason, error: message, startedAt: signalStartedAt, endedAt: Date.now() });
308
+ outcome('failed', reason, message);
309
+ // Task 8a: the close submit threw.
310
+ emitOrderFailed(this.context.hookSystem, event, address, {
276
311
  asset,
277
- fillPrice: fill.closedPrice,
278
- fillSize: fill.closedSize,
279
- executionAsMaker: fill.executionAsMaker,
312
+ reason: 'exception',
313
+ error: message,
314
+ errorName: error instanceof Error ? error.name : undefined,
315
+ reduceOnly: true,
280
316
  });
317
+ failedCount++;
281
318
  }
282
- closedCount++;
283
- }
284
- catch (error) {
285
- const message = error instanceof Error ? error.message : String(error);
286
- logger.error('close failed', { asset, err: message });
287
- results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: false, reason, error: message, startedAt: signalStartedAt, endedAt: Date.now() });
288
- // Task 8a: the close submit threw.
289
- emitOrderFailed(this.context.hookSystem, event, address, {
290
- asset,
291
- reason: 'exception',
292
- error: message,
293
- errorName: error instanceof Error ? error.name : undefined,
294
- reduceOnly: true,
295
- });
296
- failedCount++;
297
- }
319
+ });
298
320
  }
299
321
  const skippedCount = results.length - closedCount - failedCount;
300
322
  const summary = `Close: ${closedCount} closed, ${failedCount} failed, ${skippedCount} skipped`;
@@ -322,7 +344,7 @@ export class ClosePositionAction {
322
344
  ...(fromDecisionPath ? { _decisionPrompt: decisionPrompt ?? null } : {}),
323
345
  },
324
346
  };
325
- emitTrackingActionResult(this.trackingCtx(), event, address, actionResult, trackingExtras);
347
+ emitActionResultEvents(this.eventCtx(), event, address, actionResult, trackingExtras);
326
348
  return actionResult;
327
349
  }
328
350
  }
@@ -1 +1 @@
1
- {"version":3,"file":"close-position.action.js","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"close-position.action.js","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"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"}