@vellumai/assistant 0.3.5 → 0.3.7

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 (487) hide show
  1. package/README.md +51 -0
  2. package/eslint.config.mjs +31 -0
  3. package/package.json +1 -1
  4. package/scripts/ipc/check-swift-decoder-drift.ts +4 -1
  5. package/scripts/ipc/generate-swift.ts +18 -2
  6. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +338 -1
  7. package/src/__tests__/approval-conversation-turn.test.ts +214 -0
  8. package/src/__tests__/browser-manager.test.ts +1 -0
  9. package/src/__tests__/call-conversation-messages.test.ts +130 -0
  10. package/src/__tests__/call-orchestrator.test.ts +752 -271
  11. package/src/__tests__/call-pointer-messages.test.ts +148 -0
  12. package/src/__tests__/call-recovery.test.ts +3 -0
  13. package/src/__tests__/call-routes-http.test.ts +5 -0
  14. package/src/__tests__/call-store.test.ts +3 -0
  15. package/src/__tests__/channel-approval-routes.test.ts +1260 -85
  16. package/src/__tests__/channel-approval.test.ts +37 -0
  17. package/src/__tests__/channel-approvals.test.ts +4 -65
  18. package/src/__tests__/channel-guardian.test.ts +556 -0
  19. package/src/__tests__/channel-readiness-service.test.ts +74 -7
  20. package/src/__tests__/checker.test.ts +14 -7
  21. package/src/__tests__/clarification-resolver.test.ts +44 -24
  22. package/src/__tests__/commit-message-enrichment-service.test.ts +9 -4
  23. package/src/__tests__/computer-use-session-working-dir.test.ts +8 -0
  24. package/src/__tests__/config-schema.test.ts +12 -7
  25. package/src/__tests__/context-window-manager.test.ts +30 -2
  26. package/src/__tests__/contradiction-checker.test.ts +20 -5
  27. package/src/__tests__/credential-security-invariants.test.ts +6 -2
  28. package/src/__tests__/db-migration-rollback.test.ts +752 -0
  29. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -0
  30. package/src/__tests__/fuzzy-match-property.test.ts +5 -5
  31. package/src/__tests__/guardian-action-store.test.ts +123 -0
  32. package/src/__tests__/guardian-action-sweep.test.ts +277 -0
  33. package/src/__tests__/guardian-dispatch.test.ts +389 -0
  34. package/src/__tests__/guardian-question-copy.test.ts +47 -0
  35. package/src/__tests__/handlers-telegram-config.test.ts +4 -2
  36. package/src/__tests__/handlers-twilio-config.test.ts +126 -0
  37. package/src/__tests__/intent-routing.test.ts +2 -0
  38. package/src/__tests__/ipc-snapshot.test.ts +228 -1
  39. package/src/__tests__/memory-upsert-concurrency.test.ts +828 -0
  40. package/src/__tests__/model-intents.test.ts +96 -0
  41. package/src/__tests__/no-direct-anthropic-sdk-imports.test.ts +42 -0
  42. package/src/__tests__/oauth2-gateway-transport.test.ts +130 -0
  43. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -0
  44. package/src/__tests__/provider-commit-message-generator.test.ts +89 -13
  45. package/src/__tests__/provider-error-scenarios.test.ts +621 -0
  46. package/src/__tests__/provider-fail-open-selection.test.ts +119 -0
  47. package/src/__tests__/qdrant-manager.test.ts +27 -20
  48. package/src/__tests__/relay-server.test.ts +779 -40
  49. package/src/__tests__/run-orchestrator-assistant-events.test.ts +2 -0
  50. package/src/__tests__/run-orchestrator.test.ts +20 -4
  51. package/src/__tests__/runtime-runs-http.test.ts +17 -1
  52. package/src/__tests__/runtime-runs.test.ts +16 -0
  53. package/src/__tests__/schedule-store.test.ts +18 -4
  54. package/src/__tests__/scheduler-recurrence.test.ts +13 -4
  55. package/src/__tests__/session-abort-tool-results.test.ts +6 -0
  56. package/src/__tests__/session-agent-loop.test.ts +857 -0
  57. package/src/__tests__/session-conflict-gate.test.ts +6 -0
  58. package/src/__tests__/session-pre-run-repair.test.ts +6 -0
  59. package/src/__tests__/session-profile-injection.test.ts +6 -0
  60. package/src/__tests__/session-provider-retry-repair.test.ts +6 -0
  61. package/src/__tests__/session-queue.test.ts +6 -0
  62. package/src/__tests__/session-runtime-assembly.test.ts +237 -13
  63. package/src/__tests__/session-slash-known.test.ts +6 -0
  64. package/src/__tests__/session-slash-queue.test.ts +6 -0
  65. package/src/__tests__/session-slash-unknown.test.ts +6 -0
  66. package/src/__tests__/session-surfaces-task-progress.test.ts +2 -0
  67. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -0
  68. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -0
  69. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -0
  70. package/src/__tests__/session-workspace-injection.test.ts +6 -0
  71. package/src/__tests__/session-workspace-tool-tracking.test.ts +6 -0
  72. package/src/__tests__/skills.test.ts +2 -0
  73. package/src/__tests__/sms-messaging-provider.test.ts +2 -1
  74. package/src/__tests__/starter-task-flow.test.ts +2 -0
  75. package/src/__tests__/swarm-dag-pathological.test.ts +535 -0
  76. package/src/__tests__/system-prompt.test.ts +2 -0
  77. package/src/__tests__/task-management-tools.test.ts +2 -2
  78. package/src/__tests__/task-runner.test.ts +14 -4
  79. package/src/__tests__/terminal-tools.test.ts +25 -19
  80. package/src/__tests__/tool-execution-abort-cleanup.test.ts +545 -0
  81. package/src/__tests__/tool-executor-shell-integration.test.ts +11 -11
  82. package/src/__tests__/tool-executor.test.ts +23 -24
  83. package/src/__tests__/trust-store.test.ts +3 -3
  84. package/src/__tests__/twilio-rest.test.ts +29 -0
  85. package/src/__tests__/twilio-routes-elevenlabs.test.ts +3 -0
  86. package/src/__tests__/twilio-routes-twiml.test.ts +11 -0
  87. package/src/__tests__/twilio-routes.test.ts +141 -21
  88. package/src/__tests__/user-reference.test.ts +2 -0
  89. package/src/__tests__/voice-quality.test.ts +222 -0
  90. package/src/__tests__/web-search.test.ts +45 -29
  91. package/src/agent/loop.ts +1 -1
  92. package/src/agent-heartbeat/agent-heartbeat-service.ts +2 -10
  93. package/src/amazon/client.ts +1418 -0
  94. package/src/amazon/request-extractor.ts +135 -0
  95. package/src/amazon/session.ts +109 -0
  96. package/src/autonomy/autonomy-store.ts +5 -5
  97. package/src/browser-extension-relay/client.ts +124 -0
  98. package/src/browser-extension-relay/protocol.ts +63 -0
  99. package/src/browser-extension-relay/server.ts +177 -0
  100. package/src/bundler/app-bundler.ts +3 -3
  101. package/src/bundler/bundle-signer.ts +1 -1
  102. package/src/bundler/signature-verifier.ts +1 -1
  103. package/src/calls/call-conversation-messages.ts +33 -0
  104. package/src/calls/call-domain.ts +106 -5
  105. package/src/calls/call-orchestrator.ts +252 -54
  106. package/src/calls/call-pointer-messages.ts +53 -0
  107. package/src/calls/call-recovery.ts +3 -8
  108. package/src/calls/call-store.ts +69 -87
  109. package/src/calls/elevenlabs-config.ts +3 -2
  110. package/src/calls/guardian-action-sweep.ts +105 -0
  111. package/src/calls/guardian-dispatch.ts +203 -0
  112. package/src/calls/guardian-question-copy.ts +133 -0
  113. package/src/calls/relay-server.ts +466 -8
  114. package/src/calls/speaker-identification.ts +1 -1
  115. package/src/calls/twilio-config.ts +7 -5
  116. package/src/calls/twilio-provider.ts +6 -4
  117. package/src/calls/twilio-rest.ts +40 -15
  118. package/src/calls/twilio-routes.ts +60 -45
  119. package/src/calls/types.ts +3 -1
  120. package/src/channels/types.ts +25 -0
  121. package/src/cli/amazon.ts +815 -0
  122. package/src/cli/config-commands.ts +2 -2
  123. package/src/cli/core-commands.ts +4 -3
  124. package/src/cli/influencer.ts +244 -0
  125. package/src/cli/map.ts +89 -6
  126. package/src/cli.ts +1 -1
  127. package/src/config/agent-schema.ts +171 -0
  128. package/src/config/bundled-skills/amazon/SKILL.md +127 -0
  129. package/src/config/bundled-skills/amazon/icon.svg +13 -0
  130. package/src/config/bundled-skills/api-mapping/SKILL.md +78 -0
  131. package/src/config/bundled-skills/browser/SKILL.md +1 -0
  132. package/src/config/bundled-skills/browser/TOOLS.json +17 -0
  133. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +25 -0
  134. package/src/config/bundled-skills/doordash/SKILL.md +51 -51
  135. package/src/config/bundled-skills/email-setup/SKILL.md +14 -5
  136. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +183 -0
  137. package/src/config/bundled-skills/influencer/SKILL.md +144 -0
  138. package/src/config/bundled-skills/macos-automation/icon.svg +12 -0
  139. package/src/config/bundled-skills/media-processing/SKILL.md +72 -95
  140. package/src/config/bundled-skills/media-processing/TOOLS.json +57 -147
  141. package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +77 -0
  142. package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +69 -0
  143. package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +303 -0
  144. package/src/config/bundled-skills/media-processing/services/concurrency-pool.ts +55 -0
  145. package/src/config/bundled-skills/media-processing/services/cost-tracker.ts +86 -0
  146. package/src/config/bundled-skills/media-processing/services/gemini-map.ts +339 -0
  147. package/src/config/bundled-skills/media-processing/services/preprocess.ts +551 -0
  148. package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +7 -9
  149. package/src/config/bundled-skills/media-processing/services/reduce.ts +197 -0
  150. package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +88 -253
  151. package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +22 -153
  152. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -2
  153. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +28 -51
  154. package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +35 -270
  155. package/src/config/bundled-skills/messaging/SKILL.md +12 -2
  156. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -7
  157. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +2 -1
  158. package/src/config/bundled-skills/phone-calls/SKILL.md +86 -21
  159. package/src/config/bundled-skills/twitter/icon.svg +14 -0
  160. package/src/config/bundled-tool-registry.ts +310 -0
  161. package/src/config/calls-schema.ts +181 -0
  162. package/src/config/core-schema.ts +309 -0
  163. package/src/config/defaults.ts +27 -3
  164. package/src/config/env-registry.ts +169 -0
  165. package/src/config/env.ts +175 -0
  166. package/src/config/loader.ts +6 -6
  167. package/src/config/memory-schema.ts +528 -0
  168. package/src/config/sandbox-schema.ts +55 -0
  169. package/src/config/schema.ts +157 -1138
  170. package/src/config/skill-state.ts +1 -1
  171. package/src/config/skills-schema.ts +32 -0
  172. package/src/config/skills.ts +35 -24
  173. package/src/config/system-prompt.ts +107 -56
  174. package/src/config/templates/SOUL.md +1 -1
  175. package/src/config/types.ts +1 -0
  176. package/src/config/user-reference.ts +4 -9
  177. package/src/config/vellum-skills/catalog.json +0 -7
  178. package/src/config/vellum-skills/chatgpt-import/tools/chatgpt-import.ts +5 -1
  179. package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +1 -0
  180. package/src/config/vellum-skills/sms-setup/SKILL.md +112 -14
  181. package/src/context/window-manager.ts +27 -7
  182. package/src/daemon/approval-generators.ts +186 -0
  183. package/src/daemon/approved-devices-store.ts +140 -0
  184. package/src/daemon/assistant-attachments.ts +1 -1
  185. package/src/daemon/classifier.ts +35 -32
  186. package/src/daemon/config-watcher.ts +1 -1
  187. package/src/daemon/daemon-control.ts +254 -0
  188. package/src/daemon/handlers/apps.ts +2 -3
  189. package/src/daemon/handlers/config-channels.ts +158 -0
  190. package/src/daemon/handlers/config-inbox.ts +540 -0
  191. package/src/daemon/handlers/config-ingress.ts +231 -0
  192. package/src/daemon/handlers/config-integrations.ts +258 -0
  193. package/src/daemon/handlers/config-model.ts +143 -0
  194. package/src/daemon/handlers/config-parental.ts +163 -0
  195. package/src/daemon/handlers/config-scheduling.ts +172 -0
  196. package/src/daemon/handlers/config-slack.ts +92 -0
  197. package/src/daemon/handlers/config-telegram.ts +301 -0
  198. package/src/daemon/handlers/config-tools.ts +177 -0
  199. package/src/daemon/handlers/config-trust.ts +104 -0
  200. package/src/daemon/handlers/config-twilio.ts +1080 -0
  201. package/src/daemon/handlers/config.ts +53 -2463
  202. package/src/daemon/handlers/diagnostics.ts +1 -1
  203. package/src/daemon/handlers/dictation.ts +4 -6
  204. package/src/daemon/handlers/documents.ts +18 -32
  205. package/src/daemon/handlers/index.ts +9 -0
  206. package/src/daemon/handlers/misc.ts +3 -5
  207. package/src/daemon/handlers/pairing.ts +98 -0
  208. package/src/daemon/handlers/sessions.ts +74 -5
  209. package/src/daemon/handlers/shared.ts +3 -1
  210. package/src/daemon/handlers/skills.ts +1 -1
  211. package/src/daemon/handlers/twitter-auth.ts +2 -0
  212. package/src/daemon/handlers/work-items.ts +2 -2
  213. package/src/daemon/handlers/workspace-files.ts +4 -3
  214. package/src/daemon/install-cli-launchers.ts +113 -0
  215. package/src/daemon/ipc-contract/apps.ts +356 -0
  216. package/src/daemon/ipc-contract/browser.ts +74 -0
  217. package/src/daemon/ipc-contract/computer-use.ts +151 -0
  218. package/src/daemon/ipc-contract/diagnostics.ts +56 -0
  219. package/src/daemon/ipc-contract/documents.ts +74 -0
  220. package/src/daemon/ipc-contract/inbox.ts +209 -0
  221. package/src/daemon/ipc-contract/integrations.ts +284 -0
  222. package/src/daemon/ipc-contract/memory.ts +48 -0
  223. package/src/daemon/ipc-contract/messages.ts +211 -0
  224. package/src/daemon/ipc-contract/pairing.ts +45 -0
  225. package/src/daemon/ipc-contract/parental-control.ts +95 -0
  226. package/src/daemon/ipc-contract/schedules.ts +97 -0
  227. package/src/daemon/ipc-contract/sessions.ts +321 -0
  228. package/src/daemon/ipc-contract/shared.ts +42 -0
  229. package/src/daemon/ipc-contract/skills.ts +120 -0
  230. package/src/daemon/ipc-contract/subagents.ts +58 -0
  231. package/src/daemon/ipc-contract/surfaces.ts +250 -0
  232. package/src/daemon/ipc-contract/trust.ts +60 -0
  233. package/src/daemon/ipc-contract/work-items.ts +225 -0
  234. package/src/daemon/ipc-contract/workspace.ts +113 -0
  235. package/src/daemon/ipc-contract-inventory.json +62 -0
  236. package/src/daemon/ipc-contract-inventory.ts +55 -29
  237. package/src/daemon/ipc-contract.ts +227 -2527
  238. package/src/daemon/ipc-protocol.ts +1 -1
  239. package/src/daemon/ipc-validate.ts +7 -0
  240. package/src/daemon/lifecycle.ts +97 -379
  241. package/src/daemon/pairing-store.ts +177 -0
  242. package/src/daemon/providers-setup.ts +43 -0
  243. package/src/daemon/ride-shotgun-handler.ts +67 -2
  244. package/src/daemon/server.ts +60 -44
  245. package/src/daemon/session-agent-loop-handlers.ts +421 -0
  246. package/src/daemon/session-agent-loop.ts +113 -275
  247. package/src/daemon/session-dynamic-profile.ts +1 -1
  248. package/src/daemon/session-history.ts +1 -1
  249. package/src/daemon/session-media-retry.ts +1 -1
  250. package/src/daemon/session-messaging.ts +37 -2
  251. package/src/daemon/session-notifiers.ts +5 -25
  252. package/src/daemon/session-process.ts +99 -59
  253. package/src/daemon/session-queue-manager.ts +98 -4
  254. package/src/daemon/session-runtime-assembly.ts +149 -15
  255. package/src/daemon/session-surfaces.ts +26 -4
  256. package/src/daemon/session-tool-setup.ts +28 -30
  257. package/src/daemon/session-workspace.ts +1 -1
  258. package/src/daemon/session.ts +24 -1
  259. package/src/daemon/shutdown-handlers.ts +122 -0
  260. package/src/daemon/trace-emitter.ts +1 -1
  261. package/src/daemon/watch-handler.ts +36 -33
  262. package/src/doordash/cart-queries.ts +787 -0
  263. package/src/doordash/client.ts +144 -127
  264. package/src/doordash/order-queries.ts +85 -0
  265. package/src/doordash/queries.ts +10 -1308
  266. package/src/doordash/search-queries.ts +203 -0
  267. package/src/doordash/session.ts +3 -2
  268. package/src/doordash/store-queries.ts +246 -0
  269. package/src/doordash/types.ts +367 -0
  270. package/src/email/providers/agentmail.ts +2 -1
  271. package/src/email/providers/index.ts +3 -2
  272. package/src/email/service.ts +3 -2
  273. package/src/errors.ts +43 -0
  274. package/src/home-base/prebuilt/seed.ts +1 -1
  275. package/src/hooks/cli.ts +6 -5
  276. package/src/hooks/config.ts +6 -8
  277. package/src/hooks/discovery.ts +6 -5
  278. package/src/hooks/manager.ts +4 -3
  279. package/src/hooks/runner.ts +2 -2
  280. package/src/hooks/templates.ts +5 -5
  281. package/src/inbound/public-ingress-urls.ts +3 -1
  282. package/src/index.ts +4 -2
  283. package/src/influencer/client.ts +1104 -0
  284. package/src/instrument.ts +4 -3
  285. package/src/logfire.ts +4 -3
  286. package/src/memory/admin.ts +25 -35
  287. package/src/memory/attachments-store.ts +4 -7
  288. package/src/memory/channel-delivery-store.ts +30 -1
  289. package/src/memory/channel-guardian-store.ts +200 -1
  290. package/src/memory/clarification-resolver.ts +37 -33
  291. package/src/memory/conflict-store.ts +67 -61
  292. package/src/memory/contradiction-checker.ts +141 -117
  293. package/src/memory/conversation-store.ts +335 -51
  294. package/src/memory/db-connection.ts +27 -4
  295. package/src/memory/db-init.ts +121 -4
  296. package/src/memory/db.ts +14 -1
  297. package/src/memory/embedding-backend.ts +27 -5
  298. package/src/memory/embedding-ollama.ts +2 -1
  299. package/src/memory/entity-extractor.ts +38 -35
  300. package/src/memory/guardian-action-store.ts +430 -0
  301. package/src/memory/inbox-escalation-projection.ts +59 -0
  302. package/src/memory/inbox-thread-store.ts +218 -0
  303. package/src/memory/ingress-invite-store.ts +338 -0
  304. package/src/memory/ingress-member-store.ts +350 -0
  305. package/src/memory/items-extractor.ts +91 -97
  306. package/src/memory/job-handlers/index-maintenance.ts +3 -3
  307. package/src/memory/job-handlers/media-processing.ts +11 -42
  308. package/src/memory/job-handlers/summarization.ts +32 -26
  309. package/src/memory/job-utils.ts +3 -10
  310. package/src/memory/jobs-store.ts +6 -9
  311. package/src/memory/jobs-worker.ts +51 -36
  312. package/src/memory/migrations/001-job-deferrals.ts +45 -0
  313. package/src/memory/migrations/002-tool-invocations-fk.ts +43 -0
  314. package/src/memory/migrations/003-memory-fts-backfill.ts +24 -0
  315. package/src/memory/migrations/004-entity-relation-dedup.ts +87 -0
  316. package/src/memory/migrations/005-fingerprint-scope-unique.ts +80 -0
  317. package/src/memory/migrations/006-scope-salted-fingerprints.ts +62 -0
  318. package/src/memory/migrations/007-assistant-id-to-self.ts +254 -0
  319. package/src/memory/migrations/008-remove-assistant-id-columns.ts +208 -0
  320. package/src/memory/migrations/009-llm-usage-events-drop-assistant-id.ts +83 -0
  321. package/src/memory/migrations/010-ext-conv-bindings-channel-chat-unique.ts +56 -0
  322. package/src/memory/migrations/011-call-sessions-provider-sid-dedup.ts +63 -0
  323. package/src/memory/migrations/012-call-sessions-add-initiated-from.ts +19 -0
  324. package/src/memory/migrations/013-guardian-action-tables.ts +68 -0
  325. package/src/memory/migrations/014-backfill-inbox-thread-state.ts +76 -0
  326. package/src/memory/migrations/015-drop-active-search-index.ts +27 -0
  327. package/src/memory/migrations/016-memory-segments-indexes.ts +11 -0
  328. package/src/memory/migrations/017-memory-items-indexes.ts +12 -0
  329. package/src/memory/migrations/018-remaining-table-indexes.ts +13 -0
  330. package/src/memory/migrations/index.ts +24 -0
  331. package/src/memory/migrations/registry.ts +79 -0
  332. package/src/memory/migrations/validate-migration-state.ts +69 -0
  333. package/src/memory/qdrant-manager.ts +49 -8
  334. package/src/memory/query-builder.ts +1 -1
  335. package/src/memory/raw-query.ts +119 -0
  336. package/src/memory/recall-cache.ts +4 -1
  337. package/src/memory/retriever.ts +163 -47
  338. package/src/memory/schema-migration.ts +25 -984
  339. package/src/memory/schema.ts +130 -7
  340. package/src/memory/search/entity.ts +10 -19
  341. package/src/memory/search/lexical.ts +81 -52
  342. package/src/memory/search/ranking.ts +21 -22
  343. package/src/memory/search/semantic.ts +157 -19
  344. package/src/memory/shared-app-links-store.ts +4 -5
  345. package/src/memory/validation.ts +19 -0
  346. package/src/messaging/draft-store.ts +5 -6
  347. package/src/messaging/providers/sms/adapter.ts +3 -6
  348. package/src/messaging/providers/telegram-bot/adapter.ts +2 -5
  349. package/src/messaging/providers/whatsapp/adapter.ts +136 -0
  350. package/src/messaging/providers/whatsapp/client.ts +67 -0
  351. package/src/messaging/style-analyzer.ts +5 -4
  352. package/src/messaging/thread-summarizer.ts +61 -69
  353. package/src/messaging/triage-engine.ts +62 -71
  354. package/src/migrations/config-merge.ts +53 -0
  355. package/src/migrations/data-layout.ts +68 -0
  356. package/src/migrations/data-merge.ts +33 -0
  357. package/src/migrations/hooks-merge.ts +90 -0
  358. package/src/migrations/index.ts +6 -0
  359. package/src/migrations/log.ts +23 -0
  360. package/src/migrations/skills-merge.ts +33 -0
  361. package/src/migrations/workspace-layout.ts +79 -0
  362. package/src/permissions/checker.ts +126 -11
  363. package/src/permissions/prompter.ts +14 -0
  364. package/src/permissions/shell-identity.ts +31 -1
  365. package/src/permissions/trust-store.ts +21 -1
  366. package/src/providers/anthropic/client.ts +4 -4
  367. package/src/providers/failover.ts +2 -2
  368. package/src/providers/model-intents.ts +70 -0
  369. package/src/providers/ollama/client.ts +2 -1
  370. package/src/providers/provider-send-message.ts +176 -0
  371. package/src/providers/registry.ts +71 -30
  372. package/src/providers/retry.ts +35 -1
  373. package/src/providers/types.ts +12 -1
  374. package/src/runtime/approval-conversation-turn.ts +97 -0
  375. package/src/runtime/approval-message-composer.ts +115 -5
  376. package/src/runtime/assistant-event-hub.ts +3 -1
  377. package/src/runtime/channel-approval-parser.ts +36 -2
  378. package/src/runtime/channel-approvals.ts +0 -21
  379. package/src/runtime/channel-guardian-service.ts +48 -7
  380. package/src/runtime/channel-readiness-service.ts +160 -34
  381. package/src/runtime/channel-readiness-types.ts +10 -4
  382. package/src/runtime/channel-retry-sweep.ts +184 -0
  383. package/src/runtime/guardian-context-resolver.ts +108 -0
  384. package/src/runtime/http-server.ts +289 -745
  385. package/src/runtime/http-types.ts +56 -3
  386. package/src/runtime/middleware/auth.ts +116 -0
  387. package/src/runtime/middleware/error-handler.ts +33 -0
  388. package/src/runtime/middleware/twilio-validation.ts +127 -0
  389. package/src/runtime/routes/app-routes.ts +1 -1
  390. package/src/runtime/routes/call-routes.ts +49 -6
  391. package/src/runtime/routes/channel-delivery-routes.ts +170 -0
  392. package/src/runtime/routes/channel-guardian-routes.ts +1191 -0
  393. package/src/runtime/routes/channel-inbound-routes.ts +1152 -0
  394. package/src/runtime/routes/channel-route-shared.ts +144 -0
  395. package/src/runtime/routes/channel-routes.ts +32 -1634
  396. package/src/runtime/routes/conversation-routes.ts +50 -7
  397. package/src/runtime/routes/events-routes.ts +2 -2
  398. package/src/runtime/routes/identity-routes.ts +126 -0
  399. package/src/runtime/routes/pairing-routes.ts +144 -0
  400. package/src/runtime/routes/run-routes.ts +15 -1
  401. package/src/runtime/run-orchestrator.ts +52 -34
  402. package/src/schedule/schedule-store.ts +36 -32
  403. package/src/schedule/scheduler.ts +3 -3
  404. package/src/security/encrypted-store.ts +5 -7
  405. package/src/security/oauth2.ts +45 -15
  406. package/src/security/parental-control-store.ts +183 -0
  407. package/src/security/secret-allowlist.ts +4 -3
  408. package/src/security/secret-scanner.ts +5 -5
  409. package/src/security/secure-keys.ts +1 -1
  410. package/src/security/token-manager.ts +3 -2
  411. package/src/services/vercel-deploy.ts +6 -2
  412. package/src/skills/tool-manifest.ts +3 -3
  413. package/src/skills/vellum-catalog-remote.ts +75 -16
  414. package/src/slack/slack-webhook.ts +2 -1
  415. package/src/swarm/orchestrator.ts +92 -1
  416. package/src/swarm/router-planner.ts +6 -9
  417. package/src/swarm/worker-prompts.ts +9 -12
  418. package/src/tasks/task-compiler.ts +19 -28
  419. package/src/tasks/task-runner.ts +1 -1
  420. package/src/tools/assets/search.ts +15 -14
  421. package/src/tools/browser/__tests__/auth-detector.test.ts +1 -0
  422. package/src/tools/browser/auto-navigate.ts +1 -0
  423. package/src/tools/browser/browser-execution.ts +13 -1
  424. package/src/tools/browser/browser-manager.ts +119 -4
  425. package/src/tools/browser/network-recorder.ts +5 -0
  426. package/src/tools/credentials/broker.ts +11 -2
  427. package/src/tools/credentials/metadata-store.ts +18 -14
  428. package/src/tools/credentials/post-connect-hooks.ts +61 -0
  429. package/src/tools/credentials/vault.ts +49 -23
  430. package/src/tools/executor.ts +80 -18
  431. package/src/tools/host-terminal/cli-discover.ts +1 -1
  432. package/src/tools/network/script-proxy/http-forwarder.ts +1 -1
  433. package/src/tools/network/script-proxy/mitm-handler.ts +1 -1
  434. package/src/tools/network/script-proxy/server.ts +1 -1
  435. package/src/tools/network/script-proxy/session-manager.ts +6 -5
  436. package/src/tools/network/web-fetch.ts +18 -2
  437. package/src/tools/network/web-search.ts +7 -3
  438. package/src/tools/reminder/reminder-store.ts +14 -15
  439. package/src/tools/schedule/create.ts +1 -0
  440. package/src/tools/schedule/list.ts +2 -1
  441. package/src/tools/shared/filesystem/file-ops-service.ts +5 -7
  442. package/src/tools/skills/skill-script-runner.ts +24 -9
  443. package/src/tools/skills/skill-tool-factory.ts +1 -0
  444. package/src/tools/tasks/work-item-enqueue.ts +2 -2
  445. package/src/tools/terminal/evaluate-typescript.ts +21 -12
  446. package/src/tools/terminal/parser.ts +50 -0
  447. package/src/tools/watcher/delete.ts +6 -0
  448. package/src/tools/weather/service.ts +1 -1
  449. package/src/twitter/client.ts +190 -24
  450. package/src/twitter/session.ts +4 -3
  451. package/src/util/clipboard.ts +1 -1
  452. package/src/util/errors.ts +65 -8
  453. package/src/util/fs.ts +40 -0
  454. package/src/util/json.ts +10 -0
  455. package/src/util/log-redact.ts +189 -0
  456. package/src/util/logger.ts +25 -18
  457. package/src/util/object.ts +3 -0
  458. package/src/util/platform.ts +72 -365
  459. package/src/util/pricing.ts +1 -1
  460. package/src/util/promise-guard.ts +1 -1
  461. package/src/util/retry.ts +19 -0
  462. package/src/util/row-mapper.ts +79 -0
  463. package/src/util/silently.ts +21 -0
  464. package/src/watcher/engine.ts +5 -1
  465. package/src/watcher/provider-types.ts +20 -0
  466. package/src/watcher/providers/github.ts +156 -0
  467. package/src/watcher/providers/gmail.ts +1 -0
  468. package/src/watcher/providers/google-calendar.ts +1 -0
  469. package/src/watcher/providers/linear.ts +460 -0
  470. package/src/watcher/providers/slack.ts +1 -0
  471. package/src/work-items/work-item-runner.ts +1 -1
  472. package/src/workspace/git-service.ts +1 -1
  473. package/src/workspace/provider-commit-message-generator.ts +51 -22
  474. package/src/__tests__/call-bridge.test.ts +0 -517
  475. package/src/__tests__/session-process-bridge.test.ts +0 -244
  476. package/src/calls/call-bridge.ts +0 -168
  477. package/src/config/bundled-skills/media-processing/services/capability-registry.ts +0 -137
  478. package/src/config/bundled-skills/media-processing/services/event-detection-service.ts +0 -280
  479. package/src/config/bundled-skills/media-processing/services/feedback-aggregation.ts +0 -144
  480. package/src/config/bundled-skills/media-processing/services/feedback-store.ts +0 -136
  481. package/src/config/bundled-skills/media-processing/services/retrieval-service.ts +0 -95
  482. package/src/config/bundled-skills/media-processing/services/timeline-service.ts +0 -267
  483. package/src/config/bundled-skills/media-processing/tools/detect-events.ts +0 -110
  484. package/src/config/bundled-skills/media-processing/tools/recalibrate.ts +0 -235
  485. package/src/config/bundled-skills/media-processing/tools/select-tracking-profile.ts +0 -142
  486. package/src/config/bundled-skills/media-processing/tools/submit-feedback.ts +0 -150
  487. package/src/config/vellum-skills/google-oauth-setup/SKILL.md +0 -199
@@ -0,0 +1,209 @@
1
+ // Assistant inbox: invite management, member management, inbox threads, escalations, and replies.
2
+
3
+ // === Client → Server ===
4
+
5
+ export interface IngressInviteRequest {
6
+ type: 'ingress_invite';
7
+ action: 'create' | 'list' | 'revoke' | 'redeem';
8
+ /** Source channel for the invite (required for create and redeem). */
9
+ sourceChannel?: string;
10
+ /** Optional note describing the invite (create only). */
11
+ note?: string;
12
+ /** Maximum number of times the invite can be redeemed (create only). */
13
+ maxUses?: number;
14
+ /** Expiration time in milliseconds from now (create only). */
15
+ expiresInMs?: number;
16
+ /** Invite ID to revoke (revoke only). */
17
+ inviteId?: string;
18
+ /** Invite token to redeem (redeem only). */
19
+ token?: string;
20
+ /** External user ID of the redeemer (redeem only). */
21
+ externalUserId?: string;
22
+ /** External chat ID of the redeemer (redeem only). */
23
+ externalChatId?: string;
24
+ /** Filter by status (list only). */
25
+ status?: string;
26
+ }
27
+
28
+ export interface IngressMemberRequest {
29
+ type: 'ingress_member';
30
+ action: 'list' | 'upsert' | 'revoke' | 'block';
31
+ /** Source channel (required for upsert, optional filter for list). */
32
+ sourceChannel?: string;
33
+ /** External user ID (upsert only). */
34
+ externalUserId?: string;
35
+ /** External chat ID (upsert only). */
36
+ externalChatId?: string;
37
+ /** Display name (upsert only). */
38
+ displayName?: string;
39
+ /** Username (upsert only). */
40
+ username?: string;
41
+ /** Access policy (upsert only). */
42
+ policy?: 'allow' | 'deny' | 'escalate';
43
+ /** Member status (upsert only for setting, list only for filtering). */
44
+ status?: 'pending' | 'active';
45
+ /** Member ID (revoke and block only). */
46
+ memberId?: string;
47
+ /** Reason for revoke or block (revoke and block only). */
48
+ reason?: string;
49
+ }
50
+
51
+ export interface AssistantInboxRequest {
52
+ type: 'assistant_inbox';
53
+ action: 'list_threads' | 'get_thread_messages';
54
+ /** Filter by assistant ID (list_threads only). */
55
+ assistantId?: string;
56
+ /** Maximum number of results to return (list_threads and get_thread_messages). */
57
+ limit?: number;
58
+ /** Offset for pagination (list_threads only). */
59
+ offset?: number;
60
+ /** Conversation ID (required for get_thread_messages). */
61
+ conversationId?: string;
62
+ /** Cursor for message pagination — return messages before this ID (get_thread_messages only). */
63
+ beforeMessageId?: string;
64
+ }
65
+
66
+ export interface AssistantInboxEscalationRequest {
67
+ type: 'assistant_inbox_escalation';
68
+ action: 'list' | 'decide';
69
+ /** Filter by assistant ID (list only). */
70
+ assistantId?: string;
71
+ /** Filter by status (list only). */
72
+ status?: string;
73
+ /** Approval request ID (required for decide). */
74
+ approvalRequestId?: string;
75
+ /** Decision (required for decide). */
76
+ decision?: 'approve' | 'deny';
77
+ /** Reason for the decision (decide only). */
78
+ reason?: string;
79
+ }
80
+
81
+ export interface AssistantInboxReplyRequest {
82
+ type: 'assistant_inbox_reply';
83
+ conversationId: string;
84
+ content: string;
85
+ }
86
+
87
+ // === Server → Client ===
88
+
89
+ export interface IngressInviteResponse {
90
+ type: 'ingress_invite_response';
91
+ success: boolean;
92
+ error?: string;
93
+ /** Single invite (returned on create/revoke). Token field is only present on create. */
94
+ invite?: {
95
+ id: string;
96
+ sourceChannel: string;
97
+ token?: string;
98
+ tokenHash: string;
99
+ maxUses: number;
100
+ useCount: number;
101
+ expiresAt: number | null;
102
+ status: string;
103
+ note?: string;
104
+ createdAt: number;
105
+ };
106
+ /** List of invites (returned on list). */
107
+ invites?: Array<{
108
+ id: string;
109
+ sourceChannel: string;
110
+ tokenHash: string;
111
+ maxUses: number;
112
+ useCount: number;
113
+ expiresAt: number | null;
114
+ status: string;
115
+ note?: string;
116
+ createdAt: number;
117
+ }>;
118
+ }
119
+
120
+ export interface IngressMemberResponse {
121
+ type: 'ingress_member_response';
122
+ success: boolean;
123
+ error?: string;
124
+ /** Single member (returned on upsert/revoke/block). */
125
+ member?: {
126
+ id: string;
127
+ sourceChannel: string;
128
+ externalUserId?: string;
129
+ externalChatId?: string;
130
+ displayName?: string;
131
+ username?: string;
132
+ status: string;
133
+ policy: string;
134
+ lastSeenAt?: number;
135
+ createdAt: number;
136
+ };
137
+ /** List of members (returned on list). */
138
+ members?: Array<{
139
+ id: string;
140
+ sourceChannel: string;
141
+ externalUserId?: string;
142
+ externalChatId?: string;
143
+ displayName?: string;
144
+ username?: string;
145
+ status: string;
146
+ policy: string;
147
+ lastSeenAt?: number;
148
+ createdAt: number;
149
+ }>;
150
+ }
151
+
152
+ export interface AssistantInboxResponse {
153
+ type: 'assistant_inbox_response';
154
+ success: boolean;
155
+ error?: string;
156
+ /** List of inbox threads (returned on list_threads). */
157
+ threads?: Array<{
158
+ conversationId: string;
159
+ sourceChannel: string;
160
+ externalChatId: string;
161
+ externalUserId?: string;
162
+ displayName?: string;
163
+ username?: string;
164
+ lastMessageAt?: number;
165
+ unreadCount: number;
166
+ hasPendingEscalation: boolean;
167
+ lastInboundAt?: number;
168
+ lastOutboundAt?: number;
169
+ }>;
170
+ /** List of messages (returned on get_thread_messages). */
171
+ messages?: Array<{
172
+ id: string;
173
+ role: string;
174
+ content: string;
175
+ createdAt: number;
176
+ metadata?: Record<string, unknown>;
177
+ }>;
178
+ }
179
+
180
+ export interface AssistantInboxEscalationResponse {
181
+ type: 'assistant_inbox_escalation_response';
182
+ success: boolean;
183
+ error?: string;
184
+ /** List of escalations (returned on list). */
185
+ escalations?: Array<{
186
+ id: string;
187
+ runId: string;
188
+ conversationId: string;
189
+ channel: string;
190
+ requesterExternalUserId: string;
191
+ requesterChatId: string;
192
+ status: string;
193
+ requestSummary?: string;
194
+ createdAt: number;
195
+ }>;
196
+ /** Decision result (returned on decide). */
197
+ decision?: {
198
+ id: string;
199
+ status: string;
200
+ decidedAt: number;
201
+ };
202
+ }
203
+
204
+ export interface AssistantInboxReplyResponse {
205
+ type: 'assistant_inbox_reply_response';
206
+ success: boolean;
207
+ error?: string;
208
+ messageId?: string;
209
+ }
@@ -0,0 +1,284 @@
1
+ // External service integrations: Slack, Telegram, Twilio, Twitter, Vercel, ingress, channel readiness, guardian.
2
+
3
+ import type { ChannelId } from '../../channels/types.js';
4
+
5
+ // === Client → Server ===
6
+
7
+ export interface SlackWebhookConfigRequest {
8
+ type: 'slack_webhook_config';
9
+ action: 'get' | 'set';
10
+ webhookUrl?: string;
11
+ }
12
+
13
+ export interface IngressConfigRequest {
14
+ type: 'ingress_config';
15
+ action: 'get' | 'set';
16
+ publicBaseUrl?: string;
17
+ enabled?: boolean;
18
+ }
19
+
20
+ export interface VercelApiConfigRequest {
21
+ type: 'vercel_api_config';
22
+ action: 'get' | 'set' | 'delete';
23
+ apiToken?: string;
24
+ }
25
+
26
+ export interface TwitterIntegrationConfigRequest {
27
+ type: 'twitter_integration_config';
28
+ action: 'get' | 'set_mode' | 'set_local_client' | 'clear_local_client' | 'disconnect' | 'get_strategy' | 'set_strategy';
29
+ mode?: 'local_byo' | 'managed';
30
+ clientId?: string;
31
+ clientSecret?: string;
32
+ strategy?: string;
33
+ }
34
+
35
+ export interface TelegramConfigRequest {
36
+ type: 'telegram_config';
37
+ action: 'get' | 'set' | 'clear' | 'set_commands';
38
+ botToken?: string; // Only for action: 'set'
39
+ commands?: Array<{ command: string; description: string }>; // Only for action: 'set_commands'
40
+ }
41
+
42
+ export interface TwilioConfigRequest {
43
+ type: 'twilio_config';
44
+ action: 'get' | 'set_credentials' | 'clear_credentials' | 'provision_number' | 'assign_number' | 'list_numbers'
45
+ | 'sms_compliance_status' | 'sms_submit_tollfree_verification' | 'sms_update_tollfree_verification'
46
+ | 'sms_delete_tollfree_verification' | 'release_number' | 'sms_send_test' | 'sms_doctor';
47
+ accountSid?: string; // Only for action: 'set_credentials'
48
+ authToken?: string; // Only for action: 'set_credentials'
49
+ phoneNumber?: string; // Only for action: 'assign_number' or 'sms_send_test'
50
+ areaCode?: string; // Only for action: 'provision_number'
51
+ country?: string; // Only for action: 'provision_number' (ISO 3166-1 alpha-2, default 'US')
52
+ assistantId?: string; // Scope number assignment/lookup to a specific assistant
53
+ verificationSid?: string; // Only for update/delete verification actions
54
+ verificationParams?: {
55
+ tollfreePhoneNumberSid?: string;
56
+ businessName?: string;
57
+ businessWebsite?: string;
58
+ notificationEmail?: string;
59
+ useCaseCategories?: string[];
60
+ useCaseSummary?: string;
61
+ productionMessageSample?: string;
62
+ optInImageUrls?: string[];
63
+ optInType?: string;
64
+ messageVolume?: string;
65
+ businessType?: string;
66
+ customerProfileSid?: string;
67
+ };
68
+ text?: string; // Only for action: 'sms_send_test' (default: "Test SMS from your Vellum assistant")
69
+ }
70
+
71
+ export interface ChannelReadinessRequest {
72
+ type: 'channel_readiness';
73
+ action: 'get' | 'refresh';
74
+ channel?: ChannelId;
75
+ assistantId?: string;
76
+ includeRemote?: boolean;
77
+ }
78
+
79
+ export interface GuardianVerificationRequest {
80
+ type: 'guardian_verification';
81
+ action: 'create_challenge' | 'status' | 'revoke';
82
+ channel?: ChannelId; // Defaults to 'telegram'
83
+ sessionId?: string;
84
+ assistantId?: string; // Defaults to 'self'
85
+ }
86
+
87
+ export interface TwitterAuthStartRequest {
88
+ type: 'twitter_auth_start';
89
+ }
90
+
91
+ export interface TwitterAuthStatusRequest {
92
+ type: 'twitter_auth_status';
93
+ }
94
+
95
+ export interface IntegrationListRequest {
96
+ type: 'integration_list';
97
+ }
98
+
99
+ export interface IntegrationConnectRequest {
100
+ type: 'integration_connect';
101
+ integrationId: string;
102
+ }
103
+
104
+ export interface IntegrationDisconnectRequest {
105
+ type: 'integration_disconnect';
106
+ integrationId: string;
107
+ }
108
+
109
+ export interface LinkOpenRequest {
110
+ type: 'link_open_request';
111
+ url: string;
112
+ metadata?: Record<string, unknown>;
113
+ }
114
+
115
+ // === Server → Client ===
116
+
117
+ export interface SlackWebhookConfigResponse {
118
+ type: 'slack_webhook_config_response';
119
+ webhookUrl?: string;
120
+ success: boolean;
121
+ error?: string;
122
+ }
123
+
124
+ export interface IngressConfigResponse {
125
+ type: 'ingress_config_response';
126
+ enabled: boolean;
127
+ publicBaseUrl: string;
128
+ /** Read-only gateway target computed from GATEWAY_PORT env var (default 7830) + loopback host. */
129
+ localGatewayTarget: string;
130
+ success: boolean;
131
+ error?: string;
132
+ }
133
+
134
+ export interface VercelApiConfigResponse {
135
+ type: 'vercel_api_config_response';
136
+ hasToken: boolean;
137
+ success: boolean;
138
+ error?: string;
139
+ }
140
+
141
+ export interface TwitterIntegrationConfigResponse {
142
+ type: 'twitter_integration_config_response';
143
+ success: boolean;
144
+ mode?: 'local_byo' | 'managed';
145
+ managedAvailable: boolean;
146
+ localClientConfigured: boolean;
147
+ connected: boolean;
148
+ accountInfo?: string;
149
+ strategy?: 'oauth' | 'browser' | 'auto';
150
+ /** Whether the user has explicitly set a strategy (vs. relying on the default 'auto'). */
151
+ strategyConfigured?: boolean;
152
+ error?: string;
153
+ }
154
+
155
+ export interface TelegramConfigResponse {
156
+ type: 'telegram_config_response';
157
+ success: boolean;
158
+ hasBotToken: boolean;
159
+ botUsername?: string;
160
+ connected: boolean;
161
+ hasWebhookSecret: boolean;
162
+ lastError?: string;
163
+ error?: string;
164
+ }
165
+
166
+ export interface TwilioConfigResponse {
167
+ type: 'twilio_config_response';
168
+ success: boolean;
169
+ hasCredentials: boolean;
170
+ phoneNumber?: string;
171
+ numbers?: Array<{ phoneNumber: string; friendlyName: string; capabilities: { voice: boolean; sms: boolean } }>;
172
+ error?: string;
173
+ /** Non-fatal warning message (e.g. webhook sync failure that did not prevent the primary operation). */
174
+ warning?: string;
175
+ compliance?: {
176
+ numberType?: string;
177
+ verificationSid?: string;
178
+ verificationStatus?: string;
179
+ rejectionReason?: string;
180
+ rejectionReasons?: string[];
181
+ errorCode?: string;
182
+ editAllowed?: boolean;
183
+ editExpiration?: string;
184
+ };
185
+ /** Present when action is 'sms_send_test'. */
186
+ testResult?: {
187
+ messageSid: string;
188
+ to: string;
189
+ initialStatus: string;
190
+ finalStatus: string;
191
+ errorCode?: string;
192
+ errorMessage?: string;
193
+ };
194
+ /** Present when action is 'sms_doctor'. */
195
+ diagnostics?: {
196
+ readiness: { ready: boolean; issues: string[] };
197
+ compliance: { status: string; detail?: string; remediation?: string };
198
+ lastSend?: { status: string; errorCode?: string; remediation?: string };
199
+ overallStatus: 'healthy' | 'degraded' | 'broken';
200
+ actionItems: string[];
201
+ };
202
+ }
203
+
204
+ export interface ChannelReadinessResponse {
205
+ type: 'channel_readiness_response';
206
+ success: boolean;
207
+ snapshots?: Array<{
208
+ channel: ChannelId;
209
+ ready: boolean;
210
+ checkedAt: number;
211
+ stale: boolean;
212
+ reasons: Array<{ code: string; text: string }>;
213
+ localChecks: Array<{ name: string; passed: boolean; message: string }>;
214
+ remoteChecks?: Array<{ name: string; passed: boolean; message: string }>;
215
+ }>;
216
+ error?: string;
217
+ }
218
+
219
+ export interface GuardianVerificationResponse {
220
+ type: 'guardian_verification_response';
221
+ success: boolean;
222
+ secret?: string;
223
+ instruction?: string;
224
+ /** Present when action is 'status'. */
225
+ bound?: boolean;
226
+ guardianExternalUserId?: string;
227
+ /** The channel this status pertains to (e.g. "telegram", "sms"). Present when action is 'status'. */
228
+ channel?: ChannelId;
229
+ /** The assistant ID scoped to this status. Present when action is 'status'. */
230
+ assistantId?: string;
231
+ /** The delivery chat ID for the guardian (e.g. Telegram chat ID). Present when action is 'status' and bound is true. */
232
+ guardianDeliveryChatId?: string;
233
+ /** Optional channel username/handle for the bound guardian (for UI display). */
234
+ guardianUsername?: string;
235
+ /** Optional display name for the bound guardian (for UI display). */
236
+ guardianDisplayName?: string;
237
+ /** Whether a pending verification challenge exists for this (assistantId, channel). Used by relay setup to detect active voice verification sessions. */
238
+ hasPendingChallenge?: boolean;
239
+ error?: string;
240
+ }
241
+
242
+ export interface TwitterAuthResult {
243
+ type: 'twitter_auth_result';
244
+ success: boolean;
245
+ accountInfo?: string;
246
+ error?: string;
247
+ }
248
+
249
+ export interface TwitterAuthStatusResponse {
250
+ type: 'twitter_auth_status_response';
251
+ connected: boolean;
252
+ accountInfo?: string;
253
+ mode?: 'local_byo' | 'managed';
254
+ error?: string;
255
+ }
256
+
257
+ export interface IntegrationListResponse {
258
+ type: 'integration_list_response';
259
+ integrations: Array<{
260
+ id: string;
261
+ connected: boolean;
262
+ accountInfo?: string | null;
263
+ connectedAt?: number | null;
264
+ lastUsed?: number | null;
265
+ error?: string | null;
266
+ }>;
267
+ }
268
+
269
+ export interface IntegrationConnectResult {
270
+ type: 'integration_connect_result';
271
+ integrationId: string;
272
+ success: boolean;
273
+ accountInfo?: string | null;
274
+ error?: string | null;
275
+ setupRequired?: boolean;
276
+ setupSkillId?: string;
277
+ setupHint?: string;
278
+ }
279
+
280
+ export interface OpenUrl {
281
+ type: 'open_url';
282
+ url: string;
283
+ title?: string;
284
+ }
@@ -0,0 +1,48 @@
1
+ // Memory recall and status types.
2
+
3
+ export interface MemoryRecalledCandidateDebug {
4
+ key: string;
5
+ type: string;
6
+ kind: string;
7
+ finalScore: number;
8
+ lexical: number;
9
+ semantic: number;
10
+ recency: number;
11
+ }
12
+
13
+ export interface MemoryRecalled {
14
+ type: 'memory_recalled';
15
+ provider: string;
16
+ model: string;
17
+ lexicalHits: number;
18
+ semanticHits: number;
19
+ recencyHits: number;
20
+ entityHits: number;
21
+ relationSeedEntityCount?: number;
22
+ relationTraversedEdgeCount?: number;
23
+ relationNeighborEntityCount?: number;
24
+ relationExpandedItemCount?: number;
25
+ earlyTerminated?: boolean;
26
+ mergedCount: number;
27
+ selectedCount: number;
28
+ rerankApplied: boolean;
29
+ injectedTokens: number;
30
+ latencyMs: number;
31
+ topCandidates: MemoryRecalledCandidateDebug[];
32
+ }
33
+
34
+ export interface MemoryStatus {
35
+ type: 'memory_status';
36
+ enabled: boolean;
37
+ degraded: boolean;
38
+ reason?: string;
39
+ provider?: string;
40
+ model?: string;
41
+ conflictsPending: number;
42
+ conflictsResolved: number;
43
+ oldestPendingConflictAgeMs: number | null;
44
+ cleanupResolvedJobsPending: number;
45
+ cleanupSupersededJobsPending: number;
46
+ cleanupResolvedJobsCompleted24h: number;
47
+ cleanupSupersededJobsCompleted24h: number;
48
+ }