@jingyi0605/codingns 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-BsgVNRAa.js → AdaptiveButlerPage-b7s6F_sd.js} +1 -1
  2. package/dist/public/assets/{App-tPcbyRdS.js → App-B0q8uDA-.js} +3 -3
  3. package/dist/public/assets/{BootstrapPage--MDOigQi.js → BootstrapPage-jFfl7KNK.js} +1 -1
  4. package/dist/public/assets/{ConversationPage-BBss5ED8.js → ConversationPage-sj_rn4q0.js} +1 -1
  5. package/dist/public/assets/{DesktopDetachPreviewPage-CB8DoqwU.js → DesktopDetachPreviewPage-C5c88SOX.js} +1 -1
  6. package/dist/public/assets/{DesktopWindowPage-GtIx5m8K.js → DesktopWindowPage-BdKUZrKG.js} +1 -1
  7. package/dist/public/assets/{FileContextPanel-BcM7AIT4.js → FileContextPanel-lM5mBcfn.js} +1 -1
  8. package/dist/public/assets/{GitSidebar-CMtkaxuI.js → GitSidebar-CmXAhyjo.js} +1 -1
  9. package/dist/public/assets/{MobileCreateSessionSheet-CrFY41_8.js → MobileCreateSessionSheet-CceV0-AH.js} +1 -1
  10. package/dist/public/assets/{MobileTopHeaderFrame-DGVOzXyg.js → MobileTopHeaderFrame-_I0t7cC_.js} +1 -1
  11. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-DLkACTnQ.js → MobileWorkspaceSwitcherHeader-DhaM9fgx.js} +1 -1
  12. package/dist/public/assets/{RelayConnectEntryPage-0MPPjxtQ.js → RelayConnectEntryPage-CMtDWyGS.js} +1 -1
  13. package/dist/public/assets/{ServerSettingsModal-vgOhwus4.js → ServerSettingsModal-Rkgn3jft.js} +1 -1
  14. package/dist/public/assets/{SessionIndexPage-KK626Ra9.js → SessionIndexPage-BOumP3ij.js} +1 -1
  15. package/dist/public/assets/{SettingsPage-B3edBJIo.js → SettingsPage-vx_c-00-.js} +1 -1
  16. package/dist/public/assets/{TerminalManagerPanel-BxlhZp8c.js → TerminalManagerPanel-D9JHCS6d.js} +1 -1
  17. package/dist/public/assets/{TerminalPage-B6Rdhylx.js → TerminalPage-CBIKHI33.js} +1 -1
  18. package/dist/public/assets/{TerminalRuntimeFallbackModal-BVLfrpSa.js → TerminalRuntimeFallbackModal-W5NjqFEz.js} +1 -1
  19. package/dist/public/assets/{ToolFilesPage-N_gwwUjD.js → ToolFilesPage-DWtpaN_7.js} +1 -1
  20. package/dist/public/assets/{ToolGitPage-DOcuuWM1.js → ToolGitPage-MpGXsw4_.js} +1 -1
  21. package/dist/public/assets/{ToolProcessesPage-D-FfJ7Re.js → ToolProcessesPage-B1jHQKhZ.js} +1 -1
  22. package/dist/public/assets/{ToolsHomePage-CHfPxd20.js → ToolsHomePage-CJrn8ZFl.js} +1 -1
  23. package/dist/public/assets/{WorkbenchLandingPage-CTTnfovY.js → WorkbenchLandingPage-CJQ1V5U-.js} +1 -1
  24. package/dist/public/assets/{WorkbenchLayout-CbpJg0g1.js → WorkbenchLayout-D48i71PU.js} +3 -3
  25. package/dist/public/assets/{WorkbenchModal-Bt_1fYmM.js → WorkbenchModal-BYNuMIoV.js} +1 -1
  26. package/dist/public/assets/WorkbenchShellRoute-CGKjy4J-.js +1 -0
  27. package/dist/public/assets/{WorkspaceDebugDetailPage-s7yuDIxR.js → WorkspaceDebugDetailPage-DCAYgays.js} +1 -1
  28. package/dist/public/assets/{WorkspaceDetailPage-Cf-gVpqK.js → WorkspaceDetailPage-D5v-nUIi.js} +1 -1
  29. package/dist/public/assets/{WorkspaceHomePage-COf6I8sT.js → WorkspaceHomePage-I5G1p5SR.js} +1 -1
  30. package/dist/public/assets/{client-runtime-manager-DGdKvYzx.js → client-runtime-manager-CdJP7nUp.js} +1 -1
  31. package/dist/public/assets/{file-tree-icon-BeHqeru9.js → file-tree-icon-BFwaPxKs.js} +6 -6
  32. package/dist/public/assets/{index-CuzMc7q2.js → index-CjewzOUG.js} +3 -3
  33. package/dist/public/assets/{index-CcaQt50x.css → index-VVxfF0s5.css} +1 -1
  34. package/dist/public/assets/{login-direct-candidate-resolver-DEP_xCmR.js → login-direct-candidate-resolver-C-mo698r.js} +1 -1
  35. package/dist/public/assets/{model-switch-api-c6kcbBGm.js → model-switch-api-Br0ivfe5.js} +1 -1
  36. package/dist/public/assets/{preferences-service-CV6Ih0BG.js → preferences-service-CnaTvZq2.js} +1 -1
  37. package/dist/public/assets/{realtime-client-CRCx5xBt.js → realtime-client-BlQRqVmm.js} +1 -1
  38. package/dist/public/assets/{relay-entry-C751A-Sm.js → relay-entry-D7OgZZN-.js} +1 -1
  39. package/dist/public/assets/{terminal-runtime-meta-CRAVR-8G.js → terminal-runtime-meta-BCtAYB0E.js} +1 -1
  40. package/dist/public/assets/{useRegisteredDebugTemplates-D6YtNS0r.js → useRegisteredDebugTemplates-CXmxu69X.js} +1 -1
  41. package/dist/public/index.html +2 -2
  42. package/dist/server/main.js +2 -0
  43. package/dist/server/main.js.map +1 -1
  44. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +1 -0
  45. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +1 -0
  46. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  47. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +1 -0
  48. package/dist/server/modules/assistant-capability/assistant-capability-service.js +1 -0
  49. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  50. package/dist/server/modules/browser-runtime/browser-runtime-controller.d.ts +2 -1
  51. package/dist/server/modules/browser-runtime/browser-runtime-controller.js +1 -0
  52. package/dist/server/modules/browser-runtime/browser-runtime-controller.js.map +1 -1
  53. package/dist/server/modules/browser-runtime/browser-runtime-service.d.ts +4 -1
  54. package/dist/server/modules/browser-runtime/browser-runtime-service.js +40 -0
  55. package/dist/server/modules/browser-runtime/browser-runtime-service.js.map +1 -1
  56. package/dist/server/modules/browser-runtime/browser-task-payload.d.ts +2 -0
  57. package/dist/server/modules/browser-runtime/browser-task-payload.js.map +1 -1
  58. package/dist/server/modules/git/git-command-helper-process.js +0 -18
  59. package/dist/server/modules/git/git-command-helper-process.js.map +1 -1
  60. package/dist/server/modules/git/git-command-runner.js +0 -18
  61. package/dist/server/modules/git/git-command-runner.js.map +1 -1
  62. package/dist/server/modules/sessions/session-live-runtime-service.js +46 -3
  63. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  64. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +1 -0
  65. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +11 -2
  66. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -1
  67. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +2 -2
  68. package/dist/server/shared/http/error-handler.js +53 -19
  69. package/dist/server/shared/http/error-handler.js.map +1 -1
  70. package/dist/server/shared/utils/install-console-timestamp-prefix.d.ts +1 -0
  71. package/dist/server/shared/utils/install-console-timestamp-prefix.js +28 -0
  72. package/dist/server/shared/utils/install-console-timestamp-prefix.js.map +1 -0
  73. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +42 -0
  74. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +346 -0
  75. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +1 -0
  76. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +1 -0
  77. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +80 -0
  78. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +1 -0
  79. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +18 -0
  80. package/node_modules/@codingns/session-sync-core/dist/index.js +19 -0
  81. package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -0
  82. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +18 -0
  83. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +659 -0
  84. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +1 -0
  85. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +11 -0
  86. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +72 -0
  87. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +1 -0
  88. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +67 -0
  89. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +752 -0
  90. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -0
  91. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +48 -0
  92. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +1184 -0
  93. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -0
  94. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.d.ts +11 -0
  95. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +105 -0
  96. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +1 -0
  97. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +84 -0
  98. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +2436 -0
  99. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -0
  100. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +47 -0
  101. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +1480 -0
  102. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -0
  103. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +33 -0
  104. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +684 -0
  105. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -0
  106. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.d.ts +9 -0
  107. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js +17 -0
  108. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js.map +1 -0
  109. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +1 -0
  110. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +8 -0
  111. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +1 -0
  112. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.d.ts +48 -0
  113. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +373 -0
  114. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +1 -0
  115. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +61 -0
  116. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +1191 -0
  117. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -0
  118. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +27 -0
  119. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +415 -0
  120. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -0
  121. package/node_modules/@codingns/session-sync-core/dist/registry.d.ts +7 -0
  122. package/node_modules/@codingns/session-sync-core/dist/registry.js +22 -0
  123. package/node_modules/@codingns/session-sync-core/dist/registry.js.map +1 -0
  124. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +24 -0
  125. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +329 -0
  126. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -0
  127. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +30 -0
  128. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +939 -0
  129. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -0
  130. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +1 -0
  131. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +16 -0
  132. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +1 -0
  133. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +70 -0
  134. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +2571 -0
  135. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -0
  136. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +21 -0
  137. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +561 -0
  138. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +1 -0
  139. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +38 -0
  140. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +911 -0
  141. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +1 -0
  142. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +15 -0
  143. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +16 -0
  144. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +1 -0
  145. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +38 -0
  146. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +970 -0
  147. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -0
  148. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +21 -0
  149. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +168 -0
  150. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -0
  151. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +152 -0
  152. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js +2 -0
  153. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js.map +1 -0
  154. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +28 -0
  155. package/node_modules/@codingns/session-sync-core/dist/services.js +148 -0
  156. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -0
  157. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +6 -0
  158. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +9 -0
  159. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -0
  160. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +198 -0
  161. package/node_modules/@codingns/session-sync-core/dist/types.js +2 -0
  162. package/node_modules/@codingns/session-sync-core/dist/types.js.map +1 -0
  163. package/node_modules/@codingns/session-sync-core/package.json +33 -0
  164. package/package.json +6 -4
  165. package/vendor/node-pty-fork/LICENSE +69 -0
  166. package/vendor/node-pty-fork/README.md +91 -0
  167. package/vendor/node-pty-fork/binding.gyp +117 -0
  168. package/vendor/node-pty-fork/deps/.editorconfig +2 -0
  169. package/vendor/node-pty-fork/deps/winpty/.drone.yml +17 -0
  170. package/vendor/node-pty-fork/deps/winpty/.gitattributes +19 -0
  171. package/vendor/node-pty-fork/deps/winpty/LICENSE +21 -0
  172. package/vendor/node-pty-fork/deps/winpty/Makefile +166 -0
  173. package/vendor/node-pty-fork/deps/winpty/README.md +151 -0
  174. package/vendor/node-pty-fork/deps/winpty/RELEASES.md +280 -0
  175. package/vendor/node-pty-fork/deps/winpty/VERSION.txt +1 -0
  176. package/vendor/node-pty-fork/deps/winpty/configure +167 -0
  177. package/vendor/node-pty-fork/deps/winpty/misc/BufferResizeTests.cc +90 -0
  178. package/vendor/node-pty-fork/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
  179. package/vendor/node-pty-fork/deps/winpty/misc/ClearConsole.cc +72 -0
  180. package/vendor/node-pty-fork/deps/winpty/misc/ConinMode.cc +117 -0
  181. package/vendor/node-pty-fork/deps/winpty/misc/ConinMode.ps1 +116 -0
  182. package/vendor/node-pty-fork/deps/winpty/misc/ConoutMode.cc +113 -0
  183. package/vendor/node-pty-fork/deps/winpty/misc/DebugClient.py +42 -0
  184. package/vendor/node-pty-fork/deps/winpty/misc/DebugServer.py +63 -0
  185. package/vendor/node-pty-fork/deps/winpty/misc/DumpLines.py +5 -0
  186. package/vendor/node-pty-fork/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
  187. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
  188. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
  189. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
  190. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
  191. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
  192. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
  193. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
  194. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
  195. package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
  196. package/vendor/node-pty-fork/deps/winpty/misc/FontSurvey.cc +100 -0
  197. package/vendor/node-pty-fork/deps/winpty/misc/FormatChar.h +21 -0
  198. package/vendor/node-pty-fork/deps/winpty/misc/FreezePerfTest.cc +62 -0
  199. package/vendor/node-pty-fork/deps/winpty/misc/GetCh.cc +20 -0
  200. package/vendor/node-pty-fork/deps/winpty/misc/GetConsolePos.cc +41 -0
  201. package/vendor/node-pty-fork/deps/winpty/misc/GetFont.cc +261 -0
  202. package/vendor/node-pty-fork/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
  203. package/vendor/node-pty-fork/deps/winpty/misc/IsNewConsole.cc +87 -0
  204. package/vendor/node-pty-fork/deps/winpty/misc/MouseInputNotes.txt +90 -0
  205. package/vendor/node-pty-fork/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
  206. package/vendor/node-pty-fork/deps/winpty/misc/Notes.txt +219 -0
  207. package/vendor/node-pty-fork/deps/winpty/misc/OSVersion.cc +27 -0
  208. package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
  209. package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferTest.cc +671 -0
  210. package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
  211. package/vendor/node-pty-fork/deps/winpty/misc/SelectAllTest.cc +45 -0
  212. package/vendor/node-pty-fork/deps/winpty/misc/SetBufferSize.cc +32 -0
  213. package/vendor/node-pty-fork/deps/winpty/misc/SetCursorPos.cc +10 -0
  214. package/vendor/node-pty-fork/deps/winpty/misc/SetFont.cc +145 -0
  215. package/vendor/node-pty-fork/deps/winpty/misc/SetWindowRect.cc +36 -0
  216. package/vendor/node-pty-fork/deps/winpty/misc/ShowArgv.cc +12 -0
  217. package/vendor/node-pty-fork/deps/winpty/misc/ShowConsoleInput.cc +40 -0
  218. package/vendor/node-pty-fork/deps/winpty/misc/Spew.py +5 -0
  219. package/vendor/node-pty-fork/deps/winpty/misc/TestUtil.cc +172 -0
  220. package/vendor/node-pty-fork/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
  221. package/vendor/node-pty-fork/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
  222. package/vendor/node-pty-fork/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
  223. package/vendor/node-pty-fork/deps/winpty/misc/UnixEcho.cc +89 -0
  224. package/vendor/node-pty-fork/deps/winpty/misc/Utf16Echo.cc +46 -0
  225. package/vendor/node-pty-fork/deps/winpty/misc/VeryLargeRead.cc +122 -0
  226. package/vendor/node-pty-fork/deps/winpty/misc/VkEscapeTest.cc +56 -0
  227. package/vendor/node-pty-fork/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
  228. package/vendor/node-pty-fork/deps/winpty/misc/Win10WrapTest1.cc +57 -0
  229. package/vendor/node-pty-fork/deps/winpty/misc/Win10WrapTest2.cc +30 -0
  230. package/vendor/node-pty-fork/deps/winpty/misc/Win32Echo1.cc +26 -0
  231. package/vendor/node-pty-fork/deps/winpty/misc/Win32Echo2.cc +19 -0
  232. package/vendor/node-pty-fork/deps/winpty/misc/Win32Test1.cc +46 -0
  233. package/vendor/node-pty-fork/deps/winpty/misc/Win32Test2.cc +70 -0
  234. package/vendor/node-pty-fork/deps/winpty/misc/Win32Test3.cc +78 -0
  235. package/vendor/node-pty-fork/deps/winpty/misc/Win32Write1.cc +44 -0
  236. package/vendor/node-pty-fork/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
  237. package/vendor/node-pty-fork/deps/winpty/misc/WriteConsole.cc +106 -0
  238. package/vendor/node-pty-fork/deps/winpty/misc/build32.sh +9 -0
  239. package/vendor/node-pty-fork/deps/winpty/misc/build64.sh +9 -0
  240. package/vendor/node-pty-fork/deps/winpty/misc/color-test.sh +212 -0
  241. package/vendor/node-pty-fork/deps/winpty/misc/font-notes.txt +300 -0
  242. package/vendor/node-pty-fork/deps/winpty/misc/winbug-15048.cc +201 -0
  243. package/vendor/node-pty-fork/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
  244. package/vendor/node-pty-fork/deps/winpty/ship/common_ship.py +53 -0
  245. package/vendor/node-pty-fork/deps/winpty/ship/make_msvc_package.py +165 -0
  246. package/vendor/node-pty-fork/deps/winpty/ship/ship.py +108 -0
  247. package/vendor/node-pty-fork/deps/winpty/src/agent/Agent.cc +605 -0
  248. package/vendor/node-pty-fork/deps/winpty/src/agent/Agent.h +103 -0
  249. package/vendor/node-pty-fork/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
  250. package/vendor/node-pty-fork/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
  251. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleFont.cc +632 -0
  252. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleFont.h +28 -0
  253. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInput.cc +852 -0
  254. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInput.h +109 -0
  255. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
  256. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
  257. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleLine.cc +152 -0
  258. package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleLine.h +41 -0
  259. package/vendor/node-pty-fork/deps/winpty/src/agent/Coord.h +87 -0
  260. package/vendor/node-pty-fork/deps/winpty/src/agent/DebugShowInput.cc +239 -0
  261. package/vendor/node-pty-fork/deps/winpty/src/agent/DebugShowInput.h +32 -0
  262. package/vendor/node-pty-fork/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
  263. package/vendor/node-pty-fork/deps/winpty/src/agent/DefaultInputMap.h +28 -0
  264. package/vendor/node-pty-fork/deps/winpty/src/agent/DsrSender.h +30 -0
  265. package/vendor/node-pty-fork/deps/winpty/src/agent/EventLoop.cc +99 -0
  266. package/vendor/node-pty-fork/deps/winpty/src/agent/EventLoop.h +47 -0
  267. package/vendor/node-pty-fork/deps/winpty/src/agent/InputMap.cc +246 -0
  268. package/vendor/node-pty-fork/deps/winpty/src/agent/InputMap.h +114 -0
  269. package/vendor/node-pty-fork/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
  270. package/vendor/node-pty-fork/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
  271. package/vendor/node-pty-fork/deps/winpty/src/agent/NamedPipe.cc +378 -0
  272. package/vendor/node-pty-fork/deps/winpty/src/agent/NamedPipe.h +125 -0
  273. package/vendor/node-pty-fork/deps/winpty/src/agent/Scraper.cc +699 -0
  274. package/vendor/node-pty-fork/deps/winpty/src/agent/Scraper.h +103 -0
  275. package/vendor/node-pty-fork/deps/winpty/src/agent/SimplePool.h +75 -0
  276. package/vendor/node-pty-fork/deps/winpty/src/agent/SmallRect.h +143 -0
  277. package/vendor/node-pty-fork/deps/winpty/src/agent/Terminal.cc +535 -0
  278. package/vendor/node-pty-fork/deps/winpty/src/agent/Terminal.h +69 -0
  279. package/vendor/node-pty-fork/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
  280. package/vendor/node-pty-fork/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
  281. package/vendor/node-pty-fork/deps/winpty/src/agent/Win32Console.cc +107 -0
  282. package/vendor/node-pty-fork/deps/winpty/src/agent/Win32Console.h +67 -0
  283. package/vendor/node-pty-fork/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
  284. package/vendor/node-pty-fork/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
  285. package/vendor/node-pty-fork/deps/winpty/src/agent/main.cc +114 -0
  286. package/vendor/node-pty-fork/deps/winpty/src/agent/subdir.mk +61 -0
  287. package/vendor/node-pty-fork/deps/winpty/src/configurations.gypi +60 -0
  288. package/vendor/node-pty-fork/deps/winpty/src/debugserver/DebugServer.cc +117 -0
  289. package/vendor/node-pty-fork/deps/winpty/src/debugserver/subdir.mk +41 -0
  290. package/vendor/node-pty-fork/deps/winpty/src/include/winpty.h +242 -0
  291. package/vendor/node-pty-fork/deps/winpty/src/include/winpty_constants.h +131 -0
  292. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
  293. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
  294. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
  295. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
  296. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/subdir.mk +46 -0
  297. package/vendor/node-pty-fork/deps/winpty/src/libwinpty/winpty.cc +970 -0
  298. package/vendor/node-pty-fork/deps/winpty/src/shared/AgentMsg.h +38 -0
  299. package/vendor/node-pty-fork/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
  300. package/vendor/node-pty-fork/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
  301. package/vendor/node-pty-fork/deps/winpty/src/shared/Buffer.cc +103 -0
  302. package/vendor/node-pty-fork/deps/winpty/src/shared/Buffer.h +102 -0
  303. package/vendor/node-pty-fork/deps/winpty/src/shared/DebugClient.cc +187 -0
  304. package/vendor/node-pty-fork/deps/winpty/src/shared/DebugClient.h +38 -0
  305. package/vendor/node-pty-fork/deps/winpty/src/shared/GenRandom.cc +138 -0
  306. package/vendor/node-pty-fork/deps/winpty/src/shared/GenRandom.h +55 -0
  307. package/vendor/node-pty-fork/deps/winpty/src/shared/GetCommitHash.bat +13 -0
  308. package/vendor/node-pty-fork/deps/winpty/src/shared/Mutex.h +54 -0
  309. package/vendor/node-pty-fork/deps/winpty/src/shared/OsModule.h +63 -0
  310. package/vendor/node-pty-fork/deps/winpty/src/shared/OwnedHandle.cc +36 -0
  311. package/vendor/node-pty-fork/deps/winpty/src/shared/OwnedHandle.h +45 -0
  312. package/vendor/node-pty-fork/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
  313. package/vendor/node-pty-fork/deps/winpty/src/shared/StringBuilder.h +227 -0
  314. package/vendor/node-pty-fork/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
  315. package/vendor/node-pty-fork/deps/winpty/src/shared/StringUtil.cc +55 -0
  316. package/vendor/node-pty-fork/deps/winpty/src/shared/StringUtil.h +80 -0
  317. package/vendor/node-pty-fork/deps/winpty/src/shared/TimeMeasurement.h +63 -0
  318. package/vendor/node-pty-fork/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
  319. package/vendor/node-pty-fork/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
  320. package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
  321. package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsSecurity.h +104 -0
  322. package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsVersion.cc +252 -0
  323. package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsVersion.h +29 -0
  324. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyAssert.cc +55 -0
  325. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyAssert.h +64 -0
  326. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyException.cc +57 -0
  327. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyException.h +43 -0
  328. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyVersion.cc +42 -0
  329. package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyVersion.h +27 -0
  330. package/vendor/node-pty-fork/deps/winpty/src/shared/winpty_snprintf.h +99 -0
  331. package/vendor/node-pty-fork/deps/winpty/src/subdir.mk +5 -0
  332. package/vendor/node-pty-fork/deps/winpty/src/tests/subdir.mk +28 -0
  333. package/vendor/node-pty-fork/deps/winpty/src/tests/trivial_test.cc +158 -0
  334. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
  335. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
  336. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
  337. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
  338. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/Util.cc +86 -0
  339. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/Util.h +31 -0
  340. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
  341. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
  342. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/main.cc +729 -0
  343. package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/subdir.mk +41 -0
  344. package/vendor/node-pty-fork/deps/winpty/src/winpty.gyp +206 -0
  345. package/vendor/node-pty-fork/deps/winpty/vcbuild.bat +83 -0
  346. package/vendor/node-pty-fork/lib/conpty_console_list_agent.js +20 -0
  347. package/vendor/node-pty-fork/lib/conpty_console_list_agent.js.map +1 -0
  348. package/vendor/node-pty-fork/lib/eventEmitter2.js +47 -0
  349. package/vendor/node-pty-fork/lib/eventEmitter2.js.map +1 -0
  350. package/vendor/node-pty-fork/lib/eventEmitter2.test.js +30 -0
  351. package/vendor/node-pty-fork/lib/eventEmitter2.test.js.map +1 -0
  352. package/vendor/node-pty-fork/lib/index.js +51 -0
  353. package/vendor/node-pty-fork/lib/index.js.map +1 -0
  354. package/vendor/node-pty-fork/lib/interfaces.js +7 -0
  355. package/vendor/node-pty-fork/lib/interfaces.js.map +1 -0
  356. package/vendor/node-pty-fork/lib/shared/conout.js +11 -0
  357. package/vendor/node-pty-fork/lib/shared/conout.js.map +1 -0
  358. package/vendor/node-pty-fork/lib/terminal.js +190 -0
  359. package/vendor/node-pty-fork/lib/terminal.js.map +1 -0
  360. package/vendor/node-pty-fork/lib/terminal.test.js +139 -0
  361. package/vendor/node-pty-fork/lib/terminal.test.js.map +1 -0
  362. package/vendor/node-pty-fork/lib/testUtils.test.js +28 -0
  363. package/vendor/node-pty-fork/lib/testUtils.test.js.map +1 -0
  364. package/vendor/node-pty-fork/lib/types.js +7 -0
  365. package/vendor/node-pty-fork/lib/types.js.map +1 -0
  366. package/vendor/node-pty-fork/lib/unixTerminal.js +304 -0
  367. package/vendor/node-pty-fork/lib/unixTerminal.js.map +1 -0
  368. package/vendor/node-pty-fork/lib/unixTerminal.test.js +330 -0
  369. package/vendor/node-pty-fork/lib/unixTerminal.test.js.map +1 -0
  370. package/vendor/node-pty-fork/lib/utils.js +17 -0
  371. package/vendor/node-pty-fork/lib/utils.js.map +1 -0
  372. package/vendor/node-pty-fork/lib/windowsConoutConnection.js +122 -0
  373. package/vendor/node-pty-fork/lib/windowsConoutConnection.js.map +1 -0
  374. package/vendor/node-pty-fork/lib/windowsPtyAgent.js +324 -0
  375. package/vendor/node-pty-fork/lib/windowsPtyAgent.js.map +1 -0
  376. package/vendor/node-pty-fork/lib/windowsPtyAgent.test.js +90 -0
  377. package/vendor/node-pty-fork/lib/windowsPtyAgent.test.js.map +1 -0
  378. package/vendor/node-pty-fork/lib/windowsTerminal.js +201 -0
  379. package/vendor/node-pty-fork/lib/windowsTerminal.js.map +1 -0
  380. package/vendor/node-pty-fork/lib/windowsTerminal.test.js +203 -0
  381. package/vendor/node-pty-fork/lib/windowsTerminal.test.js.map +1 -0
  382. package/vendor/node-pty-fork/lib/worker/conoutSocketWorker.js +22 -0
  383. package/vendor/node-pty-fork/lib/worker/conoutSocketWorker.js.map +1 -0
  384. package/vendor/node-pty-fork/package.json +35 -0
  385. package/vendor/node-pty-fork/scripts/apply-patches.mjs +341 -0
  386. package/vendor/node-pty-fork/scripts/fetch-upstream.mjs +41 -0
  387. package/vendor/node-pty-fork/scripts/install-smoke.cjs +59 -0
  388. package/vendor/node-pty-fork/scripts/smoke-load.cjs +10 -0
  389. package/vendor/node-pty-fork/scripts/sync-upstream.mjs +29 -0
  390. package/vendor/node-pty-fork/scripts/verify-runtime.cjs +54 -0
  391. package/vendor/node-pty-fork/scripts/verify-runtime.test.cjs +22 -0
  392. package/vendor/node-pty-fork/scripts/verify-tarball.cjs +80 -0
  393. package/vendor/node-pty-fork/src/conpty_console_list_agent.ts +19 -0
  394. package/vendor/node-pty-fork/src/eventEmitter2.test.ts +30 -0
  395. package/vendor/node-pty-fork/src/eventEmitter2.ts +48 -0
  396. package/vendor/node-pty-fork/src/index.ts +51 -0
  397. package/vendor/node-pty-fork/src/interfaces.ts +129 -0
  398. package/vendor/node-pty-fork/src/native.d.ts +56 -0
  399. package/vendor/node-pty-fork/src/shared/conout.ts +15 -0
  400. package/vendor/node-pty-fork/src/terminal.test.ts +119 -0
  401. package/vendor/node-pty-fork/src/terminal.ts +211 -0
  402. package/vendor/node-pty-fork/src/testUtils.test.ts +23 -0
  403. package/vendor/node-pty-fork/src/tsconfig.json +22 -0
  404. package/vendor/node-pty-fork/src/types.ts +15 -0
  405. package/vendor/node-pty-fork/src/unix/pty.cc +826 -0
  406. package/vendor/node-pty-fork/src/unix/spawn-helper.cc +23 -0
  407. package/vendor/node-pty-fork/src/unixTerminal.test.ts +335 -0
  408. package/vendor/node-pty-fork/src/unixTerminal.ts +320 -0
  409. package/vendor/node-pty-fork/src/utils.ts +9 -0
  410. package/vendor/node-pty-fork/src/win/conpty.cc +500 -0
  411. package/vendor/node-pty-fork/src/win/conpty_console_list.cc +43 -0
  412. package/vendor/node-pty-fork/src/win/path_util.cc +73 -0
  413. package/vendor/node-pty-fork/src/win/path_util.h +22 -0
  414. package/vendor/node-pty-fork/src/win/winpty.cc +322 -0
  415. package/vendor/node-pty-fork/src/windowsConoutConnection.ts +79 -0
  416. package/vendor/node-pty-fork/src/windowsPtyAgent.test.ts +94 -0
  417. package/vendor/node-pty-fork/src/windowsPtyAgent.ts +323 -0
  418. package/vendor/node-pty-fork/src/windowsTerminal.test.ts +214 -0
  419. package/vendor/node-pty-fork/src/windowsTerminal.ts +208 -0
  420. package/vendor/node-pty-fork/src/worker/conoutSocketWorker.ts +22 -0
  421. package/vendor/node-pty-fork/typings/node-pty.d.ts +203 -0
  422. package/dist/public/assets/WorkbenchShellRoute-DyaMnPfS.js +0 -1
  423. package/dist/server/modules/channels/wechat-claw-client.d.ts +0 -51
  424. package/dist/server/modules/channels/wechat-claw-client.js +0 -245
  425. package/dist/server/modules/channels/wechat-claw-client.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ #include <errno.h>
2
+ #include <fcntl.h>
3
+ #include <string.h>
4
+ #include <unistd.h>
5
+
6
+ int main (int argc, char** argv) {
7
+ char *slave_path = ttyname(STDIN_FILENO);
8
+ // open implicit attaches a process to a terminal device if:
9
+ // - process has no controlling terminal yet
10
+ // - O_NOCTTY is not set
11
+ close(open(slave_path, O_RDWR));
12
+
13
+ char *cwd = argv[1];
14
+ char *file = argv[2];
15
+ argv = &argv[2];
16
+
17
+ if (strlen(cwd) && chdir(cwd) == -1) {
18
+ _exit(1);
19
+ }
20
+
21
+ execvp(file, argv);
22
+ return 1;
23
+ }
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Copyright (c) 2017, Daniel Imms (MIT License).
3
+ * Copyright (c) 2018, Microsoft Corporation (MIT License).
4
+ */
5
+
6
+ import { UnixTerminal } from './unixTerminal';
7
+ import * as assert from 'assert';
8
+ import * as cp from 'child_process';
9
+ import * as path from 'path';
10
+ import * as tty from 'tty';
11
+ import * as fs from 'fs';
12
+ import { constants } from 'os';
13
+ import { pollUntil } from './testUtils.test';
14
+
15
+ const FIXTURES_PATH = path.normalize(path.join(__dirname, '..', 'fixtures', 'utf8-character.txt'));
16
+
17
+ if (process.platform !== 'win32') {
18
+ describe('UnixTerminal', () => {
19
+ describe('Constructor', () => {
20
+ it('should set a valid pts name', () => {
21
+ const term = new UnixTerminal('/bin/bash', [], {});
22
+ let regExp: RegExp | undefined;
23
+ if (process.platform === 'linux') {
24
+ // https://linux.die.net/man/4/pts
25
+ regExp = /^\/dev\/pts\/\d+$/;
26
+ }
27
+ if (process.platform === 'darwin') {
28
+ // https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man4/pty.4.html
29
+ regExp = /^\/dev\/tty[p-sP-S][a-z0-9]+$/;
30
+ }
31
+ if (regExp) {
32
+ assert.ok(regExp.test(term.ptsName), '"' + term.ptsName + '" should match ' + regExp.toString());
33
+ }
34
+ assert.ok(tty.isatty(term.fd));
35
+ });
36
+ });
37
+
38
+ describe('PtyForkEncodingOption', () => {
39
+ it('should default to utf8', (done) => {
40
+ const term = new UnixTerminal('/bin/bash', [ '-c', `cat "${FIXTURES_PATH}"` ]);
41
+ term.on('data', (data) => {
42
+ assert.strictEqual(typeof data, 'string');
43
+ assert.strictEqual(data, '\u00E6');
44
+ done();
45
+ });
46
+ });
47
+ it('should return a Buffer when encoding is null', (done) => {
48
+ const term = new UnixTerminal('/bin/bash', [ '-c', `cat "${FIXTURES_PATH}"` ], {
49
+ encoding: null
50
+ });
51
+ term.on('data', (data) => {
52
+ assert.strictEqual(typeof data, 'object');
53
+ assert.ok(data instanceof Buffer);
54
+ assert.strictEqual(0xC3, data[0]);
55
+ assert.strictEqual(0xA6, data[1]);
56
+ done();
57
+ });
58
+ });
59
+ it('should support other encodings', (done) => {
60
+ const text = 'test æ!';
61
+ const term = new UnixTerminal(undefined, ['-c', 'echo "' + text + '"'], {
62
+ encoding: 'base64'
63
+ });
64
+ let buffer = '';
65
+ term.onData((data) => {
66
+ assert.strictEqual(typeof data, 'string');
67
+ buffer += data;
68
+ });
69
+ term.onExit(() => {
70
+ assert.strictEqual(Buffer.alloc(8, buffer, 'base64').toString().replace('\r', '').replace('\n', ''), text);
71
+ done();
72
+ });
73
+ });
74
+ });
75
+
76
+ describe('open', () => {
77
+ let term: UnixTerminal;
78
+
79
+ afterEach(() => {
80
+ if (term) {
81
+ term.slave!.destroy();
82
+ term.master!.destroy();
83
+ }
84
+ });
85
+
86
+ it('should open a pty with access to a master and slave socket', (done) => {
87
+ term = UnixTerminal.open({});
88
+
89
+ let slavebuf = '';
90
+ term.slave!.on('data', (data) => {
91
+ slavebuf += data;
92
+ });
93
+
94
+ let masterbuf = '';
95
+ term.master!.on('data', (data) => {
96
+ masterbuf += data;
97
+ });
98
+
99
+ pollUntil(() => {
100
+ if (masterbuf === 'slave\r\nmaster\r\n' && slavebuf === 'master\n') {
101
+ done();
102
+ return true;
103
+ }
104
+ return false;
105
+ }, 200, 10);
106
+
107
+ term.slave!.write('slave\n');
108
+ term.master!.write('master\n');
109
+ });
110
+ });
111
+ describe('close', () => {
112
+ const term = new UnixTerminal('node');
113
+ it('should exit when terminal is destroyed programmatically', (done) => {
114
+ term.on('exit', (code, signal) => {
115
+ assert.strictEqual(code, 0);
116
+ assert.strictEqual(signal, constants.signals.SIGHUP);
117
+ done();
118
+ });
119
+ term.destroy();
120
+ });
121
+ });
122
+ describe('signals in parent and child', () => {
123
+ it('SIGINT - custom in parent and child', done => {
124
+ // this test is cumbersome - we have to run it in a sub process to
125
+ // see behavior of SIGINT handlers
126
+ const data = `
127
+ var pty = require('./lib/index');
128
+ process.on('SIGINT', () => console.log('SIGINT in parent'));
129
+ var ptyProcess = pty.spawn('node', ['-e', 'process.on("SIGINT", ()=>console.log("SIGINT in child"));setTimeout(() => null, 300);'], {
130
+ name: 'xterm-color',
131
+ cols: 80,
132
+ rows: 30,
133
+ cwd: process.env.HOME,
134
+ env: process.env
135
+ });
136
+ ptyProcess.on('data', function (data) {
137
+ console.log(data);
138
+ });
139
+ setTimeout(() => null, 500);
140
+ console.log('ready', ptyProcess.pid);
141
+ `;
142
+ const buffer: string[] = [];
143
+ const p = cp.spawn('node', ['-e', data]);
144
+ let sub = '';
145
+ p.stdout.on('data', (data) => {
146
+ if (!data.toString().indexOf('ready')) {
147
+ sub = data.toString().split(' ')[1].slice(0, -1);
148
+ setTimeout(() => {
149
+ process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
150
+ p.kill('SIGINT'); // SIGINT to parent
151
+ }, 200);
152
+ } else {
153
+ buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
154
+ }
155
+ });
156
+ p.on('close', () => {
157
+ // handlers in parent and child should have been triggered
158
+ assert.strictEqual(buffer.indexOf('SIGINT in child') !== -1, true);
159
+ assert.strictEqual(buffer.indexOf('SIGINT in parent') !== -1, true);
160
+ done();
161
+ });
162
+ });
163
+ it('SIGINT - custom in parent, default in child', done => {
164
+ // this tests the original idea of the signal(...) change in pty.cc:
165
+ // to make sure the SIGINT handler of a pty child is reset to default
166
+ // and does not interfere with the handler in the parent
167
+ const data = `
168
+ var pty = require('./lib/index');
169
+ process.on('SIGINT', () => console.log('SIGINT in parent'));
170
+ var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log("should not be printed"), 300);'], {
171
+ name: 'xterm-color',
172
+ cols: 80,
173
+ rows: 30,
174
+ cwd: process.env.HOME,
175
+ env: process.env
176
+ });
177
+ ptyProcess.on('data', function (data) {
178
+ console.log(data);
179
+ });
180
+ setTimeout(() => null, 500);
181
+ console.log('ready', ptyProcess.pid);
182
+ `;
183
+ const buffer: string[] = [];
184
+ const p = cp.spawn('node', ['-e', data]);
185
+ let sub = '';
186
+ p.stdout.on('data', (data) => {
187
+ if (!data.toString().indexOf('ready')) {
188
+ sub = data.toString().split(' ')[1].slice(0, -1);
189
+ setTimeout(() => {
190
+ process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
191
+ p.kill('SIGINT'); // SIGINT to parent
192
+ }, 200);
193
+ } else {
194
+ buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
195
+ }
196
+ });
197
+ p.on('close', () => {
198
+ // handlers in parent and child should have been triggered
199
+ assert.strictEqual(buffer.indexOf('should not be printed') !== -1, false);
200
+ assert.strictEqual(buffer.indexOf('SIGINT in parent') !== -1, true);
201
+ done();
202
+ });
203
+ });
204
+ it('SIGHUP default (child only)', done => {
205
+ const term = new UnixTerminal('node', [ '-e', `
206
+ console.log('ready');
207
+ setTimeout(()=>console.log('timeout'), 200);`
208
+ ]);
209
+ let buffer = '';
210
+ term.on('data', (data) => {
211
+ if (data === 'ready\r\n') {
212
+ term.kill();
213
+ } else {
214
+ buffer += data;
215
+ }
216
+ });
217
+ term.on('exit', () => {
218
+ // no timeout in buffer
219
+ assert.strictEqual(buffer, '');
220
+ done();
221
+ });
222
+ });
223
+ it('SIGUSR1 - custom in parent and child', done => {
224
+ let pHandlerCalled = 0;
225
+ const handleSigUsr = function(h: any): any {
226
+ return function(): void {
227
+ pHandlerCalled += 1;
228
+ process.removeListener('SIGUSR1', h);
229
+ };
230
+ };
231
+ process.on('SIGUSR1', handleSigUsr(handleSigUsr));
232
+
233
+ const term = new UnixTerminal('node', [ '-e', `
234
+ process.on('SIGUSR1', () => {
235
+ console.log('SIGUSR1 in child');
236
+ });
237
+ console.log('ready');
238
+ setTimeout(()=>null, 200);`
239
+ ]);
240
+ let buffer = '';
241
+ term.on('data', (data) => {
242
+ if (data === 'ready\r\n') {
243
+ process.kill(process.pid, 'SIGUSR1');
244
+ term.kill('SIGUSR1');
245
+ } else {
246
+ buffer += data;
247
+ }
248
+ });
249
+ term.on('exit', () => {
250
+ // should have called both handlers and only once
251
+ assert.strictEqual(pHandlerCalled, 1);
252
+ assert.strictEqual(buffer, 'SIGUSR1 in child\r\n');
253
+ done();
254
+ });
255
+ });
256
+ });
257
+ describe('spawn', () => {
258
+ if (process.platform === 'darwin') {
259
+ it('should return the name of the process', (done) => {
260
+ const term = new UnixTerminal('/bin/echo');
261
+ assert.strictEqual(term.process, '/bin/echo');
262
+ term.on('exit', () => done());
263
+ term.destroy();
264
+ });
265
+ it('should close on exec', (done) => {
266
+ const data = `
267
+ var pty = require('./lib/index');
268
+ var ptyProcess = pty.spawn('node', ['-e', 'setTimeout(() => console.log("hello from terminal"), 300);']);
269
+ ptyProcess.on('data', function (data) {
270
+ console.log(data);
271
+ });
272
+ setTimeout(() => null, 500);
273
+ console.log('ready', ptyProcess.pid);
274
+ `;
275
+ const buffer: string[] = [];
276
+ const readFd = fs.openSync(FIXTURES_PATH, 'r');
277
+ const p = cp.spawn('node', ['-e', data], {
278
+ stdio: ['ignore', 'pipe', 'pipe', readFd]
279
+ });
280
+ let sub = '';
281
+ p.stdout!.on('data', (data) => {
282
+ if (!data.toString().indexOf('ready')) {
283
+ sub = data.toString().split(' ')[1].slice(0, -1);
284
+ try {
285
+ fs.statSync(`/proc/${sub}/fd/${readFd}`);
286
+ done('not reachable');
287
+ } catch (error) {
288
+ assert.notStrictEqual(error.message.indexOf('ENOENT'), -1);
289
+ }
290
+ setTimeout(() => {
291
+ process.kill(parseInt(sub), 'SIGINT'); // SIGINT to child
292
+ p.kill('SIGINT'); // SIGINT to parent
293
+ }, 200);
294
+ } else {
295
+ buffer.push(data.toString().replace(/^\s+|\s+$/g, ''));
296
+ }
297
+ });
298
+ p.on('close', () => {
299
+ done();
300
+ });
301
+ });
302
+ }
303
+ it('should handle exec() errors', (done) => {
304
+ const term = new UnixTerminal('/bin/bogus.exe', []);
305
+ term.on('exit', (code, signal) => {
306
+ assert.strictEqual(code, 1);
307
+ done();
308
+ });
309
+ });
310
+ it('should handle chdir() errors', (done) => {
311
+ const term = new UnixTerminal('/bin/echo', [], { cwd: '/nowhere' });
312
+ term.on('exit', (code, signal) => {
313
+ assert.strictEqual(code, 1);
314
+ done();
315
+ });
316
+ });
317
+ it('should not leak child process', (done) => {
318
+ const count = cp.execSync('ps -ax | grep node | wc -l');
319
+ const term = new UnixTerminal('node', [ '-e', `
320
+ console.log('ready');
321
+ setTimeout(()=>console.log('timeout'), 200);`
322
+ ]);
323
+ term.on('data', async (data) => {
324
+ if (data === 'ready\r\n') {
325
+ process.kill(term.pid, 'SIGINT');
326
+ await setTimeout(() => null, 1000);
327
+ const newCount = cp.execSync('ps -ax | grep node | wc -l');
328
+ assert.strictEqual(count.toString(), newCount.toString());
329
+ done();
330
+ }
331
+ });
332
+ });
333
+ });
334
+ });
335
+ }
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Copyright (c) 2012-2015, Christopher Jeffrey (MIT License)
3
+ * Copyright (c) 2016, Daniel Imms (MIT License).
4
+ * Copyright (c) 2018, Microsoft Corporation (MIT License).
5
+ */
6
+ import * as net from 'net';
7
+ import * as path from 'path';
8
+ import { Terminal, DEFAULT_COLS, DEFAULT_ROWS } from './terminal';
9
+ import { IProcessEnv, IPtyForkOptions, IPtyOpenOptions } from './interfaces';
10
+ import { ArgvOrCommandLine } from './types';
11
+ import { assign } from './utils';
12
+
13
+ let pty: IUnixNative;
14
+ let helperPath: string;
15
+ try {
16
+ pty = require('../build/Release/pty.node');
17
+ helperPath = '../build/Release/spawn-helper';
18
+ } catch (outerError) {
19
+ try {
20
+ pty = require('../build/Debug/pty.node');
21
+ helperPath = '../build/Debug/spawn-helper';
22
+ } catch (innerError) {
23
+ console.error('innerError', innerError);
24
+ // Re-throw the exception from the Release require if the Debug require fails as well
25
+ throw outerError;
26
+ }
27
+ }
28
+
29
+ helperPath = path.resolve(__dirname, helperPath);
30
+ helperPath = helperPath.replace('app.asar', 'app.asar.unpacked');
31
+ helperPath = helperPath.replace('node_modules.asar', 'node_modules.asar.unpacked');
32
+
33
+ const DEFAULT_FILE = 'sh';
34
+ const DEFAULT_NAME = 'xterm';
35
+ const DESTROY_SOCKET_TIMEOUT_MS = 200;
36
+
37
+ export class UnixTerminal extends Terminal {
38
+ protected _fd: number;
39
+ protected _pty: string;
40
+
41
+ protected _file: string;
42
+ protected _name: string;
43
+
44
+ protected _readable: boolean;
45
+ protected _writable: boolean;
46
+
47
+ private _boundClose: boolean = false;
48
+ private _emittedClose: boolean = false;
49
+ private _master: net.Socket | undefined;
50
+ private _slave: net.Socket | undefined;
51
+
52
+ public get master(): net.Socket | undefined { return this._master; }
53
+ public get slave(): net.Socket | undefined { return this._slave; }
54
+
55
+ constructor(file?: string, args?: ArgvOrCommandLine, opt?: IPtyForkOptions) {
56
+ super(opt);
57
+
58
+ if (typeof args === 'string') {
59
+ throw new Error('args as a string is not supported on unix.');
60
+ }
61
+
62
+ // Initialize arguments
63
+ args = args || [];
64
+ file = file || DEFAULT_FILE;
65
+ opt = opt || {};
66
+ opt.env = opt.env || process.env;
67
+
68
+ this._cols = opt.cols || DEFAULT_COLS;
69
+ this._rows = opt.rows || DEFAULT_ROWS;
70
+ const uid = opt.uid ?? -1;
71
+ const gid = opt.gid ?? -1;
72
+ const env: IProcessEnv = assign({}, opt.env);
73
+
74
+ if (opt.env === process.env) {
75
+ this._sanitizeEnv(env);
76
+ }
77
+
78
+ const cwd = opt.cwd || process.cwd();
79
+ env.PWD = cwd;
80
+ const name = opt.name || env.TERM || DEFAULT_NAME;
81
+ env.TERM = name;
82
+ const parsedEnv = this._parseEnv(env);
83
+
84
+ const encoding = (opt.encoding === undefined ? 'utf8' : opt.encoding);
85
+
86
+ const onexit = (code: number, signal: number): void => {
87
+ // XXX Sometimes a data event is emitted after exit. Wait til socket is
88
+ // destroyed.
89
+ if (!this._emittedClose) {
90
+ if (this._boundClose) {
91
+ return;
92
+ }
93
+ this._boundClose = true;
94
+ // From macOS High Sierra 10.13.2 sometimes the socket never gets
95
+ // closed. A timeout is applied here to avoid the terminal never being
96
+ // destroyed when this occurs.
97
+ let timeout: NodeJS.Timeout | null = setTimeout(() => {
98
+ timeout = null;
99
+ // Destroying the socket now will cause the close event to fire
100
+ this._socket.destroy();
101
+ }, DESTROY_SOCKET_TIMEOUT_MS);
102
+ this.once('close', () => {
103
+ if (timeout !== null) {
104
+ clearTimeout(timeout);
105
+ }
106
+ this.emit('exit', code, signal);
107
+ });
108
+ return;
109
+ }
110
+ this.emit('exit', code, signal);
111
+ };
112
+
113
+ // fork
114
+ const term = pty.fork(file, args, parsedEnv, cwd, this._cols, this._rows, uid, gid, (encoding === 'utf8'), helperPath, onexit);
115
+
116
+ this._socket = new PipeSocket(term.fd);
117
+ if (encoding !== null) {
118
+ this._socket.setEncoding(encoding);
119
+ }
120
+
121
+ // setup
122
+ this._socket.on('error', (err: any) => {
123
+ // NOTE: fs.ReadStream gets EAGAIN twice at first:
124
+ if (err.code) {
125
+ if (~err.code.indexOf('EAGAIN')) {
126
+ return;
127
+ }
128
+ }
129
+
130
+ // close
131
+ this._close();
132
+ // EIO on exit from fs.ReadStream:
133
+ if (!this._emittedClose) {
134
+ this._emittedClose = true;
135
+ this.emit('close');
136
+ }
137
+
138
+ // EIO, happens when someone closes our child process: the only process in
139
+ // the terminal.
140
+ // node < 0.6.14: errno 5
141
+ // node >= 0.6.14: read EIO
142
+ if (err.code) {
143
+ if (~err.code.indexOf('errno 5') || ~err.code.indexOf('EIO')) {
144
+ return;
145
+ }
146
+ }
147
+
148
+ // throw anything else
149
+ if (this.listeners('error').length < 2) {
150
+ throw err;
151
+ }
152
+ });
153
+
154
+ this._pid = term.pid;
155
+ this._fd = term.fd;
156
+ this._pty = term.pty;
157
+
158
+ this._file = file;
159
+ this._name = name;
160
+
161
+ this._readable = true;
162
+ this._writable = true;
163
+
164
+ this._socket.on('close', () => {
165
+ if (this._emittedClose) {
166
+ return;
167
+ }
168
+ this._emittedClose = true;
169
+ this._close();
170
+ this.emit('close');
171
+ });
172
+
173
+ this._forwardEvents();
174
+ }
175
+
176
+ protected _write(data: string): void {
177
+ this._socket.write(data);
178
+ }
179
+
180
+ /* Accessors */
181
+ get fd(): number { return this._fd; }
182
+ get ptsName(): string { return this._pty; }
183
+
184
+ /**
185
+ * openpty
186
+ */
187
+
188
+ public static open(opt: IPtyOpenOptions): UnixTerminal {
189
+ const self: UnixTerminal = Object.create(UnixTerminal.prototype);
190
+ opt = opt || {};
191
+
192
+ if (arguments.length > 1) {
193
+ opt = {
194
+ cols: arguments[1],
195
+ rows: arguments[2]
196
+ };
197
+ }
198
+
199
+ const cols = opt.cols || DEFAULT_COLS;
200
+ const rows = opt.rows || DEFAULT_ROWS;
201
+ const encoding = (opt.encoding === undefined ? 'utf8' : opt.encoding);
202
+
203
+ // open
204
+ const term: IUnixOpenProcess = pty.open(cols, rows);
205
+
206
+ self._master = new PipeSocket(<number>term.master);
207
+ if (encoding !== null) {
208
+ self._master.setEncoding(encoding);
209
+ }
210
+ self._master.resume();
211
+
212
+ self._slave = new PipeSocket(term.slave);
213
+ if (encoding !== null) {
214
+ self._slave.setEncoding(encoding);
215
+ }
216
+ self._slave.resume();
217
+
218
+ self._socket = self._master;
219
+ self._pid = -1;
220
+ self._fd = term.master;
221
+ self._pty = term.pty;
222
+
223
+ self._file = process.argv[0] || 'node';
224
+ self._name = process.env.TERM || '';
225
+
226
+ self._readable = true;
227
+ self._writable = true;
228
+
229
+ self._socket.on('error', err => {
230
+ self._close();
231
+ if (self.listeners('error').length < 2) {
232
+ throw err;
233
+ }
234
+ });
235
+
236
+ self._socket.on('close', () => {
237
+ self._close();
238
+ });
239
+
240
+ return self;
241
+ }
242
+
243
+ public destroy(): void {
244
+ this._close();
245
+
246
+ // Need to close the read stream so node stops reading a dead file
247
+ // descriptor. Then we can safely SIGHUP the shell.
248
+ this._socket.once('close', () => {
249
+ this.kill('SIGHUP');
250
+ });
251
+
252
+ this._socket.destroy();
253
+ }
254
+
255
+ public kill(signal?: string): void {
256
+ try {
257
+ process.kill(this.pid, signal || 'SIGHUP');
258
+ } catch (e) { /* swallow */ }
259
+ }
260
+
261
+ /**
262
+ * Gets the name of the process.
263
+ */
264
+ public get process(): string {
265
+ if (process.platform === 'darwin') {
266
+ return pty.process(this._pid) || this._file;
267
+ }
268
+
269
+ return pty.process(this._fd, this._pty) || this._file;
270
+ }
271
+
272
+ /**
273
+ * TTY
274
+ */
275
+
276
+ public resize(cols: number, rows: number): void {
277
+ if (cols <= 0 || rows <= 0 || isNaN(cols) || isNaN(rows) || cols === Infinity || rows === Infinity) {
278
+ throw new Error('resizing must be done using positive cols and rows');
279
+ }
280
+ pty.resize(this._fd, cols, rows);
281
+ this._cols = cols;
282
+ this._rows = rows;
283
+ }
284
+
285
+ public clear(): void {
286
+
287
+ }
288
+
289
+ private _sanitizeEnv(env: IProcessEnv): void {
290
+ // Make sure we didn't start our server from inside tmux.
291
+ delete env['TMUX'];
292
+ delete env['TMUX_PANE'];
293
+
294
+ // Make sure we didn't start our server from inside screen.
295
+ // http://web.mit.edu/gnu/doc/html/screen_20.html
296
+ delete env['STY'];
297
+ delete env['WINDOW'];
298
+
299
+ // Delete some variables that might confuse our terminal.
300
+ delete env['WINDOWID'];
301
+ delete env['TERMCAP'];
302
+ delete env['COLUMNS'];
303
+ delete env['LINES'];
304
+ }
305
+ }
306
+
307
+ /**
308
+ * Wraps net.Socket to force the handle type "PIPE" by temporarily overwriting
309
+ * tty_wrap.guessHandleType.
310
+ * See: https://github.com/chjj/pty.js/issues/103
311
+ */
312
+ class PipeSocket extends net.Socket {
313
+ constructor(fd: number) {
314
+ const pipeWrap = (<any>process).binding('pipe_wrap'); // tslint:disable-line
315
+ // @types/node has fd as string? https://github.com/DefinitelyTyped/DefinitelyTyped/pull/18275
316
+ const handle = new pipeWrap.Pipe(pipeWrap.constants.SOCKET);
317
+ handle.open(fd);
318
+ super(<any>{ handle });
319
+ }
320
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) 2017, Daniel Imms (MIT License).
3
+ * Copyright (c) 2018, Microsoft Corporation (MIT License).
4
+ */
5
+
6
+ export function assign(target: any, ...sources: any[]): any {
7
+ sources.forEach(source => Object.keys(source).forEach(key => target[key] = source[key]));
8
+ return target;
9
+ }