• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

medplum / medplum / 31071675445
92%

Build:
DEFAULT BRANCH: main
Ran 06 Aug 2026 04:41AM UTC
Jobs 1
Files 861
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Aug 2026 04:23AM UTC coverage: 92.081% (+0.02%) from 92.064%
31071675445

push

github

web-flow
refactor(agent): rework byte-stream sequence mapping interface (#10109)

* test: add byte mapping extension

Signed-off-by: Derrick Farris <derrick@medplum.com>

* fix: convert to ascii

Signed-off-by: Derrick Farris <derrick@medplum.com>

* fix: test surgical ctrl char strip

Signed-off-by: Derrick Farris <derrick@medplum.com>

* fix: don't strip ctrl chars with skip=false

Signed-off-by: Derrick Farris <derrick@medplum.com>

* refactor(agent): rework byte-stream sequence mapping interface

Byte sequence mappings were configured through a nested Endpoint extension
with an inline magic URL and bare relative child URLs, diverging from every
other agent channel option. Move them onto the endpoint address as query
params, alongside startChar/endChar and the hl7 channel's params, and split
the feature into three independently-requested behaviors:

  autoRespond=<pattern>:<response>  link-level handshake, repeatable
  stripSequence=<sequence>          remove a sequence from the body, repeatable
  stripControlChars=true            remove remaining C0 control bytes
  bodyEncoding=hex|utf-8            body encoding, default hex

Byte sequences use the same %XX form as startChar/endChar; URLSearchParams
already percent-decodes, so they are read by code point rather than through a
hand-rolled decoder that accepted %0x as byte 0.

Fixes carried by the restructure:

- Config edits now take effect. Mappings were parsed only from
  configureTcpServerAndConnections, which reloadConfig calls only on an
  address change, so an extension-only edit never reached a running channel.
- Connections match independently. A single channel-wide matcher held the
  sliding window for every socket, so concurrent connections interleaved into
  it: one socket's bytes could complete another's pattern, and either socket's
  reset discarded the other's progress.
- Multi-byte sequences are stripped whole. The byte-at-a-time filter dropped
  only the byte that completed a pattern, leavin... (continued)

23054 of 26148 branches covered (88.17%)

Branch coverage included in aggregate %.

140 of 145 new or added lines in 1 file covered. (96.55%)

40876 of 43280 relevant lines covered (94.45%)

12175.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
93.88
5.25% packages/agent/src/bytestream.ts
Jobs
ID Job ID Ran Files Coverage
1 31071675445.1 06 Aug 2026 04:41AM UTC 861
92.08
GitHub Action Run
Source Files on build 31071675445
  • Tree
  • List 861
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31071675445
  • 63a858a7 on github
  • Prev Build on main (#31060324972)
  • Next Build on main (#31130538670)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc