@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
@@ -1,234 +0,0 @@
1
- /**
2
- * Micro-batcher — two independent buffers (traces, logs). `enqueueTrace` /
3
- * `enqueueLog` are cheap and non-blocking; rows ship on a timer interval, with
4
- * an early flush when a buffer nears the byte cap.
5
- *
6
- * Reliability policy (lean, by design):
7
- * - **Drop over block, always.** A full buffer or a failed flush NEVER blocks
8
- * or throws into the caller. On any error: log, count the drop, move on.
9
- * **No retry** — the seam is left for a later dedicated stage.
10
- * - Two distinct signals are counted: *client-dropped* (never sent — overflow,
11
- * oversized row, an oversized batch (413), or a transport/auth/5xx flush
12
- * failure) vs *server-rejected* (a `200` that accepted fewer rows than were
13
- * sent, or a `400` — a malformed row that got through the mapper; a mapper
14
- * bug to surface, not a transport failure). The 200 shortfall is derived from
15
- * `accepted`, not the response's `rejected` field: the service reports
16
- * schema-validation drops only in `errors[]`, so trusting `rejected` alone
17
- * would let mapper bugs go uncounted.
18
- * - Flush-on-interval is primary; byte-cap early-flush is the only added
19
- * trigger. Remaining buffers flush best-effort on shutdown (time-boxed by the
20
- * client's per-request timeout).
21
- *
22
- * Each row is serialized exactly once (at enqueue, for byte accounting); the
23
- * cached JSON is reused both to size the buffer and to frame the HTTP body, so
24
- * the cap bounds the ACTUAL serialized body (envelope + separators included).
25
- */
26
- import { createTelemetryClient } from "./client.js";
27
- import { createLogger } from "../../utils/logger.js";
28
- const logger = createLogger("[recording][transport][batcher]");
29
- function newStats() {
30
- return { enqueued: 0, sent: 0, clientDropped: 0, serverRejected: 0 };
31
- }
32
- /**
33
- * One signal's buffer: holds pre-serialized rows, tracks the exact serialized
34
- * body size, and owns its own in-flight guard so traces and logs flush
35
- * independently.
36
- */
37
- class SignalBuffer {
38
- name;
39
- maxBatchBytes;
40
- sendFn;
41
- /** Pre-serialized rows (JSON), reused to frame the HTTP body. */
42
- rows = [];
43
- /** Σ byte length of the serialized rows (excludes envelope + separators). */
44
- contentBytes = 0;
45
- flushing = false;
46
- /** The promise of the flush currently in flight, or null when idle. */
47
- inFlight = null;
48
- /** Fixed `{"<key>":[]}` envelope overhead, counted toward the byte cap. */
49
- envelopeBytes;
50
- stats = newStats();
51
- constructor(name, maxBatchBytes, sendFn) {
52
- this.name = name;
53
- this.maxBatchBytes = maxBatchBytes;
54
- this.sendFn = sendFn;
55
- const bodyKey = name === "traces" ? "spans" : "logs";
56
- this.envelopeBytes = Buffer.byteLength(`{"${bodyKey}":[]}`, "utf8");
57
- }
58
- /** Exact serialized body size for the rows currently buffered. */
59
- bodyBytes() {
60
- const commas = this.rows.length > 0 ? this.rows.length - 1 : 0;
61
- return this.envelopeBytes + this.contentBytes + commas;
62
- }
63
- /** Would appending a `size`-byte row (plus its separator) cross the cap? */
64
- wouldExceed(size) {
65
- const separator = this.rows.length > 0 ? 1 : 0;
66
- return this.bodyBytes() + separator + size > this.maxBatchBytes;
67
- }
68
- enqueue(row) {
69
- this.stats.enqueued++;
70
- const json = JSON.stringify(row);
71
- const size = Buffer.byteLength(json, "utf8");
72
- // A single row whose own framed body would exceed the cap can never ship.
73
- if (this.envelopeBytes + size > this.maxBatchBytes) {
74
- this.stats.clientDropped++;
75
- logger.warn("dropping oversized telemetry row", {
76
- signal: this.name,
77
- rowBytes: size,
78
- maxBatchBytes: this.maxBatchBytes,
79
- });
80
- return;
81
- }
82
- // Byte-cap early flush: appending this row (plus a comma separator when the
83
- // buffer is non-empty) would cross the cap. flush() swaps the buffer out
84
- // synchronously (before its first await), so when no flush is already in
85
- // flight this clears room for the new row.
86
- if (this.wouldExceed(size)) {
87
- void this.flush();
88
- if (this.wouldExceed(size)) {
89
- // A flush is already in flight and the buffer is still full — drop.
90
- this.stats.clientDropped++;
91
- logger.warn("dropping telemetry row on buffer overflow", {
92
- signal: this.name,
93
- bufferBytes: this.bodyBytes(),
94
- maxBatchBytes: this.maxBatchBytes,
95
- });
96
- return;
97
- }
98
- }
99
- this.rows.push(json);
100
- this.contentBytes += size;
101
- }
102
- flush() {
103
- if (this.flushing || this.rows.length === 0)
104
- return Promise.resolve();
105
- this.flushing = true;
106
- // Swap synchronously so enqueue sees an empty buffer immediately.
107
- const batch = this.rows;
108
- this.rows = [];
109
- this.contentBytes = 0;
110
- // Publish the in-flight promise so `drain()` (shutdown) can await it.
111
- this.inFlight = this.send(batch).finally(() => {
112
- this.flushing = false;
113
- this.inFlight = null;
114
- });
115
- return this.inFlight;
116
- }
117
- /** Ship one batch and account the result. Never throws. */
118
- async send(batch) {
119
- try {
120
- const result = await this.sendFn(batch);
121
- this.account(batch.length, result);
122
- }
123
- catch (err) {
124
- // The client is contracted never to throw, but the batcher is the last
125
- // line of defense: swallow anything and count it as dropped.
126
- this.stats.clientDropped += batch.length;
127
- logger.warn("telemetry flush threw unexpectedly", {
128
- signal: this.name,
129
- batch: batch.length,
130
- err: err instanceof Error ? err.message : String(err),
131
- });
132
- }
133
- }
134
- /**
135
- * Best-effort shutdown drain: wait for any in-flight send to settle, then
136
- * flush whatever accumulated while it was in flight. One extra pass suffices
137
- * — no new rows arrive once shutdown has begun. Without this, a flush already
138
- * in flight makes the plain `flush()` return early (the `flushing` guard),
139
- * silently stranding the just-buffered rows.
140
- */
141
- async drain() {
142
- if (this.inFlight)
143
- await this.inFlight;
144
- await this.flush();
145
- }
146
- account(batchSize, result) {
147
- switch (result.outcome) {
148
- case "transport":
149
- this.stats.clientDropped += batchSize;
150
- logger.warn("telemetry flush failed; batch dropped (no retry)", {
151
- signal: this.name,
152
- batch: batchSize,
153
- status: result.status,
154
- });
155
- return;
156
- case "oversized":
157
- // 413: the body exceeded the server's limit. A client batching defect,
158
- // not transient transport and not a per-row mapper bug — surface it
159
- // distinctly so it isn't mistaken for a network outage.
160
- this.stats.clientDropped += batchSize;
161
- logger.warn("telemetry batch exceeded server size limit; dropped — lower maxBatchBytes or split", {
162
- signal: this.name,
163
- batch: batchSize,
164
- status: result.status,
165
- });
166
- return;
167
- case "rejected":
168
- // 400: whole batch invalid — a mapper bug.
169
- this.stats.serverRejected += batchSize;
170
- logger.warn("telemetry batch server-rejected (400, all rows invalid)", {
171
- signal: this.name,
172
- batch: batchSize,
173
- errors: result.errors.slice(0, 5),
174
- });
175
- return;
176
- case "accepted": {
177
- // 200: partial acceptance. Any row the server did not accept was refused
178
- // — ownership rejections (counted in `rejected`) AND schema-validation
179
- // drops (which the service reports only in `errors[]`, never in
180
- // `rejected`). Derive the shortfall from `accepted` so no refused row
181
- // goes uncounted.
182
- this.stats.sent += result.accepted;
183
- const refused = batchSize - result.accepted;
184
- if (refused > 0) {
185
- this.stats.serverRejected += refused;
186
- // Distinguish ownership rejections (reported in `rejected`, possibly
187
- // an ownership-service issue) from schema drops (a likely mapper bug).
188
- const schemaDropped = Math.max(0, refused - result.rejected);
189
- logger.warn("telemetry rows not accepted by server", {
190
- signal: this.name,
191
- refused,
192
- ownershipRejected: result.rejected,
193
- schemaDropped,
194
- errors: result.errors.slice(0, 5),
195
- });
196
- }
197
- return;
198
- }
199
- }
200
- }
201
- }
202
- /**
203
- * Build a batcher. `client` is injectable for testing; by default it is built
204
- * from `config`.
205
- */
206
- export function createBatcher(config, client = createTelemetryClient(config)) {
207
- const traces = new SignalBuffer("traces", config.maxBatchBytes, (rowsJson) => client.sendTraces(rowsJson));
208
- const logs = new SignalBuffer("logs", config.maxBatchBytes, (rowsJson) => client.sendLogs(rowsJson));
209
- const flush = async () => {
210
- await Promise.all([traces.flush(), logs.flush()]);
211
- };
212
- const timer = setInterval(() => {
213
- void flush();
214
- }, config.flushIntervalMs);
215
- // Telemetry flushes must not keep the process alive (Node >=22).
216
- timer.unref();
217
- let stopped = false;
218
- return {
219
- enqueueTrace: (row) => traces.enqueue(row),
220
- enqueueLog: (row) => logs.enqueue(row),
221
- flush,
222
- async shutdown() {
223
- if (stopped)
224
- return;
225
- stopped = true;
226
- clearInterval(timer);
227
- // Drain (not plain flush): wait for any in-flight send, then ship rows
228
- // buffered during it — otherwise the `flushing` guard strands them.
229
- await Promise.all([traces.drain(), logs.drain()]);
230
- },
231
- getStats: () => ({ traces: { ...traces.stats }, logs: { ...logs.stats } }),
232
- };
233
- }
234
- //# sourceMappingURL=batcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batcher.js","sourceRoot":"","sources":["../../../src/recording/transport/batcher.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * HTTP client — POSTs a batch of already-serialized telemetry rows to the
3
- * ingestion service with bearer auth, and parses the
4
- * `{ accepted, rejected, errors }` response into a {@link SendResult}.
5
- *
6
- * It transforms NOTHING (the mapper builds the rows) and NEVER throws: network
7
- * errors, timeouts, and unreadable bodies resolve to a `SendResult` so the
8
- * batcher can account for the drop without the failure reaching the caller.
9
- *
10
- * Rows arrive pre-serialized (`string[]`): the batcher serializes each row
11
- * exactly once (for byte accounting) and reuses that JSON here, so the body is
12
- * assembled by concatenation — never serialized a second time.
13
- */
14
- import type { TransportConfig } from "./config.js";
15
- /**
16
- * How a POST resolved. Drives the batcher's counters:
17
- * - `accepted` — 2xx; the server adjudicated the rows. `accepted`/`rejected`/
18
- * `errors` carry its verdict (partial acceptance is still a 2xx).
19
- * - `rejected` — `400`; the server adjudicated the WHOLE batch as invalid
20
- * (every row bad) — a likely mapper bug.
21
- * - `oversized` — `413`; the body exceeded the server's size limit. A permanent
22
- * client-side batching defect — not transient transport, not a per-row bug.
23
- * - `transport` — network failure, timeout, `401`, `408`, `429`, `5xx`: the
24
- * batch never reached row adjudication. A transport-health signal.
25
- */
26
- export type SendOutcome = "accepted" | "rejected" | "oversized" | "transport";
27
- export interface SendResult {
28
- outcome: SendOutcome;
29
- /** HTTP status, or 0 when the request never completed (network/timeout). */
30
- status: number;
31
- accepted: number;
32
- rejected: number;
33
- errors: string[];
34
- }
35
- export interface TelemetryClient {
36
- /** `rowsJson` are pre-serialized rows; the client only frames + POSTs them. */
37
- sendTraces(rowsJson: readonly string[]): Promise<SendResult>;
38
- sendLogs(rowsJson: readonly string[]): Promise<SendResult>;
39
- }
40
- export declare function createTelemetryClient(config: TransportConfig): TelemetryClient;
41
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/recording/transport/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,UAAU,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5D;AAwBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA4C9E"}
@@ -1,69 +0,0 @@
1
- /**
2
- * HTTP client — POSTs a batch of already-serialized telemetry rows to the
3
- * ingestion service with bearer auth, and parses the
4
- * `{ accepted, rejected, errors }` response into a {@link SendResult}.
5
- *
6
- * It transforms NOTHING (the mapper builds the rows) and NEVER throws: network
7
- * errors, timeouts, and unreadable bodies resolve to a `SendResult` so the
8
- * batcher can account for the drop without the failure reaching the caller.
9
- *
10
- * Rows arrive pre-serialized (`string[]`): the batcher serializes each row
11
- * exactly once (for byte accounting) and reuses that JSON here, so the body is
12
- * assembled by concatenation — never serialized a second time.
13
- */
14
- import { LOGS_PATH, TRACES_PATH } from "./config.js";
15
- function toCount(v) {
16
- return typeof v === "number" && Number.isFinite(v) ? v : 0;
17
- }
18
- function toErrors(v) {
19
- return Array.isArray(v) ? v.filter((e) => typeof e === "string") : [];
20
- }
21
- /** Map an HTTP status to the outcome the batcher accounts on. */
22
- function classify(status) {
23
- if (status >= 200 && status < 300)
24
- return "accepted";
25
- if (status === 400)
26
- return "rejected"; // whole batch invalid — mapper bug
27
- if (status === 413)
28
- return "oversized"; // body too large — client batching defect
29
- return "transport"; // 401 / 408 / 429 / 5xx / other — rows never adjudicated
30
- }
31
- export function createTelemetryClient(config) {
32
- const base = config.baseUrl.replace(/\/+$/, "");
33
- async function send(path, bodyKey, rowsJson) {
34
- const headers = { "Content-Type": "application/json" };
35
- const token = config.getToken();
36
- if (token)
37
- headers.Authorization = `Bearer ${token}`;
38
- let response;
39
- try {
40
- response = await fetch(`${base}${path}`, {
41
- method: "POST",
42
- headers,
43
- // Frame the pre-serialized rows directly — no re-serialization. bodyKey
44
- // is a fixed literal ("spans"/"logs"), so no escaping is needed.
45
- body: `{"${bodyKey}":[${rowsJson.join(",")}]}`,
46
- signal: AbortSignal.timeout(config.requestTimeoutMs),
47
- });
48
- }
49
- catch {
50
- // Network error / timeout / abort — never reached the server.
51
- return { outcome: "transport", status: 0, accepted: 0, rejected: 0, errors: [] };
52
- }
53
- const parsed = (await response
54
- .json()
55
- .catch(() => ({})));
56
- return {
57
- outcome: classify(response.status),
58
- status: response.status,
59
- accepted: toCount(parsed.accepted),
60
- rejected: toCount(parsed.rejected),
61
- errors: toErrors(parsed.errors),
62
- };
63
- }
64
- return {
65
- sendTraces: (rowsJson) => send(TRACES_PATH, "spans", rowsJson),
66
- sendLogs: (rowsJson) => send(LOGS_PATH, "logs", rowsJson),
67
- };
68
- }
69
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/recording/transport/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoCrD,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,iEAAiE;AACjE,SAAS,QAAQ,CAAC,MAAc;IAC9B,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,UAAU,CAAC;IACrD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,UAAU,CAAC,CAAC,mCAAmC;IAC1E,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC,CAAC,0CAA0C;IAClF,OAAO,WAAW,CAAC,CAAC,yDAAyD;AAC/E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAuB;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEhD,KAAK,UAAU,IAAI,CACjB,IAAY,EACZ,OAAyB,EACzB,QAA2B;QAE3B,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;QAErD,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;gBACvC,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,wEAAwE;gBACxE,iEAAiE;gBACjE,IAAI,EAAE,KAAK,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;gBAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ;aAC3B,IAAI,EAAE;aACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAe,CAAC,CAAe,CAAC;QAElD,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC9D,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC1D,CAAC;AACJ,CAAC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Transport config — injected, not hard-coupled to `src/tracking/` or the CLI.
3
- *
4
- * The caller supplies `getToken` / `baseUrl` (e.g. from the Senpi API-key store
5
- * + `SENPI_TRACKING_URL`). Keeping the token an injected getter — rather than a
6
- * captured string — lets the credential rotate without rebuilding the batcher,
7
- * and keeps this module self-contained, with no dependency on `tracking/`.
8
- */
9
- /** Default ingestion base URL (overridable via `SENPI_TRACKING_URL`). */
10
- export declare const DEFAULT_BASE_URL = "https://agent-telemetry.prod.senpi.ai";
11
- /** Endpoint paths, confirmed against the service route registration. */
12
- export declare const TRACES_PATH = "/v1/traces";
13
- export declare const LOGS_PATH = "/v1/logs";
14
- /** Flush cadence — the primary trigger. */
15
- export declare const DEFAULT_FLUSH_INTERVAL_MS = 5000;
16
- /**
17
- * Client-side per-batch byte cap. The server rejects bodies > 10 MiB; we cap
18
- * under that (the service's own route comment notes the runtime emitter uses an
19
- * 8 MiB cap with HTTP headroom). Crossing this watermark forces an early flush.
20
- */
21
- export declare const DEFAULT_MAX_BATCH_BYTES: number;
22
- /** Per-request timeout. Bounds flushes (incl. the best-effort shutdown flush). */
23
- export declare const DEFAULT_REQUEST_TIMEOUT_MS = 15000;
24
- export interface TransportConfig {
25
- /** Resolved ingestion base URL (no trailing slash required). */
26
- baseUrl: string;
27
- /** Returns the current bearer token, or undefined when unavailable. */
28
- getToken: () => string | undefined;
29
- /** Timer flush cadence in ms. */
30
- flushIntervalMs: number;
31
- /** Per-batch byte cap that triggers an early flush. */
32
- maxBatchBytes: number;
33
- /** Per-request timeout in ms. */
34
- requestTimeoutMs: number;
35
- }
36
- export interface TransportConfigOptions {
37
- /** Required: the only thing the caller must supply. */
38
- getToken: () => string | undefined;
39
- /** Defaults to `SENPI_TRACKING_URL` if set, else {@link DEFAULT_BASE_URL}. */
40
- baseUrl?: string;
41
- flushIntervalMs?: number;
42
- maxBatchBytes?: number;
43
- requestTimeoutMs?: number;
44
- }
45
- /**
46
- * Fill a partial config with defaults, resolving the base URL from env.
47
- *
48
- * The `SENPI_TRACKING_URL` lookup is intentionally inlined rather than shared
49
- * with `src/tracking/`: this module stays self-contained and does not import
50
- * from `tracking/`, so the three-line resolver lives here by design.
51
- */
52
- export declare function resolveTransportConfig(options: TransportConfigOptions): TransportConfig;
53
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/recording/transport/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,0CAA0C,CAAC;AAExE,wEAAwE;AACxE,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,SAAS,aAAa,CAAC;AAEpC,2CAA2C;AAC3C,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAkB,CAAC;AAEvD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACnC,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACnC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CASjB"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Transport config — injected, not hard-coupled to `src/tracking/` or the CLI.
3
- *
4
- * The caller supplies `getToken` / `baseUrl` (e.g. from the Senpi API-key store
5
- * + `SENPI_TRACKING_URL`). Keeping the token an injected getter — rather than a
6
- * captured string — lets the credential rotate without rebuilding the batcher,
7
- * and keeps this module self-contained, with no dependency on `tracking/`.
8
- */
9
- /** Default ingestion base URL (overridable via `SENPI_TRACKING_URL`). */
10
- export const DEFAULT_BASE_URL = "https://agent-telemetry.prod.senpi.ai";
11
- /** Endpoint paths, confirmed against the service route registration. */
12
- export const TRACES_PATH = "/v1/traces";
13
- export const LOGS_PATH = "/v1/logs";
14
- /** Flush cadence — the primary trigger. */
15
- export const DEFAULT_FLUSH_INTERVAL_MS = 5_000;
16
- /**
17
- * Client-side per-batch byte cap. The server rejects bodies > 10 MiB; we cap
18
- * under that (the service's own route comment notes the runtime emitter uses an
19
- * 8 MiB cap with HTTP headroom). Crossing this watermark forces an early flush.
20
- */
21
- export const DEFAULT_MAX_BATCH_BYTES = 8 * 1024 * 1024;
22
- /** Per-request timeout. Bounds flushes (incl. the best-effort shutdown flush). */
23
- export const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;
24
- /**
25
- * Fill a partial config with defaults, resolving the base URL from env.
26
- *
27
- * The `SENPI_TRACKING_URL` lookup is intentionally inlined rather than shared
28
- * with `src/tracking/`: this module stays self-contained and does not import
29
- * from `tracking/`, so the three-line resolver lives here by design.
30
- */
31
- export function resolveTransportConfig(options) {
32
- const envBase = process.env.SENPI_TRACKING_URL?.trim();
33
- return {
34
- getToken: options.getToken,
35
- baseUrl: options.baseUrl ?? (envBase || DEFAULT_BASE_URL),
36
- flushIntervalMs: options.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS,
37
- maxBatchBytes: options.maxBatchBytes ?? DEFAULT_MAX_BATCH_BYTES,
38
- requestTimeoutMs: options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
39
- };
40
- }
41
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/recording/transport/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;AAExE,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAyBjD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA+B;IAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACvD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACzD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,yBAAyB;QACrE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,uBAAuB;QAC/D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,0BAA0B;KACzE,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Transport / micro-batcher — batches already-row-shaped telemetry and ships it
3
- * to the sibling ingestion service, fire-and-forget. Transforms nothing (the
4
- * mapper builds the rows); never throws into trading behavior.
5
- *
6
- * The row types (`TraceRow` / `LogRow`) mirror the service contract and are the
7
- * boundary with the mapper that produces them.
8
- */
9
- export type { TraceRow, LogRow, SpanEventRow, SpanKind, StatusCode, TracesEnvelope, LogsEnvelope, IngestResponse, } from "./rows.js";
10
- export { DEFAULT_BASE_URL, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_BATCH_BYTES, DEFAULT_REQUEST_TIMEOUT_MS, TRACES_PATH, LOGS_PATH, resolveTransportConfig, } from "./config.js";
11
- export type { TransportConfig, TransportConfigOptions } from "./config.js";
12
- export { createTelemetryClient } from "./client.js";
13
- export type { TelemetryClient, SendResult, SendOutcome } from "./client.js";
14
- export { createBatcher } from "./batcher.js";
15
- export type { TelemetryBatcher, BatcherStats, SignalStats } from "./batcher.js";
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/recording/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACX,SAAS,EACT,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Transport / micro-batcher — batches already-row-shaped telemetry and ships it
3
- * to the sibling ingestion service, fire-and-forget. Transforms nothing (the
4
- * mapper builds the rows); never throws into trading behavior.
5
- *
6
- * The row types (`TraceRow` / `LogRow`) mirror the service contract and are the
7
- * boundary with the mapper that produces them.
8
- */
9
- export { DEFAULT_BASE_URL, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_BATCH_BYTES, DEFAULT_REQUEST_TIMEOUT_MS, TRACES_PATH, LOGS_PATH, resolveTransportConfig, } from "./config.js";
10
- export { createTelemetryClient } from "./client.js";
11
- export { createBatcher } from "./batcher.js";
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recording/transport/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACX,SAAS,EACT,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,88 +0,0 @@
1
- /**
2
- * Telemetry wire types — the mapper produces these; the transport ships them
3
- * unchanged.
4
- *
5
- * Mirrors the sibling ingestion service's row types verbatim: the destination
6
- * ClickHouse row shapes — PascalCase keys, flat `Record<string,string>`
7
- * attribute maps, epoch-ns timestamps as digit-strings, lowercase-hex ids,
8
- * precomputed `Duration`. No OTLP envelope, no `AnyValue`.
9
- *
10
- * This module performs NO validation — the server's validator is the single
11
- * source of truth for the hex/timestamp/enum rules; re-implementing them here
12
- * would couple us to the service and drift.
13
- */
14
- export type SpanKind = "Internal" | "Server" | "Client" | "Producer" | "Consumer" | "Unspecified";
15
- export type StatusCode = "Unset" | "Ok" | "Error";
16
- export interface SpanEventRow {
17
- /** epoch ns as digit string. */
18
- Timestamp: string;
19
- Name: string;
20
- Attributes: Record<string, string>;
21
- }
22
- /**
23
- * A span row on the wire / destined for Kafka. `address` is a derived field
24
- * used for ownership + per-agent keying — not a ClickHouse column.
25
- */
26
- export interface TraceRow {
27
- /** epoch ns as string (span start). */
28
- Timestamp: string;
29
- /** 32-hex lowercase. */
30
- TraceId: string;
31
- /** 16-hex lowercase. */
32
- SpanId: string;
33
- /** 16-hex or empty string for roots. */
34
- ParentSpanId: string;
35
- TraceState: string;
36
- SpanName: string;
37
- SpanKind: SpanKind;
38
- ServiceName: string;
39
- /** end − start, ns, as string. */
40
- Duration: string;
41
- StatusCode: StatusCode;
42
- StatusMessage: string;
43
- SpanAttributes: Record<string, string>;
44
- ResourceAttributes: Record<string, string>;
45
- Events: SpanEventRow[];
46
- ScopeName: string;
47
- ScopeVersion: string;
48
- TraceFlags: number;
49
- /** Derived: lower(ResourceAttributes['strategy.address']); '' when absent. */
50
- address: string;
51
- }
52
- /** A log row on the wire / destined for Kafka. `address` is a derived field. */
53
- export interface LogRow {
54
- /** epoch ns as digit string. */
55
- Timestamp: string;
56
- TraceId: string;
57
- SpanId: string;
58
- TraceFlags: number;
59
- SeverityText: string;
60
- SeverityNumber: number;
61
- ServiceName: string;
62
- Body: string;
63
- ResourceAttributes: Record<string, string>;
64
- ScopeName: string;
65
- ScopeVersion: string;
66
- LogAttributes: Record<string, string>;
67
- /** Maps to the EventName CH column — the log-type discriminator. */
68
- EventName: string;
69
- /** Derived: lower(ResourceAttributes['strategy.address']); '' when absent. */
70
- address: string;
71
- }
72
- export interface TracesEnvelope {
73
- spans: TraceRow[];
74
- }
75
- export interface LogsEnvelope {
76
- logs: LogRow[];
77
- }
78
- /**
79
- * Server response. Partial acceptance is a `200`; a shortfall in `accepted`
80
- * means rows the server refused (e.g. a malformed row that got through the
81
- * mapper). A `400` means the whole batch failed validation.
82
- */
83
- export interface IngestResponse {
84
- accepted: number;
85
- rejected: number;
86
- errors?: string[];
87
- }
88
- //# sourceMappingURL=rows.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/recording/transport/rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAM;IACrB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Telemetry wire types — the mapper produces these; the transport ships them
3
- * unchanged.
4
- *
5
- * Mirrors the sibling ingestion service's row types verbatim: the destination
6
- * ClickHouse row shapes — PascalCase keys, flat `Record<string,string>`
7
- * attribute maps, epoch-ns timestamps as digit-strings, lowercase-hex ids,
8
- * precomputed `Duration`. No OTLP envelope, no `AnyValue`.
9
- *
10
- * This module performs NO validation — the server's validator is the single
11
- * source of truth for the hex/timestamp/enum rules; re-implementing them here
12
- * would couple us to the service and drift.
13
- */
14
- export {};
15
- //# sourceMappingURL=rows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../../src/recording/transport/rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}