ZREQ-CORE // ENGINEERING REPORT

// module map · command surface · FFI exports · test status

Home Port Report Source
0.1.5version
3crate-types (rlib · staticlib · cdylib)
149engine commands
4C-ABI exports
92.2%Postman port coverage

zreq-core is in active development. The figures on this page are derived from the crate source as it stands today (Cargo.toml, src/lib.rs, src/ffi.rs, PORT_REPORT.md): version, crate-types, the dotted commands matched in Engine::invoke, the exported C symbols, and the hand-assessed Postman coverage. The "planned" column lists work that is not yet implemented — it is a roadmap, not a claim of coverage.

Module map

modulerole todayplanned
lib (Engine)one dotted command surface via Engine::invoke; event sink; id allocation; workspace + history persistencemore dispatch coverage as modules grow
modelworkspace · collection · folder · request · environment · variable · auth · body · cookie typespath-variable rows, richer secret handling
httpprepare (vars + path vars + query + auth + body → wire form) always on; send over reqwest blocking behind net, with per-request timeoutinteractive mid-flight cancel, streaming responses
authbasic · bearer · api-key · oauth2 (attach + client_credentials/password/refresh token fetch); signed digest (RFC 2617) · oauth1 (RFC 5849) · awsv4 · hawk; inheritance walk in libntlm (connection-bound handshake), oauth2 auth-code redirect (host)
cryptodependency-free MD5 · SHA-1 · SHA-256 · HMAC, pinned to RFC/FIPS test vectors, for the auth signersnothing — frozen primitives
vars{{var}} substitution with collection > env > global precedence; dynamic {{$guid}}/{{$timestamp}}/… generators; data-row overlay for the runnersecret masking surface
store / historynamed multi-workspace JSON persistence (dirs paths) with per-workspace history; capped newest-first request log that captures the full request for one-click replayindexing, search
settingsPostman Settings (settings.get/update/reset/path): TLS verification, redirects, default timeout, max response size, proxy — drive every send; theme/appearance persistedper-host client certificates
codegensnippet generation across 16 targets: curl · wget · raw http · fetch · Node · python requests · httpie · Go · Java · Kotlin · C# · PowerShell · PHP · Ruby · Rust reqwest · Swift URLSessionmore niche targets
importcurl · Postman Collection v2.1 · OpenAPI 3 (paths + params + body + $ref resolution + schema examples) · HAR 1.2 · Insomnia v4 · Bruno .bru · HTTPie import; export to Postman v2.1 (body/auth/scripts) · HAR · OpenAPI · BrunoOpenAPI securitySchemes→auth
runnercollection runner (runner.run): depth-first request plan with resolved auth + CSV/JSON data-file iterations, each item stamped with its offset from the run's first send; plus the loop re-fire window (runner.loop) — intersect a [from_ms, to_ms) loop region with those regions and re-send only what it covers, in parallel over one pooled client when chain.plan shows no producer→consumer edge with both ends inside the window, otherwise in listed order with the forcing edges reportedparallel iterations, request delays
ws (feature)WebSocket send-and-collect (ws.exchange) over tungstenite (sync, native-tls for wss)persistent interactive streaming (host)
grpc (feature)unary gRPC (grpc.call) via gRPC-Web framing over reqwest; runtime .proto compile (protox) + dynamic JSON<->protobuf (prost-reflect)streaming RPCs (host)
scriptnative pm.* subset: assertions (status · code · responseTime · body-include · header) + pm.*.set() variable writesnothing — no JS sandbox by design (durable-deps rule)
ffiC ABI: zrq_init · zrq_invoke · zrq_set_event_callback · zrq_string_freericher event payloads
tauri_plugin (feature tauri)Tauri v2 command (zrq_invoke) + setup; events on zrq-eventmountable webui packaging
fuzzloopSchema-Feedback Fuzzer (fuzz.explore) — closed-loop novelty-guided black-box fuzzer over the static corpus, keyed on each response’s inferred schema fingerprintcorpus minimisation
chainplanAuto-Chain Dependency Planner (chain.plan) — infers producer→consumer data-flow across a collection from pm.*.set() writes vs {{var}} reads, and orders the runcycle repair suggestions
sessionCausal Session Replay (session.record · list · remove · clear · provenance · blastradius · counterfactual) — value-provenance mining and counterfactual replay over a recorded runcross-session diff
corsBrowser CORS Preflight Simulator (cors.simulate) — the WHATWG Fetch CORS protocol offline: simple-vs-preflight classification, synthesised OPTIONS, Allow-Methods/Headers check, exposed headers, max-agecredentialed-wildcard lint
cachesimHTTP Cache-Behaviour Simulator (cache.simulate) — RFC 9111 storability, freshness, age and the serve/revalidate verdict for a request/response pairVary-key modelling
cookiejar · ratelimit · responsesThe response inspectors the GUI surfaces: the cookie jar, parsed rate-limit headers, and body extractorsmore header families
assertion · schema · schemainfer · schemagen · jsonpath · jmespath · diff · lint · scriptlint · explain · sla · har_stats · openapi_diffThe extraction, validation and analysis surface — JSONPath/JMESPath queries, JSON Schema validate/infer/generate, structural diff, collection and script lints, request explain, SLA checks, HAR statistics, OpenAPI diff
graphql · soap · sse · wsframe · protowire · proto · asyncapi · hypermedia · negotiate · conditional · chunked · retry · mockProtocol modelling beside the transports — GraphQL and SOAP envelopes, SSE and WebSocket frame decoding, protobuf wire decode, AsyncAPI, hypermedia link following, content negotiation, conditional requests, chunked transfer, retry policy, and the offline mock responder
digest · encoding · jwt · fuzzThe self-contained primitive commands: message digests and HMAC (hash.compute, hmac.compute), byte-encoding conversion (encoding.convert), JWT decode/encode with HMAC verification, and security/robustness fuzz-vector generation (request.fuzz)
effect · unwind · entity · coherenceWrite Effect Attribution (effect.attribute/effect.intents) with the reversible-fuzzing inverse-verb table and compensation plan behind it; cross-endpoint entity coherence (entity.coherence/entity.views) and cross-representation coherence (repr.*)
peerThe client half of the GUI Automation Bus inside the engine — peer.list · peer.get · peer.verbs · peer.call · peer.step
httpsig · pkce · secret · dotenv · envmerge · template · dataset · formdata · binfmt · xmlconvHTTP message signatures, OAuth PKCE, secret detection, .env import/export, environment merge, templating, data-file iteration, multipart form data, binary format sniffing and XML↔JSON conversion

Build surfaces

The crate declares crate-type = ["rlib", "staticlib", "cdylib"]. The rlib links natively into Rust/Tauri hosts; the staticlib/cdylib expose the C ABI for non-Rust hosts (header include/zreq_core.h, hand-written, no cbindgen). The default net feature pulls in reqwest (blocking + native-tls); building --no-default-features yields a pure core with zero TLS/network deps that compiles in headless CI — request preparation and code generation still work without it. The optional tauri feature adds the Tauri v2 command layer.

Verification

The crate carries in-source unit and integration tests across the engine and its modules: the command surface (version reporting, collection/request CRUD, auth inheritance, an import-curl flow, unknown-command error tagging), plus module-level tests in vars (precedence, unknown-left-verbatim, dynamic guid shape), http (query merge + content-type), script (status / body-include / header assertions), import and store. Tests for the pure core run without network access and pass identically in a headless Linux CI; the http::send transport is feature-gated so the default test path needs no live server. The test scripting layer is an honest subset — it recognizes the common pm.* idioms and reports unrecognized assertions as skipped rather than silently passing.