@ricsam/isolate 0.1.10 → 0.1.12

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 (140) hide show
  1. package/README.md +257 -18
  2. package/dist/cjs/bridge/diagnostics.cjs +37 -2
  3. package/dist/cjs/bridge/diagnostics.cjs.map +3 -3
  4. package/dist/cjs/bridge/runtime-bindings.cjs +230 -51
  5. package/dist/cjs/bridge/runtime-bindings.cjs.map +3 -3
  6. package/dist/cjs/bridge/sandbox-isolate.cjs +464 -0
  7. package/dist/cjs/bridge/sandbox-isolate.cjs.map +10 -0
  8. package/dist/cjs/host/create-isolate-host.cjs +130 -25
  9. package/dist/cjs/host/create-isolate-host.cjs.map +3 -3
  10. package/dist/cjs/host/nested-host-controller.cjs +369 -0
  11. package/dist/cjs/host/nested-host-controller.cjs.map +10 -0
  12. package/dist/cjs/index.cjs.map +1 -1
  13. package/dist/cjs/internal/browser-source.cjs +102 -0
  14. package/dist/cjs/internal/browser-source.cjs.map +10 -0
  15. package/dist/cjs/internal/client/connection.cjs +163 -172
  16. package/dist/cjs/internal/client/connection.cjs.map +3 -3
  17. package/dist/cjs/internal/daemon/callback-fs-handler.cjs +3 -3
  18. package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +3 -3
  19. package/dist/cjs/internal/daemon/connection.cjs +156 -13
  20. package/dist/cjs/internal/daemon/connection.cjs.map +3 -3
  21. package/dist/cjs/internal/playwright/client.cjs +4 -2
  22. package/dist/cjs/internal/playwright/client.cjs.map +3 -3
  23. package/dist/cjs/internal/playwright/handler.cjs +298 -25
  24. package/dist/cjs/internal/playwright/handler.cjs.map +3 -3
  25. package/dist/cjs/internal/playwright/index.cjs +54 -8
  26. package/dist/cjs/internal/playwright/index.cjs.map +3 -3
  27. package/dist/cjs/internal/playwright/types.cjs +3 -1
  28. package/dist/cjs/internal/playwright/types.cjs.map +3 -3
  29. package/dist/cjs/internal/protocol/codec.cjs +16 -5
  30. package/dist/cjs/internal/protocol/codec.cjs.map +3 -3
  31. package/dist/cjs/internal/protocol/marshalValue.cjs +37 -6
  32. package/dist/cjs/internal/protocol/marshalValue.cjs.map +3 -3
  33. package/dist/cjs/internal/protocol/types.cjs +2 -1
  34. package/dist/cjs/internal/protocol/types.cjs.map +3 -3
  35. package/dist/cjs/internal/runtime/index.cjs +377 -22
  36. package/dist/cjs/internal/runtime/index.cjs.map +3 -3
  37. package/dist/cjs/internal/typecheck/index.cjs +2 -1
  38. package/dist/cjs/internal/typecheck/index.cjs.map +3 -3
  39. package/dist/cjs/internal/typecheck/isolate-types.cjs +218 -13
  40. package/dist/cjs/internal/typecheck/isolate-types.cjs.map +3 -3
  41. package/dist/cjs/internal/typecheck/typecheck.cjs +2 -3
  42. package/dist/cjs/internal/typecheck/typecheck.cjs.map +3 -3
  43. package/dist/cjs/package.json +1 -1
  44. package/dist/cjs/playwright.cjs +76 -0
  45. package/dist/cjs/playwright.cjs.map +10 -0
  46. package/dist/cjs/runtime/namespaced-runtime.cjs +181 -0
  47. package/dist/cjs/runtime/namespaced-runtime.cjs.map +10 -0
  48. package/dist/cjs/runtime/script-runtime.cjs +14 -12
  49. package/dist/cjs/runtime/script-runtime.cjs.map +3 -3
  50. package/dist/cjs/runtime/test-runtime.cjs +113 -0
  51. package/dist/cjs/runtime/test-runtime.cjs.map +10 -0
  52. package/dist/cjs/server/app-server.cjs +16 -9
  53. package/dist/cjs/server/app-server.cjs.map +3 -3
  54. package/dist/cjs/typecheck/index.cjs +2 -1
  55. package/dist/cjs/typecheck/index.cjs.map +3 -3
  56. package/dist/mjs/bridge/diagnostics.mjs +37 -2
  57. package/dist/mjs/bridge/diagnostics.mjs.map +3 -3
  58. package/dist/mjs/bridge/runtime-bindings.mjs +233 -51
  59. package/dist/mjs/bridge/runtime-bindings.mjs.map +3 -3
  60. package/dist/mjs/bridge/sandbox-isolate.mjs +424 -0
  61. package/dist/mjs/bridge/sandbox-isolate.mjs.map +10 -0
  62. package/dist/mjs/host/create-isolate-host.mjs +132 -25
  63. package/dist/mjs/host/create-isolate-host.mjs.map +3 -3
  64. package/dist/mjs/host/nested-host-controller.mjs +333 -0
  65. package/dist/mjs/host/nested-host-controller.mjs.map +10 -0
  66. package/dist/mjs/index.mjs.map +1 -1
  67. package/dist/mjs/internal/browser-source.mjs +62 -0
  68. package/dist/mjs/internal/browser-source.mjs.map +10 -0
  69. package/dist/mjs/internal/client/connection.mjs +165 -173
  70. package/dist/mjs/internal/client/connection.mjs.map +3 -3
  71. package/dist/mjs/internal/daemon/callback-fs-handler.mjs +3 -3
  72. package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +3 -3
  73. package/dist/mjs/internal/daemon/connection.mjs +156 -13
  74. package/dist/mjs/internal/daemon/connection.mjs.map +3 -3
  75. package/dist/mjs/internal/playwright/client.mjs +7 -3
  76. package/dist/mjs/internal/playwright/client.mjs.map +3 -3
  77. package/dist/mjs/internal/playwright/handler.mjs +300 -26
  78. package/dist/mjs/internal/playwright/handler.mjs.map +3 -3
  79. package/dist/mjs/internal/playwright/index.mjs +59 -9
  80. package/dist/mjs/internal/playwright/index.mjs.map +3 -3
  81. package/dist/mjs/internal/playwright/types.mjs +3 -1
  82. package/dist/mjs/internal/playwright/types.mjs.map +3 -3
  83. package/dist/mjs/internal/protocol/codec.mjs +16 -5
  84. package/dist/mjs/internal/protocol/codec.mjs.map +3 -3
  85. package/dist/mjs/internal/protocol/marshalValue.mjs +38 -6
  86. package/dist/mjs/internal/protocol/marshalValue.mjs.map +3 -3
  87. package/dist/mjs/internal/protocol/types.mjs +2 -1
  88. package/dist/mjs/internal/protocol/types.mjs.map +3 -3
  89. package/dist/mjs/internal/runtime/index.mjs +377 -22
  90. package/dist/mjs/internal/runtime/index.mjs.map +3 -3
  91. package/dist/mjs/internal/typecheck/index.mjs +3 -1
  92. package/dist/mjs/internal/typecheck/index.mjs.map +3 -3
  93. package/dist/mjs/internal/typecheck/isolate-types.mjs +218 -13
  94. package/dist/mjs/internal/typecheck/isolate-types.mjs.map +3 -3
  95. package/dist/mjs/internal/typecheck/typecheck.mjs +2 -3
  96. package/dist/mjs/internal/typecheck/typecheck.mjs.map +3 -3
  97. package/dist/mjs/package.json +1 -1
  98. package/dist/mjs/playwright.mjs +47 -0
  99. package/dist/mjs/playwright.mjs.map +10 -0
  100. package/dist/mjs/runtime/namespaced-runtime.mjs +143 -0
  101. package/dist/mjs/runtime/namespaced-runtime.mjs.map +10 -0
  102. package/dist/mjs/runtime/script-runtime.mjs +16 -12
  103. package/dist/mjs/runtime/script-runtime.mjs.map +3 -3
  104. package/dist/mjs/runtime/test-runtime.mjs +78 -0
  105. package/dist/mjs/runtime/test-runtime.mjs.map +10 -0
  106. package/dist/mjs/server/app-server.mjs +23 -11
  107. package/dist/mjs/server/app-server.mjs.map +3 -3
  108. package/dist/mjs/typecheck/index.mjs +2 -1
  109. package/dist/mjs/typecheck/index.mjs.map +3 -3
  110. package/dist/types/bridge/diagnostics.d.ts +6 -1
  111. package/dist/types/bridge/runtime-bindings.d.ts +5 -1
  112. package/dist/types/bridge/sandbox-isolate.d.ts +21 -0
  113. package/dist/types/host/nested-host-controller.d.ts +15 -0
  114. package/dist/types/index.d.ts +1 -1
  115. package/dist/types/internal/browser-source.d.ts +10 -0
  116. package/dist/types/internal/client/types.d.ts +9 -0
  117. package/dist/types/internal/daemon/types.d.ts +0 -2
  118. package/dist/types/internal/playwright/client.d.ts +2 -2
  119. package/dist/types/internal/playwright/handler.d.ts +27 -4
  120. package/dist/types/internal/playwright/index.d.ts +2 -2
  121. package/dist/types/internal/playwright/types.d.ts +33 -1
  122. package/dist/types/internal/protocol/codec.d.ts +12 -2
  123. package/dist/types/internal/protocol/marshalValue.d.ts +3 -2
  124. package/dist/types/internal/protocol/types.d.ts +33 -2
  125. package/dist/types/internal/runtime/index.d.ts +5 -0
  126. package/dist/types/internal/typecheck/index.d.ts +1 -1
  127. package/dist/types/internal/typecheck/isolate-types.d.ts +6 -4
  128. package/dist/types/internal/typecheck/typecheck.d.ts +1 -1
  129. package/dist/types/playwright.d.ts +26 -0
  130. package/dist/types/runtime/namespaced-runtime.d.ts +11 -0
  131. package/dist/types/runtime/script-runtime.d.ts +2 -1
  132. package/dist/types/runtime/test-runtime.d.ts +4 -0
  133. package/dist/types/server/app-server.d.ts +2 -1
  134. package/dist/types/types.d.ts +75 -33
  135. package/package.json +8 -3
  136. package/dist/cjs/browser/browser-runtime.cjs +0 -157
  137. package/dist/cjs/browser/browser-runtime.cjs.map +0 -10
  138. package/dist/mjs/browser/browser-runtime.mjs +0 -93
  139. package/dist/mjs/browser/browser-runtime.mjs.map +0 -10
  140. package/dist/types/browser/browser-runtime.d.ts +0 -3
@@ -69,7 +69,9 @@ __export(exports_runtime_bindings, {
69
69
  });
70
70
  module.exports = __toCommonJS(exports_runtime_bindings);
71
71
  var import_node_path = __toESM(require("node:path"));
72
+ var import_client = require("../internal/playwright/client.cjs");
72
73
  var import_request_context = require("./request-context.cjs");
74
+ var import_sandbox_isolate = require("./sandbox-isolate.cjs");
73
75
  function createAbortError(reason) {
74
76
  if (reason instanceof Error) {
75
77
  return reason;
@@ -171,11 +173,30 @@ async function normalizeModuleResolveResult(specifier, result, fallbackResolveDi
171
173
  };
172
174
  }
173
175
  function isAsyncGeneratorFunction(handler) {
174
- return handler.constructor.name === "AsyncGeneratorFunction";
176
+ return handler.constructor.name === "AsyncGeneratorFunction" || handler.__isolateCallbackKind === "asyncGenerator";
175
177
  }
176
- function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
178
+ function isResponseDescriptor(value) {
179
+ return Boolean(value && typeof value === "object" && value.__type === "ResponseRef" && Array.isArray(value.headers));
180
+ }
181
+ function normalizeFetchResponse(value) {
182
+ if (value instanceof Response) {
183
+ return value;
184
+ }
185
+ if (isResponseDescriptor(value)) {
186
+ const body = value.body ? new Uint8Array(value.body) : null;
187
+ return new Response(body, {
188
+ status: value.status,
189
+ statusText: value.statusText,
190
+ headers: value.headers
191
+ });
192
+ }
193
+ throw new TypeError("Fetch bindings must return a Response.");
194
+ }
195
+ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics, options) {
177
196
  const contextFactory = createHostCallContextFactory(getRuntimeId);
178
- const moduleLoader = createModuleLoader(bindings.modules, contextFactory.createHostCallContext, diagnostics);
197
+ const moduleLoader = createModuleLoader(bindings.modules, contextFactory.createHostCallContext, diagnostics, options?.nestedHost);
198
+ const customFunctions = createCustomFunctions(bindings.tools, options?.nestedHost, contextFactory.createHostCallContext, diagnostics);
199
+ const browserPlaywright = createBrowserPlaywrightOptions(bindings.browser, contextFactory.createHostCallContext);
179
200
  return {
180
201
  runtimeOptions: {
181
202
  console: bindings.console?.onEntry ? {
@@ -195,7 +216,7 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
195
216
  body: init.rawBody ? init.rawBody.slice(0) : null,
196
217
  signal: context.signal
197
218
  });
198
- return await bindings.fetch(request, context);
219
+ return normalizeFetchResponse(await bindings.fetch(request, context));
199
220
  } finally {
200
221
  diagnostics.pendingFetches -= 1;
201
222
  diagnostics.activeResources -= 1;
@@ -246,12 +267,12 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
246
267
  diagnostics.activeResources -= 1;
247
268
  }
248
269
  } : undefined,
249
- mkdir: bindings.files.mkdir ? async (dirPath, options) => {
270
+ mkdir: bindings.files.mkdir ? async (dirPath, options2) => {
250
271
  diagnostics.pendingFiles += 1;
251
272
  diagnostics.activeResources += 1;
252
273
  try {
253
274
  const context = contextFactory.createHostCallContext(`files:mkdir:${crypto.randomUUID()}`);
254
- return await bindings.files.mkdir(dirPath, options, context);
275
+ return await bindings.files.mkdir(dirPath, options2, context);
255
276
  } finally {
256
277
  diagnostics.pendingFiles -= 1;
257
278
  diagnostics.activeResources -= 1;
@@ -292,62 +313,38 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
292
313
  } : undefined
293
314
  } : undefined,
294
315
  moduleLoader,
295
- customFunctions: bindings.tools ? Object.fromEntries(Object.entries(bindings.tools).map(([name, handler]) => {
296
- if (isAsyncGeneratorFunction(handler)) {
297
- return [
298
- name,
299
- {
300
- type: "asyncIterator",
301
- fn: (...args) => {
302
- diagnostics.pendingTools += 1;
303
- diagnostics.activeResources += 1;
304
- const context = contextFactory.createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
305
- const iterator = handler(...args, context);
306
- return async function* () {
307
- try {
308
- yield* iterator;
309
- } finally {
310
- diagnostics.pendingTools -= 1;
311
- diagnostics.activeResources -= 1;
312
- }
313
- }();
314
- }
315
- }
316
- ];
317
- }
318
- return [
319
- name,
320
- {
321
- type: "async",
322
- fn: async (...args) => {
323
- diagnostics.pendingTools += 1;
324
- diagnostics.activeResources += 1;
325
- try {
326
- const context = contextFactory.createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
327
- return await handler(...args, context);
328
- } finally {
329
- diagnostics.pendingTools -= 1;
330
- diagnostics.activeResources -= 1;
331
- }
332
- }
333
- }
334
- ];
335
- })) : undefined
316
+ customFunctions,
317
+ playwright: browserPlaywright
336
318
  },
337
319
  abort: contextFactory.abort,
338
320
  reset: contextFactory.reset
339
321
  };
340
322
  }
341
- function createModuleLoader(resolver, createHostCallContext, diagnostics) {
342
- if (!resolver) {
323
+ function createModuleLoader(resolver, createHostCallContext, diagnostics, nestedHost) {
324
+ if (!resolver && !nestedHost) {
343
325
  return;
344
326
  }
345
327
  return async (specifier, importer) => {
328
+ if (nestedHost && specifier === import_sandbox_isolate.SANDBOX_ISOLATE_MODULE_SPECIFIER) {
329
+ return {
330
+ code: import_sandbox_isolate.SANDBOX_ISOLATE_MODULE_SOURCE,
331
+ filename: "isolate-sandbox.js",
332
+ resolveDir: "/",
333
+ static: true
334
+ };
335
+ }
336
+ if (!resolver) {
337
+ throw new Error(`Unable to resolve module: ${specifier}`);
338
+ }
346
339
  diagnostics.pendingModules += 1;
347
340
  diagnostics.activeResources += 1;
348
341
  try {
349
342
  const context = createHostCallContext(`module:${crypto.randomUUID()}`);
350
- return await resolver.resolve(specifier, importer, context);
343
+ const resolved = await normalizeExplicitModuleResult(specifier, resolver.resolve(specifier, importer, context), importer.resolveDir);
344
+ if (!resolved) {
345
+ throw new Error(`Unable to resolve module: ${specifier}`);
346
+ }
347
+ return resolved;
351
348
  } finally {
352
349
  diagnostics.pendingModules -= 1;
353
350
  diagnostics.activeResources -= 1;
@@ -363,5 +360,187 @@ async function tryResolveModule(resolver, specifier, importer, context) {
363
360
  async function normalizeExplicitModuleResult(specifier, result, fallbackResolveDir) {
364
361
  return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);
365
362
  }
363
+ function createBrowserPlaywrightOptions(browser, createHostCallContext) {
364
+ if (!browser) {
365
+ return;
366
+ }
367
+ const hasHandler = typeof browser.handler === "function";
368
+ const hasFactoryBindings = typeof browser.createContext === "function" || typeof browser.createPage === "function" || typeof browser.readFile === "function" || typeof browser.writeFile === "function";
369
+ if (hasHandler && hasFactoryBindings) {
370
+ throw new Error("browser bindings must use either handler-first or factory-first mode, not both.");
371
+ }
372
+ if (hasHandler) {
373
+ return {
374
+ handler: browser.handler,
375
+ hasDefaultPage: false,
376
+ console: browser.captureConsole ?? false,
377
+ onEvent: browser.onEvent ? (event) => {
378
+ const context = createHostCallContext(`browser:event:${event.type}:${crypto.randomUUID()}`);
379
+ browser.onEvent?.(event, context);
380
+ } : undefined
381
+ };
382
+ }
383
+ return {
384
+ handler: import_client.createPlaywrightFactoryHandler({
385
+ createContext: browser.createContext ? async (options) => {
386
+ const context = createHostCallContext(`browser:createContext:${crypto.randomUUID()}`);
387
+ return await browser.createContext(options, context);
388
+ } : undefined,
389
+ createPage: browser.createPage ? async (contextHandle) => {
390
+ const context = createHostCallContext(`browser:createPage:${crypto.randomUUID()}`);
391
+ return await browser.createPage(contextHandle, context);
392
+ } : undefined,
393
+ readFile: browser.readFile ? async (filePath) => {
394
+ const context = createHostCallContext(`browser:readFile:${crypto.randomUUID()}`);
395
+ const buffer = await browser.readFile(filePath, context);
396
+ return {
397
+ name: import_node_path.default.basename(filePath),
398
+ mimeType: "application/octet-stream",
399
+ buffer
400
+ };
401
+ } : undefined,
402
+ writeFile: browser.writeFile ? async (filePath, data) => {
403
+ const context = createHostCallContext(`browser:writeFile:${crypto.randomUUID()}`);
404
+ await browser.writeFile(filePath, data, context);
405
+ } : undefined
406
+ }),
407
+ hasDefaultPage: false,
408
+ console: browser.captureConsole ?? false,
409
+ onEvent: browser.onEvent ? (event) => {
410
+ const context = createHostCallContext(`browser:event:${event.type}:${crypto.randomUUID()}`);
411
+ browser.onEvent?.(event, context);
412
+ } : undefined
413
+ };
414
+ }
415
+ function createCustomFunctions(tools, nestedHost, createHostCallContext, diagnostics) {
416
+ const definitions = {};
417
+ if (tools) {
418
+ for (const [name, handler] of Object.entries(tools)) {
419
+ if (isAsyncGeneratorFunction(handler)) {
420
+ definitions[name] = {
421
+ type: "asyncIterator",
422
+ fn: (...args) => {
423
+ diagnostics.pendingTools += 1;
424
+ diagnostics.activeResources += 1;
425
+ const context = createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
426
+ const iteratorResult = handler(...args, context);
427
+ return async function* () {
428
+ const iterator = await iteratorResult;
429
+ const iterable = iterator && typeof iterator[Symbol.asyncIterator] === "function" ? iterator : iterator && typeof iterator.next === "function" ? {
430
+ [Symbol.asyncIterator]() {
431
+ return iterator;
432
+ }
433
+ } : null;
434
+ try {
435
+ if (!iterable) {
436
+ throw new TypeError(`Tool ${name} did not return an async iterator.`);
437
+ }
438
+ yield* iterable;
439
+ } finally {
440
+ diagnostics.pendingTools -= 1;
441
+ diagnostics.activeResources -= 1;
442
+ }
443
+ }();
444
+ }
445
+ };
446
+ continue;
447
+ }
448
+ definitions[name] = {
449
+ type: "async",
450
+ fn: async (...args) => {
451
+ diagnostics.pendingTools += 1;
452
+ diagnostics.activeResources += 1;
453
+ try {
454
+ const context = createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
455
+ return await handler(...args, context);
456
+ } finally {
457
+ diagnostics.pendingTools -= 1;
458
+ diagnostics.activeResources -= 1;
459
+ }
460
+ }
461
+ };
462
+ }
463
+ }
464
+ if (nestedHost) {
465
+ const reservedNames = [
466
+ "__isolateHost_createHost",
467
+ "__isolateHost_closeHost",
468
+ "__isolateHost_hostDiagnostics",
469
+ "__isolateHost_createResource",
470
+ "__isolateHost_disposeNamespace",
471
+ "__isolateHost_callResource",
472
+ "__isolateHost_drainCallbacks"
473
+ ];
474
+ for (const name of reservedNames) {
475
+ if (definitions[name]) {
476
+ throw new Error(`Tool name ${name} is reserved for internal sandbox host bindings.`);
477
+ }
478
+ }
479
+ definitions.__isolateHost_createHost = {
480
+ type: "async",
481
+ fn: async () => {
482
+ const context = createHostCallContext(`nestedHost:createHost:${crypto.randomUUID()}`);
483
+ return await nestedHost.createHost(context);
484
+ }
485
+ };
486
+ definitions.__isolateHost_closeHost = {
487
+ type: "async",
488
+ fn: async (...args) => {
489
+ const hostId = args[0];
490
+ const context = createHostCallContext(`nestedHost:closeHost:${crypto.randomUUID()}`);
491
+ await nestedHost.closeHost(hostId, context);
492
+ }
493
+ };
494
+ definitions.__isolateHost_hostDiagnostics = {
495
+ type: "async",
496
+ fn: async (...args) => {
497
+ const hostId = args[0];
498
+ const context = createHostCallContext(`nestedHost:diagnostics:${crypto.randomUUID()}`);
499
+ return await nestedHost.diagnostics(hostId, context);
500
+ }
501
+ };
502
+ definitions.__isolateHost_createResource = {
503
+ type: "async",
504
+ fn: async (...args) => {
505
+ const hostId = args[0];
506
+ const kind = args[1];
507
+ const resourceOptions = args[2];
508
+ const context = createHostCallContext(`nestedHost:createResource:${kind}:${crypto.randomUUID()}`);
509
+ return await nestedHost.createResource(hostId, kind, resourceOptions, context);
510
+ }
511
+ };
512
+ definitions.__isolateHost_disposeNamespace = {
513
+ type: "async",
514
+ fn: async (...args) => {
515
+ const hostId = args[0];
516
+ const key = args[1];
517
+ const options = args[2] ?? undefined;
518
+ const context = createHostCallContext(`nestedHost:disposeNamespace:${crypto.randomUUID()}`);
519
+ await nestedHost.disposeNamespace(hostId, key, options, context);
520
+ }
521
+ };
522
+ definitions.__isolateHost_callResource = {
523
+ type: "async",
524
+ fn: async (...args) => {
525
+ const kind = args[0];
526
+ const resourceId = args[1];
527
+ const method = args[2];
528
+ const methodArgs = args[3];
529
+ const context = createHostCallContext(`nestedHost:callResource:${kind}:${method}:${crypto.randomUUID()}`);
530
+ return await nestedHost.callResource(kind, resourceId, method, Array.isArray(methodArgs) ? methodArgs : [], context);
531
+ }
532
+ };
533
+ definitions.__isolateHost_drainCallbacks = {
534
+ type: "async",
535
+ fn: async (...args) => {
536
+ const callback = args[0];
537
+ if (typeof callback === "function") {
538
+ await callback();
539
+ }
540
+ }
541
+ };
542
+ }
543
+ return Object.keys(definitions).length > 0 ? definitions : undefined;
544
+ }
366
545
 
367
- //# debugId=D27BEABC8CB87D9964756E2164756E21
546
+ //# debugId=993DC7FF17BB016D64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bridge/runtime-bindings.ts"],
4
4
  "sourcesContent": [
5
- "import path from \"node:path\";\nimport type { RuntimeOptions } from \"../internal/client/index.cjs\";\nimport type { ModuleLoaderCallback } from \"../internal/protocol/index.cjs\";\nimport { getRequestContext } from \"./request-context.cjs\";\nimport type {\n HostBindings,\n HostCallContext,\n ModuleResolveResult,\n ModuleResolver,\n ModuleSource,\n ToolHandler,\n} from \"../types.cjs\";\nimport type { MutableRuntimeDiagnostics } from \"./diagnostics.cjs\";\n\nexport interface RuntimeBindingsAdapter {\n runtimeOptions: RuntimeOptions;\n abort(reason?: unknown): void;\n reset(reason?: unknown): void;\n}\n\nfunction createAbortError(reason?: unknown): Error {\n if (reason instanceof Error) {\n return reason;\n }\n\n const error = new Error(\n typeof reason === \"string\" ? reason : \"The operation was aborted\",\n );\n error.name = \"AbortError\";\n return error;\n}\n\nfunction createAbortSignalComposer() {\n const controllers = new Set<AbortController>();\n\n const compose = (...signals: Array<AbortSignal | undefined>): AbortSignal => {\n const activeSignals = signals.filter(\n (signal): signal is AbortSignal => signal !== undefined,\n );\n\n if (activeSignals.length === 0) {\n return AbortSignal.abort(createAbortError());\n }\n\n const aborted = activeSignals.find((signal) => signal.aborted);\n if (aborted) {\n return AbortSignal.abort(aborted.reason ?? createAbortError());\n }\n\n if (activeSignals.length === 1) {\n return activeSignals[0]!;\n }\n\n const controller = new AbortController();\n controllers.add(controller);\n\n const cleanup = () => {\n for (const signal of activeSignals) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n controllers.delete(controller);\n };\n\n const onAbort = (event: Event) => {\n cleanup();\n const signal = event.target as AbortSignal | null;\n controller.abort(signal?.reason ?? createAbortError());\n };\n\n for (const signal of activeSignals) {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n controller.signal.addEventListener(\"abort\", cleanup, { once: true });\n\n return controller.signal;\n };\n\n const abortAll = (reason?: unknown) => {\n const error = createAbortError(reason);\n for (const controller of controllers) {\n if (!controller.signal.aborted) {\n controller.abort(error);\n }\n }\n controllers.clear();\n };\n\n return { compose, abortAll };\n}\n\nfunction createHostCallContextFactory(getRuntimeId: () => string) {\n let runtimeController = new AbortController();\n const composedSignals = createAbortSignalComposer();\n\n const createHostCallContext = (\n resourceId: string,\n baseSignal?: AbortSignal,\n ): HostCallContext => {\n const requestContext = getRequestContext();\n const ownerSignal = requestContext.signal ?? runtimeController.signal;\n const signal = baseSignal\n ? composedSignals.compose(ownerSignal, baseSignal)\n : ownerSignal;\n\n return {\n signal,\n runtimeId: getRuntimeId(),\n requestId: requestContext.requestId,\n resourceId,\n metadata: requestContext.metadata,\n };\n };\n\n const abort = (reason?: unknown) => {\n if (!runtimeController.signal.aborted) {\n runtimeController.abort(createAbortError(reason));\n }\n composedSignals.abortAll(reason);\n };\n\n const reset = (reason?: unknown) => {\n abort(reason);\n runtimeController = new AbortController();\n };\n\n return { createHostCallContext, abort, reset };\n}\n\nasync function normalizeModuleResolveResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n const resolved = await result;\n if (resolved == null) {\n return null;\n }\n\n if (typeof resolved === \"string\") {\n const filename = path.posix.basename(specifier) || \"__virtual_module__.js\";\n const resolveDir = specifier.startsWith(\"/\")\n ? path.posix.dirname(specifier)\n : fallbackResolveDir ?? \"/\";\n return {\n code: resolved,\n filename,\n resolveDir,\n };\n }\n\n return {\n static: resolved.static,\n filename: resolved.filename,\n resolveDir: resolved.resolveDir,\n code: resolved.code,\n };\n}\n\nfunction isAsyncGeneratorFunction(handler: ToolHandler): boolean {\n return handler.constructor.name === \"AsyncGeneratorFunction\";\n}\n\nexport function createRuntimeBindingsAdapter(\n bindings: HostBindings,\n getRuntimeId: () => string,\n diagnostics: MutableRuntimeDiagnostics,\n): RuntimeBindingsAdapter {\n const contextFactory = createHostCallContextFactory(getRuntimeId);\n const moduleLoader = createModuleLoader(\n bindings.modules,\n contextFactory.createHostCallContext,\n diagnostics,\n );\n\n return {\n runtimeOptions: {\n console: bindings.console?.onEntry\n ? {\n onEntry: (entry) => {\n const context = contextFactory.createHostCallContext(\n `console:${crypto.randomUUID()}`,\n );\n bindings.console?.onEntry?.(entry, context);\n },\n }\n : undefined,\n fetch: bindings.fetch\n ? async (url, init) => {\n diagnostics.pendingFetches += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `fetch:${crypto.randomUUID()}`,\n init.signal,\n );\n const request = new Request(url, {\n method: init.method,\n headers: init.headers,\n body: init.rawBody ? init.rawBody.slice(0) : null,\n signal: context.signal,\n });\n return await bindings.fetch!(request, context);\n } finally {\n diagnostics.pendingFetches -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n fs: bindings.files\n ? {\n readFile: bindings.files.readFile\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:read:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readFile!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n writeFile: bindings.files.writeFile\n ? async (filePath: string, data: ArrayBuffer) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:write:${crypto.randomUUID()}`,\n );\n return await bindings.files!.writeFile!(filePath, data, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n unlink: bindings.files.unlink\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:unlink:${crypto.randomUUID()}`,\n );\n return await bindings.files!.unlink!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n readdir: bindings.files.readdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:readdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n mkdir: bindings.files.mkdir\n ? async (dirPath: string, options?: { recursive?: boolean }) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:mkdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.mkdir!(dirPath, options, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rmdir: bindings.files.rmdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rmdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rmdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n stat: bindings.files.stat\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:stat:${crypto.randomUUID()}`,\n );\n return await bindings.files!.stat!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rename: bindings.files.rename\n ? async (from: string, to: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rename:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rename!(from, to, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n }\n : undefined,\n moduleLoader,\n customFunctions: bindings.tools\n ? Object.fromEntries(\n Object.entries(bindings.tools).map(([name, handler]) => {\n if (isAsyncGeneratorFunction(handler)) {\n return [\n name,\n {\n type: \"asyncIterator\" as const,\n fn: (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n const context = contextFactory.createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n const iterator = handler(\n ...args,\n context,\n ) as AsyncGenerator<unknown, unknown, unknown>;\n return (async function* () {\n try {\n yield* iterator;\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n })();\n },\n },\n ];\n }\n\n return [\n name,\n {\n type: \"async\" as const,\n fn: async (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n return await handler(...args, context);\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n },\n },\n ];\n }),\n )\n : undefined,\n },\n abort: contextFactory.abort,\n reset: contextFactory.reset,\n };\n}\n\nfunction createModuleLoader(\n resolver: ModuleResolver | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n): ModuleLoaderCallback | undefined {\n if (!resolver) {\n return undefined;\n }\n\n return async (specifier, importer) => {\n diagnostics.pendingModules += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(`module:${crypto.randomUUID()}`);\n return await resolver.resolve(specifier, importer, context);\n } finally {\n diagnostics.pendingModules -= 1;\n diagnostics.activeResources -= 1;\n }\n };\n}\n\nexport async function tryResolveModule(\n resolver: ModuleResolver | undefined,\n specifier: string,\n importer: { path: string; resolveDir: string },\n context: HostCallContext,\n): Promise<ModuleSource | null> {\n if (!resolver) {\n return null;\n }\n return normalizeModuleResolveResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n}\n\nexport async function normalizeExplicitModuleResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);\n}\n"
5
+ "import path from \"node:path\";\nimport type { RuntimeOptions } from \"../internal/client/index.cjs\";\nimport type { ModuleLoaderCallback } from \"../internal/protocol/index.cjs\";\nimport { createPlaywrightFactoryHandler } from \"../internal/playwright/client.cjs\";\nimport { getRequestContext } from \"./request-context.cjs\";\nimport {\n SANDBOX_ISOLATE_MODULE_SOURCE,\n SANDBOX_ISOLATE_MODULE_SPECIFIER,\n type NestedHostBindings,\n type NestedResourceKind,\n} from \"./sandbox-isolate.cjs\";\nimport type {\n CreateAppServerOptions,\n CreateNamespacedRuntimeOptions,\n CreateRuntimeOptions,\n CreateTestRuntimeOptions,\n HostBindings,\n HostCallContext,\n ModuleResolveResult,\n ModuleResolver,\n ModuleSource,\n ToolHandler,\n} from \"../types.cjs\";\nimport type { MutableRuntimeDiagnostics } from \"./diagnostics.cjs\";\n\nexport interface RuntimeBindingsAdapter {\n runtimeOptions: RuntimeOptions;\n abort(reason?: unknown): void;\n reset(reason?: unknown): void;\n}\n\nexport interface RuntimeBindingsAdapterOptions {\n nestedHost?: NestedHostBindings;\n}\n\ninterface ResponseDescriptor {\n __type: \"ResponseRef\";\n status: number;\n statusText: string;\n headers: Array<[string, string]>;\n body?: number[] | null;\n}\n\ninterface AsyncIteratorMarkedHandler {\n __isolateCallbackKind?: \"asyncGenerator\";\n}\n\nfunction createAbortError(reason?: unknown): Error {\n if (reason instanceof Error) {\n return reason;\n }\n\n const error = new Error(\n typeof reason === \"string\" ? reason : \"The operation was aborted\",\n );\n error.name = \"AbortError\";\n return error;\n}\n\nfunction createAbortSignalComposer() {\n const controllers = new Set<AbortController>();\n\n const compose = (...signals: Array<AbortSignal | undefined>): AbortSignal => {\n const activeSignals = signals.filter(\n (signal): signal is AbortSignal => signal !== undefined,\n );\n\n if (activeSignals.length === 0) {\n return AbortSignal.abort(createAbortError());\n }\n\n const aborted = activeSignals.find((signal) => signal.aborted);\n if (aborted) {\n return AbortSignal.abort(aborted.reason ?? createAbortError());\n }\n\n if (activeSignals.length === 1) {\n return activeSignals[0]!;\n }\n\n const controller = new AbortController();\n controllers.add(controller);\n\n const cleanup = () => {\n for (const signal of activeSignals) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n controllers.delete(controller);\n };\n\n const onAbort = (event: Event) => {\n cleanup();\n const signal = event.target as AbortSignal | null;\n controller.abort(signal?.reason ?? createAbortError());\n };\n\n for (const signal of activeSignals) {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n controller.signal.addEventListener(\"abort\", cleanup, { once: true });\n\n return controller.signal;\n };\n\n const abortAll = (reason?: unknown) => {\n const error = createAbortError(reason);\n for (const controller of controllers) {\n if (!controller.signal.aborted) {\n controller.abort(error);\n }\n }\n controllers.clear();\n };\n\n return { compose, abortAll };\n}\n\nfunction createHostCallContextFactory(getRuntimeId: () => string) {\n let runtimeController = new AbortController();\n const composedSignals = createAbortSignalComposer();\n\n const createHostCallContext = (\n resourceId: string,\n baseSignal?: AbortSignal,\n ): HostCallContext => {\n const requestContext = getRequestContext();\n const ownerSignal = requestContext.signal ?? runtimeController.signal;\n const signal = baseSignal\n ? composedSignals.compose(ownerSignal, baseSignal)\n : ownerSignal;\n\n return {\n signal,\n runtimeId: getRuntimeId(),\n requestId: requestContext.requestId,\n resourceId,\n metadata: requestContext.metadata,\n };\n };\n\n const abort = (reason?: unknown) => {\n if (!runtimeController.signal.aborted) {\n runtimeController.abort(createAbortError(reason));\n }\n composedSignals.abortAll(reason);\n };\n\n const reset = (reason?: unknown) => {\n abort(reason);\n runtimeController = new AbortController();\n };\n\n return { createHostCallContext, abort, reset };\n}\n\nasync function normalizeModuleResolveResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n const resolved = await result;\n if (resolved == null) {\n return null;\n }\n\n if (typeof resolved === \"string\") {\n const filename = path.posix.basename(specifier) || \"__virtual_module__.js\";\n const resolveDir = specifier.startsWith(\"/\")\n ? path.posix.dirname(specifier)\n : fallbackResolveDir ?? \"/\";\n return {\n code: resolved,\n filename,\n resolveDir,\n };\n }\n\n return {\n static: resolved.static,\n filename: resolved.filename,\n resolveDir: resolved.resolveDir,\n code: resolved.code,\n };\n}\n\nfunction isAsyncGeneratorFunction(handler: ToolHandler): boolean {\n return (\n handler.constructor.name === \"AsyncGeneratorFunction\" ||\n (handler as AsyncIteratorMarkedHandler).__isolateCallbackKind ===\n \"asyncGenerator\"\n );\n}\n\nfunction isResponseDescriptor(value: unknown): value is ResponseDescriptor {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n (value as { __type?: unknown }).__type === \"ResponseRef\" &&\n Array.isArray((value as { headers?: unknown }).headers),\n );\n}\n\nfunction normalizeFetchResponse(value: unknown): Response {\n if (value instanceof Response) {\n return value;\n }\n\n if (isResponseDescriptor(value)) {\n const body = value.body ? new Uint8Array(value.body) : null;\n return new Response(body, {\n status: value.status,\n statusText: value.statusText,\n headers: value.headers,\n });\n }\n\n throw new TypeError(\"Fetch bindings must return a Response.\");\n}\n\nexport function createRuntimeBindingsAdapter(\n bindings: HostBindings,\n getRuntimeId: () => string,\n diagnostics: MutableRuntimeDiagnostics,\n options?: RuntimeBindingsAdapterOptions,\n): RuntimeBindingsAdapter {\n const contextFactory = createHostCallContextFactory(getRuntimeId);\n const moduleLoader = createModuleLoader(\n bindings.modules,\n contextFactory.createHostCallContext,\n diagnostics,\n options?.nestedHost,\n );\n const customFunctions = createCustomFunctions(\n bindings.tools,\n options?.nestedHost,\n contextFactory.createHostCallContext,\n diagnostics,\n );\n const browserPlaywright = createBrowserPlaywrightOptions(\n bindings.browser,\n contextFactory.createHostCallContext,\n );\n\n return {\n runtimeOptions: {\n console: bindings.console?.onEntry\n ? {\n onEntry: (entry) => {\n const context = contextFactory.createHostCallContext(\n `console:${crypto.randomUUID()}`,\n );\n bindings.console?.onEntry?.(entry, context);\n },\n }\n : undefined,\n fetch: bindings.fetch\n ? async (url, init) => {\n diagnostics.pendingFetches += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `fetch:${crypto.randomUUID()}`,\n init.signal,\n );\n const request = new Request(url, {\n method: init.method,\n headers: init.headers,\n body: init.rawBody ? init.rawBody.slice(0) : null,\n signal: context.signal,\n });\n return normalizeFetchResponse(\n await bindings.fetch!(request, context),\n );\n } finally {\n diagnostics.pendingFetches -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n fs: bindings.files\n ? {\n readFile: bindings.files.readFile\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:read:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readFile!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n writeFile: bindings.files.writeFile\n ? async (filePath: string, data: ArrayBuffer) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:write:${crypto.randomUUID()}`,\n );\n return await bindings.files!.writeFile!(filePath, data, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n unlink: bindings.files.unlink\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:unlink:${crypto.randomUUID()}`,\n );\n return await bindings.files!.unlink!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n readdir: bindings.files.readdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:readdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n mkdir: bindings.files.mkdir\n ? async (dirPath: string, options?: { recursive?: boolean }) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:mkdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.mkdir!(dirPath, options, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rmdir: bindings.files.rmdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rmdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rmdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n stat: bindings.files.stat\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:stat:${crypto.randomUUID()}`,\n );\n return await bindings.files!.stat!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rename: bindings.files.rename\n ? async (from: string, to: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rename:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rename!(from, to, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n }\n : undefined,\n moduleLoader,\n customFunctions,\n playwright: browserPlaywright,\n },\n abort: contextFactory.abort,\n reset: contextFactory.reset,\n };\n}\n\nfunction createModuleLoader(\n resolver: ModuleResolver | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n nestedHost: NestedHostBindings | undefined,\n): ModuleLoaderCallback | undefined {\n if (!resolver && !nestedHost) {\n return undefined;\n }\n\n return async (specifier, importer) => {\n if (nestedHost && specifier === SANDBOX_ISOLATE_MODULE_SPECIFIER) {\n return {\n code: SANDBOX_ISOLATE_MODULE_SOURCE,\n filename: \"isolate-sandbox.js\",\n resolveDir: \"/\",\n static: true,\n };\n }\n\n if (!resolver) {\n throw new Error(`Unable to resolve module: ${specifier}`);\n }\n\n diagnostics.pendingModules += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(`module:${crypto.randomUUID()}`);\n const resolved = await normalizeExplicitModuleResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n if (!resolved) {\n throw new Error(`Unable to resolve module: ${specifier}`);\n }\n return resolved;\n } finally {\n diagnostics.pendingModules -= 1;\n diagnostics.activeResources -= 1;\n }\n };\n}\n\nexport async function tryResolveModule(\n resolver: ModuleResolver | undefined,\n specifier: string,\n importer: { path: string; resolveDir: string },\n context: HostCallContext,\n): Promise<ModuleSource | null> {\n if (!resolver) {\n return null;\n }\n return normalizeModuleResolveResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n}\n\nexport async function normalizeExplicitModuleResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);\n}\n\nfunction createBrowserPlaywrightOptions(\n browser: HostBindings[\"browser\"] | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n): RuntimeOptions[\"playwright\"] | undefined {\n if (!browser) {\n return undefined;\n }\n\n const hasHandler = typeof browser.handler === \"function\";\n const hasFactoryBindings =\n typeof browser.createContext === \"function\" ||\n typeof browser.createPage === \"function\" ||\n typeof browser.readFile === \"function\" ||\n typeof browser.writeFile === \"function\";\n\n if (hasHandler && hasFactoryBindings) {\n throw new Error(\n \"browser bindings must use either handler-first or factory-first mode, not both.\",\n );\n }\n\n if (hasHandler) {\n return {\n handler: browser.handler,\n hasDefaultPage: false,\n console: browser.captureConsole ?? false,\n onEvent: browser.onEvent\n ? (event) => {\n const context = createHostCallContext(\n `browser:event:${event.type}:${crypto.randomUUID()}`,\n );\n browser.onEvent?.(event, context);\n }\n : undefined,\n };\n }\n\n return {\n handler: createPlaywrightFactoryHandler({\n createContext: browser.createContext\n ? async (options) => {\n const context = createHostCallContext(\n `browser:createContext:${crypto.randomUUID()}`,\n );\n return await browser.createContext!(options, context);\n }\n : undefined,\n createPage: browser.createPage\n ? async (contextHandle) => {\n const context = createHostCallContext(\n `browser:createPage:${crypto.randomUUID()}`,\n );\n return await browser.createPage!(contextHandle, context);\n }\n : undefined,\n readFile: browser.readFile\n ? async (filePath) => {\n const context = createHostCallContext(\n `browser:readFile:${crypto.randomUUID()}`,\n );\n const buffer = await browser.readFile!(filePath, context);\n return {\n name: path.basename(filePath),\n mimeType: \"application/octet-stream\",\n buffer,\n };\n }\n : undefined,\n writeFile: browser.writeFile\n ? async (filePath, data) => {\n const context = createHostCallContext(\n `browser:writeFile:${crypto.randomUUID()}`,\n );\n await browser.writeFile!(filePath, data, context);\n }\n : undefined,\n }),\n hasDefaultPage: false,\n console: browser.captureConsole ?? false,\n onEvent: browser.onEvent\n ? (event) => {\n const context = createHostCallContext(\n `browser:event:${event.type}:${crypto.randomUUID()}`,\n );\n browser.onEvent?.(event, context);\n }\n : undefined,\n };\n}\n\nfunction createCustomFunctions(\n tools: HostBindings[\"tools\"] | undefined,\n nestedHost: NestedHostBindings | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n): RuntimeOptions[\"customFunctions\"] {\n const definitions: NonNullable<RuntimeOptions[\"customFunctions\"]> = {};\n\n if (tools) {\n for (const [name, handler] of Object.entries(tools)) {\n if (isAsyncGeneratorFunction(handler)) {\n definitions[name] = {\n type: \"asyncIterator\",\n fn: (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n const context = createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n const iteratorResult = handler(\n ...args,\n context,\n ) as\n | AsyncIterable<unknown>\n | Promise<AsyncIterable<unknown>>;\n return (async function* () {\n const iterator = await iteratorResult;\n const iterable =\n iterator &&\n typeof (iterator as { [Symbol.asyncIterator]?: unknown })[\n Symbol.asyncIterator\n ] === \"function\"\n ? (iterator as AsyncIterable<unknown>)\n : iterator &&\n typeof (iterator as { next?: unknown }).next === \"function\"\n ? {\n [Symbol.asyncIterator]() {\n return iterator as unknown as AsyncIterator<unknown>;\n },\n }\n : null;\n try {\n if (!iterable) {\n throw new TypeError(\n `Tool ${name} did not return an async iterator.`,\n );\n }\n yield* iterable;\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n })();\n },\n };\n continue;\n }\n\n definitions[name] = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n return await handler(...args, context);\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n },\n };\n }\n }\n\n if (nestedHost) {\n const reservedNames = [\n \"__isolateHost_createHost\",\n \"__isolateHost_closeHost\",\n \"__isolateHost_hostDiagnostics\",\n \"__isolateHost_createResource\",\n \"__isolateHost_disposeNamespace\",\n \"__isolateHost_callResource\",\n \"__isolateHost_drainCallbacks\",\n ];\n for (const name of reservedNames) {\n if (definitions[name]) {\n throw new Error(\n `Tool name ${name} is reserved for internal sandbox host bindings.`,\n );\n }\n }\n\n definitions.__isolateHost_createHost = {\n type: \"async\",\n fn: async () => {\n const context = createHostCallContext(\n `nestedHost:createHost:${crypto.randomUUID()}`,\n );\n return await nestedHost.createHost(context);\n },\n };\n definitions.__isolateHost_closeHost = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const context = createHostCallContext(\n `nestedHost:closeHost:${crypto.randomUUID()}`,\n );\n await nestedHost.closeHost(hostId, context);\n },\n };\n definitions.__isolateHost_hostDiagnostics = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const context = createHostCallContext(\n `nestedHost:diagnostics:${crypto.randomUUID()}`,\n );\n return await nestedHost.diagnostics(hostId, context);\n },\n };\n definitions.__isolateHost_createResource = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const kind = args[1] as NestedResourceKind;\n const resourceOptions = args[2] as\n | CreateRuntimeOptions\n | CreateAppServerOptions\n | CreateTestRuntimeOptions\n | {\n key: string;\n options: CreateNamespacedRuntimeOptions;\n };\n const context = createHostCallContext(\n `nestedHost:createResource:${kind}:${crypto.randomUUID()}`,\n );\n return await nestedHost.createResource(\n hostId,\n kind,\n resourceOptions,\n context,\n );\n },\n };\n definitions.__isolateHost_disposeNamespace = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const key = args[1] as string;\n const options =\n ((args[2] as { reason?: string } | null) ?? undefined);\n const context = createHostCallContext(\n `nestedHost:disposeNamespace:${crypto.randomUUID()}`,\n );\n await nestedHost.disposeNamespace(hostId, key, options, context);\n },\n };\n definitions.__isolateHost_callResource = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const kind = args[0] as NestedResourceKind;\n const resourceId = args[1] as string;\n const method = args[2] as string;\n const methodArgs = args[3] as unknown[];\n const context = createHostCallContext(\n `nestedHost:callResource:${kind}:${method}:${crypto.randomUUID()}`,\n );\n return await nestedHost.callResource(\n kind,\n resourceId,\n method,\n Array.isArray(methodArgs) ? methodArgs : [],\n context,\n );\n },\n };\n definitions.__isolateHost_drainCallbacks = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const callback = args[0];\n if (typeof callback === \"function\") {\n await callback();\n }\n },\n };\n }\n\n return Object.keys(definitions).length > 0 ? definitions : undefined;\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "D27BEABC8CB87D9964756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "993DC7FF17BB016D64756E2164756E21",
9
9
  "names": []
10
10
  }