@senpi/runtime 3.0.129 → 3.0.130

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 (267) hide show
  1. package/README.md +12 -4
  2. package/dist/actions/action-events.d.ts +21 -7
  3. package/dist/actions/action-events.d.ts.map +1 -1
  4. package/dist/actions/action-events.js +54 -26
  5. package/dist/actions/action-events.js.map +1 -1
  6. package/dist/actions/action-runtime-module.d.ts.map +1 -1
  7. package/dist/actions/action-runtime-module.js +38 -7
  8. package/dist/actions/action-runtime-module.js.map +1 -1
  9. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  10. package/dist/actions/close-position/close-position.action.js +122 -15
  11. package/dist/actions/close-position/close-position.action.js.map +1 -1
  12. package/dist/actions/decision-engine.d.ts.map +1 -1
  13. package/dist/actions/decision-engine.js +15 -2
  14. package/dist/actions/decision-engine.js.map +1 -1
  15. package/dist/actions/event-derivation.d.ts +71 -2
  16. package/dist/actions/event-derivation.d.ts.map +1 -1
  17. package/dist/actions/event-derivation.js +251 -8
  18. package/dist/actions/event-derivation.js.map +1 -1
  19. package/dist/actions/open-position/open-position.action.d.ts +12 -2
  20. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  21. package/dist/actions/open-position/open-position.action.js +144 -41
  22. package/dist/actions/open-position/open-position.action.js.map +1 -1
  23. package/dist/actions/position-tracker/position-tracker.action.d.ts +2 -1
  24. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  25. package/dist/actions/position-tracker/position-tracker.action.js +62 -17
  26. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  27. package/dist/actions/skipped-signal-results.d.ts +25 -0
  28. package/dist/actions/skipped-signal-results.d.ts.map +1 -0
  29. package/dist/actions/skipped-signal-results.js +71 -0
  30. package/dist/actions/skipped-signal-results.js.map +1 -0
  31. package/dist/actions/store/types.d.ts +9 -2
  32. package/dist/actions/store/types.d.ts.map +1 -1
  33. package/dist/actions/store/types.js.map +1 -1
  34. package/dist/actions/types.d.ts +13 -0
  35. package/dist/actions/types.d.ts.map +1 -1
  36. package/dist/actions/types.js +13 -0
  37. package/dist/actions/types.js.map +1 -1
  38. package/dist/cli/guide-commands.d.ts.map +1 -1
  39. package/dist/cli/guide-commands.js +7 -6
  40. package/dist/cli/guide-commands.js.map +1 -1
  41. package/dist/cli/senpi-commands.d.ts.map +1 -1
  42. package/dist/cli/senpi-commands.js +4 -11
  43. package/dist/cli/senpi-commands.js.map +1 -1
  44. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  45. package/dist/dsl/engine-client/event-mapping.js +14 -0
  46. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  47. package/dist/dsl/events/build-closed-event.d.ts +16 -1
  48. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  49. package/dist/dsl/events/build-closed-event.js +6 -0
  50. package/dist/dsl/events/build-closed-event.js.map +1 -1
  51. package/dist/dsl/events/handlers.d.ts +7 -0
  52. package/dist/dsl/events/handlers.d.ts.map +1 -1
  53. package/dist/dsl/events/handlers.js +37 -7
  54. package/dist/dsl/events/handlers.js.map +1 -1
  55. package/dist/dsl/monitor/create-monitor.d.ts +6 -2
  56. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  57. package/dist/dsl/monitor/create-monitor.js +15 -9
  58. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  59. package/dist/dsl/monitor/dsl-failure-events.d.ts +2 -0
  60. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -1
  61. package/dist/dsl/monitor/dsl-failure-events.js +2 -1
  62. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -1
  63. package/dist/dsl/monitor/process-one-position.d.ts +1 -0
  64. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  65. package/dist/dsl/monitor/process-one-position.js +59 -25
  66. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  67. package/dist/dsl/plugin/index.d.ts +8 -2
  68. package/dist/dsl/plugin/index.d.ts.map +1 -1
  69. package/dist/dsl/plugin/index.js +8 -6
  70. package/dist/dsl/plugin/index.js.map +1 -1
  71. package/dist/health/types.d.ts +13 -0
  72. package/dist/health/types.d.ts.map +1 -1
  73. package/dist/health/types.js +12 -0
  74. package/dist/health/types.js.map +1 -1
  75. package/dist/index.d.ts +27 -4
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +251 -39
  78. package/dist/index.js.map +1 -1
  79. package/dist/runtime/action-registry.d.ts.map +1 -1
  80. package/dist/runtime/action-registry.js +4 -3
  81. package/dist/runtime/action-registry.js.map +1 -1
  82. package/dist/runtime/auto-update/coordinator.d.ts +13 -6
  83. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  84. package/dist/runtime/auto-update/coordinator.js +86 -18
  85. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  86. package/dist/runtime/auto-update/run-update-command.d.ts.map +1 -1
  87. package/dist/runtime/auto-update/run-update-command.js +4 -3
  88. package/dist/runtime/auto-update/run-update-command.js.map +1 -1
  89. package/dist/runtime/auto-update/types.d.ts +11 -5
  90. package/dist/runtime/auto-update/types.d.ts.map +1 -1
  91. package/dist/runtime/auto-update/types.js +11 -0
  92. package/dist/runtime/auto-update/types.js.map +1 -1
  93. package/dist/runtime/domain-events.d.ts.map +1 -1
  94. package/dist/runtime/domain-events.js +7 -0
  95. package/dist/runtime/domain-events.js.map +1 -1
  96. package/dist/runtime/lifecycle-events.d.ts +9 -1
  97. package/dist/runtime/lifecycle-events.d.ts.map +1 -1
  98. package/dist/runtime/lifecycle-events.js +11 -2
  99. package/dist/runtime/lifecycle-events.js.map +1 -1
  100. package/dist/runtime/reconcile-run.d.ts +13 -3
  101. package/dist/runtime/reconcile-run.d.ts.map +1 -1
  102. package/dist/runtime/reconcile-run.js +4 -3
  103. package/dist/runtime/reconcile-run.js.map +1 -1
  104. package/dist/runtime/reconcile-state.d.ts +8 -0
  105. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  106. package/dist/runtime/reconcile-state.js +4 -1
  107. package/dist/runtime/reconcile-state.js.map +1 -1
  108. package/dist/runtime/run.d.ts +1 -0
  109. package/dist/runtime/run.d.ts.map +1 -1
  110. package/dist/runtime/run.js.map +1 -1
  111. package/dist/runtime/runtime-schema.js +3 -3
  112. package/dist/runtime/runtime-schema.js.map +1 -1
  113. package/dist/runtime/runtime.d.ts +1 -0
  114. package/dist/runtime/runtime.d.ts.map +1 -1
  115. package/dist/runtime/runtime.js +27 -3
  116. package/dist/runtime/runtime.js.map +1 -1
  117. package/dist/runtime/supervisor/long-running-supervisor.d.ts +13 -0
  118. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  119. package/dist/runtime/supervisor/long-running-supervisor.js +1 -0
  120. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  121. package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -1
  122. package/dist/runtime/validate-dsl-position-tracking.js +2 -1
  123. package/dist/runtime/validate-dsl-position-tracking.js.map +1 -1
  124. package/dist/runtime-api/handlers/ingest-signals.d.ts.map +1 -1
  125. package/dist/runtime-api/handlers/ingest-signals.js +1 -0
  126. package/dist/runtime-api/handlers/ingest-signals.js.map +1 -1
  127. package/dist/runtime-api/handlers/types.d.ts +5 -0
  128. package/dist/runtime-api/handlers/types.d.ts.map +1 -1
  129. package/dist/runtime-api/intake/ingest-request.d.ts +17 -0
  130. package/dist/runtime-api/intake/ingest-request.d.ts.map +1 -0
  131. package/dist/runtime-api/intake/ingest-request.js +34 -0
  132. package/dist/runtime-api/intake/ingest-request.js.map +1 -0
  133. package/dist/runtime-api/intake/intake-events.d.ts +1 -1
  134. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
  135. package/dist/runtime-api/intake/intake-events.js +9 -3
  136. package/dist/runtime-api/intake/intake-events.js.map +1 -1
  137. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  138. package/dist/runtime-api/intake/intake-mount.js +4 -19
  139. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  140. package/dist/runtime-api/intake/process-error-post.d.ts +6 -1
  141. package/dist/runtime-api/intake/process-error-post.d.ts.map +1 -1
  142. package/dist/runtime-api/intake/process-error-post.js +5 -1
  143. package/dist/runtime-api/intake/process-error-post.js.map +1 -1
  144. package/dist/runtime-api/intake/process-signal-post.d.ts +7 -1
  145. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  146. package/dist/runtime-api/intake/process-signal-post.js +5 -0
  147. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  148. package/dist/runtime-api/intake/scaffold-error-router.js.map +1 -1
  149. package/dist/runtime-api/intake/scaffold-tick-router.d.ts +39 -0
  150. package/dist/runtime-api/intake/scaffold-tick-router.d.ts.map +1 -0
  151. package/dist/runtime-api/intake/scaffold-tick-router.js +122 -0
  152. package/dist/runtime-api/intake/scaffold-tick-router.js.map +1 -0
  153. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  154. package/dist/runtime-api/intake/scanner-launcher.js +15 -0
  155. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  156. package/dist/runtime-api/intake/types.d.ts +55 -0
  157. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  158. package/dist/runtime-api/routes/signals.d.ts +2 -0
  159. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  160. package/dist/runtime-api/routes/signals.js +5 -1
  161. package/dist/runtime-api/routes/signals.js.map +1 -1
  162. package/dist/runtime-api/routes/signals.schema.d.ts +43 -0
  163. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  164. package/dist/runtime-api/routes/signals.schema.js +43 -0
  165. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  166. package/dist/runtime-api/server.d.ts +7 -1
  167. package/dist/runtime-api/server.d.ts.map +1 -1
  168. package/dist/runtime-api/server.js +1 -0
  169. package/dist/runtime-api/server.js.map +1 -1
  170. package/dist/scanners/engine/engine.d.ts +22 -1
  171. package/dist/scanners/engine/engine.d.ts.map +1 -1
  172. package/dist/scanners/engine/engine.js +78 -11
  173. package/dist/scanners/engine/engine.js.map +1 -1
  174. package/dist/scanners/engine/lifecycle.d.ts +7 -1
  175. package/dist/scanners/engine/lifecycle.d.ts.map +1 -1
  176. package/dist/scanners/events.d.ts +4 -0
  177. package/dist/scanners/events.d.ts.map +1 -1
  178. package/dist/scanners/events.js +2 -0
  179. package/dist/scanners/events.js.map +1 -1
  180. package/dist/scanners/external/scaffold/delivery.py +194 -25
  181. package/dist/scanners/external/scaffold/scaffold.py +172 -31
  182. package/dist/scanners/external/scaffold/senpi_mcp.py +150 -8
  183. package/dist/scanners/external/scaffold/tick_facts.py +130 -0
  184. package/dist/scanners/external/scaffold/ulid.py +58 -0
  185. package/dist/scanners/external-scanner-receiver.d.ts +17 -0
  186. package/dist/scanners/external-scanner-receiver.d.ts.map +1 -1
  187. package/dist/scanners/external-scanner-receiver.js +8 -0
  188. package/dist/scanners/external-scanner-receiver.js.map +1 -1
  189. package/dist/scanners/runtime-module.d.ts +1 -0
  190. package/dist/scanners/runtime-module.d.ts.map +1 -1
  191. package/dist/scanners/runtime-module.js +66 -9
  192. package/dist/scanners/runtime-module.js.map +1 -1
  193. package/dist/telemetry/attributes.d.ts +20 -0
  194. package/dist/telemetry/attributes.d.ts.map +1 -1
  195. package/dist/telemetry/attributes.js +24 -0
  196. package/dist/telemetry/attributes.js.map +1 -1
  197. package/dist/telemetry/event-builders.d.ts +81 -6
  198. package/dist/telemetry/event-builders.d.ts.map +1 -1
  199. package/dist/telemetry/event-builders.js +141 -17
  200. package/dist/telemetry/event-builders.js.map +1 -1
  201. package/dist/telemetry/event-store.d.ts +6 -0
  202. package/dist/telemetry/event-store.d.ts.map +1 -1
  203. package/dist/telemetry/event-store.js +12 -8
  204. package/dist/telemetry/event-store.js.map +1 -1
  205. package/dist/telemetry/live-telemetry.d.ts +238 -0
  206. package/dist/telemetry/live-telemetry.d.ts.map +1 -0
  207. package/dist/telemetry/live-telemetry.js +853 -0
  208. package/dist/telemetry/live-telemetry.js.map +1 -0
  209. package/dist/telemetry/metrics.d.ts +14 -2
  210. package/dist/telemetry/metrics.d.ts.map +1 -1
  211. package/dist/telemetry/metrics.js +19 -4
  212. package/dist/telemetry/metrics.js.map +1 -1
  213. package/dist/telemetry/scanner-stats.d.ts +143 -0
  214. package/dist/telemetry/scanner-stats.d.ts.map +1 -0
  215. package/dist/telemetry/scanner-stats.js +426 -0
  216. package/dist/telemetry/scanner-stats.js.map +1 -0
  217. package/dist/telemetry/scanner-tick-feed.d.ts +87 -0
  218. package/dist/telemetry/scanner-tick-feed.d.ts.map +1 -0
  219. package/dist/telemetry/scanner-tick-feed.js +48 -0
  220. package/dist/telemetry/scanner-tick-feed.js.map +1 -0
  221. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -1
  222. package/dist/telemetry/spans/redact-pii.js +18 -2
  223. package/dist/telemetry/spans/redact-pii.js.map +1 -1
  224. package/dist/telemetry/strategy-topology.d.ts +99 -0
  225. package/dist/telemetry/strategy-topology.d.ts.map +1 -0
  226. package/dist/telemetry/strategy-topology.js +93 -0
  227. package/dist/telemetry/strategy-topology.js.map +1 -0
  228. package/dist/telemetry/telemetry-publisher.d.ts +76 -0
  229. package/dist/telemetry/telemetry-publisher.d.ts.map +1 -0
  230. package/dist/telemetry/telemetry-publisher.js +247 -0
  231. package/dist/telemetry/telemetry-publisher.js.map +1 -0
  232. package/dist/telemetry/tick-frame.d.ts +212 -0
  233. package/dist/telemetry/tick-frame.d.ts.map +1 -0
  234. package/dist/telemetry/tick-frame.js +421 -0
  235. package/dist/telemetry/tick-frame.js.map +1 -0
  236. package/dist/telemetry/timeline-buffer.d.ts +95 -0
  237. package/dist/telemetry/timeline-buffer.d.ts.map +1 -0
  238. package/dist/telemetry/timeline-buffer.js +237 -0
  239. package/dist/telemetry/timeline-buffer.js.map +1 -0
  240. package/dist/telemetry/tracing.d.ts +9 -0
  241. package/dist/telemetry/tracing.d.ts.map +1 -1
  242. package/dist/telemetry/tracing.js +36 -0
  243. package/dist/telemetry/tracing.js.map +1 -1
  244. package/dist/types/dsl/index.d.ts +11 -0
  245. package/dist/types/dsl/index.d.ts.map +1 -1
  246. package/dist/types/scanner.d.ts +15 -0
  247. package/dist/types/scanner.d.ts.map +1 -1
  248. package/dist/utils/event-catalog.d.ts +166 -0
  249. package/dist/utils/event-catalog.d.ts.map +1 -1
  250. package/dist/utils/event-catalog.js +18 -0
  251. package/dist/utils/event-catalog.js.map +1 -1
  252. package/dist/utils/logger.d.ts +4 -1
  253. package/dist/utils/logger.d.ts.map +1 -1
  254. package/dist/utils/logger.js.map +1 -1
  255. package/dist/utils/telemetry-required-log.d.ts +60 -0
  256. package/dist/utils/telemetry-required-log.d.ts.map +1 -0
  257. package/dist/utils/telemetry-required-log.js +105 -0
  258. package/dist/utils/telemetry-required-log.js.map +1 -0
  259. package/dist/utils/ulid.d.ts +9 -0
  260. package/dist/utils/ulid.d.ts.map +1 -0
  261. package/dist/utils/ulid.js +43 -0
  262. package/dist/utils/ulid.js.map +1 -0
  263. package/dist/validate/recipe-checks.d.ts.map +1 -1
  264. package/dist/validate/recipe-checks.js +2 -2
  265. package/dist/validate/recipe-checks.js.map +1 -1
  266. package/openclaw.plugin.json +8 -4
  267. package/package.json +1 -1
@@ -404,28 +404,155 @@ def _cast_market_numerics(name: str, payload: Any, args: Optional[dict] = None)
404
404
  return payload
405
405
 
406
406
 
407
+ # Per-call detail kept for one tick. The counts and the total duration below are
408
+ # whole however many calls a tick makes; only this per-call list is cut, because
409
+ # a scanner that calls a tool in a loop would otherwise grow an unbounded list
410
+ # inside a process that must not grow.
411
+ MAX_TICK_CALL_RECORDS = 64
412
+
413
+ # Per-argument bounds for a recorded call. Arguments are author-supplied and
414
+ # reach a watching operator's screen, so what is kept is scalars only, capped.
415
+ MAX_TICK_CALL_ARG_KEYS = 16
416
+ MAX_TICK_CALL_ARG_CHARS = 1024
417
+
418
+ # A list of scalars is kept as well, because the assets a scanner priced arrive
419
+ # in that shape and are the most useful argument on the event. Both bounds apply
420
+ # to one list: at most this many elements, and no more rendered characters than a
421
+ # single string argument is allowed. MAX_TICK_CALL_ARG_CHARS is shared rather than
422
+ # doubled so one long list cannot cost more frame than one long string.
423
+ MAX_TICK_CALL_ARG_LIST_ITEMS = 16
424
+
425
+
426
+ def _is_arg_scalar(value: Any) -> bool:
427
+ """Whether one value is a scalar this event carries: str, bool, or a finite number.
428
+
429
+ The int branch covers bool, which subclasses it, and comes before the float
430
+ branch on purpose: an int cannot be infinite, and `math.isfinite` on one too
431
+ large to convert to a float raises OverflowError.
432
+ """
433
+ if isinstance(value, int):
434
+ return True
435
+ if isinstance(value, float):
436
+ return math.isfinite(value)
437
+ return isinstance(value, str)
438
+
439
+
440
+ def _record_arg_list(value: list) -> Optional[list]:
441
+ """One list argument, bounded — or None when the list is not carried at all.
442
+
443
+ A single non-scalar element rejects the whole list. Filtering it out instead
444
+ would let an author's unbounded dict decide how much of a nested payload gets
445
+ rendered, which is the input this event refuses to take.
446
+
447
+ Elements dropped by either bound are replaced by a trailing count, so a
448
+ shortened list reads as shortened rather than as a shorter call. The marker is
449
+ a plain string element because the consumer expands dictionary indexes and
450
+ scalars, and a nested object would not survive it.
451
+ """
452
+ if not all(_is_arg_scalar(item) for item in value):
453
+ return None
454
+ kept: list = []
455
+ chars = 0
456
+ for item in value[:MAX_TICK_CALL_ARG_LIST_ITEMS]:
457
+ rendered = len(item) if isinstance(item, str) else len(str(item))
458
+ if chars + rendered > MAX_TICK_CALL_ARG_CHARS:
459
+ break
460
+ chars += rendered
461
+ kept.append(item)
462
+ if len(kept) < len(value):
463
+ kept.append(f"+{len(value) - len(kept)} more")
464
+ return kept
465
+
466
+
467
+ def _record_args(args: Optional[dict]) -> dict:
468
+ """The scalar arguments of one call, bounded — never the caller's own dict.
469
+
470
+ A reference would let authored code mutate what the tally already recorded,
471
+ and a deep copy would pay for a payload the wire is going to drop anyway. A
472
+ kept list is a new list for the same reason.
473
+ """
474
+ if not isinstance(args, dict):
475
+ return {}
476
+ kept: dict = {}
477
+ for key in list(args.keys())[:MAX_TICK_CALL_ARG_KEYS]:
478
+ if not isinstance(key, str):
479
+ continue
480
+ value = args[key]
481
+ if isinstance(value, str):
482
+ kept[key] = value[:MAX_TICK_CALL_ARG_CHARS]
483
+ elif _is_arg_scalar(value):
484
+ # The same gate the list path applies, and for a harder reason here: an
485
+ # `inf` compares equal to itself, so a self-equality check lets it
486
+ # through, and json.dumps then writes the bare `Infinity` token. That
487
+ # token is not JSON, and the tick facts ride one POST body — a
488
+ # JavaScript JSON.parse on it throws and every other fact on the tick
489
+ # is lost with the one argument.
490
+ kept[key] = value
491
+ elif isinstance(value, list):
492
+ # An empty list is kept. Absent means unmeasured on this event, and a
493
+ # scanner that passed no elements did measure something: it asked for
494
+ # nothing. Dropping it would report the argument as never supplied.
495
+ rendered_list = _record_arg_list(value)
496
+ if rendered_list is not None:
497
+ kept[key] = rendered_list
498
+ return kept
499
+
500
+
407
501
  class TickErrorTally:
408
- """Per-tick count of MCP call failures, by error type.
502
+ """Per-tick record of what the MCP boundary did: every call, and every failure.
503
+
504
+ Two tallies, one object, because both are read at the same moment and reset
505
+ at the same moment.
506
+
507
+ FAILURES. Authored scan() code routinely catches the MCP exception and
508
+ returns [], so the exception alone never reaches the scaffold — the tick
509
+ would finish `ok` with zero candidates while the scanner is blind. The client
510
+ records every failure here as it re-raises; the scaffold resets the tally at
511
+ tick start and reads it at tick end to decide whether a candidate-less tick
512
+ was really ok.
513
+
514
+ CALLS. Every call is recorded, succeeded or failed, with the time it took.
515
+ Failures alone say what broke but not what the tick actually did or where its
516
+ time went — a tick with no failures and one 9-second call is a slow venue, and
517
+ nothing else on the box can tell an operator that.
409
518
 
410
- Authored scan() code routinely catches the MCP exception and returns [], so
411
- the exception alone never reaches the scaffold — the tick would finish `ok`
412
- with zero candidates while the scanner is blind. The client records every
413
- failure here as it re-raises; the scaffold resets the tally at tick start and
414
- reads it at tick end to decide whether a candidate-less tick was really ok.
415
519
  Thread-safe because call_tool may be driven from author threads.
416
520
  """
417
521
 
418
522
  def __init__(self) -> None:
419
523
  self._by_type: dict[str, int] = {}
524
+ self._calls: list[dict] = []
525
+ self._call_count = 0
526
+ self._total_ms = 0.0
420
527
  self._lock = threading.Lock()
421
528
 
422
529
  def record(self, error_type: str) -> None:
423
530
  with self._lock:
424
531
  self._by_type[error_type] = self._by_type.get(error_type, 0) + 1
425
532
 
533
+ def record_call(
534
+ self,
535
+ tool: str,
536
+ elapsed_ms: float,
537
+ args: Optional[dict] = None,
538
+ error_type: Optional[str] = None,
539
+ ) -> None:
540
+ """Record one completed call. Called on the success path and the failure path alike."""
541
+ entry = {"tool": tool, "ms": elapsed_ms, "args": _record_args(args)}
542
+ if error_type is not None:
543
+ entry["error_type"] = error_type
544
+ with self._lock:
545
+ self._call_count += 1
546
+ self._total_ms += elapsed_ms
547
+ if len(self._calls) < MAX_TICK_CALL_RECORDS:
548
+ self._calls.append(entry)
549
+
426
550
  def reset(self) -> None:
427
551
  with self._lock:
428
552
  self._by_type = {}
553
+ self._calls = []
554
+ self._call_count = 0
555
+ self._total_ms = 0.0
429
556
 
430
557
  def snapshot(self) -> dict[str, Any]:
431
558
  """{count, dominant_error_type, by_type}; count 0 / None when clean.
@@ -440,6 +567,15 @@ class TickErrorTally:
440
567
  dominant = max(by_type, key=by_type.__getitem__) if by_type else None
441
568
  return {"count": count, "dominant_error_type": dominant, "by_type": by_type}
442
569
 
570
+ def call_snapshot(self) -> dict[str, Any]:
571
+ """{count, total_ms, calls}. `count` and `total_ms` are whole; `calls` may be cut."""
572
+ with self._lock:
573
+ return {
574
+ "count": self._call_count,
575
+ "total_ms": round(self._total_ms, 1),
576
+ "calls": [dict(call) for call in self._calls],
577
+ }
578
+
443
579
 
444
580
  # --------------------------------------------------------------------------
445
581
  # Transport-failure classification — which errors mean "the session is dead".
@@ -670,7 +806,11 @@ class SenpiMcpClient:
670
806
 
671
807
  used = self._ensure_connected(name, deadline)
672
808
  result = self._run(used.session.call_tool(name, arguments=args), name, deadline)
673
- return _cast_market_numerics(name, self._unwrap(name, result), args)
809
+ value = _cast_market_numerics(name, self._unwrap(name, result), args)
810
+ # Recorded after the unwrap, so a call that returned an `isError` result is
811
+ # counted on the failure path below and never twice.
812
+ self.tick_errors.record_call(name, round((time.monotonic() - started) * 1000, 1), args)
813
+ return value
674
814
  except Exception as exc:
675
815
  # Catch every failure — mutation block, missing creds, the lazy
676
816
  # `import mcp`, transport errors, timeouts, tool `isError` — tally
@@ -691,13 +831,15 @@ class SenpiMcpClient:
691
831
  # counts under the SAME name, so the dominant type a blind tick
692
832
  # reports to /errors matches the senpi_mcp_error lines beside it.
693
833
  error_type = "TimeoutError" if timed_out else type(primary).__name__
834
+ elapsed_ms = round((time.monotonic() - started) * 1000, 1)
694
835
  self.tick_errors.record(error_type)
836
+ self.tick_errors.record_call(name, elapsed_ms, args, error_type)
695
837
  log_event(
696
838
  "senpi_mcp_error",
697
839
  tool=name,
698
840
  error_type=error_type,
699
841
  error=str(primary)[:500],
700
- elapsed_ms=round((time.monotonic() - started) * 1000, 1),
842
+ elapsed_ms=elapsed_ms,
701
843
  **({"leaf_count": len(leaves)} if len(leaves) > 1 else {}),
702
844
  **({"timeout_seconds": self._call_timeout} if timed_out else {}),
703
845
  **({"session_rebuilt": True} if rebuilt else {}),
@@ -0,0 +1,130 @@
1
+ """Per-tick observability facts the scaffold hands to the intake.
2
+
3
+ A scanner tick produces nothing on roughly 99% of ticks, so the only thing a
4
+ live screen can show about a working box is what the tick itself reports. These
5
+ facts are assembled here, once per tick, and ride the POST the delivery sink
6
+ already makes every tick — `/signals` on a clean tick, `/errors` on a failed
7
+ one. There is no second channel and no extra request.
8
+
9
+ ABSENT IS NOT ZERO. Every field is omitted when its value is unknown, never
10
+ defaulted. A `candidate_count` of 0 is a scanner that found nothing; an absent
11
+ one would be a scanner that did not say. The distinction has to survive from
12
+ here to the screen, so nothing in this module substitutes one for the other.
13
+
14
+ The state projection is the LAST COMMITTED row, which makes it stale by one tick
15
+ whenever the current tick failed. That is deliberate: a tick that could not
16
+ commit is exactly when the last agreed state is worth seeing.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from typing import Any, Optional
22
+
23
+
24
+ # Per-value character ceiling inside a projected row. An author may park a whole
25
+ # serialised payload in one state key; this bounds what one tick can put on the
26
+ # wire without bounding what the author may store.
27
+ MAX_STATE_VALUE_CHARS = 1024
28
+
29
+ # Keys projected out of one state row. Bounds an author's open-ended row the way
30
+ # the runtime bounds an open attribute bag.
31
+ MAX_STATE_KEYS = 32
32
+
33
+
34
+ def _is_scalar(value: Any) -> bool:
35
+ """A value a consumer can parse: str, bool, or a FINITE number.
36
+
37
+ bool is checked before the numeric branch only implicitly — it is accepted
38
+ either way. NaN and the infinities are rejected: they are not JSON, and a
39
+ consumer reading one has no way to tell it from a real measurement.
40
+ """
41
+ if isinstance(value, bool) or isinstance(value, str):
42
+ return True
43
+ if isinstance(value, (int, float)):
44
+ return value == value and value not in (float("inf"), float("-inf"))
45
+ return False
46
+
47
+
48
+ def project_state_row(row: Any) -> dict:
49
+ """The scalar fields of one state row, capped and bounded.
50
+
51
+ Returns {} for anything that is not a dict — a row the author replaced with
52
+ a list or a string projects to nothing rather than raising inside the loop.
53
+ """
54
+ if not isinstance(row, dict):
55
+ return {}
56
+ projected: dict = {}
57
+ for key in list(row.keys())[:MAX_STATE_KEYS]:
58
+ if not isinstance(key, str):
59
+ continue
60
+ value = row[key]
61
+ if not _is_scalar(value):
62
+ continue
63
+ projected[key] = value[:MAX_STATE_VALUE_CHARS] if isinstance(value, str) else value
64
+ return projected
65
+
66
+
67
+ def count_changed(current: dict, previous: Optional[dict]) -> int:
68
+ """How many projected fields moved since the previously reported row.
69
+
70
+ A first row counts every field as changed: nothing was known before it, so
71
+ every value is new information. A key that disappeared counts too — its
72
+ absence is a change the operator should see.
73
+ """
74
+ if previous is None:
75
+ return len(current)
76
+ keys = set(current) | set(previous)
77
+ return sum(1 for key in keys if current.get(key) != previous.get(key))
78
+
79
+
80
+ def build_tick_facts(
81
+ *,
82
+ tick_id: str,
83
+ status: str,
84
+ candidate_count: int,
85
+ duration_ms: int,
86
+ commit: Optional[str],
87
+ quiet_ticks: int,
88
+ lag_ms: Optional[int],
89
+ mcp_snapshot: Optional[dict],
90
+ call_snapshot: Optional[dict],
91
+ state_row: Any,
92
+ state_fields: Optional[int],
93
+ state_changed: Optional[int],
94
+ ) -> dict:
95
+ """Assemble one tick's facts for the wire.
96
+
97
+ `mcp_snapshot` / `call_snapshot` are the MCP boundary's own per-tick tallies,
98
+ or None when the tick ran without an MCP client — which is not the same as a
99
+ tick that made no calls, so both keys are then left off entirely.
100
+ """
101
+ facts: dict = {
102
+ "tick_id": tick_id,
103
+ "status": status,
104
+ "candidate_count": candidate_count,
105
+ "duration_ms": duration_ms,
106
+ # Always known: the loop either commits, rolls back, or fails to persist.
107
+ **({"commit": commit} if commit else {}),
108
+ # Zero is a real answer here (this tick produced a signal), so it is sent.
109
+ "quiet_ticks": quiet_ticks,
110
+ }
111
+ # Unknown on the very first tick of a process: there is no previous tick to
112
+ # measure the gap against, and a 0 would claim the scanner was exactly on time.
113
+ if lag_ms is not None:
114
+ facts["lag_ms"] = lag_ms
115
+ if mcp_snapshot is not None:
116
+ # Every failure the boundary saw this tick. The overwhelming case is a failure the
117
+ # author's own `except` caught and turned into an empty return — the one thing that
118
+ # otherwise leaves no trace at all. A failure that escaped scan() is in the count too,
119
+ # and needs no separating out: it already failed the tick, so `status` names it.
120
+ facts["mcp_failures"] = int(mcp_snapshot.get("count") or 0)
121
+ if call_snapshot is not None:
122
+ facts["mcp_ms"] = call_snapshot.get("total_ms", 0)
123
+ facts["mcp_calls"] = call_snapshot.get("calls", [])
124
+ projected = project_state_row(state_row)
125
+ if state_fields is not None:
126
+ facts["state"] = projected
127
+ facts["state_fields"] = state_fields
128
+ if state_changed is not None:
129
+ facts["state_changed"] = state_changed
130
+ return facts
@@ -0,0 +1,58 @@
1
+ """ULID minting: a 26-character, lexicographically sortable id — 48 bits of millisecond timestamp
2
+ followed by 80 bits of randomness, rendered in Crockford's base32. Sortable ids are what let two
3
+ ticks be ordered without carrying a second field, and 80 random bits make a collision between two
4
+ ticks of the same millisecond unreachable.
5
+
6
+ Mirrors src/utils/ulid.ts so a scaffold id and a runtime id are the same kind of value. The random
7
+ half is read out of a `uuid.uuid4()`, taking only the ten bytes that carry no version or variant
8
+ bits, so all 80 of them are random.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import math
14
+ import time
15
+ import uuid
16
+
17
+ # Crockford's base32: no I, L, O or U, so a transcribed id cannot be misread.
18
+ CROCKFORD = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"
19
+
20
+ TIME_CHARS = 10
21
+ RANDOM_CHARS = 16
22
+ MAX_TIME = 2 ** 48 - 1
23
+
24
+
25
+ def _encode_time(ms) -> str:
26
+ """Render `ms` as the 10-character time prefix.
27
+
28
+ Clamped, and never raised from: a clock that reads non-finite, negative, or past the 48-bit
29
+ ceiling must still yield a valid id rather than kill the tick that asked for one.
30
+ """
31
+ try:
32
+ remaining = min(max(math.floor(ms), 0), MAX_TIME)
33
+ except (OverflowError, ValueError, TypeError):
34
+ remaining = 0
35
+ out = ""
36
+ for _ in range(TIME_CHARS):
37
+ out = CROCKFORD[remaining % 32] + out
38
+ remaining //= 32
39
+ return out
40
+
41
+
42
+ def _encode_random() -> str:
43
+ """Render 80 random bits as the 16-character suffix, five bits at a time."""
44
+ # uuid4 holds its version and variant in bytes 6 and 8; the ten bytes taken here are the
45
+ # fully random ones.
46
+ raw = uuid.uuid4().bytes
47
+ acc = int.from_bytes(raw[:6] + raw[9:13], "big")
48
+ return "".join(
49
+ CROCKFORD[(acc >> shift) & 31]
50
+ for shift in range(RANDOM_CHARS * 5 - 5, -1, -5)
51
+ )
52
+
53
+
54
+ def new_ulid(now_ms: int | None = None) -> str:
55
+ """Mint a ULID. `now_ms` is injectable so a caller can pin the time half in a test."""
56
+ if now_ms is None:
57
+ now_ms = int(time.time() * 1000)
58
+ return _encode_time(now_ms) + _encode_random()
@@ -18,6 +18,17 @@ export interface ExternalScannerIngestRequest {
18
18
  * greppable across the intake→ingest hops. Never sizes/gates/routes a trade.
19
19
  */
20
20
  signal_id?: string;
21
+ /**
22
+ * Producer-minted id of the scan that produced this signal. Absent when the
23
+ * producer sends none — the ingest never mints one, so a missing id stays
24
+ * missing all the way to the event attribute.
25
+ */
26
+ tick_id?: string;
27
+ /**
28
+ * Intake-minted id of the acceptance row that admitted this signal. Answers a
29
+ * different question from `tick_id`: which acceptance, not which scan.
30
+ */
31
+ correlationId?: string;
21
32
  /** Asset for a single ingested signal. */
22
33
  asset?: string;
23
34
  /** Optional direction for a single ingested signal. */
@@ -58,6 +69,12 @@ export interface ExternalScannerIngestSignalItem {
58
69
  signal_type?: string;
59
70
  marginPct?: number;
60
71
  leverage?: number;
72
+ /**
73
+ * Producer-minted id of the scan that produced THIS item. One batch can mix ticks — a producer
74
+ * retry rides along with the current tick's signals — so the item's own id wins over the
75
+ * request-level one. Absent on both leaves the signal unnamed; the ingest never mints one.
76
+ */
77
+ tick_id?: string;
61
78
  data: Record<string, unknown>;
62
79
  }
63
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"external-scanner-receiver.d.ts","sourceRoot":"","sources":["../../src/scanners/external-scanner-receiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-scanner-receiver.d.ts","sourceRoot":"","sources":["../../src/scanners/external-scanner-receiver.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,7 @@ function prepareSingleSignalIngest(options) {
86
86
  marginPct: request.marginPct,
87
87
  leverage: request.leverage,
88
88
  signalId: request.signal_id,
89
+ tickId: request.tick_id,
89
90
  data: request.data,
90
91
  defaultSignalType: options.defaultSignalType,
91
92
  timestamp: options.timestamp,
@@ -140,6 +141,9 @@ function prepareBatchSignalIngest(options) {
140
141
  signalType: item.signal_type,
141
142
  marginPct: item.marginPct,
142
143
  leverage: item.leverage,
144
+ // The item names the tick that produced IT; the request-level id is the fallback for a
145
+ // producer that sends one id for the whole POST.
146
+ tickId: typeof item.tick_id === "string" ? item.tick_id : request.tick_id,
143
147
  data: item.data,
144
148
  defaultSignalType: options.defaultSignalType,
145
149
  timestamp: options.timestamp,
@@ -229,6 +233,10 @@ function buildNormalizedSignal(options) {
229
233
  if (typeof options.signalId === "string" && options.signalId.length > 0) {
230
234
  signal.signal_id = options.signalId;
231
235
  }
236
+ // Same carry as signal_id: a blank would be an attribute that exists and says nothing.
237
+ if (typeof options.tickId === "string" && options.tickId.length > 0) {
238
+ signal.tick_id = options.tickId;
239
+ }
232
240
  // Canonical per-signal sizing/leverage ride at the top level (not in meta),
233
241
  // so the open action consumes them directly. Only in-range values are kept.
234
242
  // marginPct is a percent of withdrawable (0–100].
@@ -1 +1 @@
1
- {"version":3,"file":"external-scanner-receiver.js","sourceRoot":"","sources":["../../src/scanners/external-scanner-receiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-scanner-receiver.js","sourceRoot":"","sources":["../../src/scanners/external-scanner-receiver.ts"],"names":[],"mappings":"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"}
@@ -74,6 +74,7 @@ export interface ScannerRuntimeModule {
74
74
  type: string;
75
75
  error_type?: string;
76
76
  message?: string;
77
+ tick_id?: string;
77
78
  }): boolean;
78
79
  /**
79
80
  * Attaches the supervision fact source produced outside the module (intake
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-module.d.ts","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-module.d.ts","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}