@senpi/runtime 3.0.6-dev.skill-manager-v2.20260629194505 → 3.0.9-dev.20260710204324

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 (472) 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-commands.d.ts +14 -0
  38. package/dist/cli/senpi-commands.d.ts.map +1 -1
  39. package/dist/cli/senpi-commands.js +390 -2
  40. package/dist/cli/senpi-commands.js.map +1 -1
  41. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  42. package/dist/dsl/engine-client/event-mapping.js +0 -3
  43. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  44. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  45. package/dist/dsl/events/build-closed-event.js +0 -1
  46. package/dist/dsl/events/build-closed-event.js.map +1 -1
  47. package/dist/dsl/events/handlers.d.ts.map +1 -1
  48. package/dist/dsl/events/handlers.js +2 -4
  49. package/dist/dsl/events/handlers.js.map +1 -1
  50. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  51. package/dist/dsl/events/initial-state.js +1 -0
  52. package/dist/dsl/events/initial-state.js.map +1 -1
  53. package/dist/dsl/monitor/create-monitor.d.ts +3 -0
  54. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  55. package/dist/dsl/monitor/create-monitor.js +76 -58
  56. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  57. package/dist/dsl/monitor/dsl-failure-events.d.ts +42 -0
  58. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -0
  59. package/dist/dsl/monitor/dsl-failure-events.js +73 -0
  60. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -0
  61. package/dist/dsl/monitor/process-one-position.d.ts +2 -1
  62. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  63. package/dist/dsl/monitor/process-one-position.js +130 -196
  64. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  65. package/dist/dsl/plugin/index.d.ts +10 -0
  66. package/dist/dsl/plugin/index.d.ts.map +1 -1
  67. package/dist/dsl/plugin/index.js +48 -4
  68. package/dist/dsl/plugin/index.js.map +1 -1
  69. package/dist/dsl/plugin/options.d.ts +3 -0
  70. package/dist/dsl/plugin/options.d.ts.map +1 -1
  71. package/dist/health/types.d.ts +14 -0
  72. package/dist/health/types.d.ts.map +1 -1
  73. package/dist/health/types.js.map +1 -1
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +264 -79
  77. package/dist/index.js.map +1 -1
  78. package/dist/risk/risk-audit-log.d.ts +7 -0
  79. package/dist/risk/risk-audit-log.d.ts.map +1 -1
  80. package/dist/risk/risk-audit-log.js +48 -1
  81. package/dist/risk/risk-audit-log.js.map +1 -1
  82. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts +2 -0
  83. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts.map +1 -1
  84. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js +24 -3
  85. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js.map +1 -1
  86. package/dist/runtime/auto-update/coordinator.js +2 -2
  87. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  88. package/dist/runtime/create-actions.d.ts.map +1 -1
  89. package/dist/runtime/create-actions.js +40 -15
  90. package/dist/runtime/create-actions.js.map +1 -1
  91. package/dist/runtime/create-runtime-context.d.ts +1 -1
  92. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  93. package/dist/runtime/create-scanner-module.d.ts +2 -1
  94. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  95. package/dist/runtime/create-scanner-module.js +2 -1
  96. package/dist/runtime/create-scanner-module.js.map +1 -1
  97. package/dist/runtime/domain-events.d.ts +43 -0
  98. package/dist/runtime/domain-events.d.ts.map +1 -0
  99. package/dist/runtime/domain-events.js +181 -0
  100. package/dist/runtime/domain-events.js.map +1 -0
  101. package/dist/runtime/lifecycle-events.d.ts +86 -0
  102. package/dist/runtime/lifecycle-events.d.ts.map +1 -0
  103. package/dist/runtime/lifecycle-events.js +200 -0
  104. package/dist/runtime/lifecycle-events.js.map +1 -0
  105. package/dist/runtime/notifications.js +2 -2
  106. package/dist/runtime/notifications.js.map +1 -1
  107. package/dist/{tracking → runtime}/position-id-registry.d.ts +14 -1
  108. package/dist/runtime/position-id-registry.d.ts.map +1 -0
  109. package/dist/{tracking → runtime}/position-id-registry.js +20 -3
  110. package/dist/runtime/position-id-registry.js.map +1 -0
  111. package/dist/runtime/run.d.ts +2 -4
  112. package/dist/runtime/run.d.ts.map +1 -1
  113. package/dist/runtime/run.js.map +1 -1
  114. package/dist/runtime/runtime-schema.d.ts +276 -588
  115. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  116. package/dist/runtime/runtime-schema.js +8 -28
  117. package/dist/runtime/runtime-schema.js.map +1 -1
  118. package/dist/runtime/runtime.d.ts +23 -9
  119. package/dist/runtime/runtime.d.ts.map +1 -1
  120. package/dist/runtime/runtime.js +276 -248
  121. package/dist/runtime/runtime.js.map +1 -1
  122. package/dist/runtime/strategy-lifecycle.d.ts.map +1 -1
  123. package/dist/runtime/strategy-lifecycle.js +13 -1
  124. package/dist/runtime/strategy-lifecycle.js.map +1 -1
  125. package/dist/runtime/supervisor/long-running-supervisor.d.ts +3 -0
  126. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  127. package/dist/runtime/supervisor/long-running-supervisor.js +27 -53
  128. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  129. package/dist/runtime-api/config.d.ts +2 -2
  130. package/dist/runtime-api/config.js +4 -4
  131. package/dist/runtime-api/config.js.map +1 -1
  132. package/dist/runtime-api/handlers/ingest-signals.d.ts +5 -3
  133. package/dist/runtime-api/handlers/ingest-signals.d.ts.map +1 -1
  134. package/dist/runtime-api/handlers/ingest-signals.js +14 -5
  135. package/dist/runtime-api/handlers/ingest-signals.js.map +1 -1
  136. package/dist/runtime-api/intake/ingest-mutex.d.ts +16 -0
  137. package/dist/runtime-api/intake/ingest-mutex.d.ts.map +1 -0
  138. package/dist/runtime-api/intake/ingest-mutex.js +18 -0
  139. package/dist/runtime-api/intake/ingest-mutex.js.map +1 -0
  140. package/dist/runtime-api/intake/intake-events.d.ts +44 -0
  141. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -0
  142. package/dist/runtime-api/intake/intake-events.js +131 -0
  143. package/dist/runtime-api/intake/intake-events.js.map +1 -0
  144. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  145. package/dist/runtime-api/intake/intake-mount.js +8 -2
  146. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  147. package/dist/runtime-api/intake/scanner-launcher.d.ts +2 -0
  148. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  149. package/dist/runtime-api/intake/scanner-launcher.js +58 -15
  150. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  151. package/dist/runtime-api/intake/scanner-registry.d.ts +3 -0
  152. package/dist/runtime-api/intake/scanner-registry.d.ts.map +1 -1
  153. package/dist/runtime-api/intake/scanner-registry.js +3 -0
  154. package/dist/runtime-api/intake/scanner-registry.js.map +1 -1
  155. package/dist/runtime-api/intake/supervisor-events.d.ts +61 -0
  156. package/dist/runtime-api/intake/supervisor-events.d.ts.map +1 -0
  157. package/dist/runtime-api/intake/supervisor-events.js +173 -0
  158. package/dist/runtime-api/intake/supervisor-events.js.map +1 -0
  159. package/dist/runtime-api/routes/signals.d.ts +1 -1
  160. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  161. package/dist/runtime-api/routes/signals.js +121 -35
  162. package/dist/runtime-api/routes/signals.js.map +1 -1
  163. package/dist/runtime-api/server.d.ts.map +1 -1
  164. package/dist/runtime-api/server.js +10 -1
  165. package/dist/runtime-api/server.js.map +1 -1
  166. package/dist/scanners/engine/data-providers.d.ts +3 -0
  167. package/dist/scanners/engine/data-providers.d.ts.map +1 -1
  168. package/dist/scanners/engine/data-providers.js.map +1 -1
  169. package/dist/scanners/engine/engine.d.ts +18 -0
  170. package/dist/scanners/engine/engine.d.ts.map +1 -1
  171. package/dist/scanners/engine/engine.js +96 -2
  172. package/dist/scanners/engine/engine.js.map +1 -1
  173. package/dist/scanners/engine/input-resolver.d.ts.map +1 -1
  174. package/dist/scanners/engine/input-resolver.js +9 -7
  175. package/dist/scanners/engine/input-resolver.js.map +1 -1
  176. package/dist/scanners/runtime-module.d.ts +3 -0
  177. package/dist/scanners/runtime-module.d.ts.map +1 -1
  178. package/dist/scanners/runtime-module.js +7 -0
  179. package/dist/scanners/runtime-module.js.map +1 -1
  180. package/dist/senpi/client.d.ts +10 -0
  181. package/dist/senpi/client.d.ts.map +1 -1
  182. package/dist/senpi/client.js +113 -46
  183. package/dist/senpi/client.js.map +1 -1
  184. package/dist/skills-manager/bootstrap.d.ts.map +1 -1
  185. package/dist/skills-manager/bootstrap.js +22 -33
  186. package/dist/skills-manager/bootstrap.js.map +1 -1
  187. package/dist/skills-manager/clone-groups.d.ts +20 -0
  188. package/dist/skills-manager/clone-groups.d.ts.map +1 -0
  189. package/dist/skills-manager/clone-groups.js +45 -0
  190. package/dist/skills-manager/clone-groups.js.map +1 -0
  191. package/dist/skills-manager/coordinator.d.ts.map +1 -1
  192. package/dist/skills-manager/coordinator.js +111 -75
  193. package/dist/skills-manager/coordinator.js.map +1 -1
  194. package/dist/skills-manager/manifest.d.ts +24 -0
  195. package/dist/skills-manager/manifest.d.ts.map +1 -1
  196. package/dist/skills-manager/manifest.js +23 -10
  197. package/dist/skills-manager/manifest.js.map +1 -1
  198. package/dist/skills-manager/skills-manifest.json +12 -7
  199. package/dist/skills-manager/types.d.ts +12 -0
  200. package/dist/skills-manager/types.d.ts.map +1 -1
  201. package/dist/state/state-events.d.ts +13 -0
  202. package/dist/state/state-events.d.ts.map +1 -0
  203. package/dist/state/state-events.js +22 -0
  204. package/dist/state/state-events.js.map +1 -0
  205. package/dist/state/state-manager.d.ts.map +1 -1
  206. package/dist/state/state-manager.js +14 -1
  207. package/dist/state/state-manager.js.map +1 -1
  208. package/dist/telemetry/attributes.d.ts +13 -0
  209. package/dist/telemetry/attributes.d.ts.map +1 -0
  210. package/dist/telemetry/attributes.js +22 -0
  211. package/dist/telemetry/attributes.js.map +1 -0
  212. package/dist/{tracking → telemetry}/context.d.ts +12 -5
  213. package/dist/telemetry/context.d.ts.map +1 -0
  214. package/dist/{tracking → telemetry}/context.js +4 -4
  215. package/dist/telemetry/context.js.map +1 -0
  216. package/dist/{recording/records.d.ts → telemetry/event-builders.d.ts} +145 -33
  217. package/dist/telemetry/event-builders.d.ts.map +1 -0
  218. package/dist/{recording/wiring/record-builders.js → telemetry/event-builders.js} +94 -40
  219. package/dist/telemetry/event-builders.js.map +1 -0
  220. package/dist/telemetry/event-store.d.ts +66 -0
  221. package/dist/telemetry/event-store.d.ts.map +1 -0
  222. package/dist/telemetry/event-store.js +202 -0
  223. package/dist/telemetry/event-store.js.map +1 -0
  224. package/dist/telemetry/identity.d.ts +72 -0
  225. package/dist/telemetry/identity.d.ts.map +1 -0
  226. package/dist/{recording/wiring → telemetry}/identity.js +6 -2
  227. package/dist/telemetry/identity.js.map +1 -0
  228. package/dist/telemetry/metrics.d.ts +169 -0
  229. package/dist/telemetry/metrics.d.ts.map +1 -0
  230. package/dist/telemetry/metrics.js +437 -0
  231. package/dist/telemetry/metrics.js.map +1 -0
  232. package/dist/telemetry/otel-sdk.d.ts +93 -0
  233. package/dist/telemetry/otel-sdk.d.ts.map +1 -0
  234. package/dist/telemetry/otel-sdk.js +297 -0
  235. package/dist/telemetry/otel-sdk.js.map +1 -0
  236. package/dist/telemetry/spans/constants.d.ts +12 -0
  237. package/dist/telemetry/spans/constants.d.ts.map +1 -0
  238. package/dist/telemetry/spans/constants.js +12 -0
  239. package/dist/telemetry/spans/constants.js.map +1 -0
  240. package/dist/telemetry/spans/gen-ai.d.ts +74 -0
  241. package/dist/telemetry/spans/gen-ai.d.ts.map +1 -0
  242. package/dist/telemetry/spans/gen-ai.js +339 -0
  243. package/dist/telemetry/spans/gen-ai.js.map +1 -0
  244. package/dist/telemetry/spans/index.d.ts +11 -0
  245. package/dist/telemetry/spans/index.d.ts.map +1 -0
  246. package/dist/telemetry/spans/index.js +11 -0
  247. package/dist/telemetry/spans/index.js.map +1 -0
  248. package/dist/{tracking → telemetry}/spans/redact-pii.d.ts +19 -21
  249. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -0
  250. package/dist/{tracking → telemetry}/spans/redact-pii.js +35 -32
  251. package/dist/telemetry/spans/redact-pii.js.map +1 -0
  252. package/dist/telemetry/spans/sanitize-payload.d.ts.map +1 -0
  253. package/dist/telemetry/spans/sanitize-payload.js.map +1 -0
  254. package/dist/telemetry/spans/span-hooks.d.ts +18 -0
  255. package/dist/telemetry/spans/span-hooks.d.ts.map +1 -0
  256. package/dist/telemetry/spans/span-hooks.js +764 -0
  257. package/dist/telemetry/spans/span-hooks.js.map +1 -0
  258. package/dist/telemetry/tool-plane.d.ts +31 -0
  259. package/dist/telemetry/tool-plane.d.ts.map +1 -0
  260. package/dist/telemetry/tool-plane.js +70 -0
  261. package/dist/telemetry/tool-plane.js.map +1 -0
  262. package/dist/telemetry/trace-identity.d.ts +32 -0
  263. package/dist/telemetry/trace-identity.d.ts.map +1 -0
  264. package/dist/telemetry/trace-identity.js +62 -0
  265. package/dist/telemetry/trace-identity.js.map +1 -0
  266. package/dist/telemetry/tracing.d.ts +33 -0
  267. package/dist/telemetry/tracing.d.ts.map +1 -0
  268. package/dist/telemetry/tracing.js +70 -0
  269. package/dist/telemetry/tracing.js.map +1 -0
  270. package/dist/types/dsl/index.d.ts +8 -9
  271. package/dist/types/dsl/index.d.ts.map +1 -1
  272. package/dist/types/runtime.d.ts +1 -1
  273. package/dist/types/runtime.d.ts.map +1 -1
  274. package/dist/types/scanner.d.ts +2 -0
  275. package/dist/types/scanner.d.ts.map +1 -1
  276. package/dist/utils/event-catalog.d.ts +506 -0
  277. package/dist/utils/event-catalog.d.ts.map +1 -0
  278. package/dist/utils/event-catalog.js +142 -0
  279. package/dist/utils/event-catalog.js.map +1 -0
  280. package/dist/utils/logger.d.ts +63 -5
  281. package/dist/utils/logger.d.ts.map +1 -1
  282. package/dist/utils/logger.js +360 -27
  283. package/dist/utils/logger.js.map +1 -1
  284. package/dist/utils/wallet-address.d.ts +3 -0
  285. package/dist/utils/wallet-address.d.ts.map +1 -0
  286. package/dist/utils/wallet-address.js +17 -0
  287. package/dist/utils/wallet-address.js.map +1 -0
  288. package/openclaw.plugin.json +20 -6
  289. package/package.json +10 -2
  290. package/dist/actions/tracking-helpers.d.ts +0 -28
  291. package/dist/actions/tracking-helpers.d.ts.map +0 -1
  292. package/dist/actions/tracking-helpers.js +0 -93
  293. package/dist/actions/tracking-helpers.js.map +0 -1
  294. package/dist/recording/emitter.d.ts +0 -27
  295. package/dist/recording/emitter.d.ts.map +0 -1
  296. package/dist/recording/emitter.js +0 -2
  297. package/dist/recording/emitter.js.map +0 -1
  298. package/dist/recording/identity.d.ts +0 -34
  299. package/dist/recording/identity.d.ts.map +0 -1
  300. package/dist/recording/identity.js +0 -2
  301. package/dist/recording/identity.js.map +0 -1
  302. package/dist/recording/index.d.ts +0 -11
  303. package/dist/recording/index.d.ts.map +0 -1
  304. package/dist/recording/index.js +0 -2
  305. package/dist/recording/index.js.map +0 -1
  306. package/dist/recording/noop-emitter.d.ts +0 -23
  307. package/dist/recording/noop-emitter.d.ts.map +0 -1
  308. package/dist/recording/noop-emitter.js +0 -22
  309. package/dist/recording/noop-emitter.js.map +0 -1
  310. package/dist/recording/otel/attributes.d.ts +0 -35
  311. package/dist/recording/otel/attributes.d.ts.map +0 -1
  312. package/dist/recording/otel/attributes.js +0 -131
  313. package/dist/recording/otel/attributes.js.map +0 -1
  314. package/dist/recording/otel/constants.d.ts +0 -123
  315. package/dist/recording/otel/constants.d.ts.map +0 -1
  316. package/dist/recording/otel/constants.js +0 -172
  317. package/dist/recording/otel/constants.js.map +0 -1
  318. package/dist/recording/otel/ids.d.ts +0 -25
  319. package/dist/recording/otel/ids.d.ts.map +0 -1
  320. package/dist/recording/otel/ids.js +0 -37
  321. package/dist/recording/otel/ids.js.map +0 -1
  322. package/dist/recording/otel/index.d.ts +0 -13
  323. package/dist/recording/otel/index.d.ts.map +0 -1
  324. package/dist/recording/otel/index.js +0 -9
  325. package/dist/recording/otel/index.js.map +0 -1
  326. package/dist/recording/otel/mappers.d.ts +0 -100
  327. package/dist/recording/otel/mappers.d.ts.map +0 -1
  328. package/dist/recording/otel/mappers.js +0 -683
  329. package/dist/recording/otel/mappers.js.map +0 -1
  330. package/dist/recording/otel/otel-emitter.d.ts +0 -43
  331. package/dist/recording/otel/otel-emitter.d.ts.map +0 -1
  332. package/dist/recording/otel/otel-emitter.js +0 -99
  333. package/dist/recording/otel/otel-emitter.js.map +0 -1
  334. package/dist/recording/otel/redaction.d.ts +0 -47
  335. package/dist/recording/otel/redaction.d.ts.map +0 -1
  336. package/dist/recording/otel/redaction.js +0 -88
  337. package/dist/recording/otel/redaction.js.map +0 -1
  338. package/dist/recording/records.d.ts.map +0 -1
  339. package/dist/recording/records.js +0 -14
  340. package/dist/recording/records.js.map +0 -1
  341. package/dist/recording/transport/batcher.d.ts +0 -59
  342. package/dist/recording/transport/batcher.d.ts.map +0 -1
  343. package/dist/recording/transport/batcher.js +0 -234
  344. package/dist/recording/transport/batcher.js.map +0 -1
  345. package/dist/recording/transport/client.d.ts +0 -41
  346. package/dist/recording/transport/client.d.ts.map +0 -1
  347. package/dist/recording/transport/client.js +0 -69
  348. package/dist/recording/transport/client.js.map +0 -1
  349. package/dist/recording/transport/config.d.ts +0 -53
  350. package/dist/recording/transport/config.d.ts.map +0 -1
  351. package/dist/recording/transport/config.js +0 -41
  352. package/dist/recording/transport/config.js.map +0 -1
  353. package/dist/recording/transport/index.d.ts +0 -16
  354. package/dist/recording/transport/index.d.ts.map +0 -1
  355. package/dist/recording/transport/index.js +0 -12
  356. package/dist/recording/transport/index.js.map +0 -1
  357. package/dist/recording/transport/rows.d.ts +0 -88
  358. package/dist/recording/transport/rows.d.ts.map +0 -1
  359. package/dist/recording/transport/rows.js +0 -15
  360. package/dist/recording/transport/rows.js.map +0 -1
  361. package/dist/recording/wiring/emitter-factory.d.ts +0 -39
  362. package/dist/recording/wiring/emitter-factory.d.ts.map +0 -1
  363. package/dist/recording/wiring/emitter-factory.js +0 -62
  364. package/dist/recording/wiring/emitter-factory.js.map +0 -1
  365. package/dist/recording/wiring/identity.d.ts +0 -27
  366. package/dist/recording/wiring/identity.d.ts.map +0 -1
  367. package/dist/recording/wiring/identity.js.map +0 -1
  368. package/dist/recording/wiring/index.d.ts +0 -12
  369. package/dist/recording/wiring/index.d.ts.map +0 -1
  370. package/dist/recording/wiring/index.js +0 -9
  371. package/dist/recording/wiring/index.js.map +0 -1
  372. package/dist/recording/wiring/record-builders.d.ts +0 -107
  373. package/dist/recording/wiring/record-builders.d.ts.map +0 -1
  374. package/dist/recording/wiring/record-builders.js.map +0 -1
  375. package/dist/recording/wiring/subscriber.d.ts +0 -28
  376. package/dist/recording/wiring/subscriber.d.ts.map +0 -1
  377. package/dist/recording/wiring/subscriber.js +0 -173
  378. package/dist/recording/wiring/subscriber.js.map +0 -1
  379. package/dist/recording/wiring/values.d.ts +0 -19
  380. package/dist/recording/wiring/values.d.ts.map +0 -1
  381. package/dist/recording/wiring/values.js +0 -49
  382. package/dist/recording/wiring/values.js.map +0 -1
  383. package/dist/tracking/build-rehydrate-items.d.ts +0 -15
  384. package/dist/tracking/build-rehydrate-items.d.ts.map +0 -1
  385. package/dist/tracking/build-rehydrate-items.js +0 -19
  386. package/dist/tracking/build-rehydrate-items.js.map +0 -1
  387. package/dist/tracking/constants.d.ts +0 -24
  388. package/dist/tracking/constants.d.ts.map +0 -1
  389. package/dist/tracking/constants.js +0 -52
  390. package/dist/tracking/constants.js.map +0 -1
  391. package/dist/tracking/context.d.ts.map +0 -1
  392. package/dist/tracking/context.js.map +0 -1
  393. package/dist/tracking/index.d.ts +0 -16
  394. package/dist/tracking/index.d.ts.map +0 -1
  395. package/dist/tracking/index.js +0 -11
  396. package/dist/tracking/index.js.map +0 -1
  397. package/dist/tracking/plugin-event-tracker.d.ts +0 -13
  398. package/dist/tracking/plugin-event-tracker.d.ts.map +0 -1
  399. package/dist/tracking/plugin-event-tracker.js +0 -27
  400. package/dist/tracking/plugin-event-tracker.js.map +0 -1
  401. package/dist/tracking/position-id-registry.d.ts.map +0 -1
  402. package/dist/tracking/position-id-registry.js.map +0 -1
  403. package/dist/tracking/spans/constants.d.ts +0 -19
  404. package/dist/tracking/spans/constants.d.ts.map +0 -1
  405. package/dist/tracking/spans/constants.js +0 -31
  406. package/dist/tracking/spans/constants.js.map +0 -1
  407. package/dist/tracking/spans/fan-out-span-transport.d.ts +0 -22
  408. package/dist/tracking/spans/fan-out-span-transport.d.ts.map +0 -1
  409. package/dist/tracking/spans/fan-out-span-transport.js +0 -49
  410. package/dist/tracking/spans/fan-out-span-transport.js.map +0 -1
  411. package/dist/tracking/spans/index.d.ts +0 -13
  412. package/dist/tracking/spans/index.d.ts.map +0 -1
  413. package/dist/tracking/spans/index.js +0 -16
  414. package/dist/tracking/spans/index.js.map +0 -1
  415. package/dist/tracking/spans/otel/fit-row-budget.d.ts +0 -22
  416. package/dist/tracking/spans/otel/fit-row-budget.d.ts.map +0 -1
  417. package/dist/tracking/spans/otel/fit-row-budget.js +0 -91
  418. package/dist/tracking/spans/otel/fit-row-budget.js.map +0 -1
  419. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts +0 -16
  420. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts.map +0 -1
  421. package/dist/tracking/spans/otel/map-span-to-trace-row.js +0 -227
  422. package/dist/tracking/spans/otel/map-span-to-trace-row.js.map +0 -1
  423. package/dist/tracking/spans/otel/recording-span-transport.d.ts +0 -43
  424. package/dist/tracking/spans/otel/recording-span-transport.d.ts.map +0 -1
  425. package/dist/tracking/spans/otel/recording-span-transport.js +0 -67
  426. package/dist/tracking/spans/otel/recording-span-transport.js.map +0 -1
  427. package/dist/tracking/spans/otel/span-ids.d.ts +0 -22
  428. package/dist/tracking/spans/otel/span-ids.d.ts.map +0 -1
  429. package/dist/tracking/spans/otel/span-ids.js +0 -32
  430. package/dist/tracking/spans/otel/span-ids.js.map +0 -1
  431. package/dist/tracking/spans/plugin-span-tracker.d.ts +0 -9
  432. package/dist/tracking/spans/plugin-span-tracker.d.ts.map +0 -1
  433. package/dist/tracking/spans/plugin-span-tracker.js +0 -115
  434. package/dist/tracking/spans/plugin-span-tracker.js.map +0 -1
  435. package/dist/tracking/spans/redact-pii.d.ts.map +0 -1
  436. package/dist/tracking/spans/redact-pii.js.map +0 -1
  437. package/dist/tracking/spans/sanitize-payload.d.ts.map +0 -1
  438. package/dist/tracking/spans/sanitize-payload.js.map +0 -1
  439. package/dist/tracking/spans/span-hooks.d.ts +0 -28
  440. package/dist/tracking/spans/span-hooks.d.ts.map +0 -1
  441. package/dist/tracking/spans/span-hooks.js +0 -409
  442. package/dist/tracking/spans/span-hooks.js.map +0 -1
  443. package/dist/tracking/spans/span-tracker.d.ts +0 -133
  444. package/dist/tracking/spans/span-tracker.d.ts.map +0 -1
  445. package/dist/tracking/spans/span-tracker.js +0 -721
  446. package/dist/tracking/spans/span-tracker.js.map +0 -1
  447. package/dist/tracking/spans/span-transport.d.ts +0 -71
  448. package/dist/tracking/spans/span-transport.d.ts.map +0 -1
  449. package/dist/tracking/spans/span-transport.js +0 -240
  450. package/dist/tracking/spans/span-transport.js.map +0 -1
  451. package/dist/tracking/spans/types.d.ts +0 -101
  452. package/dist/tracking/spans/types.d.ts.map +0 -1
  453. package/dist/tracking/spans/types.js +0 -6
  454. package/dist/tracking/spans/types.js.map +0 -1
  455. package/dist/tracking/tracker.d.ts +0 -30
  456. package/dist/tracking/tracker.d.ts.map +0 -1
  457. package/dist/tracking/tracker.js +0 -66
  458. package/dist/tracking/tracker.js.map +0 -1
  459. package/dist/tracking/tracking-handler.d.ts +0 -12
  460. package/dist/tracking/tracking-handler.d.ts.map +0 -1
  461. package/dist/tracking/tracking-handler.js +0 -148
  462. package/dist/tracking/tracking-handler.js.map +0 -1
  463. package/dist/tracking/transport.d.ts +0 -35
  464. package/dist/tracking/transport.d.ts.map +0 -1
  465. package/dist/tracking/transport.js +0 -133
  466. package/dist/tracking/transport.js.map +0 -1
  467. package/dist/tracking/types.d.ts +0 -21
  468. package/dist/tracking/types.d.ts.map +0 -1
  469. package/dist/tracking/types.js +0 -6
  470. package/dist/tracking/types.js.map +0 -1
  471. /package/dist/{tracking → telemetry}/spans/sanitize-payload.d.ts +0 -0
  472. /package/dist/{tracking → telemetry}/spans/sanitize-payload.js +0 -0
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { ExternalScannerIngestError, } from "../../scanners/external-scanner-receiver.js";
9
9
  import { findRuntimeHandleByAddress } from "./runtime-lookup.js";
10
+ import { ingestDispatchMutex, ingestDispatchKey } from "../intake/ingest-mutex.js";
10
11
  /**
11
12
  * Ingest one signal item.
12
13
  *
@@ -22,9 +23,11 @@ import { findRuntimeHandleByAddress } from "./runtime-lookup.js";
22
23
  * (The runtime also enforces this, but we check early to surface a clear
23
24
  * message before the engine lock is acquired.)
24
25
  *
25
- * Per-(address, scanner) ingest lock is the engine's concern; callers should
26
- * nest multiple signals in `signals[]` rather than submitting concurrent
27
- * top-level items for the same key.
26
+ * Concurrent top-level items for the same `(address, scanner)` are serialized
27
+ * here behind `ingestDispatchMutex` (keyed by runtimeId + scanner name — the
28
+ * engine's one-in-flight guard identity), so callers may submit them without
29
+ * racing the guard into `UNAVAILABLE`. Nesting signals in `signals[]` is still
30
+ * valid; different scanners still ingest concurrently.
28
31
  *
29
32
  * @param item A single signal item.
30
33
  * @param deps Injected dependencies.
@@ -68,7 +71,7 @@ export async function ingestSignalsHandler(item, deps) {
68
71
  message: lookup.message,
69
72
  };
70
73
  }
71
- const { handle } = lookup;
74
+ const { handle, runtimeId } = lookup;
72
75
  // --- Build the ingest request (address stays at the routing layer) ---
73
76
  //
74
77
  // `signals` only forwarded when non-empty — mirrors the validation rule
@@ -86,7 +89,13 @@ export async function ingestSignalsHandler(item, deps) {
86
89
  };
87
90
  // --- Dispatch ---
88
91
  try {
89
- const result = await handle.ingestExternalScannerData(request);
92
+ // Serialize behind the same shared per-key lock the intake seams use (engine
93
+ // guard identity: runtimeId + scanner NAME). The gateway shim awaits this
94
+ // handler, so without the lock two concurrent gateway calls — or a gateway
95
+ // call overlapping an intake-dispatched ingest for the same key — race the
96
+ // engine's one-in-flight guard and all but the first are rejected UNAVAILABLE.
97
+ const key = ingestDispatchKey(runtimeId, item.scanner);
98
+ const result = await ingestDispatchMutex.withKeyLock(key, () => handle.ingestExternalScannerData(request));
90
99
  return {
91
100
  success: true,
92
101
  address,
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-signals.js","sourceRoot":"","sources":["../../../src/runtime-api/handlers/ingest-signals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest-signals.js","sourceRoot":"","sources":["../../../src/runtime-api/handlers/ingest-signals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared per-key mutex serializing external-scanner ingest dispatch.
3
+ *
4
+ * Keyed by the engine's per-(scanner,strategy) guard identity (runtimeId +
5
+ * configured scanner NAME) so batched or concurrent signals for one scanner
6
+ * ingest one at a time — the engine allows only one in-flight ingest per key
7
+ * and rejects overlap. Different keys still run concurrently.
8
+ *
9
+ * Process/plugin scope (single shared instance) so it serializes across both
10
+ * dispatch seams and across separate POSTs, not just within one request.
11
+ */
12
+ import { KeyedMutex } from "../../utils/keyed-mutex.js";
13
+ export declare const ingestDispatchMutex: KeyedMutex;
14
+ /** The engine guard identity: runtimeId + configured scanner NAME. */
15
+ export declare function ingestDispatchKey(runtimeId: string, scannerName: string): string;
16
+ //# sourceMappingURL=ingest-mutex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-mutex.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/ingest-mutex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,eAAO,MAAM,mBAAmB,YAAmB,CAAC;AAEpD,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared per-key mutex serializing external-scanner ingest dispatch.
3
+ *
4
+ * Keyed by the engine's per-(scanner,strategy) guard identity (runtimeId +
5
+ * configured scanner NAME) so batched or concurrent signals for one scanner
6
+ * ingest one at a time — the engine allows only one in-flight ingest per key
7
+ * and rejects overlap. Different keys still run concurrently.
8
+ *
9
+ * Process/plugin scope (single shared instance) so it serializes across both
10
+ * dispatch seams and across separate POSTs, not just within one request.
11
+ */
12
+ import { KeyedMutex } from "../../utils/keyed-mutex.js";
13
+ export const ingestDispatchMutex = new KeyedMutex();
14
+ /** The engine guard identity: runtimeId + configured scanner NAME. */
15
+ export function ingestDispatchKey(runtimeId, scannerName) {
16
+ return `${runtimeId} ${scannerName}`;
17
+ }
18
+ //# sourceMappingURL=ingest-mutex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-mutex.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/ingest-mutex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,UAAU,EAAE,CAAC;AAEpD,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,WAAmB;IACtE,OAAO,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Pure builders for the signal-intake boundary's event-log events — the pre-decision acceptance fact
3
+ * at the process edge (did a scanner's POSTed signal get in, and why not), distinct from the
4
+ * post-decision `signal.outcome`. {@link buildSignalDispositionEvent} maps a per-signal disposition
5
+ * (accepted/rejected/expired/superseded) onto the `signal.*` family; {@link buildSignalRejectedEvent}
6
+ * covers a whole-request reject (unknown scanner, oversized batch) at request grain; and
7
+ * {@link buildScaffoldErrorEvent} maps a scaffold `/errors` POST onto `scaffold.tick_error` /
8
+ * `scaffold.tick_timeout`.
9
+ *
10
+ * Pure `(input) => EmittableEvent`; the route emits the result through `emitEvent`'s guard, so a
11
+ * throwing build or a telemetry failure can never disturb request handling. Free-text — a reject
12
+ * reason, a scaffold exception message — rides the `redact` slot, never an attribute.
13
+ */
14
+ import { EVENT_NAME } from "../../utils/event-catalog.js";
15
+ import type { EmittableEvent } from "../../actions/event-derivation.js";
16
+ import type { PerSignalStatus } from "./types.js";
17
+ /** The four per-signal disposition catalog names this bridge emits. */
18
+ type SignalDispositionName = typeof EVENT_NAME.signalAccepted | typeof EVENT_NAME.signalRejected | typeof EVENT_NAME.signalExpired | typeof EVENT_NAME.signalSuperseded;
19
+ /** The scanner identity the route pins onto every intake event. */
20
+ export interface IntakeEventContext {
21
+ /** The `scanner_id` from the POST body — present even when it resolves to no registry entry. */
22
+ scannerId: string;
23
+ /** The resolved scanner name; absent when the id is unknown. */
24
+ scannerName?: string;
25
+ /** Strategy wallet from the registry entry; omitted/empty → not stamped. */
26
+ wallet?: string;
27
+ }
28
+ /** Map one per-signal disposition to its `signal.*` event-log record. */
29
+ export declare function buildSignalDispositionEvent(status: PerSignalStatus, asset: string, ctx: IntakeEventContext): EmittableEvent<SignalDispositionName>;
30
+ /**
31
+ * Build the request-level `signal.rejected` event — the whole POST was refused before any per-signal
32
+ * work (an unknown `scanner_id` or an oversized batch), so it carries a coded reason and no asset.
33
+ */
34
+ export declare function buildSignalRejectedEvent(reasonCode: string, ctx: IntakeEventContext): EmittableEvent<typeof EVENT_NAME.signalRejected>;
35
+ /** The scanner-side failure types the scaffold POSTs to `/errors` (see the scaffold tick loop). */
36
+ type ScaffoldErrorName = typeof EVENT_NAME.scaffoldTickError | typeof EVENT_NAME.scaffoldTickTimeout;
37
+ /**
38
+ * Map one scaffold `/errors` POST onto its `scaffold.*` event (both `warn`). A `type: "timeout"` body
39
+ * is a tick that blew its wall-clock budget; anything else (a Python exception, `state_persist_failed`)
40
+ * is a `tick_error` whose failure class rides `senpi.scaffold.error_type`. The raw message rides `redact`.
41
+ */
42
+ export declare function buildScaffoldErrorEvent(error: Record<string, unknown>, ctx: IntakeEventContext): EmittableEvent<ScaffoldErrorName>;
43
+ export {};
44
+ //# sourceMappingURL=intake-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-events.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAA6B,MAAM,8BAA8B,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,uEAAuE;AACvE,KAAK,qBAAqB,GACtB,OAAO,UAAU,CAAC,cAAc,GAChC,OAAO,UAAU,CAAC,cAAc,GAChC,OAAO,UAAU,CAAC,aAAa,GAC/B,OAAO,UAAU,CAAC,gBAAgB,CAAC;AAEvC,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqBD,yEAAyE;AACzE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,kBAAkB,GACtB,cAAc,CAAC,qBAAqB,CAAC,CA+CvC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,kBAAkB,GACtB,cAAc,CAAC,OAAO,UAAU,CAAC,cAAc,CAAC,CAUlD;AAED,mGAAmG;AACnG,KAAK,iBAAiB,GAClB,OAAO,UAAU,CAAC,iBAAiB,GACnC,OAAO,UAAU,CAAC,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,kBAAkB,GACtB,cAAc,CAAC,iBAAiB,CAAC,CAoCnC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Pure builders for the signal-intake boundary's event-log events — the pre-decision acceptance fact
3
+ * at the process edge (did a scanner's POSTed signal get in, and why not), distinct from the
4
+ * post-decision `signal.outcome`. {@link buildSignalDispositionEvent} maps a per-signal disposition
5
+ * (accepted/rejected/expired/superseded) onto the `signal.*` family; {@link buildSignalRejectedEvent}
6
+ * covers a whole-request reject (unknown scanner, oversized batch) at request grain; and
7
+ * {@link buildScaffoldErrorEvent} maps a scaffold `/errors` POST onto `scaffold.tick_error` /
8
+ * `scaffold.tick_timeout`.
9
+ *
10
+ * Pure `(input) => EmittableEvent`; the route emits the result through `emitEvent`'s guard, so a
11
+ * throwing build or a telemetry failure can never disturb request handling. Free-text — a reject
12
+ * reason, a scaffold exception message — rides the `redact` slot, never an attribute.
13
+ */
14
+ import { EVENT_NAME, eventAttrs } from "../../utils/event-catalog.js";
15
+ /** The id/name/wallet attributes every intake event carries. */
16
+ function baseAttrs(ctx) {
17
+ return {
18
+ "senpi.scanner.id": ctx.scannerId,
19
+ "senpi.scanner.name": ctx.scannerName,
20
+ // Addresses are case-insensitive; lowercase to match the identity join key.
21
+ "senpi.strategy.address": ctx.wallet ? ctx.wallet.toLowerCase() : undefined,
22
+ };
23
+ }
24
+ /** A label for the scanner in a narrative body — its name when resolved, else the id. */
25
+ function scannerLabel(ctx) {
26
+ return ctx.scannerName ?? ctx.scannerId;
27
+ }
28
+ /** Map one per-signal disposition to its `signal.*` event-log record. */
29
+ export function buildSignalDispositionEvent(status, asset, ctx) {
30
+ const base = baseAttrs(ctx);
31
+ const label = scannerLabel(ctx);
32
+ switch (status.status) {
33
+ case "accepted":
34
+ return {
35
+ name: EVENT_NAME.signalAccepted,
36
+ level: "info",
37
+ body: `Signal accepted: ${asset} from ${label}`,
38
+ attributes: eventAttrs({
39
+ ...base,
40
+ "senpi.signal.asset": asset,
41
+ "senpi.signal.correlation_id": status.correlationId,
42
+ }),
43
+ };
44
+ case "rejected":
45
+ return {
46
+ name: EVENT_NAME.signalRejected,
47
+ level: "info",
48
+ body: `Signal rejected: ${asset} from ${label}`,
49
+ attributes: eventAttrs({
50
+ ...base,
51
+ "senpi.signal.asset": asset,
52
+ }),
53
+ ...(status.reason ? { redact: { reason: status.reason } } : {}),
54
+ };
55
+ case "expired":
56
+ return {
57
+ name: EVENT_NAME.signalExpired,
58
+ level: "info",
59
+ body: `Signal expired: ${asset} from ${label}`,
60
+ attributes: eventAttrs({
61
+ ...base,
62
+ "senpi.signal.asset": asset,
63
+ }),
64
+ };
65
+ case "superseded":
66
+ return {
67
+ name: EVENT_NAME.signalSuperseded,
68
+ level: "info",
69
+ body: `Signal superseded: ${asset} from ${label}`,
70
+ attributes: eventAttrs({
71
+ ...base,
72
+ "senpi.signal.asset": asset,
73
+ }),
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Build the request-level `signal.rejected` event — the whole POST was refused before any per-signal
79
+ * work (an unknown `scanner_id` or an oversized batch), so it carries a coded reason and no asset.
80
+ */
81
+ export function buildSignalRejectedEvent(reasonCode, ctx) {
82
+ return {
83
+ name: EVENT_NAME.signalRejected,
84
+ level: "info",
85
+ body: `Signal POST rejected: ${reasonCode} (scanner ${scannerLabel(ctx)})`,
86
+ attributes: eventAttrs({
87
+ ...baseAttrs(ctx),
88
+ "senpi.intake.reason_code": reasonCode,
89
+ }),
90
+ };
91
+ }
92
+ /**
93
+ * Map one scaffold `/errors` POST onto its `scaffold.*` event (both `warn`). A `type: "timeout"` body
94
+ * is a tick that blew its wall-clock budget; anything else (a Python exception, `state_persist_failed`)
95
+ * is a `tick_error` whose failure class rides `senpi.scaffold.error_type`. The raw message rides `redact`.
96
+ */
97
+ export function buildScaffoldErrorEvent(error, ctx) {
98
+ const base = baseAttrs(ctx);
99
+ const label = scannerLabel(ctx);
100
+ const message = typeof error.message === "string" ? error.message : undefined;
101
+ const isTimeout = error.type === "timeout";
102
+ if (isTimeout) {
103
+ return {
104
+ name: EVENT_NAME.scaffoldTickTimeout,
105
+ level: "warn",
106
+ body: `Scanner ${label} tick timed out`,
107
+ attributes: eventAttrs({ ...base }),
108
+ ...(message ? { redact: { message } } : {}),
109
+ };
110
+ }
111
+ // `error_type` is the Python exception class for a thrown tick; for a non-exception failure
112
+ // (`state_persist_failed`) the discriminator `type` is the only class available. The bare `error`
113
+ // discriminator carries nothing the event name doesn't, so it is not surfaced as an error_type.
114
+ const rawType = typeof error.type === "string" ? error.type : undefined;
115
+ const errorType = typeof error.error_type === "string"
116
+ ? error.error_type
117
+ : rawType && rawType !== "error"
118
+ ? rawType
119
+ : undefined;
120
+ return {
121
+ name: EVENT_NAME.scaffoldTickError,
122
+ level: "warn",
123
+ body: `Scanner ${label} tick failed`,
124
+ attributes: eventAttrs({
125
+ ...base,
126
+ "senpi.scaffold.error_type": errorType,
127
+ }),
128
+ ...(message ? { redact: { message } } : {}),
129
+ };
130
+ }
131
+ //# sourceMappingURL=intake-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-events.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"intake-mount.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-mount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intake-mount.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-mount.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  import * as fs from "node:fs";
12
12
  import * as path from "node:path";
13
13
  import { join } from "node:path";
14
+ import { ingestDispatchMutex, ingestDispatchKey } from "./ingest-mutex.js";
14
15
  import { ScannerLauncher } from "./scanner-launcher.js";
15
16
  import { sweepOrphans } from "../../runtime/supervisor/orphan-sweep.js";
16
17
  // ── intake URL ───────────────────────────────────────────────────────────────
@@ -67,8 +68,13 @@ export function buildIntakeMount(ctx, runtimeHandles, cfg) {
67
68
  // Trace the sizing-relevant fields the narrowed request carries, so a field
68
69
  // dropped at this seam is visible instead of vanishing silently.
69
70
  logger.debug(`[intake] ingest req signal_id=${signal.signal_id} scanner=${entry.scannerName} asset=${signal.asset} direction=${signal.direction} marginPct=${signal.marginPct} leverage=${signal.leverage}`);
70
- void handle
71
- .ingestExternalScannerData(request)
71
+ // Serialize dispatch behind the shared per-key lock (engine guard identity)
72
+ // so a same-scanner batch or overlapping POSTs ingest one at a time instead
73
+ // of the engine rejecting all but the first as UNAVAILABLE. Still void — the
74
+ // POST response never blocks on the trade, just on lock ordering.
75
+ const key = ingestDispatchKey(entry.runtimeId, entry.scannerName);
76
+ void ingestDispatchMutex
77
+ .withKeyLock(key, () => handle.ingestExternalScannerData(request))
72
78
  .then(() => {
73
79
  logger.info(`[intake] ingest ok signal_id=${signal.signal_id} scanner=${entry.scannerName} asset=${signal.asset} scanner_id=${scannerId}`);
74
80
  })
@@ -1 +1 @@
1
- {"version":3,"file":"intake-mount.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-mount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intake-mount.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-mount.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,8 @@ export interface ExternalScannerSpec {
54
54
  * `SupervisorContract` names the behavioral agreement itself.
55
55
  */
56
56
  export interface SupervisorContract extends EventEmitter {
57
+ /** Stable id of this supervisor instance — the join key to its free-text logs and lifecycle events. */
58
+ readonly supervisorId: string;
57
59
  spec: LongRunningSpec;
58
60
  start(): void;
59
61
  stop(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-launcher.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner-launcher.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ import * as fs from "node:fs";
15
15
  import * as path from "node:path";
16
16
  import { LongRunningSupervisor } from "../../runtime/supervisor/long-running-supervisor.js";
17
17
  import { makeId } from "../../runtime/supervisor/supervisor-utils.js";
18
+ import { emitEvent } from "../../actions/event-derivation.js";
19
+ import { buildScannerLifecycleEvent, buildScannerLaunchFailedEvent, recordScannerLifecycleMetrics, } from "./supervisor-events.js";
18
20
  // ── ScannerLauncher ────────────────────────────────────────────────────────────
19
21
  export class ScannerLauncher {
20
22
  deps;
@@ -56,9 +58,12 @@ export class ScannerLauncher {
56
58
  const onSupervisorEvent = this.deps.onSupervisorEvent;
57
59
  // Track ids registered in this call so we can roll back on partial failure.
58
60
  const registeredInThisCall = [];
61
+ // The scanner being wired when a failure throws — names it on the launch-failed event.
62
+ let failingScanner;
59
63
  try {
60
64
  for (let i = 0; i < scanners.length; i++) {
61
65
  const scanner = scanners[i];
66
+ failingScanner = scanner.name;
62
67
  if (!scanner.path) {
63
68
  throw new Error(`ScannerLauncher: scanner "${scanner.name}" is missing required field "path"`);
64
69
  }
@@ -150,26 +155,56 @@ export class ScannerLauncher {
150
155
  onSupervisorEvent(e);
151
156
  });
152
157
  }
158
+ // Telemetry bridge: translate each lifecycle event into its `scanner.*` catalog event and its
159
+ // health metric. Read the scanner id fresh from the holder so it reflects the run being
160
+ // reported — this is wired BEFORE the remint listener below, so a `restarting` event still
161
+ // carries the exiting run's id.
162
+ supervisor.on("event", (e) => {
163
+ const evt = e;
164
+ const lifecycleCtx = {
165
+ scannerName: scanner.name,
166
+ scannerId: idHolder.value,
167
+ supervisorId: supervisor.supervisorId,
168
+ wallet,
169
+ };
170
+ emitEvent(logger, () => buildScannerLifecycleEvent(evt, lifecycleCtx));
171
+ recordScannerLifecycleMetrics(evt, lifecycleCtx);
172
+ });
153
173
  // 6. Subscribe to restarting for remint.
154
174
  supervisor.on("event", (e) => {
155
175
  const evt = e;
156
176
  if (evt.type === "restarting") {
157
177
  const oldId = idHolder.value;
158
- registry.unregister(oldId);
159
- const newId = mintScannerId();
160
- idHolder.value = newId;
161
- registry.register({
162
- scannerId: newId,
163
- runtimeId,
164
- scannerName: scanner.name,
165
- wallet,
166
- fields: scanner.fields,
167
- });
168
- // Rewrite env so the next spawn carries the new id.
169
- supervisor.spec.env = {
170
- ...supervisor.spec.env,
171
- EXTERNAL_SCANNER_ID: newId,
172
- };
178
+ try {
179
+ registry.unregister(oldId);
180
+ const newId = mintScannerId();
181
+ idHolder.value = newId;
182
+ registry.register({
183
+ scannerId: newId,
184
+ runtimeId,
185
+ scannerName: scanner.name,
186
+ wallet,
187
+ fields: scanner.fields,
188
+ });
189
+ // Rewrite env so the next spawn carries the new id.
190
+ supervisor.spec.env = {
191
+ ...supervisor.spec.env,
192
+ EXTERNAL_SCANNER_ID: newId,
193
+ };
194
+ }
195
+ catch (err) {
196
+ // A failed re-mint breaks the zombie fence — the scanner can be left with no registry
197
+ // entry, so its signals are refused (UNKNOWN_SCANNER). Surface it rather than let the
198
+ // supervisor's safeEmit swallow it as a generic listener throw.
199
+ emitEvent(logger, () => buildScannerLaunchFailedEvent({
200
+ scannerName: scanner.name,
201
+ phase: "remint",
202
+ wallet,
203
+ scannerId: oldId,
204
+ supervisorId: supervisor.supervisorId,
205
+ error: err,
206
+ }));
207
+ }
173
208
  }
174
209
  });
175
210
  this.active.push({ currentId: idHolder, supervisor });
@@ -179,6 +214,14 @@ export class ScannerLauncher {
179
214
  this._initialized = true;
180
215
  }
181
216
  catch (err) {
217
+ // First-class record: this runtime's supervised scanner failed to wire up and will produce no
218
+ // signals. Emitted before the rollback/rethrow, inside emitEvent's guard.
219
+ emitEvent(logger, () => buildScannerLaunchFailedEvent({
220
+ scannerName: failingScanner ?? "unknown",
221
+ phase: "wire",
222
+ wallet,
223
+ error: err,
224
+ }));
182
225
  // All-or-nothing: roll back every registration made in this call so the
183
226
  // registry stays clean and a retry does not see stale or duplicate ids.
184
227
  for (const id of registeredInThisCall) {
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-launcher.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner-launcher.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface ScannerRegistry {
19
19
  resolve(scannerId: string): ScannerRegistryEntry | undefined;
20
20
  register(entry: ScannerRegistryEntry): void;
21
21
  unregister(scannerId: string): void;
22
+ /** All live entries — lets a reader resolve scannerName → current (ephemeral) scanner_id. */
23
+ entries(): ScannerRegistryEntry[];
22
24
  }
23
25
  /**
24
26
  * Default Map-backed implementation of ScannerRegistry.
@@ -32,5 +34,6 @@ export declare class MapScannerRegistry implements ScannerRegistry {
32
34
  resolve(scannerId: string): ScannerRegistryEntry | undefined;
33
35
  register(entry: ScannerRegistryEntry): void;
34
36
  unregister(scannerId: string): void;
37
+ entries(): ScannerRegistryEntry[];
35
38
  }
36
39
  //# sourceMappingURL=scanner-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,KAAK,CAA2C;IAExD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI5D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAI3C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGpC"}
1
+ {"version":3,"file":"scanner-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,6FAA6F;IAC7F,OAAO,IAAI,oBAAoB,EAAE,CAAC;CACnC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,KAAK,CAA2C;IAExD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI5D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAI3C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInC,OAAO,IAAI,oBAAoB,EAAE;CAGlC"}
@@ -25,5 +25,8 @@ export class MapScannerRegistry {
25
25
  unregister(scannerId) {
26
26
  this.store.delete(scannerId);
27
27
  }
28
+ entries() {
29
+ return [...this.store.values()];
30
+ }
28
31
  }
29
32
  //# sourceMappingURL=scanner-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-registry.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAExD,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"scanner-registry.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAExD,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}