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

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 (458) 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 +255 -77
  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/intake/intake-events.d.ts +44 -0
  130. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -0
  131. package/dist/runtime-api/intake/intake-events.js +131 -0
  132. package/dist/runtime-api/intake/intake-events.js.map +1 -0
  133. package/dist/runtime-api/intake/scanner-launcher.d.ts +2 -0
  134. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  135. package/dist/runtime-api/intake/scanner-launcher.js +58 -15
  136. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  137. package/dist/runtime-api/intake/scanner-registry.d.ts +3 -0
  138. package/dist/runtime-api/intake/scanner-registry.d.ts.map +1 -1
  139. package/dist/runtime-api/intake/scanner-registry.js +3 -0
  140. package/dist/runtime-api/intake/scanner-registry.js.map +1 -1
  141. package/dist/runtime-api/intake/supervisor-events.d.ts +61 -0
  142. package/dist/runtime-api/intake/supervisor-events.d.ts.map +1 -0
  143. package/dist/runtime-api/intake/supervisor-events.js +173 -0
  144. package/dist/runtime-api/intake/supervisor-events.js.map +1 -0
  145. package/dist/runtime-api/routes/signals.d.ts +1 -1
  146. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  147. package/dist/runtime-api/routes/signals.js +121 -35
  148. package/dist/runtime-api/routes/signals.js.map +1 -1
  149. package/dist/runtime-api/server.d.ts.map +1 -1
  150. package/dist/runtime-api/server.js +10 -1
  151. package/dist/runtime-api/server.js.map +1 -1
  152. package/dist/scanners/engine/data-providers.d.ts +3 -0
  153. package/dist/scanners/engine/data-providers.d.ts.map +1 -1
  154. package/dist/scanners/engine/data-providers.js.map +1 -1
  155. package/dist/scanners/engine/engine.d.ts +18 -0
  156. package/dist/scanners/engine/engine.d.ts.map +1 -1
  157. package/dist/scanners/engine/engine.js +96 -2
  158. package/dist/scanners/engine/engine.js.map +1 -1
  159. package/dist/scanners/engine/input-resolver.d.ts.map +1 -1
  160. package/dist/scanners/engine/input-resolver.js +9 -7
  161. package/dist/scanners/engine/input-resolver.js.map +1 -1
  162. package/dist/scanners/runtime-module.d.ts +3 -0
  163. package/dist/scanners/runtime-module.d.ts.map +1 -1
  164. package/dist/scanners/runtime-module.js +7 -0
  165. package/dist/scanners/runtime-module.js.map +1 -1
  166. package/dist/senpi/client.d.ts +10 -0
  167. package/dist/senpi/client.d.ts.map +1 -1
  168. package/dist/senpi/client.js +113 -46
  169. package/dist/senpi/client.js.map +1 -1
  170. package/dist/skills-manager/bootstrap.d.ts.map +1 -1
  171. package/dist/skills-manager/bootstrap.js +22 -33
  172. package/dist/skills-manager/bootstrap.js.map +1 -1
  173. package/dist/skills-manager/clone-groups.d.ts +20 -0
  174. package/dist/skills-manager/clone-groups.d.ts.map +1 -0
  175. package/dist/skills-manager/clone-groups.js +45 -0
  176. package/dist/skills-manager/clone-groups.js.map +1 -0
  177. package/dist/skills-manager/coordinator.d.ts.map +1 -1
  178. package/dist/skills-manager/coordinator.js +111 -75
  179. package/dist/skills-manager/coordinator.js.map +1 -1
  180. package/dist/skills-manager/manifest.d.ts +24 -0
  181. package/dist/skills-manager/manifest.d.ts.map +1 -1
  182. package/dist/skills-manager/manifest.js +23 -10
  183. package/dist/skills-manager/manifest.js.map +1 -1
  184. package/dist/skills-manager/skills-manifest.json +12 -7
  185. package/dist/skills-manager/types.d.ts +12 -0
  186. package/dist/skills-manager/types.d.ts.map +1 -1
  187. package/dist/state/state-events.d.ts +13 -0
  188. package/dist/state/state-events.d.ts.map +1 -0
  189. package/dist/state/state-events.js +22 -0
  190. package/dist/state/state-events.js.map +1 -0
  191. package/dist/state/state-manager.d.ts.map +1 -1
  192. package/dist/state/state-manager.js +14 -1
  193. package/dist/state/state-manager.js.map +1 -1
  194. package/dist/telemetry/attributes.d.ts +13 -0
  195. package/dist/telemetry/attributes.d.ts.map +1 -0
  196. package/dist/telemetry/attributes.js +22 -0
  197. package/dist/telemetry/attributes.js.map +1 -0
  198. package/dist/{tracking → telemetry}/context.d.ts +12 -5
  199. package/dist/telemetry/context.d.ts.map +1 -0
  200. package/dist/{tracking → telemetry}/context.js +4 -4
  201. package/dist/telemetry/context.js.map +1 -0
  202. package/dist/{recording/records.d.ts → telemetry/event-builders.d.ts} +145 -33
  203. package/dist/telemetry/event-builders.d.ts.map +1 -0
  204. package/dist/{recording/wiring/record-builders.js → telemetry/event-builders.js} +94 -40
  205. package/dist/telemetry/event-builders.js.map +1 -0
  206. package/dist/telemetry/event-store.d.ts +66 -0
  207. package/dist/telemetry/event-store.d.ts.map +1 -0
  208. package/dist/telemetry/event-store.js +202 -0
  209. package/dist/telemetry/event-store.js.map +1 -0
  210. package/dist/telemetry/identity.d.ts +72 -0
  211. package/dist/telemetry/identity.d.ts.map +1 -0
  212. package/dist/{recording/wiring → telemetry}/identity.js +6 -2
  213. package/dist/telemetry/identity.js.map +1 -0
  214. package/dist/telemetry/metrics.d.ts +169 -0
  215. package/dist/telemetry/metrics.d.ts.map +1 -0
  216. package/dist/telemetry/metrics.js +437 -0
  217. package/dist/telemetry/metrics.js.map +1 -0
  218. package/dist/telemetry/otel-sdk.d.ts +93 -0
  219. package/dist/telemetry/otel-sdk.d.ts.map +1 -0
  220. package/dist/telemetry/otel-sdk.js +297 -0
  221. package/dist/telemetry/otel-sdk.js.map +1 -0
  222. package/dist/telemetry/spans/constants.d.ts +12 -0
  223. package/dist/telemetry/spans/constants.d.ts.map +1 -0
  224. package/dist/telemetry/spans/constants.js +12 -0
  225. package/dist/telemetry/spans/constants.js.map +1 -0
  226. package/dist/telemetry/spans/gen-ai.d.ts +74 -0
  227. package/dist/telemetry/spans/gen-ai.d.ts.map +1 -0
  228. package/dist/telemetry/spans/gen-ai.js +339 -0
  229. package/dist/telemetry/spans/gen-ai.js.map +1 -0
  230. package/dist/telemetry/spans/index.d.ts +11 -0
  231. package/dist/telemetry/spans/index.d.ts.map +1 -0
  232. package/dist/telemetry/spans/index.js +11 -0
  233. package/dist/telemetry/spans/index.js.map +1 -0
  234. package/dist/{tracking → telemetry}/spans/redact-pii.d.ts +19 -21
  235. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -0
  236. package/dist/{tracking → telemetry}/spans/redact-pii.js +35 -32
  237. package/dist/telemetry/spans/redact-pii.js.map +1 -0
  238. package/dist/telemetry/spans/sanitize-payload.d.ts.map +1 -0
  239. package/dist/telemetry/spans/sanitize-payload.js.map +1 -0
  240. package/dist/telemetry/spans/span-hooks.d.ts +18 -0
  241. package/dist/telemetry/spans/span-hooks.d.ts.map +1 -0
  242. package/dist/telemetry/spans/span-hooks.js +764 -0
  243. package/dist/telemetry/spans/span-hooks.js.map +1 -0
  244. package/dist/telemetry/tool-plane.d.ts +31 -0
  245. package/dist/telemetry/tool-plane.d.ts.map +1 -0
  246. package/dist/telemetry/tool-plane.js +70 -0
  247. package/dist/telemetry/tool-plane.js.map +1 -0
  248. package/dist/telemetry/trace-identity.d.ts +32 -0
  249. package/dist/telemetry/trace-identity.d.ts.map +1 -0
  250. package/dist/telemetry/trace-identity.js +62 -0
  251. package/dist/telemetry/trace-identity.js.map +1 -0
  252. package/dist/telemetry/tracing.d.ts +33 -0
  253. package/dist/telemetry/tracing.d.ts.map +1 -0
  254. package/dist/telemetry/tracing.js +70 -0
  255. package/dist/telemetry/tracing.js.map +1 -0
  256. package/dist/types/dsl/index.d.ts +8 -9
  257. package/dist/types/dsl/index.d.ts.map +1 -1
  258. package/dist/types/runtime.d.ts +1 -1
  259. package/dist/types/runtime.d.ts.map +1 -1
  260. package/dist/types/scanner.d.ts +2 -0
  261. package/dist/types/scanner.d.ts.map +1 -1
  262. package/dist/utils/event-catalog.d.ts +506 -0
  263. package/dist/utils/event-catalog.d.ts.map +1 -0
  264. package/dist/utils/event-catalog.js +142 -0
  265. package/dist/utils/event-catalog.js.map +1 -0
  266. package/dist/utils/logger.d.ts +63 -5
  267. package/dist/utils/logger.d.ts.map +1 -1
  268. package/dist/utils/logger.js +360 -27
  269. package/dist/utils/logger.js.map +1 -1
  270. package/dist/utils/wallet-address.d.ts +3 -0
  271. package/dist/utils/wallet-address.d.ts.map +1 -0
  272. package/dist/utils/wallet-address.js +17 -0
  273. package/dist/utils/wallet-address.js.map +1 -0
  274. package/openclaw.plugin.json +20 -6
  275. package/package.json +10 -2
  276. package/dist/actions/tracking-helpers.d.ts +0 -28
  277. package/dist/actions/tracking-helpers.d.ts.map +0 -1
  278. package/dist/actions/tracking-helpers.js +0 -93
  279. package/dist/actions/tracking-helpers.js.map +0 -1
  280. package/dist/recording/emitter.d.ts +0 -27
  281. package/dist/recording/emitter.d.ts.map +0 -1
  282. package/dist/recording/emitter.js +0 -2
  283. package/dist/recording/emitter.js.map +0 -1
  284. package/dist/recording/identity.d.ts +0 -34
  285. package/dist/recording/identity.d.ts.map +0 -1
  286. package/dist/recording/identity.js +0 -2
  287. package/dist/recording/identity.js.map +0 -1
  288. package/dist/recording/index.d.ts +0 -11
  289. package/dist/recording/index.d.ts.map +0 -1
  290. package/dist/recording/index.js +0 -2
  291. package/dist/recording/index.js.map +0 -1
  292. package/dist/recording/noop-emitter.d.ts +0 -23
  293. package/dist/recording/noop-emitter.d.ts.map +0 -1
  294. package/dist/recording/noop-emitter.js +0 -22
  295. package/dist/recording/noop-emitter.js.map +0 -1
  296. package/dist/recording/otel/attributes.d.ts +0 -35
  297. package/dist/recording/otel/attributes.d.ts.map +0 -1
  298. package/dist/recording/otel/attributes.js +0 -131
  299. package/dist/recording/otel/attributes.js.map +0 -1
  300. package/dist/recording/otel/constants.d.ts +0 -123
  301. package/dist/recording/otel/constants.d.ts.map +0 -1
  302. package/dist/recording/otel/constants.js +0 -172
  303. package/dist/recording/otel/constants.js.map +0 -1
  304. package/dist/recording/otel/ids.d.ts +0 -25
  305. package/dist/recording/otel/ids.d.ts.map +0 -1
  306. package/dist/recording/otel/ids.js +0 -37
  307. package/dist/recording/otel/ids.js.map +0 -1
  308. package/dist/recording/otel/index.d.ts +0 -13
  309. package/dist/recording/otel/index.d.ts.map +0 -1
  310. package/dist/recording/otel/index.js +0 -9
  311. package/dist/recording/otel/index.js.map +0 -1
  312. package/dist/recording/otel/mappers.d.ts +0 -100
  313. package/dist/recording/otel/mappers.d.ts.map +0 -1
  314. package/dist/recording/otel/mappers.js +0 -683
  315. package/dist/recording/otel/mappers.js.map +0 -1
  316. package/dist/recording/otel/otel-emitter.d.ts +0 -43
  317. package/dist/recording/otel/otel-emitter.d.ts.map +0 -1
  318. package/dist/recording/otel/otel-emitter.js +0 -99
  319. package/dist/recording/otel/otel-emitter.js.map +0 -1
  320. package/dist/recording/otel/redaction.d.ts +0 -47
  321. package/dist/recording/otel/redaction.d.ts.map +0 -1
  322. package/dist/recording/otel/redaction.js +0 -88
  323. package/dist/recording/otel/redaction.js.map +0 -1
  324. package/dist/recording/records.d.ts.map +0 -1
  325. package/dist/recording/records.js +0 -14
  326. package/dist/recording/records.js.map +0 -1
  327. package/dist/recording/transport/batcher.d.ts +0 -59
  328. package/dist/recording/transport/batcher.d.ts.map +0 -1
  329. package/dist/recording/transport/batcher.js +0 -234
  330. package/dist/recording/transport/batcher.js.map +0 -1
  331. package/dist/recording/transport/client.d.ts +0 -41
  332. package/dist/recording/transport/client.d.ts.map +0 -1
  333. package/dist/recording/transport/client.js +0 -69
  334. package/dist/recording/transport/client.js.map +0 -1
  335. package/dist/recording/transport/config.d.ts +0 -53
  336. package/dist/recording/transport/config.d.ts.map +0 -1
  337. package/dist/recording/transport/config.js +0 -41
  338. package/dist/recording/transport/config.js.map +0 -1
  339. package/dist/recording/transport/index.d.ts +0 -16
  340. package/dist/recording/transport/index.d.ts.map +0 -1
  341. package/dist/recording/transport/index.js +0 -12
  342. package/dist/recording/transport/index.js.map +0 -1
  343. package/dist/recording/transport/rows.d.ts +0 -88
  344. package/dist/recording/transport/rows.d.ts.map +0 -1
  345. package/dist/recording/transport/rows.js +0 -15
  346. package/dist/recording/transport/rows.js.map +0 -1
  347. package/dist/recording/wiring/emitter-factory.d.ts +0 -39
  348. package/dist/recording/wiring/emitter-factory.d.ts.map +0 -1
  349. package/dist/recording/wiring/emitter-factory.js +0 -62
  350. package/dist/recording/wiring/emitter-factory.js.map +0 -1
  351. package/dist/recording/wiring/identity.d.ts +0 -27
  352. package/dist/recording/wiring/identity.d.ts.map +0 -1
  353. package/dist/recording/wiring/identity.js.map +0 -1
  354. package/dist/recording/wiring/index.d.ts +0 -12
  355. package/dist/recording/wiring/index.d.ts.map +0 -1
  356. package/dist/recording/wiring/index.js +0 -9
  357. package/dist/recording/wiring/index.js.map +0 -1
  358. package/dist/recording/wiring/record-builders.d.ts +0 -107
  359. package/dist/recording/wiring/record-builders.d.ts.map +0 -1
  360. package/dist/recording/wiring/record-builders.js.map +0 -1
  361. package/dist/recording/wiring/subscriber.d.ts +0 -28
  362. package/dist/recording/wiring/subscriber.d.ts.map +0 -1
  363. package/dist/recording/wiring/subscriber.js +0 -173
  364. package/dist/recording/wiring/subscriber.js.map +0 -1
  365. package/dist/recording/wiring/values.d.ts +0 -19
  366. package/dist/recording/wiring/values.d.ts.map +0 -1
  367. package/dist/recording/wiring/values.js +0 -49
  368. package/dist/recording/wiring/values.js.map +0 -1
  369. package/dist/tracking/build-rehydrate-items.d.ts +0 -15
  370. package/dist/tracking/build-rehydrate-items.d.ts.map +0 -1
  371. package/dist/tracking/build-rehydrate-items.js +0 -19
  372. package/dist/tracking/build-rehydrate-items.js.map +0 -1
  373. package/dist/tracking/constants.d.ts +0 -24
  374. package/dist/tracking/constants.d.ts.map +0 -1
  375. package/dist/tracking/constants.js +0 -52
  376. package/dist/tracking/constants.js.map +0 -1
  377. package/dist/tracking/context.d.ts.map +0 -1
  378. package/dist/tracking/context.js.map +0 -1
  379. package/dist/tracking/index.d.ts +0 -16
  380. package/dist/tracking/index.d.ts.map +0 -1
  381. package/dist/tracking/index.js +0 -11
  382. package/dist/tracking/index.js.map +0 -1
  383. package/dist/tracking/plugin-event-tracker.d.ts +0 -13
  384. package/dist/tracking/plugin-event-tracker.d.ts.map +0 -1
  385. package/dist/tracking/plugin-event-tracker.js +0 -27
  386. package/dist/tracking/plugin-event-tracker.js.map +0 -1
  387. package/dist/tracking/position-id-registry.d.ts.map +0 -1
  388. package/dist/tracking/position-id-registry.js.map +0 -1
  389. package/dist/tracking/spans/constants.d.ts +0 -19
  390. package/dist/tracking/spans/constants.d.ts.map +0 -1
  391. package/dist/tracking/spans/constants.js +0 -31
  392. package/dist/tracking/spans/constants.js.map +0 -1
  393. package/dist/tracking/spans/fan-out-span-transport.d.ts +0 -22
  394. package/dist/tracking/spans/fan-out-span-transport.d.ts.map +0 -1
  395. package/dist/tracking/spans/fan-out-span-transport.js +0 -49
  396. package/dist/tracking/spans/fan-out-span-transport.js.map +0 -1
  397. package/dist/tracking/spans/index.d.ts +0 -13
  398. package/dist/tracking/spans/index.d.ts.map +0 -1
  399. package/dist/tracking/spans/index.js +0 -16
  400. package/dist/tracking/spans/index.js.map +0 -1
  401. package/dist/tracking/spans/otel/fit-row-budget.d.ts +0 -22
  402. package/dist/tracking/spans/otel/fit-row-budget.d.ts.map +0 -1
  403. package/dist/tracking/spans/otel/fit-row-budget.js +0 -91
  404. package/dist/tracking/spans/otel/fit-row-budget.js.map +0 -1
  405. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts +0 -16
  406. package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts.map +0 -1
  407. package/dist/tracking/spans/otel/map-span-to-trace-row.js +0 -227
  408. package/dist/tracking/spans/otel/map-span-to-trace-row.js.map +0 -1
  409. package/dist/tracking/spans/otel/recording-span-transport.d.ts +0 -43
  410. package/dist/tracking/spans/otel/recording-span-transport.d.ts.map +0 -1
  411. package/dist/tracking/spans/otel/recording-span-transport.js +0 -67
  412. package/dist/tracking/spans/otel/recording-span-transport.js.map +0 -1
  413. package/dist/tracking/spans/otel/span-ids.d.ts +0 -22
  414. package/dist/tracking/spans/otel/span-ids.d.ts.map +0 -1
  415. package/dist/tracking/spans/otel/span-ids.js +0 -32
  416. package/dist/tracking/spans/otel/span-ids.js.map +0 -1
  417. package/dist/tracking/spans/plugin-span-tracker.d.ts +0 -9
  418. package/dist/tracking/spans/plugin-span-tracker.d.ts.map +0 -1
  419. package/dist/tracking/spans/plugin-span-tracker.js +0 -115
  420. package/dist/tracking/spans/plugin-span-tracker.js.map +0 -1
  421. package/dist/tracking/spans/redact-pii.d.ts.map +0 -1
  422. package/dist/tracking/spans/redact-pii.js.map +0 -1
  423. package/dist/tracking/spans/sanitize-payload.d.ts.map +0 -1
  424. package/dist/tracking/spans/sanitize-payload.js.map +0 -1
  425. package/dist/tracking/spans/span-hooks.d.ts +0 -28
  426. package/dist/tracking/spans/span-hooks.d.ts.map +0 -1
  427. package/dist/tracking/spans/span-hooks.js +0 -409
  428. package/dist/tracking/spans/span-hooks.js.map +0 -1
  429. package/dist/tracking/spans/span-tracker.d.ts +0 -133
  430. package/dist/tracking/spans/span-tracker.d.ts.map +0 -1
  431. package/dist/tracking/spans/span-tracker.js +0 -721
  432. package/dist/tracking/spans/span-tracker.js.map +0 -1
  433. package/dist/tracking/spans/span-transport.d.ts +0 -71
  434. package/dist/tracking/spans/span-transport.d.ts.map +0 -1
  435. package/dist/tracking/spans/span-transport.js +0 -240
  436. package/dist/tracking/spans/span-transport.js.map +0 -1
  437. package/dist/tracking/spans/types.d.ts +0 -101
  438. package/dist/tracking/spans/types.d.ts.map +0 -1
  439. package/dist/tracking/spans/types.js +0 -6
  440. package/dist/tracking/spans/types.js.map +0 -1
  441. package/dist/tracking/tracker.d.ts +0 -30
  442. package/dist/tracking/tracker.d.ts.map +0 -1
  443. package/dist/tracking/tracker.js +0 -66
  444. package/dist/tracking/tracker.js.map +0 -1
  445. package/dist/tracking/tracking-handler.d.ts +0 -12
  446. package/dist/tracking/tracking-handler.d.ts.map +0 -1
  447. package/dist/tracking/tracking-handler.js +0 -148
  448. package/dist/tracking/tracking-handler.js.map +0 -1
  449. package/dist/tracking/transport.d.ts +0 -35
  450. package/dist/tracking/transport.d.ts.map +0 -1
  451. package/dist/tracking/transport.js +0 -133
  452. package/dist/tracking/transport.js.map +0 -1
  453. package/dist/tracking/types.d.ts +0 -21
  454. package/dist/tracking/types.d.ts.map +0 -1
  455. package/dist/tracking/types.js +0 -6
  456. package/dist/tracking/types.js.map +0 -1
  457. /package/dist/{tracking → telemetry}/spans/sanitize-payload.d.ts +0 -0
  458. /package/dist/{tracking → telemetry}/spans/sanitize-payload.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-catalog.js","sourceRoot":"","sources":["../../src/utils/event-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * Shared structured logger factory. Components create a logger with a namespace.
3
+ *
4
+ * Dual sink, one shape: every record renders to the TTY via `console.*` and is emitted
5
+ * as a real OTel LogRecord via the global Logs API. When the SDK is not initialised (off,
6
+ * or under test) the API resolves a no-op logger, so the emit is a near-zero no-op — no
7
+ * `enabled` gate needed. trace_id/span_id are stamped natively from the active span; the
8
+ * per-runtime `senpi.*` identity rides in via the async-context bag (see `trackingContext`).
3
9
  */
10
+ import { type AttrsFor, type EventName } from "./event-catalog.js";
4
11
  export type LogLevel = "debug" | "info" | "warn" | "error";
5
12
  export type LogLevelSource = "config" | "env" | "default" | "runtime";
6
13
  /** Parse a candidate log-level string. Returns null for unknown values (caller decides how to warn/fallback). */
@@ -12,17 +19,68 @@ export interface ErrorNotificationPayload {
12
19
  namespace: string;
13
20
  level: "error";
14
21
  message: string;
15
- meta?: unknown;
22
+ attributes?: unknown;
23
+ /**
24
+ * Normalized exception, present when the error call carried one. Built once alongside the
25
+ * log record's `exception.*` attributes so the notifier surfaces the same type/message/stack
26
+ * the log does — the raw error no longer rides in `attributes`.
27
+ */
28
+ exception?: NormalizedException;
16
29
  timestamp: string;
17
30
  }
18
31
  export type ErrorNotifier = (payload: ErrorNotificationPayload) => void | Promise<void>;
19
32
  export declare function setErrorNotifier(notifier: ErrorNotifier | null): void;
20
33
  export declare function clearErrorNotifier(): void;
34
+ /** OTel exception semconv, normalized from any thrown value. Stacks are kept unredacted. */
35
+ export interface NormalizedException {
36
+ type?: string;
37
+ message: string;
38
+ stacktrace?: string;
39
+ }
40
+ /**
41
+ * The options for an event emit. Placement is the control — there is no opt-out:
42
+ * - `body` — a deterministic, human/agent-readable narrative, templated from safe scalars. Safe by
43
+ * construction, so it is NEVER redacted (and never capped — it is bounded by its template).
44
+ * - `attributes` — structured scalars, typed per event via {@link AttrsFor}. Safe by construction:
45
+ * capped, but NEVER redacted.
46
+ * - `redact` — free-text / external strings (LLM reasoning, a venue error, a raw signal). The only
47
+ * slot that is capped AND always run through redaction before it joins the emitted attributes.
48
+ * - `error` — a thrown value when this catalogued event IS also a fault (e.g. `order.failed` from a
49
+ * venue throw). Normalized to `exception.*` semconv on the record (stack kept, uncapped) and recorded
50
+ * on the active span, so one emit carries narrative + typed attrs + exception. Unlike `logger.error`,
51
+ * it does NOT fan out the error notifier — severity is the call site's to grade via `level`.
52
+ */
53
+ export interface EventOptions<N extends EventName> {
54
+ body: string;
55
+ attributes?: AttrsFor<N>;
56
+ redact?: Record<string, string>;
57
+ error?: unknown;
58
+ }
21
59
  export interface Logger {
22
- debug(message: string, meta?: unknown): void;
23
- info(message: string, meta?: unknown): void;
24
- warn(message: string, meta?: unknown): void;
25
- error(message: string, meta?: unknown): void;
60
+ debug(message: string, attributes?: unknown): void;
61
+ info(message: string, attributes?: unknown): void;
62
+ /**
63
+ * @param error An `Error` (or other thrown value) → normalized to `exception.*` attributes and
64
+ * recorded on the active span. Omit for a plain log; pass attributes here only when there is no
65
+ * error (a non-`Error` value here is treated as the attributes bag for back-compat).
66
+ * @param attributes The attributes bag, when an error is also passed.
67
+ */
68
+ warn(message: string, error?: unknown, attributes?: unknown): void;
69
+ error(message: string, error?: unknown, attributes?: unknown): void;
70
+ /**
71
+ * Emit a first-class event from the closed {@link EventName} catalog: a deterministic narrative
72
+ * `body`, safe scalar `attributes` (typed per event, capped, never redacted), and optional
73
+ * free-text `redact` fields (capped + always scrubbed). The `name` is set as the OTel eventName,
74
+ * never sniffed from attributes. `level` drives severity (and the console sink). See
75
+ * {@link EventOptions}.
76
+ */
77
+ event<N extends EventName>(name: N, level: LogLevel, opts: EventOptions<N>): void;
26
78
  }
27
79
  export declare function createLogger(namespace: string): Logger;
80
+ /**
81
+ * A complete {@link Logger} that discards everything. Use it as an explicit "be silent here" default
82
+ * (e.g. tests, or a consumer that doesn't wire logging) instead of hand-rolling a partial object —
83
+ * being defined alongside {@link Logger} it always satisfies the full contract as the interface grows.
84
+ */
85
+ export declare const noopLogger: Logger;
28
86
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAW3D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAY7E;AAmBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,cAA0B,GAAG,IAAI,CAGrF;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAMD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAkBD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8CtD"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAEL,KAAK,QAAQ,EAEb,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAW3D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAY7E;AAmBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,cAA0B,GAAG,IAAI,CAGrF;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAgBD,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8HD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpE;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnF;AAyJD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsFtD;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC"}
@@ -1,6 +1,19 @@
1
1
  /**
2
2
  * Shared structured logger factory. Components create a logger with a namespace.
3
+ *
4
+ * Dual sink, one shape: every record renders to the TTY via `console.*` and is emitted
5
+ * as a real OTel LogRecord via the global Logs API. When the SDK is not initialised (off,
6
+ * or under test) the API resolves a no-op logger, so the emit is a near-zero no-op — no
7
+ * `enabled` gate needed. trace_id/span_id are stamped natively from the active span; the
8
+ * per-runtime `senpi.*` identity rides in via the async-context bag (see `trackingContext`).
3
9
  */
10
+ import { logs, SeverityNumber } from "@opentelemetry/api-logs";
11
+ import { context, trace, SpanStatusCode } from "@opentelemetry/api";
12
+ import { getTrackingContext } from "../telemetry/context.js";
13
+ import { capValue, MAX_ATTR_VALUE_CHARS, MAX_BAG_KEYS, MAX_TOTAL_ATTR_CHARS, } from "../telemetry/attributes.js";
14
+ import { getDefaultPiiRedactor } from "../telemetry/spans/redact-pii.js";
15
+ import { appendDomainEvent } from "../telemetry/event-store.js";
16
+ import { canonicalSeverity, } from "./event-catalog.js";
4
17
  const levelOrder = {
5
18
  debug: 0,
6
19
  info: 1,
@@ -55,6 +68,129 @@ export function clearErrorNotifier() {
55
68
  function shouldLog(level) {
56
69
  return levelOrder[level] >= levelOrder[minLevel];
57
70
  }
71
+ /** Instrumentation scope for emitted LogRecords; matches the tracer name. */
72
+ const LOGGER_SCOPE = "senpi-trading-runtime";
73
+ const severityByLevel = {
74
+ debug: SeverityNumber.DEBUG,
75
+ info: SeverityNumber.INFO,
76
+ warn: SeverityNumber.WARN,
77
+ error: SeverityNumber.ERROR,
78
+ };
79
+ /** Normalize any thrown value to OTel exception semconv. Full type + message + stack for `Error`s. */
80
+ function normalizeException(error) {
81
+ if (error instanceof Error) {
82
+ const normalized = { type: error.name, message: error.message };
83
+ if (error.stack)
84
+ normalized.stacktrace = error.stack;
85
+ return normalized;
86
+ }
87
+ return { message: String(error) };
88
+ }
89
+ /** The exception-semconv attribute keys for an emitted LogRecord. */
90
+ function exceptionAttributes(exception) {
91
+ const attrs = { "exception.message": exception.message };
92
+ if (exception.type !== undefined)
93
+ attrs["exception.type"] = exception.type;
94
+ if (exception.stacktrace !== undefined)
95
+ attrs["exception.stacktrace"] = exception.stacktrace;
96
+ return attrs;
97
+ }
98
+ /**
99
+ * Safety net for raw `Error`s in the attributes bag: an `Error` is not a valid OTel attribute value,
100
+ * so it would be silently dropped. Strip every `Error` from the bag (keeping attributes valid) and
101
+ * surface the first one — for the legacy `{ err }` convention the caller passed no explicit error, so
102
+ * that first `Error` becomes the exception and the record is flagged (`code.error.scavenged`) to make
103
+ * the un-migrated site findable. Returns null when the bag holds no `Error`.
104
+ */
105
+ function scavengeBagError(attributes) {
106
+ if (typeof attributes !== "object" || attributes === null || Array.isArray(attributes))
107
+ return null;
108
+ const entries = Object.entries(attributes);
109
+ const hit = entries.find(([, value]) => value instanceof Error);
110
+ if (hit === undefined)
111
+ return null;
112
+ const cleaned = {};
113
+ for (const [key, value] of entries) {
114
+ if (!(value instanceof Error))
115
+ cleaned[key] = value;
116
+ }
117
+ return { error: hit[1], cleaned };
118
+ }
119
+ /**
120
+ * Resolve the discriminated `(message, error?, attributes?)` arguments. The error slot collides with
121
+ * the legacy attributes-second convention, so we disambiguate at runtime: an explicit attributes arg
122
+ * (`arg3`) makes `arg2` the error; otherwise a plain object in `arg2` is the attributes bag
123
+ * (back-compat) and anything else — an `Error`, a thrown string/number, etc. — is the error. A thrown
124
+ * plain object (rare) is indistinguishable from a bag, so use the explicit three-arg form for it.
125
+ */
126
+ function resolveErrorArgs(arg2, arg3) {
127
+ if (arg3 !== undefined)
128
+ return { error: arg2, attributes: arg3 };
129
+ if (typeof arg2 === "object" && arg2 !== null && !Array.isArray(arg2) && !(arg2 instanceof Error)) {
130
+ return { error: undefined, attributes: arg2 };
131
+ }
132
+ return { error: arg2, attributes: undefined };
133
+ }
134
+ /**
135
+ * Record the error on the active span: `recordException` for both warn and error so
136
+ * a swallowed-and-continuing failure still paints the waterfall (`withSpan` only records on rethrow);
137
+ * `setStatus(ERROR)` for `error` only — a `warn` is a handled failure and must not fail the span.
138
+ */
139
+ function recordExceptionOnActiveSpan(error, level) {
140
+ try {
141
+ const span = trace.getActiveSpan();
142
+ if (span === undefined)
143
+ return;
144
+ span.recordException(error instanceof Error ? error : { message: String(error) });
145
+ if (level === "error") {
146
+ span.setStatus({
147
+ code: SpanStatusCode.ERROR,
148
+ message: error instanceof Error ? error.message : String(error),
149
+ });
150
+ }
151
+ }
152
+ catch {
153
+ // A tracing failure must never disturb the logging caller.
154
+ }
155
+ }
156
+ /**
157
+ * Assemble LogRecord attributes: the component namespace, the caller's `attributes` (a plain
158
+ * object is the attributes bag — spread as-is; anything else is wrapped under `log.attributes`),
159
+ * any `extra` keys the warn/error path derived (exception semconv + the scavenger flag), and the
160
+ * current runtime's `senpi.*` identity from async-context (last, so it can't be clobbered). Identity
161
+ * is absent outside a runtime flow (e.g. process boot) — correct, not a gap.
162
+ */
163
+ function buildLogAttributes(namespace, attributes, extra) {
164
+ const merged = { "code.namespace": namespace };
165
+ if (attributes !== undefined) {
166
+ if (typeof attributes === "object" && attributes !== null && !Array.isArray(attributes)) {
167
+ Object.assign(merged, attributes);
168
+ }
169
+ else {
170
+ merged["log.attributes"] = attributes;
171
+ }
172
+ }
173
+ if (extra !== undefined)
174
+ Object.assign(merged, extra);
175
+ const identity = getTrackingContext()?.identityAttributes;
176
+ if (identity)
177
+ Object.assign(merged, identity);
178
+ return merged;
179
+ }
180
+ /** Emit a structured LogRecord to the global Logs API. Guarded: telemetry never breaks the caller. */
181
+ function emitLogRecord(namespace, level, message, attributes, extra) {
182
+ try {
183
+ logs.getLogger(LOGGER_SCOPE).emit({
184
+ severityNumber: severityByLevel[level],
185
+ severityText: level.toUpperCase(),
186
+ body: message,
187
+ attributes: buildLogAttributes(namespace, attributes, extra),
188
+ });
189
+ }
190
+ catch {
191
+ // A telemetry-side failure must never disturb the logging caller.
192
+ }
193
+ }
58
194
  function dispatchErrorNotification(payload) {
59
195
  const notifier = errorNotifier;
60
196
  if (notifier == null || notifyingError)
@@ -72,59 +208,256 @@ function dispatchErrorNotification(payload) {
72
208
  }
73
209
  })();
74
210
  }
211
+ /** Cap each redact-slot string at the per-value limit. Keys are pinned at the call site, so unbounded. */
212
+ function capRedactFields(fields) {
213
+ const out = {};
214
+ for (const [key, value] of Object.entries(fields)) {
215
+ out[key] = capValue(value, MAX_ATTR_VALUE_CHARS);
216
+ }
217
+ return out;
218
+ }
219
+ /** Cap string scalar values at the per-value limit; numbers/booleans pass through. Not redacted. */
220
+ function capScalars(attributes) {
221
+ if (attributes === undefined)
222
+ return undefined;
223
+ const out = {};
224
+ for (const [key, value] of Object.entries(attributes)) {
225
+ out[key] = typeof value === "string" ? capValue(value, MAX_ATTR_VALUE_CHARS) : value;
226
+ }
227
+ return out;
228
+ }
229
+ /**
230
+ * Merge an event's redacted free-text fields and scalar attributes into one bag under a total-size +
231
+ * key-count budget (the same caps the recording row builder enforces, so one fat event can't blow
232
+ * past the OTLP body cap and drop the whole record). Scalars are added after the redact fields, so on
233
+ * a key collision the safe structured scalar wins over the free-text field — the redact slot is
234
+ * supplementary, not primary. Per-value capping already happened upstream. Runtime identity is
235
+ * layered on later in {@link buildLogAttributes} and stays authoritative.
236
+ */
237
+ function mergeEventAttributes(attributes, redactFields) {
238
+ const merged = {};
239
+ let totalChars = 0;
240
+ let keyCount = 0;
241
+ const add = (key, value) => {
242
+ const cost = key.length + String(value).length;
243
+ if (keyCount >= MAX_BAG_KEYS || totalChars + cost > MAX_TOTAL_ATTR_CHARS)
244
+ return;
245
+ if (!(key in merged))
246
+ keyCount++;
247
+ merged[key] = value;
248
+ totalChars += cost;
249
+ };
250
+ if (redactFields !== undefined)
251
+ for (const [k, v] of Object.entries(redactFields))
252
+ add(k, v);
253
+ if (attributes !== undefined)
254
+ for (const [k, v] of Object.entries(attributes))
255
+ add(k, v);
256
+ return merged;
257
+ }
258
+ /**
259
+ * Emit one event LogRecord: the caller's safe scalar `attributes`, the (already capped) redacted
260
+ * free-text `redactFields`, `code.namespace`, runtime identity, and the catalog `name` as the OTel
261
+ * eventName. Severity is from `level`; the body is the narrative. `timestampMs` is the call-time
262
+ * stamp — passed explicitly so the redacted path (which emits a tick or more late) records the time
263
+ * the event happened, not the time redaction finished, keeping the log ordered by occurrence.
264
+ * `extra` carries exception semconv (`exception.*`) when the event also bore an error — layered in
265
+ * uncapped, like the warn/error path, so the stack survives the per-event size budget.
266
+ * Guarded — telemetry never disturbs the caller.
267
+ */
268
+ function emitEventRecord(namespace, name, level, body, attributes, redactFields, timestampMs, extra) {
269
+ try {
270
+ const merged = buildLogAttributes(namespace, mergeEventAttributes(attributes, redactFields), extra);
271
+ logs.getLogger(LOGGER_SCOPE).emit({
272
+ timestamp: timestampMs,
273
+ severityNumber: severityByLevel[level],
274
+ severityText: level.toUpperCase(),
275
+ eventName: name,
276
+ body,
277
+ attributes: merged,
278
+ });
279
+ }
280
+ catch {
281
+ // A telemetry-side failure must never disturb the logging caller.
282
+ }
283
+ }
284
+ /**
285
+ * Redact the free-text fields (already capped) and emit, re-entering the captured trace context so
286
+ * the deferred LogRecord still carries the active span's `trace_id`/`span_id` and runtime identity.
287
+ * Redaction is intrinsically async (the redactor scans + awaits its mnemonic pre-pass), so this path
288
+ * cannot be made synchronous; the record carries the call-time `timestampMs`, so a consumer sorting
289
+ * by timestamp sees it in occurrence order regardless of how late redaction finishes. Fire-and-forget:
290
+ * the caller's `void` contract holds. Any failure — a thrown redactor, an emit error — is swallowed;
291
+ * an individual string whose redaction throws is dropped rather than emitted raw, so nothing
292
+ * unredacted reaches the wire on this path.
293
+ */
294
+ function emitEventRedacted(redactor, captured, namespace, name, level, body, attributes, redactFields, timestampMs, extra) {
295
+ void (async () => {
296
+ try {
297
+ const redacted = {};
298
+ for (const [key, value] of Object.entries(redactFields)) {
299
+ try {
300
+ redacted[key] = await redactor.redact(value);
301
+ }
302
+ catch {
303
+ // Drop a value whose redaction threw rather than emit it unredacted.
304
+ }
305
+ }
306
+ context.with(captured, () => {
307
+ emitEventRecord(namespace, name, level, body, attributes, redacted, timestampMs, extra);
308
+ });
309
+ }
310
+ catch {
311
+ // The whole deferred path is fire-and-forget; no failure may surface as an
312
+ // unhandled rejection on the caller's process.
313
+ }
314
+ })();
315
+ }
316
+ /**
317
+ * Effective severity for an event: the catalogued canonical level is a FLOOR. A caller may escalate
318
+ * a catalogued event (e.g. an outcome that failed → `error`), but may never label it below its
319
+ * canonical severity (an `order.failed` stays `error` even if a caller passes `info`).
320
+ */
321
+ function effectiveEventLevel(name, level) {
322
+ const canonical = canonicalSeverity(name);
323
+ return levelOrder[level] >= levelOrder[canonical] ? level : canonical;
324
+ }
75
325
  export function createLogger(namespace) {
76
326
  return {
77
- debug(message, meta) {
327
+ debug(message, attributes) {
78
328
  if (!shouldLog("debug"))
79
329
  return;
80
330
  const prefix = `${namespace} [debug]`;
81
- if (meta !== undefined) {
82
- console.log(prefix, message, meta);
331
+ if (attributes !== undefined) {
332
+ console.log(prefix, message, attributes);
83
333
  }
84
334
  else {
85
335
  console.log(prefix, message);
86
336
  }
337
+ emitLogRecord(namespace, "debug", message, attributes);
87
338
  },
88
- info(message, meta) {
339
+ info(message, attributes) {
89
340
  if (!shouldLog("info"))
90
341
  return;
91
342
  const prefix = `${namespace} [info]`;
92
- if (meta !== undefined) {
93
- console.log(prefix, message, meta);
343
+ if (attributes !== undefined) {
344
+ console.log(prefix, message, attributes);
94
345
  }
95
346
  else {
96
347
  console.log(prefix, message);
97
348
  }
349
+ emitLogRecord(namespace, "info", message, attributes);
98
350
  },
99
- warn(message, meta) {
351
+ warn(message, error, attributes) {
100
352
  if (!shouldLog("warn"))
101
353
  return;
102
- const prefix = `${namespace} [warn]`;
103
- if (meta !== undefined) {
104
- console.warn(prefix, message, meta);
105
- }
106
- else {
107
- console.warn(prefix, message);
108
- }
354
+ emitErrorAwareRecord(namespace, "warn", message, error, attributes);
109
355
  },
110
- error(message, meta) {
356
+ error(message, error, attributes) {
111
357
  if (!shouldLog("error"))
112
358
  return;
113
- const prefix = `${namespace} [error]`;
114
- if (meta !== undefined) {
115
- console.error(prefix, message, meta);
359
+ emitErrorAwareRecord(namespace, "error", message, error, attributes);
360
+ },
361
+ event(name, level, opts) {
362
+ // The catalog severity is a floor — a caller may escalate but never demote a catalogued event.
363
+ const effectiveLevel = effectiveEventLevel(name, level);
364
+ // Stamp once, synchronously, so the redacted (deferred) path records when the event happened —
365
+ // not when redaction finished — and async redaction can never reorder the log.
366
+ const timestampMs = Date.now();
367
+ const { body, redact, error } = opts;
368
+ const attributes = capScalars(opts.attributes);
369
+ // Local sink: persist the capped scalars + body to the per-strategy on-disk ring so the agent
370
+ // can query the narrative without a collector. Fire-and-forget; never carries the redact slot.
371
+ appendDomainEvent(name, effectiveLevel, body, attributes, timestampMs);
372
+ // An error makes this catalogued event also a fault: stamp exception.* semconv (uncapped, via
373
+ // `extra`) and record it on the active span — synchronously here, so the deferred redacted path
374
+ // can't lose the call-time span. No notifier fan-out: severity is the caller's `level` to grade.
375
+ let exceptionExtra;
376
+ if (error !== undefined) {
377
+ exceptionExtra = exceptionAttributes(normalizeException(error));
378
+ recordExceptionOnActiveSpan(error, effectiveLevel);
379
+ }
380
+ // The event log is the trade narrative and must never go dark: the collector emit below and the
381
+ // local ring above are both unconditional. The narrative info/warn/error console logs (emitted
382
+ // at the call sites) carry docker stdout, so events no longer mirror to the console here.
383
+ const hasRedactFields = redact !== undefined && Object.keys(redact).length > 0;
384
+ if (!hasRedactFields) {
385
+ emitEventRecord(namespace, name, effectiveLevel, body, attributes, undefined, timestampMs, exceptionExtra);
386
+ return;
116
387
  }
117
- else {
118
- console.error(prefix, message);
388
+ const capped = capRedactFields(redact);
389
+ const redactor = getDefaultPiiRedactor();
390
+ // No redactor (boot window or tests): fail-safe — emit body + scalars, drop the redact fields
391
+ // rather than let an unredacted free-text value reach the wire.
392
+ if (redactor === null) {
393
+ emitEventRecord(namespace, name, effectiveLevel, body, attributes, undefined, timestampMs, exceptionExtra);
394
+ return;
119
395
  }
120
- dispatchErrorNotification({
121
- namespace,
122
- level: "error",
123
- message,
124
- meta,
125
- timestamp: new Date().toISOString(),
126
- });
396
+ // Defer only this record behind the async redaction, re-entering the captured trace context.
397
+ // The call-time timestamp above keeps it ordered despite the deferral.
398
+ emitEventRedacted(redactor, context.active(), namespace, name, effectiveLevel, body, attributes, capped, timestampMs, exceptionExtra);
127
399
  },
128
400
  };
129
401
  }
402
+ /**
403
+ * A complete {@link Logger} that discards everything. Use it as an explicit "be silent here" default
404
+ * (e.g. tests, or a consumer that doesn't wire logging) instead of hand-rolling a partial object —
405
+ * being defined alongside {@link Logger} it always satisfies the full contract as the interface grows.
406
+ */
407
+ export const noopLogger = {
408
+ debug: () => { },
409
+ info: () => { },
410
+ warn: () => { },
411
+ error: () => { },
412
+ event: () => { },
413
+ };
414
+ /**
415
+ * Shared warn/error path: discriminate the error vs attributes args, scavenge any bag error, render
416
+ * the human line (with the error object, so the stack shows locally), emit the structured record
417
+ * with `exception.*` attributes, record on the active span, and — for `error` — fan out one
418
+ * normalized notification built from the same values.
419
+ */
420
+ function emitErrorAwareRecord(namespace, level, message, arg2, arg3) {
421
+ let { error, attributes } = resolveErrorArgs(arg2, arg3);
422
+ let scavenged = false;
423
+ // Always strip raw Errors from the bag so they can't slip through as invalid OTel attributes;
424
+ // adopt the lifted one as the exception only when the caller passed no explicit error.
425
+ const found = scavengeBagError(attributes);
426
+ if (found !== null) {
427
+ attributes = found.cleaned;
428
+ if (error === undefined) {
429
+ error = found.error;
430
+ scavenged = true;
431
+ }
432
+ }
433
+ const exception = error !== undefined ? normalizeException(error) : undefined;
434
+ let extra;
435
+ if (exception !== undefined)
436
+ extra = exceptionAttributes(exception);
437
+ if (scavenged)
438
+ extra = { ...extra, "code.error.scavenged": true };
439
+ const prefix = `${namespace} [${level}]`;
440
+ const extras = [];
441
+ if (error !== undefined)
442
+ extras.push(error);
443
+ if (attributes !== undefined)
444
+ extras.push(attributes);
445
+ const sink = level === "warn" ? console.warn : console.error;
446
+ sink(prefix, message, ...extras);
447
+ emitLogRecord(namespace, level, message, attributes, extra);
448
+ if (error !== undefined)
449
+ recordExceptionOnActiveSpan(error, level);
450
+ if (level === "error") {
451
+ dispatchErrorNotification({
452
+ namespace,
453
+ level: "error",
454
+ message,
455
+ // The caller's bag without the error (which rides in `exception`) — not the `composed`
456
+ // bag, whose folded-in `exception.*` keys would duplicate the exception block.
457
+ attributes,
458
+ exception,
459
+ timestamp: new Date().toISOString(),
460
+ });
461
+ }
462
+ }
130
463
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** True when `address` is a path-safe wallet (`0x` + hex). Trims + lowercases before testing. */
2
+ export declare function isWalletAddress(address: string): boolean;
3
+ //# sourceMappingURL=wallet-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-address.d.ts","sourceRoot":"","sources":["../../src/utils/wallet-address.ts"],"names":[],"mappings":"AAaA,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Wallet-address path safety. The per-strategy event store and risk-audit log build on-disk paths
3
+ * from a caller-supplied wallet (`{stateDir}/strategies/{address}/…`), so a read RPC could otherwise
4
+ * smuggle `../../..` through and escape the strategy dir. This is the single shared guard the read
5
+ * paths route through before touching the filesystem.
6
+ *
7
+ * The check is `0x` + hex (case-insensitive, surrounding whitespace tolerated) — it rejects path
8
+ * separators, `..`, NUL, and any non-hex junk, which is what closes the traversal vector. It is
9
+ * deliberately NOT length-pinned to 40 hex chars: routing only needs path safety, and short fixtures
10
+ * stay valid.
11
+ */
12
+ const WALLET_RE = /^0x[a-f0-9]+$/;
13
+ /** True when `address` is a path-safe wallet (`0x` + hex). Trims + lowercases before testing. */
14
+ export function isWalletAddress(address) {
15
+ return WALLET_RE.test(address.trim().toLowerCase());
16
+ }
17
+ //# sourceMappingURL=wallet-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-address.js","sourceRoot":"","sources":["../../src/utils/wallet-address.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC"}