whale-code 6.5.5 → 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 (847) 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 +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  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 +976 -688
  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.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. 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)