@vellumai/assistant 0.4.44 → 0.4.45

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 (681) hide show
  1. package/.prettierignore +4 -0
  2. package/ARCHITECTURE.md +34 -31
  3. package/README.md +4 -4
  4. package/bun.lock +10 -35
  5. package/docs/architecture/integrations.md +102 -197
  6. package/docs/architecture/keychain-broker.md +1 -1
  7. package/docs/architecture/memory.md +2 -2
  8. package/docs/architecture/scheduling.md +1 -1
  9. package/docs/architecture/security.md +11 -11
  10. package/docs/error-handling.md +1 -1
  11. package/docs/trusted-contact-access.md +3 -3
  12. package/drizzle/meta/0000_snapshot.json +34 -100
  13. package/drizzle/meta/_journal.json +1 -1
  14. package/drizzle.config.ts +4 -4
  15. package/package.json +3 -2
  16. package/scripts/capture-x-graphql.ts +237 -141
  17. package/scripts/generate-bundled-tool-registry.ts +223 -0
  18. package/src/__tests__/access-request-decision.test.ts +0 -1
  19. package/src/__tests__/actor-token-service.test.ts +23 -24
  20. package/src/__tests__/agent-loop.test.ts +0 -131
  21. package/src/__tests__/always-loaded-tools-guard.test.ts +71 -0
  22. package/src/__tests__/amazon-cdp-integration.test.ts +11 -9
  23. package/src/__tests__/approval-primitive.test.ts +0 -1
  24. package/src/__tests__/approval-routes-http.test.ts +11 -1
  25. package/src/__tests__/asset-materialize-tool.test.ts +0 -1
  26. package/src/__tests__/asset-search-tool.test.ts +0 -1
  27. package/src/__tests__/assistant-attachment-directive.test.ts +1 -1
  28. package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -1
  29. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
  30. package/src/__tests__/assistant-feature-flags-integration.test.ts +70 -18
  31. package/src/__tests__/assistant-id-boundary-guard.test.ts +6 -6
  32. package/src/__tests__/attachments-store.test.ts +0 -1
  33. package/src/__tests__/avatar-e2e.test.ts +74 -115
  34. package/src/__tests__/avatar-router.test.ts +25 -62
  35. package/src/__tests__/browser-manager.test.ts +24 -0
  36. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +4 -3
  37. package/src/__tests__/browser-skill-endstate.test.ts +8 -11
  38. package/src/__tests__/btw-routes.test.ts +326 -0
  39. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
  40. package/src/__tests__/call-controller.test.ts +0 -1
  41. package/src/__tests__/call-conversation-messages.test.ts +0 -1
  42. package/src/__tests__/call-domain.test.ts +0 -1
  43. package/src/__tests__/call-pointer-messages.test.ts +0 -1
  44. package/src/__tests__/call-recovery.test.ts +0 -1
  45. package/src/__tests__/call-routes-http.test.ts +0 -1
  46. package/src/__tests__/call-store.test.ts +0 -1
  47. package/src/__tests__/canonical-guardian-store.test.ts +0 -1
  48. package/src/__tests__/channel-approval-routes.test.ts +1 -1
  49. package/src/__tests__/channel-approvals.test.ts +1 -1
  50. package/src/__tests__/channel-delivery-store.test.ts +0 -1
  51. package/src/__tests__/channel-guardian.test.ts +5 -7
  52. package/src/__tests__/channel-retry-sweep.test.ts +0 -1
  53. package/src/__tests__/checker.test.ts +4 -11
  54. package/src/__tests__/compaction.benchmark.test.ts +16 -14
  55. package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
  56. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  57. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
  58. package/src/__tests__/computer-use-tools.test.ts +35 -31
  59. package/src/__tests__/config-schema.test.ts +11 -15
  60. package/src/__tests__/config-watcher.test.ts +0 -1
  61. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  62. package/src/__tests__/conflict-store.test.ts +0 -1
  63. package/src/__tests__/connection-policy.test.ts +4 -7
  64. package/src/__tests__/contacts-tools.test.ts +0 -1
  65. package/src/__tests__/context-memory-e2e.test.ts +2 -4
  66. package/src/__tests__/context-overflow-reducer.test.ts +2 -4
  67. package/src/__tests__/context-window-manager.test.ts +147 -60
  68. package/src/__tests__/contradiction-checker.test.ts +0 -1
  69. package/src/__tests__/conversation-attention-store.test.ts +0 -1
  70. package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
  71. package/src/__tests__/conversation-pairing.test.ts +2 -2
  72. package/src/__tests__/conversation-routes-guardian-reply.test.ts +25 -1
  73. package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
  74. package/src/__tests__/conversation-store.test.ts +0 -1
  75. package/src/__tests__/conversation-unread-route.test.ts +1 -2
  76. package/src/__tests__/credential-security-invariants.test.ts +7 -8
  77. package/src/__tests__/cross-provider-web-search.test.ts +353 -0
  78. package/src/__tests__/daemon-assistant-events.test.ts +6 -7
  79. package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
  80. package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
  81. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
  82. package/src/__tests__/diagnostics-export.test.ts +189 -0
  83. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  84. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
  85. package/src/__tests__/entity-extractor.test.ts +0 -1
  86. package/src/__tests__/entity-search.test.ts +0 -1
  87. package/src/__tests__/ephemeral-permissions.test.ts +2 -4
  88. package/src/__tests__/file-read-tool.test.ts +86 -0
  89. package/src/__tests__/followup-tools.test.ts +0 -1
  90. package/src/__tests__/frontmatter.test.ts +77 -34
  91. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  92. package/src/__tests__/gateway-only-guard.test.ts +1 -1
  93. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
  94. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
  95. package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
  96. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
  97. package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
  98. package/src/__tests__/guardian-action-store.test.ts +0 -1
  99. package/src/__tests__/guardian-action-sweep.test.ts +0 -1
  100. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
  101. package/src/__tests__/guardian-dispatch.test.ts +1 -2
  102. package/src/__tests__/guardian-grant-minting.test.ts +1 -1
  103. package/src/__tests__/guardian-outbound-http.test.ts +0 -1
  104. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
  105. package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
  106. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  107. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
  108. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
  109. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
  110. package/src/__tests__/host-bash-proxy.test.ts +335 -0
  111. package/src/__tests__/host-file-proxy.test.ts +374 -0
  112. package/src/__tests__/host-shell-tool.test.ts +147 -1
  113. package/src/__tests__/http-user-message-parity.test.ts +361 -0
  114. package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
  115. package/src/__tests__/integration-status.test.ts +3 -8
  116. package/src/__tests__/intent-routing.test.ts +7 -46
  117. package/src/__tests__/invite-redemption-service.test.ts +0 -1
  118. package/src/__tests__/invite-routes-http.test.ts +0 -1
  119. package/src/__tests__/llm-usage-store.test.ts +0 -1
  120. package/src/__tests__/managed-avatar-client.test.ts +101 -55
  121. package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
  122. package/src/__tests__/managed-store.test.ts +94 -21
  123. package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
  124. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
  125. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
  126. package/src/__tests__/memory-recall-quality.test.ts +0 -1
  127. package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
  128. package/src/__tests__/memory-regressions.test.ts +0 -1
  129. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
  130. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
  131. package/src/__tests__/messaging-send-tool.test.ts +35 -0
  132. package/src/__tests__/messaging-skill-split.test.ts +138 -0
  133. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
  134. package/src/__tests__/migration-export-http.test.ts +2 -3
  135. package/src/__tests__/migration-import-commit-http.test.ts +1 -2
  136. package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
  137. package/src/__tests__/migration-validate-http.test.ts +1 -2
  138. package/src/__tests__/native-web-search.test.ts +475 -0
  139. package/src/__tests__/navigate-settings-tab.test.ts +84 -0
  140. package/src/__tests__/non-member-access-request.test.ts +0 -1
  141. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  142. package/src/__tests__/notification-decision-strategy.test.ts +6 -6
  143. package/src/__tests__/notification-deep-link.test.ts +7 -7
  144. package/src/__tests__/notification-guardian-path.test.ts +2 -3
  145. package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
  146. package/src/__tests__/notification-thread-candidates.test.ts +4 -4
  147. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
  148. package/src/__tests__/playbook-execution.test.ts +0 -1
  149. package/src/__tests__/playbook-tools.test.ts +0 -1
  150. package/src/__tests__/profile-compiler.test.ts +0 -1
  151. package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
  152. package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
  153. package/src/__tests__/recording-handler.test.ts +30 -94
  154. package/src/__tests__/registry.test.ts +28 -35
  155. package/src/__tests__/relay-server.test.ts +0 -1
  156. package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
  157. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  158. package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
  159. package/src/__tests__/runtime-events-sse.test.ts +0 -1
  160. package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
  161. package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
  162. package/src/__tests__/schedule-store.test.ts +441 -1
  163. package/src/__tests__/schedule-tools.test.ts +468 -7
  164. package/src/__tests__/scheduler-recurrence.test.ts +196 -23
  165. package/src/__tests__/scoped-approval-grants.test.ts +0 -1
  166. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
  167. package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
  168. package/src/__tests__/secret-response-routing.test.ts +4 -1
  169. package/src/__tests__/send-endpoint-busy.test.ts +14 -2
  170. package/src/__tests__/send-notification-tool.test.ts +0 -7
  171. package/src/__tests__/sequence-store.test.ts +0 -1
  172. package/src/__tests__/server-history-render.test.ts +1 -2
  173. package/src/__tests__/session-abort-tool-results.test.ts +0 -1
  174. package/src/__tests__/session-agent-loop.test.ts +46 -6
  175. package/src/__tests__/session-confirmation-signals.test.ts +0 -1
  176. package/src/__tests__/session-conflict-gate.test.ts +2 -6
  177. package/src/__tests__/session-error.test.ts +5 -14
  178. package/src/__tests__/session-init.benchmark.test.ts +3 -5
  179. package/src/__tests__/session-load-history-repair.test.ts +0 -1
  180. package/src/__tests__/session-media-retry.test.ts +12 -74
  181. package/src/__tests__/session-pre-run-repair.test.ts +0 -1
  182. package/src/__tests__/session-profile-injection.test.ts +2 -6
  183. package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
  184. package/src/__tests__/session-queue.test.ts +94 -139
  185. package/src/__tests__/session-skill-tools.test.ts +115 -115
  186. package/src/__tests__/session-slash-known.test.ts +0 -1
  187. package/src/__tests__/session-slash-queue.test.ts +0 -1
  188. package/src/__tests__/session-slash-unknown.test.ts +0 -1
  189. package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
  190. package/src/__tests__/session-usage.test.ts +0 -1
  191. package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
  192. package/src/__tests__/session-workspace-injection.test.ts +2 -6
  193. package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
  194. package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
  195. package/src/__tests__/skill-feature-flags.test.ts +125 -18
  196. package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
  197. package/src/__tests__/skill-load-tool.test.ts +194 -2
  198. package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
  199. package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
  200. package/src/__tests__/skills.test.ts +14 -53
  201. package/src/__tests__/slack-channel-config.test.ts +0 -1
  202. package/src/__tests__/slack-inbound-verification.test.ts +0 -1
  203. package/src/__tests__/slack-skill.test.ts +1 -1
  204. package/src/__tests__/subagent-tools.test.ts +2 -2
  205. package/src/__tests__/system-prompt.test.ts +4 -3
  206. package/src/__tests__/task-compiler.test.ts +0 -1
  207. package/src/__tests__/task-management-tools.test.ts +0 -1
  208. package/src/__tests__/task-memory-cleanup.test.ts +0 -1
  209. package/src/__tests__/task-runner.test.ts +0 -1
  210. package/src/__tests__/task-scheduler.test.ts +0 -1
  211. package/src/__tests__/terminal-tools.test.ts +0 -1
  212. package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
  213. package/src/__tests__/thread-seed-composer.test.ts +5 -5
  214. package/src/__tests__/tool-approval-handler.test.ts +0 -1
  215. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  216. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  217. package/src/__tests__/tool-executor.test.ts +8 -86
  218. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
  219. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  220. package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
  221. package/src/__tests__/trust-store.test.ts +80 -4
  222. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  223. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
  224. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
  225. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  226. package/src/__tests__/trusted-contact-verification.test.ts +0 -1
  227. package/src/__tests__/twilio-provider.test.ts +0 -1
  228. package/src/__tests__/twilio-routes.test.ts +0 -1
  229. package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
  230. package/src/__tests__/update-bulletin.test.ts +0 -1
  231. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
  232. package/src/__tests__/usage-routes.test.ts +0 -1
  233. package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
  234. package/src/__tests__/voice-invite-redemption.test.ts +0 -1
  235. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
  236. package/src/__tests__/voice-session-bridge.test.ts +9 -1
  237. package/src/__tests__/web-fetch.test.ts +57 -0
  238. package/src/__tests__/workspace-git-service.test.ts +5 -14
  239. package/src/__tests__/workspace-policy.test.ts +0 -1
  240. package/src/agent/loop.ts +22 -34
  241. package/src/bundler/bundle-signer.ts +4 -4
  242. package/src/calls/call-controller.ts +1 -1
  243. package/src/calls/relay-server.ts +1 -1
  244. package/src/calls/twilio-rest.ts +1 -1
  245. package/src/calls/voice-session-bridge.ts +3 -1
  246. package/src/cli/__tests__/notifications.test.ts +3 -4
  247. package/src/cli/commands/map.ts +2 -6
  248. package/src/cli/commands/mcp.ts +73 -15
  249. package/src/cli/commands/notifications.ts +4 -4
  250. package/src/cli/commands/sessions.ts +9 -1
  251. package/src/cli/commands/skills.ts +6 -10
  252. package/src/cli/http-client.ts +2 -3
  253. package/src/cli/main-screen.tsx +10 -10
  254. package/src/cli/program.ts +0 -4
  255. package/src/cli/reference.ts +0 -2
  256. package/src/cli.ts +15 -9
  257. package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
  258. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
  259. package/src/config/bundled-skills/app-builder/SKILL.md +6 -1
  260. package/src/config/bundled-skills/browser/SKILL.md +6 -1
  261. package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
  262. package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
  263. package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
  264. package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
  265. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
  266. package/src/config/bundled-skills/contacts/SKILL.md +10 -1
  267. package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
  268. package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
  269. package/src/config/bundled-skills/document/SKILL.md +4 -1
  270. package/src/config/bundled-skills/doordash/SKILL.md +8 -1
  271. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
  272. package/src/config/bundled-skills/followups/SKILL.md +4 -1
  273. package/src/config/bundled-skills/gmail/SKILL.md +180 -0
  274. package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
  275. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
  276. package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
  277. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
  278. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
  279. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
  280. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
  281. package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
  282. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
  283. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
  284. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
  285. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
  286. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
  287. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
  288. package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
  289. package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
  290. package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
  291. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
  292. package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
  293. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
  294. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
  295. package/src/config/bundled-skills/messaging/SKILL.md +23 -139
  296. package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
  297. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
  298. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
  299. package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
  300. package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
  301. package/src/config/bundled-skills/notifications/SKILL.md +5 -1
  302. package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
  303. package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
  304. package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → orchestration/tools/swarm-delegate.ts} +3 -3
  305. package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
  306. package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
  307. package/src/config/bundled-skills/schedule/SKILL.md +70 -9
  308. package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
  309. package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
  310. package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
  311. package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
  312. package/src/config/bundled-skills/sequences/SKILL.md +47 -0
  313. package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
  314. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
  315. package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
  316. package/src/config/bundled-skills/settings/SKILL.md +12 -0
  317. package/src/config/bundled-skills/settings/TOOLS.json +112 -0
  318. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
  319. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
  320. package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
  321. package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
  322. package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
  323. package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
  324. package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
  325. package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
  326. package/src/config/bundled-skills/slack/SKILL.md +5 -1
  327. package/src/config/bundled-skills/subagent/SKILL.md +4 -1
  328. package/src/config/bundled-skills/tasks/SKILL.md +5 -2
  329. package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
  330. package/src/config/bundled-skills/watcher/SKILL.md +4 -1
  331. package/src/config/bundled-tool-registry.ts +118 -107
  332. package/src/config/env.ts +5 -2
  333. package/src/config/feature-flag-registry.json +25 -9
  334. package/src/config/loader.ts +10 -2
  335. package/src/config/schema.ts +19 -16
  336. package/src/config/schemas/inference.ts +12 -22
  337. package/src/config/schemas/memory-storage.ts +19 -1
  338. package/src/config/schemas/platform.ts +0 -16
  339. package/src/config/skill-state.ts +11 -8
  340. package/src/config/skills.ts +83 -32
  341. package/src/context/token-estimator.ts +11 -0
  342. package/src/context/window-manager.ts +180 -151
  343. package/src/daemon/computer-use-session.ts +11 -43
  344. package/src/daemon/daemon-control.ts +4 -1
  345. package/src/daemon/handlers/config-channels.ts +5 -9
  346. package/src/daemon/handlers/config-ingress.ts +0 -4
  347. package/src/daemon/handlers/config-model.ts +7 -13
  348. package/src/daemon/handlers/config-telegram.ts +4 -8
  349. package/src/daemon/handlers/config-voice.ts +2 -5
  350. package/src/daemon/handlers/dictation.ts +2 -12
  351. package/src/daemon/handlers/identity.ts +0 -105
  352. package/src/daemon/handlers/recording.ts +3 -23
  353. package/src/daemon/handlers/session-history.ts +1 -1
  354. package/src/daemon/handlers/sessions.ts +53 -72
  355. package/src/daemon/handlers/shared.ts +7 -28
  356. package/src/daemon/handlers/skills.ts +31 -27
  357. package/src/daemon/host-bash-proxy.ts +148 -0
  358. package/src/daemon/host-file-proxy.ts +135 -0
  359. package/src/daemon/lifecycle.ts +49 -24
  360. package/src/daemon/mcp-reload-service.ts +123 -0
  361. package/src/daemon/message-protocol.ts +6 -0
  362. package/src/daemon/message-types/browser.ts +1 -1
  363. package/src/daemon/message-types/computer-use.ts +1 -4
  364. package/src/daemon/message-types/guardian-actions.ts +1 -1
  365. package/src/daemon/message-types/host-bash.ts +18 -0
  366. package/src/daemon/message-types/host-file.ts +44 -0
  367. package/src/daemon/message-types/integrations.ts +1 -67
  368. package/src/daemon/message-types/messages.ts +15 -0
  369. package/src/daemon/message-types/schedules.ts +11 -27
  370. package/src/daemon/message-types/sessions.ts +2 -1
  371. package/src/daemon/message-types/settings.ts +1 -1
  372. package/src/daemon/message-types/shared.ts +1 -1
  373. package/src/daemon/ride-shotgun-handler.ts +2 -42
  374. package/src/daemon/server.ts +43 -10
  375. package/src/daemon/session-agent-loop-handlers.ts +48 -7
  376. package/src/daemon/session-agent-loop.ts +97 -66
  377. package/src/daemon/session-attachments.ts +1 -1
  378. package/src/daemon/session-error.ts +17 -16
  379. package/src/daemon/session-lifecycle.ts +20 -1
  380. package/src/daemon/session-media-retry.ts +1 -15
  381. package/src/daemon/session-messaging.ts +14 -6
  382. package/src/daemon/session-process.ts +36 -7
  383. package/src/daemon/session-queue-manager.ts +62 -103
  384. package/src/daemon/session-runtime-assembly.ts +27 -0
  385. package/src/daemon/session-skill-tools.ts +12 -11
  386. package/src/daemon/session-slash.ts +7 -0
  387. package/src/daemon/session-surfaces.ts +19 -97
  388. package/src/daemon/session-tool-setup.ts +146 -6
  389. package/src/daemon/session.ts +77 -13
  390. package/src/errors.ts +0 -2
  391. package/src/export/formatter.ts +6 -0
  392. package/src/mcp/mcp-oauth-provider.ts +1 -3
  393. package/src/media/avatar-router.ts +20 -28
  394. package/src/media/avatar-types.ts +7 -14
  395. package/src/media/managed-avatar-client.ts +70 -34
  396. package/src/memory/conversation-title-service.ts +1 -2
  397. package/src/memory/db-init.ts +16 -0
  398. package/src/memory/embedding-backend.ts +129 -27
  399. package/src/memory/embedding-gemini.test.ts +256 -0
  400. package/src/memory/embedding-gemini.ts +47 -13
  401. package/src/memory/embedding-local.ts +14 -2
  402. package/src/memory/embedding-ollama.ts +15 -2
  403. package/src/memory/embedding-openai.ts +15 -2
  404. package/src/memory/embedding-types.test.ts +116 -0
  405. package/src/memory/embedding-types.ts +61 -0
  406. package/src/memory/fingerprint.ts +1 -1
  407. package/src/memory/indexer.ts +25 -1
  408. package/src/memory/job-handlers/embedding.test.ts +258 -0
  409. package/src/memory/job-handlers/embedding.ts +81 -1
  410. package/src/memory/job-handlers/index-maintenance.ts +35 -1
  411. package/src/memory/job-handlers/media-processing.ts +11 -1
  412. package/src/memory/job-utils.ts +21 -6
  413. package/src/memory/jobs-store.ts +5 -1
  414. package/src/memory/jobs-worker.ts +8 -0
  415. package/src/memory/message-content.ts +66 -0
  416. package/src/memory/migrations/100-core-tables.ts +1 -31
  417. package/src/memory/migrations/104-core-indexes.ts +0 -11
  418. package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
  419. package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
  420. package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
  421. package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
  422. package/src/memory/migrations/index.ts +4 -0
  423. package/src/memory/migrations/registry.ts +19 -0
  424. package/src/memory/qdrant-client.ts +158 -43
  425. package/src/memory/retriever.test.ts +0 -1
  426. package/src/memory/retriever.ts +12 -2
  427. package/src/memory/schema/infrastructure.ts +5 -29
  428. package/src/memory/search/formatting.ts +34 -9
  429. package/src/memory/search/semantic.ts +57 -2
  430. package/src/memory/search/types.ts +2 -1
  431. package/src/notifications/AGENTS.md +2 -2
  432. package/src/notifications/README.md +59 -58
  433. package/src/notifications/adapters/macos.ts +1 -1
  434. package/src/notifications/broadcaster.ts +5 -5
  435. package/src/notifications/copy-composer.ts +1 -1
  436. package/src/notifications/decision-engine.ts +2 -2
  437. package/src/notifications/destination-resolver.ts +2 -2
  438. package/src/notifications/emit-signal.ts +8 -8
  439. package/src/notifications/signal.ts +1 -1
  440. package/src/notifications/thread-seed-composer.ts +1 -1
  441. package/src/oauth/connect-orchestrator.ts +1 -1
  442. package/src/oauth/token-persistence.ts +1 -1
  443. package/src/permissions/checker.ts +12 -1
  444. package/src/permissions/defaults.ts +10 -14
  445. package/src/permissions/trust-store.ts +37 -0
  446. package/src/permissions/workspace-policy.ts +0 -1
  447. package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
  448. package/src/prompts/computer-use-prompt.ts +1 -1
  449. package/src/prompts/system-prompt.ts +29 -30
  450. package/src/prompts/templates/SOUL.md +1 -2
  451. package/src/prompts/templates/UPDATES.md +16 -7
  452. package/src/providers/anthropic/client.ts +87 -33
  453. package/src/providers/gemini/client.ts +6 -0
  454. package/src/providers/managed-proxy/constants.ts +5 -0
  455. package/src/providers/openai/client.ts +15 -0
  456. package/src/providers/registry.ts +2 -2
  457. package/src/providers/types.ts +24 -2
  458. package/src/runtime/AGENTS.md +18 -0
  459. package/src/runtime/assistant-event-hub.ts +2 -3
  460. package/src/runtime/assistant-event.ts +4 -4
  461. package/src/runtime/auth/__tests__/context.test.ts +5 -5
  462. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
  463. package/src/runtime/auth/__tests__/guard-tests.test.ts +2 -2
  464. package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
  465. package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
  466. package/src/runtime/auth/__tests__/scopes.test.ts +7 -7
  467. package/src/runtime/auth/__tests__/subject.test.ts +8 -8
  468. package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
  469. package/src/runtime/auth/route-policy.ts +8 -4
  470. package/src/runtime/auth/scopes.ts +1 -1
  471. package/src/runtime/auth/subject.ts +4 -4
  472. package/src/runtime/auth/token-service.ts +0 -23
  473. package/src/runtime/auth/types.ts +3 -3
  474. package/src/runtime/guardian-action-followup-executor.ts +1 -1
  475. package/src/runtime/guardian-action-grant-minter.ts +1 -1
  476. package/src/runtime/guardian-action-service.ts +3 -3
  477. package/src/runtime/http-server.ts +15 -2
  478. package/src/runtime/invite-service.ts +3 -3
  479. package/src/runtime/local-actor-identity.ts +17 -22
  480. package/src/runtime/pending-interactions.ts +21 -9
  481. package/src/runtime/routes/app-management-routes.ts +2 -3
  482. package/src/runtime/routes/approval-routes.ts +1 -3
  483. package/src/runtime/routes/btw-routes.ts +155 -0
  484. package/src/runtime/routes/computer-use-routes.ts +77 -31
  485. package/src/runtime/routes/conversation-routes.ts +230 -46
  486. package/src/runtime/routes/diagnostics-routes.ts +63 -29
  487. package/src/runtime/routes/documents-routes.ts +2 -2
  488. package/src/runtime/routes/global-search-routes.ts +1 -1
  489. package/src/runtime/routes/host-bash-routes.ts +83 -0
  490. package/src/runtime/routes/host-file-routes.ts +79 -0
  491. package/src/runtime/routes/integrations/slack/share.ts +1 -1
  492. package/src/runtime/routes/log-export-routes.ts +120 -0
  493. package/src/runtime/routes/mcp-routes.ts +20 -0
  494. package/src/runtime/routes/migration-routes.ts +3 -3
  495. package/src/runtime/routes/pairing-routes.ts +1 -1
  496. package/src/runtime/routes/recording-routes.ts +6 -4
  497. package/src/runtime/routes/schedule-routes.ts +31 -5
  498. package/src/runtime/routes/session-management-routes.ts +2 -6
  499. package/src/runtime/routes/session-query-routes.ts +18 -15
  500. package/src/runtime/routes/settings-routes.ts +7 -261
  501. package/src/runtime/routes/skills-routes.ts +7 -6
  502. package/src/runtime/routes/subagents-routes.ts +4 -10
  503. package/src/runtime/routes/surface-action-routes.ts +3 -14
  504. package/src/runtime/routes/surface-content-routes.ts +22 -5
  505. package/src/runtime/routes/work-items-routes.ts +21 -25
  506. package/src/runtime/routes/workspace-routes.test.ts +3 -3
  507. package/src/runtime/routes/workspace-utils.ts +1 -1
  508. package/src/runtime/telegram-streaming-delivery.ts +3 -0
  509. package/src/runtime/verification-outbound-actions.ts +2 -2
  510. package/src/schedule/integration-status.ts +0 -6
  511. package/src/schedule/schedule-store.ts +234 -43
  512. package/src/schedule/scheduler.ts +73 -74
  513. package/src/security/oauth2.ts +1 -1
  514. package/src/sequence/store.ts +12 -2
  515. package/src/skills/frontmatter.ts +19 -77
  516. package/src/skills/managed-store.ts +11 -2
  517. package/src/subagent/manager.ts +5 -3
  518. package/src/tasks/ephemeral-permissions.ts +3 -5
  519. package/src/tools/AGENTS.md +0 -1
  520. package/src/tools/browser/browser-manager.ts +17 -11
  521. package/src/tools/browser/jit-auth.ts +4 -1
  522. package/src/tools/claude-code/claude-code.ts +1 -1
  523. package/src/tools/computer-use/definitions.ts +48 -60
  524. package/src/tools/document/document-tool.ts +6 -6
  525. package/src/tools/filesystem/edit.ts +2 -1
  526. package/src/tools/filesystem/read.ts +20 -2
  527. package/src/tools/filesystem/write.ts +2 -1
  528. package/src/tools/host-filesystem/edit.ts +17 -1
  529. package/src/tools/host-filesystem/read.ts +16 -1
  530. package/src/tools/host-filesystem/write.ts +15 -1
  531. package/src/tools/host-terminal/host-shell.ts +24 -0
  532. package/src/tools/memory/definitions.ts +45 -81
  533. package/src/tools/memory/handlers.test.ts +0 -1
  534. package/src/tools/memory/handlers.ts +1 -1
  535. package/src/tools/memory/register.ts +26 -60
  536. package/src/tools/network/script-proxy/session-manager.ts +6 -8
  537. package/src/tools/network/web-fetch.ts +7 -1
  538. package/src/tools/network/web-search.ts +2 -1
  539. package/src/tools/registry.ts +23 -0
  540. package/src/tools/schedule/create.ts +113 -5
  541. package/src/tools/schedule/list.ts +57 -15
  542. package/src/tools/schedule/update.ts +73 -3
  543. package/src/tools/shared/filesystem/image-read.ts +192 -0
  544. package/src/tools/side-effects.ts +1 -7
  545. package/src/tools/skills/delete-managed.ts +27 -64
  546. package/src/tools/skills/execute.ts +54 -0
  547. package/src/tools/skills/load.ts +127 -5
  548. package/src/tools/skills/scaffold-managed.ts +93 -172
  549. package/src/tools/subagent/message.ts +0 -7
  550. package/src/tools/subagent/spawn.ts +1 -1
  551. package/src/tools/swarm/delegate.ts +0 -3
  552. package/src/tools/system/avatar-generator.ts +13 -19
  553. package/src/tools/system/request-permission.ts +2 -1
  554. package/src/tools/terminal/safe-env.ts +1 -0
  555. package/src/tools/tool-manifest.ts +41 -47
  556. package/src/tools/types.ts +6 -2
  557. package/src/tools/ui-surface/definitions.ts +0 -55
  558. package/src/util/errors.ts +0 -10
  559. package/src/workspace/git-service.ts +0 -2
  560. package/src/__tests__/account-registry.test.ts +0 -258
  561. package/src/__tests__/email-classifier.test.ts +0 -25
  562. package/src/__tests__/gmail-integration.test.ts +0 -97
  563. package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
  564. package/src/__tests__/managed-twitter-guardrails.test.ts +0 -357
  565. package/src/__tests__/recording-intent-fallback.test.ts +0 -199
  566. package/src/__tests__/recording-intent.test.ts +0 -985
  567. package/src/__tests__/recording-state-machine.test.ts +0 -1574
  568. package/src/__tests__/reminder-store.test.ts +0 -350
  569. package/src/__tests__/reminder.test.ts +0 -337
  570. package/src/__tests__/scan-result-store.test.ts +0 -121
  571. package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -475
  572. package/src/__tests__/view-image-tool.test.ts +0 -241
  573. package/src/cli/commands/amazon/cart.ts +0 -513
  574. package/src/cli/commands/amazon/checkout.ts +0 -394
  575. package/src/cli/commands/amazon/client.ts +0 -513
  576. package/src/cli/commands/amazon/index.ts +0 -885
  577. package/src/cli/commands/amazon/product-details.ts +0 -145
  578. package/src/cli/commands/amazon/request-extractor.ts +0 -187
  579. package/src/cli/commands/amazon/search.ts +0 -76
  580. package/src/cli/commands/amazon/session.ts +0 -108
  581. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -345
  582. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -252
  583. package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -151
  584. package/src/cli/commands/twitter/index.ts +0 -420
  585. package/src/cli/commands/twitter/oauth-client.ts +0 -60
  586. package/src/cli/commands/twitter/router.ts +0 -351
  587. package/src/cli/commands/twitter/types.ts +0 -30
  588. package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
  589. package/src/config/bundled-skills/agentmail/icon.svg +0 -21
  590. package/src/config/bundled-skills/amazon/SKILL.md +0 -136
  591. package/src/config/bundled-skills/amazon/icon.svg +0 -13
  592. package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
  593. package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
  594. package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
  595. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
  596. package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
  597. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
  598. package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
  599. package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
  600. package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
  601. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
  602. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
  603. package/src/config/bundled-skills/influencer/SKILL.md +0 -144
  604. package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
  605. package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
  606. package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
  607. package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
  608. package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
  609. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
  610. package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
  611. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
  612. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
  613. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
  614. package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
  615. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
  616. package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
  617. package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
  618. package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
  619. package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
  620. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
  621. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
  622. package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
  623. package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
  624. package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
  625. package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
  626. package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
  627. package/src/config/bundled-skills/notion/SKILL.md +0 -240
  628. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
  629. package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
  630. package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
  631. package/src/config/bundled-skills/reminder/SKILL.md +0 -79
  632. package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
  633. package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
  634. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
  635. package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
  636. package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
  637. package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
  638. package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
  639. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
  640. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
  641. package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
  642. package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
  643. package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
  644. package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
  645. package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
  646. package/src/config/bundled-skills/twitter/SKILL.md +0 -206
  647. package/src/config/bundled-skills/twitter/icon.svg +0 -14
  648. package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
  649. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
  650. package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
  651. package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
  652. package/src/daemon/handlers/pairing.ts +0 -119
  653. package/src/daemon/handlers/session-user-message.ts +0 -961
  654. package/src/daemon/recording-executor.ts +0 -180
  655. package/src/daemon/recording-intent-fallback.ts +0 -162
  656. package/src/daemon/recording-intent.ts +0 -493
  657. package/src/memory/account-store.ts +0 -117
  658. package/src/messaging/activity-analyzer.ts +0 -76
  659. package/src/messaging/email-classifier.ts +0 -208
  660. package/src/messaging/index.ts +0 -2
  661. package/src/messaging/outreach-classifier.ts +0 -185
  662. package/src/messaging/thread-summarizer.ts +0 -346
  663. package/src/messaging/types.ts +0 -17
  664. package/src/tools/browser/x-auto-navigate.ts +0 -254
  665. package/src/tools/credentials/account-registry.ts +0 -144
  666. package/src/tools/filesystem/view-image.ts +0 -244
  667. package/src/tools/reminder/reminder-store.ts +0 -194
  668. package/src/tools/reminder/reminder.ts +0 -158
  669. package/src/tools/system/navigate-settings.ts +0 -74
  670. package/src/tools/system/open-system-settings.ts +0 -85
  671. package/src/tools/system/version.ts +0 -54
  672. package/src/twitter/platform-proxy-client.ts +0 -408
  673. /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
  674. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
  675. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
  676. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
  677. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
  678. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
  679. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
  680. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
  681. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
@@ -27,67 +27,57 @@ const reasonProperty = {
27
27
  "Brief non-technical explanation of why this tool is being called",
28
28
  };
29
29
 
30
- function makeClickTool(name: string, verb: string): Tool {
31
- return {
32
- name,
33
- description: `${verb} on a UI element by its [ID] from the accessibility tree, or at raw screen coordinates as fallback.`,
34
- category: "computer-use",
35
- defaultRiskLevel: RiskLevel.Low,
36
- executionMode: "proxy",
37
-
38
- getDefinition(): ToolDefinition {
39
- return {
40
- name: this.name,
41
- description: this.description,
42
- input_schema: {
43
- type: "object",
44
- properties: {
45
- element_id: {
46
- type: "integer",
47
- description:
48
- "The [ID] number of the element from the accessibility tree (preferred)",
49
- },
50
- x: {
51
- type: "integer",
52
- description:
53
- "X coordinate on screen (fallback when no element_id)",
54
- },
55
- y: {
56
- type: "integer",
57
- description:
58
- "Y coordinate on screen (fallback when no element_id)",
59
- },
60
- reasoning: {
61
- type: "string",
62
- description: `Explanation of what you see and why you are ${verb.toLowerCase()}ing here`,
63
- },
64
- reason: reasonProperty,
65
- },
66
- required: ["reasoning"],
67
- },
68
- };
69
- },
70
-
71
- execute: proxyExecute,
72
- };
73
- }
74
-
75
30
  // ---------------------------------------------------------------------------
76
- // Click variants
31
+ // click (unified — click_type selects single / double / right)
77
32
  // ---------------------------------------------------------------------------
78
33
 
79
- export const computerUseClickTool = makeClickTool(
80
- "computer_use_click",
81
- "Click",
82
- );
83
- export const computerUseDoubleClickTool = makeClickTool(
84
- "computer_use_double_click",
85
- "Double-click",
86
- );
87
- export const computerUseRightClickTool = makeClickTool(
88
- "computer_use_right_click",
89
- "Right-click",
90
- );
34
+ export const computerUseClickTool: Tool = {
35
+ name: "computer_use_click",
36
+ description:
37
+ "Click on a UI element by its [ID] from the accessibility tree, or at raw screen coordinates as fallback. Supports single click, double-click, and right-click via the click_type parameter.",
38
+ category: "computer-use",
39
+ defaultRiskLevel: RiskLevel.Low,
40
+ executionMode: "proxy",
41
+
42
+ getDefinition(): ToolDefinition {
43
+ return {
44
+ name: this.name,
45
+ description: this.description,
46
+ input_schema: {
47
+ type: "object",
48
+ properties: {
49
+ click_type: {
50
+ type: "string",
51
+ enum: ["single", "double", "right"],
52
+ description: 'Type of click to perform (default: "single")',
53
+ },
54
+ element_id: {
55
+ type: "integer",
56
+ description:
57
+ "The [ID] number of the element from the accessibility tree (preferred)",
58
+ },
59
+ x: {
60
+ type: "integer",
61
+ description: "X coordinate on screen (fallback when no element_id)",
62
+ },
63
+ y: {
64
+ type: "integer",
65
+ description: "Y coordinate on screen (fallback when no element_id)",
66
+ },
67
+ reasoning: {
68
+ type: "string",
69
+ description:
70
+ "Explanation of what you see and why you are clicking here",
71
+ },
72
+ reason: reasonProperty,
73
+ },
74
+ required: ["reasoning"],
75
+ },
76
+ };
77
+ },
78
+
79
+ execute: proxyExecute,
80
+ };
91
81
 
92
82
  // ---------------------------------------------------------------------------
93
83
  // type_text
@@ -474,8 +464,6 @@ export const computerUseRespondTool: Tool = {
474
464
 
475
465
  export const allComputerUseTools: Tool[] = [
476
466
  computerUseClickTool,
477
- computerUseDoubleClickTool,
478
- computerUseRightClickTool,
479
467
  computerUseTypeTextTool,
480
468
  computerUseKeyTool,
481
469
  computerUseScrollTool,
@@ -12,7 +12,7 @@ export function executeDocumentCreate(
12
12
  const initialContent = (input.initial_content as string | undefined) || "";
13
13
  const surfaceId = `doc-${randomUUID()}`;
14
14
 
15
- // Send document_editor_show IPC message to open the built-in RTE
15
+ // Send document_editor_show message to open the built-in RTE
16
16
  if (context.sendToClient) {
17
17
  context.sendToClient({
18
18
  type: "document_editor_show",
@@ -47,13 +47,13 @@ export function executeDocumentCreate(
47
47
  };
48
48
  }
49
49
 
50
- // Fallback if no IPC client is connected
50
+ // Fallback if no client is connected
51
51
  return {
52
52
  content: JSON.stringify({
53
53
  surface_id: surfaceId,
54
54
  title,
55
55
  opened: false,
56
- error: "No IPC client connected to open document editor",
56
+ error: "No client connected to open document editor",
57
57
  }),
58
58
  isError: false,
59
59
  };
@@ -67,7 +67,7 @@ export function executeDocumentUpdate(
67
67
  const content = input.content as string;
68
68
  const mode = (input.mode as string | undefined) || "append";
69
69
 
70
- // Send document_editor_update IPC message to update the built-in RTE
70
+ // Send document_editor_update message to update the built-in RTE
71
71
  if (context.sendToClient) {
72
72
  context.sendToClient({
73
73
  type: "document_editor_update",
@@ -88,11 +88,11 @@ export function executeDocumentUpdate(
88
88
  };
89
89
  }
90
90
 
91
- // Fallback if no IPC client is connected
91
+ // Fallback if no client is connected
92
92
  return {
93
93
  content: JSON.stringify({
94
94
  success: false,
95
- error: "No IPC client connected to update document",
95
+ error: "No client connected to update document",
96
96
  }),
97
97
  isError: true,
98
98
  };
@@ -161,4 +161,5 @@ class FileEditTool implements Tool {
161
161
  }
162
162
  }
163
163
 
164
- registerTool(new FileEditTool());
164
+ export const fileEditTool = new FileEditTool();
165
+ registerTool(fileEditTool);
@@ -1,13 +1,20 @@
1
+ import { extname } from "node:path";
2
+
1
3
  import { RiskLevel } from "../../permissions/types.js";
2
4
  import type { ToolDefinition } from "../../providers/types.js";
3
5
  import { registerTool } from "../registry.js";
4
6
  import { FileSystemOps } from "../shared/filesystem/file-ops-service.js";
7
+ import {
8
+ IMAGE_EXTENSIONS,
9
+ readImageFile,
10
+ } from "../shared/filesystem/image-read.js";
5
11
  import { sandboxPolicy } from "../shared/filesystem/path-policy.js";
6
12
  import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
7
13
 
8
14
  class FileReadTool implements Tool {
9
15
  name = "file_read";
10
- description = "Read the contents of a file";
16
+ description =
17
+ "Read the contents of a file. For image files (JPEG, PNG, GIF, WebP), returns the image for visual analysis.";
11
18
  category = "filesystem";
12
19
  defaultRiskLevel = RiskLevel.Low;
13
20
 
@@ -54,6 +61,16 @@ class FileReadTool implements Tool {
54
61
  };
55
62
  }
56
63
 
64
+ // For image files, delegate to the shared image reader.
65
+ const ext = extname(rawPath).toLowerCase();
66
+ if (IMAGE_EXTENSIONS.has(ext)) {
67
+ const pathCheck = sandboxPolicy(rawPath, context.workingDir);
68
+ if (!pathCheck.ok) {
69
+ return { content: `Error: ${pathCheck.error}`, isError: true };
70
+ }
71
+ return readImageFile(pathCheck.resolved);
72
+ }
73
+
57
74
  const ops = new FileSystemOps((path, opts) =>
58
75
  sandboxPolicy(path, context.workingDir, opts),
59
76
  );
@@ -86,4 +103,5 @@ class FileReadTool implements Tool {
86
103
  }
87
104
  }
88
105
 
89
- registerTool(new FileReadTool());
106
+ export const fileReadTool = new FileReadTool();
107
+ registerTool(fileReadTool);
@@ -97,4 +97,5 @@ class FileWriteTool implements Tool {
97
97
  }
98
98
  }
99
99
 
100
- registerTool(new FileWriteTool());
100
+ export const fileWriteTool = new FileWriteTool();
101
+ registerTool(fileWriteTool);
@@ -48,7 +48,7 @@ class HostFileEditTool implements Tool {
48
48
 
49
49
  async execute(
50
50
  input: Record<string, unknown>,
51
- _context: ToolContext,
51
+ context: ToolContext,
52
52
  ): Promise<ToolExecutionResult> {
53
53
  const rawPath = input.path as string;
54
54
  if (!rawPath || typeof rawPath !== "string") {
@@ -87,6 +87,22 @@ class HostFileEditTool implements Tool {
87
87
 
88
88
  const replaceAll = input.replace_all === true;
89
89
 
90
+ // Proxy to connected client for execution on the user's machine
91
+ // when a capable client is available (managed/cloud-hosted mode).
92
+ if (context.hostFileProxy?.isAvailable()) {
93
+ return context.hostFileProxy.request(
94
+ {
95
+ operation: "edit",
96
+ path: rawPath,
97
+ old_string: oldString as string,
98
+ new_string: newString as string,
99
+ replace_all: replaceAll,
100
+ },
101
+ context.sessionId,
102
+ context.signal,
103
+ );
104
+ }
105
+
90
106
  const ops = new FileSystemOps(hostPolicy);
91
107
 
92
108
  const result = ops.editFileSafe({
@@ -42,7 +42,7 @@ class HostFileReadTool implements Tool {
42
42
 
43
43
  async execute(
44
44
  input: Record<string, unknown>,
45
- _context: ToolContext,
45
+ context: ToolContext,
46
46
  ): Promise<ToolExecutionResult> {
47
47
  const rawPath = input.path as string;
48
48
  if (!rawPath || typeof rawPath !== "string") {
@@ -52,6 +52,21 @@ class HostFileReadTool implements Tool {
52
52
  };
53
53
  }
54
54
 
55
+ // Proxy to connected client for execution on the user's machine
56
+ // when a capable client is available (managed/cloud-hosted mode).
57
+ if (context.hostFileProxy?.isAvailable()) {
58
+ return context.hostFileProxy.request(
59
+ {
60
+ operation: "read",
61
+ path: rawPath,
62
+ offset: typeof input.offset === "number" ? input.offset : undefined,
63
+ limit: typeof input.limit === "number" ? input.limit : undefined,
64
+ },
65
+ context.sessionId,
66
+ context.signal,
67
+ );
68
+ }
69
+
55
70
  const ops = new FileSystemOps(hostPolicy);
56
71
 
57
72
  const result = ops.readFileSafe({
@@ -40,7 +40,7 @@ class HostFileWriteTool implements Tool {
40
40
 
41
41
  async execute(
42
42
  input: Record<string, unknown>,
43
- _context: ToolContext,
43
+ context: ToolContext,
44
44
  ): Promise<ToolExecutionResult> {
45
45
  const rawPath = input.path as string;
46
46
  if (!rawPath || typeof rawPath !== "string") {
@@ -58,6 +58,20 @@ class HostFileWriteTool implements Tool {
58
58
  };
59
59
  }
60
60
 
61
+ // Proxy to connected client for execution on the user's machine
62
+ // when a capable client is available (managed/cloud-hosted mode).
63
+ if (context.hostFileProxy?.isAvailable()) {
64
+ return context.hostFileProxy.request(
65
+ {
66
+ operation: "write",
67
+ path: rawPath,
68
+ content: fileContent,
69
+ },
70
+ context.sessionId,
71
+ context.signal,
72
+ );
73
+ }
74
+
61
75
  const ops = new FileSystemOps(hostPolicy);
62
76
 
63
77
  const result = ops.writeFileSafe({ path: rawPath, content: fileContent });
@@ -101,6 +101,30 @@ class HostShellTool implements Tool {
101
101
  isError: true,
102
102
  };
103
103
  }
104
+ // Proxy to connected client for execution on the user's machine
105
+ // when a capable client is available (managed/cloud-hosted mode).
106
+ if (context.hostBashProxy?.isAvailable()) {
107
+ const { shellDefaultTimeoutSec, shellMaxTimeoutSec } =
108
+ getConfig().timeouts;
109
+ const rawSec =
110
+ typeof input.timeout_seconds === "number"
111
+ ? input.timeout_seconds
112
+ : shellDefaultTimeoutSec;
113
+ const normalizedTimeout = Math.max(
114
+ 1,
115
+ Math.min(rawSec, shellMaxTimeoutSec),
116
+ );
117
+ return context.hostBashProxy.request(
118
+ {
119
+ command,
120
+ working_dir: rawWorkingDir as string | undefined,
121
+ timeout_seconds: normalizedTimeout,
122
+ },
123
+ context.sessionId,
124
+ context.signal,
125
+ );
126
+ }
127
+
104
128
  const workingDir =
105
129
  typeof rawWorkingDir === "string" ? rawWorkingDir : homedir();
106
130
 
@@ -3,7 +3,7 @@ import type { ToolDefinition } from "../../providers/types.js";
3
3
  export const memoryRecallDefinition: ToolDefinition = {
4
4
  name: "memory_recall",
5
5
  description:
6
- "Deep search across all memory sources (semantic, lexical, entity graph, recency) for specific information. Use this when you need to recall details about past conversations, decisions, preferences, project context, or any prior knowledge. Returns formatted memory context with item IDs for use with memory_update/memory_delete.",
6
+ "Deep search across all memory sources (semantic, lexical, entity graph, recency) for specific information. Use this when you need to recall details about past conversations, decisions, preferences, project context, or any prior knowledge. Returns formatted memory context with item IDs for use with memory_manage.",
7
7
  input_schema: {
8
8
  type: "object",
9
9
  properties: {
@@ -26,92 +26,56 @@ export const memoryRecallDefinition: ToolDefinition = {
26
26
  },
27
27
  };
28
28
 
29
- export const memorySaveDefinition: ToolDefinition = {
30
- name: "memory_save",
31
- description:
32
- "Save a fact, preference, decision, or other noteworthy information to memory for future recall. Use this when the user shares something worth remembering.",
33
- input_schema: {
34
- type: "object",
35
- properties: {
36
- statement: {
37
- type: "string",
38
- description: "The fact or preference to remember (1-2 sentences)",
39
- },
40
- kind: {
41
- type: "string",
42
- enum: [
43
- "preference",
44
- "fact",
45
- "decision",
46
- "profile",
47
- "relationship",
48
- "event",
49
- "opinion",
50
- "instruction",
51
- "style",
52
- "playbook",
53
- "learning",
54
- ],
55
- description: "Category of the memory item",
56
- },
57
- subject: {
58
- type: "string",
59
- description: "Short subject/topic label (2-8 words)",
60
- },
61
- reason: {
62
- type: "string",
63
- description:
64
- "Brief non-technical explanation of what you are saving and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
65
- },
66
- },
67
- required: ["statement", "kind"],
29
+ const memoryManageProperties = {
30
+ op: {
31
+ type: "string" as const,
32
+ enum: ["save", "update", "delete"],
33
+ description: "The operation to perform",
68
34
  },
69
- };
70
-
71
- export const memoryUpdateDefinition: ToolDefinition = {
72
- name: "memory_update",
73
- description:
74
- "Update or correct an existing memory item. Use this when previously saved information needs to be changed.",
75
- input_schema: {
76
- type: "object",
77
- properties: {
78
- memory_id: {
79
- type: "string",
80
- description:
81
- "ID of the memory item to update (from memory_recall results)",
82
- },
83
- statement: {
84
- type: "string",
85
- description: "The updated statement to replace the existing one",
86
- },
87
- reason: {
88
- type: "string",
89
- description:
90
- "Brief non-technical explanation of what you are updating and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
91
- },
92
- },
93
- required: ["memory_id", "statement"],
35
+ memory_id: {
36
+ type: "string" as const,
37
+ description: "ID of existing memory item (required for update/delete)",
38
+ },
39
+ statement: {
40
+ type: "string" as const,
41
+ description:
42
+ "The fact or preference to remember (required for save/update, 1-2 sentences)",
43
+ },
44
+ kind: {
45
+ type: "string" as const,
46
+ enum: [
47
+ "preference",
48
+ "fact",
49
+ "decision",
50
+ "profile",
51
+ "relationship",
52
+ "event",
53
+ "opinion",
54
+ "instruction",
55
+ "style",
56
+ "playbook",
57
+ "learning",
58
+ ],
59
+ description: "Category of the memory item (required for save)",
60
+ },
61
+ subject: {
62
+ type: "string" as const,
63
+ description: "Short subject/topic label, 2-8 words (optional, save only)",
64
+ },
65
+ reason: {
66
+ type: "string" as const,
67
+ description:
68
+ "Brief non-technical explanation shown to the user as a status update",
94
69
  },
95
70
  };
96
71
 
97
- export const memoryDeleteDefinition: ToolDefinition = {
98
- name: "memory_delete",
72
+ export const memoryManageDefinition: ToolDefinition = {
73
+ name: "memory_manage",
99
74
  description:
100
- "Delete a previously saved memory item. Use this when information is no longer relevant, was saved in error, or the user asks to forget something.",
75
+ "Save, update, or delete memory items. Use 'save' for new information worth remembering, 'update' to correct existing items, 'delete' to remove outdated items.",
101
76
  input_schema: {
102
77
  type: "object",
103
- properties: {
104
- memory_id: {
105
- type: "string",
106
- description:
107
- "ID of the memory item to delete (from memory_recall results)",
108
- },
109
- reason: {
110
- type: "string",
111
- description:
112
- "Brief non-technical explanation of what you are deleting and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
113
- },
114
- },
115
- required: ["memory_id"],
78
+ properties: memoryManageProperties,
79
+ required: ["op"],
116
80
  },
117
81
  };
@@ -26,7 +26,6 @@ mock.module("../../util/platform.js", () => ({
26
26
  isMacOS: () => process.platform === "darwin",
27
27
  isLinux: () => process.platform === "linux",
28
28
  isWindows: () => process.platform === "win32",
29
- getSocketPath: () => join(testDir, "test.sock"),
30
29
  getPidPath: () => join(testDir, "test.pid"),
31
30
  getDbPath: () => join(testDir, "test.db"),
32
31
  getLogPath: () => join(testDir, "test.log"),
@@ -468,7 +468,7 @@ function inferSubjectFromStatement(statement: string): string {
468
468
 
469
469
  /**
470
470
  * Strip a typed ID prefix (e.g. "item:abc-123" -> "abc-123") so that IDs
471
- * copied from memory_recall output work in memory_update.
471
+ * copied from memory_recall output work in memory_manage update/delete ops.
472
472
  */
473
473
  function stripTypedIdPrefix(id: string): string {
474
474
  const match = id.match(/^(?:item|segment|summary):(.+)$/);
@@ -3,10 +3,8 @@ import { RiskLevel } from "../../permissions/types.js";
3
3
  import type { ToolDefinition } from "../../providers/types.js";
4
4
  import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
5
5
  import {
6
- memoryDeleteDefinition,
6
+ memoryManageDefinition,
7
7
  memoryRecallDefinition,
8
- memorySaveDefinition,
9
- memoryUpdateDefinition,
10
8
  } from "./definitions.js";
11
9
  import {
12
10
  handleMemoryDelete,
@@ -15,16 +13,16 @@ import {
15
13
  handleMemoryUpdate,
16
14
  } from "./handlers.js";
17
15
 
18
- // ── memory_save ──────────────────────────────────────────────────────
16
+ // ── memory_manage ────────────────────────────────────────────────────
19
17
 
20
- class MemorySaveTool implements Tool {
21
- name = "memory_save";
22
- description = memorySaveDefinition.description;
18
+ class MemoryManageTool implements Tool {
19
+ name = "memory_manage";
20
+ description = memoryManageDefinition.description;
23
21
  category = "memory";
24
22
  defaultRiskLevel = RiskLevel.Low;
25
23
 
26
24
  getDefinition(): ToolDefinition {
27
- return memorySaveDefinition;
25
+ return memoryManageDefinition;
28
26
  }
29
27
 
30
28
  async execute(
@@ -32,55 +30,25 @@ class MemorySaveTool implements Tool {
32
30
  context: ToolContext,
33
31
  ): Promise<ToolExecutionResult> {
34
32
  const config = getConfig();
35
- return handleMemorySave(
36
- input,
37
- config,
38
- context.conversationId,
39
- context.requestId,
40
- context.memoryScopeId,
41
- );
42
- }
43
- }
44
-
45
- // ── memory_update ────────────────────────────────────────────────────
46
-
47
- class MemoryUpdateTool implements Tool {
48
- name = "memory_update";
49
- description = memoryUpdateDefinition.description;
50
- category = "memory";
51
- defaultRiskLevel = RiskLevel.Low;
52
-
53
- getDefinition(): ToolDefinition {
54
- return memoryUpdateDefinition;
55
- }
56
-
57
- async execute(
58
- input: Record<string, unknown>,
59
- context: ToolContext,
60
- ): Promise<ToolExecutionResult> {
61
- const config = getConfig();
62
- return handleMemoryUpdate(input, config, context.memoryScopeId);
63
- }
64
- }
65
-
66
- // ── memory_delete ────────────────────────────────────────────────────
67
-
68
- class MemoryDeleteTool implements Tool {
69
- name = "memory_delete";
70
- description = memoryDeleteDefinition.description;
71
- category = "memory";
72
- defaultRiskLevel = RiskLevel.Low;
73
-
74
- getDefinition(): ToolDefinition {
75
- return memoryDeleteDefinition;
76
- }
77
-
78
- async execute(
79
- input: Record<string, unknown>,
80
- context: ToolContext,
81
- ): Promise<ToolExecutionResult> {
82
- const config = getConfig();
83
- return handleMemoryDelete(input, config, context.memoryScopeId);
33
+ switch (input.op) {
34
+ case "save":
35
+ return handleMemorySave(
36
+ input,
37
+ config,
38
+ context.conversationId,
39
+ context.requestId,
40
+ context.memoryScopeId,
41
+ );
42
+ case "update":
43
+ return handleMemoryUpdate(input, config, context.memoryScopeId);
44
+ case "delete":
45
+ return handleMemoryDelete(input, config, context.memoryScopeId);
46
+ default:
47
+ return {
48
+ content: `Error: unknown op "${input.op}". Must be one of: save, update, delete`,
49
+ isError: true,
50
+ };
51
+ }
84
52
  }
85
53
  }
86
54
 
@@ -112,7 +80,5 @@ class MemoryRecallTool implements Tool {
112
80
 
113
81
  // ── Exported tool instances ──────────────────────────────────────────
114
82
 
115
- export const memorySaveTool = new MemorySaveTool();
116
- export const memoryUpdateTool = new MemoryUpdateTool();
117
- export const memoryDeleteTool = new MemoryDeleteTool();
83
+ export const memoryManageTool = new MemoryManageTool();
118
84
  export const memoryRecallTool = new MemoryRecallTool();
@@ -528,15 +528,13 @@ export function getSessionEnv(sessionId: ProxySessionId): ProxyEnvVars {
528
528
  NO_PROXY: "localhost,127.0.0.1,::1",
529
529
  };
530
530
 
531
- if (managed.dataDir) {
531
+ // Only set cert env vars when the CA was actually initialized (MITM mode).
532
+ // Without this guard, NODE_EXTRA_CA_CERTS points to a nonexistent file
533
+ // when the proxy runs in pass-through mode (no credentials/MITM),
534
+ // causing Bun/BoringSSL to fail with SSL load errors.
535
+ if (managed.dataDir && managed.combinedCABundlePath) {
532
536
  env.NODE_EXTRA_CA_CERTS = getCAPath(managed.dataDir);
533
- // Combined bundle lets non-Node clients (curl, Python, Go) trust
534
- // the proxy CA alongside system roots via SSL_CERT_FILE.
535
- // Only set when the bundle was actually created — pointing at a
536
- // missing file would replace the system trust store with nothing.
537
- if (managed.combinedCABundlePath) {
538
- env.SSL_CERT_FILE = managed.combinedCABundlePath;
539
- }
537
+ env.SSL_CERT_FILE = managed.combinedCABundlePath;
540
538
  }
541
539
 
542
540
  return env;