tywrap 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +15 -5
  2. package/dist/core/annotation-parser.d.ts.map +1 -1
  3. package/dist/core/annotation-parser.js.map +1 -1
  4. package/dist/core/emit-call.d.ts.map +1 -1
  5. package/dist/core/emit-call.js +1 -1
  6. package/dist/core/emit-call.js.map +1 -1
  7. package/dist/core/generator.d.ts.map +1 -1
  8. package/dist/core/generator.js +40 -9
  9. package/dist/core/generator.js.map +1 -1
  10. package/dist/dev.d.ts.map +1 -1
  11. package/dist/dev.js +1 -3
  12. package/dist/dev.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/runtime/base-bridge.d.ts +57 -0
  17. package/dist/runtime/base-bridge.d.ts.map +1 -0
  18. package/dist/runtime/base-bridge.js +72 -0
  19. package/dist/runtime/base-bridge.js.map +1 -0
  20. package/dist/runtime/frame-codec.d.ts +111 -0
  21. package/dist/runtime/frame-codec.d.ts.map +1 -0
  22. package/dist/runtime/frame-codec.js +352 -0
  23. package/dist/runtime/frame-codec.js.map +1 -0
  24. package/dist/runtime/http-transport.d.ts +11 -1
  25. package/dist/runtime/http-transport.d.ts.map +1 -1
  26. package/dist/runtime/http-transport.js +19 -0
  27. package/dist/runtime/http-transport.js.map +1 -1
  28. package/dist/runtime/http.d.ts +5 -12
  29. package/dist/runtime/http.d.ts.map +1 -1
  30. package/dist/runtime/http.js +6 -29
  31. package/dist/runtime/http.js.map +1 -1
  32. package/dist/runtime/index.d.ts +2 -2
  33. package/dist/runtime/index.d.ts.map +1 -1
  34. package/dist/runtime/index.js +1 -1
  35. package/dist/runtime/index.js.map +1 -1
  36. package/dist/runtime/node.d.ts +25 -19
  37. package/dist/runtime/node.d.ts.map +1 -1
  38. package/dist/runtime/node.js +19 -34
  39. package/dist/runtime/node.js.map +1 -1
  40. package/dist/runtime/pooled-transport.d.ts +21 -2
  41. package/dist/runtime/pooled-transport.d.ts.map +1 -1
  42. package/dist/runtime/pooled-transport.js +16 -0
  43. package/dist/runtime/pooled-transport.js.map +1 -1
  44. package/dist/runtime/pyodide-bootstrap-core.generated.d.ts.map +1 -1
  45. package/dist/runtime/pyodide-bootstrap-core.generated.js +1 -1
  46. package/dist/runtime/pyodide-bootstrap-core.generated.js.map +1 -1
  47. package/dist/runtime/pyodide-transport.d.ts +12 -1
  48. package/dist/runtime/pyodide-transport.d.ts.map +1 -1
  49. package/dist/runtime/pyodide-transport.js +20 -0
  50. package/dist/runtime/pyodide-transport.js.map +1 -1
  51. package/dist/runtime/pyodide.d.ts +5 -12
  52. package/dist/runtime/pyodide.d.ts.map +1 -1
  53. package/dist/runtime/pyodide.js +6 -29
  54. package/dist/runtime/pyodide.js.map +1 -1
  55. package/dist/runtime/rpc-client.d.ts +14 -1
  56. package/dist/runtime/rpc-client.d.ts.map +1 -1
  57. package/dist/runtime/rpc-client.js +68 -6
  58. package/dist/runtime/rpc-client.js.map +1 -1
  59. package/dist/runtime/subprocess-transport.d.ts +177 -3
  60. package/dist/runtime/subprocess-transport.d.ts.map +1 -1
  61. package/dist/runtime/subprocess-transport.js +526 -26
  62. package/dist/runtime/subprocess-transport.js.map +1 -1
  63. package/dist/runtime/transport.d.ts +141 -0
  64. package/dist/runtime/transport.d.ts.map +1 -1
  65. package/dist/runtime/transport.js +21 -0
  66. package/dist/runtime/transport.js.map +1 -1
  67. package/dist/types/index.d.ts +59 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/tywrap.d.ts.map +1 -1
  70. package/dist/tywrap.js +204 -149
  71. package/dist/tywrap.js.map +1 -1
  72. package/dist/utils/codec.d.ts +2 -0
  73. package/dist/utils/codec.d.ts.map +1 -1
  74. package/dist/utils/codec.js +205 -6
  75. package/dist/utils/codec.js.map +1 -1
  76. package/dist/version.js +1 -1
  77. package/package.json +7 -1
  78. package/runtime/__pycache__/_tywrap_conformance_chunking_fixtures.cpython-311.pyc +0 -0
  79. package/runtime/__pycache__/_tywrap_member_fixtures.cpython-311.pyc +0 -0
  80. package/runtime/__pycache__/_tywrap_w4_chunking_fixture.cpython-311.pyc +0 -0
  81. package/runtime/__pycache__/_tywrap_w5_request_chunking_fixture.cpython-311.pyc +0 -0
  82. package/runtime/__pycache__/_tywrap_w6_pool_chunking_fixture.cpython-311.pyc +0 -0
  83. package/runtime/__pycache__/frame_codec.cpython-311.pyc +0 -0
  84. package/runtime/__pycache__/safe_codec.cpython-311.pyc +0 -0
  85. package/runtime/__pycache__/tywrap_bridge_core.cpython-311.pyc +0 -0
  86. package/runtime/frame_codec.py +424 -0
  87. package/runtime/python_bridge.py +241 -42
  88. package/runtime/tywrap_bridge_core.py +152 -13
  89. package/src/core/annotation-parser.ts +2 -1
  90. package/src/core/emit-call.ts +1 -7
  91. package/src/core/generator.ts +50 -11
  92. package/src/dev.ts +1 -3
  93. package/src/index.ts +1 -0
  94. package/src/runtime/base-bridge.ts +106 -0
  95. package/src/runtime/frame-codec.ts +469 -0
  96. package/src/runtime/http-transport.ts +21 -1
  97. package/src/runtime/http.ts +7 -51
  98. package/src/runtime/index.ts +2 -6
  99. package/src/runtime/node.ts +42 -53
  100. package/src/runtime/pooled-transport.ts +25 -2
  101. package/src/runtime/pyodide-bootstrap-core.generated.ts +1 -1
  102. package/src/runtime/pyodide-transport.ts +22 -0
  103. package/src/runtime/pyodide.ts +7 -52
  104. package/src/runtime/rpc-client.ts +91 -7
  105. package/src/runtime/subprocess-transport.ts +629 -30
  106. package/src/runtime/transport.ts +169 -0
  107. package/src/types/index.ts +62 -0
  108. package/src/tywrap.ts +265 -162
  109. package/src/utils/codec.ts +245 -7
  110. package/src/version.ts +1 -1
@@ -13,7 +13,7 @@
13
13
  * @see https://github.com/bbopen/tywrap/issues/149
14
14
  */
15
15
  import { DisposableBase } from './bounded-context.js';
16
- import type { Transport } from './transport.js';
16
+ import { type Transport, type TransportCapabilities } from './transport.js';
17
17
  /**
18
18
  * Options for the SubprocessTransport.
19
19
  */
@@ -32,6 +32,26 @@ export interface SubprocessTransportOptions {
32
32
  restartAfterRequests?: number;
33
33
  /** Write queue timeout in milliseconds. Default: 30000ms */
34
34
  writeQueueTimeoutMs?: number;
35
+ /**
36
+ * Enable `tywrap-frame/1` chunked transport negotiation. When `true`, the
37
+ * transport spawns the bridge with the three `TYWRAP_TRANSPORT_*` env vars and,
38
+ * during {@link SubprocessTransport.init}, probes the bridge's `meta` for a
39
+ * `transport.supportsChunking` block. If the bridge advertises chunking,
40
+ * oversize responses are transparently reassembled from frames; otherwise
41
+ * behavior is unchanged and an oversize response still fails loud (no silent
42
+ * single-frame fallback). Default: `false` (no negotiation, legacy behavior).
43
+ *
44
+ * Subprocess-only (0.8.0). See docs/transport-framing.md.
45
+ */
46
+ enableChunking?: boolean;
47
+ /**
48
+ * Cap (UTF-8 bytes) on a single chunked RESPONSE reassembled in memory. A
49
+ * frame stream whose declared or accumulated payload exceeds this fails loud
50
+ * instead of buffering, so chunking cannot OOM the process before the codec's
51
+ * payload cap rejects the result. Should track the codec's `maxPayloadBytes`.
52
+ * Default: 10 MiB (matches the codec default).
53
+ */
54
+ maxReassemblyBytes?: number;
35
55
  }
36
56
  /**
37
57
  * Transport implementation for subprocess-based Python communication.
@@ -64,8 +84,31 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
64
84
  private readonly envOverrides;
65
85
  private readonly cwd;
66
86
  private readonly maxLineLength;
87
+ private readonly maxReassemblyBytes;
67
88
  private readonly restartAfterRequests;
68
89
  private readonly writeQueueTimeoutMs;
90
+ /** Whether `tywrap-frame/1` negotiation was requested by the caller. */
91
+ private readonly enableChunking;
92
+ /**
93
+ * Whether the bridge advertised chunking during the init meta probe. Only
94
+ * `true` after a successful negotiation; drives {@link capabilities} and the
95
+ * frame-aware stdout line ceiling.
96
+ */
97
+ private negotiatedChunking;
98
+ /**
99
+ * The per-frame UTF-8 byte ceiling actually agreed with the bridge:
100
+ * `min(maxLineLength, the bridge's advertised maxFrameBytes)`. Defaults to
101
+ * `maxLineLength` and is narrowed during negotiation, so REQUEST frames are
102
+ * never sized larger than the bridge said it will accept (the reference bridge
103
+ * echoes the requested value, but a custom bridge may advertise a smaller one).
104
+ */
105
+ private negotiatedFrameBytes;
106
+ /**
107
+ * Reassembles `tywrap-frame/1` response frames into single logical response
108
+ * lines. Constructed lazily once chunking is negotiated; per-id discard tracks
109
+ * timed-out/aborted streams so late frames cannot desync stdout.
110
+ */
111
+ private responseReassembler;
69
112
  private process;
70
113
  private processExited;
71
114
  private processError;
@@ -77,6 +120,16 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
77
120
  private needsRestart;
78
121
  private readonly writeQueue;
79
122
  private draining;
123
+ /**
124
+ * Per-logical-request write mutex (W5). When a request is chunked into
125
+ * `tywrap-frame/1` frames, all of that request's frames must reach stdin
126
+ * contiguously — no other request's frame (or single line) may interleave —
127
+ * or the Python reassembler would see frames from two ids mixed on one stream.
128
+ * `writeChunkedRequest` chains the whole frame burst onto this tail; the
129
+ * single-line write path also serializes behind it so a small request issued
130
+ * concurrently never slips between another request's frames.
131
+ */
132
+ private writeMutex;
80
133
  /**
81
134
  * Create a new SubprocessTransport.
82
135
  *
@@ -93,9 +146,53 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
93
146
  */
94
147
  send(message: string, timeoutMs: number, signal?: AbortSignal): Promise<string>;
95
148
  /**
96
- * Initialize the transport by spawning the Python process.
149
+ * Static capability descriptor for the subprocess backend.
150
+ *
151
+ * Per the {@link Transport.capabilities} contract this is lifecycle-independent
152
+ * (safe before `init()` / after `dispose()`) and never makes a Python round
153
+ * trip. Subprocess carries Arrow IPC and arbitrary binary (bytes envelopes)
154
+ * over the JSONL stream. `supportsChunking` reports the *configured* capability
155
+ * — `this.enableChunking`, i.e. whether this transport is set up to use the
156
+ * `tywrap-frame/1` framing path — exactly as `supportsArrow` reports a static
157
+ * channel capability rather than a runtime fact. Whether the *connected* bridge
158
+ * actually advertised framing is the negotiated fact, surfaced separately on
159
+ * `BridgeInfo.transport.supportsChunking`; "will chunking actually happen"
160
+ * needs both `true`. `supportsStreaming` stays `false` (0.8.0). `maxFrameBytes`
161
+ * is the configured JSONL line-length limit — the largest single (unchunked)
162
+ * response line this transport accepts.
163
+ */
164
+ capabilities(): TransportCapabilities;
165
+ /**
166
+ * Initialize the transport by spawning the Python process and, when chunking
167
+ * is enabled, negotiating `tywrap-frame/1` via a small unchunked `meta` probe.
97
168
  */
98
169
  protected doInit(): Promise<void>;
170
+ /**
171
+ * Probe the freshly-spawned bridge for `tywrap-frame/1` support.
172
+ *
173
+ * Sends a small unchunked `meta` request directly over stdin (NOT via the
174
+ * public {@link send}, which would re-enter init while we are mid-init) and
175
+ * reads the single-line response. If the bridge reports
176
+ * `transport.supportsChunking: true`, response reassembly is enabled. If the
177
+ * bridge does not advertise chunking (old bridge, or it disabled framing), the
178
+ * transport stays single-frame and an oversize response still fails loud — no
179
+ * silent fallback. A probe failure leaves chunking disabled but does not fail
180
+ * init (small calls must keep working); the loud failure is deferred to the
181
+ * first oversize response.
182
+ */
183
+ private negotiateChunking;
184
+ /**
185
+ * Whether a parsed `meta` response advertises `tywrap-frame/1` chunking with a
186
+ * matching frame protocol. Defensive: any missing/mismatched field => `false`.
187
+ */
188
+ private bridgeAdvertisesChunking;
189
+ /**
190
+ * Send a single in-init probe message over stdin and resolve with its raw
191
+ * response line. Registers a pending entry keyed by `probeId` exactly like the
192
+ * normal send path so {@link handleResponseLine} resolves it, but bypasses the
193
+ * `isReady`/auto-init guard (we are deliberately running during `doInit`).
194
+ */
195
+ private sendProbe;
99
196
  /**
100
197
  * Dispose the transport by killing the Python process.
101
198
  */
@@ -118,14 +215,51 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
118
215
  * Works independently of restartAfterRequests setting.
119
216
  */
120
217
  private markForRestart;
218
+ /**
219
+ * Effective stdout line ceiling.
220
+ *
221
+ * Without chunking it is exactly {@link maxLineLength} (legacy behavior). With
222
+ * chunking negotiated, a single wire line is a `tywrap-frame/1` envelope whose
223
+ * `data` slice is capped at `maxLineLength` UTF-8 bytes by the bridge, but the
224
+ * JSON envelope adds escaping (`"`/`\`) plus fixed keys; the ceiling is widened
225
+ * to bound that overhead so a legitimate frame line is never rejected while a
226
+ * runaway/garbage line still is.
227
+ */
228
+ private effectiveLineCeiling;
121
229
  /**
122
230
  * Handle stdout data from the Python process.
123
231
  */
124
232
  private handleStdoutData;
125
233
  /**
126
234
  * Handle a complete response line from stdout.
235
+ *
236
+ * When chunking is negotiated, a line may be a `tywrap-frame/1` envelope: it is
237
+ * routed into the per-id {@link Reassembler}, which returns the reassembled
238
+ * logical response only once the stream is complete and valid. Single-line
239
+ * (non-frame) responses keep the original fast path unchanged.
127
240
  */
128
241
  private handleResponseLine;
242
+ /**
243
+ * Route one `tywrap-frame/1` response frame into the reassembler.
244
+ *
245
+ * On completion the reassembled logical line resolves the pending request. The
246
+ * reassembler validates structure, ordering, byte count, and UTF-8 internally
247
+ * and throws on any framing violation (malformed/duplicate/byte-mismatch/
248
+ * unknown-protocol) — those reject the pending id and mark the subprocess for
249
+ * restart, since stdout can no longer be trusted to be frame-aligned. Frames
250
+ * for a timed-out/aborted id are silently discarded by the reassembler (it
251
+ * returns `null` and tracks the discard set) so late multi-frame responses
252
+ * cannot desync the stream.
253
+ */
254
+ private handleResponseFrame;
255
+ /**
256
+ * Reject the pending request correlated to a frame id, if one exists.
257
+ *
258
+ * Used when frame reassembly throws. If the id is unknown (e.g. it already
259
+ * timed out and was dropped from `pending`), the error still surfaces as a
260
+ * protocol error so the desync is not swallowed silently.
261
+ */
262
+ private rejectFrameId;
129
263
  /**
130
264
  * Handle stderr data from the Python process.
131
265
  */
@@ -169,6 +303,38 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
169
303
  * Write data to stdin with backpressure handling.
170
304
  */
171
305
  private writeToStdin;
306
+ /**
307
+ * Write one logical request to stdin, fragmenting it into `tywrap-frame/1`
308
+ * request frames when chunking is negotiated and the encoded request exceeds
309
+ * the per-frame ceiling (W5 — the mirror of W4's response chunking).
310
+ *
311
+ * Both the chunked and single-line paths run under {@link writeMutex} so a
312
+ * logical request's bytes (one line, or a burst of frames) reach stdin
313
+ * contiguously: a small request issued concurrently can never interleave
314
+ * between another request's frames, which would desync the Python
315
+ * reassembler (it correlates frames by id, but the JSONL stream itself must
316
+ * stay frame-aligned). The mutex tail is advanced regardless of success so a
317
+ * failed write never wedges every subsequent request.
318
+ *
319
+ * @param message - the encoded logical JSON request (no trailing newline)
320
+ * @param messageId - the request's correlation id (already validated integer)
321
+ * @param signal - optional abort signal; an abort observed between frames
322
+ * stops further frames and rejects this send (the pending entry is rejected
323
+ * by the abort handler / the caller's `.catch`).
324
+ */
325
+ private writeRequest;
326
+ /**
327
+ * Fragment a logical request into `tywrap-frame/1` request frames and write
328
+ * them contiguously (one JSONL line per frame). Runs while holding the write
329
+ * mutex (see {@link writeRequest}), so no other write interleaves.
330
+ *
331
+ * Each frame is awaited in turn so backpressure on stdin is respected. Before
332
+ * every frame the abort signal and process liveness are re-checked: an abort
333
+ * mid-burst stops the remaining frames and rejects the send LOUD (the Python
334
+ * reassembler drops the now-incomplete id when the next request's frames /
335
+ * timeout arrive, exactly as the response side handles a discarded id).
336
+ */
337
+ private writeChunkedRequest;
172
338
  /**
173
339
  * Reject and clear every entry currently in the write queue.
174
340
  * Clears each entry's timeout before rejecting so no late timer fires.
@@ -198,7 +364,15 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
198
364
  */
199
365
  private withStderrTail;
200
366
  /**
201
- * Handle a protocol error by rejecting all pending requests.
367
+ * Handle a protocol error by rejecting all pending requests and marking the
368
+ * subprocess for restart.
369
+ *
370
+ * Every caller represents genuine stdout-stream corruption (a too-long line, a
371
+ * response with no `id`, a frame with no reassembler, or a truly unexpected id
372
+ * — benign late responses from timed-out requests are already filtered upstream
373
+ * via {@link timedOutRequests}). After such an error stdout can no longer be
374
+ * trusted to be line/frame-aligned, so the process is marked for restart —
375
+ * matching the frame-reassembly-corruption path and the framing spec.
202
376
  */
203
377
  private handleProtocolError;
204
378
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"subprocess-transport.d.ts","sourceRoot":"","sources":["../../src/runtime/subprocess-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subprocess-transport.d.ts","sourceRoot":"","sources":["../../src/runtime/subprocess-transport.ts"],"names":[],"mappings":"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"}