@vellumai/assistant 0.8.3 → 0.8.5

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 (665) hide show
  1. package/ARCHITECTURE.md +2 -2
  2. package/docker-entrypoint.sh +0 -1
  3. package/docs/browser-use-architecture-phase2.md +1 -1
  4. package/knip.json +2 -1
  5. package/node_modules/@vellumai/gateway-client/src/types.ts +2 -0
  6. package/openapi.yaml +1492 -100
  7. package/package.json +1 -1
  8. package/src/__tests__/agent-loop-exit-reason.test.ts +4 -5
  9. package/src/__tests__/agent-loop-override-profile.test.ts +1 -1
  10. package/src/__tests__/agent-loop.test.ts +88 -3
  11. package/src/__tests__/anthropic-provider.test.ts +302 -33
  12. package/src/__tests__/approval-cascade.test.ts +1 -1
  13. package/src/__tests__/assistant-event-hub-self-exclusion.test.ts +293 -0
  14. package/src/__tests__/assistant-feature-flags-integration.test.ts +3 -3
  15. package/src/__tests__/audit-log-rotation.test.ts +70 -16
  16. package/src/__tests__/background-workers-disk-pressure.test.ts +4 -3
  17. package/src/__tests__/btw-routes.test.ts +2 -3
  18. package/src/__tests__/call-controller.test.ts +0 -1
  19. package/src/__tests__/cancel-resolves-conversation-key.test.ts +1 -1
  20. package/src/__tests__/channel-delivery-store.test.ts +193 -0
  21. package/src/__tests__/channel-guardian.test.ts +3 -3
  22. package/src/__tests__/channel-reply-delivery.test.ts +284 -5
  23. package/src/__tests__/channel-retry-sweep.test.ts +274 -1
  24. package/src/__tests__/checker.test.ts +6 -15
  25. package/src/__tests__/compaction-events.test.ts +2 -1
  26. package/src/__tests__/compactor-call-site-logging.test.ts +214 -0
  27. package/src/__tests__/compactor-preserved-tail-count.test.ts +110 -0
  28. package/src/__tests__/computer-use-skill-manifest-regression.test.ts +5 -11
  29. package/src/__tests__/computer-use-tools.test.ts +2 -4
  30. package/src/__tests__/config-watcher.test.ts +1 -1
  31. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  32. package/src/__tests__/context-token-estimator.test.ts +91 -1
  33. package/src/__tests__/conversation-abort-tool-results.test.ts +1 -1
  34. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +1 -1
  35. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +55 -4
  36. package/src/__tests__/conversation-agent-loop-overflow.test.ts +228 -8
  37. package/src/__tests__/conversation-agent-loop.test.ts +188 -129
  38. package/src/__tests__/conversation-app-control-instantiation.test.ts +2 -5
  39. package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -1
  40. package/src/__tests__/conversation-clean-command.test.ts +137 -0
  41. package/src/__tests__/conversation-clear-safety.test.ts +25 -25
  42. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -1
  43. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +1 -1
  44. package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
  45. package/src/__tests__/conversation-error.test.ts +31 -0
  46. package/src/__tests__/conversation-fork-crud.test.ts +324 -0
  47. package/src/__tests__/conversation-lifecycle.test.ts +53 -12
  48. package/src/__tests__/conversation-load-history-repair.test.ts +1 -1
  49. package/src/__tests__/conversation-load-history-stripped.test.ts +279 -0
  50. package/src/__tests__/conversation-pairing.test.ts +2 -2
  51. package/src/__tests__/conversation-process-callsite.test.ts +1 -1
  52. package/src/__tests__/conversation-provider-retry-repair.test.ts +2 -1
  53. package/src/__tests__/conversation-queue.test.ts +1 -1
  54. package/src/__tests__/conversation-routes-disk-view.test.ts +109 -0
  55. package/src/__tests__/conversation-routes-slash-commands.test.ts +35 -0
  56. package/src/__tests__/conversation-runtime-assembly.test.ts +264 -81
  57. package/src/__tests__/conversation-seed-composer.test.ts +66 -4
  58. package/src/__tests__/conversation-skill-tools.test.ts +2 -5
  59. package/src/__tests__/conversation-slash-commands.test.ts +36 -8
  60. package/src/__tests__/conversation-slash-queue.test.ts +1 -1
  61. package/src/__tests__/conversation-slash-unknown.test.ts +1 -1
  62. package/src/__tests__/conversation-speed-override.test.ts +1 -1
  63. package/src/__tests__/conversation-store.test.ts +1 -1
  64. package/src/__tests__/conversation-surfaces-task-progress.test.ts +220 -0
  65. package/src/__tests__/conversation-sync-tags.test.ts +99 -32
  66. package/src/__tests__/conversation-workspace-cache-state.test.ts +2 -1
  67. package/src/__tests__/conversation-workspace-injection.test.ts +5 -1
  68. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -1
  69. package/src/__tests__/credential-execution-feature-gates.test.ts +9 -7
  70. package/src/__tests__/credential-execution-tools.test.ts +6 -6
  71. package/src/__tests__/credential-security-invariants.test.ts +7 -0
  72. package/src/__tests__/credential-vault-unit.test.ts +2 -2
  73. package/src/__tests__/cu-unified-flow.test.ts +10 -1
  74. package/src/__tests__/dm-backfill.test.ts +64 -0
  75. package/src/__tests__/dm-persistence.test.ts +33 -0
  76. package/src/__tests__/document-find-replace.test.ts +501 -0
  77. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  78. package/src/__tests__/email-html-renderer.test.ts +12 -0
  79. package/src/__tests__/first-greeting.test.ts +23 -2
  80. package/src/__tests__/gateway-flag-listener.test.ts +237 -0
  81. package/src/__tests__/gemini-provider.test.ts +78 -0
  82. package/src/__tests__/guardian-dispatch.test.ts +0 -1
  83. package/src/__tests__/guardian-outbound-http.test.ts +7 -5
  84. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +1 -1
  85. package/src/__tests__/headless-browser-navigate.test.ts +172 -0
  86. package/src/__tests__/heartbeat-disk-pressure.test.ts +4 -0
  87. package/src/__tests__/heartbeat-service.test.ts +4 -0
  88. package/src/__tests__/host-bash-proxy.test.ts +6 -0
  89. package/src/__tests__/host-browser-proxy.test.ts +10 -0
  90. package/src/__tests__/host-cu-proxy.test.ts +8 -1
  91. package/src/__tests__/host-file-proxy.test.ts +8 -1
  92. package/src/__tests__/host-shell-tool.test.ts +1 -1
  93. package/src/__tests__/host-transfer-proxy.test.ts +8 -1
  94. package/src/__tests__/identity-routes.test.ts +57 -0
  95. package/src/__tests__/inbound-slack-persistence.test.ts +3 -0
  96. package/src/__tests__/init-feature-flag-overrides.test.ts +5 -6
  97. package/src/__tests__/injector-chain.test.ts +2 -0
  98. package/src/__tests__/injector-document-comments.test.ts +378 -0
  99. package/src/__tests__/injector-pkb-v2-silenced.test.ts +4 -25
  100. package/src/__tests__/list-messages-attachments.test.ts +21 -17
  101. package/src/__tests__/list-messages-hidden-metadata.test.ts +217 -0
  102. package/src/__tests__/list-messages-page-latest.test.ts +130 -14
  103. package/src/__tests__/list-messages-tool-merge.test.ts +77 -17
  104. package/src/__tests__/llm-context-normalization.test.ts +0 -2
  105. package/src/__tests__/llm-request-log-call-site.test.ts +136 -0
  106. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +26 -0
  107. package/src/__tests__/llm-resolver.test.ts +161 -9
  108. package/src/__tests__/llm-usage-store.test.ts +66 -0
  109. package/src/__tests__/log-export-routes.test.ts +99 -2
  110. package/src/__tests__/logger.test.ts +89 -0
  111. package/src/__tests__/mcp-abort-signal.test.ts +2 -2
  112. package/src/__tests__/media-generate-image.test.ts +31 -0
  113. package/src/__tests__/memory-v2-static-injector.test.ts +7 -7
  114. package/src/__tests__/message-queue-steer.test.ts +114 -0
  115. package/src/__tests__/model-intents.test.ts +2 -4
  116. package/src/__tests__/notification-guardian-path.test.ts +0 -1
  117. package/src/__tests__/onboarding-template-contract.test.ts +1 -1
  118. package/src/__tests__/openai-provider.test.ts +151 -0
  119. package/src/__tests__/openai-responses-provider.test.ts +118 -16
  120. package/src/__tests__/outbound-slack-persistence.test.ts +187 -20
  121. package/src/__tests__/pending-interactions-resolved-event.test.ts +189 -0
  122. package/src/__tests__/platform-bash-auto-approve.test.ts +2 -2
  123. package/src/__tests__/platform.test.ts +2 -5
  124. package/src/__tests__/plugin-api-tool-definition.test.ts +92 -0
  125. package/src/__tests__/plugin-bootstrap.test.ts +2 -2
  126. package/src/__tests__/plugin-source-watcher.test.ts +302 -0
  127. package/src/__tests__/plugin-tool-contribution.test.ts +13 -6
  128. package/src/__tests__/plugin-types.test.ts +3 -2
  129. package/src/__tests__/prechat-onboarding-contract.test.ts +131 -98
  130. package/src/__tests__/pricing.test.ts +12 -0
  131. package/src/__tests__/process-message-background-slack.test.ts +1 -51
  132. package/src/__tests__/process-message-display-content.test.ts +21 -16
  133. package/src/__tests__/prune-jobs-changes-parser.test.ts +61 -0
  134. package/src/__tests__/registry.test.ts +2 -8
  135. package/src/__tests__/require-fresh-approval.test.ts +2 -2
  136. package/src/__tests__/runtime-events-sse-bilingual.test.ts +154 -0
  137. package/src/__tests__/server-history-render.test.ts +83 -4
  138. package/src/__tests__/shell-tool-proxy-mode.test.ts +1 -1
  139. package/src/__tests__/skill-feature-flags.test.ts +2 -2
  140. package/src/__tests__/skill-projection-feature-flag.test.ts +4 -7
  141. package/src/__tests__/skill-projection.benchmark.test.ts +2 -6
  142. package/src/__tests__/skill-tool-factory.test.ts +1 -1
  143. package/src/__tests__/steer-tool-repair.test.ts +249 -0
  144. package/src/__tests__/subagent-notify-parent.test.ts +1 -1
  145. package/src/__tests__/suggestion-routes.test.ts +1 -0
  146. package/src/__tests__/sync-message-contract.test.ts +59 -0
  147. package/src/__tests__/system-prompt.test.ts +161 -124
  148. package/src/__tests__/terminal-tools.test.ts +12 -2
  149. package/src/__tests__/thinking-block-replay.test.ts +113 -0
  150. package/src/__tests__/thread-backfill.test.ts +370 -22
  151. package/src/__tests__/tool-approval-handler.test.ts +1 -5
  152. package/src/__tests__/tool-execute-pipeline.test.ts +2 -2
  153. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +2 -5
  154. package/src/__tests__/tool-executor-lifecycle-events.test.ts +15 -5
  155. package/src/__tests__/tool-executor.test.ts +89 -53
  156. package/src/__tests__/tool-grant-request-escalation.test.ts +1 -6
  157. package/src/__tests__/tool-result-metadata-plumbing.test.ts +167 -0
  158. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  159. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +1 -6
  160. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  161. package/src/__tests__/twilio-routes.test.ts +1 -1
  162. package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
  163. package/src/__tests__/usage-routes.test.ts +3 -0
  164. package/src/__tests__/verification-control-plane-policy.test.ts +2 -2
  165. package/src/__tests__/web-fetch.test.ts +2 -2
  166. package/src/__tests__/workspace-git-service.test.ts +94 -10
  167. package/src/__tests__/workspace-migration-088-deprecate-background-conversation-override.test.ts +158 -0
  168. package/src/__tests__/workspace-migration-089-move-memory-tree-out-of-v3.test.ts +86 -0
  169. package/src/acp/__tests__/prepare-agent-env.test.ts +146 -0
  170. package/src/acp/prepare-agent-env.ts +78 -0
  171. package/src/acp/session-manager.ts +1 -1
  172. package/src/agent/attachments.ts +1 -0
  173. package/src/agent/loop.ts +65 -20
  174. package/src/api/README.md +5 -0
  175. package/src/api/index.ts +4 -0
  176. package/src/api/package.json +10 -0
  177. package/src/background-wake/background-wake-routes.test.ts +233 -0
  178. package/src/background-wake/next-wake.test.ts +289 -0
  179. package/src/background-wake/next-wake.ts +172 -0
  180. package/src/background-wake/runtime-registry.ts +24 -0
  181. package/src/browser/operations.ts +15 -0
  182. package/src/cli/commands/__tests__/browser.test.ts +23 -5
  183. package/src/cli/commands/__tests__/conversations-slack.test.ts +572 -0
  184. package/src/cli/commands/__tests__/domain-register.test.ts +110 -0
  185. package/src/cli/commands/__tests__/domain-status.test.ts +33 -33
  186. package/src/cli/commands/__tests__/inference-send.test.ts +108 -5
  187. package/src/cli/commands/__tests__/memory-v2-compare-render.test.ts +98 -0
  188. package/src/cli/commands/__tests__/memory-v2.test.ts +10 -12
  189. package/src/cli/commands/__tests__/memory-v3-render.test.ts +340 -0
  190. package/src/cli/commands/browser.ts +247 -0
  191. package/src/cli/commands/conversations.ts +128 -1
  192. package/src/cli/commands/domain.ts +91 -41
  193. package/src/cli/commands/inference-providers.ts +147 -1
  194. package/src/cli/commands/inference.ts +93 -40
  195. package/src/cli/commands/memory-v2-compare-render.ts +115 -0
  196. package/src/cli/commands/memory-v2.ts +483 -0
  197. package/src/cli/commands/memory-v3-render.ts +344 -0
  198. package/src/cli/commands/memory-v3.ts +316 -0
  199. package/src/cli/commands/notifications.ts +24 -2
  200. package/src/cli/program.ts +2 -0
  201. package/src/cli/utils/conversation-id.ts +17 -5
  202. package/src/config/assistant-feature-flags.ts +21 -9
  203. package/src/config/bundled-skills/app-builder/SKILL.md +2 -2
  204. package/src/config/bundled-skills/document-editor/SKILL.md +124 -0
  205. package/src/config/bundled-skills/document-editor/TOOLS.json +258 -0
  206. package/src/config/bundled-skills/document-editor/tools/comment-list.ts +12 -0
  207. package/src/config/bundled-skills/document-editor/tools/comment-reply.ts +12 -0
  208. package/src/config/bundled-skills/document-editor/tools/comment-resolve.ts +12 -0
  209. package/src/config/bundled-skills/document-editor/tools/document-find.ts +12 -0
  210. package/src/config/bundled-skills/document-editor/tools/document-open.ts +12 -0
  211. package/src/config/bundled-skills/document-editor/tools/document-replace-text.ts +12 -0
  212. package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
  213. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +2 -2
  214. package/src/config/bundled-skills/media-processing/SKILL.md +8 -0
  215. package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +13 -8
  216. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +10 -3
  217. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +16 -14
  218. package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +7 -2
  219. package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +7 -2
  220. package/src/config/bundled-skills/schedule/SKILL.md +8 -0
  221. package/src/config/bundled-tool-registry.ts +24 -12
  222. package/src/config/call-site-defaults.ts +20 -0
  223. package/src/config/feature-flag-registry.json +115 -3
  224. package/src/config/llm-resolver.ts +16 -2
  225. package/src/config/schemas/__tests__/memory-v2.test.ts +217 -1
  226. package/src/config/schemas/call-site-catalog.ts +35 -0
  227. package/src/config/schemas/llm.ts +14 -0
  228. package/src/config/schemas/memory-v2.ts +294 -1
  229. package/src/config/schemas/memory.ts +2 -1
  230. package/src/context/compactor.ts +60 -1
  231. package/src/context/token-estimator.ts +47 -4
  232. package/src/context/window-manager.ts +25 -0
  233. package/src/conversations/__tests__/message-consolidation.test.ts +350 -0
  234. package/src/conversations/message-consolidation.ts +404 -0
  235. package/src/credential-health/credential-health-service.ts +34 -19
  236. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +1 -1
  237. package/src/daemon/__tests__/conversation-tool-setup.test.ts +66 -6
  238. package/src/daemon/__tests__/meet-manifest-loader.test.ts +1 -1
  239. package/src/daemon/__tests__/native-web-search-metadata.test.ts +357 -0
  240. package/src/daemon/__tests__/web-search-status-text.test.ts +287 -0
  241. package/src/daemon/conversation-agent-loop-handlers.ts +155 -36
  242. package/src/daemon/conversation-agent-loop.ts +307 -88
  243. package/src/daemon/conversation-error.ts +31 -1
  244. package/src/daemon/conversation-lifecycle.ts +149 -118
  245. package/src/daemon/conversation-messaging.ts +3 -0
  246. package/src/daemon/conversation-process.ts +273 -0
  247. package/src/daemon/conversation-queue-manager.ts +14 -0
  248. package/src/daemon/conversation-runtime-assembly.ts +145 -84
  249. package/src/daemon/conversation-slash.ts +37 -5
  250. package/src/daemon/conversation-surfaces.ts +45 -2
  251. package/src/daemon/conversation-tool-setup.ts +70 -3
  252. package/src/daemon/conversation-usage.ts +2 -0
  253. package/src/daemon/conversation.ts +54 -32
  254. package/src/daemon/disk-pressure-guard.ts +14 -2
  255. package/src/daemon/first-greeting.ts +10 -0
  256. package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +498 -0
  257. package/src/daemon/handlers/config-a2a.ts +160 -0
  258. package/src/daemon/handlers/config-model.test.ts +2 -0
  259. package/src/daemon/handlers/conversations.ts +90 -3
  260. package/src/daemon/handlers/shared.ts +92 -29
  261. package/src/daemon/host-bash-proxy.ts +1 -1
  262. package/src/daemon/host-browser-proxy.ts +5 -5
  263. package/src/daemon/host-cu-proxy.ts +5 -5
  264. package/src/daemon/host-file-proxy.ts +5 -5
  265. package/src/daemon/host-proxy-base.ts +4 -4
  266. package/src/daemon/host-transfer-proxy.ts +11 -11
  267. package/src/daemon/lifecycle.ts +40 -23
  268. package/src/daemon/meet-manifest-loader.ts +1 -7
  269. package/src/daemon/message-protocol.ts +4 -0
  270. package/src/daemon/message-types/conversations.ts +14 -9
  271. package/src/daemon/message-types/document-comments.ts +50 -0
  272. package/src/daemon/message-types/home.ts +1 -13
  273. package/src/daemon/message-types/messages.ts +66 -7
  274. package/src/daemon/message-types/surfaces.ts +3 -1
  275. package/src/daemon/message-types/sync.ts +14 -0
  276. package/src/daemon/message-types/web-activity.ts +57 -0
  277. package/src/daemon/plugin-source-watcher.ts +135 -3
  278. package/src/daemon/process-message.ts +69 -12
  279. package/src/daemon/shutdown-handlers.ts +24 -5
  280. package/src/daemon/switch-inference-profile-tool.ts +52 -0
  281. package/src/daemon/tool-setup-types.ts +13 -0
  282. package/src/daemon/trust-context.ts +6 -0
  283. package/src/documents/document-comments-store.test.ts +338 -0
  284. package/src/documents/document-comments-store.ts +237 -0
  285. package/src/documents/document-store.ts +202 -0
  286. package/src/events/relationship-state-updated.ts +25 -0
  287. package/src/heartbeat/__tests__/heartbeat-service.test.ts +1 -2
  288. package/src/heartbeat/heartbeat-service.ts +1 -0
  289. package/src/home/__tests__/suggested-prompts.test.ts +33 -2
  290. package/src/home/feed-types.ts +6 -1
  291. package/src/home/home-content-refresh.ts +52 -0
  292. package/src/home/home-greeting-cache.ts +69 -0
  293. package/src/home/home-greeting.ts +85 -0
  294. package/src/home/suggested-prompts.ts +168 -9
  295. package/src/ipc/gateway-flag-listener.ts +123 -0
  296. package/src/ipc/skill-routes/registries.ts +8 -12
  297. package/src/memory/__tests__/db-async-query.test.ts +165 -0
  298. package/src/memory/__tests__/db-maintenance.test.ts +115 -0
  299. package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +241 -0
  300. package/src/memory/__tests__/jobs-store-job-classes.test.ts +28 -1
  301. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +135 -2
  302. package/src/memory/__tests__/memory-retrospective-job.test.ts +327 -6
  303. package/src/memory/auto-analysis-enqueue.ts +5 -1
  304. package/src/memory/conversation-crud.ts +191 -100
  305. package/src/memory/conversation-starters-cadence.ts +3 -1
  306. package/src/memory/conversation-title-service.ts +19 -3
  307. package/src/memory/db-async-query.ts +214 -0
  308. package/src/memory/db-init.ts +26 -0
  309. package/src/memory/db-maintenance.ts +30 -21
  310. package/src/memory/delivery-crud.ts +41 -0
  311. package/src/memory/delivery-status.ts +141 -15
  312. package/src/memory/external-conversation-store.ts +32 -1
  313. package/src/memory/graph/bootstrap.ts +8 -1
  314. package/src/memory/graph/capability-seed.ts +7 -3
  315. package/src/memory/graph/conversation-graph-memory.ts +100 -17
  316. package/src/memory/graph/extraction.ts +1 -5
  317. package/src/memory/graph/graph-search.ts +7 -1
  318. package/src/memory/indexer.ts +28 -18
  319. package/src/memory/job-handlers/cleanup.ts +76 -18
  320. package/src/memory/job-handlers/conversation-starters.ts +1 -4
  321. package/src/memory/jobs/embed-pkb-file.ts +6 -1
  322. package/src/memory/jobs-store.ts +14 -0
  323. package/src/memory/jobs-worker.ts +68 -15
  324. package/src/memory/llm-request-log-source-clickhouse.ts +42 -2
  325. package/src/memory/llm-request-log-source-local.ts +7 -0
  326. package/src/memory/llm-request-log-source.ts +9 -2
  327. package/src/memory/llm-request-log-store.ts +43 -1
  328. package/src/memory/llm-usage-store.ts +24 -0
  329. package/src/memory/memory-retrospective-constants.ts +28 -0
  330. package/src/memory/memory-retrospective-enqueue.ts +11 -3
  331. package/src/memory/memory-retrospective-job.ts +413 -18
  332. package/src/memory/memory-retrospective-startup-cleanup.ts +3 -3
  333. package/src/memory/memory-v2-activation-log-store.ts +41 -14
  334. package/src/memory/migrations/100-core-tables.ts +1 -0
  335. package/src/memory/migrations/109-external-conversation-bindings.ts +1 -0
  336. package/src/memory/migrations/253-conversation-last-notified-profile.ts +15 -0
  337. package/src/memory/migrations/253-document-comments.ts +47 -0
  338. package/src/memory/migrations/254-external-conversation-binding-chat-name.ts +43 -0
  339. package/src/memory/migrations/255-channel-inbound-delivery-attempts.ts +24 -0
  340. package/src/memory/migrations/256-memory-v2-injection-events.ts +113 -0
  341. package/src/memory/migrations/257-strip-base-url-non-openai-compatible.ts +22 -0
  342. package/src/memory/migrations/258-onboarding-events-prior-assistants.ts +13 -0
  343. package/src/memory/migrations/259-conversation-cleaned-at.ts +33 -0
  344. package/src/memory/migrations/260-rename-cleaned-at.ts +44 -0
  345. package/src/memory/migrations/261-llm-usage-add-raw-usage.ts +36 -0
  346. package/src/memory/migrations/262-memory-v3-coactivation.ts +57 -0
  347. package/src/memory/migrations/263-memory-v3-auto-edges.ts +50 -0
  348. package/src/memory/migrations/264-llm-request-log-call-site.ts +29 -0
  349. package/src/memory/migrations/index.ts +34 -0
  350. package/src/memory/migrations/registry.ts +58 -0
  351. package/src/memory/onboarding-events-store.ts +7 -0
  352. package/src/memory/schema/calls.ts +1 -0
  353. package/src/memory/schema/conversations.ts +3 -0
  354. package/src/memory/schema/infrastructure.ts +22 -0
  355. package/src/memory/tool-usage-store.ts +36 -8
  356. package/src/memory/v2/__tests__/consolidation-job.test.ts +1 -0
  357. package/src/memory/v2/__tests__/harness-compare.test.ts +186 -0
  358. package/src/memory/v2/__tests__/harness-metrics.test.ts +74 -0
  359. package/src/memory/v2/__tests__/harness-oracle.test.ts +257 -0
  360. package/src/memory/v2/__tests__/harness-replay-input.test.ts +225 -0
  361. package/src/memory/v2/__tests__/harness-runner.test.ts +109 -0
  362. package/src/memory/v2/__tests__/injection-events.test.ts +318 -0
  363. package/src/memory/v2/__tests__/injection.test.ts +158 -112
  364. package/src/memory/v2/__tests__/page-index.test.ts +365 -1
  365. package/src/memory/v2/__tests__/qdrant.test.ts +36 -0
  366. package/src/memory/v2/__tests__/router.test.ts +660 -4
  367. package/src/memory/v2/consolidation-job.ts +14 -0
  368. package/src/memory/v2/harness/compare.ts +57 -0
  369. package/src/memory/v2/harness/metrics.ts +124 -0
  370. package/src/memory/v2/harness/oracle.ts +145 -0
  371. package/src/memory/v2/harness/replay-input.ts +224 -0
  372. package/src/memory/v2/harness/retriever.ts +74 -0
  373. package/src/memory/v2/harness/router-retriever.ts +43 -0
  374. package/src/memory/v2/harness/runner.ts +106 -0
  375. package/src/memory/v2/harness/trace.ts +58 -0
  376. package/src/memory/v2/injection-events.ts +101 -0
  377. package/src/memory/v2/injection.ts +42 -25
  378. package/src/memory/v2/page-index.ts +209 -7
  379. package/src/memory/v2/page-store.ts +18 -0
  380. package/src/memory/v2/prompts/router.ts +26 -1
  381. package/src/memory/v2/qdrant.ts +14 -2
  382. package/src/memory/v2/router.ts +369 -62
  383. package/src/memory/v3/__tests__/coactivation-store.test.ts +422 -0
  384. package/src/memory/v3/__tests__/consolidation-job.test.ts +468 -0
  385. package/src/memory/v3/__tests__/edge-learning-job.test.ts +324 -0
  386. package/src/memory/v3/__tests__/edges.test.ts +563 -0
  387. package/src/memory/v3/__tests__/filter.test.ts +512 -0
  388. package/src/memory/v3/__tests__/gate.test.ts +574 -0
  389. package/src/memory/v3/__tests__/index-composition.test.ts +233 -0
  390. package/src/memory/v3/__tests__/loop.test.ts +530 -0
  391. package/src/memory/v3/__tests__/retriever.test.ts +226 -0
  392. package/src/memory/v3/__tests__/scouts.test.ts +440 -0
  393. package/src/memory/v3/__tests__/shadow-middleware.test.ts +312 -0
  394. package/src/memory/v3/__tests__/system-prompts.test.ts +154 -0
  395. package/src/memory/v3/__tests__/traversal.test.ts +469 -0
  396. package/src/memory/v3/__tests__/tree-index.test.ts +280 -0
  397. package/src/memory/v3/__tests__/tree-store.test.ts +529 -0
  398. package/src/memory/v3/__tests__/tree-walk.test.ts +707 -0
  399. package/src/memory/v3/__tests__/validate.test.ts +245 -0
  400. package/src/memory/v3/auto-edges.ts +223 -0
  401. package/src/memory/v3/coactivation-store.ts +124 -0
  402. package/src/memory/v3/consolidation-job.ts +323 -0
  403. package/src/memory/v3/edge-learning-job.ts +160 -0
  404. package/src/memory/v3/edges.ts +249 -0
  405. package/src/memory/v3/filter.ts +281 -0
  406. package/src/memory/v3/gate.ts +334 -0
  407. package/src/memory/v3/index-composition.ts +113 -0
  408. package/src/memory/v3/llm-capture.ts +46 -0
  409. package/src/memory/v3/loop.ts +382 -0
  410. package/src/memory/v3/maintenance.ts +144 -0
  411. package/src/memory/v3/prompt-context.ts +33 -0
  412. package/src/memory/v3/prompts/consolidation.ts +458 -0
  413. package/src/memory/v3/prompts/system-prompts.ts +196 -0
  414. package/src/memory/v3/retriever.ts +33 -0
  415. package/src/memory/v3/scouts.ts +420 -0
  416. package/src/memory/v3/shadow-middleware.ts +305 -0
  417. package/src/memory/v3/traversal.ts +206 -0
  418. package/src/memory/v3/tree-index.ts +237 -0
  419. package/src/memory/v3/tree-store.ts +394 -0
  420. package/src/memory/v3/tree-walk.ts +351 -0
  421. package/src/memory/v3/types.ts +65 -0
  422. package/src/memory/v3/validate.ts +300 -0
  423. package/src/messaging/providers/index.ts +7 -1
  424. package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +329 -3
  425. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +34 -1
  426. package/src/messaging/providers/slack/adapter.ts +178 -25
  427. package/src/messaging/providers/slack/api.test.ts +54 -0
  428. package/src/messaging/providers/slack/api.ts +119 -3
  429. package/src/messaging/providers/slack/client.ts +12 -0
  430. package/src/messaging/providers/slack/deep-link.ts +20 -1
  431. package/src/messaging/providers/slack/message-metadata.test.ts +48 -0
  432. package/src/messaging/providers/slack/message-metadata.ts +156 -0
  433. package/src/messaging/providers/slack/render-transcript.test.ts +107 -75
  434. package/src/messaging/providers/slack/render-transcript.ts +176 -49
  435. package/src/messaging/providers/slack/send.test.ts +77 -0
  436. package/src/messaging/providers/slack/send.ts +8 -2
  437. package/src/messaging/providers/slack/types.ts +14 -0
  438. package/src/notifications/__tests__/emit-signal-home-feed.test.ts +4 -1
  439. package/src/notifications/__tests__/home-feed-side-effect.test.ts +116 -54
  440. package/src/notifications/adapters/macos.ts +18 -1
  441. package/src/notifications/adapters/platform.ts +1 -1
  442. package/src/notifications/conversation-seed-composer.ts +14 -2
  443. package/src/notifications/decision-engine.ts +1 -4
  444. package/src/notifications/deferred-emit.ts +135 -0
  445. package/src/notifications/emit-signal.ts +38 -50
  446. package/src/notifications/home-feed-side-effect.ts +60 -30
  447. package/src/oauth/connect-orchestrator.ts +3 -0
  448. package/src/oauth/credential-token-resolver.ts +2 -0
  449. package/src/oauth/manual-token-connection.ts +19 -0
  450. package/src/oauth/oauth-store.ts +12 -0
  451. package/src/oauth/seed-providers.ts +22 -0
  452. package/src/permissions/prompter.ts +8 -5
  453. package/src/permissions/question-prompter.ts +5 -2
  454. package/src/permissions/secret-prompter.ts +6 -3
  455. package/src/plugin-api/index.ts +4 -0
  456. package/src/plugin-api/types.ts +7 -33
  457. package/src/plugins/defaults/index.ts +6 -0
  458. package/src/plugins/defaults/injectors.ts +100 -20
  459. package/src/plugins/external-plugin-loader.ts +5 -68
  460. package/src/plugins/types.ts +11 -16
  461. package/src/proactive-artifact/aux-message-injector.ts +17 -4
  462. package/src/prompts/__tests__/system-prompt.test.ts +46 -2
  463. package/src/prompts/__tests__/task-progress-hint-section.test.ts +3 -9
  464. package/src/prompts/normalize-onboarding.ts +40 -0
  465. package/src/prompts/persona-resolver.ts +36 -21
  466. package/src/prompts/sections.ts +69 -19
  467. package/src/prompts/system-prompt.ts +118 -216
  468. package/src/prompts/template-detection.ts +37 -0
  469. package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +141 -0
  470. package/src/prompts/templates/BOOTSTRAP.md +10 -2
  471. package/src/prompts/templates/VOICE.md +3 -0
  472. package/src/prompts/templates/system-sections.ts +281 -9
  473. package/src/providers/__tests__/connection-model-compat.test.ts +234 -0
  474. package/src/providers/__tests__/retry-callsite.test.ts +85 -5
  475. package/src/providers/anthropic/client.ts +159 -66
  476. package/src/providers/call-site-routing.ts +14 -2
  477. package/src/providers/connection-model-compat.ts +38 -0
  478. package/src/providers/connection-resolution.ts +16 -2
  479. package/src/providers/fireworks/client.ts +20 -2
  480. package/src/providers/gemini/client.ts +49 -6
  481. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +342 -0
  482. package/src/providers/inference/__tests__/base-url-security.test.ts +189 -0
  483. package/src/providers/inference/__tests__/codex-token-refresh.test.ts +254 -0
  484. package/src/providers/inference/adapter-factory.ts +18 -1
  485. package/src/providers/inference/auth.ts +3 -3
  486. package/src/providers/inference/codex-token-refresh.ts +128 -0
  487. package/src/providers/inference/resolve-auth.ts +49 -6
  488. package/src/providers/minimax/client.ts +106 -0
  489. package/src/providers/model-catalog.ts +91 -1
  490. package/src/providers/model-intents.ts +1 -1
  491. package/src/providers/openai/chat-completions-provider.ts +63 -23
  492. package/src/providers/openai/codex-models.ts +18 -0
  493. package/src/providers/openai/responses-provider.ts +86 -23
  494. package/src/providers/openrouter/client.ts +5 -1
  495. package/src/providers/provider-send-message.ts +7 -1
  496. package/src/providers/retry.ts +34 -3
  497. package/src/providers/thinking-config.ts +26 -1
  498. package/src/providers/types.ts +25 -0
  499. package/src/providers/usage-tracking.ts +2 -0
  500. package/src/runtime/AGENTS.md +2 -2
  501. package/src/runtime/__tests__/agent-wake.test.ts +214 -0
  502. package/src/runtime/__tests__/background-job-runner.test.ts +128 -0
  503. package/src/runtime/agent-wake.ts +152 -56
  504. package/src/runtime/assistant-event-hub.ts +76 -6
  505. package/src/runtime/auth/route-policy.ts +43 -3
  506. package/src/runtime/background-job-runner.ts +26 -0
  507. package/src/runtime/btw-sidechain.ts +0 -6
  508. package/src/runtime/channel-reply-delivery.ts +182 -47
  509. package/src/runtime/channel-retry-sweep.ts +141 -16
  510. package/src/runtime/http-types.ts +7 -6
  511. package/src/runtime/migrations/vbundle-builder.ts +10 -3
  512. package/src/runtime/pending-interactions.ts +50 -8
  513. package/src/runtime/routes/__tests__/content-source-routes.test.ts +162 -0
  514. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +161 -1
  515. package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +14 -0
  516. package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +290 -0
  517. package/src/runtime/routes/__tests__/plugins-routes.test.ts +512 -0
  518. package/src/runtime/routes/__tests__/sanity-routes.test.ts +280 -0
  519. package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +266 -0
  520. package/src/runtime/routes/acp-routes.test.ts +255 -6
  521. package/src/runtime/routes/acp-routes.ts +8 -1
  522. package/src/runtime/routes/approval-routes.ts +4 -1
  523. package/src/runtime/routes/avatar-routes.ts +10 -10
  524. package/src/runtime/routes/background-wake-routes.ts +188 -0
  525. package/src/runtime/routes/browser-tabs-routes.ts +200 -0
  526. package/src/runtime/routes/btw-routes.ts +0 -6
  527. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +246 -0
  528. package/src/runtime/routes/content-source-routes.ts +78 -0
  529. package/src/runtime/routes/conversation-cli-routes.ts +147 -2
  530. package/src/runtime/routes/conversation-list-routes.ts +12 -4
  531. package/src/runtime/routes/conversation-management-routes.ts +77 -20
  532. package/src/runtime/routes/conversation-query-routes.ts +196 -31
  533. package/src/runtime/routes/conversation-routes.ts +472 -425
  534. package/src/runtime/routes/conversation-starter-routes.ts +6 -3
  535. package/src/runtime/routes/disk-pressure-routes.ts +1 -1
  536. package/src/runtime/routes/document-comments-routes.ts +287 -0
  537. package/src/runtime/routes/documents-routes.ts +33 -0
  538. package/src/runtime/routes/domain-routes.ts +60 -10
  539. package/src/runtime/routes/email-routes.ts +5 -2
  540. package/src/runtime/routes/events-routes.ts +54 -10
  541. package/src/runtime/routes/group-routes.ts +24 -8
  542. package/src/runtime/routes/home-feed-routes.ts +6 -3
  543. package/src/runtime/routes/host-app-control-routes.ts +1 -1
  544. package/src/runtime/routes/host-browser-routes.ts +17 -2
  545. package/src/runtime/routes/host-cu-routes.ts +2 -2
  546. package/src/runtime/routes/identity-routes.ts +21 -0
  547. package/src/runtime/routes/inbound-message-handler.ts +288 -58
  548. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +96 -3
  549. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +365 -6
  550. package/src/runtime/routes/inbound-stages/background-dispatch.ts +283 -82
  551. package/src/runtime/routes/index.ts +20 -4
  552. package/src/runtime/routes/inference-profile-session-handler.ts +22 -12
  553. package/src/runtime/routes/inference-profile-session-routes.ts +7 -1
  554. package/src/runtime/routes/inference-provider-connection-routes.ts +63 -7
  555. package/src/runtime/routes/integrations/a2a.ts +60 -1
  556. package/src/runtime/routes/llm-call-sites-routes.ts +32 -5
  557. package/src/runtime/routes/log-export-routes.ts +39 -0
  558. package/src/runtime/routes/memory-item-routes.ts +8 -3
  559. package/src/runtime/routes/memory-v2-routes.ts +427 -0
  560. package/src/runtime/routes/memory-v3-routes.ts +316 -0
  561. package/src/runtime/routes/migration-routes.ts +21 -24
  562. package/src/runtime/routes/notification-routes.ts +19 -2
  563. package/src/runtime/routes/plugins-routes.ts +337 -0
  564. package/src/runtime/routes/question-routes.ts +4 -1
  565. package/src/runtime/routes/rename-conversation-routes.ts +6 -2
  566. package/src/runtime/routes/sanity-routes.ts +159 -0
  567. package/src/runtime/routes/secret-routes.ts +25 -5
  568. package/src/runtime/routes/settings-routes.ts +12 -11
  569. package/src/runtime/routes/slack-channel-routes.ts +188 -0
  570. package/src/runtime/routes/workspace-routes.ts +25 -10
  571. package/src/runtime/services/conversation-serializer.ts +30 -4
  572. package/src/runtime/sync/resource-sync-events.ts +106 -38
  573. package/src/runtime/sync/sync-publisher.test.ts +49 -0
  574. package/src/runtime/sync/sync-publisher.ts +2 -1
  575. package/src/runtime/verification-outbound-actions.ts +73 -1
  576. package/src/schedule/integration-status.ts +3 -1
  577. package/src/security/__tests__/oauth2-device-code.test.ts +479 -0
  578. package/src/security/oauth2-device-code.ts +307 -0
  579. package/src/security/oauth2.ts +26 -9
  580. package/src/security/secure-keys.ts +5 -0
  581. package/src/skills/catalog-install.ts +6 -2
  582. package/src/telemetry/types.ts +12 -0
  583. package/src/telemetry/usage-telemetry-reporter.test.ts +48 -0
  584. package/src/telemetry/usage-telemetry-reporter.ts +1 -0
  585. package/src/tools/acp/spawn.test.ts +119 -0
  586. package/src/tools/acp/spawn.ts +15 -2
  587. package/src/tools/apps/definitions.ts +2 -8
  588. package/src/tools/ask-question/ask-question-tool.test.ts +3 -3
  589. package/src/tools/ask-question/ask-question-tool.ts +38 -45
  590. package/src/tools/browser/__tests__/pinned-tabs.test.ts +150 -0
  591. package/src/tools/browser/browser-execution.ts +106 -0
  592. package/src/tools/browser/cdp-client/__tests__/browser-tabs-factory.test.ts +402 -0
  593. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +28 -0
  594. package/src/tools/browser/cdp-client/__tests__/types.test.ts +4 -0
  595. package/src/tools/browser/cdp-client/cdp-inspect-client.ts +22 -0
  596. package/src/tools/browser/cdp-client/extension-cdp-client.ts +42 -2
  597. package/src/tools/browser/cdp-client/factory.ts +171 -4
  598. package/src/tools/browser/cdp-client/local-cdp-client.ts +21 -0
  599. package/src/tools/browser/cdp-client/types.ts +101 -0
  600. package/src/tools/browser/pinned-tabs.ts +146 -0
  601. package/src/tools/computer-use/definitions.ts +22 -78
  602. package/src/tools/credential-execution/make-authenticated-request.ts +3 -9
  603. package/src/tools/credential-execution/manage-secure-command-tool.ts +3 -9
  604. package/src/tools/credential-execution/run-authenticated-command.ts +3 -9
  605. package/src/tools/credentials/vault.ts +3 -9
  606. package/src/tools/document/document-comment-tool.test.ts +379 -0
  607. package/src/tools/document/document-comment-tool.ts +156 -0
  608. package/src/tools/document/document-tool.ts +187 -2
  609. package/src/tools/execution-target.ts +21 -23
  610. package/src/tools/executor.ts +6 -1
  611. package/src/tools/filesystem/edit.ts +3 -9
  612. package/src/tools/filesystem/list.ts +3 -9
  613. package/src/tools/filesystem/read.ts +3 -9
  614. package/src/tools/filesystem/write.ts +3 -9
  615. package/src/tools/host-filesystem/edit.ts +3 -9
  616. package/src/tools/host-filesystem/read.ts +3 -9
  617. package/src/tools/host-filesystem/transfer.ts +3 -9
  618. package/src/tools/host-filesystem/write.ts +3 -9
  619. package/src/tools/host-terminal/host-shell.ts +3 -9
  620. package/src/tools/mcp/mcp-tool-factory.ts +1 -8
  621. package/src/tools/memory/register.test.ts +1 -1
  622. package/src/tools/memory/register.ts +4 -9
  623. package/src/tools/network/__tests__/web-fetch-metadata.test.ts +229 -0
  624. package/src/tools/network/__tests__/web-search-metadata.test.ts +346 -0
  625. package/src/tools/network/domain-normalize.ts +17 -0
  626. package/src/tools/network/web-fetch.ts +216 -73
  627. package/src/tools/network/web-search.ts +216 -98
  628. package/src/tools/registry.ts +7 -23
  629. package/src/tools/schema-transforms.ts +1 -1
  630. package/src/tools/skills/execute.ts +3 -9
  631. package/src/tools/skills/load.ts +3 -9
  632. package/src/tools/skills/skill-tool-factory.ts +1 -8
  633. package/src/tools/subagent/notify-parent.ts +3 -9
  634. package/src/tools/system/request-permission.ts +3 -9
  635. package/src/tools/terminal/safe-env.ts +3 -2
  636. package/src/tools/terminal/shell.ts +3 -9
  637. package/src/tools/tool-approval-handler.ts +19 -12
  638. package/src/tools/tool-defaults.ts +94 -0
  639. package/src/tools/types.ts +31 -98
  640. package/src/tools/ui-surface/definitions.ts +9 -23
  641. package/src/types/onboarding-context.ts +4 -0
  642. package/src/usage/pricing.ts +23 -0
  643. package/src/usage/types.ts +12 -0
  644. package/src/util/__tests__/favicon.test.ts +84 -0
  645. package/src/util/favicon.ts +40 -0
  646. package/src/util/logger.ts +16 -7
  647. package/src/util/platform.ts +7 -7
  648. package/src/util/sqlite3-runtime.ts +65 -0
  649. package/src/workspace/git-service.ts +75 -4
  650. package/src/workspace/migrations/086-revert-stale-gemini-mis-rewrites.ts +1 -0
  651. package/src/workspace/migrations/088-deprecate-background-conversation-override.ts +103 -0
  652. package/src/workspace/migrations/089-move-memory-tree-out-of-v3.ts +86 -0
  653. package/src/workspace/migrations/registry.ts +4 -0
  654. package/src/__tests__/compaction-strip-metadata-clear.test.ts +0 -206
  655. package/src/__tests__/message-complete-display-id.test.ts +0 -175
  656. package/src/config/bundled-skills/document/SKILL.md +0 -54
  657. package/src/config/bundled-skills/document/TOOLS.json +0 -106
  658. package/src/daemon/seed-files.ts +0 -18
  659. package/src/prompts/cache-boundary.ts +0 -8
  660. package/src/runtime/routes/interface-routes.ts +0 -43
  661. /package/src/config/bundled-skills/{document → document-editor}/tools/document-create.ts +0 -0
  662. /package/src/config/bundled-skills/{document → document-editor}/tools/document-delete.ts +0 -0
  663. /package/src/config/bundled-skills/{document → document-editor}/tools/document-list.ts +0 -0
  664. /package/src/config/bundled-skills/{document → document-editor}/tools/document-read.ts +0 -0
  665. /package/src/config/bundled-skills/{document → document-editor}/tools/document-update.ts +0 -0
@@ -12,9 +12,14 @@ import { findGuardianForChannel } from "../../../contacts/contact-store.js";
12
12
  import type { ServerMessage } from "../../../daemon/message-protocol.js";
13
13
  import type { TrustContext } from "../../../daemon/trust-context.js";
14
14
  import { updateDeliveredSegmentCount } from "../../../memory/delivery-channels.js";
15
- import { linkMessage } from "../../../memory/delivery-crud.js";
16
15
  import {
16
+ linkMessage,
17
+ storeReplyMessageId,
18
+ } from "../../../memory/delivery-crud.js";
19
+ import {
20
+ markDeliveryDelivered,
17
21
  markProcessed,
22
+ recordDeliveryFailure,
18
23
  recordProcessingFailure,
19
24
  } from "../../../memory/delivery-status.js";
20
25
  import {
@@ -76,7 +81,6 @@ export interface BackgroundProcessingParams {
76
81
  externalChatId: string;
77
82
  trustCtx: TrustContext;
78
83
  metadataHints: string[];
79
- slackRuntimeContextNotice?: string;
80
84
  metadataUxBrief?: string;
81
85
  replyCallbackUrl?: string;
82
86
  assistantId?: string;
@@ -85,6 +89,8 @@ export interface BackgroundProcessingParams {
85
89
  sourceLanguageCode?: string;
86
90
  /** Chat type from the gateway (e.g. "private", "group", "supergroup"). */
87
91
  chatType?: string;
92
+ /** IANA timezone reported by the active client for the current turn. */
93
+ clientTimezone?: string;
88
94
  /** Slack app_mention/direct bot mention signal from the gateway. */
89
95
  slackBotMentioned?: boolean;
90
96
  /**
@@ -114,7 +120,6 @@ export function processChannelMessageInBackground(
114
120
  externalChatId,
115
121
  trustCtx,
116
122
  metadataHints,
117
- slackRuntimeContextNotice,
118
123
  metadataUxBrief,
119
124
  replyCallbackUrl,
120
125
  assistantId,
@@ -122,6 +127,7 @@ export function processChannelMessageInBackground(
122
127
  commandIntent,
123
128
  sourceLanguageCode,
124
129
  chatType,
130
+ clientTimezone,
125
131
  slackBotMentioned,
126
132
  slackInbound,
127
133
  } = params;
@@ -190,8 +196,10 @@ export function processChannelMessageInBackground(
190
196
  // rejected as already-processing and our update would erase that
191
197
  // in-flight turn's mapping. Snapshot the prior state here and restore
192
198
  // it in the `already processing` rejection path below.
193
- let priorSlackMapping: { threadTs: string; channelId: string } | null =
194
- null;
199
+ let priorSlackMapping: {
200
+ threadTs: string;
201
+ channelId: string;
202
+ } | null = null;
195
203
  let slackMappingMutated = false;
196
204
  if (sourceChannel === "slack" && replyCallbackUrl) {
197
205
  priorSlackMapping = peekThreadMapping(conversationId);
@@ -219,76 +227,103 @@ export function processChannelMessageInBackground(
219
227
  : {}),
220
228
  }
221
229
  : undefined;
222
- const { messageId: userMessageId } = await processMessage(
223
- conversationId,
224
- content,
225
- attachmentIds,
226
- {
227
- transport: {
228
- channelId: sourceChannel,
229
- hints: metadataHints.length > 0 ? metadataHints : undefined,
230
- uxBrief: metadataUxBrief,
231
- chatType,
232
- },
233
- assistantId,
234
- trustContext: trustCtx,
235
- isInteractive: resolveRoutingState(trustCtx).promptWaitingAllowed,
236
- ...(displayContent !== undefined ? { displayContent } : {}),
237
- ...(cmdIntent ? { commandIntent: cmdIntent } : {}),
238
- ...(slackRuntimeContextNotice ? { slackRuntimeContextNotice } : {}),
239
- ...(slackInbound ? { slackInbound } : {}),
240
- ...(slackThinkingStatus
241
- ? {
242
- onEvent: (msg: ServerMessage) =>
243
- slackThinkingStatus.observeEvent(msg),
244
- }
245
- : {}),
246
- },
247
- sourceChannel,
248
- sourceInterface,
249
- );
250
- linkMessage(eventId, userMessageId);
251
- markProcessed(eventId);
230
+ let replyMessageId: string | undefined;
231
+ const observeAgentEvent = (msg: ServerMessage): void => {
232
+ if (
233
+ msg.type === "message_complete" &&
234
+ (msg.source === undefined || msg.source === "main") &&
235
+ typeof msg.messageId === "string"
236
+ ) {
237
+ replyMessageId = msg.messageId;
238
+ }
239
+ slackThinkingStatus?.observeEvent(msg);
240
+ };
252
241
 
253
- if (replyCallbackUrl) {
254
- await deliverReplyViaCallback(
242
+ let userMessageId: string | undefined;
243
+ try {
244
+ const result = await processMessage(
255
245
  conversationId,
256
- externalChatId,
257
- replyCallbackUrl,
258
- assistantId,
246
+ content,
247
+ attachmentIds,
259
248
  {
260
- onSegmentDelivered: (count) =>
261
- updateDeliveredSegmentCount(eventId, count),
249
+ transport: {
250
+ channelId: sourceChannel,
251
+ hints: metadataHints.length > 0 ? metadataHints : undefined,
252
+ uxBrief: metadataUxBrief,
253
+ chatType,
254
+ ...(clientTimezone ? { clientTimezone } : {}),
255
+ },
256
+ assistantId,
257
+ trustContext: trustCtx,
258
+ isInteractive: resolveRoutingState(trustCtx).promptWaitingAllowed,
259
+ ...(displayContent !== undefined ? { displayContent } : {}),
260
+ ...(cmdIntent ? { commandIntent: cmdIntent } : {}),
261
+ ...(slackInbound ? { slackInbound } : {}),
262
+ onEvent: observeAgentEvent,
262
263
  },
264
+ sourceChannel,
265
+ sourceInterface,
266
+ );
267
+ userMessageId = result.messageId;
268
+ linkMessage(eventId, userMessageId);
269
+ markProcessed(eventId);
270
+ replyMessageId ??= result.assistantMessageId;
271
+ if (replyMessageId) {
272
+ storeReplyMessageId(eventId, replyMessageId);
273
+ }
274
+ } catch (err) {
275
+ // When another turn is already processing this conversation,
276
+ // `prepareConversationForMessage` throws before any of this turn's
277
+ // work runs. Our pre-await mapping update would otherwise stomp the
278
+ // in-flight turn's mapping, causing its outbound persistence to
279
+ // record `slackMeta` with the wrong (or missing) `threadTs`. Restore
280
+ // the snapshot so the in-flight turn sees the mapping it installed.
281
+ if (
282
+ slackMappingMutated &&
283
+ err instanceof Error &&
284
+ err.message.includes("already processing a message")
285
+ ) {
286
+ if (priorSlackMapping) {
287
+ setThreadTs(
288
+ conversationId,
289
+ priorSlackMapping.channelId,
290
+ priorSlackMapping.threadTs,
291
+ );
292
+ } else {
293
+ clearThreadTs(conversationId);
294
+ }
295
+ }
296
+ log.error(
297
+ { err, conversationId },
298
+ "Background channel message processing failed",
263
299
  );
300
+ recordProcessingFailure(eventId, err);
301
+ return;
264
302
  }
265
- } catch (err) {
266
- // When another turn is already processing this conversation,
267
- // `prepareConversationForMessage` throws before any of this turn's
268
- // work runs. Our pre-await mapping update would otherwise stomp the
269
- // in-flight turn's mapping, causing its outbound persistence to
270
- // record `slackMeta` with the wrong (or missing) `threadTs`. Restore
271
- // the snapshot so the in-flight turn sees the mapping it installed.
272
- if (
273
- slackMappingMutated &&
274
- err instanceof Error &&
275
- err.message.includes("already processing a message")
276
- ) {
277
- if (priorSlackMapping) {
278
- setThreadTs(
303
+
304
+ if (replyCallbackUrl) {
305
+ try {
306
+ await deliverReplyViaCallback(
279
307
  conversationId,
280
- priorSlackMapping.channelId,
281
- priorSlackMapping.threadTs,
308
+ externalChatId,
309
+ replyCallbackUrl,
310
+ assistantId,
311
+ {
312
+ messageId: replyMessageId,
313
+ sinceMessageId: userMessageId,
314
+ onSegmentDelivered: (count) =>
315
+ updateDeliveredSegmentCount(eventId, count),
316
+ },
317
+ );
318
+ markDeliveryDelivered(eventId);
319
+ } catch (err) {
320
+ log.error(
321
+ { err, conversationId },
322
+ "Background channel reply delivery failed",
282
323
  );
283
- } else {
284
- clearThreadTs(conversationId);
324
+ recordDeliveryFailure(eventId, err);
285
325
  }
286
326
  }
287
- log.error(
288
- { err, conversationId },
289
- "Background channel message processing failed",
290
- );
291
- recordProcessingFailure(eventId, err);
292
327
  } finally {
293
328
  stopTypingHeartbeat?.();
294
329
  slackThinkingStatus?.stop();
@@ -363,6 +398,20 @@ type SlackThinkingStatusController = {
363
398
  stop: () => void;
364
399
  };
365
400
 
401
+ type SlackThinkingStatusHandle = {
402
+ updateLoadingMessages: (loadingMessages?: string[]) => void;
403
+ clear: () => void;
404
+ };
405
+
406
+ type TaskProgressStep = {
407
+ label: string;
408
+ status: "pending" | "in_progress" | "completed" | "failed";
409
+ };
410
+
411
+ type TaskProgressData = {
412
+ steps: TaskProgressStep[];
413
+ };
414
+
366
415
  const NO_RESPONSE_RE = /^\s*<no_response\s*\/?>\s*$/i;
367
416
  const NO_RESPONSE_INLINE_RE = /<no_response\s*\/?>/gi;
368
417
  const NO_RESPONSE_SENTINEL_FORMS = [
@@ -431,16 +480,51 @@ function createSlackThinkingStatusController(params: {
431
480
  const callbackUrl = replyCallbackUrl;
432
481
 
433
482
  let stopped = false;
434
- let clearSlackThinkingStatus: (() => void) | undefined;
483
+ let slackThinkingStatus: SlackThinkingStatusHandle | undefined;
435
484
  let observedAssistantText = "";
485
+ let currentLoadingMessages: string[] | undefined = startImmediately
486
+ ? [...SLACK_GENERIC_LOADING_MESSAGES]
487
+ : undefined;
488
+ let lastSentLoadingMessageKey: string | undefined;
489
+ const taskProgressBySurfaceId = new Map<string, TaskProgressData>();
436
490
 
437
491
  const start = (): void => {
438
- if (stopped || clearSlackThinkingStatus) return;
439
- clearSlackThinkingStatus = setSlackThinkingStatus(
492
+ if (stopped || slackThinkingStatus) return;
493
+ slackThinkingStatus = setSlackThinkingStatus(
440
494
  callbackUrl,
441
495
  chatId,
442
496
  assistantId,
497
+ currentLoadingMessages,
443
498
  );
499
+ lastSentLoadingMessageKey = getLoadingMessagesKey(currentLoadingMessages);
500
+ };
501
+
502
+ const maybeUpdateLoadingMessages = (): void => {
503
+ const nextLoadingMessageKey = getLoadingMessagesKey(currentLoadingMessages);
504
+ if (nextLoadingMessageKey === lastSentLoadingMessageKey) return;
505
+ lastSentLoadingMessageKey = nextLoadingMessageKey;
506
+ slackThinkingStatus?.updateLoadingMessages(currentLoadingMessages);
507
+ };
508
+
509
+ const observeTaskProgress = (msg: ServerMessage): void => {
510
+ if (msg.type === "ui_surface_show") {
511
+ const progress = getTaskProgressDataFromSurfaceData(msg.data);
512
+ if (!progress) return;
513
+ taskProgressBySurfaceId.set(msg.surfaceId, progress);
514
+ } else if (msg.type === "ui_surface_update") {
515
+ const existing = taskProgressBySurfaceId.get(msg.surfaceId);
516
+ const progress = mergeTaskProgressData(existing, msg.data);
517
+ if (!progress) return;
518
+ taskProgressBySurfaceId.set(msg.surfaceId, progress);
519
+ } else {
520
+ return;
521
+ }
522
+
523
+ currentLoadingMessages =
524
+ getTaskProgressLoadingMessage(
525
+ taskProgressBySurfaceId.get(msg.surfaceId),
526
+ ) ?? [];
527
+ maybeUpdateLoadingMessages();
444
528
  };
445
529
 
446
530
  if (startImmediately) {
@@ -449,8 +533,14 @@ function createSlackThinkingStatusController(params: {
449
533
 
450
534
  return {
451
535
  observeEvent(msg) {
452
- if (stopped || clearSlackThinkingStatus) return;
453
- if (msg.type !== "assistant_text_delta") return;
536
+ if (stopped) return;
537
+
538
+ if (msg.type === "ui_surface_show" || msg.type === "ui_surface_update") {
539
+ observeTaskProgress(msg);
540
+ return;
541
+ }
542
+
543
+ if (slackThinkingStatus || msg.type !== "assistant_text_delta") return;
454
544
 
455
545
  observedAssistantText += msg.text;
456
546
  if (shouldStartSlackThinkingStatusForText(observedAssistantText)) {
@@ -459,16 +549,91 @@ function createSlackThinkingStatusController(params: {
459
549
  },
460
550
  stop() {
461
551
  stopped = true;
462
- clearSlackThinkingStatus?.();
552
+ slackThinkingStatus?.clear();
463
553
  },
464
554
  };
465
555
  }
466
556
 
467
557
  const SLACK_THINKING_MAX_DURATION_MS = 120_000;
558
+ const SLACK_GENERIC_LOADING_MESSAGES = ["Working on it..."] as const;
559
+ const SLACK_THINKING_STATUSES = ["is on it", "is working hard"] as const;
560
+
561
+ function getRandomSlackThinkingStatus(): string {
562
+ return SLACK_THINKING_STATUSES[
563
+ Math.floor(Math.random() * SLACK_THINKING_STATUSES.length)
564
+ ]!;
565
+ }
566
+
567
+ function getLoadingMessagesKey(loadingMessages?: string[]): string | undefined {
568
+ return loadingMessages?.join("\n");
569
+ }
570
+
571
+ function isRecord(value: unknown): value is Record<string, unknown> {
572
+ return typeof value === "object" && value !== null && !Array.isArray(value);
573
+ }
574
+
575
+ function getTaskProgressDataFromSurfaceData(
576
+ data: unknown,
577
+ ): TaskProgressData | undefined {
578
+ if (!isRecord(data)) return undefined;
579
+ if (data.template !== "task_progress") return undefined;
580
+ return parseTaskProgressData(data.templateData);
581
+ }
582
+
583
+ function parseTaskProgressData(value: unknown): TaskProgressData | undefined {
584
+ if (!isRecord(value) || !Array.isArray(value.steps)) return undefined;
585
+
586
+ const steps = value.steps.flatMap((step): TaskProgressStep[] => {
587
+ if (!isRecord(step)) return [];
588
+ if (typeof step.label !== "string") return [];
589
+ if (
590
+ step.status !== "pending" &&
591
+ step.status !== "in_progress" &&
592
+ step.status !== "completed" &&
593
+ step.status !== "failed"
594
+ ) {
595
+ return [];
596
+ }
597
+ return [{ label: step.label, status: step.status }];
598
+ });
599
+
600
+ return steps.length > 0 ? { steps } : undefined;
601
+ }
602
+
603
+ function mergeTaskProgressData(
604
+ existing: TaskProgressData | undefined,
605
+ data: unknown,
606
+ ): TaskProgressData | undefined {
607
+ if (!isRecord(data)) return existing;
608
+ const update = getTaskProgressDataFromSurfaceData(data);
609
+ if (update) return update;
610
+ if (!existing || !("templateData" in data)) return existing;
611
+
612
+ return parseTaskProgressData({
613
+ steps: existing.steps,
614
+ ...(isRecord(data.templateData) ? data.templateData : {}),
615
+ });
616
+ }
617
+
618
+ function getTaskProgressLoadingMessage(
619
+ progress: TaskProgressData | undefined,
620
+ ): string[] | undefined {
621
+ if (!progress) return undefined;
622
+
623
+ const activeStepIndex = progress.steps.findIndex(
624
+ (step) => step.status === "in_progress",
625
+ );
626
+ if (activeStepIndex < 0) return undefined;
627
+
628
+ const activeStep = progress.steps[activeStepIndex]!;
629
+ return [
630
+ `In progress (${activeStepIndex + 1}/${progress.steps.length}): ${activeStep.label}`,
631
+ ];
632
+ }
468
633
 
469
634
  /**
470
- * Set the Slack Assistants API "is thinking..." status on the thread and
471
- * return a cleanup function that clears it. Both operations are fire-and-forget.
635
+ * Set Slack Assistants API status on the thread and return a handle for
636
+ * updating loading messages or clearing the indicator.
472
637
  *
473
638
  * A safety timer auto-clears the status after {@link SLACK_THINKING_MAX_DURATION_MS}
474
639
  * to prevent a stuck indicator when `processMessage` hangs.
@@ -477,7 +642,8 @@ function setSlackThinkingStatus(
477
642
  callbackUrl: string,
478
643
  chatId: string,
479
644
  assistantId?: string,
480
- ): () => void {
645
+ loadingMessages?: string[],
646
+ ): SlackThinkingStatusHandle {
481
647
  let cleared = false;
482
648
 
483
649
  // Extract the thread timestamp from the callback URL so we can target
@@ -487,7 +653,12 @@ function setSlackThinkingStatus(
487
653
  // For non-threaded DMs, fall back to emoji reaction on the original message.
488
654
  if (!threadTs) {
489
655
  const messageTs = extractMessageTsFromCallbackUrl(callbackUrl);
490
- if (!messageTs) return () => {};
656
+ if (!messageTs) {
657
+ return {
658
+ updateLoadingMessages: () => {},
659
+ clear: () => {},
660
+ };
661
+ }
491
662
 
492
663
  const addPromise = deliverChannelReply(callbackUrl, {
493
664
  chatId,
@@ -500,7 +671,7 @@ function setSlackThinkingStatus(
500
671
  );
501
672
  });
502
673
 
503
- const clearReaction = () => {
674
+ const clearReaction = (): void => {
504
675
  if (cleared) return;
505
676
  cleared = true;
506
677
  clearTimeout(safetyTimer);
@@ -524,28 +695,55 @@ function setSlackThinkingStatus(
524
695
  );
525
696
  (safetyTimer as { unref?: () => void }).unref?.();
526
697
 
527
- return clearReaction;
698
+ return {
699
+ updateLoadingMessages: () => {},
700
+ clear: clearReaction,
701
+ };
528
702
  }
529
703
 
530
704
  // Track the set promise so clear waits for it to settle first,
531
705
  // preventing a race where clear arrives at Slack before set.
532
- const setPromise = deliverChannelReply(callbackUrl, {
706
+ let statusPromise = deliverChannelReply(callbackUrl, {
533
707
  chatId,
534
708
  assistantId,
535
709
  assistantThreadStatus: {
536
710
  channel: chatId,
537
711
  threadTs,
538
- status: "is thinking...",
712
+ status: getRandomSlackThinkingStatus(),
713
+ ...(loadingMessages ? { loadingMessages } : {}),
539
714
  },
540
715
  }).catch((err) => {
541
716
  log.debug({ err, chatId, threadTs }, "Failed to set Slack thinking status");
542
717
  });
543
718
 
544
- const clearStatus = () => {
719
+ const updateLoadingMessages = (nextLoadingMessages?: string[]): void => {
720
+ if (cleared) return;
721
+ statusPromise = statusPromise.then(() =>
722
+ deliverChannelReply(callbackUrl, {
723
+ chatId,
724
+ assistantId,
725
+ assistantThreadStatus: {
726
+ channel: chatId,
727
+ threadTs,
728
+ status: getRandomSlackThinkingStatus(),
729
+ ...(nextLoadingMessages
730
+ ? { loadingMessages: nextLoadingMessages }
731
+ : {}),
732
+ },
733
+ }).catch((err) => {
734
+ log.debug(
735
+ { err, chatId, threadTs },
736
+ "Failed to update Slack thinking status",
737
+ );
738
+ }),
739
+ );
740
+ };
741
+
742
+ const clearStatus = (): void => {
545
743
  if (cleared) return;
546
744
  cleared = true;
547
745
  clearTimeout(safetyTimer);
548
- void setPromise.then(() =>
746
+ void statusPromise.then(() =>
549
747
  deliverChannelReply(callbackUrl, {
550
748
  chatId,
551
749
  assistantId,
@@ -566,7 +764,10 @@ function setSlackThinkingStatus(
566
764
  const safetyTimer = setTimeout(clearStatus, SLACK_THINKING_MAX_DURATION_MS);
567
765
  (safetyTimer as { unref?: () => void }).unref?.();
568
766
 
569
- return clearStatus;
767
+ return {
768
+ updateLoadingMessages,
769
+ clear: clearStatus,
770
+ };
570
771
  }
571
772
 
572
773
  // ---------------------------------------------------------------------------
@@ -18,10 +18,12 @@ import { ROUTES as AUDIT_ROUTES } from "./audit-routes.js";
18
18
  import { ROUTES as AUTH_ROUTES } from "./auth-routes.js";
19
19
  import { ROUTES as AVATAR_ROUTES } from "./avatar-routes.js";
20
20
  import { ROUTES as BACKGROUND_TOOL_ROUTES } from "./background-tool-routes.js";
21
+ import { ROUTES as BACKGROUND_WAKE_ROUTES } from "./background-wake-routes.js";
21
22
  import { ROUTES as BACKUP_ROUTES } from "./backup-routes.js";
22
23
  import { ROUTES as BOOKMARK_ROUTES } from "./bookmark-routes.js";
23
24
  import { ROUTES as BRAIN_GRAPH_ROUTES } from "./brain-graph-routes.js";
24
25
  import { ROUTES as BROWSER_ROUTES } from "./browser-routes.js";
26
+ import { ROUTES as BROWSER_TABS_ROUTES } from "./browser-tabs-routes.js";
25
27
  import { ROUTES as BTW_ROUTES } from "./btw-routes.js";
26
28
  import { ROUTES as CACHE_ROUTES } from "./cache-routes.js";
27
29
  import { ROUTES as CALL_ROUTES } from "./call-routes.js";
@@ -29,10 +31,12 @@ import { ROUTES as CHANNEL_AVAILABILITY_ROUTES } from "./channel-availability-ro
29
31
  import { ROUTES as CHANNEL_READINESS_ROUTES } from "./channel-readiness-routes.js";
30
32
  import { CHANNEL_ROUTES } from "./channel-route-definitions.js";
31
33
  import { ROUTES as CHANNEL_VERIFICATION_ROUTES } from "./channel-verification-routes.js";
34
+ import { ROUTES as CHATGPT_SUBSCRIPTION_AUTH_ROUTES } from "./chatgpt-subscription-auth-routes.js";
32
35
  import { ROUTES as CLIENT_ROUTES } from "./client-routes.js";
33
36
  import { ROUTES as CONSOLIDATION_ROUTES } from "./consolidation-routes.js";
34
37
  import { CONTACT_PROMPT_ROUTES } from "./contact-prompt-routes.js";
35
38
  import { ROUTES as CONTACT_ROUTES } from "./contact-routes.js";
39
+ import { ROUTES as CONTENT_SOURCE_ROUTES } from "./content-source-routes.js";
36
40
  import { ROUTES as CONVERSATION_ANALYSIS_ROUTES } from "./conversation-analysis-routes.js";
37
41
  import { ROUTES as CONVERSATION_ATTENTION_ROUTES } from "./conversation-attention-routes.js";
38
42
  import { ROUTES as CONVERSATION_CLI_ROUTES } from "./conversation-cli-routes.js";
@@ -49,6 +53,7 @@ import { ROUTES as DEBUG_ROUTES } from "./debug-routes.js";
49
53
  import { ROUTES as DEFER_ROUTES } from "./defer-routes.js";
50
54
  import { ROUTES as DIAGNOSTICS_ROUTES } from "./diagnostics-routes.js";
51
55
  import { ROUTES as DISK_PRESSURE_ROUTES } from "./disk-pressure-routes.js";
56
+ import { ROUTES as DOCUMENT_COMMENT_ROUTES } from "./document-comments-routes.js";
52
57
  import { ROUTES as DOCUMENT_ROUTES } from "./documents-routes.js";
53
58
  import { ROUTES as DOMAIN_ROUTES } from "./domain-routes.js";
54
59
  import { ROUTES as EMAIL_ROUTES } from "./email-routes.js";
@@ -73,12 +78,11 @@ import { ROUTES as INFERENCE_PROFILE_SESSION_ROUTES } from "./inference-profile-
73
78
  import { ROUTES as INFERENCE_PROVIDER_CONNECTION_ROUTES } from "./inference-provider-connection-routes.js";
74
79
  import { ROUTES as INFERENCE_SEND_ROUTES } from "./inference-send-routes.js";
75
80
  import { ROUTES as A2A_ROUTES } from "./integrations/a2a.js";
76
- import { ROUTES as SLACK_CHANNEL_ROUTES } from "./integrations/slack/channel.js";
81
+ import { ROUTES as SLACK_CHANNEL_CONFIG_ROUTES } from "./integrations/slack/channel.js";
77
82
  import { ROUTES as SLACK_SHARE_ROUTES } from "./integrations/slack/share.js";
78
83
  import { ROUTES as TELEGRAM_ROUTES } from "./integrations/telegram.js";
79
84
  import { ROUTES as TWILIO_ROUTES } from "./integrations/twilio.js";
80
85
  import { ROUTES as VERCEL_ROUTES } from "./integrations/vercel.js";
81
- import { ROUTES as INTERFACE_ROUTES } from "./interface-routes.js";
82
86
  import { ROUTES as INTERNAL_OAUTH_ROUTES } from "./internal-oauth-routes.js";
83
87
  import { ROUTES as INTERNAL_TWILIO_ROUTES } from "./internal-twilio-routes.js";
84
88
  import { ROUTES as LLM_CALL_SITES_ROUTES } from "./llm-call-sites-routes.js";
@@ -86,6 +90,7 @@ import { ROUTES as LOG_EXPORT_ROUTES } from "./log-export-routes.js";
86
90
  import { ROUTES as MCP_AUTH_ROUTES } from "./mcp-auth-routes.js";
87
91
  import { ROUTES as MEMORY_ITEM_ROUTES } from "./memory-item-routes.js";
88
92
  import { ROUTES as MEMORY_V2_ROUTES } from "./memory-v2-routes.js";
93
+ import { ROUTES as MEMORY_V3_ROUTES } from "./memory-v3-routes.js";
89
94
  import { ROUTES as MIGRATION_ROLLBACK_ROUTES } from "./migration-rollback-routes.js";
90
95
  import { ROUTES as MIGRATION_ROUTES } from "./migration-routes.js";
91
96
  import { ROUTES as NOTIFICATION_ROUTES } from "./notification-routes.js";
@@ -96,17 +101,20 @@ import { ROUTES as OAUTH_LIFECYCLE_ROUTES } from "./oauth-lifecycle-routes.js";
96
101
  import { ROUTES as OAUTH_PROVIDERS_ROUTES } from "./oauth-providers.js";
97
102
  import { ROUTES as PLATFORM_ROUTES } from "./platform-routes.js";
98
103
  import { ROUTES as PLAYGROUND_ROUTES } from "./playground/index.js";
104
+ import { ROUTES as PLUGINS_ROUTES } from "./plugins-routes.js";
99
105
  import { ROUTES as PROFILER_ROUTES } from "./profiler-routes.js";
100
106
  import { ROUTES as PS_ROUTES } from "./ps-routes.js";
101
107
  import { ROUTES as PUBLISH_ROUTES } from "./publish-routes.js";
102
108
  import { ROUTES as QUESTION_ROUTES } from "./question-routes.js";
103
109
  import { ROUTES as RECORDING_ROUTES } from "./recording-routes.js";
104
110
  import { ROUTES as RENAME_CONVERSATION_ROUTES } from "./rename-conversation-routes.js";
111
+ import { ROUTES as SANITY_ROUTES } from "./sanity-routes.js";
105
112
  import { ROUTES as SCHEDULE_ROUTES } from "./schedule-routes.js";
106
113
  import { ROUTES as SECRET_ROUTES } from "./secret-routes.js";
107
114
  import { ROUTES as SEQUENCE_ROUTES } from "./sequence-routes.js";
108
115
  import { ROUTES as SETTINGS_ROUTES } from "./settings-routes.js";
109
116
  import { ROUTES as SKILL_ROUTES } from "./skills-routes.js";
117
+ import { ROUTES as SLACK_CHANNEL_RESOLVE_ROUTES } from "./slack-channel-routes.js";
110
118
  import { ROUTES as STT_ROUTES } from "./stt-routes.js";
111
119
  import { ROUTES as SUBAGENT_ROUTES } from "./subagents-routes.js";
112
120
  import { ROUTES as SUGGEST_TRUST_RULE_ROUTES } from "./suggest-trust-rule-routes.js";
@@ -141,19 +149,23 @@ export const ROUTES: RouteDefinition[] = [
141
149
  ...AUDIT_ROUTES,
142
150
  ...AUTH_ROUTES,
143
151
  ...AVATAR_ROUTES,
152
+ ...BACKGROUND_WAKE_ROUTES,
144
153
  ...BACKGROUND_TOOL_ROUTES,
145
154
  ...BACKUP_ROUTES,
146
155
  ...BOOKMARK_ROUTES,
147
156
  ...CACHE_ROUTES,
148
157
  ...CALL_ROUTES,
158
+ ...CHATGPT_SUBSCRIPTION_AUTH_ROUTES,
149
159
  ...CHANNEL_ROUTES,
150
160
  ...CHANNEL_VERIFICATION_ROUTES,
151
161
  ...CHANNEL_AVAILABILITY_ROUTES,
152
162
  ...CHANNEL_READINESS_ROUTES,
153
163
  ...BROWSER_ROUTES,
164
+ ...BROWSER_TABS_ROUTES,
154
165
  ...BTW_ROUTES,
155
166
  ...BRAIN_GRAPH_ROUTES,
156
167
  ...CLIENT_ROUTES,
168
+ ...CONTENT_SOURCE_ROUTES,
157
169
  ...CONTACT_PROMPT_ROUTES,
158
170
  ...CONTACT_ROUTES,
159
171
  ...CONVERSATION_ANALYSIS_ROUTES,
@@ -174,6 +186,7 @@ export const ROUTES: RouteDefinition[] = [
174
186
  ...DIAGNOSTICS_ROUTES,
175
187
  ...DISK_PRESSURE_ROUTES,
176
188
  ...DOMAIN_ROUTES,
189
+ ...DOCUMENT_COMMENT_ROUTES,
177
190
  ...DOCUMENT_ROUTES,
178
191
  ...EMAIL_ROUTES,
179
192
  ...EVENTS_ROUTES,
@@ -196,7 +209,6 @@ export const ROUTES: RouteDefinition[] = [
196
209
  ...INFERENCE_PROFILE_SESSION_ROUTES,
197
210
  ...INFERENCE_PROVIDER_CONNECTION_ROUTES,
198
211
  ...INFERENCE_SEND_ROUTES,
199
- ...INTERFACE_ROUTES,
200
212
  ...INTERNAL_OAUTH_ROUTES,
201
213
  ...MCP_AUTH_ROUTES,
202
214
  ...OAUTH_CONNECT_ROUTES,
@@ -205,6 +217,7 @@ export const ROUTES: RouteDefinition[] = [
205
217
  ...LLM_CALL_SITES_ROUTES,
206
218
  ...MEMORY_ITEM_ROUTES,
207
219
  ...MEMORY_V2_ROUTES,
220
+ ...MEMORY_V3_ROUTES,
208
221
  ...MIGRATION_ROLLBACK_ROUTES,
209
222
  ...MIGRATION_ROUTES,
210
223
  ...NOTIFICATION_ROUTES,
@@ -214,6 +227,7 @@ export const ROUTES: RouteDefinition[] = [
214
227
  ...OAUTH_PROVIDERS_ROUTES,
215
228
  ...PLATFORM_ROUTES,
216
229
  ...PLAYGROUND_ROUTES,
230
+ ...PLUGINS_ROUTES,
217
231
  ...PROFILER_ROUTES,
218
232
  ...PS_ROUTES,
219
233
  ...PUBLISH_ROUTES,
@@ -221,11 +235,13 @@ export const ROUTES: RouteDefinition[] = [
221
235
  ...RECORDING_ROUTES,
222
236
  ...RENAME_CONVERSATION_ROUTES,
223
237
  ...SCHEDULE_ROUTES,
238
+ ...SANITY_ROUTES,
224
239
  ...SECRET_ROUTES,
225
240
  ...SETTINGS_ROUTES,
226
241
  ...SKILL_ROUTES,
227
242
  ...A2A_ROUTES,
228
- ...SLACK_CHANNEL_ROUTES,
243
+ ...SLACK_CHANNEL_CONFIG_ROUTES,
244
+ ...SLACK_CHANNEL_RESOLVE_ROUTES,
229
245
  ...SLACK_SHARE_ROUTES,
230
246
  ...STT_ROUTES,
231
247
  ...SUGGEST_TRUST_RULE_ROUTES,