@vellumai/assistant 0.6.2 → 0.6.3

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 (396) hide show
  1. package/bun.lock +40 -40
  2. package/bunfig.toml +3 -0
  3. package/docs/architecture/memory.md +1 -1
  4. package/node_modules/@vellumai/ces-contracts/src/rpc.ts +42 -0
  5. package/openapi.yaml +184 -69
  6. package/package.json +41 -41
  7. package/scripts/generate-openapi.ts +1 -2
  8. package/src/__tests__/acp-session.test.ts +43 -0
  9. package/src/__tests__/app-builder-tool-scripts.test.ts +1 -0
  10. package/src/__tests__/app-executors.test.ts +1 -0
  11. package/src/__tests__/app-source-watcher.test.ts +37 -11
  12. package/src/__tests__/approval-routes-http.test.ts +178 -1
  13. package/src/__tests__/browser-fill-credential.test.ts +229 -94
  14. package/src/__tests__/browser-manager.test.ts +40 -27
  15. package/src/__tests__/catalog-files.test.ts +862 -0
  16. package/src/__tests__/channel-approvals.test.ts +53 -0
  17. package/src/__tests__/config-managed-gemini-defaults.test.ts +326 -0
  18. package/src/__tests__/config-schema-cmd.test.ts +2 -2
  19. package/src/__tests__/config-schema.test.ts +125 -48
  20. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +23 -0
  21. package/src/__tests__/context-overflow-approval.test.ts +16 -1
  22. package/src/__tests__/conversation-agent-loop-overflow.test.ts +1 -1
  23. package/src/__tests__/conversation-agent-loop.test.ts +1 -1
  24. package/src/__tests__/conversation-analysis-routes.test.ts +2 -2
  25. package/src/__tests__/conversation-attachments.test.ts +80 -4
  26. package/src/__tests__/conversation-confirmation-signals.test.ts +155 -0
  27. package/src/__tests__/conversation-fork-crud.test.ts +17 -0
  28. package/src/__tests__/conversation-history-web-search.test.ts +1 -0
  29. package/src/__tests__/conversation-host-access-routes.test.ts +229 -0
  30. package/src/__tests__/conversation-inject-context.test.ts +103 -0
  31. package/src/__tests__/conversation-queue.test.ts +45 -2
  32. package/src/__tests__/conversation-routes-disk-view.test.ts +5 -0
  33. package/src/__tests__/conversation-routes-guardian-reply.test.ts +16 -0
  34. package/src/__tests__/conversation-routes-slash-commands.test.ts +1 -0
  35. package/src/__tests__/conversation-runtime-assembly.test.ts +269 -46
  36. package/src/__tests__/conversation-starter-routes.test.ts +126 -0
  37. package/src/__tests__/conversation-starters-cadence.test.ts +161 -0
  38. package/src/__tests__/conversation-store.test.ts +195 -0
  39. package/src/__tests__/conversation-workspace-cache-state.test.ts +193 -0
  40. package/src/__tests__/credential-execution-approval-bridge.test.ts +32 -1
  41. package/src/__tests__/credential-security-invariants.test.ts +1 -0
  42. package/src/__tests__/credential-vault-unit.test.ts +4 -4
  43. package/src/__tests__/credential-vault.test.ts +152 -13
  44. package/src/__tests__/credentials-cli.test.ts +2 -2
  45. package/src/__tests__/date-context.test.ts +4 -4
  46. package/src/__tests__/embedding-managed-proxy-selection.test.ts +256 -0
  47. package/src/__tests__/extension-id-sync-guard.test.ts +155 -0
  48. package/src/__tests__/fixtures/mock-chrome-extension.ts +375 -0
  49. package/src/__tests__/gateway-only-guard.test.ts +3 -0
  50. package/src/__tests__/gemini-provider.test.ts +2 -2
  51. package/src/__tests__/guardian-routing-invariants.test.ts +70 -2
  52. package/src/__tests__/headless-browser-interactions.test.ts +707 -371
  53. package/src/__tests__/headless-browser-navigate.test.ts +389 -47
  54. package/src/__tests__/headless-browser-read-tools.test.ts +266 -103
  55. package/src/__tests__/headless-browser-snapshot.test.ts +240 -77
  56. package/src/__tests__/host-bash-proxy.test.ts +150 -1
  57. package/src/__tests__/host-browser-e2e-cloud.test.ts +462 -0
  58. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +286 -0
  59. package/src/__tests__/host-browser-e2e-self-hosted.test.ts +374 -0
  60. package/src/__tests__/host-browser-event-routes.test.ts +350 -0
  61. package/src/__tests__/host-browser-proxy.test.ts +444 -0
  62. package/src/__tests__/host-browser-routes.test.ts +198 -0
  63. package/src/__tests__/host-browser-ws-events-e2e.test.ts +320 -0
  64. package/src/__tests__/host-cu-proxy.test.ts +171 -1
  65. package/src/__tests__/host-file-proxy.test.ts +185 -1
  66. package/src/__tests__/host-file-read-tool.test.ts +52 -0
  67. package/src/__tests__/host-proxy-interface.test.ts +165 -0
  68. package/src/__tests__/host-shell-tool.test.ts +1 -11
  69. package/src/__tests__/http-user-message-parity.test.ts +1 -0
  70. package/src/__tests__/integration-status.test.ts +6 -7
  71. package/src/__tests__/list-messages-tool-merge.test.ts +37 -12
  72. package/src/__tests__/mcp-client-auth.test.ts +40 -4
  73. package/src/__tests__/mcp-health-check.test.ts +10 -3
  74. package/src/__tests__/migration-cross-version-compatibility.test.ts +3 -1
  75. package/src/__tests__/migration-export-http.test.ts +61 -2
  76. package/src/__tests__/migration-export-streaming.test.ts +66 -0
  77. package/src/__tests__/migration-import-commit-http.test.ts +101 -1
  78. package/src/__tests__/native-host-marker-sync-guard.test.ts +157 -0
  79. package/src/__tests__/oauth-apps-routes.test.ts +17 -12
  80. package/src/__tests__/oauth-cli.test.ts +707 -60
  81. package/src/__tests__/oauth-connect-orchestrator.test.ts +116 -24
  82. package/src/__tests__/oauth-provider-seed-logos.test.ts +23 -0
  83. package/src/__tests__/oauth-provider-serializer.test.ts +146 -10
  84. package/src/__tests__/oauth-provider-visibility.test.ts +19 -21
  85. package/src/__tests__/oauth-providers-routes.test.ts +50 -14
  86. package/src/__tests__/oauth-store.test.ts +1386 -182
  87. package/src/__tests__/oauth2-gateway-transport.test.ts +211 -20
  88. package/src/__tests__/onboarding-template-contract.test.ts +75 -57
  89. package/src/__tests__/openai-provider.test.ts +2 -2
  90. package/src/__tests__/outlook-categories.test.ts +1 -1
  91. package/src/__tests__/outlook-client-automation.test.ts +1 -1
  92. package/src/__tests__/outlook-compose-tools.test.ts +1 -1
  93. package/src/__tests__/outlook-email-watcher.test.ts +1 -1
  94. package/src/__tests__/outlook-follow-up.test.ts +1 -1
  95. package/src/__tests__/outlook-messaging-provider.test.ts +2 -2
  96. package/src/__tests__/outlook-trash.test.ts +1 -1
  97. package/src/__tests__/outlook-unsubscribe.test.ts +1 -1
  98. package/src/__tests__/permission-checker-host-gate.test.ts +74 -14
  99. package/src/__tests__/permission-mode.test.ts +28 -56
  100. package/src/__tests__/platform-callback-registration.test.ts +19 -0
  101. package/src/__tests__/post-turn-tool-result-truncation.test.ts +296 -0
  102. package/src/__tests__/proxy-approval-callback.test.ts +18 -0
  103. package/src/__tests__/require-fresh-approval.test.ts +40 -1
  104. package/src/__tests__/sanitize-config-for-transfer.test.ts +132 -0
  105. package/src/__tests__/schedule-routes.test.ts +162 -0
  106. package/src/__tests__/secret-detection-handler.test.ts +84 -0
  107. package/src/__tests__/secret-ingress-http.test.ts +1 -0
  108. package/src/__tests__/send-endpoint-busy.test.ts +3 -0
  109. package/src/__tests__/set-permission-mode.test.ts +13 -250
  110. package/src/__tests__/skills-file-content-endpoint.test.ts +670 -0
  111. package/src/__tests__/skills-files-catalog-fallback.test.ts +450 -0
  112. package/src/__tests__/slack-channel-config.test.ts +12 -15
  113. package/src/__tests__/subagent-detail.test.ts +44 -2
  114. package/src/__tests__/subagent-disposal.test.ts +1 -0
  115. package/src/__tests__/subagent-fork-notifications.test.ts +291 -0
  116. package/src/__tests__/subagent-fork-spawn.test.ts +384 -0
  117. package/src/__tests__/subagent-manager-notify.test.ts +1 -0
  118. package/src/__tests__/subagent-notify-parent.test.ts +1 -0
  119. package/src/__tests__/subagent-spawn-tool-fork.test.ts +411 -0
  120. package/src/__tests__/subagent-tools.test.ts +1 -0
  121. package/src/__tests__/subagent-types.test.ts +1 -0
  122. package/src/__tests__/system-prompt-ask-mode.test.ts +27 -71
  123. package/src/__tests__/system-prompt.test.ts +72 -1
  124. package/src/__tests__/task-scheduler.test.ts +32 -6
  125. package/src/__tests__/telegram-config.test.ts +10 -13
  126. package/src/__tests__/terminal-tools.test.ts +9 -0
  127. package/src/__tests__/tool-approval-handler.test.ts +73 -0
  128. package/src/__tests__/tool-side-effects-slack-dm.test.ts +22 -0
  129. package/src/__tests__/top-level-renderer.test.ts +73 -1
  130. package/src/__tests__/transport-hints-queue.test.ts +14 -29
  131. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +109 -0
  132. package/src/__tests__/v2-consent-policy.test.ts +103 -0
  133. package/src/acp/client-handler.ts +30 -4
  134. package/src/agent/loop.ts +12 -6
  135. package/src/approvals/guardian-request-resolvers.ts +21 -15
  136. package/src/browser-session/__tests__/manager.test.ts +297 -0
  137. package/src/browser-session/backends/cdp-inspect.ts +30 -0
  138. package/src/browser-session/backends/extension.ts +26 -0
  139. package/src/browser-session/backends/local.ts +24 -0
  140. package/src/browser-session/events.ts +164 -0
  141. package/src/browser-session/index.ts +27 -0
  142. package/src/browser-session/manager.ts +159 -0
  143. package/src/browser-session/types.ts +28 -0
  144. package/src/channels/__tests__/types.test.ts +134 -0
  145. package/src/channels/types.ts +53 -3
  146. package/src/cli/commands/browser-relay.ts +339 -409
  147. package/src/cli/commands/credentials.ts +3 -3
  148. package/src/cli/commands/email.ts +18 -13
  149. package/src/cli/commands/mcp.ts +16 -4
  150. package/src/cli/commands/oauth/__tests__/connect.test.ts +44 -44
  151. package/src/cli/commands/oauth/__tests__/disconnect.test.ts +21 -21
  152. package/src/cli/commands/oauth/__tests__/mode.test.ts +17 -17
  153. package/src/cli/commands/oauth/__tests__/ping.test.ts +16 -16
  154. package/src/cli/commands/oauth/__tests__/providers-delete.test.ts +31 -33
  155. package/src/cli/commands/oauth/__tests__/providers-register.test.ts +329 -0
  156. package/src/cli/commands/oauth/__tests__/providers-update.test.ts +116 -12
  157. package/src/cli/commands/oauth/__tests__/status.test.ts +10 -10
  158. package/src/cli/commands/oauth/__tests__/token.test.ts +7 -7
  159. package/src/cli/commands/oauth/apps.ts +7 -4
  160. package/src/cli/commands/oauth/connect.ts +6 -3
  161. package/src/cli/commands/oauth/disconnect.ts +1 -1
  162. package/src/cli/commands/oauth/providers.ts +200 -36
  163. package/src/cli/commands/oauth/shared.ts +5 -5
  164. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +259 -0
  165. package/src/cli/commands/platform/index.ts +107 -10
  166. package/src/cli/commands/usage.ts +10 -9
  167. package/src/cli/lib/daemon-credential-client.ts +4 -0
  168. package/src/cli/program.ts +1 -1
  169. package/src/config/bundled-skills/app-builder/SKILL.md +26 -249
  170. package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +105 -0
  171. package/src/config/bundled-skills/app-builder/references/INTERACTION_HOOKS.md +56 -0
  172. package/src/config/bundled-skills/app-builder/references/WIDGETS.md +125 -0
  173. package/src/config/bundled-skills/contacts/SKILL.md +3 -0
  174. package/src/config/bundled-skills/document/SKILL.md +4 -0
  175. package/src/config/bundled-skills/gmail/SKILL.md +1 -1
  176. package/src/config/bundled-skills/outlook/SKILL.md +7 -0
  177. package/src/config/bundled-skills/subagent/SKILL.md +21 -0
  178. package/src/config/bundled-skills/subagent/TOOLS.json +8 -4
  179. package/src/config/bundled-skills/tasks/SKILL.md +5 -0
  180. package/src/config/env-registry.ts +14 -0
  181. package/src/config/env.ts +21 -0
  182. package/src/config/feature-flag-registry.json +44 -5
  183. package/src/config/loader.ts +56 -1
  184. package/src/config/sanitize-for-transfer.ts +47 -0
  185. package/src/config/schema.ts +46 -5
  186. package/src/config/schemas/host-browser.ts +66 -0
  187. package/src/config/schemas/memory-lifecycle.ts +1 -1
  188. package/src/config/schemas/memory-retrieval.ts +103 -0
  189. package/src/config/schemas/security.ts +0 -6
  190. package/src/config/schemas/services.ts +8 -0
  191. package/src/config/types.ts +0 -1
  192. package/src/context/post-turn-tool-result-truncation.ts +176 -0
  193. package/src/context/window-manager.ts +19 -1
  194. package/src/credential-execution/approval-bridge.ts +49 -15
  195. package/src/daemon/__tests__/conversation-tool-setup.test.ts +186 -0
  196. package/src/daemon/app-source-watcher.ts +35 -0
  197. package/src/daemon/context-overflow-approval.ts +5 -0
  198. package/src/daemon/conversation-agent-loop-handlers.ts +17 -2
  199. package/src/daemon/conversation-agent-loop.ts +58 -24
  200. package/src/daemon/conversation-attachments.ts +40 -0
  201. package/src/daemon/conversation-process.ts +48 -1
  202. package/src/daemon/conversation-runtime-assembly.ts +118 -36
  203. package/src/daemon/conversation-surfaces.ts +37 -36
  204. package/src/daemon/conversation-tool-setup.ts +74 -8
  205. package/src/daemon/conversation-workspace.ts +12 -0
  206. package/src/daemon/conversation.ts +226 -8
  207. package/src/daemon/date-context.ts +10 -10
  208. package/src/daemon/first-greeting.ts +3 -2
  209. package/src/daemon/handlers/conversations.ts +9 -140
  210. package/src/daemon/handlers/shared.ts +58 -0
  211. package/src/daemon/handlers/skills.ts +232 -37
  212. package/src/daemon/host-bash-proxy.ts +48 -13
  213. package/src/daemon/host-browser-proxy.ts +191 -0
  214. package/src/daemon/host-cu-proxy.ts +36 -11
  215. package/src/daemon/host-file-proxy.ts +57 -9
  216. package/src/daemon/lifecycle.ts +65 -11
  217. package/src/daemon/message-protocol.ts +7 -0
  218. package/src/daemon/message-types/conversations.ts +55 -13
  219. package/src/daemon/message-types/host-browser.ts +100 -0
  220. package/src/daemon/message-types/messages.ts +5 -5
  221. package/src/daemon/message-types/skills.ts +10 -0
  222. package/src/daemon/message-types/subagents.ts +2 -0
  223. package/src/daemon/server.ts +92 -12
  224. package/src/daemon/tool-side-effects.ts +6 -0
  225. package/src/daemon/transport-hints.ts +5 -24
  226. package/src/inbound/platform-callback-registration.ts +18 -17
  227. package/src/mcp/client.ts +59 -24
  228. package/src/memory/app-store.ts +31 -1
  229. package/src/memory/conversation-crud.ts +23 -0
  230. package/src/memory/conversation-starters-cadence.ts +76 -0
  231. package/src/memory/conversation-title-service.ts +5 -2
  232. package/src/memory/db-init.ts +12 -0
  233. package/src/memory/embedding-backend.test.ts +75 -0
  234. package/src/memory/embedding-backend.ts +131 -5
  235. package/src/memory/embedding-gemini.test.ts +54 -0
  236. package/src/memory/embedding-gemini.ts +20 -9
  237. package/src/memory/embedding-local.ts +176 -17
  238. package/src/memory/graph/consolidation.ts +10 -23
  239. package/src/memory/graph/extraction-job.ts +15 -0
  240. package/src/memory/graph/retriever.ts +40 -22
  241. package/src/memory/graph/store.test.ts +7 -3
  242. package/src/memory/graph/store.ts +47 -12
  243. package/src/memory/llm-usage-store.ts +45 -4
  244. package/src/memory/migrations/213-oauth-providers-scope-separator.ts +13 -0
  245. package/src/memory/migrations/214-oauth-providers-refresh-url.ts +11 -0
  246. package/src/memory/migrations/215-oauth-providers-revoke.ts +14 -0
  247. package/src/memory/migrations/216-oauth-providers-token-auth-method.ts +30 -0
  248. package/src/memory/migrations/217-conversation-host-access.ts +40 -0
  249. package/src/memory/migrations/218-oauth-providers-logo-url.ts +11 -0
  250. package/src/memory/migrations/index.ts +6 -0
  251. package/src/memory/migrations/registry.ts +8 -0
  252. package/src/memory/schema/conversations.ts +1 -0
  253. package/src/memory/schema/oauth.ts +18 -13
  254. package/src/oauth/AGENTS.md +76 -0
  255. package/src/oauth/__tests__/identity-verifier.test.ts +24 -19
  256. package/src/oauth/__tests__/seed-providers-managed.test.ts +32 -0
  257. package/src/oauth/byo-connection.test.ts +8 -8
  258. package/src/oauth/byo-connection.ts +7 -7
  259. package/src/oauth/connect-orchestrator.ts +23 -21
  260. package/src/oauth/connect-types.ts +3 -3
  261. package/src/oauth/connection-resolver.test.ts +17 -4
  262. package/src/oauth/connection-resolver.ts +16 -16
  263. package/src/oauth/connection.ts +1 -1
  264. package/src/oauth/manual-token-connection.ts +13 -13
  265. package/src/oauth/oauth-store.ts +214 -100
  266. package/src/oauth/platform-connection.test.ts +3 -3
  267. package/src/oauth/platform-connection.ts +4 -4
  268. package/src/oauth/provider-serializer.ts +31 -5
  269. package/src/oauth/revoke.ts +76 -0
  270. package/src/oauth/seed-providers.ts +126 -87
  271. package/src/oauth/token-persistence.ts +1 -1
  272. package/src/permissions/permission-mode.ts +4 -11
  273. package/src/permissions/prompter.ts +13 -1
  274. package/src/permissions/v2-consent-policy.ts +87 -0
  275. package/src/prompts/system-prompt.ts +18 -21
  276. package/src/prompts/templates/BOOTSTRAP-REFERENCE.md +3 -65
  277. package/src/prompts/templates/BOOTSTRAP.md +59 -105
  278. package/src/providers/anthropic/client.ts +1 -0
  279. package/src/providers/types.ts +1 -1
  280. package/src/runtime/AGENTS.md +23 -0
  281. package/src/runtime/__tests__/browser-extension-pair-routes.test.ts +715 -0
  282. package/src/runtime/__tests__/capability-tokens.test.ts +258 -0
  283. package/src/runtime/__tests__/chrome-extension-registry.test.ts +518 -0
  284. package/src/runtime/assistant-event-hub.ts +2 -2
  285. package/src/runtime/auth/__tests__/guard-tests.test.ts +1 -0
  286. package/src/runtime/auth/__tests__/middleware.test.ts +116 -1
  287. package/src/runtime/auth/__tests__/route-policy.test.ts +8 -0
  288. package/src/runtime/auth/middleware.ts +98 -0
  289. package/src/runtime/auth/route-policy.ts +6 -7
  290. package/src/runtime/capability-tokens.ts +414 -0
  291. package/src/runtime/channel-approvals.ts +18 -5
  292. package/src/runtime/chrome-extension-registry.ts +332 -0
  293. package/src/runtime/confirmation-request-guardian-bridge.ts +6 -0
  294. package/src/runtime/guardian-decision-types.ts +7 -0
  295. package/src/runtime/http-server.ts +425 -70
  296. package/src/runtime/migrations/__tests__/rebind-secrets-credentials.test.ts +172 -0
  297. package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +276 -0
  298. package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +162 -0
  299. package/src/runtime/migrations/migration-transport.ts +6 -0
  300. package/src/runtime/migrations/migration-wizard.ts +22 -2
  301. package/src/runtime/migrations/rebind-secrets-screen.ts +76 -15
  302. package/src/runtime/migrations/vbundle-builder.ts +145 -38
  303. package/src/runtime/migrations/vbundle-import-analyzer.ts +19 -0
  304. package/src/runtime/migrations/vbundle-importer.ts +55 -5
  305. package/src/runtime/pending-interactions.ts +29 -13
  306. package/src/runtime/routes/approval-routes.ts +90 -16
  307. package/src/runtime/routes/browser-cdp-routes.ts +229 -0
  308. package/src/runtime/routes/browser-extension-pair-routes.ts +497 -0
  309. package/src/runtime/routes/conversation-analysis-routes.ts +2 -1
  310. package/src/runtime/routes/conversation-management-routes.ts +108 -0
  311. package/src/runtime/routes/conversation-routes.ts +301 -27
  312. package/src/runtime/routes/conversation-starter-routes.ts +78 -16
  313. package/src/runtime/routes/guardian-action-routes.ts +24 -13
  314. package/src/runtime/routes/host-browser-routes.ts +279 -0
  315. package/src/runtime/routes/host-file-routes.ts +9 -1
  316. package/src/runtime/routes/identity-routes.ts +259 -16
  317. package/src/runtime/routes/log-export-routes.ts +42 -22
  318. package/src/runtime/routes/memory-item-routes.ts +1 -7
  319. package/src/runtime/routes/migration-routes.ts +87 -2
  320. package/src/runtime/routes/oauth-apps.ts +15 -17
  321. package/src/runtime/routes/oauth-providers.ts +4 -0
  322. package/src/runtime/routes/schedule-routes.ts +24 -11
  323. package/src/runtime/routes/settings-routes.ts +9 -97
  324. package/src/runtime/routes/skills-routes.ts +52 -2
  325. package/src/runtime/routes/subagents-routes.ts +14 -10
  326. package/src/runtime/routes/usage-routes.ts +8 -7
  327. package/src/runtime/routes/workspace-routes.test.ts +22 -0
  328. package/src/runtime/routes/workspace-routes.ts +8 -1
  329. package/src/runtime/routes/workspace-utils.ts +2 -0
  330. package/src/schedule/scheduler.ts +7 -5
  331. package/src/security/ces-credential-client.ts +20 -0
  332. package/src/security/ces-rpc-credential-backend.ts +17 -0
  333. package/src/security/credential-backend.ts +5 -0
  334. package/src/security/oauth2.ts +42 -25
  335. package/src/security/secure-keys.ts +118 -25
  336. package/src/security/token-manager.ts +23 -10
  337. package/src/skills/catalog-files.ts +492 -0
  338. package/src/subagent/manager.ts +131 -26
  339. package/src/subagent/types.ts +19 -0
  340. package/src/tools/apps/executors.ts +11 -2
  341. package/src/tools/browser/__tests__/auth-detector.test.ts +202 -108
  342. package/src/tools/browser/auth-detector.ts +43 -12
  343. package/src/tools/browser/browser-execution.ts +645 -340
  344. package/src/tools/browser/browser-manager.ts +36 -12
  345. package/src/tools/browser/cdp-client/__tests__/accessibility-snapshot.test.ts +318 -0
  346. package/src/tools/browser/cdp-client/__tests__/cdp-dom-helpers.test.ts +1175 -0
  347. package/src/tools/browser/cdp-client/__tests__/cdp-inspect-client.test.ts +870 -0
  348. package/src/tools/browser/cdp-client/__tests__/extension-cdp-client.test.ts +330 -0
  349. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +377 -0
  350. package/src/tools/browser/cdp-client/__tests__/fixtures/ax-tree-nested-frames.json +64 -0
  351. package/src/tools/browser/cdp-client/__tests__/fixtures/ax-tree-simple.json +69 -0
  352. package/src/tools/browser/cdp-client/__tests__/local-cdp-client.test.ts +310 -0
  353. package/src/tools/browser/cdp-client/__tests__/types.test.ts +96 -0
  354. package/src/tools/browser/cdp-client/accessibility-snapshot.ts +387 -0
  355. package/src/tools/browser/cdp-client/cdp-dom-helpers.ts +695 -0
  356. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/discovery.test.ts +743 -0
  357. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +580 -0
  358. package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +578 -0
  359. package/src/tools/browser/cdp-client/cdp-inspect/ws-transport.ts +579 -0
  360. package/src/tools/browser/cdp-client/cdp-inspect-client.ts +635 -0
  361. package/src/tools/browser/cdp-client/errors.ts +34 -0
  362. package/src/tools/browser/cdp-client/extension-cdp-client.ts +125 -0
  363. package/src/tools/browser/cdp-client/factory.ts +204 -0
  364. package/src/tools/browser/cdp-client/index.ts +14 -0
  365. package/src/tools/browser/cdp-client/local-cdp-client.ts +187 -0
  366. package/src/tools/browser/cdp-client/types.ts +52 -0
  367. package/src/tools/filesystem/edit.ts +1 -1
  368. package/src/tools/filesystem/list.ts +1 -1
  369. package/src/tools/filesystem/read.ts +1 -1
  370. package/src/tools/filesystem/write.ts +2 -1
  371. package/src/tools/host-filesystem/edit.ts +1 -1
  372. package/src/tools/host-filesystem/read.ts +12 -15
  373. package/src/tools/host-filesystem/write.ts +1 -1
  374. package/src/tools/host-terminal/host-shell.ts +21 -16
  375. package/src/tools/permission-checker.ts +77 -82
  376. package/src/tools/registry.ts +0 -2
  377. package/src/tools/secret-detection-handler.ts +34 -0
  378. package/src/tools/shared/filesystem/image-read.ts +61 -40
  379. package/src/tools/subagent/spawn.ts +47 -3
  380. package/src/tools/subagent/status.ts +2 -0
  381. package/src/tools/system/register.ts +2 -16
  382. package/src/tools/terminal/safe-env.ts +7 -0
  383. package/src/tools/terminal/shell.ts +21 -16
  384. package/src/tools/tool-approval-handler.ts +48 -2
  385. package/src/tools/types.ts +2 -0
  386. package/src/util/platform.ts +14 -19
  387. package/src/workspace/top-level-renderer.ts +19 -1
  388. package/src/__tests__/chrome-cdp.test.ts +0 -419
  389. package/src/__tests__/permission-mode-sse.test.ts +0 -418
  390. package/src/__tests__/permission-mode-store.test.ts +0 -277
  391. package/src/browser-extension-relay/protocol.ts +0 -63
  392. package/src/browser-extension-relay/server.ts +0 -203
  393. package/src/config/schemas/sandbox.ts +0 -14
  394. package/src/permissions/permission-mode-store.ts +0 -180
  395. package/src/tools/browser/chrome-cdp.ts +0 -239
  396. package/src/tools/system/set-permission-mode.ts +0 -103
package/bun.lock CHANGED
@@ -5,53 +5,53 @@
5
5
  "": {
6
6
  "name": "@vellumai/assistant",
7
7
  "dependencies": {
8
- "@agentclientprotocol/sdk": "^0.16.1",
9
- "@anthropic-ai/sdk": "^0.78.0",
10
- "@google/genai": "^1.40.0",
11
- "@modelcontextprotocol/sdk": "^1.15.1",
12
- "@qdrant/js-client-rest": "^1.16.2",
13
- "@resvg/resvg-js": "^2.6.2",
14
- "@sentry/node": "^10.38.0",
8
+ "@agentclientprotocol/sdk": "0.16.1",
9
+ "@anthropic-ai/sdk": "0.78.0",
10
+ "@google/genai": "1.45.0",
11
+ "@modelcontextprotocol/sdk": "1.27.1",
12
+ "@qdrant/js-client-rest": "1.17.0",
13
+ "@resvg/resvg-js": "2.6.2",
14
+ "@sentry/node": "10.43.0",
15
15
  "@vellumai/ces-contracts": "file:../packages/ces-contracts",
16
16
  "@vellumai/credential-storage": "file:../packages/credential-storage",
17
17
  "@vellumai/egress-proxy": "file:../packages/egress-proxy",
18
- "agentmail": "^0.1.0",
19
- "archiver": "^7.0.1",
20
- "commander": "^13.1.0",
21
- "croner": "^10.0.1",
22
- "dotenv": "^17.3.1",
23
- "drizzle-orm": "^0.38.4",
24
- "jszip": "^3.10.1",
25
- "minimatch": "^10.2.4",
26
- "openai": "^6.18.0",
27
- "pino": "^9.6.0",
28
- "pino-pretty": "^13.1.3",
29
- "playwright": "^1.58.2",
30
- "postgres": "^3.4.8",
31
- "qrcode": "^1.5.4",
32
- "react": "^19.2.4",
33
- "rrule": "^2.8.1",
34
- "tldts": "^7.0.23",
18
+ "agentmail": "0.1.19",
19
+ "archiver": "7.0.1",
20
+ "commander": "13.1.0",
21
+ "croner": "10.0.1",
22
+ "dotenv": "17.3.1",
23
+ "drizzle-orm": "0.38.4",
24
+ "jszip": "3.10.1",
25
+ "minimatch": "10.2.4",
26
+ "openai": "6.29.0",
27
+ "pino": "9.14.0",
28
+ "pino-pretty": "13.1.3",
29
+ "playwright": "1.58.2",
30
+ "postgres": "3.4.8",
31
+ "qrcode": "1.5.4",
32
+ "react": "19.2.4",
33
+ "rrule": "2.8.1",
34
+ "tldts": "7.0.25",
35
35
  "tree-sitter-bash": "0.25.1",
36
- "uuid": "^11.1.0",
36
+ "uuid": "11.1.0",
37
37
  "web-tree-sitter": "0.26.5",
38
- "yaml": "^2.7.1",
39
- "zod": "^4.3.6",
38
+ "yaml": "2.8.2",
39
+ "zod": "4.3.6",
40
40
  },
41
41
  "devDependencies": {
42
- "@types/archiver": "^7.0.0",
43
- "@types/bun": "^1.2.4",
44
- "@types/node": "^25.2.2",
45
- "@types/react": "^19.2.14",
46
- "@types/uuid": "^10.0.0",
47
- "drizzle-kit": "^0.30.4",
48
- "eslint": "^10.0.0",
49
- "eslint-plugin-simple-import-sort": "^12.1.1",
50
- "fast-check": "^4.5.3",
51
- "knip": "^5.83.1",
52
- "prettier": "^3.8.1",
53
- "typescript": "^5.7.3",
54
- "typescript-eslint": "^8.54.0",
42
+ "@types/archiver": "7.0.0",
43
+ "@types/bun": "1.3.10",
44
+ "@types/node": "25.5.0",
45
+ "@types/react": "19.2.14",
46
+ "@types/uuid": "10.0.0",
47
+ "drizzle-kit": "0.30.6",
48
+ "eslint": "10.0.3",
49
+ "eslint-plugin-simple-import-sort": "12.1.1",
50
+ "fast-check": "4.6.0",
51
+ "knip": "5.86.0",
52
+ "prettier": "3.8.1",
53
+ "typescript": "5.9.3",
54
+ "typescript-eslint": "8.57.0",
55
55
  },
56
56
  },
57
57
  },
package/bunfig.toml CHANGED
@@ -1,3 +1,6 @@
1
+ [install]
2
+ exact = true
3
+
1
4
  [test]
2
5
  root = "./src"
3
6
  preload = ["./src/__tests__/test-preload.ts"]
@@ -566,7 +566,7 @@ The Anthropic provider places `cache_control: { type: 'ephemeral' }` on the **la
566
566
 
567
567
  The session injects a unified `<turn_context>` block into every user message, giving the model awareness of the current timestamp (with timezone), interface, channel, and actor identity. This replaces the former separate `<temporal_context>`, `<inbound_actor_context>`, and per-channel turn context blocks. The unified block persists in conversation history so the assistant retains temporal and actor grounding across turns. Legacy blocks from pre-change history are stripped for backward compatibility.
568
568
 
569
- The `timestamp:` field format is: `2026-04-02 (Wed) 14:30:00 -05:00 (America/Chicago)` — date, abbreviated weekday, local time, UTC offset, and IANA timezone name.
569
+ The `current_time:` field format is: `2026-04-02 (Wednesday) 14:30:00 -05:00 (America/Chicago)` — date, weekday name, local time, UTC offset, and IANA timezone name.
570
570
 
571
571
  ### Per-turn flow
572
572
 
@@ -65,6 +65,8 @@ export const CesRpcMethod = {
65
65
  DeleteCredential: "delete_credential",
66
66
  /** List all credential account names. */
67
67
  ListCredentials: "list_credentials",
68
+ /** Bulk-import credentials (set multiple at once). */
69
+ BulkSetCredentials: "bulk_set_credentials",
68
70
  } as const;
69
71
 
70
72
  export type CesRpcMethod =
@@ -513,6 +515,38 @@ export type ListCredentialsResponse = z.infer<
513
515
  typeof ListCredentialsResponseSchema
514
516
  >;
515
517
 
518
+ // ---------------------------------------------------------------------------
519
+ // bulk_set_credentials
520
+ // ---------------------------------------------------------------------------
521
+
522
+ export const BulkSetCredentialsSchema = z.object({
523
+ /** Array of credentials to set in bulk. */
524
+ credentials: z.array(
525
+ z.object({
526
+ /** The account name to store the credential under. */
527
+ account: z.string(),
528
+ /** The credential value to store. */
529
+ value: z.string(),
530
+ }),
531
+ ),
532
+ });
533
+ export type BulkSetCredentials = z.infer<typeof BulkSetCredentialsSchema>;
534
+
535
+ export const BulkSetCredentialsResponseSchema = z.object({
536
+ /** Per-credential results indicating success or failure. */
537
+ results: z.array(
538
+ z.object({
539
+ /** The account name that was set. */
540
+ account: z.string(),
541
+ /** Whether the credential was successfully stored. */
542
+ ok: z.boolean(),
543
+ }),
544
+ ),
545
+ });
546
+ export type BulkSetCredentialsResponse = z.infer<
547
+ typeof BulkSetCredentialsResponseSchema
548
+ >;
549
+
516
550
  // ---------------------------------------------------------------------------
517
551
  // Full RPC contract type map
518
552
  // ---------------------------------------------------------------------------
@@ -574,6 +608,10 @@ export interface CesRpcContract {
574
608
  request: ListCredentials;
575
609
  response: ListCredentialsResponse;
576
610
  };
611
+ [CesRpcMethod.BulkSetCredentials]: {
612
+ request: BulkSetCredentials;
613
+ response: BulkSetCredentialsResponse;
614
+ };
577
615
  }
578
616
 
579
617
  /**
@@ -632,4 +670,8 @@ export const CesRpcSchemas = {
632
670
  request: ListCredentialsSchema,
633
671
  response: ListCredentialsResponseSchema,
634
672
  },
673
+ [CesRpcMethod.BulkSetCredentials]: {
674
+ request: BulkSetCredentialsSchema,
675
+ response: BulkSetCredentialsResponseSchema,
676
+ },
635
677
  } as const;
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.6.1
6
+ version: 0.6.3
7
7
  description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
8
8
  servers:
9
9
  - url: http://127.0.0.1:7821
@@ -1169,15 +1169,9 @@ paths:
1169
1169
  responses:
1170
1170
  "200":
1171
1171
  description: Successful response
1172
- /v1/browser-relay/command:
1172
+ /v1/browser-cdp:
1173
1173
  post:
1174
- operationId: browserrelay_command_post
1175
- responses:
1176
- "200":
1177
- description: Successful response
1178
- /v1/browser-relay/status:
1179
- get:
1180
- operationId: browserrelay_status_get
1174
+ operationId: browsercdp_post
1181
1175
  responses:
1182
1176
  "200":
1183
1177
  description: Successful response
@@ -2412,7 +2406,12 @@ paths:
2412
2406
  description: Total number of available starters
2413
2407
  status:
2414
2408
  type: string
2415
- description: "One of: ready, empty, generating"
2409
+ enum:
2410
+ - ready
2411
+ - refreshing
2412
+ - empty
2413
+ - generating
2414
+ description: "One of: ready, refreshing, empty, generating"
2416
2415
  required:
2417
2416
  - starters
2418
2417
  - total
@@ -2553,6 +2552,75 @@ paths:
2553
2552
  required: true
2554
2553
  schema:
2555
2554
  type: string
2555
+ /v1/conversations/{id}/host-access:
2556
+ get:
2557
+ operationId: conversations_by_id_hostaccess_get
2558
+ summary: Get conversation host access
2559
+ description: Return whether the conversation can use host tools.
2560
+ tags:
2561
+ - conversations
2562
+ responses:
2563
+ "200":
2564
+ description: Successful response
2565
+ content:
2566
+ application/json:
2567
+ schema:
2568
+ type: object
2569
+ properties:
2570
+ conversationId:
2571
+ type: string
2572
+ hostAccess:
2573
+ type: boolean
2574
+ required:
2575
+ - conversationId
2576
+ - hostAccess
2577
+ additionalProperties: false
2578
+ parameters:
2579
+ - name: id
2580
+ in: path
2581
+ required: true
2582
+ schema:
2583
+ type: string
2584
+ patch:
2585
+ operationId: conversations_by_id_hostaccess_patch
2586
+ summary: Update conversation host access
2587
+ description: Enable or disable host access for a conversation.
2588
+ tags:
2589
+ - conversations
2590
+ responses:
2591
+ "200":
2592
+ description: Successful response
2593
+ content:
2594
+ application/json:
2595
+ schema:
2596
+ type: object
2597
+ properties:
2598
+ conversationId:
2599
+ type: string
2600
+ hostAccess:
2601
+ type: boolean
2602
+ required:
2603
+ - conversationId
2604
+ - hostAccess
2605
+ additionalProperties: false
2606
+ parameters:
2607
+ - name: id
2608
+ in: path
2609
+ required: true
2610
+ schema:
2611
+ type: string
2612
+ requestBody:
2613
+ required: true
2614
+ content:
2615
+ application/json:
2616
+ schema:
2617
+ type: object
2618
+ properties:
2619
+ hostAccess:
2620
+ type: boolean
2621
+ required:
2622
+ - hostAccess
2623
+ additionalProperties: false
2556
2624
  /v1/conversations/{id}/name:
2557
2625
  patch:
2558
2626
  operationId: conversations_by_id_name_patch
@@ -2825,10 +2893,13 @@ paths:
2825
2893
  type: string
2826
2894
  conversationType:
2827
2895
  type: string
2896
+ hostAccess:
2897
+ type: boolean
2828
2898
  required:
2829
2899
  - conversationId
2830
2900
  - title
2831
2901
  - conversationType
2902
+ - hostAccess
2832
2903
  additionalProperties: false
2833
2904
  requestBody:
2834
2905
  required: true
@@ -3140,6 +3211,11 @@ paths:
3140
3211
  conversationId:
3141
3212
  description: Scope to a single conversation
3142
3213
  type: string
3214
+ full:
3215
+ description:
3216
+ Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
3217
+ debugging.
3218
+ type: boolean
3143
3219
  startTime:
3144
3220
  description: Lower bound epoch ms
3145
3221
  type: number
@@ -3836,6 +3912,43 @@ paths:
3836
3912
  required:
3837
3913
  - requestId
3838
3914
  additionalProperties: false
3915
+ /v1/host-browser-result:
3916
+ post:
3917
+ operationId: hostbrowserresult_post
3918
+ summary: Submit host browser result
3919
+ description: Resolve a pending host browser request by requestId.
3920
+ tags:
3921
+ - host
3922
+ responses:
3923
+ "200":
3924
+ description: Successful response
3925
+ content:
3926
+ application/json:
3927
+ schema:
3928
+ type: object
3929
+ properties:
3930
+ accepted:
3931
+ type: boolean
3932
+ required:
3933
+ - accepted
3934
+ additionalProperties: false
3935
+ requestBody:
3936
+ required: true
3937
+ content:
3938
+ application/json:
3939
+ schema:
3940
+ type: object
3941
+ properties:
3942
+ requestId:
3943
+ type: string
3944
+ description: Pending browser request ID
3945
+ content:
3946
+ type: string
3947
+ isError:
3948
+ type: boolean
3949
+ required:
3950
+ - requestId
3951
+ additionalProperties: false
3839
3952
  /v1/host-cu-result:
3840
3953
  post:
3841
3954
  operationId: hostcuresult_post
@@ -3930,6 +4043,9 @@ paths:
3930
4043
  isError:
3931
4044
  type: boolean
3932
4045
  description: Whether the result is an error
4046
+ imageData:
4047
+ type: string
4048
+ description: Optional base64-encoded image bytes for successful image reads
3933
4049
  required:
3934
4050
  - requestId
3935
4051
  additionalProperties: false
@@ -4298,6 +4414,11 @@ paths:
4298
4414
  conversationId:
4299
4415
  description: Scope to a single conversation
4300
4416
  type: string
4417
+ full:
4418
+ description:
4419
+ Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
4420
+ debugging.
4421
+ type: boolean
4301
4422
  startTime:
4302
4423
  description: Lower bound epoch ms
4303
4424
  type: number
@@ -5109,63 +5230,6 @@ paths:
5109
5230
  schema:
5110
5231
  type: string
5111
5232
  description: Conversation ID
5112
- /v1/permission-mode:
5113
- get:
5114
- operationId: permissionmode_get
5115
- summary: Get permission mode
5116
- description: Return the current two-axis permission mode (askBeforeActing, hostAccess).
5117
- tags:
5118
- - settings
5119
- responses:
5120
- "200":
5121
- description: Successful response
5122
- content:
5123
- application/json:
5124
- schema:
5125
- type: object
5126
- properties:
5127
- askBeforeActing:
5128
- type: boolean
5129
- hostAccess:
5130
- type: boolean
5131
- required:
5132
- - askBeforeActing
5133
- - hostAccess
5134
- additionalProperties: false
5135
- put:
5136
- operationId: permissionmode_put
5137
- summary: Update permission mode
5138
- description: Update the two-axis permission mode. Requires the permission-controls-v2 feature flag.
5139
- tags:
5140
- - settings
5141
- responses:
5142
- "200":
5143
- description: Successful response
5144
- content:
5145
- application/json:
5146
- schema:
5147
- type: object
5148
- properties:
5149
- askBeforeActing:
5150
- type: boolean
5151
- hostAccess:
5152
- type: boolean
5153
- required:
5154
- - askBeforeActing
5155
- - hostAccess
5156
- additionalProperties: false
5157
- requestBody:
5158
- required: true
5159
- content:
5160
- application/json:
5161
- schema:
5162
- type: object
5163
- properties:
5164
- askBeforeActing:
5165
- type: boolean
5166
- hostAccess:
5167
- type: boolean
5168
- additionalProperties: false
5169
5233
  /v1/profiler/runs:
5170
5234
  get:
5171
5235
  operationId: profiler_runs_get
@@ -6710,6 +6774,57 @@ paths:
6710
6774
  required: true
6711
6775
  schema:
6712
6776
  type: string
6777
+ /v1/skills/{id}/files/content:
6778
+ get:
6779
+ operationId: skills_by_id_files_content_get
6780
+ summary: Get skill file content
6781
+ description: Return the content of a single file belonging to an installed or catalog skill.
6782
+ tags:
6783
+ - skills
6784
+ responses:
6785
+ "200":
6786
+ description: Successful response
6787
+ content:
6788
+ application/json:
6789
+ schema:
6790
+ type: object
6791
+ properties:
6792
+ path:
6793
+ type: string
6794
+ name:
6795
+ type: string
6796
+ size:
6797
+ type: integer
6798
+ minimum: -9007199254740991
6799
+ maximum: 9007199254740991
6800
+ mimeType:
6801
+ type: string
6802
+ isBinary:
6803
+ type: boolean
6804
+ content:
6805
+ anyOf:
6806
+ - type: string
6807
+ - type: "null"
6808
+ required:
6809
+ - path
6810
+ - name
6811
+ - size
6812
+ - mimeType
6813
+ - isBinary
6814
+ - content
6815
+ additionalProperties: false
6816
+ parameters:
6817
+ - name: id
6818
+ in: path
6819
+ required: true
6820
+ schema:
6821
+ type: string
6822
+ - name: path
6823
+ in: query
6824
+ required: true
6825
+ schema:
6826
+ type: string
6827
+ description: Relative path of the file within the skill directory
6713
6828
  /v1/skills/{id}/inspect:
6714
6829
  get:
6715
6830
  operationId: skills_by_id_inspect_get
@@ -7672,7 +7787,7 @@ paths:
7672
7787
  get:
7673
7788
  operationId: usage_breakdown_get
7674
7789
  summary: Get usage breakdown
7675
- description: Return grouped usage breakdown (by actor, provider, or model).
7790
+ description: Return grouped usage breakdown (by actor, provider, model, or conversation).
7676
7791
  tags:
7677
7792
  - usage
7678
7793
  responses:
@@ -7708,7 +7823,7 @@ paths:
7708
7823
  required: false
7709
7824
  schema:
7710
7825
  type: string
7711
- description: "Group by: actor, provider, or model (required)"
7826
+ description: "Group by: actor, provider, model, or conversation (required)"
7712
7827
  /v1/usage/daily:
7713
7828
  get:
7714
7829
  operationId: usage_daily_get
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/assistant",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -29,38 +29,38 @@
29
29
  "prepack": "node ../scripts/prepack-bundled-deps.mjs"
30
30
  },
31
31
  "dependencies": {
32
- "@agentclientprotocol/sdk": "^0.16.1",
33
- "@anthropic-ai/sdk": "^0.78.0",
34
- "@google/genai": "^1.40.0",
35
- "@modelcontextprotocol/sdk": "^1.15.1",
36
- "@qdrant/js-client-rest": "^1.16.2",
37
- "@resvg/resvg-js": "^2.6.2",
38
- "@sentry/node": "^10.38.0",
32
+ "@agentclientprotocol/sdk": "0.16.1",
33
+ "@anthropic-ai/sdk": "0.78.0",
34
+ "@google/genai": "1.45.0",
35
+ "@modelcontextprotocol/sdk": "1.27.1",
36
+ "@qdrant/js-client-rest": "1.17.0",
37
+ "@resvg/resvg-js": "2.6.2",
38
+ "@sentry/node": "10.43.0",
39
39
  "@vellumai/ces-contracts": "file:../packages/ces-contracts",
40
40
  "@vellumai/credential-storage": "file:../packages/credential-storage",
41
41
  "@vellumai/egress-proxy": "file:../packages/egress-proxy",
42
- "agentmail": "^0.1.0",
43
- "archiver": "^7.0.1",
44
- "commander": "^13.1.0",
45
- "croner": "^10.0.1",
46
- "dotenv": "^17.3.1",
47
- "drizzle-orm": "^0.38.4",
48
- "jszip": "^3.10.1",
49
- "minimatch": "^10.2.4",
50
- "openai": "^6.18.0",
51
- "pino": "^9.6.0",
52
- "pino-pretty": "^13.1.3",
53
- "playwright": "^1.58.2",
54
- "postgres": "^3.4.8",
55
- "qrcode": "^1.5.4",
56
- "react": "^19.2.4",
57
- "rrule": "^2.8.1",
58
- "tldts": "^7.0.23",
42
+ "agentmail": "0.1.19",
43
+ "archiver": "7.0.1",
44
+ "commander": "13.1.0",
45
+ "croner": "10.0.1",
46
+ "dotenv": "17.3.1",
47
+ "drizzle-orm": "0.38.4",
48
+ "jszip": "3.10.1",
49
+ "minimatch": "10.2.4",
50
+ "openai": "6.29.0",
51
+ "pino": "9.14.0",
52
+ "pino-pretty": "13.1.3",
53
+ "playwright": "1.58.2",
54
+ "postgres": "3.4.8",
55
+ "qrcode": "1.5.4",
56
+ "react": "19.2.4",
57
+ "rrule": "2.8.1",
58
+ "tldts": "7.0.25",
59
59
  "tree-sitter-bash": "0.25.1",
60
- "uuid": "^11.1.0",
60
+ "uuid": "11.1.0",
61
61
  "web-tree-sitter": "0.26.5",
62
- "yaml": "^2.7.1",
63
- "zod": "^4.3.6"
62
+ "yaml": "2.8.2",
63
+ "zod": "4.3.6"
64
64
  },
65
65
  "engines": {
66
66
  "node": ">=20.12.0"
@@ -75,18 +75,18 @@
75
75
  "path-to-regexp": "^8.4.0"
76
76
  },
77
77
  "devDependencies": {
78
- "@types/archiver": "^7.0.0",
79
- "@types/bun": "^1.2.4",
80
- "@types/node": "^25.2.2",
81
- "@types/react": "^19.2.14",
82
- "@types/uuid": "^10.0.0",
83
- "drizzle-kit": "^0.30.4",
84
- "eslint": "^10.0.0",
85
- "eslint-plugin-simple-import-sort": "^12.1.1",
86
- "fast-check": "^4.5.3",
87
- "knip": "^5.83.1",
88
- "prettier": "^3.8.1",
89
- "typescript": "^5.7.3",
90
- "typescript-eslint": "^8.54.0"
78
+ "@types/archiver": "7.0.0",
79
+ "@types/bun": "1.3.10",
80
+ "@types/node": "25.5.0",
81
+ "@types/react": "19.2.14",
82
+ "@types/uuid": "10.0.0",
83
+ "drizzle-kit": "0.30.6",
84
+ "eslint": "10.0.3",
85
+ "eslint-plugin-simple-import-sort": "12.1.1",
86
+ "fast-check": "4.6.0",
87
+ "knip": "5.86.0",
88
+ "prettier": "3.8.1",
89
+ "typescript": "5.9.3",
90
+ "typescript-eslint": "8.57.0"
91
91
  }
92
92
  }
@@ -212,8 +212,7 @@ async function collectRoutesFromModules(): Promise<RouteEntry[]> {
212
212
  * here if openapi.yaml is also stale. Plan items B2/C2 address this gap.
213
213
  */
214
214
  const INLINE_ROUTES: RouteEntry[] = [
215
- { endpoint: "browser-relay/status", method: "GET" },
216
- { endpoint: "browser-relay/command", method: "POST" },
215
+ { endpoint: "browser-cdp", method: "POST" },
217
216
  { endpoint: "conversations", method: "GET" },
218
217
  { endpoint: "conversations/seen", method: "POST" },
219
218
  { endpoint: "conversations/unread", method: "POST" },