@senpi/runtime 3.0.6-dev.runtime-phase-2.20260630134410 → 3.0.6-dev.runtime-phase-2.20260630134451

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 (263) hide show
  1. package/dist/actions/{tracking-helpers.d.ts → action-events.d.ts} +24 -23
  2. package/dist/actions/action-events.d.ts.map +1 -0
  3. package/dist/actions/{tracking-helpers.js → action-events.js} +25 -77
  4. package/dist/actions/action-events.js.map +1 -0
  5. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  6. package/dist/actions/close-position/close-position.action.js +8 -17
  7. package/dist/actions/close-position/close-position.action.js.map +1 -1
  8. package/dist/actions/event-derivation.d.ts +5 -6
  9. package/dist/actions/event-derivation.d.ts.map +1 -1
  10. package/dist/actions/event-derivation.js +4 -5
  11. package/dist/actions/event-derivation.js.map +1 -1
  12. package/dist/actions/llm-decision/openclaw-llm-decision.js +5 -5
  13. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
  14. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  15. package/dist/actions/open-position/open-position.action.js +9 -17
  16. package/dist/actions/open-position/open-position.action.js.map +1 -1
  17. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  18. package/dist/actions/position-tracker/position-tracker.action.js +1 -2
  19. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  20. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  21. package/dist/dsl/engine-client/event-mapping.js +0 -3
  22. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  23. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  24. package/dist/dsl/events/build-closed-event.js +0 -1
  25. package/dist/dsl/events/build-closed-event.js.map +1 -1
  26. package/dist/dsl/events/handlers.d.ts.map +1 -1
  27. package/dist/dsl/events/handlers.js +2 -4
  28. package/dist/dsl/events/handlers.js.map +1 -1
  29. package/dist/dsl/monitor/create-monitor.d.ts +1 -1
  30. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  31. package/dist/dsl/monitor/create-monitor.js +0 -30
  32. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  33. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  34. package/dist/dsl/monitor/process-one-position.js +0 -121
  35. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  36. package/dist/dsl/plugin/index.js +3 -3
  37. package/dist/dsl/plugin/index.js.map +1 -1
  38. package/dist/dsl/plugin/options.d.ts +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +8 -53
  41. package/dist/index.js.map +1 -1
  42. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts +2 -0
  43. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts.map +1 -1
  44. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js +24 -3
  45. package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js.map +1 -1
  46. package/dist/runtime/create-runtime-context.d.ts +1 -1
  47. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  48. package/dist/runtime/create-scanner-module.d.ts +1 -1
  49. package/dist/runtime/domain-events.d.ts +4 -4
  50. package/dist/runtime/domain-events.d.ts.map +1 -1
  51. package/dist/runtime/domain-events.js +4 -4
  52. package/dist/runtime/domain-events.js.map +1 -1
  53. package/dist/runtime/lifecycle-events.d.ts +3 -3
  54. package/dist/runtime/lifecycle-events.js +5 -5
  55. package/dist/runtime/lifecycle-events.js.map +1 -1
  56. package/dist/{tracking → runtime}/position-id-registry.d.ts +14 -1
  57. package/dist/runtime/position-id-registry.d.ts.map +1 -0
  58. package/dist/{tracking → runtime}/position-id-registry.js +20 -3
  59. package/dist/runtime/position-id-registry.js.map +1 -0
  60. package/dist/runtime/run.d.ts +2 -4
  61. package/dist/runtime/run.d.ts.map +1 -1
  62. package/dist/runtime/run.js.map +1 -1
  63. package/dist/runtime/runtime-schema.d.ts +120 -437
  64. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  65. package/dist/runtime/runtime-schema.js +0 -27
  66. package/dist/runtime/runtime-schema.js.map +1 -1
  67. package/dist/runtime/runtime.d.ts +4 -9
  68. package/dist/runtime/runtime.d.ts.map +1 -1
  69. package/dist/runtime/runtime.js +29 -180
  70. package/dist/runtime/runtime.js.map +1 -1
  71. package/dist/scanners/engine/data-providers.d.ts +1 -1
  72. package/dist/scanners/runtime-module.d.ts +1 -1
  73. package/dist/senpi/client.js +2 -2
  74. package/dist/senpi/client.js.map +1 -1
  75. package/dist/telemetry/attributes.d.ts +13 -0
  76. package/dist/telemetry/attributes.d.ts.map +1 -0
  77. package/dist/telemetry/attributes.js +22 -0
  78. package/dist/telemetry/attributes.js.map +1 -0
  79. package/dist/{tracking → telemetry}/context.d.ts +6 -5
  80. package/dist/telemetry/context.d.ts.map +1 -0
  81. package/dist/{tracking → telemetry}/context.js +4 -4
  82. package/dist/telemetry/context.js.map +1 -0
  83. package/dist/{recording/records.d.ts → telemetry/event-builders.d.ts} +138 -30
  84. package/dist/telemetry/event-builders.d.ts.map +1 -0
  85. package/dist/{recording/wiring/record-builders.js → telemetry/event-builders.js} +90 -39
  86. package/dist/telemetry/event-builders.js.map +1 -0
  87. package/dist/telemetry/identity.d.ts +62 -0
  88. package/dist/telemetry/identity.d.ts.map +1 -0
  89. package/dist/{recording/wiring → telemetry}/identity.js +5 -2
  90. package/dist/telemetry/identity.js.map +1 -0
  91. package/dist/telemetry/spans/constants.d.ts.map +1 -0
  92. package/dist/telemetry/spans/constants.js.map +1 -0
  93. package/dist/telemetry/spans/gen-ai.d.ts.map +1 -0
  94. package/dist/telemetry/spans/gen-ai.js.map +1 -0
  95. package/dist/telemetry/spans/index.d.ts.map +1 -0
  96. package/dist/telemetry/spans/index.js.map +1 -0
  97. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -0
  98. package/dist/telemetry/spans/redact-pii.js.map +1 -0
  99. package/dist/telemetry/spans/sanitize-payload.d.ts.map +1 -0
  100. package/dist/telemetry/spans/sanitize-payload.js.map +1 -0
  101. package/dist/telemetry/spans/span-hooks.d.ts.map +1 -0
  102. package/dist/{tracking → telemetry}/spans/span-hooks.js +4 -4
  103. package/dist/telemetry/spans/span-hooks.js.map +1 -0
  104. package/dist/telemetry/trace-identity.d.ts +1 -1
  105. package/dist/types/dsl/index.d.ts +2 -9
  106. package/dist/types/dsl/index.d.ts.map +1 -1
  107. package/dist/types/runtime.d.ts +1 -1
  108. package/dist/types/runtime.d.ts.map +1 -1
  109. package/dist/utils/event-catalog.d.ts +2 -2
  110. package/dist/utils/event-catalog.js +2 -2
  111. package/dist/utils/logger.js +3 -4
  112. package/dist/utils/logger.js.map +1 -1
  113. package/package.json +1 -1
  114. package/dist/actions/tracking-helpers.d.ts.map +0 -1
  115. package/dist/actions/tracking-helpers.js.map +0 -1
  116. package/dist/recording/emitter.d.ts +0 -27
  117. package/dist/recording/emitter.d.ts.map +0 -1
  118. package/dist/recording/emitter.js +0 -2
  119. package/dist/recording/emitter.js.map +0 -1
  120. package/dist/recording/identity.d.ts +0 -34
  121. package/dist/recording/identity.d.ts.map +0 -1
  122. package/dist/recording/identity.js +0 -2
  123. package/dist/recording/identity.js.map +0 -1
  124. package/dist/recording/index.d.ts +0 -11
  125. package/dist/recording/index.d.ts.map +0 -1
  126. package/dist/recording/index.js +0 -2
  127. package/dist/recording/index.js.map +0 -1
  128. package/dist/recording/noop-emitter.d.ts +0 -23
  129. package/dist/recording/noop-emitter.d.ts.map +0 -1
  130. package/dist/recording/noop-emitter.js +0 -22
  131. package/dist/recording/noop-emitter.js.map +0 -1
  132. package/dist/recording/otel/attributes.d.ts +0 -37
  133. package/dist/recording/otel/attributes.d.ts.map +0 -1
  134. package/dist/recording/otel/attributes.js +0 -131
  135. package/dist/recording/otel/attributes.js.map +0 -1
  136. package/dist/recording/otel/constants.d.ts +0 -123
  137. package/dist/recording/otel/constants.d.ts.map +0 -1
  138. package/dist/recording/otel/constants.js +0 -172
  139. package/dist/recording/otel/constants.js.map +0 -1
  140. package/dist/recording/otel/ids.d.ts +0 -25
  141. package/dist/recording/otel/ids.d.ts.map +0 -1
  142. package/dist/recording/otel/ids.js +0 -37
  143. package/dist/recording/otel/ids.js.map +0 -1
  144. package/dist/recording/otel/index.d.ts +0 -13
  145. package/dist/recording/otel/index.d.ts.map +0 -1
  146. package/dist/recording/otel/index.js +0 -9
  147. package/dist/recording/otel/index.js.map +0 -1
  148. package/dist/recording/otel/mappers.d.ts +0 -100
  149. package/dist/recording/otel/mappers.d.ts.map +0 -1
  150. package/dist/recording/otel/mappers.js +0 -684
  151. package/dist/recording/otel/mappers.js.map +0 -1
  152. package/dist/recording/otel/otel-emitter.d.ts +0 -43
  153. package/dist/recording/otel/otel-emitter.d.ts.map +0 -1
  154. package/dist/recording/otel/otel-emitter.js +0 -99
  155. package/dist/recording/otel/otel-emitter.js.map +0 -1
  156. package/dist/recording/otel/redaction.d.ts +0 -47
  157. package/dist/recording/otel/redaction.d.ts.map +0 -1
  158. package/dist/recording/otel/redaction.js +0 -88
  159. package/dist/recording/otel/redaction.js.map +0 -1
  160. package/dist/recording/records.d.ts.map +0 -1
  161. package/dist/recording/records.js +0 -14
  162. package/dist/recording/records.js.map +0 -1
  163. package/dist/recording/transport/batcher.d.ts +0 -59
  164. package/dist/recording/transport/batcher.d.ts.map +0 -1
  165. package/dist/recording/transport/batcher.js +0 -234
  166. package/dist/recording/transport/batcher.js.map +0 -1
  167. package/dist/recording/transport/client.d.ts +0 -41
  168. package/dist/recording/transport/client.d.ts.map +0 -1
  169. package/dist/recording/transport/client.js +0 -69
  170. package/dist/recording/transport/client.js.map +0 -1
  171. package/dist/recording/transport/config.d.ts +0 -53
  172. package/dist/recording/transport/config.d.ts.map +0 -1
  173. package/dist/recording/transport/config.js +0 -41
  174. package/dist/recording/transport/config.js.map +0 -1
  175. package/dist/recording/transport/index.d.ts +0 -16
  176. package/dist/recording/transport/index.d.ts.map +0 -1
  177. package/dist/recording/transport/index.js +0 -12
  178. package/dist/recording/transport/index.js.map +0 -1
  179. package/dist/recording/transport/rows.d.ts +0 -88
  180. package/dist/recording/transport/rows.d.ts.map +0 -1
  181. package/dist/recording/transport/rows.js +0 -15
  182. package/dist/recording/transport/rows.js.map +0 -1
  183. package/dist/recording/wiring/emitter-factory.d.ts +0 -34
  184. package/dist/recording/wiring/emitter-factory.d.ts.map +0 -1
  185. package/dist/recording/wiring/emitter-factory.js +0 -44
  186. package/dist/recording/wiring/emitter-factory.js.map +0 -1
  187. package/dist/recording/wiring/identity.d.ts +0 -27
  188. package/dist/recording/wiring/identity.d.ts.map +0 -1
  189. package/dist/recording/wiring/identity.js.map +0 -1
  190. package/dist/recording/wiring/index.d.ts +0 -12
  191. package/dist/recording/wiring/index.d.ts.map +0 -1
  192. package/dist/recording/wiring/index.js +0 -9
  193. package/dist/recording/wiring/index.js.map +0 -1
  194. package/dist/recording/wiring/record-builders.d.ts +0 -107
  195. package/dist/recording/wiring/record-builders.d.ts.map +0 -1
  196. package/dist/recording/wiring/record-builders.js.map +0 -1
  197. package/dist/recording/wiring/subscriber.d.ts +0 -28
  198. package/dist/recording/wiring/subscriber.d.ts.map +0 -1
  199. package/dist/recording/wiring/subscriber.js +0 -173
  200. package/dist/recording/wiring/subscriber.js.map +0 -1
  201. package/dist/recording/wiring/values.d.ts +0 -19
  202. package/dist/recording/wiring/values.d.ts.map +0 -1
  203. package/dist/recording/wiring/values.js +0 -49
  204. package/dist/recording/wiring/values.js.map +0 -1
  205. package/dist/tracking/build-rehydrate-items.d.ts +0 -15
  206. package/dist/tracking/build-rehydrate-items.d.ts.map +0 -1
  207. package/dist/tracking/build-rehydrate-items.js +0 -19
  208. package/dist/tracking/build-rehydrate-items.js.map +0 -1
  209. package/dist/tracking/constants.d.ts +0 -24
  210. package/dist/tracking/constants.d.ts.map +0 -1
  211. package/dist/tracking/constants.js +0 -52
  212. package/dist/tracking/constants.js.map +0 -1
  213. package/dist/tracking/context.d.ts.map +0 -1
  214. package/dist/tracking/context.js.map +0 -1
  215. package/dist/tracking/index.d.ts +0 -16
  216. package/dist/tracking/index.d.ts.map +0 -1
  217. package/dist/tracking/index.js +0 -11
  218. package/dist/tracking/index.js.map +0 -1
  219. package/dist/tracking/plugin-event-tracker.d.ts +0 -13
  220. package/dist/tracking/plugin-event-tracker.d.ts.map +0 -1
  221. package/dist/tracking/plugin-event-tracker.js +0 -27
  222. package/dist/tracking/plugin-event-tracker.js.map +0 -1
  223. package/dist/tracking/position-id-registry.d.ts.map +0 -1
  224. package/dist/tracking/position-id-registry.js.map +0 -1
  225. package/dist/tracking/spans/constants.d.ts.map +0 -1
  226. package/dist/tracking/spans/constants.js.map +0 -1
  227. package/dist/tracking/spans/gen-ai.d.ts.map +0 -1
  228. package/dist/tracking/spans/gen-ai.js.map +0 -1
  229. package/dist/tracking/spans/index.d.ts.map +0 -1
  230. package/dist/tracking/spans/index.js.map +0 -1
  231. package/dist/tracking/spans/redact-pii.d.ts.map +0 -1
  232. package/dist/tracking/spans/redact-pii.js.map +0 -1
  233. package/dist/tracking/spans/sanitize-payload.d.ts.map +0 -1
  234. package/dist/tracking/spans/sanitize-payload.js.map +0 -1
  235. package/dist/tracking/spans/span-hooks.d.ts.map +0 -1
  236. package/dist/tracking/spans/span-hooks.js.map +0 -1
  237. package/dist/tracking/tracker.d.ts +0 -30
  238. package/dist/tracking/tracker.d.ts.map +0 -1
  239. package/dist/tracking/tracker.js +0 -66
  240. package/dist/tracking/tracker.js.map +0 -1
  241. package/dist/tracking/tracking-handler.d.ts +0 -12
  242. package/dist/tracking/tracking-handler.d.ts.map +0 -1
  243. package/dist/tracking/tracking-handler.js +0 -148
  244. package/dist/tracking/tracking-handler.js.map +0 -1
  245. package/dist/tracking/transport.d.ts +0 -35
  246. package/dist/tracking/transport.d.ts.map +0 -1
  247. package/dist/tracking/transport.js +0 -133
  248. package/dist/tracking/transport.js.map +0 -1
  249. package/dist/tracking/types.d.ts +0 -21
  250. package/dist/tracking/types.d.ts.map +0 -1
  251. package/dist/tracking/types.js +0 -6
  252. package/dist/tracking/types.js.map +0 -1
  253. /package/dist/{tracking → telemetry}/spans/constants.d.ts +0 -0
  254. /package/dist/{tracking → telemetry}/spans/constants.js +0 -0
  255. /package/dist/{tracking → telemetry}/spans/gen-ai.d.ts +0 -0
  256. /package/dist/{tracking → telemetry}/spans/gen-ai.js +0 -0
  257. /package/dist/{tracking → telemetry}/spans/index.d.ts +0 -0
  258. /package/dist/{tracking → telemetry}/spans/index.js +0 -0
  259. /package/dist/{tracking → telemetry}/spans/redact-pii.d.ts +0 -0
  260. /package/dist/{tracking → telemetry}/spans/redact-pii.js +0 -0
  261. /package/dist/{tracking → telemetry}/spans/sanitize-payload.d.ts +0 -0
  262. /package/dist/{tracking → telemetry}/spans/sanitize-payload.js +0 -0
  263. /package/dist/{tracking → telemetry}/spans/span-hooks.d.ts +0 -0
@@ -1,34 +0,0 @@
1
- /**
2
- * Identity stamped onto every record by the emitter at construction.
3
- *
4
- * Producers never pass these fields on a record — the emitter holds them for its lifetime and
5
- * applies them to everything it forwards. Because a runtime instance is bound to a single
6
- * strategy/wallet, `strategyAddress` lives here rather than being repeated on each record.
7
- */
8
- export interface IdentityEnvelope {
9
- /** Logical service name (e.g. the ingestion service identifier). */
10
- readonly service: string;
11
- /** Recipe / strategy configuration name (the config's top-level `name`). */
12
- readonly recipe: string;
13
- /** Declared config version (the config's optional top-level `version`), when set. */
14
- readonly recipeVersion?: string | number;
15
- /**
16
- * Content fingerprint of the **unresolved** config (raw, pre env-var substitution), canonically
17
- * serialized (sorted keys) and hashed once at boot. Unresolved on purpose: hashing post-`${VAR}`
18
- * would (a) put secrets in the hash input and (b) change the key whenever a secret rotates, even
19
- * for a byte-identical recipe — the opposite of a "which recipe produced this" join key. Hashing
20
- * the raw config makes the key stable across secret rotation and deterministic. Computed upstream
21
- * at boot, NOT in the mapper, so the mapper's redaction pass can never perturb it. The
22
- * cross-session join key: every record carries it via the envelope, while the unresolved config
23
- * blob lives once on `RuntimeLifecycleRecord.config` (hash and blob share the same input).
24
- * Distinguishes edits that didn't bump the declared `recipeVersion`.
25
- */
26
- readonly configHash?: string;
27
- /** Runtime instance name (`runtimeName`). */
28
- readonly runtime: string;
29
- /** Strategy identifier = wallet address. */
30
- readonly strategyAddress: string;
31
- /** Unique id for this process boot, to disambiguate restarts. */
32
- readonly bootId: string;
33
- }
34
- //# sourceMappingURL=identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/recording/identity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=identity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/recording/identity.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- /**
2
- * `src/recording/` — the recording contract: the single seam between the trading runtime and any
3
- * telemetry backend. Exports the record types, the {@link RecordingEmitter} interface, an identity
4
- * envelope, and the default {@link NoopEmitter}. Nothing here knows about spans, attributes, wire
5
- * formats, or transport — those live behind the adapter and transport layers.
6
- */
7
- export type { DecisionActionIntent, DecisionMadeRecord, DecisionMode, DslCloseAttemptRecord, DslTickRecord, DslTickUnit, DslTierSummary, DslTransitionKind, DslTransitionRecord, OrderEventKind, OrderEventRecord, PositionLifecycleEvent, PositionLifecycleRecord, RecordingRecord, RuntimeErrorRecord, RuntimeLifecyclePhase, RuntimeLifecycleRecord, RuntimeStatePhase, RuntimeStateRecord, ScannerRunOutcome, ScannerRunRecord, ScannerSummaryRecord, SignalDecision, SignalEvaluatedRecord, SignalEvaluation, SignalOutcome, SignalOutcomeDisposition, SignalOutcomeRecord, SignalOutcomeResult, SignalSummary, TradeDirection, } from "./records.js";
8
- export type { IdentityEnvelope } from "./identity.js";
9
- export type { RecordingEmitter } from "./emitter.js";
10
- export { NoopEmitter, noopEmitter } from "./noop-emitter.js";
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recording/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { NoopEmitter, noopEmitter } from "./noop-emitter.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recording/index.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { RecordingEmitter } from "./emitter.js";
2
- /**
3
- * Default {@link RecordingEmitter}: does nothing. Telemetry is opt-in, so the runtime always has a
4
- * safe, inert emitter wired in. Every method is a no-op and cannot throw.
5
- */
6
- export declare class NoopEmitter implements RecordingEmitter {
7
- recordScannerRun(): void;
8
- recordSignalEvaluated(): void;
9
- recordPositionLifecycle(): void;
10
- recordDslTransition(): void;
11
- recordDslTick(): void;
12
- recordError(): void;
13
- recordRuntimeLifecycle(): void;
14
- recordRuntimeState(): void;
15
- recordDecisionMade(): void;
16
- recordSignalOutcome(): void;
17
- recordScannerSummary(): void;
18
- recordDslCloseAttempt(): void;
19
- recordOrderEvent(): void;
20
- }
21
- /** Shared inert instance — the NoopEmitter is stateless, so one instance suffices. */
22
- export declare const noopEmitter: RecordingEmitter;
23
- //# sourceMappingURL=noop-emitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noop-emitter.d.ts","sourceRoot":"","sources":["../../src/recording/noop-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;GAGG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAClD,gBAAgB,IAAI,IAAI;IACxB,qBAAqB,IAAI,IAAI;IAC7B,uBAAuB,IAAI,IAAI;IAC/B,mBAAmB,IAAI,IAAI;IAC3B,aAAa,IAAI,IAAI;IACrB,WAAW,IAAI,IAAI;IACnB,sBAAsB,IAAI,IAAI;IAC9B,kBAAkB,IAAI,IAAI;IAC1B,kBAAkB,IAAI,IAAI;IAC1B,mBAAmB,IAAI,IAAI;IAC3B,oBAAoB,IAAI,IAAI;IAC5B,qBAAqB,IAAI,IAAI;IAC7B,gBAAgB,IAAI,IAAI;CACzB;AAED,sFAAsF;AACtF,eAAO,MAAM,WAAW,EAAE,gBAAoC,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Default {@link RecordingEmitter}: does nothing. Telemetry is opt-in, so the runtime always has a
3
- * safe, inert emitter wired in. Every method is a no-op and cannot throw.
4
- */
5
- export class NoopEmitter {
6
- recordScannerRun() { }
7
- recordSignalEvaluated() { }
8
- recordPositionLifecycle() { }
9
- recordDslTransition() { }
10
- recordDslTick() { }
11
- recordError() { }
12
- recordRuntimeLifecycle() { }
13
- recordRuntimeState() { }
14
- recordDecisionMade() { }
15
- recordSignalOutcome() { }
16
- recordScannerSummary() { }
17
- recordDslCloseAttempt() { }
18
- recordOrderEvent() { }
19
- }
20
- /** Shared inert instance — the NoopEmitter is stateless, so one instance suffices. */
21
- export const noopEmitter = new NoopEmitter();
22
- //# sourceMappingURL=noop-emitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noop-emitter.js","sourceRoot":"","sources":["../../src/recording/noop-emitter.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,WAAW;IACtB,gBAAgB,KAAU,CAAC;IAC3B,qBAAqB,KAAU,CAAC;IAChC,uBAAuB,KAAU,CAAC;IAClC,mBAAmB,KAAU,CAAC;IAC9B,aAAa,KAAU,CAAC;IACxB,WAAW,KAAU,CAAC;IACtB,sBAAsB,KAAU,CAAC;IACjC,kBAAkB,KAAU,CAAC;IAC7B,kBAAkB,KAAU,CAAC;IAC7B,mBAAmB,KAAU,CAAC;IAC9B,oBAAoB,KAAU,CAAC;IAC/B,qBAAqB,KAAU,CAAC;IAChC,gBAAgB,KAAU,CAAC;CAC5B;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,WAAW,GAAqB,IAAI,WAAW,EAAE,CAAC"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Attribute flattening + the timestamp/duration conversions. The flattening rule is the central
3
- * query convention: dotted lowercase snake_case keys, `String(v)` values (booleans as
4
- * `"true"`/`"false"`), null/undefined omitted, open bags flattened one level, arrays as a single
5
- * JSON-string key. Caps bound a row well under the batcher's body cap.
6
- *
7
- * Order within a row is: redact (typed-field, upstream) → flatten (here) → cap (here).
8
- */
9
- /** ms → epoch-ns digit string. BigInt: ms·1e6 overflows Number's safe-integer range. */
10
- export declare function msToNs(ms: number): string;
11
- /** Duration ns digit string from a clean `endedAt − startedAt` (clamped ≥ 0 defensively). */
12
- export declare function durationNs(startedAt: number, endedAt: number): string;
13
- /** Truncate a value past the per-value cap, marking it so the cut is visible downstream. */
14
- export declare function capValue(value: string, max: number): string;
15
- /**
16
- * Accumulates a row's flat attribute map, applying the casing/null/cap rules uniformly. Callers add
17
- * scalars under explicit keys (never auto camel→snake — acronyms mangle), bags one level deep, and
18
- * arrays/blobs as single JSON keys.
19
- */
20
- export declare class AttrBuilder {
21
- private readonly attrs;
22
- private totalChars;
23
- /** Set a scalar under an explicit key. null/undefined → omit; over budget → drop silently. */
24
- put(key: string, value: string | number | boolean | null | undefined): this;
25
- /** Flatten an open bag ONE level under `prefix` (`prefix.{k}`); scalars `String()`, else JSON. */
26
- putBag(prefix: string, bag: Record<string, unknown> | undefined | null): this;
27
- /** `Record<string,boolean>` → `prefix.{name} = "true"|"false"`. */
28
- putFactors(prefix: string, factors: Record<string, boolean> | undefined | null): this;
29
- /** A single JSON-string key for an array or structured value (queried rarely, structure kept). */
30
- putJson(key: string, value: unknown, maxChars?: number): this;
31
- /** The `runtime.config` blob: single JSON key, larger size cap, never flattened. */
32
- putConfig(key: string, value: unknown): this;
33
- /** Assign under the total-attr guard. Returns whether the key was actually stored. */
34
- private assign;
35
- build(): Record<string, string>;
36
- }
37
- //# sourceMappingURL=attributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/recording/otel/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,wFAAwF;AACxF,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,4FAA4F;AAC5F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3D;AAOD;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,UAAU,CAAK;IAEvB,8FAA8F;IAC9F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAO3E,kGAAkG;IAClG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI;IAgB7E,mEAAmE;IACnE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI;IAUrF,kGAAkG;IAClG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,MAA6B,GAAG,IAAI;IAQnF,oFAAoF;IACpF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI5C,sFAAsF;IACtF,OAAO,CAAC,MAAM;IASd,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhC"}
@@ -1,131 +0,0 @@
1
- /**
2
- * Attribute flattening + the timestamp/duration conversions. The flattening rule is the central
3
- * query convention: dotted lowercase snake_case keys, `String(v)` values (booleans as
4
- * `"true"`/`"false"`), null/undefined omitted, open bags flattened one level, arrays as a single
5
- * JSON-string key. Caps bound a row well under the batcher's body cap.
6
- *
7
- * Order within a row is: redact (typed-field, upstream) → flatten (here) → cap (here).
8
- */
9
- import { MAX_ATTR_VALUE_CHARS, MAX_BAG_KEYS, MAX_CONFIG_CHARS, MAX_TOTAL_ATTR_CHARS, TRUNCATE_MARKER, } from "./constants.js";
10
- /**
11
- * Non-finite or negative epoch-ms must not reach `BigInt()` — `BigInt(NaN)`/`BigInt(Infinity)`
12
- * throw, and a negative timestamp is an invalid wire value. Sanitize to `0n` so one bad clock value
13
- * degrades a single row rather than throwing and dropping the whole record (every numeric *attribute*
14
- * is already finite-guarded in {@link AttrBuilder.put}; timestamps bypass that path).
15
- */
16
- function toEpochMs(ms) {
17
- if (!Number.isFinite(ms) || ms < 0)
18
- return 0n;
19
- return BigInt(Math.trunc(ms));
20
- }
21
- /** ms → epoch-ns digit string. BigInt: ms·1e6 overflows Number's safe-integer range. */
22
- export function msToNs(ms) {
23
- return (toEpochMs(ms) * 1000000n).toString();
24
- }
25
- /** Duration ns digit string from a clean `endedAt − startedAt` (clamped ≥ 0 defensively). */
26
- export function durationNs(startedAt, endedAt) {
27
- const ns = (toEpochMs(endedAt) - toEpochMs(startedAt)) * 1000000n;
28
- return (ns < 0n ? 0n : ns).toString();
29
- }
30
- /** Truncate a value past the per-value cap, marking it so the cut is visible downstream. */
31
- export function capValue(value, max) {
32
- if (value.length <= max)
33
- return value;
34
- // `max` could be smaller than the marker (defensive: no current caller passes one that small);
35
- // clamp the kept length to ≥ 0 so the slice index never goes negative.
36
- return value.slice(0, Math.max(0, max - TRUNCATE_MARKER.length)) + TRUNCATE_MARKER;
37
- }
38
- function scalarToString(value) {
39
- if (typeof value === "boolean")
40
- return value ? "true" : "false";
41
- return String(value);
42
- }
43
- /**
44
- * Accumulates a row's flat attribute map, applying the casing/null/cap rules uniformly. Callers add
45
- * scalars under explicit keys (never auto camel→snake — acronyms mangle), bags one level deep, and
46
- * arrays/blobs as single JSON keys.
47
- */
48
- export class AttrBuilder {
49
- attrs = {};
50
- totalChars = 0;
51
- /** Set a scalar under an explicit key. null/undefined → omit; over budget → drop silently. */
52
- put(key, value) {
53
- if (value === null || value === undefined)
54
- return this;
55
- if (typeof value === "number" && !Number.isFinite(value))
56
- return this;
57
- this.assign(key, capValue(scalarToString(value), MAX_ATTR_VALUE_CHARS));
58
- return this;
59
- }
60
- /** Flatten an open bag ONE level under `prefix` (`prefix.{k}`); scalars `String()`, else JSON. */
61
- putBag(prefix, bag) {
62
- if (!bag)
63
- return this;
64
- let count = 0;
65
- for (const [k, v] of Object.entries(bag)) {
66
- if (count >= MAX_BAG_KEYS)
67
- break;
68
- if (v === null || v === undefined)
69
- continue;
70
- const str = typeof v === "object" ? safeJson(v) : scalarToString(v);
71
- if (str === undefined)
72
- continue;
73
- // Count only keys actually emitted, so MAX_BAG_KEYS means "emitted" not "attempted" even
74
- // when the total-attr guard drops some.
75
- if (this.assign(`${prefix}.${k}`, capValue(str, MAX_ATTR_VALUE_CHARS)))
76
- count++;
77
- }
78
- return this;
79
- }
80
- /** `Record<string,boolean>` → `prefix.{name} = "true"|"false"`. */
81
- putFactors(prefix, factors) {
82
- if (!factors)
83
- return this;
84
- let count = 0;
85
- for (const [name, v] of Object.entries(factors)) {
86
- if (count >= MAX_BAG_KEYS)
87
- break;
88
- if (this.assign(`${prefix}.${name}`, v ? "true" : "false"))
89
- count++;
90
- }
91
- return this;
92
- }
93
- /** A single JSON-string key for an array or structured value (queried rarely, structure kept). */
94
- putJson(key, value, maxChars = MAX_ATTR_VALUE_CHARS) {
95
- if (value === null || value === undefined)
96
- return this;
97
- const str = safeJson(value);
98
- if (str === undefined)
99
- return this;
100
- this.assign(key, capValue(str, maxChars));
101
- return this;
102
- }
103
- /** The `runtime.config` blob: single JSON key, larger size cap, never flattened. */
104
- putConfig(key, value) {
105
- return this.putJson(key, value, MAX_CONFIG_CHARS);
106
- }
107
- /** Assign under the total-attr guard. Returns whether the key was actually stored. */
108
- assign(key, value) {
109
- // Total-attr guard: once the row's attrs hit the budget, drop further keys rather than let one
110
- // record blow past the batcher's body cap.
111
- if (this.totalChars + key.length + value.length > MAX_TOTAL_ATTR_CHARS)
112
- return false;
113
- this.attrs[key] = value;
114
- this.totalChars += key.length + value.length;
115
- return true;
116
- }
117
- build() {
118
- return this.attrs;
119
- }
120
- }
121
- /** `JSON.stringify` that never throws (circular refs etc.) — returns undefined on failure. */
122
- function safeJson(value) {
123
- try {
124
- const s = JSON.stringify(value);
125
- return s === undefined ? undefined : s;
126
- }
127
- catch {
128
- return undefined;
129
- }
130
- }
131
- //# sourceMappingURL=attributes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/recording/otel/attributes.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- /**
2
- * Query-load-bearing constants for the mapper: span/event names, the severity map, scope
3
- * identity, attribute namespaces, and the size caps. These are part of the telemetry contract —
4
- * changing a name or a severity breaks saved queries downstream, so they live in one pinned place.
5
- */
6
- import type { SpanKind } from "../transport/index.js";
7
- import type { RecordingRecord, ScannerRunRecord } from "../records.js";
8
- /** One constant pair for this emitter. `ScopeVersion` is injectable on the emitter for the
9
- * real package version (Task 4 wiring); this is the default. */
10
- export declare const SCOPE_NAME = "senpi.recording";
11
- export declare const SCOPE_VERSION = "1.1.1";
12
- export declare const SPAN_NAME: {
13
- readonly scannerRun: "scanner.run";
14
- /** Root span of a signal-evaluation pass. */
15
- readonly signalPass: "signal.evaluation_pass";
16
- /** One child span per evaluated signal within a pass. */
17
- readonly signalEvaluation: "signal.evaluation";
18
- /** The pass's decision phase (LLM/rule), child of the pass root; carries the `decision.*` attrs. */
19
- readonly llmDecision: "llm.decision";
20
- /** Root span of a DSL monitor tick — the third work loop. */
21
- readonly dslTick: "dsl.tick";
22
- /** The tick's batched price-fetch window, intra-record child of the tick root. */
23
- readonly dslPrices: "dsl.prices";
24
- /** One position's processing window within a tick, child of the tick root. */
25
- readonly dslPosition: "dsl.position";
26
- /** A venue `closePosition` call within a position's processing, child of `dsl.position`. */
27
- readonly dslCloseAttempt: "dsl.close_attempt";
28
- /** A venue `editPosition` SL-sync call within a position's processing, child of `dsl.position`. */
29
- readonly dslSlUpdate: "dsl.sl_update";
30
- };
31
- /** OTEL-idiomatic span event recording an error on a span. */
32
- export declare const EXCEPTION_EVENT_NAME = "exception";
33
- /**
34
- * The pinned `{domain}.{event}` EventName catalog for the Task 8 self-learning log. The whole
35
- * catalog is stable up front, so it lives here in one place even though the `order.*` /
36
- * `scanner.summary` RECORDS and mappers land in later commits (those names are intentionally
37
- * unreferenced for now — the catalog is the contract, not the implementation order).
38
- */
39
- export declare const LOG_EVENT_NAME: {
40
- readonly decisionMade: "decision.made";
41
- readonly signalOutcome: "signal.outcome";
42
- readonly orderPlaced: "order.placed";
43
- readonly orderFilled: "order.filled";
44
- readonly orderFailed: "order.failed";
45
- readonly scannerSummary: "scanner.summary";
46
- readonly dslCloseAttempt: "dsl.close_attempt";
47
- };
48
- /** OTEL SeverityNumber/SeverityText pairs. */
49
- export interface Severity {
50
- readonly number: number;
51
- readonly text: string;
52
- }
53
- export declare const SEVERITY: {
54
- readonly INFO: {
55
- readonly number: 9;
56
- readonly text: "INFO";
57
- };
58
- readonly WARN: {
59
- readonly number: 13;
60
- readonly text: "WARN";
61
- };
62
- readonly ERROR: {
63
- readonly number: 17;
64
- readonly text: "ERROR";
65
- };
66
- };
67
- /**
68
- * Per-record/outcome severity map (deliberately not constant). Errors → ERROR; a self-pause is a
69
- * WARN-worthy operational event; every other discrete event is INFO — including the skipped
70
- * scanner run ("didn't run" is normal cadence, not a warning).
71
- */
72
- export declare function severityFor(record: RecordingRecord): Severity;
73
- /**
74
- * `EventName` scheme: `{type}` for records with no sub-enum, `{type}.{discriminator}` where a
75
- * discriminating enum exists — so `position_lifecycle.opened`, `dsl_transition.sl_updated`,
76
- * `runtime_state.paused` are all directly filterable.
77
- */
78
- export declare function eventNameFor(record: RecordingRecord): string;
79
- /**
80
- * The single authority for the {@link ROUTING} exception: a `scanner_run` with
81
- * `outcome === "skipped"` (engine statuses skipped/disabled/halted) routes to a log
82
- * (`scanner_run.skipped`), not a span. Used by both the emitter's dispatch and
83
- * {@link eventNameFor} so the predicate can never drift between them.
84
- */
85
- export declare function isSkippedScannerRun(record: ScannerRunRecord): boolean;
86
- export type RecordRoute = {
87
- readonly kind: "trace";
88
- readonly spanKind: SpanKind;
89
- } | {
90
- readonly kind: "log";
91
- };
92
- /**
93
- * Declarative trace-vs-log routing for all 8 record types. Heuristic: durationful *work units* are
94
- * spans; discrete events and errors are logs. The two point-in-time domain events
95
- * (`position_lifecycle`, `runtime_lifecycle`) are logs, not zero-duration spans — they carry no
96
- * duration, and logs are the natural home for point-in-time events, which keeps the trace view
97
- * exclusively work units. (Severity for log routes comes from {@link severityFor}.)
98
- *
99
- * One outcome-conditional exception (the table keys on record *type*): `scanner_run` with
100
- * `outcome === "skipped"` (engine statuses skipped/disabled/halted) routes to a **log**
101
- * (`scanner_run.skipped`, INFO) — "didn't run" is a discrete fact, not work, and the builder
102
- * synthesizes `startedAt = endedAt` for it, so a span would be a zero-duration fabrication.
103
- * `complete`/`error` runs stay spans. The emitter dispatches the exception
104
- * (`OtelEmitter.recordScannerRun`); the entry below carries the trace route for the runs that ran.
105
- */
106
- export declare const ROUTING: {
107
- readonly [K in RecordingRecord["type"]]: RecordRoute;
108
- };
109
- /** `1` = sampled. `0` reads as "dropped" to OTEL consumers, so always emit `1`. */
110
- export declare const TRACE_FLAGS_SAMPLED = 1;
111
- /** Replacement for a scrubbed scalar value; presence is kept, content removed. */
112
- export declare const REDACT_MARKER = "[redacted]";
113
- /** Per-value character cap; longer values are truncated with {@link TRUNCATE_MARKER}. */
114
- export declare const MAX_ATTR_VALUE_CHARS = 4096;
115
- /** Marker appended to a truncated value. */
116
- export declare const TRUNCATE_MARKER = "\u2026[truncated]";
117
- /** Max keys flattened out of a single open bag, bounding key cardinality from an unbounded bag. */
118
- export declare const MAX_BAG_KEYS = 64;
119
- /** Char cap for the single `runtime.config` JSON blob (larger than a normal value, still bounded). */
120
- export declare const MAX_CONFIG_CHARS = 16384;
121
- /** Total character budget across one row's attribute map — the total-attr guard. */
122
- export declare const MAX_TOTAL_ATTR_CHARS = 65536;
123
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/recording/otel/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGvE;iEACiE;AACjE,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,aAAa,UAAU,CAAC;AAGrC,eAAO,MAAM,SAAS;;IAEpB,6CAA6C;;IAE7C,yDAAyD;;IAEzD,oGAAoG;;IAEpG,6DAA6D;;IAE7D,kFAAkF;;IAElF,8EAA8E;;IAE9E,4FAA4F;;IAE5F,mGAAmG;;CAE3F,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAGhD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AAGX,8CAA8C;AAC9C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AACD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAIwB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAe7D;AAGD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAkC5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAErE;AAGD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,WAAW;CAelE,CAAC;AAGX,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAGrC,kFAAkF;AAClF,eAAO,MAAM,aAAa,eAAe,CAAC;AAG1C,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,4CAA4C;AAC5C,eAAO,MAAM,eAAe,sBAAiB,CAAC;AAC9C,mGAAmG;AACnG,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,QAAQ,CAAC"}
@@ -1,172 +0,0 @@
1
- /**
2
- * Query-load-bearing constants for the mapper: span/event names, the severity map, scope
3
- * identity, attribute namespaces, and the size caps. These are part of the telemetry contract —
4
- * changing a name or a severity breaks saved queries downstream, so they live in one pinned place.
5
- */
6
- // ── Scope (the instrumenting library identity) ───────────────────────────────
7
- /** One constant pair for this emitter. `ScopeVersion` is injectable on the emitter for the
8
- * real package version (Task 4 wiring); this is the default. */
9
- export const SCOPE_NAME = "senpi.recording";
10
- export const SCOPE_VERSION = "1.1.1";
11
- // ── Span names (traces) ──────────────────────────────────────────────────────
12
- export const SPAN_NAME = {
13
- scannerRun: "scanner.run",
14
- /** Root span of a signal-evaluation pass. */
15
- signalPass: "signal.evaluation_pass",
16
- /** One child span per evaluated signal within a pass. */
17
- signalEvaluation: "signal.evaluation",
18
- /** The pass's decision phase (LLM/rule), child of the pass root; carries the `decision.*` attrs. */
19
- llmDecision: "llm.decision",
20
- /** Root span of a DSL monitor tick — the third work loop. */
21
- dslTick: "dsl.tick",
22
- /** The tick's batched price-fetch window, intra-record child of the tick root. */
23
- dslPrices: "dsl.prices",
24
- /** One position's processing window within a tick, child of the tick root. */
25
- dslPosition: "dsl.position",
26
- /** A venue `closePosition` call within a position's processing, child of `dsl.position`. */
27
- dslCloseAttempt: "dsl.close_attempt",
28
- /** A venue `editPosition` SL-sync call within a position's processing, child of `dsl.position`. */
29
- dslSlUpdate: "dsl.sl_update",
30
- };
31
- /** OTEL-idiomatic span event recording an error on a span. */
32
- export const EXCEPTION_EVENT_NAME = "exception";
33
- // ── Log event names (the self-learning event log, Task 8) ─────────────────────
34
- /**
35
- * The pinned `{domain}.{event}` EventName catalog for the Task 8 self-learning log. The whole
36
- * catalog is stable up front, so it lives here in one place even though the `order.*` /
37
- * `scanner.summary` RECORDS and mappers land in later commits (those names are intentionally
38
- * unreferenced for now — the catalog is the contract, not the implementation order).
39
- */
40
- export const LOG_EVENT_NAME = {
41
- decisionMade: "decision.made",
42
- signalOutcome: "signal.outcome",
43
- orderPlaced: "order.placed",
44
- orderFilled: "order.filled",
45
- orderFailed: "order.failed",
46
- scannerSummary: "scanner.summary",
47
- dslCloseAttempt: "dsl.close_attempt",
48
- };
49
- export const SEVERITY = {
50
- INFO: { number: 9, text: "INFO" },
51
- WARN: { number: 13, text: "WARN" },
52
- ERROR: { number: 17, text: "ERROR" },
53
- };
54
- /**
55
- * Per-record/outcome severity map (deliberately not constant). Errors → ERROR; a self-pause is a
56
- * WARN-worthy operational event; every other discrete event is INFO — including the skipped
57
- * scanner run ("didn't run" is normal cadence, not a warning).
58
- */
59
- export function severityFor(record) {
60
- switch (record.type) {
61
- case "runtime_error":
62
- return SEVERITY.ERROR;
63
- case "runtime_state":
64
- return record.phase === "paused" ? SEVERITY.WARN : SEVERITY.INFO;
65
- case "signal_outcome":
66
- return record.result === "error" ? SEVERITY.ERROR : SEVERITY.INFO;
67
- case "dsl_close_attempt":
68
- return record.result === "error" ? SEVERITY.ERROR : SEVERITY.INFO;
69
- case "order_event":
70
- return record.event === "failed" ? SEVERITY.ERROR : SEVERITY.INFO;
71
- default:
72
- return SEVERITY.INFO;
73
- }
74
- }
75
- // ── Event names (the log-type discriminator) ─────────────────────────────────
76
- /**
77
- * `EventName` scheme: `{type}` for records with no sub-enum, `{type}.{discriminator}` where a
78
- * discriminating enum exists — so `position_lifecycle.opened`, `dsl_transition.sl_updated`,
79
- * `runtime_state.paused` are all directly filterable.
80
- */
81
- export function eventNameFor(record) {
82
- switch (record.type) {
83
- case "scanner_run":
84
- // Only the skip is log-routed (the {@link ROUTING} exception); `complete`/`error` runs are
85
- // trace-routed and keep the defensive fallback.
86
- return isSkippedScannerRun(record) ? "scanner_run.skipped" : record.type;
87
- case "position_lifecycle":
88
- return `position_lifecycle.${record.event}`;
89
- case "dsl_transition":
90
- return `dsl_transition.${record.transition}`;
91
- case "runtime_lifecycle":
92
- return `runtime_lifecycle.${record.phase}`;
93
- case "runtime_state":
94
- return `runtime_state.${record.phase}`;
95
- case "runtime_error":
96
- return "runtime_error";
97
- case "decision_made":
98
- return LOG_EVENT_NAME.decisionMade;
99
- case "signal_outcome":
100
- return LOG_EVENT_NAME.signalOutcome;
101
- case "scanner_summary":
102
- return LOG_EVENT_NAME.scannerSummary;
103
- case "dsl_close_attempt":
104
- return LOG_EVENT_NAME.dslCloseAttempt;
105
- case "order_event":
106
- return record.event === "placed"
107
- ? LOG_EVENT_NAME.orderPlaced
108
- : record.event === "filled"
109
- ? LOG_EVENT_NAME.orderFilled
110
- : LOG_EVENT_NAME.orderFailed;
111
- default:
112
- // Trace-routed records do not carry an EventName; defensive fallback only.
113
- return record.type;
114
- }
115
- }
116
- /**
117
- * The single authority for the {@link ROUTING} exception: a `scanner_run` with
118
- * `outcome === "skipped"` (engine statuses skipped/disabled/halted) routes to a log
119
- * (`scanner_run.skipped`), not a span. Used by both the emitter's dispatch and
120
- * {@link eventNameFor} so the predicate can never drift between them.
121
- */
122
- export function isSkippedScannerRun(record) {
123
- return record.outcome === "skipped";
124
- }
125
- /**
126
- * Declarative trace-vs-log routing for all 8 record types. Heuristic: durationful *work units* are
127
- * spans; discrete events and errors are logs. The two point-in-time domain events
128
- * (`position_lifecycle`, `runtime_lifecycle`) are logs, not zero-duration spans — they carry no
129
- * duration, and logs are the natural home for point-in-time events, which keeps the trace view
130
- * exclusively work units. (Severity for log routes comes from {@link severityFor}.)
131
- *
132
- * One outcome-conditional exception (the table keys on record *type*): `scanner_run` with
133
- * `outcome === "skipped"` (engine statuses skipped/disabled/halted) routes to a **log**
134
- * (`scanner_run.skipped`, INFO) — "didn't run" is a discrete fact, not work, and the builder
135
- * synthesizes `startedAt = endedAt` for it, so a span would be a zero-duration fabrication.
136
- * `complete`/`error` runs stay spans. The emitter dispatches the exception
137
- * (`OtelEmitter.recordScannerRun`); the entry below carries the trace route for the runs that ran.
138
- */
139
- export const ROUTING = {
140
- scanner_run: { kind: "trace", spanKind: "Internal" }, // skipped → log (see exception above)
141
- signal_evaluated: { kind: "trace", spanKind: "Internal" },
142
- position_lifecycle: { kind: "log" },
143
- dsl_transition: { kind: "log" },
144
- dsl_tick: { kind: "trace", spanKind: "Internal" },
145
- runtime_error: { kind: "log" },
146
- runtime_lifecycle: { kind: "log" },
147
- runtime_state: { kind: "log" },
148
- // Task 8 self-learning event log — discrete derived events, all logs.
149
- decision_made: { kind: "log" },
150
- signal_outcome: { kind: "log" },
151
- scanner_summary: { kind: "log" },
152
- dsl_close_attempt: { kind: "log" },
153
- order_event: { kind: "log" },
154
- };
155
- // ── Wire defaults ─────────────────────────────────────────────────────────────
156
- /** `1` = sampled. `0` reads as "dropped" to OTEL consumers, so always emit `1`. */
157
- export const TRACE_FLAGS_SAMPLED = 1;
158
- // ── Redaction ──────────────────────────────────────────────────────────────────
159
- /** Replacement for a scrubbed scalar value; presence is kept, content removed. */
160
- export const REDACT_MARKER = "[redacted]";
161
- // ── Size caps ────────────────────────────────────────────────────────────────
162
- /** Per-value character cap; longer values are truncated with {@link TRUNCATE_MARKER}. */
163
- export const MAX_ATTR_VALUE_CHARS = 4096;
164
- /** Marker appended to a truncated value. */
165
- export const TRUNCATE_MARKER = "…[truncated]";
166
- /** Max keys flattened out of a single open bag, bounding key cardinality from an unbounded bag. */
167
- export const MAX_BAG_KEYS = 64;
168
- /** Char cap for the single `runtime.config` JSON blob (larger than a normal value, still bounded). */
169
- export const MAX_CONFIG_CHARS = 16384;
170
- /** Total character budget across one row's attribute map — the total-attr guard. */
171
- export const MAX_TOTAL_ATTR_CHARS = 65536;
172
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/recording/otel/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,gFAAgF;AAChF;iEACiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE,aAAa;IACzB,6CAA6C;IAC7C,UAAU,EAAE,wBAAwB;IACpC,yDAAyD;IACzD,gBAAgB,EAAE,mBAAmB;IACrC,oGAAoG;IACpG,WAAW,EAAE,cAAc;IAC3B,6DAA6D;IAC7D,OAAO,EAAE,UAAU;IACnB,kFAAkF;IAClF,SAAS,EAAE,YAAY;IACvB,8EAA8E;IAC9E,WAAW,EAAE,cAAc;IAC3B,4FAA4F;IAC5F,eAAe,EAAE,mBAAmB;IACpC,mGAAmG;IACnG,WAAW,EAAE,eAAe;CACpB,CAAC;AAEX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEhD,iFAAiF;AACjF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,mBAAmB;CAC5B,CAAC;AAQX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;IACjC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;CACO,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnE,KAAK,gBAAgB;YACnB,OAAO,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpE,KAAK,mBAAmB;YACtB,OAAO,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpE,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpE;YACE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,aAAa;YAChB,2FAA2F;YAC3F,gDAAgD;YAChD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3E,KAAK,oBAAoB;YACvB,OAAO,sBAAsB,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9C,KAAK,gBAAgB;YACnB,OAAO,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/C,KAAK,mBAAmB;YACtB,OAAO,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,KAAK,eAAe;YAClB,OAAO,iBAAiB,MAAM,CAAC,KAAK,EAAE,CAAC;QACzC,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,eAAe;YAClB,OAAO,cAAc,CAAC,YAAY,CAAC;QACrC,KAAK,gBAAgB;YACnB,OAAO,cAAc,CAAC,aAAa,CAAC;QACtC,KAAK,iBAAiB;YACpB,OAAO,cAAc,CAAC,cAAc,CAAC;QACvC,KAAK,mBAAmB;YACtB,OAAO,cAAc,CAAC,eAAe,CAAC;QACxC,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;gBAC9B,CAAC,CAAC,cAAc,CAAC,WAAW;gBAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ;oBACzB,CAAC,CAAC,cAAc,CAAC,WAAW;oBAC5B,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;QACnC;YACE,2EAA2E;YAC3E,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;AACtC,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,OAAO,GAA6D;IAC/E,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,sCAAsC;IAC5F,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;IACzD,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACnC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9B,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAClC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9B,sEAAsE;IACtE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9B,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC/B,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAChC,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAClC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;CACpB,CAAC;AAEX,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,kFAAkF;AAClF,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,gFAAgF;AAChF,yFAAyF;AACzF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAC9C,mGAAmG;AACnG,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC"}