whale-code 6.5.4 → 6.5.6

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 (853) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +29 -0
  73. package/dist/cli/services/agent-config.js +91 -0
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +978 -669
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.d.ts +2 -3
  107. package/dist/cli/services/error-logger.js +189 -180
  108. package/dist/cli/services/error-logger.js.map +1 -0
  109. package/dist/cli/services/file-history.d.ts +1 -1
  110. package/dist/cli/services/file-history.js +50 -54
  111. package/dist/cli/services/file-history.js.map +1 -0
  112. package/dist/cli/services/format-server-response.js +332 -372
  113. package/dist/cli/services/format-server-response.js.map +1 -0
  114. package/dist/cli/services/git-context.js +61 -45
  115. package/dist/cli/services/git-context.js.map +1 -0
  116. package/dist/cli/services/hooks.d.ts +2 -2
  117. package/dist/cli/services/hooks.js +195 -180
  118. package/dist/cli/services/hooks.js.map +1 -0
  119. package/dist/cli/services/ink-incremental.d.ts +19 -0
  120. package/dist/cli/services/ink-incremental.js +59 -0
  121. package/dist/cli/services/ink-incremental.js.map +1 -0
  122. package/dist/cli/services/ink-resize-fix.js +54 -44
  123. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  124. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  125. package/dist/cli/services/ink-sync-output.js +16 -0
  126. package/dist/cli/services/ink-sync-output.js.map +1 -0
  127. package/dist/cli/services/interactive-tools.js +268 -212
  128. package/dist/cli/services/interactive-tools.js.map +1 -0
  129. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  130. package/dist/cli/services/keybinding-manager.js +126 -63
  131. package/dist/cli/services/keybinding-manager.js.map +1 -0
  132. package/dist/cli/services/local-tools.d.ts +1 -1
  133. package/dist/cli/services/local-tools.js +939 -656
  134. package/dist/cli/services/local-tools.js.map +1 -0
  135. package/dist/cli/services/lsp-manager.js +757 -594
  136. package/dist/cli/services/lsp-manager.js.map +1 -0
  137. package/dist/cli/services/mcp-client.d.ts +1 -1
  138. package/dist/cli/services/mcp-client.js +173 -134
  139. package/dist/cli/services/mcp-client.js.map +1 -0
  140. package/dist/cli/services/memory-manager.js +53 -40
  141. package/dist/cli/services/memory-manager.js.map +1 -0
  142. package/dist/cli/services/model-manager.js +55 -40
  143. package/dist/cli/services/model-manager.js.map +1 -0
  144. package/dist/cli/services/model-router.js +115 -85
  145. package/dist/cli/services/model-router.js.map +1 -0
  146. package/dist/cli/services/paths.d.ts +30 -0
  147. package/dist/cli/services/paths.js +81 -0
  148. package/dist/cli/services/paths.js.map +1 -0
  149. package/dist/cli/services/permission-modes.js +32 -25
  150. package/dist/cli/services/permission-modes.js.map +1 -0
  151. package/dist/cli/services/rewind.js +182 -168
  152. package/dist/cli/services/rewind.js.map +1 -0
  153. package/dist/cli/services/ripgrep.js +115 -115
  154. package/dist/cli/services/ripgrep.js.map +1 -0
  155. package/dist/cli/services/sandbox.d.ts +1 -1
  156. package/dist/cli/services/sandbox.js +58 -37
  157. package/dist/cli/services/sandbox.js.map +1 -0
  158. package/dist/cli/services/server-tools.js +738 -565
  159. package/dist/cli/services/server-tools.js.map +1 -0
  160. package/dist/cli/services/session-persistence.js +69 -74
  161. package/dist/cli/services/session-persistence.js.map +1 -0
  162. package/dist/cli/services/subagent-worker.js +42 -27
  163. package/dist/cli/services/subagent-worker.js.map +1 -0
  164. package/dist/cli/services/subagent.d.ts +2 -0
  165. package/dist/cli/services/subagent.js +606 -430
  166. package/dist/cli/services/subagent.js.map +1 -0
  167. package/dist/cli/services/system-prompt.js +86 -78
  168. package/dist/cli/services/system-prompt.js.map +1 -0
  169. package/dist/cli/services/task-decomposer.d.ts +1 -1
  170. package/dist/cli/services/task-decomposer.js +172 -139
  171. package/dist/cli/services/task-decomposer.js.map +1 -0
  172. package/dist/cli/services/team-lead.d.ts +2 -2
  173. package/dist/cli/services/team-lead.js +727 -529
  174. package/dist/cli/services/team-lead.js.map +1 -0
  175. package/dist/cli/services/team-state.js +319 -319
  176. package/dist/cli/services/team-state.js.map +1 -0
  177. package/dist/cli/services/teammate.d.ts +8 -2
  178. package/dist/cli/services/teammate.js +862 -560
  179. package/dist/cli/services/teammate.js.map +1 -0
  180. package/dist/cli/services/telemetry.d.ts +6 -1
  181. package/dist/cli/services/telemetry.js +180 -157
  182. package/dist/cli/services/telemetry.js.map +1 -0
  183. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  184. package/dist/cli/services/tools/agent-tools.js +480 -322
  185. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  186. package/dist/cli/services/tools/file-ops.js +563 -450
  187. package/dist/cli/services/tools/file-ops.js.map +1 -0
  188. package/dist/cli/services/tools/search-tools.js +231 -162
  189. package/dist/cli/services/tools/search-tools.js.map +1 -0
  190. package/dist/cli/services/tools/shell-exec.js +197 -151
  191. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  192. package/dist/cli/services/tools/task-manager.js +206 -173
  193. package/dist/cli/services/tools/task-manager.js.map +1 -0
  194. package/dist/cli/services/tools/web-tools.js +388 -341
  195. package/dist/cli/services/tools/web-tools.js.map +1 -0
  196. package/dist/cli/setup/SetupApp.d.ts +2 -2
  197. package/dist/cli/setup/SetupApp.js +608 -160
  198. package/dist/cli/setup/SetupApp.js.map +1 -0
  199. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  200. package/dist/cli/shared/ErrorBoundary.js +73 -0
  201. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  202. package/dist/cli/shared/MatrixIntro.js +66 -69
  203. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  204. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  205. package/dist/cli/shared/SpinnerSlot.js +63 -0
  206. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  207. package/dist/cli/shared/Theme.d.ts +1 -1
  208. package/dist/cli/shared/Theme.js +136 -92
  209. package/dist/cli/shared/Theme.js.map +1 -0
  210. package/dist/cli/shared/WhaleBanner.js +99 -11
  211. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  212. package/dist/cli/shared/markdown.d.ts +3 -1
  213. package/dist/cli/shared/markdown.js +736 -674
  214. package/dist/cli/shared/markdown.js.map +1 -0
  215. package/dist/cli/shared/marked-terminal.d.js +2 -0
  216. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  217. package/dist/cli/shared/theme-manager.js +99 -90
  218. package/dist/cli/shared/theme-manager.js.map +1 -0
  219. package/dist/cli/shared/theme-presets.js +256 -254
  220. package/dist/cli/shared/theme-presets.js.map +1 -0
  221. package/dist/cli/status/StatusApp.js +235 -86
  222. package/dist/cli/status/StatusApp.js.map +1 -0
  223. package/dist/cli/stores/StoreApp.js +275 -65
  224. package/dist/cli/stores/StoreApp.js.map +1 -0
  225. package/dist/index.d.ts +2 -2
  226. package/dist/index.js +509 -396
  227. package/dist/index.js.map +1 -0
  228. package/dist/local-agent/connection.d.ts +2 -2
  229. package/dist/local-agent/connection.js +352 -293
  230. package/dist/local-agent/connection.js.map +1 -0
  231. package/dist/local-agent/discovery.js +259 -122
  232. package/dist/local-agent/discovery.js.map +1 -0
  233. package/dist/local-agent/executor.js +216 -193
  234. package/dist/local-agent/executor.js.map +1 -0
  235. package/dist/local-agent/index.d.ts +2 -2
  236. package/dist/local-agent/index.js +156 -156
  237. package/dist/local-agent/index.js.map +1 -0
  238. package/dist/node/adapters/base.js +18 -8
  239. package/dist/node/adapters/base.js.map +1 -0
  240. package/dist/node/adapters/discord.js +286 -275
  241. package/dist/node/adapters/discord.js.map +1 -0
  242. package/dist/node/adapters/email.js +189 -202
  243. package/dist/node/adapters/email.js.map +1 -0
  244. package/dist/node/adapters/imessage.js +145 -142
  245. package/dist/node/adapters/imessage.js.map +1 -0
  246. package/dist/node/adapters/slack.js +237 -236
  247. package/dist/node/adapters/slack.js.map +1 -0
  248. package/dist/node/adapters/sms.js +149 -151
  249. package/dist/node/adapters/sms.js.map +1 -0
  250. package/dist/node/adapters/telegram.js +88 -92
  251. package/dist/node/adapters/telegram.js.map +1 -0
  252. package/dist/node/adapters/webchat.js +160 -136
  253. package/dist/node/adapters/webchat.js.map +1 -0
  254. package/dist/node/adapters/whatsapp.js +212 -215
  255. package/dist/node/adapters/whatsapp.js.map +1 -0
  256. package/dist/node/cli.js +884 -653
  257. package/dist/node/cli.js.map +1 -0
  258. package/dist/node/config.js +20 -18
  259. package/dist/node/config.js.map +1 -0
  260. package/dist/node/gateway-client.js +191 -181
  261. package/dist/node/gateway-client.js.map +1 -0
  262. package/dist/node/portal/clipboard.js +161 -130
  263. package/dist/node/portal/clipboard.js.map +1 -0
  264. package/dist/node/portal/discovery.js +51 -45
  265. package/dist/node/portal/discovery.js.map +1 -0
  266. package/dist/node/portal/forward.js +64 -58
  267. package/dist/node/portal/forward.js.map +1 -0
  268. package/dist/node/portal/index.js +246 -221
  269. package/dist/node/portal/index.js.map +1 -0
  270. package/dist/node/portal/multiplexer.js +192 -182
  271. package/dist/node/portal/multiplexer.js.map +1 -0
  272. package/dist/node/portal/permissions.js +102 -70
  273. package/dist/node/portal/permissions.js.map +1 -0
  274. package/dist/node/portal/protocol.js +153 -116
  275. package/dist/node/portal/protocol.js.map +1 -0
  276. package/dist/node/portal/screen.js +80 -69
  277. package/dist/node/portal/screen.js.map +1 -0
  278. package/dist/node/portal/session.js +124 -117
  279. package/dist/node/portal/session.js.map +1 -0
  280. package/dist/node/portal/shell.js +140 -113
  281. package/dist/node/portal/shell.js.map +1 -0
  282. package/dist/node/portal/stream.js +77 -75
  283. package/dist/node/portal/stream.js.map +1 -0
  284. package/dist/node/portal/transfer.js +190 -167
  285. package/dist/node/portal/transfer.js.map +1 -0
  286. package/dist/node/portal/ui.js +124 -99
  287. package/dist/node/portal/ui.js.map +1 -0
  288. package/dist/node/remote-desktop/compile-helper.js +50 -45
  289. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  290. package/dist/node/remote-desktop/index.js +215 -187
  291. package/dist/node/remote-desktop/index.js.map +1 -0
  292. package/dist/node/remote-desktop/protocol.js +45 -29
  293. package/dist/node/remote-desktop/protocol.js.map +1 -0
  294. package/dist/node/runtime.js +493 -410
  295. package/dist/node/runtime.js.map +1 -0
  296. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  297. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  298. package/dist/server/handlers/analytics.js +467 -261
  299. package/dist/server/handlers/analytics.js.map +1 -0
  300. package/dist/server/handlers/api-docs.d.ts +6 -0
  301. package/dist/server/handlers/api-docs.js +1613 -0
  302. package/dist/server/handlers/api-docs.js.map +1 -0
  303. package/dist/server/handlers/api-keys.js +295 -232
  304. package/dist/server/handlers/api-keys.js.map +1 -0
  305. package/dist/server/handlers/billing.js +330 -239
  306. package/dist/server/handlers/billing.js.map +1 -0
  307. package/dist/server/handlers/browser.js +468 -395
  308. package/dist/server/handlers/browser.js.map +1 -0
  309. package/dist/server/handlers/catalog.js +1377 -978
  310. package/dist/server/handlers/catalog.js.map +1 -0
  311. package/dist/server/handlers/clickhouse.js +157 -109
  312. package/dist/server/handlers/clickhouse.js.map +1 -0
  313. package/dist/server/handlers/comms.d.ts +0 -53
  314. package/dist/server/handlers/comms.js +1443 -970
  315. package/dist/server/handlers/comms.js.map +1 -0
  316. package/dist/server/handlers/creations.js +461 -394
  317. package/dist/server/handlers/creations.js.map +1 -0
  318. package/dist/server/handlers/crm.js +1082 -791
  319. package/dist/server/handlers/crm.js.map +1 -0
  320. package/dist/server/handlers/discovery.js +251 -232
  321. package/dist/server/handlers/discovery.js.map +1 -0
  322. package/dist/server/handlers/embeddings.js +241 -164
  323. package/dist/server/handlers/embeddings.js.map +1 -0
  324. package/dist/server/handlers/enrichment.js +887 -718
  325. package/dist/server/handlers/enrichment.js.map +1 -0
  326. package/dist/server/handlers/image-gen.js +467 -376
  327. package/dist/server/handlers/image-gen.js.map +1 -0
  328. package/dist/server/handlers/inventory.js +797 -424
  329. package/dist/server/handlers/inventory.js.map +1 -0
  330. package/dist/server/handlers/kali.js +272 -230
  331. package/dist/server/handlers/kali.js.map +1 -0
  332. package/dist/server/handlers/llm-providers.js +803 -580
  333. package/dist/server/handlers/llm-providers.js.map +1 -0
  334. package/dist/server/handlers/local-agent.js +133 -105
  335. package/dist/server/handlers/local-agent.js.map +1 -0
  336. package/dist/server/handlers/media.js +1179 -857
  337. package/dist/server/handlers/media.js.map +1 -0
  338. package/dist/server/handlers/meta-ads.js +2669 -2093
  339. package/dist/server/handlers/meta-ads.js.map +1 -0
  340. package/dist/server/handlers/nodes.js +1321 -913
  341. package/dist/server/handlers/nodes.js.map +1 -0
  342. package/dist/server/handlers/operations.js +183 -157
  343. package/dist/server/handlers/operations.js.map +1 -0
  344. package/dist/server/handlers/platform.js +346 -210
  345. package/dist/server/handlers/platform.js.map +1 -0
  346. package/dist/server/handlers/remove-bg.js +118 -86
  347. package/dist/server/handlers/remove-bg.js.map +1 -0
  348. package/dist/server/handlers/storefront.js +586 -446
  349. package/dist/server/handlers/storefront.js.map +1 -0
  350. package/dist/server/handlers/supply-chain.js +546 -326
  351. package/dist/server/handlers/supply-chain.js.map +1 -0
  352. package/dist/server/handlers/transcription.js +106 -97
  353. package/dist/server/handlers/transcription.js.map +1 -0
  354. package/dist/server/handlers/video-gen.js +593 -424
  355. package/dist/server/handlers/video-gen.js.map +1 -0
  356. package/dist/server/handlers/voice.js +1458 -1017
  357. package/dist/server/handlers/voice.js.map +1 -0
  358. package/dist/server/handlers/workflow-steps.js +2837 -2116
  359. package/dist/server/handlers/workflow-steps.js.map +1 -0
  360. package/dist/server/handlers/workflows.js +1630 -933
  361. package/dist/server/handlers/workflows.js.map +1 -0
  362. package/dist/server/index.js +3166 -2390
  363. package/dist/server/index.js.map +1 -0
  364. package/dist/server/lib/batch-client.js +471 -409
  365. package/dist/server/lib/batch-client.js.map +1 -0
  366. package/dist/server/lib/clickhouse-buffer.js +118 -104
  367. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  368. package/dist/server/lib/clickhouse-client.js +107 -107
  369. package/dist/server/lib/clickhouse-client.js.map +1 -0
  370. package/dist/server/lib/coa-renderer.js +1786 -356
  371. package/dist/server/lib/coa-renderer.js.map +1 -0
  372. package/dist/server/lib/code-worker-pool.js +227 -177
  373. package/dist/server/lib/code-worker-pool.js.map +1 -0
  374. package/dist/server/lib/code-worker.js +174 -164
  375. package/dist/server/lib/code-worker.js.map +1 -0
  376. package/dist/server/lib/compaction-service.d.ts +2 -12
  377. package/dist/server/lib/compaction-service.js +74 -184
  378. package/dist/server/lib/compaction-service.js.map +1 -0
  379. package/dist/server/lib/logger.js +36 -24
  380. package/dist/server/lib/logger.js.map +1 -0
  381. package/dist/server/lib/otel.js +101 -80
  382. package/dist/server/lib/otel.js.map +1 -0
  383. package/dist/server/lib/pdf-renderer.d.ts +1 -1
  384. package/dist/server/lib/pdf-renderer.js +954 -776
  385. package/dist/server/lib/pdf-renderer.js.map +1 -0
  386. package/dist/server/lib/prompt-sanitizer.js +188 -108
  387. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  388. package/dist/server/lib/provider-capabilities.js +136 -138
  389. package/dist/server/lib/provider-capabilities.js.map +1 -0
  390. package/dist/server/lib/provider-failover.js +190 -168
  391. package/dist/server/lib/provider-failover.js.map +1 -0
  392. package/dist/server/lib/rate-limiter.js +186 -117
  393. package/dist/server/lib/rate-limiter.js.map +1 -0
  394. package/dist/server/lib/react-pdf-layout.js +551 -382
  395. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  396. package/dist/server/lib/server-agent-loop.d.ts +9 -0
  397. package/dist/server/lib/server-agent-loop.js +906 -624
  398. package/dist/server/lib/server-agent-loop.js.map +1 -0
  399. package/dist/server/lib/server-subagent.d.ts +2 -0
  400. package/dist/server/lib/server-subagent.js +260 -162
  401. package/dist/server/lib/server-subagent.js.map +1 -0
  402. package/dist/server/lib/session-checkpoint.js +105 -96
  403. package/dist/server/lib/session-checkpoint.js.map +1 -0
  404. package/dist/server/lib/ssrf-guard.js +193 -184
  405. package/dist/server/lib/ssrf-guard.js.map +1 -0
  406. package/dist/server/lib/supabase-client.js +94 -82
  407. package/dist/server/lib/supabase-client.js.map +1 -0
  408. package/dist/server/lib/template-resolver.js +154 -176
  409. package/dist/server/lib/template-resolver.js.map +1 -0
  410. package/dist/server/lib/utils.js +242 -133
  411. package/dist/server/lib/utils.js.map +1 -0
  412. package/dist/server/local-agent-gateway.d.ts +2 -2
  413. package/dist/server/local-agent-gateway.js +785 -627
  414. package/dist/server/local-agent-gateway.js.map +1 -0
  415. package/dist/server/providers/anthropic.js +254 -176
  416. package/dist/server/providers/anthropic.js.map +1 -0
  417. package/dist/server/providers/bedrock.js +221 -162
  418. package/dist/server/providers/bedrock.js.map +1 -0
  419. package/dist/server/providers/gemini.js +548 -418
  420. package/dist/server/providers/gemini.js.map +1 -0
  421. package/dist/server/providers/openai.js +571 -437
  422. package/dist/server/providers/openai.js.map +1 -0
  423. package/dist/server/providers/registry.js +23 -18
  424. package/dist/server/providers/registry.js.map +1 -0
  425. package/dist/server/providers/shared.js +123 -95
  426. package/dist/server/providers/shared.js.map +1 -0
  427. package/dist/server/providers/types.js +1 -11
  428. package/dist/server/providers/types.js.map +1 -0
  429. package/dist/server/proxy-handlers.js +209 -165
  430. package/dist/server/proxy-handlers.js.map +1 -0
  431. package/dist/server/tool-router.d.ts +13 -0
  432. package/dist/server/tool-router.js +960 -598
  433. package/dist/server/tool-router.js.map +1 -0
  434. package/dist/server/validation.js +248 -188
  435. package/dist/server/validation.js.map +1 -0
  436. package/dist/server/worker.js +202 -133
  437. package/dist/server/worker.js.map +1 -0
  438. package/dist/setup.d.ts +2 -2
  439. package/dist/setup.js +151 -147
  440. package/dist/setup.js.map +1 -0
  441. package/dist/shared/agent-core.d.ts +191 -24
  442. package/dist/shared/agent-core.js +971 -462
  443. package/dist/shared/agent-core.js.map +1 -0
  444. package/dist/shared/anthropic-types.js +1 -6
  445. package/dist/shared/anthropic-types.js.map +1 -0
  446. package/dist/shared/api-client.d.ts +17 -9
  447. package/dist/shared/api-client.js +419 -327
  448. package/dist/shared/api-client.js.map +1 -0
  449. package/dist/shared/compaction.d.ts +36 -0
  450. package/dist/shared/compaction.js +138 -0
  451. package/dist/shared/compaction.js.map +1 -0
  452. package/dist/shared/constants.js +67 -64
  453. package/dist/shared/constants.js.map +1 -0
  454. package/dist/shared/sse-parser.js +221 -219
  455. package/dist/shared/sse-parser.js.map +1 -0
  456. package/dist/shared/tool-dispatch.d.ts +4 -2
  457. package/dist/shared/tool-dispatch.js +226 -165
  458. package/dist/shared/tool-dispatch.js.map +1 -0
  459. package/dist/shared/types.js +1 -6
  460. package/dist/shared/types.js.map +1 -0
  461. package/dist/types/cli-highlight.d.js +2 -0
  462. package/dist/types/cli-highlight.d.js.map +1 -0
  463. package/dist/types/diff.d.js +2 -0
  464. package/dist/types/diff.d.js.map +1 -0
  465. package/dist/types/pdf-parse.d.js +2 -0
  466. package/dist/types/pdf-parse.d.js.map +1 -0
  467. package/dist/updater.d.ts +1 -1
  468. package/dist/updater.js +118 -92
  469. package/dist/updater.js.map +1 -0
  470. package/dist/webchat/widget.js +227 -380
  471. package/dist/webchat/widget.js.map +1 -0
  472. package/package.json +22 -10
  473. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  474. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  475. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  476. package/vendor/ink/build/apply-styles.js +175 -0
  477. package/vendor/ink/build/build-layout.js +77 -0
  478. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  479. package/vendor/ink/build/colorize.d.ts +3 -0
  480. package/vendor/ink/build/colorize.js +48 -0
  481. package/vendor/ink/build/colorize.js.map +1 -0
  482. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  483. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  484. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  485. package/vendor/ink/build/components/App.d.ts +18 -0
  486. package/vendor/ink/build/components/App.js +351 -0
  487. package/vendor/ink/build/components/App.js.map +1 -0
  488. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  489. package/vendor/ink/build/components/AppContext.js +11 -0
  490. package/vendor/ink/build/components/AppContext.js.map +1 -0
  491. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  492. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  493. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  494. package/vendor/ink/build/components/Box.d.ts +117 -0
  495. package/vendor/ink/build/components/Box.js +34 -0
  496. package/vendor/ink/build/components/Box.js.map +1 -0
  497. package/vendor/ink/build/components/Color.js +62 -0
  498. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  499. package/vendor/ink/build/components/Cursor.js +53 -0
  500. package/vendor/ink/build/components/Cursor.js.map +1 -0
  501. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  502. package/vendor/ink/build/components/CursorContext.js +8 -0
  503. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  504. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  505. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  506. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  507. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  508. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  509. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  510. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  511. package/vendor/ink/build/components/FocusContext.js +17 -0
  512. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  513. package/vendor/ink/build/components/Newline.d.ts +13 -0
  514. package/vendor/ink/build/components/Newline.js +8 -0
  515. package/vendor/ink/build/components/Newline.js.map +1 -0
  516. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  517. package/vendor/ink/build/components/Spacer.js +11 -0
  518. package/vendor/ink/build/components/Spacer.js.map +1 -0
  519. package/vendor/ink/build/components/Static.d.ts +24 -0
  520. package/vendor/ink/build/components/Static.js +28 -0
  521. package/vendor/ink/build/components/Static.js.map +1 -0
  522. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StderrContext.js +13 -0
  524. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  525. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  526. package/vendor/ink/build/components/StdinContext.js +19 -0
  527. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  528. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  529. package/vendor/ink/build/components/StdoutContext.js +13 -0
  530. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  531. package/vendor/ink/build/components/Text.d.ts +55 -0
  532. package/vendor/ink/build/components/Text.js +50 -0
  533. package/vendor/ink/build/components/Text.js.map +1 -0
  534. package/vendor/ink/build/components/Transform.d.ts +16 -0
  535. package/vendor/ink/build/components/Transform.js +15 -0
  536. package/vendor/ink/build/components/Transform.js.map +1 -0
  537. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  538. package/vendor/ink/build/cursor-helpers.js +56 -0
  539. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  540. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  541. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  542. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  543. package/vendor/ink/build/devtools.d.ts +1 -0
  544. package/vendor/ink/build/devtools.js +11 -0
  545. package/vendor/ink/build/devtools.js.map +1 -0
  546. package/vendor/ink/build/dom.d.ts +56 -0
  547. package/vendor/ink/build/dom.js +124 -0
  548. package/vendor/ink/build/dom.js.map +1 -0
  549. package/vendor/ink/build/experimental/apply-style.js +140 -0
  550. package/vendor/ink/build/experimental/dom.js +123 -0
  551. package/vendor/ink/build/experimental/output.js +91 -0
  552. package/vendor/ink/build/experimental/reconciler.js +141 -0
  553. package/vendor/ink/build/experimental/renderer.js +81 -0
  554. package/vendor/ink/build/get-max-width.d.ts +3 -0
  555. package/vendor/ink/build/get-max-width.js +10 -0
  556. package/vendor/ink/build/get-max-width.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  558. package/vendor/ink/build/hooks/use-app.js +8 -0
  559. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  561. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  562. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  564. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  565. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  567. package/vendor/ink/build/hooks/use-focus.js +42 -0
  568. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  570. package/vendor/ink/build/hooks/use-input.js +124 -0
  571. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  574. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  577. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  578. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  579. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  580. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  581. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  582. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  583. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  584. package/vendor/ink/build/hooks/useInput.js +38 -0
  585. package/vendor/ink/build/index.d.ts +34 -0
  586. package/vendor/ink/build/index.js +20 -0
  587. package/vendor/ink/build/index.js.map +1 -0
  588. package/vendor/ink/build/ink.d.ts +90 -0
  589. package/vendor/ink/build/ink.js +654 -0
  590. package/vendor/ink/build/ink.js.map +1 -0
  591. package/vendor/ink/build/input-parser.d.ts +7 -0
  592. package/vendor/ink/build/input-parser.js +154 -0
  593. package/vendor/ink/build/input-parser.js.map +1 -0
  594. package/vendor/ink/build/instance.js +205 -0
  595. package/vendor/ink/build/instances.d.ts +3 -0
  596. package/vendor/ink/build/instances.js +8 -0
  597. package/vendor/ink/build/instances.js.map +1 -0
  598. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  599. package/vendor/ink/build/kitty-keyboard.js +32 -0
  600. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  601. package/vendor/ink/build/layout.d.ts +7 -0
  602. package/vendor/ink/build/layout.js +33 -0
  603. package/vendor/ink/build/layout.js.map +1 -0
  604. package/vendor/ink/build/log-update.d.ts +19 -0
  605. package/vendor/ink/build/log-update.js +243 -0
  606. package/vendor/ink/build/log-update.js.map +1 -0
  607. package/vendor/ink/build/measure-element.d.ts +16 -0
  608. package/vendor/ink/build/measure-element.js +9 -0
  609. package/vendor/ink/build/measure-element.js.map +1 -0
  610. package/vendor/ink/build/measure-text.d.ts +6 -0
  611. package/vendor/ink/build/measure-text.js +21 -0
  612. package/vendor/ink/build/measure-text.js.map +1 -0
  613. package/vendor/ink/build/options.d.ts +52 -0
  614. package/vendor/ink/build/options.js +2 -0
  615. package/vendor/ink/build/options.js.map +1 -0
  616. package/vendor/ink/build/output.d.ts +35 -0
  617. package/vendor/ink/build/output.js +183 -0
  618. package/vendor/ink/build/output.js.map +1 -0
  619. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  620. package/vendor/ink/build/parse-keypress.js +493 -0
  621. package/vendor/ink/build/parse-keypress.js.map +1 -0
  622. package/vendor/ink/build/reconciler.d.ts +4 -0
  623. package/vendor/ink/build/reconciler.js +274 -0
  624. package/vendor/ink/build/reconciler.js.map +1 -0
  625. package/vendor/ink/build/render-background.d.ts +4 -0
  626. package/vendor/ink/build/render-background.js +25 -0
  627. package/vendor/ink/build/render-background.js.map +1 -0
  628. package/vendor/ink/build/render-border.d.ts +4 -0
  629. package/vendor/ink/build/render-border.js +73 -0
  630. package/vendor/ink/build/render-border.js.map +1 -0
  631. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  632. package/vendor/ink/build/render-node-to-output.js +147 -0
  633. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  634. package/vendor/ink/build/render-to-string.d.ts +38 -0
  635. package/vendor/ink/build/render-to-string.js +115 -0
  636. package/vendor/ink/build/render-to-string.js.map +1 -0
  637. package/vendor/ink/build/render.d.ts +121 -0
  638. package/vendor/ink/build/render.js +55 -0
  639. package/vendor/ink/build/render.js.map +1 -0
  640. package/vendor/ink/build/renderer.d.ts +8 -0
  641. package/vendor/ink/build/renderer.js +55 -0
  642. package/vendor/ink/build/renderer.js.map +1 -0
  643. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  644. package/vendor/ink/build/sanitize-ansi.js +27 -0
  645. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  646. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  647. package/vendor/ink/build/screen-reader-update.js +38 -0
  648. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  649. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  650. package/vendor/ink/build/squash-text-nodes.js +36 -0
  651. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  652. package/vendor/ink/build/styles.d.ts +240 -0
  653. package/vendor/ink/build/styles.js +232 -0
  654. package/vendor/ink/build/styles.js.map +1 -0
  655. package/vendor/ink/build/utils.d.ts +2 -0
  656. package/vendor/ink/build/utils.js +4 -0
  657. package/vendor/ink/build/utils.js.map +1 -0
  658. package/vendor/ink/build/wrap-text.d.ts +3 -0
  659. package/vendor/ink/build/wrap-text.js +31 -0
  660. package/vendor/ink/build/wrap-text.js.map +1 -0
  661. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  662. package/vendor/ink/build/write-synchronized.js +7 -0
  663. package/vendor/ink/build/write-synchronized.js.map +1 -0
  664. package/vendor/ink/license +10 -0
  665. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  666. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  667. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  668. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  669. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  670. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  671. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  672. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  673. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  674. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  675. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  676. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  677. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  678. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  679. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  680. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  681. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  682. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  683. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  684. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  685. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  686. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  687. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  688. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  689. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  690. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  691. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  692. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  693. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  694. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  695. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  696. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  697. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  698. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  699. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  700. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  701. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  702. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  703. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  704. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  705. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  706. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  707. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  708. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  709. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  710. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  711. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  712. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  713. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  714. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  715. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  716. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  717. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  718. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  719. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  720. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  721. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  722. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  723. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  724. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  725. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  726. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  727. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  728. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  729. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  730. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  731. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  732. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  733. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  734. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  735. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  746. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  747. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  748. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  749. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  750. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  751. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  752. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  753. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  754. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  755. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  756. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  757. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  758. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  759. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  760. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  761. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  762. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  763. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  764. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  765. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  766. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  767. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  768. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  769. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  770. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  784. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  785. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  786. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  787. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  788. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  789. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  790. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  791. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  792. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  793. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  794. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  795. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  796. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  797. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  798. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  799. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  800. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  801. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  802. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  803. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  804. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  805. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  806. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  807. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  808. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  809. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  810. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  811. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  812. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  813. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  814. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  815. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  816. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  817. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  818. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  819. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  820. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  821. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  822. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  823. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  824. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  825. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  826. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  827. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  828. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  829. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  830. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  831. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  832. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  833. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  834. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  835. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  836. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  837. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  838. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  839. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  840. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  841. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  842. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  843. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  844. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  845. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  846. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  847. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  848. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  849. package/vendor/ink/package.json +201 -0
  850. package/vendor/ink/readme.md +2636 -0
  851. package/bin/swag-agent.js +0 -9
  852. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  853. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -0,0 +1,875 @@
1
+ /**
2
+ * Copyright (c) 2012-2015, Christopher Jeffrey (MIT License)
3
+ * Copyright (c) 2017, Daniel Imms (MIT License)
4
+ *
5
+ * pty.cc:
6
+ * This file is responsible for starting processes
7
+ * with pseudo-terminal file descriptors.
8
+ *
9
+ * See:
10
+ * man pty
11
+ * man tty_ioctl
12
+ * man termios
13
+ * man forkpty
14
+ */
15
+
16
+ /**
17
+ * Includes
18
+ */
19
+
20
+ #define NODE_ADDON_API_DISABLE_DEPRECATED
21
+ #include <napi.h>
22
+ #include <assert.h>
23
+ #include <errno.h>
24
+ #include <string.h>
25
+ #include <stdlib.h>
26
+ #include <unistd.h>
27
+ #include <thread>
28
+
29
+ #include <sys/types.h>
30
+ #include <sys/stat.h>
31
+ #include <sys/ioctl.h>
32
+ #include <sys/wait.h>
33
+ #include <fcntl.h>
34
+ #include <signal.h>
35
+
36
+ /* forkpty */
37
+ /* http://www.gnu.org/software/gnulib/manual/html_node/forkpty.html */
38
+ #if defined(__linux__)
39
+ #include <pty.h>
40
+ #include <dirent.h>
41
+ #include <sys/syscall.h>
42
+ #elif defined(__APPLE__)
43
+ #include <util.h>
44
+ #elif defined(__FreeBSD__)
45
+ #include <libutil.h>
46
+ #include <termios.h>
47
+ #elif defined(__OpenBSD__)
48
+ #include <util.h>
49
+ #include <termios.h>
50
+ #endif
51
+
52
+ /* Some platforms name VWERASE and VDISCARD differently */
53
+ #if !defined(VWERASE) && defined(VWERSE)
54
+ #define VWERASE VWERSE
55
+ #endif
56
+ #if !defined(VDISCARD) && defined(VDISCRD)
57
+ #define VDISCARD VDISCRD
58
+ #endif
59
+
60
+ /* for pty_getproc */
61
+ #if defined(__linux__)
62
+ #include <stdio.h>
63
+ #include <stdint.h>
64
+ #elif defined(__APPLE__)
65
+ #include <libproc.h>
66
+ #include <os/availability.h>
67
+ #include <paths.h>
68
+ #include <spawn.h>
69
+ #include <sys/event.h>
70
+ #include <sys/sysctl.h>
71
+ #include <termios.h>
72
+ #endif
73
+
74
+ /* NSIG - macro for highest signal + 1, should be defined */
75
+ #ifndef NSIG
76
+ #define NSIG 32
77
+ #endif
78
+
79
+ /* macOS 10.14 back does not define this constant */
80
+ #ifndef POSIX_SPAWN_SETSID
81
+ #define POSIX_SPAWN_SETSID 1024
82
+ #endif
83
+
84
+ /* environ for execvpe */
85
+ /* node/src/node_child_process.cc */
86
+ #if !defined(__APPLE__)
87
+ extern char **environ;
88
+ #endif
89
+
90
+ #if defined(__APPLE__)
91
+ extern "C" {
92
+ // Changes the current thread's directory to a path or directory file
93
+ // descriptor. libpthread only exposes a syscall wrapper starting in
94
+ // macOS 10.12, but the system call dates back to macOS 10.5. On older OSes,
95
+ // the syscall is issued directly.
96
+ int pthread_chdir_np(const char* dir) API_AVAILABLE(macosx(10.12));
97
+ int pthread_fchdir_np(int fd) API_AVAILABLE(macosx(10.12));
98
+ }
99
+
100
+ #define HANDLE_EINTR(x) ({ \
101
+ int eintr_wrapper_counter = 0; \
102
+ decltype(x) eintr_wrapper_result; \
103
+ do { \
104
+ eintr_wrapper_result = (x); \
105
+ } while (eintr_wrapper_result == -1 && errno == EINTR && \
106
+ eintr_wrapper_counter++ < 100); \
107
+ eintr_wrapper_result; \
108
+ })
109
+ #endif
110
+
111
+ struct ExitEvent {
112
+ int exit_code = 0, signal_code = 0;
113
+ };
114
+
115
+ #if defined(__linux__)
116
+
117
+ static int
118
+ SetCloseOnExec(int fd) {
119
+ int flags = fcntl(fd, F_GETFD, 0);
120
+ if (flags == -1)
121
+ return flags;
122
+ if (flags & FD_CLOEXEC)
123
+ return 0;
124
+ return fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
125
+ }
126
+
127
+ /**
128
+ * Close all file descriptors >= 3 to prevent FD leakage to child processes.
129
+ * Uses close_range() syscall on Linux 5.9+, falls back to /proc/self/fd iteration.
130
+ */
131
+ static void
132
+ pty_close_inherited_fds() {
133
+ // Try close_range() first (Linux 5.9+, glibc 2.34+)
134
+ #if defined(SYS_close_range) && defined(CLOSE_RANGE_CLOEXEC)
135
+ if (syscall(SYS_close_range, 3, ~0U, CLOSE_RANGE_CLOEXEC) == 0) {
136
+ return;
137
+ }
138
+ #endif
139
+
140
+ int fd;
141
+ // Set the CLOEXEC flag on all open descriptors. Unconditionally try the first
142
+ // 16 file descriptors. After that, bail out after the first error.
143
+ for (fd = 3; ; fd++)
144
+ if (SetCloseOnExec(fd) && fd > 15)
145
+ break;
146
+ }
147
+ #endif
148
+
149
+ void SetupExitCallback(Napi::Env env, Napi::Function cb, pid_t pid) {
150
+ std::thread *th = new std::thread;
151
+ // Don't use Napi::AsyncWorker which is limited by UV_THREADPOOL_SIZE.
152
+ auto tsfn = Napi::ThreadSafeFunction::New(
153
+ env,
154
+ cb, // JavaScript function called asynchronously
155
+ "SetupExitCallback_resource", // Name
156
+ 0, // Unlimited queue
157
+ 1, // Only one thread will use this initially
158
+ [th](Napi::Env) { // Finalizer used to clean threads up
159
+ th->join();
160
+ delete th;
161
+ });
162
+ *th = std::thread([tsfn = std::move(tsfn), pid] {
163
+ auto callback = [](Napi::Env env, Napi::Function cb, ExitEvent *exit_event) {
164
+ cb.Call({Napi::Number::New(env, exit_event->exit_code),
165
+ Napi::Number::New(env, exit_event->signal_code)});
166
+ delete exit_event;
167
+ };
168
+
169
+ int ret;
170
+ int stat_loc;
171
+ #if defined(__APPLE__)
172
+ // Based on
173
+ // https://source.chromium.org/chromium/chromium/src/+/main:base/process/kill_mac.cc;l=35-69?
174
+ int kq = HANDLE_EINTR(kqueue());
175
+ struct kevent change = {0};
176
+ EV_SET(&change, pid, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, NULL);
177
+ ret = HANDLE_EINTR(kevent(kq, &change, 1, NULL, 0, NULL));
178
+ if (ret == -1) {
179
+ if (errno == ESRCH) {
180
+ // At this point, one of the following has occurred:
181
+ // 1. The process has died but has not yet been reaped.
182
+ // 2. The process has died and has already been reaped.
183
+ // 3. The process is in the process of dying. It's no longer
184
+ // kqueueable, but it may not be waitable yet either. Mark calls
185
+ // this case the "zombie death race".
186
+ ret = HANDLE_EINTR(waitpid(pid, &stat_loc, WNOHANG));
187
+ if (ret == 0) {
188
+ ret = kill(pid, SIGKILL);
189
+ if (ret != -1) {
190
+ HANDLE_EINTR(waitpid(pid, &stat_loc, 0));
191
+ }
192
+ }
193
+ }
194
+ } else {
195
+ struct kevent event = {0};
196
+ ret = HANDLE_EINTR(kevent(kq, NULL, 0, &event, 1, NULL));
197
+ if (ret == 1) {
198
+ if ((event.fflags & NOTE_EXIT) &&
199
+ (event.ident == static_cast<uintptr_t>(pid))) {
200
+ // The process is dead or dying. This won't block for long, if at
201
+ // all.
202
+ HANDLE_EINTR(waitpid(pid, &stat_loc, 0));
203
+ }
204
+ }
205
+ }
206
+ #else
207
+ while (true) {
208
+ errno = 0;
209
+ if ((ret = waitpid(pid, &stat_loc, 0)) != pid) {
210
+ if (ret == -1 && errno == EINTR) {
211
+ continue;
212
+ }
213
+ if (ret == -1 && errno == ECHILD) {
214
+ // XXX node v0.8.x seems to have this problem.
215
+ // waitpid is already handled elsewhere.
216
+ ;
217
+ } else {
218
+ assert(false);
219
+ }
220
+ }
221
+ break;
222
+ }
223
+ #endif
224
+ ExitEvent *exit_event = new ExitEvent;
225
+ if (WIFEXITED(stat_loc)) {
226
+ exit_event->exit_code = WEXITSTATUS(stat_loc); // errno?
227
+ }
228
+ if (WIFSIGNALED(stat_loc)) {
229
+ exit_event->signal_code = WTERMSIG(stat_loc);
230
+ }
231
+ auto status = tsfn.BlockingCall(exit_event, callback); // In main thread
232
+ switch (status) {
233
+ case napi_closing:
234
+ break;
235
+
236
+ case napi_queue_full:
237
+ Napi::Error::Fatal("SetupExitCallback", "Queue was full");
238
+
239
+ case napi_ok:
240
+ if (tsfn.Release() != napi_ok) {
241
+ Napi::Error::Fatal("SetupExitCallback", "ThreadSafeFunction.Release() failed");
242
+ }
243
+ break;
244
+
245
+ default:
246
+ Napi::Error::Fatal("SetupExitCallback", "ThreadSafeFunction.BlockingCall() failed");
247
+ }
248
+ });
249
+ }
250
+
251
+ /**
252
+ * Methods
253
+ */
254
+
255
+ Napi::Value PtyFork(const Napi::CallbackInfo& info);
256
+ Napi::Value PtyOpen(const Napi::CallbackInfo& info);
257
+ Napi::Value PtyResize(const Napi::CallbackInfo& info);
258
+ Napi::Value PtyGetProc(const Napi::CallbackInfo& info);
259
+
260
+ /**
261
+ * Functions
262
+ */
263
+
264
+ static int
265
+ pty_nonblock(int);
266
+
267
+ #if defined(__APPLE__)
268
+ static char *
269
+ pty_getproc(int);
270
+ #else
271
+ static char *
272
+ pty_getproc(int, char *);
273
+ #endif
274
+
275
+ #if defined(__APPLE__) || defined(__OpenBSD__)
276
+ static void
277
+ pty_posix_spawn(char** argv, char** env,
278
+ const struct termios *termp,
279
+ const struct winsize *winp,
280
+ int* master,
281
+ pid_t* pid,
282
+ std::string* err);
283
+ #endif
284
+
285
+ struct DelBuf {
286
+ int len;
287
+ DelBuf(int len) : len(len) {}
288
+ void operator()(char **p) {
289
+ if (p == nullptr)
290
+ return;
291
+ for (int i = 0; i < len; i++)
292
+ free(p[i]);
293
+ delete[] p;
294
+ }
295
+ };
296
+
297
+ Napi::Value PtyFork(const Napi::CallbackInfo& info) {
298
+ Napi::Env napiEnv(info.Env());
299
+ Napi::HandleScope scope(napiEnv);
300
+
301
+ if (info.Length() != 11 ||
302
+ !info[0].IsString() ||
303
+ !info[1].IsArray() ||
304
+ !info[2].IsArray() ||
305
+ !info[3].IsString() ||
306
+ !info[4].IsNumber() ||
307
+ !info[5].IsNumber() ||
308
+ !info[6].IsNumber() ||
309
+ !info[7].IsNumber() ||
310
+ !info[8].IsBoolean() ||
311
+ !info[9].IsString() ||
312
+ !info[10].IsFunction()) {
313
+ throw Napi::Error::New(napiEnv, "Usage: pty.fork(file, args, env, cwd, cols, rows, uid, gid, utf8, helperPath, onexit)");
314
+ }
315
+
316
+ // file
317
+ std::string file = info[0].As<Napi::String>();
318
+
319
+ // args
320
+ Napi::Array argv_ = info[1].As<Napi::Array>();
321
+
322
+ // env
323
+ Napi::Array env_ = info[2].As<Napi::Array>();
324
+ int envc = env_.Length();
325
+ std::unique_ptr<char *, DelBuf> env_unique_ptr(new char *[envc + 1], DelBuf(envc + 1));
326
+ char **env = env_unique_ptr.get();
327
+ env[envc] = NULL;
328
+ for (int i = 0; i < envc; i++) {
329
+ std::string pair = env_.Get(i).As<Napi::String>();
330
+ env[i] = strdup(pair.c_str());
331
+ }
332
+
333
+ // cwd
334
+ std::string cwd_ = info[3].As<Napi::String>();
335
+
336
+ // size
337
+ struct winsize winp;
338
+ winp.ws_col = info[4].As<Napi::Number>().Int32Value();
339
+ winp.ws_row = info[5].As<Napi::Number>().Int32Value();
340
+ winp.ws_xpixel = 0;
341
+ winp.ws_ypixel = 0;
342
+
343
+ #if !defined(__APPLE__)
344
+ // uid / gid
345
+ int uid = info[6].As<Napi::Number>().Int32Value();
346
+ int gid = info[7].As<Napi::Number>().Int32Value();
347
+ #endif
348
+
349
+ // termios
350
+ struct termios t = termios();
351
+ struct termios *term = &t;
352
+ term->c_iflag = ICRNL | IXON | IXANY | IMAXBEL | BRKINT;
353
+ if (info[8].As<Napi::Boolean>().Value()) {
354
+ #if defined(IUTF8)
355
+ term->c_iflag |= IUTF8;
356
+ #endif
357
+ }
358
+ term->c_oflag = OPOST | ONLCR;
359
+ term->c_cflag = CREAD | CS8 | HUPCL;
360
+ term->c_lflag = ICANON | ISIG | IEXTEN | ECHO | ECHOE | ECHOK | ECHOKE | ECHOCTL;
361
+
362
+ term->c_cc[VEOF] = 4;
363
+ term->c_cc[VEOL] = -1;
364
+ term->c_cc[VEOL2] = -1;
365
+ term->c_cc[VERASE] = 0x7f;
366
+ term->c_cc[VWERASE] = 23;
367
+ term->c_cc[VKILL] = 21;
368
+ term->c_cc[VREPRINT] = 18;
369
+ term->c_cc[VINTR] = 3;
370
+ term->c_cc[VQUIT] = 0x1c;
371
+ term->c_cc[VSUSP] = 26;
372
+ term->c_cc[VSTART] = 17;
373
+ term->c_cc[VSTOP] = 19;
374
+ term->c_cc[VLNEXT] = 22;
375
+ term->c_cc[VDISCARD] = 15;
376
+ term->c_cc[VMIN] = 1;
377
+ term->c_cc[VTIME] = 0;
378
+
379
+ #if (__APPLE__)
380
+ term->c_cc[VDSUSP] = 25;
381
+ term->c_cc[VSTATUS] = 20;
382
+ #endif
383
+
384
+ cfsetispeed(term, B38400);
385
+ cfsetospeed(term, B38400);
386
+
387
+ // helperPath
388
+ std::string helper_path = info[9].As<Napi::String>();
389
+
390
+ pid_t pid;
391
+ int master = -1;
392
+ #if defined(__APPLE__)
393
+ int argc = argv_.Length();
394
+ int argl = argc + 4;
395
+ std::unique_ptr<char *, DelBuf> argv_unique_ptr(new char *[argl], DelBuf(argl));
396
+ char **argv = argv_unique_ptr.get();
397
+ argv[0] = strdup(helper_path.c_str());
398
+ argv[1] = strdup(cwd_.c_str());
399
+ argv[2] = strdup(file.c_str());
400
+ argv[argl - 1] = NULL;
401
+ for (int i = 0; i < argc; i++) {
402
+ std::string arg = argv_.Get(i).As<Napi::String>();
403
+ argv[i + 3] = strdup(arg.c_str());
404
+ }
405
+
406
+ std::string err;
407
+ pty_posix_spawn(argv, env, term, &winp, &master, &pid, &err);
408
+ if (!err.empty()) {
409
+ if (master != -1) {
410
+ close(master);
411
+ }
412
+ throw Napi::Error::New(napiEnv, err);
413
+ }
414
+ if (pty_nonblock(master) == -1) {
415
+ throw Napi::Error::New(napiEnv, "Could not set master fd to nonblocking.");
416
+ }
417
+ #else
418
+ int argc = argv_.Length();
419
+ int argl = argc + 2;
420
+ std::unique_ptr<char *, DelBuf> argv_unique_ptr(new char *[argl], DelBuf(argl));
421
+ char** argv = argv_unique_ptr.get();
422
+ argv[0] = strdup(file.c_str());
423
+ argv[argl - 1] = NULL;
424
+ for (int i = 0; i < argc; i++) {
425
+ std::string arg = argv_.Get(i).As<Napi::String>();
426
+ argv[i + 1] = strdup(arg.c_str());
427
+ }
428
+
429
+ sigset_t newmask, oldmask;
430
+ struct sigaction sig_action;
431
+ // temporarily block all signals
432
+ // this is needed due to a race condition in openpty
433
+ // and to avoid running signal handlers in the child
434
+ // before exec* happened
435
+ sigfillset(&newmask);
436
+ pthread_sigmask(SIG_SETMASK, &newmask, &oldmask);
437
+
438
+ pid = forkpty(&master, nullptr, static_cast<termios*>(term), static_cast<winsize*>(&winp));
439
+
440
+ if (!pid) {
441
+ // remove all signal handler from child
442
+ sig_action.sa_handler = SIG_DFL;
443
+ sig_action.sa_flags = 0;
444
+ sigemptyset(&sig_action.sa_mask);
445
+ for (int i = 0 ; i < NSIG ; i++) { // NSIG is a macro for all signals + 1
446
+ sigaction(i, &sig_action, NULL);
447
+ }
448
+ }
449
+
450
+ // reenable signals
451
+ pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
452
+
453
+ switch (pid) {
454
+ case -1:
455
+ throw Napi::Error::New(napiEnv, "forkpty(3) failed.");
456
+ case 0:
457
+ if (strlen(cwd_.c_str())) {
458
+ if (chdir(cwd_.c_str()) == -1) {
459
+ perror("chdir(2) failed.");
460
+ _exit(1);
461
+ }
462
+ }
463
+
464
+ if (uid != -1 && gid != -1) {
465
+ if (setgid(gid) == -1) {
466
+ perror("setgid(2) failed.");
467
+ _exit(1);
468
+ }
469
+ if (setuid(uid) == -1) {
470
+ perror("setuid(2) failed.");
471
+ _exit(1);
472
+ }
473
+ }
474
+
475
+ // Close inherited FDs to prevent leaking pty master FDs to child
476
+ pty_close_inherited_fds();
477
+
478
+ {
479
+ char **old = environ;
480
+ environ = env;
481
+ execvp(argv[0], argv);
482
+ environ = old;
483
+ perror("execvp(3) failed.");
484
+ _exit(1);
485
+ }
486
+ default:
487
+ if (pty_nonblock(master) == -1) {
488
+ throw Napi::Error::New(napiEnv, "Could not set master fd to nonblocking.");
489
+ }
490
+ }
491
+ #endif
492
+
493
+ Napi::Object obj = Napi::Object::New(napiEnv);
494
+ obj.Set("fd", Napi::Number::New(napiEnv, master));
495
+ obj.Set("pid", Napi::Number::New(napiEnv, pid));
496
+ obj.Set("pty", Napi::String::New(napiEnv, ptsname(master)));
497
+
498
+ // Set up process exit callback.
499
+ Napi::Function cb = info[10].As<Napi::Function>();
500
+ SetupExitCallback(napiEnv, cb, pid);
501
+ return obj;
502
+ }
503
+
504
+ Napi::Value PtyOpen(const Napi::CallbackInfo& info) {
505
+ Napi::Env env(info.Env());
506
+ Napi::HandleScope scope(env);
507
+
508
+ if (info.Length() != 2 ||
509
+ !info[0].IsNumber() ||
510
+ !info[1].IsNumber()) {
511
+ throw Napi::Error::New(env, "Usage: pty.open(cols, rows)");
512
+ }
513
+
514
+ // size
515
+ struct winsize winp;
516
+ winp.ws_col = info[0].As<Napi::Number>().Int32Value();
517
+ winp.ws_row = info[1].As<Napi::Number>().Int32Value();
518
+ winp.ws_xpixel = 0;
519
+ winp.ws_ypixel = 0;
520
+
521
+ // pty
522
+ int master, slave;
523
+ int ret = openpty(&master, &slave, nullptr, NULL, static_cast<winsize*>(&winp));
524
+
525
+ if (ret == -1) {
526
+ throw Napi::Error::New(env, "openpty(3) failed.");
527
+ }
528
+
529
+ if (pty_nonblock(master) == -1) {
530
+ throw Napi::Error::New(env, "Could not set master fd to nonblocking.");
531
+ }
532
+
533
+ if (pty_nonblock(slave) == -1) {
534
+ throw Napi::Error::New(env, "Could not set slave fd to nonblocking.");
535
+ }
536
+
537
+ Napi::Object obj = Napi::Object::New(env);
538
+ obj.Set("master", Napi::Number::New(env, master));
539
+ obj.Set("slave", Napi::Number::New(env, slave));
540
+ obj.Set("pty", Napi::String::New(env, ptsname(master)));
541
+
542
+ return obj;
543
+ }
544
+
545
+ Napi::Value PtyResize(const Napi::CallbackInfo& info) {
546
+ Napi::Env env(info.Env());
547
+ Napi::HandleScope scope(env);
548
+
549
+ if (info.Length() != 5 ||
550
+ !info[0].IsNumber() ||
551
+ !info[1].IsNumber() ||
552
+ !info[2].IsNumber() ||
553
+ !info[3].IsNumber() ||
554
+ !info[4].IsNumber()) {
555
+ throw Napi::Error::New(env, "Usage: pty.resize(fd, cols, rows, xPixel, yPixel)");
556
+ }
557
+
558
+ int fd = info[0].As<Napi::Number>().Int32Value();
559
+
560
+ struct winsize winp;
561
+ winp.ws_col = info[1].As<Napi::Number>().Int32Value();
562
+ winp.ws_row = info[2].As<Napi::Number>().Int32Value();
563
+ winp.ws_xpixel = info[3].As<Napi::Number>().Int32Value();
564
+ winp.ws_ypixel = info[4].As<Napi::Number>().Int32Value();
565
+
566
+ if (ioctl(fd, TIOCSWINSZ, &winp) == -1) {
567
+ switch (errno) {
568
+ case EBADF:
569
+ throw Napi::Error::New(env, "ioctl(2) failed, EBADF");
570
+ case EFAULT:
571
+ throw Napi::Error::New(env, "ioctl(2) failed, EFAULT");
572
+ case EINVAL:
573
+ throw Napi::Error::New(env, "ioctl(2) failed, EINVAL");
574
+ case ENOTTY:
575
+ throw Napi::Error::New(env, "ioctl(2) failed, ENOTTY");
576
+ }
577
+ throw Napi::Error::New(env, "ioctl(2) failed");
578
+ }
579
+
580
+ return env.Undefined();
581
+ }
582
+
583
+ /**
584
+ * Foreground Process Name
585
+ */
586
+ Napi::Value PtyGetProc(const Napi::CallbackInfo& info) {
587
+ Napi::Env env(info.Env());
588
+ Napi::HandleScope scope(env);
589
+
590
+ #if defined(__APPLE__)
591
+ if (info.Length() != 1 ||
592
+ !info[0].IsNumber()) {
593
+ throw Napi::Error::New(env, "Usage: pty.process(pid)");
594
+ }
595
+
596
+ int fd = info[0].As<Napi::Number>().Int32Value();
597
+ char *name = pty_getproc(fd);
598
+ #else
599
+ if (info.Length() != 2 ||
600
+ !info[0].IsNumber() ||
601
+ !info[1].IsString()) {
602
+ throw Napi::Error::New(env, "Usage: pty.process(fd, tty)");
603
+ }
604
+
605
+ int fd = info[0].As<Napi::Number>().Int32Value();
606
+
607
+ std::string tty_ = info[1].As<Napi::String>();
608
+ char *tty = strdup(tty_.c_str());
609
+ char *name = pty_getproc(fd, tty);
610
+ free(tty);
611
+ #endif
612
+
613
+ if (name == NULL) {
614
+ return env.Undefined();
615
+ }
616
+
617
+ Napi::String name_ = Napi::String::New(env, name);
618
+ free(name);
619
+ return name_;
620
+ }
621
+
622
+ /**
623
+ * Nonblocking FD
624
+ */
625
+
626
+ static int
627
+ pty_nonblock(int fd) {
628
+ int flags = fcntl(fd, F_GETFL, 0);
629
+ if (flags == -1) return -1;
630
+ return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
631
+ }
632
+
633
+ /**
634
+ * pty_getproc
635
+ * Taken from tmux.
636
+ */
637
+
638
+ // Taken from: tmux (http://tmux.sourceforge.net/)
639
+ // Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
640
+ // Copyright (c) 2009 Joshua Elsasser <josh@elsasser.org>
641
+ // Copyright (c) 2009 Todd Carson <toc@daybefore.net>
642
+ //
643
+ // Permission to use, copy, modify, and distribute this software for any
644
+ // purpose with or without fee is hereby granted, provided that the above
645
+ // copyright notice and this permission notice appear in all copies.
646
+ //
647
+ // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
648
+ // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
649
+ // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
650
+ // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
651
+ // WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
652
+ // IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
653
+ // OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
654
+
655
+ #if defined(__linux__)
656
+
657
+ static char *
658
+ pty_getproc(int fd, char *tty) {
659
+ FILE *f;
660
+ char *path, *buf;
661
+ size_t len;
662
+ int ch;
663
+ pid_t pgrp;
664
+ int r;
665
+
666
+ if ((pgrp = tcgetpgrp(fd)) == -1) {
667
+ return NULL;
668
+ }
669
+
670
+ r = asprintf(&path, "/proc/%lld/cmdline", (long long)pgrp);
671
+ if (r == -1 || path == NULL) return NULL;
672
+
673
+ if ((f = fopen(path, "r")) == NULL) {
674
+ free(path);
675
+ return NULL;
676
+ }
677
+
678
+ free(path);
679
+
680
+ len = 0;
681
+ buf = NULL;
682
+ while ((ch = fgetc(f)) != EOF) {
683
+ if (ch == '\0') break;
684
+ buf = (char *)realloc(buf, len + 2);
685
+ if (buf == NULL) return NULL;
686
+ buf[len++] = ch;
687
+ }
688
+
689
+ if (buf != NULL) {
690
+ buf[len] = '\0';
691
+ }
692
+
693
+ fclose(f);
694
+ return buf;
695
+ }
696
+
697
+ #elif defined(__APPLE__)
698
+
699
+ static char *
700
+ pty_getproc(int fd) {
701
+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, 0 };
702
+ size_t size;
703
+ struct kinfo_proc kp;
704
+
705
+ if ((mib[3] = tcgetpgrp(fd)) == -1) {
706
+ return NULL;
707
+ }
708
+
709
+ size = sizeof kp;
710
+ if (sysctl(mib, 4, &kp, &size, NULL, 0) == -1) {
711
+ return NULL;
712
+ }
713
+
714
+ if (size != (sizeof kp) || *kp.kp_proc.p_comm == '\0') {
715
+ return NULL;
716
+ }
717
+
718
+ return strdup(kp.kp_proc.p_comm);
719
+ }
720
+
721
+ #else
722
+
723
+ static char *
724
+ pty_getproc(int fd, char *tty) {
725
+ return NULL;
726
+ }
727
+
728
+ #endif
729
+
730
+ #if defined(__APPLE__)
731
+ static std::string format_error(const char* func, int err_code) {
732
+ char buf[256];
733
+ snprintf(buf, sizeof(buf), "%s: %s", func, strerror(err_code));
734
+ return buf;
735
+ }
736
+
737
+ static void
738
+ pty_posix_spawn(char** argv, char** env,
739
+ const struct termios *termp,
740
+ const struct winsize *winp,
741
+ int* master,
742
+ pid_t* pid,
743
+ std::string* err) {
744
+ int low_fds[3];
745
+ size_t count = 0;
746
+ int res = 0;
747
+ int slave = -1;
748
+ char slave_pty_name[128];
749
+ int spawn_err;
750
+ sigset_t signal_set;
751
+
752
+ for (; count < 3; count++) {
753
+ low_fds[count] = posix_openpt(O_RDWR);
754
+ if (low_fds[count] >= STDERR_FILENO)
755
+ break;
756
+ }
757
+
758
+ int flags = POSIX_SPAWN_CLOEXEC_DEFAULT |
759
+ POSIX_SPAWN_SETSIGDEF |
760
+ POSIX_SPAWN_SETSIGMASK |
761
+ POSIX_SPAWN_SETSID;
762
+
763
+ posix_spawn_file_actions_t acts;
764
+ posix_spawn_file_actions_init(&acts);
765
+
766
+ posix_spawnattr_t attrs;
767
+ posix_spawnattr_init(&attrs);
768
+
769
+ *master = posix_openpt(O_RDWR);
770
+ if (*master == -1) {
771
+ *err = format_error("posix_openpt failed", errno);
772
+ goto done;
773
+ }
774
+
775
+ res = grantpt(*master);
776
+ if (res == -1) {
777
+ *err = format_error("grantpt failed", errno);
778
+ goto done;
779
+ }
780
+
781
+ res = unlockpt(*master);
782
+ if (res == -1) {
783
+ *err = format_error("unlockpt failed", errno);
784
+ goto done;
785
+ }
786
+
787
+ // Use TIOCPTYGNAME instead of ptsname() to avoid threading problems.
788
+ res = ioctl(*master, TIOCPTYGNAME, slave_pty_name);
789
+ if (res == -1) {
790
+ *err = format_error("ioctl(TIOCPTYGNAME) failed", errno);
791
+ goto done;
792
+ }
793
+
794
+ slave = open(slave_pty_name, O_RDWR | O_NOCTTY);
795
+ if (slave == -1) {
796
+ *err = format_error("open slave pty failed", errno);
797
+ goto done;
798
+ }
799
+
800
+ if (termp) {
801
+ res = tcsetattr(slave, TCSANOW, termp);
802
+ if (res == -1) {
803
+ *err = format_error("tcsetattr failed", errno);
804
+ goto done;
805
+ };
806
+ }
807
+
808
+ if (winp) {
809
+ res = ioctl(slave, TIOCSWINSZ, winp);
810
+ if (res == -1) {
811
+ *err = format_error("ioctl(TIOCSWINSZ) failed", errno);
812
+ goto done;
813
+ }
814
+ }
815
+
816
+ posix_spawn_file_actions_adddup2(&acts, slave, STDIN_FILENO);
817
+ posix_spawn_file_actions_adddup2(&acts, slave, STDOUT_FILENO);
818
+ posix_spawn_file_actions_adddup2(&acts, slave, STDERR_FILENO);
819
+ posix_spawn_file_actions_addclose(&acts, slave);
820
+ posix_spawn_file_actions_addclose(&acts, *master);
821
+
822
+ spawn_err = posix_spawnattr_setflags(&attrs, flags);
823
+ if (spawn_err != 0) {
824
+ *err = format_error("posix_spawnattr_setflags failed", spawn_err);
825
+ goto done;
826
+ }
827
+
828
+ /* Reset all signal the child to their default behavior */
829
+ sigfillset(&signal_set);
830
+ spawn_err = posix_spawnattr_setsigdefault(&attrs, &signal_set);
831
+ if (spawn_err != 0) {
832
+ *err = format_error("posix_spawnattr_setsigdefault failed", spawn_err);
833
+ goto done;
834
+ }
835
+
836
+ /* Reset the signal mask for all signals */
837
+ sigemptyset(&signal_set);
838
+ spawn_err = posix_spawnattr_setsigmask(&attrs, &signal_set);
839
+ if (spawn_err != 0) {
840
+ *err = format_error("posix_spawnattr_setsigmask failed", spawn_err);
841
+ goto done;
842
+ }
843
+
844
+ do
845
+ spawn_err = posix_spawn(pid, argv[0], &acts, &attrs, argv, env);
846
+ while (spawn_err == EINTR);
847
+ if (spawn_err != 0) {
848
+ *err = format_error("posix_spawn failed", spawn_err);
849
+ }
850
+ done:
851
+ posix_spawn_file_actions_destroy(&acts);
852
+ posix_spawnattr_destroy(&attrs);
853
+ if (slave != -1) {
854
+ close(slave);
855
+ }
856
+
857
+ for (size_t i = 0; i <= count; i++) {
858
+ close(low_fds[i]);
859
+ }
860
+ }
861
+ #endif
862
+
863
+ /**
864
+ * Init
865
+ */
866
+
867
+ Napi::Object init(Napi::Env env, Napi::Object exports) {
868
+ exports.Set("fork", Napi::Function::New(env, PtyFork));
869
+ exports.Set("open", Napi::Function::New(env, PtyOpen));
870
+ exports.Set("resize", Napi::Function::New(env, PtyResize));
871
+ exports.Set("process", Napi::Function::New(env, PtyGetProc));
872
+ return exports;
873
+ }
874
+
875
+ NODE_API_MODULE(NODE_GYP_MODULE_NAME, init)