@jait/gateway 0.1.0

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 (474) hide show
  1. package/bin/jait.mjs +144 -0
  2. package/dist/config.d.ts +24 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +73 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/db/connection.d.ts +37 -0
  7. package/dist/db/connection.d.ts.map +1 -0
  8. package/dist/db/connection.js +85 -0
  9. package/dist/db/connection.js.map +1 -0
  10. package/dist/db/index.d.ts +4 -0
  11. package/dist/db/index.d.ts.map +1 -0
  12. package/dist/db/index.js +4 -0
  13. package/dist/db/index.js.map +1 -0
  14. package/dist/db/migrations.d.ts +24 -0
  15. package/dist/db/migrations.d.ts.map +1 -0
  16. package/dist/db/migrations.js +312 -0
  17. package/dist/db/migrations.js.map +1 -0
  18. package/dist/db/schema.d.ts +2253 -0
  19. package/dist/db/schema.d.ts.map +1 -0
  20. package/dist/db/schema.js +195 -0
  21. package/dist/db/schema.js.map +1 -0
  22. package/dist/foundation.d.ts +26 -0
  23. package/dist/foundation.d.ts.map +1 -0
  24. package/dist/foundation.js +15 -0
  25. package/dist/foundation.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +413 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/uuidv7.d.ts +10 -0
  31. package/dist/lib/uuidv7.d.ts.map +1 -0
  32. package/dist/lib/uuidv7.js +33 -0
  33. package/dist/lib/uuidv7.js.map +1 -0
  34. package/dist/memory/contracts.d.ts +42 -0
  35. package/dist/memory/contracts.d.ts.map +1 -0
  36. package/dist/memory/contracts.js +2 -0
  37. package/dist/memory/contracts.js.map +1 -0
  38. package/dist/memory/embeddings.d.ts +4 -0
  39. package/dist/memory/embeddings.d.ts.map +1 -0
  40. package/dist/memory/embeddings.js +26 -0
  41. package/dist/memory/embeddings.js.map +1 -0
  42. package/dist/memory/service.d.ts +17 -0
  43. package/dist/memory/service.d.ts.map +1 -0
  44. package/dist/memory/service.js +82 -0
  45. package/dist/memory/service.js.map +1 -0
  46. package/dist/memory/sqlite-backend.d.ts +11 -0
  47. package/dist/memory/sqlite-backend.d.ts.map +1 -0
  48. package/dist/memory/sqlite-backend.js +68 -0
  49. package/dist/memory/sqlite-backend.js.map +1 -0
  50. package/dist/plugins/contracts.d.ts +11 -0
  51. package/dist/plugins/contracts.d.ts.map +1 -0
  52. package/dist/plugins/contracts.js +2 -0
  53. package/dist/plugins/contracts.js.map +1 -0
  54. package/dist/providers/claude-code-provider.d.ts +39 -0
  55. package/dist/providers/claude-code-provider.d.ts.map +1 -0
  56. package/dist/providers/claude-code-provider.js +322 -0
  57. package/dist/providers/claude-code-provider.js.map +1 -0
  58. package/dist/providers/codex-provider.d.ts +51 -0
  59. package/dist/providers/codex-provider.d.ts.map +1 -0
  60. package/dist/providers/codex-provider.js +826 -0
  61. package/dist/providers/codex-provider.js.map +1 -0
  62. package/dist/providers/contracts.d.ts +167 -0
  63. package/dist/providers/contracts.d.ts.map +1 -0
  64. package/dist/providers/contracts.js +13 -0
  65. package/dist/providers/contracts.js.map +1 -0
  66. package/dist/providers/index.d.ts +6 -0
  67. package/dist/providers/index.d.ts.map +1 -0
  68. package/dist/providers/index.js +5 -0
  69. package/dist/providers/index.js.map +1 -0
  70. package/dist/providers/jait-provider.d.ts +23 -0
  71. package/dist/providers/jait-provider.d.ts.map +1 -0
  72. package/dist/providers/jait-provider.js +67 -0
  73. package/dist/providers/jait-provider.js.map +1 -0
  74. package/dist/providers/registry.d.ts +39 -0
  75. package/dist/providers/registry.d.ts.map +1 -0
  76. package/dist/providers/registry.js +64 -0
  77. package/dist/providers/registry.js.map +1 -0
  78. package/dist/pty-broker-client.d.ts +46 -0
  79. package/dist/pty-broker-client.d.ts.map +1 -0
  80. package/dist/pty-broker-client.js +142 -0
  81. package/dist/pty-broker-client.js.map +1 -0
  82. package/dist/routes/auth.d.ts +6 -0
  83. package/dist/routes/auth.d.ts.map +1 -0
  84. package/dist/routes/auth.js +236 -0
  85. package/dist/routes/auth.js.map +1 -0
  86. package/dist/routes/chat.d.ts +32 -0
  87. package/dist/routes/chat.d.ts.map +1 -0
  88. package/dist/routes/chat.js +1503 -0
  89. package/dist/routes/chat.js.map +1 -0
  90. package/dist/routes/consent.d.ts +10 -0
  91. package/dist/routes/consent.d.ts.map +1 -0
  92. package/dist/routes/consent.js +127 -0
  93. package/dist/routes/consent.js.map +1 -0
  94. package/dist/routes/filesystem.d.ts +14 -0
  95. package/dist/routes/filesystem.d.ts.map +1 -0
  96. package/dist/routes/filesystem.js +152 -0
  97. package/dist/routes/filesystem.js.map +1 -0
  98. package/dist/routes/git.d.ts +17 -0
  99. package/dist/routes/git.d.ts.map +1 -0
  100. package/dist/routes/git.js +213 -0
  101. package/dist/routes/git.js.map +1 -0
  102. package/dist/routes/health.d.ts +7 -0
  103. package/dist/routes/health.d.ts.map +1 -0
  104. package/dist/routes/health.js +21 -0
  105. package/dist/routes/health.js.map +1 -0
  106. package/dist/routes/hooks.d.ts +9 -0
  107. package/dist/routes/hooks.d.ts.map +1 -0
  108. package/dist/routes/hooks.js +22 -0
  109. package/dist/routes/hooks.js.map +1 -0
  110. package/dist/routes/jobs.d.ts +5 -0
  111. package/dist/routes/jobs.d.ts.map +1 -0
  112. package/dist/routes/jobs.js +333 -0
  113. package/dist/routes/jobs.js.map +1 -0
  114. package/dist/routes/mcp-server.d.ts +23 -0
  115. package/dist/routes/mcp-server.d.ts.map +1 -0
  116. package/dist/routes/mcp-server.js +177 -0
  117. package/dist/routes/mcp-server.js.map +1 -0
  118. package/dist/routes/mobile.d.ts +12 -0
  119. package/dist/routes/mobile.d.ts.map +1 -0
  120. package/dist/routes/mobile.js +64 -0
  121. package/dist/routes/mobile.js.map +1 -0
  122. package/dist/routes/network.d.ts +3 -0
  123. package/dist/routes/network.d.ts.map +1 -0
  124. package/dist/routes/network.js +367 -0
  125. package/dist/routes/network.js.map +1 -0
  126. package/dist/routes/repositories.d.ts +18 -0
  127. package/dist/routes/repositories.d.ts.map +1 -0
  128. package/dist/routes/repositories.js +90 -0
  129. package/dist/routes/repositories.js.map +1 -0
  130. package/dist/routes/screen-share.d.ts +17 -0
  131. package/dist/routes/screen-share.d.ts.map +1 -0
  132. package/dist/routes/screen-share.js +92 -0
  133. package/dist/routes/screen-share.js.map +1 -0
  134. package/dist/routes/sessions.d.ts +18 -0
  135. package/dist/routes/sessions.d.ts.map +1 -0
  136. package/dist/routes/sessions.js +169 -0
  137. package/dist/routes/sessions.js.map +1 -0
  138. package/dist/routes/terminals.d.ts +15 -0
  139. package/dist/routes/terminals.d.ts.map +1 -0
  140. package/dist/routes/terminals.js +326 -0
  141. package/dist/routes/terminals.js.map +1 -0
  142. package/dist/routes/threads.d.ts +38 -0
  143. package/dist/routes/threads.d.ts.map +1 -0
  144. package/dist/routes/threads.js +488 -0
  145. package/dist/routes/threads.js.map +1 -0
  146. package/dist/routes/trust.d.ts +9 -0
  147. package/dist/routes/trust.d.ts.map +1 -0
  148. package/dist/routes/trust.js +25 -0
  149. package/dist/routes/trust.js.map +1 -0
  150. package/dist/routes/voice.d.ts +5 -0
  151. package/dist/routes/voice.d.ts.map +1 -0
  152. package/dist/routes/voice.js +37 -0
  153. package/dist/routes/voice.js.map +1 -0
  154. package/dist/routes/workspace.d.ts +13 -0
  155. package/dist/routes/workspace.d.ts.map +1 -0
  156. package/dist/routes/workspace.js +275 -0
  157. package/dist/routes/workspace.js.map +1 -0
  158. package/dist/scheduler/contracts.d.ts +15 -0
  159. package/dist/scheduler/contracts.d.ts.map +1 -0
  160. package/dist/scheduler/contracts.js +2 -0
  161. package/dist/scheduler/contracts.js.map +1 -0
  162. package/dist/scheduler/hooks.d.ts +20 -0
  163. package/dist/scheduler/hooks.d.ts.map +1 -0
  164. package/dist/scheduler/hooks.js +78 -0
  165. package/dist/scheduler/hooks.js.map +1 -0
  166. package/dist/scheduler/service.d.ts +65 -0
  167. package/dist/scheduler/service.d.ts.map +1 -0
  168. package/dist/scheduler/service.js +188 -0
  169. package/dist/scheduler/service.js.map +1 -0
  170. package/dist/security/consent-executor.d.ts +48 -0
  171. package/dist/security/consent-executor.d.ts.map +1 -0
  172. package/dist/security/consent-executor.js +158 -0
  173. package/dist/security/consent-executor.js.map +1 -0
  174. package/dist/security/consent-manager.d.ts +105 -0
  175. package/dist/security/consent-manager.d.ts.map +1 -0
  176. package/dist/security/consent-manager.js +227 -0
  177. package/dist/security/consent-manager.js.map +1 -0
  178. package/dist/security/contracts.d.ts +31 -0
  179. package/dist/security/contracts.d.ts.map +1 -0
  180. package/dist/security/contracts.js +2 -0
  181. package/dist/security/contracts.js.map +1 -0
  182. package/dist/security/http-auth.d.ts +10 -0
  183. package/dist/security/http-auth.d.ts.map +1 -0
  184. package/dist/security/http-auth.js +48 -0
  185. package/dist/security/http-auth.js.map +1 -0
  186. package/dist/security/index.d.ts +10 -0
  187. package/dist/security/index.d.ts.map +1 -0
  188. package/dist/security/index.js +9 -0
  189. package/dist/security/index.js.map +1 -0
  190. package/dist/security/path-guard.d.ts +40 -0
  191. package/dist/security/path-guard.d.ts.map +1 -0
  192. package/dist/security/path-guard.js +125 -0
  193. package/dist/security/path-guard.js.map +1 -0
  194. package/dist/security/sandbox-manager.d.ts +43 -0
  195. package/dist/security/sandbox-manager.d.ts.map +1 -0
  196. package/dist/security/sandbox-manager.js +110 -0
  197. package/dist/security/sandbox-manager.js.map +1 -0
  198. package/dist/security/ssrf-guard.d.ts +11 -0
  199. package/dist/security/ssrf-guard.d.ts.map +1 -0
  200. package/dist/security/ssrf-guard.js +59 -0
  201. package/dist/security/ssrf-guard.js.map +1 -0
  202. package/dist/security/tool-permissions.d.ts +61 -0
  203. package/dist/security/tool-permissions.d.ts.map +1 -0
  204. package/dist/security/tool-permissions.js +105 -0
  205. package/dist/security/tool-permissions.js.map +1 -0
  206. package/dist/security/tool-profiles.d.ts +23 -0
  207. package/dist/security/tool-profiles.d.ts.map +1 -0
  208. package/dist/security/tool-profiles.js +106 -0
  209. package/dist/security/tool-profiles.js.map +1 -0
  210. package/dist/security/trust-engine.d.ts +61 -0
  211. package/dist/security/trust-engine.d.ts.map +1 -0
  212. package/dist/security/trust-engine.js +192 -0
  213. package/dist/security/trust-engine.js.map +1 -0
  214. package/dist/server.d.ts +54 -0
  215. package/dist/server.d.ts.map +1 -0
  216. package/dist/server.js +188 -0
  217. package/dist/server.js.map +1 -0
  218. package/dist/services/audit.d.ts +60 -0
  219. package/dist/services/audit.d.ts.map +1 -0
  220. package/dist/services/audit.js +58 -0
  221. package/dist/services/audit.js.map +1 -0
  222. package/dist/services/device-registry.d.ts +15 -0
  223. package/dist/services/device-registry.d.ts.map +1 -0
  224. package/dist/services/device-registry.js +32 -0
  225. package/dist/services/device-registry.js.map +1 -0
  226. package/dist/services/git.d.ts +168 -0
  227. package/dist/services/git.d.ts.map +1 -0
  228. package/dist/services/git.js +957 -0
  229. package/dist/services/git.js.map +1 -0
  230. package/dist/services/repositories.d.ts +32 -0
  231. package/dist/services/repositories.d.ts.map +1 -0
  232. package/dist/services/repositories.js +70 -0
  233. package/dist/services/repositories.js.map +1 -0
  234. package/dist/services/session-state.d.ts +20 -0
  235. package/dist/services/session-state.d.ts.map +1 -0
  236. package/dist/services/session-state.js +89 -0
  237. package/dist/services/session-state.js.map +1 -0
  238. package/dist/services/sessions.d.ts +68 -0
  239. package/dist/services/sessions.d.ts.map +1 -0
  240. package/dist/services/sessions.js +136 -0
  241. package/dist/services/sessions.js.map +1 -0
  242. package/dist/services/thread-title.d.ts +23 -0
  243. package/dist/services/thread-title.d.ts.map +1 -0
  244. package/dist/services/thread-title.js +141 -0
  245. package/dist/services/thread-title.js.map +1 -0
  246. package/dist/services/threads.d.ts +64 -0
  247. package/dist/services/threads.d.ts.map +1 -0
  248. package/dist/services/threads.js +202 -0
  249. package/dist/services/threads.js.map +1 -0
  250. package/dist/services/users.d.ts +39 -0
  251. package/dist/services/users.d.ts.map +1 -0
  252. package/dist/services/users.js +203 -0
  253. package/dist/services/users.js.map +1 -0
  254. package/dist/sessions/contracts.d.ts +14 -0
  255. package/dist/sessions/contracts.d.ts.map +1 -0
  256. package/dist/sessions/contracts.js +2 -0
  257. package/dist/sessions/contracts.js.map +1 -0
  258. package/dist/surfaces/browser.d.ts +65 -0
  259. package/dist/surfaces/browser.d.ts.map +1 -0
  260. package/dist/surfaces/browser.js +615 -0
  261. package/dist/surfaces/browser.js.map +1 -0
  262. package/dist/surfaces/contracts.d.ts +34 -0
  263. package/dist/surfaces/contracts.d.ts.map +1 -0
  264. package/dist/surfaces/contracts.js +2 -0
  265. package/dist/surfaces/contracts.js.map +1 -0
  266. package/dist/surfaces/filesystem.d.ts +76 -0
  267. package/dist/surfaces/filesystem.d.ts.map +1 -0
  268. package/dist/surfaces/filesystem.js +245 -0
  269. package/dist/surfaces/filesystem.js.map +1 -0
  270. package/dist/surfaces/index.d.ts +6 -0
  271. package/dist/surfaces/index.d.ts.map +1 -0
  272. package/dist/surfaces/index.js +5 -0
  273. package/dist/surfaces/index.js.map +1 -0
  274. package/dist/surfaces/registry.d.ts +24 -0
  275. package/dist/surfaces/registry.d.ts.map +1 -0
  276. package/dist/surfaces/registry.js +59 -0
  277. package/dist/surfaces/registry.js.map +1 -0
  278. package/dist/surfaces/terminal.d.ts +76 -0
  279. package/dist/surfaces/terminal.d.ts.map +1 -0
  280. package/dist/surfaces/terminal.js +271 -0
  281. package/dist/surfaces/terminal.js.map +1 -0
  282. package/dist/tools/agent-loop.d.ts +302 -0
  283. package/dist/tools/agent-loop.d.ts.map +1 -0
  284. package/dist/tools/agent-loop.js +918 -0
  285. package/dist/tools/agent-loop.js.map +1 -0
  286. package/dist/tools/agent-tools.d.ts +39 -0
  287. package/dist/tools/agent-tools.d.ts.map +1 -0
  288. package/dist/tools/agent-tools.js +263 -0
  289. package/dist/tools/agent-tools.js.map +1 -0
  290. package/dist/tools/browser-tools.d.ts +38 -0
  291. package/dist/tools/browser-tools.d.ts.map +1 -0
  292. package/dist/tools/browser-tools.js +725 -0
  293. package/dist/tools/browser-tools.js.map +1 -0
  294. package/dist/tools/chat-modes.d.ts +75 -0
  295. package/dist/tools/chat-modes.d.ts.map +1 -0
  296. package/dist/tools/chat-modes.js +228 -0
  297. package/dist/tools/chat-modes.js.map +1 -0
  298. package/dist/tools/contracts.d.ts +69 -0
  299. package/dist/tools/contracts.d.ts.map +1 -0
  300. package/dist/tools/contracts.js +2 -0
  301. package/dist/tools/contracts.js.map +1 -0
  302. package/dist/tools/core/agent.d.ts +31 -0
  303. package/dist/tools/core/agent.d.ts.map +1 -0
  304. package/dist/tools/core/agent.js +65 -0
  305. package/dist/tools/core/agent.js.map +1 -0
  306. package/dist/tools/core/edit.d.ts +30 -0
  307. package/dist/tools/core/edit.d.ts.map +1 -0
  308. package/dist/tools/core/edit.js +109 -0
  309. package/dist/tools/core/edit.js.map +1 -0
  310. package/dist/tools/core/execute.d.ts +36 -0
  311. package/dist/tools/core/execute.d.ts.map +1 -0
  312. package/dist/tools/core/execute.js +81 -0
  313. package/dist/tools/core/execute.js.map +1 -0
  314. package/dist/tools/core/get-fs.d.ts +32 -0
  315. package/dist/tools/core/get-fs.d.ts.map +1 -0
  316. package/dist/tools/core/get-fs.js +143 -0
  317. package/dist/tools/core/get-fs.js.map +1 -0
  318. package/dist/tools/core/index.d.ts +26 -0
  319. package/dist/tools/core/index.d.ts.map +1 -0
  320. package/dist/tools/core/index.js +26 -0
  321. package/dist/tools/core/index.js.map +1 -0
  322. package/dist/tools/core/jait.d.ts +60 -0
  323. package/dist/tools/core/jait.d.ts.map +1 -0
  324. package/dist/tools/core/jait.js +256 -0
  325. package/dist/tools/core/jait.js.map +1 -0
  326. package/dist/tools/core/read.d.ts +26 -0
  327. package/dist/tools/core/read.d.ts.map +1 -0
  328. package/dist/tools/core/read.js +118 -0
  329. package/dist/tools/core/read.js.map +1 -0
  330. package/dist/tools/core/search.d.ts +34 -0
  331. package/dist/tools/core/search.d.ts.map +1 -0
  332. package/dist/tools/core/search.js +187 -0
  333. package/dist/tools/core/search.js.map +1 -0
  334. package/dist/tools/core/todo.d.ts +38 -0
  335. package/dist/tools/core/todo.d.ts.map +1 -0
  336. package/dist/tools/core/todo.js +116 -0
  337. package/dist/tools/core/todo.js.map +1 -0
  338. package/dist/tools/core/web.d.ts +34 -0
  339. package/dist/tools/core/web.d.ts.map +1 -0
  340. package/dist/tools/core/web.js +120 -0
  341. package/dist/tools/core/web.js.map +1 -0
  342. package/dist/tools/cron-tools.d.ts +7 -0
  343. package/dist/tools/cron-tools.d.ts.map +1 -0
  344. package/dist/tools/cron-tools.js +116 -0
  345. package/dist/tools/cron-tools.js.map +1 -0
  346. package/dist/tools/file-tools.d.ts +32 -0
  347. package/dist/tools/file-tools.d.ts.map +1 -0
  348. package/dist/tools/file-tools.js +178 -0
  349. package/dist/tools/file-tools.js.map +1 -0
  350. package/dist/tools/gateway-tools.d.ts +15 -0
  351. package/dist/tools/gateway-tools.d.ts.map +1 -0
  352. package/dist/tools/gateway-tools.js +39 -0
  353. package/dist/tools/gateway-tools.js.map +1 -0
  354. package/dist/tools/index.d.ts +57 -0
  355. package/dist/tools/index.d.ts.map +1 -0
  356. package/dist/tools/index.js +170 -0
  357. package/dist/tools/index.js.map +1 -0
  358. package/dist/tools/mcp-bridge.d.ts +111 -0
  359. package/dist/tools/mcp-bridge.d.ts.map +1 -0
  360. package/dist/tools/mcp-bridge.js +166 -0
  361. package/dist/tools/mcp-bridge.js.map +1 -0
  362. package/dist/tools/memory-tools.d.ts +19 -0
  363. package/dist/tools/memory-tools.d.ts.map +1 -0
  364. package/dist/tools/memory-tools.js +78 -0
  365. package/dist/tools/memory-tools.js.map +1 -0
  366. package/dist/tools/meta-tools.d.ts +25 -0
  367. package/dist/tools/meta-tools.d.ts.map +1 -0
  368. package/dist/tools/meta-tools.js +125 -0
  369. package/dist/tools/meta-tools.js.map +1 -0
  370. package/dist/tools/network-tools.d.ts +21 -0
  371. package/dist/tools/network-tools.d.ts.map +1 -0
  372. package/dist/tools/network-tools.js +189 -0
  373. package/dist/tools/network-tools.js.map +1 -0
  374. package/dist/tools/os-tools.d.ts +18 -0
  375. package/dist/tools/os-tools.d.ts.map +1 -0
  376. package/dist/tools/os-tools.js +210 -0
  377. package/dist/tools/os-tools.js.map +1 -0
  378. package/dist/tools/prompts/claude-prompt.d.ts +8 -0
  379. package/dist/tools/prompts/claude-prompt.d.ts.map +1 -0
  380. package/dist/tools/prompts/claude-prompt.js +228 -0
  381. package/dist/tools/prompts/claude-prompt.js.map +1 -0
  382. package/dist/tools/prompts/default-openai-prompt.d.ts +8 -0
  383. package/dist/tools/prompts/default-openai-prompt.d.ts.map +1 -0
  384. package/dist/tools/prompts/default-openai-prompt.js +67 -0
  385. package/dist/tools/prompts/default-openai-prompt.js.map +1 -0
  386. package/dist/tools/prompts/default-prompt.d.ts +7 -0
  387. package/dist/tools/prompts/default-prompt.d.ts.map +1 -0
  388. package/dist/tools/prompts/default-prompt.js +50 -0
  389. package/dist/tools/prompts/default-prompt.js.map +1 -0
  390. package/dist/tools/prompts/gemini-prompt.d.ts +8 -0
  391. package/dist/tools/prompts/gemini-prompt.d.ts.map +1 -0
  392. package/dist/tools/prompts/gemini-prompt.js +118 -0
  393. package/dist/tools/prompts/gemini-prompt.js.map +1 -0
  394. package/dist/tools/prompts/gpt5-codex-prompt.d.ts +8 -0
  395. package/dist/tools/prompts/gpt5-codex-prompt.d.ts.map +1 -0
  396. package/dist/tools/prompts/gpt5-codex-prompt.js +72 -0
  397. package/dist/tools/prompts/gpt5-codex-prompt.js.map +1 -0
  398. package/dist/tools/prompts/gpt5-prompt.d.ts +8 -0
  399. package/dist/tools/prompts/gpt5-prompt.d.ts.map +1 -0
  400. package/dist/tools/prompts/gpt5-prompt.js +177 -0
  401. package/dist/tools/prompts/gpt5-prompt.js.map +1 -0
  402. package/dist/tools/prompts/gpt51-prompt.d.ts +8 -0
  403. package/dist/tools/prompts/gpt51-prompt.d.ts.map +1 -0
  404. package/dist/tools/prompts/gpt51-prompt.js +178 -0
  405. package/dist/tools/prompts/gpt51-prompt.js.map +1 -0
  406. package/dist/tools/prompts/gpt52-prompt.d.ts +8 -0
  407. package/dist/tools/prompts/gpt52-prompt.d.ts.map +1 -0
  408. package/dist/tools/prompts/gpt52-prompt.js +198 -0
  409. package/dist/tools/prompts/gpt52-prompt.js.map +1 -0
  410. package/dist/tools/prompts/index.d.ts +22 -0
  411. package/dist/tools/prompts/index.d.ts.map +1 -0
  412. package/dist/tools/prompts/index.js +23 -0
  413. package/dist/tools/prompts/index.js.map +1 -0
  414. package/dist/tools/prompts/prompt-registry.d.ts +44 -0
  415. package/dist/tools/prompts/prompt-registry.d.ts.map +1 -0
  416. package/dist/tools/prompts/prompt-registry.js +60 -0
  417. package/dist/tools/prompts/prompt-registry.js.map +1 -0
  418. package/dist/tools/prompts/shared-sections.d.ts +28 -0
  419. package/dist/tools/prompts/shared-sections.d.ts.map +1 -0
  420. package/dist/tools/prompts/shared-sections.js +111 -0
  421. package/dist/tools/prompts/shared-sections.js.map +1 -0
  422. package/dist/tools/prompts/xai-prompt.d.ts +8 -0
  423. package/dist/tools/prompts/xai-prompt.d.ts.map +1 -0
  424. package/dist/tools/prompts/xai-prompt.js +68 -0
  425. package/dist/tools/prompts/xai-prompt.js.map +1 -0
  426. package/dist/tools/redeploy-tools.d.ts +30 -0
  427. package/dist/tools/redeploy-tools.d.ts.map +1 -0
  428. package/dist/tools/redeploy-tools.js +191 -0
  429. package/dist/tools/redeploy-tools.js.map +1 -0
  430. package/dist/tools/registry.d.ts +51 -0
  431. package/dist/tools/registry.d.ts.map +1 -0
  432. package/dist/tools/registry.js +148 -0
  433. package/dist/tools/registry.js.map +1 -0
  434. package/dist/tools/screen-share-tools.d.ts +31 -0
  435. package/dist/tools/screen-share-tools.d.ts.map +1 -0
  436. package/dist/tools/screen-share-tools.js +183 -0
  437. package/dist/tools/screen-share-tools.js.map +1 -0
  438. package/dist/tools/surface-tools.d.ts +23 -0
  439. package/dist/tools/surface-tools.d.ts.map +1 -0
  440. package/dist/tools/surface-tools.js +99 -0
  441. package/dist/tools/surface-tools.js.map +1 -0
  442. package/dist/tools/terminal-tools.d.ts +37 -0
  443. package/dist/tools/terminal-tools.d.ts.map +1 -0
  444. package/dist/tools/terminal-tools.js +448 -0
  445. package/dist/tools/terminal-tools.js.map +1 -0
  446. package/dist/tools/thread-tools.d.ts +61 -0
  447. package/dist/tools/thread-tools.d.ts.map +1 -0
  448. package/dist/tools/thread-tools.js +484 -0
  449. package/dist/tools/thread-tools.js.map +1 -0
  450. package/dist/tools/token-estimator.d.ts +55 -0
  451. package/dist/tools/token-estimator.d.ts.map +1 -0
  452. package/dist/tools/token-estimator.js +82 -0
  453. package/dist/tools/token-estimator.js.map +1 -0
  454. package/dist/tools/tool-names.d.ts +64 -0
  455. package/dist/tools/tool-names.d.ts.map +1 -0
  456. package/dist/tools/tool-names.js +76 -0
  457. package/dist/tools/tool-names.js.map +1 -0
  458. package/dist/tools/validate.d.ts +27 -0
  459. package/dist/tools/validate.d.ts.map +1 -0
  460. package/dist/tools/validate.js +99 -0
  461. package/dist/tools/validate.js.map +1 -0
  462. package/dist/tools/voice-tools.d.ts +8 -0
  463. package/dist/tools/voice-tools.d.ts.map +1 -0
  464. package/dist/tools/voice-tools.js +32 -0
  465. package/dist/tools/voice-tools.js.map +1 -0
  466. package/dist/voice/service.d.ts +42 -0
  467. package/dist/voice/service.d.ts.map +1 -0
  468. package/dist/voice/service.js +75 -0
  469. package/dist/voice/service.js.map +1 -0
  470. package/dist/ws.d.ts +90 -0
  471. package/dist/ws.d.ts.map +1 -0
  472. package/dist/ws.js +562 -0
  473. package/dist/ws.js.map +1 -0
  474. package/package.json +61 -0
@@ -0,0 +1,615 @@
1
+ import { spawn } from "node:child_process";
2
+ import { once } from "node:events";
3
+ import { existsSync } from "node:fs";
4
+ import { mkdir } from "node:fs/promises";
5
+ import { dirname, resolve } from "node:path";
6
+ import { createInterface } from "node:readline";
7
+ import { fileURLToPath } from "node:url";
8
+ const DEFAULT_BROWSER_LAUNCH_TIMEOUT_MS = 45_000;
9
+ const DEFAULT_NODE_BRIDGE_READY_TIMEOUT_MS = 60_000;
10
+ const DEFAULT_NODE_BRIDGE_COMMAND_TIMEOUT_MS = 60_000;
11
+ export class BrowserSurface {
12
+ id;
13
+ options;
14
+ type = "browser";
15
+ _state = "idle";
16
+ _sessionId = null;
17
+ _startedAt = null;
18
+ _lastUrl = "";
19
+ _lastTitle = "";
20
+ _actionCount = 0;
21
+ driver = null;
22
+ onOutput;
23
+ onStateChange;
24
+ constructor(id, options = {}) {
25
+ this.id = id;
26
+ this.options = options;
27
+ }
28
+ get state() {
29
+ return this._state;
30
+ }
31
+ get sessionId() {
32
+ return this._sessionId;
33
+ }
34
+ async start(input) {
35
+ if (this._state === "running")
36
+ return;
37
+ this._setState("starting");
38
+ this._sessionId = input.sessionId;
39
+ this._startedAt = new Date().toISOString();
40
+ try {
41
+ const factory = this.options.driverFactory ?? createPlaywrightDriver;
42
+ this.driver = await factory();
43
+ this._setState("running");
44
+ }
45
+ catch (err) {
46
+ this._setState("error");
47
+ throw err;
48
+ }
49
+ }
50
+ async stop(_input) {
51
+ this._setState("stopping");
52
+ await this.driver?.close();
53
+ this.driver = null;
54
+ this._setState("stopped");
55
+ }
56
+ snapshot() {
57
+ return {
58
+ id: this.id,
59
+ type: this.type,
60
+ state: this._state,
61
+ sessionId: this._sessionId ?? "",
62
+ startedAt: this._startedAt ?? undefined,
63
+ metadata: {
64
+ currentUrl: this._lastUrl || null,
65
+ title: this._lastTitle || null,
66
+ actionCount: this._actionCount,
67
+ },
68
+ };
69
+ }
70
+ async navigate(url, signal) {
71
+ const driver = this.requireDriver();
72
+ await driver.navigate(url, signal);
73
+ this._actionCount++;
74
+ const snap = await driver.snapshot(signal);
75
+ this.captureSnapshotMeta(snap);
76
+ this.onOutput?.(`navigate ${snap.url}`);
77
+ return snap;
78
+ }
79
+ async describe(signal) {
80
+ const snap = await this.requireDriver().snapshot(signal);
81
+ this.captureSnapshotMeta(snap);
82
+ const lines = [
83
+ `URL: ${snap.url}`,
84
+ `Title: ${snap.title || "(untitled)"}`,
85
+ "",
86
+ "Text:",
87
+ snap.text.trim() || "(no textual content)",
88
+ "",
89
+ "Interactive elements:",
90
+ ...snap.elements.slice(0, 30).map((el, i) => {
91
+ const parts = [el.role ?? "element", el.name, el.text].filter(Boolean).join(" — ");
92
+ return `${i + 1}. ${parts || "unnamed"}${el.selector ? ` [${el.selector}]` : ""}`;
93
+ }),
94
+ ];
95
+ return lines.join("\n").trim();
96
+ }
97
+ async click(selector, signal) {
98
+ await this.requireDriver().click(selector, signal);
99
+ this._actionCount++;
100
+ }
101
+ async typeText(selector, text, signal) {
102
+ await this.requireDriver().typeText(selector, text, signal);
103
+ this._actionCount++;
104
+ }
105
+ async scroll(x, y, signal) {
106
+ await this.requireDriver().scroll(x, y, signal);
107
+ this._actionCount++;
108
+ }
109
+ async select(selector, value, signal) {
110
+ await this.requireDriver().select(selector, value, signal);
111
+ this._actionCount++;
112
+ }
113
+ async waitFor(selector, timeoutMs, signal) {
114
+ await this.requireDriver().waitFor(selector, timeoutMs, signal);
115
+ this._actionCount++;
116
+ }
117
+ async screenshot(path, signal) {
118
+ this._actionCount++;
119
+ return this.requireDriver().screenshot(path, signal);
120
+ }
121
+ captureSnapshotMeta(snap) {
122
+ this._lastUrl = snap.url;
123
+ this._lastTitle = snap.title;
124
+ }
125
+ requireDriver() {
126
+ if (!this.driver || this._state !== "running") {
127
+ throw new Error("Browser surface is not running");
128
+ }
129
+ return this.driver;
130
+ }
131
+ _setState(next) {
132
+ this._state = next;
133
+ this.onStateChange?.(next);
134
+ }
135
+ }
136
+ export class BrowserSurfaceFactory {
137
+ options;
138
+ type = "browser";
139
+ constructor(options = {}) {
140
+ this.options = options;
141
+ }
142
+ create(id) {
143
+ return new BrowserSurface(id, this.options);
144
+ }
145
+ }
146
+ async function createPlaywrightDriver() {
147
+ const runtime = resolveBrowserRuntimeMode();
148
+ if (runtime === "node-bridge") {
149
+ return createNodeBridgePlaywrightDriver();
150
+ }
151
+ try {
152
+ return await createInProcessPlaywrightDriver();
153
+ }
154
+ catch (err) {
155
+ if (runtime === "auto" && isBunWindowsRuntime() && shouldFallbackToNodeBridge(err)) {
156
+ return createNodeBridgePlaywrightDriver();
157
+ }
158
+ throw err;
159
+ }
160
+ }
161
+ function resolveBrowserRuntimeMode() {
162
+ const configured = process.env["BROWSER_RUNTIME"]?.trim().toLowerCase();
163
+ if (configured === "in-process")
164
+ return "in-process";
165
+ if (configured === "node" || configured === "node-bridge")
166
+ return "node-bridge";
167
+ if (isBunWindowsRuntime())
168
+ return "node-bridge";
169
+ return "auto";
170
+ }
171
+ function isBunWindowsRuntime() {
172
+ return process.platform === "win32" && Boolean(process.versions.bun);
173
+ }
174
+ function shouldFallbackToNodeBridge(err) {
175
+ const message = extractErrorMessage(err).toLowerCase();
176
+ return message.includes("launch: timeout")
177
+ || message.includes("playwright browser launch failed")
178
+ || message.includes("failed to create playwright browser context");
179
+ }
180
+ async function createInProcessPlaywrightDriver() {
181
+ // Optional runtime dependency: keep static imports out so gateway can still
182
+ // boot in environments that do not need browser automation.
183
+ const loadPlaywright = new Function("return import('playwright')");
184
+ let mod;
185
+ try {
186
+ mod = await loadPlaywright();
187
+ }
188
+ catch {
189
+ throw new Error("Playwright is not installed. Install it in @jait/gateway: `bun add playwright --cwd packages/gateway`");
190
+ }
191
+ const chromium = mod.chromium;
192
+ if (!chromium) {
193
+ throw new Error("Failed to load Playwright chromium driver.");
194
+ }
195
+ const headless = process.env["BROWSER_HEADLESS"] !== "false";
196
+ const launchTimeoutMs = parsePositiveIntegerEnv(process.env["BROWSER_LAUNCH_TIMEOUT_MS"], DEFAULT_BROWSER_LAUNCH_TIMEOUT_MS);
197
+ const launchStrategies = buildBrowserLaunchStrategies(headless, launchTimeoutMs);
198
+ const browser = await launchBrowserWithFallback(chromium, launchStrategies);
199
+ let context = null;
200
+ let page = null;
201
+ try {
202
+ context = await browser.newContext({
203
+ ignoreHTTPSErrors: process.env["BROWSER_IGNORE_HTTPS_ERRORS"] === "true",
204
+ });
205
+ page = await context.newPage();
206
+ }
207
+ catch (err) {
208
+ await browser.close().catch(() => { });
209
+ throw err;
210
+ }
211
+ if (!context || !page) {
212
+ await browser.close().catch(() => { });
213
+ throw new Error("Failed to create Playwright browser context.");
214
+ }
215
+ const activeContext = context;
216
+ const activePage = page;
217
+ /**
218
+ * Race a Playwright page operation against an AbortSignal.
219
+ * If the signal fires, we call `window.stop()` on the page (cancels in-flight
220
+ * network requests and navigation) and reject with "Cancelled".
221
+ */
222
+ function withSignal(op, signal) {
223
+ if (!signal)
224
+ return op;
225
+ if (signal.aborted)
226
+ return Promise.reject(new Error("Cancelled"));
227
+ return new Promise((resolve, reject) => {
228
+ let settled = false;
229
+ const onAbort = () => {
230
+ if (settled)
231
+ return;
232
+ settled = true;
233
+ // Stop the page's in-flight navigation / network requests
234
+ activePage.evaluate(() => window.stop()).catch(() => { });
235
+ reject(new Error("Cancelled"));
236
+ };
237
+ signal.addEventListener("abort", onAbort, { once: true });
238
+ op.then((v) => { if (!settled) {
239
+ settled = true;
240
+ signal.removeEventListener("abort", onAbort);
241
+ resolve(v);
242
+ } }, (e) => { if (!settled) {
243
+ settled = true;
244
+ signal.removeEventListener("abort", onAbort);
245
+ reject(e);
246
+ } });
247
+ });
248
+ }
249
+ const driver = {
250
+ async navigate(url, signal) {
251
+ await withSignal(activePage.goto(url, { waitUntil: "domcontentloaded", timeout: 30_000 }), signal);
252
+ },
253
+ async click(selector, signal) {
254
+ await withSignal(activePage.click(selector), signal);
255
+ },
256
+ async typeText(selector, text, signal) {
257
+ await withSignal(activePage.fill(selector, text), signal);
258
+ },
259
+ async scroll(x, y, signal) {
260
+ await withSignal(activePage.evaluate(([targetX, targetY]) => window.scrollTo(targetX, targetY), [x, y]), signal);
261
+ },
262
+ async select(selector, value, signal) {
263
+ const selectPage = activePage;
264
+ if (!selectPage.selectOption) {
265
+ throw new Error("Browser driver does not support selectOption.");
266
+ }
267
+ await withSignal(selectPage.selectOption(selector, value), signal);
268
+ },
269
+ async waitFor(selector, timeoutMs, signal) {
270
+ await withSignal(activePage.waitForSelector(selector, { timeout: timeoutMs }), signal);
271
+ },
272
+ async screenshot(path, signal) {
273
+ const outPath = path
274
+ ? resolve(path)
275
+ : resolve(process.cwd(), "artifacts", `browser-${Date.now()}.png`);
276
+ await mkdir(dirname(outPath), { recursive: true });
277
+ await withSignal(activePage.screenshot({ path: outPath, fullPage: true }), signal);
278
+ return outPath;
279
+ },
280
+ async snapshot(signal) {
281
+ return withSignal(activePage.evaluate(() => {
282
+ const normalize = (value) => value.replace(/\s+/g, " ").trim();
283
+ const bodyText = normalize(document.body?.innerText ?? "").slice(0, 12_000);
284
+ const title = document.title || "(untitled)";
285
+ const esc = (raw) => {
286
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function")
287
+ return CSS.escape(raw);
288
+ return raw.replace(/[^a-zA-Z0-9_-]/g, "_");
289
+ };
290
+ const rawElements = Array.from(document.querySelectorAll("a, button, input, textarea, select, [role], [onclick], [tabindex]"));
291
+ const limited = rawElements.slice(0, 60);
292
+ const elements = limited.map((el) => {
293
+ const tag = el.tagName.toLowerCase();
294
+ const role = el.getAttribute("role") ?? tag;
295
+ const name = el.getAttribute("aria-label") ??
296
+ el.getAttribute("name") ??
297
+ el.getAttribute("title") ??
298
+ el.getAttribute("placeholder") ??
299
+ el.innerText?.trim() ??
300
+ "";
301
+ const text = el.innerText?.trim() ?? "";
302
+ const id = el.getAttribute("id");
303
+ const testId = el.getAttribute("data-testid");
304
+ const selector = id
305
+ ? `#${esc(id)}`
306
+ : testId
307
+ ? `${tag}[data-testid="${testId}"]`
308
+ : `${tag}${el.getAttribute("name") ? `[name="${el.getAttribute("name")}"]` : ""}`;
309
+ return {
310
+ role,
311
+ name: normalize(name).slice(0, 200),
312
+ text: normalize(text).slice(0, 200),
313
+ selector,
314
+ };
315
+ });
316
+ return {
317
+ url: window.location.href,
318
+ title,
319
+ text: bodyText,
320
+ elements,
321
+ };
322
+ }), signal);
323
+ },
324
+ async close() {
325
+ await activeContext.close();
326
+ await browser.close();
327
+ },
328
+ };
329
+ return driver;
330
+ }
331
+ async function createNodeBridgePlaywrightDriver() {
332
+ const nodeBinary = process.env["BROWSER_NODE_BINARY"]?.trim() || "node";
333
+ const scriptPath = resolveNodeBridgeScriptPath();
334
+ const launchTimeoutMs = parsePositiveIntegerEnv(process.env["BROWSER_LAUNCH_TIMEOUT_MS"], DEFAULT_BROWSER_LAUNCH_TIMEOUT_MS);
335
+ const readyTimeoutMs = parsePositiveIntegerEnv(process.env["BROWSER_NODE_BRIDGE_READY_TIMEOUT_MS"], Math.max(DEFAULT_NODE_BRIDGE_READY_TIMEOUT_MS, launchTimeoutMs + 15_000));
336
+ const commandTimeoutMs = parsePositiveIntegerEnv(process.env["BROWSER_NODE_BRIDGE_COMMAND_TIMEOUT_MS"], DEFAULT_NODE_BRIDGE_COMMAND_TIMEOUT_MS);
337
+ const child = spawn(nodeBinary, [scriptPath], {
338
+ cwd: process.cwd(),
339
+ env: process.env,
340
+ stdio: ["pipe", "pipe", "pipe"],
341
+ });
342
+ const stdout = child.stdout;
343
+ const stderr = child.stderr;
344
+ const stdin = child.stdin;
345
+ if (!stdout || !stderr || !stdin) {
346
+ child.kill();
347
+ throw new Error("Failed to initialize node bridge stdio streams.");
348
+ }
349
+ const stderrChunks = [];
350
+ stderr.setEncoding("utf8");
351
+ stderr.on("data", (chunk) => {
352
+ if (!chunk)
353
+ return;
354
+ stderrChunks.push(chunk);
355
+ if (stderrChunks.length > 20)
356
+ stderrChunks.shift();
357
+ });
358
+ const pending = new Map();
359
+ let nextId = 1;
360
+ let stopped = false;
361
+ let startResolve = null;
362
+ let startReject = null;
363
+ const startPromise = new Promise((resolve, reject) => {
364
+ startResolve = resolve;
365
+ startReject = reject;
366
+ });
367
+ const readyTimer = setTimeout(() => {
368
+ startReject?.(new Error(`Node bridge startup timed out after ${readyTimeoutMs}ms`));
369
+ }, readyTimeoutMs);
370
+ const rejectAllPending = (reason) => {
371
+ for (const [id, entry] of pending.entries()) {
372
+ clearTimeout(entry.timer);
373
+ pending.delete(id);
374
+ entry.reject(reason);
375
+ }
376
+ };
377
+ const teardownReason = (prefix) => {
378
+ const stderrText = stderrChunks.join("").trim();
379
+ return new Error(stderrText ? `${prefix}: ${stderrText}` : prefix);
380
+ };
381
+ const rl = createInterface({ input: stdout, crlfDelay: Infinity });
382
+ rl.on("line", (line) => {
383
+ let payload;
384
+ try {
385
+ payload = JSON.parse(line);
386
+ }
387
+ catch {
388
+ return;
389
+ }
390
+ if ("event" in payload) {
391
+ if (payload.event === "ready") {
392
+ startResolve?.();
393
+ return;
394
+ }
395
+ if (payload.event === "fatal") {
396
+ const message = payload.error?.trim() || "Node bridge reported fatal error";
397
+ const err = new Error(message);
398
+ startReject?.(err);
399
+ rejectAllPending(err);
400
+ return;
401
+ }
402
+ return;
403
+ }
404
+ if (typeof payload.id !== "number")
405
+ return;
406
+ const entry = pending.get(payload.id);
407
+ if (!entry)
408
+ return;
409
+ pending.delete(payload.id);
410
+ clearTimeout(entry.timer);
411
+ if (payload.ok)
412
+ entry.resolve(payload.result);
413
+ else
414
+ entry.reject(new Error(payload.error?.trim() || "Node bridge command failed"));
415
+ });
416
+ child.on("exit", (code, signal) => {
417
+ stopped = true;
418
+ clearTimeout(readyTimer);
419
+ const reason = teardownReason(`Node bridge exited before completion (code=${code ?? "null"}, signal=${signal ?? "null"})`);
420
+ startReject?.(reason);
421
+ rejectAllPending(reason);
422
+ });
423
+ child.on("error", (err) => {
424
+ stopped = true;
425
+ clearTimeout(readyTimer);
426
+ startReject?.(err);
427
+ rejectAllPending(err);
428
+ });
429
+ try {
430
+ await startPromise;
431
+ }
432
+ catch (err) {
433
+ clearTimeout(readyTimer);
434
+ if (!stopped)
435
+ child.kill();
436
+ throw err;
437
+ }
438
+ clearTimeout(readyTimer);
439
+ const sendCommand = async (method, params, signal) => {
440
+ if (signal?.aborted) {
441
+ throw new Error("Cancelled");
442
+ }
443
+ if (stopped) {
444
+ throw teardownReason("Node bridge process is not running");
445
+ }
446
+ const id = nextId++;
447
+ const op = new Promise((resolveCommand, rejectCommand) => {
448
+ const timer = setTimeout(() => {
449
+ pending.delete(id);
450
+ rejectCommand(new Error(`Node bridge command '${method}' timed out after ${commandTimeoutMs}ms`));
451
+ }, commandTimeoutMs);
452
+ pending.set(id, { resolve: resolveCommand, reject: rejectCommand, timer });
453
+ const payload = JSON.stringify({ id, method, params });
454
+ stdin.write(`${payload}\n`);
455
+ });
456
+ if (!signal)
457
+ return op;
458
+ return new Promise((resolveOp, rejectOp) => {
459
+ let done = false;
460
+ const onAbort = () => {
461
+ if (done)
462
+ return;
463
+ done = true;
464
+ const pendingEntry = pending.get(id);
465
+ if (pendingEntry) {
466
+ clearTimeout(pendingEntry.timer);
467
+ pending.delete(id);
468
+ }
469
+ rejectOp(new Error("Cancelled"));
470
+ };
471
+ signal.addEventListener("abort", onAbort, { once: true });
472
+ op.then((value) => {
473
+ if (done)
474
+ return;
475
+ done = true;
476
+ signal.removeEventListener("abort", onAbort);
477
+ resolveOp(value);
478
+ }, (error) => {
479
+ if (done)
480
+ return;
481
+ done = true;
482
+ signal.removeEventListener("abort", onAbort);
483
+ rejectOp(error);
484
+ });
485
+ });
486
+ };
487
+ const closeBridge = async () => {
488
+ if (stopped)
489
+ return;
490
+ try {
491
+ await sendCommand("close", {});
492
+ }
493
+ catch {
494
+ child.kill();
495
+ }
496
+ stopped = true;
497
+ child.kill();
498
+ await once(child, "exit").catch(() => { });
499
+ };
500
+ const driver = {
501
+ async navigate(url, signal) {
502
+ await sendCommand("navigate", { url }, signal);
503
+ },
504
+ async click(selector, signal) {
505
+ await sendCommand("click", { selector }, signal);
506
+ },
507
+ async typeText(selector, text, signal) {
508
+ await sendCommand("typeText", { selector, text }, signal);
509
+ },
510
+ async scroll(x, y, signal) {
511
+ await sendCommand("scroll", { x, y }, signal);
512
+ },
513
+ async select(selector, value, signal) {
514
+ await sendCommand("select", { selector, value }, signal);
515
+ },
516
+ async waitFor(selector, timeoutMs, signal) {
517
+ await sendCommand("waitFor", { selector, timeoutMs }, signal);
518
+ },
519
+ async screenshot(path, signal) {
520
+ const result = await sendCommand("screenshot", { path }, signal);
521
+ if (typeof result !== "string") {
522
+ throw new Error("Node bridge returned an invalid screenshot path.");
523
+ }
524
+ return result;
525
+ },
526
+ async snapshot(signal) {
527
+ const result = await sendCommand("snapshot", {}, signal);
528
+ if (!result || typeof result !== "object") {
529
+ throw new Error("Node bridge returned an invalid browser snapshot.");
530
+ }
531
+ return result;
532
+ },
533
+ async close() {
534
+ await closeBridge();
535
+ },
536
+ };
537
+ return driver;
538
+ }
539
+ function resolveNodeBridgeScriptPath() {
540
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
541
+ const candidates = [
542
+ resolve(moduleDir, "playwright-node-bridge.cjs"),
543
+ resolve(process.cwd(), "packages", "gateway", "src", "surfaces", "playwright-node-bridge.cjs"),
544
+ ];
545
+ for (const candidate of candidates) {
546
+ if (existsSync(candidate))
547
+ return candidate;
548
+ }
549
+ throw new Error(`Unable to locate Playwright node bridge script. Looked in: ${candidates.join(", ")}`);
550
+ }
551
+ function parsePositiveIntegerEnv(raw, fallback) {
552
+ if (!raw)
553
+ return fallback;
554
+ const parsed = Number.parseInt(raw, 10);
555
+ if (!Number.isFinite(parsed) || parsed <= 0)
556
+ return fallback;
557
+ return parsed;
558
+ }
559
+ function buildBrowserLaunchStrategies(headless, timeoutMs) {
560
+ const strategies = [];
561
+ const seen = new Set();
562
+ const addStrategy = (label, options) => {
563
+ const key = JSON.stringify(options);
564
+ if (seen.has(key))
565
+ return;
566
+ seen.add(key);
567
+ strategies.push({ label, options });
568
+ };
569
+ const preferredChannel = process.env["BROWSER_CHANNEL"]?.trim();
570
+ if (preferredChannel) {
571
+ addStrategy(`channel=${preferredChannel}`, {
572
+ headless,
573
+ channel: preferredChannel,
574
+ timeout: timeoutMs,
575
+ });
576
+ }
577
+ addStrategy("default", { headless, timeout: timeoutMs });
578
+ const fallbackChannels = parseCsvEnv(process.env["BROWSER_FALLBACK_CHANNELS"], ["chromium", "chrome", "msedge"]);
579
+ for (const channel of fallbackChannels) {
580
+ if (channel === preferredChannel)
581
+ continue;
582
+ addStrategy(`fallback channel=${channel}`, {
583
+ headless,
584
+ channel,
585
+ timeout: timeoutMs,
586
+ });
587
+ }
588
+ return strategies;
589
+ }
590
+ function parseCsvEnv(raw, fallback) {
591
+ const values = (raw ?? "")
592
+ .split(",")
593
+ .map((part) => part.trim())
594
+ .filter(Boolean);
595
+ return values.length > 0 ? values : fallback;
596
+ }
597
+ async function launchBrowserWithFallback(chromium, strategies) {
598
+ const errors = [];
599
+ for (const strategy of strategies) {
600
+ try {
601
+ return await chromium.launch(strategy.options);
602
+ }
603
+ catch (err) {
604
+ errors.push(`${strategy.label}: ${extractErrorMessage(err)}`);
605
+ }
606
+ }
607
+ const summary = errors.length > 0 ? errors.join(" | ") : "No launch strategies configured.";
608
+ throw new Error(`Playwright browser launch failed after ${strategies.length} attempt(s): ${summary}`);
609
+ }
610
+ function extractErrorMessage(err) {
611
+ if (err instanceof Error)
612
+ return err.message;
613
+ return String(err);
614
+ }
615
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/surfaces/browser.ts"],"names":[],"mappings":"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"}