@workglow/tasks 0.2.26 → 0.2.28

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 (133) hide show
  1. package/dist/browser.d.ts +1 -5
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +2542 -11979
  4. package/dist/browser.js.map +5 -56
  5. package/dist/bun.d.ts +1 -6
  6. package/dist/bun.d.ts.map +1 -1
  7. package/dist/bun.js +2204 -12152
  8. package/dist/bun.js.map +5 -58
  9. package/dist/common.d.ts +1 -21
  10. package/dist/common.d.ts.map +1 -1
  11. package/dist/electron.d.ts +1 -7
  12. package/dist/electron.d.ts.map +1 -1
  13. package/dist/electron.js +2200 -12367
  14. package/dist/electron.js.map +5 -59
  15. package/dist/node.d.ts +1 -6
  16. package/dist/node.d.ts.map +1 -1
  17. package/dist/node.js +2204 -12152
  18. package/dist/node.js.map +5 -58
  19. package/package.json +10 -16
  20. package/dist/mcp-server/InMemoryMcpServerRepository.d.ts +0 -10
  21. package/dist/mcp-server/InMemoryMcpServerRepository.d.ts.map +0 -1
  22. package/dist/mcp-server/McpServerRegistry.d.ts +0 -18
  23. package/dist/mcp-server/McpServerRegistry.d.ts.map +0 -1
  24. package/dist/mcp-server/McpServerRepository.d.ts +0 -34
  25. package/dist/mcp-server/McpServerRepository.d.ts.map +0 -1
  26. package/dist/mcp-server/McpServerSchema.d.ts +0 -127
  27. package/dist/mcp-server/McpServerSchema.d.ts.map +0 -1
  28. package/dist/mcp-server/getMcpServerConfig.d.ts +0 -14
  29. package/dist/mcp-server/getMcpServerConfig.d.ts.map +0 -1
  30. package/dist/mcp-server/mcpServerReferenceObjectSchema.d.ts +0 -37
  31. package/dist/mcp-server/mcpServerReferenceObjectSchema.d.ts.map +0 -1
  32. package/dist/server.d.ts +0 -8
  33. package/dist/server.d.ts.map +0 -1
  34. package/dist/task/JavaScriptTask.d.ts +0 -153
  35. package/dist/task/JavaScriptTask.d.ts.map +0 -1
  36. package/dist/task/McpElicitationConnector.d.ts +0 -40
  37. package/dist/task/McpElicitationConnector.d.ts.map +0 -1
  38. package/dist/task/browser-control/BrowserSessionRegistry.d.ts +0 -34
  39. package/dist/task/browser-control/BrowserSessionRegistry.d.ts.map +0 -1
  40. package/dist/task/browser-control/BunWebViewBackend.d.ts +0 -59
  41. package/dist/task/browser-control/BunWebViewBackend.d.ts.map +0 -1
  42. package/dist/task/browser-control/CDPBrowserBackend.d.ts +0 -52
  43. package/dist/task/browser-control/CDPBrowserBackend.d.ts.map +0 -1
  44. package/dist/task/browser-control/ElectronBackend.d.ts +0 -57
  45. package/dist/task/browser-control/ElectronBackend.d.ts.map +0 -1
  46. package/dist/task/browser-control/IBrowserContext.d.ts +0 -177
  47. package/dist/task/browser-control/IBrowserContext.d.ts.map +0 -1
  48. package/dist/task/browser-control/PlaywrightBackend.d.ts +0 -78
  49. package/dist/task/browser-control/PlaywrightBackend.d.ts.map +0 -1
  50. package/dist/task/browser-control/index.d.ts +0 -11
  51. package/dist/task/browser-control/index.d.ts.map +0 -1
  52. package/dist/task/browser-control/register.d.ts +0 -34
  53. package/dist/task/browser-control/register.d.ts.map +0 -1
  54. package/dist/task/browser-control/tasks/BrowserAttributeTask.d.ts +0 -84
  55. package/dist/task/browser-control/tasks/BrowserAttributeTask.d.ts.map +0 -1
  56. package/dist/task/browser-control/tasks/BrowserBackTask.d.ts +0 -78
  57. package/dist/task/browser-control/tasks/BrowserBackTask.d.ts.map +0 -1
  58. package/dist/task/browser-control/tasks/BrowserClickTask.d.ts +0 -101
  59. package/dist/task/browser-control/tasks/BrowserClickTask.d.ts.map +0 -1
  60. package/dist/task/browser-control/tasks/BrowserCloseTabTask.d.ts +0 -71
  61. package/dist/task/browser-control/tasks/BrowserCloseTabTask.d.ts.map +0 -1
  62. package/dist/task/browser-control/tasks/BrowserCloseTask.d.ts +0 -54
  63. package/dist/task/browser-control/tasks/BrowserCloseTask.d.ts.map +0 -1
  64. package/dist/task/browser-control/tasks/BrowserEvaluateTask.d.ts +0 -74
  65. package/dist/task/browser-control/tasks/BrowserEvaluateTask.d.ts.map +0 -1
  66. package/dist/task/browser-control/tasks/BrowserExtractHtmlTask.d.ts +0 -82
  67. package/dist/task/browser-control/tasks/BrowserExtractHtmlTask.d.ts.map +0 -1
  68. package/dist/task/browser-control/tasks/BrowserExtractTextTask.d.ts +0 -81
  69. package/dist/task/browser-control/tasks/BrowserExtractTextTask.d.ts.map +0 -1
  70. package/dist/task/browser-control/tasks/BrowserFillTask.d.ts +0 -101
  71. package/dist/task/browser-control/tasks/BrowserFillTask.d.ts.map +0 -1
  72. package/dist/task/browser-control/tasks/BrowserForwardTask.d.ts +0 -78
  73. package/dist/task/browser-control/tasks/BrowserForwardTask.d.ts.map +0 -1
  74. package/dist/task/browser-control/tasks/BrowserHoverTask.d.ts +0 -98
  75. package/dist/task/browser-control/tasks/BrowserHoverTask.d.ts.map +0 -1
  76. package/dist/task/browser-control/tasks/BrowserLoginTask.d.ts +0 -87
  77. package/dist/task/browser-control/tasks/BrowserLoginTask.d.ts.map +0 -1
  78. package/dist/task/browser-control/tasks/BrowserNavigateTask.d.ts +0 -104
  79. package/dist/task/browser-control/tasks/BrowserNavigateTask.d.ts.map +0 -1
  80. package/dist/task/browser-control/tasks/BrowserNewTabTask.d.ts +0 -89
  81. package/dist/task/browser-control/tasks/BrowserNewTabTask.d.ts.map +0 -1
  82. package/dist/task/browser-control/tasks/BrowserPressKeyTask.d.ts +0 -82
  83. package/dist/task/browser-control/tasks/BrowserPressKeyTask.d.ts.map +0 -1
  84. package/dist/task/browser-control/tasks/BrowserQuerySelectorTask.d.ts +0 -94
  85. package/dist/task/browser-control/tasks/BrowserQuerySelectorTask.d.ts.map +0 -1
  86. package/dist/task/browser-control/tasks/BrowserReloadTask.d.ts +0 -68
  87. package/dist/task/browser-control/tasks/BrowserReloadTask.d.ts.map +0 -1
  88. package/dist/task/browser-control/tasks/BrowserScreenshotTask.d.ts +0 -69
  89. package/dist/task/browser-control/tasks/BrowserScreenshotTask.d.ts.map +0 -1
  90. package/dist/task/browser-control/tasks/BrowserScrollTask.d.ts +0 -73
  91. package/dist/task/browser-control/tasks/BrowserScrollTask.d.ts.map +0 -1
  92. package/dist/task/browser-control/tasks/BrowserSelectTask.d.ts +0 -98
  93. package/dist/task/browser-control/tasks/BrowserSelectTask.d.ts.map +0 -1
  94. package/dist/task/browser-control/tasks/BrowserSessionTask.d.ts +0 -63
  95. package/dist/task/browser-control/tasks/BrowserSessionTask.d.ts.map +0 -1
  96. package/dist/task/browser-control/tasks/BrowserSnapshotTask.d.ts +0 -66
  97. package/dist/task/browser-control/tasks/BrowserSnapshotTask.d.ts.map +0 -1
  98. package/dist/task/browser-control/tasks/BrowserSwitchTabTask.d.ts +0 -79
  99. package/dist/task/browser-control/tasks/BrowserSwitchTabTask.d.ts.map +0 -1
  100. package/dist/task/browser-control/tasks/BrowserTypeTask.d.ts +0 -79
  101. package/dist/task/browser-control/tasks/BrowserTypeTask.d.ts.map +0 -1
  102. package/dist/task/browser-control/tasks/BrowserUploadTask.d.ts +0 -96
  103. package/dist/task/browser-control/tasks/BrowserUploadTask.d.ts.map +0 -1
  104. package/dist/task/browser-control/tasks/BrowserWaitTask.d.ts +0 -73
  105. package/dist/task/browser-control/tasks/BrowserWaitTask.d.ts.map +0 -1
  106. package/dist/task/browser-control/tasks/index.d.ts +0 -32
  107. package/dist/task/browser-control/tasks/index.d.ts.map +0 -1
  108. package/dist/task/mcp/McpListTask.d.ts +0 -572
  109. package/dist/task/mcp/McpListTask.d.ts.map +0 -1
  110. package/dist/task/mcp/McpPromptGetTask.d.ts +0 -591
  111. package/dist/task/mcp/McpPromptGetTask.d.ts.map +0 -1
  112. package/dist/task/mcp/McpResourceReadTask.d.ts +0 -148
  113. package/dist/task/mcp/McpResourceReadTask.d.ts.map +0 -1
  114. package/dist/task/mcp/McpSearchTask.d.ts +0 -111
  115. package/dist/task/mcp/McpSearchTask.d.ts.map +0 -1
  116. package/dist/task/mcp/McpToolCallTask.d.ts +0 -309
  117. package/dist/task/mcp/McpToolCallTask.d.ts.map +0 -1
  118. package/dist/util/BrowserTaskDeps.d.ts +0 -21
  119. package/dist/util/BrowserTaskDeps.d.ts.map +0 -1
  120. package/dist/util/McpAuthProvider.d.ts +0 -70
  121. package/dist/util/McpAuthProvider.d.ts.map +0 -1
  122. package/dist/util/McpAuthTypes.d.ts +0 -217
  123. package/dist/util/McpAuthTypes.d.ts.map +0 -1
  124. package/dist/util/McpClientUtil.d.ts +0 -121
  125. package/dist/util/McpClientUtil.d.ts.map +0 -1
  126. package/dist/util/McpTaskDeps.d.ts +0 -41
  127. package/dist/util/McpTaskDeps.d.ts.map +0 -1
  128. package/dist/util/acorn.d.ts +0 -14
  129. package/dist/util/acorn.d.ts.map +0 -1
  130. package/dist/util/getMcpServerTransport.d.ts +0 -13
  131. package/dist/util/getMcpServerTransport.d.ts.map +0 -1
  132. package/dist/util/interpreter.d.ts +0 -17
  133. package/dist/util/interpreter.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/task/image/registerImageRasterCodec.browser.ts", "../src/task/image/imageCodecLimits.ts", "../src/task/image/imageRasterCodecBrowser.ts", "../src/task/image/blur/blur.cpu.ts", "../src/task/image/border/border.cpu.ts", "../src/task/image/brightness/brightness.cpu.ts", "../src/task/image/contrast/contrast.cpu.ts", "../src/task/image/crop/crop.cpu.ts", "../src/task/image/flip/flip.cpu.ts", "../src/task/image/grayscale/grayscale.cpu.ts", "../src/task/image/invert/invert.cpu.ts", "../src/task/image/pixelate/pixelate.cpu.ts", "../src/task/image/posterize/posterize.cpu.ts", "../src/task/image/resize/resize.cpu.ts", "../src/task/image/rotate/rotate.cpu.ts", "../src/task/image/sepia/sepia.cpu.ts", "../src/task/image/threshold/threshold.cpu.ts", "../src/task/image/tint/tint.cpu.ts", "../src/task/image/transparency/transparency.cpu.ts", "../src/task/image/blur/blur.webgpu.ts", "../src/task/image/border/border.webgpu.ts", "../src/task/image/brightness/brightness.webgpu.ts", "../src/task/image/contrast/contrast.webgpu.ts", "../src/task/image/crop/crop.webgpu.ts", "../src/task/image/flip/flip.webgpu.ts", "../src/task/image/grayscale/grayscale.webgpu.ts", "../src/task/image/invert/invert.webgpu.ts", "../src/task/image/pixelate/pixelate.webgpu.ts", "../src/task/image/posterize/posterize.webgpu.ts", "../src/task/image/resize/resize.webgpu.ts", "../src/task/image/rotate/rotate.webgpu.ts", "../src/task/image/sepia/sepia.webgpu.ts", "../src/task/image/threshold/threshold.webgpu.ts", "../src/task/image/tint/tint.webgpu.ts", "../src/task/image/transparency/transparency.webgpu.ts", "../src/codec.browser.ts", "../src/task/image/imageTextRender.ts", "../src/task/image/imageTextRender.browser.ts", "../src/task/image/registerImageTextRenderer.browser.ts", "../src/task/adaptive.ts", "../src/task/scalar/ScalarAddTask.ts", "../src/task/scalar/sumPrecise.ts", "../src/task/scalar/ScalarDivideTask.ts", "../src/task/scalar/ScalarMultiplyTask.ts", "../src/task/scalar/ScalarSubtractTask.ts", "../src/task/scalar/ScalarSumTask.ts", "../src/task/vector/VectorDivideTask.ts", "../src/task/vector/VectorMultiplyTask.ts", "../src/task/vector/VectorSubtractTask.ts", "../src/task/vector/VectorSumTask.ts", "../src/mcp-server/getMcpServerConfig.ts", "../src/mcp-server/InMemoryMcpServerRepository.ts", "../src/mcp-server/McpServerRepository.ts", "../src/util/McpClientUtil.ts", "../src/util/McpAuthProvider.ts", "../src/util/McpAuthTypes.ts", "../src/util/McpTaskDeps.ts", "../src/mcp-server/mcpServerReferenceObjectSchema.ts", "../src/mcp-server/McpServerSchema.ts", "../src/mcp-server/McpServerRegistry.ts", "../src/task/ArrayTask.ts", "../src/task/browser-control/BrowserSessionRegistry.ts", "../src/task/browser-control/BunWebViewBackend.ts", "../src/task/browser-control/CDPBrowserBackend.ts", "../src/task/browser-control/tasks/BrowserSessionTask.ts", "../src/util/BrowserTaskDeps.ts", "../src/task/browser-control/tasks/BrowserCloseTask.ts", "../src/task/browser-control/tasks/BrowserNavigateTask.ts", "../src/task/browser-control/tasks/BrowserBackTask.ts", "../src/task/browser-control/tasks/BrowserForwardTask.ts", "../src/task/browser-control/tasks/BrowserReloadTask.ts", "../src/task/browser-control/tasks/BrowserSnapshotTask.ts", "../src/task/browser-control/tasks/BrowserScreenshotTask.ts", "../src/task/browser-control/tasks/BrowserClickTask.ts", "../src/task/browser-control/tasks/BrowserFillTask.ts", "../src/task/browser-control/tasks/BrowserSelectTask.ts", "../src/task/browser-control/tasks/BrowserHoverTask.ts", "../src/task/browser-control/tasks/BrowserExtractTextTask.ts", "../src/task/browser-control/tasks/BrowserExtractHtmlTask.ts", "../src/task/browser-control/tasks/BrowserAttributeTask.ts", "../src/task/browser-control/tasks/BrowserQuerySelectorTask.ts", "../src/task/browser-control/tasks/BrowserEvaluateTask.ts", "../src/task/browser-control/tasks/BrowserPressKeyTask.ts", "../src/task/browser-control/tasks/BrowserTypeTask.ts", "../src/task/browser-control/tasks/BrowserScrollTask.ts", "../src/task/browser-control/tasks/BrowserUploadTask.ts", "../src/task/browser-control/tasks/BrowserWaitTask.ts", "../src/task/browser-control/tasks/BrowserNewTabTask.ts", "../src/task/browser-control/tasks/BrowserSwitchTabTask.ts", "../src/task/browser-control/tasks/BrowserCloseTabTask.ts", "../src/task/browser-control/tasks/BrowserLoginTask.ts", "../src/task/DateFormatTask.ts", "../src/task/DebugLogTask.ts", "../src/task/DelayTask.ts", "../src/task/FetchUrlTask.ts", "../src/util/SafeFetch.ts", "../src/util/UrlClassifier.ts", "../src/task/HumanApprovalTask.ts", "../src/task/HumanInputTask.ts", "../src/common.ts", "../src/task/image/ImageFilterTask.ts", "../src/task/image/blur/ImageBlurTask.ts", "../src/task/image/border/ImageBorderTask.ts", "../src/task/image/brightness/ImageBrightnessTask.ts", "../src/task/image/contrast/ImageContrastTask.ts", "../src/task/image/crop/ImageCropTask.ts", "../src/task/image/flip/ImageFlipTask.ts", "../src/task/image/grayscale/ImageGrayscaleTask.ts", "../src/task/image/invert/ImageInvertTask.ts", "../src/task/image/pixelate/ImagePixelateTask.ts", "../src/task/image/posterize/ImagePosterizeTask.ts", "../src/task/image/imageRasterCodecRegistry.ts", "../src/task/image/resize/ImageResizeTask.ts", "../src/task/image/rotate/ImageRotateTask.ts", "../src/task/image/ImageSchemas.ts", "../src/task/image/sepia/ImageSepiaTask.ts", "../src/task/image/text/ImageTextTask.ts", "../src/task/image/threshold/ImageThresholdTask.ts", "../src/task/image/tint/ImageTintTask.ts", "../src/task/image/transparency/ImageTransparencyTask.ts", "../src/task/InputTask.ts", "../src/task/JavaScriptTask.ts", "../src/util/acorn.js", "../src/util/interpreter.js", "../src/task/JsonPathTask.ts", "../src/task/JsonTask.ts", "../src/task/LambdaTask.ts", "../src/task/mcp/McpListTask.ts", "../src/util/getMcpServerTransport.ts", "../src/task/mcp/McpPromptGetTask.ts", "../src/task/mcp/McpResourceReadTask.ts", "../src/task/mcp/McpSearchTask.ts", "../src/task/mcp/McpToolCallTask.ts", "../src/task/McpElicitationConnector.ts", "../src/task/MergeTask.ts", "../src/task/OutputTask.ts", "../src/task/RegexTask.ts", "../src/task/scalar/ScalarAbsTask.ts", "../src/task/scalar/ScalarCeilTask.ts", "../src/task/scalar/ScalarFloorTask.ts", "../src/task/scalar/ScalarMaxTask.ts", "../src/task/scalar/ScalarMinTask.ts", "../src/task/scalar/ScalarRoundTask.ts", "../src/task/scalar/ScalarTruncTask.ts", "../src/task/SplitTask.ts", "../src/task/string/StringConcatTask.ts", "../src/task/string/StringIncludesTask.ts", "../src/task/string/StringJoinTask.ts", "../src/task/string/StringLengthTask.ts", "../src/task/string/StringLowerCaseTask.ts", "../src/task/string/StringReplaceTask.ts", "../src/task/string/StringSliceTask.ts", "../src/task/string/StringTemplateTask.ts", "../src/task/string/StringTrimTask.ts", "../src/task/string/StringUpperCaseTask.ts", "../src/task/TemplateTask.ts", "../src/task/vector/VectorDistanceTask.ts", "../src/task/vector/VectorDotProductTask.ts", "../src/task/vector/VectorNormalizeTask.ts", "../src/task/vector/VectorScaleTask.ts", "../src/task/browser-control/register.ts", "../src/task/FileLoaderTask.ts", "../src/browser.ts"],
3
+ "sources": ["../src/task/image/registerImageRasterCodec.browser.ts", "../src/task/image/imageCodecLimits.ts", "../src/task/image/imageRasterCodecBrowser.ts", "../src/task/image/blur/blur.cpu.ts", "../src/task/image/border/border.cpu.ts", "../src/task/image/brightness/brightness.cpu.ts", "../src/task/image/contrast/contrast.cpu.ts", "../src/task/image/crop/crop.cpu.ts", "../src/task/image/flip/flip.cpu.ts", "../src/task/image/grayscale/grayscale.cpu.ts", "../src/task/image/invert/invert.cpu.ts", "../src/task/image/pixelate/pixelate.cpu.ts", "../src/task/image/posterize/posterize.cpu.ts", "../src/task/image/resize/resize.cpu.ts", "../src/task/image/rotate/rotate.cpu.ts", "../src/task/image/sepia/sepia.cpu.ts", "../src/task/image/threshold/threshold.cpu.ts", "../src/task/image/tint/tint.cpu.ts", "../src/task/image/transparency/transparency.cpu.ts", "../src/task/image/blur/blur.webgpu.ts", "../src/task/image/border/border.webgpu.ts", "../src/task/image/brightness/brightness.webgpu.ts", "../src/task/image/contrast/contrast.webgpu.ts", "../src/task/image/crop/crop.webgpu.ts", "../src/task/image/flip/flip.webgpu.ts", "../src/task/image/grayscale/grayscale.webgpu.ts", "../src/task/image/invert/invert.webgpu.ts", "../src/task/image/pixelate/pixelate.webgpu.ts", "../src/task/image/posterize/posterize.webgpu.ts", "../src/task/image/resize/resize.webgpu.ts", "../src/task/image/rotate/rotate.webgpu.ts", "../src/task/image/sepia/sepia.webgpu.ts", "../src/task/image/threshold/threshold.webgpu.ts", "../src/task/image/tint/tint.webgpu.ts", "../src/task/image/transparency/transparency.webgpu.ts", "../src/codec.browser.ts", "../src/task/image/imageTextRender.ts", "../src/task/image/imageTextRender.browser.ts", "../src/task/image/registerImageTextRenderer.browser.ts", "../src/task/adaptive.ts", "../src/task/scalar/ScalarAddTask.ts", "../src/task/scalar/sumPrecise.ts", "../src/task/scalar/ScalarDivideTask.ts", "../src/task/scalar/ScalarMultiplyTask.ts", "../src/task/scalar/ScalarSubtractTask.ts", "../src/task/scalar/ScalarSumTask.ts", "../src/task/vector/VectorDivideTask.ts", "../src/task/vector/VectorMultiplyTask.ts", "../src/task/vector/VectorSubtractTask.ts", "../src/task/vector/VectorSumTask.ts", "../src/task/ArrayTask.ts", "../src/task/DateFormatTask.ts", "../src/task/DebugLogTask.ts", "../src/task/DelayTask.ts", "../src/task/FetchUrlTask.ts", "../src/util/SafeFetch.ts", "../src/util/UrlClassifier.ts", "../src/task/HumanApprovalTask.ts", "../src/task/HumanInputTask.ts", "../src/common.ts", "../src/task/image/ImageFilterTask.ts", "../src/task/image/blur/ImageBlurTask.ts", "../src/task/image/border/ImageBorderTask.ts", "../src/task/image/brightness/ImageBrightnessTask.ts", "../src/task/image/contrast/ImageContrastTask.ts", "../src/task/image/crop/ImageCropTask.ts", "../src/task/image/flip/ImageFlipTask.ts", "../src/task/image/grayscale/ImageGrayscaleTask.ts", "../src/task/image/invert/ImageInvertTask.ts", "../src/task/image/pixelate/ImagePixelateTask.ts", "../src/task/image/posterize/ImagePosterizeTask.ts", "../src/task/image/imageRasterCodecRegistry.ts", "../src/task/image/resize/ImageResizeTask.ts", "../src/task/image/rotate/ImageRotateTask.ts", "../src/task/image/ImageSchemas.ts", "../src/task/image/sepia/ImageSepiaTask.ts", "../src/task/image/text/ImageTextTask.ts", "../src/task/image/threshold/ImageThresholdTask.ts", "../src/task/image/tint/ImageTintTask.ts", "../src/task/image/transparency/ImageTransparencyTask.ts", "../src/task/InputTask.ts", "../src/task/JsonPathTask.ts", "../src/task/JsonTask.ts", "../src/task/LambdaTask.ts", "../src/task/MergeTask.ts", "../src/task/OutputTask.ts", "../src/task/RegexTask.ts", "../src/task/scalar/ScalarAbsTask.ts", "../src/task/scalar/ScalarCeilTask.ts", "../src/task/scalar/ScalarFloorTask.ts", "../src/task/scalar/ScalarMaxTask.ts", "../src/task/scalar/ScalarMinTask.ts", "../src/task/scalar/ScalarRoundTask.ts", "../src/task/scalar/ScalarTruncTask.ts", "../src/task/SplitTask.ts", "../src/task/string/StringConcatTask.ts", "../src/task/string/StringIncludesTask.ts", "../src/task/string/StringJoinTask.ts", "../src/task/string/StringLengthTask.ts", "../src/task/string/StringLowerCaseTask.ts", "../src/task/string/StringReplaceTask.ts", "../src/task/string/StringSliceTask.ts", "../src/task/string/StringTemplateTask.ts", "../src/task/string/StringTrimTask.ts", "../src/task/string/StringUpperCaseTask.ts", "../src/task/TemplateTask.ts", "../src/task/vector/VectorDistanceTask.ts", "../src/task/vector/VectorDotProductTask.ts", "../src/task/vector/VectorNormalizeTask.ts", "../src/task/vector/VectorScaleTask.ts", "../src/task/FileLoaderTask.ts", "../src/browser.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { registerImageRasterCodec } from \"@workglow/util/media\";\n\nimport { createBrowserImageRasterCodec } from \"./imageRasterCodecBrowser\";\n\nregisterImageRasterCodec(createBrowserImageRasterCodec());\n",
6
6
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Maximum number of decoded pixels (width * height) accepted by the image raster codec.\n *\n * Caps worst-case RGBA allocation at ~400 MiB (100 MP * 4 bytes/pixel). Legitimate\n * photographic content rarely exceeds ~50 MP; synthetic pipelines that need more\n * should bypass the codec and operate on RawPixelBuffer directly.\n *\n * Defends against header-declared pixel bombs where a small compressed payload\n * claims billions of pixels to force a downstream OOM.\n */\nexport const MAX_DECODED_PIXELS = 100_000_000;\n\n/**\n * Maximum raw (base64-decoded) byte size of an incoming data URI on the Node codec.\n *\n * This is a coarse pre-filter before format-specific decoding. The Node codec\n * additionally enforces {@link MAX_DECODED_PIXELS} via sharp's header-level\n * `limitInputPixels`, so 64 MiB is a comfortable ceiling on the server side.\n */\nexport const MAX_INPUT_BYTES_NODE = 64 * 1024 * 1024;\n\n/**\n * Maximum raw byte size of an incoming data URI on the browser codec.\n *\n * `createImageBitmap` eagerly decompresses before we can observe the bitmap's\n * dimensions, so bounding the compressed input is the primary defense — the\n * post-bitmap `assertWithinPixelBudget` check only avoids the subsequent\n * canvas + ImageData allocations.\n *\n * Sized to fit a worst-case 4K PNG (3840×2160 RGBA = ~32 MiB raw, which a\n * maximum-entropy lossless encode can approach byte-for-byte). Routine 4K\n * photos sit at 10–20 MiB. Anything larger than this is either an 8K image\n * or a malformed input and should be downscaled before upload.\n */\nexport const MAX_INPUT_BYTES_BROWSER = 32 * 1024 * 1024;\n\n/**\n * Mime types rejected at decode time because rasterization would silently lose\n * information (vector data, animation frames). Callers that need these formats\n * must convert to PNG/JPEG/WebP externally before invoking the codec.\n *\n * Known limitations:\n * - APNG declared as `image/png` cannot be distinguished by mime type alone;\n * sharp will decode only the first frame. True APNG rejection requires\n * post-decode metadata inspection (`pages > 1`).\n * - Animated WebP declared as `image/webp` has the same limitation.\n */\nexport const REJECTED_DECODE_MIME_TYPES: ReadonlySet<string> = new Set([\n \"image/svg+xml\",\n \"image/svg\",\n \"image/gif\",\n \"image/apng\",\n]);\n\n/** Output formats the codec is willing to produce. Everything else throws at encode. */\nexport const SUPPORTED_OUTPUT_MIME_TYPES = [\"image/jpeg\", \"image/png\", \"image/webp\"] as const;\nexport type SupportedOutputMimeType = (typeof SUPPORTED_OUTPUT_MIME_TYPES)[number];\n\n/**\n * Throws if the decoded image would exceed {@link MAX_DECODED_PIXELS}, or if\n * the dimensions are non-finite or non-positive.\n */\nexport function assertWithinPixelBudget(width: number, height: number): void {\n if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {\n throw new Error(`Image raster codec: invalid dimensions ${width}x${height}`);\n }\n const pixels = width * height;\n if (pixels > MAX_DECODED_PIXELS) {\n throw new Error(\n `Image raster codec: decoded image exceeds pixel budget ` +\n `(${width}x${height} = ${pixels} > ${MAX_DECODED_PIXELS})`\n );\n }\n}\n\n/** Throws if `byteLength` exceeds `limit`. */\nexport function assertWithinByteBudget(byteLength: number, limit: number): void {\n if (byteLength > limit) {\n throw new Error(`Image raster codec: input exceeds byte budget (${byteLength} > ${limit})`);\n }\n}\n\n/**\n * Returns a safe preview of `value` for error messages.\n *\n * - Non-strings are coerced with `String()`.\n * - `data:` URIs have everything after the first comma replaced with\n * `[REDACTED]` so that base64-encoded image bytes are never written to\n * logs or telemetry.\n * - All other strings are truncated to 80 characters.\n */\nfunction formatDataUriErrorPreview(value: unknown): string {\n if (typeof value !== \"string\") {\n return String(value);\n }\n\n if (value.startsWith(\"data:\")) {\n const commaIndex = value.indexOf(\",\");\n if (commaIndex >= 0) {\n return `${value.slice(0, commaIndex)},[REDACTED]`;\n }\n return `${value.slice(0, 80)}${value.length > 80 ? \"…\" : \"\"}`;\n }\n\n return `${value.slice(0, 80)}${value.length > 80 ? \"…\" : \"\"}`;\n}\n\n/**\n * Throws unless `value` is a string that starts with `data:`. Defense in depth\n * at the codec boundary — prevents the browser codec's `fetch(value)` from ever\n * reaching the network (`http:`, `file:`, etc.) even if an upstream validator\n * is removed or bypassed.\n */\nexport function assertIsDataUri(value: string): void {\n if (typeof value !== \"string\" || !value.startsWith(\"data:\")) {\n const preview = formatDataUriErrorPreview(value);\n throw new Error(`Image raster codec: expected a data: URI but received \"${preview}\"`);\n }\n}\n\n/**\n * Extracts the mime type from a data URI for pre-decode validation. Returns\n * the lowercased mime type, or `undefined` if not parseable.\n *\n * Intentionally looser than `parseDataUri` in `@workglow/util/media`: this lets\n * us report \"unsupported svg+xml\" before failing on an otherwise-malformed data\n * URI, so the caller gets the most actionable error.\n */\nexport function extractDataUriMimeType(dataUri: string): string | undefined {\n const match = dataUri.match(/^data:([^;,]+)/);\n return match?.[1]?.trim().toLowerCase();\n}\n\n/**\n * Normalizes and validates an output mime type. Throws for unsupported or\n * lossy types (e.g. `image/svg+xml`, `image/gif`) instead of silently falling\n * through to PNG. Replaces the per-file `normalizeMimeType` helpers that used\n * to mask format mismatches.\n */\nexport function normalizeOutputMimeType(mimeType: string): SupportedOutputMimeType {\n const m = mimeType.toLowerCase().trim();\n if (m === \"image/jpeg\" || m === \"image/jpg\") {\n return \"image/jpeg\";\n }\n if (m === \"image/png\") {\n return \"image/png\";\n }\n if (m === \"image/webp\") {\n return \"image/webp\";\n }\n throw new Error(\n `Image raster codec: unsupported output mime type \"${mimeType}\". ` +\n `Supported: ${SUPPORTED_OUTPUT_MIME_TYPES.join(\", \")}.`\n );\n}\n",
@@ -52,47 +52,7 @@
52
52
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n createTypedArrayFrom,\n DataPortSchema,\n FromSchema,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector for component-wise product\",\n }),\n title: \"Vectors\",\n description: \"Array of vectors to multiply component-wise\",\n },\n },\n required: [\"vectors\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: TypedArraySchema({\n title: \"Result\",\n description: \"Component-wise product (Hadamard product)\",\n }),\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorMultiplyTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorMultiplyTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\nexport class VectorMultiplyTask<\n Input extends VectorMultiplyTaskInput = VectorMultiplyTaskInput,\n Output extends VectorMultiplyTaskOutput = VectorMultiplyTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorMultiplyTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Multiply\";\n public static override description =\n \"Returns the component-wise product (Hadamard product) of all vectors\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n const { vectors } = input as { vectors: TypedArray[] };\n if (vectors.length === 0) {\n throw new Error(\"At least one vector is required\");\n }\n const len = vectors[0].length;\n for (let i = 1; i < vectors.length; i++) {\n if (vectors[i].length !== len) {\n throw new Error(\"All vectors must have the same length\");\n }\n }\n const values = Array.from({ length: len }, (_, i) =>\n vectors.reduce((acc, v) => acc * Number(v[i]), 1)\n );\n return { result: createTypedArrayFrom(vectors, values) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorMultiply: CreateWorkflow<VectorMultiplyTaskInput, VectorMultiplyTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.vectorMultiply = CreateWorkflow(VectorMultiplyTask);\n",
53
53
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n createTypedArrayFrom,\n DataPortSchema,\n FromSchema,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector (first is minuend, rest are subtrahends)\",\n }),\n title: \"Vectors\",\n description: \"Array of vectors: vectors[0] - vectors[1] - vectors[2] - ...\",\n },\n },\n required: [\"vectors\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: TypedArraySchema({\n title: \"Result\",\n description: \"Difference of vectors\",\n }),\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorSubtractTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorSubtractTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\nexport class VectorSubtractTask<\n Input extends VectorSubtractTaskInput = VectorSubtractTaskInput,\n Output extends VectorSubtractTaskOutput = VectorSubtractTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorSubtractTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Subtract\";\n public static override description =\n \"Returns component-wise difference: vectors[0] - vectors[1] - vectors[2] - ...\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n const { vectors } = input as { vectors: TypedArray[] };\n if (vectors.length < 2) {\n throw new Error(\"At least two vectors are required\");\n }\n const len = vectors[0].length;\n for (let i = 1; i < vectors.length; i++) {\n if (vectors[i].length !== len) {\n throw new Error(\"All vectors must have the same length\");\n }\n }\n const values = Array.from({ length: len }, (_, i) => {\n let acc = Number(vectors[0][i]);\n for (let j = 1; j < vectors.length; j++) {\n acc -= Number(vectors[j][i]);\n }\n return acc;\n });\n return { result: createTypedArrayFrom(vectors, values) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorSubtract: CreateWorkflow<VectorSubtractTaskInput, VectorSubtractTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.vectorSubtract = CreateWorkflow(VectorSubtractTask);\n",
54
54
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n createTypedArrayFrom,\n DataPortSchema,\n FromSchema,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\nimport { sumPrecise } from \"../scalar/sumPrecise\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector to sum\",\n }),\n title: \"Vectors\",\n description: \"Array of vectors to sum component-wise\",\n },\n },\n required: [\"vectors\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: TypedArraySchema({\n title: \"Result\",\n description: \"Sum of vectors\",\n }),\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorSumTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorSumTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\nexport class VectorSumTask<\n Input extends VectorSumTaskInput = VectorSumTaskInput,\n Output extends VectorSumTaskOutput = VectorSumTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorSumTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Sum\";\n public static override description = \"Returns the component-wise sum of an array of vectors\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n const { vectors } = input as { vectors: TypedArray[] };\n if (vectors.length === 0) {\n throw new Error(\"At least one vector is required\");\n }\n const len = vectors[0].length;\n for (let i = 1; i < vectors.length; i++) {\n if (vectors[i].length !== len) {\n throw new Error(\"All vectors must have the same length\");\n }\n }\n const values = Array.from({ length: len }, (_, i) =>\n sumPrecise(vectors.map((v) => Number(v[i])))\n );\n return { result: createTypedArrayFrom(vectors, values) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorSum: CreateWorkflow<VectorSumTaskInput, VectorSumTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.vectorSum = CreateWorkflow(VectorSumTask);\n",
55
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { McpServerConfig } from \"../util/McpTaskDeps\";\n\n/**\n * Extracts a McpServerConfig from a task's config or input object.\n *\n * Expects `configOrInput.server` to be an object with all connection fields.\n * If `server` is a string (unresolved reference ID), an error is thrown.\n */\nexport function getMcpServerConfig(\n configOrInput: Readonly<Record<string, unknown>>\n): McpServerConfig {\n const server = configOrInput.server;\n\n if (!server) {\n throw new Error(\"MCP server config must include a 'server' property\");\n }\n\n if (typeof server === \"string\") {\n throw new Error(\n \"MCP server config 'server' is a string reference ID that should have been resolved to an object before execution\"\n );\n }\n\n if (typeof server !== \"object\" || Array.isArray(server)) {\n throw new Error(\"MCP server config 'server' must be an object\");\n }\n\n const base = server as Record<string, unknown>;\n const transport = base.transport as string | undefined;\n\n if (!transport) {\n throw new Error(\"MCP server config must include a transport\");\n }\n\n if (transport === \"stdio\" && !base.command) {\n throw new Error(\"MCP server config for stdio transport must include a 'command'\");\n }\n\n if ((transport === \"sse\" || transport === \"streamable-http\") && !base.server_url) {\n throw new Error(\n \"MCP server config for sse/streamable-http transport must include a 'server_url'\"\n );\n }\n\n return base as unknown as McpServerConfig;\n}\n",
56
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { InMemoryTabularStorage } from \"@workglow/storage\";\nimport { McpServerRepository } from \"./McpServerRepository\";\nimport { McpServerPrimaryKeyNames, McpServerRecordSchema } from \"./McpServerSchema\";\n\nexport class InMemoryMcpServerRepository extends McpServerRepository {\n constructor() {\n super(new InMemoryTabularStorage(McpServerRecordSchema, McpServerPrimaryKeyNames));\n }\n}\n",
57
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ITabularStorage } from \"@workglow/storage\";\nimport { EventEmitter } from \"@workglow/util\";\nimport type { EventParameters } from \"@workglow/util\";\n\nimport { McpServerPrimaryKeyNames, McpServerRecordSchema } from \"./McpServerSchema\";\nimport type { McpServerRecord } from \"./McpServerSchema\";\n\nexport type McpServerEventListeners = {\n server_added: (record: McpServerRecord) => void;\n server_removed: (record: McpServerRecord) => void;\n server_updated: (record: McpServerRecord) => void;\n};\n\nexport type McpServerEvents = keyof McpServerEventListeners;\n\nexport type McpServerEventListener<Event extends McpServerEvents> = McpServerEventListeners[Event];\n\nexport type McpServerEventParameters<Event extends McpServerEvents> = EventParameters<\n McpServerEventListeners,\n Event\n>;\n\nexport class McpServerRepository {\n protected readonly storage: ITabularStorage<\n typeof McpServerRecordSchema,\n typeof McpServerPrimaryKeyNames\n >;\n\n constructor(\n storage: ITabularStorage<typeof McpServerRecordSchema, typeof McpServerPrimaryKeyNames>\n ) {\n this.storage = storage;\n }\n\n protected events = new EventEmitter<McpServerEventListeners>();\n\n async setupDatabase(): Promise<void> {\n await this.storage.setupDatabase?.();\n }\n\n on<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>) {\n this.events.on(name, fn);\n }\n\n off<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>) {\n this.events.off(name, fn);\n }\n\n once<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>) {\n this.events.once(name, fn);\n }\n\n waitOn<Event extends McpServerEvents>(name: Event) {\n return this.events.waitOn(name);\n }\n\n async addServer(record: McpServerRecord): Promise<McpServerRecord> {\n const existing = await this.storage.get({ server_id: record.server_id });\n await this.storage.put(record);\n this.events.emit(existing ? \"server_updated\" : \"server_added\", record);\n return record;\n }\n\n async removeServer(server_id: string): Promise<void> {\n const record = await this.storage.get({ server_id });\n if (!record) {\n throw new Error(`MCP server with id \"${server_id}\" not found`);\n }\n await this.storage.delete({ server_id });\n this.events.emit(\"server_removed\", record);\n }\n\n async getServer(server_id: string): Promise<McpServerRecord | undefined> {\n if (typeof server_id !== \"string\") return undefined;\n const record = await this.storage.get({ server_id });\n return record ?? undefined;\n }\n\n async enumerateAll(): Promise<McpServerRecord[]> {\n const records = await this.storage.getAll();\n if (!records || records.length === 0) return [];\n return records;\n }\n\n async size(): Promise<number> {\n return await this.storage.size();\n }\n}\n",
58
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * Unified MCP client util. Full schema is available on all platforms.\n * stdio transport is injected via McpTaskDeps and only available on Node/Bun.\n */\n\nimport { Client } from \"@modelcontextprotocol/sdk/client\";\n// eslint-disable-next-line deprecation/deprecation\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport { getGlobalCredentialStore, getLogger } from \"@workglow/util\";\nimport { createAuthProvider, resolveAuthSecrets } from \"./McpAuthProvider\";\nimport { buildAuthConfig, mcpAuthConfigSchema } from \"./McpAuthTypes\";\nimport type { McpAuthConfig } from \"./McpAuthTypes\";\nimport { getMcpTaskDeps } from \"./McpTaskDeps\";\nimport type { McpServerConfig } from \"./McpTaskDeps\";\n\nexport const mcpTransportTypes = [\"stdio\", \"sse\", \"streamable-http\"] as const;\n\nexport const mcpServerConfigSchema = {\n properties: {\n transport: {\n type: \"string\",\n enum: mcpTransportTypes,\n title: \"Transport\",\n description: \"The transport type to use for connecting to the MCP server\",\n },\n server_url: {\n type: \"string\",\n format: \"uri\",\n title: \"Server URL\",\n description: \"The URL of the MCP server (for sse and streamable-http transports)\",\n },\n command: {\n type: \"string\",\n title: \"Command\",\n description: \"The command to run (for stdio transport)\",\n },\n args: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Arguments\",\n description: \"Command arguments (for stdio transport)\",\n },\n env: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n title: \"Environment\",\n description: \"Environment variables (for stdio transport)\",\n },\n ...mcpAuthConfigSchema.properties,\n },\n allOf: [\n {\n if: { properties: { transport: { const: \"stdio\" as const } }, required: [\"transport\"] },\n then: { required: [\"command\"] },\n },\n {\n if: { properties: { transport: { const: \"sse\" as const } }, required: [\"transport\"] },\n then: { required: [\"server_url\"] },\n },\n {\n if: {\n properties: { transport: { const: \"streamable-http\" as const } },\n required: [\"transport\"],\n },\n then: { required: [\"server_url\"] },\n },\n ...mcpAuthConfigSchema.allOf,\n ] as readonly Record<string, unknown>[],\n} as const;\n\nexport type McpTransportType = (typeof mcpTransportTypes)[number];\n\nexport async function createMcpClient(\n config: McpServerConfig,\n signal?: AbortSignal\n): Promise<{ client: Client; transport: Transport }> {\n let transport: Transport;\n\n // Resolve auth config: prefer structured `auth` object, fall back to flat props\n let auth: McpAuthConfig | undefined = config.auth ?? buildAuthConfig({ ...config });\n\n // Resolve credential store keys to actual secret values\n if (auth && auth.type !== \"none\") {\n auth = await resolveAuthSecrets(auth, getGlobalCredentialStore());\n }\n\n // Build auth provider for OAuth flows (external provider takes precedence)\n const authProvider =\n config.authProvider ??\n (auth && auth.type !== \"none\" && auth.type !== \"bearer\"\n ? createAuthProvider(auth, config.server_url ?? \"\", getGlobalCredentialStore())\n : undefined);\n\n // Build request headers (SDK sets MCP-Protocol-Version automatically)\n const headers: Record<string, string> = {\n ...(auth?.type === \"bearer\" ? { Authorization: `Bearer ${auth.token}` } : {}),\n };\n const requestInit = { headers };\n\n switch (config.transport) {\n case \"stdio\":\n if (auth && auth.type !== \"none\") {\n getLogger().warn(\n \"MCP auth is not supported for stdio transport; auth config ignored. \" +\n \"Use env vars to pass credentials to stdio servers.\"\n );\n }\n transport = await getMcpTaskDeps().createStdioTransport(config);\n break;\n case \"sse\": {\n transport = new SSEClientTransport(new URL(config.server_url!), {\n authProvider,\n requestInit,\n });\n break;\n }\n case \"streamable-http\": {\n transport = new StreamableHTTPClientTransport(new URL(config.server_url!), {\n authProvider,\n requestInit,\n });\n break;\n }\n default:\n throw new Error(`Unsupported transport type: ${config.transport}`);\n }\n\n const client = new Client({ name: \"workglow-mcp-client\", version: \"1.0.0\" });\n\n if (signal) {\n signal.addEventListener(\n \"abort\",\n () => {\n client.close().catch(() => {});\n },\n { once: true }\n );\n }\n\n await client.connect(transport);\n return { client, transport };\n}\n\nexport const mcpClientFactory = {\n create: createMcpClient,\n};\n",
59
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * MCP OAuth provider adapter backed by ICredentialStore, and factory function.\n */\n\nimport {\n ClientCredentialsProvider,\n PrivateKeyJwtProvider,\n StaticPrivateKeyJwtProvider,\n createPrivateKeyJwtAuth,\n} from \"@modelcontextprotocol/sdk/client/auth-extensions.js\";\nimport { UnauthorizedError } from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport type {\n AddClientAuthentication,\n OAuthClientProvider,\n OAuthDiscoveryState,\n} from \"@modelcontextprotocol/sdk/client/auth.js\";\n\nexport { UnauthorizedError };\nexport type { OAuthClientProvider };\nimport type {\n OAuthClientInformationMixed,\n OAuthClientMetadata,\n OAuthTokens,\n} from \"@modelcontextprotocol/sdk/shared/auth.js\";\nimport { getGlobalCredentialStore } from \"@workglow/util\";\nimport type { ICredentialStore } from \"@workglow/util\";\nimport type { McpAuthConfig } from \"./McpAuthTypes\";\n\n// ── Key helpers ────────────────────────────────────────────────────────\n\nfunction normalizeServerUrl(serverUrl: string): string {\n try {\n const u = new URL(serverUrl);\n // Strip trailing slash for consistent keying\n return u.origin + u.pathname.replace(/\\/+$/, \"\");\n } catch {\n return serverUrl;\n }\n}\n\nfunction storeKey(serverUrl: string, suffix: string): string {\n return `mcp:oauth:${normalizeServerUrl(serverUrl)}:${suffix}`;\n}\n\n// ── CredentialStoreOAuthProvider ────────────────────────────────────────\n\n/**\n * OAuthClientProvider backed by ICredentialStore.\n *\n * Stores tokens, client info, code verifiers, and discovery state as JSON\n * strings under namespaced keys. Enables token persistence across\n * short-lived MCP connections that share the same server URL.\n */\nexport class CredentialStoreOAuthProvider implements OAuthClientProvider {\n private readonly store: ICredentialStore;\n private readonly serverUrl: string;\n private readonly _clientMetadata: OAuthClientMetadata;\n private readonly _redirectUrl: string | URL | undefined;\n private readonly _initialClientInfo: OAuthClientInformationMixed | undefined;\n\n /** Optional override for grant-specific token request preparation. */\n prepareTokenRequest?: (\n scope?: string\n ) => URLSearchParams | Promise<URLSearchParams | undefined> | undefined;\n\n /** Optional override for custom client authentication on token requests. */\n addClientAuthentication?: AddClientAuthentication;\n\n constructor(options: {\n store: ICredentialStore;\n serverUrl: string;\n clientMetadata: OAuthClientMetadata;\n redirectUrl?: string | URL;\n initialClientInfo?: OAuthClientInformationMixed;\n prepareTokenRequest?: OAuthClientProvider[\"prepareTokenRequest\"];\n addClientAuthentication?: AddClientAuthentication;\n }) {\n this.store = options.store;\n this.serverUrl = options.serverUrl;\n this._clientMetadata = options.clientMetadata;\n this._redirectUrl = options.redirectUrl;\n this._initialClientInfo = options.initialClientInfo;\n if (options.prepareTokenRequest) {\n this.prepareTokenRequest = options.prepareTokenRequest;\n }\n if (options.addClientAuthentication) {\n this.addClientAuthentication = options.addClientAuthentication;\n }\n }\n\n // ── Properties ─────────────────────────────────────────────────────\n\n get redirectUrl(): string | URL | undefined {\n return this._redirectUrl;\n }\n\n get clientMetadata(): OAuthClientMetadata {\n return this._clientMetadata;\n }\n\n // ── Client information ─────────────────────────────────────────────\n\n async clientInformation(): Promise<OAuthClientInformationMixed | undefined> {\n const raw = await this.store.get(storeKey(this.serverUrl, \"client_info\"));\n if (!raw) return this._initialClientInfo;\n return JSON.parse(raw) as OAuthClientInformationMixed;\n }\n\n async saveClientInformation(info: OAuthClientInformationMixed): Promise<void> {\n await this.store.put(storeKey(this.serverUrl, \"client_info\"), JSON.stringify(info));\n }\n\n // ── Tokens ─────────────────────────────────────────────────────────\n\n async tokens(): Promise<OAuthTokens | undefined> {\n const raw = await this.store.get(storeKey(this.serverUrl, \"tokens\"));\n if (!raw) return undefined;\n return JSON.parse(raw) as OAuthTokens;\n }\n\n async saveTokens(tokens: OAuthTokens): Promise<void> {\n const expiresAt =\n tokens.expires_in != null ? new Date(Date.now() + tokens.expires_in * 1000) : undefined;\n await this.store.put(storeKey(this.serverUrl, \"tokens\"), JSON.stringify(tokens), {\n expiresAt,\n });\n }\n\n // ── Authorization redirect ─────────────────────────────────────────\n\n async redirectToAuthorization(authorizationUrl: URL): Promise<void> {\n // Non-interactive environments cannot redirect a browser. Throw with\n // the URL so the host application can handle it (e.g., open a browser).\n throw new Error(\n `MCP OAuth authorization required. ` +\n `Open this URL to authorize: ${authorizationUrl.toString()}`\n );\n }\n\n // ── PKCE code verifier ─────────────────────────────────────────────\n\n async saveCodeVerifier(codeVerifier: string): Promise<void> {\n await this.store.put(storeKey(this.serverUrl, \"code_verifier\"), codeVerifier);\n }\n\n async codeVerifier(): Promise<string> {\n const v = await this.store.get(storeKey(this.serverUrl, \"code_verifier\"));\n if (!v) throw new Error(\"No code verifier saved for this session\");\n return v;\n }\n\n // ── Discovery state ────────────────────────────────────────────────\n\n async saveDiscoveryState(state: OAuthDiscoveryState): Promise<void> {\n await this.store.put(storeKey(this.serverUrl, \"discovery\"), JSON.stringify(state));\n }\n\n async discoveryState(): Promise<OAuthDiscoveryState | undefined> {\n const raw = await this.store.get(storeKey(this.serverUrl, \"discovery\"));\n if (!raw) return undefined;\n return JSON.parse(raw) as OAuthDiscoveryState;\n }\n\n // ── Credential invalidation ────────────────────────────────────────\n\n async invalidateCredentials(\n scope: \"all\" | \"client\" | \"tokens\" | \"verifier\" | \"discovery\"\n ): Promise<void> {\n const deleteKey = async (suffix: string) => {\n await this.store.delete(storeKey(this.serverUrl, suffix));\n };\n\n switch (scope) {\n case \"all\":\n await deleteKey(\"tokens\");\n await deleteKey(\"client_info\");\n await deleteKey(\"code_verifier\");\n await deleteKey(\"discovery\");\n break;\n case \"client\":\n await deleteKey(\"client_info\");\n break;\n case \"tokens\":\n await deleteKey(\"tokens\");\n break;\n case \"verifier\":\n await deleteKey(\"code_verifier\");\n break;\n case \"discovery\":\n await deleteKey(\"discovery\");\n break;\n }\n }\n}\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/**\n * Creates an OAuthClientProvider for the given auth config, or returns\n * `undefined` when no provider is needed (none / bearer).\n *\n * Bearer auth is handled at the transport level via request headers,\n * so this function returns `undefined` for it.\n */\nexport function createAuthProvider(\n auth: McpAuthConfig,\n serverUrl: string,\n credentialStore?: ICredentialStore\n): OAuthClientProvider | undefined {\n switch (auth.type) {\n case \"none\":\n case \"bearer\":\n return undefined;\n\n case \"client_credentials\": {\n if (!credentialStore) {\n // Fallback to SDK's built-in provider (no persistence)\n return new ClientCredentialsProvider({\n clientId: auth.client_id,\n clientSecret: auth.client_secret,\n clientName: auth.client_name,\n scope: auth.scope,\n });\n }\n\n const prepareTokenRequest = (scope?: string): URLSearchParams => {\n const params = new URLSearchParams({ grant_type: \"client_credentials\" });\n const effectiveScope = scope ?? auth.scope;\n if (effectiveScope) params.set(\"scope\", effectiveScope);\n return params;\n };\n\n return new CredentialStoreOAuthProvider({\n store: credentialStore,\n serverUrl,\n clientMetadata: {\n redirect_uris: [],\n grant_types: [\"client_credentials\"],\n token_endpoint_auth_method: \"client_secret_basic\",\n client_name: auth.client_name,\n },\n initialClientInfo: {\n client_id: auth.client_id,\n client_secret: auth.client_secret,\n },\n prepareTokenRequest,\n });\n }\n\n case \"private_key_jwt\": {\n if (!credentialStore) {\n return new PrivateKeyJwtProvider({\n clientId: auth.client_id,\n privateKey: auth.private_key,\n algorithm: auth.algorithm,\n clientName: auth.client_name,\n jwtLifetimeSeconds: auth.jwt_lifetime_seconds,\n scope: auth.scope,\n });\n }\n\n const addClientAuth = createPrivateKeyJwtAuth({\n issuer: auth.client_id,\n subject: auth.client_id,\n privateKey: auth.private_key,\n alg: auth.algorithm,\n lifetimeSeconds: auth.jwt_lifetime_seconds,\n });\n\n const prepareTokenRequest = (scope?: string): URLSearchParams => {\n const params = new URLSearchParams({ grant_type: \"client_credentials\" });\n const effectiveScope = scope ?? auth.scope;\n if (effectiveScope) params.set(\"scope\", effectiveScope);\n return params;\n };\n\n return new CredentialStoreOAuthProvider({\n store: credentialStore,\n serverUrl,\n clientMetadata: {\n redirect_uris: [],\n grant_types: [\"client_credentials\"],\n token_endpoint_auth_method: \"private_key_jwt\",\n client_name: auth.client_name,\n },\n initialClientInfo: { client_id: auth.client_id },\n prepareTokenRequest,\n addClientAuthentication: addClientAuth,\n });\n }\n\n case \"static_private_key_jwt\": {\n if (!credentialStore) {\n return new StaticPrivateKeyJwtProvider({\n clientId: auth.client_id,\n jwtBearerAssertion: auth.jwt_bearer_assertion,\n clientName: auth.client_name,\n scope: auth.scope,\n });\n }\n\n const assertion = auth.jwt_bearer_assertion;\n const addClientAuth: AddClientAuthentication = (_headers, params) => {\n params.set(\n \"client_assertion_type\",\n \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\"\n );\n params.set(\"client_assertion\", assertion);\n };\n\n const prepareTokenRequest = (scope?: string): URLSearchParams => {\n const params = new URLSearchParams({ grant_type: \"client_credentials\" });\n const effectiveScope = scope ?? auth.scope;\n if (effectiveScope) params.set(\"scope\", effectiveScope);\n return params;\n };\n\n return new CredentialStoreOAuthProvider({\n store: credentialStore,\n serverUrl,\n clientMetadata: {\n redirect_uris: [],\n grant_types: [\"client_credentials\"],\n token_endpoint_auth_method: \"private_key_jwt\",\n client_name: auth.client_name,\n },\n initialClientInfo: { client_id: auth.client_id },\n prepareTokenRequest,\n addClientAuthentication: addClientAuth,\n });\n }\n\n case \"authorization_code\": {\n if (!credentialStore) {\n throw new Error(\n \"authorization_code auth requires a credential store for token persistence\"\n );\n }\n\n return new CredentialStoreOAuthProvider({\n store: credentialStore,\n serverUrl,\n clientMetadata: {\n redirect_uris: [auth.redirect_url] as string[],\n grant_types: [\"authorization_code\", \"refresh_token\"],\n token_endpoint_auth_method: auth.client_secret ? \"client_secret_basic\" : \"none\",\n scope: auth.scope,\n },\n initialClientInfo: {\n client_id: auth.client_id,\n ...(auth.client_secret ? { client_secret: auth.client_secret } : {}),\n },\n redirectUrl: auth.redirect_url,\n });\n }\n\n default:\n return undefined;\n }\n}\n\n// ── Credential resolution ──────────────────────────────────────────────\n\n/**\n * Resolves credential-store keys in auth config to actual secret values.\n *\n * This is needed for the standalone MCP task path where config properties\n * are NOT auto-resolved by `resolveSchemaInputs`. For the AgentTask path,\n * credential resolution happens automatically via `format: \"credential\"`.\n */\nexport async function resolveAuthSecrets(\n auth: McpAuthConfig,\n credentialStore?: ICredentialStore\n): Promise<McpAuthConfig> {\n if (auth.type === \"none\") return auth;\n\n const store = credentialStore ?? getGlobalCredentialStore();\n\n async function resolve(value: string | undefined): Promise<string | undefined> {\n if (!value) return value;\n const resolved = await store.get(value);\n // If the store returns a value, use it; otherwise keep the original\n // (it may be a literal secret, not a key).\n return resolved ?? value;\n }\n\n switch (auth.type) {\n case \"bearer\":\n return { ...auth, token: (await resolve(auth.token)) ?? auth.token };\n\n case \"client_credentials\":\n return {\n ...auth,\n client_secret: (await resolve(auth.client_secret)) ?? auth.client_secret,\n };\n\n case \"private_key_jwt\":\n return {\n ...auth,\n private_key: (await resolve(auth.private_key)) ?? auth.private_key,\n };\n\n case \"static_private_key_jwt\":\n return {\n ...auth,\n jwt_bearer_assertion:\n (await resolve(auth.jwt_bearer_assertion)) ?? auth.jwt_bearer_assertion,\n };\n\n case \"authorization_code\":\n return {\n ...auth,\n client_secret: await resolve(auth.client_secret),\n };\n\n default:\n return auth;\n }\n}\n",
60
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * Shared MCP authentication type definitions and JSON Schema.\n */\n\n/**\n * Supported MCP authentication types.\n */\nexport const mcpAuthTypes = [\n \"none\",\n \"bearer\",\n \"client_credentials\",\n \"private_key_jwt\",\n \"static_private_key_jwt\",\n \"authorization_code\",\n] as const;\n\nexport type McpAuthType = (typeof mcpAuthTypes)[number];\n\n// ── Discriminated union on `type` ──────────────────────────────────────\n\nexport interface McpAuthNone {\n readonly type: \"none\";\n}\n\nexport interface McpAuthBearer {\n readonly type: \"bearer\";\n /** Static token or credential-store key (format: \"credential\"). */\n readonly token: string;\n}\n\nexport interface McpAuthClientCredentials {\n readonly type: \"client_credentials\";\n readonly client_id: string;\n /** Client secret or credential-store key (format: \"credential\"). */\n readonly client_secret: string;\n readonly client_name?: string;\n readonly scope?: string;\n}\n\nexport interface McpAuthPrivateKeyJwt {\n readonly type: \"private_key_jwt\";\n readonly client_id: string;\n /** PEM / JWK private key or credential-store key (format: \"credential\"). */\n readonly private_key: string;\n readonly algorithm: string;\n readonly client_name?: string;\n readonly jwt_lifetime_seconds?: number;\n readonly scope?: string;\n}\n\nexport interface McpAuthStaticPrivateKeyJwt {\n readonly type: \"static_private_key_jwt\";\n readonly client_id: string;\n /** Pre-built JWT assertion or credential-store key (format: \"credential\"). */\n readonly jwt_bearer_assertion: string;\n readonly client_name?: string;\n readonly scope?: string;\n}\n\nexport interface McpAuthAuthorizationCode {\n readonly type: \"authorization_code\";\n readonly client_id: string;\n readonly client_secret?: string;\n readonly redirect_url: string;\n readonly scope?: string;\n}\n\nexport type McpAuthConfig =\n | McpAuthNone\n | McpAuthBearer\n | McpAuthClientCredentials\n | McpAuthPrivateKeyJwt\n | McpAuthStaticPrivateKeyJwt\n | McpAuthAuthorizationCode;\n\n// ── JSON Schema for auth config (discriminated union on auth_type) ─────\n\nexport const mcpAuthConfigSchema = {\n properties: {\n auth_type: {\n type: \"string\",\n enum: mcpAuthTypes,\n title: \"Auth Type\",\n description: \"Authentication method for connecting to the MCP server\",\n },\n auth_token: {\n type: \"string\",\n format: \"credential\",\n title: \"Bearer Token\",\n description: \"Static bearer token or API key (for bearer auth)\",\n },\n auth_client_id: {\n type: \"string\",\n title: \"Client ID\",\n description: \"OAuth client ID (for OAuth auth types)\",\n },\n auth_client_secret: {\n type: \"string\",\n format: \"credential\",\n title: \"Client Secret\",\n description: \"OAuth client secret (for client_credentials auth)\",\n },\n auth_private_key: {\n type: \"string\",\n format: \"credential\",\n title: \"Private Key\",\n description: \"PEM or JWK private key (for private_key_jwt auth)\",\n },\n auth_algorithm: {\n type: \"string\",\n title: \"Algorithm\",\n description: \"JWT signing algorithm, e.g. RS256, ES256 (for private_key_jwt auth)\",\n },\n auth_jwt_bearer_assertion: {\n type: \"string\",\n format: \"credential\",\n title: \"JWT Assertion\",\n description: \"Pre-built JWT assertion (for static_private_key_jwt auth)\",\n },\n auth_redirect_url: {\n type: \"string\",\n format: \"uri\",\n title: \"Redirect URL\",\n description: \"OAuth redirect URL (for authorization_code auth)\",\n },\n auth_scope: {\n type: \"string\",\n title: \"Scope\",\n description: \"OAuth scope (space-separated)\",\n },\n auth_client_name: {\n type: \"string\",\n title: \"Client Name\",\n description: \"Optional OAuth client display name\",\n },\n auth_jwt_lifetime_seconds: {\n type: \"number\",\n title: \"JWT Lifetime\",\n description: \"JWT lifetime in seconds (default: 300)\",\n minimum: 1,\n },\n },\n allOf: [\n {\n if: { properties: { auth_type: { const: \"bearer\" } }, required: [\"auth_type\"] },\n then: {\n required: [\"auth_token\"],\n properties: { auth_token: true },\n },\n },\n {\n if: {\n properties: { auth_type: { const: \"client_credentials\" } },\n required: [\"auth_type\"],\n },\n then: {\n required: [\"auth_client_id\", \"auth_client_secret\"],\n properties: {\n auth_client_id: true,\n auth_client_secret: true,\n auth_client_name: true,\n auth_scope: true,\n },\n },\n },\n {\n if: { properties: { auth_type: { const: \"private_key_jwt\" } }, required: [\"auth_type\"] },\n then: {\n required: [\"auth_client_id\", \"auth_private_key\", \"auth_algorithm\"],\n properties: {\n auth_client_id: true,\n auth_private_key: true,\n auth_algorithm: true,\n auth_client_name: true,\n auth_jwt_lifetime_seconds: true,\n auth_scope: true,\n },\n },\n },\n {\n if: {\n properties: { auth_type: { const: \"static_private_key_jwt\" } },\n required: [\"auth_type\"],\n },\n then: {\n required: [\"auth_client_id\", \"auth_jwt_bearer_assertion\"],\n properties: {\n auth_client_id: true,\n auth_jwt_bearer_assertion: true,\n auth_client_name: true,\n auth_scope: true,\n },\n },\n },\n {\n if: { properties: { auth_type: { const: \"authorization_code\" } }, required: [\"auth_type\"] },\n then: {\n required: [\"auth_client_id\", \"auth_redirect_url\"],\n properties: {\n auth_client_id: true,\n auth_client_secret: true,\n auth_redirect_url: true,\n auth_scope: true,\n },\n },\n },\n ],\n} as const;\n\n/**\n * Runtime type guard for McpAuthType.\n */\nfunction isMcpAuthType(value: unknown): value is McpAuthType {\n return typeof value === \"string\" && (mcpAuthTypes as readonly string[]).includes(value);\n}\n\nfunction asNonEmptyString(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed === \"\" ? undefined : trimmed;\n}\n\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\n/**\n * Constructs a typed McpAuthConfig from flat schema properties.\n * Used by `createMcpClient()` to normalize the config.\n * Returns `undefined` if required fields for the selected auth type are missing.\n */\nexport function buildAuthConfig(flat: Record<string, unknown>): McpAuthConfig | undefined {\n const rawAuthType = flat.auth_type;\n\n if (!isMcpAuthType(rawAuthType) || rawAuthType === \"none\") {\n return undefined;\n }\n\n const authType: McpAuthType = rawAuthType;\n\n switch (authType) {\n case \"bearer\": {\n const token = asNonEmptyString(flat.auth_token);\n if (!token) return undefined;\n return { type: \"bearer\", token };\n }\n case \"client_credentials\": {\n const client_id = asNonEmptyString(flat.auth_client_id);\n const client_secret = asNonEmptyString(flat.auth_client_secret);\n if (!client_id || !client_secret) return undefined;\n return {\n type: \"client_credentials\",\n client_id,\n client_secret,\n client_name: asNonEmptyString(flat.auth_client_name),\n scope: asNonEmptyString(flat.auth_scope),\n };\n }\n case \"private_key_jwt\": {\n const client_id = asNonEmptyString(flat.auth_client_id);\n const private_key = asNonEmptyString(flat.auth_private_key);\n const algorithm = asNonEmptyString(flat.auth_algorithm);\n if (!client_id || !private_key || !algorithm) return undefined;\n return {\n type: \"private_key_jwt\",\n client_id,\n private_key,\n algorithm,\n client_name: asNonEmptyString(flat.auth_client_name),\n jwt_lifetime_seconds: asNumber(flat.auth_jwt_lifetime_seconds),\n scope: asNonEmptyString(flat.auth_scope),\n };\n }\n case \"static_private_key_jwt\": {\n const client_id = asNonEmptyString(flat.auth_client_id);\n const jwt_bearer_assertion = asNonEmptyString(flat.auth_jwt_bearer_assertion);\n if (!client_id || !jwt_bearer_assertion) return undefined;\n return {\n type: \"static_private_key_jwt\",\n client_id,\n jwt_bearer_assertion,\n client_name: asNonEmptyString(flat.auth_client_name),\n scope: asNonEmptyString(flat.auth_scope),\n };\n }\n case \"authorization_code\": {\n const client_id = asNonEmptyString(flat.auth_client_id);\n const redirect_url = asNonEmptyString(flat.auth_redirect_url);\n if (!client_id || !redirect_url) return undefined;\n return {\n type: \"authorization_code\",\n client_id,\n client_secret: asNonEmptyString(flat.auth_client_secret),\n redirect_url,\n scope: asNonEmptyString(flat.auth_scope),\n };\n }\n default:\n return undefined;\n }\n}\n",
61
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * Platform MCP client + JSON Schema for MCP tasks. Registered from browser/node/bun\n * entry files so task implementations do not import `@workglow/tasks` (self-import).\n */\n\nimport type { Client } from \"@modelcontextprotocol/sdk/client\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport type { OAuthClientProvider } from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport type { DataPortSchemaObject } from \"@workglow/util/schema\";\nimport { createServiceToken, globalServiceRegistry } from \"@workglow/util\";\nimport type { McpAuthConfig } from \"./McpAuthTypes\";\n\n/** Configuration for connecting to an MCP server (superset of all platform transports). */\nexport interface McpServerConfig {\n readonly transport?: string;\n readonly server_url?: string;\n // stdio-only (node/bun)\n readonly command?: string;\n readonly args?: string[];\n readonly env?: Readonly<Record<string, string>>;\n readonly auth?: McpAuthConfig;\n // Flat auth properties from schema (used when config comes from JSON Schema forms)\n readonly auth_type?: string;\n // External auth provider — when set, bypasses internal auth resolution for OAuth flows\n readonly authProvider?: OAuthClientProvider;\n}\n\nexport interface McpTaskDeps {\n readonly mcpClientFactory: {\n readonly create: (\n config: McpServerConfig,\n signal?: AbortSignal\n ) => Promise<{ client: Client; transport: Transport }>;\n };\n readonly mcpServerConfigSchema: {\n readonly properties: DataPortSchemaObject[\"properties\"];\n readonly allOf: NonNullable<DataPortSchemaObject[\"allOf\"]>;\n };\n readonly createStdioTransport: (config: McpServerConfig) => Promise<Transport>;\n}\n\nexport const MCP_TASK_DEPS = createServiceToken<McpTaskDeps>(\"@workglow/tasks/mcp\");\n\nexport function registerMcpTaskDeps(deps: McpTaskDeps): void {\n globalServiceRegistry.registerInstance(MCP_TASK_DEPS, deps);\n}\n\nexport function getMcpTaskDeps(): McpTaskDeps {\n if (!globalServiceRegistry.has(MCP_TASK_DEPS)) {\n throw new Error(\n \"MCP task dependencies not registered. Import @workglow/tasks from a platform entry (browser, node, or bun) before using MCP tasks.\"\n );\n }\n return globalServiceRegistry.get(MCP_TASK_DEPS);\n}\n",
62
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * Builds the JSON Schema for the `server` object in MCP task config/input schemas.\n * Uses the platform-injected {@link McpTaskDeps.mcpServerConfigSchema} so browser\n * builds get the correct (stdio-free) transport enum.\n */\n\nimport type { DataPortSchemaObject, JsonSchema } from \"@workglow/util/schema\";\nimport type { McpTaskDeps } from \"../util/McpTaskDeps\";\n\n/** Optional fields from {@link McpServerRecordSchema} not present on {@link mcpServerConfigSchema}. */\nexport const mcpServerRecordMetadataProperties = {\n server_id: {\n type: \"string\",\n title: \"Server ID\",\n description:\n \"MCP server repository id; present when the server reference was resolved from the registry\",\n },\n label: {\n type: \"string\",\n title: \"Label\",\n description: \"Display label for the server (optional)\",\n },\n description: {\n type: \"string\",\n title: \"Description\",\n description: \"Optional human-readable description\",\n },\n} as const satisfies DataPortSchemaObject[\"properties\"];\n\n/**\n * Builds the complete `server` oneOf schema for MCP task config/input schemas.\n *\n * Accepts the platform-injected `mcpServerConfigSchema` so that the transport\n * enum and conditional validation rules match the current runtime.\n */\nexport function TypeMcpServer(\n mcpServerConfigSchema: McpTaskDeps[\"mcpServerConfigSchema\"]\n): JsonSchema {\n return {\n oneOf: [\n { type: \"string\", format: \"mcp-server\" },\n {\n type: \"object\",\n format: \"mcp-server\",\n properties: {\n ...mcpServerConfigSchema.properties,\n ...mcpServerRecordMetadataProperties,\n },\n required: [\"transport\"],\n allOf: mcpServerConfigSchema.allOf,\n additionalProperties: false,\n },\n ],\n title: \"Server\",\n description: \"MCP server reference (ID or inline config)\",\n } as const;\n}\n",
63
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchemaObject, FromSchema } from \"@workglow/util/schema\";\nimport { mcpServerConfigSchema } from \"../util/McpClientUtil\";\nimport { mcpServerRecordMetadataProperties } from \"./mcpServerReferenceObjectSchema\";\n\nexport const McpServerRecordSchema = {\n type: \"object\",\n properties: {\n ...mcpServerRecordMetadataProperties,\n ...mcpServerConfigSchema.properties,\n },\n required: [\"server_id\", \"transport\"],\n allOf: mcpServerConfigSchema.allOf,\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type McpServerRecord = FromSchema<typeof McpServerRecordSchema>;\nexport const McpServerPrimaryKeyNames = [\"server_id\"] as const;\n",
64
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createServiceToken,\n globalServiceRegistry,\n registerInputCompactor,\n registerInputResolver,\n ServiceRegistry,\n} from \"@workglow/util\";\nimport { InMemoryMcpServerRepository } from \"./InMemoryMcpServerRepository\";\nimport { McpServerRepository } from \"./McpServerRepository\";\nimport type { McpServerRecord } from \"./McpServerSchema\";\n\nexport interface McpServerConnection {\n readonly config: McpServerRecord;\n}\n\nexport const MCP_SERVERS =\n createServiceToken<Map<string, McpServerConnection>>(\"mcp-server.registry\");\n\nexport const MCP_SERVER_REPOSITORY =\n createServiceToken<McpServerRepository>(\"mcp-server.repository\");\n\nglobalServiceRegistry.registerIfAbsent(\n MCP_SERVERS,\n (): Map<string, McpServerConnection> => new Map(),\n true\n);\n\nglobalServiceRegistry.registerIfAbsent(\n MCP_SERVER_REPOSITORY,\n (): McpServerRepository => new InMemoryMcpServerRepository(),\n true\n);\n\nexport function getGlobalMcpServers(): Map<string, McpServerConnection> {\n return globalServiceRegistry.get(MCP_SERVERS);\n}\n\nexport function getGlobalMcpServerRepository(): McpServerRepository {\n return globalServiceRegistry.get(MCP_SERVER_REPOSITORY);\n}\n\nexport function setGlobalMcpServerRepository(repository: McpServerRepository): void {\n globalServiceRegistry.registerInstance(MCP_SERVER_REPOSITORY, repository);\n}\n\nexport async function registerMcpServer(config: McpServerRecord): Promise<void> {\n const servers = getGlobalMcpServers();\n servers.set(config.server_id, { config });\n\n const repo = getGlobalMcpServerRepository();\n await repo.addServer(config);\n}\n\nexport function getMcpServer(id: string): McpServerConnection | undefined {\n return getGlobalMcpServers().get(id);\n}\n\nasync function resolveServerFromRegistry(\n id: string,\n _format: string,\n registry: ServiceRegistry\n): Promise<McpServerRecord> {\n // Check scoped registry first\n const servers = registry.has(MCP_SERVERS)\n ? registry.get<Map<string, McpServerConnection>>(MCP_SERVERS)\n : getGlobalMcpServers();\n\n const entry = servers.get(id);\n if (entry) return entry.config;\n\n // Fall back to repository lookup\n const repo = registry.has(MCP_SERVER_REPOSITORY)\n ? registry.get<McpServerRepository>(MCP_SERVER_REPOSITORY)\n : getGlobalMcpServerRepository();\n\n const record = await repo.getServer(id);\n if (!record) {\n throw new Error(`MCP server \"${id}\" not found in registry`);\n }\n return record;\n}\n\nregisterInputResolver(\"mcp-server\", resolveServerFromRegistry);\n\n// Register the compactor — extracts server_id from an McpServerRecord\nregisterInputCompactor(\"mcp-server\", (value) => {\n if (typeof value === \"object\" && value !== null && \"server_id\" in value) {\n const id = (value as Record<string, unknown>).server_id;\n return typeof id === \"string\" ? id : undefined;\n }\n return undefined;\n});\n",
65
55
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { uuid4 } from \"@workglow/util\";\nimport type { DataPortSchema } from \"@workglow/util/schema\";\nimport { DataPortSchemaNonBoolean, TypedArray, VectorFromSchema } from \"@workglow/util/schema\";\n\nimport {\n GraphAsTask,\n GraphAsTaskConfig,\n GraphAsTaskRunner,\n GraphResultArray,\n JsonTaskItem,\n PROPERTY_ARRAY,\n TaskGraph,\n TaskGraphItemJson,\n TaskInput,\n TaskOutput,\n} from \"@workglow/task-graph\";\nimport type { TaskRunContext } from \"@workglow/task-graph\";\n\nexport function TypeReplicateArray<const T extends DataPortSchemaNonBoolean>(\n type: T,\n annotations: Record<string, unknown> = {}\n): DataPortSchemaNonBoolean {\n return {\n oneOf: [type, { type: \"array\", items: type }],\n title: type.title,\n description: type.description,\n ...(type.format ? { format: type.format } : {}),\n ...annotations,\n \"x-replicate\": true,\n };\n}\n\n/**\n * Removes array types from a union, leaving only non-array types.\n * For example, `string | string[]` becomes `string`.\n * Used to extract the single-value type from schemas with x-replicate annotation.\n * Uses distributive conditional types to filter out arrays from unions.\n * Checks for both array types and types with numeric index signatures (FromSchema array output).\n * Preserves Vector types like Float64Array which also have numeric indices.\n */\ntype UnwrapArrayUnion<T> = T extends readonly any[]\n ? T extends TypedArray\n ? T\n : never\n : number extends keyof T\n ? \"push\" extends keyof T\n ? never\n : T\n : T;\n\n/**\n * Transforms a schema by removing array variants from properties marked with x-replicate.\n * Properties with x-replicate use {@link TypeReplicateArray} which creates a union of\n * `T | T[]`, and this type extracts just `T`.\n */\nexport type DeReplicateFromSchema<S extends { properties: Record<string, any> }> = {\n [K in keyof S[\"properties\"]]: S[\"properties\"][K] extends { \"x-replicate\": true }\n ? UnwrapArrayUnion<VectorFromSchema<S[\"properties\"][K]>>\n : VectorFromSchema<S[\"properties\"][K]>;\n};\n\n/**\n * ArrayTask is a compound task that either:\n * 1. Executes directly if all inputs are non-arrays\n * 2. Creates a subGraph with one task instance per array element if any input is an array\n * 3. Creates all combinations if multiple inputs are arrays\n */\nexport abstract class ArrayTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends GraphAsTaskConfig<Input> = GraphAsTaskConfig<Input>,\n> extends GraphAsTask<Input, Output, Config> {\n /**\n * The type identifier for this task class\n */\n public static override type = \"ArrayTask\";\n\n /**\n * Make this task have results that look like an array\n */\n public static override readonly compoundMerge = PROPERTY_ARRAY;\n\n /**\n * Gets input schema for this task from the static inputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public override inputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).inputSchema();\n }\n\n /**\n * Gets output schema for this task from the static outputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public override outputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).outputSchema();\n }\n\n /**\n * Merges the preview results into the output\n * @param input The input to the task\n * @param output The output of the task\n * @returns The merged output\n */\n public executeMerge(_input: Input, output: Output): Output {\n return output;\n }\n\n /**\n * Regenerates the task subgraph based on input arrays\n */\n public override regenerateGraph(): void {\n // Check if any inputs are arrays\n const arrayInputs = new Map<string, Array<Input[keyof Input]>>();\n let hasArrayInputs = false;\n const inputSchema = this.inputSchema();\n if (typeof inputSchema !== \"boolean\") {\n const keys = Object.keys(inputSchema.properties || {});\n for (const inputId of keys) {\n const inputValue = this.runInputData[inputId];\n const inputDef = inputSchema.properties?.[inputId];\n if (\n typeof inputDef === \"object\" &&\n inputDef !== null &&\n \"x-replicate\" in inputDef &&\n (inputDef as any)[\"x-replicate\"] === true &&\n Array.isArray(inputValue) &&\n inputValue.length > 1\n ) {\n arrayInputs.set(inputId, inputValue);\n hasArrayInputs = true;\n }\n }\n }\n\n // Clear the existing subgraph\n this.subGraph = new TaskGraph();\n\n // If no array inputs, no need to populate the subgraph\n if (!hasArrayInputs) {\n super.regenerateGraph();\n return;\n }\n\n // Create all combinations of inputs\n const inputIds = Array.from(arrayInputs.keys());\n const inputObject = Object.fromEntries(arrayInputs);\n const combinations = this.generateCombinations(inputObject as Input, inputIds);\n\n // Create task instances for each combination\n const tasks = combinations.map((combination) => {\n // Create a new instance of this same class\n const { id, title, ...rest } = this.config;\n const task = new (this.constructor as any)(\n {\n ...rest,\n id: `${id}_${uuid4()}`,\n defaults: { ...this.defaults, ...this.runInputData, ...combination },\n },\n this.runConfig\n );\n return task;\n });\n\n // Add tasks to subgraph\n this.subGraph.addTasks(tasks);\n\n // Emit regenerate event\n super.regenerateGraph();\n }\n\n /**\n * Generates all possible combinations of array inputs\n * @param input Input object containing arrays\n * @param inputMakeArray Keys of properties to generate combinations for\n * @returns Array of input objects with all possible combinations\n */\n protected generateCombinations(input: Input, inputMakeArray: Array<keyof Input>): Input[] {\n // Prepare arrays for combination generation\n const arraysToCombine: Array<Array<Input[keyof Input]>> = inputMakeArray.map((key) =>\n Array.isArray(input[key]) ? (input[key] as Array<Input[keyof Input]>) : []\n );\n\n const indices = new Array(arraysToCombine.length).fill(0);\n const combinations: number[][] = [];\n let done = false;\n\n while (!done) {\n combinations.push([...indices]); // Add current combination of indices\n\n // Move to the next combination of indices\n for (let i = indices.length - 1; i >= 0; i--) {\n if (++indices[i] < arraysToCombine[i].length) break; // Increment current index if possible\n if (i === 0)\n done = true; // All combinations have been generated\n else indices[i] = 0; // Reset current index and move to the next position\n }\n }\n\n // Build objects based on the combinations\n const combos = combinations.map((combination) => {\n const result = { ...input }; // Start with a shallow copy of the input\n\n // Set values from the arrays based on the current combination\n combination.forEach((valueIndex, arrayIndex) => {\n const key = inputMakeArray[arrayIndex];\n if (Array.isArray(input[key]))\n result[key] = (input[key] as Array<Input[keyof Input]>)[valueIndex];\n });\n\n return result;\n });\n\n return combos;\n }\n\n override toJSON(): TaskGraphItemJson {\n const { subgraph, ...result } = super.toJSON();\n return result;\n }\n\n override toDependencyJSON(): JsonTaskItem {\n const { subtasks, ...result } = super.toDependencyJSON();\n return result;\n }\n\n /**\n * Create a custom runner for ArrayTask that overrides input passing behavior\n * as inputs were already distributed to child tasks during graph regeneration\n */\n\n declare _runner: ArrayTaskRunner<Input, Output, Config>;\n\n /**\n * Task runner for handling the task execution\n */\n override get runner(): ArrayTaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new ArrayTaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n}\n\n/**\n * Custom runner for ArrayTask that passes empty input to child tasks.\n * ArrayTask child tasks get their input values from their defaults (set during task creation),\n * not from the parent task's input.\n */\nclass ArrayTaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends GraphAsTaskConfig<Input> = GraphAsTaskConfig<Input>,\n> extends GraphAsTaskRunner<Input, Output, Config> {\n declare task: ArrayTask<Input, Output, Config>;\n\n /**\n * Override to pass empty input to subgraph.\n * Child tasks will use their defaults instead of parent input.\n */\n protected override async executeTaskChildren(_input: Input): Promise<GraphResultArray<Output>> {\n return super.executeTaskChildren({} as Input);\n }\n\n /**\n * Override to pass empty input to subgraph for preview execution.\n * Child tasks will use their defaults instead of parent input.\n */\n protected override async executeTaskChildrenPreview(): Promise<GraphResultArray<Output>> {\n // Don't pass parent input - child tasks have their input set via defaults during creation\n return this.task.subGraph!.runPreview<Output>({});\n }\n\n public override async executeTaskPreview(\n input: Input,\n ctx: TaskRunContext\n ): Promise<Output | undefined> {\n await super.executeTaskPreview(input, ctx);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n public override async executeTask(input: Input, ctx: TaskRunContext): Promise<Output> {\n await super.executeTask(input, ctx);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n}\n",
66
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { uuid4 } from \"@workglow/util\";\nimport type { IBrowserContext } from \"./IBrowserContext\";\n\nconst sessions = new Map<string, IBrowserContext>();\n\nexport const BrowserSessionRegistry = {\n /**\n * Register a browser context and return a unique session ID.\n */\n register(context: IBrowserContext): string {\n const id = uuid4();\n sessions.set(id, context);\n return id;\n },\n\n /**\n * Retrieve a registered browser context by session ID.\n * Throws if the session does not exist or has been disconnected.\n */\n get(sessionId: string): IBrowserContext {\n const context = sessions.get(sessionId);\n if (!context) {\n throw new Error(`BrowserSessionRegistry: no session found for id \"${sessionId}\"`);\n }\n if (!context.isConnected()) {\n sessions.delete(sessionId);\n throw new Error(`BrowserSessionRegistry: session \"${sessionId}\" is no longer connected`);\n }\n return context;\n },\n\n /**\n * Remove a session from the registry.\n */\n unregister(sessionId: string): void {\n sessions.delete(sessionId);\n },\n\n /**\n * Returns true if a session with the given ID exists.\n */\n has(sessionId: string): boolean {\n return sessions.has(sessionId);\n },\n\n /**\n * Disconnect all registered contexts using Promise.allSettled, then clear the registry.\n */\n async disconnectAll(): Promise<void> {\n const disconnects = Array.from(sessions.values()).map((ctx) => ctx.disconnect());\n await Promise.allSettled(disconnects);\n sessions.clear();\n },\n\n /**\n * Clear all sessions without disconnecting (for tests).\n */\n clear(): void {\n sessions.clear();\n },\n} as const;\n",
67
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { sleep } from \"@workglow/util\";\nimport { CDPBrowserBackend } from \"./CDPBrowserBackend\";\nimport type {\n BrowserConnectOptions,\n ConsoleMessage,\n DialogAction,\n DialogInfo,\n DownloadOptions,\n DownloadResult,\n ElementRef,\n IBrowserContext,\n NavigateOptions,\n NetworkFilter,\n NetworkRequest,\n ScreenshotOptions,\n TabInfo,\n WaitOptions,\n} from \"./IBrowserContext\";\n\n// ---------------------------------------------------------------------------\n// Bun.WebView type (not imported — accessed via globalThis at runtime)\n// ---------------------------------------------------------------------------\n\n/** @type {InstanceType<typeof Bun.WebView>} */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyWebView = any;\n\n// ---------------------------------------------------------------------------\n// BunWebViewBackend\n// ---------------------------------------------------------------------------\n\n/**\n * IBrowserContext implementation using Bun's built-in WebView API + CDP.\n *\n * Bun.WebView provides a headless browser with Chrome DevTools Protocol\n * access. This backend wraps the WebView, delegating CDP operations to the\n * abstract CDPBrowserBackend base class and using native WebView methods\n * for navigation, screenshots, and keyboard input.\n *\n * This file should only be imported in Bun environments.\n */\nexport class BunWebViewBackend extends CDPBrowserBackend implements IBrowserContext {\n private _wv: AnyWebView | null = null;\n private _connected = false;\n\n // Dialog handler\n private _dialogHandler: ((info: DialogInfo) => DialogAction | Promise<DialogAction>) | null =\n null;\n\n protected readonly backendName = \"BunWebViewBackend\";\n\n /**\n * @param defaultChromePath Optional default Chrome binary path. Used when\n * `connect()` is called without `chromePath` in options (e.g., via\n * BrowserSessionTask which doesn't expose chromePath in its config).\n */\n constructor(private readonly defaultChromePath?: string) {\n super();\n }\n\n // ---------------------------------------------------------------------------\n // CDP helper\n // ---------------------------------------------------------------------------\n\n protected async cdp(method: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this.wv.cdp(method, params);\n }\n\n // ---------------------------------------------------------------------------\n // evaluateInPage (abstract from CDPBrowserBackend)\n // ---------------------------------------------------------------------------\n\n protected async evaluateInPage<T>(script: string): Promise<T> {\n return this.wv.evaluate(script) as Promise<T>;\n }\n\n // ---------------------------------------------------------------------------\n // Lifecycle\n // ---------------------------------------------------------------------------\n\n async connect(options: BrowserConnectOptions = {}): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const BunWebView = (globalThis as any).Bun?.WebView;\n if (!BunWebView) {\n throw new Error(\n \"BunWebViewBackend: Bun.WebView is not available — \" +\n \"this backend requires Bun with WebView support\"\n );\n }\n\n const { headless = true, chromePath = this.defaultChromePath } = options;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const webViewOptions: Record<string, any> = {\n headless,\n url: \"about:blank\",\n backend: chromePath ? { type: \"chrome\", path: chromePath } : { type: \"chrome\" },\n };\n\n this._wv = new BunWebView(webViewOptions);\n\n // Wait for the initial navigation to complete\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(\"BunWebViewBackend: initial navigation timed out\"));\n }, 30_000);\n\n this._wv!.onNavigated = () => {\n clearTimeout(timeout);\n this._wv!.onNavigated = null;\n this._wv!.onNavigationFailed = null;\n resolve();\n };\n\n this._wv!.onNavigationFailed = (error: unknown) => {\n clearTimeout(timeout);\n this._wv!.onNavigated = null;\n this._wv!.onNavigationFailed = null;\n reject(new Error(`BunWebViewBackend: initial navigation failed — ${error}`));\n };\n });\n\n // Enable Accessibility domain for snapshot/queryAXTree\n await this.cdp(\"Accessibility.enable\");\n\n this._connected = true;\n }\n\n async disconnect(): Promise<void> {\n this._connected = false;\n try {\n if (this._wv) {\n this._wv.close();\n }\n } finally {\n this._wv = null;\n this._refMap.clear();\n this._refCounter.count = 0;\n }\n }\n\n isConnected(): boolean {\n return this._connected && this._wv !== null;\n }\n\n // ---------------------------------------------------------------------------\n // Internal helpers\n // ---------------------------------------------------------------------------\n\n private get wv(): AnyWebView {\n if (!this._wv || !this._connected) {\n throw new Error(\"BunWebViewBackend: not connected — call connect() first\");\n }\n return this._wv;\n }\n\n // ---------------------------------------------------------------------------\n // Navigation\n // ---------------------------------------------------------------------------\n\n async navigate(url: string, options: NavigateOptions = {}): Promise<void> {\n const timeout = options.timeout ?? 30_000;\n\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(\"BunWebViewBackend: navigate timed out\"));\n }, timeout);\n\n this.wv.onNavigated = () => {\n clearTimeout(timer);\n this.wv.onNavigated = null;\n resolve();\n };\n\n this.wv.onNavigationFailed = (error: unknown) => {\n clearTimeout(timer);\n this.wv.onNavigationFailed = null;\n this.wv.onNavigated = null;\n reject(new Error(`BunWebViewBackend: navigation failed — ${error}`));\n };\n\n this.wv.navigate(url);\n });\n }\n\n async goBack(_options: NavigateOptions = {}): Promise<void> {\n this.wv.back();\n await this.waitForNavigation();\n }\n\n async goForward(_options: NavigateOptions = {}): Promise<void> {\n this.wv.forward();\n await this.waitForNavigation();\n }\n\n async reload(_options: NavigateOptions = {}): Promise<void> {\n this.wv.reload();\n await this.waitForNavigation();\n }\n\n async currentUrl(): Promise<string> {\n return this.wv.url;\n }\n\n async title(): Promise<string> {\n return this.wv.title;\n }\n\n // ---------------------------------------------------------------------------\n // Content extraction\n // ---------------------------------------------------------------------------\n\n async content(): Promise<string> {\n return this.wv.evaluate(\"document.documentElement.outerHTML\") as Promise<string>;\n }\n\n // ---------------------------------------------------------------------------\n // JS evaluation\n // ---------------------------------------------------------------------------\n\n async evaluate<T>(expression: string): Promise<T> {\n return this.wv.evaluate(expression) as Promise<T>;\n }\n\n // ---------------------------------------------------------------------------\n // Capture\n // ---------------------------------------------------------------------------\n\n async screenshot(options: ScreenshotOptions = {}): Promise<Buffer> {\n const { format = \"png\", quality } = options;\n return this.wv.screenshot({\n encoding: \"buffer\",\n format,\n ...(quality !== undefined && { quality }),\n }) as Promise<Buffer>;\n }\n\n // ---------------------------------------------------------------------------\n // Input (native WebView methods)\n // ---------------------------------------------------------------------------\n\n override async pressKey(key: string, _options: WaitOptions = {}): Promise<void> {\n await this.wv.press(key);\n }\n\n override async type(text: string, _options: WaitOptions = {}): Promise<void> {\n await this.wv.type(text);\n }\n\n // ---------------------------------------------------------------------------\n // File operations\n // ---------------------------------------------------------------------------\n\n async download(\n _trigger: () => Promise<void>,\n _options: DownloadOptions = {}\n ): Promise<DownloadResult> {\n throw new Error(\"BunWebViewBackend: download is not supported\");\n }\n\n // ---------------------------------------------------------------------------\n // Dialogs\n // ---------------------------------------------------------------------------\n\n onDialog(handler: (info: DialogInfo) => DialogAction | Promise<DialogAction>): void {\n this._dialogHandler = handler;\n\n void this.cdp(\"Page.enable\")\n .then(() => {\n this.wv.addEventListener(\n \"Page.javascriptDialogOpening\",\n async (params: Record<string, unknown>) => {\n const info: DialogInfo = {\n type: params.type as DialogInfo[\"type\"],\n message: params.message as string,\n defaultValue: (params.defaultPrompt as string) || undefined,\n };\n\n if (this._dialogHandler) {\n const action = await this._dialogHandler(info);\n const accept = action.accept;\n const promptText =\n accept && \"promptText\" in action\n ? (action as { accept: true; promptText?: string }).promptText\n : undefined;\n await this.cdp(\"Page.handleJavaScriptDialog\", {\n accept,\n ...(promptText !== undefined && { promptText }),\n });\n } else {\n await this.cdp(\"Page.handleJavaScriptDialog\", { accept: false });\n }\n }\n );\n })\n .catch(() => {\n // Page.enable failed — dialog handler will not be wired up.\n // This is non-fatal: the session still works, but dialogs won't be\n // handled automatically and may block page execution.\n });\n }\n\n // ---------------------------------------------------------------------------\n // Tabs (single-view model)\n // ---------------------------------------------------------------------------\n\n async tabs(): Promise<readonly TabInfo[]> {\n const url = this.wv.url;\n const title = this.wv.title;\n return [{ tabId: \"0\", url, title }];\n }\n\n async switchTab(_tabId: string): Promise<void> {\n // Single-view model: no-op\n }\n\n async newTab(url?: string): Promise<TabInfo> {\n if (url) {\n await this.navigate(url);\n }\n return {\n tabId: \"0\",\n url: this.wv.url,\n title: this.wv.title,\n };\n }\n\n async closeTab(_tabId: string): Promise<void> {\n // Single-view model: closing the tab means closing the WebView\n await this.disconnect();\n }\n\n // ---------------------------------------------------------------------------\n // Wait\n // ---------------------------------------------------------------------------\n\n async waitForNavigation(options: NavigateOptions = {}): Promise<void> {\n const timeout = options.timeout ?? 30_000;\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n this.wv.onNavigated = null;\n this.wv.onNavigationFailed = null;\n reject(new Error(\"BunWebViewBackend: waitForNavigation timed out\"));\n }, timeout);\n\n this.wv.onNavigated = () => {\n clearTimeout(timer);\n this.wv.onNavigated = null;\n this.wv.onNavigationFailed = null;\n resolve();\n };\n\n this.wv.onNavigationFailed = (error: unknown) => {\n clearTimeout(timer);\n this.wv.onNavigated = null;\n this.wv.onNavigationFailed = null;\n reject(new Error(`BunWebViewBackend: navigation failed — ${error}`));\n };\n });\n }\n\n async waitForSelector(selector: string, options: WaitOptions = {}): Promise<ElementRef> {\n const timeout = options.timeout ?? 30_000;\n const interval = 100;\n const deadline = Date.now() + timeout;\n\n while (Date.now() < deadline) {\n const found = await this.wv.evaluate(`!!document.querySelector(${JSON.stringify(selector)})`);\n if (found) {\n const ref = await this.querySelector(selector);\n if (ref) return ref;\n }\n await sleep(interval);\n }\n\n throw new Error(`BunWebViewBackend: waitForSelector timed out for \"${selector}\"`);\n }\n\n async waitForIdle(options: WaitOptions = {}): Promise<void> {\n const timeout = options.timeout ?? 30_000;\n const interval = 100;\n const deadline = Date.now() + timeout;\n\n while (Date.now() < deadline) {\n const ready = await this.wv.evaluate(`document.readyState === \"complete\"`);\n if (ready) return;\n await sleep(interval);\n }\n\n throw new Error(\"BunWebViewBackend: waitForIdle timed out\");\n }\n\n // ---------------------------------------------------------------------------\n // Optional capabilities (stubs)\n // ---------------------------------------------------------------------------\n\n readonly networkRequests = (_filter?: NetworkFilter): Promise<readonly NetworkRequest[]> => {\n return Promise.resolve([]);\n };\n\n readonly consoleMessages = (): Promise<readonly ConsoleMessage[]> => {\n return Promise.resolve([]);\n };\n}\n",
68
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AccessibilityNode,\n AccessibilityTree,\n AriaRole,\n ClickOptions,\n ElementRef,\n SnapshotOptions,\n WaitOptions,\n} from \"./IBrowserContext\";\n\n// ---------------------------------------------------------------------------\n// CDP AX node types (CDP response shape)\n// ---------------------------------------------------------------------------\n\ninterface CDPAXProperty {\n name: string;\n value: {\n type: string;\n value?: unknown;\n relatedNodes?: Array<{ backendDOMNodeId: number }>;\n };\n}\n\ninterface CDPAXNode {\n nodeId: string;\n role: { type: string; value: string };\n name: { type: string; value: string };\n backendDOMNodeId?: number;\n properties?: CDPAXProperty[];\n childIds?: string[];\n ignored?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Mutable accessibility node (used while building the tree)\n// ---------------------------------------------------------------------------\n\ninterface MutableAccessibilityNode {\n ref: ElementRef;\n role: AriaRole;\n name: string;\n level?: number;\n checked?: boolean | \"mixed\";\n disabled?: boolean;\n expanded?: boolean;\n pressed?: boolean | \"mixed\";\n selected?: boolean;\n value?: string | number;\n children?: MutableAccessibilityNode[];\n}\n\n// ---------------------------------------------------------------------------\n// Roles to skip during accessibility tree parsing\n// ---------------------------------------------------------------------------\n\nconst IGNORED_ROLES = new Set([\"none\", \"generic\", \"ignored\", \"InlineTextBox\"]);\n\n// ---------------------------------------------------------------------------\n// Parse CDP AX tree into AccessibilityNode tree\n// ---------------------------------------------------------------------------\n\nfunction parseCDPAXTree(\n nodes: CDPAXNode[],\n refCounter: { count: number },\n refMap: Map<ElementRef, number | null>\n): AccessibilityNode {\n const nodeMap = new Map<string, CDPAXNode>();\n let rootNode: CDPAXNode | undefined;\n\n for (const node of nodes) {\n nodeMap.set(node.nodeId, node);\n // Root: node whose id is not referenced as a child by any other node\n if (!rootNode) {\n rootNode = node;\n }\n }\n\n // Find actual root: the node not referenced as a child\n const childIds = new Set<string>();\n for (const node of nodes) {\n for (const childId of node.childIds ?? []) {\n childIds.add(childId);\n }\n }\n rootNode = nodes.find((n) => !childIds.has(n.nodeId)) ?? nodes[0];\n\n function buildNode(cdpNode: CDPAXNode): MutableAccessibilityNode | null {\n const role = cdpNode.role?.value ?? \"\";\n\n // Skip ignored/transparent roles\n if (cdpNode.ignored || IGNORED_ROLES.has(role)) {\n return null;\n }\n\n const ref = `e${++refCounter.count}`;\n // Store backendDOMNodeId (or null if unavailable) for later element resolution\n refMap.set(ref, cdpNode.backendDOMNodeId ?? null);\n\n const name = typeof cdpNode.name?.value === \"string\" ? cdpNode.name.value : \"\";\n\n const node: MutableAccessibilityNode = {\n ref,\n role: role as AriaRole,\n name,\n };\n\n // Parse AX properties\n for (const prop of cdpNode.properties ?? []) {\n switch (prop.name) {\n case \"level\":\n if (typeof prop.value.value === \"number\") {\n node.level = prop.value.value;\n }\n break;\n case \"checked\":\n if (prop.value.value === \"mixed\") {\n node.checked = \"mixed\";\n } else if (typeof prop.value.value === \"boolean\") {\n node.checked = prop.value.value;\n }\n break;\n case \"disabled\":\n node.disabled = prop.value.value === true;\n break;\n case \"expanded\":\n node.expanded = prop.value.value === true;\n break;\n case \"pressed\":\n if (prop.value.value === \"mixed\") {\n node.pressed = \"mixed\";\n } else if (typeof prop.value.value === \"boolean\") {\n node.pressed = prop.value.value;\n }\n break;\n case \"selected\":\n node.selected = prop.value.value === true;\n break;\n case \"valuetext\":\n case \"value\":\n if (typeof prop.value.value === \"string\" || typeof prop.value.value === \"number\") {\n node.value = prop.value.value;\n }\n break;\n }\n }\n\n // Recurse into children\n const childNodes: MutableAccessibilityNode[] = [];\n for (const childId of cdpNode.childIds ?? []) {\n const childCdp = nodeMap.get(childId);\n if (childCdp) {\n const child = buildNode(childCdp);\n if (child) childNodes.push(child);\n }\n }\n if (childNodes.length > 0) {\n node.children = childNodes;\n }\n\n return node;\n }\n\n if (!rootNode) {\n const ref = `e${++refCounter.count}`;\n refMap.set(ref, null);\n return { ref, role: \"document\", name: \"\" };\n }\n\n const built = buildNode(rootNode);\n if (!built) {\n const ref = `e${++refCounter.count}`;\n refMap.set(ref, null);\n return { ref, role: \"document\", name: \"\" };\n }\n\n return built as AccessibilityNode;\n}\n\n// ---------------------------------------------------------------------------\n// Build a YAML-like accessibility tree string from the node tree\n// ---------------------------------------------------------------------------\n\nfunction serializeAXTree(node: AccessibilityNode, indent = 0): string {\n const spaces = \" \".repeat(indent);\n let line = `${spaces}- ${node.role}`;\n if (node.name) {\n line += ` \"${node.name.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"')}\"`;\n }\n if (node.level !== undefined) line += ` [level=${node.level}]`;\n if (node.checked !== undefined) line += ` [checked=${node.checked}]`;\n if (node.disabled) line += ` [disabled=true]`;\n if (node.expanded !== undefined) line += ` [expanded=${node.expanded}]`;\n if (node.pressed !== undefined) line += ` [pressed=${node.pressed}]`;\n if (node.selected) line += ` [selected=true]`;\n if (node.value !== undefined) line += ` [value=${node.value}]`;\n\n const lines: string[] = [line];\n for (const child of node.children ?? []) {\n lines.push(serializeAXTree(child, indent + 1));\n }\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Convert modifier key names to CDP modifier bitmask.\n * Alt=1, Control=2, Meta=4, Shift=8\n */\nfunction buildModifiersMask(\n modifiers?: ReadonlyArray<\"Alt\" | \"Control\" | \"Meta\" | \"Shift\">\n): number {\n if (!modifiers) return 0;\n let mask = 0;\n for (const mod of modifiers) {\n if (mod === \"Alt\") mask |= 1;\n else if (mod === \"Control\") mask |= 2;\n else if (mod === \"Meta\") mask |= 4;\n else if (mod === \"Shift\") mask |= 8;\n }\n return mask;\n}\n\n/** Map Playwright-style key names to CDP key names. */\nconst KEY_CODE_MAP: Record<string, string> = {\n Enter: \"Enter\",\n Tab: \"Tab\",\n Escape: \"Escape\",\n Backspace: \"Backspace\",\n Delete: \"Delete\",\n ArrowUp: \"ArrowUp\",\n ArrowDown: \"ArrowDown\",\n ArrowLeft: \"ArrowLeft\",\n ArrowRight: \"ArrowRight\",\n Home: \"Home\",\n End: \"End\",\n PageUp: \"PageUp\",\n PageDown: \"PageDown\",\n Space: \" \",\n F1: \"F1\",\n F2: \"F2\",\n F3: \"F3\",\n F4: \"F4\",\n F5: \"F5\",\n F6: \"F6\",\n F7: \"F7\",\n F8: \"F8\",\n F9: \"F9\",\n F10: \"F10\",\n F11: \"F11\",\n F12: \"F12\",\n};\n\n/** Convert a key name to a CDP code string (best effort). */\nfunction keyToCode(key: string): string {\n if (key.length === 1) {\n const upper = key.toUpperCase();\n return `Key${upper}`;\n }\n const codeMap: Record<string, string> = {\n Enter: \"Enter\",\n Tab: \"Tab\",\n Escape: \"Escape\",\n Backspace: \"Backspace\",\n Delete: \"Delete\",\n ArrowUp: \"ArrowUp\",\n ArrowDown: \"ArrowDown\",\n ArrowLeft: \"ArrowLeft\",\n ArrowRight: \"ArrowRight\",\n Home: \"Home\",\n End: \"End\",\n PageUp: \"PageUp\",\n PageDown: \"PageDown\",\n Space: \"Space\",\n };\n return codeMap[key] ?? key;\n}\n\n// ---------------------------------------------------------------------------\n// CDPBrowserBackend — abstract base for backends that use the Chrome DevTools\n// Protocol (CDP) for element interaction, accessibility, and DOM queries.\n// ---------------------------------------------------------------------------\n\nexport abstract class CDPBrowserBackend {\n protected _refMap = new Map<ElementRef, number | null>();\n protected _refCounter = { count: 0 };\n\n // ---------------------------------------------------------------------------\n // Abstract — subclasses provide these\n // ---------------------------------------------------------------------------\n\n /** Send a CDP command. Subclasses wire this to their transport. */\n protected abstract cdp(method: string, params?: Record<string, unknown>): Promise<unknown>;\n\n /** Human-readable backend name for error messages. */\n protected abstract readonly backendName: string;\n\n /** Evaluate a JavaScript expression in the page and return the result. */\n protected abstract evaluateInPage<T>(script: string): Promise<T>;\n\n // ---------------------------------------------------------------------------\n // Ref resolution\n // ---------------------------------------------------------------------------\n\n /**\n * Resolve an ElementRef to a backendDOMNodeId. Throws if unknown.\n */\n protected resolveRefToNodeId(ref: ElementRef): number {\n if (!this._refMap.has(ref)) {\n throw new Error(`${this.backendName}: unknown ref \"${ref}\"`);\n }\n const nodeId = this._refMap.get(ref);\n if (nodeId == null) {\n throw new Error(`${this.backendName}: ref \"${ref}\" has no associated DOM node`);\n }\n return nodeId;\n }\n\n /**\n * Get the bounding box of a DOM node by backendDOMNodeId via CDP.\n */\n protected async getBoundingBox(\n backendNodeId: number\n ): Promise<{ x: number; y: number; width: number; height: number }> {\n const result = (await this.cdp(\"DOM.getBoxModel\", { backendNodeId })) as {\n model: { content: number[] };\n };\n const content = result.model.content;\n // content is [x1,y1, x2,y2, x3,y3, x4,y4] (quad)\n const x = content[0];\n const y = content[1];\n const width = content[2] - content[0];\n const height = content[5] - content[1];\n return { x, y, width, height };\n }\n\n /**\n * Get the root nodeId of the DOM document.\n */\n protected async getDocumentRootNodeId(): Promise<number> {\n const doc = (await this.cdp(\"DOM.getDocument\", { depth: 0 })) as {\n root: { nodeId: number };\n };\n return doc.root.nodeId;\n }\n\n // ---------------------------------------------------------------------------\n // Accessibility\n // ---------------------------------------------------------------------------\n\n async snapshot(_options: SnapshotOptions = {}): Promise<AccessibilityTree> {\n // Clear old snapshot refs but keep the monotonic counter to avoid\n // collisions with refs created by querySelector between snapshots.\n this._refMap.clear();\n\n const result = (await this.cdp(\"Accessibility.getFullAXTree\")) as { nodes: CDPAXNode[] };\n const nodes = result.nodes ?? [];\n\n const root = parseCDPAXTree(nodes, this._refCounter, this._refMap);\n const yaml = serializeAXTree(root);\n\n return { root, yaml };\n }\n\n // ---------------------------------------------------------------------------\n // Element interaction (by ref)\n // ---------------------------------------------------------------------------\n\n async click(ref: ElementRef, options: ClickOptions = {}): Promise<void> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const { x, y, width, height } = await this.getBoundingBox(backendNodeId);\n const cx = x + width / 2;\n const cy = y + height / 2;\n\n const button = options.button ?? \"left\";\n const clickCount = options.clickCount ?? 1;\n const modifiers = buildModifiersMask(options.modifiers);\n\n for (let i = 0; i < clickCount; i++) {\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mousePressed\",\n x: cx,\n y: cy,\n button,\n clickCount: 1,\n modifiers,\n });\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mouseReleased\",\n x: cx,\n y: cy,\n button,\n clickCount: 1,\n modifiers,\n });\n }\n }\n\n async fill(ref: ElementRef, value: string, _options: WaitOptions = {}): Promise<void> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n\n // Focus the element\n await this.cdp(\"DOM.focus\", { backendNodeId });\n\n // Select all existing text and replace with new value\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyDown\",\n key: \"a\",\n code: \"KeyA\",\n modifiers: 2, // Control\n });\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyUp\",\n key: \"a\",\n code: \"KeyA\",\n modifiers: 2,\n });\n\n // Insert text via CDP\n await this.cdp(\"Input.insertText\", { text: value });\n }\n\n async selectOption(\n ref: ElementRef,\n values: string | readonly string[],\n _options: WaitOptions = {}\n ): Promise<void> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const valuesArray = Array.isArray(values) ? values : [values];\n\n // Use JavaScript to set the value on the select element\n const result = (await this.cdp(\"DOM.resolveNode\", { backendNodeId })) as {\n object: { objectId: string };\n };\n const objectId = result.object.objectId;\n\n await this.cdp(\"Runtime.callFunctionOn\", {\n objectId,\n functionDeclaration: `function(vals) {\n const opts = Array.from(this.options);\n for (const opt of opts) {\n opt.selected = vals.includes(opt.value);\n }\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }`,\n arguments: [{ value: valuesArray }],\n });\n }\n\n async hover(ref: ElementRef, _options: WaitOptions = {}): Promise<void> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const { x, y, width, height } = await this.getBoundingBox(backendNodeId);\n const cx = x + width / 2;\n const cy = y + height / 2;\n\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mouseMoved\",\n x: cx,\n y: cy,\n });\n }\n\n // ---------------------------------------------------------------------------\n // Semantic interaction\n // ---------------------------------------------------------------------------\n\n async clickByRole(role: AriaRole, name: string, options: ClickOptions = {}): Promise<void> {\n const result = (await this.cdp(\"Accessibility.queryAXTree\", {\n role,\n name,\n })) as { nodes: CDPAXNode[] };\n\n const axNode = result.nodes?.[0];\n if (!axNode) {\n throw new Error(`${this.backendName}: no element with role \"${role}\" and name \"${name}\"`);\n }\n\n if (axNode.backendDOMNodeId == null) {\n throw new Error(\n `${this.backendName}: element with role \"${role}\" and name \"${name}\" has no DOM node`\n );\n }\n\n const { x, y, width, height } = await this.getBoundingBox(axNode.backendDOMNodeId);\n const cx = x + width / 2;\n const cy = y + height / 2;\n\n const button = options.button ?? \"left\";\n const clickCount = options.clickCount ?? 1;\n const modifiers = buildModifiersMask(options.modifiers);\n\n for (let i = 0; i < clickCount; i++) {\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mousePressed\",\n x: cx,\n y: cy,\n button,\n clickCount: 1,\n modifiers,\n });\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mouseReleased\",\n x: cx,\n y: cy,\n button,\n clickCount: 1,\n modifiers,\n });\n }\n }\n\n async fillByLabel(label: string, value: string, _options: WaitOptions = {}): Promise<void> {\n // Try CDP path first: find the label via AX tree, resolve its associated input,\n // then use CDP DOM.focus + Input.insertText (no JS injection needed).\n const labelResult = (await this.cdp(\"Accessibility.queryAXTree\", {\n role: \"label\",\n name: label,\n })) as { nodes: CDPAXNode[] };\n\n if (labelResult.nodes?.[0]?.backendDOMNodeId != null) {\n const labelNodeId = labelResult.nodes[0].backendDOMNodeId;\n const resolveResult = (await this.cdp(\"DOM.resolveNode\", {\n backendNodeId: labelNodeId,\n })) as {\n object: { objectId: string };\n };\n\n // Find the associated input element via the label's for/htmlFor or as a child\n const inputResult = (await this.cdp(\"Runtime.callFunctionOn\", {\n objectId: resolveResult.object.objectId,\n functionDeclaration: `function() {\n const forAttr = this.htmlFor || this.getAttribute('for');\n if (forAttr) {\n return document.getElementById(forAttr);\n }\n return this.querySelector('input, textarea, select');\n }`,\n returnByValue: false,\n })) as { result: { objectId?: string; subtype?: string } };\n\n if (inputResult.result.objectId && inputResult.result.subtype !== \"null\") {\n // Get the backendNodeId for the input element\n const inputNodeResult = (await this.cdp(\"DOM.requestNode\", {\n objectId: inputResult.result.objectId,\n })) as { nodeId: number };\n\n const describeResult = (await this.cdp(\"DOM.describeNode\", {\n nodeId: inputNodeResult.nodeId,\n })) as { node: { backendNodeId: number } };\n\n // Focus and fill via CDP — clean, no JS injection\n await this.cdp(\"DOM.focus\", { backendNodeId: describeResult.node.backendNodeId });\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyDown\",\n key: \"a\",\n code: \"KeyA\",\n modifiers: 2,\n });\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyUp\",\n key: \"a\",\n code: \"KeyA\",\n modifiers: 2,\n });\n await this.cdp(\"Input.insertText\", { text: value });\n return;\n }\n }\n\n // JS fallback: find label by text content, resolve its input, set value with events\n const script = `(function() {\n const labels = Array.from(document.querySelectorAll('label'));\n const label = labels.find(l => l.textContent.trim() === ${JSON.stringify(label)});\n if (!label) return false;\n const forAttr = label.htmlFor;\n let input = forAttr ? document.getElementById(forAttr) : label.querySelector('input, textarea, select');\n if (!input) return false;\n input.focus();\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(input), 'value'\n )?.set;\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(input, ${JSON.stringify(value)});\n } else {\n input.value = ${JSON.stringify(value)};\n }\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.dispatchEvent(new Event('change', { bubbles: true }));\n return true;\n })()`;\n const filled = await this.evaluateInPage<boolean>(script);\n if (!filled) {\n throw new Error(`${this.backendName}: no input found for label \"${label}\"`);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Content extraction\n // ---------------------------------------------------------------------------\n\n async innerHTML(ref: ElementRef): Promise<string> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const result = (await this.cdp(\"DOM.getOuterHTML\", { backendNodeId })) as {\n outerHTML: string;\n };\n // Strip outer tag to get innerHTML\n const outer = result.outerHTML;\n const startTagEnd = outer.indexOf(\">\");\n const endTagStart = outer.lastIndexOf(\"<\");\n if (startTagEnd === -1 || endTagStart <= startTagEnd) {\n return outer;\n }\n return outer.slice(startTagEnd + 1, endTagStart);\n }\n\n async textContent(ref: ElementRef): Promise<string | null> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const resolveResult = (await this.cdp(\"DOM.resolveNode\", { backendNodeId })) as {\n object: { objectId: string };\n };\n const objectId = resolveResult.object.objectId;\n const result = (await this.cdp(\"Runtime.callFunctionOn\", {\n objectId,\n functionDeclaration: \"function() { return this.textContent; }\",\n returnByValue: true,\n })) as { result: { value: string | null } };\n return result.result.value;\n }\n\n async attribute(ref: ElementRef, name: string): Promise<string | null> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const resolveResult = (await this.cdp(\"DOM.resolveNode\", { backendNodeId })) as {\n object: { objectId: string };\n };\n const objectId = resolveResult.object.objectId;\n const result = (await this.cdp(\"Runtime.callFunctionOn\", {\n objectId,\n functionDeclaration: \"function(attrName) { return this.getAttribute(attrName); }\",\n arguments: [{ value: name }],\n returnByValue: true,\n })) as { result: { value: string | null } };\n return result.result.value;\n }\n\n // ---------------------------------------------------------------------------\n // CSS selectors\n // ---------------------------------------------------------------------------\n\n async querySelector(selector: string): Promise<ElementRef | null> {\n const rootNodeId = await this.getDocumentRootNodeId();\n const result = (await this.cdp(\"DOM.querySelector\", {\n nodeId: rootNodeId,\n selector,\n })) as { nodeId: number };\n\n if (!result.nodeId || result.nodeId === 0) return null;\n\n // Convert nodeId to backendNodeId\n const describeResult = (await this.cdp(\"DOM.describeNode\", { nodeId: result.nodeId })) as {\n node: { backendNodeId: number };\n };\n\n const ref = `e${++this._refCounter.count}`;\n this._refMap.set(ref, describeResult.node.backendNodeId);\n return ref;\n }\n\n async querySelectorAll(selector: string): Promise<readonly ElementRef[]> {\n const rootNodeId = await this.getDocumentRootNodeId();\n const result = (await this.cdp(\"DOM.querySelectorAll\", {\n nodeId: rootNodeId,\n selector,\n })) as { nodeIds: number[] };\n\n const nodeIds = result.nodeIds ?? [];\n const refs: ElementRef[] = [];\n\n for (const nodeId of nodeIds) {\n const describeResult = (await this.cdp(\"DOM.describeNode\", { nodeId })) as {\n node: { backendNodeId: number };\n };\n const ref = `e${++this._refCounter.count}`;\n this._refMap.set(ref, describeResult.node.backendNodeId);\n refs.push(ref);\n }\n\n return refs;\n }\n\n // ---------------------------------------------------------------------------\n // Input\n // ---------------------------------------------------------------------------\n\n async pressKey(key: string, _options: WaitOptions = {}): Promise<void> {\n // Map common key names to CDP key event fields\n const keyCode = KEY_CODE_MAP[key] ?? key;\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyDown\",\n key: keyCode,\n code: keyToCode(key),\n });\n await this.cdp(\"Input.dispatchKeyEvent\", {\n type: \"keyUp\",\n key: keyCode,\n code: keyToCode(key),\n });\n }\n\n async type(text: string, _options: WaitOptions = {}): Promise<void> {\n await this.cdp(\"Input.insertText\", { text });\n }\n\n async scroll(x: number, y: number, ref?: ElementRef): Promise<void> {\n if (ref) {\n // Scroll within element via JS\n const backendNodeId = this.resolveRefToNodeId(ref);\n const resolveResult = (await this.cdp(\"DOM.resolveNode\", { backendNodeId })) as {\n object: { objectId: string };\n };\n const objectId = resolveResult.object.objectId;\n await this.cdp(\"Runtime.callFunctionOn\", {\n objectId,\n functionDeclaration: `function(dx, dy) { this.scrollBy(dx, dy); }`,\n arguments: [{ value: x }, { value: y }],\n });\n } else {\n await this.cdp(\"Input.dispatchMouseEvent\", {\n type: \"mouseWheel\",\n x: 0,\n y: 0,\n deltaX: x,\n deltaY: y,\n });\n }\n }\n\n // ---------------------------------------------------------------------------\n // File operations\n // ---------------------------------------------------------------------------\n\n async uploadFile(ref: ElementRef, paths: string | readonly string[]): Promise<void> {\n const backendNodeId = this.resolveRefToNodeId(ref);\n const files = Array.isArray(paths) ? paths : [paths];\n\n await this.cdp(\"DOM.setFileInputFiles\", {\n backendNodeId,\n files,\n });\n }\n}\n",
69
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskEntitlements,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { getBrowserDeps } from \"../../../util/BrowserTaskDeps\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserSessionTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n backend: {\n type: \"string\",\n enum: [\"local\", \"cloud\", \"electron-native\"],\n title: \"Backend\",\n description: \"The browser backend to use\",\n },\n projectId: {\n type: \"string\",\n title: \"Project ID\",\n description: \"Project identifier for profile storage\",\n },\n profileName: {\n type: \"string\",\n title: \"Profile Name\",\n description: \"Named browser profile to use\",\n },\n headless: {\n type: \"boolean\",\n title: \"Headless\",\n description: \"Run the browser in headless mode\",\n default: true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSessionTaskConfig = TaskConfig & {\n backend?: \"local\" | \"cloud\" | \"electron-native\";\n projectId?: string;\n profileName?: string;\n headless?: boolean;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The unique identifier for the created browser session\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSessionTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserSessionTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserSessionTask extends Task<\n BrowserSessionTaskInput,\n BrowserSessionTaskOutput,\n BrowserSessionTaskConfig\n> {\n static override readonly type = \"BrowserSessionTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Session\";\n public static override description = \"Creates a new browser session and returns its session ID\";\n static override readonly cacheable = false;\n\n public static override hasDynamicEntitlements = true;\n\n public static override configSchema(): DataPortSchema {\n return browserSessionTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.BROWSER_CONTROL, reason: \"Creates and manages a browser session\" },\n ],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = BrowserSessionTask.entitlements();\n const backend = this.config.backend;\n if (backend === \"local\" || backend === \"electron-native\") {\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.BROWSER_CONTROL_LOCAL, reason: \"Launches a local browser process\" },\n ],\n });\n }\n if (backend === \"cloud\") {\n return mergeEntitlements(base, {\n entitlements: [\n {\n id: Entitlements.BROWSER_CONTROL_CLOUD,\n reason: \"Connects to a remote cloud browser service\",\n },\n ],\n });\n }\n // Backend not yet determined — require both to be safe\n return mergeEntitlements(\n base,\n mergeEntitlements(\n {\n entitlements: [\n { id: Entitlements.BROWSER_CONTROL_LOCAL, reason: \"Launches a local browser process\" },\n ],\n },\n {\n entitlements: [\n {\n id: Entitlements.BROWSER_CONTROL_CLOUD,\n reason: \"Connects to a remote cloud browser service\",\n },\n ],\n }\n )\n );\n }\n\n override async execute(\n _input: BrowserSessionTaskInput,\n executeContext: IExecuteContext\n ): Promise<BrowserSessionTaskOutput> {\n const deps = getBrowserDeps();\n\n const backend = this.config.backend ?? deps.defaultBackend;\n\n if (!deps.availableBackends.includes(backend)) {\n throw new Error(\n `BrowserSessionTask: backend \"${backend}\" is not available. Available backends: ${deps.availableBackends.join(\", \")}`\n );\n }\n\n const options = {\n backend,\n projectId: this.config.projectId,\n profileName: this.config.profileName,\n headless: this.config.headless ?? true,\n };\n\n const ctx = deps.createContext(options);\n await ctx.connect(options);\n\n const sessionId = BrowserSessionRegistry.register(ctx);\n\n executeContext.resourceScope?.register(`browser:${sessionId}`, async () => {\n await ctx.disconnect();\n BrowserSessionRegistry.unregister(sessionId);\n });\n\n return { sessionId };\n }\n}\n",
70
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createServiceToken, globalServiceRegistry } from \"@workglow/util\";\nimport type {\n BrowserBackendType,\n BrowserConnectOptions,\n IBrowserContext,\n} from \"../task/browser-control/IBrowserContext\";\n\nexport interface IBrowserProfileStorage {\n save(projectId: string, profileName: string, state: string): Promise<void>;\n load(projectId: string, profileName: string): Promise<string | null>;\n delete(projectId: string, profileName: string): Promise<void>;\n}\n\nexport interface BrowserTaskDeps {\n readonly createContext: (options: BrowserConnectOptions) => IBrowserContext;\n readonly availableBackends: readonly BrowserBackendType[];\n readonly defaultBackend: BrowserBackendType;\n readonly profileStorage: IBrowserProfileStorage;\n}\n\nexport const BROWSER_CONTROL_TASK_DEPS =\n createServiceToken<BrowserTaskDeps>(\"@workglow/tasks/browser\");\n\nexport function registerBrowserDeps(deps: BrowserTaskDeps): void {\n globalServiceRegistry.registerInstance(BROWSER_CONTROL_TASK_DEPS, deps);\n}\n\nexport function getBrowserDeps(): BrowserTaskDeps {\n if (!globalServiceRegistry.has(BROWSER_CONTROL_TASK_DEPS)) {\n throw new Error(\n \"Browser task dependencies not registered. Import @workglow/tasks from a platform entry (browser, node, or bun) before using browser tasks.\"\n );\n }\n return globalServiceRegistry.get(BROWSER_CONTROL_TASK_DEPS);\n}\n",
71
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The session ID of the browser session to close\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserCloseTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserCloseTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserCloseTask extends Task<\n BrowserCloseTaskInput,\n BrowserCloseTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserCloseTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Close\";\n public static override description = \"Disconnects and closes an existing browser session\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserCloseTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserCloseTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.disconnect();\n BrowserSessionRegistry.unregister(input.sessionId);\n return {};\n }\n}\n",
72
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Entitlements,\n IExecuteContext,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskEntitlements,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserNavigateTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n waitUntil: {\n type: \"string\",\n enum: [\"load\", \"domcontentloaded\", \"networkidle\"],\n title: \"Wait Until\",\n description: \"When to consider navigation complete\",\n default: \"load\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserNavigateTaskConfig = TaskConfig & {\n waitUntil?: \"load\" | \"domcontentloaded\" | \"networkidle\";\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n title: \"URL\",\n description: \"The URL to navigate to\",\n },\n },\n required: [\"sessionId\", \"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n title: {\n type: \"string\",\n title: \"Page Title\",\n description: \"The title of the navigated page\",\n },\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"The current URL after navigation\",\n },\n },\n required: [\"sessionId\", \"title\", \"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserNavigateTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserNavigateTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserNavigateTask extends Task<\n BrowserNavigateTaskInput,\n BrowserNavigateTaskOutput,\n BrowserNavigateTaskConfig\n> {\n static override readonly type = \"BrowserNavigateTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Navigate\";\n public static override description =\n \"Navigates the browser to a URL and returns the page title and URL\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserNavigateTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.BROWSER_CONTROL_NAVIGATE, reason: \"Navigates to a URL in the browser\" },\n ],\n };\n }\n\n override async execute(\n input: BrowserNavigateTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserNavigateTaskOutput> {\n const parsed = new URL(input.url, \"https://placeholder\");\n if (parsed.protocol === \"javascript:\") {\n throw new Error(\"BrowserNavigateTask: javascript: URLs are not allowed\");\n }\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const waitUntil = this.config.waitUntil ?? \"load\";\n await ctx.navigate(input.url, { waitUntil });\n const title = await ctx.title();\n const url = await ctx.currentUrl();\n return { sessionId: input.sessionId, title, url };\n }\n}\n",
73
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"The current URL after navigating back\",\n },\n },\n required: [\"sessionId\", \"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserBackTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserBackTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserBackTask extends Task<BrowserBackTaskInput, BrowserBackTaskOutput, TaskConfig> {\n static override readonly type = \"BrowserBackTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Back\";\n public static override description =\n \"Navigates back in the browser history and returns the current URL\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserBackTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserBackTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.goBack();\n const url = await ctx.currentUrl();\n return { sessionId: input.sessionId, url };\n }\n}\n",
74
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"The current URL after navigating forward\",\n },\n },\n required: [\"sessionId\", \"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserForwardTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserForwardTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserForwardTask extends Task<\n BrowserForwardTaskInput,\n BrowserForwardTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserForwardTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Forward\";\n public static override description =\n \"Navigates forward in the browser history and returns the current URL\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserForwardTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserForwardTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.goForward();\n const url = await ctx.currentUrl();\n return { sessionId: input.sessionId, url };\n }\n}\n",
75
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserReloadTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserReloadTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserReloadTask extends Task<\n BrowserReloadTaskInput,\n BrowserReloadTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserReloadTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Reload\";\n public static override description = \"Reloads the current page in the browser\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserReloadTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserReloadTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.reload();\n return { sessionId: input.sessionId };\n }\n}\n",
76
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport type { AccessibilityTree } from \"../IBrowserContext\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n tree: {\n type: \"object\",\n title: \"Accessibility Tree\",\n description: \"The accessibility tree of the current page\",\n additionalProperties: true,\n },\n },\n required: [\"sessionId\", \"tree\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSnapshotTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserSnapshotTaskOutput = { sessionId: string; tree: AccessibilityTree };\n\nexport class BrowserSnapshotTask extends Task<\n BrowserSnapshotTaskInput,\n BrowserSnapshotTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserSnapshotTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Snapshot\";\n public static override description = \"Returns the accessibility tree of the current browser page\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserSnapshotTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserSnapshotTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const tree = await ctx.snapshot();\n return { sessionId: input.sessionId, tree };\n }\n}\n",
77
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserScreenshotTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n format: {\n type: \"string\",\n enum: [\"png\", \"jpeg\"],\n title: \"Format\",\n description: \"The image format for the screenshot\",\n default: \"png\",\n },\n fullPage: {\n type: \"boolean\",\n title: \"Full Page\",\n description: \"Whether to capture the full scrollable page\",\n default: false,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserScreenshotTaskConfig = TaskConfig & {\n format?: \"png\" | \"jpeg\";\n fullPage?: boolean;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n image: {\n type: \"string\",\n format: \"binary\",\n title: \"Image\",\n description: \"The screenshot image data\",\n },\n },\n required: [\"sessionId\", \"image\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserScreenshotTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserScreenshotTaskOutput = { sessionId: string; image: Uint8Array };\n\nexport class BrowserScreenshotTask extends Task<\n BrowserScreenshotTaskInput,\n BrowserScreenshotTaskOutput,\n BrowserScreenshotTaskConfig\n> {\n static override readonly type = \"BrowserScreenshotTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Screenshot\";\n public static override description = \"Takes a screenshot of the current browser page\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserScreenshotTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserScreenshotTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserScreenshotTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const format = this.config.format ?? \"png\";\n const fullPage = this.config.fullPage ?? false;\n const image = await ctx.screenshot({ format, fullPage });\n return { sessionId: input.sessionId, image };\n }\n}\n",
78
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserClickTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n modifiers: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"Alt\", \"Control\", \"Meta\", \"Shift\"],\n },\n title: \"Modifiers\",\n description: \"Keyboard modifiers to hold during the click\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserClickTaskConfig = TaskConfig & {\n modifiers?: Array<\"Alt\" | \"Control\" | \"Meta\" | \"Shift\">;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to click\",\n },\n role: {\n type: \"string\",\n title: \"ARIA Role\",\n description: \"The ARIA role of the element to click\",\n },\n name: {\n type: \"string\",\n title: \"Accessible Name\",\n description: \"The accessible name of the element to click\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserClickTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserClickTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserClickTask extends Task<\n BrowserClickTaskInput,\n BrowserClickTaskOutput,\n BrowserClickTaskConfig\n> {\n static override readonly type = \"BrowserClickTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Click\";\n public static override description =\n \"Clicks an element in the browser by ref or by ARIA role and name\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserClickTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserClickTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserClickTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const opts = this.config.modifiers ? { modifiers: this.config.modifiers } : undefined;\n if (input.ref) {\n await ctx.click(input.ref, opts);\n } else if (input.role && input.name) {\n await ctx.clickByRole(input.role, input.name, opts);\n } else {\n throw new Error(\"BrowserClickTask: either ref or role+name must be provided\");\n }\n return { sessionId: input.sessionId };\n }\n}\n",
79
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserFillTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n clearFirst: {\n type: \"boolean\",\n title: \"Clear First\",\n description: \"Whether to clear the field before filling\",\n default: true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserFillTaskConfig = TaskConfig & {\n clearFirst?: boolean;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to fill\",\n },\n label: {\n type: \"string\",\n title: \"Label\",\n description: \"The label text of the input to fill\",\n },\n value: {\n type: \"string\",\n title: \"Value\",\n description: \"The value to fill into the input\",\n },\n },\n required: [\"sessionId\", \"value\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserFillTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserFillTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserFillTask extends Task<\n BrowserFillTaskInput,\n BrowserFillTaskOutput,\n BrowserFillTaskConfig\n> {\n static override readonly type = \"BrowserFillTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Fill\";\n public static override description = \"Fills a text input in the browser by ref or by label\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserFillTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserFillTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserFillTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n if (input.ref) {\n await ctx.fill(input.ref, input.value);\n } else if (input.label) {\n await ctx.fillByLabel(input.label, input.value);\n } else {\n throw new Error(\"BrowserFillTask: either ref or label must be provided\");\n }\n return { sessionId: input.sessionId };\n }\n}\n",
80
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference of the select element\",\n },\n label: {\n type: \"string\",\n title: \"Label\",\n description: \"The label text of the select element (not yet supported, use ref)\",\n },\n value: {\n type: \"string\",\n title: \"Value\",\n description: \"The option value to select\",\n },\n },\n required: [\"sessionId\", \"value\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSelectTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserSelectTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserSelectTask extends Task<\n BrowserSelectTaskInput,\n BrowserSelectTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserSelectTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Select\";\n public static override description = \"Selects an option in a select element identified by ref\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserSelectTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserSelectTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n if (input.ref) {\n await ctx.selectOption(input.ref, input.value);\n } else {\n throw new Error(\"BrowserSelectTask: ref must be provided\");\n }\n return { sessionId: input.sessionId };\n }\n}\n",
81
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to hover over\",\n },\n role: {\n type: \"string\",\n title: \"ARIA Role\",\n description: \"The ARIA role of the element to hover (not yet supported, use ref)\",\n },\n name: {\n type: \"string\",\n title: \"Accessible Name\",\n description: \"The accessible name of the element to hover (not yet supported, use ref)\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserHoverTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserHoverTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserHoverTask extends Task<\n BrowserHoverTaskInput,\n BrowserHoverTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserHoverTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Hover\";\n public static override description = \"Hovers over an element in the browser identified by ref\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserHoverTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserHoverTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n if (input.ref) {\n await ctx.hover(input.ref);\n } else {\n throw new Error(\"BrowserHoverTask: ref must be provided\");\n }\n return { sessionId: input.sessionId };\n }\n}\n",
82
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserExtractTextTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description:\n \"The element reference to extract text from (extracts from full page if not provided)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserExtractTextTaskConfig = TaskConfig & {\n ref?: string;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The extracted text content\",\n },\n },\n required: [\"sessionId\", \"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserExtractTextTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserExtractTextTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserExtractTextTask extends Task<\n BrowserExtractTextTaskInput,\n BrowserExtractTextTaskOutput,\n BrowserExtractTextTaskConfig\n> {\n static override readonly type = \"BrowserExtractTextTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Extract Text\";\n public static override description =\n \"Extracts text content from a specific element or the full page\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserExtractTextTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserExtractTextTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserExtractTextTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n let ref = this.config.ref;\n if (!ref) {\n const bodyRef = await ctx.querySelector(\"body\");\n if (!bodyRef) {\n throw new Error(\"BrowserExtractTextTask: could not find body element\");\n }\n ref = bodyRef;\n }\n const text = await ctx.textContent(ref);\n return { sessionId: input.sessionId, text: text ?? \"\" };\n }\n}\n",
83
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserExtractHtmlTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to extract HTML from\",\n },\n selector: {\n type: \"string\",\n title: \"CSS Selector\",\n description: \"CSS selector to find element when no ref is provided\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserExtractHtmlTaskConfig = TaskConfig & {\n ref?: string;\n selector?: string;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n html: {\n type: \"string\",\n title: \"HTML\",\n description: \"The extracted HTML content\",\n },\n },\n required: [\"sessionId\", \"html\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserExtractHtmlTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserExtractHtmlTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserExtractHtmlTask extends Task<\n BrowserExtractHtmlTaskInput,\n BrowserExtractHtmlTaskOutput,\n BrowserExtractHtmlTaskConfig\n> {\n static override readonly type = \"BrowserExtractHtmlTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Extract HTML\";\n public static override description =\n \"Extracts HTML content from a specific element by ref or CSS selector\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserExtractHtmlTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserExtractHtmlTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserExtractHtmlTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n let ref = this.config.ref;\n if (!ref) {\n if (!this.config.selector) {\n throw new Error(\"BrowserExtractHtmlTask requires either config.ref or config.selector\");\n }\n const found = await ctx.querySelector(this.config.selector);\n if (!found) {\n throw new Error(\n `BrowserExtractHtmlTask could not find an element matching selector: ${this.config.selector}`\n );\n }\n ref = found;\n }\n const html = await ctx.innerHTML(ref);\n return { sessionId: input.sessionId, html };\n }\n}\n",
84
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to get the attribute from\",\n },\n attribute: {\n type: \"string\",\n title: \"Attribute Name\",\n description: \"The name of the attribute to retrieve\",\n },\n },\n required: [\"sessionId\", \"ref\", \"attribute\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n value: {\n type: [\"string\", \"null\"],\n title: \"Value\",\n description: \"The attribute value, or null if not present\",\n },\n },\n required: [\"sessionId\", \"value\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserAttributeTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserAttributeTaskOutput = { sessionId: string; value: string | null };\n\nexport class BrowserAttributeTask extends Task<\n BrowserAttributeTaskInput,\n BrowserAttributeTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserAttributeTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Attribute\";\n public static override description = \"Retrieves the value of an attribute from a browser element\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserAttributeTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserAttributeTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const value = await ctx.attribute(input.ref, input.attribute);\n return { sessionId: input.sessionId, value };\n }\n}\n",
85
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n selector: {\n type: \"string\",\n title: \"CSS Selector\",\n description: \"The CSS selector to query for\",\n },\n },\n required: [\"sessionId\", \"selector\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n refs: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Element Refs\",\n description: \"The element references matching the selector\",\n },\n },\n required: [\"sessionId\", \"refs\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserQuerySelectorTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserQuerySelectorTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserQuerySelectorTask extends Task<\n BrowserQuerySelectorTaskInput,\n BrowserQuerySelectorTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserQuerySelectorTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Query Selector\";\n public static override description =\n \"Queries all elements matching a CSS selector and returns their refs\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserQuerySelectorTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserQuerySelectorTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const refs = await ctx.querySelectorAll(input.selector);\n return { sessionId: input.sessionId, refs: refs as string[] };\n }\n}\n",
86
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Entitlements,\n IExecuteContext,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskEntitlements,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n expression: {\n type: \"string\",\n title: \"Expression\",\n description: \"The JavaScript expression to evaluate in the page context\",\n },\n },\n required: [\"sessionId\", \"expression\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n result: {\n title: \"Result\",\n description: \"The result of the evaluated expression\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserEvaluateTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserEvaluateTaskOutput = { sessionId: string; result: unknown };\n\nexport class BrowserEvaluateTask extends Task<\n BrowserEvaluateTaskInput,\n BrowserEvaluateTaskOutput,\n TaskConfig\n> {\n static override readonly type = \"BrowserEvaluateTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Evaluate\";\n public static override description =\n \"Evaluates a JavaScript expression in the browser page context\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return TaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n {\n id: Entitlements.BROWSER_CONTROL_EVALUATE,\n reason: \"Evaluates arbitrary JavaScript in the browser context\",\n },\n ],\n };\n }\n\n override async execute(\n input: BrowserEvaluateTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserEvaluateTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const result = await ctx.evaluate(input.expression);\n return { sessionId: input.sessionId, result };\n }\n}\n",
87
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserPressKeyTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n modifiers: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"Alt\", \"Control\", \"Meta\", \"Shift\"],\n },\n title: \"Modifiers\",\n description: \"Keyboard modifiers to hold during the key press\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserPressKeyTaskConfig = TaskConfig & {\n modifiers?: Array<\"Alt\" | \"Control\" | \"Meta\" | \"Shift\">;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n key: {\n type: \"string\",\n title: \"Key\",\n description: \"The key to press (e.g. Enter, Tab, ArrowDown)\",\n },\n },\n required: [\"sessionId\", \"key\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserPressKeyTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserPressKeyTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserPressKeyTask extends Task<\n BrowserPressKeyTaskInput,\n BrowserPressKeyTaskOutput,\n BrowserPressKeyTaskConfig\n> {\n static override readonly type = \"BrowserPressKeyTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Press Key\";\n public static override description =\n \"Presses a keyboard key in the browser, optionally with modifiers\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserPressKeyTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n private buildKeyChord(key: string): string {\n const modifiers = this.config.modifiers?.filter(Boolean) ?? [];\n return modifiers.length > 0 ? `${modifiers.join(\"+\")}+${key}` : key;\n }\n\n override async execute(\n input: BrowserPressKeyTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserPressKeyTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.pressKey(this.buildKeyChord(input.key));\n return { sessionId: input.sessionId };\n }\n}\n",
88
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserTypeTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserTypeTaskConfig = TaskConfig;\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The text to type into the currently focused element\",\n },\n },\n required: [\"sessionId\", \"text\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserTypeTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserTypeTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserTypeTask extends Task<\n BrowserTypeTaskInput,\n BrowserTypeTaskOutput,\n BrowserTypeTaskConfig\n> {\n static override readonly type = \"BrowserTypeTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Type\";\n public static override description =\n \"Types text into the currently focused element in the browser\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserTypeTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserTypeTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserTypeTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.type(input.text);\n return { sessionId: input.sessionId };\n }\n}\n",
89
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserScrollTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n x: {\n type: \"number\",\n title: \"X\",\n description: \"Horizontal scroll amount in pixels\",\n default: 0,\n },\n y: {\n type: \"number\",\n title: \"Y\",\n description: \"Vertical scroll amount in pixels\",\n default: 0,\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The element reference to scroll within (scrolls page if not provided)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserScrollTaskConfig = TaskConfig & {\n x?: number;\n y?: number;\n ref?: string;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserScrollTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserScrollTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserScrollTask extends Task<\n BrowserScrollTaskInput,\n BrowserScrollTaskOutput,\n BrowserScrollTaskConfig\n> {\n static override readonly type = \"BrowserScrollTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Scroll\";\n public static override description =\n \"Scrolls the page or a specific element by the given pixel deltas\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserScrollTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserScrollTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserScrollTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.scroll(this.config.x ?? 0, this.config.y ?? 0, this.config.ref);\n return { sessionId: input.sessionId };\n }\n}\n",
90
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Entitlements,\n IExecuteContext,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskEntitlements,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserUploadTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserUploadTaskConfig = TaskConfig;\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n ref: {\n type: \"string\",\n title: \"Element Ref\",\n description: \"The file input element reference to upload to\",\n },\n filePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n title: \"File Paths\",\n description: \"The local file paths to upload\",\n },\n },\n required: [\"sessionId\", \"ref\", \"filePaths\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserUploadTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserUploadTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserUploadTask extends Task<\n BrowserUploadTaskInput,\n BrowserUploadTaskOutput,\n BrowserUploadTaskConfig\n> {\n static override readonly type = \"BrowserUploadTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Upload\";\n public static override description =\n \"Uploads one or more files to a file input element in the browser\";\n static override readonly cacheable = false;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.FILESYSTEM_READ, reason: \"Reads local files for upload to browser\" },\n ],\n };\n }\n\n public static override configSchema(): DataPortSchema {\n return browserUploadTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserUploadTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserUploadTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.uploadFile(input.ref, input.filePaths);\n return { sessionId: input.sessionId };\n }\n}\n",
91
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserWaitTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n waitFor: {\n type: \"string\",\n enum: [\"navigation\", \"selector\", \"idle\"],\n title: \"Wait For\",\n description: \"The condition to wait for\",\n default: \"idle\",\n },\n selector: {\n type: \"string\",\n title: \"Selector\",\n description: \"CSS selector to wait for (required when waitFor is 'selector')\",\n },\n timeout: {\n type: \"number\",\n title: \"Timeout\",\n description: \"Maximum time to wait in milliseconds\",\n default: 30000,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserWaitTaskConfig = TaskConfig & {\n waitFor?: \"navigation\" | \"selector\" | \"idle\";\n selector?: string;\n timeout?: number;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserWaitTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserWaitTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserWaitTask extends Task<\n BrowserWaitTaskInput,\n BrowserWaitTaskOutput,\n BrowserWaitTaskConfig\n> {\n static override readonly type = \"BrowserWaitTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Wait\";\n public static override description =\n \"Waits for a navigation, selector, or network idle state in the browser\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserWaitTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserWaitTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserWaitTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const waitFor = this.config.waitFor ?? \"idle\";\n const timeout = this.config.timeout ?? 30000;\n\n switch (waitFor) {\n case \"navigation\":\n await ctx.waitForNavigation({ timeout });\n break;\n case \"selector\": {\n const selector = this.config.selector;\n if (!selector) {\n throw new Error(\"BrowserWaitTask: selector is required when waitFor is 'selector'\");\n }\n await ctx.waitForSelector(selector, { timeout });\n break;\n }\n case \"idle\":\n await ctx.waitForIdle({ timeout });\n break;\n }\n\n return { sessionId: input.sessionId };\n }\n}\n",
92
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserNewTabTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserNewTabTaskConfig = TaskConfig;\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"Optional URL to open in the new tab\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n tabId: {\n type: \"string\",\n title: \"Tab ID\",\n description: \"The unique identifier for the new tab\",\n },\n },\n required: [\"sessionId\", \"tabId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserNewTabTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserNewTabTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserNewTabTask extends Task<\n BrowserNewTabTaskInput,\n BrowserNewTabTaskOutput,\n BrowserNewTabTaskConfig\n> {\n static override readonly type = \"BrowserNewTabTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser New Tab\";\n public static override description = \"Opens a new browser tab and returns its tab ID\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserNewTabTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserNewTabTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserNewTabTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const tabInfo = await ctx.newTab(input.url);\n return { sessionId: input.sessionId, tabId: tabInfo.tabId };\n }\n}\n",
93
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserSwitchTabTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSwitchTabTaskConfig = TaskConfig;\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n tabId: {\n type: \"string\",\n title: \"Tab ID\",\n description: \"The tab ID to switch to\",\n },\n },\n required: [\"sessionId\", \"tabId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserSwitchTabTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserSwitchTabTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserSwitchTabTask extends Task<\n BrowserSwitchTabTaskInput,\n BrowserSwitchTabTaskOutput,\n BrowserSwitchTabTaskConfig\n> {\n static override readonly type = \"BrowserSwitchTabTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Switch Tab\";\n public static override description = \"Switches the active browser tab to the specified tab ID\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserSwitchTabTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserSwitchTabTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserSwitchTabTaskOutput> {\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.switchTab(input.tabId);\n return { sessionId: input.sessionId };\n }\n}\n",
94
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IExecuteContext, Task, TaskConfig, TaskConfigSchema } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserCloseTabTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n tabId: {\n type: \"string\",\n title: \"Tab ID\",\n description: \"The tab ID to close (closes current tab if not provided)\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserCloseTabTaskConfig = TaskConfig & {\n tabId?: string;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserCloseTabTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserCloseTabTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserCloseTabTask extends Task<\n BrowserCloseTabTaskInput,\n BrowserCloseTabTaskOutput,\n BrowserCloseTabTaskConfig\n> {\n static override readonly type = \"BrowserCloseTabTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Close Tab\";\n public static override description = \"Closes a browser tab by tab ID\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return browserCloseTabTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(\n input: BrowserCloseTabTaskInput,\n _executeContext: IExecuteContext\n ): Promise<BrowserCloseTabTaskOutput> {\n if (!this.config.tabId) {\n throw new Error(\"BrowserCloseTabTask requires config.tabId\");\n }\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n await ctx.closeTab(this.config.tabId);\n return { sessionId: input.sessionId };\n }\n}\n",
95
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskEntitlements,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { BrowserSessionRegistry } from \"../BrowserSessionRegistry\";\n\nconst browserLoginTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n mode: {\n type: \"string\",\n enum: [\"manual\", \"credential\", \"ai\"],\n title: \"Login Mode\",\n description: \"The login strategy to use\",\n default: \"manual\",\n },\n credentialName: {\n type: \"string\",\n title: \"Credential Name\",\n description: \"Name of the stored credential to use (required when mode is 'credential')\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserLoginTaskConfig = TaskConfig & {\n mode?: \"manual\" | \"credential\" | \"ai\";\n credentialName?: string;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session to use\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n title: \"URL\",\n description: \"The login page URL to navigate to\",\n },\n },\n required: [\"sessionId\", \"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n title: \"Session ID\",\n description: \"The browser session ID\",\n },\n },\n required: [\"sessionId\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type BrowserLoginTaskInput = FromSchema<typeof inputSchema>;\nexport type BrowserLoginTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class BrowserLoginTask extends Task<\n BrowserLoginTaskInput,\n BrowserLoginTaskOutput,\n BrowserLoginTaskConfig\n> {\n static override readonly type = \"BrowserLoginTask\";\n static override readonly category = \"Browser\";\n public static override title = \"Browser Login\";\n public static override description =\n \"Logs into a website using manual, credential, or AI-driven login strategies\";\n static override readonly cacheable = false;\n\n public static override hasDynamicEntitlements = true;\n\n public static override configSchema(): DataPortSchema {\n return browserLoginTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.BROWSER_CONTROL_NAVIGATE, reason: \"Navigates to the login page URL\" },\n ],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = BrowserLoginTask.entitlements();\n if (this.config.mode === \"credential\") {\n return mergeEntitlements(base, {\n entitlements: [\n {\n id: Entitlements.BROWSER_CONTROL_CREDENTIAL,\n reason: \"Accesses stored credentials for login\",\n },\n ],\n });\n }\n return base;\n }\n\n override async execute(\n input: BrowserLoginTaskInput,\n executeContext: IExecuteContext\n ): Promise<BrowserLoginTaskOutput> {\n const parsed = new URL(input.url, \"https://placeholder\");\n if (parsed.protocol === \"javascript:\") {\n throw new Error(\"BrowserLoginTask: javascript: URLs are not allowed\");\n }\n const ctx = BrowserSessionRegistry.get(input.sessionId);\n const mode = this.config.mode ?? \"manual\";\n\n await ctx.navigate(input.url);\n await executeContext.updateProgress(20, \"Navigated to login page\");\n\n switch (mode) {\n case \"manual\":\n await executeContext.updateProgress(50, \"Waiting for manual login...\");\n // Placeholder for future HumanInputTask integration\n break;\n case \"credential\":\n throw new Error(\"Credential-based login mode is not yet implemented\");\n case \"ai\":\n throw new Error(\"AI-driven login mode is not yet implemented\");\n }\n\n return { sessionId: input.sessionId };\n }\n}\n",
96
56
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n IExecutePreviewContext,\n Task,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nfunction formatDate(input: {\n value: string;\n format?: string;\n locale?: string;\n timeZone?: string;\n}): string {\n const dateInput = /^\\d+$/.test(input.value) ? Number(input.value) : input.value;\n const date = new Date(dateInput);\n\n if (isNaN(date.getTime())) {\n throw new Error(`Invalid date: ${input.value}`);\n }\n\n const format = input.format ?? \"iso\";\n const locale = input.locale;\n const timeZone = input.timeZone;\n\n switch (format) {\n case \"iso\":\n return date.toISOString();\n case \"date\":\n return date.toLocaleDateString(locale, timeZone ? { timeZone } : undefined);\n case \"time\":\n return date.toLocaleTimeString(locale, timeZone ? { timeZone } : undefined);\n case \"unix\":\n return String(date.getTime());\n case \"datetime\":\n default:\n return date.toLocaleString(locale, timeZone ? { timeZone } : undefined);\n }\n}\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n value: {\n type: \"string\",\n title: \"Value\",\n description: \"Date string, ISO 8601 timestamp, or Unix timestamp in milliseconds\",\n },\n format: {\n type: \"string\",\n title: \"Format\",\n enum: [\"iso\", \"date\", \"time\", \"datetime\", \"unix\"],\n description: \"Output format: 'iso', 'date', 'time', 'datetime', 'unix'\",\n default: \"iso\",\n },\n locale: {\n type: \"string\",\n title: \"Locale\",\n description: \"Locale string (e.g. 'en-US')\",\n default: \"en-US\",\n },\n timeZone: {\n type: \"string\",\n title: \"Time Zone\",\n description: \"IANA time zone (e.g. 'America/New_York', 'UTC')\",\n },\n },\n required: [\"value\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: {\n type: \"string\",\n title: \"Result\",\n description: \"Formatted date string\",\n },\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DateFormatTaskInput = FromSchema<typeof inputSchema>;\nexport type DateFormatTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class DateFormatTask<\n Input extends DateFormatTaskInput = DateFormatTaskInput,\n Output extends DateFormatTaskOutput = DateFormatTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"DateFormatTask\";\n static override readonly category = \"Utility\";\n public static override title = \"Date Format\";\n public static override description = \"Parses and formats a date string\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output | undefined> {\n return { result: formatDate(input) } as Output;\n }\n\n override async executePreview(\n input: Input,\n _context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return { result: formatDate(input) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n dateFormat: CreateWorkflow<DateFormatTaskInput, DateFormatTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.dateFormat = CreateWorkflow(DateFormatTask);\n",
97
57
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, Task, TaskConfig, TaskConfigSchema, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst log_levels = [\"dir\", \"log\", \"debug\", \"info\", \"warn\", \"error\"] as const;\ntype LogLevel = (typeof log_levels)[number];\nconst DEFAULT_LOG_LEVEL: LogLevel = \"log\";\n\nconst debugLogTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n log_level: {\n type: \"string\",\n enum: log_levels,\n title: \"Log Level\",\n description: \"The log level to use\",\n default: DEFAULT_LOG_LEVEL,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DebugLogTaskConfig = TaskConfig & {\n /** Log level to use for output */\n log_level?: LogLevel;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type DebugLogTaskInput = FromSchema<typeof inputSchema>;\nexport type DebugLogTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Logs the input at the configured level and returns a fresh output object\n * containing the same key/value pairs (passthrough). Pure helper so both\n * execute() and executePreview() can share behavior.\n */\nfunction logAndPassthrough<Output extends DebugLogTaskOutput>(\n input: DebugLogTaskInput,\n log_level: LogLevel\n): Output {\n const inputRecord = input as Record<string, unknown>;\n if (log_level === \"dir\") {\n console.dir(inputRecord, { depth: null });\n } else {\n console[log_level](inputRecord);\n }\n const output = {} as Output;\n Object.assign(output, inputRecord);\n return output;\n}\n\n/**\n * DebugLogTask provides console logging functionality as a task within the system.\n *\n * Features:\n * - Supports multiple log levels (info, warn, error, dir) via config\n * - Passes through all inputs as outputs unchanged\n * - Configurable logging format and depth\n *\n * This task is particularly useful for debugging task graphs and monitoring\n * data flow between tasks during development and testing.\n */\nexport class DebugLogTask<\n Input extends DebugLogTaskInput = DebugLogTaskInput,\n Output extends DebugLogTaskOutput = DebugLogTaskOutput,\n> extends Task<Input, Output, DebugLogTaskConfig> {\n public static override type = \"DebugLogTask\";\n public static override category = \"Utility\";\n public static override title = \"Debug Log\";\n public static override description =\n \"Logs messages to the console with configurable log levels for debugging task graphs\";\n static override readonly cacheable = false;\n public static override passthroughInputsToOutputs = true;\n public static override customizable = true;\n public static override isPassthrough = true;\n\n public static override configSchema(): DataPortSchema {\n return debugLogTaskConfigSchema;\n }\n\n public static override inputSchema() {\n return inputSchema;\n }\n\n public static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input) {\n return logAndPassthrough<Output>(input, this.config.log_level ?? DEFAULT_LOG_LEVEL);\n }\n\n override async executePreview(input: Input) {\n return logAndPassthrough<Output>(input, this.config.log_level ?? DEFAULT_LOG_LEVEL);\n }\n}\n\nexport const debugLog = (input: DebugLogTaskInput, config: DebugLogTaskConfig = {}) => {\n const task = new DebugLogTask(config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n debugLog: CreateWorkflow<DebugLogTaskInput, DebugLogTaskOutput, DebugLogTaskConfig>;\n }\n}\n\nWorkflow.prototype.debugLog = CreateWorkflow(DebugLogTask);\n",
98
58
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n Task,\n TaskAbortedError,\n TaskConfig,\n TaskConfigSchema,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { sleep } from \"@workglow/util\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst delayTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n delay: {\n type: \"number\",\n title: \"Delay (ms)\",\n default: 1,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DelayTaskConfig = TaskConfig & {\n /** Delay duration in milliseconds */\n delay?: number;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type DelayTaskInput = FromSchema<typeof inputSchema>;\nexport type DelayTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class DelayTask<\n Input extends DelayTaskInput = DelayTaskInput,\n Output extends DelayTaskOutput = DelayTaskOutput,\n> extends Task<Input, Output, DelayTaskConfig> {\n static override readonly type = \"DelayTask\";\n static override readonly category = \"Utility\";\n public static override title = \"Delay\";\n public static override description =\n \"Delays execution for a specified duration with progress tracking\";\n static override readonly cacheable = false;\n public static override passthroughInputsToOutputs = true;\n public static override customizable = true;\n\n public static override configSchema(): DataPortSchema {\n return delayTaskConfigSchema;\n }\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, executeContext: IExecuteContext): Promise<Output> {\n const delay = this.config.delay ?? 1;\n if (delay > 100) {\n const iterations = Math.min(100, Math.floor(delay / 16)); // 1/60fps is about 16ms\n const chunkSize = delay / iterations;\n for (let i = 0; i < iterations; i++) {\n if (executeContext.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await sleep(chunkSize);\n await executeContext.updateProgress((100 * i) / iterations, `Delaying for ${delay}ms`);\n }\n } else {\n await sleep(delay);\n }\n return input as unknown as Output;\n }\n}\n\n/**\n * DelayTask\n *\n * Delays the execution of a task for a specified amount of time\n *\n * @param config - Task configuration; use `config.delay` for the delay in milliseconds\n */\nexport const delay = (input: DelayTaskInput, config: DelayTaskConfig = { delay: 1 }) => {\n const task = new DelayTask(config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n delay: CreateWorkflow<DelayTaskInput, DelayTaskOutput, DelayTaskConfig>;\n }\n}\n\nWorkflow.prototype.delay = CreateWorkflow(DelayTask);\n",
@@ -101,7 +61,7 @@
101
61
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n *\n * URL classifier used by {@link safeFetch} and {@link FetchUrlTask} to decide\n * whether a URL targets a private/internal network host.\n *\n * The classifier is browser-safe (no Node built-ins) and performs only static\n * analysis of the URL string — it does NOT perform DNS resolution. DNS-aware\n * checking + connection pinning happens in `SafeFetch.server.ts` on Node/Bun.\n */\n\nimport { resourcePatternMatches } from \"@workglow/task-graph\";\nimport ipaddr from \"ipaddr.js\";\n\n// ========================================================================\n// Types\n// ========================================================================\n\nexport type UrlClassificationKind = \"public\" | \"private\" | \"invalid\";\n\nexport interface UrlClassification {\n readonly kind: UrlClassificationKind;\n /** Human-readable reason, present when kind is \"private\" or \"invalid\". */\n readonly reason?: string;\n /** Normalized hostname (lowercase, trailing dots stripped, IPv6 brackets stripped). */\n readonly host?: string;\n /** Canonical dotted-quad IPv4 / RFC5952 IPv6 if the host is a literal IP. */\n readonly literalIp?: string;\n}\n\n// ========================================================================\n// Private hostname patterns\n// ========================================================================\n\n/** Hostnames that are always considered private regardless of DNS. */\nconst PRIVATE_EXACT_HOSTS: ReadonlySet<string> = new Set([\n \"localhost\",\n \"localhost.localdomain\",\n \"ip6-localhost\",\n \"ip6-loopback\",\n \"metadata.google.internal\",\n \"metadata.internal\",\n \"metadata.azure.com\",\n \"instance-data\",\n]);\n\n/**\n * Domain suffixes that are always considered private. Matched against the\n * normalized host with a leading dot, i.e. host === suffix OR host.endsWith(\".\" + suffix).\n */\nconst PRIVATE_DOMAIN_SUFFIXES: readonly string[] = [\n \"local\", // mDNS / Bonjour\n \"localhost\", // app.localhost\n \"internal\", // generic internal / cloud\n \"lan\", // LAN\n \"home.arpa\", // RFC 8375\n \"corp\", // corporate intranet\n \"intranet\", // generic intranet\n \"private\", // generic\n \"localdomain\", // traditional\n];\n\n/** IP range names (from ipaddr.js) that are considered private/unsafe. */\nconst PRIVATE_IPV4_RANGES: ReadonlySet<string> = new Set([\n \"unspecified\", // 0.0.0.0/8\n \"broadcast\", // 255.255.255.255\n \"multicast\", // 224.0.0.0/4\n \"linkLocal\", // 169.254.0.0/16 (includes cloud metadata)\n \"loopback\", // 127.0.0.0/8\n \"carrierGradeNat\", // 100.64.0.0/10\n \"private\", // RFC1918 (10/8, 172.16/12, 192.168/16)\n \"reserved\", // 240.0.0.0/4 etc.\n \"benchmarking\", // 198.18.0.0/15\n]);\n\nconst PRIVATE_IPV6_RANGES: ReadonlySet<string> = new Set([\n \"unspecified\", // ::\n \"linkLocal\", // fe80::/10\n \"multicast\", // ff00::/8\n \"loopback\", // ::1\n \"uniqueLocal\", // fc00::/7\n \"ipv4Mapped\", // ::ffff:0:0/96 — classified recursively below\n \"ipv4Compat\", // ::0:0/96\n \"rfc6145\", // ::ffff:0:0:0/96\n \"rfc6052\", // 64:ff9b::/96\n \"6to4\", // 2002::/16\n \"teredo\", // 2001::/32\n \"reserved\", // 2001:db8::/32 etc.\n \"benchmarking\", // 2001:2::/48\n \"amt\", // 2001:3::/32\n \"as112v6\", // 2001:4:112::/48\n \"deprecated\", // fec0::/10\n \"orchid2\", // 2001:20::/28\n \"droneRemoteIdProtocolEntityTags\", // 2001:30::/28\n]);\n\n// ========================================================================\n// IPv4 multi-format parser\n// ========================================================================\n\n/**\n * Accepts an IPv4 literal in any of the legacy forms accepted by inet_aton\n * (decimal, hex `0x..`, octal `0..`, and 1/2/3/4-part notation) and returns\n * its canonical dotted-quad form. Returns undefined if the host is not a\n * valid IPv4 literal in any supported form.\n *\n * Examples:\n * \"127.0.0.1\" → \"127.0.0.1\"\n * \"2130706433\" → \"127.0.0.1\"\n * \"0x7f000001\" → \"127.0.0.1\"\n * \"0177.0.0.1\" → \"127.0.0.1\"\n * \"0x7f.1\" → \"127.0.0.1\"\n */\nexport function tryNormalizeIPv4(host: string): string | undefined {\n if (host.length === 0) return undefined;\n\n // Fast path: already canonical dotted-quad\n if (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(host)) {\n const octets = host.split(\".\").map((s) => parseInt(s, 10));\n if (octets.every((n) => n >= 0 && n <= 255)) {\n return octets.join(\".\");\n }\n return undefined;\n }\n\n const parts = host.split(\".\");\n if (parts.length < 1 || parts.length > 4) return undefined;\n\n const nums: number[] = [];\n for (const p of parts) {\n if (p.length === 0) return undefined;\n let n: number;\n if (/^0[xX][0-9a-fA-F]+$/.test(p)) {\n n = parseInt(p.slice(2), 16);\n } else if (/^0[0-7]+$/.test(p)) {\n n = parseInt(p, 8);\n } else if (/^\\d+$/.test(p)) {\n n = parseInt(p, 10);\n } else {\n return undefined;\n }\n if (!Number.isFinite(n) || n < 0) return undefined;\n nums.push(n);\n }\n\n // Per inet_aton(3): a 1/2/3-part address packs the tail into the low bits.\n let addr: number;\n if (nums.length === 1) {\n if (nums[0] > 0xffffffff) return undefined;\n addr = nums[0];\n } else if (nums.length === 2) {\n if (nums[0] > 0xff || nums[1] > 0xffffff) return undefined;\n addr = nums[0] * 0x1000000 + nums[1];\n } else if (nums.length === 3) {\n if (nums[0] > 0xff || nums[1] > 0xff || nums[2] > 0xffff) return undefined;\n addr = nums[0] * 0x1000000 + nums[1] * 0x10000 + nums[2];\n } else {\n if (nums.some((n) => n > 0xff)) return undefined;\n addr = nums[0] * 0x1000000 + nums[1] * 0x10000 + nums[2] * 0x100 + nums[3];\n }\n\n const o1 = Math.floor(addr / 0x1000000) & 0xff;\n const o2 = Math.floor(addr / 0x10000) & 0xff;\n const o3 = Math.floor(addr / 0x100) & 0xff;\n const o4 = addr & 0xff;\n return `${o1}.${o2}.${o3}.${o4}`;\n}\n\n// ========================================================================\n// IP literal detection & classification\n// ========================================================================\n\n/**\n * Classifies a literal IP address (v4 or v6) as public or private.\n * Returns undefined if the address is not a valid IP literal.\n */\nexport function classifyIpLiteral(\n host: string\n): { kind: \"public\" | \"private\"; reason?: string; canonical: string } | undefined {\n // IPv6 literal — URL.hostname already strips brackets in most runtimes.\n if (host.includes(\":\")) {\n let ipv6: ipaddr.IPv6;\n try {\n ipv6 = ipaddr.IPv6.parse(host);\n } catch {\n return undefined;\n }\n // IPv4-mapped IPv6 (::ffff:a.b.c.d): classify the inner v4 to catch\n // `::ffff:127.0.0.1` and similar.\n if (ipv6.isIPv4MappedAddress()) {\n const v4 = ipv6.toIPv4Address();\n const range = v4.range();\n const canonical = v4.toNormalizedString();\n if (PRIVATE_IPV4_RANGES.has(range)) {\n return { kind: \"private\", reason: `IPv4-mapped IPv6 in ${range} range`, canonical };\n }\n return { kind: \"public\", canonical };\n }\n const range = ipv6.range();\n const canonical = ipv6.toNormalizedString();\n if (PRIVATE_IPV6_RANGES.has(range)) {\n return { kind: \"private\", reason: `IPv6 in ${range} range`, canonical };\n }\n return { kind: \"public\", canonical };\n }\n\n // IPv4 literal (including decimal/hex/octal legacy forms)\n const canonical = tryNormalizeIPv4(host);\n if (canonical === undefined) return undefined;\n\n let ipv4: ipaddr.IPv4;\n try {\n ipv4 = ipaddr.IPv4.parse(canonical);\n } catch {\n return undefined;\n }\n const range = ipv4.range();\n if (PRIVATE_IPV4_RANGES.has(range)) {\n return { kind: \"private\", reason: `IPv4 in ${range} range`, canonical };\n }\n return { kind: \"public\", canonical };\n}\n\n// ========================================================================\n// Hostname normalization\n// ========================================================================\n\nfunction normalizeHost(host: string): string {\n // Strip surrounding IPv6 brackets if present (defensive — URL.hostname\n // usually already strips them).\n let h = host;\n if (h.startsWith(\"[\") && h.endsWith(\"]\")) {\n h = h.slice(1, -1);\n }\n // Strip trailing dot(s) — `metadata.google.internal.` → `metadata.google.internal`\n while (h.endsWith(\".\")) {\n h = h.slice(0, -1);\n }\n return h.toLowerCase();\n}\n\nfunction matchesPrivateHostnamePattern(host: string): string | undefined {\n if (PRIVATE_EXACT_HOSTS.has(host)) {\n return `host '${host}' is a reserved private name`;\n }\n for (const suffix of PRIVATE_DOMAIN_SUFFIXES) {\n if (host === suffix || host.endsWith(\".\" + suffix)) {\n return `host matches private suffix '.${suffix}'`;\n }\n }\n return undefined;\n}\n\n// ========================================================================\n// Public API\n// ========================================================================\n\n/**\n * Statically classify a URL as public, private, or invalid.\n *\n * This is a pure string-level check — it does NOT perform DNS resolution.\n * For DNS-aware protection against rebinding, use {@link safeFetch}.\n */\nexport function classifyUrl(urlStr: string): UrlClassification {\n if (typeof urlStr !== \"string\" || urlStr.length === 0) {\n return { kind: \"invalid\", reason: \"empty or non-string URL\" };\n }\n\n let parsed: URL;\n try {\n parsed = new URL(urlStr);\n } catch {\n return { kind: \"invalid\", reason: \"malformed URL\" };\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return { kind: \"invalid\", reason: `unsupported protocol '${parsed.protocol}'` };\n }\n\n if (parsed.username.length > 0 || parsed.password.length > 0) {\n return { kind: \"invalid\", reason: \"URL credentials are not allowed\" };\n }\n\n const host = normalizeHost(parsed.hostname);\n if (host.length === 0) {\n return { kind: \"invalid\", reason: \"empty host\" };\n }\n\n // 1. Literal IP (v4 or v6)\n const ipClassification = classifyIpLiteral(host);\n if (ipClassification !== undefined) {\n return {\n kind: ipClassification.kind,\n reason: ipClassification.reason,\n host,\n literalIp: ipClassification.canonical,\n };\n }\n\n // 2. Well-known private hostnames / suffixes\n const hostnameReason = matchesPrivateHostnamePattern(host);\n if (hostnameReason !== undefined) {\n return { kind: \"private\", reason: hostnameReason, host };\n }\n\n // 3. Default: public\n return { kind: \"public\", host };\n}\n\n/**\n * Returns the entitlement resource pattern for a URL, used when declaring\n * a scoped `network:private` entitlement. The pattern covers any path/query\n * under the same protocol+host(+port).\n *\n * Examples:\n * http://localhost:3000/api → \"http://localhost:3000/*\"\n * https://192.168.1.1/admin → \"https://192.168.1.1/*\"\n * http://[::1]:8080/ → \"http://[::1]:8080/*\"\n */\nexport function urlResourcePattern(urlStr: string): string {\n let parsed: URL;\n try {\n parsed = new URL(urlStr);\n } catch {\n return urlStr;\n }\n const origin =\n parsed.port.length > 0\n ? `${parsed.protocol}//${parsed.host}`\n : `${parsed.protocol}//${parsed.hostname}`;\n return `${origin}/*`;\n}\n\n/**\n * Checks whether a (possibly post-redirect) URL falls within one of the\n * scoped resource patterns granted to the task. The URL is canonicalized so\n * minor syntactic differences (uppercase host, default port) cannot bypass the\n * check. The hostname is additionally normalized via `normalizeHost` (strips\n * trailing dots, lowercases) so that `example.internal.` and `example.internal`\n * are treated identically. Returns true when at least one pattern matches the\n * canonical URL via `resourcePatternMatches`. Returns false on URL parse errors\n * (fail closed).\n *\n * Used by `safeFetch` to enforce the task's declared `network:private`\n * resource scope on every redirect hop, preventing a compromised upstream\n * from walking across private hosts/ports via Location headers.\n */\nexport function urlMatchesScope(url: string, patterns: readonly string[]): boolean {\n let canonical: string;\n try {\n const parsed = new URL(url);\n parsed.hostname = normalizeHost(parsed.hostname);\n canonical = parsed.toString();\n } catch {\n return false;\n }\n return patterns.some((pat) => resourcePatternMatches(pat, canonical));\n}\n",
102
62
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IExecuteContext } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Task,\n TaskAbortedError,\n TaskConfig,\n TaskConfigSchema,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { uuid4, resolveHumanConnector } from \"@workglow/util\";\nimport type { HumanResponseAction, IHumanRequest } from \"@workglow/util\";\nimport type { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\n// ========================================================================\n// Schemas\n// ========================================================================\n\nconst humanApprovalConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n targetHumanId: {\n type: \"string\",\n title: \"Target Human\",\n description: \"Identifier of the human to ask for approval\",\n default: \"default\",\n },\n message: {\n type: \"string\",\n title: \"Message\",\n description: \"Explanatory message shown to the approver\",\n \"x-ui-editor\": \"textarea\",\n },\n metadata: {\n type: \"object\",\n additionalProperties: true,\n \"x-ui-hidden\": true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HumanApprovalTaskConfig = TaskConfig & {\n /** Target human identifier — defaults to \"default\" */\n targetHumanId?: string;\n /** Explanatory message */\n message?: string;\n /** Arbitrary metadata passed to the connector */\n metadata?: Record<string, unknown>;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n prompt: {\n type: \"string\",\n title: \"Prompt\",\n description: \"Dynamic prompt text merged into the approval message\",\n },\n context: {\n type: \"object\",\n additionalProperties: true,\n title: \"Context\",\n description: \"Dynamic context data merged into the request metadata\",\n \"x-ui-hidden\": true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst approvalRequestedSchema = {\n type: \"object\",\n properties: {\n approved: {\n type: \"boolean\",\n title: \"Approved\",\n description: \"Whether the request is approved\",\n },\n reason: {\n type: \"string\",\n title: \"Reason\",\n description: \"Optional explanation for the decision\",\n },\n },\n required: [\"approved\"],\n} as const satisfies DataPortSchema;\n\nconst approvalOutputSchema = {\n type: \"object\",\n properties: {\n action: {\n type: \"string\",\n title: \"Action\",\n description: \"The human's action: accept, decline, or cancel\",\n enum: [\"accept\", \"decline\", \"cancel\"],\n },\n approved: {\n type: \"boolean\",\n title: \"Approved\",\n description: \"Whether the human approved the request\",\n },\n reason: {\n type: \"string\",\n title: \"Reason\",\n description: \"Optional explanation for the decision\",\n },\n },\n required: [\"action\", \"approved\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HumanApprovalTaskInput = FromSchema<typeof inputSchema>;\n\nexport type HumanApprovalTaskOutput = {\n readonly action: HumanResponseAction;\n readonly approved: boolean;\n readonly reason?: string;\n};\n\n// ========================================================================\n// HumanApprovalTask\n// ========================================================================\n\n/**\n * Convenience task for the common approve/deny pattern.\n *\n * Presents the human with an approval dialog via MCP elicitation and returns\n * `{ action, approved, reason }`. Uses \"single\" mode — one question, one answer.\n *\n * If the human declines or cancels at the MCP level, `approved` is false and\n * `action` reflects the specific choice.\n */\nexport class HumanApprovalTask extends Task<\n HumanApprovalTaskInput,\n HumanApprovalTaskOutput,\n HumanApprovalTaskConfig\n> {\n static override readonly type = \"HumanApprovalTask\";\n static override readonly category = \"Flow Control\";\n public static override title = \"Human Approval\";\n public static override description =\n \"Pauses execution to request approval from a human (approve/deny) via MCP elicitation\";\n static override readonly cacheable = false;\n\n public static override configSchema(): DataPortSchema {\n return humanApprovalConfigSchema;\n }\n\n static override inputSchema(): DataPortSchema {\n return inputSchema;\n }\n\n static override outputSchema(): DataPortSchema {\n return approvalOutputSchema;\n }\n\n override async execute(\n input: HumanApprovalTaskInput,\n context: IExecuteContext\n ): Promise<HumanApprovalTaskOutput> {\n const connector = resolveHumanConnector(context);\n const requestId = uuid4();\n\n const message = input.prompt\n ? this.config.message\n ? `${this.config.message}\\n\\n${input.prompt}`\n : input.prompt\n : (this.config.message ?? \"\");\n\n const request: IHumanRequest = {\n requestId,\n targetHumanId: this.config.targetHumanId ?? \"default\",\n kind: \"elicit\",\n message,\n contentSchema: approvalRequestedSchema,\n contentData: undefined,\n expectsResponse: true,\n mode: \"single\",\n metadata: input.context\n ? { ...this.config.metadata, ...input.context }\n : this.config.metadata,\n };\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted before requesting human approval\");\n }\n\n let response: Awaited<ReturnType<typeof connector.send>>;\n try {\n response = await connector.send(request, context.signal);\n } catch (err) {\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted during human approval\");\n }\n throw err;\n }\n\n // Map MCP actions to approval semantics:\n // - \"accept\" with approved field from content\n // - \"decline\" or \"cancel\" → approved = false\n if (response.action === \"accept\" && response.content) {\n return {\n action: response.action,\n approved: response.content.approved === true,\n reason: response.content.reason as string | undefined,\n };\n }\n\n return {\n action: response.action,\n approved: false,\n ...(response.content?.reason !== undefined\n ? { reason: response.content.reason as string }\n : {}),\n };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n humanApproval: CreateWorkflow<\n HumanApprovalTaskInput,\n HumanApprovalTaskOutput,\n HumanApprovalTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.humanApproval = CreateWorkflow(HumanApprovalTask);\n",
103
63
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IExecuteContext } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Task,\n TaskAbortedError,\n TaskConfig,\n TaskConfigSchema,\n TaskConfigurationError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport type {\n HumanInteractionKind,\n HumanResponseAction,\n IHumanRequest,\n IHumanResponse,\n} from \"@workglow/util\";\nimport { resolveHumanConnector, uuid4 } from \"@workglow/util\";\nimport type { DataPortSchema, PropertySchema } from \"@workglow/util/schema\";\n\n// ========================================================================\n// Task config and schemas\n// ========================================================================\n\nconst humanInputTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n targetHumanId: {\n type: \"string\",\n title: \"Target Human\",\n description: \"Identifier of the human to ask (e.g. 'default', 'admin', 'user:alice')\",\n default: \"default\",\n },\n kind: {\n type: \"string\",\n title: \"Kind\",\n description:\n \"Interaction kind: notify (one-way), display (show content), elicit (request input)\",\n enum: [\"notify\", \"display\", \"elicit\"],\n default: \"elicit\",\n },\n contentSchema: {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n title: \"Content Schema\",\n description: \"JSON schema describing the content/form to present\",\n \"x-ui-hidden\": true,\n },\n message: {\n type: \"string\",\n title: \"Message\",\n description: \"Explanatory message shown to the human\",\n \"x-ui-editor\": \"textarea\",\n },\n mode: {\n type: \"string\",\n title: \"Mode\",\n description: \"Interaction mode\",\n enum: [\"single\", \"multi-turn\"],\n default: \"single\",\n },\n metadata: {\n type: \"object\",\n additionalProperties: true,\n \"x-ui-hidden\": true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type HumanInputTaskConfig = TaskConfig & {\n /** Target human identifier — defaults to \"default\" */\n targetHumanId?: string;\n /** Interaction kind — defaults to \"elicit\" */\n kind?: HumanInteractionKind;\n /** JSON schema describing the content/form to render */\n contentSchema?: DataPortSchema;\n /** Explanatory message */\n message?: string;\n /** Interaction mode — defaults to \"single\" */\n mode?: \"single\" | \"multi-turn\";\n /** Arbitrary metadata passed to the connector */\n metadata?: Record<string, unknown>;\n};\n\nconst defaultInputSchema = {\n type: \"object\",\n properties: {\n prompt: {\n type: \"string\",\n title: \"Prompt\",\n description: \"Dynamic prompt text merged into the request message\",\n },\n contentData: {\n type: \"object\",\n additionalProperties: true,\n title: \"Content Data\",\n description: \"Data to display (for notify/display kinds)\",\n \"x-ui-hidden\": true,\n },\n context: {\n type: \"object\",\n additionalProperties: true,\n title: \"Context\",\n description: \"Dynamic context data merged into the request metadata\",\n \"x-ui-hidden\": true,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst defaultOutputSchema = {\n type: \"object\",\n properties: {\n action: {\n type: \"string\",\n title: \"Action\",\n description: \"The human's action: accept, decline, or cancel\",\n enum: [\"accept\", \"decline\", \"cancel\"],\n },\n },\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type HumanInputTaskInput = {\n prompt?: string;\n contentData?: Record<string, unknown>;\n context?: Record<string, unknown>;\n};\n\nexport type HumanInputTaskOutput = {\n /** The human's action */\n action: HumanResponseAction;\n /** Additional response data (for elicit kind) */\n [key: string]: unknown;\n};\n\n// ========================================================================\n// HumanInputTask\n// ========================================================================\n\n/**\n * A task that sends an interaction to a human via an IHumanConnector.\n *\n * Supports three interaction kinds:\n * - \"notify\": Send a notification (fire-and-forget, task completes immediately)\n * - \"display\": Present content to the human (charts, data, markdown)\n * - \"elicit\": Request structured input via a form (MCP elicitation model)\n *\n * The contentSchema describes WHAT to render. The kind determines HOW.\n * For \"elicit\", the output includes the human's submitted data.\n * For \"notify\"/\"display\", the output is just `{ action: \"accept\" }`.\n */\nexport class HumanInputTask extends Task<\n HumanInputTaskInput,\n HumanInputTaskOutput,\n HumanInputTaskConfig\n> {\n static override readonly type = \"HumanInputTask\";\n static override readonly category = \"Flow Control\";\n public static override title = \"Human Input\";\n public static override description =\n \"Sends an interaction (notification, display, or input request) to a human\";\n static override readonly cacheable = false;\n public static override hasDynamicSchemas = true;\n\n public static override configSchema(): DataPortSchema {\n return humanInputTaskConfigSchema;\n }\n\n static override inputSchema(): DataPortSchema {\n return defaultInputSchema;\n }\n\n static override outputSchema(): DataPortSchema {\n return defaultOutputSchema;\n }\n\n public override outputSchema(): DataPortSchema {\n if (this.config?.contentSchema && (this.config.kind ?? \"elicit\") === \"elicit\") {\n const configSchema = this.config.contentSchema as Record<string, unknown>;\n const existingProps = (configSchema.properties ?? {}) as Record<string, unknown>;\n const additionalProperties = configSchema.additionalProperties ?? false;\n const actionProp = {\n type: \"string\",\n title: \"Action\",\n description: \"The human's action: accept, decline, or cancel\",\n enum: [\"accept\", \"decline\", \"cancel\"],\n } as const satisfies PropertySchema;\n const result = {\n type: \"object\",\n properties: { ...existingProps, action: actionProp },\n required: [\"action\"],\n additionalProperties,\n } as const satisfies DataPortSchema;\n return result;\n }\n return (this.constructor as typeof HumanInputTask).outputSchema();\n }\n\n override async execute(\n input: HumanInputTaskInput,\n context: IExecuteContext\n ): Promise<HumanInputTaskOutput> {\n const connector = resolveHumanConnector(context);\n const kind = this.config.kind ?? \"elicit\";\n const mode = this.config.mode ?? \"single\";\n const requestId = uuid4();\n\n const message = input.prompt\n ? this.config.message\n ? `${this.config.message}\\n\\n${input.prompt}`\n : input.prompt\n : (this.config.message ?? \"\");\n\n const emptySchema: DataPortSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n };\n\n const request: IHumanRequest = {\n requestId,\n targetHumanId: this.config.targetHumanId ?? \"default\",\n kind,\n message,\n contentSchema: this.config.contentSchema ?? emptySchema,\n contentData: input.contentData,\n expectsResponse: kind === \"elicit\",\n mode: kind === \"elicit\" ? mode : \"single\",\n metadata: input.context\n ? { ...this.config.metadata, ...input.context }\n : this.config.metadata,\n };\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted before sending human interaction\");\n }\n\n let response: IHumanResponse;\n try {\n response = await connector.send(request, context.signal);\n } catch (err) {\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted during human interaction\");\n }\n throw err;\n }\n\n if (kind === \"elicit\" && mode === \"multi-turn\" && !response.done) {\n if (typeof connector.followUp !== \"function\") {\n throw new TaskConfigurationError(\n 'HumanInputTask is configured for \"multi-turn\" mode but the registered ' +\n \"IHumanConnector does not implement followUp()\"\n );\n }\n\n while (!response.done) {\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted during multi-turn conversation\");\n }\n try {\n response = await connector.followUp(request, response, context.signal);\n } catch (err) {\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted during multi-turn conversation\");\n }\n throw err;\n }\n }\n }\n\n return { ...response.content, action: response.action };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n humanInput: CreateWorkflow<HumanInputTaskInput, HumanInputTaskOutput, HumanInputTaskConfig>;\n }\n}\n\nWorkflow.prototype.humanInput = CreateWorkflow(HumanInputTask);\n",
104
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Load adaptive first so Workflow.prototype.add/subtract/multiply/divide/sum are registered\nimport \"./task/adaptive\";\n\nexport * from \"./mcp-server/getMcpServerConfig\";\nexport * from \"./mcp-server/InMemoryMcpServerRepository\";\nexport * from \"./mcp-server/McpServerRegistry\";\nexport * from \"./mcp-server/McpServerRepository\";\nexport * from \"./mcp-server/McpServerSchema\";\nexport * from \"./task/adaptive\";\nexport * from \"./task/ArrayTask\";\nexport * from \"./task/browser-control\";\nexport * from \"./task/DateFormatTask\";\nexport * from \"./task/DebugLogTask\";\nexport * from \"./task/DelayTask\";\nexport * from \"./task/FetchUrlTask\";\nexport * from \"./task/HumanApprovalTask\";\nexport * from \"./task/HumanInputTask\";\nexport {\n registerFilterOp,\n applyFilter,\n hasFilterOp,\n _resetFilterRegistryForTests,\n} from \"@workglow/util/media\";\nexport type { FilterOpFn } from \"@workglow/util/media\";\nexport { ImageFilterTask } from \"./task/image/ImageFilterTask\";\nexport type { ImageFilterInput, ImageFilterOutput } from \"./task/image/ImageFilterTask\";\nexport * from \"./task/image/blur/ImageBlurTask\";\nexport * from \"./task/image/border/ImageBorderTask\";\nexport * from \"./task/image/brightness/ImageBrightnessTask\";\nexport * from \"./task/image/imageCodecLimits\";\nexport * from \"./task/image/contrast/ImageContrastTask\";\nexport * from \"./task/image/crop/ImageCropTask\";\nexport * from \"./task/image/flip/ImageFlipTask\";\nexport * from \"./task/image/grayscale/ImageGrayscaleTask\";\nexport * from \"./task/image/invert/ImageInvertTask\";\nexport * from \"./task/image/pixelate/ImagePixelateTask\";\nexport * from \"./task/image/posterize/ImagePosterizeTask\";\nexport * from \"./task/image/imageRasterCodecRegistry\";\nexport * from \"./task/image/resize/ImageResizeTask\";\nexport * from \"./task/image/rotate/ImageRotateTask\";\nexport * from \"./task/image/ImageSchemas\";\nexport * from \"./task/image/sepia/ImageSepiaTask\";\nexport * from \"./task/image/text/ImageTextTask\";\nexport * from \"./task/image/threshold/ImageThresholdTask\";\nexport * from \"./task/image/tint/ImageTintTask\";\nexport * from \"./task/image/transparency/ImageTransparencyTask\";\nexport * from \"./task/InputTask\";\nexport * from \"./task/JavaScriptTask\";\nexport * from \"./task/JsonPathTask\";\nexport * from \"./task/JsonTask\";\nexport * from \"./task/LambdaTask\";\nexport * from \"./task/mcp/McpListTask\";\nexport * from \"./task/mcp/McpPromptGetTask\";\nexport * from \"./task/mcp/McpResourceReadTask\";\nexport * from \"./task/mcp/McpSearchTask\";\nexport * from \"./task/mcp/McpToolCallTask\";\nexport * from \"./task/McpElicitationConnector\";\nexport * from \"./task/MergeTask\";\nexport * from \"./task/OutputTask\";\nexport * from \"./task/RegexTask\";\nexport * from \"./task/scalar/ScalarAbsTask\";\nexport * from \"./task/scalar/ScalarAddTask\";\nexport * from \"./task/scalar/ScalarCeilTask\";\nexport * from \"./task/scalar/ScalarDivideTask\";\nexport * from \"./task/scalar/ScalarFloorTask\";\nexport * from \"./task/scalar/ScalarMaxTask\";\nexport * from \"./task/scalar/ScalarMinTask\";\nexport * from \"./task/scalar/ScalarMultiplyTask\";\nexport * from \"./task/scalar/ScalarRoundTask\";\nexport * from \"./task/scalar/ScalarSubtractTask\";\nexport * from \"./task/scalar/ScalarSumTask\";\nexport * from \"./task/scalar/ScalarTruncTask\";\nexport * from \"./task/SplitTask\";\nexport * from \"./task/string/StringConcatTask\";\nexport * from \"./task/string/StringIncludesTask\";\nexport * from \"./task/string/StringJoinTask\";\nexport * from \"./task/string/StringLengthTask\";\nexport * from \"./task/string/StringLowerCaseTask\";\nexport * from \"./task/string/StringReplaceTask\";\nexport * from \"./task/string/StringSliceTask\";\nexport * from \"./task/string/StringTemplateTask\";\nexport * from \"./task/string/StringTrimTask\";\nexport * from \"./task/string/StringUpperCaseTask\";\nexport * from \"./task/TemplateTask\";\nexport * from \"./task/vector/VectorDistanceTask\";\nexport * from \"./task/vector/VectorDivideTask\";\nexport * from \"./task/vector/VectorDotProductTask\";\nexport * from \"./task/vector/VectorMultiplyTask\";\nexport * from \"./task/vector/VectorNormalizeTask\";\nexport * from \"./task/vector/VectorScaleTask\";\nexport * from \"./task/vector/VectorSubtractTask\";\nexport * from \"./task/vector/VectorSumTask\";\nexport * from \"./util/BrowserTaskDeps\";\nexport * from \"./util/SafeFetch\";\nexport * from \"./util/UrlClassifier\";\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { registerBrowserTasks } from \"./task/browser-control/register\";\nimport { DateFormatTask } from \"./task/DateFormatTask\";\nimport { DebugLogTask } from \"./task/DebugLogTask\";\nimport { DelayTask } from \"./task/DelayTask\";\nimport { FetchUrlTask } from \"./task/FetchUrlTask\";\nimport { HumanApprovalTask } from \"./task/HumanApprovalTask\";\nimport { HumanInputTask } from \"./task/HumanInputTask\";\nimport { ImageBlurTask } from \"./task/image/blur/ImageBlurTask\";\nimport { ImageBorderTask } from \"./task/image/border/ImageBorderTask\";\nimport { ImageBrightnessTask } from \"./task/image/brightness/ImageBrightnessTask\";\nimport { ImageContrastTask } from \"./task/image/contrast/ImageContrastTask\";\nimport { ImageCropTask } from \"./task/image/crop/ImageCropTask\";\nimport { ImageFlipTask } from \"./task/image/flip/ImageFlipTask\";\nimport { ImageGrayscaleTask } from \"./task/image/grayscale/ImageGrayscaleTask\";\nimport { ImageInvertTask } from \"./task/image/invert/ImageInvertTask\";\nimport { ImagePixelateTask } from \"./task/image/pixelate/ImagePixelateTask\";\nimport { ImagePosterizeTask } from \"./task/image/posterize/ImagePosterizeTask\";\nimport { ImageResizeTask } from \"./task/image/resize/ImageResizeTask\";\nimport { ImageRotateTask } from \"./task/image/rotate/ImageRotateTask\";\nimport { ImageSepiaTask } from \"./task/image/sepia/ImageSepiaTask\";\nimport { ImageTextTask } from \"./task/image/text/ImageTextTask\";\nimport { ImageThresholdTask } from \"./task/image/threshold/ImageThresholdTask\";\nimport { ImageTintTask } from \"./task/image/tint/ImageTintTask\";\nimport { ImageTransparencyTask } from \"./task/image/transparency/ImageTransparencyTask\";\nimport { InputTask } from \"./task/InputTask\";\nimport { JavaScriptTask } from \"./task/JavaScriptTask\";\nimport { JsonPathTask } from \"./task/JsonPathTask\";\nimport { JsonTask } from \"./task/JsonTask\";\nimport { LambdaTask } from \"./task/LambdaTask\";\nimport { McpListTask } from \"./task/mcp/McpListTask\";\nimport { McpPromptGetTask } from \"./task/mcp/McpPromptGetTask\";\nimport { McpResourceReadTask } from \"./task/mcp/McpResourceReadTask\";\nimport { McpSearchTask } from \"./task/mcp/McpSearchTask\";\nimport { McpToolCallTask } from \"./task/mcp/McpToolCallTask\";\nimport { MergeTask } from \"./task/MergeTask\";\nimport { OutputTask } from \"./task/OutputTask\";\nimport { RegexTask } from \"./task/RegexTask\";\nimport { ScalarAbsTask } from \"./task/scalar/ScalarAbsTask\";\nimport { ScalarAddTask } from \"./task/scalar/ScalarAddTask\";\nimport { ScalarCeilTask } from \"./task/scalar/ScalarCeilTask\";\nimport { ScalarDivideTask } from \"./task/scalar/ScalarDivideTask\";\nimport { ScalarFloorTask } from \"./task/scalar/ScalarFloorTask\";\nimport { ScalarMaxTask } from \"./task/scalar/ScalarMaxTask\";\nimport { ScalarMinTask } from \"./task/scalar/ScalarMinTask\";\nimport { ScalarMultiplyTask } from \"./task/scalar/ScalarMultiplyTask\";\nimport { ScalarRoundTask } from \"./task/scalar/ScalarRoundTask\";\nimport { ScalarSubtractTask } from \"./task/scalar/ScalarSubtractTask\";\nimport { ScalarSumTask } from \"./task/scalar/ScalarSumTask\";\nimport { ScalarTruncTask } from \"./task/scalar/ScalarTruncTask\";\nimport { SplitTask } from \"./task/SplitTask\";\nimport { StringConcatTask } from \"./task/string/StringConcatTask\";\nimport { StringIncludesTask } from \"./task/string/StringIncludesTask\";\nimport { StringJoinTask } from \"./task/string/StringJoinTask\";\nimport { StringLengthTask } from \"./task/string/StringLengthTask\";\nimport { StringLowerCaseTask } from \"./task/string/StringLowerCaseTask\";\nimport { StringReplaceTask } from \"./task/string/StringReplaceTask\";\nimport { StringSliceTask } from \"./task/string/StringSliceTask\";\nimport { StringTemplateTask } from \"./task/string/StringTemplateTask\";\nimport { StringTrimTask } from \"./task/string/StringTrimTask\";\nimport { StringUpperCaseTask } from \"./task/string/StringUpperCaseTask\";\nimport { TemplateTask } from \"./task/TemplateTask\";\nimport { VectorDistanceTask } from \"./task/vector/VectorDistanceTask\";\nimport { VectorDivideTask } from \"./task/vector/VectorDivideTask\";\nimport { VectorDotProductTask } from \"./task/vector/VectorDotProductTask\";\nimport { VectorMultiplyTask } from \"./task/vector/VectorMultiplyTask\";\nimport { VectorNormalizeTask } from \"./task/vector/VectorNormalizeTask\";\nimport { VectorScaleTask } from \"./task/vector/VectorScaleTask\";\nimport { VectorSubtractTask } from \"./task/vector/VectorSubtractTask\";\nimport { VectorSumTask } from \"./task/vector/VectorSumTask\";\n\n// Register all common tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport let registerCommonTasks = () => {\n const tasks = [\n DebugLogTask,\n DelayTask,\n FetchUrlTask,\n HumanApprovalTask,\n HumanInputTask,\n InputTask,\n JavaScriptTask,\n JsonTask,\n LambdaTask,\n MergeTask,\n OutputTask,\n SplitTask,\n ScalarAbsTask,\n ScalarAddTask,\n ScalarCeilTask,\n ScalarDivideTask,\n ScalarFloorTask,\n ScalarMaxTask,\n ScalarMinTask,\n ScalarMultiplyTask,\n ScalarRoundTask,\n ScalarSubtractTask,\n ScalarSumTask,\n ScalarTruncTask,\n VectorSumTask,\n VectorDistanceTask,\n VectorDivideTask,\n VectorDotProductTask,\n VectorMultiplyTask,\n VectorNormalizeTask,\n VectorScaleTask,\n VectorSubtractTask,\n McpToolCallTask,\n McpResourceReadTask,\n McpPromptGetTask,\n McpSearchTask,\n McpListTask,\n StringConcatTask,\n StringIncludesTask,\n StringJoinTask,\n StringLengthTask,\n StringLowerCaseTask,\n StringReplaceTask,\n StringSliceTask,\n StringTemplateTask,\n StringTrimTask,\n StringUpperCaseTask,\n JsonPathTask,\n TemplateTask,\n DateFormatTask,\n RegexTask,\n ImageResizeTask,\n ImageCropTask,\n ImageRotateTask,\n ImageFlipTask,\n ImageGrayscaleTask,\n ImageBorderTask,\n ImageTransparencyTask,\n ImageBlurTask,\n ImagePixelateTask,\n ImageInvertTask,\n ImageBrightnessTask,\n ImageContrastTask,\n ImageSepiaTask,\n ImageThresholdTask,\n ImagePosterizeTask,\n ImageTintTask,\n ImageTextTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n registerBrowserTasks();\n return tasks;\n};\n",
64
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Load adaptive first so Workflow.prototype.add/subtract/multiply/divide/sum are registered\nimport \"./task/adaptive\";\n\nexport * from \"./task/adaptive\";\nexport * from \"./task/ArrayTask\";\nexport * from \"./task/DateFormatTask\";\nexport * from \"./task/DebugLogTask\";\nexport * from \"./task/DelayTask\";\nexport * from \"./task/FetchUrlTask\";\nexport * from \"./task/HumanApprovalTask\";\nexport * from \"./task/HumanInputTask\";\nexport {\n registerFilterOp,\n applyFilter,\n hasFilterOp,\n _resetFilterRegistryForTests,\n} from \"@workglow/util/media\";\nexport type { FilterOpFn } from \"@workglow/util/media\";\nexport { ImageFilterTask } from \"./task/image/ImageFilterTask\";\nexport type { ImageFilterInput, ImageFilterOutput } from \"./task/image/ImageFilterTask\";\nexport * from \"./task/image/blur/ImageBlurTask\";\nexport * from \"./task/image/border/ImageBorderTask\";\nexport * from \"./task/image/brightness/ImageBrightnessTask\";\nexport * from \"./task/image/imageCodecLimits\";\nexport * from \"./task/image/contrast/ImageContrastTask\";\nexport * from \"./task/image/crop/ImageCropTask\";\nexport * from \"./task/image/flip/ImageFlipTask\";\nexport * from \"./task/image/grayscale/ImageGrayscaleTask\";\nexport * from \"./task/image/invert/ImageInvertTask\";\nexport * from \"./task/image/pixelate/ImagePixelateTask\";\nexport * from \"./task/image/posterize/ImagePosterizeTask\";\nexport * from \"./task/image/imageRasterCodecRegistry\";\nexport * from \"./task/image/resize/ImageResizeTask\";\nexport * from \"./task/image/rotate/ImageRotateTask\";\nexport * from \"./task/image/ImageSchemas\";\nexport * from \"./task/image/sepia/ImageSepiaTask\";\nexport * from \"./task/image/text/ImageTextTask\";\nexport * from \"./task/image/threshold/ImageThresholdTask\";\nexport * from \"./task/image/tint/ImageTintTask\";\nexport * from \"./task/image/transparency/ImageTransparencyTask\";\nexport * from \"./task/InputTask\";\nexport * from \"./task/JsonPathTask\";\nexport * from \"./task/JsonTask\";\nexport * from \"./task/LambdaTask\";\nexport * from \"./task/MergeTask\";\nexport * from \"./task/OutputTask\";\nexport * from \"./task/RegexTask\";\nexport * from \"./task/scalar/ScalarAbsTask\";\nexport * from \"./task/scalar/ScalarAddTask\";\nexport * from \"./task/scalar/ScalarCeilTask\";\nexport * from \"./task/scalar/ScalarDivideTask\";\nexport * from \"./task/scalar/ScalarFloorTask\";\nexport * from \"./task/scalar/ScalarMaxTask\";\nexport * from \"./task/scalar/ScalarMinTask\";\nexport * from \"./task/scalar/ScalarMultiplyTask\";\nexport * from \"./task/scalar/ScalarRoundTask\";\nexport * from \"./task/scalar/ScalarSubtractTask\";\nexport * from \"./task/scalar/ScalarSumTask\";\nexport * from \"./task/scalar/ScalarTruncTask\";\nexport * from \"./task/SplitTask\";\nexport * from \"./task/string/StringConcatTask\";\nexport * from \"./task/string/StringIncludesTask\";\nexport * from \"./task/string/StringJoinTask\";\nexport * from \"./task/string/StringLengthTask\";\nexport * from \"./task/string/StringLowerCaseTask\";\nexport * from \"./task/string/StringReplaceTask\";\nexport * from \"./task/string/StringSliceTask\";\nexport * from \"./task/string/StringTemplateTask\";\nexport * from \"./task/string/StringTrimTask\";\nexport * from \"./task/string/StringUpperCaseTask\";\nexport * from \"./task/TemplateTask\";\nexport * from \"./task/vector/VectorDistanceTask\";\nexport * from \"./task/vector/VectorDivideTask\";\nexport * from \"./task/vector/VectorDotProductTask\";\nexport * from \"./task/vector/VectorMultiplyTask\";\nexport * from \"./task/vector/VectorNormalizeTask\";\nexport * from \"./task/vector/VectorScaleTask\";\nexport * from \"./task/vector/VectorSubtractTask\";\nexport * from \"./task/vector/VectorSumTask\";\nexport * from \"./util/SafeFetch\";\nexport * from \"./util/UrlClassifier\";\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { DateFormatTask } from \"./task/DateFormatTask\";\nimport { DebugLogTask } from \"./task/DebugLogTask\";\nimport { DelayTask } from \"./task/DelayTask\";\nimport { FetchUrlTask } from \"./task/FetchUrlTask\";\nimport { HumanApprovalTask } from \"./task/HumanApprovalTask\";\nimport { HumanInputTask } from \"./task/HumanInputTask\";\nimport { ImageBlurTask } from \"./task/image/blur/ImageBlurTask\";\nimport { ImageBorderTask } from \"./task/image/border/ImageBorderTask\";\nimport { ImageBrightnessTask } from \"./task/image/brightness/ImageBrightnessTask\";\nimport { ImageContrastTask } from \"./task/image/contrast/ImageContrastTask\";\nimport { ImageCropTask } from \"./task/image/crop/ImageCropTask\";\nimport { ImageFlipTask } from \"./task/image/flip/ImageFlipTask\";\nimport { ImageGrayscaleTask } from \"./task/image/grayscale/ImageGrayscaleTask\";\nimport { ImageInvertTask } from \"./task/image/invert/ImageInvertTask\";\nimport { ImagePixelateTask } from \"./task/image/pixelate/ImagePixelateTask\";\nimport { ImagePosterizeTask } from \"./task/image/posterize/ImagePosterizeTask\";\nimport { ImageResizeTask } from \"./task/image/resize/ImageResizeTask\";\nimport { ImageRotateTask } from \"./task/image/rotate/ImageRotateTask\";\nimport { ImageSepiaTask } from \"./task/image/sepia/ImageSepiaTask\";\nimport { ImageTextTask } from \"./task/image/text/ImageTextTask\";\nimport { ImageThresholdTask } from \"./task/image/threshold/ImageThresholdTask\";\nimport { ImageTintTask } from \"./task/image/tint/ImageTintTask\";\nimport { ImageTransparencyTask } from \"./task/image/transparency/ImageTransparencyTask\";\nimport { InputTask } from \"./task/InputTask\";\nimport { JsonPathTask } from \"./task/JsonPathTask\";\nimport { JsonTask } from \"./task/JsonTask\";\nimport { LambdaTask } from \"./task/LambdaTask\";\nimport { MergeTask } from \"./task/MergeTask\";\nimport { OutputTask } from \"./task/OutputTask\";\nimport { RegexTask } from \"./task/RegexTask\";\nimport { ScalarAbsTask } from \"./task/scalar/ScalarAbsTask\";\nimport { ScalarAddTask } from \"./task/scalar/ScalarAddTask\";\nimport { ScalarCeilTask } from \"./task/scalar/ScalarCeilTask\";\nimport { ScalarDivideTask } from \"./task/scalar/ScalarDivideTask\";\nimport { ScalarFloorTask } from \"./task/scalar/ScalarFloorTask\";\nimport { ScalarMaxTask } from \"./task/scalar/ScalarMaxTask\";\nimport { ScalarMinTask } from \"./task/scalar/ScalarMinTask\";\nimport { ScalarMultiplyTask } from \"./task/scalar/ScalarMultiplyTask\";\nimport { ScalarRoundTask } from \"./task/scalar/ScalarRoundTask\";\nimport { ScalarSubtractTask } from \"./task/scalar/ScalarSubtractTask\";\nimport { ScalarSumTask } from \"./task/scalar/ScalarSumTask\";\nimport { ScalarTruncTask } from \"./task/scalar/ScalarTruncTask\";\nimport { SplitTask } from \"./task/SplitTask\";\nimport { StringConcatTask } from \"./task/string/StringConcatTask\";\nimport { StringIncludesTask } from \"./task/string/StringIncludesTask\";\nimport { StringJoinTask } from \"./task/string/StringJoinTask\";\nimport { StringLengthTask } from \"./task/string/StringLengthTask\";\nimport { StringLowerCaseTask } from \"./task/string/StringLowerCaseTask\";\nimport { StringReplaceTask } from \"./task/string/StringReplaceTask\";\nimport { StringSliceTask } from \"./task/string/StringSliceTask\";\nimport { StringTemplateTask } from \"./task/string/StringTemplateTask\";\nimport { StringTrimTask } from \"./task/string/StringTrimTask\";\nimport { StringUpperCaseTask } from \"./task/string/StringUpperCaseTask\";\nimport { TemplateTask } from \"./task/TemplateTask\";\nimport { VectorDistanceTask } from \"./task/vector/VectorDistanceTask\";\nimport { VectorDivideTask } from \"./task/vector/VectorDivideTask\";\nimport { VectorDotProductTask } from \"./task/vector/VectorDotProductTask\";\nimport { VectorMultiplyTask } from \"./task/vector/VectorMultiplyTask\";\nimport { VectorNormalizeTask } from \"./task/vector/VectorNormalizeTask\";\nimport { VectorScaleTask } from \"./task/vector/VectorScaleTask\";\nimport { VectorSubtractTask } from \"./task/vector/VectorSubtractTask\";\nimport { VectorSumTask } from \"./task/vector/VectorSumTask\";\n\n// Register all common tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport let registerCommonTasks = () => {\n const tasks = [\n DebugLogTask,\n DelayTask,\n FetchUrlTask,\n HumanApprovalTask,\n HumanInputTask,\n InputTask,\n JsonTask,\n LambdaTask,\n MergeTask,\n OutputTask,\n SplitTask,\n ScalarAbsTask,\n ScalarAddTask,\n ScalarCeilTask,\n ScalarDivideTask,\n ScalarFloorTask,\n ScalarMaxTask,\n ScalarMinTask,\n ScalarMultiplyTask,\n ScalarRoundTask,\n ScalarSubtractTask,\n ScalarSumTask,\n ScalarTruncTask,\n VectorSumTask,\n VectorDistanceTask,\n VectorDivideTask,\n VectorDotProductTask,\n VectorMultiplyTask,\n VectorNormalizeTask,\n VectorScaleTask,\n VectorSubtractTask,\n StringConcatTask,\n StringIncludesTask,\n StringJoinTask,\n StringLengthTask,\n StringLowerCaseTask,\n StringReplaceTask,\n StringSliceTask,\n StringTemplateTask,\n StringTrimTask,\n StringUpperCaseTask,\n JsonPathTask,\n TemplateTask,\n DateFormatTask,\n RegexTask,\n ImageResizeTask,\n ImageCropTask,\n ImageRotateTask,\n ImageFlipTask,\n ImageGrayscaleTask,\n ImageBorderTask,\n ImageTransparencyTask,\n ImageBlurTask,\n ImagePixelateTask,\n ImageInvertTask,\n ImageBrightnessTask,\n ImageContrastTask,\n ImageSepiaTask,\n ImageThresholdTask,\n ImagePosterizeTask,\n ImageTintTask,\n ImageTextTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n",
105
65
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nimport { Task } from \"@workglow/task-graph\";\nimport type { IExecuteContext, IExecutePreviewContext, TaskConfig } from \"@workglow/task-graph\";\nimport { applyFilter, CpuImage, GpuImageFactory, hasFilterOp } from \"@workglow/util/media\";\nimport type { GpuImage, ImageValue } from \"@workglow/util/media\";\n\nexport interface ImageFilterInput {\n image: ImageValue;\n}\nexport interface ImageFilterOutput {\n image: ImageValue;\n}\n\nexport abstract class ImageFilterTask<\n P,\n Input extends ImageFilterInput & Record<string, unknown> = ImageFilterInput &\n Record<string, unknown>,\n Output extends ImageFilterOutput & Record<string, unknown> = ImageFilterOutput &\n Record<string, unknown>,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n protected abstract readonly filterName: string;\n protected abstract opParams(input: Input): P;\n\n /** Override in subclasses with pixel-space params. Default is identity.\n * Always called before applyFilter; multiply-by-1 in run mode is a no-op.\n * Now called by both execute() and executePreview() since ImageValue\n * carries previewScale on the value, not the run mode. */\n protected scalePreviewParams(params: P, _scale: number): P {\n return params;\n }\n\n private async runFilter(input: Input): Promise<Output | undefined> {\n const previewScale = input.image.previewScale;\n let gpu: GpuImage = await GpuImageFactory.from(input.image);\n try {\n if (!hasFilterOp(gpu.backend, this.filterName)) {\n const cpu = await CpuImage.from(input.image);\n gpu.dispose();\n gpu = cpu;\n }\n const params = this.scalePreviewParams(this.opParams(input), previewScale);\n const out = applyFilter(gpu, this.filterName, params);\n gpu.dispose();\n try {\n const value = await out.toImageValue(previewScale);\n return { image: value } as Output;\n } catch (err) {\n // toImageValue self-disposes on its happy path; this catches a throw\n // before that disposal runs (e.g. a sync precondition failure).\n try {\n out.dispose();\n } catch {\n // already disposed — fall through\n }\n throw err;\n }\n } catch (err) {\n gpu.dispose();\n throw err;\n }\n }\n\n override async execute(input: Input, _ctx: IExecuteContext): Promise<Output | undefined> {\n return this.runFilter(input);\n }\n\n override async executePreview(\n input: Input,\n _ctx: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return this.runFilter(input);\n }\n}\n",
106
66
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nimport { CreateWorkflow, type TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { ImageValueSchema } from \"@workglow/util/media\";\nimport { ImageFilterTask, type ImageFilterInput, type ImageFilterOutput } from \"../ImageFilterTask\";\nimport type { BlurParams } from \"./blur.cpu\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n image: ImageValueSchema({ title: \"Image\", description: \"Source image\" }),\n radius: {\n type: \"number\",\n title: \"Radius\",\n description: \"Blur radius (1-10)\",\n minimum: 1,\n maximum: 10,\n default: 1,\n },\n },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nconst outputSchema = {\n type: \"object\",\n properties: { image: ImageValueSchema({ title: \"Image\", description: \"Blurred image\" }) },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nexport interface ImageBlurTaskInput extends ImageFilterInput {\n radius?: number;\n}\nexport type ImageBlurTaskOutput = ImageFilterOutput & Record<string, unknown>;\n\nexport class ImageBlurTask extends ImageFilterTask<\n BlurParams,\n ImageBlurTaskInput & Record<string, unknown>,\n ImageBlurTaskOutput\n> {\n static override readonly type = \"ImageBlurTask\";\n static override readonly category = \"Image\";\n public static override title = \"Blur Image\";\n public static override description = \"Applies a box blur to an image\";\n\n static override inputSchema() {\n return inputSchema as never;\n }\n static override outputSchema() {\n return outputSchema as never;\n }\n\n protected readonly filterName = \"blur\";\n protected opParams(input: ImageBlurTaskInput & Record<string, unknown>): BlurParams {\n return { radius: (input.radius as number | undefined) ?? 1 };\n }\n\n protected override scalePreviewParams({ radius }: BlurParams, s: number): BlurParams {\n return { radius: Math.max(1, Math.round(radius * s)) };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageBlur: CreateWorkflow<\n ImageBlurTaskInput & Record<string, unknown>,\n ImageBlurTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageBlur = CreateWorkflow(ImageBlurTask);\n",
107
67
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nimport { CreateWorkflow, type TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { ImageValueSchema } from \"@workglow/util/media\";\nimport { ImageFilterTask, type ImageFilterInput, type ImageFilterOutput } from \"../ImageFilterTask\";\nimport type { BorderParams } from \"./border.cpu\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n image: ImageValueSchema({ title: \"Image\", description: \"Source image\" }),\n borderWidth: {\n type: \"integer\",\n title: \"Border Width\",\n description: \"Border width in pixels\",\n minimum: 1,\n default: 10,\n },\n color: {\n oneOf: [\n { type: \"string\", pattern: \"^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$\" },\n {\n type: \"object\",\n properties: {\n r: { type: \"integer\", minimum: 0, maximum: 255 },\n g: { type: \"integer\", minimum: 0, maximum: 255 },\n b: { type: \"integer\", minimum: 0, maximum: 255 },\n a: { type: \"integer\", minimum: 0, maximum: 255 },\n },\n required: [\"r\", \"g\", \"b\"],\n additionalProperties: false,\n },\n ],\n title: \"Color\",\n description: \"Border color\",\n default: \"#000000\",\n },\n },\n required: [\"image\", \"color\"],\n additionalProperties: false,\n} as const;\n\nconst outputSchema = {\n type: \"object\",\n properties: { image: ImageValueSchema({ title: \"Image\", description: \"Image with border\" }) },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nexport interface ImageBorderTaskInput extends ImageFilterInput {\n borderWidth?: number;\n color: string | { r: number; g: number; b: number; a?: number };\n}\nexport type ImageBorderTaskOutput = ImageFilterOutput & Record<string, unknown>;\n\nexport class ImageBorderTask extends ImageFilterTask<\n BorderParams,\n ImageBorderTaskInput & Record<string, unknown>,\n ImageBorderTaskOutput\n> {\n static override readonly type = \"ImageBorderTask\";\n static override readonly category = \"Image\";\n public static override title = \"Add Border\";\n public static override description = \"Adds a colored border around an image\";\n\n static override inputSchema() {\n return inputSchema as never;\n }\n static override outputSchema() {\n return outputSchema as never;\n }\n\n protected readonly filterName = \"border\";\n protected opParams(input: ImageBorderTaskInput & Record<string, unknown>): BorderParams {\n return {\n borderWidth: (input.borderWidth as number | undefined) ?? 10,\n color: input.color as string | { r: number; g: number; b: number; a?: number },\n };\n }\n\n protected override scalePreviewParams(\n { borderWidth, color }: BorderParams,\n s: number\n ): BorderParams {\n return { borderWidth: Math.max(1, Math.round(borderWidth * s)), color };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageBorder: CreateWorkflow<\n ImageBorderTaskInput & Record<string, unknown>,\n ImageBorderTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageBorder = CreateWorkflow(ImageBorderTask);\n",
@@ -123,19 +83,9 @@
123
83
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nimport { CreateWorkflow, type TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { ImageValueSchema, type ColorObject } from \"@workglow/util/media\";\nimport { ImageFilterTask, type ImageFilterInput, type ImageFilterOutput } from \"../ImageFilterTask\";\nimport type { TintParams } from \"./tint.cpu\";\nimport { ColorValueSchema } from \"../ImageSchemas\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n image: ImageValueSchema({ title: \"Image\", description: \"Source image\" }),\n color: ColorValueSchema({ title: \"Color\", description: \"Tint color\" }),\n amount: {\n type: \"number\",\n title: \"Amount\",\n description: \"Tint strength (0.0 = no tint, 1.0 = full tint color)\",\n minimum: 0,\n maximum: 1,\n default: 0.5,\n },\n },\n required: [\"image\", \"color\"],\n additionalProperties: false,\n} as const;\n\nconst outputSchema = {\n type: \"object\",\n properties: { image: ImageValueSchema({ title: \"Image\", description: \"Tinted image\" }) },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nexport interface ImageTintTaskInput extends ImageFilterInput {\n color: ColorObject | string;\n amount?: number;\n}\nexport type ImageTintTaskOutput = ImageFilterOutput & Record<string, unknown>;\n\nexport class ImageTintTask extends ImageFilterTask<\n TintParams,\n ImageTintTaskInput & Record<string, unknown>,\n ImageTintTaskOutput\n> {\n static override readonly type = \"ImageTintTask\";\n static override readonly category = \"Image\";\n public static override title = \"Tint Image\";\n public static override description = \"Applies a color tint to an image\";\n\n static override inputSchema() {\n return inputSchema as never;\n }\n static override outputSchema() {\n return outputSchema as never;\n }\n\n protected readonly filterName = \"tint\";\n protected opParams(input: ImageTintTaskInput & Record<string, unknown>): TintParams {\n return {\n color: input.color as ColorObject | string,\n amount: (input.amount as number | undefined) ?? 0.5,\n };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageTint: CreateWorkflow<\n ImageTintTaskInput & Record<string, unknown>,\n ImageTintTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageTint = CreateWorkflow(ImageTintTask);\n",
124
84
  "/**\n * @copyright\n * Copyright 2026 Steven Roussey\n * All Rights Reserved\n */\nimport { CreateWorkflow, type TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { ImageValueSchema } from \"@workglow/util/media\";\nimport { ImageFilterTask, type ImageFilterInput, type ImageFilterOutput } from \"../ImageFilterTask\";\nimport type { TransparencyParams } from \"./transparency.cpu\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n image: ImageValueSchema({ title: \"Image\", description: \"Source image\" }),\n amount: {\n type: \"number\",\n title: \"Amount\",\n description: \"Opacity level (0.0 = fully transparent, 1.0 = fully opaque)\",\n minimum: 0,\n maximum: 1,\n default: 1,\n },\n },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n image: ImageValueSchema({ title: \"Image\", description: \"Image with adjusted transparency\" }),\n },\n required: [\"image\"],\n additionalProperties: false,\n} as const;\n\nexport interface ImageTransparencyTaskInput extends ImageFilterInput {\n amount?: number;\n}\nexport type ImageTransparencyTaskOutput = ImageFilterOutput & Record<string, unknown>;\n\nexport class ImageTransparencyTask extends ImageFilterTask<\n TransparencyParams,\n ImageTransparencyTaskInput & Record<string, unknown>,\n ImageTransparencyTaskOutput\n> {\n static override readonly type = \"ImageTransparencyTask\";\n static override readonly category = \"Image\";\n public static override title = \"Set Transparency\";\n public static override description = \"Adjusts the opacity of an image\";\n\n static override inputSchema() {\n return inputSchema as never;\n }\n static override outputSchema() {\n return outputSchema as never;\n }\n\n protected readonly filterName = \"transparency\";\n protected opParams(\n input: ImageTransparencyTaskInput & Record<string, unknown>\n ): TransparencyParams {\n return { amount: (input.amount as number | undefined) ?? 1 };\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n imageTransparency: CreateWorkflow<\n ImageTransparencyTaskInput & Record<string, unknown>,\n ImageTransparencyTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.imageTransparency = CreateWorkflow(ImageTransparencyTask);\n",
125
85
  "/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport type { IExecuteContext, StreamEvent, StreamFinish } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util/schema\";\n\nexport type InputTaskInput = Record<string, unknown>;\nexport type InputTaskOutput = Record<string, unknown>;\nexport type InputTaskConfig = TaskConfig;\n\nfunction passthroughInput(input: InputTaskInput): InputTaskOutput {\n return input as InputTaskOutput;\n}\n\nexport class InputTask extends Task<InputTaskInput, InputTaskOutput, InputTaskConfig> {\n static override type = \"InputTask\";\n static override category = \"Flow Control\";\n static override title = \"Input\";\n static override description = \"Starts the workflow\";\n static override hasDynamicSchemas = true;\n static override cacheable = false;\n static override isPassthrough = true;\n\n public static override inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public override inputSchema(): DataPortSchema {\n return this.config?.inputSchema ?? (this.constructor as typeof InputTask).inputSchema();\n }\n\n public override outputSchema(): DataPortSchema {\n return this.config?.outputSchema ?? (this.constructor as typeof InputTask).outputSchema();\n }\n\n public override async execute(input: InputTaskInput, _context: IExecuteContext) {\n return passthroughInput(input);\n }\n\n public override async executePreview(input: InputTaskInput) {\n return passthroughInput(input);\n }\n\n /**\n * Stream pass-through: re-yields all events from upstream input streams\n * so downstream consumers see them with near-zero latency, then emits\n * a finish event with the materialized input as data.\n */\n async *executeStream(\n input: InputTaskInput,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<InputTaskOutput>> {\n if (context.inputStreams) {\n for (const [, stream] of context.inputStreams) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value.type === \"finish\") continue;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n }\n }\n yield { type: \"finish\", data: input } as StreamFinish<InputTaskOutput>;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n input: CreateWorkflow<InputTaskInput, InputTaskOutput, InputTaskConfig>;\n }\n}\n\nWorkflow.prototype.input = CreateWorkflow(InputTask);\n",
126
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskInvalidInputError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { Interpreter } from \"../util/interpreter\";\n\nconst isValidIdentifier = (key: string) => /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key);\n\nfunction runJavaScript(\n input: JavaScriptTaskInput,\n configuredCode: string | undefined\n): JavaScriptTaskOutput {\n const output = {} as JavaScriptTaskOutput;\n const code = input.javascript_code || configuredCode;\n if (code) {\n try {\n const inputVariables = Object.keys(input)\n .filter((key) => key !== \"javascript_code\")\n .filter(isValidIdentifier);\n const inputVariablesString = inputVariables\n .map((key) => `var ${key} = ${JSON.stringify(input[key])};`)\n .join(\"\\n\");\n const myInterpreter = new Interpreter(`${inputVariablesString} ${code}`);\n myInterpreter.run();\n output.output = myInterpreter.value;\n } catch (e) {\n throw new TaskInvalidInputError(\n `JavaScript execution failed: ${e instanceof Error ? e.message : String(e)}`\n );\n }\n }\n return output;\n}\n\nconst configSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n javascript_code: {\n type: \"string\",\n title: \"Code\",\n minLength: 1,\n description: \"JavaScript code to execute\",\n format: \"code:javascript\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n javascript_code: {\n type: \"string\",\n title: \"Code\",\n minLength: 1,\n description: \"JavaScript code to execute\",\n format: \"code:javascript\",\n },\n },\n required: [\"javascript_code\"],\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"The output of the JavaScript code\",\n },\n },\n required: [\"output\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JavaScriptTaskInput = FromSchema<typeof inputSchema>;\nexport type JavaScriptTaskOutput = FromSchema<typeof outputSchema>;\nexport type JavaScriptTaskConfig = TaskConfig & {\n javascript_code?: string;\n};\n\nexport class JavaScriptTask extends Task<\n JavaScriptTaskInput,\n JavaScriptTaskOutput,\n JavaScriptTaskConfig\n> {\n public static override type = \"JavaScriptTask\";\n public static override category = \"Utility\";\n public static override title = \"JavaScript Interpreter\";\n public static override description =\n \"Executes JavaScript code in a sandboxed interpreter environment\";\n public static override customizable = true;\n public static override hasDynamicSchemas = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n {\n id: Entitlements.CODE_EXECUTION_JS,\n reason: \"Executes user-provided JavaScript code in a sandboxed interpreter\",\n },\n ],\n };\n }\n\n public static override configSchema() {\n return configSchema;\n }\n\n public static override inputSchema() {\n return inputSchema;\n }\n\n public static override outputSchema() {\n return outputSchema;\n }\n\n public override inputSchema() {\n if (this.config?.javascript_code) {\n if (this.config.inputSchema) {\n return this.config.inputSchema;\n }\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const satisfies DataPortSchema;\n }\n return inputSchema;\n }\n\n override async execute(input: JavaScriptTaskInput) {\n return runJavaScript(input, this.config.javascript_code);\n }\n\n override async executePreview(input: JavaScriptTaskInput) {\n return runJavaScript(input, this.config.javascript_code);\n }\n}\n\nexport const javaScript = (input: JavaScriptTaskInput, config: TaskConfig = {}) => {\n return new JavaScriptTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n javaScript: CreateWorkflow<JavaScriptTaskInput, JavaScriptTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.javaScript = CreateWorkflow(JavaScriptTask);\n",
127
- "/**\n * @license\n * Copyright 2012 Marijn Haverbeke\n * SPDX-License-Identifier: MIT\n */\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke and released under an MIT\n// license. The Unicode regexps (for identifiers and whitespace) were\n// taken from [Esprima](http://esprima.org) by Ariya Hidayat.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/marijnh/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\nvar version = \"0.5.0\";\n// Plus additional edits marked with 'JS-Interpreter change' comments.\n\n// JS-Interpreter change:\n// Added JSDoc type definitions.\n// -- Neil Fraser, July 2023.\n\n// JS-Interpreter change:\n// No longer exporting defaultOptions, getLineInfo, tokenize, tokTypes,\n// isIdentifierStart, and isIdentifierChar. Not used by JS-Interpreter.\n// -- Neil Fraser, February 2023.\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api], with the caveat that the SpiderMonkey-specific syntax\n// (`let`, `yield`, inline XML, etc) is not recognized.\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\n/** @type {!Object|undefined} */\nvar options;\n\n/** @type {string} */\nvar input = \"\";\n/** @type {number|undefined} */\nvar inputLen;\n/** @type {*} */\nvar sourceFile;\n\n/**\n * @param {string} inpt\n * @param {Object=} opts\n * @returns\n */\nvar parse = function (inpt, opts) {\n input = String(inpt);\n inputLen = input.length;\n setOptions(opts);\n initTokenState();\n return parseTopLevel(options.program);\n};\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // JS-Interpreter change:\n // `ecmaVersion` option has been removed along with all cases where\n // it is checked. In this version of Acorn it was limited to 3 or 5,\n // and there's no use case for 3 with JS-Interpreter.\n // -- Neil Fraser, December 2022.\n\n // Turn on `strictSemicolons` to prevent the parser from doing\n // automatic semicolon insertion.\n strictSemicolons: false,\n // When `allowTrailingCommas` is false, the parser will not allow\n // trailing commas in array and object literals.\n allowTrailingCommas: true,\n // By default, reserved words are not enforced. Enable\n // `forbidReserved` to enforce them. When this option has the\n // value \"everywhere\", reserved words and keywords can also not be\n // used as property names.\n forbidReserved: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n};\n\n/**\n * @param {Object|undefined} opts\n */\nfunction setOptions(opts) {\n options = opts || {};\n for (var opt in defaultOptions) {\n if (!Object.prototype.hasOwnProperty.call(options, opt)) {\n options[opt] = defaultOptions[opt];\n }\n }\n sourceFile = options.sourceFile;\n}\n\n/**\n * The `getLineInfo` function is mostly useful when the\n * `locations` option is off (for performance reasons) and you\n * want to find the line/column position for a given character\n * offset. `input` should be the code string that the offset refers\n * into.\n *\n * @param {string} input\n * @param {number} offset\n * @returns {!Object}\n */\nvar getLineInfo = function (input, offset) {\n for (var line = 1, cur = 0; ; ) {\n lineBreak.lastIndex = cur;\n var match = lineBreak.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n break;\n }\n }\n return { line: line, column: offset - cur };\n};\n\n// JS-Interpreter change:\n// tokenize function never used. Removed.\n// -- Neil Fraser, February 2023.\n\n// State is kept in (closure-)global variables. We already saw the\n// `options`, `input`, and `inputLen` variables above.\n\n/**\n * The current position of the tokenizer in the input.\n * @type {number}\n */\nvar tokPos = 0;\n\n/**\n * The start offset of the current token.\n * @type {number}\n */\nvar tokStart = 0;\n\n/**\n * The end offset of the current token.\n * @type {number}\n */\nvar tokEnd = 0;\n\n/**\n * When `options.locations` is true, holds object\n * containing the token's start line/column pairs.\n * @type {!line_loc_t|undefined}\n */\nvar tokStartLoc;\n\n/**\n * When `options.locations` is true, holds object\n * containing the token's end line/column pairs.\n * @type {!line_loc_t|undefined}\n */\nvar tokEndLoc;\n\n/**\n * The type of the current token. Token types are objects,\n * named by variables against which they can be compared, and\n * holding properties that describe them (indicating, for example,\n * the precedence of an infix operator, and the original name of a\n * keyword token).\n * @type {!Object|undefined}\n */\nvar tokType;\n\n/**\n * The value of the current token. The kind of value that's held in\n * `tokVal` depends on the type of the token. For literals, it is the\n * literal value, for operators, the operator name, and so on.\n * @type {*}\n */\nvar tokVal;\n\n/**\n * Interal state for the tokenizer. To distinguish between division\n * operators and regular expressions, it remembers whether the last\n * token was one that is allowed to be followed by an expression.\n * (If it is, a slash is probably a regexp, if it isn't it's a\n * division operator. See the `parseStatement` function for a caveat.)\n * @type {boolean|undefined}\n */\nvar tokRegexpAllowed;\n\n/**\n * When `options.locations` is true, `tokCurLine` is used to keep\n * track of the current line.\n * @type {number|undefined}\n */\nvar tokCurLine;\n\n/**\n * When `options.locations` is true, `tokLineStart` is used to know\n * when a new line has been entered.\n * @type {number|undefined}\n */\nvar tokLineStart;\n\n/**\n * The start of the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {number}\n */\nvar lastStart = 0;\n\n/**\n * The end oy the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {number}\n */\nvar lastEnd = 0;\n\n/**\n * Stores the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {!line_loc_t|undefined}\n */\nvar lastEndLoc;\n\n/**\n * `inFunction` is used to reject `return` statements outside of functions.\n * @type {boolean|undefined}\n */\nvar inFunction;\n\n/**\n * `labels` is used to verify that `break` and `continue` have somewhere\n * to jump to.\n * @type {!Array<!Object>|undefined}\n */\nvar labels;\n\n/**\n * `strict` indicates whether strict mode is on.\n * @type {boolean|undefined}\n */\nvar strict;\n\n/**\n * This function is used to raise exceptions on parse errors. It\n * takes an offset integer (into the current `input`) to indicate\n * the location of the error, attaches the position to the end\n * of the error message, and then raises a `SyntaxError` with that\n * message.\n *\n * @param {number} pos\n * @param {string} message\n * @throws {SyntaxError}\n */\nfunction raise(pos, message) {\n var loc = getLineInfo(input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos;\n err.loc = loc;\n err.raisedAt = tokPos;\n throw err;\n}\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// These are the general types. The `type` property is only used to\n// make them recognizeable when debugging.\n\nvar _num = { type: \"num\" };\nvar _regexp = { type: \"regexp\" };\nvar _string = { type: \"string\" };\nvar _name = { type: \"name\" };\nvar _eof = { type: \"eof\" };\n\n// Keyword tokens. The `keyword` property (also used in keyword-like\n// operators) indicates that the token originated from an\n// identifier-like word, which is used when parsing property names.\n//\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar _break = { keyword: \"break\" };\nvar _case = { keyword: \"case\", beforeExpr: true };\nvar _catch = { keyword: \"catch\" };\nvar _continue = { keyword: \"continue\" };\nvar _debugger = { keyword: \"debugger\" };\nvar _default = { keyword: \"default\" };\nvar _do = { keyword: \"do\", isLoop: true };\nvar _else = { keyword: \"else\", beforeExpr: true };\nvar _finally = { keyword: \"finally\" };\nvar _for = { keyword: \"for\", isLoop: true };\nvar _function = { keyword: \"function\" };\nvar _if = { keyword: \"if\" };\nvar _return = { keyword: \"return\", beforeExpr: true };\nvar _switch = { keyword: \"switch\" };\nvar _throw = { keyword: \"throw\", beforeExpr: true };\nvar _try = { keyword: \"try\" };\nvar _var = { keyword: \"var\" };\nvar _while = { keyword: \"while\", isLoop: true };\nvar _with = { keyword: \"with\" };\nvar _new = { keyword: \"new\", beforeExpr: true };\nvar _this = { keyword: \"this\" };\n\n// The keywords that denote values.\n\nvar _null = { keyword: \"null\", atomValue: null };\nvar _true = { keyword: \"true\", atomValue: true };\nvar _false = { keyword: \"false\", atomValue: false };\n\n// Some keywords are treated as regular operators. `in` sometimes\n// (when parsing `for`) needs to be tested against specifically, so\n// we assign a variable name to it for quick comparing.\n\nvar _in = { keyword: \"in\", binop: 7, beforeExpr: true };\n\n// Map keyword names to token types.\n\nvar keywordTypes = {\n break: _break,\n case: _case,\n catch: _catch,\n continue: _continue,\n debugger: _debugger,\n default: _default,\n do: _do,\n else: _else,\n finally: _finally,\n for: _for,\n function: _function,\n if: _if,\n return: _return,\n switch: _switch,\n throw: _throw,\n try: _try,\n var: _var,\n while: _while,\n with: _with,\n null: _null,\n true: _true,\n false: _false,\n new: _new,\n in: _in,\n instanceof: { keyword: \"instanceof\", binop: 7, beforeExpr: true },\n this: _this,\n typeof: { keyword: \"typeof\", prefix: true, beforeExpr: true },\n void: { keyword: \"void\", prefix: true, beforeExpr: true },\n delete: { keyword: \"delete\", prefix: true, beforeExpr: true },\n};\n\n// Punctuation token types. Again, the `type` property is purely for debugging.\n\nvar _bracketL = { type: \"[\", beforeExpr: true };\nvar _bracketR = { type: \"]\" };\nvar _braceL = { type: \"{\", beforeExpr: true };\nvar _braceR = { type: \"}\" };\nvar _parenL = { type: \"(\", beforeExpr: true };\nvar _parenR = { type: \")\" };\nvar _comma = { type: \",\", beforeExpr: true };\nvar _semi = { type: \";\", beforeExpr: true };\nvar _colon = { type: \":\", beforeExpr: true };\nvar _dot = { type: \".\" };\nvar _question = { type: \"?\", beforeExpr: true };\n\n// Operators. These carry several kinds of properties to help the\n// parser use them properly (the presence of these properties is\n// what categorizes them as operators).\n//\n// `binop`, when present, specifies that this operator is a binary\n// operator, and will refer to its precedence.\n//\n// `prefix` and `postfix` mark the operator as a prefix or postfix\n// unary operator. `isUpdate` specifies that the node produced by\n// the operator should be of type UpdateExpression rather than\n// simply UnaryExpression (`++` and `--`).\n//\n// `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n// binary operators with a very low precedence, that should result\n// in AssignmentExpression nodes.\n\nvar _slash = { binop: 10, beforeExpr: true };\nvar _eq = { isAssign: true, beforeExpr: true };\nvar _assign = { isAssign: true, beforeExpr: true };\nvar _incDec = { postfix: true, prefix: true, isUpdate: true };\nvar _prefix = { prefix: true, beforeExpr: true };\nvar _logicalOR = { binop: 1, beforeExpr: true };\nvar _logicalAND = { binop: 2, beforeExpr: true };\nvar _bitwiseOR = { binop: 3, beforeExpr: true };\nvar _bitwiseXOR = { binop: 4, beforeExpr: true };\nvar _bitwiseAND = { binop: 5, beforeExpr: true };\nvar _equality = { binop: 6, beforeExpr: true };\nvar _relational = { binop: 7, beforeExpr: true };\nvar _bitShift = { binop: 8, beforeExpr: true };\nvar _plusMin = { binop: 9, prefix: true, beforeExpr: true };\nvar _multiplyModulo = { binop: 10, beforeExpr: true };\n\n// JS-Interpreter change:\n// tokTypes map never used. Removed.\n// -- Neil Fraser, February 2023.\n\n// JS-Interpreter change:\n// Acorn's original code built up functions using strings for maximum efficiency.\n// However, this triggered a CSP unsafe-eval requirement. Here's a slower, but\n// simpler approach. -- Neil Fraser, January 2022.\n// https://github.com/NeilFraser/JS-Interpreter/issues/228\n\n/**\n * @param {string} words\n * @returns {function(*): boolean}\n */\nfunction makePredicate(words) {\n var wordList = words.split(\" \");\n var set = Object.create(null);\n for (var i = 0; i < wordList.length; i++) {\n set[wordList[i]] = true;\n }\n return function (str) {\n return set[str] || false;\n };\n}\n\n// ECMAScript 5 reserved words.\n\nvar isReservedWord5 = makePredicate(\"class enum extends super const export import\");\n\n// The additional reserved words in strict mode.\n\nvar isStrictReservedWord = makePredicate(\n \"implements interface var package private protected public static yield\"\n);\n\n// The forbidden variable names in strict mode.\n\nvar isStrictBadIdWord = makePredicate(\"eval arguments\");\n\n// And the keywords.\n\nvar isKeyword = makePredicate(\n \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n);\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\nvar nonASCIIidentifierStartChars =\n \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nvar nonASCIIidentifierChars =\n \"\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\"\n);\n\n// Whether a single character denotes a newline.\n\nvar newline = /[\\n\\r\\u2028\\u2029]/;\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/g;\n\n/**\n * Test whether a given character code starts an identifier.\n *\n * @param {number} code\n * @returns {boolean}\n */\nvar isIdentifierStart = function (code) {\n if (code < 65) return code === 36;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n};\n\n/**\n * Test whether a given character is part of an identifier.\n *\n * @param {number} code\n * @returns {boolean}\n */\nvar isIdentifierChar = function (code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n};\n\n// ## Tokenizer\n\n/**\n * These are used when `options.locations` is on, for the\n * `tokStartLoc` and `tokEndLoc` properties.\n * @constructor\n */\nfunction line_loc_t() {\n this.line = tokCurLine;\n this.column = tokPos - tokLineStart;\n}\n\n/**\n * Reset the token state. Used at the start of a parse.\n */\nfunction initTokenState() {\n tokCurLine = 1;\n tokPos = tokLineStart = 0;\n tokRegexpAllowed = true;\n skipSpace();\n}\n\n/**\n * Called at the end of every token. Sets `tokEnd`, `tokVal`, and\n * `tokRegexpAllowed`, and skips the space after the token, so that\n * the next one's `tokStart` will point at the right position.\n *\n * @param {!Object} type\n * @param {*=} val\n */\nfunction finishToken(type, val) {\n tokEnd = tokPos;\n if (options.locations) {\n tokEndLoc = new line_loc_t();\n }\n tokType = type;\n skipSpace();\n tokVal = val;\n tokRegexpAllowed = type.beforeExpr;\n}\n\nfunction skipBlockComment() {\n var startLoc = options.onComment && options.locations && new line_loc_t();\n var start = tokPos;\n var end = input.indexOf(\"*/\", (tokPos += 2));\n if (end === -1) {\n raise(tokPos - 2, \"Unterminated comment\");\n }\n tokPos = end + 2;\n if (options.locations) {\n lineBreak.lastIndex = start;\n var match;\n while ((match = lineBreak.exec(input)) && match.index < tokPos) {\n ++tokCurLine;\n tokLineStart = match.index + match[0].length;\n }\n }\n if (options.onComment) {\n options.onComment(\n true,\n input.slice(start + 2, end),\n start,\n tokPos,\n startLoc,\n options.locations && new line_loc_t()\n );\n }\n}\n\nfunction skipLineComment() {\n var start = tokPos;\n var startLoc = options.onComment && options.locations && new line_loc_t();\n var ch = input.charCodeAt((tokPos += 2));\n while (tokPos < inputLen && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n ++tokPos;\n ch = input.charCodeAt(tokPos);\n }\n if (options.onComment) {\n options.onComment(\n false,\n input.slice(start + 2, tokPos),\n start,\n tokPos,\n startLoc,\n options.locations && new line_loc_t()\n );\n }\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\nfunction skipSpace() {\n while (tokPos < inputLen) {\n var ch = input.charCodeAt(tokPos);\n if (ch === 32) {\n // ' '\n ++tokPos;\n } else if (ch === 13) {\n ++tokPos;\n var next = input.charCodeAt(tokPos);\n if (next === 10) {\n ++tokPos;\n }\n if (options.locations) {\n ++tokCurLine;\n tokLineStart = tokPos;\n }\n } else if (ch === 10 || ch === 8232 || ch === 8233) {\n ++tokPos;\n if (options.locations) {\n ++tokCurLine;\n tokLineStart = tokPos;\n }\n } else if (ch > 8 && ch < 14) {\n ++tokPos;\n } else if (ch === 47) {\n // '/'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 42) {\n // '*'\n skipBlockComment();\n } else if (next === 47) {\n // '/'\n skipLineComment();\n } else break;\n } else if (ch === 160) {\n // '\\xa0'\n ++tokPos;\n } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++tokPos;\n } else {\n break;\n }\n }\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\n// The `forceRegexp` parameter is used in the one case where the\n// `tokRegexpAllowed` trick does not work. See `parseStatement`.\n\nfunction readToken_dot() {\n var next = input.charCodeAt(tokPos + 1);\n if (next >= 48 && next <= 57) {\n readNumber(true);\n } else {\n ++tokPos;\n finishToken(_dot);\n }\n}\n\nfunction readToken_slash() {\n // '/'\n var next = input.charCodeAt(tokPos + 1);\n if (tokRegexpAllowed) {\n ++tokPos;\n readRegexp();\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_slash, 1);\n }\n}\n\nfunction readToken_mult_modulo() {\n // '%*'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_multiplyModulo, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_pipe_amp(code) {\n // '|&'\n var next = input.charCodeAt(tokPos + 1);\n if (next === code) {\n finishOp(code === 124 ? _logicalOR : _logicalAND, 2);\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(code === 124 ? _bitwiseOR : _bitwiseAND, 1);\n }\n}\n\nfunction readToken_caret() {\n // '^'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_bitwiseXOR, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_plus_min(code) {\n // '+-'\n var next = input.charCodeAt(tokPos + 1);\n if (next === code) {\n if (\n next === 45 &&\n input.charCodeAt(tokPos + 2) === 62 &&\n newline.test(input.slice(lastEnd, tokPos))\n ) {\n // A `-->` line comment\n tokPos += 3;\n skipLineComment();\n skipSpace();\n readToken();\n return;\n }\n finishOp(_incDec, 2);\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_plusMin, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_lt_gt(code) {\n // '<>'\n var next = input.charCodeAt(tokPos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && input.charCodeAt(tokPos + 2) === 62 ? 3 : 2;\n if (input.charCodeAt(tokPos + size) === 61) {\n finishOp(_assign, size + 1);\n } else {\n finishOp(_bitShift, size);\n }\n return;\n }\n if (\n next === 33 &&\n code === 60 &&\n input.charCodeAt(tokPos + 2) === 45 &&\n input.charCodeAt(tokPos + 3) === 45\n ) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n tokPos += 4;\n skipLineComment();\n skipSpace();\n readToken();\n return;\n }\n if (next === 61) {\n size = input.charCodeAt(tokPos + 2) === 61 ? 3 : 2;\n }\n finishOp(_relational, size);\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_eq_excl(code) {\n // '=!'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_equality, input.charCodeAt(tokPos + 2) === 61 ? 3 : 2);\n } else {\n finishOp(code === 61 ? _eq : _prefix, 1);\n }\n}\n\n/**\n * @param {number} code\n * @returns {boolean|undefined}\n */\nfunction getTokenFromCode(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit.\n case 46: // '.'\n return readToken_dot();\n\n // Punctuation tokens.\n case 40:\n ++tokPos;\n return finishToken(_parenL);\n case 41:\n ++tokPos;\n return finishToken(_parenR);\n case 59:\n ++tokPos;\n return finishToken(_semi);\n case 44:\n ++tokPos;\n return finishToken(_comma);\n case 91:\n ++tokPos;\n return finishToken(_bracketL);\n case 93:\n ++tokPos;\n return finishToken(_bracketR);\n case 123:\n ++tokPos;\n return finishToken(_braceL);\n case 125:\n ++tokPos;\n return finishToken(_braceR);\n case 58:\n ++tokPos;\n return finishToken(_colon);\n case 63:\n ++tokPos;\n return finishToken(_question);\n\n // '0x' is a hexadecimal number.\n case 48: // '0'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 120 || next === 88) return readHexNumber();\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57: // 1-9\n return readNumber(false);\n\n // Quotes produce strings.\n case 34:\n case 39: // '\"', \"'\"\n return readString(code);\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return readToken_slash();\n\n case 37:\n case 42: // '%*'\n return readToken_mult_modulo();\n\n case 124:\n case 38: // '|&'\n return readToken_pipe_amp(code);\n\n case 94: // '^'\n return readToken_caret();\n\n case 43:\n case 45: // '+-'\n return readToken_plus_min(code);\n\n case 60:\n case 62: // '<>'\n return readToken_lt_gt(code);\n\n case 61:\n case 33: // '=!'\n return readToken_eq_excl(code);\n\n case 126: // '~'\n return finishOp(_prefix, 1);\n }\n\n return false;\n}\n\n/**\n * @param {boolean=} forceRegexp\n */\nfunction readToken(forceRegexp) {\n if (!forceRegexp) {\n tokStart = tokPos;\n } else {\n tokPos = tokStart + 1;\n }\n if (options.locations) {\n tokStartLoc = new line_loc_t();\n }\n if (forceRegexp) return readRegexp();\n if (tokPos >= inputLen) return finishToken(_eof);\n\n var code = input.charCodeAt(tokPos);\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code) || code === 92) {\n // '\\'\n return readWord();\n }\n\n var tok = getTokenFromCode(code);\n\n if (tok === false) {\n // If we are here, we either found a non-ASCII identifier\n // character, or something that's entirely disallowed.\n var ch = String.fromCharCode(code);\n if (ch === \"\\\\\" || nonASCIIidentifierStart.test(ch)) {\n return readWord();\n }\n raise(tokPos, \"Unexpected character '\" + ch + \"'\");\n }\n}\n\n/**\n * @param {!Object} type\n * @param {number} size\n */\nfunction finishOp(type, size) {\n var str = input.slice(tokPos, tokPos + size);\n tokPos += size;\n finishToken(type, str);\n}\n\n/**\n * Parse a regular expression. Some context-awareness is necessary,\n * since a '/' inside a '[]' set does not end the expression.\n */\nfunction readRegexp() {\n // JS-Interpreter change:\n // Removed redundant declaration of 'content' here. Caused lint errors.\n // -- Neil Fraser, June 2022.\n var escaped;\n var inClass;\n var start = tokPos;\n for (;;) {\n if (tokPos >= inputLen) raise(start, \"Unterminated regexp\");\n var ch = input.charAt(tokPos);\n if (newline.test(ch)) raise(start, \"Unterminated regexp\");\n if (!escaped) {\n if (ch === \"[\") {\n inClass = true;\n } else if (ch === \"]\" && inClass) {\n inClass = false;\n } else if (ch === \"/\" && !inClass) {\n break;\n }\n escaped = ch === \"\\\\\";\n } else escaped = false;\n ++tokPos;\n }\n var content = input.slice(start, tokPos);\n ++tokPos;\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = readWord1();\n // JS-Interpreter change:\n // Acorn used to use 'gmsiy' to check for flags. But 's' and 'y' are ES6.\n // -- Neil Fraser, December 2022.\n // https://github.com/acornjs/acorn/issues/1163\n if (mods && !/^[gmi]*$/.test(mods)) {\n raise(start, \"Invalid regexp flag\");\n }\n try {\n var value = new RegExp(content, mods);\n } catch (e) {\n if (e instanceof SyntaxError) raise(start, e.message);\n // JS-Interpreter change:\n // Acorn used to use raise(e) here which is incorrect.\n // -- Neil Fraser, July 2023.\n throw e;\n }\n finishToken(_regexp, value);\n}\n\n/**\n * Read an integer in the given radix. Return null if zero digits\n * were read, the integer value otherwise. When `len` is given, this\n * will return `null` unless the integer has exactly `len` digits.\n * @param {number} radix\n * @param {number=} len\n * @returns {?number}\n */\nfunction readInt(radix, len) {\n var start = tokPos;\n var total = 0;\n var e = len === undefined ? Infinity : len;\n for (var i = 0; i < e; ++i) {\n var code = input.charCodeAt(tokPos),\n val;\n if (code >= 97) {\n val = code - 97 + 10; // a\n } else if (code >= 65) {\n val = code - 65 + 10; // A\n } else if (code >= 48 && code <= 57) {\n val = code - 48; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) break;\n ++tokPos;\n total = total * radix + val;\n }\n if (tokPos === start || (len !== undefined && tokPos - start !== len)) {\n return null;\n }\n return total;\n}\n\nfunction readHexNumber() {\n tokPos += 2; // 0x\n var val = readInt(16);\n if (val === null) {\n raise(tokStart + 2, \"Expected hexadecimal number\");\n }\n if (isIdentifierStart(input.charCodeAt(tokPos))) {\n raise(tokPos, \"Identifier directly after number\");\n }\n finishToken(_num, val);\n}\n\n/**\n * Read an integer, octal integer, or floating-point number.\n *\n * @param {boolean} startsWithDot\n */\nfunction readNumber(startsWithDot) {\n var start = tokPos;\n var isFloat = false;\n var octal = input.charCodeAt(tokPos) === 48;\n if (!startsWithDot && readInt(10) === null) {\n raise(start, \"Invalid number\");\n }\n if (input.charCodeAt(tokPos) === 46) {\n ++tokPos;\n readInt(10);\n isFloat = true;\n }\n var next = input.charCodeAt(tokPos);\n if (next === 69 || next === 101) {\n // 'eE'\n next = input.charCodeAt(++tokPos);\n if (next === 43 || next === 45) {\n ++tokPos; // '+-'\n }\n if (readInt(10) === null) {\n raise(start, \"Invalid number\");\n }\n isFloat = true;\n }\n if (isIdentifierStart(input.charCodeAt(tokPos))) {\n raise(tokPos, \"Identifier directly after number\");\n }\n\n var str = input.slice(start, tokPos);\n var val;\n if (isFloat) {\n val = parseFloat(str);\n } else if (!octal || str.length === 1) {\n val = parseInt(str, 10);\n } else if (/[89]/.test(str) || strict) {\n raise(start, \"Invalid number\");\n } else {\n val = parseInt(str, 8);\n }\n finishToken(_num, val);\n}\n\n/**\n * Read a string value, interpreting backslash-escapes.\n *\n * @param {number} quote\n */\nfunction readString(quote) {\n tokPos++;\n var out = \"\";\n for (;;) {\n if (tokPos >= inputLen) raise(tokStart, \"Unterminated string constant\");\n var ch = input.charCodeAt(tokPos);\n if (ch === quote) {\n ++tokPos;\n finishToken(_string, out);\n return;\n }\n if (ch === 92) {\n // '\\'\n ch = input.charCodeAt(++tokPos);\n var octal = /^[0-7]+/.exec(input.slice(tokPos, tokPos + 3));\n if (octal) {\n octal = octal[0];\n }\n while (octal && parseInt(octal, 8) > 255) {\n octal = octal.slice(0, -1);\n }\n if (octal === \"0\") {\n octal = null;\n }\n ++tokPos;\n if (octal) {\n if (strict) raise(tokPos - 2, \"Octal literal in strict mode\");\n out += String.fromCharCode(parseInt(octal, 8));\n tokPos += octal.length - 1;\n } else {\n switch (ch) {\n case 110:\n out += \"\\n\";\n break; // 'n' -> '\\n'\n case 114:\n out += \"\\r\";\n break; // 'r' -> '\\r'\n case 120:\n out += String.fromCharCode(readHexChar(2));\n break; // 'x'\n case 117:\n out += String.fromCharCode(readHexChar(4));\n break; // 'u'\n case 85:\n out += String.fromCharCode(readHexChar(8));\n break; // 'U'\n case 116:\n out += \"\\t\";\n break; // 't' -> '\\t'\n case 98:\n out += \"\\b\";\n break; // 'b' -> '\\b'\n case 118:\n out += \"\\u000b\";\n break; // 'v' -> '\\u000b'\n case 102:\n out += \"\\f\";\n break; // 'f' -> '\\f'\n case 48:\n out += \"\\0\";\n break; // 0 -> '\\0'\n case 13: // '\\r'\n if (input.charCodeAt(tokPos) === 10) {\n ++tokPos; // '\\r\\n'\n }\n case 10: // ' \\n'\n if (options.locations) {\n tokLineStart = tokPos;\n ++tokCurLine;\n }\n break;\n default:\n out += String.fromCharCode(ch);\n break;\n }\n }\n } else {\n if (ch === 13 || ch === 10 || ch === 8232 || ch === 8233) {\n raise(tokStart, \"Unterminated string constant\");\n }\n out += String.fromCharCode(ch); // '\\'\n ++tokPos;\n }\n }\n}\n\n/**\n * Used to read character escape sequences ('\\x', '\\u', '\\U').\n *\n * @param {number} len\n * @returns {number}\n */\nfunction readHexChar(len) {\n var n = readInt(16, len);\n if (n === null) raise(tokStart, \"Bad character escape sequence\");\n return /** @type {number} */ (n);\n}\n\n// Used to signal to callers of `readWord1` whether the word\n// contained any escape sequences. This is needed because words with\n// escape sequences must not be interpreted as keywords.\n\n/** @type {boolean|undefined} */\nvar containsEsc;\n\n/**\n * Read an identifier, and return it as a string. Sets `containsEsc`\n * to whether the word contained a '\\u' escape.\n *\n * Only builds up the word character-by-character when it actually\n * containeds an escape, as a micro-optimization.\n *\n * @returns {string|undefined}\n */\nfunction readWord1() {\n containsEsc = false;\n var word;\n var first = true;\n var start = tokPos;\n for (;;) {\n var ch = input.charCodeAt(tokPos);\n if (isIdentifierChar(ch)) {\n if (containsEsc) {\n word += input.charAt(tokPos);\n }\n ++tokPos;\n } else if (ch === 92) {\n // \"\\\"\n if (!containsEsc) {\n word = input.slice(start, tokPos);\n }\n containsEsc = true;\n if (input.charCodeAt(++tokPos) !== 117) {\n // \"u\"\n raise(tokPos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n }\n ++tokPos;\n var esc = readHexChar(4);\n var escStr = String.fromCharCode(esc);\n if (!escStr) raise(tokPos - 1, \"Invalid Unicode escape\");\n if (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc))) {\n raise(tokPos - 4, \"Invalid Unicode escape\");\n }\n word += escStr;\n } else {\n break;\n }\n first = false;\n }\n return containsEsc ? word : input.slice(start, tokPos);\n}\n\n/**\n * Read an identifier or keyword token. Will check for reserved\n * words when necessary.\n */\nfunction readWord() {\n var word = readWord1();\n var type = _name;\n if (!containsEsc && isKeyword(word)) {\n type = keywordTypes[word];\n }\n finishToken(type, word);\n}\n\n// ## Parser\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n// ### Parser utilities\n\n/**\n * Continue to the next token.\n */\nfunction next() {\n lastStart = tokStart;\n lastEnd = tokEnd;\n lastEndLoc = tokEndLoc;\n readToken();\n}\n\n/**\n * Enter strict mode. Re-reads the next token to please pedantic\n * tests (\"use strict\"; 010; -- should fail).\n *\n * @param {boolean} strct\n */\nfunction setStrict(strct) {\n strict = strct;\n tokPos = tokStart;\n if (options.locations) {\n while (tokPos < tokLineStart) {\n tokLineStart = input.lastIndexOf(\"\\n\", tokLineStart - 2) + 1;\n --tokCurLine;\n }\n }\n skipSpace();\n readToken();\n}\n\n// Start an AST node, attaching a start offset.\n\n/**\n * @constructor\n */\nfunction node_t() {\n this.type = null;\n this.start = tokStart;\n this.end = null;\n}\n\n/**\n * @constructor\n */\nfunction node_loc_t() {\n this.start = tokStartLoc;\n this.end = null;\n if (sourceFile) {\n this.source = sourceFile;\n }\n}\n\n/**\n * @returns {!node_t}\n */\nfunction startNode() {\n var node = new node_t();\n if (options.locations) {\n node.loc = new node_loc_t();\n }\n if (options.directSourceFile) {\n node.sourceFile = options.directSourceFile;\n }\n if (options.ranges) {\n node.range = [tokStart, 0];\n }\n return node;\n}\n\n/**\n * Start a node whose start offset information should be based on\n * the start of another node. For example, a binary operator node is\n * only started after its left-hand side has already been parsed.\n *\n * @param {!node_t} other\n * @returns {!node_t}\n */\nfunction startNodeFrom(other) {\n var node = new node_t();\n node.start = other.start;\n if (options.locations) {\n node.loc = new node_loc_t();\n node.loc.start = other.loc.start;\n }\n if (options.ranges) {\n node.range = [other.range[0], 0];\n }\n return node;\n}\n\n/**\n * Finish an AST node, adding `type` and `end` properties.\n *\n * @param {!node_t} node\n * @param {string} type\n * @returns {!node_t}\n */\nfunction finishNode(node, type) {\n node.type = type;\n node.end = lastEnd;\n if (options.locations) {\n node.loc.end = lastEndLoc;\n }\n if (options.ranges) {\n node.range[1] = lastEnd;\n }\n return node;\n}\n\n/**\n * Test whether a statement node is the string literal `\"use strict\"`.\n *\n * @param {!node_t} stmt\n * @returns {boolean}\n */\nfunction isUseStrict(stmt) {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n stmt.expression.value === \"use strict\"\n );\n}\n\n/**\n * Predicate that tests whether the next token is of the given\n * type, and if yes, consumes it as a side effect.\n * @param {!Object} type\n * @returns {boolean}\n */\nfunction eat(type) {\n if (tokType === type) {\n next();\n return true;\n }\n return false;\n}\n\n/**\n * Test whether a semicolon can be inserted at the current position.\n *\n * @returns {boolean}\n */\nfunction canInsertSemicolon() {\n return (\n !options.strictSemicolons &&\n (tokType === _eof || tokType === _braceR || newline.test(input.slice(lastEnd, tokStart)))\n );\n}\n\n/**\n * Consume a semicolon, or, failing that, see if we are allowed to\n * pretend that there is a semicolon at this position.\n */\nfunction semicolon() {\n if (!eat(_semi) && !canInsertSemicolon()) {\n unexpected();\n }\n}\n\n/**\n * Expect a token of a given type. If found, consume it, otherwise,\n * raise an unexpected token error.\n *\n * @param {!Object} type\n */\nfunction expect(type) {\n if (tokType === type) {\n next();\n } else {\n unexpected();\n }\n}\n\n/**\n * Raise an unexpected token error.\n * @throws {SyntaxError}\n */\nfunction unexpected() {\n raise(tokStart, \"Unexpected token\");\n}\n\n/**\n * Verify that a node is an lval — something that can be assigned to.\n *\n * @param {!node_t} expr\n */\nfunction checkLVal(expr) {\n if (expr.type !== \"Identifier\" && expr.type !== \"MemberExpression\") {\n raise(expr.start, \"Assigning to rvalue\");\n }\n if (strict && expr.type === \"Identifier\" && isStrictBadIdWord(expr.name)) {\n raise(expr.start, \"Assigning to \" + expr.name + \" in strict mode\");\n }\n}\n\n// ### Statement parsing\n\n/**\n * Parse a program. Initializes the parser, reads any number of\n * statements, and wraps them in a Program node. Optionally takes a\n * `program` argument. If present, the statements will be appended\n * to its body instead of creating a new node.\n *\n * @param {node_t} program\n * @returns {!node_t}\n */\nfunction parseTopLevel(program) {\n lastStart = lastEnd = tokPos;\n if (options.locations) {\n lastEndLoc = new line_loc_t();\n }\n inFunction = strict = false;\n labels = [];\n readToken();\n\n var node = program || startNode();\n var first = true;\n if (!program) {\n node.body = [];\n }\n while (tokType !== _eof) {\n var stmt = parseStatement();\n node.body.push(stmt);\n if (first && isUseStrict(stmt)) {\n setStrict(true);\n }\n first = false;\n }\n return finishNode(node, \"Program\");\n}\n\nvar loopLabel = { kind: \"loop\" };\nvar switchLabel = { kind: \"switch\" };\n\n/**\n * Parse a single statement.\n *\n * If expecting a statement and finding a slash operator, parse a\n * regular expression literal. This is to handle cases like\n * `if (foo) /blah/.exec(foo);`, where looking at the previous token\n * does not help.\n *\n * @returns {!node_t}\n */\nfunction parseStatement() {\n if (tokType === _slash || (tokType === _assign && tokVal === \"/=\")) {\n readToken(true);\n }\n\n var starttype = tokType;\n var node = startNode();\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case _break:\n case _continue:\n next();\n var isBreak = starttype === _break;\n if (eat(_semi) || canInsertSemicolon()) {\n node.label = null;\n } else if (tokType !== _name) {\n unexpected();\n } else {\n node.label = parseIdent();\n semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n for (var i = 0; i < labels.length; ++i) {\n var lab = labels[i];\n if (node.label === null || lab.name === node.label.name) {\n if (lab.kind !== null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === labels.length) {\n raise(node.start, \"Unsyntactic \" + starttype.keyword);\n }\n return finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n\n case _debugger:\n next();\n semicolon();\n return finishNode(node, \"DebuggerStatement\");\n\n case _do:\n next();\n labels.push(loopLabel);\n node.body = parseStatement();\n labels.pop();\n expect(_while);\n node.test = parseParenExpression();\n semicolon();\n return finishNode(node, \"DoWhileStatement\");\n\n // Disambiguating between a `for` and a `for`/`in` loop is\n // non-trivial. Basically, we have to parse the init `var`\n // statement or expression, disallowing the `in` operator (see\n // the second parameter to `parseExpression`), and then check\n // whether the next token is `in`. When there is no init part\n // (semicolon immediately after the opening parenthesis), it is\n // a regular `for` loop.\n\n case _for:\n next();\n labels.push(loopLabel);\n expect(_parenL);\n if (tokType === _semi) return parseFor(node, null);\n if (tokType === _var) {\n var init = startNode();\n next();\n parseVar(init, true);\n finishNode(init, \"VariableDeclaration\");\n if (init.declarations.length === 1 && eat(_in)) return parseForIn(node, init);\n return parseFor(node, init);\n }\n var init = parseExpression(false, true);\n if (eat(_in)) {\n checkLVal(init);\n return parseForIn(node, init);\n }\n return parseFor(node, init);\n\n case _function:\n next();\n return parseFunction(node, true);\n\n case _if:\n next();\n node.test = parseParenExpression();\n node.consequent = parseStatement();\n node.alternate = eat(_else) ? parseStatement() : null;\n return finishNode(node, \"IfStatement\");\n\n case _return:\n if (!inFunction && !options.allowReturnOutsideFunction) {\n raise(tokStart, \"'return' outside of function\");\n }\n next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (eat(_semi) || canInsertSemicolon()) {\n node.argument = null;\n } else {\n node.argument = parseExpression();\n semicolon();\n }\n return finishNode(node, \"ReturnStatement\");\n\n case _switch:\n next();\n node.discriminant = parseParenExpression();\n node.cases = [];\n expect(_braceL);\n labels.push(switchLabel);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n for (var cur, sawDefault; tokType !== _braceR; ) {\n if (tokType === _case || tokType === _default) {\n var isCase = tokType === _case;\n if (cur) {\n finishNode(cur, \"SwitchCase\");\n }\n node.cases.push((cur = startNode()));\n cur.consequent = [];\n next();\n if (isCase) {\n cur.test = parseExpression();\n } else {\n if (sawDefault) {\n raise(lastStart, \"Multiple default clauses\");\n }\n sawDefault = true;\n cur.test = null;\n }\n expect(_colon);\n } else {\n if (!cur) unexpected();\n cur.consequent.push(parseStatement());\n }\n }\n if (cur) finishNode(cur, \"SwitchCase\");\n next(); // Closing brace\n labels.pop();\n return finishNode(node, \"SwitchStatement\");\n\n case _throw:\n next();\n if (newline.test(input.slice(lastEnd, tokStart)))\n raise(lastEnd, \"Illegal newline after throw\");\n node.argument = parseExpression();\n semicolon();\n return finishNode(node, \"ThrowStatement\");\n\n case _try:\n next();\n node.block = parseBlock();\n node.handler = null;\n if (tokType === _catch) {\n var clause = startNode();\n next();\n expect(_parenL);\n clause.param = parseIdent();\n if (strict && isStrictBadIdWord(clause.param.name))\n raise(clause.param.start, \"Binding \" + clause.param.name + \" in strict mode\");\n expect(_parenR);\n // JS-Interpreter change:\n // Obsolete unused property; commenting out.\n // -- Neil Fraser, January 2023.\n // clause.guard = null;\n clause.body = parseBlock();\n node.handler = finishNode(clause, \"CatchClause\");\n }\n // JS-Interpreter change:\n // Obsolete unused property; commenting out.\n // -- Neil Fraser, January 2023.\n // node.guardedHandlers = empty;\n node.finalizer = eat(_finally) ? parseBlock() : null;\n if (!node.handler && !node.finalizer) raise(node.start, \"Missing catch or finally clause\");\n return finishNode(node, \"TryStatement\");\n\n case _var:\n next();\n parseVar(node);\n semicolon();\n return finishNode(node, \"VariableDeclaration\");\n\n case _while:\n next();\n node.test = parseParenExpression();\n labels.push(loopLabel);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"WhileStatement\");\n\n case _with:\n if (strict) raise(tokStart, \"'with' in strict mode\");\n next();\n node.object = parseParenExpression();\n node.body = parseStatement();\n return finishNode(node, \"WithStatement\");\n\n case _braceL:\n return parseBlock();\n\n case _semi:\n next();\n return finishNode(node, \"EmptyStatement\");\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n var maybeName = tokVal;\n var expr = parseExpression();\n if (starttype === _name && expr.type === \"Identifier\" && eat(_colon)) {\n for (var i = 0; i < labels.length; ++i) {\n if (labels[i].name === maybeName) {\n raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n }\n }\n var kind = tokType.isLoop ? \"loop\" : tokType === _switch ? \"switch\" : null;\n labels.push({ name: maybeName, kind: kind });\n node.body = parseStatement();\n labels.pop();\n node.label = expr;\n return finishNode(node, \"LabeledStatement\");\n } else {\n node.expression = expr;\n semicolon();\n return finishNode(node, \"ExpressionStatement\");\n }\n }\n}\n\n/**\n * Used for constructs like `switch` and `if` that insist on\n * parentheses around their expression.\n *\n * @returns {!node_t}\n */\nfunction parseParenExpression() {\n expect(_parenL);\n var val = parseExpression();\n expect(_parenR);\n return val;\n}\n\n/**\n * Parse a semicolon-enclosed block of statements, handling `\"use\n * strict\"` declarations when `allowStrict` is true (used for\n * function bodies).\n *\n * @param {boolean=} allowStrict\n * @returns {!node_t}\n */\nfunction parseBlock(allowStrict) {\n var node = startNode();\n var first = true;\n var strict = false;\n var oldStrict;\n node.body = [];\n expect(_braceL);\n while (!eat(_braceR)) {\n var stmt = parseStatement();\n node.body.push(stmt);\n if (first && allowStrict && isUseStrict(stmt)) {\n oldStrict = strict;\n setStrict((strict = true));\n }\n first = false;\n }\n if (strict && !oldStrict) setStrict(false);\n return finishNode(node, \"BlockStatement\");\n}\n\n/**\n * Parse a regular `for` loop. The disambiguation code in `parseStatement`\n * will already have parsed the init statement or expression.\n *\n * @param {!node_t} node\n * @param {node_t} init\n * @returns {!node_t}\n */\nfunction parseFor(node, init) {\n node.init = init;\n expect(_semi);\n node.test = tokType === _semi ? null : parseExpression();\n expect(_semi);\n node.update = tokType === _parenR ? null : parseExpression();\n expect(_parenR);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"ForStatement\");\n}\n\n/**\n * Parse a `for`/`in` loop.\n *\n * @param {!node_t} node\n * @param {!node_t} init\n * @returns {!node_t}\n */\nfunction parseForIn(node, init) {\n node.left = init;\n node.right = parseExpression();\n expect(_parenR);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"ForInStatement\");\n}\n\n/**\n * Parse a list of variable declarations.\n *\n * @param {!node_t} node\n * @param {boolean=} noIn\n */\nfunction parseVar(node, noIn) {\n node.declarations = [];\n node.kind = \"var\";\n for (;;) {\n var decl = startNode();\n decl.id = parseIdent();\n if (strict && isStrictBadIdWord(decl.id.name))\n raise(decl.id.start, \"Binding \" + decl.id.name + \" in strict mode\");\n decl.init = eat(_eq) ? parseExpression(true, noIn) : null;\n node.declarations.push(finishNode(decl, \"VariableDeclarator\"));\n if (!eat(_comma)) break;\n }\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply var the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n/**\n * Parse a full expression. The arguments are used to forbid comma\n * sequences (in argument lists, array literals, or object literals)\n * or the `in` operator (in for loops initalization expressions).\n *\n * @param {boolean=} noComma\n * @param {boolean=} noIn\n * @returns {!node_t}\n */\nfunction parseExpression(noComma, noIn) {\n var expr = parseMaybeAssign(noIn);\n if (!noComma && tokType === _comma) {\n var node = startNodeFrom(expr);\n node.expressions = [expr];\n while (eat(_comma)) node.expressions.push(parseMaybeAssign(noIn));\n return finishNode(node, \"SequenceExpression\");\n }\n return expr;\n}\n\n/**\n * Parse an assignment expression. This includes applications of\n * operators like `+=`.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseMaybeAssign(noIn) {\n var left = parseMaybeConditional(noIn);\n if (tokType.isAssign) {\n var node = startNodeFrom(left);\n node.operator = tokVal;\n node.left = left;\n next();\n node.right = parseMaybeAssign(noIn);\n checkLVal(left);\n return finishNode(node, \"AssignmentExpression\");\n }\n return left;\n}\n\n/**\n * Parse a ternary conditional (`?:`) operator.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseMaybeConditional(noIn) {\n var expr = parseExprOps(noIn);\n if (eat(_question)) {\n var node = startNodeFrom(expr);\n node.test = expr;\n node.consequent = parseExpression(true);\n expect(_colon);\n node.alternate = parseExpression(true, noIn);\n return finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n}\n\n/**\n * Start the precedence parser.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseExprOps(noIn) {\n return parseExprOp(parseMaybeUnary(), -1, noIn);\n}\n\n/**\n * Parse binary operators with the operator precedence parsing\n * algorithm. `left` is the left-hand side of the operator.\n * `minPrec` provides context that allows the function to stop and\n * defer further parser to one of its callers when it encounters an\n * operator that has a lower precedence than the set it is parsing.\n *\n * @param {!node_t} left\n * @param {number} minPrec\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseExprOp(left, minPrec, noIn) {\n var prec = tokType.binop;\n if (prec !== null && (!noIn || tokType !== _in)) {\n if (prec > minPrec) {\n var node = startNodeFrom(left);\n node.left = left;\n node.operator = tokVal;\n var op = tokType;\n next();\n node.right = parseExprOp(parseMaybeUnary(), prec, noIn);\n var exprNode = finishNode(\n node,\n op === _logicalOR || op === _logicalAND ? \"LogicalExpression\" : \"BinaryExpression\"\n );\n return parseExprOp(exprNode, minPrec, noIn);\n }\n }\n return left;\n}\n\n/**\n * Parse unary operators, both prefix and postfix.\n *\n * @returns {!node_t}\n */\nfunction parseMaybeUnary() {\n if (tokType.prefix) {\n var node = startNode();\n var update = tokType.isUpdate;\n node.operator = tokVal;\n node.prefix = true;\n tokRegexpAllowed = true;\n next();\n node.argument = parseMaybeUnary();\n if (update) checkLVal(node.argument);\n else if (strict && node.operator === \"delete\" && node.argument.type === \"Identifier\")\n raise(node.start, \"Deleting local variable in strict mode\");\n return finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n }\n var expr = parseExprSubscripts();\n while (tokType.postfix && !canInsertSemicolon()) {\n var node = startNodeFrom(expr);\n node.operator = tokVal;\n node.prefix = false;\n node.argument = expr;\n checkLVal(expr);\n next();\n expr = finishNode(node, \"UpdateExpression\");\n }\n return expr;\n}\n\n/**\n * Parse call, dot, and `[]`-subscript expressions.\n *\n * @returns {!node_t}\n */\nfunction parseExprSubscripts() {\n return parseSubscripts(parseExprAtom());\n}\n\n/**\n * @param {!node_t} base\n * @param {boolean=} noCalls\n * @returns {!node_t}\n */\nfunction parseSubscripts(base, noCalls) {\n var node;\n if (eat(_dot)) {\n node = startNodeFrom(base);\n node.object = base;\n node.property = parseIdent(true);\n node.computed = false;\n return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n }\n if (eat(_bracketL)) {\n node = startNodeFrom(base);\n node.object = base;\n node.property = parseExpression();\n node.computed = true;\n expect(_bracketR);\n return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n }\n if (!noCalls && eat(_parenL)) {\n node = startNodeFrom(base);\n node.callee = base;\n node.arguments = parseExprList(_parenR, false);\n return parseSubscripts(finishNode(node, \"CallExpression\"), noCalls);\n }\n return base;\n}\n\n/**\n * Parse an atomic expression — either a single token that is an expression,\n * an expression started by a keyword like `function` or `new`,\n * or an expression wrapped in punctuation like `()`, `[]`, or `{}`.\n *\n * @returns {!node_t}\n * @suppress {missingReturn}\n */\nfunction parseExprAtom() {\n var node;\n switch (tokType) {\n case _this:\n node = startNode();\n next();\n return finishNode(node, \"ThisExpression\");\n case _name:\n return parseIdent();\n case _num:\n case _string:\n case _regexp:\n node = startNode();\n node.value = tokVal;\n node.raw = input.slice(tokStart, tokEnd);\n next();\n return finishNode(node, \"Literal\");\n\n case _null:\n case _true:\n case _false:\n node = startNode();\n node.value = tokType.atomValue;\n node.raw = tokType.keyword;\n next();\n return finishNode(node, \"Literal\");\n\n case _parenL:\n var tokStartLoc1 = tokStartLoc;\n var tokStart1 = tokStart;\n next();\n var val = parseExpression();\n val.start = tokStart1;\n val.end = tokEnd;\n if (options.locations) {\n val.loc.start = tokStartLoc1;\n val.loc.end = tokEndLoc;\n }\n if (options.ranges) {\n val.range = [tokStart1, tokEnd];\n }\n expect(_parenR);\n return val;\n\n case _bracketL:\n node = startNode();\n next();\n node.elements = parseExprList(_bracketR, true, true);\n return finishNode(node, \"ArrayExpression\");\n\n case _braceL:\n return parseObj();\n\n case _function:\n node = startNode();\n next();\n return parseFunction(node, false);\n\n case _new:\n return parseNew();\n }\n unexpected();\n}\n\n/**\n * New's precedence is slightly tricky. It must allow its argument to be\n * a `[]` or dot subscript expression, but not a call — at least, not\n * without wrapping it in parentheses. Thus, it uses the noCalls argument\n * to parseSubscripts to prevent it from consuming the argument list.\n *\n * @returns {!node_t}\n */\nfunction parseNew() {\n var node = startNode();\n next();\n node.callee = parseSubscripts(parseExprAtom(), true);\n node.arguments = eat(_parenL) ? parseExprList(_parenR, false) : empty;\n return finishNode(node, \"NewExpression\");\n}\n\n/**\n * Parse an object literal.\n *\n * @returns {!node_t}\n */\nfunction parseObj() {\n var node = startNode();\n var first = true;\n var sawGetSet = false;\n node.properties = [];\n next();\n while (!eat(_braceR)) {\n if (!first) {\n expect(_comma);\n if (options.allowTrailingCommas && eat(_braceR)) {\n break;\n }\n } else {\n first = false;\n }\n\n var prop = { key: parsePropertyName() };\n var isGetSet = false;\n var kind;\n if (eat(_colon)) {\n prop.value = parseExpression(true);\n kind = prop.kind = \"init\";\n } else if (\n prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\")\n ) {\n isGetSet = sawGetSet = true;\n kind = prop.kind = prop.key.name;\n prop.key = parsePropertyName();\n if (tokType !== _parenL) unexpected();\n prop.value = parseFunction(startNode(), false);\n } else {\n unexpected();\n }\n\n // getters and setters are not allowed to clash — either with\n // each other or with an init property — and in strict mode,\n // init properties are also not allowed to be repeated.\n\n if (prop.key.type === \"Identifier\" && (strict || sawGetSet)) {\n for (var i = 0; i < node.properties.length; ++i) {\n var other = node.properties[i];\n if (other.key.name === prop.key.name) {\n var conflict =\n kind === other.kind ||\n (isGetSet && other.kind === \"init\") ||\n (kind === \"init\" && (other.kind === \"get\" || other.kind === \"set\"));\n if (conflict && !strict && kind === \"init\" && other.kind === \"init\") {\n conflict = false;\n }\n if (conflict) {\n raise(prop.key.start, \"Redefinition of property\");\n }\n }\n }\n }\n node.properties.push(prop);\n }\n return finishNode(node, \"ObjectExpression\");\n}\n\n/**\n * @returns {!node_t}\n */\nfunction parsePropertyName() {\n if (tokType === _num || tokType === _string) {\n return parseExprAtom();\n }\n return parseIdent(true);\n}\n\n/**\n * Parse a function declaration or literal (depending on the\n * `isStatement` parameter).\n *\n * @param {!node_t} node\n * @param {boolean} isStatement\n * @returns {!node_t}\n */\nfunction parseFunction(node, isStatement) {\n if (tokType === _name) {\n node.id = parseIdent();\n } else if (isStatement) {\n unexpected();\n } else {\n node.id = null;\n }\n node.params = [];\n var first = true;\n expect(_parenL);\n while (!eat(_parenR)) {\n if (!first) {\n expect(_comma);\n } else {\n first = false;\n }\n node.params.push(parseIdent());\n }\n\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldInFunc = inFunction;\n var oldLabels = labels;\n inFunction = true;\n labels = [];\n node.body = parseBlock(true);\n inFunction = oldInFunc;\n labels = oldLabels;\n\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (strict || (node.body.body.length && isUseStrict(node.body.body[0]))) {\n for (var i = node.id ? -1 : 0; i < node.params.length; ++i) {\n var id = i < 0 ? node.id : node.params[i];\n if (isStrictReservedWord(id.name) || isStrictBadIdWord(id.name)) {\n raise(id.start, \"Defining '\" + id.name + \"' in strict mode\");\n }\n if (i >= 0) {\n for (var j = 0; j < i; ++j) {\n if (id.name === node.params[j].name) {\n raise(id.start, \"Argument name clash in strict mode\");\n }\n }\n }\n }\n }\n\n return finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n}\n\n/**\n * Parses a comma-separated list of expressions, and returns them as\n * an array. `close` is the token type that ends the list, and\n * `allowEmpty` can be turned on to allow subsequent commas with\n * nothing in between them to be parsed as `null` (which is needed\n * for array literals).\n *\n * @param {!Object} close\n * @param {boolean} allowTrailingComma\n * @param {boolean=} allowEmpty\n * @returns {!Array<!node_t>}\n */\nfunction parseExprList(close, allowTrailingComma, allowEmpty) {\n var elts = [];\n var first = true;\n while (!eat(close)) {\n if (!first) {\n expect(_comma);\n if (allowTrailingComma && options.allowTrailingCommas && eat(close)) {\n break;\n }\n } else {\n first = false;\n }\n\n elts.push(allowEmpty && tokType === _comma ? null : parseExpression(true));\n }\n return elts;\n}\n\n/**\n * Parse the next token as an identifier. If `liberal` is true (used\n * when parsing properties), it will also convert keywords into\n * identifiers.\n *\n * @param {boolean=} liberal\n * @returns {!node_t}\n */\nfunction parseIdent(liberal) {\n var node = startNode();\n if (liberal && options.forbidReserved === \"everywhere\") {\n liberal = false;\n }\n if (tokType === _name) {\n if (\n !liberal &&\n ((options.forbidReserved && isReservedWord5(tokVal)) ||\n (strict && isStrictReservedWord(tokVal))) &&\n input.slice(tokStart, tokEnd).indexOf(\"\\\\\") === -1\n ) {\n raise(tokStart, \"The keyword '\" + tokVal + \"' is reserved\");\n }\n node.name = tokVal;\n } else if (liberal && tokType.keyword) {\n node.name = tokType.keyword;\n } else {\n unexpected();\n }\n tokRegexpAllowed = false;\n next();\n return finishNode(node, \"Identifier\");\n}\n\nexport { version, parse };\n",
128
- "/**\n * @license\n * Copyright 2013 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Interpreting JavaScript in JavaScript.\n * @author fraser@google.com (Neil Fraser)\n */\nimport * as acorn from \"./acorn\";\n\n/**\n * Create a new interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n * @param {Function=} opt_initFunc Optional initialization function. Used to\n * define APIs. When called it is passed the interpreter object and the\n * global scope object.\n * @type Class\n */\nvar Interpreter = function (code, opt_initFunc) {\n if (typeof code === \"string\") {\n code = this.parse_(code, \"code\");\n }\n // Get a handle on Acorn's node_t object.\n var nodeConstructor = code.constructor;\n this.newNode = function () {\n return new nodeConstructor({ options: {} });\n };\n // Clone the root 'Program' node so that the AST may be modified.\n var ast = this.newNode();\n for (var prop in code) {\n ast[prop] = prop === \"body\" ? code[prop].slice() : code[prop];\n }\n this.ast = ast;\n /**\n * Sorted array of setTimeout/setInterval tasks waiting to execute.\n */\n this.tasks = [];\n this.initFunc_ = opt_initFunc;\n /**\n * True if the interpreter is paused while waiting for an async function.\n */\n this.paused_ = false;\n this.polyfills_ = [];\n // Unique identifier for native functions. Used in serialization.\n this.functionCounter_ = 0;\n // Map node types to our step function names; a property lookup is faster\n // than string concatenation with \"step\" prefix.\n this.stepFunctions_ = Object.create(null);\n var stepMatch = /^step([A-Z]\\w*)$/;\n var m;\n for (var methodName in this) {\n if (typeof this[methodName] === \"function\" && (m = methodName.match(stepMatch))) {\n this.stepFunctions_[m[1]] = this[methodName].bind(this);\n }\n }\n // Create and initialize the global scope.\n this.globalScope = this.createScope(this.ast, null);\n this.globalObject = this.globalScope.object;\n // Run the polyfills.\n this.ast = this.parse_(this.polyfills_.join(\"\\n\"), \"polyfills\");\n this.polyfills_ = undefined; // Allow polyfill strings to garbage collect.\n Interpreter.stripLocations_(this.ast, undefined, undefined);\n var state = new Interpreter.State(this.ast, this.globalScope);\n state.done = false;\n this.stateStack = [state];\n this.run();\n this.value = undefined;\n // Point at the main program.\n this.ast = ast;\n state = new Interpreter.State(this.ast, this.globalScope);\n state.done = false;\n this.stateStack.length = 0;\n this.stateStack[0] = state;\n};\n\n/**\n * Completion Value Types.\n * @enum {number}\n */\nInterpreter.Completion = {\n NORMAL: 0,\n BREAK: 1,\n CONTINUE: 2,\n RETURN: 3,\n THROW: 4,\n};\n\n/**\n * Interpreter status values.\n * @enum {number}\n */\nInterpreter.Status = {\n DONE: 0,\n STEP: 1,\n TASK: 2,\n ASYNC: 3,\n};\n\n/**\n * @const {!Object} Configuration used for all Acorn parsing.\n */\nInterpreter.PARSE_OPTIONS = {\n locations: true,\n ecmaVersion: 5, // Needed in the event a version > 0.5.0 of Acorn is used.\n};\n\n/**\n * Property descriptor of readonly properties.\n */\nInterpreter.READONLY_DESCRIPTOR = {\n configurable: true,\n enumerable: true,\n writable: false,\n};\n\n/**\n * Property descriptor of non-enumerable properties.\n */\nInterpreter.NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: true,\n};\n\n/**\n * Property descriptor of readonly, non-enumerable properties.\n */\nInterpreter.READONLY_NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: false,\n};\n\n/**\n * Property descriptor of non-configurable, readonly, non-enumerable properties.\n * E.g. NaN, Infinity.\n */\nInterpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR = {\n configurable: false,\n enumerable: false,\n writable: false,\n};\n\n/**\n * Property descriptor of variables.\n */\nInterpreter.VARIABLE_DESCRIPTOR = {\n configurable: false,\n enumerable: true,\n writable: true,\n};\n\n/**\n * Unique symbol for indicating that a step has encountered an error, has\n * added it to the stack, and will be thrown within the user's program.\n * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored.\n */\nInterpreter.STEP_ERROR = { STEP_ERROR: true };\n\n/**\n * Unique symbol for indicating that a reference is a variable on the scope,\n * not an object property.\n */\nInterpreter.SCOPE_REFERENCE = { SCOPE_REFERENCE: true };\n\n/**\n * Unique symbol for indicating, when used as the value of the value\n * parameter in calls to setProperty and friends, that the value\n * should be taken from the property descriptor instead.\n */\nInterpreter.VALUE_IN_DESCRIPTOR = /** @type {!Interpreter.Value} */ ({\n VALUE_IN_DESCRIPTOR: true,\n});\n\n/**\n * Unique symbol for indicating that a RegExp timeout has occurred in a VM.\n */\nInterpreter.REGEXP_TIMEOUT = { REGEXP_TIMEOUT: true };\n\n/**\n * For cycle detection in array to string and error conversion;\n * see spec bug github.com/tc39/ecma262/issues/289\n * Since this is for atomic actions only, it can be a class property.\n */\nInterpreter.toStringCycles_ = [];\n\n/**\n * Node's vm module, if loaded and required.\n * @type {Object}\n */\nInterpreter.vm = null;\n\n/**\n * Currently executing interpreter. Needed so Interpreter.Object instances\n * can know their environment.\n * @type {Interpreter}\n */\nInterpreter.currentInterpreter_ = null;\n\n/**\n * The global object (`window` in a browser, `global` in node.js) is usually\n * `globalThis`, but older systems use `this`.\n */\nInterpreter.nativeGlobal = typeof globalThis === \"undefined\" ? this : globalThis;\n\n/**\n * Code for executing regular expressions in a thread.\n */\nInterpreter.WORKER_CODE = [\n \"onmessage = function(e) {\",\n \"var result;\",\n \"var data = e.data;\",\n \"switch (data[0]) {\",\n \"case 'split':\",\n // ['split', string, separator, limit]\n \"result = data[1].split(data[2], data[3]);\",\n \"break;\",\n \"case 'match':\",\n // ['match', string, regexp]\n \"result = data[1].match(data[2]);\",\n \"break;\",\n \"case 'search':\",\n // ['search', string, regexp]\n \"result = data[1].search(data[2]);\",\n \"break;\",\n \"case 'replace':\",\n // ['replace', string, regexp, newSubstr]\n \"result = data[1].replace(data[2], data[3]);\",\n \"break;\",\n \"case 'exec':\",\n // ['exec', regexp, lastIndex, string]\n \"var regexp = data[1];\",\n \"regexp.lastIndex = data[2];\",\n \"result = [regexp.exec(data[3]), data[1].lastIndex];\",\n \"break;\",\n \"default:\",\n \"throw Error('Unknown RegExp operation: ' + data[0]);\",\n \"}\",\n \"postMessage(result);\",\n \"close();\",\n \"};\",\n];\n\n/**\n * Is a value a legal integer for an array length?\n * @param {Interpreter.Value} x Value to check.\n * @returns {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayLength = function (x) {\n var n = x >>> 0;\n // Array length must be between 0 and 2^32-1 (inclusive).\n return n === Number(x) ? n : NaN;\n};\n\n/**\n * Is a value a legal integer for an array index?\n * @param {Interpreter.Value} x Value to check.\n * @returns {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayIndex = function (x) {\n var n = x >>> 0;\n // Array index cannot be 2^32-1, otherwise length would be 2^32.\n // 0xffffffff is 2^32-1.\n return String(n) === String(x) && n !== 0xffffffff ? n : NaN;\n};\n\n/**\n * Remove start and end values from AST, or set start and end values to a\n * constant value. Used to remove highlighting from polyfills and to set\n * highlighting in an eval to cover the entire eval expression.\n * @param {!Object} node AST node.\n * @param {number=} start Starting character of all nodes, or undefined.\n * @param {number=} end Ending character of all nodes, or undefined.\n * @private\n */\nInterpreter.stripLocations_ = function (node, start, end) {\n if (start) {\n node.start = start;\n } else {\n delete node.start;\n }\n if (end) {\n node.end = end;\n } else {\n delete node.end;\n }\n for (var name in node) {\n if (name !== \"loc\" && node.hasOwnProperty(name)) {\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n Interpreter.stripLocations_(/** @type {!Object} */ (prop), start, end);\n }\n }\n }\n};\n\n/**\n * Some pathological regular expressions can take geometric time.\n * Regular expressions are handled in one of three ways:\n * 0 - throw as invalid.\n * 1 - execute natively (risk of unresponsive program).\n * 2 - execute in separate thread (not supported by IE 9).\n */\nInterpreter.prototype[\"REGEXP_MODE\"] = 2;\n\n/**\n * If REGEXP_MODE = 2, the length of time (in ms) to allow a RegExp\n * thread to execute before terminating it.\n */\nInterpreter.prototype[\"REGEXP_THREAD_TIMEOUT\"] = 1000;\n\n/**\n * Length of time (in ms) to allow a polyfill to run before ending step.\n * If set to 0, polyfills will execute step by step.\n * If set to 1000, polyfills will run for up to a second per step\n * (execution will resume in the polyfill in the next step).\n * If set to Infinity, polyfills will run to completion in a single step.\n */\nInterpreter.prototype[\"POLYFILL_TIMEOUT\"] = 1000;\n\n/**\n * Flag indicating that a getter function needs to be called immediately.\n * @private\n */\nInterpreter.prototype.getterStep_ = false;\n\n/**\n * Flag indicating that a setter function needs to be called immediately.\n * @private\n */\nInterpreter.prototype.setterStep_ = false;\n\n/**\n * Number of code chunks appended to the interpreter.\n * @private\n */\nInterpreter.prototype.appendCodeNumber_ = 0;\n\n/**\n * Number of parsed tasks.\n * @private\n */\nInterpreter.prototype.taskCodeNumber_ = 0;\n\n/**\n * Parse JavaScript code into an AST using Acorn.\n * @param {string} code Raw JavaScript text.\n * @param {string} sourceFile Name of filename (for stack trace).\n * @returns {!Object} AST.\n * @private\n */\nInterpreter.prototype.parse_ = function (code, sourceFile) {\n // Create a new options object, since Acorn will modify this object.\n // Inheritance can't be used since Acorn uses hasOwnProperty.\n // Object.assign can't be used since that's ES6.\n var options = {};\n for (var name in Interpreter.PARSE_OPTIONS) {\n options[name] = Interpreter.PARSE_OPTIONS[name];\n }\n options.sourceFile = sourceFile;\n return acorn.parse(code, options);\n};\n\n/**\n * Add more code to the interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n */\nInterpreter.prototype.appendCode = function (code) {\n var state = this.stateStack[0];\n if (!state || state.node.type !== \"Program\") {\n throw Error(\"Expecting original AST to start with a Program node\");\n }\n if (typeof code === \"string\") {\n code = this.parse_(code, \"appendCode\" + this.appendCodeNumber_++);\n }\n if (!code || code.type !== \"Program\") {\n throw Error(\"Expecting new AST to start with a Program node\");\n }\n this.populateScope_(code, state.scope);\n // Append the new program to the old one.\n Array.prototype.push.apply(state.node.body, code.body);\n state.node.body.variableCache_ = null;\n state.done = false;\n};\n\n/**\n * Execute one step of the interpreter.\n * @returns {boolean} True if a step was executed, false if no more instructions.\n */\nInterpreter.prototype.step = function () {\n var stack = this.stateStack;\n var endTime;\n do {\n var state = stack[stack.length - 1];\n if (this.paused_) {\n // Blocked by an asynchronous function.\n return true;\n } else if (!state || (state.node.type === \"Program\" && state.done)) {\n if (!this.tasks.length) {\n // Main program complete and no queued tasks. We're done!\n return false;\n }\n state = this.nextTask_();\n if (!state) {\n // Main program complete, queued tasks, but nothing to run right now.\n return true;\n }\n // Found a queued task, execute it.\n }\n var node = state.node;\n // Record the interpreter in a global property so calls to toString/valueOf\n // can execute in the proper context.\n var oldInterpreterValue = Interpreter.currentInterpreter_;\n Interpreter.currentInterpreter_ = this;\n try {\n var nextState = this.stepFunctions_[node.type](stack, state, node);\n } catch (e) {\n // Eat any step errors. They have been thrown on the stack.\n if (e !== Interpreter.STEP_ERROR) {\n // This is a real error, either in the JS-Interpreter, or an uncaught\n // error in the interpreted code. Rethrow.\n if (this.value !== e) {\n // Uh oh. Internal error in the JS-Interpreter.\n this.value = undefined;\n }\n throw e;\n }\n } finally {\n // Restore to previous value (probably null, maybe nested toString calls).\n Interpreter.currentInterpreter_ = oldInterpreterValue;\n }\n if (nextState) {\n stack.push(nextState);\n }\n if (this.getterStep_) {\n // Getter from this step was not handled.\n this.value = undefined;\n throw Error(\"Getter not supported in this context\");\n }\n if (this.setterStep_) {\n // Setter from this step was not handled.\n this.value = undefined;\n throw Error(\"Setter not supported in this context\");\n }\n // This may be polyfill code. Keep executing until we arrive at user code.\n if (!endTime && !node.end) {\n // Ideally this would be defined at the top of the function, but that\n // wastes time if the step isn't a polyfill.\n endTime = Date.now() + this[\"POLYFILL_TIMEOUT\"];\n }\n } while (!node.end && endTime > Date.now());\n return true;\n};\n\n/**\n * Execute the interpreter to program completion. Vulnerable to infinite loops.\n * @returns {boolean} True if a execution is asynchronously blocked,\n * false if no more instructions.\n */\nInterpreter.prototype.run = function () {\n while (!this.paused_ && this.step()) {}\n return this.paused_;\n};\n\n/**\n * Current status of the interpreter.\n * @returns {Interpreter.Status} One of DONE, STEP, TASK, or ASYNC.\n */\nInterpreter.prototype.getStatus = function () {\n if (this.paused_) {\n return Interpreter.Status[\"ASYNC\"];\n }\n var stack = this.stateStack;\n var state = stack[stack.length - 1];\n if (state && (state.node.type !== \"Program\" || !state.done)) {\n // There's a step ready to execute.\n return Interpreter.Status[\"STEP\"];\n }\n var task = this.tasks[0];\n if (task) {\n if (task.time > Date.now()) {\n // There's a pending task, but it's not ready.\n return Interpreter.Status[\"TASK\"];\n }\n // There's a task ready to execute.\n return Interpreter.Status[\"STEP\"];\n }\n return Interpreter.Status[\"DONE\"];\n};\n\n/**\n * Initialize the global object with built-in properties and functions.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initGlobal = function (globalObject) {\n // Initialize uneditable global properties.\n this.setProperty(\n globalObject,\n \"NaN\",\n NaN,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"Infinity\",\n Infinity,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"undefined\",\n undefined,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"window\", globalObject, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(\n globalObject,\n \"this\",\n globalObject,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"self\", globalObject); // Editable.\n\n // Create the objects which will become Object.prototype and\n // Function.prototype, which are needed to bootstrap everything else.\n this.OBJECT_PROTO = new Interpreter.Object(null);\n this.FUNCTION_PROTO = new Interpreter.Object(this.OBJECT_PROTO);\n // Initialize global objects.\n this.initFunction(globalObject);\n this.initObject(globalObject);\n // Unable to set globalObject's parent prior (OBJECT did not exist).\n // Note that in a browser this would be `Window`, whereas in Node.js it would\n // be `Object`. This interpreter is closer to Node in that it has no DOM.\n globalObject.proto = this.OBJECT_PROTO;\n this.setProperty(globalObject, \"constructor\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.initArray(globalObject);\n this.initString(globalObject);\n this.initBoolean(globalObject);\n this.initNumber(globalObject);\n this.initDate(globalObject);\n this.initRegExp(globalObject);\n this.initError(globalObject);\n this.initMath(globalObject);\n this.initJSON(globalObject);\n\n // Initialize global functions.\n var thisInterpreter = this;\n var wrapper;\n var func = this.createNativeFunction(function (_x) {\n throw EvalError(\"Can't happen\");\n }, false);\n func.eval = true;\n this.setProperty(globalObject, \"eval\", func, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n this.setProperty(\n globalObject,\n \"parseInt\",\n this.createNativeFunction(parseInt, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"parseFloat\",\n this.createNativeFunction(parseFloat, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n globalObject,\n \"isNaN\",\n this.createNativeFunction(isNaN, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n globalObject,\n \"isFinite\",\n this.createNativeFunction(isFinite, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n var strFunctions = [\n [escape, \"escape\"],\n [unescape, \"unescape\"],\n [decodeURI, \"decodeURI\"],\n [decodeURIComponent, \"decodeURIComponent\"],\n [encodeURI, \"encodeURI\"],\n [encodeURIComponent, \"encodeURIComponent\"],\n ];\n for (var i = 0; i < strFunctions.length; i++) {\n wrapper = (function (nativeFunc) {\n return function (str) {\n try {\n return nativeFunc(str);\n } catch (e) {\n // decodeURI('%xy') will throw an error. Catch and rethrow.\n thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message);\n }\n };\n })(strFunctions[i][0]);\n this.setProperty(\n globalObject,\n strFunctions[i][1],\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n\n wrapper = function setTimeout(var_args) {\n return thisInterpreter.createTask_(false, arguments);\n };\n this.setProperty(\n globalObject,\n \"setTimeout\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function setInterval(var_args) {\n return thisInterpreter.createTask_(true, arguments);\n };\n this.setProperty(\n globalObject,\n \"setInterval\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function clearTimeout(pid) {\n thisInterpreter.deleteTask_(pid);\n };\n this.setProperty(\n globalObject,\n \"clearTimeout\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function clearInterval(pid) {\n thisInterpreter.deleteTask_(pid);\n };\n this.setProperty(\n globalObject,\n \"clearInterval\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Preserve public properties from being pruned/renamed by JS compilers.\n // Add others as needed.\n this[\"OBJECT\"] = this.OBJECT;\n this[\"OBJECT_PROTO\"] = this.OBJECT_PROTO;\n this[\"FUNCTION\"] = this.FUNCTION;\n this[\"FUNCTION_PROTO\"] = this.FUNCTION_PROTO;\n this[\"ARRAY\"] = this.ARRAY;\n this[\"ARRAY_PROTO\"] = this.ARRAY_PROTO;\n this[\"REGEXP\"] = this.REGEXP;\n this[\"REGEXP_PROTO\"] = this.REGEXP_PROTO;\n this[\"DATE\"] = this.DATE;\n this[\"DATE_PROTO\"] = this.DATE_PROTO;\n\n // Run any user-provided initialization.\n if (this.initFunc_) {\n this.initFunc_(this, globalObject);\n }\n};\n\n/**\n * Number of functions created by the interpreter.\n * @private\n */\nInterpreter.prototype.functionCodeNumber_ = 0;\n\n/**\n * Initialize the Function class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initFunction = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n var identifierRegexp = /^[A-Za-z_$][\\w$]*$/;\n // Function constructor.\n wrapper = function Function(var_args) {\n if (arguments.length) {\n var code = String(arguments[arguments.length - 1]);\n } else {\n var code = \"\";\n }\n var argsStr = Array.prototype.slice.call(arguments, 0, -1).join(\",\").trim();\n if (argsStr) {\n var args = argsStr.split(/\\s*,\\s*/);\n for (var i = 0; i < args.length; i++) {\n var name = args[i];\n if (!identifierRegexp.test(name)) {\n thisInterpreter.throwException(\n thisInterpreter.SYNTAX_ERROR,\n \"Invalid function argument: \" + name\n );\n }\n }\n argsStr = args.join(\", \");\n }\n // Acorn needs to parse code in the context of a function or else `return`\n // statements will be syntax errors.\n try {\n var ast = thisInterpreter.parse_(\n \"(function(\" + argsStr + \") {\" + code + \"})\",\n \"function\" + thisInterpreter.functionCodeNumber_++\n );\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n if (ast.body.length !== 1) {\n // Function('a', 'return a + 6;}; {alert(1);');\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code in function body\");\n }\n var node = ast.body[0].expression;\n // Note that if this constructor is called as `new Function()` the function\n // object created by stepCallExpression and assigned to `this` is discarded.\n // Interestingly, the scope for constructed functions is the global scope,\n // even if they were constructed in some other scope.\n return thisInterpreter.createFunction(node, thisInterpreter.globalScope, \"anonymous\");\n };\n this.FUNCTION = this.createNativeFunction(wrapper, true);\n\n this.setProperty(globalObject, \"Function\", this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR);\n // Throw away the created prototype and use the root prototype.\n this.setProperty(\n this.FUNCTION,\n \"prototype\",\n this.FUNCTION_PROTO,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Configure Function.prototype.\n this.setProperty(\n this.FUNCTION_PROTO,\n \"constructor\",\n this.FUNCTION,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.FUNCTION_PROTO.nativeFunc = function () {};\n this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++;\n this.FUNCTION_PROTO.illegalConstructor = true;\n this.setProperty(this.FUNCTION_PROTO, \"length\", 0, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n this.FUNCTION_PROTO.class = \"Function\";\n\n wrapper = function apply(thisArg, args) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current CallExpression state to apply a different function.\n state.func_ = this;\n // Assign the `this` object.\n state.funcThis_ = thisArg;\n // Bind any provided arguments.\n state.arguments_ = [];\n if (args !== null && args !== undefined) {\n if (args instanceof Interpreter.Object) {\n state.arguments_ = thisInterpreter.arrayPseudoToNative(args);\n } else {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"CreateListFromArrayLike called on non-object\"\n );\n }\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"apply\", wrapper);\n\n wrapper = function call(thisArg /*, var_args */) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current CallExpression state to call a different function.\n state.func_ = this;\n // Assign the `this` object.\n state.funcThis_ = thisArg;\n // Bind any provided arguments.\n state.arguments_ = [];\n for (var i = 1; i < arguments.length; i++) {\n state.arguments_.push(arguments[i]);\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"call\", wrapper);\n\n this.polyfills_.push(\n // Polyfill copied from:\n // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind\n \"Object.defineProperty(Function.prototype, 'bind',\",\n \"{configurable: true, writable: true, value:\",\n \"function bind(oThis) {\",\n \"if (typeof this !== 'function') {\",\n \"throw TypeError('What is trying to be bound is not callable');\",\n \"}\",\n \"var aArgs = Array.prototype.slice.call(arguments, 1),\",\n \"fToBind = this,\",\n \"fNOP = function() {},\",\n \"fBound = function() {\",\n \"return fToBind.apply(this instanceof fNOP\",\n \"? this\",\n \": oThis,\",\n \"aArgs.concat(Array.prototype.slice.call(arguments)));\",\n \"};\",\n \"if (this.prototype) {\",\n \"fNOP.prototype = this.prototype;\",\n \"}\",\n \"fBound.prototype = new fNOP();\",\n \"return fBound;\",\n \"}\",\n \"});\",\n \"\"\n );\n\n // Function has no parent to inherit from, so it needs its own mandatory\n // toString and valueOf functions.\n wrapper = function toString() {\n return String(this);\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"toString\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"toString\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n wrapper = function valueOf() {\n return this.valueOf();\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"valueOf\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"valueOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Initialize the Object class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initObject = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Object constructor.\n wrapper = function Object(value) {\n if (value === undefined || value === null) {\n // Create a new object.\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Object()`.\n return this;\n } else {\n // Called as `Object()`.\n return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO);\n }\n }\n if (!(value instanceof Interpreter.Object)) {\n // Wrap the value as an object.\n var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value));\n box.data = value;\n return box;\n }\n // Return the provided object.\n return value;\n };\n this.OBJECT = this.createNativeFunction(wrapper, true);\n // Throw away the created prototype and use the root prototype.\n this.setProperty(\n this.OBJECT,\n \"prototype\",\n this.OBJECT_PROTO,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.OBJECT_PROTO,\n \"constructor\",\n this.OBJECT,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"Object\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n /**\n * Checks if the provided value is null or undefined.\n * If so, then throw an error in the call stack.\n * @param {Interpreter.Value} value Value to check.\n */\n var throwIfNullUndefined = function (value) {\n if (value === undefined || value === null) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Cannot convert '\" + value + \"' to object\"\n );\n }\n };\n\n // Static methods on Object.\n wrapper = function getOwnPropertyNames(obj) {\n throwIfNullUndefined(obj);\n var props = obj instanceof Interpreter.Object ? obj.properties : obj;\n return thisInterpreter.arrayNativeToPseudo(Object.getOwnPropertyNames(props));\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyNames\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function keys(obj) {\n throwIfNullUndefined(obj);\n if (obj instanceof Interpreter.Object) {\n obj = obj.properties;\n }\n return thisInterpreter.arrayNativeToPseudo(Object.keys(obj));\n };\n this.setProperty(\n this.OBJECT,\n \"keys\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function create_(proto) {\n // Support for the second argument is the responsibility of a polyfill.\n if (proto === null) {\n return thisInterpreter.createObjectProto(null);\n }\n if (!(proto instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object prototype may only be an Object or null, not \" + proto\n );\n }\n return thisInterpreter.createObjectProto(proto);\n };\n this.setProperty(\n this.OBJECT,\n \"create\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Add a polyfill to handle create's second argument.\n this.polyfills_.push(\n \"(function() {\",\n \"var create_ = Object.create;\",\n \"Object.create = function create(proto, props) {\",\n \"var obj = create_(proto);\",\n \"props && Object.defineProperties(obj, props);\",\n \"return obj;\",\n \"};\",\n \"})();\",\n \"\"\n );\n\n wrapper = function defineProperty(obj, prop, descriptor) {\n prop = String(prop);\n if (!(obj instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object.defineProperty called on non-object: \" + obj\n );\n }\n if (!(descriptor instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Property description must be an object\"\n );\n }\n if (obj.preventExtensions && !(prop in obj.properties)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Can't define property '\" + prop + \"', object is not extensible\"\n );\n }\n // The polyfill guarantees no inheritance and no getter functions.\n // Therefore the descriptor properties map is the native object needed.\n thisInterpreter.setProperty(obj, prop, Interpreter.VALUE_IN_DESCRIPTOR, descriptor.properties);\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"defineProperty\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.polyfills_.push(\n // Flatten the descriptor to remove any inheritance or getter functions.\n \"(function() {\",\n \"var defineProperty_ = Object.defineProperty;\",\n \"Object.defineProperty = function defineProperty(obj, prop, d1) {\",\n \"var d2 = {};\",\n \"if ('configurable' in d1) d2.configurable = d1.configurable;\",\n \"if ('enumerable' in d1) d2.enumerable = d1.enumerable;\",\n \"if ('writable' in d1) d2.writable = d1.writable;\",\n \"if ('value' in d1) d2.value = d1.value;\",\n \"if ('get' in d1) d2.get = d1.get;\",\n \"if ('set' in d1) d2.set = d1.set;\",\n \"return defineProperty_(obj, prop, d2);\",\n \"};\",\n \"})();\",\n\n \"Object.defineProperty(Object, 'defineProperties',\",\n \"{configurable: true, writable: true, value:\",\n \"function defineProperties(obj, props) {\",\n \"var keys = Object.keys(props);\",\n \"for (var i = 0; i < keys.length; i++) {\",\n \"Object.defineProperty(obj, keys[i], props[keys[i]]);\",\n \"}\",\n \"return obj;\",\n \"}\",\n \"});\",\n \"\"\n );\n\n wrapper = function getOwnPropertyDescriptor(obj, prop) {\n if (!(obj instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object.getOwnPropertyDescriptor called on non-object: \" + obj\n );\n }\n prop = String(prop);\n if (!(prop in obj.properties)) {\n return undefined;\n }\n var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop);\n var getter = obj.getter[prop];\n var setter = obj.setter[prop];\n\n var pseudoDescriptor = thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO);\n if (getter || setter) {\n thisInterpreter.setProperty(pseudoDescriptor, \"get\", getter);\n thisInterpreter.setProperty(pseudoDescriptor, \"set\", setter);\n } else {\n thisInterpreter.setProperty(\n pseudoDescriptor,\n \"value\",\n /** @type {!Interpreter.Value} */ (descriptor[\"value\"])\n );\n thisInterpreter.setProperty(pseudoDescriptor, \"writable\", descriptor[\"writable\"]);\n }\n thisInterpreter.setProperty(pseudoDescriptor, \"configurable\", descriptor[\"configurable\"]);\n thisInterpreter.setProperty(pseudoDescriptor, \"enumerable\", descriptor[\"enumerable\"]);\n return pseudoDescriptor;\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyDescriptor\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function getPrototypeOf(obj) {\n throwIfNullUndefined(obj);\n return thisInterpreter.getPrototype(obj);\n };\n this.setProperty(\n this.OBJECT,\n \"getPrototypeOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function isExtensible(obj) {\n return Boolean(obj) && !obj.preventExtensions;\n };\n this.setProperty(\n this.OBJECT,\n \"isExtensible\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function preventExtensions(obj) {\n if (obj instanceof Interpreter.Object) {\n obj.preventExtensions = true;\n }\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"preventExtensions\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Object.\n this.setNativeFunctionPrototype(this.OBJECT, \"toString\", Interpreter.Object.prototype.toString);\n this.setNativeFunctionPrototype(\n this.OBJECT,\n \"toLocaleString\",\n Interpreter.Object.prototype.toString\n );\n this.setNativeFunctionPrototype(this.OBJECT, \"valueOf\", Interpreter.Object.prototype.valueOf);\n\n wrapper = function hasOwnProperty(prop) {\n throwIfNullUndefined(this);\n if (this instanceof Interpreter.Object) {\n return String(prop) in this.properties;\n }\n // Primitive.\n return this.hasOwnProperty(prop);\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"hasOwnProperty\", wrapper);\n\n wrapper = function propertyIsEnumerable(prop) {\n throwIfNullUndefined(this);\n if (this instanceof Interpreter.Object) {\n return Object.prototype.propertyIsEnumerable.call(this.properties, prop);\n }\n // Primitive.\n return this.propertyIsEnumerable(prop);\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"propertyIsEnumerable\", wrapper);\n\n wrapper = function isPrototypeOf(obj) {\n while (true) {\n // Note, circular loops shouldn't be possible.\n obj = thisInterpreter.getPrototype(obj);\n if (!obj) {\n // No parent; reached the top.\n return false;\n }\n if (obj === this) {\n return true;\n }\n }\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"isPrototypeOf\", wrapper);\n};\n\n/**\n * Initialize the Array class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initArray = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Array constructor.\n wrapper = function Array(var_args) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Array()`.\n var newArray = this;\n } else {\n // Called as `Array()`.\n var newArray = thisInterpreter.createArray();\n }\n var first = arguments[0];\n if (arguments.length === 1 && typeof first === \"number\") {\n if (isNaN(Interpreter.legalArrayLength(first))) {\n thisInterpreter.throwException(\n thisInterpreter.RANGE_ERROR,\n \"Invalid array length: \" + first\n );\n }\n newArray.properties.length = first;\n } else {\n for (var i = 0; i < arguments.length; i++) {\n newArray.properties[i] = arguments[i];\n }\n newArray.properties.length = i;\n }\n return newArray;\n };\n this.ARRAY = this.createNativeFunction(wrapper, true);\n this.ARRAY_PROTO = this.ARRAY.properties[\"prototype\"];\n this.setProperty(globalObject, \"Array\", this.ARRAY, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on Array.\n wrapper = function isArray(obj) {\n return obj && obj.class === \"Array\";\n };\n this.setProperty(\n this.ARRAY,\n \"isArray\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Array.\n this.setProperty(this.ARRAY_PROTO, \"length\", 0, {\n configurable: false,\n enumerable: false,\n writable: true,\n });\n this.ARRAY_PROTO.class = \"Array\";\n\n this.polyfills_.push(\n \"(function() {\",\n \"function createArrayMethod_(f) {\",\n \"Object.defineProperty(Array.prototype, f.name,\",\n \"{configurable: true, writable: true, value: f});\",\n \"}\",\n\n \"createArrayMethod_(\",\n \"function pop() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"o.length = 0;\",\n \"return undefined;\",\n \"}\",\n \"len--;\",\n \"var x = o[len];\",\n \"delete o[len];\", // Needed for non-arrays.\n \"o.length = len;\",\n \"return x;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function push(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"for (var i = 0; i < arguments.length; i++) {\",\n \"o[len] = arguments[i];\",\n \"len++;\",\n \"}\",\n \"o.length = len;\",\n \"return len;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function shift() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"o.length = 0;\",\n \"return undefined;\",\n \"}\",\n \"var value = o[0];\",\n \"for (var i = 0; i < len - 1; i++) {\",\n \"if ((i + 1) in o) {\",\n \"o[i] = o[i + 1];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n \"delete o[i];\", // Needed for non-arrays.\n \"o.length = len - 1;\",\n \"return value;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function unshift(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"len = 0;\",\n \"}\",\n \"for (var i = len - 1; i >= 0; i--) {\",\n \"if (i in o) {\",\n \"o[i + arguments.length] = o[i];\",\n \"} else {\",\n \"delete o[i + arguments.length];\",\n \"}\",\n \"}\",\n \"for (var i = 0; i < arguments.length; i++) {\",\n \"o[i] = arguments[i];\",\n \"}\",\n \"return (o.length = len + arguments.length);\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function reverse() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 2) {\",\n \"return o;\", // Not an array, or too short to reverse.\n \"}\",\n \"for (var i = 0; i < len / 2 - 0.5; i++) {\",\n \"var x = o[i];\",\n \"var hasX = i in o;\",\n \"if ((len - i - 1) in o) {\",\n \"o[i] = o[len - i - 1];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"if (hasX) {\",\n \"o[len - i - 1] = x;\",\n \"} else {\",\n \"delete o[len - i - 1];\",\n \"}\",\n \"}\",\n \"return o;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function indexOf(searchElement, fromIndex) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var n = fromIndex | 0;\",\n \"if (!len || n >= len) {\",\n \"return -1;\",\n \"}\",\n \"var i = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\",\n \"while (i < len) {\",\n \"if (i in o && o[i] === searchElement) {\",\n \"return i;\",\n \"}\",\n \"i++;\",\n \"}\",\n \"return -1;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function lastIndexOf(searchElement, fromIndex) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len) {\",\n \"return -1;\",\n \"}\",\n \"var n = len - 1;\",\n \"if (arguments.length > 1) {\",\n \"n = fromIndex | 0;\",\n \"if (n) {\",\n \"n = (n > 0 || -1) * Math.floor(Math.abs(n));\",\n \"}\",\n \"}\",\n \"var i = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n);\",\n \"while (i >= 0) {\",\n \"if (i in o && o[i] === searchElement) {\",\n \"return i;\",\n \"}\",\n \"i--;\",\n \"}\",\n \"return -1;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function slice(start, end) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n // Handle negative value for \"start\"\n \"start |= 0;\",\n \"start = (start >= 0) ? start : Math.max(0, len + start);\",\n // Handle negative value for \"end\"\n \"if (typeof end !== 'undefined') {\",\n \"if (end !== Infinity) {\",\n \"end |= 0;\",\n \"}\",\n \"if (end < 0) {\",\n \"end = len + end;\",\n \"} else {\",\n \"end = Math.min(end, len);\",\n \"}\",\n \"} else {\",\n \"end = len;\",\n \"}\",\n \"var size = end - start;\",\n \"var cloned = new Array(size);\",\n \"for (var i = 0; i < size; i++) {\",\n \"if ((start + i) in o) {\",\n \"cloned[i] = o[start + i];\",\n \"}\",\n \"}\",\n \"return cloned;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function splice(start, deleteCount, var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"start |= 0;\",\n \"if (start < 0) {\",\n \"start = Math.max(len + start, 0);\",\n \"} else {\",\n \"start = Math.min(start, len);\",\n \"}\",\n \"if (arguments.length < 1) {\",\n \"deleteCount = len - start;\",\n \"} else {\",\n \"deleteCount |= 0;\",\n \"deleteCount = Math.max(0, Math.min(deleteCount, len - start));\",\n \"}\",\n \"var removed = [];\",\n // Remove specified elements.\n \"for (var i = start; i < start + deleteCount; i++) {\",\n \"if (i in o) {\",\n \"removed.push(o[i]);\",\n \"} else {\",\n \"removed.length++;\",\n \"}\",\n \"if ((i + deleteCount) in o) {\",\n \"o[i] = o[i + deleteCount];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n // Move other element to fill the gap.\n \"for (var i = start + deleteCount; i < len - deleteCount; i++) {\",\n \"if ((i + deleteCount) in o) {\",\n \"o[i] = o[i + deleteCount];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n // Delete superfluous properties.\n \"for (var i = len - deleteCount; i < len; i++) {\",\n \"delete o[i];\",\n \"}\",\n \"len -= deleteCount;\",\n // Insert specified items.\n \"var arl = arguments.length - 2;\",\n \"for (var i = len - 1; i >= start; i--) {\",\n \"if (i in o) {\",\n \"o[i + arl] = o[i];\",\n \"} else {\",\n \"delete o[i + arl];\",\n \"}\",\n \"}\",\n \"len += arl;\",\n \"for (var i = 2; i < arguments.length; i++) {\",\n \"o[start + i - 2] = arguments[i];\",\n \"}\",\n \"o.length = len;\",\n \"return removed;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function concat(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this);\",\n \"var cloned = [];\",\n \"for (var i = -1; i < arguments.length; i++) {\",\n \"var value = (i === -1) ? o : arguments[i];\",\n \"if (Array.isArray(value)) {\",\n \"for (var j = 0, l = value.length; j < l; j++) {\",\n \"if (j in value) {\",\n \"cloned.push(value[j]);\",\n \"} else {\",\n \"cloned.length++;\",\n \"}\",\n \"}\",\n \"} else {\",\n \"cloned.push(value);\",\n \"}\",\n \"}\",\n \"return cloned;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function join(opt_separator) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var sep = typeof opt_separator === 'undefined' ?\",\n \"',' : ('' + opt_separator);\",\n \"var str = '';\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i && sep) str += sep;\",\n \"str += (o[i] === null || o[i] === undefined) ? '' : o[i];\",\n \"}\",\n \"return str;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every\n \"createArrayMethod_(\",\n \"function every(callbackfn, thisArg) {\",\n \"if (!this || typeof callbackfn !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"while (k < len) {\",\n \"if (k in o && !callbackfn.call(t, o[k], k, o)) return false;\",\n \"k++;\",\n \"}\",\n \"return true;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n \"createArrayMethod_(\",\n \"function filter(fun, var_args) {\",\n \"if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var res = [];\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in o) {\",\n \"var val = o[i];\",\n \"if (fun.call(thisArg, val, i, o)) res.push(val);\",\n \"}\",\n \"}\",\n \"return res;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n \"createArrayMethod_(\",\n \"function forEach(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"while (k < len) {\",\n \"if (k in o) callback.call(t, o[k], k, o);\",\n \"k++;\",\n \"}\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n \"createArrayMethod_(\",\n \"function map(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"var a = new Array(len);\",\n \"while (k < len) {\",\n \"if (k in o) a[k] = callback.call(t, o[k], k, o);\",\n \"k++;\",\n \"}\",\n \"return a;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce\n \"createArrayMethod_(\",\n \"function reduce(callback /*, initialValue*/) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var k = 0, value;\",\n \"if (arguments.length === 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k < len && !(k in o)) k++;\",\n \"if (k >= len) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = o[k++];\",\n \"}\",\n \"for (; k < len; k++) {\",\n \"if (k in o) value = callback(value, o[k], k, o);\",\n \"}\",\n \"return value;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight\n \"createArrayMethod_(\",\n \"function reduceRight(callback /*, initialValue*/) {\",\n \"if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var k = len - 1, value;\",\n \"if (arguments.length >= 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k >= 0 && !(k in o)) k--;\",\n \"if (k < 0) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = o[k--];\",\n \"}\",\n \"for (; k >= 0; k--) {\",\n \"if (k in o) value = callback(value, o[k], k, o);\",\n \"}\",\n \"return value;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some\n \"createArrayMethod_(\",\n \"function some(fun/*, thisArg*/) {\",\n \"if (!this || typeof fun !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in o && fun.call(thisArg, o[i], i, o)) return true;\",\n \"}\",\n \"return false;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function sort(opt_comp) {\", // Bubble sort!\n \"if (!this) throw TypeError();\",\n \"if (typeof opt_comp !== 'function') {\",\n \"opt_comp = undefined;\",\n \"}\",\n \"for (var i = 0; i < this.length; i++) {\",\n \"var changes = 0;\",\n \"for (var j = 0; j < this.length - i - 1; j++) {\",\n \"if (opt_comp ? (opt_comp(this[j], this[j + 1]) > 0) :\",\n \"(String(this[j]) > String(this[j + 1]))) {\",\n \"var swap = this[j];\",\n \"var hasSwap = j in this;\",\n \"if ((j + 1) in this) {\",\n \"this[j] = this[j + 1];\",\n \"} else {\",\n \"delete this[j];\",\n \"}\",\n \"if (hasSwap) {\",\n \"this[j + 1] = swap;\",\n \"} else {\",\n \"delete this[j + 1];\",\n \"}\",\n \"changes++;\",\n \"}\",\n \"}\",\n \"if (!changes) break;\",\n \"}\",\n \"return this;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function toLocaleString() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var out = [];\",\n \"for (var i = 0; i < len; i++) {\",\n \"out[i] = (o[i] === null || o[i] === undefined) ? '' : o[i].toLocaleString();\",\n \"}\",\n \"return out.join(',');\",\n \"}\",\n \");\",\n \"})();\",\n \"\"\n );\n};\n\n/**\n * Initialize the String class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initString = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // String constructor.\n wrapper = function String(value) {\n value = arguments.length ? Interpreter.nativeGlobal.String(value) : \"\";\n if (thisInterpreter.calledWithNew()) {\n // Called as `new String()`.\n this.data = value;\n return this;\n } else {\n // Called as `String()`.\n return value;\n }\n };\n this.STRING = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"String\", this.STRING, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on String.\n this.setProperty(\n this.STRING,\n \"fromCharCode\",\n this.createNativeFunction(String.fromCharCode, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on String.\n // Methods with exclusively primitive arguments.\n var functions = [\n \"charAt\",\n \"charCodeAt\",\n \"concat\",\n \"indexOf\",\n \"lastIndexOf\",\n \"slice\",\n \"substr\",\n \"substring\",\n \"toLocaleLowerCase\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toUpperCase\",\n \"trim\",\n ];\n for (var i = 0; i < functions.length; i++) {\n this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]);\n }\n\n wrapper = function localeCompare(compareString, locales, options) {\n locales = thisInterpreter.pseudoToNative(locales);\n options = thisInterpreter.pseudoToNative(options);\n try {\n return String(this).localeCompare(\n compareString,\n /** @type {?} */ (locales),\n /** @type {?} */ (options)\n );\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"localeCompare: \" + e.message);\n }\n };\n this.setNativeFunctionPrototype(this.STRING, \"localeCompare\", wrapper);\n\n wrapper = function split(separator, limit, callback) {\n var string = String(this);\n limit = limit ? Number(limit) : undefined;\n // Example of catastrophic split RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.split(/^(a+)+b/)\n if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) {\n separator = separator.data;\n thisInterpreter.maybeThrowRegExp(separator, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run split in vm.\n var sandbox = {\n string: string,\n separator: separator,\n limit: limit,\n };\n var code = \"string.split(separator, limit)\";\n var jsList = thisInterpreter.vmCall(code, sandbox, separator, callback);\n if (jsList !== Interpreter.REGEXP_TIMEOUT) {\n callback(thisInterpreter.arrayNativeToPseudo(jsList));\n }\n } else {\n // Run split in separate thread.\n var splitWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(separator, splitWorker, callback);\n splitWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(thisInterpreter.arrayNativeToPseudo(e.data));\n };\n splitWorker.postMessage([\"split\", string, separator, limit]);\n }\n return;\n }\n }\n // Run split natively.\n var jsList = string.split(separator, limit);\n callback(thisInterpreter.arrayNativeToPseudo(jsList));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"split\", wrapper);\n\n wrapper = function match(regexp, callback) {\n var string = String(this);\n regexp = thisInterpreter.isa(regexp, thisInterpreter.REGEXP) ? regexp.data : new RegExp(regexp);\n // Example of catastrophic match RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.match(/^(a+)+b/)\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run match in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"string.match(regexp)\";\n var m = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (m !== Interpreter.REGEXP_TIMEOUT) {\n callback(m && thisInterpreter.arrayNativeToPseudo(m));\n }\n } else {\n // Run match in separate thread.\n var matchWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, matchWorker, callback);\n matchWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data && thisInterpreter.arrayNativeToPseudo(e.data));\n };\n matchWorker.postMessage([\"match\", string, regexp]);\n }\n return;\n }\n // Run match natively.\n var m = string.match(regexp);\n callback(m && thisInterpreter.arrayNativeToPseudo(m));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"match\", wrapper);\n\n wrapper = function search(regexp, callback) {\n var string = String(this);\n if (thisInterpreter.isa(regexp, thisInterpreter.REGEXP)) {\n regexp = regexp.data;\n } else {\n regexp = new RegExp(regexp);\n }\n // Example of catastrophic search RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.search(/^(a+)+b/)\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run search in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"string.search(regexp)\";\n var n = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (n !== Interpreter.REGEXP_TIMEOUT) {\n callback(n);\n }\n } else {\n // Run search in separate thread.\n var searchWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, searchWorker, callback);\n searchWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data);\n };\n searchWorker.postMessage([\"search\", string, regexp]);\n }\n return;\n }\n // Run search natively.\n callback(string.search(regexp));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"search\", wrapper);\n\n wrapper = function replace_(substr, newSubstr, callback) {\n // Support for function replacements is the responsibility of a polyfill.\n var string = String(this);\n newSubstr = String(newSubstr);\n // Example of catastrophic replace RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.replace(/^(a+)+b/, '')\n if (thisInterpreter.isa(substr, thisInterpreter.REGEXP)) {\n substr = substr.data;\n thisInterpreter.maybeThrowRegExp(substr, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run replace in vm.\n var sandbox = {\n string: string,\n substr: substr,\n newSubstr: newSubstr,\n };\n var code = \"string.replace(substr, newSubstr)\";\n var str = thisInterpreter.vmCall(code, sandbox, substr, callback);\n if (str !== Interpreter.REGEXP_TIMEOUT) {\n callback(str);\n }\n } else {\n // Run replace in separate thread.\n var replaceWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(substr, replaceWorker, callback);\n replaceWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data);\n };\n replaceWorker.postMessage([\"replace\", string, substr, newSubstr]);\n }\n return;\n }\n }\n // Run replace natively.\n callback(string.replace(substr, newSubstr));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"replace\", wrapper);\n // Add a polyfill to handle replace's second argument being a function.\n this.polyfills_.push(\n \"(function() {\",\n \"var replace_ = String.prototype.replace;\",\n \"String.prototype.replace = function replace(substr, newSubstr) {\",\n \"if (typeof newSubstr !== 'function') {\",\n // string.replace(string|regexp, string)\n \"return replace_.call(this, substr, newSubstr);\",\n \"}\",\n \"var str = this;\",\n \"if (substr instanceof RegExp) {\", // string.replace(regexp, function)\n \"var subs = [];\",\n \"var m = substr.exec(str);\",\n \"while (m) {\",\n \"m.push(m.index, str);\",\n \"var inject = newSubstr.apply(null, m);\",\n \"subs.push([m.index, m[0].length, inject]);\",\n \"m = substr.global ? substr.exec(str) : null;\",\n \"}\",\n \"for (var i = subs.length - 1; i >= 0; i--) {\",\n \"str = str.substring(0, subs[i][0]) + subs[i][2] + \" +\n \"str.substring(subs[i][0] + subs[i][1]);\",\n \"}\",\n \"} else {\", // string.replace(string, function)\n \"var i = str.indexOf(substr);\",\n \"if (i !== -1) {\",\n \"var inject = newSubstr(str.substr(i, substr.length), i, str);\",\n \"str = str.substring(0, i) + inject + \" + \"str.substring(i + substr.length);\",\n \"}\",\n \"}\",\n \"return str;\",\n \"};\",\n \"})();\",\n \"\"\n );\n};\n\n/**\n * Initialize the Boolean class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initBoolean = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Boolean constructor.\n wrapper = function Boolean(value) {\n value = Interpreter.nativeGlobal.Boolean(value);\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Boolean()`.\n this.data = value;\n return this;\n } else {\n // Called as `Boolean()`.\n return value;\n }\n };\n this.BOOLEAN = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"Boolean\", this.BOOLEAN, Interpreter.NONENUMERABLE_DESCRIPTOR);\n};\n\n/**\n * Initialize the Number class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initNumber = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Number constructor.\n wrapper = function Number(value) {\n value = arguments.length ? Interpreter.nativeGlobal.Number(value) : 0;\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Number()`.\n this.data = value;\n return this;\n } else {\n // Called as `Number()`.\n return value;\n }\n };\n this.NUMBER = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"Number\", this.NUMBER, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n var numConsts = [\"MAX_VALUE\", \"MIN_VALUE\", \"NaN\", \"NEGATIVE_INFINITY\", \"POSITIVE_INFINITY\"];\n for (var i = 0; i < numConsts.length; i++) {\n this.setProperty(\n this.NUMBER,\n numConsts[i],\n Number[numConsts[i]],\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n }\n\n // Instance methods on Number.\n wrapper = function toExponential(fractionDigits) {\n try {\n return Number(this).toExponential(fractionDigits);\n } catch (e) {\n // Throws if fractionDigits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toExponential\", wrapper);\n\n wrapper = function toFixed(digits) {\n try {\n return Number(this).toFixed(digits);\n } catch (e) {\n // Throws if digits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toFixed\", wrapper);\n\n wrapper = function toPrecision(precision) {\n try {\n return Number(this).toPrecision(precision);\n } catch (e) {\n // Throws if precision isn't within range (depends on implementation).\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toPrecision\", wrapper);\n\n wrapper = function toString(radix) {\n try {\n return Number(this).toString(radix);\n } catch (e) {\n // Throws if radix isn't within 2-36.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toString\", wrapper);\n\n wrapper = function toLocaleString(locales, options) {\n locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined;\n options = options ? thisInterpreter.pseudoToNative(options) : undefined;\n try {\n return Number(this).toLocaleString(/** @type {?} */ (locales), /** @type {?} */ (options));\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"toLocaleString: \" + e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toLocaleString\", wrapper);\n};\n\n/**\n * Initialize the Date class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initDate = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Date constructor.\n wrapper = function Date(_value, var_args) {\n if (!thisInterpreter.calledWithNew()) {\n // Called as `Date()`.\n // Calling Date() as a function returns a string, no arguments are heeded.\n return Interpreter.nativeGlobal.Date();\n }\n // Called as `new Date(...)`.\n var args = [null].concat(Array.from(arguments));\n this.data = new (Function.prototype.bind.apply(Interpreter.nativeGlobal.Date, args))();\n return this;\n };\n this.DATE = this.createNativeFunction(wrapper, true);\n this.DATE_PROTO = this.DATE.properties[\"prototype\"];\n this.setProperty(globalObject, \"Date\", this.DATE, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on Date.\n this.setProperty(\n this.DATE,\n \"now\",\n this.createNativeFunction(Date.now, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n this.DATE,\n \"parse\",\n this.createNativeFunction(Date.parse, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n this.DATE,\n \"UTC\",\n this.createNativeFunction(Date.UTC, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Date.\n var functions = [\n \"getDate\",\n \"getDay\",\n \"getFullYear\",\n \"getHours\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getMonth\",\n \"getSeconds\",\n \"getTime\",\n \"getTimezoneOffset\",\n \"getUTCDate\",\n \"getUTCDay\",\n \"getUTCFullYear\",\n \"getUTCHours\",\n \"getUTCMilliseconds\",\n \"getUTCMinutes\",\n \"getUTCMonth\",\n \"getUTCSeconds\",\n \"getYear\",\n \"setDate\",\n \"setFullYear\",\n \"setHours\",\n \"setMilliseconds\",\n \"setMinutes\",\n \"setMonth\",\n \"setSeconds\",\n \"setTime\",\n \"setUTCDate\",\n \"setUTCFullYear\",\n \"setUTCHours\",\n \"setUTCMilliseconds\",\n \"setUTCMinutes\",\n \"setUTCMonth\",\n \"setUTCSeconds\",\n \"setYear\",\n \"toDateString\",\n \"toISOString\",\n \"toJSON\",\n \"toGMTString\",\n \"toLocaleDateString\",\n \"toLocaleString\",\n \"toLocaleTimeString\",\n \"toTimeString\",\n \"toUTCString\",\n ];\n for (var i = 0; i < functions.length; i++) {\n wrapper = (function (nativeFunc) {\n return function (var_args) {\n var date = this.data;\n if (!(date instanceof Date)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n nativeFunc + \" not called on a Date\"\n );\n }\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = thisInterpreter.pseudoToNative(arguments[i]);\n }\n return date[nativeFunc].apply(date, args);\n };\n })(functions[i]);\n this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper);\n }\n};\n\n/**\n * Initialize Regular Expression object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initRegExp = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // RegExp constructor.\n wrapper = function RegExp(pattern, flags) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new RegExp()`.\n var rgx = this;\n } else {\n // Called as `RegExp()`.\n if (flags === undefined && thisInterpreter.isa(pattern, thisInterpreter.REGEXP)) {\n // Regexp(/foo/) returns the same obj.\n return pattern;\n }\n var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO);\n }\n pattern = pattern === undefined ? \"\" : String(pattern);\n flags = flags ? String(flags) : \"\";\n if (!/^[gmi]*$/.test(flags)) {\n // Don't allow ES6 flags 'y' and 's' to pass through.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid regexp flag: \" + flags);\n }\n try {\n var nativeRegExp = new Interpreter.nativeGlobal.RegExp(pattern, flags);\n } catch (e) {\n // Throws if flags are repeated.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message);\n }\n thisInterpreter.populateRegExp(rgx, nativeRegExp);\n return rgx;\n };\n this.REGEXP = this.createNativeFunction(wrapper, true);\n this.REGEXP_PROTO = this.REGEXP.properties[\"prototype\"];\n this.setProperty(globalObject, \"RegExp\", this.REGEXP, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"global\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"ignoreCase\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"multiline\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"source\",\n \"(?:)\",\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n\n // Use polyfill to avoid complexity of regexp threads.\n this.polyfills_.push(\n \"Object.defineProperty(RegExp.prototype, 'test',\",\n \"{configurable: true, writable: true, value:\",\n \"function test(str) {\",\n \"return !!this.exec(str);\",\n \"}\",\n \"});\"\n );\n\n wrapper = function exec(string, callback) {\n var regexp = this.data;\n string = String(string);\n // Get lastIndex from wrapped regexp, since this is settable.\n regexp.lastIndex = Number(thisInterpreter.getProperty(this, \"lastIndex\"));\n // Example of catastrophic exec RegExp:\n // /^(a+)+b/.exec('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac')\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run exec in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"regexp.exec(string)\";\n var match = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (match !== Interpreter.REGEXP_TIMEOUT) {\n thisInterpreter.setProperty(this, \"lastIndex\", regexp.lastIndex);\n callback(matchToPseudo(match));\n }\n } else {\n // Run exec in separate thread.\n // Note that lastIndex is not preserved when a RegExp is passed to a\n // Web Worker. Thus it needs to be passed back and forth separately.\n var execWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, execWorker, callback);\n var thisPseudoRegExp = this;\n execWorker.onmessage = function (e) {\n clearTimeout(pid);\n // Return tuple: [result, lastIndex]\n thisInterpreter.setProperty(thisPseudoRegExp, \"lastIndex\", e.data[1]);\n callback(matchToPseudo(e.data[0]));\n };\n execWorker.postMessage([\"exec\", regexp, regexp.lastIndex, string]);\n }\n return;\n }\n // Run exec natively.\n var match = regexp.exec(string);\n thisInterpreter.setProperty(this, \"lastIndex\", regexp.lastIndex);\n callback(matchToPseudo(match));\n\n function matchToPseudo(match) {\n if (match) {\n var result = thisInterpreter.arrayNativeToPseudo(match);\n // match has additional properties.\n thisInterpreter.setProperty(result, \"index\", match.index);\n thisInterpreter.setProperty(result, \"input\", match.input);\n return result;\n }\n return null;\n }\n };\n this.setAsyncFunctionPrototype(this.REGEXP, \"exec\", wrapper);\n};\n\n/**\n * Initialize the Error class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initError = function (globalObject) {\n var thisInterpreter = this;\n // Error constructor.\n this.ERROR = this.createNativeFunction(function Error(opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Error()`.\n var newError = this;\n } else {\n // Called as `Error()`.\n var newError = thisInterpreter.createObject(thisInterpreter.ERROR);\n }\n thisInterpreter.populateError(newError, opt_message);\n return newError;\n }, true);\n this.setProperty(globalObject, \"Error\", this.ERROR, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(\n this.ERROR.properties[\"prototype\"],\n \"message\",\n \"\",\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.ERROR.properties[\"prototype\"],\n \"name\",\n \"Error\",\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n var createErrorSubclass = function (name) {\n var constructor = thisInterpreter.createNativeFunction(function (opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new XyzError()`.\n var newError = this;\n } else {\n // Called as `XyzError()`.\n var newError = thisInterpreter.createObject(constructor);\n }\n thisInterpreter.populateError(newError, opt_message);\n return newError;\n }, true);\n thisInterpreter.setProperty(\n constructor,\n \"prototype\",\n thisInterpreter.createObject(thisInterpreter.ERROR),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n thisInterpreter.setProperty(\n constructor.properties[\"prototype\"],\n \"name\",\n name,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n thisInterpreter.setProperty(\n globalObject,\n name,\n constructor,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n return constructor;\n };\n\n this.EVAL_ERROR = createErrorSubclass(\"EvalError\");\n this.RANGE_ERROR = createErrorSubclass(\"RangeError\");\n this.REFERENCE_ERROR = createErrorSubclass(\"ReferenceError\");\n this.SYNTAX_ERROR = createErrorSubclass(\"SyntaxError\");\n this.TYPE_ERROR = createErrorSubclass(\"TypeError\");\n this.URI_ERROR = createErrorSubclass(\"URIError\");\n};\n\n/**\n * Initialize Math object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initMath = function (globalObject) {\n var myMath = this.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(globalObject, \"Math\", myMath, Interpreter.NONENUMERABLE_DESCRIPTOR);\n var mathConsts = [\"E\", \"LN2\", \"LN10\", \"LOG2E\", \"LOG10E\", \"PI\", \"SQRT1_2\", \"SQRT2\"];\n for (var i = 0; i < mathConsts.length; i++) {\n this.setProperty(\n myMath,\n mathConsts[i],\n Math[mathConsts[i]],\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n }\n var numFunctions = [\n \"abs\",\n \"acos\",\n \"asin\",\n \"atan\",\n \"atan2\",\n \"ceil\",\n \"cos\",\n \"exp\",\n \"floor\",\n \"log\",\n \"max\",\n \"min\",\n \"pow\",\n \"random\",\n \"round\",\n \"sin\",\n \"sqrt\",\n \"tan\",\n ];\n for (var i = 0; i < numFunctions.length; i++) {\n this.setProperty(\n myMath,\n numFunctions[i],\n this.createNativeFunction(Math[numFunctions[i]], false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n};\n\n/**\n * Initialize JSON object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initJSON = function (globalObject) {\n var wrapper;\n var thisInterpreter = this;\n var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(globalObject, \"JSON\", myJSON, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n wrapper = function parse(text) {\n try {\n var nativeObj = JSON.parse(String(text));\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message);\n }\n return thisInterpreter.nativeToPseudo(nativeObj);\n };\n this.setProperty(myJSON, \"parse\", this.createNativeFunction(wrapper, false));\n\n wrapper = function stringify(value, replacer, space) {\n if (replacer && replacer.class === \"Function\") {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Function replacer on JSON.stringify not supported\"\n );\n } else if (replacer && replacer.class === \"Array\") {\n replacer = thisInterpreter.arrayPseudoToNative(replacer);\n replacer = replacer.filter(function (word) {\n // Spec says we should also support boxed primitives here.\n return typeof word === \"string\" || typeof word === \"number\";\n });\n } else {\n replacer = null;\n }\n // Spec says we should also support boxed primitives here.\n if (typeof space !== \"string\" && typeof space !== \"number\") {\n space = undefined;\n }\n\n var nativeObj = thisInterpreter.pseudoToNative(value);\n try {\n var str = JSON.stringify(nativeObj, replacer, space);\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message);\n }\n return str;\n };\n this.setProperty(myJSON, \"stringify\", this.createNativeFunction(wrapper, false));\n};\n\n/**\n * Is an object of a certain class?\n * @param {Interpreter.Value} child Object to check.\n * @param {Interpreter.Object} constructor Constructor of object.\n * @returns {boolean} True if object is the class or inherits from it.\n * False otherwise.\n */\nInterpreter.prototype.isa = function (child, constructor) {\n if (child === null || child === undefined || !constructor) {\n return false;\n }\n var proto = constructor.properties[\"prototype\"];\n if (child === proto) {\n return true;\n }\n // The first step up the prototype chain is harder since the child might be\n // a primitive value. Subsequent steps can just follow the .proto property.\n child = this.getPrototype(child);\n while (child) {\n if (child === proto) {\n return true;\n }\n child = child.proto;\n }\n return false;\n};\n\n/**\n * Initialize a pseudo regular expression object based on a native regular\n * expression object.\n * @param {!Interpreter.Object} pseudoRegexp The existing object to set.\n * @param {!RegExp} nativeRegexp The native regular expression.\n */\nInterpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) {\n pseudoRegexp.data = new RegExp(nativeRegexp.source, nativeRegexp.flags);\n // lastIndex is settable, all others are read-only attributes\n this.setProperty(\n pseudoRegexp,\n \"lastIndex\",\n nativeRegexp.lastIndex,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"source\",\n nativeRegexp.source,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"global\",\n nativeRegexp.global,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"ignoreCase\",\n nativeRegexp.ignoreCase,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"multiline\",\n nativeRegexp.multiline,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Initialize a pseudo error object.\n * @param {!Interpreter.Object} pseudoError The existing object to set.\n * @param {string=} opt_message Error's message.\n */\nInterpreter.prototype.populateError = function (pseudoError, opt_message) {\n if (opt_message) {\n this.setProperty(\n pseudoError,\n \"message\",\n String(opt_message),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n var tracebackData = [];\n for (var i = this.stateStack.length - 1; i >= 0; i--) {\n var state = this.stateStack[i];\n var node = state.node;\n if (node.type === \"CallExpression\") {\n var func = state.func_;\n if (func && tracebackData.length) {\n tracebackData[tracebackData.length - 1].datumName = this.getProperty(func, \"name\");\n }\n }\n if (node.loc && (!tracebackData.length || node.type === \"CallExpression\")) {\n tracebackData.push({ datumLoc: node.loc });\n }\n }\n var errorName = String(this.getProperty(pseudoError, \"name\"));\n var errorMessage = String(this.getProperty(pseudoError, \"message\"));\n var stackString = errorName + \": \" + errorMessage + \"\\n\";\n for (var i = 0; i < tracebackData.length; i++) {\n var loc = tracebackData[i].datumLoc;\n var name = tracebackData[i].datumName;\n var locString = loc.source + \":\" + loc.start.line + \":\" + loc.start.column;\n if (name) {\n stackString += \" at \" + name + \" (\" + locString + \")\\n\";\n } else {\n stackString += \" at \" + locString + \"\\n\";\n }\n }\n this.setProperty(pseudoError, \"stack\", stackString.trim(), Interpreter.NONENUMERABLE_DESCRIPTOR);\n};\n\n/**\n * Create a Web Worker to execute regular expressions.\n * Using a separate file fails in Chrome when run locally on a file:// URI.\n * Using a data encoded URI fails in IE and Edge.\n * Using a blob works in IE11 and all other browsers.\n * @returns {!Worker} Web Worker with regexp execution code loaded.\n */\nInterpreter.prototype.createWorker = function () {\n var blob = this.createWorker.blob_;\n if (!blob) {\n blob = new Blob([Interpreter.WORKER_CODE.join(\"\\n\")], { type: \"application/javascript\" });\n // Cache the blob, so it doesn't need to be created next time.\n this.createWorker.blob_ = blob;\n }\n return new Worker(URL.createObjectURL(blob));\n};\n\n/**\n * Execute regular expressions in a node vm.\n * @param {string} code Code to execute.\n * @param {!Object} sandbox Global variables for new vm.\n * @param {!RegExp} nativeRegExp Regular expression.\n * @param {!Function} callback Asynchronous callback function.\n */\nInterpreter.prototype.vmCall = function (code, sandbox, nativeRegExp, callback) {\n var options = { timeout: this[\"REGEXP_THREAD_TIMEOUT\"] };\n try {\n return Interpreter.vm[\"runInNewContext\"](code, sandbox, options);\n } catch (_e) {\n callback(null);\n this.throwException(this.ERROR, \"RegExp Timeout: \" + nativeRegExp);\n }\n return Interpreter.REGEXP_TIMEOUT;\n};\n\n/**\n * If REGEXP_MODE is 0, then throw an error.\n * Also throw if REGEXP_MODE is 2 and JS doesn't support Web Workers or vm.\n * @param {!RegExp} nativeRegExp Regular expression.\n * @param {!Function} callback Asynchronous callback function.\n */\nInterpreter.prototype.maybeThrowRegExp = function (nativeRegExp, callback) {\n var ok;\n if (this[\"REGEXP_MODE\"] === 0) {\n // Fail: No RegExp support.\n ok = false;\n } else if (this[\"REGEXP_MODE\"] === 1) {\n // Ok: Native RegExp support.\n ok = true;\n } else {\n // Sandboxed RegExp handling.\n if (Interpreter.vm) {\n // Ok: Node's vm module already loaded.\n ok = true;\n } else if (typeof Worker === \"function\" && typeof URL === \"function\") {\n // Ok: Web Workers available.\n ok = true;\n } else if (typeof require === \"function\") {\n // Try to load Node's vm module.\n try {\n Interpreter.vm = require(\"vm\");\n } catch (_e) {}\n ok = !!Interpreter.vm;\n } else {\n // Fail: Neither Web Workers nor vm available.\n ok = false;\n }\n }\n if (!ok) {\n callback(null);\n this.throwException(this.ERROR, \"Regular expressions not supported: \" + nativeRegExp);\n }\n};\n\n/**\n * Set a timeout for regular expression threads. Unless cancelled, this will\n * terminate the thread and throw an error.\n * @param {!RegExp} nativeRegExp Regular expression (used for error message).\n * @param {!Worker} worker Thread to terminate.\n * @param {!Function} callback Async callback function to continue execution.\n * @returns {number} PID of timeout. Used to cancel if thread completes.\n */\nInterpreter.prototype.regExpTimeout = function (nativeRegExp, worker, callback) {\n var thisInterpreter = this;\n return setTimeout(function () {\n worker.terminate();\n callback(null);\n try {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"RegExp Timeout: \" + nativeRegExp);\n } catch (_e) {\n // Eat the expected Interpreter.STEP_ERROR.\n }\n }, this[\"REGEXP_THREAD_TIMEOUT\"]);\n};\n\n/**\n * Create a new data object based on a constructor's prototype.\n * @param {Interpreter.Object} constructor Parent constructor function,\n * or null if scope object.\n * @returns {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObject = function (constructor) {\n return this.createObjectProto(constructor && constructor.properties[\"prototype\"]);\n};\n\n/**\n * Create a new data object based on a prototype.\n * @param {Interpreter.Object} proto Prototype object.\n * @returns {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObjectProto = function (proto) {\n if (typeof proto !== \"object\") {\n throw Error(\"Non object prototype\");\n }\n var obj = new Interpreter.Object(proto);\n if (this.isa(obj, this.ERROR)) {\n // Record this object as being an error so that its toString function can\n // process it correctly (toString has no access to the interpreter and could\n // not otherwise determine that the object is an error).\n obj.class = \"Error\";\n }\n return obj;\n};\n\n/**\n * Create a new array.\n * @returns {!Interpreter.Object} New array.\n */\nInterpreter.prototype.createArray = function () {\n var array = this.createObjectProto(this.ARRAY_PROTO);\n // Arrays have length.\n this.setProperty(array, \"length\", 0, { configurable: false, enumerable: false, writable: true });\n array.class = \"Array\";\n return array;\n};\n\n/**\n * Create a new function object (could become interpreted or native or async).\n * @param {number} argumentLength Number of arguments.\n * @param {boolean} isConstructor True if function can be used with 'new'.\n * @returns {!Interpreter.Object} New function.\n * @private\n */\nInterpreter.prototype.createFunctionBase_ = function (argumentLength, isConstructor) {\n var func = this.createObjectProto(this.FUNCTION_PROTO);\n if (isConstructor) {\n var proto = this.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(func, \"prototype\", proto, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(proto, \"constructor\", func, Interpreter.NONENUMERABLE_DESCRIPTOR);\n } else {\n func.illegalConstructor = true;\n }\n this.setProperty(func, \"length\", argumentLength, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n func.class = \"Function\";\n // When making changes to this function, check to see if those changes also\n // need to be made to the creation of FUNCTION_PROTO in initFunction.\n return func;\n};\n\n/**\n * Create a new interpreted function.\n * @param {!Object} node AST node defining the function.\n * @param {!Interpreter.Scope} scope Parent scope.\n * @param {string=} opt_name Optional name for function.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createFunction = function (node, scope, opt_name) {\n var func = this.createFunctionBase_(node.params.length, true);\n func.parentScope = scope;\n func.node = node;\n // Choose a name for this function.\n // function foo() {} -> 'foo'\n // var bar = function() {}; -> 'bar'\n // var bar = function foo() {}; -> 'foo'\n // foo.bar = function() {}; -> ''\n // var bar = new Function(''); -> 'anonymous'\n var name = node.id ? String(node.id.name) : opt_name || \"\";\n this.setProperty(func, \"name\", name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Create a new native function.\n * @param {!Function} nativeFunc JavaScript function.\n * @param {boolean} isConstructor True if function can be used with 'new'.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createNativeFunction = function (nativeFunc, isConstructor) {\n var func = this.createFunctionBase_(nativeFunc.length, isConstructor);\n func.nativeFunc = nativeFunc;\n nativeFunc.id = this.functionCounter_++;\n this.setProperty(func, \"name\", nativeFunc.name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Create a new native asynchronous function.\n * @param {!Function} asyncFunc JavaScript function.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createAsyncFunction = function (asyncFunc) {\n var func = this.createFunctionBase_(asyncFunc.length, true);\n func.asyncFunc = asyncFunc;\n asyncFunc.id = this.functionCounter_++;\n this.setProperty(func, \"name\", asyncFunc.name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Converts from a native JavaScript object or value to a JS-Interpreter object.\n * Can handle JSON-style values, regular expressions, dates and functions.\n * Does NOT handle cycles.\n * @param {*} nativeObj The native JavaScript object to be converted.\n * @returns {Interpreter.Value} The equivalent JS-Interpreter object.\n */\nInterpreter.prototype.nativeToPseudo = function (nativeObj) {\n if (nativeObj instanceof Interpreter.Object) {\n throw Error(\"Object is already pseudo\");\n }\n if (\n nativeObj === null ||\n nativeObj === undefined ||\n nativeObj === true ||\n nativeObj === false ||\n typeof nativeObj === \"string\" ||\n typeof nativeObj === \"number\"\n ) {\n return nativeObj;\n }\n\n if (nativeObj instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, nativeObj);\n return pseudoRegexp;\n }\n\n if (nativeObj instanceof Date) {\n var pseudoDate = this.createObjectProto(this.DATE_PROTO);\n pseudoDate.data = new Date(nativeObj.valueOf());\n return pseudoDate;\n }\n\n if (typeof nativeObj === \"function\") {\n var thisInterpreter = this;\n var wrapper = function () {\n var args = Array.prototype.slice.call(arguments).map(function (i) {\n return thisInterpreter.pseudoToNative(i);\n });\n var value = nativeObj.apply(thisInterpreter, args);\n return thisInterpreter.nativeToPseudo(value);\n };\n var prototype = Object.getOwnPropertyDescriptor(nativeObj, \"prototype\");\n return this.createNativeFunction(wrapper, !!prototype);\n }\n\n if (Array.isArray(nativeObj)) {\n // Array.\n var pseudoArray = this.createArray();\n for (var i = 0; i < nativeObj.length; i++) {\n if (i in nativeObj) {\n this.setProperty(pseudoArray, i, this.nativeToPseudo(nativeObj[i]));\n }\n }\n return pseudoArray;\n }\n\n // Object.\n var pseudoObj = this.createObjectProto(this.OBJECT_PROTO);\n for (var key in nativeObj) {\n this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key]));\n }\n return pseudoObj;\n};\n\n/**\n * Converts from a JS-Interpreter object to native JavaScript object.\n * Can handle JSON-style values, regular expressions, and dates.\n * Does handle cycles.\n * @param {Interpreter.Value} pseudoObj The JS-Interpreter object to be\n * converted.\n * @param {Object=} opt_cycles Cycle detection object (used by recursive calls).\n * @returns {*} The equivalent native JavaScript object or value.\n */\nInterpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) {\n if ((typeof pseudoObj !== \"object\" && typeof pseudoObj !== \"function\") || pseudoObj === null) {\n return pseudoObj;\n }\n if (!(pseudoObj instanceof Interpreter.Object)) {\n throw Error(\"Object is not pseudo\");\n }\n\n if (this.isa(pseudoObj, this.REGEXP)) {\n // Regular expression.\n var nativeRegExp = new RegExp(pseudoObj.data.source, pseudoObj.data.flags);\n nativeRegExp.lastIndex = pseudoObj.data.lastIndex;\n return nativeRegExp;\n }\n\n if (this.isa(pseudoObj, this.DATE)) {\n // Date.\n return new Date(pseudoObj.data.valueOf());\n }\n\n var cycles = opt_cycles || {\n pseudo: [],\n native: [],\n };\n var index = cycles.pseudo.indexOf(pseudoObj);\n if (index !== -1) {\n return cycles.native[index];\n }\n cycles.pseudo.push(pseudoObj);\n var nativeObj;\n if (this.isa(pseudoObj, this.ARRAY)) {\n // Array.\n nativeObj = [];\n cycles.native.push(nativeObj);\n var len = this.getProperty(pseudoObj, \"length\");\n for (var i = 0; i < len; i++) {\n if (this.hasProperty(pseudoObj, i)) {\n nativeObj[i] = this.pseudoToNative(this.getProperty(pseudoObj, i), cycles);\n }\n }\n } else {\n // Object.\n nativeObj = {};\n cycles.native.push(nativeObj);\n var val;\n for (var key in pseudoObj.properties) {\n val = this.pseudoToNative(pseudoObj.properties[key], cycles);\n // Use defineProperty to avoid side effects if setting '__proto__'.\n Object.defineProperty(nativeObj, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n cycles.pseudo.pop();\n cycles.native.pop();\n return nativeObj;\n};\n\n/**\n * Converts from a native JavaScript array to a JS-Interpreter array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Array} nativeArray The JavaScript array to be converted.\n * @returns {!Interpreter.Object} The equivalent JS-Interpreter array.\n */\nInterpreter.prototype.arrayNativeToPseudo = function (nativeArray) {\n var pseudoArray = this.createArray();\n var props = /** @type {!Array<?>} */ (Object.getOwnPropertyNames(nativeArray));\n for (var i = 0; i < props.length; i++) {\n this.setProperty(pseudoArray, props[i], nativeArray[props[i]]);\n }\n return pseudoArray;\n};\n\n/**\n * Converts from a JS-Interpreter array to native JavaScript array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Interpreter.Object} pseudoArray The JS-Interpreter array,\n * or JS-Interpreter object pretending to be an array.\n * @returns {!Array} The equivalent native JavaScript array.\n */\nInterpreter.prototype.arrayPseudoToNative = function (pseudoArray) {\n var nativeArray = [];\n for (var key in pseudoArray.properties) {\n nativeArray[/** @type {?} */ (key)] = this.getProperty(pseudoArray, key);\n }\n // pseudoArray might be an object pretending to be an array. In this case\n // it's possible that length is non-existent, invalid, or smaller than the\n // largest defined numeric property. Set length explicitly here.\n nativeArray.length = Interpreter.legalArrayLength(this.getProperty(pseudoArray, \"length\")) || 0;\n return nativeArray;\n};\n\n/**\n * Look up the prototype for this value.\n * @param {Interpreter.Value} value Data object.\n * @returns {Interpreter.Object} Prototype object, null if none.\n */\nInterpreter.prototype.getPrototype = function (value) {\n switch (typeof value) {\n case \"number\":\n return this.NUMBER.properties[\"prototype\"];\n case \"boolean\":\n return this.BOOLEAN.properties[\"prototype\"];\n case \"string\":\n return this.STRING.properties[\"prototype\"];\n }\n if (value) {\n return value.proto;\n }\n return null;\n};\n\n/**\n * Fetch a property value from a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @returns {Interpreter.Value} Property value (may be undefined).\n */\nInterpreter.prototype.getProperty = function (obj, name) {\n if (this.getterStep_) {\n throw Error(\"Getter not supported in that context\");\n }\n name = String(name);\n if (obj === undefined || obj === null) {\n this.throwException(this.TYPE_ERROR, \"Cannot read property '\" + name + \"' of \" + obj);\n }\n if (typeof obj === \"object\" && !(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Expecting native value or pseudo object\");\n }\n if (name === \"length\") {\n // Special cases for magic length property.\n if (this.isa(obj, this.STRING)) {\n return String(obj).length;\n }\n } else if (name.charCodeAt(0) < 0x40) {\n // Might have numbers in there?\n // Special cases for string array indexing\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return String(obj)[n];\n }\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n var getter = obj.getter[name];\n if (getter) {\n // Flag this function as being a getter and thus needing immediate\n // execution (rather than being the value of the property).\n this.getterStep_ = true;\n return getter;\n }\n return obj.properties[name];\n }\n } while ((obj = this.getPrototype(obj)));\n return undefined;\n};\n\n/**\n * Does the named property exist on a data object.\n * @param {Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @returns {boolean} True if property exists.\n */\nInterpreter.prototype.hasProperty = function (obj, name) {\n if (!(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Primitive data type has no properties\");\n }\n name = String(name);\n if (name === \"length\" && this.isa(obj, this.STRING)) {\n return true;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return true;\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n return true;\n }\n } while ((obj = this.getPrototype(obj)));\n return false;\n};\n\n/**\n * Set a property value on a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {Interpreter.Value} value New property value.\n * Use Interpreter.VALUE_IN_DESCRIPTOR if value is handled by\n * descriptor instead.\n * @param {Object=} opt_descriptor Optional descriptor object.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) {\n if (this.setterStep_) {\n // Getter from previous call to setProperty was not handled.\n throw Error(\"Setter not supported in that context\");\n }\n name = String(name);\n if (obj === undefined || obj === null) {\n this.throwException(this.TYPE_ERROR, \"Cannot set property '\" + name + \"' of \" + obj);\n }\n if (typeof obj === \"object\" && !(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Expecting native value or pseudo object\");\n }\n if (\n opt_descriptor &&\n (\"get\" in opt_descriptor || \"set\" in opt_descriptor) &&\n (\"value\" in opt_descriptor || \"writable\" in opt_descriptor)\n ) {\n this.throwException(\n this.TYPE_ERROR,\n \"Invalid property descriptor. \" +\n \"Cannot both specify accessors and a value or writable attribute\"\n );\n }\n var strict = !this.stateStack || this.getScope().strict;\n if (!(obj instanceof Interpreter.Object)) {\n if (strict) {\n this.throwException(this.TYPE_ERROR, \"Can't create property '\" + name + \"' on '\" + obj + \"'\");\n }\n return;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (name === \"length\" || (!isNaN(n) && n < String(obj).length)) {\n // Can't set length or letters on String objects.\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of String '\" + obj.data + \"'\"\n );\n }\n return;\n }\n }\n if (obj.class === \"Array\") {\n // Arrays have a magic length variable that is bound to the elements.\n var len = obj.properties.length;\n var i;\n if (name === \"length\") {\n // Delete elements if length is smaller.\n if (opt_descriptor) {\n if (!(\"value\" in opt_descriptor)) {\n return;\n }\n value = opt_descriptor[\"value\"];\n }\n value = Interpreter.legalArrayLength(value);\n if (isNaN(value)) {\n this.throwException(this.RANGE_ERROR, \"Invalid array length\");\n }\n if (value < len) {\n for (i in obj.properties) {\n i = Interpreter.legalArrayIndex(i);\n if (!isNaN(i) && value <= i) {\n delete obj.properties[i];\n }\n }\n }\n } else if (!isNaN((i = Interpreter.legalArrayIndex(name)))) {\n // Increase length if this index is larger.\n obj.properties.length = Math.max(len, i + 1);\n }\n }\n if (obj.preventExtensions && !(name in obj.properties)) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Can't add property '\" + name + \"', object is not extensible\"\n );\n }\n return;\n }\n if (opt_descriptor) {\n // Define the property.\n var descriptor = {};\n if (\"get\" in opt_descriptor && opt_descriptor[\"get\"]) {\n obj.getter[name] = opt_descriptor[\"get\"];\n descriptor[\"get\"] = this.setProperty.placeholderGet_;\n }\n if (\"set\" in opt_descriptor && opt_descriptor[\"set\"]) {\n obj.setter[name] = opt_descriptor[\"set\"];\n descriptor[\"set\"] = this.setProperty.placeholderSet_;\n }\n if (\"configurable\" in opt_descriptor) {\n descriptor[\"configurable\"] = opt_descriptor[\"configurable\"];\n }\n if (\"enumerable\" in opt_descriptor) {\n descriptor[\"enumerable\"] = opt_descriptor[\"enumerable\"];\n }\n if (\"writable\" in opt_descriptor) {\n descriptor[\"writable\"] = opt_descriptor[\"writable\"];\n delete obj.getter[name];\n delete obj.setter[name];\n }\n if (\"value\" in opt_descriptor) {\n descriptor[\"value\"] = opt_descriptor[\"value\"];\n delete obj.getter[name];\n delete obj.setter[name];\n } else if (value !== Interpreter.VALUE_IN_DESCRIPTOR) {\n descriptor[\"value\"] = value;\n delete obj.getter[name];\n delete obj.setter[name];\n }\n try {\n Object.defineProperty(obj.properties, name, descriptor);\n } catch (e) {\n this.throwException(this.TYPE_ERROR, \"Cannot redefine property: \" + name);\n }\n // Now that the definition has suceeded, clean up any obsolete get/set funcs.\n if (\"get\" in opt_descriptor && !opt_descriptor[\"get\"]) {\n delete obj.getter[name];\n }\n if (\"set\" in opt_descriptor && !opt_descriptor[\"set\"]) {\n delete obj.setter[name];\n }\n } else {\n // Set the property.\n if (value === Interpreter.VALUE_IN_DESCRIPTOR) {\n throw ReferenceError(\"Value not specified\");\n }\n // Determine the parent (possibly self) where the property is defined.\n var defObj = obj;\n while (!(name in defObj.properties)) {\n defObj = this.getPrototype(defObj);\n if (!defObj) {\n // This is a new property.\n defObj = obj;\n break;\n }\n }\n if (defObj.setter && defObj.setter[name]) {\n this.setterStep_ = true;\n return defObj.setter[name];\n }\n if (defObj.getter && defObj.getter[name]) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot set property '\" + name + \"' of object '\" + obj + \"' which only has a getter\"\n );\n }\n } else {\n // No setter, simple assignment.\n try {\n obj.properties[name] = value;\n } catch (_e) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of object '\" + obj + \"'\"\n );\n }\n }\n }\n }\n};\n\nInterpreter.prototype.setProperty.placeholderGet_ = function () {\n throw Error(\"Placeholder getter\");\n};\nInterpreter.prototype.setProperty.placeholderSet_ = function () {\n throw Error(\"Placeholder setter\");\n};\n\n/**\n * Convenience method for adding a native function as a non-enumerable property\n * onto an object's prototype.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {!Function} wrapper Function object.\n */\nInterpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) {\n this.setProperty(\n obj.properties[\"prototype\"],\n name,\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Convenience method for adding an async function as a non-enumerable property\n * onto an object's prototype.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {!Function} wrapper Function object.\n */\nInterpreter.prototype.setAsyncFunctionPrototype = function (obj, name, wrapper) {\n this.setProperty(\n obj.properties[\"prototype\"],\n name,\n this.createAsyncFunction(wrapper),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Returns the current scope from the stateStack.\n * @returns {!Interpreter.Scope} Current scope.\n */\nInterpreter.prototype.getScope = function () {\n var scope = this.stateStack[this.stateStack.length - 1].scope;\n if (!scope) {\n throw Error(\"No scope found\");\n }\n return scope;\n};\n\n/**\n * Create a new scope dictionary.\n * @param {!Object} node AST node defining the scope container\n * (e.g. a function).\n * @param {Interpreter.Scope} parentScope Scope to link to.\n * @returns {!Interpreter.Scope} New scope.\n */\nInterpreter.prototype.createScope = function (node, parentScope) {\n // Determine if this scope starts with `use strict`.\n var strict = false;\n if (parentScope && parentScope.strict) {\n strict = true;\n } else {\n var firstNode = node.body && node.body[0];\n if (\n firstNode &&\n firstNode.expression &&\n firstNode.expression.type === \"Literal\" &&\n firstNode.expression.value === \"use strict\"\n ) {\n strict = true;\n }\n }\n var object = this.createObjectProto(null);\n var scope = new Interpreter.Scope(parentScope, strict, object);\n if (!parentScope) {\n this.initGlobal(scope.object);\n }\n this.populateScope_(node, scope);\n return scope;\n};\n\n/**\n * Create a new special scope dictionary. Similar to createScope(), but\n * doesn't assume that the scope is for a function body.\n * This is used for 'catch' clauses, 'with' statements,\n * and named function expressions.\n * @param {!Interpreter.Scope} parentScope Scope to link to.\n * @param {Interpreter.Object=} opt_object Optional object to transform into\n * scope.\n * @returns {!Interpreter.Scope} New scope.\n */\nInterpreter.prototype.createSpecialScope = function (parentScope, opt_object) {\n if (!parentScope) {\n throw Error(\"parentScope required\");\n }\n var object = opt_object || this.createObjectProto(null);\n return new Interpreter.Scope(parentScope, parentScope.strict, object);\n};\n\n/**\n * Retrieves a value from the scope chain.\n * @param {string} name Name of variable.\n * @returns {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValueFromScope = function (name) {\n var scope = this.getScope();\n while (scope && scope !== this.globalScope) {\n if (name in scope.object.properties) {\n return scope.object.properties[name];\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has inherited properties and\n // could also have getters.\n if (scope === this.globalScope && this.hasProperty(scope.object, name)) {\n return this.getProperty(scope.object, name);\n }\n // Typeof operator is unique: it can safely look at non-defined variables.\n var prevNode = this.stateStack[this.stateStack.length - 1].node;\n if (prevNode.type === \"UnaryExpression\" && prevNode.operator === \"typeof\") {\n return undefined;\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\");\n};\n\n/**\n * Sets a value to the current scope.\n * @param {string} name Name of variable.\n * @param {Interpreter.Value} value Value.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValueToScope = function (name, value) {\n var scope = this.getScope();\n var strict = scope.strict;\n while (scope && scope !== this.globalScope) {\n if (name in scope.object.properties) {\n try {\n scope.object.properties[name] = value;\n } catch (_e) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only variable '\" + name + \"'\"\n );\n }\n }\n return undefined;\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has readonly properties and\n // could also have setters.\n if (scope === this.globalScope && (!strict || this.hasProperty(scope.object, name))) {\n return this.setProperty(scope.object, name, value);\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\");\n};\n\n/**\n * Create a new scope for the given node and populate it with all variables\n * and named functions.\n * @param {!Object} node AST node (usually a program or function when initally\n * calling this function, though it recurses to scan many child nodes).\n * @param {!Interpreter.Scope} scope Scope dictionary to populate.\n * @returns {!Object} Map of all variable and function names.\n * @private\n */\nInterpreter.prototype.populateScope_ = function (node, scope) {\n var variableCache;\n if (!node.variableCache_) {\n variableCache = Object.create(null);\n switch (node.type) {\n case \"VariableDeclaration\":\n for (var i = 0; i < node.declarations.length; i++) {\n variableCache[node.declarations[i].id.name] = true;\n }\n break;\n case \"FunctionDeclaration\":\n variableCache[node.id.name] = node;\n break;\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"Program\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"TryStatement\":\n case \"WithStatement\":\n case \"WhileStatement\":\n // All the structures within which a variable or function could hide.\n var nodeClass = node.constructor;\n for (var name in node) {\n if (name === \"loc\") continue;\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n var childCache;\n if (Array.isArray(prop)) {\n for (var i = 0; i < prop.length; i++) {\n if (prop[i] && prop[i].constructor === nodeClass) {\n childCache = this.populateScope_(prop[i], scope);\n for (var name in childCache) {\n variableCache[name] = childCache[name];\n }\n }\n }\n } else {\n if (prop.constructor === nodeClass) {\n childCache = this.populateScope_(prop, scope);\n for (var name in childCache) {\n variableCache[name] = childCache[name];\n }\n }\n }\n }\n }\n }\n node.variableCache_ = variableCache;\n } else {\n variableCache = node.variableCache_;\n }\n for (var name in variableCache) {\n if (variableCache[name] === true) {\n this.setProperty(scope.object, name, undefined, Interpreter.VARIABLE_DESCRIPTOR);\n } else {\n this.setProperty(\n scope.object,\n name,\n this.createFunction(variableCache[name], scope),\n Interpreter.VARIABLE_DESCRIPTOR\n );\n }\n }\n return variableCache;\n};\n\n/**\n * Is the current state directly being called with as a construction with 'new'.\n * @returns {boolean} True if 'new foo()', false if 'foo()'.\n */\nInterpreter.prototype.calledWithNew = function () {\n return this.stateStack[this.stateStack.length - 1].isConstructor;\n};\n\n/**\n * Gets a value from the scope chain or from an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @returns {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValue = function (ref) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.getValueFromScope(ref[1]);\n } else {\n // An obj/prop components tuple (foo.bar).\n return this.getProperty(ref[0], ref[1]);\n }\n};\n\n/**\n * Sets a value to the scope chain or to an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValue = function (ref, value) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.setValueToScope(ref[1], value);\n }\n // An obj/prop components tuple (foo.bar).\n return this.setProperty(ref[0], ref[1], value);\n};\n\n/**\n * Throw an exception in the interpreter that can be handled by an\n * interpreter try/catch statement. If unhandled, a real exception will\n * be thrown. Can be called with either an error class and a message, or\n * with an actual object to be thrown.\n * @param {!Interpreter.Object|Interpreter.Value} errorClass Type of error\n * (if message is provided) or the value to throw (if no message).\n * @param {string=} opt_message Message being thrown.\n */\nInterpreter.prototype.throwException = function (errorClass, opt_message) {\n if (!this.globalScope) {\n // This is an error being thrown in the initialization, throw a real error.\n throw opt_message === undefined ? errorClass : opt_message;\n }\n if (opt_message === undefined || !(errorClass instanceof Interpreter.Object)) {\n var error = errorClass; // This is a value to throw, not an error class.\n } else {\n var error = this.createObject(errorClass);\n this.populateError(error, opt_message);\n }\n this.unwind(Interpreter.Completion.THROW, error, undefined);\n // Abort anything related to the current step.\n throw Interpreter.STEP_ERROR;\n};\n\n/**\n * Unwind the stack to the innermost relevant enclosing TryStatement,\n * For/ForIn/WhileStatement or Call/NewExpression. If this results in\n * the stack being completely unwound the thread will be terminated\n * and the appropriate error being thrown.\n * @param {Interpreter.Completion} type Completion type.\n * @param {Interpreter.Value} value Value computed, returned or thrown.\n * @param {string|undefined} label Target label for break or return.\n */\nInterpreter.prototype.unwind = function (type, value, label) {\n if (type === Interpreter.Completion.NORMAL) {\n throw TypeError(\"Should not unwind for NORMAL completions\");\n }\n\n loop: for (var stack = this.stateStack; stack.length > 0; stack.pop()) {\n var state = stack[stack.length - 1];\n switch (state.node.type) {\n case \"TryStatement\":\n state.cv = { type: type, value: value, label: label };\n return;\n case \"CallExpression\":\n case \"NewExpression\":\n if (type === Interpreter.Completion.RETURN) {\n state.value = value;\n return;\n } else if (type !== Interpreter.Completion.THROW) {\n throw Error(\"Unsyntactic break/continue not rejected by Acorn\");\n }\n break;\n case \"Program\":\n // Don't pop the stateStack.\n // Leave the root scope on the tree in case the program is appended to.\n state.done = true;\n break loop;\n }\n if (type === Interpreter.Completion.BREAK) {\n if (\n label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop || state.isSwitch\n ) {\n stack.pop();\n return;\n }\n } else if (type === Interpreter.Completion.CONTINUE) {\n if (label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop) {\n return;\n }\n }\n }\n\n // Unhandled completion. Throw a real error.\n var realError;\n if (this.isa(value, this.ERROR)) {\n var errorTable = {\n EvalError: EvalError,\n RangeError: RangeError,\n ReferenceError: ReferenceError,\n SyntaxError: SyntaxError,\n TypeError: TypeError,\n URIError: URIError,\n };\n var name = String(this.getProperty(value, \"name\"));\n var message = this.getProperty(value, \"message\").valueOf();\n var errorConstructor = errorTable[name] || Error;\n realError = errorConstructor(message);\n realError.stack = String(this.getProperty(value, \"stack\"));\n } else {\n realError = String(value);\n }\n // Overwrite the previous (more or less random) interpreter return value.\n // Replace it with the error.\n this.value = realError;\n throw realError;\n};\n\n/**\n * AST to code. Summarizes the expression at the given node. Currently\n * not guaranteed to be correct or complete. Used for error messages.\n * E.g. `escape('hello') + 42` -> 'escape(...) + 42'\n * @param {!Object} node AST node.\n * @returns {string} Code string.\n */\nInterpreter.prototype.nodeSummary = function (node) {\n switch (node.type) {\n case \"ArrayExpression\":\n return \"[...]\";\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return this.nodeSummary(node.left) + \" \" + node.operator + \" \" + this.nodeSummary(node.right);\n case \"CallExpression\":\n return this.nodeSummary(node.callee) + \"(...)\";\n case \"ConditionalExpression\":\n return (\n this.nodeSummary(node.test) +\n \" ? \" +\n this.nodeSummary(node.consequent) +\n \" : \" +\n this.nodeSummary(node.alternate)\n );\n case \"Identifier\":\n return node.name;\n case \"Literal\":\n return node.raw;\n case \"MemberExpression\":\n var obj = this.nodeSummary(node.object);\n var prop = this.nodeSummary(node.property);\n return node.computed ? obj + \"[\" + prop + \"]\" : obj + \".\" + prop;\n case \"NewExpression\":\n return \"new \" + this.nodeSummary(node.callee) + \"(...)\";\n case \"ObjectExpression\":\n return \"{...}\";\n case \"ThisExpression\":\n return \"this\";\n case \"UnaryExpression\":\n return node.operator + \" \" + this.nodeSummary(node.argument);\n case \"UpdateExpression\":\n var argument = this.nodeSummary(node.argument);\n return node.prefix ? node.operator + argument : argument + node.operator;\n }\n return \"???\";\n};\n\n/**\n * Create a new queued task.\n * @param {boolean} isInterval True if setInterval, false if setTimeout.\n * @param {!Arguments} args Arguments from setInterval and setTimeout.\n * [code, delay]\n * [functionRef, delay, param1, param2, param3, ...]\n * @returns {number} PID of new task.\n * @private\n */\nInterpreter.prototype.createTask_ = function (isInterval, args) {\n var parentState = this.stateStack[this.stateStack.length - 1];\n var argsArray = Array.from(args);\n var exec = argsArray.shift();\n var delay = Math.max(Number(argsArray.shift() || 0), 0);\n var node = this.newNode();\n var scope, functionRef, ast;\n\n if (exec instanceof Interpreter.Object && exec.class === \"Function\") {\n // setTimeout/setInterval with a function reference.\n functionRef = exec;\n node.type = \"CallExpression\";\n scope = parentState.scope;\n } else {\n // setTimeout/setInterval with code string.\n try {\n ast = this.parse_(String(exec), \"taskCode\" + this.taskCodeNumber_++);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n this.throwException(this.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n node.type = \"EvalProgram_\";\n node.body = ast.body;\n // Change highlighting to encompas the string.\n var execNode = parentState.node.arguments[0];\n var execStart = execNode ? execNode.start : undefined;\n var execEnd = execNode ? execNode.end : undefined;\n Interpreter.stripLocations_(node, execStart, execEnd);\n scope = this.globalScope;\n argsArray.length = 0;\n }\n\n var task = new Interpreter.Task(functionRef, argsArray, scope, node, isInterval ? delay : -1);\n this.scheduleTask_(task, delay);\n return task.pid;\n};\n\n/**\n * Schedule a task to execute at some time in the future.\n * @param {!Interpreter.Task} task Task to schedule.\n * @param {number} delay Number of ms before the task should execute.\n * @private\n */\nInterpreter.prototype.scheduleTask_ = function (task, delay) {\n task.time = Date.now() + delay;\n // For optimum efficiency we could do a binary search and inject the task\n // at the right spot. But 'push' & 'sort' is just two lines of code.\n this.tasks.push(task);\n this.tasks.sort(function (a, b) {\n return a.time - b.time;\n });\n};\n\n/**\n * Delete a queued task.\n * @param {number} pid PID of task to delete.\n * @private\n */\nInterpreter.prototype.deleteTask_ = function (pid) {\n for (var i = 0; i < this.tasks.length; i++) {\n if (this.tasks[i].pid == pid) {\n this.tasks.splice(i, 1);\n break;\n }\n }\n};\n\n/**\n * Find the next queued task that's due to run.\n * @returns {Interpreter.State} Starting state of next task. Null if no task.\n * @private\n */\nInterpreter.prototype.nextTask_ = function () {\n var task = this.tasks[0];\n if (!task || task.time > Date.now()) {\n return null;\n }\n // Found a task that's due to run.\n this.tasks.shift();\n if (task.interval >= 0) {\n this.scheduleTask_(task, task.interval);\n }\n var state = new Interpreter.State(task.node, task.scope);\n if (task.functionRef) {\n // setTimeout/setInterval with a function reference.\n state.doneCallee_ = 2;\n state.funcThis_ = this.globalObject;\n state.func_ = task.functionRef;\n state.doneArgs_ = true;\n state.arguments_ = task.argsArray;\n }\n return state;\n};\n\n/**\n * Create a call to a getter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @private\n */\nInterpreter.prototype.createGetter_ = function (func, left) {\n if (!this.getterStep_) {\n throw Error(\"Unexpected call to createGetter\");\n }\n // Clear the getter flag.\n this.getterStep_ = false;\n // Normally `this` will be specified as the object component (o.x).\n // Sometimes `this` is explicitly provided (o).\n var funcThis = Array.isArray(left) ? left[0] : left;\n var node = this.newNode();\n node.type = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = 2;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [];\n return state;\n};\n\n/**\n * Create a call to a setter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value to set.\n * @private\n */\nInterpreter.prototype.createSetter_ = function (func, left, value) {\n if (!this.setterStep_) {\n throw Error(\"Unexpected call to createSetter\");\n }\n // Clear the setter flag.\n this.setterStep_ = false;\n // Normally `this` will be specified as the object component (o.x).\n // Sometimes `this` is implicitly the global object (x).\n var funcThis = Array.isArray(left) ? left[0] : this.globalObject;\n var node = this.newNode();\n node.type = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = 2;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [value];\n return state;\n};\n\n/**\n * In non-strict mode `this` must be an object.\n * Must not be called in strict mode.\n * @param {Interpreter.Value} value Proposed value for `this`.\n * @returns {!Interpreter.Object} Final value for `this`.\n * @private\n */\nInterpreter.prototype.boxThis_ = function (value) {\n if (value === undefined || value === null) {\n // `Undefined` and `null` are changed to the global object.\n return this.globalObject;\n }\n if (!(value instanceof Interpreter.Object)) {\n // Primitives must be boxed.\n var box = this.createObjectProto(this.getPrototype(value));\n box.data = value;\n return box;\n }\n return value;\n};\n\n/**\n * Return the global scope object.\n * @returns {!Interpreter.Scope} Scope object.\n */\nInterpreter.prototype.getGlobalScope = function () {\n return this.globalScope;\n};\n\n/**\n * Return the state stack.\n * @returns {!Array<!Interpreter.State>} State stack.\n */\nInterpreter.prototype.getStateStack = function () {\n return this.stateStack;\n};\n\n/**\n * Replace the state stack with a new one.\n * @param {!Array<!Interpreter.State>} newStack New state stack.\n */\nInterpreter.prototype.setStateStack = function (newStack) {\n this.stateStack = newStack;\n};\n\n/**\n * Typedef for JS values.\n * @typedef {!Interpreter.Object|boolean|number|string|undefined|null}\n */\nInterpreter.Value;\n\n/**\n * Class for a state.\n * @param {!Object} node AST node for the state.\n * @param {!Interpreter.Scope} scope Scope object for the state.\n * @type Class\n */\nclass State {\n constructor(node, scope) {\n this.node = node;\n this.scope = scope;\n }\n}\nInterpreter.State = State;\n/**\n * Class for a scope.\n * @param {Interpreter.Scope} parentScope Parent scope.\n * @param {boolean} strict True if \"use strict\".\n * @param {!Interpreter.Object} object Object containing scope's variables.\n * @type Class\n */\nclass Scope {\n constructor(parentScope, strict, object) {\n this.parentScope = parentScope;\n this.strict = strict;\n this.object = object;\n }\n}\nInterpreter.Scope = Scope;\n/**\n * Class for an object.\n * @param {Interpreter.Object} proto Prototype object or null.\n * @type Class\n */\nInterpreter.Object = function (proto) {\n this.getter = Object.create(null);\n this.setter = Object.create(null);\n this.properties = Object.create(null);\n this.proto = proto;\n};\n\n/** @type {Interpreter.Object} */\nInterpreter.Object.prototype.proto = null;\n\n/** @type {string} */\nInterpreter.Object.prototype.class = \"Object\";\n\n/** @type {Date|RegExp|boolean|number|string|null} */\nInterpreter.Object.prototype.data = null;\n\n/**\n * Convert this object into a string.\n * @returns {string} String value.\n * @override\n */\nInterpreter.Object.prototype.toString = function () {\n if (!Interpreter.currentInterpreter_) {\n // Called from outside an interpreter.\n return \"[object Interpreter.Object]\";\n }\n if (!(this instanceof Interpreter.Object)) {\n // Primitive value.\n return String(this);\n }\n\n if (this.class === \"Array\") {\n // Array contents must not have cycles.\n var cycles = Interpreter.toStringCycles_;\n cycles.push(this);\n try {\n var strs = [];\n // Truncate very long strings. This is not part of the spec,\n // but it prevents hanging the interpreter for gigantic arrays.\n var maxLength = this.properties.length;\n var truncated = false;\n if (maxLength > 1024) {\n maxLength = 1000;\n truncated = true;\n }\n for (var i = 0; i < maxLength; i++) {\n var value = this.properties[i];\n strs[i] =\n value instanceof Interpreter.Object && cycles.indexOf(value) !== -1 ? \"...\" : value;\n }\n if (truncated) {\n strs.push(\"...\");\n }\n } finally {\n cycles.pop();\n }\n return strs.join(\",\");\n }\n\n if (this.class === \"Error\") {\n // Error name and message properties must not have cycles.\n var cycles = Interpreter.toStringCycles_;\n if (cycles.indexOf(this) !== -1) {\n return \"[object Error]\";\n }\n var name, message;\n // Bug: Does not support getters and setters for name or message.\n var obj = this;\n do {\n if (\"name\" in obj.properties) {\n name = obj.properties.name;\n break;\n }\n } while ((obj = obj.proto));\n obj = this;\n do {\n if (\"message\" in obj.properties) {\n message = obj.properties.message;\n break;\n }\n } while ((obj = obj.proto));\n cycles.push(this);\n try {\n name = name && String(name);\n message = message && String(message);\n } finally {\n cycles.pop();\n }\n return message ? name + \": \" + message : String(name);\n }\n\n if (this.data !== null) {\n // RegExp, Date, and boxed primitives.\n return String(this.data);\n }\n\n return \"[object \" + this.class + \"]\";\n};\n\n/**\n * Return the object's value.\n * @returns {Interpreter.Value} Value.\n * @override\n */\nInterpreter.Object.prototype.valueOf = function () {\n if (!Interpreter.currentInterpreter_) {\n // Called from outside an interpreter.\n return this;\n }\n if (this.data === undefined || this.data === null || this.data instanceof RegExp) {\n return this; // An Object, RegExp, or primitive.\n }\n if (this.data instanceof Date) {\n return this.data.valueOf(); // Milliseconds.\n }\n return /** @type {(boolean|number|string)} */ (this.data); // Boxed primitive.\n};\n\n/**\n * Class for a task.\n * @param {!Interpreter.Object|undefined} functionRef Function to call.\n * @param {!Array<Interpreter.Value>} argsArray Array of arguments.\n * @param {!Interpreter.Scope} scope Scope for this task.\n * @param {!Object} node AST node to execute.\n * @param {number} interval Number of ms this task repeats. -1 for no repeats.\n * @struct\n * @constructor\n */\nInterpreter.Task = function (functionRef, argsArray, scope, node, interval) {\n this.functionRef = functionRef;\n this.argsArray = argsArray;\n this.scope = scope;\n this.node = node;\n\n this.interval = interval;\n this.pid = ++Interpreter.Task.pid;\n this.time = 0;\n};\n\nInterpreter.Task.pid = 0;\n\n///////////////////////////////////////////////////////////////////////////////\n// Functions to handle each node type.\n///////////////////////////////////////////////////////////////////////////////\n\nInterpreter.prototype[\"stepArrayExpression\"] = function (stack, state, node) {\n var elements = node.elements;\n var n = state.n_ || 0;\n if (!state.array_) {\n state.array_ = this.createArray();\n state.array_.properties.length = elements.length;\n } else {\n this.setProperty(state.array_, n, state.value);\n n++;\n }\n while (n < elements.length) {\n // Skip missing elements - they're not defined, not undefined.\n if (elements[n]) {\n state.n_ = n;\n return new Interpreter.State(elements[n], state.scope);\n }\n n++;\n }\n stack.pop();\n stack[stack.length - 1].value = state.array_;\n};\n\nInterpreter.prototype[\"stepAssignmentExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node.left, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.doneRight_) {\n if (!state.leftReference_) {\n state.leftReference_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_ && node.operator !== \"=\") {\n var leftValue = this.getValue(state.leftReference_);\n state.leftValue_ = leftValue;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftReference_);\n }\n }\n state.doneRight_ = true;\n // When assigning an unnamed function to a variable, the function's name\n // is set to the variable name. Record the variable name in case the\n // right side is a functionExpression.\n // E.g. foo = function() {};\n if (node.operator === \"=\" && node.left.type === \"Identifier\") {\n state.destinationName = node.left.name;\n }\n return new Interpreter.State(node.right, state.scope);\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var value = state.leftValue_;\n var rightValue = state.value;\n switch (node.operator) {\n case \"=\":\n value = rightValue;\n break;\n case \"+=\":\n value += rightValue;\n break;\n case \"-=\":\n value -= rightValue;\n break;\n case \"*=\":\n value *= rightValue;\n break;\n case \"/=\":\n value /= rightValue;\n break;\n case \"%=\":\n value %= rightValue;\n break;\n case \"<<=\":\n value <<= rightValue;\n break;\n case \">>=\":\n value >>= rightValue;\n break;\n case \">>>=\":\n value >>>= rightValue;\n break;\n case \"&=\":\n value &= rightValue;\n break;\n case \"^=\":\n value ^= rightValue;\n break;\n case \"|=\":\n value |= rightValue;\n break;\n default:\n throw SyntaxError(\"Unknown assignment expression: \" + node.operator);\n }\n var setter = this.setValue(state.leftReference_, value);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = value;\n return this.createSetter_(setter, state.leftReference_, value);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBinaryExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node.left, state.scope);\n }\n if (!state.doneRight_) {\n state.doneRight_ = true;\n state.leftValue_ = state.value;\n return new Interpreter.State(node.right, state.scope);\n }\n stack.pop();\n var leftValue = state.leftValue_;\n var rightValue = state.value;\n var value;\n switch (node.operator) {\n case \"==\":\n value = leftValue == rightValue;\n break;\n case \"!=\":\n value = leftValue != rightValue;\n break;\n case \"===\":\n value = leftValue === rightValue;\n break;\n case \"!==\":\n value = leftValue !== rightValue;\n break;\n case \">\":\n value = leftValue > rightValue;\n break;\n case \">=\":\n value = leftValue >= rightValue;\n break;\n case \"<\":\n value = leftValue < rightValue;\n break;\n case \"<=\":\n value = leftValue <= rightValue;\n break;\n case \"+\":\n value = leftValue + rightValue;\n break;\n case \"-\":\n value = leftValue - rightValue;\n break;\n case \"*\":\n value = leftValue * rightValue;\n break;\n case \"/\":\n value = leftValue / rightValue;\n break;\n case \"%\":\n value = leftValue % rightValue;\n break;\n case \"&\":\n value = leftValue & rightValue;\n break;\n case \"|\":\n value = leftValue | rightValue;\n break;\n case \"^\":\n value = leftValue ^ rightValue;\n break;\n case \"<<\":\n value = leftValue << rightValue;\n break;\n case \">>\":\n value = leftValue >> rightValue;\n break;\n case \">>>\":\n value = leftValue >>> rightValue;\n break;\n case \"in\":\n if (!(rightValue instanceof Interpreter.Object)) {\n this.throwException(this.TYPE_ERROR, \"'in' expects an object, not '\" + rightValue + \"'\");\n }\n value = this.hasProperty(rightValue, leftValue);\n break;\n case \"instanceof\":\n if (!this.isa(rightValue, this.FUNCTION)) {\n this.throwException(\n this.TYPE_ERROR,\n \"'instanceof' expects an object, not '\" + rightValue + \"'\"\n );\n }\n value = leftValue instanceof Interpreter.Object ? this.isa(leftValue, rightValue) : false;\n break;\n default:\n throw SyntaxError(\"Unknown binary operator: \" + node.operator);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBlockStatement\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.body[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepBreakStatement\"] = function (stack, state, node) {\n var label = node.label && node.label.name;\n this.unwind(Interpreter.Completion.BREAK, undefined, label);\n};\n\n/**\n * Number of evals called by the interpreter.\n * @private\n */\nInterpreter.prototype.evalCodeNumber_ = 0;\n\nInterpreter.prototype[\"stepCallExpression\"] = function (stack, state, node) {\n // Handles both CallExpression and NewExpression.\n if (!state.doneCallee_) {\n state.doneCallee_ = 1;\n // Components needed to determine value of `this`.\n var nextState = new Interpreter.State(node.callee, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (state.doneCallee_ === 1) {\n // Determine value of the function.\n state.doneCallee_ = 2;\n var func = state.value;\n if (Array.isArray(func)) {\n state.func_ = this.getValue(func);\n if (func[0] === Interpreter.SCOPE_REFERENCE) {\n // (Globally or locally) named function. Is it named 'eval'?\n state.directEval_ = func[1] === \"eval\";\n } else {\n // Method function, `this` is object (ignored if invoked as `new`).\n state.funcThis_ = func[0];\n }\n func = state.func_;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneCallee_ = 1;\n return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value);\n }\n } else {\n // Already evaluated function: (function(){...})();\n state.func_ = func;\n }\n state.arguments_ = [];\n state.n_ = 0;\n }\n var func = state.func_;\n if (!state.doneArgs_) {\n if (state.n_ !== 0) {\n state.arguments_.push(state.value);\n }\n if (node.arguments[state.n_]) {\n return new Interpreter.State(node.arguments[state.n_++], state.scope);\n }\n // Determine value of `this` in function.\n if (node.type === \"NewExpression\") {\n if (!(func instanceof Interpreter.Object) || func.illegalConstructor) {\n // Illegal: new escape();\n this.throwException(\n this.TYPE_ERROR,\n this.nodeSummary(node.callee) + \" is not a constructor\"\n );\n }\n // Constructor, `this` is new object.\n if (func === this.ARRAY) {\n state.funcThis_ = this.createArray();\n } else {\n var proto = func.properties[\"prototype\"];\n if (typeof proto !== \"object\" || proto === null) {\n // Non-object prototypes default to `Object.prototype`.\n proto = this.OBJECT_PROTO;\n }\n state.funcThis_ = this.createObjectProto(proto);\n }\n state.isConstructor = true;\n }\n state.doneArgs_ = true;\n }\n if (!state.doneExec_) {\n state.doneExec_ = true;\n if (!(func instanceof Interpreter.Object)) {\n this.throwException(this.TYPE_ERROR, this.nodeSummary(node.callee) + \" is not a function\");\n }\n var funcNode = func.node;\n if (funcNode) {\n var scope = this.createScope(funcNode.body, func.parentScope);\n // Build arguments variable.\n var argsList = this.createArray();\n for (var i = 0; i < state.arguments_.length; i++) {\n this.setProperty(argsList, i, state.arguments_[i]);\n }\n this.setProperty(scope.object, \"arguments\", argsList);\n // Add all arguments (may clobber 'arguments' if a param is named such).\n for (var i = 0; i < funcNode.params.length; i++) {\n var paramName = funcNode.params[i].name;\n var paramValue = state.arguments_.length > i ? state.arguments_[i] : undefined;\n this.setProperty(scope.object, paramName, paramValue);\n }\n if (!scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n this.setProperty(scope.object, \"this\", state.funcThis_, Interpreter.READONLY_DESCRIPTOR);\n state.value = undefined; // Default value if no explicit return.\n return new Interpreter.State(funcNode.body, scope);\n } else if (func.eval) {\n var code = state.arguments_[0];\n if (typeof code !== \"string\") {\n // JS does not parse String objects:\n // eval(new String('1 + 1')) -> '1 + 1'\n state.value = code;\n } else {\n try {\n var ast = this.parse_(String(code), \"eval\" + this.evalCodeNumber_++);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n this.throwException(this.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n var evalNode = this.newNode();\n evalNode.type = \"EvalProgram_\";\n evalNode.body = ast.body;\n Interpreter.stripLocations_(evalNode, node.start, node.end);\n // Create new scope and update it with definitions in eval().\n var scope = state.directEval_ ? state.scope : this.globalScope;\n if (scope.strict) {\n // Strict mode get its own scope in eval.\n scope = this.createScope(ast, scope);\n } else {\n // Non-strict mode pollutes the current scope.\n this.populateScope_(ast, scope);\n }\n this.value = undefined; // Default value if no code.\n return new Interpreter.State(evalNode, scope);\n }\n } else if (func.nativeFunc) {\n if (!state.scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_);\n } else if (func.asyncFunc) {\n var thisInterpreter = this;\n var callback = function (value) {\n state.value = value;\n thisInterpreter.paused_ = false;\n };\n // Force the argument lengths to match, then append the callback.\n var argLength = func.asyncFunc.length - 1;\n var argsWithCallback = state.arguments_.concat(new Array(argLength)).slice(0, argLength);\n argsWithCallback.push(callback);\n this.paused_ = true;\n if (!state.scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n func.asyncFunc.apply(state.funcThis_, argsWithCallback);\n return;\n } else {\n /* A child of a function is a function but is not callable. For example:\n var F = function() {};\n F.prototype = escape;\n var f = new F();\n f();\n */\n this.throwException(this.TYPE_ERROR, this.nodeSummary(node.callee) + \" is not callable\");\n }\n } else {\n // Execution complete. Put the return value on the stack.\n stack.pop();\n if (state.isConstructor && typeof state.value !== \"object\") {\n // Normal case for a constructor is to use the `this` value.\n stack[stack.length - 1].value = state.funcThis_;\n } else {\n // Non-constructors or constructions explicitly returning objects use\n // the return value.\n stack[stack.length - 1].value = state.value;\n }\n }\n};\n\nInterpreter.prototype[\"stepConditionalExpression\"] = function (stack, state, node) {\n // Handles both ConditionalExpression and IfStatement.\n var mode = state.mode_ || 0;\n if (mode === 0) {\n state.mode_ = 1;\n return new Interpreter.State(node.test, state.scope);\n }\n if (mode === 1) {\n state.mode_ = 2;\n var value = Boolean(state.value);\n if (value && node.consequent) {\n // Execute `if` block.\n return new Interpreter.State(node.consequent, state.scope);\n } else if (!value && node.alternate) {\n // Execute `else` block.\n return new Interpreter.State(node.alternate, state.scope);\n }\n // eval('1;if(false){2}') -> undefined\n this.value = undefined;\n }\n stack.pop();\n if (node.type === \"ConditionalExpression\") {\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepContinueStatement\"] = function (stack, state, node) {\n var label = node.label && node.label.name;\n this.unwind(Interpreter.Completion.CONTINUE, undefined, label);\n};\n\nInterpreter.prototype[\"stepDebuggerStatement\"] = function (stack, state, node) {\n // Do nothing. May be overridden by developers.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepDoWhileStatement\"] = function (stack, state, node) {\n // Handles both DoWhileStatement and WhileStatement.\n if (node.type === \"DoWhileStatement\" && state.test_ === undefined) {\n // First iteration of do/while executes without checking test.\n state.value = true;\n state.test_ = true;\n }\n if (!state.test_) {\n state.test_ = true;\n return new Interpreter.State(node.test, state.scope);\n }\n if (!state.value) {\n // Done, exit loop.\n stack.pop();\n } else if (node.body) {\n // Execute the body.\n state.test_ = false;\n state.isLoop = true;\n return new Interpreter.State(node.body, state.scope);\n }\n};\n\nInterpreter.prototype[\"stepEmptyStatement\"] = function (stack, state, node) {\n stack.pop();\n};\n\nInterpreter.prototype[\"stepEvalProgram_\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.body[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = this.value;\n};\n\nInterpreter.prototype[\"stepExpressionStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n this.value = undefined;\n state.done_ = true;\n return new Interpreter.State(node.expression, state.scope);\n }\n stack.pop();\n // Save this value to interpreter.value for use as a return value if\n // this code is inside an eval function.\n this.value = state.value;\n};\n\nInterpreter.prototype[\"stepForInStatement\"] = function (stack, state, node) {\n // First, initialize a variable if exists. Only do so once, ever.\n if (!state.doneInit_) {\n state.doneInit_ = true;\n if (node.left.declarations && node.left.declarations[0].init) {\n if (state.scope.strict) {\n this.throwException(\n this.SYNTAX_ERROR,\n \"for-in loop variable declaration may not have an initializer\"\n );\n }\n // Variable initialization: for (var x = 4 in y)\n return new Interpreter.State(node.left, state.scope);\n }\n }\n // Second, look up the object. Only do so once, ever.\n if (!state.doneObject_) {\n state.doneObject_ = true;\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n return new Interpreter.State(node.right, state.scope);\n }\n if (!state.isLoop) {\n // First iteration.\n state.isLoop = true;\n state.object_ = state.value;\n state.visited_ = Object.create(null);\n }\n // Third, find the property name for this iteration.\n if (state.name_ === undefined) {\n gotPropName: while (true) {\n if (state.object_ instanceof Interpreter.Object) {\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_.properties);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this object's properties.\n }\n if (!Object.prototype.hasOwnProperty.call(state.object_.properties, prop)) {\n continue; // Property has been deleted in the loop.\n }\n if (state.visited_[prop]) {\n continue; // Already seen this property on a child.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n } else if (state.object_ !== null && state.object_ !== undefined) {\n // Primitive value (other than null or undefined).\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this value's properties.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n }\n state.object_ = this.getPrototype(state.object_);\n state.props_ = null;\n if (state.object_ === null) {\n // Done, exit loop.\n stack.pop();\n return;\n }\n }\n }\n // Fourth, find the variable\n if (!state.doneVariable_) {\n state.doneVariable_ = true;\n var left = node.left;\n if (left.type === \"VariableDeclaration\") {\n // Inline variable declaration: for (var x in y)\n state.variable_ = [Interpreter.SCOPE_REFERENCE, left.declarations[0].id.name];\n } else {\n // Arbitrary left side: for (foo().bar in y)\n state.variable_ = null;\n var nextState = new Interpreter.State(left, state.scope);\n nextState.components = true;\n return nextState;\n }\n }\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n // Fifth, set the variable.\n if (!state.doneSetter_) {\n state.doneSetter_ = true;\n var value = state.name_;\n var setter = this.setValue(state.variable_, value);\n if (setter) {\n return this.createSetter_(setter, state.variable_, value);\n }\n }\n // Next step will be step three.\n state.name_ = undefined;\n // Reevaluate the variable since it could be a setter on the global object.\n state.doneVariable_ = false;\n state.doneSetter_ = false;\n // Sixth and finally, execute the body if there was one.\n if (node.body) {\n return new Interpreter.State(node.body, state.scope);\n }\n};\n\nInterpreter.prototype[\"stepForStatement\"] = function (stack, state, node) {\n switch (state.mode_) {\n default:\n state.mode_ = 1;\n if (node.init) {\n return new Interpreter.State(node.init, state.scope);\n }\n break;\n case 1:\n state.mode_ = 2;\n if (node.test) {\n return new Interpreter.State(node.test, state.scope);\n }\n break;\n case 2:\n state.mode_ = 3;\n if (node.test && !state.value) {\n // Done, exit loop.\n stack.pop();\n } else {\n // Execute the body.\n state.isLoop = true;\n return new Interpreter.State(node.body, state.scope);\n }\n break;\n case 3:\n state.mode_ = 1;\n if (node.update) {\n return new Interpreter.State(node.update, state.scope);\n }\n break;\n }\n};\n\nInterpreter.prototype[\"stepFunctionDeclaration\"] = function (stack, state, node) {\n // This was found and handled when the scope was populated.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepFunctionExpression\"] = function (stack, state, node) {\n stack.pop();\n state = stack[stack.length - 1];\n var parentScope = state.scope;\n if (node.id) {\n // Create a tiny scope to store the function name.\n // E.g. var x = function foo(){};\n parentScope = this.createSpecialScope(parentScope);\n }\n state.value = this.createFunction(node, parentScope, state.destinationName);\n if (node.id) {\n // Record the function name, read-only.\n this.setProperty(\n parentScope.object,\n node.id.name,\n state.value,\n Interpreter.READONLY_DESCRIPTOR\n );\n }\n};\n\nInterpreter.prototype[\"stepIdentifier\"] = function (stack, state, node) {\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node.name];\n return;\n }\n var value = this.getValueFromScope(node.name);\n // An identifier could be a getter if it's a property on the global object.\n if (this.getterStep_) {\n // Call the getter function.\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, this.globalObject);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepIfStatement\"] = Interpreter.prototype[\"stepConditionalExpression\"];\n\nInterpreter.prototype[\"stepLabeledStatement\"] = function (stack, state, node) {\n // No need to hit this node again on the way back up the stack.\n stack.pop();\n // Note that a statement might have multiple labels.\n var labels = state.labels || [];\n labels.push(node.label.name);\n var nextState = new Interpreter.State(node.body, state.scope);\n nextState.labels = labels;\n return nextState;\n};\n\nInterpreter.prototype[\"stepLiteral\"] = function (stack, state, node) {\n stack.pop();\n var value = node.value;\n if (value instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, value);\n value = pseudoRegexp;\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepLogicalExpression\"] = function (stack, state, node) {\n if (node.operator !== \"&&\" && node.operator !== \"||\") {\n throw SyntaxError(\"Unknown logical operator: \" + node.operator);\n }\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node.left, state.scope);\n }\n if (!state.doneRight_) {\n if ((node.operator === \"&&\" && !state.value) || (node.operator === \"||\" && state.value)) {\n // Shortcut evaluation.\n stack.pop();\n stack[stack.length - 1].value = state.value;\n } else {\n state.doneRight_ = true;\n return new Interpreter.State(node.right, state.scope);\n }\n } else {\n stack.pop();\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepMemberExpression\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node.object, state.scope);\n }\n var propName;\n if (!node.computed) {\n state.object_ = state.value;\n // obj.foo -- Just access `foo` directly.\n propName = node.property.name;\n } else if (!state.doneProperty_) {\n state.object_ = state.value;\n // obj[foo] -- Compute value of `foo`.\n state.doneProperty_ = true;\n return new Interpreter.State(node.property, state.scope);\n } else {\n propName = state.value;\n }\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [state.object_, propName];\n } else {\n var value = this.getProperty(state.object_, propName);\n if (this.getterStep_) {\n // Call the getter function.\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, state.object_);\n }\n stack[stack.length - 1].value = value;\n }\n};\n\nInterpreter.prototype[\"stepNewExpression\"] = Interpreter.prototype[\"stepCallExpression\"];\n\nInterpreter.prototype[\"stepObjectExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var property = node.properties[n];\n if (!state.object_) {\n // First execution.\n state.object_ = this.createObjectProto(this.OBJECT_PROTO);\n state.properties_ = Object.create(null);\n } else {\n // Set the property computed in the previous execution.\n var propName = state.destinationName;\n if (!state.properties_[propName]) {\n // Create temp object to collect value, getter, and/or setter.\n state.properties_[propName] = {};\n }\n state.properties_[propName][property.kind] = state.value;\n state.n_ = ++n;\n property = node.properties[n];\n }\n if (property) {\n // Determine property name.\n var key = property.key;\n if (key.type === \"Identifier\") {\n var propName = key.name;\n } else if (key.type === \"Literal\") {\n var propName = key.value;\n } else {\n throw SyntaxError(\"Unknown object structure: \" + key.type);\n }\n // When assigning an unnamed function to a property, the function's name\n // is set to the property name. Record the property name in case the\n // value is a functionExpression.\n // E.g. {foo: function() {}}\n state.destinationName = propName;\n return new Interpreter.State(property.value, state.scope);\n }\n for (var key in state.properties_) {\n var kinds = state.properties_[key];\n if (\"get\" in kinds || \"set\" in kinds) {\n // Set a property with a getter or setter.\n var descriptor = {\n configurable: true,\n enumerable: true,\n get: kinds[\"get\"],\n set: kinds[\"set\"],\n };\n this.setProperty(state.object_, key, Interpreter.VALUE_IN_DESCRIPTOR, descriptor);\n } else {\n // Set a normal property with a value.\n this.setProperty(state.object_, key, kinds[\"init\"]);\n }\n }\n stack.pop();\n stack[stack.length - 1].value = state.object_;\n};\n\nInterpreter.prototype[\"stepProgram\"] = function (stack, state, node) {\n var expression = node.body.shift();\n if (expression) {\n state.done = false;\n return new Interpreter.State(expression, state.scope);\n }\n state.done = true;\n // Don't pop the stateStack.\n // Leave the root scope on the tree in case the program is appended to.\n};\n\nInterpreter.prototype[\"stepReturnStatement\"] = function (stack, state, node) {\n if (node.argument && !state.done_) {\n state.done_ = true;\n return new Interpreter.State(node.argument, state.scope);\n }\n this.unwind(Interpreter.Completion.RETURN, state.value, undefined);\n};\n\nInterpreter.prototype[\"stepSequenceExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.expressions[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = state.value;\n};\n\nInterpreter.prototype[\"stepSwitchStatement\"] = function (stack, state, node) {\n if (!state.test_) {\n state.test_ = 1;\n return new Interpreter.State(node.discriminant, state.scope);\n }\n if (state.test_ === 1) {\n state.test_ = 2;\n // Preserve switch value between case tests.\n state.switchValue_ = state.value;\n state.defaultCase_ = -1;\n }\n\n while (true) {\n var index = state.index_ || 0;\n var switchCase = node.cases[index];\n if (!state.matched_ && switchCase && !switchCase.test) {\n // Test on the default case is null.\n // Bypass (but store) the default case, and get back to it later.\n state.defaultCase_ = index;\n state.index_ = index + 1;\n continue;\n }\n if (!switchCase && !state.matched_ && state.defaultCase_ !== -1) {\n // Ran through all cases, no match. Jump to the default.\n state.matched_ = true;\n state.index_ = state.defaultCase_;\n continue;\n }\n if (switchCase) {\n if (!state.matched_ && !state.tested_ && switchCase.test) {\n state.tested_ = true;\n return new Interpreter.State(switchCase.test, state.scope);\n }\n if (state.matched_ || state.value === state.switchValue_) {\n state.matched_ = true;\n var n = state.n_ || 0;\n if (switchCase.consequent[n]) {\n state.isSwitch = true;\n state.n_ = n + 1;\n return new Interpreter.State(switchCase.consequent[n], state.scope);\n }\n }\n // Move on to next case.\n state.tested_ = false;\n state.n_ = 0;\n state.index_ = index + 1;\n } else {\n stack.pop();\n return;\n }\n }\n};\n\nInterpreter.prototype[\"stepThisExpression\"] = function (stack, state, node) {\n stack.pop();\n stack[stack.length - 1].value = this.getValueFromScope(\"this\");\n};\n\nInterpreter.prototype[\"stepThrowStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n return new Interpreter.State(node.argument, state.scope);\n } else {\n this.throwException(state.value);\n }\n};\n\nInterpreter.prototype[\"stepTryStatement\"] = function (stack, state, node) {\n // This step also handles all CatchClause nodes, since these nodes can\n // only appear inside the `handler` property of a TryStatement node.\n if (!state.doneBlock_) {\n state.doneBlock_ = true;\n return new Interpreter.State(node.block, state.scope);\n }\n if (\n state.cv &&\n state.cv.type === Interpreter.Completion.THROW &&\n !state.doneHandler_ &&\n node.handler\n ) {\n state.doneHandler_ = true;\n // Create an new scope and add the error variable.\n var scope = this.createSpecialScope(state.scope);\n this.setProperty(scope.object, node.handler.param.name, state.cv.value);\n state.cv = undefined; // This error has been handled, don't rethrow.\n // Execute catch clause.\n return new Interpreter.State(node.handler.body, scope);\n }\n if (!state.doneFinalizer_ && node.finalizer) {\n state.doneFinalizer_ = true;\n return new Interpreter.State(node.finalizer, state.scope);\n }\n stack.pop();\n if (state.cv) {\n // There was no catch handler, or the catch/finally threw an error.\n // Throw the error up to a higher try.\n this.unwind(state.cv.type, state.cv.value, state.cv.label);\n }\n};\n\nInterpreter.prototype[\"stepUnaryExpression\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n var nextState = new Interpreter.State(node.argument, state.scope);\n nextState.components = node.operator === \"delete\";\n return nextState;\n }\n stack.pop();\n var value = state.value;\n switch (node.operator) {\n case \"-\":\n value = -value;\n break;\n case \"+\":\n value = +value;\n break;\n case \"!\":\n value = !value;\n break;\n case \"~\":\n value = ~value;\n break;\n case \"delete\":\n var result = true;\n // If value is not an array, then it is a primitive, or some other value.\n // If so, skip the delete and return true.\n if (Array.isArray(value)) {\n var obj = value[0];\n if (obj === Interpreter.SCOPE_REFERENCE) {\n // `delete foo;` is the same as `delete window.foo;`.\n obj = state.scope;\n }\n var name = String(value[1]);\n try {\n delete obj.properties[name];\n } catch (_e) {\n if (state.scope.strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot delete property '\" + name + \"' of '\" + obj + \"'\"\n );\n } else {\n result = false;\n }\n }\n }\n value = result;\n break;\n case \"typeof\":\n value = value && value.class === \"Function\" ? \"function\" : typeof value;\n break;\n case \"void\":\n value = undefined;\n break;\n default:\n throw SyntaxError(\"Unknown unary operator: \" + node.operator);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepUpdateExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node.argument, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.leftSide_) {\n state.leftSide_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_) {\n var leftValue = this.getValue(state.leftSide_);\n state.leftValue_ = leftValue;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftSide_);\n }\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var leftValue = Number(state.leftValue_);\n var changeValue;\n if (node.operator === \"++\") {\n changeValue = leftValue + 1;\n } else if (node.operator === \"--\") {\n changeValue = leftValue - 1;\n } else {\n throw SyntaxError(\"Unknown update expression: \" + node.operator);\n }\n var returnValue = node.prefix ? changeValue : leftValue;\n var setter = this.setValue(state.leftSide_, changeValue);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = returnValue;\n return this.createSetter_(setter, state.leftSide_, changeValue);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = returnValue;\n};\n\nInterpreter.prototype[\"stepVariableDeclaration\"] = function (stack, state, node) {\n // This step also handles all VariableDeclarator nodes, since these nodes can\n // only appear inside the `declarations` array of a VariableDeclaration node.\n var declarations = node.declarations;\n var n = state.n_ || 0;\n var declarationNode = declarations[n];\n if (state.init_ && declarationNode) {\n // This setValue call never needs to deal with calling a setter function.\n // Note that this is setting the init value, not defining the variable.\n // Variable definition is done when scope is populated.\n this.setValueToScope(declarationNode.id.name, state.value);\n state.init_ = false;\n declarationNode = declarations[++n];\n }\n while (declarationNode) {\n // Skip any declarations that are not initialized. They have already\n // been defined as undefined in populateScope_.\n if (declarationNode.init) {\n state.n_ = n;\n state.init_ = true;\n // When assigning an unnamed function to a variable, the function's name\n // is set to the variable name. Record the variable name in case the\n // right side is a functionExpression.\n // E.g. var foo = function() {};\n state.destinationName = declarationNode.id.name;\n return new Interpreter.State(declarationNode.init, state.scope);\n }\n declarationNode = declarations[++n];\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepWithStatement\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node.object, state.scope);\n }\n stack.pop();\n var scope = this.createSpecialScope(state.scope, state.value);\n return new Interpreter.State(node.body, scope);\n};\n\nInterpreter.prototype[\"stepWhileStatement\"] = Interpreter.prototype[\"stepDoWhileStatement\"];\n\n// Preserve top-level API functions from being pruned/renamed by JS compilers.\n// Add others as needed.\nInterpreter.nativeGlobal[\"Interpreter\"] = Interpreter;\nInterpreter.prototype[\"step\"] = Interpreter.prototype.step;\nInterpreter.prototype[\"run\"] = Interpreter.prototype.run;\nInterpreter.prototype[\"appendCode\"] = Interpreter.prototype.appendCode;\nInterpreter.prototype[\"createObject\"] = Interpreter.prototype.createObject;\nInterpreter.prototype[\"createObjectProto\"] = Interpreter.prototype.createObjectProto;\nInterpreter.prototype[\"createAsyncFunction\"] = Interpreter.prototype.createAsyncFunction;\nInterpreter.prototype[\"createNativeFunction\"] = Interpreter.prototype.createNativeFunction;\nInterpreter.prototype[\"getProperty\"] = Interpreter.prototype.getProperty;\nInterpreter.prototype[\"setProperty\"] = Interpreter.prototype.setProperty;\nInterpreter.prototype[\"getStatus\"] = Interpreter.prototype.getStatus;\nInterpreter.prototype[\"nativeToPseudo\"] = Interpreter.prototype.nativeToPseudo;\nInterpreter.prototype[\"pseudoToNative\"] = Interpreter.prototype.pseudoToNative;\nInterpreter.prototype[\"getGlobalScope\"] = Interpreter.prototype.getGlobalScope;\nInterpreter.prototype[\"getStateStack\"] = Interpreter.prototype.getStateStack;\nInterpreter.prototype[\"setStateStack\"] = Interpreter.prototype.setStateStack;\nInterpreter[\"VALUE_IN_DESCRIPTOR\"] = Interpreter.VALUE_IN_DESCRIPTOR;\nInterpreter[\"Status\"] = Interpreter.Status;\n\nexport { Interpreter };\n",
129
86
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n IExecutePreviewContext,\n Task,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n value: {\n title: \"Value\",\n description: \"Input object or array to query\",\n },\n path: {\n type: \"string\",\n title: \"Path\",\n description: \"Dot-notation path to extract (e.g. 'a.b.c', 'items.0.name', 'items.*.name')\",\n },\n },\n required: [\"value\", \"path\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: {\n title: \"Result\",\n description: \"Extracted value(s) from the path\",\n },\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonPathTaskInput = FromSchema<typeof inputSchema>;\nexport type JsonPathTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Resolves a dot-notation path against an object. Supports wildcard '*' for\n * iterating over array elements or object keys at a given level.\n */\nfunction resolvePath(obj: unknown, segments: readonly string[]): unknown {\n if (segments.length === 0) return obj;\n\n const [head, ...tail] = segments;\n\n if (head === \"*\") {\n if (Array.isArray(obj)) {\n const results = obj.map((item) => resolvePath(item, tail));\n return tail.length > 0 ? results.flat() : results;\n }\n if (obj !== null && typeof obj === \"object\") {\n const results = Object.values(obj).map((v) => resolvePath(v, tail));\n return tail.length > 0 ? results.flat() : results;\n }\n return undefined;\n }\n\n if (obj === null || obj === undefined || typeof obj !== \"object\") {\n return undefined;\n }\n\n const next = (obj as Record<string, unknown>)[head];\n return resolvePath(next, tail);\n}\n\nfunction extractJsonPath(value: unknown, path: string): unknown {\n const segments = path.split(\".\");\n return resolvePath(value, segments);\n}\n\nexport class JsonPathTask<\n Input extends JsonPathTaskInput = JsonPathTaskInput,\n Output extends JsonPathTaskOutput = JsonPathTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"JsonPathTask\";\n static override readonly category = \"Utility\";\n public static override title = \"JSON Path\";\n public static override description = \"Extracts a value from an object using a dot-notation path\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output | undefined> {\n return { result: extractJsonPath(input.value, input.path) } as Output;\n }\n\n override async executePreview(\n input: Input,\n _context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return { result: extractJsonPath(input.value, input.path) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n jsonPath: CreateWorkflow<JsonPathTaskInput, JsonPathTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.jsonPath = CreateWorkflow(JsonPathTask);\n",
130
87
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createGraphFromDependencyJSON,\n createGraphFromGraphJSON,\n CreateWorkflow,\n Dataflow,\n GraphAsTask,\n GraphAsTaskConfig,\n JsonTaskItem,\n TaskConfig,\n TaskConfigurationError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport type { TaskGraphJson } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n json: {\n type: \"string\",\n title: \"JSON\",\n description: \"The JSON to parse\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskInput = FromSchema<typeof inputSchema>;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"Output depends on the generated task graph\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * JsonTask is a specialized task that creates and manages task graphs from JSON configurations.\n * It allows dynamic creation of task networks by parsing JSON definitions of tasks and their relationships.\n */\nexport class JsonTask<\n Input extends JsonTaskInput = JsonTaskInput,\n Output extends JsonTaskOutput = JsonTaskOutput,\n Config extends GraphAsTaskConfig<Input> = GraphAsTaskConfig<Input>,\n> extends GraphAsTask<Input, Output, Config> {\n public static override type = \"JsonTask\";\n public static override category = \"Hidden\";\n public static override title = \"JSON Task\";\n public static override description =\n \"A task that creates and manages task graphs from JSON configurations\";\n\n public static override inputSchema() {\n return inputSchema;\n }\n\n public static override outputSchema() {\n return outputSchema;\n }\n\n /**\n * Regenerates the entire task graph based on the current JSON input\n * Creates task nodes and establishes data flow connections between them\n */\n public override regenerateGraph() {\n if (!this.runInputData.json) return;\n const data = JSON.parse(this.runInputData.json) as\n | TaskGraphJson\n | JsonTaskItem[]\n | JsonTaskItem;\n\n // Graph format: { tasks, dataflows } (e.g. from builder export)\n if (\n data &&\n typeof data === \"object\" &&\n \"tasks\" in data &&\n Array.isArray((data as TaskGraphJson).tasks) &&\n \"dataflows\" in data &&\n Array.isArray((data as TaskGraphJson).dataflows)\n ) {\n this.subGraph = createGraphFromGraphJSON(data as TaskGraphJson, this.runConfig?.registry);\n super.regenerateGraph();\n return;\n }\n\n // Dependency format: array of JsonTaskItem (or single item)\n let jsonItems: JsonTaskItem[] = Array.isArray(data) ? data : [data as JsonTaskItem];\n this.subGraph = createGraphFromDependencyJSON(jsonItems, this.runConfig?.registry);\n\n for (const item of jsonItems) {\n if (!item.dependencies) continue;\n for (const [input, dependency] of Object.entries(item.dependencies)) {\n const dependencies = Array.isArray(dependency) ? dependency : [dependency];\n for (const dep of dependencies) {\n const sourceTask = this.subGraph.getTask(dep.id);\n if (!sourceTask) {\n throw new TaskConfigurationError(`Dependency id ${dep.id} not found`);\n }\n const df = new Dataflow(sourceTask.id, dep.output, item.id, input);\n this.subGraph.addDataflow(df);\n }\n }\n }\n super.regenerateGraph();\n }\n}\n\n/**\n * Convenience function to create and run a JsonTask\n */\nexport const json = (input: JsonTaskInput, config: TaskConfig = {}) => {\n return new JsonTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n json: CreateWorkflow<JsonTaskInput, JsonTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.json = CreateWorkflow(JsonTask);\n",
131
88
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n DATAFLOW_ALL_PORTS,\n IExecuteContext,\n IExecutePreviewContext,\n Task,\n TaskConfig,\n TaskConfigSchema,\n TaskConfigurationError,\n TaskInput,\n TaskOutput,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema } from \"@workglow/util/schema\";\n\nexport const lambdaTaskConfigSchema = {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n execute: {},\n executePreview: {},\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\ntype LambdaTaskConfig<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n> = TaskConfig & {\n execute?: (input: Input, context: IExecuteContext) => Promise<Output>;\n executePreview?: (input: Input, context: IExecutePreviewContext) => Promise<Output | undefined>;\n};\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {\n title: \"Input\",\n description: \"Input data to pass to the function\",\n },\n },\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {\n title: \"Output\",\n description: \"The output from the execute function\",\n },\n },\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type LambdaTaskInput = Record<string, any>;\nexport type LambdaTaskOutput = Record<string, any>;\n/**\n * LambdaTask provides a way to execute arbitrary functions within the task framework\n * It wraps a provided function and its input into a task that can be integrated\n * into task graphs and workflows\n */\nexport class LambdaTask<\n Input extends TaskInput = LambdaTaskInput,\n Output extends TaskOutput = LambdaTaskOutput,\n Config extends LambdaTaskConfig<Input, Output> = LambdaTaskConfig<Input, Output>,\n> extends Task<Input, Output, Config> {\n public static override type = \"LambdaTask\";\n public static override title = \"Lambda Task\";\n public static override description = \"A task that wraps a provided function and its input\";\n public static override category = \"Hidden\";\n public static override cacheable = true;\n public static override configSchema(): DataPortSchema {\n return lambdaTaskConfigSchema;\n }\n public static override inputSchema() {\n return inputSchema;\n }\n public static override outputSchema() {\n return outputSchema;\n }\n\n public override canSerializeConfig(): boolean {\n return false;\n }\n\n constructor(config: Partial<Config> = {}) {\n if (!config.execute && !config.executePreview) {\n throw new TaskConfigurationError(\n \"LambdaTask must have either execute or executePreview function in config\"\n );\n }\n super(config);\n }\n\n override async execute(input: Input, context: IExecuteContext): Promise<Output> {\n if (typeof this.config.execute === \"function\") {\n return await this.config.execute(input, context);\n }\n return {} as Output;\n }\n\n /**\n * Executes the user-provided preview function with the given input. Returns\n * undefined when no preview function was supplied in the config (the constructor\n * already validated that at least one of execute / executePreview is present).\n */\n override async executePreview(\n input: Input,\n context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n if (typeof this.config.executePreview === \"function\") {\n return await this.config.executePreview(input, context);\n }\n return undefined;\n }\n}\n\n/**\n * Convenience function to create and run a LambdaTask\n */\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n fn: (input: I, context: IExecuteContext) => Promise<O>\n): Promise<TaskOutput>;\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n input: I,\n config?: LambdaTaskConfig<I, O>\n): Promise<TaskOutput>;\n\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n input: I | ((input: I, context: IExecuteContext) => Promise<O>),\n config?: LambdaTaskConfig<I, O>\n): Promise<TaskOutput> {\n if (typeof input === \"function\") {\n const task = new LambdaTask<I, O>({\n execute: input,\n } as any);\n return task.run();\n }\n const task = new LambdaTask<I, O>({ ...config, defaults: input as Partial<I> } as any);\n return task.run();\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n lambda: CreateWorkflow<\n LambdaTaskInput,\n LambdaTaskOutput,\n LambdaTaskConfig<LambdaTaskInput, LambdaTaskOutput>\n >;\n }\n}\n\nWorkflow.prototype.lambda = CreateWorkflow(LambdaTask);\n",
132
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { getMcpServerConfig } from \"../../mcp-server/getMcpServerConfig\";\nimport { TypeMcpServer } from \"../../mcp-server/mcpServerReferenceObjectSchema\";\nimport { getMcpServerTransport } from \"../../util/getMcpServerTransport\";\nimport { getMcpTaskDeps } from \"../../util/McpTaskDeps\";\n\nconst mcpListTypes = [\"tools\", \"resources\", \"prompts\"] as const;\n\nconst iconSchema = {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n mimeType: { type: \"string\" },\n sizes: { type: \"array\", items: { type: \"string\" } },\n theme: { type: \"string\", enum: [\"light\", \"dark\"] },\n },\n additionalProperties: false,\n} as const;\n\nconst outputSchemaTools = {\n type: \"object\",\n properties: {\n tools: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n description: { type: \"string\" },\n inputSchema: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n properties: { type: \"object\", additionalProperties: true },\n required: { type: \"array\", items: { type: \"string\" } },\n },\n additionalProperties: true,\n },\n outputSchema: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n properties: { type: \"object\", additionalProperties: true },\n required: { type: \"array\", items: { type: \"string\" } },\n },\n additionalProperties: true,\n },\n annotations: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n readOnlyHint: { type: \"boolean\" },\n destructiveHint: { type: \"boolean\" },\n idempotentHint: { type: \"boolean\" },\n openWorldHint: { type: \"boolean\" },\n },\n additionalProperties: false,\n },\n execution: {\n type: \"object\",\n properties: {\n taskSupport: {\n type: \"string\",\n enum: [\"optional\", \"required\", \"forbidden\"],\n },\n },\n additionalProperties: false,\n },\n _meta: { type: \"object\", additionalProperties: true },\n icons: { type: \"array\", items: iconSchema },\n title: { type: \"string\" },\n },\n required: [\"name\", \"inputSchema\"],\n additionalProperties: false,\n },\n title: \"Tools\",\n description: \"The tools available on the MCP server\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchemaResources = {\n type: \"object\",\n properties: {\n resources: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n uri: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: {\n type: \"object\",\n properties: {\n audience: {\n type: \"array\",\n items: { type: \"string\", enum: [\"user\", \"assistant\"] },\n },\n priority: { type: \"number\" },\n lastModified: { type: \"string\" },\n },\n additionalProperties: false,\n },\n _meta: { type: \"object\", additionalProperties: true },\n icons: { type: \"array\", items: iconSchema },\n title: { type: \"string\" },\n },\n required: [\"uri\", \"name\"],\n additionalProperties: false,\n },\n title: \"Resources\",\n description: \"The resources available on the MCP server\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchemaPrompts = {\n type: \"object\",\n properties: {\n prompts: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n description: { type: \"string\" },\n arguments: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n description: { type: \"string\" },\n required: { type: \"boolean\" },\n },\n required: [\"name\"],\n additionalProperties: false,\n },\n },\n _meta: { type: \"object\", additionalProperties: true },\n icons: { type: \"array\", items: iconSchema },\n title: { type: \"string\" },\n },\n required: [\"name\"],\n additionalProperties: false,\n },\n title: \"Prompts\",\n description: \"The prompts available on the MCP server\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchemaAll = {\n type: \"object\",\n properties: {\n ...outputSchemaTools.properties,\n ...outputSchemaResources.properties,\n ...outputSchemaPrompts.properties,\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type McpListTaskOutput = FromSchema<typeof outputSchemaAll>;\n\n/** MCP list input (transport + server config fields, plus task-specific fields like list_type). */\nexport type McpListTaskInput = Record<string, unknown>;\n\nexport class McpListTask extends Task<McpListTaskInput, McpListTaskOutput, TaskConfig> {\n public static override type = \"McpListTask\";\n public static override category = \"MCP\";\n public static override title = \"MCP List\";\n public static override description =\n \"Lists tools, resources, or prompts available on an MCP server\";\n static override readonly cacheable = false;\n public static override hasDynamicSchemas: boolean = true;\n public static override hasDynamicEntitlements: boolean = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.MCP, reason: \"Lists tools, resources, or prompts on MCP servers\" },\n ],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = McpListTask.entitlements();\n const transport = getMcpServerTransport(this);\n if (transport === \"stdio\") {\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.MCP_STDIO, reason: \"Uses stdio transport to spawn local process\" },\n ],\n });\n }\n // sse and streamable-http transports require network access\n return mergeEntitlements(base, {\n entitlements: [{ id: Entitlements.NETWORK_HTTP, reason: \"Connects to MCP server over HTTP\" }],\n });\n }\n\n public static override inputSchema(): DataPortSchema {\n const { mcpServerConfigSchema } = getMcpTaskDeps();\n return {\n type: \"object\",\n properties: {\n server: TypeMcpServer(mcpServerConfigSchema),\n list_type: {\n type: \"string\",\n enum: mcpListTypes,\n title: \"List Type\",\n description: \"The type of items to list from the MCP server\",\n },\n },\n required: [\"server\", \"list_type\"],\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public static override outputSchema() {\n return outputSchemaAll;\n }\n\n public override outputSchema(): DataPortSchema {\n const listType = this.runInputData?.list_type ?? this.defaults?.list_type ?? null;\n\n if (listType === null || listType === undefined) {\n return outputSchemaAll;\n }\n\n switch (listType) {\n case \"tools\":\n return outputSchemaTools;\n case \"resources\":\n return outputSchemaResources;\n case \"prompts\":\n return outputSchemaPrompts;\n default:\n return outputSchemaAll;\n }\n }\n\n public override setInput(input: Partial<McpListTaskInput>): void {\n if (!(\"list_type\" in input)) {\n super.setInput(input);\n return;\n }\n\n const previousListType = this.runInputData?.list_type ?? this.defaults?.list_type ?? null;\n super.setInput(input);\n const newListType = this.runInputData?.list_type ?? this.defaults?.list_type ?? null;\n\n if (previousListType !== newListType) {\n this.emitSchemaChange();\n }\n }\n\n override async execute(\n input: McpListTaskInput,\n context: IExecuteContext\n ): Promise<McpListTaskOutput> {\n const serverConfig = getMcpServerConfig(input as Record<string, unknown>);\n\n const { mcpClientFactory } = getMcpTaskDeps();\n const { client } = await mcpClientFactory.create(serverConfig, context.signal);\n const listType = input.list_type;\n try {\n switch (listType) {\n case \"tools\": {\n const result = await client.listTools();\n return { tools: result.tools };\n }\n case \"resources\": {\n const result = await client.listResources();\n return { resources: result.resources };\n }\n case \"prompts\": {\n const result = await client.listPrompts();\n return { prompts: result.prompts };\n }\n default:\n throw new Error(`Unsupported list type: ${String(listType)}`);\n }\n } finally {\n await client.close();\n }\n }\n}\n\nexport const mcpList = async (\n input: McpListTaskInput,\n config: TaskConfig = {}\n): Promise<McpListTaskOutput> => {\n return new McpListTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n mcpList: CreateWorkflow<McpListTaskInput, McpListTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.mcpList = CreateWorkflow(McpListTask);\n",
133
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Task } from \"@workglow/task-graph\";\n\n/**\n * Resolve the MCP server transport from a task instance, preferring runtime\n * input (`runInputData.server.transport`) over construction-time config\n * (`config.server.transport`).\n */\nexport function getMcpServerTransport(task: Task<any, any, any>): string | undefined {\n const runInputData = (task as { runInputData?: Record<string, unknown> }).runInputData;\n const inputServer = runInputData?.server as Record<string, unknown> | undefined;\n if (typeof inputServer?.transport === \"string\") {\n return inputServer.transport;\n }\n\n const configServer = (task.config as Record<string, unknown>)?.server as\n | Record<string, unknown>\n | undefined;\n\n if (typeof configServer?.transport === \"string\") {\n return configServer.transport;\n }\n\n return undefined;\n}\n",
134
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, DataPortSchemaObject, FromSchema } from \"@workglow/util/schema\";\nimport { getMcpServerConfig } from \"../../mcp-server/getMcpServerConfig\";\nimport { getMcpServerTransport } from \"../../util/getMcpServerTransport\";\nimport { TypeMcpServer } from \"../../mcp-server/mcpServerReferenceObjectSchema\";\nimport type { McpServerConfig } from \"../../util/McpTaskDeps\";\nimport { getMcpTaskDeps } from \"../../util/McpTaskDeps\";\nimport type { McpListTaskInput } from \"./McpListTask\";\nimport { mcpList } from \"./McpListTask\";\n\nconst annotationsSchema = {\n type: \"object\",\n properties: {\n audience: {\n type: \"array\",\n items: { type: \"string\", enum: [\"user\", \"assistant\"] },\n },\n priority: { type: \"number\" },\n lastModified: { type: \"string\" },\n },\n additionalProperties: false,\n} as const;\n\nconst contentSchema = {\n anyOf: [\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"text\" },\n text: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"text\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"image\" },\n data: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"data\", \"mimeType\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"audio\" },\n data: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"data\", \"mimeType\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"resource\" },\n resource: {\n type: \"object\",\n properties: {\n uri: { type: \"string\" },\n text: { type: \"string\" },\n blob: { type: \"string\" },\n mimeType: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"uri\"],\n additionalProperties: false,\n },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"resource\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"resource_link\" },\n uri: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n mimeType: { type: \"string\" },\n sizes: { type: \"array\", items: { type: \"string\" } },\n theme: { type: \"string\", enum: [\"light\", \"dark\"] },\n },\n additionalProperties: false,\n },\n },\n title: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"uri\", \"name\"],\n additionalProperties: false,\n },\n ],\n} as const;\n\nconst fallbackOutputSchema = {\n type: \"object\",\n properties: {\n messages: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n role: { type: \"string\", enum: [\"user\", \"assistant\"] },\n content: contentSchema,\n },\n required: [\"role\", \"content\"],\n additionalProperties: false,\n },\n title: \"Messages\",\n description: \"The messages returned by the prompt\",\n },\n description: {\n type: \"string\",\n title: \"Description\",\n description: \"The description of the prompt\",\n },\n },\n required: [\"messages\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst fallbackInputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type McpPromptGetTaskConfig = TaskConfig & Record<string, unknown>;\nexport type McpPromptGetTaskInput = Record<string, unknown>;\nexport type McpPromptGetTaskOutput = FromSchema<typeof fallbackOutputSchema>;\n\nexport class McpPromptGetTask extends Task<\n McpPromptGetTaskInput,\n McpPromptGetTaskOutput,\n McpPromptGetTaskConfig\n> {\n public static override type = \"McpPromptGetTask\";\n public static override category = \"MCP\";\n public static override title = \"MCP Get Prompt\";\n public static override description = \"Gets a prompt from an MCP server\";\n static override readonly cacheable = false;\n public static override customizable = true;\n public static override hasDynamicSchemas = true;\n public static override hasDynamicEntitlements: boolean = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [{ id: Entitlements.MCP_PROMPT_GET, reason: \"Gets prompts from MCP servers\" }],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = McpPromptGetTask.entitlements();\n const transport = getMcpServerTransport(this);\n if (transport === \"stdio\") {\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.MCP_STDIO, reason: \"Uses stdio transport to spawn local process\" },\n ],\n });\n }\n // sse and streamable-http transports require network access\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.NETWORK_HTTP, reason: \"Connects to MCP server over HTTP\" },\n { id: Entitlements.CREDENTIAL, reason: \"May require authentication\", optional: true },\n ],\n });\n }\n\n public static override inputSchema() {\n return fallbackInputSchema;\n }\n\n public static override outputSchema() {\n return fallbackOutputSchema;\n }\n\n public static override configSchema(): DataPortSchema {\n const { mcpServerConfigSchema } = getMcpTaskDeps();\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n server: TypeMcpServer(mcpServerConfigSchema),\n prompt_name: {\n type: \"string\",\n title: \"Prompt Name\",\n description: \"The name of the prompt to get\",\n format: \"string:mcp-promptname\",\n },\n },\n required: [\"server\", \"prompt_name\"],\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public override inputSchema(): DataPortSchema {\n return this.config?.inputSchema ?? fallbackInputSchema;\n }\n\n public override outputSchema(): DataPortSchema {\n return this.config?.outputSchema ?? fallbackOutputSchema;\n }\n\n private _schemasDiscoveringPromise: Promise<void> | undefined;\n\n async discoverSchemas(_signal?: AbortSignal, serverConfig?: McpServerConfig): Promise<void> {\n if (this.config.inputSchema) return;\n if (this._schemasDiscoveringPromise) return this._schemasDiscoveringPromise;\n const resolved = serverConfig ?? getMcpServerConfig(this.config as Record<string, unknown>);\n if (!resolved.transport || !this.config.prompt_name) return;\n\n this._schemasDiscoveringPromise = (async () => {\n try {\n const result = await mcpList({\n server: resolved,\n list_type: \"prompts\",\n } as McpListTaskInput);\n\n const prompt = result.prompts?.find((p) => p.name === this.config.prompt_name);\n if (prompt) {\n const args = prompt.arguments ?? [];\n const required = args.filter((a) => a.required).map((a) => a.name);\n const properties: DataPortSchemaObject[\"properties\"] = {};\n for (const arg of args) {\n properties[arg.name] = {\n type: \"string\",\n ...(arg.description ? { description: arg.description } : {}),\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.config.inputSchema = {\n type: \"object\",\n properties,\n ...(required.length > 0 ? { required } : {}),\n additionalProperties: false,\n };\n\n this.emitSchemaChange();\n }\n } finally {\n this._schemasDiscoveringPromise = undefined;\n }\n })();\n return this._schemasDiscoveringPromise;\n }\n\n override async execute(\n input: McpPromptGetTaskInput,\n context: IExecuteContext\n ): Promise<McpPromptGetTaskOutput> {\n const serverConfig = getMcpServerConfig(this.config as Record<string, unknown>);\n\n await this.discoverSchemas(context.signal, serverConfig);\n\n const { mcpClientFactory } = getMcpTaskDeps();\n const { client } = await mcpClientFactory.create(serverConfig, context.signal);\n try {\n const result = await client.getPrompt({\n name: String(this.config.prompt_name ?? \"\"),\n arguments: input as Record<string, string>,\n });\n return {\n messages: result.messages,\n description: result.description,\n };\n } finally {\n await client.close();\n }\n }\n}\n\nexport const mcpPromptGet = async (\n input: McpPromptGetTaskInput,\n config: McpPromptGetTaskConfig\n): Promise<McpPromptGetTaskOutput> => {\n return new McpPromptGetTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n mcpPromptGet: CreateWorkflow<\n McpPromptGetTaskInput,\n McpPromptGetTaskOutput,\n McpPromptGetTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.mcpPromptGet = CreateWorkflow(McpPromptGetTask);\n",
135
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { getMcpServerConfig } from \"../../mcp-server/getMcpServerConfig\";\nimport { getMcpServerTransport } from \"../../util/getMcpServerTransport\";\nimport { TypeMcpServer } from \"../../mcp-server/mcpServerReferenceObjectSchema\";\nimport { getMcpTaskDeps } from \"../../util/McpTaskDeps\";\n\nconst contentItemSchema = {\n anyOf: [\n {\n type: \"object\",\n properties: {\n uri: { type: \"string\" },\n text: { type: \"string\" },\n mimeType: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"uri\", \"text\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n uri: { type: \"string\" },\n blob: { type: \"string\" },\n mimeType: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"uri\", \"blob\"],\n additionalProperties: false,\n },\n ],\n} as const;\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n contents: {\n type: \"array\",\n items: contentItemSchema,\n title: \"Contents\",\n description: \"The contents of the resource\",\n },\n },\n required: [\"contents\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type McpResourceReadTaskConfig = TaskConfig & Record<string, unknown>;\nexport type McpResourceReadTaskInput = FromSchema<typeof inputSchema>;\nexport type McpResourceReadTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class McpResourceReadTask extends Task<\n McpResourceReadTaskInput,\n McpResourceReadTaskOutput,\n McpResourceReadTaskConfig\n> {\n public static override type = \"McpResourceReadTask\";\n public static override category = \"MCP\";\n public static override title = \"MCP Read Resource\";\n public static override description = \"Reads a resource from an MCP server\";\n static override readonly cacheable = false;\n public static override customizable = true;\n public static override hasDynamicEntitlements: boolean = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.MCP_RESOURCE_READ, reason: \"Reads resources from MCP servers\" },\n ],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = McpResourceReadTask.entitlements();\n const transport = getMcpServerTransport(this);\n if (transport === \"stdio\") {\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.MCP_STDIO, reason: \"Uses stdio transport to spawn local process\" },\n ],\n });\n }\n // sse and streamable-http transports require network access\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.NETWORK_HTTP, reason: \"Connects to MCP server over HTTP\" },\n { id: Entitlements.CREDENTIAL, reason: \"May require authentication\", optional: true },\n ],\n });\n }\n\n public static override inputSchema() {\n return inputSchema;\n }\n\n public static override outputSchema() {\n return outputSchema;\n }\n\n public static override configSchema(): DataPortSchema {\n const { mcpServerConfigSchema } = getMcpTaskDeps();\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n server: TypeMcpServer(mcpServerConfigSchema),\n resource_uri: {\n type: \"string\",\n title: \"Resource URI\",\n description: \"The URI of the resource to read\",\n format: \"string:uri:mcp-resourceuri\",\n },\n },\n required: [\"server\", \"resource_uri\"],\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n override async execute(\n _input: McpResourceReadTaskInput,\n context: IExecuteContext\n ): Promise<McpResourceReadTaskOutput> {\n const serverConfig = getMcpServerConfig(this.config as Record<string, unknown>);\n\n const { mcpClientFactory } = getMcpTaskDeps();\n const { client } = await mcpClientFactory.create(serverConfig, context.signal);\n try {\n const result = await client.readResource({\n uri: String(this.config.resource_uri ?? \"\"),\n });\n return { contents: result.contents };\n } finally {\n await client.close();\n }\n }\n}\n\nexport const mcpResourceRead = async (\n config: McpResourceReadTaskConfig\n): Promise<McpResourceReadTaskOutput> => {\n return new McpResourceReadTask(config).run({});\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n mcpResourceRead: CreateWorkflow<\n McpResourceReadTaskInput,\n McpResourceReadTaskOutput,\n McpResourceReadTaskConfig\n >;\n }\n}\n\nWorkflow.prototype.mcpResourceRead = CreateWorkflow(McpResourceReadTask);\n",
136
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n IExecuteContext,\n Task,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst MCP_REGISTRY_BASE = \"https://registry.modelcontextprotocol.io/v0.1\";\n\ninterface McpRegistryServer {\n name: string;\n title?: string;\n description: string;\n version: string;\n packages?: Array<{\n registryType: string;\n identifier: string;\n transport: { type: string };\n environmentVariables?: Array<{\n name: string;\n description?: string;\n isRequired?: boolean;\n }>;\n runtimeArguments?: Array<{\n type: string;\n name: string;\n value?: string;\n isRequired?: boolean;\n description?: string;\n }>;\n packageArguments?: Array<{\n type: string;\n name: string;\n value?: string;\n isRequired?: boolean;\n description?: string;\n }>;\n }>;\n remotes?: Array<{\n type: string;\n url: string;\n }>;\n}\n\nexport interface McpSearchResultItem {\n readonly id: string;\n readonly label: string;\n readonly description: string;\n readonly config: Record<string, unknown>;\n}\n\n/** Results from {@link searchMcpRegistryPage}; pass `nextCursor` back for the next page. */\nexport interface McpRegistrySearchPage {\n readonly results: McpSearchResultItem[];\n readonly nextCursor: string | undefined;\n}\n\nconst McpSearchInputSchema = {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n title: \"Query\",\n description: \"Search query for the MCP registry\",\n },\n },\n required: [\"query\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst McpSearchOutputSchema = {\n type: \"object\",\n properties: {\n results: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n label: { type: \"string\" },\n description: { type: \"string\" },\n config: { type: \"object\", additionalProperties: true },\n },\n required: [\"id\", \"label\", \"description\", \"config\"],\n additionalProperties: false,\n },\n },\n },\n required: [\"results\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type McpSearchTaskInput = FromSchema<typeof McpSearchInputSchema>;\nexport type McpSearchTaskOutput = { results: McpSearchResultItem[] };\n\n/**\n * Map an MCP registry server entry to a config object usable for MCP server configuration.\n */\nexport function mapMcpRegistryResult(server: McpRegistryServer): Record<string, unknown> {\n const name = server.name.split(\"/\").pop() ?? server.name;\n\n if (server.remotes && server.remotes.length > 0) {\n const remote = server.remotes[0];\n return {\n name,\n transport: remote.type,\n server_url: remote.url,\n };\n }\n\n const pkg = server.packages?.[0];\n if (!pkg) return { name };\n\n let command: string;\n let args: string[];\n\n switch (pkg.registryType) {\n case \"npm\":\n command = \"npx\";\n args = [\"-y\", pkg.identifier];\n break;\n case \"pypi\":\n command = \"uvx\";\n args = [pkg.identifier];\n break;\n case \"oci\":\n command = \"docker\";\n args = [\"run\", \"-i\", \"--rm\", pkg.identifier];\n break;\n default:\n command = pkg.identifier;\n args = [];\n }\n\n if (pkg.runtimeArguments) {\n for (const arg of pkg.runtimeArguments) {\n if (arg.name) args.push(arg.name);\n if (arg.value) args.push(arg.value);\n }\n }\n\n const result: Record<string, unknown> = {\n name,\n transport: \"stdio\",\n command,\n args,\n };\n\n if (pkg.environmentVariables && pkg.environmentVariables.length > 0) {\n const env: Record<string, string> = {};\n for (const envVar of pkg.environmentVariables) {\n env[envVar.name] = \"\";\n }\n result.env = env;\n }\n\n return result;\n}\n\nfunction mapRegistryServersToResults(\n servers: Array<{ server: McpRegistryServer }> | undefined\n): McpSearchResultItem[] {\n return (servers ?? []).map((entry) => {\n const s = entry.server;\n const pkg = s.packages?.[0];\n const remote = s.remotes?.[0];\n const badges = [pkg?.registryType, pkg?.transport?.type ?? remote?.type]\n .filter(Boolean)\n .join(\" | \");\n\n return {\n id: `${s.name}:${s.version}`,\n label: `${s.title ?? s.name}${badges ? ` ${badges}` : \"\"}`,\n description: s.description,\n config: mapMcpRegistryResult(s),\n };\n });\n}\n\n/**\n * Search the MCP registry for one page of servers (max 100 per request — registry limit).\n */\nexport async function searchMcpRegistryPage(\n query: string,\n options?: { readonly cursor?: string; readonly signal?: AbortSignal }\n): Promise<McpRegistrySearchPage> {\n const params = new URLSearchParams({\n search: query,\n limit: \"100\",\n version: \"latest\",\n });\n if (options?.cursor) {\n params.set(\"cursor\", options.cursor);\n }\n\n const res = await fetch(`${MCP_REGISTRY_BASE}/servers?${params}`, {\n signal: options?.signal,\n });\n if (!res.ok) {\n let detail = `Registry returned ${res.status}`;\n try {\n const errBody = (await res.json()) as {\n detail?: string;\n errors?: Array<{ message?: string }>;\n };\n if (typeof errBody.detail === \"string\") {\n detail = `${detail}: ${errBody.detail}`;\n } else if (Array.isArray(errBody.errors) && errBody.errors.length > 0) {\n detail = `${detail}: ${errBody.errors\n .map((e) => e.message)\n .filter(Boolean)\n .join(\"; \")}`;\n }\n } catch {\n // ignore non-JSON error bodies\n }\n throw new Error(detail);\n }\n\n const data = (await res.json()) as {\n servers?: Array<{ server: McpRegistryServer }>;\n metadata?: { nextCursor?: string };\n };\n\n return {\n results: mapRegistryServersToResults(data.servers),\n nextCursor: data.metadata?.nextCursor,\n };\n}\n\n/**\n * Search the MCP registry for servers matching a query (first page only).\n */\nexport async function searchMcpRegistry(\n query: string,\n signal?: AbortSignal\n): Promise<McpSearchResultItem[]> {\n const page = await searchMcpRegistryPage(query, { signal });\n return page.results;\n}\n\n/**\n * Search the MCP server registry for servers matching a query.\n */\nexport class McpSearchTask extends Task<McpSearchTaskInput, McpSearchTaskOutput, TaskConfig> {\n public static override type = \"McpSearchTask\";\n public static override category = \"MCP\";\n public static override title = \"MCP Search\";\n public static override description =\n \"Search the MCP server registry for servers matching a query\";\n public static override cacheable = false;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [\n { id: Entitlements.NETWORK_HTTP, reason: \"Searches the MCP server registry via HTTPS\" },\n ],\n };\n }\n\n public static override inputSchema(): DataPortSchema {\n return McpSearchInputSchema satisfies DataPortSchema;\n }\n public static override outputSchema(): DataPortSchema {\n return McpSearchOutputSchema satisfies DataPortSchema;\n }\n\n override async execute(\n input: McpSearchTaskInput,\n context: IExecuteContext\n ): Promise<McpSearchTaskOutput> {\n const results = await searchMcpRegistry(input.query, context.signal);\n return { results };\n }\n}\n\n/**\n * Search the MCP server registry.\n */\nexport const mcpSearch = (input: McpSearchTaskInput, config?: TaskConfig) => {\n return new McpSearchTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n mcpSearch: CreateWorkflow<McpSearchTaskInput, McpSearchTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.mcpSearch = CreateWorkflow(McpSearchTask);\n",
137
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskEntitlements } from \"@workglow/task-graph\";\nimport {\n CreateWorkflow,\n Entitlements,\n IExecuteContext,\n mergeEntitlements,\n Task,\n TaskConfig,\n TaskConfigSchema,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, DataPortSchemaObject } from \"@workglow/util/schema\";\nimport { getMcpServerConfig } from \"../../mcp-server/getMcpServerConfig\";\nimport { TypeMcpServer } from \"../../mcp-server/mcpServerReferenceObjectSchema\";\nimport { getMcpServerTransport } from \"../../util/getMcpServerTransport\";\nimport type { McpServerConfig } from \"../../util/McpTaskDeps\";\nimport { getMcpTaskDeps } from \"../../util/McpTaskDeps\";\nimport type { McpListTaskInput } from \"./McpListTask\";\nimport { mcpList } from \"./McpListTask\";\n\nconst annotationsSchema = {\n type: \"object\",\n properties: {\n audience: {\n type: \"array\",\n items: { type: \"string\", enum: [\"user\", \"assistant\"] },\n },\n priority: { type: \"number\" },\n lastModified: { type: \"string\" },\n },\n additionalProperties: false,\n} as const;\n\nconst toolContentSchema = {\n anyOf: [\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"text\" },\n text: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"text\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"image\" },\n data: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"data\", \"mimeType\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"audio\" },\n data: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"data\", \"mimeType\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"resource\" },\n resource: {\n type: \"object\",\n properties: {\n uri: { type: \"string\" },\n text: { type: \"string\" },\n blob: { type: \"string\" },\n mimeType: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"uri\"],\n additionalProperties: false,\n },\n annotations: annotationsSchema,\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"resource\"],\n additionalProperties: false,\n },\n {\n type: \"object\",\n properties: {\n type: { type: \"string\", const: \"resource_link\" },\n uri: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n mimeType: { type: \"string\" },\n annotations: annotationsSchema,\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n mimeType: { type: \"string\" },\n sizes: { type: \"array\", items: { type: \"string\" } },\n theme: { type: \"string\", enum: [\"light\", \"dark\"] },\n },\n additionalProperties: false,\n },\n },\n title: { type: \"string\" },\n _meta: { type: \"object\", additionalProperties: true },\n },\n required: [\"type\", \"uri\", \"name\"],\n additionalProperties: false,\n },\n ],\n} as const;\n\nconst fallbackOutputSchema = {\n type: \"object\",\n properties: {\n content: {\n type: \"array\",\n items: toolContentSchema,\n title: \"Content\",\n description: \"The content returned by the tool\",\n },\n isError: {\n type: \"boolean\",\n title: \"Is Error\",\n description: \"Whether the tool call resulted in an error\",\n },\n },\n required: [\"content\", \"isError\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst fallbackInputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\n/** Config includes MCP connection fields (transport-dependent shape is registered per platform). */\nexport type McpToolCallTaskConfig = TaskConfig & {\n inputSchema?: DataPortSchema;\n outputSchema?: DataPortSchema;\n} & Record<string, unknown>;\nexport type McpToolCallTaskInput = Record<string, unknown>;\nexport type McpToolCallTaskOutput = Record<string, unknown>;\n\nexport class McpToolCallTask extends Task<\n McpToolCallTaskInput,\n McpToolCallTaskOutput,\n McpToolCallTaskConfig\n> {\n public static override type = \"McpToolCallTask\";\n public static override category = \"MCP\";\n public static override title = \"MCP Call Tool\";\n public static override description = \"Calls a tool on an MCP server and returns the result\";\n public static override cacheable = false;\n public static override customizable = true;\n public static override hasDynamicSchemas = true;\n public static override hasDynamicEntitlements: boolean = true;\n\n public static override entitlements(): TaskEntitlements {\n return {\n entitlements: [{ id: Entitlements.MCP_TOOL_CALL, reason: \"Calls tools on MCP servers\" }],\n };\n }\n\n public override entitlements(): TaskEntitlements {\n const base = McpToolCallTask.entitlements();\n const transport = getMcpServerTransport(this);\n if (transport === \"stdio\") {\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.MCP_STDIO, reason: \"Uses stdio transport to spawn local process\" },\n ],\n });\n }\n // sse and streamable-http transports require network access\n return mergeEntitlements(base, {\n entitlements: [\n { id: Entitlements.NETWORK_HTTP, reason: \"Connects to MCP server over HTTP\" },\n { id: Entitlements.CREDENTIAL, reason: \"May require authentication\", optional: true },\n ],\n });\n }\n\n public static override inputSchema() {\n return fallbackInputSchema;\n }\n\n public static override outputSchema() {\n return fallbackOutputSchema;\n }\n\n public static override configSchema(): DataPortSchema {\n const { mcpServerConfigSchema } = getMcpTaskDeps();\n return {\n type: \"object\",\n properties: {\n ...TaskConfigSchema[\"properties\"],\n server: TypeMcpServer(mcpServerConfigSchema),\n tool_name: {\n type: \"string\",\n title: \"Tool Name\",\n description: \"The name of the tool to call\",\n format: \"string:mcp-toolname\",\n },\n },\n required: [\"server\", \"tool_name\"],\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n public override inputSchema(): DataPortSchema {\n return this.config?.inputSchema ?? fallbackInputSchema;\n }\n\n public override outputSchema(): DataPortSchema {\n return this.config?.outputSchema ?? fallbackOutputSchema;\n }\n\n private _schemasDiscoveringPromise: Promise<void> | undefined;\n\n async discoverSchemas(_signal?: AbortSignal, serverConfig?: McpServerConfig): Promise<void> {\n if (this.config.inputSchema && this.config.outputSchema) return;\n if (this._schemasDiscoveringPromise) return this._schemasDiscoveringPromise;\n const resolved = serverConfig ?? getMcpServerConfig(this.config as Record<string, unknown>);\n if (!resolved.transport || !this.config.tool_name) return;\n\n this._schemasDiscoveringPromise = (async () => {\n try {\n const result = await mcpList({\n server: resolved,\n list_type: \"tools\",\n } as McpListTaskInput);\n\n const tool = result.tools?.find((t) => t.name === this.config.tool_name);\n if (tool) {\n if (!this.config.inputSchema) {\n this.config.inputSchema = tool.inputSchema as DataPortSchemaObject;\n }\n if (!this.config.outputSchema && tool.outputSchema) {\n this.config.outputSchema = tool.outputSchema as DataPortSchemaObject;\n }\n this.emitSchemaChange();\n }\n } finally {\n this._schemasDiscoveringPromise = undefined;\n }\n })();\n return this._schemasDiscoveringPromise;\n }\n\n override async execute(\n input: McpToolCallTaskInput,\n context: IExecuteContext\n ): Promise<McpToolCallTaskOutput> {\n const serverConfig = getMcpServerConfig(this.config as Record<string, unknown>);\n\n await this.discoverSchemas(context.signal, serverConfig);\n\n const { mcpClientFactory } = getMcpTaskDeps();\n const { client } = await mcpClientFactory.create(serverConfig, context.signal);\n try {\n const result = await client.callTool({\n name: String(this.config.tool_name ?? \"\"),\n arguments: input as Record<string, unknown>,\n });\n if (!(\"content\" in result) || !Array.isArray(result.content)) {\n throw new Error(\"Expected tool result with content array\");\n }\n const content = result.content;\n const isError = result.isError === true;\n\n // Prefer structuredContent when present (MCP spec: parsed output matching tool's output schema)\n const structuredContent =\n \"structuredContent\" in result &&\n result.structuredContent &&\n typeof result.structuredContent === \"object\" &&\n !Array.isArray(result.structuredContent)\n ? (result.structuredContent as Record<string, unknown>)\n : undefined;\n\n // When no structuredContent, try parsing single text item as JSON (many servers return JSON in text)\n let parsedFromText: Record<string, unknown> | undefined;\n if (!structuredContent && content.length === 1) {\n const item = content[0];\n if (\n item &&\n typeof item === \"object\" &&\n \"type\" in item &&\n item.type === \"text\" &&\n \"text\" in item\n ) {\n const text = String(item.text);\n const trimmed = text.trim();\n if (\n (trimmed.startsWith(\"{\") && trimmed.endsWith(\"}\")) ||\n (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\"))\n ) {\n try {\n const parsed = JSON.parse(text) as unknown;\n if (parsed !== null && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n parsedFromText = parsed as Record<string, unknown>;\n }\n } catch {\n // Not valid JSON, ignore\n }\n }\n }\n }\n\n return {\n content,\n isError,\n ...parsedFromText,\n ...structuredContent,\n };\n } finally {\n await client.close();\n }\n }\n}\n\nexport const mcpToolCall = async (\n input: McpToolCallTaskInput,\n config: McpToolCallTaskConfig\n): Promise<McpToolCallTaskOutput> => {\n return new McpToolCallTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n mcpToolCall: CreateWorkflow<McpToolCallTaskInput, McpToolCallTaskOutput, McpToolCallTaskConfig>;\n }\n}\n\nWorkflow.prototype.mcpToolCall = CreateWorkflow(McpToolCallTask);\n",
138
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Server } from \"@modelcontextprotocol/sdk/server\";\nimport type { ElicitRequestFormParams, ElicitResult } from \"@modelcontextprotocol/sdk/types\";\nimport type { IHumanConnector, IHumanRequest, IHumanResponse } from \"@workglow/util\";\n\n/**\n * Converts a workglow DataPortSchema to MCP's flat requestedSchema format.\n *\n * MCP elicitation supports only a restricted subset of JSON Schema:\n * flat object with top-level properties only, no nesting.\n */\nfunction defaultAbortError(): Error {\n const err = new Error(\"The operation was aborted\");\n err.name = \"AbortError\";\n return err;\n}\n\nfunction toMcpRequestedSchema(\n schema: Record<string, unknown>\n): ElicitRequestFormParams[\"requestedSchema\"] {\n const props = (schema.properties ??\n {}) as ElicitRequestFormParams[\"requestedSchema\"][\"properties\"];\n const required = schema.required as string[] | undefined;\n return {\n type: \"object\" as const,\n properties: props,\n ...(required ? { required } : {}),\n };\n}\n\n/**\n * IHumanConnector implementation that delegates to MCP Server.elicitInput().\n *\n * Handles all three interaction kinds:\n * - \"notify\": Sends a notification via MCP logging, resolves immediately.\n * - \"display\": Sends content for display, resolves immediately.\n * - \"elicit\": Delegates to Server.elicitInput() for structured form input.\n *\n * Usage:\n * ```ts\n * import { Server } from \"@modelcontextprotocol/sdk/server\";\n * import { McpElicitationConnector } from \"@workglow/tasks\";\n * import { HUMAN_CONNECTOR } from \"@workglow/util\";\n *\n * const mcpServer: Server = ...; // your MCP server instance\n * const connector = new McpElicitationConnector(mcpServer);\n * registry.registerInstance(HUMAN_CONNECTOR, connector);\n * ```\n */\nexport class McpElicitationConnector implements IHumanConnector {\n constructor(private readonly server: Server) {}\n\n async send(request: IHumanRequest, signal: AbortSignal): Promise<IHumanResponse> {\n switch (request.kind) {\n case \"notify\":\n return this.handleNotify(request, signal);\n\n case \"display\":\n return this.handleDisplay(request, signal);\n\n case \"elicit\":\n return this.handleElicit(request, signal);\n\n default:\n return this.handleElicit(request, signal);\n }\n }\n\n /**\n * Multi-turn follow-up via MCP elicitation.\n * Each follow-up is a separate elicitInput() call.\n */\n async followUp(\n request: IHumanRequest,\n _previousResponse: IHumanResponse,\n signal: AbortSignal\n ): Promise<IHumanResponse> {\n return this.send(request, signal);\n }\n\n /**\n * Handle \"notify\" kind — fire-and-forget notification.\n * Uses MCP logging notification to send the message to the client.\n */\n private async handleNotify(request: IHumanRequest, signal: AbortSignal): Promise<IHumanResponse> {\n if (signal.aborted) {\n throw signal.reason ?? defaultAbortError();\n }\n\n await this.server.sendLoggingMessage({\n level: \"info\",\n data: request.contentData ?? request.message,\n logger: request.targetHumanId,\n });\n\n if (signal.aborted) {\n throw signal.reason ?? defaultAbortError();\n }\n\n return {\n requestId: request.requestId,\n action: \"accept\",\n content: undefined,\n done: true,\n };\n }\n\n /**\n * Handle \"display\" kind — present content to the human.\n * Uses MCP logging notification with the content data.\n * Resolves immediately since no response is expected by default.\n */\n private async handleDisplay(\n request: IHumanRequest,\n signal: AbortSignal\n ): Promise<IHumanResponse> {\n if (signal.aborted) {\n throw signal.reason ?? defaultAbortError();\n }\n await this.server.sendLoggingMessage({\n level: \"info\",\n data: {\n message: request.message,\n content: request.contentData,\n schema: request.contentSchema,\n },\n logger: request.targetHumanId,\n });\n\n if (signal.aborted) {\n throw signal.reason ?? defaultAbortError();\n }\n\n return {\n requestId: request.requestId,\n action: \"accept\",\n content: undefined,\n done: true,\n };\n }\n\n /**\n * Handle \"elicit\" kind — request structured input via MCP elicitation.\n */\n private async handleElicit(request: IHumanRequest, signal: AbortSignal): Promise<IHumanResponse> {\n const mcpResult: ElicitResult = await this.server.elicitInput(\n {\n mode: \"form\",\n message: request.message,\n requestedSchema: toMcpRequestedSchema(request.contentSchema as Record<string, unknown>),\n },\n { signal }\n );\n\n return {\n requestId: request.requestId,\n action: mcpResult.action,\n content:\n mcpResult.action === \"accept\" ? (mcpResult.content as Record<string, unknown>) : undefined,\n done: true,\n };\n }\n}\n",
139
89
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n type: \"array\",\n title: \"Merged Array\",\n description: \"Array containing all input values in order\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type MergeTaskInput = FromSchema<typeof inputSchema>;\nexport type MergeTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * MergeTask takes multiple inputs and merges them into a single array output.\n * Input properties are collected and sorted by key name to create a deterministic output order.\n * Useful for collecting results from parallel branches into a single array.\n *\n * Features:\n * - Accepts any number of input properties (additionalProperties: true)\n * - Merges all input values into a single array output\n * - Sorts inputs by property name for consistent ordering\n * - Output is always an array\n *\n * Example:\n * Input: { input_0: \"a\", input_1: \"b\", input_2: \"c\" }\n * Output: { output: [\"a\", \"b\", \"c\"] }\n */\nexport class MergeTask<\n Input extends MergeTaskInput = MergeTaskInput,\n Output extends MergeTaskOutput = MergeTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n public static override type = \"MergeTask\";\n public static override category = \"Utility\";\n public static override title = \"Merge\";\n public static override description = \"Merges multiple inputs into a single array output\";\n static override readonly cacheable = true;\n\n public static override inputSchema() {\n return inputSchema;\n }\n\n public static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n // Get all input keys and sort them for deterministic order\n const keys = Object.keys(input).sort((a, b) =>\n a.localeCompare(b, undefined, { numeric: true })\n );\n\n // Collect values in sorted order\n const values = keys.map((key) => input[key]);\n\n return {\n output: values,\n } as Output;\n }\n}\n\nexport const merge = (input: MergeTaskInput, config: TaskConfig = {}) => {\n const task = new MergeTask(config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n merge: CreateWorkflow<MergeTaskInput, MergeTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.merge = CreateWorkflow(MergeTask);\n",
140
90
  "/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport type { IExecuteContext, StreamEvent, StreamFinish } from \"@workglow/task-graph\";\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util/schema\";\n\nexport type OutputTaskInput = Record<string, unknown>;\nexport type OutputTaskOutput = Record<string, unknown>;\n\nexport type OutputTaskConfig = TaskConfig;\n\nfunction passthroughInput(input: OutputTaskInput): OutputTaskOutput {\n return input as OutputTaskOutput;\n}\n\nexport class OutputTask extends Task<OutputTaskInput, OutputTaskOutput, OutputTaskConfig> {\n static override type = \"OutputTask\";\n static override category = \"Flow Control\";\n static override title = \"Output\";\n static override description = \"Ends the workflow\";\n static override hasDynamicSchemas = true;\n static override cacheable = false;\n static override isGraphOutput = true;\n static override isPassthrough = true;\n\n public static override inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public override inputSchema(): DataPortSchema {\n return this.config?.inputSchema ?? (this.constructor as typeof OutputTask).inputSchema();\n }\n\n public override outputSchema(): DataPortSchema {\n return this.config?.outputSchema ?? (this.constructor as typeof OutputTask).outputSchema();\n }\n\n public override async execute(input: OutputTaskInput, _context: IExecuteContext) {\n return passthroughInput(input);\n }\n\n public override async executePreview(input: OutputTaskInput) {\n return passthroughInput(input);\n }\n\n /**\n * Stream pass-through: re-yields all events from upstream input streams\n * so downstream consumers see them with near-zero latency, then emits\n * a finish event with the materialized input as data.\n */\n async *executeStream(\n input: OutputTaskInput,\n context: IExecuteContext\n ): AsyncIterable<StreamEvent<OutputTaskOutput>> {\n if (context.inputStreams) {\n for (const [, stream] of context.inputStreams) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value.type === \"finish\") continue;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n }\n }\n yield { type: \"finish\", data: input } as StreamFinish<OutputTaskOutput>;\n }\n}\n\n/**\n * Module augmentation to register task type in the workflow system\n */\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n output: CreateWorkflow<OutputTaskInput, OutputTaskOutput, OutputTaskConfig>;\n }\n}\n\nWorkflow.prototype.output = CreateWorkflow(OutputTask);\n",
141
91
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n IExecutePreviewContext,\n Task,\n TaskConfig,\n TaskInvalidInputError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\n\n/** Maximum number of '[' characters allowed in a regex pattern before rejecting (ReDoS guard). */\nconst MAX_BRACKET_COUNT = 100;\n\n/**\n * Detects regex patterns prone to catastrophic backtracking (ReDoS).\n * Checks for nested quantifiers like (a+)+, (a*)+, (a+)*, etc.\n */\nfunction hasNestedQuantifiers(pattern: string): boolean {\n // Strip character classes to avoid false positives on quantifiers inside [...]\n const withoutClasses = pattern.replace(/\\[(?:[^\\]\\\\]|\\\\.)*\\]/g, \"X\");\n // Detect group with inner quantifier followed by outer quantifier\n return /\\([^)]*[+*][^)]*\\)[+*?]|\\([^)]*[+*][^)]*\\)\\{/.test(withoutClasses);\n}\n\nfunction executeRegex(input: { value: string; pattern: string; flags?: string }): {\n match: boolean;\n matches: string[];\n} {\n const bracketCount = (input.pattern.match(/\\[/g) ?? []).length;\n if (bracketCount > MAX_BRACKET_COUNT) {\n throw new TaskInvalidInputError(\n \"Regex pattern rejected: too many '[' characters (potential ReDoS). \" +\n \"Simplify the pattern to reduce complexity.\"\n );\n }\n\n if (hasNestedQuantifiers(input.pattern)) {\n throw new TaskInvalidInputError(\n \"Regex pattern rejected: nested quantifiers detected (potential ReDoS). \" +\n \"Simplify the pattern to avoid catastrophic backtracking.\"\n );\n }\n\n const flags = input.flags ?? \"\";\n const regex = new RegExp(input.pattern, flags);\n\n if (flags.includes(\"g\")) {\n const allMatches = Array.from(input.value.matchAll(new RegExp(input.pattern, flags)));\n return {\n match: allMatches.length > 0,\n matches: allMatches.map((m) => m[0]),\n };\n }\n\n const result = regex.exec(input.value);\n if (!result) {\n return { match: false, matches: [] as string[] };\n }\n\n // Return full match + captured groups\n return {\n match: true,\n matches: result.slice(0),\n };\n}\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n value: {\n type: \"string\",\n title: \"Value\",\n description: \"Input string to match against\",\n },\n pattern: {\n type: \"string\",\n title: \"Pattern\",\n description: \"Regular expression pattern\",\n },\n flags: {\n type: \"string\",\n title: \"Flags\",\n description: \"Regex flags (e.g. 'g', 'i', 'gi')\",\n default: \"\",\n },\n },\n required: [\"value\", \"pattern\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n match: {\n type: \"boolean\",\n title: \"Match\",\n description: \"Whether the pattern matched\",\n },\n matches: {\n type: \"array\",\n items: { type: \"string\" },\n title: \"Matches\",\n description: \"Array of matched strings (full matches when global, groups when not)\",\n },\n },\n required: [\"match\", \"matches\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type RegexTaskInput = FromSchema<typeof inputSchema>;\nexport type RegexTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class RegexTask<\n Input extends RegexTaskInput = RegexTaskInput,\n Output extends RegexTaskOutput = RegexTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"RegexTask\";\n static override readonly category = \"String\";\n public static override title = \"Regex\";\n public static override description = \"Matches a string against a regular expression pattern\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output | undefined> {\n return executeRegex(input) as Output;\n }\n\n override async executePreview(\n input: Input,\n _context: IExecutePreviewContext\n ): Promise<Output | undefined> {\n return executeRegex(input) as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n regex: CreateWorkflow<RegexTaskInput, RegexTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.regex = CreateWorkflow(RegexTask);\n",
@@ -162,11 +112,10 @@
162
112
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArray,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\nimport { sumPrecise } from \"../scalar/sumPrecise\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vectors: {\n type: \"array\",\n items: TypedArraySchema({\n title: \"Vector\",\n description: \"Vector for dot product\",\n }),\n title: \"Vectors\",\n description: \"Array of two vectors to compute dot product\",\n },\n },\n required: [\"vectors\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: {\n type: \"number\",\n title: \"Result\",\n description: \"Dot product of the vectors\",\n },\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorDotProductTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorDotProductTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class VectorDotProductTask<\n Input extends VectorDotProductTaskInput = VectorDotProductTaskInput,\n Output extends VectorDotProductTaskOutput = VectorDotProductTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorDotProductTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Dot Product\";\n public static override description = \"Returns the dot (inner) product of the first two vectors\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n const { vectors } = input as { vectors: TypedArray[] };\n if (vectors.length < 2) {\n throw new Error(\"Exactly two vectors are required for dot product\");\n }\n const [a, b] = vectors;\n if (a.length !== b.length) {\n throw new Error(\"Vectors must have the same length\");\n }\n const products = Array.from({ length: a.length }, (_, i) => Number(a[i]) * Number(b[i]));\n return { result: sumPrecise(products) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorDotProduct: CreateWorkflow<\n VectorDotProductTaskInput,\n VectorDotProductTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.vectorDotProduct = CreateWorkflow(VectorDotProductTask);\n",
163
113
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n normalize,\n} from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vector: TypedArraySchema({\n title: \"Vector\",\n description: \"Input vector to normalize\",\n }),\n },\n required: [\"vector\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: TypedArraySchema({\n title: \"Result\",\n description: \"L2-normalized vector\",\n }),\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorNormalizeTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorNormalizeTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\nexport class VectorNormalizeTask<\n Input extends VectorNormalizeTaskInput = VectorNormalizeTaskInput,\n Output extends VectorNormalizeTaskOutput = VectorNormalizeTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorNormalizeTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Normalize\";\n public static override description = \"Returns the L2-normalized (unit length) vector\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n return { result: normalize(input.vector) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorNormalize: CreateWorkflow<\n VectorNormalizeTaskInput,\n VectorNormalizeTaskOutput,\n TaskConfig\n >;\n }\n}\n\nWorkflow.prototype.vectorNormalize = CreateWorkflow(VectorNormalizeTask);\n",
164
114
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport {\n createTypedArrayFrom,\n DataPortSchema,\n FromSchema,\n TypedArraySchema,\n TypedArraySchemaOptions,\n} from \"@workglow/util/schema\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n vector: TypedArraySchema({\n title: \"Vector\",\n description: \"Input vector\",\n }),\n scalar: {\n type: \"number\",\n title: \"Scalar\",\n description: \"Scalar multiplier\",\n },\n },\n required: [\"vector\", \"scalar\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n result: TypedArraySchema({\n title: \"Result\",\n description: \"Scaled vector\",\n }),\n },\n required: [\"result\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type VectorScaleTaskInput = FromSchema<typeof inputSchema, TypedArraySchemaOptions>;\nexport type VectorScaleTaskOutput = FromSchema<typeof outputSchema, TypedArraySchemaOptions>;\n\nexport class VectorScaleTask<\n Input extends VectorScaleTaskInput = VectorScaleTaskInput,\n Output extends VectorScaleTaskOutput = VectorScaleTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static override readonly type = \"VectorScaleTask\";\n static override readonly category = \"Vector\";\n public static override title = \"Scale\";\n public static override description = \"Multiplies each element of a vector by a scalar\";\n\n static override inputSchema() {\n return inputSchema;\n }\n\n static override outputSchema() {\n return outputSchema;\n }\n\n override async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n const { vector, scalar } = input;\n const values = Array.from(vector, (v) => Number(v) * scalar);\n return { result: createTypedArrayFrom([vector], values) } as Output;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n vectorScale: CreateWorkflow<VectorScaleTaskInput, VectorScaleTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.vectorScale = CreateWorkflow(VectorScaleTask);\n",
165
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { BrowserSessionTask } from \"./tasks/BrowserSessionTask\";\nimport { BrowserCloseTask } from \"./tasks/BrowserCloseTask\";\nimport { BrowserNavigateTask } from \"./tasks/BrowserNavigateTask\";\nimport { BrowserBackTask } from \"./tasks/BrowserBackTask\";\nimport { BrowserForwardTask } from \"./tasks/BrowserForwardTask\";\nimport { BrowserReloadTask } from \"./tasks/BrowserReloadTask\";\nimport { BrowserSnapshotTask } from \"./tasks/BrowserSnapshotTask\";\nimport { BrowserScreenshotTask } from \"./tasks/BrowserScreenshotTask\";\nimport { BrowserClickTask } from \"./tasks/BrowserClickTask\";\nimport { BrowserFillTask } from \"./tasks/BrowserFillTask\";\nimport { BrowserSelectTask } from \"./tasks/BrowserSelectTask\";\nimport { BrowserHoverTask } from \"./tasks/BrowserHoverTask\";\nimport { BrowserExtractTextTask } from \"./tasks/BrowserExtractTextTask\";\nimport { BrowserExtractHtmlTask } from \"./tasks/BrowserExtractHtmlTask\";\nimport { BrowserAttributeTask } from \"./tasks/BrowserAttributeTask\";\nimport { BrowserQuerySelectorTask } from \"./tasks/BrowserQuerySelectorTask\";\nimport { BrowserEvaluateTask } from \"./tasks/BrowserEvaluateTask\";\nimport { BrowserPressKeyTask } from \"./tasks/BrowserPressKeyTask\";\nimport { BrowserTypeTask } from \"./tasks/BrowserTypeTask\";\nimport { BrowserScrollTask } from \"./tasks/BrowserScrollTask\";\nimport { BrowserUploadTask } from \"./tasks/BrowserUploadTask\";\nimport { BrowserWaitTask } from \"./tasks/BrowserWaitTask\";\nimport { BrowserNewTabTask } from \"./tasks/BrowserNewTabTask\";\nimport { BrowserSwitchTabTask } from \"./tasks/BrowserSwitchTabTask\";\nimport { BrowserCloseTabTask } from \"./tasks/BrowserCloseTabTask\";\nimport { BrowserLoginTask } from \"./tasks/BrowserLoginTask\";\n\nexport const browserTasks = [\n BrowserSessionTask,\n BrowserCloseTask,\n BrowserNavigateTask,\n BrowserBackTask,\n BrowserForwardTask,\n BrowserReloadTask,\n BrowserSnapshotTask,\n BrowserScreenshotTask,\n BrowserClickTask,\n BrowserFillTask,\n BrowserSelectTask,\n BrowserHoverTask,\n BrowserExtractTextTask,\n BrowserExtractHtmlTask,\n BrowserAttributeTask,\n BrowserQuerySelectorTask,\n BrowserEvaluateTask,\n BrowserPressKeyTask,\n BrowserTypeTask,\n BrowserScrollTask,\n BrowserUploadTask,\n BrowserWaitTask,\n BrowserNewTabTask,\n BrowserSwitchTabTask,\n BrowserCloseTabTask,\n BrowserLoginTask,\n] as const;\n\nexport function registerBrowserTasks(): void {\n browserTasks.forEach((task) => TaskRegistry.registerTask(task));\n}\n",
166
115
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n Task,\n TaskAbortedError,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util/schema\";\nimport { FetchUrlTask, FetchUrlTaskOutput } from \"./FetchUrlTask\";\n\nlet _papaParse: typeof import(\"papaparse\").parse | undefined;\n\nasync function getPapaParse(): Promise<typeof import(\"papaparse\").parse> {\n if (!_papaParse) {\n try {\n const mod = await import(\"papaparse\");\n _papaParse = mod.parse;\n } catch {\n throw new Error(\n \"CSV parsing requires the optional 'papaparse' package. \" +\n \"Install it with: npm install papaparse (or bun add papaparse)\"\n );\n }\n }\n return _papaParse;\n}\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"URL to load document from (http://, https://)\",\n format: \"uri\",\n },\n format: {\n type: \"string\",\n enum: [\"text\", \"markdown\", \"json\", \"csv\", \"pdf\", \"image\", \"html\", \"auto\"],\n title: \"Format\",\n description: \"File format (auto-detected from URL if 'auto')\",\n default: \"auto\",\n },\n },\n required: [\"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"Text content (for text, markdown, html formats)\",\n },\n json: {\n title: \"JSON\",\n description: \"Parsed JSON object or array\",\n },\n csv: {\n type: \"array\",\n title: \"CSV\",\n description: \"Parsed CSV data as array of objects\",\n },\n image: {\n type: \"string\",\n title: \"Image\",\n description: \"Base64 data URL for image files\",\n format: \"image:data-uri\",\n },\n pdf: {\n type: \"string\",\n title: \"PDF\",\n description: \"Base64 data URL for PDF files\",\n },\n frontmatter: {\n type: \"object\",\n title: \"Frontmatter\",\n description: \"Parsed YAML frontmatter from markdown/MDX files\",\n },\n metadata: {\n type: \"object\",\n properties: {\n url: { type: \"string\" },\n format: { type: \"string\" },\n size: { type: \"number\" },\n title: { type: \"string\" },\n mimeType: { type: \"string\" },\n },\n additionalProperties: false,\n title: \"Metadata\",\n description: \"File metadata\",\n },\n },\n required: [\"metadata\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type FileLoaderTaskInput = FromSchema<typeof inputSchema>;\nexport type FileLoaderTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for loading documents from URLs (including file:// URLs).\n * Works in all environments (browser, Node.js, Bun) by using fetch API.\n * For server-only filesystem path access, see FileLoaderServerTask.\n */\nexport class FileLoaderTask extends Task<FileLoaderTaskInput, FileLoaderTaskOutput, TaskConfig> {\n public static override type = \"FileLoaderTask\";\n public static override category = \"Document\";\n public static override title = \"File Loader\";\n public static override description = \"Load documents from URLs (http://, https://)\";\n public static override cacheable = true;\n\n public static override inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static override outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n override async execute(\n input: FileLoaderTaskInput,\n context: IExecuteContext\n ): Promise<FileLoaderTaskOutput> {\n const { url, format = \"auto\" } = input;\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(0, \"Detecting file format\");\n\n const detectedFormat = this.detectFormat(url, format);\n const responseType = this.detectResponseType(detectedFormat);\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(10, `Fetching ${detectedFormat} file from ${url}`);\n\n const fetchTask = context.own(new FetchUrlTask({ queue: false }));\n const response = await fetchTask.run({\n url,\n response_type: responseType,\n });\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(60, \"Parsing file content\");\n\n const title = url.split(\"/\").pop() || url;\n const { text, json, csv, image, pdf, frontmatter, size, mimeType } = await this.parseResponse(\n response,\n url,\n detectedFormat\n );\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(100, \"File loaded successfully\");\n\n return {\n text,\n json,\n csv,\n image,\n pdf,\n frontmatter,\n metadata: {\n url,\n format: detectedFormat,\n size,\n title,\n mimeType,\n },\n };\n }\n\n /**\n * Parse JSON content\n */\n protected parseJsonContent(content: string): unknown {\n return JSON.parse(content);\n }\n\n /**\n * Parse CSV content into array of objects\n */\n protected async parseCsvContent(content: string): Promise<Array<Record<string, string>>> {\n try {\n const parse = await getPapaParse();\n const result = parse<Record<string, string>>(content, {\n header: true,\n skipEmptyLines: true,\n transformHeader: (header: string) => header.trim(),\n });\n return result.data;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"optional 'papaparse'\")) {\n throw error;\n }\n throw new Error(`Failed to parse CSV: ${error}`);\n }\n }\n\n /**\n * Parse YAML frontmatter from markdown/MDX content.\n * Supports common frontmatter patterns: strings, numbers, booleans, arrays, and nested objects.\n */\n protected parseFrontmatter(content: string): {\n readonly frontmatter: Record<string, unknown> | undefined;\n readonly body: string;\n } {\n // Strip optional BOM and leading whitespace\n const trimmed = content.replace(/^\\uFEFF/, \"\");\n if (!trimmed.startsWith(\"---\\n\") && !trimmed.startsWith(\"---\\r\\n\")) {\n return { frontmatter: undefined, body: content };\n }\n\n const firstDelimEnd = trimmed.indexOf(\"\\n\") + 1;\n const closingIdx = trimmed.indexOf(\"\\n---\", firstDelimEnd);\n if (closingIdx === -1) {\n return { frontmatter: undefined, body: content };\n }\n\n const yamlBlock = trimmed.slice(firstDelimEnd, closingIdx);\n // Body starts after the closing --- and its trailing newline\n const afterClosing = closingIdx + 4; // \"\\n---\".length\n let bodyStart = afterClosing;\n if (trimmed[bodyStart] === \"\\r\") bodyStart++;\n if (trimmed[bodyStart] === \"\\n\") bodyStart++;\n const body = trimmed.slice(bodyStart).replace(/^\\r?\\n/, \"\");\n\n const frontmatter = this.parseSimpleYaml(yamlBlock);\n return { frontmatter, body };\n }\n\n /**\n * Lightweight line-based YAML parser for frontmatter key-value pairs.\n */\n private parseSimpleYaml(yaml: string): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n const lines = yaml.split(/\\r?\\n/);\n let i = 0;\n\n while (i < lines.length) {\n i = this.parseYamlLine(lines, i, result, 0);\n }\n\n return result;\n }\n\n private parseYamlLine(\n lines: readonly string[],\n index: number,\n target: Record<string, unknown>,\n indent: number\n ): number {\n if (index >= lines.length) return index + 1;\n const line = lines[index];\n\n // Skip empty lines and comments\n if (line.trim() === \"\" || line.trim().startsWith(\"#\")) {\n return index + 1;\n }\n\n const lineIndent = line.length - line.trimStart().length;\n if (lineIndent < indent) return index; // Dedented, stop\n\n const match = line.match(/^(\\s*)([^:#]+?)\\s*:\\s*(.*)?$/);\n if (!match) return index + 1;\n\n const key = match[2].trim();\n const rawValue = (match[3] ?? \"\").trim();\n\n if (rawValue === \"\" || rawValue === \"|\" || rawValue === \">\") {\n // Check if next line is an array or nested object\n const nextIndex = index + 1;\n if (nextIndex < lines.length) {\n const nextLine = lines[nextIndex];\n const nextTrimmed = nextLine.trimStart();\n const nextIndent = nextLine.length - nextTrimmed.length;\n\n if (nextIndent > lineIndent && nextTrimmed.startsWith(\"- \")) {\n // Array\n const arr: unknown[] = [];\n let j = nextIndex;\n while (j < lines.length) {\n const arrLine = lines[j];\n const arrTrimmed = arrLine.trimStart();\n const arrIndent = arrLine.length - arrTrimmed.length;\n if (arrTrimmed === \"\" || arrTrimmed.startsWith(\"#\")) {\n j++;\n continue;\n }\n if (arrIndent < nextIndent) break;\n if (arrTrimmed.startsWith(\"- \")) {\n arr.push(this.parseYamlValue(arrTrimmed.slice(2).trim()));\n j++;\n } else {\n break;\n }\n }\n target[key] = arr;\n return j;\n } else if (nextIndent > lineIndent) {\n // Nested object\n const nested: Record<string, unknown> = {};\n let j = nextIndex;\n while (j < lines.length) {\n const nestedLine = lines[j];\n const nestedTrimmed = nestedLine.trimStart();\n const nestedIndent = nestedLine.length - nestedTrimmed.length;\n if (nestedTrimmed === \"\" || nestedTrimmed.startsWith(\"#\")) {\n j++;\n continue;\n }\n if (nestedIndent < nextIndent) break;\n j = this.parseYamlLine(lines, j, nested, nextIndent);\n }\n target[key] = nested;\n return j;\n }\n }\n // Empty value\n target[key] = rawValue === \"\" ? null : rawValue;\n return index + 1;\n }\n\n target[key] = this.parseYamlValue(rawValue);\n return index + 1;\n }\n\n private parseYamlValue(raw: string): unknown {\n // Quoted strings\n if ((raw.startsWith('\"') && raw.endsWith('\"')) || (raw.startsWith(\"'\") && raw.endsWith(\"'\"))) {\n return raw.slice(1, -1);\n }\n // Booleans\n if (raw === \"true\" || raw === \"True\" || raw === \"TRUE\") return true;\n if (raw === \"false\" || raw === \"False\" || raw === \"FALSE\") return false;\n // Null\n if (raw === \"null\" || raw === \"~\") return null;\n // Numbers\n if (/^-?\\d+(\\.\\d+)?$/.test(raw)) return Number(raw);\n // Inline arrays [a, b, c]\n if (raw.startsWith(\"[\") && raw.endsWith(\"]\")) {\n return raw\n .slice(1, -1)\n .split(\",\")\n .map((item) => this.parseYamlValue(item.trim()));\n }\n // Plain string\n return raw;\n }\n\n /**\n * Parse the fetch response into typed outputs\n */\n protected async parseResponse(\n response: FetchUrlTaskOutput,\n url: string,\n detectedFormat: \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\"\n ): Promise<{\n readonly text: string | undefined;\n readonly json: unknown | undefined;\n readonly csv: Array<Record<string, string>> | undefined;\n readonly image: string | undefined;\n readonly pdf: string | undefined;\n readonly frontmatter: Record<string, unknown> | undefined;\n readonly size: number;\n readonly mimeType: string;\n }> {\n const responseMimeType = response.metadata?.contentType || \"\";\n\n if (detectedFormat === \"json\") {\n if (!response.json) {\n throw new Error(`Failed to load JSON from ${url}`);\n }\n const jsonData = response.json;\n const content = JSON.stringify(jsonData, null, 2);\n return {\n text: undefined,\n json: jsonData,\n csv: undefined,\n image: undefined,\n pdf: undefined,\n frontmatter: undefined,\n size: content.length,\n mimeType: responseMimeType || \"application/json\",\n };\n }\n\n if (detectedFormat === \"csv\") {\n const content = response.text || \"\";\n if (!content) {\n throw new Error(`Failed to load CSV from ${url}`);\n }\n const csvData = await this.parseCsvContent(content);\n return {\n text: undefined,\n json: undefined,\n csv: csvData,\n image: undefined,\n pdf: undefined,\n frontmatter: undefined,\n size: content.length,\n mimeType: responseMimeType || \"text/csv\",\n };\n }\n\n if (detectedFormat === \"image\") {\n if (!response.blob) {\n throw new Error(`Failed to load image from ${url}`);\n }\n const blob = response.blob as Blob;\n const mimeType =\n responseMimeType ||\n (blob.type && blob.type !== \"\" ? blob.type : this.getImageMimeType(url));\n const imageData = await this.blobToBase64DataURL(blob, mimeType);\n return {\n text: undefined,\n json: undefined,\n csv: undefined,\n image: imageData,\n pdf: undefined,\n frontmatter: undefined,\n size: blob.size,\n mimeType,\n };\n }\n\n if (detectedFormat === \"pdf\") {\n if (!response.blob) {\n throw new Error(`Failed to load PDF from ${url}`);\n }\n const blob = response.blob as Blob;\n const mimeType = responseMimeType || \"application/pdf\";\n const pdfData = await this.blobToBase64DataURL(blob, mimeType);\n return {\n text: undefined,\n json: undefined,\n csv: undefined,\n image: undefined,\n pdf: pdfData,\n frontmatter: undefined,\n size: blob.size,\n mimeType,\n };\n }\n\n // text, markdown, or html\n const content = response.text ?? \"\";\n const mimeType =\n responseMimeType ||\n (detectedFormat === \"markdown\"\n ? \"text/markdown\"\n : detectedFormat === \"html\"\n ? \"text/html\"\n : \"text/plain\");\n\n if (detectedFormat === \"markdown\") {\n const { frontmatter, body } = this.parseFrontmatter(content);\n return {\n text: body,\n json: undefined,\n csv: undefined,\n image: undefined,\n pdf: undefined,\n frontmatter,\n size: content.length,\n mimeType,\n };\n }\n\n return {\n text: content,\n json: undefined,\n csv: undefined,\n image: undefined,\n pdf: undefined,\n frontmatter: undefined,\n size: content.length,\n mimeType,\n };\n }\n\n /**\n * Detect the appropriate response type for fetching based on the detected format\n * @param detectedFormat - The detected format\n * @returns The appropriate response type\n */\n protected detectResponseType(detectedFormat: string): \"text\" | \"json\" | \"blob\" | \"arraybuffer\" {\n // Determine appropriate response type for fetching\n let responseType: \"text\" | \"json\" | \"blob\" | \"arraybuffer\" = \"text\";\n if (detectedFormat === \"json\") {\n responseType = \"json\";\n } else if (detectedFormat === \"image\" || detectedFormat === \"pdf\") {\n responseType = \"blob\";\n } else if (\n detectedFormat === \"csv\" ||\n detectedFormat === \"text\" ||\n detectedFormat === \"markdown\" ||\n detectedFormat === \"html\"\n ) {\n responseType = \"text\";\n }\n return responseType;\n }\n\n /**\n *\n * @param url - The URL to detect the format from\n * @param format - The format (assuming \"auto\" if not provided)\n * @returns\n */\n protected detectFormat(\n url: string,\n format: \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\" | \"auto\"\n ): \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\" {\n if (format === \"auto\") {\n const urlLower = url.toLowerCase();\n if (urlLower.endsWith(\".md\") || urlLower.endsWith(\".mdx\") || urlLower.endsWith(\".markdown\")) {\n return \"markdown\";\n } else if (urlLower.endsWith(\".json\")) {\n return \"json\";\n } else if (urlLower.endsWith(\".csv\")) {\n return \"csv\";\n } else if (urlLower.endsWith(\".pdf\")) {\n return \"pdf\";\n } else if (urlLower.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/)) {\n return \"image\";\n } else if (urlLower.endsWith(\".html\") || urlLower.endsWith(\".htm\")) {\n return \"html\";\n } else {\n return \"text\";\n }\n }\n return format;\n }\n\n /**\n * Get image MIME type based on URL extension\n */\n protected getImageMimeType(url: string): string {\n const urlLower = url.toLowerCase();\n if (urlLower.endsWith(\".png\")) return \"image/png\";\n if (urlLower.endsWith(\".jpg\") || urlLower.endsWith(\".jpeg\")) return \"image/jpeg\";\n if (urlLower.endsWith(\".gif\")) return \"image/gif\";\n if (urlLower.endsWith(\".webp\")) return \"image/webp\";\n if (urlLower.endsWith(\".bmp\")) return \"image/bmp\";\n if (urlLower.endsWith(\".svg\")) return \"image/svg+xml\";\n if (urlLower.endsWith(\".ico\")) return \"image/x-icon\";\n return \"image/jpeg\"; // default\n }\n\n /**\n * Convert Blob to base64 data URL\n */\n protected async blobToBase64DataURL(blob: Blob, mimeType: string): Promise<string> {\n // For Node.js/Bun environments\n if (typeof Buffer !== \"undefined\") {\n const arrayBuffer = await blob.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n return `data:${mimeType};base64,${buffer.toString(\"base64\")}`;\n }\n\n // For browser environments\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // If blob had no type, replace empty type with provided mimeType\n const result = reader.result as string;\n if (result.startsWith(\"data:;base64,\")) {\n resolve(`data:${mimeType};base64,${result.substring(13)}`);\n } else {\n resolve(result);\n }\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n}\n\nexport const fileLoader = (input: FileLoaderTaskInput, config?: TaskConfig) => {\n return new FileLoaderTask(config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n fileLoader: CreateWorkflow<FileLoaderTaskInput, FileLoaderTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.fileLoader = CreateWorkflow(FileLoaderTask);\n",
167
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport \"./codec.browser\";\nimport \"./task/image/registerImageTextRenderer.browser\";\n\nexport * from \"./common\";\nexport * from \"./task/FileLoaderTask\";\nexport * from \"./util/McpAuthProvider\";\nexport * from \"./util/McpAuthTypes\";\nexport * from \"./util/McpClientUtil\";\nexport * from \"./util/McpTaskDeps\";\n\nimport { mcpClientFactory, mcpServerConfigSchema } from \"./util/McpClientUtil\";\nimport { registerMcpTaskDeps } from \"./util/McpTaskDeps\";\n\nregisterMcpTaskDeps({\n mcpClientFactory,\n mcpServerConfigSchema,\n createStdioTransport: () => {\n throw new Error(\n \"stdio transport is not available in the browser. Use streamable-http or sse instead.\"\n );\n },\n});\n\nimport { registerBrowserDeps } from \"./util/BrowserTaskDeps\";\n\nregisterBrowserDeps({\n createContext: () => {\n throw new Error(\n \"Browser control is not available in this environment. Use the Workglow desktop app.\"\n );\n },\n availableBackends: [],\n defaultBackend: \"cloud\",\n profileStorage: {\n save: async () => {},\n load: async () => null,\n delete: async () => {},\n },\n});\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { registerCommonTasks as registerCommonTasksFn } from \"./common\";\nimport { FileLoaderTask } from \"./task/FileLoaderTask\";\n\nexport const registerCommonTasks = () => {\n const tasks = registerCommonTasksFn();\n TaskRegistry.registerTask(FileLoaderTask);\n return [...tasks, FileLoaderTask];\n};\n"
116
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport \"./codec.browser\";\nimport \"./task/image/registerImageTextRenderer.browser\";\n\nexport * from \"./common\";\nexport * from \"./task/FileLoaderTask\";\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { registerCommonTasks as registerCommonTasksFn } from \"./common\";\nimport { FileLoaderTask } from \"./task/FileLoaderTask\";\n\nexport const registerCommonTasks = () => {\n const tasks = registerCommonTasksFn();\n TaskRegistry.registerTask(FileLoaderTask);\n return [...tasks, FileLoaderTask];\n};\n"
168
117
  ],
169
- "mappings": "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ACA,KAEA,uBACA,oBACA,iCACA,+CACA,0BACA,iBACA,qBACA,KACA,UACA,mBACA,kBACA,mBACA,aACA,KACA,MAEA,uBACA,6BACA,iCACA,+CACA,gDACA,0BACA,UACA,KACA,mBACA,eACA,KACA,MAEA,uBACA,sBACA,iCACA,+CACA,0BACA,iBACA,qBACA,KACA,qBACA,uCACA,uBACA,oBACA,YACA,gBACA,KACA,KACA,gBACA,uBACA,iBACA,KACA,MAEA,uBACA,gCACA,iCACA,+CACA,0BACA,YACA,KACA,wCACA,iBACA,mCACA,YACA,mCACA,KACA,KACA,gDACA,wBACA,KACA,+CACA,KACA,MAEA,uBACA,wBACA,iCACA,+CACA,0BACA,aACA,KACA,6CACA,iBACA,sBACA,6BACA,0BACA,YACA,gBACA,KACA,eACA,uBACA,YACA,0BACA,KACA,KACA,aACA,KACA,MAEA,uBACA,gDACA,iCACA,+CACA,0BACA,2BACA,cACA,KACA,wDACA,qBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,oDACA,iCACA,+CACA,eACA,cACA,KACA,oBACA,+BACA,sBACA,YACA,gDACA,KACA,KACA,8DACA,oBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,gCACA,iCACA,+CAEA,eACA,4DAEA,qCACA,2BACA,aACA,KACA,kBACA,oBACA,YACA,6BACA,KACA,YACA,cACA,KACA,2BACA,iCACA,oCACA,2BACA,6BACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,mDACA,iCACA,+CACA,eACA,oBACA,qCACA,YACA,iCACA,KACA,+BACA,8BACA,YACA,qBACA,kEACA,KACA,qBAEA,uDACA,iBACA,uBACA,YACA,qBACA,KACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mEACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mDACA,gBACA,KACA,uBAEA,mCACA,4CACA,iBACA,sBACA,YACA,sBACA,KACA,KACA,eACA,gDACA,oCACA,KACA,mBACA,mBACA,KACA,MAEA,uBACA,+BACA,iCACA,yBACA,oBACA,iDACA,8CACA,+BACA,mDACA,qBACA,0BACA,YACA,oBACA,KACA,KACA,YACA,uBACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,kCACA,iCACA,+CACA,oDACA,+BACA,iBACA,mCACA,6BACA,6DACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,qEACA,iBACA,+CACA,0CACA,qBACA,gEACA,QACA,KACA,gBACA,KACA,MAIA,uBACA,oCACA,yFACA,+CACA,iBACA,gEACA,mCACA,iBACA,mBACA,oDACA,KACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,mEACA,iBACA,+CACA,0CACA,qBACA,6CACA,QACA,KACA,KACA,MAIA,uBACA,qCACA,mEACA,iBACA,+CACA,0CACA,2BACA,qBACA,oDACA,QACA,KACA,aACA,KACA,MAIA,uBACA,kDACA,mEACA,+CACA,qBACA,iCACA,yBACA,YACA,qCACA,mBACA,mEACA,KACA,mBACA,KACA,0BACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,uDACA,0GACA,+CACA,2BACA,gCACA,yBACA,YACA,oCACA,gBACA,mEACA,KACA,mBACA,KACA,yBACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,qCACA,8DACA,+CACA,gEACA,mCACA,6DACA,KACA,iBACA,KACA,MAEA,uBACA,6BACA,iCACA,yCACA,yBACA,KACA,2CACA,oBACA,mDACA,yDACA,8CACA,uBACA,4BACA,0BACA,0BACA,YACA,mBACA,KACA,kBACA,uBACA,YACA,uBACA,KACA,cACA,KACA,KACA,wBACA,KACA,gBACA,KACA,MAEA,uBACA,+BACA,iCACA,+CACA,iBACA,mCACA,gFACA,KACA,yBACA,KACA,MACA,SACA,EACF;AAAA;AAOF,YAAY,UAAU,aAAa,QAAS,CAAC,cAAc;AAAA,EACzD,IAAI,kBAAkB;AAAA,EACtB,IAAI;AAAA,EAEJ,UAAU,SAAS,OAAM,CAAC,OAAO;AAAA,IAC/B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",
170
- "debugId": "3B3109B7341B5B0164756E2164756E21",
118
+ "mappings": "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",
119
+ "debugId": "357165167B3D8D5964756E2164756E21",
171
120
  "names": []
172
121
  }