tywrap 0.5.0 → 0.6.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 (169) hide show
  1. package/dist/cli.js +8 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/index.js +236 -147
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/core/annotation-parser.d.ts.map +1 -1
  7. package/dist/core/annotation-parser.js +93 -83
  8. package/dist/core/annotation-parser.js.map +1 -1
  9. package/dist/core/discovery.d.ts.map +1 -1
  10. package/dist/core/discovery.js +26 -0
  11. package/dist/core/discovery.js.map +1 -1
  12. package/dist/core/emit-call.d.ts +58 -0
  13. package/dist/core/emit-call.d.ts.map +1 -0
  14. package/dist/core/emit-call.js +103 -0
  15. package/dist/core/emit-call.js.map +1 -0
  16. package/dist/core/generator.d.ts +2 -0
  17. package/dist/core/generator.d.ts.map +1 -1
  18. package/dist/core/generator.js +54 -211
  19. package/dist/core/generator.js.map +1 -1
  20. package/dist/core/mapper.d.ts.map +1 -1
  21. package/dist/core/mapper.js +118 -104
  22. package/dist/core/mapper.js.map +1 -1
  23. package/dist/index.d.ts +6 -25
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -31
  26. package/dist/index.js.map +1 -1
  27. package/dist/runtime/bounded-context.d.ts +2 -2
  28. package/dist/runtime/bounded-context.js +2 -2
  29. package/dist/runtime/{safe-codec.d.ts → bridge-codec.d.ts} +11 -11
  30. package/dist/runtime/bridge-codec.d.ts.map +1 -0
  31. package/dist/runtime/{safe-codec.js → bridge-codec.js} +26 -26
  32. package/dist/runtime/bridge-codec.js.map +1 -0
  33. package/dist/runtime/{http-io.d.ts → http-transport.d.ts} +6 -6
  34. package/dist/runtime/http-transport.d.ts.map +1 -0
  35. package/dist/runtime/{http-io.js → http-transport.js} +3 -3
  36. package/dist/runtime/http-transport.js.map +1 -0
  37. package/dist/runtime/http.d.ts +3 -3
  38. package/dist/runtime/http.d.ts.map +1 -1
  39. package/dist/runtime/http.js +4 -4
  40. package/dist/runtime/http.js.map +1 -1
  41. package/dist/runtime/index.d.ts +9 -1
  42. package/dist/runtime/index.d.ts.map +1 -1
  43. package/dist/runtime/index.js +9 -1
  44. package/dist/runtime/index.js.map +1 -1
  45. package/dist/runtime/node.d.ts +6 -6
  46. package/dist/runtime/node.d.ts.map +1 -1
  47. package/dist/runtime/node.js +7 -7
  48. package/dist/runtime/node.js.map +1 -1
  49. package/dist/runtime/pooled-transport.d.ts +11 -11
  50. package/dist/runtime/pooled-transport.d.ts.map +1 -1
  51. package/dist/runtime/pooled-transport.js +10 -10
  52. package/dist/runtime/pooled-transport.js.map +1 -1
  53. package/dist/runtime/pyodide-bootstrap-core.generated.d.ts.map +1 -1
  54. package/dist/runtime/pyodide-bootstrap-core.generated.js +1 -1
  55. package/dist/runtime/pyodide-bootstrap-core.generated.js.map +1 -1
  56. package/dist/runtime/{pyodide-io.d.ts → pyodide-transport.d.ts} +8 -8
  57. package/dist/runtime/pyodide-transport.d.ts.map +1 -0
  58. package/dist/runtime/{pyodide-io.js → pyodide-transport.js} +5 -5
  59. package/dist/runtime/pyodide-transport.js.map +1 -0
  60. package/dist/runtime/pyodide.d.ts +3 -3
  61. package/dist/runtime/pyodide.d.ts.map +1 -1
  62. package/dist/runtime/pyodide.js +5 -5
  63. package/dist/runtime/pyodide.js.map +1 -1
  64. package/dist/runtime/rpc-client.d.ts +5 -5
  65. package/dist/runtime/rpc-client.d.ts.map +1 -1
  66. package/dist/runtime/rpc-client.js +6 -7
  67. package/dist/runtime/rpc-client.js.map +1 -1
  68. package/dist/runtime/{process-io.d.ts → subprocess-transport.d.ts} +9 -9
  69. package/dist/runtime/subprocess-transport.d.ts.map +1 -0
  70. package/dist/runtime/{process-io.js → subprocess-transport.js} +6 -6
  71. package/dist/runtime/subprocess-transport.js.map +1 -0
  72. package/dist/runtime/{worker-pool.d.ts → transport-pool.d.ts} +15 -15
  73. package/dist/runtime/transport-pool.d.ts.map +1 -0
  74. package/dist/runtime/{worker-pool.js → transport-pool.js} +6 -6
  75. package/dist/runtime/transport-pool.js.map +1 -0
  76. package/dist/runtime/transport.d.ts +14 -8
  77. package/dist/runtime/transport.d.ts.map +1 -1
  78. package/dist/runtime/transport.js +10 -4
  79. package/dist/runtime/transport.js.map +1 -1
  80. package/dist/types/index.d.ts +10 -1
  81. package/dist/types/index.d.ts.map +1 -1
  82. package/dist/tywrap.d.ts.map +1 -1
  83. package/dist/tywrap.js +1 -3
  84. package/dist/tywrap.js.map +1 -1
  85. package/dist/utils/cache.d.ts +2 -2
  86. package/dist/utils/cache.d.ts.map +1 -1
  87. package/dist/utils/cache.js +2 -2
  88. package/dist/utils/cache.js.map +1 -1
  89. package/dist/utils/codec.d.ts +1 -1
  90. package/dist/utils/codec.d.ts.map +1 -1
  91. package/dist/utils/codec.js +181 -182
  92. package/dist/utils/codec.js.map +1 -1
  93. package/dist/version.d.ts +12 -0
  94. package/dist/version.d.ts.map +1 -0
  95. package/dist/version.js +12 -0
  96. package/dist/version.js.map +1 -0
  97. package/package.json +3 -5
  98. package/runtime/__pycache__/safe_codec.cpython-311.pyc +0 -0
  99. package/runtime/__pycache__/tywrap_bridge_core.cpython-311.pyc +0 -0
  100. package/runtime/python_bridge.py +54 -6
  101. package/runtime/safe_codec.py +8 -8
  102. package/runtime/tywrap_bridge_core.py +159 -23
  103. package/src/cli.ts +8 -12
  104. package/src/config/index.ts +271 -165
  105. package/src/core/annotation-parser.ts +112 -105
  106. package/src/core/discovery.ts +32 -0
  107. package/src/core/emit-call.ts +171 -0
  108. package/src/core/generator.ts +67 -263
  109. package/src/core/mapper.ts +125 -110
  110. package/src/index.ts +11 -68
  111. package/src/runtime/bounded-context.ts +2 -2
  112. package/src/runtime/{safe-codec.ts → bridge-codec.ts} +27 -27
  113. package/src/runtime/{http-io.ts → http-transport.ts} +5 -5
  114. package/src/runtime/http.ts +5 -5
  115. package/src/runtime/index.ts +23 -1
  116. package/src/runtime/node.ts +15 -15
  117. package/src/runtime/pooled-transport.ts +15 -15
  118. package/src/runtime/pyodide-bootstrap-core.generated.ts +1 -1
  119. package/src/runtime/{pyodide-io.ts → pyodide-transport.ts} +7 -7
  120. package/src/runtime/pyodide.ts +6 -6
  121. package/src/runtime/rpc-client.ts +12 -8
  122. package/src/runtime/{process-io.ts → subprocess-transport.ts} +8 -8
  123. package/src/runtime/{worker-pool.ts → transport-pool.ts} +26 -26
  124. package/src/runtime/transport.ts +15 -8
  125. package/src/types/index.ts +10 -1
  126. package/src/tywrap.ts +1 -3
  127. package/src/utils/cache.ts +2 -2
  128. package/src/utils/codec.ts +217 -196
  129. package/src/version.ts +12 -0
  130. package/dist/core/analyzer.d.ts +0 -64
  131. package/dist/core/analyzer.d.ts.map +0 -1
  132. package/dist/core/analyzer.js +0 -710
  133. package/dist/core/analyzer.js.map +0 -1
  134. package/dist/runtime/http-io.d.ts.map +0 -1
  135. package/dist/runtime/http-io.js.map +0 -1
  136. package/dist/runtime/optimized-node.d.ts +0 -23
  137. package/dist/runtime/optimized-node.d.ts.map +0 -1
  138. package/dist/runtime/optimized-node.js +0 -23
  139. package/dist/runtime/optimized-node.js.map +0 -1
  140. package/dist/runtime/process-io.d.ts.map +0 -1
  141. package/dist/runtime/process-io.js.map +0 -1
  142. package/dist/runtime/protocol.d.ts +0 -3
  143. package/dist/runtime/protocol.d.ts.map +0 -1
  144. package/dist/runtime/protocol.js +0 -3
  145. package/dist/runtime/protocol.js.map +0 -1
  146. package/dist/runtime/pyodide-io.d.ts.map +0 -1
  147. package/dist/runtime/pyodide-io.js.map +0 -1
  148. package/dist/runtime/safe-codec.d.ts.map +0 -1
  149. package/dist/runtime/safe-codec.js.map +0 -1
  150. package/dist/runtime/worker-pool.d.ts.map +0 -1
  151. package/dist/runtime/worker-pool.js.map +0 -1
  152. package/dist/utils/bundle-optimizer.d.ts +0 -182
  153. package/dist/utils/bundle-optimizer.d.ts.map +0 -1
  154. package/dist/utils/bundle-optimizer.js +0 -680
  155. package/dist/utils/bundle-optimizer.js.map +0 -1
  156. package/dist/utils/memory-profiler.d.ts +0 -123
  157. package/dist/utils/memory-profiler.d.ts.map +0 -1
  158. package/dist/utils/memory-profiler.js +0 -426
  159. package/dist/utils/memory-profiler.js.map +0 -1
  160. package/dist/utils/parallel-processor.d.ts +0 -146
  161. package/dist/utils/parallel-processor.d.ts.map +0 -1
  162. package/dist/utils/parallel-processor.js +0 -707
  163. package/dist/utils/parallel-processor.js.map +0 -1
  164. package/src/core/analyzer.ts +0 -824
  165. package/src/runtime/optimized-node.ts +0 -25
  166. package/src/runtime/protocol.ts +0 -2
  167. package/src/utils/bundle-optimizer.ts +0 -876
  168. package/src/utils/memory-profiler.ts +0 -582
  169. package/src/utils/parallel-processor.ts +0 -955
@@ -204,7 +204,7 @@ function reshapeArray(flat, shape) {
204
204
  }
205
205
  // Why: decoding needs to reject incompatible envelopes before we attempt to interpret payloads.
206
206
  const CODEC_VERSION = 1;
207
- function assertCodecVersion(envelope, marker) {
207
+ function assertCodecVersion(envelope, typeTag) {
208
208
  if (!('codecVersion' in envelope)) {
209
209
  return;
210
210
  }
@@ -213,209 +213,208 @@ function assertCodecVersion(envelope, marker) {
213
213
  return;
214
214
  }
215
215
  if (typeof version !== 'number' || !Number.isFinite(version)) {
216
- throw new Error(`Invalid ${marker} envelope: codecVersion must be a number`);
216
+ throw new Error(`Invalid ${typeTag} envelope: codecVersion must be a number`);
217
217
  }
218
218
  if (version !== CODEC_VERSION) {
219
- throw new Error(`Unsupported ${marker} envelope codecVersion: ${version}`);
219
+ throw new Error(`Unsupported ${typeTag} envelope codecVersion: ${version}`);
220
220
  }
221
221
  }
222
- function decodeEnvelopeCore(value, decodeArrow, recurse) {
223
- if (!isObject(value)) {
224
- return value;
225
- }
226
- const marker = value.__tywrap__;
227
- if (typeof marker !== 'string') {
228
- return value;
229
- }
230
- if (marker === 'dataframe' ||
231
- marker === 'series' ||
232
- marker === 'ndarray' ||
233
- marker === 'scipy.sparse' ||
234
- marker === 'torch.tensor' ||
235
- marker === 'sklearn.estimator') {
236
- assertCodecVersion(value, marker);
237
- }
238
- if (marker === 'dataframe') {
239
- const encoding = value.encoding;
240
- if (encoding === 'arrow') {
241
- const b64 = value.b64;
242
- if (typeof b64 !== 'string') {
243
- throw new Error('Invalid dataframe envelope: missing b64');
244
- }
245
- const bytes = fromBase64(b64);
246
- return decodeArrow(bytes);
247
- }
248
- if (encoding === 'json') {
249
- if (!('data' in value)) {
250
- throw new Error('Invalid dataframe envelope: missing data');
251
- }
252
- return value.data;
253
- }
254
- throw new Error(`Invalid dataframe envelope: unsupported encoding ${String(encoding)}`);
255
- }
256
- if (marker === 'series') {
257
- const encoding = value.encoding;
258
- if (encoding === 'arrow') {
259
- const b64 = value.b64;
260
- if (typeof b64 !== 'string') {
261
- throw new Error('Invalid series envelope: missing b64');
262
- }
263
- const bytes = fromBase64(b64);
264
- return decodeArrow(bytes);
265
- }
266
- if (encoding === 'json') {
267
- if (!('data' in value)) {
268
- throw new Error('Invalid series envelope: missing data');
269
- }
270
- return value.data;
271
- }
272
- throw new Error(`Invalid series envelope: unsupported encoding ${String(encoding)}`);
273
- }
274
- if (marker === 'ndarray') {
275
- const encoding = value.encoding;
276
- const shapeValue = value.shape;
277
- const shape = isNumberArray(shapeValue) ? shapeValue : undefined;
278
- if (encoding === 'arrow') {
279
- const b64 = value.b64;
280
- if (typeof b64 !== 'string') {
281
- throw new Error('Invalid ndarray envelope: missing b64');
282
- }
283
- const bytes = fromBase64(b64);
284
- const decoded = decodeArrow(bytes);
285
- // Extract values from Arrow table and reshape if needed
286
- // Arrow only handles 1D arrays, so we flatten on encode and reshape here
287
- // Reshape for: scalars (shape.length === 0) and multi-dim (shape.length > 1)
288
- // Skip reshape for: 1D arrays (shape.length === 1) - return as-is
289
- if (isPromiseLike(decoded)) {
290
- return decoded.then(data => {
291
- const values = extractArrowValues(data);
292
- if (!values) {
293
- return data; // Fallback: return raw data if extraction fails
294
- }
295
- // Reshape scalars and multi-dimensional arrays, but not 1D
296
- if (shape && shape.length !== 1) {
297
- return reshapeArray(values, shape);
298
- }
299
- return values;
300
- });
301
- }
302
- const values = extractArrowValues(decoded);
303
- if (!values) {
304
- return decoded; // Fallback: return raw data if extraction fails
305
- }
306
- // Reshape scalars and multi-dimensional arrays, but not 1D
307
- if (shape && shape.length !== 1) {
308
- return reshapeArray(values, shape);
309
- }
310
- return values;
222
+ /**
223
+ * Decode an Arrow-or-JSON envelope (dataframe / series).
224
+ *
225
+ * Why: dataframe and series share identical arrow/json handling; the only difference
226
+ * is the typeTag name used in error messages.
227
+ */
228
+ function decodeArrowOrJsonEnvelope(value, decodeArrow, typeTag) {
229
+ const encoding = value.encoding;
230
+ if (encoding === 'arrow') {
231
+ const b64 = value.b64;
232
+ if (typeof b64 !== 'string') {
233
+ throw new Error(`Invalid ${typeTag} envelope: missing b64`);
311
234
  }
312
- if (encoding === 'json') {
313
- if (!('data' in value)) {
314
- throw new Error('Invalid ndarray envelope: missing data');
315
- }
316
- return value.data;
235
+ const bytes = fromBase64(b64);
236
+ return decodeArrow(bytes);
237
+ }
238
+ if (encoding === 'json') {
239
+ if (!('data' in value)) {
240
+ throw new Error(`Invalid ${typeTag} envelope: missing data`);
317
241
  }
318
- throw new Error(`Invalid ndarray envelope: unsupported encoding ${String(encoding)}`);
242
+ return value.data;
319
243
  }
320
- if (marker === 'scipy.sparse') {
321
- const encoding = value.encoding;
322
- if (encoding !== 'json') {
323
- throw new Error(`Invalid scipy.sparse envelope: unsupported encoding ${String(encoding)}`);
244
+ throw new Error(`Invalid ${typeTag} envelope: unsupported encoding ${String(encoding)}`);
245
+ }
246
+ const decodeDataframeEnvelope = (value, decodeArrow) => decodeArrowOrJsonEnvelope(value, decodeArrow, 'dataframe');
247
+ const decodeSeriesEnvelope = (value, decodeArrow) => decodeArrowOrJsonEnvelope(value, decodeArrow, 'series');
248
+ const decodeNdarrayEnvelope = (value, decodeArrow) => {
249
+ const encoding = value.encoding;
250
+ const shapeValue = value.shape;
251
+ const shape = isNumberArray(shapeValue) ? shapeValue : undefined;
252
+ if (encoding === 'arrow') {
253
+ const b64 = value.b64;
254
+ if (typeof b64 !== 'string') {
255
+ throw new Error('Invalid ndarray envelope: missing b64');
324
256
  }
325
- const format = value.format;
326
- if (format !== 'csr' && format !== 'csc' && format !== 'coo') {
327
- throw new Error(`Invalid scipy.sparse envelope: unsupported format ${String(format)}`);
257
+ const bytes = fromBase64(b64);
258
+ const decoded = decodeArrow(bytes);
259
+ // Extract values from Arrow table and reshape if needed
260
+ // Arrow only handles 1D arrays, so we flatten on encode and reshape here
261
+ // Reshape for: scalars (shape.length === 0) and multi-dim (shape.length > 1)
262
+ // Skip reshape for: 1D arrays (shape.length === 1) - return as-is
263
+ if (isPromiseLike(decoded)) {
264
+ return decoded.then(data => {
265
+ const values = extractArrowValues(data);
266
+ if (!values) {
267
+ return data; // Fallback: return raw data if extraction fails
268
+ }
269
+ // Reshape scalars and multi-dimensional arrays, but not 1D
270
+ if (shape && shape.length !== 1) {
271
+ return reshapeArray(values, shape);
272
+ }
273
+ return values;
274
+ });
328
275
  }
329
- const shape = value.shape;
330
- if (!Array.isArray(shape) ||
331
- shape.length !== 2 ||
332
- typeof shape[0] !== 'number' ||
333
- typeof shape[1] !== 'number') {
334
- throw new Error('Invalid scipy.sparse envelope: shape must be a 2-item number[]');
276
+ const values = extractArrowValues(decoded);
277
+ if (!values) {
278
+ return decoded; // Fallback: return raw data if extraction fails
335
279
  }
336
- const data = value.data;
337
- if (!Array.isArray(data)) {
338
- throw new Error('Invalid scipy.sparse envelope: data must be an array');
280
+ // Reshape scalars and multi-dimensional arrays, but not 1D
281
+ if (shape && shape.length !== 1) {
282
+ return reshapeArray(values, shape);
339
283
  }
340
- const dtypeValue = value.dtype;
341
- const dtype = typeof dtypeValue === 'string' ? dtypeValue : undefined;
342
- if (format === 'coo') {
343
- const row = value.row;
344
- const col = value.col;
345
- if (!Array.isArray(row) || !Array.isArray(col)) {
346
- throw new Error('Invalid scipy.sparse envelope: coo requires row and col arrays');
347
- }
348
- return {
349
- format,
350
- shape,
351
- data,
352
- row,
353
- col,
354
- dtype,
355
- };
284
+ return values;
285
+ }
286
+ if (encoding === 'json') {
287
+ if (!('data' in value)) {
288
+ throw new Error('Invalid ndarray envelope: missing data');
356
289
  }
357
- const indices = value.indices;
358
- const indptr = value.indptr;
359
- if (!Array.isArray(indices) || !Array.isArray(indptr)) {
360
- throw new Error('Invalid scipy.sparse envelope: csr/csc requires indices and indptr arrays');
290
+ return value.data;
291
+ }
292
+ throw new Error(`Invalid ndarray envelope: unsupported encoding ${String(encoding)}`);
293
+ };
294
+ const decodeScipySparseEnvelope = value => {
295
+ const encoding = value.encoding;
296
+ if (encoding !== 'json') {
297
+ throw new Error(`Invalid scipy.sparse envelope: unsupported encoding ${String(encoding)}`);
298
+ }
299
+ const format = value.format;
300
+ if (format !== 'csr' && format !== 'csc' && format !== 'coo') {
301
+ throw new Error(`Invalid scipy.sparse envelope: unsupported format ${String(format)}`);
302
+ }
303
+ const shape = value.shape;
304
+ if (!Array.isArray(shape) ||
305
+ shape.length !== 2 ||
306
+ typeof shape[0] !== 'number' ||
307
+ typeof shape[1] !== 'number') {
308
+ throw new Error('Invalid scipy.sparse envelope: shape must be a 2-item number[]');
309
+ }
310
+ const data = value.data;
311
+ if (!Array.isArray(data)) {
312
+ throw new Error('Invalid scipy.sparse envelope: data must be an array');
313
+ }
314
+ const dtypeValue = value.dtype;
315
+ const dtype = typeof dtypeValue === 'string' ? dtypeValue : undefined;
316
+ if (format === 'coo') {
317
+ const row = value.row;
318
+ const col = value.col;
319
+ if (!Array.isArray(row) || !Array.isArray(col)) {
320
+ throw new Error('Invalid scipy.sparse envelope: coo requires row and col arrays');
361
321
  }
362
322
  return {
363
323
  format,
364
324
  shape,
365
325
  data,
366
- indices,
367
- indptr,
326
+ row,
327
+ col,
368
328
  dtype,
369
329
  };
370
330
  }
371
- if (marker === 'torch.tensor') {
372
- const encoding = value.encoding;
373
- if (encoding !== 'ndarray') {
374
- throw new Error(`Invalid torch.tensor envelope: unsupported encoding ${String(encoding)}`);
375
- }
376
- if (!('value' in value)) {
377
- throw new Error('Invalid torch.tensor envelope: missing value');
378
- }
379
- const nested = value.value;
380
- if (!isObject(nested) || nested.__tywrap__ !== 'ndarray') {
381
- throw new Error('Invalid torch.tensor envelope: value must be an ndarray envelope');
382
- }
383
- const decoded = recurse(nested);
384
- const shapeValue = value.shape;
385
- const shape = isNumberArray(shapeValue) ? shapeValue : undefined;
386
- const dtypeValue = value.dtype;
387
- const dtype = typeof dtypeValue === 'string' ? dtypeValue : undefined;
388
- const deviceValue = value.device;
389
- const device = typeof deviceValue === 'string' ? deviceValue : undefined;
390
- if (isPromiseLike(decoded)) {
391
- return decoded.then(data => ({ data, shape, dtype, device }));
392
- }
393
- return { data: decoded, shape, dtype, device };
331
+ const indices = value.indices;
332
+ const indptr = value.indptr;
333
+ if (!Array.isArray(indices) || !Array.isArray(indptr)) {
334
+ throw new Error('Invalid scipy.sparse envelope: csr/csc requires indices and indptr arrays');
335
+ }
336
+ return {
337
+ format,
338
+ shape,
339
+ data,
340
+ indices,
341
+ indptr,
342
+ dtype,
343
+ };
344
+ };
345
+ const decodeTorchTensorEnvelope = (value, _decodeArrow, recurse) => {
346
+ const encoding = value.encoding;
347
+ if (encoding !== 'ndarray') {
348
+ throw new Error(`Invalid torch.tensor envelope: unsupported encoding ${String(encoding)}`);
349
+ }
350
+ if (!('value' in value)) {
351
+ throw new Error('Invalid torch.tensor envelope: missing value');
352
+ }
353
+ const nested = value.value;
354
+ if (!isObject(nested) || nested.__tywrap__ !== 'ndarray') {
355
+ throw new Error('Invalid torch.tensor envelope: value must be an ndarray envelope');
356
+ }
357
+ const decoded = recurse(nested);
358
+ const shapeValue = value.shape;
359
+ const shape = isNumberArray(shapeValue) ? shapeValue : undefined;
360
+ const dtypeValue = value.dtype;
361
+ const dtype = typeof dtypeValue === 'string' ? dtypeValue : undefined;
362
+ const deviceValue = value.device;
363
+ const device = typeof deviceValue === 'string' ? deviceValue : undefined;
364
+ if (isPromiseLike(decoded)) {
365
+ return decoded.then(data => ({ data, shape, dtype, device }));
366
+ }
367
+ return { data: decoded, shape, dtype, device };
368
+ };
369
+ const decodeSklearnEstimatorEnvelope = value => {
370
+ const encoding = value.encoding;
371
+ if (encoding !== 'json') {
372
+ throw new Error(`Invalid sklearn.estimator envelope: unsupported encoding ${String(encoding)}`);
373
+ }
374
+ const className = value.className;
375
+ const module = value.module;
376
+ const params = value.params;
377
+ if (typeof className !== 'string' || typeof module !== 'string' || !isObject(params)) {
378
+ throw new Error('Invalid sklearn.estimator envelope: expected className/module strings + params object');
379
+ }
380
+ const versionValue = value.version;
381
+ if (versionValue !== undefined && typeof versionValue !== 'string') {
382
+ throw new Error('Invalid sklearn.estimator envelope: version must be a string when provided');
383
+ }
384
+ const version = typeof versionValue === 'string' ? versionValue : undefined;
385
+ return {
386
+ className,
387
+ module,
388
+ version,
389
+ params,
390
+ };
391
+ };
392
+ // Why: dispatch over the __tywrap__ typeTag instead of a long if-chain so each type's
393
+ // decode logic lives in one focused handler. The typeTag strings are the on-the-wire keys
394
+ // emitted by the Python bridge and MUST stay byte-identical. A Map keyed by the typeTag
395
+ // avoids prototype-chain lookups when dispatching on attacker-controlled typeTag strings.
396
+ const ENVELOPE_HANDLERS = new Map([
397
+ ['dataframe', decodeDataframeEnvelope],
398
+ ['series', decodeSeriesEnvelope],
399
+ ['ndarray', decodeNdarrayEnvelope],
400
+ ['scipy.sparse', decodeScipySparseEnvelope],
401
+ ['torch.tensor', decodeTorchTensorEnvelope],
402
+ ['sklearn.estimator', decodeSklearnEstimatorEnvelope],
403
+ ]);
404
+ function decodeEnvelopeCore(value, decodeArrow, recurse) {
405
+ if (!isObject(value)) {
406
+ return value;
394
407
  }
395
- if (marker === 'sklearn.estimator') {
396
- const encoding = value.encoding;
397
- if (encoding !== 'json') {
398
- throw new Error(`Invalid sklearn.estimator envelope: unsupported encoding ${String(encoding)}`);
399
- }
400
- const className = value.className;
401
- const module = value.module;
402
- const params = value.params;
403
- if (typeof className !== 'string' || typeof module !== 'string' || !isObject(params)) {
404
- throw new Error('Invalid sklearn.estimator envelope: expected className/module strings + params object');
405
- }
406
- const versionValue = value.version;
407
- if (versionValue !== undefined && typeof versionValue !== 'string') {
408
- throw new Error('Invalid sklearn.estimator envelope: version must be a string when provided');
409
- }
410
- const version = typeof versionValue === 'string' ? versionValue : undefined;
411
- return {
412
- className,
413
- module,
414
- version,
415
- params,
416
- };
408
+ const typeTag = value.__tywrap__;
409
+ if (typeof typeTag !== 'string') {
410
+ return value;
411
+ }
412
+ const handler = ENVELOPE_HANDLERS.get(typeTag);
413
+ if (!handler) {
414
+ return value;
417
415
  }
418
- return value;
416
+ assertCodecVersion(value, typeTag);
417
+ return handler(value, decodeArrow, recurse);
419
418
  }
420
419
  function decodeEnvelope(value, decodeArrow) {
421
420
  const recurse = v => decodeEnvelopeCore(v, decodeArrow, recurse);
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/utils/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/utils/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * AUTO-GENERATED — DO NOT EDIT.
3
+ *
4
+ * Source: package.json (version field)
5
+ * Generator: scripts/generate-version.mjs (runs in `npm run build`)
6
+ *
7
+ * Single-sources the package version so the public API can re-export it without
8
+ * importing package.json from outside tsconfig `rootDir`.
9
+ * Regenerate with: node scripts/generate-version.mjs
10
+ */
11
+ export declare const VERSION: string;
12
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,OAAO,EAAE,MAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * AUTO-GENERATED — DO NOT EDIT.
3
+ *
4
+ * Source: package.json (version field)
5
+ * Generator: scripts/generate-version.mjs (runs in `npm run build`)
6
+ *
7
+ * Single-sources the package version so the public API can re-export it without
8
+ * importing package.json from outside tsconfig `rootDir`.
9
+ * Regenerate with: node scripts/generate-version.mjs
10
+ */
11
+ export const VERSION = "0.6.0";
12
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tywrap",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Generate type-safe TypeScript wrappers for any Python library — Node.js, Deno, Bun, and browsers via Pyodide.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,7 +38,8 @@
38
38
  "README.md"
39
39
  ],
40
40
  "scripts": {
41
- "build": "npm run build:pyodide-bootstrap && tsc && npm run build:tools",
41
+ "build": "npm run build:version && npm run build:pyodide-bootstrap && tsc && npm run build:tools",
42
+ "build:version": "node scripts/generate-version.mjs",
42
43
  "build:pyodide-bootstrap": "node scripts/generate-pyodide-bootstrap.mjs",
43
44
  "build:tools": "tsc -p tsconfig.tools.json",
44
45
  "dev": "tsc --watch",
@@ -122,10 +123,7 @@
122
123
  "dependencies": {
123
124
  "@babel/parser": "^7.29.3",
124
125
  "@babel/types": "^7.25.6",
125
- "tree-sitter": "^0.25.0",
126
- "tree-sitter-python": "^0.25.0",
127
126
  "typescript": "^6.0.3",
128
- "web-tree-sitter": "^0.26.8",
129
127
  "yargs": "^18.0.0"
130
128
  },
131
129
  "devDependencies": {
@@ -7,10 +7,25 @@ subprocess transport and the HTTP transport:
7
7
  - the stdin/stdout JSONL request/response loop (main())
8
8
  - env-var size guards (TYWRAP_CODEC_MAX_BYTES / TYWRAP_REQUEST_MAX_BYTES)
9
9
  - TYWRAP_CODEC_FALLBACK=json marker mode and TYWRAP_TORCH_ALLOW_COPY
10
+ - the import/attribute allowlist policy (TYWRAP_ALLOWED_MODULES /
11
+ TYWRAP_ALLOW_PRIVATE_ATTRS), threaded into core.dispatch_request
10
12
  - the real OS pid and bridge='python-subprocess' identity
11
- - the final SafeCodec.encode wrapper (NaN rejection + numpy scalar coercion +
13
+ - the final BridgeCodec.encode wrapper (NaN rejection + numpy scalar coercion +
12
14
  the explicit byte-size limit error message)
13
15
 
16
+ SECURITY / TRUST MODEL: the bridge imports the requested module and getattrs the
17
+ requested function/class/method, so call/instantiate/call_method are an arbitrary
18
+ import+getattr+call surface. Two guards (implemented in tywrap_bridge_core) bound
19
+ that surface:
20
+ * TYWRAP_ALLOWED_MODULES (comma/space separated): when set, only those modules
21
+ (plus the stdlib the bridge itself needs) may be imported; anything else fails
22
+ with ImportNotAllowedError. UNSET = no restriction (preserves prior behavior).
23
+ * TYWRAP_ALLOW_PRIVATE_ATTRS=1: opt out of the default block on underscore-prefixed
24
+ (private/dunder) attribute access, which otherwise prevents the classic
25
+ __globals__/__subclasses__/__builtins__ escape chain.
26
+ The bridge does NOT sandbox the called code itself; only trusted Python should be
27
+ exposed. See SECURITY.md for the full threat model.
28
+
14
29
  The protocol dispatch, request deserialization, and the 6 __tywrap__ marker
15
30
  serializers live in the shared, pure module tywrap_bridge_core (so the in-WASM
16
31
  Pyodide server can run the SAME code). Those names are re-exported below for
@@ -22,7 +37,7 @@ import json
22
37
  import os
23
38
  import importlib # noqa: F401 (re-exported for compat / used by handlers via core)
24
39
 
25
- from safe_codec import SafeCodec, CodecError
40
+ from safe_codec import BridgeCodec, CodecError
26
41
 
27
42
  import tywrap_bridge_core as core
28
43
 
@@ -34,6 +49,10 @@ from tywrap_bridge_core import ( # noqa: F401
34
49
  CODEC_VERSION,
35
50
  ProtocolError,
36
51
  InstanceHandleError,
52
+ ImportNotAllowedError,
53
+ AttributeNotAllowedError,
54
+ import_allowed_module,
55
+ get_allowed_attr,
37
56
  deserialize,
38
57
  arrow_available,
39
58
  module_available,
@@ -77,6 +96,33 @@ TORCH_ALLOW_COPY = os.environ.get('TYWRAP_TORCH_ALLOW_COPY', '').lower() in ('1'
77
96
  BRIDGE_NAME = 'python-subprocess'
78
97
 
79
98
 
99
+ def parse_allowed_modules():
100
+ """
101
+ Parse TYWRAP_ALLOWED_MODULES into an allowlist set, or None when unset.
102
+
103
+ Why: returning None preserves the historical "import anything" behavior so
104
+ existing configurations keep working; supplying the env var (comma- and/or
105
+ whitespace-separated module names) switches the bridge into allowlist mode,
106
+ where only the listed modules plus the stdlib the bridge itself needs may be
107
+ imported. An empty/blank value is treated as unset (no restriction).
108
+ """
109
+ raw = os.environ.get('TYWRAP_ALLOWED_MODULES')
110
+ if raw is None:
111
+ return None
112
+ names = {name.strip() for chunk in raw.split(',') for name in chunk.split()}
113
+ names.discard('')
114
+ if not names:
115
+ return None
116
+ return frozenset(names)
117
+
118
+
119
+ # Why: parse once at startup. None => no allowlist (prior behavior preserved).
120
+ ALLOWED_MODULES = parse_allowed_modules()
121
+ # Why: underscore-prefixed (private/dunder) attribute access is blocked by default
122
+ # to prevent sandbox-escape via __globals__/__subclasses__/__builtins__; this opts out.
123
+ ALLOW_PRIVATE_ATTRS = os.environ.get('TYWRAP_ALLOW_PRIVATE_ATTRS', '').lower() in ('1', 'true', 'yes')
124
+
125
+
80
126
  class CodecConfigError(ValueError):
81
127
  """Codec configuration error."""
82
128
 
@@ -138,12 +184,12 @@ def get_codec_max_bytes():
138
184
  # Why: parse once at startup to avoid per-response env lookups.
139
185
  CODEC_MAX_BYTES = get_codec_max_bytes()
140
186
 
141
- # Why: use SafeCodec for final JSON encoding to reject NaN/Infinity and handle
142
- # edge cases like numpy scalars. We use sys.maxsize for SafeCodec's internal limit
187
+ # Why: use BridgeCodec for final JSON encoding to reject NaN/Infinity and handle
188
+ # edge cases like numpy scalars. We use sys.maxsize for BridgeCodec's internal limit
143
189
  # to preserve the original "no limit unless TYWRAP_CODEC_MAX_BYTES is set" behavior.
144
190
  # The explicit size check in encode_response() provides the specific error message
145
191
  # mentioning the env var name, which is important for debugging.
146
- _response_codec = SafeCodec(
192
+ _response_codec = BridgeCodec(
147
193
  allow_nan=False,
148
194
  max_payload_bytes=sys.maxsize,
149
195
  )
@@ -241,6 +287,8 @@ def dispatch_request(msg):
241
287
  allow_nan=False,
242
288
  python_version=sys.version.split()[0],
243
289
  torch_allow_copy=TORCH_ALLOW_COPY,
290
+ allowed_modules=ALLOWED_MODULES,
291
+ allow_private_attrs=ALLOW_PRIVATE_ATTRS,
244
292
  )
245
293
  return out['id'], out['result']
246
294
 
@@ -250,7 +298,7 @@ def encode_response(out):
250
298
  Serialize the response and enforce size limits.
251
299
 
252
300
  Why: keep payload size checks outside the main loop for clarity and lint compliance.
253
- Uses SafeCodec to reject NaN/Infinity and handle edge cases like numpy scalars.
301
+ Uses BridgeCodec to reject NaN/Infinity and handle edge cases like numpy scalars.
254
302
  """
255
303
  try:
256
304
  payload = _response_codec.encode(out)