@vellumai/assistant 0.3.4 → 0.3.6

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 (506) hide show
  1. package/Dockerfile +2 -0
  2. package/README.md +88 -2
  3. package/eslint.config.mjs +31 -0
  4. package/package.json +1 -1
  5. package/scripts/ipc/check-swift-decoder-drift.ts +4 -1
  6. package/scripts/ipc/generate-swift.ts +31 -2
  7. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +438 -1
  8. package/src/__tests__/approval-conversation-turn.test.ts +214 -0
  9. package/src/__tests__/approval-hardcoded-copy-guard.test.ts +41 -0
  10. package/src/__tests__/approval-message-composer.test.ts +253 -0
  11. package/src/__tests__/browser-manager.test.ts +1 -0
  12. package/src/__tests__/call-conversation-messages.test.ts +130 -0
  13. package/src/__tests__/call-domain.test.ts +12 -2
  14. package/src/__tests__/call-orchestrator.test.ts +799 -249
  15. package/src/__tests__/call-pointer-messages.test.ts +148 -0
  16. package/src/__tests__/call-recovery.test.ts +3 -0
  17. package/src/__tests__/call-routes-http.test.ts +32 -2
  18. package/src/__tests__/call-store.test.ts +3 -0
  19. package/src/__tests__/channel-approval-routes.test.ts +1277 -98
  20. package/src/__tests__/channel-approval.test.ts +37 -0
  21. package/src/__tests__/channel-approvals.test.ts +36 -50
  22. package/src/__tests__/channel-guardian.test.ts +630 -22
  23. package/src/__tests__/channel-readiness-service.test.ts +324 -0
  24. package/src/__tests__/checker.test.ts +14 -7
  25. package/src/__tests__/clarification-resolver.test.ts +44 -24
  26. package/src/__tests__/commit-message-enrichment-service.test.ts +9 -4
  27. package/src/__tests__/computer-use-session-working-dir.test.ts +8 -0
  28. package/src/__tests__/config-schema.test.ts +14 -8
  29. package/src/__tests__/context-window-manager.test.ts +30 -2
  30. package/src/__tests__/contradiction-checker.test.ts +20 -5
  31. package/src/__tests__/credential-security-invariants.test.ts +7 -2
  32. package/src/__tests__/daemon-lifecycle.test.ts +13 -12
  33. package/src/__tests__/db-migration-rollback.test.ts +752 -0
  34. package/src/__tests__/dictation-mode-detection.test.ts +63 -0
  35. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -0
  36. package/src/__tests__/entity-search.test.ts +615 -0
  37. package/src/__tests__/fuzzy-match-property.test.ts +5 -5
  38. package/src/__tests__/guardian-action-store.test.ts +123 -0
  39. package/src/__tests__/guardian-action-sweep.test.ts +277 -0
  40. package/src/__tests__/guardian-dispatch.test.ts +389 -0
  41. package/src/__tests__/guardian-question-copy.test.ts +47 -0
  42. package/src/__tests__/handlers-telegram-config.test.ts +4 -2
  43. package/src/__tests__/handlers-twilio-config.test.ts +533 -0
  44. package/src/__tests__/intent-routing.test.ts +2 -0
  45. package/src/__tests__/ipc-snapshot.test.ts +291 -1
  46. package/src/__tests__/memory-upsert-concurrency.test.ts +828 -0
  47. package/src/__tests__/messaging-send-tool.test.ts +65 -0
  48. package/src/__tests__/model-intents.test.ts +96 -0
  49. package/src/__tests__/no-direct-anthropic-sdk-imports.test.ts +42 -0
  50. package/src/__tests__/oauth2-gateway-transport.test.ts +130 -0
  51. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -0
  52. package/src/__tests__/provider-commit-message-generator.test.ts +89 -13
  53. package/src/__tests__/provider-error-scenarios.test.ts +621 -0
  54. package/src/__tests__/provider-fail-open-selection.test.ts +119 -0
  55. package/src/__tests__/qdrant-manager.test.ts +27 -20
  56. package/src/__tests__/relay-server.test.ts +779 -40
  57. package/src/__tests__/run-orchestrator-assistant-events.test.ts +6 -0
  58. package/src/__tests__/run-orchestrator.test.ts +42 -4
  59. package/src/__tests__/runtime-runs-http.test.ts +17 -1
  60. package/src/__tests__/runtime-runs.test.ts +16 -0
  61. package/src/__tests__/schedule-store.test.ts +18 -4
  62. package/src/__tests__/scheduler-recurrence.test.ts +13 -4
  63. package/src/__tests__/session-abort-tool-results.test.ts +6 -0
  64. package/src/__tests__/session-agent-loop.test.ts +857 -0
  65. package/src/__tests__/session-conflict-gate.test.ts +6 -0
  66. package/src/__tests__/session-pre-run-repair.test.ts +6 -0
  67. package/src/__tests__/session-profile-injection.test.ts +6 -0
  68. package/src/__tests__/session-provider-retry-repair.test.ts +6 -0
  69. package/src/__tests__/session-queue.test.ts +6 -0
  70. package/src/__tests__/session-runtime-assembly.test.ts +321 -13
  71. package/src/__tests__/session-slash-known.test.ts +6 -0
  72. package/src/__tests__/session-slash-queue.test.ts +6 -0
  73. package/src/__tests__/session-slash-unknown.test.ts +6 -0
  74. package/src/__tests__/session-surfaces-task-progress.test.ts +2 -0
  75. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -0
  76. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -0
  77. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -0
  78. package/src/__tests__/session-workspace-injection.test.ts +6 -0
  79. package/src/__tests__/session-workspace-tool-tracking.test.ts +6 -0
  80. package/src/__tests__/skills.test.ts +2 -0
  81. package/src/__tests__/sms-messaging-provider.test.ts +126 -0
  82. package/src/__tests__/starter-task-flow.test.ts +2 -0
  83. package/src/__tests__/swarm-dag-pathological.test.ts +535 -0
  84. package/src/__tests__/system-prompt.test.ts +2 -0
  85. package/src/__tests__/task-management-tools.test.ts +2 -2
  86. package/src/__tests__/task-runner.test.ts +14 -4
  87. package/src/__tests__/terminal-tools.test.ts +25 -19
  88. package/src/__tests__/tool-execution-abort-cleanup.test.ts +545 -0
  89. package/src/__tests__/tool-executor-shell-integration.test.ts +11 -11
  90. package/src/__tests__/tool-executor.test.ts +23 -24
  91. package/src/__tests__/trust-store.test.ts +3 -3
  92. package/src/__tests__/twilio-rest.test.ts +29 -0
  93. package/src/__tests__/twilio-routes-elevenlabs.test.ts +3 -0
  94. package/src/__tests__/twilio-routes-twiml.test.ts +11 -0
  95. package/src/__tests__/twilio-routes.test.ts +167 -11
  96. package/src/__tests__/twitter-cli-error-shaping.test.ts +2 -2
  97. package/src/__tests__/user-reference.test.ts +2 -0
  98. package/src/__tests__/voice-quality.test.ts +222 -0
  99. package/src/__tests__/web-search.test.ts +46 -30
  100. package/src/__tests__/work-item-output.test.ts +110 -0
  101. package/src/agent/loop.ts +1 -1
  102. package/src/agent-heartbeat/agent-heartbeat-service.ts +2 -10
  103. package/src/amazon/client.ts +1418 -0
  104. package/src/amazon/request-extractor.ts +135 -0
  105. package/src/amazon/session.ts +109 -0
  106. package/src/autonomy/autonomy-store.ts +5 -5
  107. package/src/browser-extension-relay/client.ts +124 -0
  108. package/src/browser-extension-relay/protocol.ts +63 -0
  109. package/src/browser-extension-relay/server.ts +177 -0
  110. package/src/bundler/app-bundler.ts +3 -3
  111. package/src/bundler/bundle-signer.ts +1 -1
  112. package/src/bundler/signature-verifier.ts +1 -1
  113. package/src/calls/call-conversation-messages.ts +33 -0
  114. package/src/calls/call-domain.ts +114 -10
  115. package/src/calls/call-orchestrator.ts +268 -59
  116. package/src/calls/call-pointer-messages.ts +53 -0
  117. package/src/calls/call-recovery.ts +3 -8
  118. package/src/calls/call-store.ts +69 -87
  119. package/src/calls/elevenlabs-config.ts +3 -2
  120. package/src/calls/guardian-action-sweep.ts +105 -0
  121. package/src/calls/guardian-dispatch.ts +203 -0
  122. package/src/calls/guardian-question-copy.ts +133 -0
  123. package/src/calls/relay-server.ts +466 -8
  124. package/src/calls/speaker-identification.ts +1 -1
  125. package/src/calls/twilio-config.ts +22 -14
  126. package/src/calls/twilio-provider.ts +6 -4
  127. package/src/calls/twilio-rest.ts +308 -7
  128. package/src/calls/twilio-routes.ts +65 -12
  129. package/src/calls/types.ts +3 -1
  130. package/src/channels/types.ts +25 -0
  131. package/src/cli/amazon.ts +815 -0
  132. package/src/cli/config-commands.ts +2 -2
  133. package/src/cli/core-commands.ts +4 -3
  134. package/src/cli/influencer.ts +244 -0
  135. package/src/cli/map.ts +89 -6
  136. package/src/cli.ts +1 -1
  137. package/src/config/agent-schema.ts +171 -0
  138. package/src/config/bundled-skills/amazon/SKILL.md +127 -0
  139. package/src/config/bundled-skills/amazon/icon.svg +13 -0
  140. package/src/config/bundled-skills/api-mapping/SKILL.md +78 -0
  141. package/src/config/bundled-skills/browser/SKILL.md +1 -0
  142. package/src/config/bundled-skills/browser/TOOLS.json +17 -0
  143. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +25 -0
  144. package/src/config/bundled-skills/doordash/SKILL.md +51 -51
  145. package/src/config/bundled-skills/email-setup/SKILL.md +14 -5
  146. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +183 -0
  147. package/src/config/bundled-skills/influencer/SKILL.md +144 -0
  148. package/src/config/bundled-skills/knowledge-graph/SKILL.md +15 -0
  149. package/src/config/bundled-skills/knowledge-graph/TOOLS.json +56 -0
  150. package/src/config/bundled-skills/knowledge-graph/tools/graph-query.ts +185 -0
  151. package/src/config/bundled-skills/macos-automation/icon.svg +12 -0
  152. package/src/config/bundled-skills/media-processing/SKILL.md +176 -0
  153. package/src/config/bundled-skills/media-processing/TOOLS.json +230 -0
  154. package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +77 -0
  155. package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +69 -0
  156. package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +303 -0
  157. package/src/config/bundled-skills/media-processing/services/concurrency-pool.ts +55 -0
  158. package/src/config/bundled-skills/media-processing/services/cost-tracker.ts +86 -0
  159. package/src/config/bundled-skills/media-processing/services/gemini-map.ts +339 -0
  160. package/src/config/bundled-skills/media-processing/services/preprocess.ts +551 -0
  161. package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +259 -0
  162. package/src/config/bundled-skills/media-processing/services/reduce.ts +197 -0
  163. package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +136 -0
  164. package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +59 -0
  165. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +195 -0
  166. package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +197 -0
  167. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +143 -0
  168. package/src/config/bundled-skills/media-processing/tools/media-status.ts +75 -0
  169. package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +65 -0
  170. package/src/config/bundled-skills/messaging/SKILL.md +33 -8
  171. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -7
  172. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +2 -1
  173. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +5 -1
  174. package/src/config/bundled-skills/phone-calls/SKILL.md +88 -23
  175. package/src/config/bundled-skills/twitter/SKILL.md +19 -3
  176. package/src/config/bundled-skills/twitter/icon.svg +14 -0
  177. package/src/config/bundled-tool-registry.ts +310 -0
  178. package/src/config/calls-schema.ts +181 -0
  179. package/src/config/core-schema.ts +309 -0
  180. package/src/config/defaults.ts +28 -3
  181. package/src/config/env-registry.ts +162 -0
  182. package/src/config/env.ts +175 -0
  183. package/src/config/loader.ts +6 -6
  184. package/src/config/memory-schema.ts +528 -0
  185. package/src/config/sandbox-schema.ts +55 -0
  186. package/src/config/schema.ts +158 -1133
  187. package/src/config/skill-state.ts +1 -1
  188. package/src/config/skills-schema.ts +32 -0
  189. package/src/config/skills.ts +35 -24
  190. package/src/config/system-prompt.ts +131 -56
  191. package/src/config/templates/IDENTITY.md +2 -2
  192. package/src/config/templates/SOUL.md +1 -1
  193. package/src/config/types.ts +1 -0
  194. package/src/config/user-reference.ts +4 -9
  195. package/src/config/vellum-skills/catalog.json +6 -7
  196. package/src/config/vellum-skills/chatgpt-import/tools/chatgpt-import.ts +5 -1
  197. package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +4 -3
  198. package/src/config/vellum-skills/sms-setup/SKILL.md +216 -0
  199. package/src/config/vellum-skills/twilio-setup/SKILL.md +40 -8
  200. package/src/context/window-manager.ts +27 -7
  201. package/src/daemon/approval-generators.ts +186 -0
  202. package/src/daemon/approved-devices-store.ts +140 -0
  203. package/src/daemon/assistant-attachments.ts +1 -1
  204. package/src/daemon/classifier.ts +35 -32
  205. package/src/daemon/config-watcher.ts +1 -1
  206. package/src/daemon/daemon-control.ts +217 -0
  207. package/src/daemon/handlers/apps.ts +2 -3
  208. package/src/daemon/handlers/config-channels.ts +158 -0
  209. package/src/daemon/handlers/config-inbox.ts +540 -0
  210. package/src/daemon/handlers/config-ingress.ts +231 -0
  211. package/src/daemon/handlers/config-integrations.ts +258 -0
  212. package/src/daemon/handlers/config-model.ts +143 -0
  213. package/src/daemon/handlers/config-parental.ts +163 -0
  214. package/src/daemon/handlers/config-scheduling.ts +172 -0
  215. package/src/daemon/handlers/config-slack.ts +92 -0
  216. package/src/daemon/handlers/config-telegram.ts +301 -0
  217. package/src/daemon/handlers/config-tools.ts +177 -0
  218. package/src/daemon/handlers/config-trust.ts +104 -0
  219. package/src/daemon/handlers/config-twilio.ts +1080 -0
  220. package/src/daemon/handlers/config.ts +53 -1689
  221. package/src/daemon/handlers/diagnostics.ts +1 -1
  222. package/src/daemon/handlers/dictation.ts +180 -0
  223. package/src/daemon/handlers/documents.ts +18 -32
  224. package/src/daemon/handlers/identity.ts +14 -23
  225. package/src/daemon/handlers/index.ts +11 -0
  226. package/src/daemon/handlers/misc.ts +3 -5
  227. package/src/daemon/handlers/pairing.ts +98 -0
  228. package/src/daemon/handlers/sessions.ts +56 -5
  229. package/src/daemon/handlers/shared.ts +6 -1
  230. package/src/daemon/handlers/skills.ts +1 -1
  231. package/src/daemon/handlers/twitter-auth.ts +2 -0
  232. package/src/daemon/handlers/work-items.ts +17 -9
  233. package/src/daemon/handlers/workspace-files.ts +4 -3
  234. package/src/daemon/install-cli-launchers.ts +113 -0
  235. package/src/daemon/ipc-contract/apps.ts +356 -0
  236. package/src/daemon/ipc-contract/browser.ts +74 -0
  237. package/src/daemon/ipc-contract/computer-use.ts +151 -0
  238. package/src/daemon/ipc-contract/diagnostics.ts +56 -0
  239. package/src/daemon/ipc-contract/documents.ts +74 -0
  240. package/src/daemon/ipc-contract/inbox.ts +209 -0
  241. package/src/daemon/ipc-contract/integrations.ts +284 -0
  242. package/src/daemon/ipc-contract/memory.ts +48 -0
  243. package/src/daemon/ipc-contract/messages.ts +211 -0
  244. package/src/daemon/ipc-contract/pairing.ts +45 -0
  245. package/src/daemon/ipc-contract/parental-control.ts +95 -0
  246. package/src/daemon/ipc-contract/schedules.ts +97 -0
  247. package/src/daemon/ipc-contract/sessions.ts +315 -0
  248. package/src/daemon/ipc-contract/shared.ts +42 -0
  249. package/src/daemon/ipc-contract/skills.ts +120 -0
  250. package/src/daemon/ipc-contract/subagents.ts +58 -0
  251. package/src/daemon/ipc-contract/surfaces.ts +250 -0
  252. package/src/daemon/ipc-contract/trust.ts +60 -0
  253. package/src/daemon/ipc-contract/work-items.ts +225 -0
  254. package/src/daemon/ipc-contract/workspace.ts +113 -0
  255. package/src/daemon/ipc-contract-inventory.json +70 -0
  256. package/src/daemon/ipc-contract-inventory.ts +55 -29
  257. package/src/daemon/ipc-contract.ts +229 -2426
  258. package/src/daemon/ipc-protocol.ts +1 -1
  259. package/src/daemon/ipc-validate.ts +7 -0
  260. package/src/daemon/lifecycle.ts +97 -377
  261. package/src/daemon/pairing-store.ts +177 -0
  262. package/src/daemon/providers-setup.ts +43 -0
  263. package/src/daemon/ride-shotgun-handler.ts +68 -3
  264. package/src/daemon/server.ts +66 -46
  265. package/src/daemon/session-agent-loop-handlers.ts +421 -0
  266. package/src/daemon/session-agent-loop.ts +117 -275
  267. package/src/daemon/session-dynamic-profile.ts +1 -1
  268. package/src/daemon/session-history.ts +1 -1
  269. package/src/daemon/session-media-retry.ts +1 -1
  270. package/src/daemon/session-messaging.ts +37 -2
  271. package/src/daemon/session-notifiers.ts +5 -25
  272. package/src/daemon/session-process.ts +99 -59
  273. package/src/daemon/session-queue-manager.ts +96 -4
  274. package/src/daemon/session-runtime-assembly.ts +199 -10
  275. package/src/daemon/session-surfaces.ts +19 -4
  276. package/src/daemon/session-tool-setup.ts +30 -30
  277. package/src/daemon/session-workspace.ts +1 -1
  278. package/src/daemon/session.ts +35 -2
  279. package/src/daemon/shutdown-handlers.ts +122 -0
  280. package/src/daemon/trace-emitter.ts +1 -1
  281. package/src/daemon/watch-handler.ts +36 -33
  282. package/src/doordash/cart-queries.ts +787 -0
  283. package/src/doordash/client.ts +144 -127
  284. package/src/doordash/order-queries.ts +85 -0
  285. package/src/doordash/queries.ts +10 -1308
  286. package/src/doordash/search-queries.ts +203 -0
  287. package/src/doordash/session.ts +3 -2
  288. package/src/doordash/store-queries.ts +246 -0
  289. package/src/doordash/types.ts +367 -0
  290. package/src/email/providers/agentmail.ts +2 -1
  291. package/src/email/providers/index.ts +3 -2
  292. package/src/email/service.ts +3 -2
  293. package/src/errors.ts +43 -0
  294. package/src/home-base/prebuilt/seed.ts +1 -1
  295. package/src/hooks/cli.ts +6 -5
  296. package/src/hooks/config.ts +6 -8
  297. package/src/hooks/discovery.ts +6 -5
  298. package/src/hooks/manager.ts +4 -3
  299. package/src/hooks/runner.ts +2 -2
  300. package/src/hooks/templates.ts +5 -5
  301. package/src/inbound/public-ingress-urls.ts +6 -4
  302. package/src/index.ts +4 -2
  303. package/src/influencer/client.ts +1104 -0
  304. package/src/instrument.ts +4 -3
  305. package/src/logfire.ts +4 -3
  306. package/src/memory/admin.ts +25 -35
  307. package/src/memory/attachments-store.ts +4 -7
  308. package/src/memory/channel-delivery-store.ts +30 -1
  309. package/src/memory/channel-guardian-store.ts +202 -2
  310. package/src/memory/clarification-resolver.ts +37 -33
  311. package/src/memory/conflict-store.ts +67 -61
  312. package/src/memory/contradiction-checker.ts +141 -117
  313. package/src/memory/conversation-store.ts +335 -51
  314. package/src/memory/db-connection.ts +27 -4
  315. package/src/memory/db-init.ts +265 -4
  316. package/src/memory/db.ts +14 -1
  317. package/src/memory/embedding-backend.ts +27 -5
  318. package/src/memory/embedding-ollama.ts +2 -1
  319. package/src/memory/entity-extractor.ts +38 -35
  320. package/src/memory/guardian-action-store.ts +430 -0
  321. package/src/memory/inbox-escalation-projection.ts +59 -0
  322. package/src/memory/inbox-thread-store.ts +218 -0
  323. package/src/memory/ingress-invite-store.ts +338 -0
  324. package/src/memory/ingress-member-store.ts +350 -0
  325. package/src/memory/items-extractor.ts +91 -97
  326. package/src/memory/job-handlers/index-maintenance.ts +3 -3
  327. package/src/memory/job-handlers/media-processing.ts +69 -0
  328. package/src/memory/job-handlers/summarization.ts +32 -26
  329. package/src/memory/job-utils.ts +3 -10
  330. package/src/memory/jobs-store.ts +8 -10
  331. package/src/memory/jobs-worker.ts +55 -36
  332. package/src/memory/media-store.ts +759 -0
  333. package/src/memory/migrations/001-job-deferrals.ts +45 -0
  334. package/src/memory/migrations/002-tool-invocations-fk.ts +43 -0
  335. package/src/memory/migrations/003-memory-fts-backfill.ts +24 -0
  336. package/src/memory/migrations/004-entity-relation-dedup.ts +87 -0
  337. package/src/memory/migrations/005-fingerprint-scope-unique.ts +80 -0
  338. package/src/memory/migrations/006-scope-salted-fingerprints.ts +62 -0
  339. package/src/memory/migrations/007-assistant-id-to-self.ts +254 -0
  340. package/src/memory/migrations/008-remove-assistant-id-columns.ts +208 -0
  341. package/src/memory/migrations/009-llm-usage-events-drop-assistant-id.ts +83 -0
  342. package/src/memory/migrations/010-ext-conv-bindings-channel-chat-unique.ts +56 -0
  343. package/src/memory/migrations/011-call-sessions-provider-sid-dedup.ts +63 -0
  344. package/src/memory/migrations/012-call-sessions-add-initiated-from.ts +19 -0
  345. package/src/memory/migrations/013-guardian-action-tables.ts +68 -0
  346. package/src/memory/migrations/014-backfill-inbox-thread-state.ts +76 -0
  347. package/src/memory/migrations/015-drop-active-search-index.ts +27 -0
  348. package/src/memory/migrations/016-memory-segments-indexes.ts +11 -0
  349. package/src/memory/migrations/017-memory-items-indexes.ts +10 -0
  350. package/src/memory/migrations/018-remaining-table-indexes.ts +13 -0
  351. package/src/memory/migrations/index.ts +24 -0
  352. package/src/memory/migrations/registry.ts +79 -0
  353. package/src/memory/migrations/validate-migration-state.ts +69 -0
  354. package/src/memory/qdrant-manager.ts +49 -8
  355. package/src/memory/query-builder.ts +1 -1
  356. package/src/memory/raw-query.ts +119 -0
  357. package/src/memory/recall-cache.ts +4 -1
  358. package/src/memory/retriever.ts +165 -47
  359. package/src/memory/schema-migration.ts +25 -984
  360. package/src/memory/schema.ts +228 -7
  361. package/src/memory/search/entity.ts +205 -31
  362. package/src/memory/search/lexical.ts +81 -52
  363. package/src/memory/search/ranking.ts +27 -23
  364. package/src/memory/search/semantic.ts +157 -19
  365. package/src/memory/search/types.ts +24 -0
  366. package/src/memory/shared-app-links-store.ts +4 -5
  367. package/src/memory/validation.ts +19 -0
  368. package/src/messaging/draft-store.ts +5 -6
  369. package/src/messaging/provider-types.ts +2 -0
  370. package/src/messaging/providers/sms/adapter.ts +201 -0
  371. package/src/messaging/providers/sms/client.ts +93 -0
  372. package/src/messaging/providers/sms/types.ts +7 -0
  373. package/src/messaging/providers/telegram-bot/adapter.ts +2 -5
  374. package/src/messaging/providers/whatsapp/adapter.ts +136 -0
  375. package/src/messaging/providers/whatsapp/client.ts +67 -0
  376. package/src/messaging/style-analyzer.ts +5 -4
  377. package/src/messaging/thread-summarizer.ts +61 -69
  378. package/src/messaging/triage-engine.ts +62 -71
  379. package/src/migrations/config-merge.ts +53 -0
  380. package/src/migrations/data-layout.ts +68 -0
  381. package/src/migrations/data-merge.ts +33 -0
  382. package/src/migrations/hooks-merge.ts +90 -0
  383. package/src/migrations/index.ts +6 -0
  384. package/src/migrations/log.ts +23 -0
  385. package/src/migrations/skills-merge.ts +33 -0
  386. package/src/migrations/workspace-layout.ts +79 -0
  387. package/src/permissions/checker.ts +133 -11
  388. package/src/permissions/prompter.ts +14 -0
  389. package/src/permissions/shell-identity.ts +31 -1
  390. package/src/permissions/trust-store.ts +21 -1
  391. package/src/providers/anthropic/client.ts +4 -4
  392. package/src/providers/failover.ts +2 -2
  393. package/src/providers/model-intents.ts +70 -0
  394. package/src/providers/ollama/client.ts +2 -1
  395. package/src/providers/provider-send-message.ts +176 -0
  396. package/src/providers/registry.ts +71 -30
  397. package/src/providers/retry.ts +35 -1
  398. package/src/providers/types.ts +12 -1
  399. package/src/runtime/approval-conversation-turn.ts +97 -0
  400. package/src/runtime/approval-message-composer.ts +253 -0
  401. package/src/runtime/channel-approval-parser.ts +36 -2
  402. package/src/runtime/channel-approvals.ts +11 -24
  403. package/src/runtime/channel-guardian-service.ts +88 -21
  404. package/src/runtime/channel-readiness-service.ts +418 -0
  405. package/src/runtime/channel-readiness-types.ts +35 -0
  406. package/src/runtime/channel-retry-sweep.ts +184 -0
  407. package/src/runtime/guardian-context-resolver.ts +108 -0
  408. package/src/runtime/http-server.ts +275 -717
  409. package/src/runtime/http-types.ts +59 -3
  410. package/src/runtime/middleware/auth.ts +116 -0
  411. package/src/runtime/middleware/error-handler.ts +33 -0
  412. package/src/runtime/middleware/twilio-validation.ts +127 -0
  413. package/src/runtime/routes/app-routes.ts +1 -1
  414. package/src/runtime/routes/call-routes.ts +51 -7
  415. package/src/runtime/routes/channel-delivery-routes.ts +170 -0
  416. package/src/runtime/routes/channel-guardian-routes.ts +1191 -0
  417. package/src/runtime/routes/channel-inbound-routes.ts +1152 -0
  418. package/src/runtime/routes/channel-route-shared.ts +144 -0
  419. package/src/runtime/routes/channel-routes.ts +32 -1588
  420. package/src/runtime/routes/conversation-routes.ts +50 -7
  421. package/src/runtime/routes/events-routes.ts +2 -2
  422. package/src/runtime/routes/identity-routes.ts +126 -0
  423. package/src/runtime/routes/pairing-routes.ts +143 -0
  424. package/src/runtime/routes/run-routes.ts +15 -1
  425. package/src/runtime/run-orchestrator.ts +86 -35
  426. package/src/schedule/schedule-store.ts +36 -32
  427. package/src/schedule/scheduler.ts +3 -3
  428. package/src/security/encrypted-store.ts +5 -7
  429. package/src/security/oauth2.ts +45 -15
  430. package/src/security/parental-control-store.ts +183 -0
  431. package/src/security/secret-allowlist.ts +4 -3
  432. package/src/security/secret-scanner.ts +5 -5
  433. package/src/security/secure-keys.ts +1 -1
  434. package/src/security/token-manager.ts +3 -2
  435. package/src/services/vercel-deploy.ts +6 -2
  436. package/src/skills/tool-manifest.ts +3 -3
  437. package/src/skills/vellum-catalog-remote.ts +75 -16
  438. package/src/slack/slack-webhook.ts +2 -1
  439. package/src/swarm/orchestrator.ts +92 -1
  440. package/src/swarm/router-planner.ts +6 -9
  441. package/src/swarm/worker-prompts.ts +9 -12
  442. package/src/tasks/task-compiler.ts +19 -28
  443. package/src/tasks/task-runner.ts +1 -1
  444. package/src/tools/assets/materialize.ts +2 -2
  445. package/src/tools/assets/search.ts +15 -14
  446. package/src/tools/browser/__tests__/auth-detector.test.ts +1 -0
  447. package/src/tools/browser/auto-navigate.ts +1 -0
  448. package/src/tools/browser/browser-execution.ts +10 -1
  449. package/src/tools/browser/browser-manager.ts +119 -4
  450. package/src/tools/browser/network-recorder.ts +5 -0
  451. package/src/tools/calls/call-start.ts +1 -0
  452. package/src/tools/credentials/broker.ts +11 -2
  453. package/src/tools/credentials/metadata-store.ts +18 -14
  454. package/src/tools/credentials/post-connect-hooks.ts +61 -0
  455. package/src/tools/credentials/vault.ts +49 -23
  456. package/src/tools/execution-target.ts +11 -1
  457. package/src/tools/executor.ts +68 -9
  458. package/src/tools/host-terminal/cli-discover.ts +1 -1
  459. package/src/tools/network/script-proxy/http-forwarder.ts +1 -1
  460. package/src/tools/network/script-proxy/mitm-handler.ts +1 -1
  461. package/src/tools/network/script-proxy/server.ts +1 -1
  462. package/src/tools/network/script-proxy/session-manager.ts +6 -5
  463. package/src/tools/network/web-fetch.ts +18 -2
  464. package/src/tools/network/web-search.ts +8 -4
  465. package/src/tools/reminder/reminder-store.ts +14 -15
  466. package/src/tools/schedule/create.ts +1 -0
  467. package/src/tools/schedule/list.ts +2 -1
  468. package/src/tools/shared/filesystem/file-ops-service.ts +5 -7
  469. package/src/tools/skills/skill-script-runner.ts +24 -9
  470. package/src/tools/skills/skill-tool-factory.ts +1 -0
  471. package/src/tools/tasks/work-item-enqueue.ts +2 -2
  472. package/src/tools/terminal/evaluate-typescript.ts +21 -12
  473. package/src/tools/terminal/parser.ts +50 -0
  474. package/src/tools/types.ts +2 -0
  475. package/src/tools/watcher/delete.ts +6 -0
  476. package/src/tools/weather/service.ts +1 -1
  477. package/src/twitter/client.ts +190 -24
  478. package/src/twitter/router.ts +1 -1
  479. package/src/twitter/session.ts +4 -3
  480. package/src/util/clipboard.ts +1 -1
  481. package/src/util/errors.ts +65 -8
  482. package/src/util/fs.ts +40 -0
  483. package/src/util/json.ts +10 -0
  484. package/src/util/log-redact.ts +189 -0
  485. package/src/util/logger.ts +19 -17
  486. package/src/util/object.ts +3 -0
  487. package/src/util/platform.ts +105 -363
  488. package/src/util/pricing.ts +1 -1
  489. package/src/util/promise-guard.ts +1 -1
  490. package/src/util/retry.ts +19 -0
  491. package/src/util/row-mapper.ts +79 -0
  492. package/src/util/silently.ts +21 -0
  493. package/src/watcher/engine.ts +5 -1
  494. package/src/watcher/provider-types.ts +20 -0
  495. package/src/watcher/providers/github.ts +156 -0
  496. package/src/watcher/providers/gmail.ts +1 -0
  497. package/src/watcher/providers/google-calendar.ts +1 -0
  498. package/src/watcher/providers/linear.ts +460 -0
  499. package/src/watcher/providers/slack.ts +1 -0
  500. package/src/work-items/work-item-runner.ts +1 -1
  501. package/src/workspace/git-service.ts +1 -1
  502. package/src/workspace/provider-commit-message-generator.ts +51 -22
  503. package/src/__tests__/call-bridge.test.ts +0 -517
  504. package/src/__tests__/session-process-bridge.test.ts +0 -244
  505. package/src/calls/call-bridge.ts +0 -168
  506. package/src/config/vellum-skills/google-oauth-setup/SKILL.md +0 -199
@@ -37,7 +37,7 @@ exports[`IPC message snapshots ClientMessage types session_create serializes to
37
37
  "threadType": "standard",
38
38
  "title": "New session",
39
39
  "transport": {
40
- "channelId": "desktop",
40
+ "channelId": "macos",
41
41
  "hints": [
42
42
  "dashboard-capable",
43
43
  ],
@@ -374,6 +374,13 @@ exports[`IPC message snapshots ClientMessage types schedule_remove serializes to
374
374
  }
375
375
  `;
376
376
 
377
+ exports[`IPC message snapshots ClientMessage types schedule_run_now serializes to expected JSON 1`] = `
378
+ {
379
+ "id": "sched-001",
380
+ "type": "schedule_run_now",
381
+ }
382
+ `;
383
+
377
384
  exports[`IPC message snapshots ClientMessage types reminders_list serializes to expected JSON 1`] = `
378
385
  {
379
386
  "type": "reminders_list",
@@ -475,6 +482,15 @@ exports[`IPC message snapshots ClientMessage types sessions_clear serializes to
475
482
  }
476
483
  `;
477
484
 
485
+ exports[`IPC message snapshots ClientMessage types conversation_search serializes to expected JSON 1`] = `
486
+ {
487
+ "limit": 20,
488
+ "maxMessagesPerConversation": 3,
489
+ "query": "hello world",
490
+ "type": "conversation_search",
491
+ }
492
+ `;
493
+
478
494
  exports[`IPC message snapshots ClientMessage types ipc_blob_probe serializes to expected JSON 1`] = `
479
495
  {
480
496
  "nonceSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -601,6 +617,15 @@ exports[`IPC message snapshots ClientMessage types twilio_config serializes to e
601
617
  }
602
618
  `;
603
619
 
620
+ exports[`IPC message snapshots ClientMessage types channel_readiness serializes to expected JSON 1`] = `
621
+ {
622
+ "action": "get",
623
+ "channel": "sms",
624
+ "includeRemote": true,
625
+ "type": "channel_readiness",
626
+ }
627
+ `;
628
+
604
629
  exports[`IPC message snapshots ClientMessage types guardian_verification serializes to expected JSON 1`] = `
605
630
  {
606
631
  "action": "create_challenge",
@@ -908,6 +933,109 @@ exports[`IPC message snapshots ClientMessage types tool_names_list serializes to
908
933
  }
909
934
  `;
910
935
 
936
+ exports[`IPC message snapshots ClientMessage types dictation_request serializes to expected JSON 1`] = `
937
+ {
938
+ "context": {
939
+ "appName": "Example App",
940
+ "bundleIdentifier": "com.example.app",
941
+ "cursorInTextField": true,
942
+ "selectedText": "some selected text",
943
+ "windowTitle": "Main Window",
944
+ },
945
+ "transcription": "Hello world",
946
+ "type": "dictation_request",
947
+ }
948
+ `;
949
+
950
+ exports[`IPC message snapshots ClientMessage types parental_control_get serializes to expected JSON 1`] = `
951
+ {
952
+ "type": "parental_control_get",
953
+ }
954
+ `;
955
+
956
+ exports[`IPC message snapshots ClientMessage types parental_control_verify_pin serializes to expected JSON 1`] = `
957
+ {
958
+ "pin": "123456",
959
+ "type": "parental_control_verify_pin",
960
+ }
961
+ `;
962
+
963
+ exports[`IPC message snapshots ClientMessage types parental_control_set_pin serializes to expected JSON 1`] = `
964
+ {
965
+ "current_pin": "123456",
966
+ "new_pin": "654321",
967
+ "type": "parental_control_set_pin",
968
+ }
969
+ `;
970
+
971
+ exports[`IPC message snapshots ClientMessage types parental_control_update serializes to expected JSON 1`] = `
972
+ {
973
+ "blocked_tool_categories": [
974
+ "shell",
975
+ "network",
976
+ ],
977
+ "content_restrictions": [
978
+ "violence",
979
+ "adult_content",
980
+ ],
981
+ "enabled": true,
982
+ "pin": "123456",
983
+ "type": "parental_control_update",
984
+ }
985
+ `;
986
+
987
+ exports[`IPC message snapshots ClientMessage types ingress_invite serializes to expected JSON 1`] = `
988
+ {
989
+ "action": "create",
990
+ "expiresInMs": 86400000,
991
+ "maxUses": 5,
992
+ "note": "Test invite",
993
+ "sourceChannel": "telegram",
994
+ "type": "ingress_invite",
995
+ }
996
+ `;
997
+
998
+ exports[`IPC message snapshots ClientMessage types ingress_member serializes to expected JSON 1`] = `
999
+ {
1000
+ "action": "upsert",
1001
+ "displayName": "Test User",
1002
+ "externalChatId": "chat-456",
1003
+ "externalUserId": "user-123",
1004
+ "policy": "allow",
1005
+ "sourceChannel": "telegram",
1006
+ "status": "active",
1007
+ "type": "ingress_member",
1008
+ "username": "testuser",
1009
+ }
1010
+ `;
1011
+
1012
+ exports[`IPC message snapshots ClientMessage types assistant_inbox serializes to expected JSON 1`] = `
1013
+ {
1014
+ "action": "list_threads",
1015
+ "assistantId": "asst-001",
1016
+ "limit": 20,
1017
+ "offset": 0,
1018
+ "type": "assistant_inbox",
1019
+ }
1020
+ `;
1021
+
1022
+ exports[`IPC message snapshots ClientMessage types assistant_inbox_escalation serializes to expected JSON 1`] = `
1023
+ {
1024
+ "action": "list",
1025
+ "assistantId": "asst-001",
1026
+ "status": "pending",
1027
+ "type": "assistant_inbox_escalation",
1028
+ }
1029
+ `;
1030
+
1031
+ exports[`IPC message snapshots ClientMessage types assistant_inbox_reply serializes to expected JSON 1`] = `
1032
+ {
1033
+ "content": "Hello from the assistant",
1034
+ "conversationId": "conv-001",
1035
+ "type": "assistant_inbox_reply",
1036
+ }
1037
+ `;
1038
+
911
1039
  exports[`IPC message snapshots ServerMessage types auth_result serializes to expected JSON 1`] = `
912
1040
  {
913
1041
  "success": true,
@@ -1063,6 +1191,14 @@ exports[`IPC message snapshots ServerMessage types session_info serializes to ex
1063
1191
  }
1064
1192
  `;
1065
1193
 
1194
+ exports[`IPC message snapshots ServerMessage types session_title_updated serializes to expected JSON 1`] = `
1195
+ {
1196
+ "sessionId": "sess-001",
1197
+ "title": "Plan sprint rollout",
1198
+ "type": "session_title_updated",
1199
+ }
1200
+ `;
1201
+
1066
1202
  exports[`IPC message snapshots ServerMessage types session_list_response serializes to expected JSON 1`] = `
1067
1203
  {
1068
1204
  "sessions": [
@@ -1090,6 +1226,28 @@ exports[`IPC message snapshots ServerMessage types sessions_clear_response seria
1090
1226
  }
1091
1227
  `;
1092
1228
 
1229
+ exports[`IPC message snapshots ServerMessage types conversation_search_response serializes to expected JSON 1`] = `
1230
+ {
1231
+ "query": "hello world",
1232
+ "results": [
1233
+ {
1234
+ "conversationId": "conv-001",
1235
+ "conversationTitle": "My Conversation",
1236
+ "conversationUpdatedAt": 1700000000,
1237
+ "matchingMessages": [
1238
+ {
1239
+ "createdAt": 1699999000,
1240
+ "excerpt": "…hello world, how are you?…",
1241
+ "messageId": "msg-001",
1242
+ "role": "user",
1243
+ },
1244
+ ],
1245
+ },
1246
+ ],
1247
+ "type": "conversation_search_response",
1248
+ }
1249
+ `;
1250
+
1093
1251
  exports[`IPC message snapshots ServerMessage types error serializes to expected JSON 1`] = `
1094
1252
  {
1095
1253
  "message": "Something went wrong",
@@ -1323,6 +1481,14 @@ exports[`IPC message snapshots ServerMessage types task_routed serializes to exp
1323
1481
  }
1324
1482
  `;
1325
1483
 
1484
+ exports[`IPC message snapshots ServerMessage types ride_shotgun_progress serializes to expected JSON 1`] = `
1485
+ {
1486
+ "message": "Observing user activity...",
1487
+ "type": "ride_shotgun_progress",
1488
+ "watchId": "watch-shotgun-001",
1489
+ }
1490
+ `;
1491
+
1326
1492
  exports[`IPC message snapshots ServerMessage types ride_shotgun_result serializes to expected JSON 1`] = `
1327
1493
  {
1328
1494
  "observationCount": 5,
@@ -1929,13 +2095,74 @@ exports[`IPC message snapshots ServerMessage types telegram_config_response seri
1929
2095
 
1930
2096
  exports[`IPC message snapshots ServerMessage types twilio_config_response serializes to expected JSON 1`] = `
1931
2097
  {
2098
+ "compliance": {
2099
+ "numberType": "toll_free",
2100
+ "verificationSid": "TF_VER_001",
2101
+ "verificationStatus": "TWILIO_APPROVED",
2102
+ },
2103
+ "diagnostics": {
2104
+ "actionItems": [],
2105
+ "compliance": {
2106
+ "detail": "Toll-free verification: TWILIO_APPROVED",
2107
+ "status": "TWILIO_APPROVED",
2108
+ },
2109
+ "overallStatus": "healthy",
2110
+ "readiness": {
2111
+ "issues": [],
2112
+ "ready": true,
2113
+ },
2114
+ },
1932
2115
  "hasCredentials": true,
1933
2116
  "phoneNumber": "+15551234567",
1934
2117
  "success": true,
2118
+ "testResult": {
2119
+ "finalStatus": "delivered",
2120
+ "initialStatus": "queued",
2121
+ "messageSid": "SM-test-001",
2122
+ "to": "+15559876543",
2123
+ },
1935
2124
  "type": "twilio_config_response",
1936
2125
  }
1937
2126
  `;
1938
2127
 
2128
+ exports[`IPC message snapshots ServerMessage types channel_readiness_response serializes to expected JSON 1`] = `
2129
+ {
2130
+ "snapshots": [
2131
+ {
2132
+ "channel": "sms",
2133
+ "checkedAt": 1700000000000,
2134
+ "localChecks": [
2135
+ {
2136
+ "message": "Twilio credentials are not configured",
2137
+ "name": "twilio_credentials",
2138
+ "passed": false,
2139
+ },
2140
+ {
2141
+ "message": "Phone number is assigned",
2142
+ "name": "phone_number",
2143
+ "passed": true,
2144
+ },
2145
+ {
2146
+ "message": "Public ingress URL is configured",
2147
+ "name": "ingress",
2148
+ "passed": true,
2149
+ },
2150
+ ],
2151
+ "ready": false,
2152
+ "reasons": [
2153
+ {
2154
+ "code": "twilio_credentials",
2155
+ "text": "Twilio credentials are not configured",
2156
+ },
2157
+ ],
2158
+ "stale": false,
2159
+ },
2160
+ ],
2161
+ "success": true,
2162
+ "type": "channel_readiness_response",
2163
+ }
2164
+ `;
2165
+
1939
2166
  exports[`IPC message snapshots ServerMessage types guardian_verification_response serializes to expected JSON 1`] = `
1940
2167
  {
1941
2168
  "instruction": "Send this code to the Telegram bot",
@@ -2383,6 +2610,17 @@ exports[`IPC message snapshots ServerMessage types task_run_thread_created seria
2383
2610
  }
2384
2611
  `;
2385
2612
 
2613
+ exports[`IPC message snapshots ServerMessage types guardian_request_thread_created serializes to expected JSON 1`] = `
2614
+ {
2615
+ "callSessionId": "call-001",
2616
+ "conversationId": "conv-guardian-001",
2617
+ "questionText": "What is the gate code?",
2618
+ "requestId": "req-guardian-001",
2619
+ "title": "Guardian action request",
2620
+ "type": "guardian_request_thread_created",
2621
+ }
2622
+ `;
2623
+
2386
2624
  exports[`IPC message snapshots ServerMessage types subagent_spawned serializes to expected JSON 1`] = `
2387
2625
  {
2388
2626
  "label": "Research Agent",
@@ -2499,3 +2737,202 @@ exports[`IPC message snapshots ServerMessage types tool_names_list_response seri
2499
2737
  "type": "tool_names_list_response",
2500
2738
  }
2501
2739
  `;
2740
+
2741
+ exports[`IPC message snapshots ServerMessage types dictation_response serializes to expected JSON 1`] = `
2742
+ {
2743
+ "mode": "dictation",
2744
+ "text": "Hello world",
2745
+ "type": "dictation_response",
2746
+ }
2747
+ `;
2748
+
2749
+ exports[`IPC message snapshots ServerMessage types parental_control_get_response serializes to expected JSON 1`] = `
2750
+ {
2751
+ "blocked_tool_categories": [
2752
+ "shell",
2753
+ "network",
2754
+ ],
2755
+ "content_restrictions": [
2756
+ "violence",
2757
+ "adult_content",
2758
+ ],
2759
+ "enabled": true,
2760
+ "has_pin": true,
2761
+ "type": "parental_control_get_response",
2762
+ }
2763
+ `;
2764
+
2765
+ exports[`IPC message snapshots ServerMessage types parental_control_verify_pin_response serializes to expected JSON 1`] = `
2766
+ {
2767
+ "type": "parental_control_verify_pin_response",
2768
+ "verified": true,
2769
+ }
2770
+ `;
2771
+
2772
+ exports[`IPC message snapshots ServerMessage types parental_control_set_pin_response serializes to expected JSON 1`] = `
2773
+ {
2774
+ "success": true,
2775
+ "type": "parental_control_set_pin_response",
2776
+ }
2777
+ `;
2778
+
2779
+ exports[`IPC message snapshots ServerMessage types parental_control_update_response serializes to expected JSON 1`] = `
2780
+ {
2781
+ "blocked_tool_categories": [
2782
+ "shell",
2783
+ "network",
2784
+ ],
2785
+ "content_restrictions": [
2786
+ "violence",
2787
+ "adult_content",
2788
+ ],
2789
+ "enabled": true,
2790
+ "has_pin": true,
2791
+ "success": true,
2792
+ "type": "parental_control_update_response",
2793
+ }
2794
+ `;
2795
+
2796
+ exports[`IPC message snapshots ServerMessage types ingress_invite_response serializes to expected JSON 1`] = `
2797
+ {
2798
+ "invite": {
2799
+ "createdAt": 1700000000,
2800
+ "expiresAt": 1700100000000,
2801
+ "id": "inv-001",
2802
+ "maxUses": 5,
2803
+ "note": "Test invite",
2804
+ "sourceChannel": "telegram",
2805
+ "status": "active",
2806
+ "token": "tok-abc123",
2807
+ "tokenHash": "hash-abc123",
2808
+ "useCount": 0,
2809
+ },
2810
+ "success": true,
2811
+ "type": "ingress_invite_response",
2812
+ }
2813
+ `;
2814
+
2815
+ exports[`IPC message snapshots ServerMessage types ingress_member_response serializes to expected JSON 1`] = `
2816
+ {
2817
+ "member": {
2818
+ "createdAt": 1700000000,
2819
+ "displayName": "Test User",
2820
+ "externalChatId": "chat-456",
2821
+ "externalUserId": "user-123",
2822
+ "id": "mem-001",
2823
+ "lastSeenAt": 1700000000,
2824
+ "policy": "allow",
2825
+ "sourceChannel": "telegram",
2826
+ "status": "active",
2827
+ "username": "testuser",
2828
+ },
2829
+ "success": true,
2830
+ "type": "ingress_member_response",
2831
+ }
2832
+ `;
2833
+
2834
+ exports[`IPC message snapshots ServerMessage types assistant_inbox_response serializes to expected JSON 1`] = `
2835
+ {
2836
+ "success": true,
2837
+ "threads": [
2838
+ {
2839
+ "conversationId": "conv-001",
2840
+ "displayName": "Test User",
2841
+ "externalChatId": "chat-456",
2842
+ "externalUserId": "user-123",
2843
+ "hasPendingEscalation": false,
2844
+ "lastInboundAt": 1700000000,
2845
+ "lastMessageAt": 1700000000,
2846
+ "lastOutboundAt": 1699999000,
2847
+ "sourceChannel": "telegram",
2848
+ "unreadCount": 3,
2849
+ "username": "testuser",
2850
+ },
2851
+ ],
2852
+ "type": "assistant_inbox_response",
2853
+ }
2854
+ `;
2855
+
2856
+ exports[`IPC message snapshots ServerMessage types assistant_inbox_escalation_response serializes to expected JSON 1`] = `
2857
+ {
2858
+ "escalations": [
2859
+ {
2860
+ "channel": "telegram",
2861
+ "conversationId": "conv-001",
2862
+ "createdAt": 1700000000,
2863
+ "id": "esc-001",
2864
+ "requestSummary": "User wants to delete their account",
2865
+ "requesterChatId": "chat-456",
2866
+ "requesterExternalUserId": "user-123",
2867
+ "runId": "run-001",
2868
+ "status": "pending",
2869
+ },
2870
+ ],
2871
+ "success": true,
2872
+ "type": "assistant_inbox_escalation_response",
2873
+ }
2874
+ `;
2875
+
2876
+ exports[`IPC message snapshots ServerMessage types assistant_inbox_reply_response serializes to expected JSON 1`] = `
2877
+ {
2878
+ "messageId": "msg-reply-001",
2879
+ "success": true,
2880
+ "type": "assistant_inbox_reply_response",
2881
+ }
2882
+ `;
2883
+
2884
+ exports[`IPC message snapshots ClientMessage types pairing_approval_response serializes to expected JSON 1`] = `
2885
+ {
2886
+ "decision": "approve_once",
2887
+ "pairingRequestId": "pair-001",
2888
+ "type": "pairing_approval_response",
2889
+ }
2890
+ `;
2891
+
2892
+ exports[`IPC message snapshots ClientMessage types approved_devices_list serializes to expected JSON 1`] = `
2893
+ {
2894
+ "type": "approved_devices_list",
2895
+ }
2896
+ `;
2897
+
2898
+ exports[`IPC message snapshots ClientMessage types approved_device_remove serializes to expected JSON 1`] = `
2899
+ {
2900
+ "hashedDeviceId": "hashed-device-001",
2901
+ "type": "approved_device_remove",
2902
+ }
2903
+ `;
2904
+
2905
+ exports[`IPC message snapshots ClientMessage types approved_devices_clear serializes to expected JSON 1`] = `
2906
+ {
2907
+ "type": "approved_devices_clear",
2908
+ }
2909
+ `;
2910
+
2911
+ exports[`IPC message snapshots ServerMessage types pairing_approval_request serializes to expected JSON 1`] = `
2912
+ {
2913
+ "deviceId": "device-001",
2914
+ "deviceName": "iPhone 15",
2915
+ "pairingRequestId": "pair-001",
2916
+ "type": "pairing_approval_request",
2917
+ }
2918
+ `;
2919
+
2920
+ exports[`IPC message snapshots ServerMessage types approved_devices_list_response serializes to expected JSON 1`] = `
2921
+ {
2922
+ "devices": [
2923
+ {
2924
+ "deviceName": "iPhone 15",
2925
+ "hashedDeviceId": "hashed-device-001",
2926
+ "lastPairedAt": 1700000000000,
2927
+ },
2928
+ ],
2929
+ "type": "approved_devices_list_response",
2930
+ }
2931
+ `;
2932
+
2933
+ exports[`IPC message snapshots ServerMessage types approved_device_remove_response serializes to expected JSON 1`] = `
2934
+ {
2935
+ "success": true,
2936
+ "type": "approved_device_remove_response",
2937
+ }
2938
+ `;