tywrap 0.2.0 → 0.2.1

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 (88) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +20 -4
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +22 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/runtime/base.d.ts +17 -7
  7. package/dist/runtime/base.d.ts.map +1 -1
  8. package/dist/runtime/base.js +18 -1
  9. package/dist/runtime/base.js.map +1 -1
  10. package/dist/runtime/bounded-context.d.ts +252 -0
  11. package/dist/runtime/bounded-context.d.ts.map +1 -0
  12. package/dist/runtime/bounded-context.js +454 -0
  13. package/dist/runtime/bounded-context.js.map +1 -0
  14. package/dist/runtime/bridge-protocol.d.ts +167 -0
  15. package/dist/runtime/bridge-protocol.d.ts.map +1 -0
  16. package/dist/runtime/bridge-protocol.js +247 -0
  17. package/dist/runtime/bridge-protocol.js.map +1 -0
  18. package/dist/runtime/disposable.d.ts +40 -0
  19. package/dist/runtime/disposable.d.ts.map +1 -0
  20. package/dist/runtime/disposable.js +49 -0
  21. package/dist/runtime/disposable.js.map +1 -0
  22. package/dist/runtime/http-io.d.ts +91 -0
  23. package/dist/runtime/http-io.d.ts.map +1 -0
  24. package/dist/runtime/http-io.js +195 -0
  25. package/dist/runtime/http-io.js.map +1 -0
  26. package/dist/runtime/http.d.ts +47 -13
  27. package/dist/runtime/http.d.ts.map +1 -1
  28. package/dist/runtime/http.js +55 -74
  29. package/dist/runtime/http.js.map +1 -1
  30. package/dist/runtime/node.d.ts +97 -130
  31. package/dist/runtime/node.d.ts.map +1 -1
  32. package/dist/runtime/node.js +256 -523
  33. package/dist/runtime/node.js.map +1 -1
  34. package/dist/runtime/pooled-transport.d.ts +131 -0
  35. package/dist/runtime/pooled-transport.d.ts.map +1 -0
  36. package/dist/runtime/pooled-transport.js +175 -0
  37. package/dist/runtime/pooled-transport.js.map +1 -0
  38. package/dist/runtime/process-io.d.ts +204 -0
  39. package/dist/runtime/process-io.d.ts.map +1 -0
  40. package/dist/runtime/process-io.js +695 -0
  41. package/dist/runtime/process-io.js.map +1 -0
  42. package/dist/runtime/pyodide-io.d.ts +155 -0
  43. package/dist/runtime/pyodide-io.d.ts.map +1 -0
  44. package/dist/runtime/pyodide-io.js +397 -0
  45. package/dist/runtime/pyodide-io.js.map +1 -0
  46. package/dist/runtime/pyodide.d.ts +51 -19
  47. package/dist/runtime/pyodide.d.ts.map +1 -1
  48. package/dist/runtime/pyodide.js +57 -186
  49. package/dist/runtime/pyodide.js.map +1 -1
  50. package/dist/runtime/safe-codec.d.ts +81 -0
  51. package/dist/runtime/safe-codec.d.ts.map +1 -0
  52. package/dist/runtime/safe-codec.js +345 -0
  53. package/dist/runtime/safe-codec.js.map +1 -0
  54. package/dist/runtime/transport.d.ts +186 -0
  55. package/dist/runtime/transport.d.ts.map +1 -0
  56. package/dist/runtime/transport.js +86 -0
  57. package/dist/runtime/transport.js.map +1 -0
  58. package/dist/runtime/validators.d.ts +131 -0
  59. package/dist/runtime/validators.d.ts.map +1 -0
  60. package/dist/runtime/validators.js +219 -0
  61. package/dist/runtime/validators.js.map +1 -0
  62. package/dist/runtime/worker-pool.d.ts +196 -0
  63. package/dist/runtime/worker-pool.d.ts.map +1 -0
  64. package/dist/runtime/worker-pool.js +371 -0
  65. package/dist/runtime/worker-pool.js.map +1 -0
  66. package/dist/utils/codec.d.ts.map +1 -1
  67. package/dist/utils/codec.js +120 -1
  68. package/dist/utils/codec.js.map +1 -1
  69. package/package.json +2 -2
  70. package/runtime/python_bridge.py +30 -3
  71. package/runtime/safe_codec.py +344 -0
  72. package/src/index.ts +48 -5
  73. package/src/runtime/base.ts +18 -26
  74. package/src/runtime/bounded-context.ts +608 -0
  75. package/src/runtime/bridge-protocol.ts +319 -0
  76. package/src/runtime/disposable.ts +65 -0
  77. package/src/runtime/http-io.ts +244 -0
  78. package/src/runtime/http.ts +71 -117
  79. package/src/runtime/node.ts +358 -691
  80. package/src/runtime/pooled-transport.ts +252 -0
  81. package/src/runtime/process-io.ts +902 -0
  82. package/src/runtime/pyodide-io.ts +485 -0
  83. package/src/runtime/pyodide.ts +75 -215
  84. package/src/runtime/safe-codec.ts +443 -0
  85. package/src/runtime/transport.ts +273 -0
  86. package/src/runtime/validators.ts +241 -0
  87. package/src/runtime/worker-pool.ts +498 -0
  88. package/src/utils/codec.ts +126 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-io.js","sourceRoot":"","sources":["../../src/runtime/process-io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * PyodideIO Transport - In-memory Pyodide communication for browser environments.
3
+ *
4
+ * This transport implements the Transport interface for direct in-memory
5
+ * communication with Pyodide (Python compiled to WebAssembly). It is designed
6
+ * for browser environments where Python code runs within the same process.
7
+ *
8
+ * Key features:
9
+ * - Zero network overhead (in-memory calls)
10
+ * - Automatic Pyodide loading from CDN or module
11
+ * - Python package loading support
12
+ * - Proper proxy cleanup to prevent memory leaks
13
+ *
14
+ * @see https://github.com/bbopen/tywrap/issues/149
15
+ */
16
+ import { BoundedContext } from './bounded-context.js';
17
+ import { type Transport } from './transport.js';
18
+ /**
19
+ * Options for configuring the PyodideIO transport.
20
+ */
21
+ export interface PyodideIOOptions {
22
+ /** URL for Pyodide CDN. Default: official CDN */
23
+ indexURL?: string;
24
+ /** Python packages to load during initialization */
25
+ packages?: string[];
26
+ }
27
+ /**
28
+ * Transport implementation for in-memory Pyodide communication.
29
+ *
30
+ * This transport extends BoundedContext for lifecycle management and
31
+ * implements the Transport interface for message-based communication.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const transport = new PyodideIO({ packages: ['numpy'] });
36
+ * await transport.init();
37
+ *
38
+ * const response = await transport.send(
39
+ * JSON.stringify({
40
+ * id: '1',
41
+ * type: 'call',
42
+ * module: 'math',
43
+ * functionName: 'sqrt',
44
+ * args: [16]
45
+ * }),
46
+ * 5000
47
+ * );
48
+ *
49
+ * await transport.dispose();
50
+ * ```
51
+ */
52
+ export declare class PyodideIO extends BoundedContext implements Transport {
53
+ private readonly indexURL;
54
+ private readonly packages;
55
+ private requestId;
56
+ private py?;
57
+ /**
58
+ * Create a new PyodideIO transport.
59
+ *
60
+ * @param options - Configuration options
61
+ */
62
+ constructor(options?: PyodideIOOptions);
63
+ /**
64
+ * Initialize the Pyodide runtime.
65
+ *
66
+ * This method:
67
+ * 1. Resolves the loadPyodide function (global or dynamic import)
68
+ * 2. Loads Pyodide with the configured indexURL
69
+ * 3. Loads any requested Python packages
70
+ * 4. Bootstraps the dispatch helper function
71
+ *
72
+ * @throws BridgeProtocolError if Pyodide is not available
73
+ */
74
+ protected doInit(): Promise<void>;
75
+ /**
76
+ * Clean up Pyodide resources.
77
+ *
78
+ * Note: Pyodide does not have an explicit dispose mechanism.
79
+ * We clear our reference and rely on garbage collection.
80
+ */
81
+ protected doDispose(): Promise<void>;
82
+ /**
83
+ * Send a protocol message to Pyodide and wait for the response.
84
+ *
85
+ * This method:
86
+ * 1. Validates the transport is ready
87
+ * 2. Calls the Python dispatch function with the JSON message
88
+ * 3. Returns the JSON response string
89
+ *
90
+ * The timeout and abort signal are respected, though in-memory calls
91
+ * are typically fast enough that timeouts rarely trigger.
92
+ *
93
+ * @param message - JSON-encoded ProtocolMessage
94
+ * @param timeoutMs - Timeout in milliseconds (0 = no timeout)
95
+ * @param signal - Optional AbortSignal for cancellation
96
+ * @returns JSON-encoded ProtocolResponse
97
+ *
98
+ * @throws BridgeDisposedError if transport is disposed
99
+ * @throws BridgeProtocolError if message is invalid or Pyodide not ready
100
+ * @throws BridgeTimeoutError if operation times out or is aborted
101
+ * @throws BridgeExecutionError for Python execution errors
102
+ */
103
+ send(message: string, timeoutMs: number, signal?: AbortSignal): Promise<string>;
104
+ /**
105
+ * Call a Python function.
106
+ *
107
+ * Convenience method that constructs a 'call' message and sends it.
108
+ */
109
+ call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
110
+ /**
111
+ * Instantiate a Python class.
112
+ *
113
+ * Convenience method that constructs an 'instantiate' message and sends it.
114
+ */
115
+ instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
116
+ /**
117
+ * Call a method on a Python instance.
118
+ *
119
+ * Convenience method that constructs a 'call_method' message and sends it.
120
+ */
121
+ callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
122
+ /**
123
+ * Dispose a Python instance.
124
+ *
125
+ * Convenience method that constructs a 'dispose_instance' message and sends it.
126
+ */
127
+ disposeInstance(handle: string): Promise<void>;
128
+ /**
129
+ * Resolve the loadPyodide function.
130
+ *
131
+ * First checks for a global loadPyodide (browser script tag include),
132
+ * then falls back to dynamic import of the 'pyodide' module.
133
+ */
134
+ private resolveLoadPyodide;
135
+ /**
136
+ * Bootstrap the Python dispatch function.
137
+ */
138
+ private bootstrapDispatcher;
139
+ /**
140
+ * Parse a JSON response and extract the result or throw an error.
141
+ */
142
+ private parseResponse;
143
+ /**
144
+ * Generate a unique message ID.
145
+ */
146
+ private generateId;
147
+ /**
148
+ * Safely destroy a Pyodide proxy object.
149
+ *
150
+ * Pyodide proxy objects must be explicitly destroyed to prevent memory leaks.
151
+ * This method checks if the value has a destroy method and calls it.
152
+ */
153
+ private destroyPyProxy;
154
+ }
155
+ //# sourceMappingURL=pyodide-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyodide-io.d.ts","sourceRoot":"","sources":["../../src/runtime/pyodide-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAe,KAAK,SAAS,EAA+C,MAAM,gBAAgB,CAAC;AAM1G;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AA0GD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,SAAU,SAAQ,cAAe,YAAW,SAAS;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,EAAE,CAAC,CAAkB;IAE7B;;;;OAIG;gBACS,OAAO,GAAE,gBAAqB;IAU1C;;;;;;;;;;OAUG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBvC;;;;;OAKG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAuDrF;;;;OAIG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;OAIG;IACG,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpD;;;;;OAKG;YACW,kBAAkB;IAqBhC;;OAEG;YACW,mBAAmB;IAOjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CASvB"}
@@ -0,0 +1,397 @@
1
+ /**
2
+ * PyodideIO Transport - In-memory Pyodide communication for browser environments.
3
+ *
4
+ * This transport implements the Transport interface for direct in-memory
5
+ * communication with Pyodide (Python compiled to WebAssembly). It is designed
6
+ * for browser environments where Python code runs within the same process.
7
+ *
8
+ * Key features:
9
+ * - Zero network overhead (in-memory calls)
10
+ * - Automatic Pyodide loading from CDN or module
11
+ * - Python package loading support
12
+ * - Proper proxy cleanup to prevent memory leaks
13
+ *
14
+ * @see https://github.com/bbopen/tywrap/issues/149
15
+ */
16
+ import { BoundedContext } from './bounded-context.js';
17
+ import { BridgeExecutionError, BridgeProtocolError } from './errors.js';
18
+ import { PROTOCOL_ID } from './transport.js';
19
+ // =============================================================================
20
+ // CONSTANTS
21
+ // =============================================================================
22
+ /** Default Pyodide CDN URL */
23
+ const DEFAULT_INDEX_URL = 'https://cdn.jsdelivr.net/pyodide/v0.24.1/full/';
24
+ /**
25
+ * Bootstrap Python code that sets up the dispatch function.
26
+ *
27
+ * This code is injected into Pyodide during initialization and provides
28
+ * a single entry point for all protocol messages. The dispatch function
29
+ * parses JSON messages, routes to appropriate handlers, and returns
30
+ * JSON responses.
31
+ */
32
+ const BOOTSTRAP_PYTHON = `
33
+ import json
34
+ import importlib
35
+
36
+ __tywrap_instances = {}
37
+
38
+ def __tywrap_dispatch(message_json):
39
+ """
40
+ Dispatch a protocol message and return a JSON response.
41
+
42
+ Args:
43
+ message_json: JSON-encoded ProtocolMessage string
44
+
45
+ Returns:
46
+ JSON-encoded ProtocolResponse string
47
+ """
48
+ msg = None
49
+ try:
50
+ msg = json.loads(message_json)
51
+ msg_id = msg['id']
52
+ msg_type = msg['type']
53
+
54
+ if msg_type == 'call':
55
+ mod = importlib.import_module(msg['module'])
56
+ fn = getattr(mod, msg['functionName'])
57
+ result = fn(*msg.get('args', []), **msg.get('kwargs', {}))
58
+ return json.dumps({'id': msg_id, 'result': result})
59
+
60
+ elif msg_type == 'instantiate':
61
+ mod = importlib.import_module(msg['module'])
62
+ cls = getattr(mod, msg['className'])
63
+ obj = cls(*msg.get('args', []), **msg.get('kwargs', {}))
64
+ handle = str(id(obj))
65
+ __tywrap_instances[handle] = obj
66
+ return json.dumps({'id': msg_id, 'result': handle})
67
+
68
+ elif msg_type == 'call_method':
69
+ obj = __tywrap_instances[msg['handle']]
70
+ method = getattr(obj, msg['methodName'])
71
+ result = method(*msg.get('args', []), **msg.get('kwargs', {}))
72
+ return json.dumps({'id': msg_id, 'result': result})
73
+
74
+ elif msg_type == 'dispose_instance':
75
+ __tywrap_instances.pop(msg['handle'], None)
76
+ return json.dumps({'id': msg_id, 'result': None})
77
+
78
+ else:
79
+ return json.dumps({
80
+ 'id': msg_id,
81
+ 'error': {
82
+ 'type': 'ValueError',
83
+ 'message': f'Unknown message type: {msg_type}'
84
+ }
85
+ })
86
+
87
+ except Exception as e:
88
+ import traceback
89
+ return json.dumps({
90
+ 'id': msg.get('id', 'unknown') if msg else 'unknown',
91
+ 'error': {
92
+ 'type': type(e).__name__,
93
+ 'message': str(e),
94
+ 'traceback': traceback.format_exc()
95
+ }
96
+ })
97
+ `;
98
+ // =============================================================================
99
+ // PYODIDE IO TRANSPORT
100
+ // =============================================================================
101
+ /**
102
+ * Transport implementation for in-memory Pyodide communication.
103
+ *
104
+ * This transport extends BoundedContext for lifecycle management and
105
+ * implements the Transport interface for message-based communication.
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const transport = new PyodideIO({ packages: ['numpy'] });
110
+ * await transport.init();
111
+ *
112
+ * const response = await transport.send(
113
+ * JSON.stringify({
114
+ * id: '1',
115
+ * type: 'call',
116
+ * module: 'math',
117
+ * functionName: 'sqrt',
118
+ * args: [16]
119
+ * }),
120
+ * 5000
121
+ * );
122
+ *
123
+ * await transport.dispose();
124
+ * ```
125
+ */
126
+ export class PyodideIO extends BoundedContext {
127
+ indexURL;
128
+ packages;
129
+ requestId = 0;
130
+ py;
131
+ /**
132
+ * Create a new PyodideIO transport.
133
+ *
134
+ * @param options - Configuration options
135
+ */
136
+ constructor(options = {}) {
137
+ super();
138
+ this.indexURL = options.indexURL ?? DEFAULT_INDEX_URL;
139
+ this.packages = Object.freeze([...(options.packages ?? [])]);
140
+ }
141
+ // ===========================================================================
142
+ // LIFECYCLE (BoundedContext implementation)
143
+ // ===========================================================================
144
+ /**
145
+ * Initialize the Pyodide runtime.
146
+ *
147
+ * This method:
148
+ * 1. Resolves the loadPyodide function (global or dynamic import)
149
+ * 2. Loads Pyodide with the configured indexURL
150
+ * 3. Loads any requested Python packages
151
+ * 4. Bootstraps the dispatch helper function
152
+ *
153
+ * @throws BridgeProtocolError if Pyodide is not available
154
+ */
155
+ async doInit() {
156
+ const loadPyodideFn = await this.resolveLoadPyodide();
157
+ if (!loadPyodideFn) {
158
+ throw new BridgeProtocolError('Pyodide is not available in this environment. ' +
159
+ 'Include the Pyodide script tag or install the pyodide package.');
160
+ }
161
+ this.py = await loadPyodideFn({ indexURL: this.indexURL });
162
+ if (this.packages.length > 0) {
163
+ await this.py.loadPackage([...this.packages]);
164
+ }
165
+ await this.bootstrapDispatcher();
166
+ }
167
+ /**
168
+ * Clean up Pyodide resources.
169
+ *
170
+ * Note: Pyodide does not have an explicit dispose mechanism.
171
+ * We clear our reference and rely on garbage collection.
172
+ */
173
+ async doDispose() {
174
+ this.py = undefined;
175
+ }
176
+ // ===========================================================================
177
+ // TRANSPORT INTERFACE
178
+ // ===========================================================================
179
+ /**
180
+ * Send a protocol message to Pyodide and wait for the response.
181
+ *
182
+ * This method:
183
+ * 1. Validates the transport is ready
184
+ * 2. Calls the Python dispatch function with the JSON message
185
+ * 3. Returns the JSON response string
186
+ *
187
+ * The timeout and abort signal are respected, though in-memory calls
188
+ * are typically fast enough that timeouts rarely trigger.
189
+ *
190
+ * @param message - JSON-encoded ProtocolMessage
191
+ * @param timeoutMs - Timeout in milliseconds (0 = no timeout)
192
+ * @param signal - Optional AbortSignal for cancellation
193
+ * @returns JSON-encoded ProtocolResponse
194
+ *
195
+ * @throws BridgeDisposedError if transport is disposed
196
+ * @throws BridgeProtocolError if message is invalid or Pyodide not ready
197
+ * @throws BridgeTimeoutError if operation times out or is aborted
198
+ * @throws BridgeExecutionError for Python execution errors
199
+ */
200
+ async send(message, timeoutMs, signal) {
201
+ return this.execute(async () => {
202
+ if (!this.py) {
203
+ throw new BridgeProtocolError('Pyodide not initialized');
204
+ }
205
+ // Validate message is parseable JSON
206
+ let parsed;
207
+ try {
208
+ parsed = JSON.parse(message);
209
+ }
210
+ catch (e) {
211
+ throw new BridgeProtocolError(`Invalid JSON message: ${e.message}`);
212
+ }
213
+ // Validate required fields
214
+ if (!parsed.id || !parsed.method) {
215
+ throw new BridgeProtocolError('Message missing required fields: id, method');
216
+ }
217
+ // Get the dispatch function
218
+ const dispatchFn = this.py.globals.get('__tywrap_dispatch');
219
+ if (!dispatchFn) {
220
+ throw new BridgeProtocolError('Pyodide dispatch function not initialized');
221
+ }
222
+ try {
223
+ // Call the dispatch function
224
+ const invoke = dispatchFn;
225
+ const responseJson = invoke(message);
226
+ // Validate response is valid JSON
227
+ try {
228
+ const response = JSON.parse(responseJson);
229
+ if (response.error) {
230
+ // Return the response as-is; let the caller handle the error
231
+ return responseJson;
232
+ }
233
+ return responseJson;
234
+ }
235
+ catch {
236
+ throw new BridgeProtocolError(`Invalid JSON response from Python: ${responseJson}`);
237
+ }
238
+ }
239
+ finally {
240
+ // Clean up the proxy
241
+ this.destroyPyProxy(dispatchFn);
242
+ }
243
+ }, { timeoutMs, signal });
244
+ }
245
+ // ===========================================================================
246
+ // RUNTIME EXECUTION (BoundedContext abstract methods)
247
+ // ===========================================================================
248
+ /**
249
+ * Call a Python function.
250
+ *
251
+ * Convenience method that constructs a 'call' message and sends it.
252
+ */
253
+ async call(module, functionName, args, kwargs) {
254
+ const message = {
255
+ id: this.generateId(),
256
+ protocol: PROTOCOL_ID,
257
+ method: 'call',
258
+ params: {
259
+ module,
260
+ functionName,
261
+ args: args ?? [],
262
+ kwargs,
263
+ },
264
+ };
265
+ const responseJson = await this.send(JSON.stringify(message), 30000);
266
+ return this.parseResponse(responseJson);
267
+ }
268
+ /**
269
+ * Instantiate a Python class.
270
+ *
271
+ * Convenience method that constructs an 'instantiate' message and sends it.
272
+ */
273
+ async instantiate(module, className, args, kwargs) {
274
+ const message = {
275
+ id: this.generateId(),
276
+ protocol: PROTOCOL_ID,
277
+ method: 'instantiate',
278
+ params: {
279
+ module,
280
+ className,
281
+ args: args ?? [],
282
+ kwargs,
283
+ },
284
+ };
285
+ const responseJson = await this.send(JSON.stringify(message), 30000);
286
+ return this.parseResponse(responseJson);
287
+ }
288
+ /**
289
+ * Call a method on a Python instance.
290
+ *
291
+ * Convenience method that constructs a 'call_method' message and sends it.
292
+ */
293
+ async callMethod(handle, methodName, args, kwargs) {
294
+ const message = {
295
+ id: this.generateId(),
296
+ protocol: PROTOCOL_ID,
297
+ method: 'call_method',
298
+ params: {
299
+ handle,
300
+ methodName,
301
+ args: args ?? [],
302
+ kwargs,
303
+ },
304
+ };
305
+ const responseJson = await this.send(JSON.stringify(message), 30000);
306
+ return this.parseResponse(responseJson);
307
+ }
308
+ /**
309
+ * Dispose a Python instance.
310
+ *
311
+ * Convenience method that constructs a 'dispose_instance' message and sends it.
312
+ */
313
+ async disposeInstance(handle) {
314
+ const message = {
315
+ id: this.generateId(),
316
+ protocol: PROTOCOL_ID,
317
+ method: 'dispose_instance',
318
+ params: {
319
+ handle,
320
+ },
321
+ };
322
+ const responseJson = await this.send(JSON.stringify(message), 30000);
323
+ this.parseResponse(responseJson);
324
+ }
325
+ // ===========================================================================
326
+ // PRIVATE HELPERS
327
+ // ===========================================================================
328
+ /**
329
+ * Resolve the loadPyodide function.
330
+ *
331
+ * First checks for a global loadPyodide (browser script tag include),
332
+ * then falls back to dynamic import of the 'pyodide' module.
333
+ */
334
+ async resolveLoadPyodide() {
335
+ // Check for global loadPyodide (browser script tag)
336
+ const g = globalThis;
337
+ if (typeof g.loadPyodide === 'function') {
338
+ return g.loadPyodide;
339
+ }
340
+ // Try dynamic import
341
+ try {
342
+ const mod = (await import('pyodide'));
343
+ if (typeof mod.loadPyodide === 'function') {
344
+ return mod.loadPyodide;
345
+ }
346
+ }
347
+ catch {
348
+ // Pyodide module not available
349
+ // This is expected in most environments
350
+ }
351
+ return undefined;
352
+ }
353
+ /**
354
+ * Bootstrap the Python dispatch function.
355
+ */
356
+ async bootstrapDispatcher() {
357
+ if (!this.py) {
358
+ return;
359
+ }
360
+ await this.py.runPythonAsync(BOOTSTRAP_PYTHON);
361
+ }
362
+ /**
363
+ * Parse a JSON response and extract the result or throw an error.
364
+ */
365
+ parseResponse(responseJson) {
366
+ const response = JSON.parse(responseJson);
367
+ if (response.error) {
368
+ const err = new BridgeExecutionError(`${response.error.type}: ${response.error.message}`, { code: response.error.type });
369
+ err.traceback = response.error.traceback;
370
+ throw err;
371
+ }
372
+ return response.result;
373
+ }
374
+ /**
375
+ * Generate a unique message ID.
376
+ */
377
+ generateId() {
378
+ return ++this.requestId;
379
+ }
380
+ /**
381
+ * Safely destroy a Pyodide proxy object.
382
+ *
383
+ * Pyodide proxy objects must be explicitly destroyed to prevent memory leaks.
384
+ * This method checks if the value has a destroy method and calls it.
385
+ */
386
+ destroyPyProxy(value) {
387
+ if (value && typeof value.destroy === 'function') {
388
+ try {
389
+ value.destroy();
390
+ }
391
+ catch {
392
+ // Ignore cleanup failures
393
+ }
394
+ }
395
+ }
396
+ }
397
+ //# sourceMappingURL=pyodide-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyodide-io.js","sourceRoot":"","sources":["../../src/runtime/pyodide-io.ts"],"names":[],"mappings":"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"}