Summary
Perry's node:http manifest currently covers the main server/client classes and request helpers, but it omits a current Node export tail that packages use for feature detection, header validation, proxy setup, and newer WebSocket/DOM compatibility:
http.globalAgent
http.maxHeaderSize
http.validateHeaderName(name[, label])
http.validateHeaderValue(name, value)
http.setMaxIdleHTTPParsers(max)
http.setGlobalProxyFromEnv([proxyEnv])
http.OutgoingMessage
http.WebSocket
http.CloseEvent
http.MessageEvent
http._connectionListener
No existing issue was found for node:http globalAgent maxHeaderSize validateHeaderName setGlobalProxyFromEnv WebSocket CloseEvent.
Evidence
Current checkout:
target/release/perry --version -> perry 0.5.1044
target/release/perry --print-api-manifest -> 95 modules
- Manifest top-level
http rows are currently Agent, ClientRequest, IncomingMessage, METHODS, STATUS_CODES, Server, ServerResponse, createServer, get, and request; the helper/export tail above is absent.
Node v25.9.0 export-shape probe:
import * as http from "node:http";
for (const name of [
"globalAgent",
"maxHeaderSize",
"validateHeaderName",
"validateHeaderValue",
"setMaxIdleHTTPParsers",
"setGlobalProxyFromEnv",
"WebSocket",
"CloseEvent",
"MessageEvent",
"OutgoingMessage",
"_connectionListener",
]) {
const value = (http as any)[name];
console.log(name, typeof value, value && value.name ? value.name : "");
}
Output:
globalAgent object
maxHeaderSize number
validateHeaderName function validateHeaderName
validateHeaderValue function validateHeaderValue
setMaxIdleHTTPParsers function setMaxIdleHTTPParsers
setGlobalProxyFromEnv function setGlobalProxyFromEnv
WebSocket function WebSocket
CloseEvent function CloseEvent
MessageEvent function MessageEvent
OutgoingMessage function OutgoingMessage
_connectionListener function connectionListener
Local source/test context:
docs/runtime-parity-gaps.md lists http.validateHeaderName, http.validateHeaderValue, http.setMaxIdleHTTPParsers, http.setGlobalProxyFromEnv, http.globalAgent, and http.maxHeaderSize as gap rows.
test-files/test_parity_http.ts contains generated probes for several of these names, but the curated test-parity/node-suite/http directory has only 8 fixtures and does not cover this export tail end to end.
- Source search did not find manifest entries for these top-level exports in
crates/perry-api-manifest/src/entries.rs.
Suggested PR boundary
Make this a focused node:http module-helper/export cut:
- Add module-level export shape for the deterministic helper functions and constants/objects:
globalAgent, maxHeaderSize, validateHeaderName, validateHeaderValue, setMaxIdleHTTPParsers, and setGlobalProxyFromEnv.
- Reconcile
OutgoingMessage with the existing ServerResponse/write-head implementation so feature checks and direct construction match Node where feasible.
- Decide whether
WebSocket, CloseEvent, and MessageEvent should alias Perry's existing global/web implementations or be intentionally excluded from the Node compatibility manifest until supported.
- Add focused node-suite fixtures for module export shape, header validation errors,
maxHeaderSize, globalAgent fields, and no-op/return behavior for parser/proxy helpers.
Acceptance sketch
import { validateHeaderName, validateHeaderValue, globalAgent, maxHeaderSize } from "node:http" has Node-compatible module-instantiation behavior.
- Valid/invalid header-name and header-value fixtures match Node error names/codes for covered cases.
http.globalAgent exposes Node-compatible Agent shape for basic field reads.
http.setMaxIdleHTTPParsers() and http.setGlobalProxyFromEnv() have Node-compatible return/error behavior for deterministic inputs.
http.WebSocket, http.CloseEvent, http.MessageEvent, and http.OutgoingMessage are either implemented/aliased with Node-compatible shape or explicitly excluded from the claimed Node manifest with tracking rationale.
Summary
Perry's
node:httpmanifest currently covers the main server/client classes and request helpers, but it omits a current Node export tail that packages use for feature detection, header validation, proxy setup, and newer WebSocket/DOM compatibility:http.globalAgenthttp.maxHeaderSizehttp.validateHeaderName(name[, label])http.validateHeaderValue(name, value)http.setMaxIdleHTTPParsers(max)http.setGlobalProxyFromEnv([proxyEnv])http.OutgoingMessagehttp.WebSockethttp.CloseEventhttp.MessageEventhttp._connectionListenerNo existing issue was found for
node:http globalAgent maxHeaderSize validateHeaderName setGlobalProxyFromEnv WebSocket CloseEvent.Evidence
Current checkout:
target/release/perry --version->perry 0.5.1044target/release/perry --print-api-manifest-> 95 moduleshttprows are currentlyAgent,ClientRequest,IncomingMessage,METHODS,STATUS_CODES,Server,ServerResponse,createServer,get, andrequest; the helper/export tail above is absent.Node v25.9.0 export-shape probe:
Output:
Local source/test context:
docs/runtime-parity-gaps.mdlistshttp.validateHeaderName,http.validateHeaderValue,http.setMaxIdleHTTPParsers,http.setGlobalProxyFromEnv,http.globalAgent, andhttp.maxHeaderSizeas gap rows.test-files/test_parity_http.tscontains generated probes for several of these names, but the curatedtest-parity/node-suite/httpdirectory has only 8 fixtures and does not cover this export tail end to end.crates/perry-api-manifest/src/entries.rs.Suggested PR boundary
Make this a focused
node:httpmodule-helper/export cut:globalAgent,maxHeaderSize,validateHeaderName,validateHeaderValue,setMaxIdleHTTPParsers, andsetGlobalProxyFromEnv.OutgoingMessagewith the existingServerResponse/write-head implementation so feature checks and direct construction match Node where feasible.WebSocket,CloseEvent, andMessageEventshould alias Perry's existing global/web implementations or be intentionally excluded from the Node compatibility manifest until supported.maxHeaderSize,globalAgentfields, and no-op/return behavior for parser/proxy helpers.Acceptance sketch
import { validateHeaderName, validateHeaderValue, globalAgent, maxHeaderSize } from "node:http"has Node-compatible module-instantiation behavior.http.globalAgentexposes Node-compatible Agent shape for basic field reads.http.setMaxIdleHTTPParsers()andhttp.setGlobalProxyFromEnv()have Node-compatible return/error behavior for deterministic inputs.http.WebSocket,http.CloseEvent,http.MessageEvent, andhttp.OutgoingMessageare either implemented/aliased with Node-compatible shape or explicitly excluded from the claimed Node manifest with tracking rationale.