@vellumai/assistant 0.4.43 → 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 (713) hide show
  1. package/.prettierignore +4 -0
  2. package/ARCHITECTURE.md +46 -44
  3. package/README.md +15 -16
  4. package/bun.lock +10 -35
  5. package/docs/architecture/integrations.md +102 -215
  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 -3
  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-asset.test.ts +1 -1
  40. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
  41. package/src/__tests__/call-controller.test.ts +0 -1
  42. package/src/__tests__/call-conversation-messages.test.ts +0 -1
  43. package/src/__tests__/call-domain.test.ts +0 -1
  44. package/src/__tests__/call-pointer-messages.test.ts +0 -1
  45. package/src/__tests__/call-recovery.test.ts +0 -1
  46. package/src/__tests__/call-routes-http.test.ts +0 -1
  47. package/src/__tests__/call-store.test.ts +0 -1
  48. package/src/__tests__/canonical-guardian-store.test.ts +0 -1
  49. package/src/__tests__/channel-approval-routes.test.ts +1 -1
  50. package/src/__tests__/channel-approvals.test.ts +1 -1
  51. package/src/__tests__/channel-delivery-store.test.ts +0 -1
  52. package/src/__tests__/channel-guardian.test.ts +5 -7
  53. package/src/__tests__/channel-retry-sweep.test.ts +0 -1
  54. package/src/__tests__/checker.test.ts +32 -36
  55. package/src/__tests__/compaction.benchmark.test.ts +16 -14
  56. package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
  57. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  58. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
  59. package/src/__tests__/computer-use-tools.test.ts +35 -31
  60. package/src/__tests__/config-schema.test.ts +11 -15
  61. package/src/__tests__/config-watcher.test.ts +0 -1
  62. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  63. package/src/__tests__/conflict-store.test.ts +0 -1
  64. package/src/__tests__/connection-policy.test.ts +4 -7
  65. package/src/__tests__/contacts-tools.test.ts +0 -1
  66. package/src/__tests__/context-memory-e2e.test.ts +2 -4
  67. package/src/__tests__/context-overflow-reducer.test.ts +2 -4
  68. package/src/__tests__/context-window-manager.test.ts +147 -60
  69. package/src/__tests__/contradiction-checker.test.ts +0 -1
  70. package/src/__tests__/conversation-attention-store.test.ts +0 -1
  71. package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
  72. package/src/__tests__/conversation-pairing.test.ts +2 -2
  73. package/src/__tests__/conversation-routes-guardian-reply.test.ts +31 -7
  74. package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
  75. package/src/__tests__/conversation-store.test.ts +0 -1
  76. package/src/__tests__/conversation-unread-route.test.ts +1 -2
  77. package/src/__tests__/credential-security-invariants.test.ts +8 -8
  78. package/src/__tests__/cross-provider-web-search.test.ts +353 -0
  79. package/src/__tests__/daemon-assistant-events.test.ts +6 -7
  80. package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
  81. package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
  82. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
  83. package/src/__tests__/diagnostics-export.test.ts +189 -0
  84. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  85. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
  86. package/src/__tests__/entity-extractor.test.ts +0 -1
  87. package/src/__tests__/entity-search.test.ts +0 -1
  88. package/src/__tests__/ephemeral-permissions.test.ts +2 -4
  89. package/src/__tests__/error-handler-friendly-messages.test.ts +46 -0
  90. package/src/__tests__/file-read-tool.test.ts +86 -0
  91. package/src/__tests__/followup-tools.test.ts +0 -1
  92. package/src/__tests__/frontmatter.test.ts +77 -34
  93. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  94. package/src/__tests__/gateway-only-guard.test.ts +1 -1
  95. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
  96. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
  97. package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
  98. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
  99. package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
  100. package/src/__tests__/guardian-action-store.test.ts +0 -1
  101. package/src/__tests__/guardian-action-sweep.test.ts +0 -1
  102. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
  103. package/src/__tests__/guardian-dispatch.test.ts +1 -2
  104. package/src/__tests__/guardian-grant-minting.test.ts +1 -1
  105. package/src/__tests__/guardian-outbound-http.test.ts +0 -1
  106. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
  107. package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
  108. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  109. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
  110. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
  111. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
  112. package/src/__tests__/host-bash-proxy.test.ts +335 -0
  113. package/src/__tests__/host-file-proxy.test.ts +374 -0
  114. package/src/__tests__/host-shell-tool.test.ts +147 -1
  115. package/src/__tests__/http-user-message-parity.test.ts +361 -0
  116. package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
  117. package/src/__tests__/integration-status.test.ts +3 -8
  118. package/src/__tests__/intent-routing.test.ts +7 -46
  119. package/src/__tests__/invite-redemption-service.test.ts +0 -1
  120. package/src/__tests__/invite-routes-http.test.ts +0 -1
  121. package/src/__tests__/llm-usage-store.test.ts +0 -1
  122. package/src/__tests__/managed-avatar-client.test.ts +101 -55
  123. package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
  124. package/src/__tests__/managed-store.test.ts +94 -21
  125. package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
  126. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
  127. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
  128. package/src/__tests__/memory-recall-quality.test.ts +0 -1
  129. package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
  130. package/src/__tests__/memory-regressions.test.ts +0 -1
  131. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
  132. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
  133. package/src/__tests__/messaging-send-tool.test.ts +35 -0
  134. package/src/__tests__/messaging-skill-split.test.ts +138 -0
  135. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
  136. package/src/__tests__/migration-export-http.test.ts +2 -3
  137. package/src/__tests__/migration-import-commit-http.test.ts +1 -2
  138. package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
  139. package/src/__tests__/migration-validate-http.test.ts +1 -2
  140. package/src/__tests__/native-web-search.test.ts +475 -0
  141. package/src/__tests__/navigate-settings-tab.test.ts +84 -0
  142. package/src/__tests__/non-member-access-request.test.ts +0 -1
  143. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  144. package/src/__tests__/notification-decision-strategy.test.ts +6 -6
  145. package/src/__tests__/notification-deep-link.test.ts +7 -7
  146. package/src/__tests__/notification-guardian-path.test.ts +2 -3
  147. package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
  148. package/src/__tests__/notification-thread-candidates.test.ts +4 -4
  149. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
  150. package/src/__tests__/onboarding-template-contract.test.ts +0 -10
  151. package/src/__tests__/playbook-execution.test.ts +0 -1
  152. package/src/__tests__/playbook-tools.test.ts +0 -1
  153. package/src/__tests__/profile-compiler.test.ts +0 -1
  154. package/src/__tests__/provider-fail-open-selection.test.ts +12 -2
  155. package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
  156. package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
  157. package/src/__tests__/recording-handler.test.ts +30 -94
  158. package/src/__tests__/registry.test.ts +28 -35
  159. package/src/__tests__/relay-server.test.ts +0 -1
  160. package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
  161. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  162. package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
  163. package/src/__tests__/runtime-events-sse.test.ts +0 -1
  164. package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
  165. package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
  166. package/src/__tests__/schedule-store.test.ts +441 -1
  167. package/src/__tests__/schedule-tools.test.ts +468 -7
  168. package/src/__tests__/scheduler-recurrence.test.ts +196 -23
  169. package/src/__tests__/scoped-approval-grants.test.ts +0 -1
  170. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
  171. package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
  172. package/src/__tests__/secret-response-routing.test.ts +4 -1
  173. package/src/__tests__/send-endpoint-busy.test.ts +14 -5
  174. package/src/__tests__/send-notification-tool.test.ts +0 -7
  175. package/src/__tests__/sequence-store.test.ts +0 -1
  176. package/src/__tests__/server-history-render.test.ts +1 -2
  177. package/src/__tests__/session-abort-tool-results.test.ts +0 -1
  178. package/src/__tests__/session-agent-loop.test.ts +46 -6
  179. package/src/__tests__/session-confirmation-signals.test.ts +7 -46
  180. package/src/__tests__/session-conflict-gate.test.ts +2 -6
  181. package/src/__tests__/session-error.test.ts +5 -14
  182. package/src/__tests__/session-init.benchmark.test.ts +3 -5
  183. package/src/__tests__/session-load-history-repair.test.ts +0 -1
  184. package/src/__tests__/session-media-retry.test.ts +12 -74
  185. package/src/__tests__/session-pre-run-repair.test.ts +0 -1
  186. package/src/__tests__/session-profile-injection.test.ts +2 -6
  187. package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
  188. package/src/__tests__/session-queue.test.ts +94 -139
  189. package/src/__tests__/session-skill-tools.test.ts +115 -115
  190. package/src/__tests__/session-slash-known.test.ts +0 -1
  191. package/src/__tests__/session-slash-queue.test.ts +0 -1
  192. package/src/__tests__/session-slash-unknown.test.ts +0 -1
  193. package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
  194. package/src/__tests__/session-usage.test.ts +0 -1
  195. package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
  196. package/src/__tests__/session-workspace-injection.test.ts +2 -6
  197. package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
  198. package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
  199. package/src/__tests__/skill-feature-flags.test.ts +125 -18
  200. package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
  201. package/src/__tests__/skill-load-tool.test.ts +194 -2
  202. package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
  203. package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
  204. package/src/__tests__/skills.test.ts +14 -53
  205. package/src/__tests__/slack-channel-config.test.ts +0 -1
  206. package/src/__tests__/slack-inbound-verification.test.ts +0 -1
  207. package/src/__tests__/slack-skill.test.ts +1 -1
  208. package/src/__tests__/starter-task-flow.test.ts +9 -19
  209. package/src/__tests__/subagent-tools.test.ts +2 -2
  210. package/src/__tests__/system-prompt.test.ts +7 -7
  211. package/src/__tests__/task-compiler.test.ts +0 -1
  212. package/src/__tests__/task-management-tools.test.ts +0 -1
  213. package/src/__tests__/task-memory-cleanup.test.ts +0 -1
  214. package/src/__tests__/task-runner.test.ts +0 -1
  215. package/src/__tests__/task-scheduler.test.ts +0 -1
  216. package/src/__tests__/terminal-tools.test.ts +0 -1
  217. package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
  218. package/src/__tests__/thread-seed-composer.test.ts +5 -5
  219. package/src/__tests__/tool-approval-handler.test.ts +0 -1
  220. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  221. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  222. package/src/__tests__/tool-executor.test.ts +8 -86
  223. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
  224. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  225. package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
  226. package/src/__tests__/trust-store.test.ts +84 -8
  227. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  228. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
  229. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
  230. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  231. package/src/__tests__/trusted-contact-verification.test.ts +0 -1
  232. package/src/__tests__/twilio-provider.test.ts +0 -1
  233. package/src/__tests__/twilio-routes.test.ts +0 -1
  234. package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
  235. package/src/__tests__/update-bulletin.test.ts +0 -1
  236. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
  237. package/src/__tests__/usage-routes.test.ts +0 -1
  238. package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
  239. package/src/__tests__/voice-invite-redemption.test.ts +0 -1
  240. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
  241. package/src/__tests__/voice-session-bridge.test.ts +9 -1
  242. package/src/__tests__/web-fetch.test.ts +57 -0
  243. package/src/__tests__/workspace-git-service.test.ts +5 -14
  244. package/src/__tests__/workspace-policy.test.ts +0 -1
  245. package/src/agent/loop.ts +22 -34
  246. package/src/bundler/bundle-signer.ts +4 -4
  247. package/src/calls/call-controller.ts +1 -1
  248. package/src/calls/relay-server.ts +1 -1
  249. package/src/calls/twilio-rest.ts +1 -1
  250. package/src/calls/voice-session-bridge.ts +3 -1
  251. package/src/cli/__tests__/notifications.test.ts +3 -4
  252. package/src/cli/commands/map.ts +2 -6
  253. package/src/cli/commands/mcp.ts +73 -15
  254. package/src/cli/commands/notifications.ts +4 -4
  255. package/src/cli/commands/sessions.ts +9 -1
  256. package/src/cli/commands/skills.ts +6 -10
  257. package/src/cli/http-client.ts +2 -3
  258. package/src/cli/main-screen.tsx +10 -10
  259. package/src/cli/program.ts +0 -4
  260. package/src/cli/reference.ts +0 -2
  261. package/src/cli.ts +15 -9
  262. package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
  263. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
  264. package/src/config/bundled-skills/app-builder/SKILL.md +6 -7
  265. package/src/config/bundled-skills/app-builder/TOOLS.json +0 -4
  266. package/src/config/bundled-skills/browser/SKILL.md +6 -1
  267. package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
  268. package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
  269. package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
  270. package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
  271. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
  272. package/src/config/bundled-skills/contacts/SKILL.md +10 -1
  273. package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
  274. package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
  275. package/src/config/bundled-skills/document/SKILL.md +4 -1
  276. package/src/config/bundled-skills/doordash/SKILL.md +8 -2
  277. package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +1 -82
  278. package/src/config/bundled-skills/doordash/doordash-cli.ts +17 -28
  279. package/src/config/bundled-skills/doordash/lib/session.ts +21 -17
  280. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
  281. package/src/config/bundled-skills/followups/SKILL.md +4 -1
  282. package/src/config/bundled-skills/gmail/SKILL.md +180 -0
  283. package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
  284. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
  285. package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
  286. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
  287. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
  288. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
  289. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
  290. package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
  291. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
  292. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
  293. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
  294. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
  295. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
  296. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
  297. package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
  298. package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
  299. package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
  300. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
  301. package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
  302. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
  303. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
  304. package/src/config/bundled-skills/messaging/SKILL.md +23 -139
  305. package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
  306. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
  307. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
  308. package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
  309. package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
  310. package/src/config/bundled-skills/notifications/SKILL.md +5 -1
  311. package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
  312. package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
  313. package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → orchestration/tools/swarm-delegate.ts} +3 -3
  314. package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
  315. package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
  316. package/src/config/bundled-skills/schedule/SKILL.md +70 -9
  317. package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
  318. package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
  319. package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
  320. package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
  321. package/src/config/bundled-skills/sequences/SKILL.md +47 -0
  322. package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
  323. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
  324. package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
  325. package/src/config/bundled-skills/settings/SKILL.md +12 -0
  326. package/src/config/bundled-skills/settings/TOOLS.json +112 -0
  327. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
  328. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
  329. package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
  330. package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
  331. package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
  332. package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
  333. package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
  334. package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
  335. package/src/config/bundled-skills/slack/SKILL.md +5 -1
  336. package/src/config/bundled-skills/subagent/SKILL.md +4 -1
  337. package/src/config/bundled-skills/tasks/SKILL.md +5 -2
  338. package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
  339. package/src/config/bundled-skills/watcher/SKILL.md +4 -1
  340. package/src/config/bundled-tool-registry.ts +118 -107
  341. package/src/config/env.ts +5 -2
  342. package/src/config/feature-flag-registry.json +33 -9
  343. package/src/config/loader.ts +10 -2
  344. package/src/config/schema.ts +19 -16
  345. package/src/config/schemas/inference.ts +12 -22
  346. package/src/config/schemas/memory-storage.ts +19 -1
  347. package/src/config/schemas/platform.ts +0 -16
  348. package/src/config/skill-state.ts +11 -8
  349. package/src/config/skills.ts +83 -32
  350. package/src/context/token-estimator.ts +11 -0
  351. package/src/context/window-manager.ts +180 -151
  352. package/src/daemon/computer-use-session.ts +11 -43
  353. package/src/daemon/daemon-control.ts +4 -1
  354. package/src/daemon/handlers/config-channels.ts +5 -9
  355. package/src/daemon/handlers/config-ingress.ts +0 -4
  356. package/src/daemon/handlers/config-model.ts +7 -13
  357. package/src/daemon/handlers/config-telegram.ts +4 -8
  358. package/src/daemon/handlers/config-voice.ts +2 -5
  359. package/src/daemon/handlers/dictation.ts +2 -12
  360. package/src/daemon/handlers/identity.ts +0 -105
  361. package/src/daemon/handlers/recording.ts +3 -23
  362. package/src/daemon/handlers/session-history.ts +42 -10
  363. package/src/daemon/handlers/sessions.ts +53 -72
  364. package/src/daemon/handlers/shared.ts +7 -28
  365. package/src/daemon/handlers/skills.ts +31 -27
  366. package/src/daemon/host-bash-proxy.ts +148 -0
  367. package/src/daemon/host-file-proxy.ts +135 -0
  368. package/src/daemon/lifecycle.ts +53 -41
  369. package/src/daemon/mcp-reload-service.ts +123 -0
  370. package/src/daemon/message-protocol.ts +6 -0
  371. package/src/daemon/message-types/apps.ts +0 -25
  372. package/src/daemon/message-types/browser.ts +1 -1
  373. package/src/daemon/message-types/computer-use.ts +1 -4
  374. package/src/daemon/message-types/guardian-actions.ts +1 -1
  375. package/src/daemon/message-types/host-bash.ts +18 -0
  376. package/src/daemon/message-types/host-file.ts +44 -0
  377. package/src/daemon/message-types/integrations.ts +1 -73
  378. package/src/daemon/message-types/messages.ts +15 -0
  379. package/src/daemon/message-types/schedules.ts +11 -27
  380. package/src/daemon/message-types/sessions.ts +8 -2
  381. package/src/daemon/message-types/settings.ts +1 -1
  382. package/src/daemon/message-types/shared.ts +1 -1
  383. package/src/daemon/message-types/surfaces.ts +2 -0
  384. package/src/daemon/ride-shotgun-handler.ts +35 -43
  385. package/src/daemon/seed-files.ts +3 -27
  386. package/src/daemon/server.ts +45 -28
  387. package/src/daemon/session-agent-loop-handlers.ts +72 -9
  388. package/src/daemon/session-agent-loop.ts +97 -66
  389. package/src/daemon/session-attachments.ts +1 -1
  390. package/src/daemon/session-error.ts +17 -16
  391. package/src/daemon/session-lifecycle.ts +20 -1
  392. package/src/daemon/session-media-retry.ts +1 -15
  393. package/src/daemon/session-messaging.ts +14 -6
  394. package/src/daemon/session-process.ts +36 -7
  395. package/src/daemon/session-queue-manager.ts +62 -103
  396. package/src/daemon/session-runtime-assembly.ts +27 -7
  397. package/src/daemon/session-skill-tools.ts +12 -11
  398. package/src/daemon/session-slash.ts +7 -0
  399. package/src/daemon/session-surfaces.ts +192 -118
  400. package/src/daemon/session-tool-setup.ts +146 -6
  401. package/src/daemon/session.ts +75 -37
  402. package/src/errors.ts +0 -2
  403. package/src/export/formatter.ts +6 -0
  404. package/src/mcp/mcp-oauth-provider.ts +1 -3
  405. package/src/media/avatar-router.ts +20 -28
  406. package/src/media/avatar-types.ts +7 -14
  407. package/src/media/managed-avatar-client.ts +70 -34
  408. package/src/memory/app-store.ts +0 -18
  409. package/src/memory/conversation-title-service.ts +1 -2
  410. package/src/memory/db-init.ts +16 -0
  411. package/src/memory/embedding-backend.ts +129 -27
  412. package/src/memory/embedding-gemini.test.ts +256 -0
  413. package/src/memory/embedding-gemini.ts +47 -13
  414. package/src/memory/embedding-local.ts +14 -2
  415. package/src/memory/embedding-ollama.ts +15 -2
  416. package/src/memory/embedding-openai.ts +15 -2
  417. package/src/memory/embedding-types.test.ts +116 -0
  418. package/src/memory/embedding-types.ts +61 -0
  419. package/src/memory/fingerprint.ts +1 -1
  420. package/src/memory/indexer.ts +25 -1
  421. package/src/memory/job-handlers/embedding.test.ts +258 -0
  422. package/src/memory/job-handlers/embedding.ts +81 -1
  423. package/src/memory/job-handlers/index-maintenance.ts +35 -1
  424. package/src/memory/job-handlers/media-processing.ts +11 -1
  425. package/src/memory/job-utils.ts +21 -6
  426. package/src/memory/jobs-store.ts +5 -1
  427. package/src/memory/jobs-worker.ts +8 -0
  428. package/src/memory/message-content.ts +66 -0
  429. package/src/memory/migrations/100-core-tables.ts +1 -31
  430. package/src/memory/migrations/104-core-indexes.ts +0 -11
  431. package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
  432. package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
  433. package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
  434. package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
  435. package/src/memory/migrations/index.ts +4 -0
  436. package/src/memory/migrations/registry.ts +19 -0
  437. package/src/memory/qdrant-client.ts +158 -43
  438. package/src/memory/retriever.test.ts +0 -1
  439. package/src/memory/retriever.ts +12 -2
  440. package/src/memory/schema/infrastructure.ts +5 -37
  441. package/src/memory/search/formatting.ts +34 -9
  442. package/src/memory/search/semantic.ts +57 -2
  443. package/src/memory/search/types.ts +2 -1
  444. package/src/notifications/AGENTS.md +2 -2
  445. package/src/notifications/README.md +59 -58
  446. package/src/notifications/adapters/macos.ts +1 -1
  447. package/src/notifications/broadcaster.ts +5 -5
  448. package/src/notifications/copy-composer.ts +1 -1
  449. package/src/notifications/decision-engine.ts +2 -2
  450. package/src/notifications/destination-resolver.ts +2 -2
  451. package/src/notifications/emit-signal.ts +8 -8
  452. package/src/notifications/signal.ts +1 -1
  453. package/src/notifications/thread-seed-composer.ts +1 -1
  454. package/src/oauth/connect-orchestrator.ts +1 -1
  455. package/src/oauth/token-persistence.ts +1 -1
  456. package/src/permissions/checker.ts +12 -1
  457. package/src/permissions/defaults.ts +13 -17
  458. package/src/permissions/trust-store.ts +37 -0
  459. package/src/permissions/workspace-policy.ts +0 -1
  460. package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
  461. package/src/prompts/computer-use-prompt.ts +1 -1
  462. package/src/prompts/system-prompt.ts +33 -35
  463. package/src/prompts/templates/BOOTSTRAP.md +0 -3
  464. package/src/prompts/templates/SOUL.md +1 -2
  465. package/src/prompts/templates/UPDATES.md +16 -7
  466. package/src/providers/anthropic/client.ts +87 -33
  467. package/src/providers/gemini/client.ts +6 -0
  468. package/src/providers/managed-proxy/constants.ts +5 -0
  469. package/src/providers/openai/client.ts +15 -0
  470. package/src/providers/registry.ts +4 -6
  471. package/src/providers/types.ts +24 -2
  472. package/src/runtime/AGENTS.md +18 -0
  473. package/src/runtime/assistant-event-hub.ts +2 -3
  474. package/src/runtime/assistant-event.ts +4 -4
  475. package/src/runtime/auth/__tests__/context.test.ts +5 -5
  476. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
  477. package/src/runtime/auth/__tests__/guard-tests.test.ts +3 -2
  478. package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
  479. package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
  480. package/src/runtime/auth/__tests__/scopes.test.ts +9 -8
  481. package/src/runtime/auth/__tests__/subject.test.ts +8 -8
  482. package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
  483. package/src/runtime/auth/route-policy.ts +8 -8
  484. package/src/runtime/auth/scopes.ts +2 -1
  485. package/src/runtime/auth/subject.ts +4 -4
  486. package/src/runtime/auth/token-service.ts +1 -24
  487. package/src/runtime/auth/types.ts +3 -3
  488. package/src/runtime/guardian-action-followup-executor.ts +1 -1
  489. package/src/runtime/guardian-action-grant-minter.ts +1 -1
  490. package/src/runtime/guardian-action-service.ts +3 -3
  491. package/src/runtime/http-server.ts +15 -2
  492. package/src/runtime/http-types.ts +10 -0
  493. package/src/runtime/invite-service.ts +3 -3
  494. package/src/runtime/local-actor-identity.ts +17 -22
  495. package/src/runtime/middleware/error-handler.ts +14 -1
  496. package/src/runtime/pending-interactions.ts +21 -9
  497. package/src/runtime/routes/app-management-routes.ts +63 -67
  498. package/src/runtime/routes/approval-routes.ts +1 -3
  499. package/src/runtime/routes/brain-graph/brain-graph.html +1845 -0
  500. package/src/runtime/routes/brain-graph-routes.ts +4 -42
  501. package/src/runtime/routes/btw-routes.ts +155 -0
  502. package/src/runtime/routes/computer-use-routes.ts +77 -31
  503. package/src/runtime/routes/conversation-routes.ts +234 -47
  504. package/src/runtime/routes/diagnostics-routes.ts +154 -43
  505. package/src/runtime/routes/documents-routes.ts +2 -2
  506. package/src/runtime/routes/global-search-routes.ts +1 -1
  507. package/src/runtime/routes/host-bash-routes.ts +83 -0
  508. package/src/runtime/routes/host-file-routes.ts +79 -0
  509. package/src/runtime/routes/integrations/slack/share.ts +1 -1
  510. package/src/runtime/routes/log-export-routes.ts +120 -0
  511. package/src/runtime/routes/mcp-routes.ts +20 -0
  512. package/src/runtime/routes/migration-routes.ts +3 -3
  513. package/src/runtime/routes/pairing-routes.ts +1 -1
  514. package/src/runtime/routes/recording-routes.ts +6 -4
  515. package/src/runtime/routes/schedule-routes.ts +31 -5
  516. package/src/runtime/routes/session-management-routes.ts +2 -6
  517. package/src/runtime/routes/session-query-routes.ts +18 -15
  518. package/src/runtime/routes/settings-routes.ts +7 -351
  519. package/src/runtime/routes/skills-routes.ts +7 -6
  520. package/src/runtime/routes/subagents-routes.ts +4 -10
  521. package/src/runtime/routes/surface-action-routes.ts +3 -14
  522. package/src/runtime/routes/surface-content-routes.ts +22 -5
  523. package/src/runtime/routes/work-items-routes.ts +21 -25
  524. package/src/runtime/routes/workspace-routes.test.ts +3 -3
  525. package/src/runtime/routes/workspace-utils.ts +1 -1
  526. package/src/runtime/telegram-streaming-delivery.ts +3 -0
  527. package/src/runtime/verification-outbound-actions.ts +2 -2
  528. package/src/schedule/integration-status.ts +0 -6
  529. package/src/schedule/schedule-store.ts +234 -43
  530. package/src/schedule/scheduler.ts +73 -74
  531. package/src/security/oauth2.ts +1 -1
  532. package/src/sequence/store.ts +12 -2
  533. package/src/skills/frontmatter.ts +19 -77
  534. package/src/skills/managed-store.ts +11 -2
  535. package/src/subagent/manager.ts +5 -3
  536. package/src/tasks/ephemeral-permissions.ts +3 -5
  537. package/src/tools/AGENTS.md +37 -0
  538. package/src/tools/apps/executors.ts +0 -6
  539. package/src/tools/browser/browser-manager.ts +17 -11
  540. package/src/tools/browser/jit-auth.ts +4 -1
  541. package/src/tools/claude-code/claude-code.ts +1 -1
  542. package/src/tools/computer-use/definitions.ts +48 -60
  543. package/src/tools/document/document-tool.ts +6 -6
  544. package/src/tools/document/editor-template.ts +10 -8
  545. package/src/tools/filesystem/edit.ts +2 -1
  546. package/src/tools/filesystem/read.ts +20 -2
  547. package/src/tools/filesystem/write.ts +2 -1
  548. package/src/tools/host-filesystem/edit.ts +17 -1
  549. package/src/tools/host-filesystem/read.ts +16 -1
  550. package/src/tools/host-filesystem/write.ts +15 -1
  551. package/src/tools/host-terminal/host-shell.ts +24 -0
  552. package/src/tools/memory/definitions.ts +45 -81
  553. package/src/tools/memory/handlers.test.ts +0 -1
  554. package/src/tools/memory/handlers.ts +1 -1
  555. package/src/tools/memory/register.ts +26 -60
  556. package/src/tools/network/script-proxy/session-manager.ts +6 -8
  557. package/src/tools/network/web-fetch.ts +7 -1
  558. package/src/tools/network/web-search.ts +2 -1
  559. package/src/tools/registry.ts +23 -0
  560. package/src/tools/schedule/create.ts +113 -5
  561. package/src/tools/schedule/list.ts +57 -15
  562. package/src/tools/schedule/update.ts +73 -3
  563. package/src/tools/shared/filesystem/image-read.ts +192 -0
  564. package/src/tools/side-effects.ts +1 -7
  565. package/src/tools/skills/delete-managed.ts +27 -64
  566. package/src/tools/skills/execute.ts +54 -0
  567. package/src/tools/skills/load.ts +127 -5
  568. package/src/tools/skills/scaffold-managed.ts +93 -172
  569. package/src/tools/subagent/message.ts +0 -7
  570. package/src/tools/subagent/spawn.ts +1 -1
  571. package/src/tools/swarm/delegate.ts +0 -3
  572. package/src/tools/system/avatar-generator.ts +13 -19
  573. package/src/tools/system/request-permission.ts +2 -1
  574. package/src/tools/terminal/safe-env.ts +1 -0
  575. package/src/tools/tool-manifest.ts +41 -47
  576. package/src/tools/types.ts +6 -2
  577. package/src/tools/ui-surface/definitions.ts +0 -55
  578. package/src/util/errors.ts +12 -10
  579. package/src/workspace/git-service.ts +0 -2
  580. package/src/__tests__/account-registry.test.ts +0 -258
  581. package/src/__tests__/email-classifier.test.ts +0 -25
  582. package/src/__tests__/gmail-integration.test.ts +0 -97
  583. package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
  584. package/src/__tests__/home-base-bootstrap.test.ts +0 -84
  585. package/src/__tests__/managed-twitter-guardrails.test.ts +0 -353
  586. package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -79
  587. package/src/__tests__/recording-intent-fallback.test.ts +0 -199
  588. package/src/__tests__/recording-intent.test.ts +0 -985
  589. package/src/__tests__/recording-state-machine.test.ts +0 -1574
  590. package/src/__tests__/reminder-store.test.ts +0 -350
  591. package/src/__tests__/reminder.test.ts +0 -337
  592. package/src/__tests__/scan-result-store.test.ts +0 -121
  593. package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -450
  594. package/src/__tests__/view-image-tool.test.ts +0 -241
  595. package/src/cli/commands/amazon/cart.ts +0 -513
  596. package/src/cli/commands/amazon/checkout.ts +0 -394
  597. package/src/cli/commands/amazon/client.ts +0 -513
  598. package/src/cli/commands/amazon/index.ts +0 -920
  599. package/src/cli/commands/amazon/product-details.ts +0 -145
  600. package/src/cli/commands/amazon/request-extractor.ts +0 -187
  601. package/src/cli/commands/amazon/search.ts +0 -76
  602. package/src/cli/commands/amazon/session.ts +0 -116
  603. package/src/cli/commands/twitter/__tests__/cli-error-shaping.test.ts +0 -265
  604. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -483
  605. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -412
  606. package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -197
  607. package/src/cli/commands/twitter/client.ts +0 -989
  608. package/src/cli/commands/twitter/index.ts +0 -1160
  609. package/src/cli/commands/twitter/oauth-client.ts +0 -94
  610. package/src/cli/commands/twitter/router.ts +0 -396
  611. package/src/cli/commands/twitter/session.ts +0 -121
  612. package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
  613. package/src/config/bundled-skills/agentmail/icon.svg +0 -21
  614. package/src/config/bundled-skills/amazon/SKILL.md +0 -137
  615. package/src/config/bundled-skills/amazon/icon.svg +0 -13
  616. package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
  617. package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
  618. package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
  619. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
  620. package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
  621. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
  622. package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
  623. package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
  624. package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
  625. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
  626. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
  627. package/src/config/bundled-skills/influencer/SKILL.md +0 -144
  628. package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
  629. package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
  630. package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
  631. package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
  632. package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
  633. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
  634. package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
  635. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
  636. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
  637. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
  638. package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
  639. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
  640. package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
  641. package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
  642. package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
  643. package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
  644. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
  645. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
  646. package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
  647. package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
  648. package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
  649. package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
  650. package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
  651. package/src/config/bundled-skills/notion/SKILL.md +0 -240
  652. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
  653. package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
  654. package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
  655. package/src/config/bundled-skills/reminder/SKILL.md +0 -79
  656. package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
  657. package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
  658. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
  659. package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
  660. package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
  661. package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
  662. package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
  663. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
  664. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
  665. package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
  666. package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
  667. package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
  668. package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
  669. package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
  670. package/src/config/bundled-skills/twitter/SKILL.md +0 -319
  671. package/src/config/bundled-skills/twitter/icon.svg +0 -14
  672. package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
  673. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
  674. package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
  675. package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
  676. package/src/daemon/handlers/pairing.ts +0 -119
  677. package/src/daemon/handlers/session-user-message.ts +0 -961
  678. package/src/daemon/recording-executor.ts +0 -180
  679. package/src/daemon/recording-intent-fallback.ts +0 -162
  680. package/src/daemon/recording-intent.ts +0 -493
  681. package/src/home-base/app-link-store.ts +0 -78
  682. package/src/home-base/bootstrap.ts +0 -74
  683. package/src/home-base/prebuilt/brain-graph.html +0 -1483
  684. package/src/home-base/prebuilt/index.html +0 -702
  685. package/src/home-base/prebuilt/seed-metadata.json +0 -21
  686. package/src/home-base/prebuilt/seed.ts +0 -122
  687. package/src/home-base/prebuilt-home-base-updater.ts +0 -36
  688. package/src/memory/account-store.ts +0 -117
  689. package/src/messaging/activity-analyzer.ts +0 -76
  690. package/src/messaging/email-classifier.ts +0 -208
  691. package/src/messaging/index.ts +0 -2
  692. package/src/messaging/outreach-classifier.ts +0 -185
  693. package/src/messaging/thread-summarizer.ts +0 -346
  694. package/src/messaging/types.ts +0 -17
  695. package/src/tools/browser/x-auto-navigate.ts +0 -254
  696. package/src/tools/credentials/account-registry.ts +0 -144
  697. package/src/tools/filesystem/view-image.ts +0 -244
  698. package/src/tools/reminder/reminder-store.ts +0 -194
  699. package/src/tools/reminder/reminder.ts +0 -158
  700. package/src/tools/system/navigate-settings.ts +0 -74
  701. package/src/tools/system/open-system-settings.ts +0 -85
  702. package/src/tools/system/version.ts +0 -54
  703. package/src/twitter/platform-proxy-client.ts +0 -405
  704. package/src/util/cookie-session.ts +0 -98
  705. /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
  706. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
  707. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
  708. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
  709. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
  710. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
  711. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
  712. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
  713. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
@@ -13,8 +13,8 @@ import type { ServerMessage } from "../daemon/message-protocol.js";
13
13
  // ── Types ─────────────────────────────────────────────────────────────────────
14
14
 
15
15
  /**
16
- * A single assistant event wrapping an IPC ServerMessage payload.
17
- * The `message` field is intentionally unchanged from the IPC form so that
16
+ * A single assistant event wrapping a ServerMessage payload.
17
+ * The `message` field preserves the original form so that
18
18
  * delta semantics (text deltas, tool input deltas, etc.) are preserved.
19
19
  */
20
20
  export interface AssistantEvent {
@@ -26,7 +26,7 @@ export interface AssistantEvent {
26
26
  sessionId?: string;
27
27
  /** ISO-8601 timestamp of when the event was emitted. */
28
28
  emittedAt: string;
29
- /** Unchanged IPC outbound message payload. */
29
+ /** Outbound server message payload. */
30
30
  message: ServerMessage;
31
31
  }
32
32
 
@@ -36,7 +36,7 @@ export interface AssistantEvent {
36
36
  * Construct an `AssistantEvent` envelope around a `ServerMessage`.
37
37
  *
38
38
  * @param assistantId The logical assistant identifier (e.g. from the daemon or HTTP route).
39
- * @param message The unchanged IPC outbound message payload.
39
+ * @param message The outbound server message payload.
40
40
  * @param sessionId Optional conversation/session id — pass when known.
41
41
  */
42
42
  export function buildAssistantEvent(
@@ -50,19 +50,19 @@ describe("buildAuthContext", () => {
50
50
  }
51
51
  });
52
52
 
53
- test("builds context from valid ipc claims", () => {
53
+ test("builds context from valid local claims", () => {
54
54
  const result = buildAuthContext(
55
55
  validClaims({
56
- sub: "ipc:self:session-123",
57
- scope_profile: "ipc_v1",
56
+ sub: "local:self:session-123",
57
+ scope_profile: "local_v1",
58
58
  }),
59
59
  );
60
60
  expect(result.ok).toBe(true);
61
61
  if (result.ok) {
62
- expect(result.context.principalType).toBe("ipc");
62
+ expect(result.context.principalType).toBe("local");
63
63
  expect(result.context.assistantId).toBe("self");
64
64
  expect(result.context.sessionId).toBe("session-123");
65
- expect(result.context.scopes.has("ipc.all")).toBe(true);
65
+ expect(result.context.scopes.has("local.all")).toBe(true);
66
66
  }
67
67
  });
68
68
 
@@ -21,7 +21,6 @@ mock.module("../../../util/platform.js", () => ({
21
21
  isMacOS: () => process.platform === "darwin",
22
22
  isLinux: () => process.platform === "linux",
23
23
  isWindows: () => process.platform === "win32",
24
- getSocketPath: () => join(testDir, "test.sock"),
25
24
  getPidPath: () => join(testDir, "test.pid"),
26
25
  getLogPath: () => join(testDir, "test.log"),
27
26
  ensureDataDir: () => {},
@@ -289,6 +289,7 @@ describe("scope profile contract", () => {
289
289
  ],
290
290
  gateway_ingress_v1: ["ingress.write", "internal.write"],
291
291
  gateway_service_v1: [
292
+ "chat.read",
292
293
  "chat.write",
293
294
  "settings.read",
294
295
  "settings.write",
@@ -296,7 +297,7 @@ describe("scope profile contract", () => {
296
297
  "attachments.write",
297
298
  "internal.write",
298
299
  ],
299
- ipc_v1: ["ipc.all"],
300
+ local_v1: ["local.all"],
300
301
  ui_page_v1: ["settings.read"],
301
302
  };
302
303
 
@@ -319,7 +320,7 @@ describe("scope profile contract", () => {
319
320
  "actor_client_v1",
320
321
  "gateway_ingress_v1",
321
322
  "gateway_service_v1",
322
- "ipc_v1",
323
+ "local_v1",
323
324
  "ui_page_v1",
324
325
  ];
325
326
 
@@ -1,56 +1,56 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
 
3
3
  import { DAEMON_INTERNAL_ASSISTANT_ID } from "../../assistant-scope.js";
4
- import { buildIpcAuthContext } from "../../local-actor-identity.js";
4
+ import { buildLocalAuthContext } from "../../local-actor-identity.js";
5
5
  import { CURRENT_POLICY_EPOCH } from "../policy.js";
6
6
  import { resolveScopeProfile } from "../scopes.js";
7
7
 
8
- describe("buildIpcAuthContext", () => {
8
+ describe("buildLocalAuthContext", () => {
9
9
  test("produces correct subject pattern", () => {
10
- const ctx = buildIpcAuthContext("session-abc");
11
- expect(ctx.subject).toBe("ipc:self:session-abc");
10
+ const ctx = buildLocalAuthContext("session-abc");
11
+ expect(ctx.subject).toBe("local:self:session-abc");
12
12
  });
13
13
 
14
- test("sets principalType to ipc", () => {
15
- const ctx = buildIpcAuthContext("session-abc");
16
- expect(ctx.principalType).toBe("ipc");
14
+ test("sets principalType to local", () => {
15
+ const ctx = buildLocalAuthContext("session-abc");
16
+ expect(ctx.principalType).toBe("local");
17
17
  });
18
18
 
19
19
  test("uses DAEMON_INTERNAL_ASSISTANT_ID for assistantId", () => {
20
- const ctx = buildIpcAuthContext("session-abc");
20
+ const ctx = buildLocalAuthContext("session-abc");
21
21
  expect(ctx.assistantId).toBe(DAEMON_INTERNAL_ASSISTANT_ID);
22
22
  expect(ctx.assistantId).toBe("self");
23
23
  });
24
24
 
25
25
  test("includes sessionId from argument", () => {
26
- const ctx = buildIpcAuthContext("my-session-123");
26
+ const ctx = buildLocalAuthContext("my-session-123");
27
27
  expect(ctx.sessionId).toBe("my-session-123");
28
28
  });
29
29
 
30
- test("uses ipc_v1 scope profile", () => {
31
- const ctx = buildIpcAuthContext("session-abc");
32
- expect(ctx.scopeProfile).toBe("ipc_v1");
30
+ test("uses local_v1 scope profile", () => {
31
+ const ctx = buildLocalAuthContext("session-abc");
32
+ expect(ctx.scopeProfile).toBe("local_v1");
33
33
  });
34
34
 
35
- test("resolves scopes from ipc_v1 profile", () => {
36
- const ctx = buildIpcAuthContext("session-abc");
37
- const expectedScopes = resolveScopeProfile("ipc_v1");
35
+ test("resolves scopes from local_v1 profile", () => {
36
+ const ctx = buildLocalAuthContext("session-abc");
37
+ const expectedScopes = resolveScopeProfile("local_v1");
38
38
  expect(ctx.scopes).toBe(expectedScopes);
39
- expect(ctx.scopes.has("ipc.all")).toBe(true);
39
+ expect(ctx.scopes.has("local.all")).toBe(true);
40
40
  });
41
41
 
42
42
  test("uses current policy epoch", () => {
43
- const ctx = buildIpcAuthContext("session-abc");
43
+ const ctx = buildLocalAuthContext("session-abc");
44
44
  expect(ctx.policyEpoch).toBe(CURRENT_POLICY_EPOCH);
45
45
  });
46
46
 
47
47
  test("does not set actorPrincipalId", () => {
48
- const ctx = buildIpcAuthContext("session-abc");
48
+ const ctx = buildLocalAuthContext("session-abc");
49
49
  expect(ctx.actorPrincipalId).toBeUndefined();
50
50
  });
51
51
 
52
52
  test("matches AuthContext shape from HTTP JWT-derived contexts", () => {
53
- const ctx = buildIpcAuthContext("session-xyz");
53
+ const ctx = buildLocalAuthContext("session-xyz");
54
54
 
55
55
  // Verify all required AuthContext fields are present
56
56
  expect(typeof ctx.subject).toBe("string");
@@ -63,8 +63,8 @@ describe("buildIpcAuthContext", () => {
63
63
  });
64
64
 
65
65
  test("different session IDs produce different subjects", () => {
66
- const ctx1 = buildIpcAuthContext("session-1");
67
- const ctx2 = buildIpcAuthContext("session-2");
66
+ const ctx1 = buildLocalAuthContext("session-1");
67
+ const ctx2 = buildLocalAuthContext("session-2");
68
68
  expect(ctx1.subject).not.toBe(ctx2.subject);
69
69
  expect(ctx1.sessionId).not.toBe(ctx2.sessionId);
70
70
  });
@@ -129,13 +129,13 @@ describe("enforcePolicy", () => {
129
129
  expect(result!.status).toBe(403);
130
130
  });
131
131
 
132
- test("standard actor endpoints allow actor, svc_gateway, and ipc", () => {
132
+ test("standard actor endpoints allow actor, svc_gateway, and local", () => {
133
133
  authDisabled = false;
134
134
  const policy = getPolicy("messages:POST");
135
135
  expect(policy).toBeDefined();
136
136
  expect(policy!.allowedPrincipalTypes).toContain("actor");
137
137
  expect(policy!.allowedPrincipalTypes).toContain("svc_gateway");
138
- expect(policy!.allowedPrincipalTypes).toContain("ipc");
138
+ expect(policy!.allowedPrincipalTypes).toContain("local");
139
139
  });
140
140
 
141
141
  test("dev bypass allows all requests through regardless of policy", () => {
@@ -42,7 +42,7 @@ describe("resolveScopeProfile", () => {
42
42
  const scopes = resolveScopeProfile("actor_client_v1");
43
43
  expect(scopes.has("ingress.write")).toBe(false);
44
44
  expect(scopes.has("internal.write")).toBe(false);
45
- expect(scopes.has("ipc.all")).toBe(false);
45
+ expect(scopes.has("local.all")).toBe(false);
46
46
  });
47
47
 
48
48
  test("gateway_ingress_v1 includes ingress and internal scopes", () => {
@@ -54,18 +54,19 @@ describe("resolveScopeProfile", () => {
54
54
 
55
55
  test("gateway_service_v1 includes chat, settings, attachments, and internal scopes", () => {
56
56
  const scopes = resolveScopeProfile("gateway_service_v1");
57
+ expect(scopes.has("chat.read")).toBe(true);
57
58
  expect(scopes.has("chat.write")).toBe(true);
58
59
  expect(scopes.has("settings.read")).toBe(true);
59
60
  expect(scopes.has("settings.write")).toBe(true);
60
61
  expect(scopes.has("attachments.read")).toBe(true);
61
62
  expect(scopes.has("attachments.write")).toBe(true);
62
63
  expect(scopes.has("internal.write")).toBe(true);
63
- expect(scopes.size).toBe(6);
64
+ expect(scopes.size).toBe(7);
64
65
  });
65
66
 
66
- test("ipc_v1 includes only ipc.all", () => {
67
- const scopes = resolveScopeProfile("ipc_v1");
68
- expect(scopes.has("ipc.all")).toBe(true);
67
+ test("local_v1 includes only local.all", () => {
68
+ const scopes = resolveScopeProfile("local_v1");
69
+ expect(scopes.has("local.all")).toBe(true);
69
70
  expect(scopes.size).toBe(1);
70
71
  });
71
72
  });
@@ -81,9 +82,9 @@ describe("hasScope", () => {
81
82
  expect(hasScope(ctx, "ingress.write")).toBe(false);
82
83
  });
83
84
 
84
- test("returns true for ipc.all on ipc_v1 profile", () => {
85
- const ctx = makeCtx("ipc_v1");
86
- expect(hasScope(ctx, "ipc.all")).toBe(true);
85
+ test("returns true for local.all on local_v1 profile", () => {
86
+ const ctx = makeCtx("local_v1");
87
+ expect(hasScope(ctx, "local.all")).toBe(true);
87
88
  });
88
89
  });
89
90
 
@@ -76,14 +76,14 @@ describe("parseSub", () => {
76
76
  });
77
77
 
78
78
  // -------------------------------------------------------------------------
79
- // ipc pattern
79
+ // local pattern
80
80
  // -------------------------------------------------------------------------
81
81
 
82
- test("parses ipc:<assistantId>:<sessionId>", () => {
83
- const result = parseSub("ipc:self:session-xyz");
82
+ test("parses local:<assistantId>:<sessionId>", () => {
83
+ const result = parseSub("local:self:session-xyz");
84
84
  expect(result.ok).toBe(true);
85
85
  if (result.ok) {
86
- expect(result.principalType).toBe("ipc");
86
+ expect(result.principalType).toBe("local");
87
87
  expect(result.assistantId).toBe("self");
88
88
  expect(result.sessionId).toBe("session-xyz");
89
89
  expect(result.actorPrincipalId).toBeUndefined();
@@ -158,16 +158,16 @@ describe("parseSub", () => {
158
158
  }
159
159
  });
160
160
 
161
- test("fails on ipc with empty sessionId", () => {
162
- const result = parseSub("ipc:self:");
161
+ test("fails on local with empty sessionId", () => {
162
+ const result = parseSub("local:self:");
163
163
  expect(result.ok).toBe(false);
164
164
  if (!result.ok) {
165
165
  expect(result.reason).toContain("empty");
166
166
  }
167
167
  });
168
168
 
169
- test("fails on ipc with empty assistantId", () => {
170
- const result = parseSub("ipc::session-abc");
169
+ test("fails on local with empty assistantId", () => {
170
+ const result = parseSub("local::session-abc");
171
171
  expect(result.ok).toBe(false);
172
172
  if (!result.ok) {
173
173
  expect(result.reason).toContain("empty");
@@ -13,7 +13,6 @@ mock.module("../../../util/platform.js", () => ({
13
13
  isMacOS: () => process.platform === "darwin",
14
14
  isLinux: () => process.platform === "linux",
15
15
  isWindows: () => process.platform === "win32",
16
- getSocketPath: () => join(testDir, "test.sock"),
17
16
  getPidPath: () => join(testDir, "test.pid"),
18
17
  getLogPath: () => join(testDir, "test.log"),
19
18
  ensureDataDir: () => {},
@@ -126,6 +126,7 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
126
126
  // Conversation / messaging
127
127
  { endpoint: "messages:GET", scopes: ["chat.read"] },
128
128
  { endpoint: "messages:POST", scopes: ["chat.write"] },
129
+ { endpoint: "btw", scopes: ["chat.write"] },
129
130
  { endpoint: "conversations", scopes: ["chat.read"] },
130
131
  { endpoint: "conversations:DELETE", scopes: ["chat.write"] },
131
132
  { endpoint: "conversations/switch", scopes: ["chat.write"] },
@@ -144,6 +145,7 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
144
145
  { endpoint: "confirm", scopes: ["approval.write"] },
145
146
  { endpoint: "secret", scopes: ["approval.write"] },
146
147
  { endpoint: "trust-rules", scopes: ["approval.write"] },
148
+ { endpoint: "host-bash-result", scopes: ["approval.write"] },
147
149
  { endpoint: "pending-interactions", scopes: ["approval.read"] },
148
150
 
149
151
  // Guardian actions
@@ -170,7 +172,6 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
170
172
  { endpoint: "identity", scopes: ["settings.read"] },
171
173
  { endpoint: "brain-graph", scopes: ["settings.read"] },
172
174
  { endpoint: "brain-graph-ui", scopes: ["settings.read"] },
173
- { endpoint: "home-base-ui", scopes: ["settings.read"] },
174
175
  { endpoint: "contacts", scopes: ["settings.read"] },
175
176
  { endpoint: "contacts:POST", scopes: ["settings.write"] },
176
177
  { endpoint: "contacts:DELETE", scopes: ["settings.write"] },
@@ -380,6 +381,9 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
380
381
  // Delivery ack
381
382
  { endpoint: "channels/delivery-ack", scopes: ["internal.write"] },
382
383
 
384
+ // MCP
385
+ { endpoint: "mcp/reload", scopes: ["settings.write"] },
386
+
383
387
  // Migrations
384
388
  { endpoint: "migrations/validate", scopes: ["settings.write"] },
385
389
  { endpoint: "migrations/export", scopes: ["settings.write"] },
@@ -396,6 +400,7 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
396
400
  { endpoint: "schedules:DELETE", scopes: ["settings.write"] },
397
401
  { endpoint: "schedules/toggle", scopes: ["settings.write"] },
398
402
  { endpoint: "schedules/run", scopes: ["settings.write"] },
403
+ { endpoint: "schedules/cancel", scopes: ["settings.write"] },
399
404
 
400
405
  // Diagnostics
401
406
  { endpoint: "diagnostics/export", scopes: ["settings.read"] },
@@ -406,13 +411,8 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
406
411
 
407
412
  // OAuth / integrations
408
413
  { endpoint: "integrations/oauth/start", scopes: ["settings.write"] },
409
- { endpoint: "integrations/twitter/auth/start", scopes: ["settings.write"] },
410
- { endpoint: "integrations/twitter/auth/status", scopes: ["settings.read"] },
411
-
412
- // Home base
413
- { endpoint: "home-base", scopes: ["settings.read"] },
414
414
 
415
- // Workspace files (IPC-migrated)
415
+ // Workspace files
416
416
  { endpoint: "workspace-files", scopes: ["settings.read"] },
417
417
  { endpoint: "workspace-files/read", scopes: ["settings.read"] },
418
418
 
@@ -424,7 +424,7 @@ const ACTOR_ENDPOINTS: Array<{ endpoint: string; scopes: Scope[] }> = [
424
424
  for (const { endpoint, scopes } of ACTOR_ENDPOINTS) {
425
425
  registerPolicy(endpoint, {
426
426
  requiredScopes: scopes,
427
- allowedPrincipalTypes: ["actor", "svc_gateway", "svc_daemon", "ipc"],
427
+ allowedPrincipalTypes: ["actor", "svc_gateway", "svc_daemon", "local"],
428
428
  });
429
429
  }
430
430
 
@@ -29,6 +29,7 @@ const PROFILE_SCOPES: Record<ScopeProfile, ReadonlySet<Scope>> = {
29
29
  ]),
30
30
  gateway_ingress_v1: new Set<Scope>(["ingress.write", "internal.write"]),
31
31
  gateway_service_v1: new Set<Scope>([
32
+ "chat.read",
32
33
  "chat.write",
33
34
  "settings.read",
34
35
  "settings.write",
@@ -36,7 +37,7 @@ const PROFILE_SCOPES: Record<ScopeProfile, ReadonlySet<Scope>> = {
36
37
  "attachments.write",
37
38
  "internal.write",
38
39
  ]),
39
- ipc_v1: new Set<Scope>(["ipc.all"]),
40
+ local_v1: new Set<Scope>(["local.all"]),
40
41
  ui_page_v1: new Set<Scope>(["settings.read"]),
41
42
  };
42
43
 
@@ -32,7 +32,7 @@ export type ParseSubResult =
32
32
  * actor:<assistantId>:<actorPrincipalId>
33
33
  * svc:gateway:<assistantId>
34
34
  * svc:daemon:<identifier>
35
- * ipc:<assistantId>:<sessionId>
35
+ * local:<assistantId>:<sessionId>
36
36
  */
37
37
  export function parseSub(sub: string): ParseSubResult {
38
38
  if (!sub || typeof sub !== "string") {
@@ -68,15 +68,15 @@ export function parseSub(sub: string): ParseSubResult {
68
68
  return { ok: true, principalType: "svc_daemon", assistantId: identifier };
69
69
  }
70
70
 
71
- if (parts[0] === "ipc" && parts.length === 3) {
71
+ if (parts[0] === "local" && parts.length === 3) {
72
72
  const [, assistantId, sessionId] = parts;
73
73
  if (!assistantId || !sessionId) {
74
74
  return {
75
75
  ok: false,
76
- reason: "ipc sub has empty assistantId or sessionId",
76
+ reason: "local sub has empty assistantId or sessionId",
77
77
  };
78
78
  }
79
- return { ok: true, principalType: "ipc", assistantId, sessionId };
79
+ return { ok: true, principalType: "local", assistantId, sessionId };
80
80
  }
81
81
 
82
82
  return { ok: false, reason: `unrecognized sub pattern: ${sub}` };
@@ -309,7 +309,7 @@ export function mintEdgeRelayToken(): string {
309
309
 
310
310
  /**
311
311
  * Mint a long-lived JWT for embedding in browser-served UI pages
312
- * (brain-graph, home-base).
312
+ * (brain-graph).
313
313
  *
314
314
  * These pages make API calls that route through the gateway, which validates
315
315
  * tokens with validateEdgeToken() expecting aud=vellum-gateway. A 1-hour TTL
@@ -329,29 +329,6 @@ export function mintUiPageToken(): string {
329
329
  });
330
330
  }
331
331
 
332
- // ---------------------------------------------------------------------------
333
- // CLI edge token
334
- // ---------------------------------------------------------------------------
335
-
336
- /**
337
- * Mint a long-lived JWT for the CLI to authenticate with the gateway.
338
- *
339
- * Written to ~/.vellum/http-token at daemon startup so the CLI can read it
340
- * and pass it as a Bearer token. Regenerated on each daemon restart. A 30-day
341
- * TTL avoids expiry between restarts while keeping the window bounded.
342
- *
343
- * Uses aud=vellum-gateway so the gateway's edge-auth middleware accepts it.
344
- */
345
- export function mintCliEdgeToken(): string {
346
- return mintToken({
347
- aud: "vellum-gateway",
348
- sub: "svc:daemon:self",
349
- scope_profile: "gateway_service_v1",
350
- policy_epoch: CURRENT_POLICY_EPOCH,
351
- ttlSeconds: 86400 * 30,
352
- });
353
- }
354
-
355
332
  // ---------------------------------------------------------------------------
356
333
  // Pairing bearer token
357
334
  // ---------------------------------------------------------------------------
@@ -13,7 +13,7 @@ export type ScopeProfile =
13
13
  | "actor_client_v1"
14
14
  | "gateway_ingress_v1"
15
15
  | "gateway_service_v1"
16
- | "ipc_v1"
16
+ | "local_v1"
17
17
  | "ui_page_v1";
18
18
 
19
19
  // ---------------------------------------------------------------------------
@@ -35,13 +35,13 @@ export type Scope =
35
35
  | "internal.write"
36
36
  | "feature_flags.read"
37
37
  | "feature_flags.write"
38
- | "ipc.all";
38
+ | "local.all";
39
39
 
40
40
  // ---------------------------------------------------------------------------
41
41
  // Principal types — derived from the sub pattern
42
42
  // ---------------------------------------------------------------------------
43
43
 
44
- export type PrincipalType = "actor" | "svc_gateway" | "svc_daemon" | "ipc";
44
+ export type PrincipalType = "actor" | "svc_gateway" | "svc_daemon" | "local";
45
45
 
46
46
  // ---------------------------------------------------------------------------
47
47
  // Token audience — which service the JWT is intended for
@@ -13,7 +13,7 @@
13
13
  * reply text for the guardian's confirmation message.
14
14
  *
15
15
  * This module is channel-agnostic: both inbound-message-handler (Telegram
16
- * channels) and session-process (mac/IPC channel) use it.
16
+ * channels) and session-process (desktop channel) use it.
17
17
  */
18
18
 
19
19
  import { startCall } from "../calls/call-domain.js";
@@ -3,7 +3,7 @@
3
3
  * request is resolved with tool metadata.
4
4
  *
5
5
  * Used by both the channel inbound path (inbound-message-handler.ts) and
6
- * the desktop/IPC path (session-process.ts) to ensure grants are minted
6
+ * the desktop path (session-process.ts) to ensure grants are minted
7
7
  * consistently regardless of which channel the guardian answers on.
8
8
  */
9
9
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Encapsulates the core business logic — validation, conversation scoping,
5
5
  * canonical decision application, and result mapping — so both the HTTP
6
- * handler and the IPC handler can delegate here without duplicating code.
6
+ * handler and the message handler can delegate here without duplicating code.
7
7
  */
8
8
 
9
9
  import { applyCanonicalGuardianDecision } from "../approvals/guardian-decision-primitive.js";
@@ -61,7 +61,7 @@ export type ProcessGuardianDecisionResult =
61
61
  *
62
62
  * Validates the action, checks conversation scope if applicable, applies the
63
63
  * canonical decision, and maps the result to a caller-agnostic shape that
64
- * both HTTP and IPC handlers can interpret.
64
+ * both HTTP and message handlers can interpret.
65
65
  */
66
66
  export async function processGuardianDecision(
67
67
  params: ProcessGuardianDecisionParams,
@@ -97,7 +97,7 @@ export async function processGuardianDecision(
97
97
  action: action as ApprovalAction,
98
98
  actorContext: {
99
99
  actorPrincipalId: actorContext.actorPrincipalId,
100
- actorExternalUserId: undefined, // Desktop/IPC path — no channel-native ID
100
+ actorExternalUserId: undefined, // Desktop path — no channel-native ID
101
101
  channel,
102
102
  guardianPrincipalId: actorContext.guardianPrincipalId,
103
103
  },
@@ -97,6 +97,7 @@ import { appRouteDefinitions } from "./routes/app-routes.js";
97
97
  import { approvalRouteDefinitions } from "./routes/approval-routes.js";
98
98
  import { attachmentRouteDefinitions } from "./routes/attachment-routes.js";
99
99
  import { brainGraphRouteDefinitions } from "./routes/brain-graph-routes.js";
100
+ import { btwRouteDefinitions } from "./routes/btw-routes.js";
100
101
  import { callRouteDefinitions } from "./routes/call-routes.js";
101
102
  import {
102
103
  startCanonicalGuardianExpirySweep,
@@ -124,6 +125,8 @@ import { globalSearchRouteDefinitions } from "./routes/global-search-routes.js";
124
125
  import { guardianActionRouteDefinitions } from "./routes/guardian-action-routes.js";
125
126
  import { handleGuardianBootstrap } from "./routes/guardian-bootstrap-routes.js";
126
127
  import { handleGuardianRefresh } from "./routes/guardian-refresh-routes.js";
128
+ import { hostBashRouteDefinitions } from "./routes/host-bash-routes.js";
129
+ import { hostFileRouteDefinitions } from "./routes/host-file-routes.js";
127
130
  import { handleHealth } from "./routes/identity-routes.js";
128
131
  import { identityRouteDefinitions } from "./routes/identity-routes.js";
129
132
  import { slackChannelRouteDefinitions } from "./routes/integrations/slack/channel.js";
@@ -131,6 +134,8 @@ import { slackShareRouteDefinitions } from "./routes/integrations/slack/share.js
131
134
  import { telegramRouteDefinitions } from "./routes/integrations/telegram.js";
132
135
  import { twilioRouteDefinitions } from "./routes/integrations/twilio.js";
133
136
  import { inviteRouteDefinitions } from "./routes/invite-routes.js";
137
+ import { logExportRouteDefinitions } from "./routes/log-export-routes.js";
138
+ import { mcpRouteDefinitions } from "./routes/mcp-routes.js";
134
139
  import { migrationRouteDefinitions } from "./routes/migration-routes.js";
135
140
  import type { PairingHandlerContext } from "./routes/pairing-routes.js";
136
141
  import {
@@ -242,12 +247,12 @@ export class RuntimeHttpServer {
242
247
  return this.server?.port ?? this.port;
243
248
  }
244
249
 
245
- /** Expose the pairing store so the daemon server can wire IPC handlers. */
250
+ /** Expose the pairing store so the daemon server can wire HTTP handlers. */
246
251
  getPairingStore(): PairingStore {
247
252
  return this.pairingStore;
248
253
  }
249
254
 
250
- /** Set a callback for broadcasting IPC messages (wired by daemon server). */
255
+ /** Set a callback for broadcasting server messages (wired by daemon server). */
251
256
  setPairingBroadcast(fn: (msg: ServerMessage) => void): void {
252
257
  this.pairingBroadcast = fn;
253
258
  }
@@ -712,6 +717,7 @@ export class RuntimeHttpServer {
712
717
  ...secretRouteDefinitions(),
713
718
  ...identityRouteDefinitions(),
714
719
  ...debugRouteDefinitions(),
720
+ ...mcpRouteDefinitions(),
715
721
  ...usageRouteDefinitions(),
716
722
  ...workspaceRouteDefinitions(),
717
723
  ...settingsRouteDefinitions(),
@@ -719,6 +725,7 @@ export class RuntimeHttpServer {
719
725
  sendMessageDeps: this.sendMessageDeps,
720
726
  }),
721
727
  ...diagnosticsRouteDefinitions(),
728
+ ...logExportRouteDefinitions(),
722
729
  ...documentRouteDefinitions(),
723
730
  ...workItemRouteDefinitions(
724
731
  this.sendMessageDeps
@@ -920,6 +927,10 @@ export class RuntimeHttpServer {
920
927
  },
921
928
  },
922
929
 
930
+ ...btwRouteDefinitions({
931
+ sendMessageDeps: this.sendMessageDeps,
932
+ }),
933
+
923
934
  ...conversationRouteDefinitions({
924
935
  interfacesDir: this.interfacesDir,
925
936
  sendMessageDeps: this.sendMessageDeps,
@@ -929,6 +940,8 @@ export class RuntimeHttpServer {
929
940
  }),
930
941
  ...globalSearchRouteDefinitions(),
931
942
  ...approvalRouteDefinitions(),
943
+ ...hostBashRouteDefinitions(),
944
+ ...hostFileRouteDefinitions(),
932
945
  ...(this.getSkillContext
933
946
  ? skillRouteDefinitions({
934
947
  getSkillContext: this.getSkillContext,
@@ -247,4 +247,14 @@ export interface RuntimeMessagePayload {
247
247
  isError?: boolean;
248
248
  }>;
249
249
  interfaces?: string[];
250
+ surfaces?: Array<{
251
+ surfaceId: string;
252
+ surfaceType: string;
253
+ title?: string;
254
+ data: Record<string, unknown>;
255
+ actions?: unknown[];
256
+ display?: string;
257
+ }>;
258
+ textSegments?: string[];
259
+ contentOrder?: string[];
250
260
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Shared business logic for invite management.
3
3
  *
4
- * Extracted from the IPC handlers in daemon/handlers/config-inbox.ts so that
5
- * both the HTTP routes and the IPC handlers call the same logic.
4
+ * Extracted from the handlers in daemon/handlers/config-inbox.ts so that
5
+ * both the HTTP routes and the message handlers call the same logic.
6
6
  *
7
7
  * Member/contact operations have been migrated to the /v1/contacts and
8
8
  * /v1/contacts/channels endpoints.
@@ -38,7 +38,7 @@ import {
38
38
  } from "./invite-redemption-service.js";
39
39
 
40
40
  // ---------------------------------------------------------------------------
41
- // Response shapes — used by both HTTP routes and IPC handlers
41
+ // Response shapes — used by both HTTP routes and message handlers
42
42
  // ---------------------------------------------------------------------------
43
43
 
44
44
  export interface InviteResponseData {