Skip to content

Phase 8a: Transport Adapters #22

Description

@Wahbeh-Mohammad

Ship the concrete Transport implementations and the packages they need — the first code that actually puts bytes
on the wire.

Scope — five packages

  • @dexpace/transport-fetch — zero external dependencies. No proxy option at all (an absent option, not a
    silently-ignored one); close() is a sanctioned no-op since it owns no persistent resource.
  • @dexpace/transport-undici — exactly one external dependency (undici). Owns a real Pool/Client/Agent,
    so it carries SEAM-14's real close behavior, and it is the only transport with proxy support
    (ProxyAgent, 407 dispatch, challengeHandler, TRANSPORT-30).
  • @dexpace/transport-shared — header-mapping helpers both transports need identically.
  • @dexpace/body-file — the concrete fileBody() factory with real node:fs validation, recognized by both
    transports via body.kind === 'file' structural narrowing, never a cross-package instanceof.
  • Conformance suite closing SEAM-12 (concurrent calls, TRANSPORT-29), SEAM-30 (orphaned-response cleanup,
    TRANSPORT-9), TRANSPORT-11's header-drop pass, and NFR-15's User-Agent actually reaching the wire.
  • NFR-2's transport half.

Spec refs

Product spec §17 (TRANSPORT-*). sdk-design: §3.2 — a single Promise primitive collapses the JVM reference's
SEAM-11/SEAM-16 fragmentation.

Dependencies

Phases 0–7b. Independent of 8b.

Docs

  • Design: docs/superpowers/specs/2026-07-28-phase8a-transport-design.md
  • Plan: docs/superpowers/plans/2026-07-28-phase8a-transport.md
  • Segmentation: docs/superpowers/specs/2026-07-28-phase8-segmentation-design.md
  • Validation prompt: docs/validation-prompts/phase8a-transport-validation-prompt.md

Notes

TRANSPORT-28's kernel-level zero-copy dispatch (SHOULD) has no Node analogue — neither fetch nor undici
exposes a sendfile-shaped API for outbound bodies. Ledgered as a collapse, not chased.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions