@0xmaxma/claude-gateway 2.0.10 → 2.0.11

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 (345) hide show
  1. package/README.md +15 -0
  2. package/config.template.json +1 -1
  3. package/dist/agent/runner.d.ts +119 -11
  4. package/dist/agent/runner.d.ts.map +1 -1
  5. package/dist/agent/runner.js +58 -8
  6. package/dist/agent/runner.js.map +1 -1
  7. package/dist/api/browser-bindings-router.d.ts +6 -0
  8. package/dist/api/browser-bindings-router.d.ts.map +1 -0
  9. package/dist/api/browser-bindings-router.js +150 -0
  10. package/dist/api/browser-bindings-router.js.map +1 -0
  11. package/dist/api/connectors-router.js +1 -1
  12. package/dist/api/connectors-router.js.map +1 -1
  13. package/dist/api/gateway-router.d.ts.map +1 -1
  14. package/dist/api/gateway-router.js +30 -2
  15. package/dist/api/gateway-router.js.map +1 -1
  16. package/dist/api/jev-router.d.ts +8 -0
  17. package/dist/api/jev-router.d.ts.map +1 -0
  18. package/dist/api/jev-router.js +128 -0
  19. package/dist/api/jev-router.js.map +1 -0
  20. package/dist/api/router.d.ts.map +1 -1
  21. package/dist/api/router.js +53 -6
  22. package/dist/api/router.js.map +1 -1
  23. package/dist/api/voice-router.d.ts.map +1 -1
  24. package/dist/api/voice-router.js +42 -3
  25. package/dist/api/voice-router.js.map +1 -1
  26. package/dist/automation/browser-command.d.ts +79 -0
  27. package/dist/automation/browser-command.d.ts.map +1 -0
  28. package/dist/automation/browser-command.js +118 -0
  29. package/dist/automation/browser-command.js.map +1 -0
  30. package/dist/automation/browser-outcome.d.ts +3 -0
  31. package/dist/automation/browser-outcome.d.ts.map +1 -0
  32. package/dist/automation/browser-outcome.js +78 -0
  33. package/dist/automation/browser-outcome.js.map +1 -0
  34. package/dist/automation/browser-steps.d.ts +33 -0
  35. package/dist/automation/browser-steps.d.ts.map +1 -0
  36. package/dist/automation/browser-steps.js +293 -0
  37. package/dist/automation/browser-steps.js.map +1 -0
  38. package/dist/automation/browser-trace.d.ts +60 -0
  39. package/dist/automation/browser-trace.d.ts.map +1 -0
  40. package/dist/automation/browser-trace.js +24 -0
  41. package/dist/automation/browser-trace.js.map +1 -0
  42. package/dist/automation/browser-use.d.ts +210 -0
  43. package/dist/automation/browser-use.d.ts.map +1 -0
  44. package/dist/automation/browser-use.js +1271 -0
  45. package/dist/automation/browser-use.js.map +1 -0
  46. package/dist/automation/command-speech.d.ts +33 -0
  47. package/dist/automation/command-speech.d.ts.map +1 -0
  48. package/dist/automation/command-speech.js +117 -0
  49. package/dist/automation/command-speech.js.map +1 -0
  50. package/dist/automation/command-steps.d.ts +35 -0
  51. package/dist/automation/command-steps.d.ts.map +1 -0
  52. package/dist/automation/command-steps.js +155 -0
  53. package/dist/automation/command-steps.js.map +1 -0
  54. package/dist/automation/computer-choice-ids.d.ts +7 -0
  55. package/dist/automation/computer-choice-ids.d.ts.map +1 -0
  56. package/dist/automation/computer-choice-ids.js +24 -0
  57. package/dist/automation/computer-choice-ids.js.map +1 -0
  58. package/dist/automation/computer-command.d.ts +126 -0
  59. package/dist/automation/computer-command.d.ts.map +1 -0
  60. package/dist/automation/computer-command.js +313 -0
  61. package/dist/automation/computer-command.js.map +1 -0
  62. package/dist/automation/computer-outcome.d.ts +8 -0
  63. package/dist/automation/computer-outcome.d.ts.map +1 -0
  64. package/dist/automation/computer-outcome.js +82 -0
  65. package/dist/automation/computer-outcome.js.map +1 -0
  66. package/dist/automation/computer-policy.d.ts +84 -0
  67. package/dist/automation/computer-policy.d.ts.map +1 -0
  68. package/dist/automation/computer-policy.js +56 -0
  69. package/dist/automation/computer-policy.js.map +1 -0
  70. package/dist/automation/computer-safety.d.ts +27 -0
  71. package/dist/automation/computer-safety.d.ts.map +1 -0
  72. package/dist/automation/computer-safety.js +47 -0
  73. package/dist/automation/computer-safety.js.map +1 -0
  74. package/dist/automation/computer-steps.d.ts +20 -0
  75. package/dist/automation/computer-steps.d.ts.map +1 -0
  76. package/dist/automation/computer-steps.js +251 -0
  77. package/dist/automation/computer-steps.js.map +1 -0
  78. package/dist/automation/computer-use.d.ts +315 -0
  79. package/dist/automation/computer-use.d.ts.map +1 -0
  80. package/dist/automation/computer-use.js +864 -0
  81. package/dist/automation/computer-use.js.map +1 -0
  82. package/dist/automation/direct-command.d.ts +51 -0
  83. package/dist/automation/direct-command.d.ts.map +1 -0
  84. package/dist/automation/direct-command.js +152 -0
  85. package/dist/automation/direct-command.js.map +1 -0
  86. package/dist/automation/interrupt.d.ts +4 -0
  87. package/dist/automation/interrupt.d.ts.map +1 -0
  88. package/dist/automation/interrupt.js +26 -0
  89. package/dist/automation/interrupt.js.map +1 -0
  90. package/dist/build-provenance.json +4 -4
  91. package/dist/child-env-exclusions.d.ts +4 -0
  92. package/dist/child-env-exclusions.d.ts.map +1 -0
  93. package/dist/child-env-exclusions.js +23 -0
  94. package/dist/child-env-exclusions.js.map +1 -0
  95. package/dist/cli/startup-diagnostics.d.ts.map +1 -1
  96. package/dist/cli/startup-diagnostics.js +19 -0
  97. package/dist/cli/startup-diagnostics.js.map +1 -1
  98. package/dist/config/loader.d.ts.map +1 -1
  99. package/dist/config/loader.js +4 -0
  100. package/dist/config/loader.js.map +1 -1
  101. package/dist/config/reload-policy.d.ts.map +1 -1
  102. package/dist/config/reload-policy.js +2 -1
  103. package/dist/config/reload-policy.js.map +1 -1
  104. package/dist/jev/automatic-browser-bindings.d.ts +15 -0
  105. package/dist/jev/automatic-browser-bindings.d.ts.map +1 -0
  106. package/dist/jev/automatic-browser-bindings.js +115 -0
  107. package/dist/jev/automatic-browser-bindings.js.map +1 -0
  108. package/dist/jev/browser-connector.d.ts +29 -0
  109. package/dist/jev/browser-connector.d.ts.map +1 -0
  110. package/dist/jev/browser-connector.js +347 -0
  111. package/dist/jev/browser-connector.js.map +1 -0
  112. package/dist/jev/browser-consent.d.ts +6 -0
  113. package/dist/jev/browser-consent.d.ts.map +1 -0
  114. package/dist/jev/browser-consent.js +50 -0
  115. package/dist/jev/browser-consent.js.map +1 -0
  116. package/dist/jev/browser-contract.d.ts +215 -0
  117. package/dist/jev/browser-contract.d.ts.map +1 -0
  118. package/dist/jev/browser-contract.js +10 -0
  119. package/dist/jev/browser-contract.js.map +1 -0
  120. package/dist/jev/browser-evidence-summary.d.ts +73 -0
  121. package/dist/jev/browser-evidence-summary.d.ts.map +1 -0
  122. package/dist/jev/browser-evidence-summary.js +22 -0
  123. package/dist/jev/browser-evidence-summary.js.map +1 -0
  124. package/dist/jev/browser-module-import.d.ts +3 -0
  125. package/dist/jev/browser-module-import.d.ts.map +1 -0
  126. package/dist/jev/browser-module-import.js +6 -0
  127. package/dist/jev/browser-module-import.js.map +1 -0
  128. package/dist/jev/child-env.d.ts +11 -0
  129. package/dist/jev/child-env.d.ts.map +1 -0
  130. package/dist/jev/child-env.js +60 -0
  131. package/dist/jev/child-env.js.map +1 -0
  132. package/dist/jev/computer-connector.d.ts +34 -0
  133. package/dist/jev/computer-connector.d.ts.map +1 -0
  134. package/dist/jev/computer-connector.js +82 -0
  135. package/dist/jev/computer-connector.js.map +1 -0
  136. package/dist/jev/computer-inputs.d.ts +41 -0
  137. package/dist/jev/computer-inputs.d.ts.map +1 -0
  138. package/dist/jev/computer-inputs.js +7 -0
  139. package/dist/jev/computer-inputs.js.map +1 -0
  140. package/dist/jev/index.d.ts +6 -0
  141. package/dist/jev/index.d.ts.map +1 -0
  142. package/dist/jev/index.js +25 -0
  143. package/dist/jev/index.js.map +1 -0
  144. package/dist/jev/relay-grants.d.ts +9 -0
  145. package/dist/jev/relay-grants.d.ts.map +1 -0
  146. package/dist/jev/relay-grants.js +49 -0
  147. package/dist/jev/relay-grants.js.map +1 -0
  148. package/dist/jev/service.d.ts +27 -0
  149. package/dist/jev/service.d.ts.map +1 -0
  150. package/dist/jev/service.js +264 -0
  151. package/dist/jev/service.js.map +1 -0
  152. package/dist/jev/thinking-provider.d.ts +7 -0
  153. package/dist/jev/thinking-provider.d.ts.map +1 -0
  154. package/dist/jev/thinking-provider.js +25 -0
  155. package/dist/jev/thinking-provider.js.map +1 -0
  156. package/dist/jev/types.d.ts +124 -0
  157. package/dist/jev/types.d.ts.map +1 -0
  158. package/dist/jev/types.js +13 -0
  159. package/dist/jev/types.js.map +1 -0
  160. package/dist/jev/validation.d.ts +45 -0
  161. package/dist/jev/validation.d.ts.map +1 -0
  162. package/dist/jev/validation.js +179 -0
  163. package/dist/jev/validation.js.map +1 -0
  164. package/dist/load-dotenv.d.ts.map +1 -1
  165. package/dist/load-dotenv.js +5 -1
  166. package/dist/load-dotenv.js.map +1 -1
  167. package/dist/orchestration/agent-tool-schemas.d.ts.map +1 -1
  168. package/dist/orchestration/agent-tool-schemas.js +12 -7
  169. package/dist/orchestration/agent-tool-schemas.js.map +1 -1
  170. package/dist/orchestration/background-work.d.ts +1 -0
  171. package/dist/orchestration/background-work.d.ts.map +1 -1
  172. package/dist/orchestration/background-work.js +1 -0
  173. package/dist/orchestration/background-work.js.map +1 -1
  174. package/dist/orchestration/bridge.d.ts +4 -0
  175. package/dist/orchestration/bridge.d.ts.map +1 -1
  176. package/dist/orchestration/bridge.js +176 -41
  177. package/dist/orchestration/bridge.js.map +1 -1
  178. package/dist/orchestration/browser-fields.d.ts +25 -0
  179. package/dist/orchestration/browser-fields.d.ts.map +1 -0
  180. package/dist/orchestration/browser-fields.js +23 -0
  181. package/dist/orchestration/browser-fields.js.map +1 -0
  182. package/dist/orchestration/browser-routing.d.ts +1 -1
  183. package/dist/orchestration/browser-routing.d.ts.map +1 -1
  184. package/dist/orchestration/browser-routing.js +7 -3
  185. package/dist/orchestration/browser-routing.js.map +1 -1
  186. package/dist/orchestration/capabilities.d.ts +4 -1
  187. package/dist/orchestration/capabilities.d.ts.map +1 -1
  188. package/dist/orchestration/capabilities.js +15 -9
  189. package/dist/orchestration/capabilities.js.map +1 -1
  190. package/dist/orchestration/channel-controls.js +1 -1
  191. package/dist/orchestration/channel-controls.js.map +1 -1
  192. package/dist/orchestration/cli-skills.d.ts.map +1 -1
  193. package/dist/orchestration/cli-skills.js +3 -2
  194. package/dist/orchestration/cli-skills.js.map +1 -1
  195. package/dist/orchestration/computer-end-screenshot.d.ts +11 -0
  196. package/dist/orchestration/computer-end-screenshot.d.ts.map +1 -0
  197. package/dist/orchestration/computer-end-screenshot.js +37 -0
  198. package/dist/orchestration/computer-end-screenshot.js.map +1 -0
  199. package/dist/orchestration/computer-prompt.d.ts +6 -0
  200. package/dist/orchestration/computer-prompt.d.ts.map +1 -0
  201. package/dist/orchestration/computer-prompt.js +24 -0
  202. package/dist/orchestration/computer-prompt.js.map +1 -0
  203. package/dist/orchestration/config.d.ts +17 -0
  204. package/dist/orchestration/config.d.ts.map +1 -1
  205. package/dist/orchestration/config.js +10 -4
  206. package/dist/orchestration/config.js.map +1 -1
  207. package/dist/orchestration/container-tool-schemas.d.ts +47 -3
  208. package/dist/orchestration/container-tool-schemas.d.ts.map +1 -1
  209. package/dist/orchestration/container-tool-schemas.js +41 -6
  210. package/dist/orchestration/container-tool-schemas.js.map +1 -1
  211. package/dist/orchestration/container.d.ts +4 -1
  212. package/dist/orchestration/container.d.ts.map +1 -1
  213. package/dist/orchestration/container.js +48 -29
  214. package/dist/orchestration/container.js.map +1 -1
  215. package/dist/orchestration/context-footprint.d.ts +1 -1
  216. package/dist/orchestration/context-footprint.d.ts.map +1 -1
  217. package/dist/orchestration/context-footprint.js +5 -5
  218. package/dist/orchestration/context-footprint.js.map +1 -1
  219. package/dist/orchestration/control-notification.d.ts +6 -0
  220. package/dist/orchestration/control-notification.d.ts.map +1 -0
  221. package/dist/orchestration/control-notification.js +23 -0
  222. package/dist/orchestration/control-notification.js.map +1 -0
  223. package/dist/orchestration/dashboard-reader-worker.js +2 -2
  224. package/dist/orchestration/dashboard-reader-worker.js.map +1 -1
  225. package/dist/orchestration/execution-observation.d.ts +3 -0
  226. package/dist/orchestration/execution-observation.d.ts.map +1 -1
  227. package/dist/orchestration/execution-observation.js.map +1 -1
  228. package/dist/orchestration/gateway-tasks/browser.d.ts +59 -0
  229. package/dist/orchestration/gateway-tasks/browser.d.ts.map +1 -0
  230. package/dist/orchestration/gateway-tasks/browser.js +426 -0
  231. package/dist/orchestration/gateway-tasks/browser.js.map +1 -0
  232. package/dist/orchestration/gateway-tasks/computer-context.d.ts +6 -0
  233. package/dist/orchestration/gateway-tasks/computer-context.d.ts.map +1 -0
  234. package/dist/orchestration/gateway-tasks/computer-context.js +19 -0
  235. package/dist/orchestration/gateway-tasks/computer-context.js.map +1 -0
  236. package/dist/orchestration/gateway-tasks/computer.d.ts +123 -0
  237. package/dist/orchestration/gateway-tasks/computer.d.ts.map +1 -0
  238. package/dist/orchestration/gateway-tasks/computer.js +519 -0
  239. package/dist/orchestration/gateway-tasks/computer.js.map +1 -0
  240. package/dist/orchestration/gateway-tasks/controller.d.ts +40 -6
  241. package/dist/orchestration/gateway-tasks/controller.d.ts.map +1 -1
  242. package/dist/orchestration/gateway-tasks/controller.js +118 -12
  243. package/dist/orchestration/gateway-tasks/controller.js.map +1 -1
  244. package/dist/orchestration/gateway-tasks/safemode.d.ts.map +1 -1
  245. package/dist/orchestration/gateway-tasks/safemode.js +2 -1
  246. package/dist/orchestration/gateway-tasks/safemode.js.map +1 -1
  247. package/dist/orchestration/jev-gateway.d.ts +25 -0
  248. package/dist/orchestration/jev-gateway.d.ts.map +1 -0
  249. package/dist/orchestration/jev-gateway.js +103 -0
  250. package/dist/orchestration/jev-gateway.js.map +1 -0
  251. package/dist/orchestration/jev-tool.d.ts +45 -0
  252. package/dist/orchestration/jev-tool.d.ts.map +1 -0
  253. package/dist/orchestration/jev-tool.js +10 -0
  254. package/dist/orchestration/jev-tool.js.map +1 -0
  255. package/dist/orchestration/live-execution-input.d.ts +26 -0
  256. package/dist/orchestration/live-execution-input.d.ts.map +1 -0
  257. package/dist/orchestration/live-execution-input.js +70 -0
  258. package/dist/orchestration/live-execution-input.js.map +1 -0
  259. package/dist/orchestration/notification-mailbox.d.ts.map +1 -1
  260. package/dist/orchestration/notification-mailbox.js +5 -2
  261. package/dist/orchestration/notification-mailbox.js.map +1 -1
  262. package/dist/orchestration/process-platform.d.ts +0 -3
  263. package/dist/orchestration/process-platform.d.ts.map +1 -1
  264. package/dist/orchestration/process-platform.js +0 -4
  265. package/dist/orchestration/process-platform.js.map +1 -1
  266. package/dist/orchestration/process-turn.d.ts +8 -0
  267. package/dist/orchestration/process-turn.d.ts.map +1 -1
  268. package/dist/orchestration/process-turn.js +65 -8
  269. package/dist/orchestration/process-turn.js.map +1 -1
  270. package/dist/orchestration/response-errors.d.ts.map +1 -1
  271. package/dist/orchestration/response-errors.js +1 -0
  272. package/dist/orchestration/response-errors.js.map +1 -1
  273. package/dist/orchestration/runtime.d.ts +51 -1
  274. package/dist/orchestration/runtime.d.ts.map +1 -1
  275. package/dist/orchestration/runtime.js +383 -27
  276. package/dist/orchestration/runtime.js.map +1 -1
  277. package/dist/orchestration/skill-catalog-budget.d.ts +6 -0
  278. package/dist/orchestration/skill-catalog-budget.d.ts.map +1 -0
  279. package/dist/orchestration/skill-catalog-budget.js +9 -0
  280. package/dist/orchestration/skill-catalog-budget.js.map +1 -0
  281. package/dist/orchestration/skills.d.ts +4 -2
  282. package/dist/orchestration/skills.d.ts.map +1 -1
  283. package/dist/orchestration/skills.js +44 -3
  284. package/dist/orchestration/skills.js.map +1 -1
  285. package/dist/orchestration/store.d.ts +1 -0
  286. package/dist/orchestration/store.d.ts.map +1 -1
  287. package/dist/orchestration/store.js +2 -0
  288. package/dist/orchestration/store.js.map +1 -1
  289. package/dist/orchestration/task-controls.d.ts +78 -8
  290. package/dist/orchestration/task-controls.d.ts.map +1 -1
  291. package/dist/orchestration/task-controls.js +6 -1
  292. package/dist/orchestration/task-controls.js.map +1 -1
  293. package/dist/orchestration/tasks/automation-session.d.ts +25 -0
  294. package/dist/orchestration/tasks/automation-session.d.ts.map +1 -0
  295. package/dist/orchestration/tasks/automation-session.js +68 -0
  296. package/dist/orchestration/tasks/automation-session.js.map +1 -0
  297. package/dist/orchestration/tasks/driver.d.ts.map +1 -1
  298. package/dist/orchestration/tasks/driver.js +3 -2
  299. package/dist/orchestration/tasks/driver.js.map +1 -1
  300. package/dist/orchestration/tasks/service.d.ts +68 -7
  301. package/dist/orchestration/tasks/service.d.ts.map +1 -1
  302. package/dist/orchestration/tasks/service.js +646 -44
  303. package/dist/orchestration/tasks/service.js.map +1 -1
  304. package/dist/orchestration/types.d.ts +82 -3
  305. package/dist/orchestration/types.d.ts.map +1 -1
  306. package/dist/orchestration/types.js.map +1 -1
  307. package/dist/session/codex-extension-discovery.d.ts.map +1 -1
  308. package/dist/session/codex-extension-discovery.js +4 -2
  309. package/dist/session/codex-extension-discovery.js.map +1 -1
  310. package/dist/session/codex-native-mcp-client.d.ts.map +1 -1
  311. package/dist/session/codex-native-mcp-client.js +2 -1
  312. package/dist/session/codex-native-mcp-client.js.map +1 -1
  313. package/dist/session/codex-process.d.ts.map +1 -1
  314. package/dist/session/codex-process.js +9 -4
  315. package/dist/session/codex-process.js.map +1 -1
  316. package/dist/session/process.d.ts +16 -4
  317. package/dist/session/process.d.ts.map +1 -1
  318. package/dist/session/process.js +153 -75
  319. package/dist/session/process.js.map +1 -1
  320. package/dist/session/runtime-profile.d.ts +10 -5
  321. package/dist/session/runtime-profile.d.ts.map +1 -1
  322. package/dist/session/runtime-profile.js +5 -5
  323. package/dist/session/runtime-profile.js.map +1 -1
  324. package/dist/session/worker-extensions.d.ts.map +1 -1
  325. package/dist/session/worker-extensions.js +2 -1
  326. package/dist/session/worker-extensions.js.map +1 -1
  327. package/dist/types.d.ts +5 -0
  328. package/dist/types.d.ts.map +1 -1
  329. package/dist/ui/dashboard-client.d.ts.map +1 -1
  330. package/dist/ui/dashboard-client.js +33 -3
  331. package/dist/ui/dashboard-client.js.map +1 -1
  332. package/dist/ui/web-ui.js +1 -1
  333. package/lib/automation/browser-thinking.cjs +9 -0
  334. package/lib/automation/browser-thinking.d.cts +2 -0
  335. package/lib/automation/computer-thinking.cjs +10 -0
  336. package/lib/automation/computer-thinking.d.cts +2 -0
  337. package/lib/automation/index.cjs +47 -0
  338. package/lib/automation/index.d.cts +3 -0
  339. package/lib/automation/reasoning-instructions.cjs +5 -0
  340. package/lib/automation/thinking.cjs +35 -0
  341. package/lib/automation/thinking.d.cts +2 -0
  342. package/mcp/capability-catalog.ts +2 -2
  343. package/mcp/server.ts +1 -1
  344. package/mcp/tools/tasks/module.ts +9 -0
  345. package/package.json +5 -3
@@ -0,0 +1,215 @@
1
+ import type { BrowserTrace, BrowserTraceEvent } from '../automation/browser-trace';
2
+ import type { JevRequest, JevResult } from './types';
3
+ /** Consumer protocol v1. No provider keys, executable code or URLs in task arguments. */
4
+ export interface BrowserScope {
5
+ device_id: string;
6
+ grant_id: string;
7
+ tab_id: string;
8
+ }
9
+ export interface BrowserProgress {
10
+ contractVersion?: 1;
11
+ phase?: 'waiting_consent' | 'evaluating' | 'decided' | 'acting' | 'acted';
12
+ requestId?: string;
13
+ operationId?: string;
14
+ steps: number;
15
+ evaluations: number;
16
+ model?: string;
17
+ decision_ms?: number;
18
+ operation_confidence?: number;
19
+ target_confidence?: number;
20
+ }
21
+ export interface BrowserExecutionResult {
22
+ trace?: BrowserTrace;
23
+ status: 'succeeded' | 'blocked' | 'cancelled' | 'failed' | 'needs_verification';
24
+ reason: string;
25
+ providerFailure?: BrowserProviderFailure;
26
+ verification?: {
27
+ source: 'parent';
28
+ evidence: string;
29
+ at: number;
30
+ };
31
+ steps: number;
32
+ evaluations: number;
33
+ staleRetries?: number;
34
+ textCalls?: number;
35
+ lastAction?: {
36
+ operationId: string;
37
+ operation: string;
38
+ outcome: 'confirmed' | 'unknown' | 'not_executed';
39
+ };
40
+ observation?: unknown;
41
+ contractVersion?: 1;
42
+ fieldRequest?: {
43
+ ref: string;
44
+ label: string;
45
+ reason: 'missing' | 'ambiguous';
46
+ };
47
+ lastEvaluation?: {
48
+ requestId: string;
49
+ model?: string;
50
+ };
51
+ lastConfirmedAction?: {
52
+ operationId: string;
53
+ operation: string;
54
+ outcome: 'confirmed';
55
+ };
56
+ /** Direct user command: what it did, or why nothing was done. */
57
+ commandOutcome?: import('../automation/browser-command').BrowserCommandOutcome;
58
+ stepRun?: import('../automation/command-steps').CommandStepRun;
59
+ }
60
+ export interface BrowserExecutionContext {
61
+ requestConsent?: boolean;
62
+ interruptSignal?: AbortSignal;
63
+ trace?: (event: BrowserTraceEvent) => void;
64
+ startUrl?: string;
65
+ goal: string;
66
+ /** The goal is the user's own direct command (user-controlled session). */
67
+ command?: boolean;
68
+ /** Previous direct command context; references only, never replayed. */
69
+ interactionContext?: string;
70
+ /** The agent's command for a handed-off utterance: a high-impact action waits for the user's confirmation. */
71
+ agentCommand?: boolean;
72
+ /** The user's reply to that confirmation question; yes runs the agent's command. */
73
+ confirmation?: {
74
+ command: string;
75
+ label: string;
76
+ };
77
+ /** The agent's opening text for a session the user drives; no action means ready. */
78
+ sessionStart?: boolean;
79
+ /** The user's explicit step list (step mode). */
80
+ steps?: string[];
81
+ fields?: Array<{
82
+ label: string;
83
+ text: string;
84
+ }>;
85
+ signal: AbortSignal;
86
+ authorized(): boolean;
87
+ evaluate(request: JevRequest, signal: AbortSignal): Promise<JevResult>;
88
+ progress(event: BrowserProgress): void;
89
+ /** Synchronous durable fence in the MCP transport, before any page mutation. */
90
+ beforeMutation?(operationId: string, operation: string): void;
91
+ }
92
+ export interface BrowserConnectorConfig {
93
+ id: string;
94
+ name: string;
95
+ agentId: string;
96
+ principalId: string;
97
+ conversationId: string;
98
+ endpoint?: string;
99
+ apiKeyEnv?: string;
100
+ apiKeyFile?: string;
101
+ connectorId?: string;
102
+ scope: BrowserScope;
103
+ fields?: Array<{
104
+ label: string;
105
+ text: string;
106
+ }>;
107
+ budget?: {
108
+ maxSteps?: number;
109
+ maxEvaluations?: number;
110
+ timeoutMs?: number;
111
+ maxTextCalls?: number;
112
+ maxStaleRetries?: number;
113
+ operationConfidence?: number;
114
+ targetConfidence?: number;
115
+ };
116
+ }
117
+ /** Host-owned connection for Jev Loop tool-free reasoning. */
118
+ export interface BrowserTextHelperConfig {
119
+ api?: 'openai-chat' | 'anthropic-messages';
120
+ baseUrl: string;
121
+ model: string;
122
+ apiKeyEnv?: string;
123
+ apiKeyFile?: string;
124
+ }
125
+ export interface BrowserIntegrationConfig {
126
+ bindings: BrowserConnectorConfig[];
127
+ textHelper?: BrowserTextHelperConfig;
128
+ }
129
+ export type BrowserToolCall = (name: string, args: Record<string, unknown>, signal: AbortSignal) => Promise<unknown>;
130
+ export interface BrowserLogicModule {
131
+ BROWSER_USE_CONTRACT_VERSION: 1;
132
+ /** Optional v1 inputs the module accepts: 'direct_command' (command, interactionContext, agentCommand, confirmation) and 'steps'. */
133
+ BROWSER_USE_FEATURES?: readonly string[];
134
+ runBrowserSteps?: (input: Record<string, unknown>, dependencies: Parameters<BrowserLogicModule['runBrowserUse']>[1], signal: AbortSignal) => Promise<BrowserExecutionResult>;
135
+ runBrowserUse(input: {
136
+ yieldAfterAction?: boolean;
137
+ command?: boolean;
138
+ interactionContext?: string;
139
+ contractVersion: 1;
140
+ goal: string;
141
+ startUrl?: string;
142
+ scope: BrowserScope;
143
+ fields?: BrowserConnectorConfig['fields'];
144
+ } & BrowserConnectorConfig['budget'], dependencies: {
145
+ interruptSignal?: AbortSignal;
146
+ trace?: (event: BrowserTraceEvent) => void;
147
+ call: BrowserToolCall;
148
+ evaluate(request: JevRequest, signal: AbortSignal): Promise<{
149
+ model: string;
150
+ answers: JevResult['answers'];
151
+ }>;
152
+ progress(event: BrowserProgress): void;
153
+ /** Synchronous durable fence in the MCP transport, before any page mutation. */
154
+ beforeMutation?(operationId: string, operation: string): void;
155
+ verify?: (observation: unknown, signal: AbortSignal) => Promise<boolean>;
156
+ recover?: (request: Record<string, unknown>, signal: AbortSignal) => Promise<{
157
+ guidance: string | null;
158
+ fields: Array<{
159
+ label: string;
160
+ text: string;
161
+ }>;
162
+ }>;
163
+ snapshot?: (leaseToken: string, signal: AbortSignal) => Promise<{
164
+ mimeType: 'image/png';
165
+ data: string;
166
+ }>;
167
+ resolveFieldText?: (request: unknown, signal: AbortSignal) => Promise<{
168
+ text: string | null;
169
+ }>;
170
+ }, signal: AbortSignal): Promise<BrowserExecutionResult>;
171
+ mcpBrowserTransport(invoke: (name: string, args: Record<string, unknown>, signal: AbortSignal) => Promise<{
172
+ content: unknown[];
173
+ isError?: boolean;
174
+ }>): BrowserToolCall;
175
+ /** Optional trusted integration hooks. Never generated from page/model code. */
176
+ verifyBrowserTask?: (goal: string, observation: unknown, signal: AbortSignal) => Promise<boolean>;
177
+ resolveFieldText?: (request: unknown, signal: AbortSignal) => Promise<{
178
+ text: string | null;
179
+ }>;
180
+ }
181
+ export interface BrowserMutationCheckpoint {
182
+ operationId: string;
183
+ operation: string;
184
+ recordedAt: number;
185
+ }
186
+ export interface BrowserEvidence {
187
+ trace?: BrowserTrace;
188
+ lastDispatchedMutation?: BrowserMutationCheckpoint;
189
+ requestId: string;
190
+ recordedAt: number;
191
+ evidenceId?: string;
192
+ result?: BrowserExecutionResult;
193
+ executionState: 'ended' | 'interrupted';
194
+ fresh?: {
195
+ observedAt: number;
196
+ observation: unknown;
197
+ operationStatus?: unknown;
198
+ screenshot?: {
199
+ type: 'image';
200
+ mimeType: 'image/png';
201
+ data: string;
202
+ };
203
+ };
204
+ }
205
+ export interface BrowserProviderFailure {
206
+ code: string;
207
+ validationReason?: string;
208
+ status?: number;
209
+ retryAfter?: string;
210
+ resetAt?: string;
211
+ }
212
+ export type BrowserTaskReport = Omit<BrowserExecutionResult, 'observation' | 'trace'>;
213
+ /** Independent parent verification is valid only after a known non-ambiguous stop. */
214
+ export declare function parentVerifiableBrowserResult(result: BrowserExecutionResult | undefined): boolean;
215
+ //# sourceMappingURL=browser-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-contract.d.ts","sourceRoot":"","sources":["../../src/jev/browser-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parentVerifiableBrowserResult = parentVerifiableBrowserResult;
4
+ /** Independent parent verification is valid only after a known non-ambiguous stop. */
5
+ function parentVerifiableBrowserResult(result) {
6
+ return Boolean(result && !result.providerFailure && result.lastAction?.outcome !== 'unknown' &&
7
+ ((result.status === 'needs_verification' && ['COMPLETION_CANDIDATE', 'VERIFICATION_FAILED'].includes(result.reason)) ||
8
+ (result.status === 'blocked' && ['LOW_OPERATION_CONFIDENCE', 'LOW_TARGET_CONFIDENCE'].includes(result.reason))));
9
+ }
10
+ //# sourceMappingURL=browser-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-contract.js","sourceRoot":"","sources":["../../src/jev/browser-contract.ts"],"names":[],"mappings":";;AAoGA,sEAIC;AALD,sFAAsF;AACtF,SAAgB,6BAA6B,CAAC,MAA0C;IACtF,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,KAAK,SAAS;QAC1F,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,oBAAoB,IAAI,CAAC,sBAAsB,EAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClH,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,0BAA0B,EAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { BrowserEvidence } from './browser-contract';
2
+ /** Keep control IDs separate from bounded, untrusted page data. Full receipts stay on disk. */
3
+ export declare function summarizeBrowserEvidence(evidence: BrowserEvidence): {
4
+ evidenceId: string | undefined;
5
+ requestId: string;
6
+ executionState: "ended" | "interrupted";
7
+ recordedAt: number;
8
+ observedAt: number | undefined;
9
+ result: {
10
+ status: "blocked" | "succeeded" | "cancelled" | "failed" | "needs_verification";
11
+ reason: string;
12
+ steps: number;
13
+ evaluations: number;
14
+ lastAction: {
15
+ operationId: string;
16
+ operation: string;
17
+ outcome: "confirmed" | "unknown" | "not_executed";
18
+ } | undefined;
19
+ } | undefined;
20
+ lastDispatchedMutation: import("./browser-contract").BrowserMutationCheckpoint | undefined;
21
+ operationStatus: {
22
+ id: any;
23
+ state: any;
24
+ } | undefined;
25
+ page: {
26
+ url: string | undefined;
27
+ title: string | undefined;
28
+ text: string | undefined;
29
+ elements: {
30
+ ref: string | undefined;
31
+ label: string | undefined;
32
+ value: string | undefined;
33
+ context: string | undefined;
34
+ role: string | undefined;
35
+ operations: any;
36
+ }[];
37
+ truncated: boolean;
38
+ totalElements: number;
39
+ notice: string;
40
+ } | undefined;
41
+ trace: {
42
+ events: {
43
+ version: 1;
44
+ sequence: number;
45
+ at: number;
46
+ phase: "action" | "decision" | "dispatch" | "effect" | "field" | "recovery" | "terminal";
47
+ requestId?: string | undefined;
48
+ operationId?: string | undefined;
49
+ operation?: string | undefined;
50
+ model?: string | undefined;
51
+ elapsedMs?: number | undefined;
52
+ outcome?: "unknown" | "confirmed" | "not_executed" | undefined;
53
+ targetRef?: string | undefined;
54
+ cause?: string | undefined;
55
+ reason?: string | undefined;
56
+ status?: "blocked" | "succeeded" | "cancelled" | "failed" | "needs_verification" | undefined;
57
+ steps?: number | undefined;
58
+ evaluations?: number | undefined;
59
+ staleRetries?: number | undefined;
60
+ consecutiveStale?: number | undefined;
61
+ effect?: "value-changed" | "selection-changed" | "expanded-changed" | undefined;
62
+ pageChanged?: boolean | undefined;
63
+ valueMatched?: boolean | undefined;
64
+ optionCount?: number | undefined;
65
+ recoveryCalls?: number | undefined;
66
+ fieldsUpdated?: number | undefined;
67
+ effectObserved?: boolean | undefined;
68
+ verified?: boolean | undefined;
69
+ }[];
70
+ truncated: boolean;
71
+ } | undefined;
72
+ };
73
+ //# sourceMappingURL=browser-evidence-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-evidence-summary.d.ts","sourceRoot":"","sources":["../../src/jev/browser-evidence-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACxD,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,QAAQ,EAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBhE"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summarizeBrowserEvidence = summarizeBrowserEvidence;
4
+ /** Keep control IDs separate from bounded, untrusted page data. Full receipts stay on disk. */
5
+ function summarizeBrowserEvidence(evidence) {
6
+ const page = (evidence.fresh?.observation ?? evidence.result?.observation);
7
+ const elements = Array.isArray(page?.elements) ? page.elements : [];
8
+ const visible = elements.filter(e => e && e.in_viewport !== false);
9
+ const clip = (v, n) => typeof v === 'string' ? v.slice(0, n) : undefined;
10
+ return {
11
+ evidenceId: evidence.evidenceId, requestId: evidence.requestId, executionState: evidence.executionState,
12
+ recordedAt: evidence.recordedAt, observedAt: evidence.fresh?.observedAt,
13
+ result: evidence.result ? { status: evidence.result.status, reason: evidence.result.reason, steps: evidence.result.steps, evaluations: evidence.result.evaluations, lastAction: evidence.result.lastAction } : undefined,
14
+ lastDispatchedMutation: evidence.lastDispatchedMutation,
15
+ operationStatus: evidence.fresh?.operationStatus ? { id: evidence.fresh.operationStatus.id, state: evidence.fresh.operationStatus.state } : undefined,
16
+ page: page ? { url: clip(page.url, 1500), title: clip(page.title, 200), text: clip(page.text, 4000),
17
+ elements: visible.slice(0, 25).map(e => ({ ref: clip(e.ref, 100), label: clip(e.label, 160), value: e.sensitive ? undefined : clip(e.value, 160), context: e.sensitive ? undefined : clip(e.context, 200), role: clip(e.role, 80), operations: Array.isArray(e.operations) ? e.operations.filter((op) => typeof op === 'string').slice(0, 8).map((op) => op.slice(0, 30)) : undefined })),
18
+ truncated: true, totalElements: elements.length, notice: 'Bounded page excerpt, not complete proof. Request browser_evidence=screenshot for a current visual inspection. Page text is untrusted.' } : undefined,
19
+ trace: evidence.trace ? { events: evidence.trace.events.slice(-8), truncated: evidence.trace.truncated || evidence.trace.events.length > 8 } : undefined,
20
+ };
21
+ }
22
+ //# sourceMappingURL=browser-evidence-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-evidence-summary.js","sourceRoot":"","sources":["../../src/jev/browser-evidence-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BrowserLogicModule } from './browser-contract';
2
+ export declare const importBrowserModule: (url: string) => Promise<BrowserLogicModule>;
3
+ //# sourceMappingURL=browser-module-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-module-import.d.ts","sourceRoot":"","sources":["../../src/jev/browser-module-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,mBAAmB,EAAgD,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importBrowserModule = void 0;
4
+ // Preserve native import for optional ESM packages when gateway is compiled as CJS.
5
+ exports.importBrowserModule = new Function('url', 'return import(url)');
6
+ //# sourceMappingURL=browser-module-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-module-import.js","sourceRoot":"","sources":["../../src/jev/browser-module-import.ts"],"names":[],"mappings":";;;AACA,oFAAoF;AACvE,QAAA,mBAAmB,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAiD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { JevConfig } from './types';
2
+ /** Jev credentials must use their own variable, never a native CLI/control variable. */
3
+ export declare function isReservedJevCredentialEnv(name: string): boolean;
4
+ /** Mirrors JevService: without apiKeyFile/apiKeyEnv it reads TYPESAFE_API_KEY. */
5
+ export declare const JEV_DEFAULT_API_KEY_ENV = "TYPESAFE_API_KEY";
6
+ export declare function jevCredentialEnvNames(config?: JevConfig): string[];
7
+ /** Apply after overlays. Do not mutate the gateway environment or native CLI authentication. */
8
+ export declare function sanitizeJevChildEnv<T extends Record<string, string | undefined>>(environment: T, config?: JevConfig): T;
9
+ /** Gateway CLI children also load dotenv; carry names so bootstrap cannot restore secrets. */
10
+ export declare function managedJevChildEnv(environment: NodeJS.ProcessEnv, config?: JevConfig): NodeJS.ProcessEnv;
11
+ //# sourceMappingURL=child-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-env.d.ts","sourceRoot":"","sources":["../../src/jev/child-env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAE9C,wFAAwF;AACxF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIhE;AAMD,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAC1D,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAWlE;AACD,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,CAAC,CAIvH;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,UAAU,CAKxG"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JEV_DEFAULT_API_KEY_ENV = void 0;
4
+ exports.isReservedJevCredentialEnv = isReservedJevCredentialEnv;
5
+ exports.jevCredentialEnvNames = jevCredentialEnvNames;
6
+ exports.sanitizeJevChildEnv = sanitizeJevChildEnv;
7
+ exports.managedJevChildEnv = managedJevChildEnv;
8
+ const child_env_exclusions_1 = require("../child-env-exclusions");
9
+ const types_1 = require("./types");
10
+ /** Jev credentials must use their own variable, never a native CLI/control variable. */
11
+ function isReservedJevCredentialEnv(name) {
12
+ return /^(ANTHROPIC_|CLAUDE_|CODEX_|OPENAI_|TELEGRAM_|DISCORD_|SLACK_|LINE_|WHATSAPP_|AWS_|GOOGLE_|AZURE_)/.test(name)
13
+ || (/^GATEWAY_/.test(name) && !/^GATEWAY_JEV_/.test(name))
14
+ || /^(PATH|HOME|USER|LOGNAME|SHELL|TMPDIR|LANG|TERM|NODE_OPTIONS|BASH_ENV|ENV|ZDOTDIR|LD_PRELOAD|LD_LIBRARY_PATH|SSL_CERT_FILE|SSL_CERT_DIR)$/.test(name);
15
+ }
16
+ // Only names Jev actually reads are private: a vendor default such as
17
+ // TYPESAFE_API_KEY may belong to an unrelated MCP connector when Jev does not use it.
18
+ // Retain observed references for the process lifetime so hot reload cannot turn an
19
+ // old credential into an ordinary inherited child variable. Values are never stored.
20
+ const privateNames = new Set();
21
+ /** Mirrors JevService: without apiKeyFile/apiKeyEnv it reads TYPESAFE_API_KEY. */
22
+ exports.JEV_DEFAULT_API_KEY_ENV = 'TYPESAFE_API_KEY';
23
+ function jevCredentialEnvNames(config) {
24
+ if (config?.apiKeyEnv && isReservedJevCredentialEnv(config.apiKeyEnv))
25
+ throw new types_1.JevError('INVALID_CONFIG', 'Jev apiKeyEnv must use a dedicated credential variable, not native CLI authentication or process controls.');
26
+ if (config?.apiKeyEnv)
27
+ privateNames.add(config.apiKeyEnv);
28
+ else if (config && !config.apiKeyFile)
29
+ privateNames.add(exports.JEV_DEFAULT_API_KEY_ENV);
30
+ for (const textKey of [config?.thinking?.apiKeyEnv, config?.browser?.textHelper?.apiKeyEnv]) {
31
+ if (textKey) {
32
+ if (isReservedJevCredentialEnv(textKey))
33
+ throw new types_1.JevError('INVALID_CONFIG', 'Browser text helper requires a dedicated credential variable.');
34
+ privateNames.add(textKey);
35
+ }
36
+ }
37
+ for (const binding of config?.browser?.bindings ?? []) {
38
+ if (binding.apiKeyEnv && isReservedJevCredentialEnv(binding.apiKeyEnv))
39
+ throw new types_1.JevError('INVALID_CONFIG', 'Browser credentials require a dedicated environment variable.');
40
+ if (binding.apiKeyEnv)
41
+ privateNames.add(binding.apiKeyEnv);
42
+ }
43
+ return [...privateNames];
44
+ }
45
+ /** Apply after overlays. Do not mutate the gateway environment or native CLI authentication. */
46
+ function sanitizeJevChildEnv(environment, config) {
47
+ const clean = { ...environment };
48
+ for (const name of jevCredentialEnvNames(config))
49
+ delete clean[name];
50
+ return clean;
51
+ }
52
+ /** Gateway CLI children also load dotenv; carry names so bootstrap cannot restore secrets. */
53
+ function managedJevChildEnv(environment, config) {
54
+ const names = new Set([...(0, child_env_exclusions_1.childEnvExclusions)(environment), ...jevCredentialEnvNames(config)]);
55
+ const clean = sanitizeJevChildEnv(environment, config);
56
+ for (const name of names)
57
+ delete clean[name];
58
+ return { ...clean, [child_env_exclusions_1.CHILD_ENV_EXCLUSIONS]: JSON.stringify([...names]) };
59
+ }
60
+ //# sourceMappingURL=child-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-env.js","sourceRoot":"","sources":["../../src/jev/child-env.ts"],"names":[],"mappings":";;;AAIA,gEAIC;AAQD,sDAWC;AAED,kDAIC;AAGD,gDAKC;AAzCD,kEAAmF;AACnF,mCAA8C;AAE9C,wFAAwF;AACxF,SAAgB,0BAA0B,CAAC,IAAY;IACrD,OAAO,oGAAoG,CAAC,IAAI,CAAC,IAAI,CAAC;WACjH,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;WACvD,2IAA2I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9J,CAAC;AACD,sEAAsE;AACtE,sFAAsF;AACtF,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AACvC,kFAAkF;AACrE,QAAA,uBAAuB,GAAG,kBAAkB,CAAC;AAC1D,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,IAAI,MAAM,EAAE,SAAS,IAAI,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,gBAAQ,CAAC,gBAAgB,EAAE,4GAA4G,CAAC,CAAC;IAC1N,IAAI,MAAM,EAAE,SAAS;QAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACrD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,YAAY,CAAC,GAAG,CAAC,+BAAuB,CAAC,CAAC;IACjF,KAAI,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAC,CAAC;QAC3F,IAAG,OAAO,EAAC,CAAC;YAAA,IAAG,0BAA0B,CAAC,OAAO,CAAC;gBAAC,MAAM,IAAI,gBAAQ,CAAC,gBAAgB,EAAC,+DAA+D,CAAC,CAAC;YAAA,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAA,CAAC;IAAA,CAAC;IACpL,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,gBAAQ,CAAC,gBAAgB,EAAE,+DAA+D,CAAC,CAAC;QAC9K,IAAI,OAAO,CAAC,SAAS;YAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;AAC3B,CAAC;AACD,gGAAgG;AAChG,SAAgB,mBAAmB,CAA+C,WAAc,EAAE,MAAkB;IAClH,MAAM,KAAK,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8FAA8F;AAC9F,SAAgB,kBAAkB,CAAC,WAA8B,EAAE,MAAkB;IACnF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAA,yCAAkB,EAAC,WAAW,CAAC,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,2CAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import type { AgentConfig, GatewayConfig } from '../types';
3
+ import type { CommandContext } from '../orchestration/types';
4
+ export interface ComputerBinding {
5
+ id: string;
6
+ name: string;
7
+ principalId: string;
8
+ conversationId: string;
9
+ connectorId: string;
10
+ scope: {
11
+ device_id: string;
12
+ grant_id: string;
13
+ };
14
+ }
15
+ export declare class ComputerConnectors {
16
+ private config;
17
+ private agent;
18
+ private rows;
19
+ constructor(config: GatewayConfig, agent: AgentConfig);
20
+ connection(id: string): import("./browser-connector").BrowserConnection;
21
+ private ids;
22
+ get(id: string, principal: string, conversation: string): ComputerBinding;
23
+ accessState(id: string, principal: string, conversation: string): Promise<{
24
+ status: import('../orchestration/types').ComputerConnectionStatus;
25
+ stoppedAt?: number;
26
+ }>;
27
+ stoppedAt(id: string, principal: string, conversation: string): Promise<number | undefined>;
28
+ discover(context: Pick<CommandContext, 'principalId' | 'conversationId'>, authorized: () => boolean): Promise<ComputerBinding[]>;
29
+ }
30
+ export declare function withComputerConnection<T>(connection: {
31
+ endpoint: string;
32
+ headers: Record<string, string>;
33
+ }, run: (client: Client) => Promise<T>, signal?: AbortSignal): Promise<T>;
34
+ //# sourceMappingURL=computer-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computer-connector.d.ts","sourceRoot":"","sources":["../../src/jev/computer-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAIjE,OAAO,KAAK,EAAC,WAAW,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAGxD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAC3D,MAAM,WAAW,eAAe;IAAE,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC;QAAC,SAAS,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAA;KAAC,CAAA;CAAC;AAC7J,qBAAa,kBAAkB;IAElB,OAAO,CAAC,MAAM;IAAe,OAAO,CAAC,KAAK;IADtD,OAAO,CAAC,IAAI,CAAsB;gBACd,MAAM,EAAC,aAAa,EAAS,KAAK,EAAC,WAAW;IAClE,UAAU,CAAC,EAAE,EAAC,MAAM;IACpB,OAAO,CAAC,GAAG;IACX,GAAG,CAAC,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM;IAC5C,WAAW,CAAC,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,GAAE,OAAO,CAAC;QAAC,MAAM,EAAC,OAAO,wBAAwB,EAAE,wBAAwB,CAAC;QAAA,SAAS,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC;IASzJ,SAAS,CAAC,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,GAAE,OAAO,CAAC,MAAM,GAAC,SAAS,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAC,IAAI,CAAC,cAAc,EAAC,aAAa,GAAC,gBAAgB,CAAC,EAAC,UAAU,EAAC,MAAI,OAAO;CAYjG;AACD,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAC,EAAC,GAAG,EAAC,CAAC,MAAM,EAAC,MAAM,KAAG,OAAO,CAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,OAAO,CAAC,CAAC,CAAC,CAIzK"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComputerConnectors = void 0;
4
+ exports.withComputerConnection = withComputerConnection;
5
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
6
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
7
+ const browser_connector_1 = require("./browser-connector");
8
+ const resolve_1 = require("../connectors/resolve");
9
+ const crypto_1 = require("crypto");
10
+ const relay_grants_1 = require("./relay-grants");
11
+ class ComputerConnectors {
12
+ constructor(config, agent) {
13
+ this.config = config;
14
+ this.agent = agent;
15
+ this.rows = [];
16
+ }
17
+ connection(id) { try {
18
+ return (0, browser_connector_1.resolveBrowserConnection)(this.config, this.agent, id);
19
+ }
20
+ catch {
21
+ throw Error('COMPUTER_CONNECTOR_UNAVAILABLE');
22
+ } }
23
+ ids() { if (this.agent.allow_tools === false)
24
+ return []; const entries = this.config.gateway.customConnectors ?? {}, enabled = (0, resolve_1.resolveEnabledConnectors)(this.agent, entries, this.config.gateway.connectorsDefaultEnabled !== false); return Object.keys(enabled).filter(id => entries[id]?.resourcesPath === '/v1/computer-grants'); }
25
+ get(id, principal, conversation) { const found = this.rows.find(b => b.id === id && b.principalId === principal && b.conversationId === conversation); if (!found || !this.ids().includes(found.connectorId))
26
+ throw Error('COMPUTER_TARGET_UNAVAILABLE'); this.connection(found.connectorId); return found; }
27
+ async accessState(id, principal, conversation) {
28
+ const binding = this.get(id, principal, conversation), connection = this.connection(binding.connectorId);
29
+ const response = await fetch(new URL('/v1/computer-grants', connection.endpoint), { redirect: 'error', headers: connection.headers, signal: AbortSignal.timeout(4000) });
30
+ if (!response.ok)
31
+ throw Error('COMPUTER_DISCOVERY_UNAVAILABLE');
32
+ const grants = await (0, relay_grants_1.readRelayGrants)(response, 'COMPUTER_DISCOVERY_INVALID');
33
+ if (JSON.stringify(connection) !== JSON.stringify(this.connection(binding.connectorId)))
34
+ throw Error('COMPUTER_CONNECTOR_CHANGED');
35
+ const grant = grants.find((g) => g?.id === binding.scope.grant_id && g.deviceId === binding.scope.device_id);
36
+ return { status: !grant ? 'unknown' : grant.online === false ? 'disconnected' : grant.online !== true ? 'unknown' : grant.ready === true ? 'connected' : 'waiting_access', ...(Number.isSafeInteger(grant?.stoppedAt) && grant.stoppedAt > 0 ? { stoppedAt: grant.stoppedAt } : {}) };
37
+ }
38
+ async stoppedAt(id, principal, conversation) { return (await this.accessState(id, principal, conversation)).stoppedAt; }
39
+ async discover(context, authorized) {
40
+ const found = [];
41
+ const check = () => { if (!authorized())
42
+ throw Error('ACCESS_DENIED'); };
43
+ check();
44
+ for (const id of this.ids().slice(0, 10)) {
45
+ const connection = this.connection(id);
46
+ const read = async () => { const r = await fetch(new URL('/v1/computer-grants', connection.endpoint), { redirect: 'error', headers: connection.headers, signal: AbortSignal.timeout(10000) }); if (!r.ok)
47
+ throw Error('COMPUTER_DISCOVERY_UNAVAILABLE'); return (0, relay_grants_1.readRelayGrants)(r, 'COMPUTER_DISCOVERY_INVALID'); };
48
+ let grants = await read();
49
+ check();
50
+ check();
51
+ if (JSON.stringify(connection) !== JSON.stringify(this.connection(id)))
52
+ throw Error('COMPUTER_CONNECTOR_CHANGED');
53
+ for (const g of grants) {
54
+ if (!g || typeof g !== 'object')
55
+ continue;
56
+ if ((g.expiresAt !== undefined && g.expiresAt !== 0 && (!Number.isFinite(g.expiresAt) || g.expiresAt <= Date.now())) || g.online !== true)
57
+ continue;
58
+ if (!/^[0-9a-f-]{36}$/i.test(g.id) || !/^[0-9a-f-]{36}$/i.test(g.deviceId))
59
+ continue;
60
+ const scope = { device_id: g.deviceId, grant_id: g.id };
61
+ found.push({ id: 'computer-' + (0, crypto_1.createHash)('sha256').update(JSON.stringify([this.agent.id, context.principalId, context.conversationId, id, scope])).digest('hex'), name: 'Computer Use · ' + String(g.label ?? 'Computer').slice(0, 80), principalId: context.principalId, conversationId: context.conversationId, connectorId: id, scope });
62
+ }
63
+ }
64
+ this.rows = [...this.rows.filter(b => b.principalId !== context.principalId || b.conversationId !== context.conversationId), ...found].slice(-100);
65
+ return found;
66
+ }
67
+ }
68
+ exports.ComputerConnectors = ComputerConnectors;
69
+ async function withComputerConnection(connection, run, signal) {
70
+ const client = new index_js_1.Client({ name: 'gateway-computer-use', version: '1.0.0' });
71
+ const endpoint = new URL(connection.endpoint);
72
+ const transport = new streamableHttp_js_1.StreamableHTTPClientTransport(endpoint, { requestInit: { headers: connection.headers, redirect: 'error' }, fetch: ((input, init) => { const u = new URL(typeof input === 'string' ? input : input instanceof URL ? input.href : input.url); if (u.href !== endpoint.href)
73
+ throw Error('COMPUTER_ENDPOINT_CHANGED'); return fetch(input, { ...init, redirect: 'error' }); }) });
74
+ try {
75
+ await client.connect(transport, { signal, timeout: 10000 });
76
+ return await run(client);
77
+ }
78
+ finally {
79
+ await client.close();
80
+ }
81
+ }
82
+ //# sourceMappingURL=computer-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computer-connector.js","sourceRoot":"","sources":["../../src/jev/computer-connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ export declare const ComputerInputs: z.ZodArray<z.ZodObject<{
3
+ application: z.ZodString;
4
+ label: z.ZodString;
5
+ text: z.ZodString;
6
+ role: z.ZodOptional<z.ZodString>;
7
+ windowTitle: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strict>>;
9
+ export declare const COMPUTER_INPUTS_SCHEMA: {
10
+ type: string;
11
+ maxItems: number;
12
+ description: string;
13
+ items: {
14
+ type: string;
15
+ additionalProperties: boolean;
16
+ required: string[];
17
+ properties: {
18
+ application: {
19
+ type: string;
20
+ maxLength: number;
21
+ };
22
+ label: {
23
+ type: string;
24
+ maxLength: number;
25
+ };
26
+ text: {
27
+ type: string;
28
+ maxLength: number;
29
+ };
30
+ role: {
31
+ type: string;
32
+ maxLength: number;
33
+ };
34
+ windowTitle: {
35
+ type: string;
36
+ maxLength: number;
37
+ };
38
+ };
39
+ };
40
+ };
41
+ //# sourceMappingURL=computer-inputs.d.ts.map