@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
@@ -23,7 +23,6 @@ mock.module("../util/platform.js", () => ({
23
23
  getSandboxWorkingDir: () => TEST_DIR,
24
24
  getInterfacesDir: () => join(TEST_DIR, "interfaces"),
25
25
  ensureDataDir: () => {},
26
- getSocketPath: () => join(TEST_DIR, "vellum.sock"),
27
26
  getPidPath: () => join(TEST_DIR, "vellum.pid"),
28
27
  getDbPath: () => join(TEST_DIR, "data", "assistant.db"),
29
28
  getLogPath: () => join(TEST_DIR, "logs", "vellum.log"),
@@ -621,56 +620,14 @@ describe("bundled browser skill", () => {
621
620
  });
622
621
  });
623
622
 
624
- describe("bundled public-ingress skill", () => {
625
- beforeEach(() => {
626
- mkdirSync(join(TEST_DIR, "skills"), { recursive: true });
627
- });
628
-
629
- afterEach(() => {
630
- if (existsSync(TEST_DIR)) {
631
- rmSync(TEST_DIR, { recursive: true, force: true });
632
- }
633
- });
634
-
635
- test("public-ingress skill appears in full catalog (including bundled)", () => {
636
- const catalog = loadSkillCatalog();
637
- const skill = catalog.find((s) => s.id === "public-ingress");
638
- expect(skill).toBeDefined();
639
- expect(skill!.name).toBe("public-ingress");
640
- expect(skill!.displayName).toBe("Public Ingress");
641
- expect(skill!.bundled).toBe(true);
642
- });
643
-
644
- test("public-ingress skill has correct description", () => {
645
- const catalog = loadSkillCatalog();
646
- const skill = catalog.find((s) => s.id === "public-ingress");
647
- expect(skill).toBeDefined();
648
- expect(skill!.description).toContain("ngrok");
649
- expect(skill!.description).toContain("ingress.publicBaseUrl");
650
- });
651
-
652
- test("public-ingress skill is user-invocable", () => {
653
- const catalog = loadSkillCatalog();
654
- const skill = catalog.find((s) => s.id === "public-ingress");
655
- expect(skill).toBeDefined();
656
- expect(skill!.userInvocable).toBe(true);
657
- });
658
-
659
- test("public-ingress skill has no tool manifest (instructions-only)", () => {
660
- const catalog = loadSkillCatalog();
661
- const skill = catalog.find((s) => s.id === "public-ingress");
662
- expect(skill).toBeDefined();
663
- expect(skill!.toolManifest).toBeUndefined();
664
- });
665
- });
666
-
667
623
  describe("ingress-dependent setup skills declare public-ingress", () => {
668
624
  const FRONTMATTER_REGEX = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;
669
- const BUNDLED_SKILLS_DIR = join(
625
+ const FIRST_PARTY_SKILLS_DIR = join(
670
626
  import.meta.dir,
671
627
  "..",
672
- "config",
673
- "bundled-skills",
628
+ "..",
629
+ "..",
630
+ "skills",
674
631
  );
675
632
 
676
633
  function readSkillIncludes(
@@ -710,14 +667,17 @@ describe("ingress-dependent setup skills declare public-ingress", () => {
710
667
  }
711
668
 
712
669
  test("telegram-setup includes public-ingress", () => {
713
- const includes = readSkillIncludes(BUNDLED_SKILLS_DIR, "telegram-setup");
670
+ const includes = readSkillIncludes(
671
+ FIRST_PARTY_SKILLS_DIR,
672
+ "telegram-setup",
673
+ );
714
674
  expect(includes).toBeDefined();
715
675
  expect(includes).toContain("public-ingress");
716
676
  });
717
677
 
718
678
  test("google-oauth-setup includes public-ingress", () => {
719
679
  const includes = readSkillIncludes(
720
- BUNDLED_SKILLS_DIR,
680
+ FIRST_PARTY_SKILLS_DIR,
721
681
  "google-oauth-setup",
722
682
  );
723
683
  expect(includes).toBeDefined();
@@ -725,7 +685,10 @@ describe("ingress-dependent setup skills declare public-ingress", () => {
725
685
  });
726
686
 
727
687
  test("slack-oauth-setup includes browser", () => {
728
- const includes = readSkillIncludes(BUNDLED_SKILLS_DIR, "slack-oauth-setup");
688
+ const includes = readSkillIncludes(
689
+ FIRST_PARTY_SKILLS_DIR,
690
+ "slack-oauth-setup",
691
+ );
729
692
  expect(includes).toBeDefined();
730
693
  expect(includes).toContain("browser");
731
694
  });
@@ -772,11 +735,9 @@ describe("bundled computer-use skill", () => {
772
735
  expect(cuSkill!.toolManifest).toBeDefined();
773
736
  expect(cuSkill!.toolManifest!.present).toBe(true);
774
737
  expect(cuSkill!.toolManifest!.valid).toBe(true);
775
- expect(cuSkill!.toolManifest!.toolCount).toBe(12);
738
+ expect(cuSkill!.toolManifest!.toolCount).toBe(10);
776
739
  expect(cuSkill!.toolManifest!.toolNames).toEqual([
777
740
  "computer_use_click",
778
- "computer_use_double_click",
779
- "computer_use_right_click",
780
741
  "computer_use_type_text",
781
742
  "computer_use_key",
782
743
  "computer_use_scroll",
@@ -61,7 +61,6 @@ mock.module("../util/platform.js", () => ({
61
61
  isMacOS: () => process.platform === "darwin",
62
62
  isLinux: () => process.platform === "linux",
63
63
  isWindows: () => process.platform === "win32",
64
- getSocketPath: () => join(testDir, "test.sock"),
65
64
  getPidPath: () => join(testDir, "test.pid"),
66
65
  getDbPath: () => join(testDir, "test.db"),
67
66
  getLogPath: () => join(testDir, "test.log"),
@@ -25,7 +25,6 @@ mock.module("../util/platform.js", () => ({
25
25
  isMacOS: () => process.platform === "darwin",
26
26
  isLinux: () => process.platform === "linux",
27
27
  isWindows: () => process.platform === "win32",
28
- getSocketPath: () => join(testDir, "test.sock"),
29
28
  getPidPath: () => join(testDir, "test.pid"),
30
29
  getDbPath: () => join(testDir, "test.db"),
31
30
  getLogPath: () => join(testDir, "test.log"),
@@ -129,7 +129,7 @@ describe("slack skill SKILL.md", () => {
129
129
  });
130
130
 
131
131
  test("is user-invocable", () => {
132
- expect(skillMd).toContain('"user-invocable":true');
132
+ expect(skillMd).toContain("user-invocable: true");
133
133
  });
134
134
 
135
135
  test("mentions privacy rules", () => {
@@ -4,30 +4,20 @@ import type { ServerMessage, SurfaceType } from "../daemon/message-protocol.js";
4
4
 
5
5
  mock.module("../memory/app-store.js", () => ({
6
6
  getApp: (id: string) => {
7
- if (id !== "home-base-app") return null;
7
+ if (id !== "test-app") return null;
8
8
  return {
9
9
  id,
10
- name: "Home Base",
11
- htmlDefinition:
12
- '<main id="home-base-root" data-vellum-home-base="v1"></main>',
10
+ name: "Test App",
11
+ description: "A test app",
12
+ htmlDefinition: "<main>Test App</main>",
13
13
  };
14
14
  },
15
+ getAppPreview: () => null,
15
16
  updateApp: () => {
16
17
  throw new Error("updateApp should not be called in this test");
17
18
  },
18
19
  }));
19
20
 
20
- mock.module("../home-base/prebuilt/seed.js", () => ({
21
- findSeededHomeBaseApp: () => ({ id: "home-base-app" }),
22
- getPrebuiltHomeBasePreview: () => ({
23
- title: "Home Base",
24
- subtitle: "Dashboard",
25
- description: "Preview",
26
- icon: "🏠",
27
- metrics: [{ label: "Starter tasks", value: "3" }],
28
- }),
29
- }));
30
-
31
21
  import {
32
22
  createSurfaceMutex,
33
23
  handleSurfaceAction,
@@ -70,12 +60,12 @@ describe("starter task surface actions", () => {
70
60
  ctx.pendingSurfaceActions.set("surf-1", { surfaceType: "dynamic_page" });
71
61
 
72
62
  handleSurfaceAction(ctx, "surf-1", "relay_prompt", {
73
- prompt: "Help me customize Home Base with a calmer palette.",
63
+ prompt: "Help me customize the app with a calmer palette.",
74
64
  task: "change_look_and_feel",
75
65
  });
76
66
 
77
67
  expect(forwarded).toEqual([
78
- "Help me customize Home Base with a calmer palette.",
68
+ "Help me customize the app with a calmer palette.",
79
69
  ]);
80
70
  expect(ctx.pendingSurfaceActions.has("surf-1")).toBe(true);
81
71
  });
@@ -133,7 +123,7 @@ describe("starter task surface actions", () => {
133
123
  ctx.sendToClient = (msg) => sent.push(msg);
134
124
 
135
125
  const result = await surfaceProxyResolver(ctx, "app_open", {
136
- app_id: "home-base-app",
126
+ app_id: "test-app",
137
127
  });
138
128
 
139
129
  expect(result.isError).toBe(false);
@@ -141,7 +131,7 @@ describe("starter task surface actions", () => {
141
131
  surfaceId: string;
142
132
  appId: string;
143
133
  };
144
- expect(parsed.appId).toBe("home-base-app");
134
+ expect(parsed.appId).toBe("test-app");
145
135
  expect(ctx.pendingSurfaceActions.get(parsed.surfaceId)?.surfaceType).toBe(
146
136
  "dynamic_page",
147
137
  );
@@ -91,7 +91,7 @@ function injectSubagent(
91
91
  messages: [],
92
92
  sendToClient: () => {},
93
93
  usageStats: { inputTokens: 0, outputTokens: 0, estimatedCost: 0 },
94
- enqueueMessage: () => ({ queued: false, rejected: false }),
94
+ enqueueMessage: () => ({ queued: false }),
95
95
  persistUserMessage: () => "msg-1",
96
96
  runAgentLoop: async () => {},
97
97
  };
@@ -160,7 +160,7 @@ describe("Subagent tool execute validation", () => {
160
160
  makeContext("sess-1"),
161
161
  );
162
162
  expect(result.isError).toBe(true);
163
- expect(result.content).toContain("No IPC client");
163
+ expect(result.content).toContain("No client connected");
164
164
  });
165
165
 
166
166
  test("spawn returns error when missing label", async () => {
@@ -26,7 +26,6 @@ mock.module("../util/platform.js", () => ({
26
26
  getWorkspaceHooksDir: () => join(TEST_DIR, "hooks"),
27
27
  getWorkspacePromptPath: (file: string) => join(TEST_DIR, file),
28
28
  ensureDataDir: () => {},
29
- getSocketPath: () => join(TEST_DIR, "vellum.sock"),
30
29
  getPidPath: () => join(TEST_DIR, "vellum.pid"),
31
30
  getDbPath: () => join(TEST_DIR, "data", "assistant.db"),
32
31
  getLogPath: () => join(TEST_DIR, "logs", "vellum.log"),
@@ -192,7 +191,9 @@ describe("buildSystemPrompt", () => {
192
191
  expect(result).toContain('id="release-checklist"');
193
192
  expect(result).toContain('name="Release Checklist"');
194
193
  expect(result).toContain('description="Deployment checks."');
195
- expect(result).toContain("call the `skill_load` tool with its `id`");
194
+ expect(result).toContain(
195
+ "call `skill_load` to load the full instructions, then use `skill_execute` to invoke the skill's tools.",
196
+ );
196
197
  });
197
198
 
198
199
  test("keeps SOUL.md and IDENTITY.md additive with skills", () => {
@@ -267,7 +268,7 @@ describe("buildSystemPrompt", () => {
267
268
  test("includes memory persistence section", () => {
268
269
  const result = buildSystemPrompt();
269
270
  expect(result).toContain("## Memory Persistence");
270
- expect(result).toContain("memory_save");
271
+ expect(result).toContain("memory_manage");
271
272
  expect(result).toContain("Saved > unsaved. Always.");
272
273
  });
273
274
 
@@ -320,13 +321,12 @@ describe("buildSystemPrompt", () => {
320
321
  expect(result).not.toContain("use `app_update` to change the HTML");
321
322
  });
322
323
 
323
- test("onboarding playbook uses app_file_edit for accent color, not app_update", () => {
324
+ test("onboarding playbook does not reference Home Base for accent color", () => {
324
325
  // Starter task playbooks only included during onboarding (BOOTSTRAP.md exists)
325
326
  writeFileSync(join(TEST_DIR, "BOOTSTRAP.md"), "# First run");
326
327
  const result = buildSystemPrompt();
327
- expect(result).toContain(
328
- "using `app_file_edit` to update the theme styles",
329
- );
328
+ // The make_it_yours playbook should not reference Home Base anymore
329
+ expect(result).not.toContain("Home Base dashboard");
330
330
  expect(result).not.toContain(
331
331
  "using `app_update` to regenerate the Home Base HTML",
332
332
  );
@@ -11,7 +11,6 @@ mock.module("../util/platform.js", () => ({
11
11
  isMacOS: () => process.platform === "darwin",
12
12
  isLinux: () => process.platform === "linux",
13
13
  isWindows: () => process.platform === "win32",
14
- getSocketPath: () => join(testDir, "test.sock"),
15
14
  getPidPath: () => join(testDir, "test.pid"),
16
15
  getDbPath: () => join(testDir, "test.db"),
17
16
  getLogPath: () => join(testDir, "test.log"),
@@ -10,7 +10,6 @@ mock.module("../util/platform.js", () => ({
10
10
  isMacOS: () => process.platform === "darwin",
11
11
  isLinux: () => process.platform === "linux",
12
12
  isWindows: () => process.platform === "win32",
13
- getSocketPath: () => join(testDir, "test.sock"),
14
13
  getPidPath: () => join(testDir, "test.pid"),
15
14
  getDbPath: () => join(testDir, "test.db"),
16
15
  getLogPath: () => join(testDir, "test.log"),
@@ -22,7 +22,6 @@ mock.module("../util/platform.js", () => ({
22
22
  isMacOS: () => process.platform === "darwin",
23
23
  isLinux: () => process.platform === "linux",
24
24
  isWindows: () => process.platform === "win32",
25
- getSocketPath: () => join(testDir, "test.sock"),
26
25
  getPidPath: () => join(testDir, "test.pid"),
27
26
  getDbPath: () => join(testDir, "test.db"),
28
27
  getLogPath: () => join(testDir, "test.log"),
@@ -10,7 +10,6 @@ mock.module("../util/platform.js", () => ({
10
10
  isMacOS: () => process.platform === "darwin",
11
11
  isLinux: () => process.platform === "linux",
12
12
  isWindows: () => process.platform === "win32",
13
- getSocketPath: () => join(testDir, "test.sock"),
14
13
  getPidPath: () => join(testDir, "test.pid"),
15
14
  getDbPath: () => join(testDir, "test.db"),
16
15
  getLogPath: () => join(testDir, "test.log"),
@@ -10,7 +10,6 @@ mock.module("../util/platform.js", () => ({
10
10
  isMacOS: () => process.platform === "darwin",
11
11
  isLinux: () => process.platform === "linux",
12
12
  isWindows: () => process.platform === "win32",
13
- getSocketPath: () => join(testDir, "test.sock"),
14
13
  getPidPath: () => join(testDir, "test.pid"),
15
14
  getDbPath: () => join(testDir, "test.db"),
16
15
  getLogPath: () => join(testDir, "test.log"),
@@ -25,7 +25,6 @@ mock.module("../util/platform.js", () => ({
25
25
  isMacOS: () => process.platform === "darwin",
26
26
  isLinux: () => process.platform === "linux",
27
27
  isWindows: () => process.platform === "win32",
28
- getSocketPath: () => join(testTmpDir, "test.sock"),
29
28
  getPidPath: () => join(testTmpDir, "test.pid"),
30
29
  getDbPath: () => join(testTmpDir, "test.db"),
31
30
  getLogPath: () => join(testTmpDir, "test.log"),
@@ -2,11 +2,9 @@
2
2
  * Reusable constants and helpers for the computer-use skill migration test suite.
3
3
  */
4
4
 
5
- /** The 12 computer_use_* action tool names provided by the bundled computer-use skill. */
5
+ /** The 10 computer_use_* action tool names provided by the bundled computer-use skill. */
6
6
  export const COMPUTER_USE_TOOL_NAMES = [
7
7
  "computer_use_click",
8
- "computer_use_double_click",
9
- "computer_use_right_click",
10
8
  "computer_use_type_text",
11
9
  "computer_use_key",
12
10
  "computer_use_scroll",
@@ -22,7 +20,7 @@ export const COMPUTER_USE_TOOL_NAMES = [
22
20
  export const COMPUTER_USE_SKILL_ID = "computer-use";
23
21
 
24
22
  /** Number of computer_use_* tools. */
25
- export const COMPUTER_USE_TOOL_COUNT = COMPUTER_USE_TOOL_NAMES.length; // 12
23
+ export const COMPUTER_USE_TOOL_COUNT = COMPUTER_USE_TOOL_NAMES.length; // 10
26
24
 
27
25
  import { expect } from "bun:test";
28
26
 
@@ -398,14 +398,14 @@ describe("composeThreadSeed", () => {
398
398
 
399
399
  describe("empty copy fallback", () => {
400
400
  test("falls back to event name when both title and body are empty", () => {
401
- const signal = makeSignal({ sourceEventName: "reminder.fired" });
401
+ const signal = makeSignal({ sourceEventName: "schedule.notify" });
402
402
  const copy = makeCopy({ title: "", body: "" });
403
403
  const seed = composeThreadSeed(
404
404
  signal,
405
405
  "vellum" as NotificationChannel,
406
406
  copy,
407
407
  );
408
- expect(seed).toBe("Reminder fired");
408
+ expect(seed).toBe("Schedule notify");
409
409
  });
410
410
 
411
411
  test('falls back to event name when title is "Notification" and body is empty', () => {
@@ -421,7 +421,7 @@ describe("composeThreadSeed", () => {
421
421
 
422
422
  test('uses context payload "message" field in fallback when available', () => {
423
423
  const signal = makeSignal({
424
- sourceEventName: "reminder.fired",
424
+ sourceEventName: "schedule.notify",
425
425
  contextPayload: { message: "Take out the trash" },
426
426
  });
427
427
  const copy = makeCopy({ title: "", body: "" });
@@ -430,7 +430,7 @@ describe("composeThreadSeed", () => {
430
430
  "vellum" as NotificationChannel,
431
431
  copy,
432
432
  );
433
- expect(seed).toBe("Reminder fired: Take out the trash");
433
+ expect(seed).toBe("Schedule notify: Take out the trash");
434
434
  });
435
435
 
436
436
  test('uses context payload "summary" field in fallback', () => {
@@ -463,7 +463,7 @@ describe("composeThreadSeed", () => {
463
463
 
464
464
  test("fallback is consistent across rich and compact channels", () => {
465
465
  const signal = makeSignal({
466
- sourceEventName: "reminder.fired",
466
+ sourceEventName: "schedule.notify",
467
467
  contextPayload: { message: "Call the doctor" },
468
468
  });
469
469
  const copy = makeCopy({ title: "", body: "" });
@@ -10,7 +10,6 @@ mock.module("../util/platform.js", () => ({
10
10
  isMacOS: () => process.platform === "darwin",
11
11
  isLinux: () => process.platform === "linux",
12
12
  isWindows: () => process.platform === "win32",
13
- getSocketPath: () => join(testDir, "test.sock"),
14
13
  getPidPath: () => join(testDir, "test.pid"),
15
14
  getDbPath: () => join(testDir, "test.db"),
16
15
  getLogPath: () => join(testDir, "test.log"),
@@ -80,7 +80,6 @@ mock.module("../tools/network/script-proxy/index.js", () => ({
80
80
  mock.module("../util/platform.js", () => ({
81
81
  getRootDir: () => "/tmp",
82
82
  getDataDir: () => "/tmp",
83
- getSocketPath: () => "/tmp/vellum.sock",
84
83
  }));
85
84
 
86
85
  mock.module("../tools/credentials/resolve.js", () => ({
@@ -32,7 +32,6 @@ mock.module("../util/platform.js", () => ({
32
32
  isMacOS: () => process.platform === "darwin",
33
33
  isLinux: () => process.platform === "linux",
34
34
  isWindows: () => process.platform === "win32",
35
- getSocketPath: () => join(testDir, "test.sock"),
36
35
  getPidPath: () => join(testDir, "test.pid"),
37
36
  getDbPath: () => join(testDir, "test.db"),
38
37
  getLogPath: () => join(testDir, "test.log"),
@@ -1167,7 +1167,7 @@ describe("isSideEffectTool", () => {
1167
1167
  const readOnlyTools = [
1168
1168
  "file_read",
1169
1169
  "memory_recall",
1170
- "memory_save",
1170
+ "memory_manage",
1171
1171
  "web_search",
1172
1172
  "browser_snapshot",
1173
1173
  "browser_screenshot",
@@ -1190,44 +1190,6 @@ describe("isSideEffectTool", () => {
1190
1190
  });
1191
1191
 
1192
1192
  describe("action-aware classification for mixed-action tools", () => {
1193
- test("account_manage create is a side-effect", () => {
1194
- expect(isSideEffectTool("account_manage", { action: "create" })).toBe(
1195
- true,
1196
- );
1197
- });
1198
-
1199
- test("account_manage update is a side-effect", () => {
1200
- expect(isSideEffectTool("account_manage", { action: "update" })).toBe(
1201
- true,
1202
- );
1203
- });
1204
-
1205
- test("account_manage list is NOT a side-effect", () => {
1206
- expect(isSideEffectTool("account_manage", { action: "list" })).toBe(
1207
- false,
1208
- );
1209
- });
1210
-
1211
- test("account_manage get is NOT a side-effect", () => {
1212
- expect(isSideEffectTool("account_manage", { action: "get" })).toBe(false);
1213
- });
1214
-
1215
- test("account_manage without input is NOT a side-effect", () => {
1216
- expect(isSideEffectTool("account_manage")).toBe(false);
1217
- });
1218
-
1219
- test("reminder_create is a side-effect", () => {
1220
- expect(isSideEffectTool("reminder_create")).toBe(true);
1221
- });
1222
-
1223
- test("reminder_cancel is a side-effect", () => {
1224
- expect(isSideEffectTool("reminder_cancel")).toBe(true);
1225
- });
1226
-
1227
- test("reminder_list is NOT a side-effect", () => {
1228
- expect(isSideEffectTool("reminder_list")).toBe(false);
1229
- });
1230
-
1231
1193
  test("credential_store store is a side-effect", () => {
1232
1194
  expect(isSideEffectTool("credential_store", { action: "store" })).toBe(
1233
1195
  true,
@@ -1524,15 +1486,6 @@ describe("ToolExecutor forcePromptSideEffects enforcement", () => {
1524
1486
  },
1525
1487
  { name: "document_create", input: { title: "doc", content: "body" } },
1526
1488
  { name: "document_update", input: { id: "doc-1", content: "updated" } },
1527
- { name: "account_manage", input: { action: "create", name: "acct" } },
1528
- {
1529
- name: "reminder_create",
1530
- input: {
1531
- fire_at: "2030-01-01T00:00:00Z",
1532
- label: "test",
1533
- message: "remind me",
1534
- },
1535
- },
1536
1489
  {
1537
1490
  name: "credential_store",
1538
1491
  input: { action: "store", name: "api-key", value: "secret" },
@@ -1828,47 +1781,16 @@ describe("ToolExecutor forcePromptSideEffects enforcement", () => {
1828
1781
  expect(promptCalled).toBe(true);
1829
1782
  });
1830
1783
 
1831
- // ── Action-aware mixed-action tools (PR fix5) ──────────
1832
-
1833
- test("account_manage create forces prompt in private thread", async () => {
1834
- checkResultOverride = { decision: "allow", reason: "Matched trust rule" };
1835
-
1836
- const executor = new ToolExecutor(makeTrackingPrompter());
1837
- const result = await executor.execute(
1838
- "account_manage",
1839
- { action: "create", name: "test-account" },
1840
- makeContext({ forcePromptSideEffects: true }),
1841
- );
1842
-
1843
- expect(result.isError).toBe(false);
1844
- expect(promptCalled).toBe(true);
1845
- });
1846
-
1847
- test("account_manage list does NOT force prompt in private thread", async () => {
1848
- checkResultOverride = { decision: "allow", reason: "Matched trust rule" };
1849
-
1850
- const executor = new ToolExecutor(makeTrackingPrompter());
1851
- const result = await executor.execute(
1852
- "account_manage",
1853
- { action: "list" },
1854
- makeContext({ forcePromptSideEffects: true }),
1855
- );
1856
-
1857
- expect(result.isError).toBe(false);
1858
- // list is read-only — must NOT trigger forced prompting
1859
- expect(promptCalled).toBe(false);
1860
- });
1861
-
1862
- test("reminder_create forces prompt in private thread", async () => {
1784
+ test("schedule_create forces prompt in private thread", async () => {
1863
1785
  checkResultOverride = { decision: "allow", reason: "Matched trust rule" };
1864
1786
 
1865
1787
  const executor = new ToolExecutor(makeTrackingPrompter());
1866
1788
  const result = await executor.execute(
1867
- "reminder_create",
1789
+ "schedule_create",
1868
1790
  {
1869
- fire_at: "2030-01-01T00:00:00Z",
1870
- label: "test",
1871
- message: "test reminder",
1791
+ name: "test schedule",
1792
+ expression: "0 9 * * *",
1793
+ message: "test",
1872
1794
  },
1873
1795
  makeContext({ forcePromptSideEffects: true }),
1874
1796
  );
@@ -1877,12 +1799,12 @@ describe("ToolExecutor forcePromptSideEffects enforcement", () => {
1877
1799
  expect(promptCalled).toBe(true);
1878
1800
  });
1879
1801
 
1880
- test("reminder_list does NOT force prompt in private thread", async () => {
1802
+ test("schedule_list does NOT force prompt in private thread", async () => {
1881
1803
  checkResultOverride = { decision: "allow", reason: "Matched trust rule" };
1882
1804
 
1883
1805
  const executor = new ToolExecutor(makeTrackingPrompter());
1884
1806
  const result = await executor.execute(
1885
- "reminder_list",
1807
+ "schedule_list",
1886
1808
  {},
1887
1809
  makeContext({ forcePromptSideEffects: true }),
1888
1810
  );
@@ -20,7 +20,6 @@ mock.module("../util/platform.js", () => ({
20
20
  isMacOS: () => process.platform === "darwin",
21
21
  isLinux: () => process.platform === "linux",
22
22
  isWindows: () => process.platform === "win32",
23
- getSocketPath: () => join(testDir, "test.sock"),
24
23
  getPidPath: () => join(testDir, "test.pid"),
25
24
  getDbPath: () => join(testDir, "test.db"),
26
25
  getLogPath: () => join(testDir, "test.log"),
@@ -6,7 +6,7 @@ import type { AssistantDomainEvents } from "../events/domain-events.js";
6
6
  import { registerToolNotificationListener } from "../events/tool-notification-listener.js";
7
7
 
8
8
  describe("registerToolNotificationListener", () => {
9
- test("forwards tool.secret.detected events to IPC secret_detected messages", async () => {
9
+ test("forwards tool.secret.detected events to secret_detected messages", async () => {
10
10
  const bus = new EventBus<AssistantDomainEvents>();
11
11
  const messages: ServerMessage[] = [];
12
12
  registerToolNotificationListener(bus, (msg) => messages.push(msg));