@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
@@ -1,34 +1,17 @@
1
1
  /**
2
2
  * HTTP route handlers for settings, identity/avatar, voice config,
3
- * OAuth connect, Twitter auth, and workspace files.
3
+ * OAuth connect, and workspace files.
4
4
  *
5
- * Migrated from IPC handlers:
6
- * - handlers/config-voice.ts (voice_config_update)
7
- * - handlers/avatar.ts (generate_avatar)
8
- * - handlers/oauth-connect.ts (oauth_connect_start)
9
- * - handlers/twitter-auth.ts (twitter_auth_start, twitter_auth_status)
10
- * - handlers/workspace-files.ts (workspace_files_list, workspace_file_read)
5
+ * Handles settings, identity/avatar, voice config,
6
+ * OAuth connect, and workspace files.
11
7
  * - handlers/config-tools.ts (tool_names_list, tool_permission_simulate, env_vars_request)
12
8
  */
13
9
 
14
10
  import { readFileSync } from "node:fs";
15
11
  import { join } from "node:path";
16
12
 
17
- import {
18
- getPlatformAssistantId,
19
- getPlatformBaseUrl,
20
- } from "../../config/env.js";
21
- import {
22
- getNestedValue,
23
- invalidateConfigCache,
24
- loadConfig,
25
- loadRawConfig,
26
- saveRawConfig,
27
- setNestedValue,
28
- } from "../../config/loader.js";
29
13
  import { loadSkillCatalog } from "../../config/skills.js";
30
14
  import { normalizeActivationKey } from "../../daemon/handlers/config-voice.js";
31
- import { getPublicBaseUrl } from "../../inbound/public-ingress-urls.js";
32
15
  import { orchestrateOAuthConnect } from "../../oauth/connect-orchestrator.js";
33
16
  import {
34
17
  getProviderProfile,
@@ -50,7 +33,6 @@ import {
50
33
  import { getAllTools, getTool } from "../../tools/registry.js";
51
34
  import { isSideEffectTool } from "../../tools/side-effects.js";
52
35
  import { setAvatarTool } from "../../tools/system/avatar-generator.js";
53
- import { ConfigError } from "../../util/errors.js";
54
36
  import { pathExists } from "../../util/fs.js";
55
37
  import { getLogger } from "../../util/logger.js";
56
38
  import { getWorkspaceDir } from "../../util/platform.js";
@@ -69,9 +51,8 @@ function handleVoiceConfigUpdate(activationKey: string): Response {
69
51
  if (!result.ok) {
70
52
  return httpError("BAD_REQUEST", result.reason, 400);
71
53
  }
72
- // The broadcast to IPC clients happens via the IPC handler. The HTTP
73
- // route validates and returns the canonical value; the caller (client)
74
- // applies the setting locally.
54
+ // The HTTP route validates and returns the canonical value; the caller
55
+ // (client) applies the setting locally.
75
56
  return Response.json({ ok: true, activationKey: result.value });
76
57
  }
77
58
 
@@ -258,228 +239,7 @@ async function handleOAuthConnectStart(body: {
258
239
  }
259
240
 
260
241
  // ---------------------------------------------------------------------------
261
- // Twitter auth
262
- // ---------------------------------------------------------------------------
263
-
264
- function sanitizeTwitterAuthError(message: string): string {
265
- const lower = message.toLowerCase();
266
- if (lower.includes("timed out")) {
267
- return "Twitter authentication timed out. Please try again.";
268
- }
269
- if (lower.includes("user_cancelled") || lower.includes("cancelled")) {
270
- return "Twitter authentication was cancelled.";
271
- }
272
- if (lower.includes("denied") || lower.includes("invalid_grant")) {
273
- return "Twitter denied the authorization request. Please try again.";
274
- }
275
- return "Twitter authentication failed. Please try again.";
276
- }
277
-
278
- async function handleTwitterAuthStart(): Promise<Response> {
279
- try {
280
- assertMetadataWritable();
281
- } catch {
282
- return httpError(
283
- "UNPROCESSABLE_ENTITY",
284
- "Credential metadata file has an unrecognized version. Cannot store OAuth credentials.",
285
- 422,
286
- );
287
- }
288
-
289
- try {
290
- const raw = loadRawConfig();
291
- const mode =
292
- (getNestedValue(raw, "twitter.integrationMode") as string | undefined) ??
293
- "local_byo";
294
- if (mode === "managed") {
295
- const apiKey = getSecureKey("credential:vellum:assistant_api_key");
296
- if (!apiKey) {
297
- return Response.json(
298
- {
299
- ok: false,
300
- error:
301
- "An AssistantAPIKey is required for managed Twitter. Run assistant setup.",
302
- errorCode: "managed_missing_api_key",
303
- },
304
- { status: 400 },
305
- );
306
- }
307
- return Response.json(
308
- {
309
- ok: false,
310
- error:
311
- "Managed Twitter authentication is handled through the Vellum platform. Open Settings to connect.",
312
- errorCode: "managed_auth_via_platform",
313
- },
314
- { status: 400 },
315
- );
316
- }
317
- if (mode !== "local_byo") {
318
- return httpError(
319
- "BAD_REQUEST",
320
- 'Twitter integration mode must be "local_byo" to use this flow.',
321
- 400,
322
- );
323
- }
324
-
325
- const clientId = getSecureKey("credential:integration:twitter:client_id");
326
- if (!clientId) {
327
- return httpError(
328
- "BAD_REQUEST",
329
- "No Twitter client credentials configured. Please set up your Client ID first.",
330
- 400,
331
- );
332
- }
333
-
334
- const clientSecret =
335
- getSecureKey("credential:integration:twitter:client_secret") || undefined;
336
-
337
- let config;
338
- try {
339
- config = loadConfig();
340
- } catch (err) {
341
- const detail = err instanceof ConfigError ? err.message : String(err);
342
- return httpError(
343
- "INTERNAL_ERROR",
344
- `Unable to load config: ${detail}`,
345
- 500,
346
- );
347
- }
348
-
349
- try {
350
- getPublicBaseUrl(config);
351
- } catch {
352
- return httpError(
353
- "BAD_REQUEST",
354
- "Set ingress.publicBaseUrl (or INGRESS_PUBLIC_BASE_URL) so OAuth callbacks can route through /webhooks/oauth/callback on the gateway.",
355
- 400,
356
- );
357
- }
358
-
359
- let authUrl: string | undefined;
360
-
361
- const result = await orchestrateOAuthConnect({
362
- service: "integration:twitter",
363
- clientId,
364
- clientSecret,
365
- isInteractive: true,
366
- openUrl: (url: string) => {
367
- authUrl = url;
368
- },
369
- allowedTools: ["twitter_post"],
370
- });
371
-
372
- if (!result.success) {
373
- log.error(
374
- { err: result.error },
375
- "Twitter OAuth orchestrator returned error",
376
- );
377
- return httpError(
378
- "INTERNAL_ERROR",
379
- result.safeError
380
- ? result.error
381
- : sanitizeTwitterAuthError(result.error),
382
- 500,
383
- );
384
- }
385
-
386
- if (result.deferred) {
387
- return Response.json({
388
- ok: true,
389
- deferred: true,
390
- authUrl: result.authUrl,
391
- });
392
- }
393
-
394
- // Persist accountInfo to config
395
- if (result.accountInfo) {
396
- try {
397
- const raw2 = loadRawConfig();
398
- setNestedValue(raw2, "twitter.accountInfo", result.accountInfo);
399
- saveRawConfig(raw2);
400
- invalidateConfigCache();
401
- } catch {
402
- // Non-fatal
403
- }
404
- }
405
-
406
- return Response.json({
407
- ok: true,
408
- accountInfo: result.accountInfo,
409
- ...(authUrl ? { authUrl } : {}),
410
- });
411
- } catch (err) {
412
- const message = err instanceof Error ? err.message : String(err);
413
- log.error({ err }, "Twitter OAuth flow failed");
414
- return httpError("INTERNAL_ERROR", sanitizeTwitterAuthError(message), 500);
415
- }
416
- }
417
-
418
- function handleTwitterAuthStatus(): Response {
419
- try {
420
- const accessToken = getSecureKey(
421
- "credential:integration:twitter:access_token",
422
- );
423
- const raw = loadRawConfig();
424
- const mode =
425
- (getNestedValue(raw, "twitter.integrationMode") as
426
- | "local_byo"
427
- | "managed"
428
- | undefined) ?? "local_byo";
429
- const accountInfo = getNestedValue(raw, "twitter.accountInfo") as
430
- | string
431
- | undefined;
432
-
433
- // Managed prerequisites
434
- const integrationModeManaged = mode === "managed";
435
- const assistantApiKeyPresent = !!getSecureKey(
436
- "credential:vellum:assistant_api_key",
437
- );
438
- const platformBaseUrlFromEnv = getPlatformBaseUrl();
439
- const platformBaseUrlFromConfig = (
440
- raw?.platform as Record<string, unknown> | undefined
441
- )?.baseUrl as string | undefined;
442
- const platformAssistantIdResolvable = !!(
443
- (platformBaseUrlFromEnv || platformBaseUrlFromConfig) &&
444
- (getSecureKey("credential:vellum:platform_assistant_id") ||
445
- getPlatformAssistantId())
446
- );
447
-
448
- const managedPrerequisites = {
449
- integrationModeManaged,
450
- assistantApiKeyPresent,
451
- platformAssistantIdResolvable,
452
- };
453
- const managedAvailable =
454
- integrationModeManaged &&
455
- assistantApiKeyPresent &&
456
- platformAssistantIdResolvable;
457
-
458
- // Local client configured
459
- const localClientConfigured = !!getSecureKey(
460
- "credential:integration:twitter:client_id",
461
- );
462
-
463
- // In managed mode, connected is always false (auth goes through platform)
464
- const connected = mode === "managed" ? false : !!accessToken;
465
-
466
- return Response.json({
467
- connected,
468
- accountInfo: accountInfo ?? undefined,
469
- mode,
470
- managedAvailable,
471
- managedPrerequisites,
472
- localClientConfigured,
473
- });
474
- } catch (err) {
475
- const message = err instanceof Error ? err.message : String(err);
476
- log.error({ err }, "Failed to get Twitter auth status");
477
- return httpError("INTERNAL_ERROR", message, 500);
478
- }
479
- }
480
-
481
- // ---------------------------------------------------------------------------
482
- // Workspace files (IPC-style list/read)
242
+ // Workspace files (list/read)
483
243
  // ---------------------------------------------------------------------------
484
244
 
485
245
  const WORKSPACE_FILES = ["IDENTITY.md", "SOUL.md", "USER.md", "skills/"];
@@ -813,21 +573,7 @@ export function settingsRouteDefinitions(): RouteDefinition[] {
813
573
  },
814
574
  },
815
575
 
816
- // Twitter auth
817
- {
818
- endpoint: "integrations/twitter/auth/start",
819
- method: "POST",
820
- policyKey: "integrations/twitter/auth/start",
821
- handler: async () => handleTwitterAuthStart(),
822
- },
823
- {
824
- endpoint: "integrations/twitter/auth/status",
825
- method: "GET",
826
- policyKey: "integrations/twitter/auth/status",
827
- handler: () => handleTwitterAuthStatus(),
828
- },
829
-
830
- // Workspace files (IPC-style list/read -- distinct from workspace-routes.ts tree/file)
576
+ // Workspace files (list/read -- distinct from workspace-routes.ts tree/file)
831
577
  {
832
578
  endpoint: "workspace-files",
833
579
  method: "GET",
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Route handlers for skill management operations.
3
3
  *
4
- * These HTTP routes expose the same business logic as the IPC skill handlers,
4
+ * These HTTP routes expose the same business logic as the skill handlers,
5
5
  * using the standalone functions extracted in `../../daemon/handlers/skills.ts`.
6
6
  */
7
7
 
@@ -173,12 +173,13 @@ export function skillRouteDefinitions(deps: SkillRouteDeps): RouteDefinition[] {
173
173
  if (!body.sourceText || typeof body.sourceText !== "string") {
174
174
  return httpError("BAD_REQUEST", "sourceText is required", 400);
175
175
  }
176
- const result = await draftSkill(
177
- { sourceText: body.sourceText },
178
- ctx(),
179
- );
176
+ const result = await draftSkill({ sourceText: body.sourceText }, ctx());
180
177
  if (!result.success) {
181
- return httpError("INTERNAL_ERROR", result.error ?? "Draft failed", 500);
178
+ return httpError(
179
+ "INTERNAL_ERROR",
180
+ result.error ?? "Draft failed",
181
+ 500,
182
+ );
182
183
  }
183
184
  return Response.json(result);
184
185
  },
@@ -2,7 +2,7 @@
2
2
  * Route handlers for subagent operations.
3
3
  *
4
4
  * Exposes subagent detail, abort, and message operations over HTTP,
5
- * sharing business logic with the IPC handlers in
5
+ * sharing business logic with the handlers in
6
6
  * `daemon/handlers/subagents.ts`.
7
7
  */
8
8
  import { getMessages } from "../../memory/conversation-crud.js";
@@ -14,7 +14,7 @@ import type { RouteDefinition } from "../http-router.js";
14
14
  const log = getLogger("subagents-routes");
15
15
 
16
16
  // ---------------------------------------------------------------------------
17
- // Shared business logic (used by both IPC handlers and HTTP routes)
17
+ // Shared business logic (used by both message handlers and HTTP routes)
18
18
  // ---------------------------------------------------------------------------
19
19
 
20
20
  function isRecord(value: unknown): value is Record<string, unknown> {
@@ -167,7 +167,7 @@ export function subagentRouteDefinitions(): RouteDefinition[] {
167
167
  const manager = getSubagentManager();
168
168
  const aborted = manager.abort(
169
169
  params.id,
170
- () => {}, // No IPC send callback needed for HTTP
170
+ () => {}, // No send callback needed for HTTP
171
171
  sessionId,
172
172
  );
173
173
 
@@ -219,13 +219,7 @@ export function subagentRouteDefinitions(): RouteDefinition[] {
219
219
 
220
220
  const result = await manager.sendMessage(params.id, body.content);
221
221
 
222
- if (result === "queue_full") {
223
- return httpError(
224
- "CONFLICT",
225
- `Subagent "${params.id}" message queue is full. Please wait for current messages to be processed.`,
226
- 409,
227
- );
228
- } else if (result === "empty") {
222
+ if (result === "empty") {
229
223
  return httpError(
230
224
  "BAD_REQUEST",
231
225
  "Message content is empty or whitespace-only.",
@@ -62,11 +62,7 @@ export async function handleSurfaceAction(
62
62
  : findSessionBySurfaceId?.(surfaceId);
63
63
 
64
64
  if (!session) {
65
- return httpError(
66
- "NOT_FOUND",
67
- "No active session found",
68
- 404,
69
- );
65
+ return httpError("NOT_FOUND", "No active session found", 404);
70
66
  }
71
67
 
72
68
  try {
@@ -115,11 +111,7 @@ export async function handleSurfaceUndo(
115
111
  : findSessionBySurfaceId?.(surfaceId);
116
112
 
117
113
  if (!session) {
118
- return httpError(
119
- "NOT_FOUND",
120
- "No active session found",
121
- 404,
122
- );
114
+ return httpError("NOT_FOUND", "No active session found", 404);
123
115
  }
124
116
 
125
117
  if (!session.handleSurfaceUndo) {
@@ -132,10 +124,7 @@ export async function handleSurfaceUndo(
132
124
 
133
125
  try {
134
126
  session.handleSurfaceUndo(surfaceId);
135
- log.info(
136
- { sessionId, surfaceId },
137
- "Surface undo handled via HTTP",
138
- );
127
+ log.info({ sessionId, surfaceId }, "Surface undo handled via HTTP");
139
128
  return Response.json({ ok: true });
140
129
  } catch (err) {
141
130
  log.error(
@@ -5,7 +5,10 @@
5
5
  * session's in-memory surface state. Used by clients to re-hydrate surfaces
6
6
  * whose data was stripped during memory compaction.
7
7
  */
8
- import type { SurfaceData, SurfaceType } from "../../daemon/message-types/surfaces.js";
8
+ import type {
9
+ SurfaceData,
10
+ SurfaceType,
11
+ } from "../../daemon/message-types/surfaces.js";
9
12
  import { getLogger } from "../../util/logger.js";
10
13
  import { httpError } from "../http-errors.js";
11
14
  import type { RouteDefinition } from "../http-router.js";
@@ -53,12 +56,20 @@ export function surfaceContentRouteDefinitions(deps: {
53
56
 
54
57
  const sessionId = url.searchParams.get("sessionId");
55
58
  if (!sessionId) {
56
- return httpError("BAD_REQUEST", "sessionId query parameter is required", 400);
59
+ return httpError(
60
+ "BAD_REQUEST",
61
+ "sessionId query parameter is required",
62
+ 400,
63
+ );
57
64
  }
58
65
 
59
66
  const surfaceId = params.surfaceId;
60
67
  if (!surfaceId) {
61
- return httpError("BAD_REQUEST", "surfaceId path parameter is required", 400);
68
+ return httpError(
69
+ "BAD_REQUEST",
70
+ "surfaceId path parameter is required",
71
+ 400,
72
+ );
62
73
  }
63
74
 
64
75
  const session = deps.findSession(sessionId);
@@ -73,7 +84,10 @@ export function surfaceContentRouteDefinitions(deps: {
73
84
  // Look up the surface in the session's in-memory state.
74
85
  const stored = session.surfaceState.get(surfaceId);
75
86
  if (stored) {
76
- log.info({ sessionId, surfaceId }, "Surface content served from surfaceState");
87
+ log.info(
88
+ { sessionId, surfaceId },
89
+ "Surface content served from surfaceState",
90
+ );
77
91
  return Response.json({
78
92
  surfaceId,
79
93
  surfaceType: stored.surfaceType,
@@ -88,7 +102,10 @@ export function surfaceContentRouteDefinitions(deps: {
88
102
  (s) => s.surfaceId === surfaceId,
89
103
  );
90
104
  if (turnSurface) {
91
- log.info({ sessionId, surfaceId }, "Surface content served from currentTurnSurfaces");
105
+ log.info(
106
+ { sessionId, surfaceId },
107
+ "Surface content served from currentTurnSurfaces",
108
+ );
92
109
  return Response.json({
93
110
  surfaceId,
94
111
  surfaceType: turnSurface.surfaceType,
@@ -2,7 +2,7 @@
2
2
  * Route handlers for work item (task queue) operations.
3
3
  *
4
4
  * Exposes all work item CRUD and lifecycle operations over HTTP,
5
- * sharing business logic with the IPC handlers in
5
+ * sharing business logic with the handlers in
6
6
  * `daemon/handlers/work-items.ts`.
7
7
  */
8
8
  import type { ServerMessage } from "../../daemon/message-protocol.js";
@@ -195,7 +195,7 @@ function extractToolHighlights(
195
195
  }
196
196
 
197
197
  // ---------------------------------------------------------------------------
198
- // Shared business logic functions (exported for IPC handler reuse)
198
+ // Shared business logic functions (exported for handler reuse)
199
199
  // ---------------------------------------------------------------------------
200
200
 
201
201
  export interface WorkItemOutputResult {
@@ -283,8 +283,7 @@ export function getWorkItemOutput(id: string): WorkItemOutputResult {
283
283
  if (!summary && msgs.length > 0) {
284
284
  const toolHighlights = extractToolHighlights(msgs, 10);
285
285
  if (toolHighlights.length > 0) {
286
- summary =
287
- "Task completed. Tool outcomes:\n" + toolHighlights.join("\n");
286
+ summary = "Task completed. Tool outcomes:\n" + toolHighlights.join("\n");
288
287
  highlights = toolHighlights.slice(0, 5);
289
288
  }
290
289
  }
@@ -458,10 +457,7 @@ export function workItemRouteDefinitions(
458
457
  // Don't allow overwriting a cancelled status
459
458
  if (body.status !== undefined) {
460
459
  const existing = getWorkItem(params.id);
461
- if (
462
- existing?.status === "cancelled" &&
463
- body.status !== "cancelled"
464
- ) {
460
+ if (existing?.status === "cancelled" && body.status !== "cancelled") {
465
461
  return Response.json({ item: existing });
466
462
  }
467
463
  }
@@ -497,7 +493,11 @@ export function workItemRouteDefinitions(
497
493
  handler: ({ params }) => {
498
494
  const existing = getWorkItem(params.id);
499
495
  if (!existing) {
500
- return httpError("NOT_FOUND", `Work item not found: ${params.id}`, 404);
496
+ return httpError(
497
+ "NOT_FOUND",
498
+ `Work item not found: ${params.id}`,
499
+ 404,
500
+ );
501
501
  }
502
502
  if (existing.status !== "awaiting_review") {
503
503
  return httpError(
@@ -580,9 +580,16 @@ export function workItemRouteDefinitions(
580
580
  handler: async ({ req, params }) => {
581
581
  const body = (await req.json()) as { approvedTools?: string[] };
582
582
  if (!Array.isArray(body.approvedTools)) {
583
- return httpError("BAD_REQUEST", "approvedTools array is required", 400);
583
+ return httpError(
584
+ "BAD_REQUEST",
585
+ "approvedTools array is required",
586
+ 400,
587
+ );
584
588
  }
585
- const result = approveWorkItemPermissions(params.id, body.approvedTools);
589
+ const result = approveWorkItemPermissions(
590
+ params.id,
591
+ body.approvedTools,
592
+ );
586
593
  if (!result.success) {
587
594
  return httpError("NOT_FOUND", result.error!, 404);
588
595
  }
@@ -620,11 +627,7 @@ export function workItemRouteDefinitions(
620
627
  }
621
628
 
622
629
  if (workItem.status === "running") {
623
- return httpError(
624
- "CONFLICT",
625
- "Work item is already running",
626
- 409,
627
- );
630
+ return httpError("CONFLICT", "Work item is already running", 409);
628
631
  }
629
632
 
630
633
  const NON_RUNNABLE_STATUSES: readonly string[] = ["archived"];
@@ -755,10 +758,7 @@ export function workItemRouteDefinitions(
755
758
  if (session) {
756
759
  (session as { headlessLock: boolean }).headlessLock = false;
757
760
  }
758
- log.error(
759
- { err, workItemId },
760
- "work_item_run_task (HTTP) failed",
761
- );
761
+ log.error({ err, workItemId }, "work_item_run_task (HTTP) failed");
762
762
  updateWorkItem(workItemId, {
763
763
  status: "failed",
764
764
  lastRunStatus: "failed",
@@ -797,11 +797,7 @@ export function workItemRouteDefinitions(
797
797
  { err, workItemId: params.id },
798
798
  "GET /v1/work-items/:id/output failed",
799
799
  );
800
- return httpError(
801
- "INTERNAL_ERROR",
802
- "Failed to load task output",
803
- 500,
804
- );
800
+ return httpError("INTERNAL_ERROR", "Failed to load task output", 500);
805
801
  }
806
802
  },
807
803
  },
@@ -657,9 +657,9 @@ describe("POST /v1/workspace/rename", () => {
657
657
  const res = await handler(ctx);
658
658
  expect(res.status).toBe(200);
659
659
  expect(existsSync(srcDir)).toBe(false);
660
- expect(
661
- existsSync(join(testWorkspaceDir, "dir-renamed", "child.txt")),
662
- ).toBe(true);
660
+ expect(existsSync(join(testWorkspaceDir, "dir-renamed", "child.txt"))).toBe(
661
+ true,
662
+ );
663
663
  });
664
664
 
665
665
  test("rejects missing source with 404", async () => {
@@ -45,7 +45,7 @@ export function resolveWorkspacePath(relativePath: string): string | undefined {
45
45
  }
46
46
 
47
47
  let ancestor = resolved;
48
-
48
+
49
49
  while (true) {
50
50
  const parent = resolve(ancestor, "..");
51
51
  if (parent === ancestor) break; // reached filesystem root
@@ -44,6 +44,9 @@ export class TelegramStreamingDelivery {
44
44
  case "assistant_text_delta":
45
45
  this.onTextDelta(msg.text);
46
46
  break;
47
+ case "tool_use_preview_start":
48
+ // Early preview of tool use — ignored by Telegram; full tool_use_start follows.
49
+ break;
47
50
  case "tool_use_start":
48
51
  // Flush buffer and send an edit so the message is up-to-date before the tool runs
49
52
  if (this.buffer.length > 0 && this.currentMessageId) {
@@ -4,7 +4,7 @@
4
4
  * These pure functions encapsulate the business logic for starting, resending,
5
5
  * and cancelling outbound verification flows (Telegram, voice, Slack).
6
6
  * They return transport-agnostic result objects and are consumed by both the
7
- * IPC handler (config-channels.ts) and the HTTP route layer (channel-verification-routes.ts).
7
+ * message handler (config-channels.ts) and the HTTP route layer (channel-verification-routes.ts).
8
8
  */
9
9
 
10
10
  import { createHash, randomBytes } from "node:crypto";
@@ -99,7 +99,7 @@ export interface CancelOutboundParams {
99
99
 
100
100
  /**
101
101
  * Transport-agnostic result object returned by outbound actions.
102
- * Maps 1:1 with the fields in ChannelVerificationSessionResponse minus the IPC
102
+ * Maps 1:1 with the fields in ChannelVerificationSessionResponse minus the
103
103
  * `type` discriminant.
104
104
  */
105
105
  export interface OutboundActionResult {
@@ -15,12 +15,6 @@ const INTEGRATION_PROBES: IntegrationProbe[] = [
15
15
  isConnected: () =>
16
16
  !!getSecureKey("credential:integration:gmail:access_token"),
17
17
  },
18
- {
19
- name: "Twitter",
20
- category: "social",
21
- isConnected: () =>
22
- !!getSecureKey("credential:integration:twitter:access_token"),
23
- },
24
18
  {
25
19
  name: "Slack",
26
20
  category: "messaging",