Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
a9da3e4
feat(network): validate WebSocket opening response
seonghobae Aug 20, 2026
924f260
test(network): close handshake coverage gaps
seonghobae Aug 20, 2026
1e6c35d
feat(network): add bounded WebSocket frame transport
seonghobae Aug 20, 2026
5b7a6b6
test(network): carry revoked-stream fail-closed portability fix
seonghobae Aug 20, 2026
5bbd3c8
merge: refresh WebSocket response stack on opening-write head
seonghobae Aug 20, 2026
2b02e01
test(network): carry revoked-stream portability fix into frame stack
seonghobae Aug 20, 2026
075545a
merge: refresh WebSocket frame stack on response head
seonghobae Aug 20, 2026
e1c9002
style(network): apply canonical rustfmt to inherited revoked-stream r…
seonghobae Aug 20, 2026
2e01bcd
merge: refresh WebSocket response stack after rustfmt repair
seonghobae Aug 20, 2026
84827a8
style(network): apply canonical rustfmt to inherited revoked-stream r…
seonghobae Aug 20, 2026
579dd3d
merge: refresh WebSocket frame stack after response rustfmt repair
seonghobae Aug 20, 2026
154e226
test(network): require bounded BiDi locateNodes wire exchange
seonghobae Aug 20, 2026
a178efc
feat(network): bind locateNodes command to exact WebSocket response
seonghobae Aug 20, 2026
c757d5f
feat(network): expose bounded locateNodes wire exchange
seonghobae Aug 20, 2026
285d4a5
test(network): send canonical locateNodes response JSON
seonghobae Aug 20, 2026
5ad697b
style(network): apply canonical rustfmt to locateNodes exchange
seonghobae Aug 20, 2026
b09f93c
test(network): cover locateNodes exchange failures
seonghobae Aug 20, 2026
f73f6cb
test(network): satisfy websocket exchange clippy contract
seonghobae Aug 20, 2026
f3c63d7
test(network): enforce one BiDi exchange deadline
seonghobae Aug 21, 2026
ef4393d
test(network): format exchange-deadline RED regression
seonghobae Aug 21, 2026
746128c
fix(network): consume one BiDi exchange deadline
seonghobae Aug 21, 2026
7daabb5
fix(network): format exchange deadline repair
seonghobae Aug 21, 2026
c5746a6
test(network): cover locateNodes exchange deadline
seonghobae Aug 21, 2026
54ab034
test(network): require RFC6455 pong control-frame write
seonghobae Aug 21, 2026
f9ba573
test(network): format RFC6455 pong regression
seonghobae Aug 21, 2026
64b6d65
fix(network): add bounded RFC6455 Pong writer
seonghobae Aug 21, 2026
61af6b4
fix(network): enable bounded Pong control writer
seonghobae Aug 21, 2026
38061f7
fix(network): format bounded Pong writer
seonghobae Aug 21, 2026
7c04744
chore(network): realign locateNodes exchange stack
seonghobae Aug 21, 2026
9541b6d
test(network): require Pong during locateNodes exchange
seonghobae Aug 21, 2026
1bd7d02
fix(network): service BiDi control frames during locateNodes
seonghobae Aug 21, 2026
1064905
fix(network): repair Pong exchange build contract
seonghobae Aug 21, 2026
9a03d45
merge: carry ChromeDriver session compatibility into opening response
seonghobae Aug 21, 2026
4c5e51d
test(network): require non-generic locateNodes entropy callback
seonghobae Aug 21, 2026
3801e90
fix(network): erase locateNodes entropy callback type
seonghobae Aug 21, 2026
3a9aa8b
test(network): borrow locateNodes entropy callbacks
seonghobae Aug 21, 2026
06018f2
test(network): borrow Ping entropy callback
seonghobae Aug 21, 2026
3b3218a
test(network): close Pong coverage blind spots
seonghobae Aug 21, 2026
cd2ca57
test(network): accept repeated WebSocket list fields
seonghobae Aug 21, 2026
305a40c
style(network): apply canonical rustfmt
seonghobae Aug 21, 2026
75147b6
fix(network): combine repeated WebSocket list fields
seonghobae Aug 21, 2026
20830e9
style(network): apply canonical rustfmt
seonghobae Aug 21, 2026
edd1107
test(network): satisfy strict result handling
seonghobae Aug 21, 2026
3a3a2c5
fix(network): preserve Pong coverage under clippy policy
seonghobae Aug 21, 2026
53c3d92
chore(stack): integrate current WebSocket transport parent
seonghobae Aug 21, 2026
946971e
test(network): cover Ping failure exits
seonghobae Aug 21, 2026
66eb019
test(network): keep transport helpers outside production coverage
seonghobae Aug 21, 2026
a507fed
test(network): exercise Ping failure boundaries externally
seonghobae Aug 21, 2026
faffcab
test(network): format BiDi ping deadline regression
seonghobae Aug 21, 2026
60385f4
test(network): factor BiDi ping fixture type
seonghobae Aug 21, 2026
0bad232
test(network): close exact BiDi exchange coverage gaps
seonghobae Aug 21, 2026
7d7c7d8
test(network): cover locateNodes Pong write failure
seonghobae Aug 21, 2026
ad6659b
test(network): wire Pong write failure regression
seonghobae Aug 21, 2026
f48f4dd
test(network): make client frame parser exhaustive
seonghobae Aug 21, 2026
c6daa6d
test(network): cover public locateNodes error sources
seonghobae Aug 21, 2026
623f1cb
test(network): cover locateNodes Pong write failure downstream
seonghobae Aug 21, 2026
b84bebb
test(network): bound locateNodes control-frame interleave
seonghobae Aug 21, 2026
d572b59
test(network): align control-frame RED formatting
seonghobae Aug 21, 2026
6cc3fb5
fix(network): bound locateNodes control-frame interleave
seonghobae Aug 21, 2026
e5ff620
style(network): align control-frame bound formatting
seonghobae Aug 21, 2026
504e921
fix(network): export locateNodes control-frame budget
seonghobae Aug 21, 2026
2251d5e
Merge PR #198 current head into WebSocket frame transport
seonghobae Aug 22, 2026
90f65d7
Merge PR #204 current head into locateNodes exchange
seonghobae Aug 22, 2026
dd4935c
docs: record bounded locateNodes WebSocket exchange
seonghobae Aug 22, 2026
ded60bc
test(network): reproduce long locateNodes exchange budget
seonghobae Aug 22, 2026
2cb8e06
test(network): format long exchange budget regression
seonghobae Aug 22, 2026
6cd64de
fix(network): cap locateNodes frame operations within exchange deadline
seonghobae Aug 22, 2026
587a838
fix(network): preserve zero-budget frame refusal semantics
seonghobae Aug 22, 2026
63bd87a
test(network): satisfy strict lints for long exchange budget regression
seonghobae Aug 22, 2026
17b8834
style(network): apply canonical rustfmt to long-budget regression
seonghobae Aug 22, 2026
4c95e21
test(network): reject malformed WebSocket Close payloads
seonghobae Aug 22, 2026
8a1f7fd
test(network): format Close-frame regression
seonghobae Aug 22, 2026
b5f396f
test(network): cover valid and invalid Close payloads
seonghobae Aug 22, 2026
3da820f
fix(network): reject malformed WebSocket Close payloads
seonghobae Aug 22, 2026
651d53e
test(network): cover public WebSocket guard paths
seonghobae Aug 22, 2026
e8d8aa8
test(network): exercise exact public guard coverage
seonghobae Aug 22, 2026
7964efe
style(network): apply canonical rustfmt to guard coverage
seonghobae Aug 22, 2026
3c02b8e
style(network): format coverage module declaration
seonghobae Aug 22, 2026
ed6aa42
test(network): close duplicate coverage branch gaps
seonghobae Aug 22, 2026
dc303b8
Merge PR #204 current head into locateNodes exchange
seonghobae Aug 22, 2026
fde30a5
test(network): reject forbidden WebSocket close codes
seonghobae Aug 22, 2026
f9f31cc
fix(network): validate WebSocket close status codes
seonghobae Aug 22, 2026
31061c4
revert(network): restore full WebSocket transport source
seonghobae Aug 22, 2026
21df42e
fix(network): reject forbidden WebSocket close codes
seonghobae Aug 22, 2026
e07aaf0
fix(network): validate public WebSocket close frames
seonghobae Aug 22, 2026
d6231ce
style(network): apply canonical Rust formatting
seonghobae Aug 22, 2026
bc280a2
fix(network): route public handshake through validated state
seonghobae Aug 22, 2026
2496a66
test(network): require WebSocket plan debug redaction
seonghobae Aug 22, 2026
7ee53f3
test(network): exercise WebSocket plan debug boundary
seonghobae Aug 22, 2026
3420aa4
test(network): format WebSocket debug regression
seonghobae Aug 22, 2026
65477ac
fix(network): redact WebSocket client nonce in debug output
seonghobae Aug 22, 2026
da4e64f
Merge PR #204 current head into locateNodes exchange
seonghobae Aug 22, 2026
1d873b1
fix(network): adapt locateNodes exchange to validated WebSocket exports
seonghobae Aug 22, 2026
b5fb68a
test(network): preserve deterministic Pong write fault injection
seonghobae Aug 22, 2026
02b43e9
test(network): reject reserved WebSocket close code 1004
seonghobae Aug 22, 2026
11faa7f
fix(network): reject reserved WebSocket close code 1004
seonghobae Aug 22, 2026
e9dda45
style(network): apply canonical WebSocket close formatting
seonghobae Aug 22, 2026
e53a35e
merge(network): restack locateNodes exchange on current frame transport
seonghobae Aug 22, 2026
3ba836a
test(network): require live locateNodes authority binding
seonghobae Aug 25, 2026
b22a371
test(network): format live authority regression
seonghobae Aug 25, 2026
082a8e2
feat(network): bind live BiDi nodes to current authority
seonghobae Aug 25, 2026
217e070
refactor(network): bundle current BiDi authority input
seonghobae Aug 25, 2026
8ead5b9
test(network): pass bundled live BiDi authority
seonghobae Aug 25, 2026
6a82023
test(network): cover live bind exchange failures
seonghobae Aug 25, 2026
79fd480
style(network): apply canonical exchange regression formatting
seonghobae Aug 25, 2026
437237b
test(network): simplify BiDi failure fixture type
seonghobae Aug 26, 2026
f31e129
test(network): apply canonical rustfmt to BiDi failure fixture
seonghobae Aug 26, 2026
400e7a4
test(network): reject reused BiDi frame masks
seonghobae Aug 26, 2026
bdb3efe
test(network): canonicalize mask freshness regressions
seonghobae Aug 26, 2026
4f03c5f
fix(network): reject reused BiDi frame masks
seonghobae Aug 26, 2026
b6f17ec
style(network): apply canonical BiDi mask formatting
seonghobae Aug 26, 2026
f7c1cec
test(network): reject WebSocket mask reuse across frames
seonghobae Aug 26, 2026
51a42de
test(network): apply canonical mask-reuse formatting
seonghobae Aug 26, 2026
a3d6628
test(network): reproduce WebSocket mask reuse on live stream
seonghobae Aug 26, 2026
019f6af
test(network): apply canonical mask-reuse RED formatting
seonghobae Aug 26, 2026
d6d75c6
test(network): classify zero BiDi exchange budget
seonghobae Aug 26, 2026
c26030c
style(network): apply canonical zero-budget regression formatting
seonghobae Aug 26, 2026
0007fc5
fix(network): enforce initial BiDi exchange deadline
seonghobae Aug 26, 2026
225964d
test(network): align zero-budget exchange classification
seonghobae Aug 26, 2026
151b9fd
test(network): cover initial BiDi command write failure
seonghobae Aug 26, 2026
49a8143
fix(network): reject reused WebSocket masking keys
seonghobae Aug 26, 2026
318c9dd
test(network): satisfy strict mask-reuse contracts
seonghobae Aug 26, 2026
14e55da
test(network): apply canonical mask-reuse formatting
seonghobae Aug 26, 2026
dfff508
chore(network): retain current frame transport in locateNodes stack
seonghobae Aug 26, 2026
6d8d892
test(network): retain WebSocket mask reuse regression in locateNodes …
seonghobae Aug 26, 2026
c6c5480
chore(network): reconstruct locateNodes stack on current frame transport
seonghobae Aug 26, 2026
93e5ec9
test(network): cover fail-closed Pong rejection paths
seonghobae Aug 26, 2026
d769977
test(network): apply canonical pong rustfmt
seonghobae Aug 26, 2026
ac0209d
chore(network): refresh locateNodes stack on current frame transport
seonghobae Aug 26, 2026
9f0b9fb
test(network): pin locateNodes coverage shape
seonghobae Aug 26, 2026
8ee1712
fix(network): stabilize locateNodes binding coverage
seonghobae Aug 26, 2026
cd3734e
test(network): require in-wrapper binding conversion
seonghobae Aug 26, 2026
6400d2e
fix(network): keep binding conversion in exercised wrapper
seonghobae Aug 26, 2026
54db15a
test(network): reproduce WebSocket nonce debug disclosure
seonghobae Aug 26, 2026
3ade84e
test(network): exercise binding wrapper in unit coverage crate
seonghobae Aug 26, 2026
ba5b9be
fix(network): redact WebSocket nonce diagnostics
seonghobae Aug 26, 2026
0c8b39b
chore(stack): join current WebSocket opening-write parent
seonghobae Aug 26, 2026
853808e
test(network): cover successful binding wrapper in unit crate
seonghobae Aug 26, 2026
b692162
test(network): register binding wrapper unit coverage
seonghobae Aug 26, 2026
18f2dff
test(network): apply canonical unit coverage rustfmt
seonghobae Aug 26, 2026
5e0eab2
test(network): exercise locateNodes initial write rejection in integr…
seonghobae Aug 26, 2026
8385467
test(network): prove WebSocket client nonce Debug redaction
seonghobae Aug 26, 2026
d115037
test(network): apply canonical locateNodes integration rustfmt
seonghobae Aug 26, 2026
22bf20e
fix(network): redact WebSocket client nonce Debug
seonghobae Aug 26, 2026
24d52f6
test(network): reject raw WebSocket request Debug exposure
seonghobae Aug 26, 2026
edd8ca3
fix(network): preserve WebSocket nonce redaction across frame stack
seonghobae Aug 26, 2026
46380dd
merge(network): reconstruct locateNodes exchange on current frame tra…
seonghobae Aug 26, 2026
370594c
test(network): require fragmented BiDi response reassembly
seonghobae Aug 26, 2026
87a9171
fix(network): reassemble bounded fragmented BiDi responses
seonghobae Aug 26, 2026
3e53784
fix(network): preserve consuming BiDi command admission
seonghobae Aug 26, 2026
1a3d80a
test(network): keep fragmented BiDi response semantics current
seonghobae Aug 26, 2026
0e79777
test(network): exercise Ping between BiDi response fragments
seonghobae Aug 26, 2026
8e061d6
style(network): apply canonical fragmentation test formatting
seonghobae Aug 26, 2026
95d09f2
test(network): cover fragmented locateNodes boundaries
seonghobae Aug 26, 2026
1591495
test(network): fail closed on impossible frame marker
seonghobae Aug 26, 2026
4c1558d
test(network): remove vacuous matches coverage branch
seonghobae Aug 26, 2026
f653c8e
test(network): cover fragmented locateNodes unit branches
seonghobae Aug 26, 2026
3e71e63
style(network): apply canonical rustfmt to BiDi coverage tests
seonghobae Aug 26, 2026
f537a4d
test(network): reject second text message during BiDi fragmentation
seonghobae Aug 26, 2026
2f1ff59
style(network): apply canonical rustfmt to fragmentation regression
seonghobae Aug 26, 2026
25b7734
test(network): bound locateNodes response fragmentation
seonghobae Aug 26, 2026
ce027d5
style(network): apply canonical rustfmt to fragmentation budget regre…
seonghobae Aug 26, 2026
9fa4e46
fix(network): bound locateNodes response fragment count
seonghobae Aug 26, 2026
3e50431
feat(network): export locateNodes response fragment budget
seonghobae Aug 26, 2026
078648b
fix(network): remove unreachable first-fragment error edges
seonghobae Aug 26, 2026
02952da
test(network): redact WebSocket masking-key diagnostics
seonghobae Aug 26, 2026
5fe9db9
fix(network): redact public WebSocket masking-key diagnostics
seonghobae Aug 26, 2026
c051c15
fix(network): expose redacted WebSocket mask-key wrapper
seonghobae Aug 26, 2026
cbf3dcc
fix(network): route mask entropy through redacted public type
seonghobae Aug 26, 2026
400ce7b
fix(network): preserve redacted WebSocket mask-key boundary
seonghobae Aug 26, 2026
f10670c
fix(network): preserve redacted mask-key export in locateNodes stack
seonghobae Aug 26, 2026
40335f1
fix(network): preserve redacted mask-key transport in locateNodes stack
seonghobae Aug 26, 2026
f94b2ec
test(network): preserve mask-key redaction regression in locateNodes …
seonghobae Aug 26, 2026
c95c1b7
merge(network): reconstruct locateNodes stack on current frame transport
seonghobae Aug 26, 2026
b7e0287
test(network): prove legacy handshake debug redacts nonce
seonghobae Aug 26, 2026
01e6ae4
test(network): apply canonical nonce-redaction regression formatting
seonghobae Aug 26, 2026
9a6ccf8
fix(network): redact legacy websocket handshake debug
seonghobae Aug 26, 2026
34f9065
test(network): reproduce masking history lifetime ceiling
seonghobae Aug 26, 2026
d98f97c
test(network): format masking-key capacity regression
seonghobae Aug 26, 2026
608abfe
fix(network): remove WebSocket masking-key lifetime cap
seonghobae Aug 26, 2026
e8e7eff
test(network): align consecutive mask-reuse evidence
seonghobae Aug 26, 2026
245ae04
test(network): exercise non-global mask reuse on wire
seonghobae Aug 26, 2026
a77e1ce
test(network): align Pong mask-reuse regression
seonghobae Aug 26, 2026
b47c4fd
test(network): satisfy strict Clippy in redaction regression
seonghobae Aug 26, 2026
9e550a4
style(network): apply canonical Rust formatting
seonghobae Aug 26, 2026
c1bc7e7
test(network): remove duplicate nonce-redaction unit
seonghobae Aug 26, 2026
bfca50e
merge(network): join current frame-transport parent
seonghobae Aug 26, 2026
b68e0f6
fix(network): preserve current frame-transport parent
seonghobae Aug 26, 2026
9c165cc
fix(network): bound Pong entropy before deadline
seonghobae Aug 26, 2026
73eb00f
test(network): admit non-adjacent mask collision
seonghobae Aug 26, 2026
160620c
fix(network): permit non-adjacent mask collisions
seonghobae Aug 26, 2026
cdfdc89
test(network): specify adjacent mask reuse diagnostic
seonghobae Aug 26, 2026
dec5092
fix(network): clarify adjacent mask reuse diagnostic
seonghobae Aug 26, 2026
df321a8
test(network): align mask reuse regression with adjacent-key contract
seonghobae Aug 26, 2026
863f9ab
test(network): restore locateNodes coverage
seonghobae Aug 26, 2026
6f2c3f1
test(network): remove uncovered deadline guard
seonghobae Aug 26, 2026
ff92b8a
test(network): remove timing-sensitive deadline case
seonghobae Aug 26, 2026
65fb36a
test(network): avoid socket-race coverage dependency
seonghobae Aug 26, 2026
f801395
fix(network): bound accumulated BiDi response size
seonghobae Aug 26, 2026
e068efd
test(network): deterministically cover read deadline
seonghobae Aug 26, 2026
fc556f3
fix(network): preserve current bind contract
seonghobae Aug 26, 2026
a5ddb50
style(network): format deadline coverage
seonghobae Aug 26, 2026
f427aa6
test(network): execute deadline guard reader
seonghobae Aug 26, 2026
a4240df
Merge pull request #204 from ContextualWisdomLab/feat/webdriver-bidi-…
seonghobae Aug 26, 2026
6c5ef5e
Merge pull request #205 from ContextualWisdomLab/feat/webdriver-bidi-…
seonghobae Aug 26, 2026
364ba7a
Merge pull request #231 from ContextualWisdomLab/feat/webdriver-bidi-…
seonghobae Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Added

- Bounded RFC 6455 frame transport on the established WebDriver BiDi stream: client text frames require a caller-supplied fresh mask key and are masked on the wire, server frames are required to be unmasked, reserved bits/opcodes and nonminimal lengths fail closed, and each frame is limited by payload and monotonic-I/O ceilings; this remains frame transport only and does not assemble BiDi messages or grant browser/Agent authority.
- Bounded WebDriver BiDi `browsingContext.locateNodes` exchange over the established peer-verified WebSocket stream: the exact consumed command is written as one masked text frame, one end-to-end deadline and a 64-frame Ping/Pong budget bound the exchange, each Pong requires a fresh caller-supplied masking key, and only one final bounded text response may pass raw-document admission, exact command correlation, and node-result admission; fragmentation, binary/continuation/close shapes, exhausted entropy, and over-budget control traffic fail closed without granting browser, origin, policy, typed-input, or Agent authority.
- Bounded RFC 6455 WebDriver BiDi opening-response validation on the exact peer-verified stream: it admits only HTTP/1.1 `101`, case-insensitive `Upgrade`/`Connection` tokens, and the client-key-correlated `Sec-WebSocket-Accept` value within monotonic time and header-size ceilings; it restores blocking mode and still does not implement WebSocket frames or grant browser/Agent authority.
- Bounded WebDriver BiDi loopback TCP transport that consumes one exact no-DNS connect target, retries only explicitly recoverable local transport failures within repository timeout and attempt ceilings, exposes the stream only after operating-system peer inspection and exact peer verification, supports a consuming handoff of the original stream with typed credential-free peer/session/TLS and bounded-attempt evidence, preserves typed causal errors, and performs no DNS, proxy/PAC, process authentication, TLS, WebSocket, BiDi message, browser-action, or Agent-authority step.
- Exact WebDriver BiDi socket-peer verification that consumes an approved no-DNS connect target, requires the observed IP address and port to match exactly, preserves the TLS requirement and exact correlated session id, and remains inert metadata that does not authenticate an OS process, does not negotiate TLS, perform a WebSocket handshake, or grant Agent authority.
- Explicit no-DNS WebDriver BiDi loopback connection targets that derive exact IPv4/IPv6 loopback `SocketAddr` metadata from a session-correlated endpoint, reject `localhost` as requiring separately trusted name resolution, preserve the TLS requirement and exact session id, perform no socket I/O, and grant no Agent authority.
Expand Down Expand Up @@ -53,6 +56,19 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Changed

- Made WebDriver BiDi response-fragment admission reject an already oversized
buffer without subtraction underflow or a production panic.

- Restored exact locateNodes-stack coverage without introducing an uncovered
test-only pattern-guard branch by exercising the deadline callback
without weakening its no-late-entropy assertion and removing an unreachable
private legacy handshake `Debug` implementation superseded by the redacting
wrapper.
- Removed a redundant 20-microsecond loopback deadline assertion whose error
variant depended on host scheduling; deterministic unit-clock tests retain
the shrinking end-to-end budget contract.
- Kept the no-late-entropy deadline gate as one result chain so exact coverage
does not require recreating an expired-clock race through a real socket.
- Separated logical origin authority from resolved network destination authority; an origin grant no longer implies permission to connect to every resolver result.
- Separated resolved-address authorization from direct transport evidence; an approved IP now becomes a usable stream only after the operating system reports the exact requested IP and port.
- Separated exact TCP peer proof from authenticated TLS service identity; an observed peer becomes an authenticated HTTPS stream only after explicit-root, fixed-time, SAN-bound WebPKI verification over that same stream.
Expand Down
13 changes: 13 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions crates/originweave-network/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ homepage.workspace = true
publish = false

[dependencies]
base64 = "0.22.1"
originweave-core = { path = "../originweave-core" }
originweave-destination = { path = "../originweave-destination" }
sha1 = "0.10.6"

[lints]
workspace = true
38 changes: 34 additions & 4 deletions crates/originweave-network/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,33 @@
//! It also bridges a session-correlated WebDriver BiDi loopback target from
//! `originweave-core` into one bounded exact TCP connection, binds an RFC 6455
//! opening request to that verified plain stream, and can write that exact request
//! under one bounded deadline without claiming a completed WebSocket handshake or
//! granting browser, WebSocket, TLS, policy, or Agent authority.
//! under one bounded deadline, validate its bounded RFC 6455 opening response,
//! carry one bounded frame at a time, and bind one exact `locateNodes` command to
//! its bounded correlated response without granting browser, WebSocket, TLS,
//! policy, or Agent authority.

#![forbid(unsafe_code)]
#![deny(missing_docs)]

mod connection;
mod webdriver_bidi_connection;
mod webdriver_bidi_locate_nodes_exchange;
#[cfg(test)]
mod webdriver_bidi_locate_nodes_exchange_transport_failure_tests;
#[cfg(test)]
mod webdriver_bidi_locate_nodes_exchange_unit_coverage_tests;
mod webdriver_bidi_websocket_control;
#[cfg(test)]
#[allow(clippy::expect_used)]
mod webdriver_bidi_websocket_coverage_tests;
#[cfg(test)]
#[allow(clippy::expect_used)]
mod webdriver_bidi_websocket_debug_tests;
#[path = "webdriver_bidi_websocket_validated.rs"]
mod webdriver_bidi_websocket_handshake;
#[path = "webdriver_bidi_websocket_raw_redacted.rs"]
mod webdriver_bidi_websocket_handshake_raw;
mod webdriver_bidi_websocket_mask_key;

pub use connection::{
ConnectionPlan, DirectTcpConnection, MAX_CONNECT_TIMEOUT, MAX_CONNECTION_ATTEMPTS,
Expand All @@ -24,8 +42,20 @@ pub use webdriver_bidi_connection::{
WebDriverBiDiTcpConnection, WebDriverBiDiTcpConnectionError,
WebDriverBiDiTcpConnectionEvidence, WebDriverBiDiTcpConnectionPlan,
};
pub use webdriver_bidi_locate_nodes_exchange::{
MAX_WEBDRIVER_BIDI_CONTROL_FRAMES_PER_EXCHANGE,
MAX_WEBDRIVER_BIDI_RESPONSE_FRAGMENTS_PER_EXCHANGE, WebDriverBiDiLocateNodesExchangeError,
};
pub use webdriver_bidi_websocket_handshake::{
WebDriverBiDiWebSocketEstablished, WebDriverBiDiWebSocketHandshakePlan,
WebDriverBiDiWebSocketOpeningRequestSent,
};
pub use webdriver_bidi_websocket_handshake_raw::{
MAX_WEBSOCKET_FRAME_PAYLOAD_SIZE, MAX_WEBSOCKET_FRAME_TIMEOUT,
MAX_WEBSOCKET_OPENING_RESPONSE_SIZE, MAX_WEBSOCKET_OPENING_RESPONSE_TIMEOUT,
MAX_WEBSOCKET_OPENING_WRITE_TIMEOUT, WebDriverBiDiWebSocketClientKey,
WebDriverBiDiWebSocketHandshakeError, WebDriverBiDiWebSocketHandshakePlan,
WebDriverBiDiWebSocketOpeningRequestSent, WebDriverBiDiWebSocketOpeningWriteError,
WebDriverBiDiWebSocketFrame, WebDriverBiDiWebSocketFrameError,
WebDriverBiDiWebSocketHandshakeError, WebDriverBiDiWebSocketHandshakeResponseError,
WebDriverBiDiWebSocketOpeningWriteError,
};
pub use webdriver_bidi_websocket_mask_key::WebDriverBiDiWebSocketMaskKey;
Loading
Loading