@vellumai/assistant 0.10.7-dev.202607101554.2aa9767 → 0.10.7-dev.202607101836.11f2eba

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 (643) hide show
  1. package/docs/workspace-tools.md +2 -3
  2. package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +62 -360
  3. package/eslint-rules/cli-no-daemon-internals.js +91 -275
  4. package/eslint.config.mjs +4 -4
  5. package/package.json +1 -1
  6. package/src/__tests__/activation-early-marking.test.ts +1 -8
  7. package/src/__tests__/actor-token-service.test.ts +0 -7
  8. package/src/__tests__/add-message-preassigned-id.test.ts +1 -1
  9. package/src/__tests__/agent-loop-callsite-precedence.test.ts +0 -5
  10. package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +0 -6
  11. package/src/__tests__/agent-loop-override-profile.test.ts +0 -6
  12. package/src/__tests__/agent-loop-pushes-post-hook-prompt.test.ts +0 -8
  13. package/src/__tests__/agent-loop-set-system-prompt.test.ts +0 -6
  14. package/src/__tests__/annotate-activity-metadata.test.ts +4 -10
  15. package/src/__tests__/annotate-risk-options.test.ts +4 -10
  16. package/src/__tests__/app-bundler.test.ts +0 -8
  17. package/src/__tests__/app-conversation-ids-backfill.test.ts +1 -8
  18. package/src/__tests__/app-routes-csp.test.ts +0 -8
  19. package/src/__tests__/approval-cascade.test.ts +0 -21
  20. package/src/__tests__/approval-interception-trust-gates.test.ts +0 -7
  21. package/src/__tests__/approval-primitive.test.ts +1 -9
  22. package/src/__tests__/approval-routes-http.test.ts +0 -7
  23. package/src/__tests__/assistant-event-hub-machine-name.test.ts +0 -7
  24. package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -7
  25. package/src/__tests__/attachment-stored-path-annotation.test.ts +0 -7
  26. package/src/__tests__/attachment-upload-trusted-source.test.ts +0 -7
  27. package/src/__tests__/attachments-store-heic-normalize.test.ts +0 -7
  28. package/src/__tests__/attachments-store.test.ts +0 -7
  29. package/src/__tests__/audit-log-rotation.test.ts +1 -9
  30. package/src/__tests__/auth-fallback-events-store.test.ts +0 -7
  31. package/src/__tests__/avatar-generator.test.ts +0 -9
  32. package/src/__tests__/background-shell-host-bash.test.ts +0 -7
  33. package/src/__tests__/browser-fill-credential.test.ts +0 -7
  34. package/src/__tests__/browser-manager.test.ts +1 -8
  35. package/src/__tests__/btw-routes.test.ts +0 -7
  36. package/src/__tests__/build-persisted-content.test.ts +0 -8
  37. package/src/__tests__/call-controller.test.ts +36 -34
  38. package/src/__tests__/call-conversation-messages.test.ts +2 -9
  39. package/src/__tests__/call-domain.test.ts +7 -24
  40. package/src/__tests__/call-pointer-message-composer.test.ts +0 -8
  41. package/src/__tests__/call-pointer-messages.test.ts +1 -8
  42. package/src/__tests__/call-recovery.test.ts +1 -8
  43. package/src/__tests__/call-routes-http.test.ts +0 -7
  44. package/src/__tests__/call-site-routing-provider.test.ts +0 -5
  45. package/src/__tests__/call-state.test.ts +1 -8
  46. package/src/__tests__/call-store.test.ts +1 -8
  47. package/src/__tests__/cancel-resolves-conversation-key.test.ts +0 -7
  48. package/src/__tests__/canonical-guardian-store.test.ts +1 -8
  49. package/src/__tests__/catalog-cache.test.ts +0 -8
  50. package/src/__tests__/catalog-files.test.ts +0 -8
  51. package/src/__tests__/catalog-install-normalize.test.ts +0 -7
  52. package/src/__tests__/ces-rpc-credential-backend.test.ts +0 -7
  53. package/src/__tests__/channel-approval-routes.test.ts +0 -7
  54. package/src/__tests__/channel-approvals.test.ts +0 -7
  55. package/src/__tests__/channel-delivery-store.test.ts +0 -7
  56. package/src/__tests__/channel-guardian.test.ts +0 -7
  57. package/src/__tests__/channel-inbound-disk-pressure.test.ts +0 -7
  58. package/src/__tests__/channel-reply-delivery.test.ts +18 -5
  59. package/src/__tests__/channel-retry-sweep.test.ts +0 -7
  60. package/src/__tests__/clawhub-files.test.ts +0 -8
  61. package/src/__tests__/clawhub.test.ts +0 -7
  62. package/src/__tests__/clear-all-lexical.test.ts +0 -6
  63. package/src/__tests__/client-os-metadata-persistence.test.ts +0 -5
  64. package/src/__tests__/compaction-events.test.ts +0 -21
  65. package/src/__tests__/compaction-ledger-store.test.ts +1 -7
  66. package/src/__tests__/compaction-summary-head-persisted-count.test.ts +0 -21
  67. package/src/__tests__/compaction-trail-store.test.ts +0 -7
  68. package/src/__tests__/compaction.benchmark.test.ts +0 -5
  69. package/src/__tests__/compactor-call-site-logging.test.ts +0 -21
  70. package/src/__tests__/compactor-fixed-boundary.test.ts +0 -21
  71. package/src/__tests__/compactor-low-watermark-cut.test.ts +0 -21
  72. package/src/__tests__/compactor-media-strip.test.ts +0 -21
  73. package/src/__tests__/compactor-preserved-tail-count.test.ts +0 -21
  74. package/src/__tests__/compactor-summary-call-truncation.test.ts +0 -21
  75. package/src/__tests__/compactor-web-search-strip.test.ts +0 -21
  76. package/src/__tests__/config-get-vision-flag.test.ts +0 -6
  77. package/src/__tests__/config-loader-backfill.test.ts +0 -21
  78. package/src/__tests__/config-loader-platform-defaults.test.ts +0 -21
  79. package/src/__tests__/config-schema.test.ts +1 -22
  80. package/src/__tests__/config-set-route.test.ts +0 -6
  81. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +0 -8
  82. package/src/__tests__/config-watcher-skill-reseed.test.ts +0 -8
  83. package/src/__tests__/config-watcher.test.ts +0 -8
  84. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -8
  85. package/src/__tests__/contact-store-interaction-info.test.ts +1 -8
  86. package/src/__tests__/contact-store-user-file.test.ts +1 -8
  87. package/src/__tests__/contacts-tools.test.ts +0 -7
  88. package/src/__tests__/contacts-write.test.ts +1 -8
  89. package/src/__tests__/context-search-memory-v2-source.test.ts +0 -6
  90. package/src/__tests__/context-window-manager-compact-retry.test.ts +0 -21
  91. package/src/__tests__/context-window-manager-overflow-rung.test.ts +0 -21
  92. package/src/__tests__/conversation-abort-tool-results.test.ts +0 -5
  93. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +0 -7
  94. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +0 -6
  95. package/src/__tests__/conversation-agent-loop-overflow.test.ts +0 -5
  96. package/src/__tests__/conversation-agent-loop.test.ts +0 -5
  97. package/src/__tests__/conversation-app-control-instantiation.test.ts +0 -5
  98. package/src/__tests__/conversation-app-control-lifecycle.test.ts +0 -5
  99. package/src/__tests__/conversation-attachments.test.ts +0 -7
  100. package/src/__tests__/conversation-attention-store.test.ts +1 -9
  101. package/src/__tests__/conversation-attention-telegram.test.ts +0 -8
  102. package/src/__tests__/conversation-clear-safety.test.ts +0 -7
  103. package/src/__tests__/conversation-confirmation-signals.test.ts +0 -21
  104. package/src/__tests__/conversation-crud-enabled-plugins.test.ts +1 -7
  105. package/src/__tests__/conversation-crud-inference-profile.test.ts +1 -7
  106. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +0 -7
  107. package/src/__tests__/conversation-disk-view-integration.test.ts +0 -7
  108. package/src/__tests__/conversation-disk-view.test.ts +0 -7
  109. package/src/__tests__/conversation-enabledplugins-route.test.ts +2 -8
  110. package/src/__tests__/conversation-fork-crud.test.ts +34 -32
  111. package/src/__tests__/conversation-fork-retrospective.test.ts +8 -12
  112. package/src/__tests__/conversation-fork-route.test.ts +0 -7
  113. package/src/__tests__/conversation-history-web-search.test.ts +20 -13
  114. package/src/__tests__/conversation-inference-profile-list.test.ts +0 -6
  115. package/src/__tests__/conversation-inference-profile-route.test.ts +0 -5
  116. package/src/__tests__/conversation-key-store-disk-view.test.ts +0 -7
  117. package/src/__tests__/conversation-lifecycle.test.ts +63 -65
  118. package/src/__tests__/conversation-list-source.test.ts +0 -7
  119. package/src/__tests__/conversation-load-history-repair.test.ts +39 -53
  120. package/src/__tests__/conversation-load-history-stripped.test.ts +12 -19
  121. package/src/__tests__/conversation-loop-db-lock-resilience.test.ts +0 -8
  122. package/src/__tests__/conversation-message-id-uuidv7.test.ts +0 -7
  123. package/src/__tests__/conversation-pairing.test.ts +0 -7
  124. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +0 -5
  125. package/src/__tests__/conversation-process-callsite.test.ts +0 -5
  126. package/src/__tests__/conversation-provider-retry-repair.test.ts +0 -5
  127. package/src/__tests__/conversation-queue.test.ts +0 -21
  128. package/src/__tests__/conversation-routes-disk-view.test.ts +0 -7
  129. package/src/__tests__/conversation-routes-enabled-plugins.test.ts +2 -10
  130. package/src/__tests__/conversation-routes-guardian-reply.test.ts +2 -10
  131. package/src/__tests__/conversation-routes-hidden-queue.test.ts +2 -10
  132. package/src/__tests__/conversation-routes-slash-commands.test.ts +0 -7
  133. package/src/__tests__/conversation-runtime-assembly.test.ts +6 -3
  134. package/src/__tests__/conversation-skill-tools.test.ts +0 -9
  135. package/src/__tests__/conversation-slash-queue.test.ts +0 -5
  136. package/src/__tests__/conversation-slash-unknown.test.ts +0 -5
  137. package/src/__tests__/conversation-speed-override.test.ts +0 -21
  138. package/src/__tests__/conversation-starter-routes.test.ts +0 -7
  139. package/src/__tests__/conversation-store.test.ts +9 -12
  140. package/src/__tests__/conversation-summarize-route.test.ts +0 -7
  141. package/src/__tests__/conversation-summarize-up-to.test.ts +4 -25
  142. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -8
  143. package/src/__tests__/conversation-surfaces-data-persist.test.ts +4 -2
  144. package/src/__tests__/conversation-title-service.test.ts +0 -7
  145. package/src/__tests__/conversation-unread-route.test.ts +0 -7
  146. package/src/__tests__/conversation-usage.test.ts +0 -7
  147. package/src/__tests__/conversation-wait-for-idle.test.ts +0 -21
  148. package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -5
  149. package/src/__tests__/conversation-workspace-injection.test.ts +0 -5
  150. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -5
  151. package/src/__tests__/conversations-import-system-filter.test.ts +0 -7
  152. package/src/__tests__/credential-broker-browser-fill.test.ts +0 -9
  153. package/src/__tests__/credential-broker-server-use.test.ts +0 -9
  154. package/src/__tests__/credential-health-service.test.ts +0 -9
  155. package/src/__tests__/credential-metadata-store.test.ts +0 -8
  156. package/src/__tests__/credential-prompt-route.test.ts +0 -7
  157. package/src/__tests__/credential-resolve.test.ts +0 -8
  158. package/src/__tests__/credential-security-invariants.test.ts +0 -7
  159. package/src/__tests__/credential-token-resolver.test.ts +0 -9
  160. package/src/__tests__/daemon-assistant-events.test.ts +1 -9
  161. package/src/__tests__/daemon-credential-client.test.ts +0 -7
  162. package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +1 -8
  163. package/src/__tests__/db-conversation-inference-profile-migration.test.ts +1 -7
  164. package/src/__tests__/db-llm-request-log-provider-migration.test.ts +0 -8
  165. package/src/__tests__/db-readiness-http-gate.test.ts +0 -7
  166. package/src/__tests__/db-rename-inference-profile-snake-case-migration.test.ts +1 -7
  167. package/src/__tests__/delete-managed-skill-tool.test.ts +0 -7
  168. package/src/__tests__/delete-propagation.test.ts +0 -7
  169. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -7
  170. package/src/__tests__/device-id.test.ts +1 -9
  171. package/src/__tests__/dm-backfill.test.ts +0 -7
  172. package/src/__tests__/dm-persistence.test.ts +0 -5
  173. package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -8
  174. package/src/__tests__/drain-requeue-on-contention.test.ts +1 -8
  175. package/src/__tests__/dynamic-skill-background-guard.test.ts +0 -8
  176. package/src/__tests__/edit-propagation.test.ts +1 -8
  177. package/src/__tests__/embedding-managed-proxy-selection.test.ts +0 -8
  178. package/src/__tests__/emit-signal-routing-intent.test.ts +0 -7
  179. package/src/__tests__/encrypted-store.test.ts +0 -9
  180. package/src/__tests__/ensure-conversation-exists.test.ts +0 -7
  181. package/src/__tests__/events-client-registration.test.ts +0 -7
  182. package/src/__tests__/events-dev-bypass-actor.test.ts +0 -7
  183. package/src/__tests__/events-tail-route.test.ts +1 -8
  184. package/src/__tests__/followup-tools.test.ts +0 -7
  185. package/src/__tests__/guardian-action-sweep.test.ts +0 -7
  186. package/src/__tests__/guardian-binding-drift-heal.test.ts +0 -7
  187. package/src/__tests__/guardian-card-withdrawal.test.ts +0 -8
  188. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +1 -9
  189. package/src/__tests__/guardian-dispatch.test.ts +0 -7
  190. package/src/__tests__/guardian-expiry-notifier.test.ts +0 -9
  191. package/src/__tests__/guardian-outbound-http.test.ts +0 -7
  192. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +1 -8
  193. package/src/__tests__/guardian-routing-invariants.test.ts +0 -8
  194. package/src/__tests__/guardian-routing-state.test.ts +0 -8
  195. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -7
  196. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +0 -2
  197. package/src/__tests__/headless-browser-interactions.test.ts +0 -7
  198. package/src/__tests__/headless-browser-mode.test.ts +0 -9
  199. package/src/__tests__/headless-browser-navigate.test.ts +0 -7
  200. package/src/__tests__/headless-browser-read-tools.test.ts +0 -7
  201. package/src/__tests__/headless-browser-snapshot.test.ts +0 -7
  202. package/src/__tests__/heartbeat-disk-pressure.test.ts +0 -9
  203. package/src/__tests__/host-browser-proxy.test.ts +15 -20
  204. package/src/__tests__/host-shell-tool.test.ts +0 -7
  205. package/src/__tests__/http-conversation-lineage.test.ts +0 -7
  206. package/src/__tests__/http-user-message-parity.test.ts +0 -7
  207. package/src/__tests__/identity-routes.test.ts +1 -9
  208. package/src/__tests__/inbound-admitted-introduction-nudge.test.ts +0 -7
  209. package/src/__tests__/inbound-invite-redemption.test.ts +0 -7
  210. package/src/__tests__/inbound-slack-persistence.test.ts +0 -5
  211. package/src/__tests__/inbound-trust-verdict.test.ts +0 -7
  212. package/src/__tests__/inference-profile-reaper.test.ts +1 -7
  213. package/src/__tests__/inference-profile-session-handler.test.ts +0 -6
  214. package/src/__tests__/inference-profile-session-ipc.test.ts +0 -6
  215. package/src/__tests__/ingress-url-consistency.test.ts +1 -23
  216. package/src/__tests__/inline-command-runner.test.ts +0 -7
  217. package/src/__tests__/inline-skill-load-permissions.test.ts +0 -7
  218. package/src/__tests__/internal-telemetry-routes.test.ts +0 -7
  219. package/src/__tests__/interrupted-turn-reconciler.test.ts +1 -8
  220. package/src/__tests__/introduction-card-resolver.test.ts +0 -8
  221. package/src/__tests__/invite-redeemed-ipc.test.ts +0 -7
  222. package/src/__tests__/invite-routes-http.test.ts +0 -7
  223. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +0 -7
  224. package/src/__tests__/jobs-store-upsert-debounced.test.ts +0 -7
  225. package/src/__tests__/lexical-index-dual-write.test.ts +0 -6
  226. package/src/__tests__/list-messages-attachments.test.ts +0 -7
  227. package/src/__tests__/list-messages-background-tool-completion.test.ts +0 -7
  228. package/src/__tests__/list-messages-client-message-id.test.ts +0 -7
  229. package/src/__tests__/list-messages-hidden-metadata.test.ts +0 -7
  230. package/src/__tests__/list-messages-page-latest.test.ts +0 -7
  231. package/src/__tests__/list-messages-queued.test.ts +0 -7
  232. package/src/__tests__/list-messages-tool-merge.test.ts +0 -7
  233. package/src/__tests__/llm-context-route-provider.test.ts +1 -8
  234. package/src/__tests__/llm-request-log-agent-loop-exit-reason.test.ts +0 -7
  235. package/src/__tests__/llm-request-log-call-site.test.ts +0 -7
  236. package/src/__tests__/llm-request-log-clickhouse-routing.test.ts +7 -7
  237. package/src/__tests__/llm-request-log-clickhouse-writer-guards.test.ts +115 -0
  238. package/src/__tests__/llm-request-log-disabled-writes.test.ts +0 -7
  239. package/src/__tests__/llm-request-log-sink-clickhouse.test.ts +15 -23
  240. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +1 -22
  241. package/src/__tests__/llm-request-log-source-factory.test.ts +0 -21
  242. package/src/__tests__/llm-request-log-turn-query.test.ts +0 -7
  243. package/src/__tests__/llm-usage-store.test.ts +1 -7
  244. package/src/__tests__/log-export-routes.test.ts +0 -7
  245. package/src/__tests__/log-export-workspace.test.ts +0 -7
  246. package/src/__tests__/managed-profile-guard.test.ts +0 -6
  247. package/src/__tests__/managed-skill-lifecycle.test.ts +0 -7
  248. package/src/__tests__/managed-store.test.ts +1 -16
  249. package/src/__tests__/mcp-auth-routes.test.ts +1 -8
  250. package/src/__tests__/media-stream-output.test.ts +0 -9
  251. package/src/__tests__/media-stream-server-integration.test.ts +3 -11
  252. package/src/__tests__/media-stream-stt-session.test.ts +0 -10
  253. package/src/__tests__/memory-jobs-worker-backoff.test.ts +0 -7
  254. package/src/__tests__/memory-jobs-worker-cleanup-cadence.test.ts +0 -7
  255. package/src/__tests__/memory-jobs-worker-lanes.test.ts +0 -7
  256. package/src/__tests__/memory-recall-log-store.test.ts +0 -7
  257. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -7
  258. package/src/__tests__/messages-after-tiebreaker.test.ts +1 -7
  259. package/src/__tests__/messaging-send-tool.test.ts +0 -7
  260. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -7
  261. package/src/__tests__/migration-export-http.test.ts +10 -12
  262. package/src/__tests__/migration-export-streaming.test.ts +0 -7
  263. package/src/__tests__/migration-export-to-gcs.test.ts +0 -7
  264. package/src/__tests__/migration-import-commit-http.test.ts +11 -12
  265. package/src/__tests__/migration-import-from-gcs.test.ts +0 -7
  266. package/src/__tests__/migration-import-from-url.test.ts +0 -7
  267. package/src/__tests__/migration-import-preflight-http.test.ts +10 -11
  268. package/src/__tests__/migration-jobs-status.test.ts +8 -11
  269. package/src/__tests__/migration-validate-http.test.ts +2 -8
  270. package/src/__tests__/non-member-access-request.test.ts +0 -7
  271. package/src/__tests__/notification-broadcaster.test.ts +0 -7
  272. package/src/__tests__/notification-candidate-guardian-context.test.ts +1 -8
  273. package/src/__tests__/notification-decision-fallback.test.ts +0 -7
  274. package/src/__tests__/notification-decision-identity.test.ts +0 -7
  275. package/src/__tests__/notification-decision-recipient-context.test.ts +0 -7
  276. package/src/__tests__/notification-deep-link.test.ts +0 -7
  277. package/src/__tests__/notification-guardian-path.test.ts +0 -7
  278. package/src/__tests__/notification-platform-adapter.test.ts +0 -7
  279. package/src/__tests__/notification-routing-intent.test.ts +1 -9
  280. package/src/__tests__/notification-schedule-notify-dedup.test.ts +1 -9
  281. package/src/__tests__/notification-telegram-adapter.test.ts +0 -7
  282. package/src/__tests__/oauth-connect-orchestrator.test.ts +0 -8
  283. package/src/__tests__/oauth-connect-routes.test.ts +19 -18
  284. package/src/__tests__/oauth-provider-profiles.test.ts +0 -7
  285. package/src/__tests__/oauth-provider-visibility.test.ts +0 -7
  286. package/src/__tests__/oauth-store.test.ts +0 -7
  287. package/src/__tests__/outbound-slack-persistence.test.ts +0 -7
  288. package/src/__tests__/outlook-email-watcher.test.ts +0 -9
  289. package/src/__tests__/path-policy.test.ts +0 -7
  290. package/src/__tests__/persist-media-references.test.ts +1 -6
  291. package/src/__tests__/persist-unsendable-image-downscale.test.ts +1 -3
  292. package/src/__tests__/persist-unsendable-image.test.ts +1 -3
  293. package/src/__tests__/persistence-secret-redaction.test.ts +0 -7
  294. package/src/__tests__/platform-bash-auto-approve.test.ts +0 -8
  295. package/src/__tests__/platform-callback-registration.test.ts +10 -9
  296. package/src/__tests__/platform-proxy-context.test.ts +0 -8
  297. package/src/__tests__/playbook-execution.test.ts +0 -7
  298. package/src/__tests__/playbook-tools.test.ts +0 -7
  299. package/src/__tests__/process-message-background-slack.test.ts +0 -5
  300. package/src/__tests__/process-message-display-content.test.ts +0 -5
  301. package/src/__tests__/processing-flag-persist-failure.test.ts +0 -5
  302. package/src/__tests__/provider-commit-message-generator.test.ts +0 -7
  303. package/src/__tests__/provider-error-scenarios.test.ts +5 -6
  304. package/src/__tests__/provider-send-message-override-profile.test.ts +0 -6
  305. package/src/__tests__/provider-streaming.benchmark.test.ts +1 -6
  306. package/src/__tests__/provider-usage-tracking.test.ts +0 -6
  307. package/src/__tests__/proxy-approval-callback.test.ts +0 -5
  308. package/src/__tests__/prune-old-conversations-job.test.ts +1 -9
  309. package/src/__tests__/prune-old-tool-invocations-job.test.ts +1 -9
  310. package/src/__tests__/public-ingress-urls.test.ts +1 -24
  311. package/src/__tests__/qdrant-collection-migration.test.ts +0 -7
  312. package/src/__tests__/qdrant-manager.test.ts +0 -8
  313. package/src/__tests__/ratelimit.test.ts +1 -8
  314. package/src/__tests__/reaction-persistence.test.ts +0 -7
  315. package/src/__tests__/rebuild-index-graph-nodes.test.ts +0 -7
  316. package/src/__tests__/request-secret-standalone-channel-gate.test.ts +0 -7
  317. package/src/__tests__/require-fresh-approval.test.ts +0 -8
  318. package/src/__tests__/retry-openrouter-only-normalization.test.ts +0 -5
  319. package/src/__tests__/retry-thinking-adaptive-only.test.ts +0 -5
  320. package/src/__tests__/retry-thinking-tool-choice.test.ts +0 -5
  321. package/src/__tests__/retry-verbosity-normalization.test.ts +0 -5
  322. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -7
  323. package/src/__tests__/runtime-events-sse-bilingual.test.ts +0 -7
  324. package/src/__tests__/runtime-events-sse-parity.test.ts +0 -7
  325. package/src/__tests__/runtime-events-sse-reconnect.test.ts +0 -7
  326. package/src/__tests__/runtime-events-sse.test.ts +0 -7
  327. package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -7
  328. package/src/__tests__/schedule-retry.test.ts +0 -8
  329. package/src/__tests__/schedule-routes-workflow-validation.test.ts +0 -7
  330. package/src/__tests__/schedule-routes.test.ts +0 -7
  331. package/src/__tests__/schedule-store.test.ts +0 -8
  332. package/src/__tests__/schedule-tools.test.ts +0 -7
  333. package/src/__tests__/scheduler-disk-pressure.test.ts +0 -10
  334. package/src/__tests__/scheduler-recurrence.test.ts +0 -8
  335. package/src/__tests__/scheduler-reuse-conversation.test.ts +0 -8
  336. package/src/__tests__/scheduler-wake.test.ts +0 -8
  337. package/src/__tests__/scheduler-worker-standdown.test.ts +0 -8
  338. package/src/__tests__/scoped-approval-grants.test.ts +1 -9
  339. package/src/__tests__/scoped-grant-security-matrix.test.ts +1 -9
  340. package/src/__tests__/secret-allowlist.test.ts +1 -8
  341. package/src/__tests__/secret-ingress-channel.test.ts +0 -7
  342. package/src/__tests__/secret-ingress-cli.test.ts +0 -7
  343. package/src/__tests__/secret-ingress-http.test.ts +2 -10
  344. package/src/__tests__/secret-routes-platform-proxy.test.ts +0 -7
  345. package/src/__tests__/secure-keys-managed-failover.test.ts +0 -7
  346. package/src/__tests__/secure-keys.test.ts +0 -9
  347. package/src/__tests__/send-endpoint-busy.test.ts +0 -7
  348. package/src/__tests__/sequence-store.test.ts +0 -9
  349. package/src/__tests__/server-history-render.test.ts +1 -8
  350. package/src/__tests__/set-permission-mode.test.ts +0 -7
  351. package/src/__tests__/settings-routes.test.ts +0 -7
  352. package/src/__tests__/shell-credential-ref.test.ts +0 -8
  353. package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -7
  354. package/src/__tests__/skill-projection-feature-flag.test.ts +0 -9
  355. package/src/__tests__/skill-projection.benchmark.test.ts +0 -5
  356. package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -7
  357. package/src/__tests__/skills-files-catalog-fallback.test.ts +0 -7
  358. package/src/__tests__/slack-inbound-verification.test.ts +0 -7
  359. package/src/__tests__/slack-reaction-canonical-approval.test.ts +0 -8
  360. package/src/__tests__/slim-skill-category.test.ts +0 -7
  361. package/src/__tests__/stale-approval-dedup.test.ts +0 -7
  362. package/src/__tests__/subagent-call-site-routing.test.ts +0 -5
  363. package/src/__tests__/subagent-detail.test.ts +1 -1
  364. package/src/__tests__/subagent-fork-prompt-role.test.ts +0 -5
  365. package/src/__tests__/subagent-spawn-and-await.test.ts +0 -5
  366. package/src/__tests__/subagent-tools.test.ts +77 -36
  367. package/src/__tests__/suggestion-routes.test.ts +28 -42
  368. package/src/__tests__/summarize-boundary.test.ts +2 -1
  369. package/src/__tests__/task-compiler.test.ts +0 -7
  370. package/src/__tests__/task-management-tools.test.ts +0 -7
  371. package/src/__tests__/task-memory-cleanup.test.ts +0 -7
  372. package/src/__tests__/task-scheduler.test.ts +0 -7
  373. package/src/__tests__/telegram-bot-username-resolution.test.ts +0 -8
  374. package/src/__tests__/thread-backfill.test.ts +0 -7
  375. package/src/__tests__/token-manager.test.ts +0 -9
  376. package/src/__tests__/tool-approval-handler.test.ts +0 -8
  377. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -7
  378. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -8
  379. package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -8
  380. package/src/__tests__/tool-executor.test.ts +0 -8
  381. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -8
  382. package/src/__tests__/tool-preview-lifecycle.test.ts +0 -8
  383. package/src/__tests__/tool-result-metadata-plumbing.test.ts +0 -8
  384. package/src/__tests__/tool-start-timestamp.test.ts +4 -10
  385. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -8
  386. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -7
  387. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -7
  388. package/src/__tests__/trusted-contact-verification.test.ts +1 -9
  389. package/src/__tests__/turn-boundary-resolution.test.ts +0 -7
  390. package/src/__tests__/turn-events-store.test.ts +1 -7
  391. package/src/__tests__/turn-outcome-read.test.ts +1 -7
  392. package/src/__tests__/twilio-config.test.ts +0 -7
  393. package/src/__tests__/twilio-provider.test.ts +0 -7
  394. package/src/__tests__/twilio-routes-twiml.test.ts +1 -8
  395. package/src/__tests__/twilio-validation.test.ts +0 -7
  396. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -7
  397. package/src/__tests__/usage-routes.test.ts +1 -8
  398. package/src/__tests__/vbundle-pax-and-symlink.test.ts +0 -7
  399. package/src/__tests__/vercel-config.test.ts +0 -7
  400. package/src/__tests__/verification-control-plane-policy.test.ts +0 -8
  401. package/src/__tests__/voice-approval-resolver-relay.test.ts +3 -9
  402. package/src/__tests__/voice-config-update.test.ts +1 -22
  403. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -8
  404. package/src/__tests__/voice-session-bridge-processing-wait.test.ts +0 -7
  405. package/src/__tests__/voice-session-bridge.test.ts +0 -7
  406. package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +0 -7
  407. package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +0 -7
  408. package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +0 -7
  409. package/src/a2a/__tests__/e2e-a2a-channel.test.ts +1 -9
  410. package/src/a2a/__tests__/task-store.test.ts +0 -9
  411. package/src/acp/__tests__/session-manager-persistence.test.ts +1 -8
  412. package/src/acp/__tests__/session-manager-resume.test.ts +0 -7
  413. package/src/acp/__tests__/session-manager-startup.test.ts +1 -8
  414. package/src/background-wake/wake-intent-hooks.test.ts +0 -10
  415. package/src/calls/__tests__/call-setup-router.test.ts +84 -71
  416. package/src/calls/__tests__/fish-audio-client.test.ts +6 -11
  417. package/src/calls/__tests__/voice-session-bridge.test.ts +3 -8
  418. package/src/cli/AGENTS.md +59 -51
  419. package/src/cli/commands/browser.ts +15 -3
  420. package/src/cli/commands/contacts.ts +11 -24
  421. package/src/cli/commands/db/repair-step-conversation-backfill.ts +19 -9
  422. package/src/cli/commands/memory/memory-v2-compare-render.ts +2 -2
  423. package/src/cli/commands/oauth/shared.ts +1 -1
  424. package/src/cli/commands/oauth/status.test.ts +6 -6
  425. package/src/cli/commands/oauth/status.ts +12 -6
  426. package/src/cli/commands/plugins.ts +3 -3
  427. package/src/cli/commands/ui.ts +2 -3
  428. package/src/cli/lib/publish-plugin.ts +3 -3
  429. package/src/cli.ts +22 -13
  430. package/src/config/__tests__/default-provider.test.ts +0 -21
  431. package/src/config/__tests__/deployment-context-defaults.test.ts +0 -21
  432. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +0 -21
  433. package/src/config/__tests__/loader-last-known-good.test.ts +0 -21
  434. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +0 -21
  435. package/src/config/__tests__/seed-default-provider.test.ts +0 -21
  436. package/src/config/__tests__/sync-gated-profiles.test.ts +0 -21
  437. package/src/config/bundled-skills/transcribe/tools/transcribe-media.test.ts +0 -7
  438. package/src/config/feature-flag-registry.json +2 -2
  439. package/src/conversations/__tests__/message-consolidation.test.ts +6 -5
  440. package/src/conversations/message-consolidation.ts +34 -112
  441. package/src/daemon/__tests__/inference-profile-notification.test.ts +0 -8
  442. package/src/daemon/__tests__/native-web-search-metadata.test.ts +0 -8
  443. package/src/daemon/__tests__/wake-conversation-ops-completion.test.ts +0 -6
  444. package/src/daemon/__tests__/web-search-status-text.test.ts +0 -8
  445. package/src/daemon/conversation-agent-loop-handlers.ts +3 -18
  446. package/src/daemon/conversation-history.ts +6 -12
  447. package/src/daemon/conversation-runtime-assembly.ts +148 -52
  448. package/src/daemon/conversation-surfaces.ts +141 -75
  449. package/src/daemon/conversation.ts +8 -16
  450. package/src/daemon/event-loop-watchdog.test.ts +1 -6
  451. package/src/daemon/external-plugins-bootstrap.ts +0 -7
  452. package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +0 -7
  453. package/src/daemon/handlers/__tests__/config-a2a-complete.test.ts +1 -8
  454. package/src/daemon/handlers/__tests__/config-a2a-invite.test.ts +1 -8
  455. package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +1 -8
  456. package/src/daemon/handlers/__tests__/config-a2a.test.ts +1 -8
  457. package/src/daemon/handlers/conversation-history.ts +6 -4
  458. package/src/daemon/orphan-reaper.test.ts +1 -6
  459. package/src/daemon/sqlite-corruption-watchdog.test.ts +0 -6
  460. package/src/documents/document-comments-store.test.ts +1 -7
  461. package/src/export/__tests__/transcript-formatter.test.ts +8 -8
  462. package/src/export/formatter.ts +8 -17
  463. package/src/export/transcript-formatter.ts +4 -1
  464. package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +0 -9
  465. package/src/heartbeat/__tests__/heartbeat-service.test.ts +0 -2
  466. package/src/home/__tests__/home-content-refresh.test.ts +0 -7
  467. package/src/home/__tests__/suggested-prompts.test.ts +0 -7
  468. package/src/ipc/__tests__/contacts-info-ipc.test.ts +12 -10
  469. package/src/ipc/assistant-server.ts +10 -22
  470. package/src/ipc/routes/__tests__/guardian-label-ipc-routes.test.ts +74 -0
  471. package/src/ipc/routes/__tests__/invite-ipc-routes.test.ts +0 -7
  472. package/src/ipc/routes/guardian-label-ipc-routes.ts +42 -0
  473. package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -8
  474. package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +0 -7
  475. package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +3 -7
  476. package/src/messaging/providers/a2a/__tests__/deliver.test.ts +0 -9
  477. package/src/messaging/providers/slack/__tests__/download.test.ts +1 -8
  478. package/src/messaging/providers/slack/send.test.ts +0 -7
  479. package/src/messaging/providers/slack/withdraw.test.ts +0 -6
  480. package/src/messaging/providers/telegram-bot/send.test.ts +0 -7
  481. package/src/notifications/__tests__/broadcaster.test.ts +4 -17
  482. package/src/notifications/__tests__/connected-channels.test.ts +11 -8
  483. package/src/notifications/__tests__/decision-engine.test.ts +0 -7
  484. package/src/notifications/__tests__/destination-resolver.test.ts +18 -12
  485. package/src/notifications/__tests__/deterministic-checks.test.ts +1 -9
  486. package/src/oauth/byo-connection.test.ts +0 -9
  487. package/src/oauth/connection-resolver.test.ts +0 -7
  488. package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -8
  489. package/src/permissions/checker.test.ts +0 -8
  490. package/src/permissions/gateway-threshold-reader.test.ts +0 -8
  491. package/src/persistence/__tests__/bulk-write-gate.test.ts +1 -7
  492. package/src/persistence/__tests__/conversation-queries-search.test.ts +0 -7
  493. package/src/persistence/__tests__/message-content-file.test.ts +25 -59
  494. package/src/persistence/conversation-crud.ts +11 -10
  495. package/src/persistence/conversation-disk-view.ts +32 -15
  496. package/src/persistence/conversation-group-migration.test.ts +1 -8
  497. package/src/persistence/conversation-title-service.ts +59 -22
  498. package/src/persistence/embeddings/__tests__/messages-lexical-index.test.ts +0 -7
  499. package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +0 -7
  500. package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +0 -6
  501. package/src/persistence/job-handlers/__tests__/message-lexical.test.ts +0 -7
  502. package/src/persistence/llm-request-log-sink-clickhouse.ts +43 -24
  503. package/src/persistence/llm-request-log-store.ts +182 -135
  504. package/src/persistence/llm-request-log-writer-types.ts +80 -0
  505. package/src/persistence/message-content-file.ts +37 -48
  506. package/src/persistence/message-content.ts +18 -10
  507. package/src/persistence/schema/conversations.ts +3 -3
  508. package/src/platform/consent-cache.test.ts +0 -7
  509. package/src/plugins/defaults/image-recovery/recover.ts +36 -18
  510. package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +1 -8
  511. package/src/plugins/defaults/memory/__tests__/clear-stale-processing-flags.test.ts +1 -8
  512. package/src/plugins/defaults/memory/__tests__/conversation-queries.test.ts +1 -8
  513. package/src/plugins/defaults/memory/__tests__/conversation-row-batch-delete.test.ts +0 -6
  514. package/src/plugins/defaults/memory/__tests__/embedding-cache.test.ts +0 -6
  515. package/src/plugins/defaults/memory/__tests__/find-most-recent-retrospective-for.test.ts +1 -8
  516. package/src/plugins/defaults/memory/__tests__/fork-message-copy.test.ts +0 -6
  517. package/src/plugins/defaults/memory/__tests__/jobs-store-enqueue-gate.test.ts +0 -8
  518. package/src/plugins/defaults/memory/__tests__/jobs-worker-memory-disabled.test.ts +0 -7
  519. package/src/plugins/defaults/memory/__tests__/jobs-worker-v2-graph-trigger-embed.test.ts +0 -5
  520. package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +0 -7
  521. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -7
  522. package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -7
  523. package/src/plugins/defaults/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +0 -7
  524. package/src/plugins/defaults/memory/__tests__/memory-retrospective-state.test.ts +0 -6
  525. package/src/plugins/defaults/memory/__tests__/memory-retrospective-trigger-check.test.ts +0 -7
  526. package/src/plugins/defaults/memory/__tests__/memory-v2-activation-log-store.test.ts +0 -7
  527. package/src/plugins/defaults/memory/__tests__/memory-v2-concept-frequency.test.ts +0 -7
  528. package/src/plugins/defaults/memory/graph/graph-search.test.ts +0 -6
  529. package/src/plugins/defaults/memory/graph/tool-handlers.test.ts +0 -6
  530. package/src/plugins/defaults/memory/indexer.ts +2 -1
  531. package/src/plugins/defaults/memory/job-handlers/embedding.test.ts +0 -7
  532. package/src/plugins/defaults/memory/jobs/__tests__/embed-concept-page.test.ts +0 -7
  533. package/src/plugins/defaults/memory/jobs/embed-pkb-file.test.ts +0 -7
  534. package/src/plugins/defaults/memory/memory-retrospective-job.ts +9 -6
  535. package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +9 -6
  536. package/src/plugins/defaults/memory/message-media.ts +2 -2
  537. package/src/plugins/defaults/memory/pkb/pkb-index.test.ts +0 -6
  538. package/src/plugins/defaults/memory/pkb/pkb-reconcile.test.ts +0 -6
  539. package/src/plugins/defaults/memory/pkb/pkb-search.test.ts +0 -6
  540. package/src/plugins/defaults/memory/routes/__tests__/memory-v2-simulate-route.test.ts +0 -9
  541. package/src/plugins/defaults/memory/routes/memory-item-routes.test.ts +0 -7
  542. package/src/plugins/defaults/memory/v2/__tests__/activation.test.ts +0 -5
  543. package/src/plugins/defaults/memory/v2/__tests__/backfill-jobs.test.ts +0 -6
  544. package/src/plugins/defaults/memory/v2/__tests__/cli-command-store.test.ts +0 -6
  545. package/src/plugins/defaults/memory/v2/__tests__/consolidation-job.test.ts +0 -6
  546. package/src/plugins/defaults/memory/v2/__tests__/harness-compare.test.ts +0 -5
  547. package/src/plugins/defaults/memory/v2/__tests__/harness-oracle.test.ts +0 -5
  548. package/src/plugins/defaults/memory/v2/__tests__/harness-replay-input.test.ts +0 -5
  549. package/src/plugins/defaults/memory/v2/__tests__/injection-events.test.ts +1 -7
  550. package/src/plugins/defaults/memory/v2/__tests__/injection.test.ts +0 -5
  551. package/src/plugins/defaults/memory/v2/__tests__/migration.test.ts +0 -6
  552. package/src/plugins/defaults/memory/v2/__tests__/page-index.test.ts +0 -5
  553. package/src/plugins/defaults/memory/v2/__tests__/qdrant.test.ts +3 -6
  554. package/src/plugins/defaults/memory/v2/__tests__/reranker.test.ts +3 -5
  555. package/src/plugins/defaults/memory/v2/__tests__/sim.test.ts +0 -5
  556. package/src/plugins/defaults/memory/v2/__tests__/skill-store.test.ts +0 -5
  557. package/src/plugins/defaults/memory/v2/__tests__/sweep-job.test.ts +0 -6
  558. package/src/plugins/defaults/memory/v2/memory-v2-startup.test.ts +0 -5
  559. package/src/plugins/defaults/memory/v3/__tests__/dense.test.ts +0 -5
  560. package/src/plugins/defaults/memory/v3/__tests__/section-dense-store.test.ts +0 -5
  561. package/src/providers/__tests__/connection-model-compat.test.ts +0 -5
  562. package/src/providers/__tests__/count-tokens-forwarding.test.ts +1 -21
  563. package/src/providers/__tests__/dispatch-connection-routing.test.ts +0 -5
  564. package/src/providers/__tests__/retry-callsite.test.ts +0 -6
  565. package/src/providers/__tests__/satellite-connection-routing.test.ts +0 -5
  566. package/src/providers/__tests__/vellum-mismatch-routing.test.ts +0 -5
  567. package/src/providers/inference/__tests__/codex-token-refresh.test.ts +1 -15
  568. package/src/runtime/__tests__/actor-trust-resolver.test.ts +2 -8
  569. package/src/runtime/__tests__/guardian-vellum-migration.test.ts +0 -5
  570. package/src/runtime/__tests__/member-verdict-cache.test.ts +2 -9
  571. package/src/runtime/auth/__tests__/middleware.test.ts +1 -10
  572. package/src/runtime/auth/__tests__/route-policy.test.ts +0 -7
  573. package/src/runtime/auth/__tests__/token-service.test.ts +1 -8
  574. package/src/runtime/channel-reply-delivery.ts +38 -19
  575. package/src/runtime/routes/__tests__/acp-routes.test.ts +0 -7
  576. package/src/runtime/routes/__tests__/backup-routes.test.ts +0 -7
  577. package/src/runtime/routes/__tests__/client-routes.test.ts +0 -7
  578. package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +0 -5
  579. package/src/runtime/routes/__tests__/consolidation-routes.test.ts +1 -8
  580. package/src/runtime/routes/__tests__/content-source-routes.test.ts +0 -7
  581. package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +0 -7
  582. package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +0 -7
  583. package/src/runtime/routes/__tests__/conversation-management-routes.test.ts +0 -7
  584. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +0 -7
  585. package/src/runtime/routes/__tests__/conversation-surface-routes.test.ts +0 -7
  586. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +4 -6
  587. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +0 -5
  588. package/src/runtime/routes/__tests__/retrospective-routes.test.ts +1 -8
  589. package/src/runtime/routes/__tests__/sanity-routes.test.ts +0 -7
  590. package/src/runtime/routes/__tests__/stt-routes.test.ts +0 -9
  591. package/src/runtime/routes/__tests__/suggest-trust-rule-routes.test.ts +0 -7
  592. package/src/runtime/routes/__tests__/task-routes.test.ts +0 -2
  593. package/src/runtime/routes/__tests__/tts-routes.test.ts +0 -7
  594. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -9
  595. package/src/runtime/routes/__tests__/wake-conversation-routes.test.ts +0 -7
  596. package/src/runtime/routes/conversation-attention-routes.ts +1 -1
  597. package/src/runtime/routes/conversation-cli-routes.ts +1 -1
  598. package/src/runtime/routes/conversation-routes.ts +56 -35
  599. package/src/runtime/routes/inbound-stages/acl-enforcement.test.ts +0 -5
  600. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +0 -7
  601. package/src/runtime/routes/inbound-stages/bootstrap-intercept.test.ts +0 -5
  602. package/src/runtime/routes/inbound-stages/edit-intercept.ts +5 -1
  603. package/src/runtime/routes/inbound-stages/escalation-intercept.test.ts +0 -5
  604. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +0 -9
  605. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.test.ts +0 -9
  606. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +0 -9
  607. package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +0 -7
  608. package/src/runtime/routes/subagents-routes.ts +17 -18
  609. package/src/runtime/routes/work-items-routes.test.ts +0 -7
  610. package/src/runtime/routes/work-items-routes.ts +54 -21
  611. package/src/runtime/services/__tests__/auto-analysis-guard.test.ts +1 -8
  612. package/src/security/__tests__/oauth2-device-code.test.ts +12 -60
  613. package/src/security/__tests__/provider-key-env-fallback.test.ts +0 -10
  614. package/src/sequence/engine.ts +15 -6
  615. package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -8
  616. package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -8
  617. package/src/telemetry/skill-loaded-events-store.test.ts +0 -8
  618. package/src/telemetry/tool-executed-events-store.test.ts +0 -8
  619. package/src/telemetry/turn-trace-store.test.ts +0 -6
  620. package/src/telemetry/usage-telemetry-reporter.test.ts +0 -7
  621. package/src/telemetry/watchdog-direct-emit.test.ts +0 -5
  622. package/src/tools/acp/spawn.test.ts +0 -7
  623. package/src/tools/browser/cdp-client/__tests__/cdp-inspect-client.test.ts +1 -11
  624. package/src/tools/browser/cdp-client/__tests__/local-cdp-client.test.ts +0 -10
  625. package/src/tools/browser/network-recorder.test.ts +0 -11
  626. package/src/tools/document/document-comment-tool.test.ts +1 -7
  627. package/src/tools/host-terminal/host-shell.test.ts +0 -7
  628. package/src/tools/registry.ts +16 -88
  629. package/src/tools/skills/find-similar-skills.test.ts +0 -7
  630. package/src/tools/subagent/read.ts +6 -4
  631. package/src/tools/subagent/spawn.ts +13 -18
  632. package/src/tools/terminal/safe-env.ts +7 -2
  633. package/src/tools/tool-manifest.ts +0 -6
  634. package/src/tts/__tests__/provider-adapters.test.ts +0 -7
  635. package/src/util/logger.ts +8 -3
  636. package/src/util/platform.ts +0 -60
  637. package/src/workflows/engine-integration.test.ts +0 -6
  638. package/src/workflows/engine.test.ts +1 -9
  639. package/src/workflows/journal-store.test.ts +1 -9
  640. package/src/workflows/leaf-runner.test.ts +0 -6
  641. package/src/workflows/library.test.ts +1 -9
  642. package/src/workflows/run-manager.test.ts +1 -9
  643. package/src/__tests__/skill-runtime-path.test.ts +0 -63
@@ -127,12 +127,11 @@ on the incoming tool.
127
127
  ## Lifecycle position
128
128
 
129
129
  ```
130
+ loadUserPlugins() # populates the plugin mtime-cache (no registry writes)
130
131
  initializeTools() # core tools register
131
132
  → loadWorkspaceTools() # initial workspace tool reconcile
133
+ → loadPluginTools() # registry pulls the active user-plugin tool set
132
134
  → MCP tool registration
133
- → loadUserPlugins() # populates the plugin mtime-cache (no registry writes)
134
- → loadPluginTools() # registry pulls the active user-plugin tool set
135
- → bootstrapPlugins()
136
135
 
137
136
  # on every conversation turn (createResolveToolsCallback):
138
137
  resolveTools(history)
@@ -11,410 +11,112 @@ const tester = new RuleTester({
11
11
  },
12
12
  });
13
13
 
14
+ // A command file two levels under src/cli (src/cli/commands/<file>.ts) and a
15
+ // nested one (src/cli/commands/oauth/<file>.ts) — the rule anchors `src/` off
16
+ // the `.../src/cli/` prefix, so a realistic absolute filename is required.
17
+ const FILE = "/repo/assistant/src/cli/commands/example.ts";
18
+ const NESTED = "/repo/assistant/src/cli/commands/oauth/example.ts";
19
+
14
20
  tester.run("cli/no-daemon-internals", rule, {
15
21
  valid: [
16
- // ipc-tagged file importing only allowed sources
17
- {
18
- code: `
19
- import type { Command } from "commander";
20
- import { cliIpcCall } from "../../ipc/cli-client.js";
21
- import { log } from "../logger.js";
22
- import { printTable } from "../output.js";
23
-
24
- registerCommand(program, {
25
- name: "example",
26
- transport: "ipc",
27
- build: () => {},
28
- });
29
- `,
30
- },
31
- // local-tagged file importing allowed sources
32
- {
33
- code: `
34
- import type { Command } from "commander";
35
- import { loadRawConfig } from "../../config/loader.js";
36
- import { getWorkspaceDir } from "../../util/platform.js";
37
-
38
- registerCommand(program, {
39
- name: "local-example",
40
- transport: "local",
41
- build: () => {},
42
- });
43
- `,
44
- },
45
- // bootstrap-tagged file importing allowed sources
22
+ // Node/npm/scoped packages are always hoistable.
46
23
  {
24
+ filename: FILE,
47
25
  code: `
48
- import type { Command } from "commander";
49
- import { AssistantConfigSchema } from "../../config/schema.js";
50
-
51
- registerCommand(program, {
52
- name: "bootstrap-example",
53
- transport: "bootstrap",
54
- build: () => {},
55
- });
26
+ import { writeFileSync } from "node:fs";
27
+ import { Command } from "commander";
28
+ import { something } from "@vellumai/service-contracts";
56
29
  `,
57
30
  },
58
- // ipc-tagged file importing from ../lib/ prefix (shared lib)
31
+ // The IPC client and socket path (src/ipc) are shared leaf transport.
59
32
  {
60
- code: `
61
- import type { Command } from "commander";
62
- import { cliIpcCall } from "../../ipc/cli-client.js";
63
- import { readFileSync } from "../lib/daemon-credential-client.js";
64
-
65
- registerCommand(program, {
66
- name: "lib-example",
67
- transport: "ipc",
68
- build: () => {},
69
- });
70
- `,
33
+ filename: FILE,
34
+ code: `import { cliIpcCall } from "../../ipc/cli-client.js";`,
71
35
  },
72
- // File with zero imports and no registerCommand — utility file
73
36
  {
74
- code: `
75
- function utilHelper() {
76
- return 42;
77
- }
78
- export { utilHelper };
79
- `,
37
+ filename: FILE,
38
+ code: `import { getAssistantSocketPath } from "../../ipc/socket-path.js";`,
80
39
  },
81
- // Helper module — has imports but does not call registerCommand directly.
82
- // Helper modules under commands/ (e.g. oauth/shared.ts, lib/cache-fs.ts)
83
- // are not command entries and the rule must not fire on them, even when
84
- // they import from outside the registrar allowlists.
40
+ // The CLI's own tree (../logger, ../output, ../lib, sibling files).
85
41
  {
42
+ filename: FILE,
86
43
  code: `
87
- import type { Command } from "commander";
88
- import { getProvider } from "../../../oauth/oauth-store.js";
89
-
90
- export function buildAuthFlow(program) {
91
- // helper module — no registerCommand call here; the actual
92
- // command file imports this and calls registerCommand itself.
93
- }
94
- `,
95
- },
96
- // local-tagged file importing ../logger and ../output — both must be on
97
- // the local allowlist (regression test for the allowlist gap that
98
- // false-positived autonomy/config/completions/keys/credential-execution).
99
- {
100
- code: `
101
- import type { Command } from "commander";
102
44
  import { log } from "../logger.js";
103
45
  import { writeOutput } from "../output.js";
104
-
105
- registerCommand(program, {
106
- name: "local-with-output",
107
- transport: "local",
108
- build: () => {},
109
- });
46
+ import { registerCommand } from "../lib/register-command.js";
47
+ import { helper } from "./sibling.js";
110
48
  `,
111
49
  },
112
- // Type-only imports are erased at compile time and must not count as
113
- // runtime boundary violations, even when the source path is outside the
114
- // allowlist (e.g. `import type` from runtime/routes for response shapes).
50
+ // Shared leaf zones: util/, version.
115
51
  {
52
+ filename: FILE,
116
53
  code: `
117
- import type { Command } from "commander";
118
- import { cliIpcCall } from "../../ipc/cli-client.js";
119
- import type { MemoryV2Result } from "../../runtime/routes/memory-v2-routes.js";
120
-
121
- registerCommand(program, {
122
- name: "ipc-with-type-import",
123
- transport: "ipc",
124
- build: () => {},
125
- });
126
- `,
127
- },
128
- // Inline `import { type X }` form: importKind is set per specifier,
129
- // not on the declaration. When every specifier is type-only the import
130
- // is erased and must not flag a forbidden-runtime-import violation.
131
- {
132
- code: `
133
- import type { Command } from "commander";
134
- import { cliIpcCall } from "../../ipc/cli-client.js";
135
- import { type MemoryV2Result, type ScoreBreakdown } from "../../runtime/routes/memory-v2-routes.js";
136
-
137
- registerCommand(program, {
138
- name: "ipc-with-inline-type-import",
139
- transport: "ipc",
140
- build: () => {},
141
- });
142
- `,
143
- },
144
- // Chained registerCommand pattern: `registerCommand(...).command(...)`.
145
- // The outer call's callee is a MemberExpression whose object is the
146
- // inner registerCommand call. The AST walker must follow callee +
147
- // MemberExpression.object so findTransport() locates the registerCommand
148
- // call and applies the correct transport allowlist.
149
- {
150
- code: `
151
- import type { Command } from "commander";
152
- import { cliIpcCall } from "../../ipc/cli-client.js";
153
-
154
- registerCommand(program, {
155
- name: "ipc-chained",
156
- transport: "ipc",
157
- build: () => {},
158
- }).command("subcmd").description("desc");
159
- `,
160
- },
161
- // Sibling subcommand composition: an index file (e.g. oauth/index.ts)
162
- // imports sibling subcommand files (./connect.js, ./disconnect.js) to
163
- // attach them under a parent group. The imported file is itself a
164
- // command and the rule checks its imports independently, so this can't
165
- // smuggle daemon internals.
166
- {
167
- code: `
168
- import type { Command } from "commander";
169
- import { registerCommand } from "../../lib/register-command.js";
170
- import { setupConnect } from "./connect.js";
171
- import { setupDisconnect } from "./disconnect.js";
172
-
173
- registerCommand(program, {
174
- name: "ipc-index-composition",
175
- transport: "ipc",
176
- build: () => {},
177
- });
54
+ import { getWorkspaceDir } from "../../util/platform.js";
55
+ import { readStdinSync } from "../../util/read-stdin.js";
56
+ import { APP_VERSION } from "../../version.js";
178
57
  `,
179
58
  },
180
- // Nested command file (commands/oauth/foo.ts) needs deeper relative
181
- // paths to the IPC client, lib/, logger, and output. Without the
182
- // depth-2 entries the rule would false-positive on every nested
183
- // command (oauth/*, platform/*).
59
+ // Nested command file reaching the same leaf zones one level deeper.
184
60
  {
61
+ filename: NESTED,
185
62
  code: `
186
- import type { Command } from "commander";
187
63
  import { cliIpcCall } from "../../../ipc/cli-client.js";
188
- import { registerCommand } from "../../lib/register-command.js";
189
- import { log } from "../../logger.js";
190
- import { writeOutput } from "../../output.js";
191
-
192
- registerCommand(program, {
193
- name: "ipc-nested",
194
- transport: "ipc",
195
- build: () => {},
196
- });
197
- `,
198
- },
199
- // Shared CLI utils (src/cli/utils/*) — sibling utility directory used
200
- // by task/ui/conversations-defer for ID resolution and parsing. Lives
201
- // alongside lib/ but historically wasn't on the allowlist.
202
- {
203
- code: `
204
- import type { Command } from "commander";
205
- import { cliIpcCall } from "../../ipc/cli-client.js";
206
- import { resolveConversationId } from "../utils/conversation-id.js";
207
- import { parseDuration } from "../utils/parse-duration.js";
208
-
209
- registerCommand(program, {
210
- name: "ipc-with-utils",
211
- transport: "ipc",
212
- build: () => {},
213
- });
214
- `,
215
- },
216
- // status.ts pattern: when the daemon is unreachable, the command falls
217
- // back to a local socket-path probe + platform helpers. Both imports
218
- // are part of the documented daemon-down fallback contract (§3.7).
219
- {
220
- code: `
221
- import type { Command } from "commander";
222
- import { cliIpcCall } from "../../ipc/cli-client.js";
223
- import { getSocketPath } from "../../ipc/socket-path.js";
224
- import { getWorkspaceDir } from "../../util/platform.js";
225
-
226
- registerCommand(program, {
227
- name: "ipc-status",
228
- transport: "ipc",
229
- build: () => {},
230
- });
64
+ import { isWeakOpenModel } from "../../../util/weak-open-model.js";
231
65
  `,
232
66
  },
233
- // local-tagged keys.ts pattern: the secure-key helpers are designed to
234
- // run in-process (not over IPC), so direct security/* imports are part
235
- // of the contract.
67
+ // Type-only imports from daemon internals are erased — always fine.
236
68
  {
237
- code: `
238
- import type { Command } from "commander";
239
- import { credentialKey } from "../../security/credential-key.js";
240
- import { getSecureKeyAsync } from "../../security/secure-keys.js";
241
-
242
- registerCommand(program, {
243
- name: "local-keys",
244
- transport: "local",
245
- build: () => {},
246
- });
247
- `,
69
+ filename: FILE,
70
+ code: `import type { ComparisonReport } from "../../runtime/harness/runner.js";`,
248
71
  },
249
- // local-tagged credential-execution.ts pattern: speaks to the CES
250
- // sidecar via service-contracts RPC; the daemon is not involved.
72
+ // Inline all-type import from a daemon module is also erased.
251
73
  {
252
- code: `
253
- import type { Command } from "commander";
254
- import { credentialRpc } from "@vellumai/service-contracts/credential-rpc";
255
- import { connect } from "../../credential-execution/client.js";
256
-
257
- registerCommand(program, {
258
- name: "local-ces",
259
- transport: "local",
260
- build: () => {},
261
- });
262
- `,
74
+ filename: FILE,
75
+ code: `import { type RepairContext } from "../../daemon/repair.js";`,
263
76
  },
264
- // local-tagged config.ts uses zod for schema validation and reaches
265
- // across to oauth/shared.ts for the managed-mode platform-connection
266
- // check (documented cross-namespace helper).
77
+ // Dynamic import() of a daemon module is the encouraged pattern — the rule
78
+ // only inspects static ImportDeclarations, so this must not be flagged.
267
79
  {
80
+ filename: FILE,
268
81
  code: `
269
- import type { Command } from "commander";
270
- import { z } from "zod";
271
- import { loadRawConfig } from "../../config/loader.js";
272
- import { requirePlatformConnection } from "./oauth/shared.js";
273
-
274
- registerCommand(program, {
275
- name: "local-config",
276
- transport: "local",
277
- build: () => {},
278
- });
82
+ async function run() {
83
+ const { doTheThing } = await import("../../runtime/foo.js");
84
+ await doTheThing();
85
+ }
279
86
  `,
280
87
  },
281
88
  ],
282
-
283
89
  invalid: [
284
- // registerCommand called without a string transport prop — the actual
285
- // missingTransport case (command-entry file forgot to declare its class).
90
+ // Hoisting a daemon runtime module.
286
91
  {
287
- code: `
288
- import type { Command } from "commander";
289
- import { cliIpcCall } from "../../ipc/cli-client.js";
290
-
291
- registerCommand(program, {
292
- name: "no-transport",
293
- build: () => {},
294
- });
295
- `,
296
- errors: [
297
- {
298
- messageId: "missingTransport",
299
- },
300
- ],
92
+ filename: FILE,
93
+ code: `import { doTheThing } from "../../runtime/foo.js";`,
94
+ errors: [{ messageId: "hoistedDaemonImport" }],
301
95
  },
302
- // ipc-tagged file importing a forbidden runtime route
96
+ // Hoisting the persistence schema.
303
97
  {
304
- code: `
305
- import type { Command } from "commander";
306
- import { cliIpcCall } from "../../ipc/cli-client.js";
307
- import { healthRoutes } from "../../runtime/routes/health-routes.js";
308
-
309
- registerCommand(program, {
310
- name: "bad-ipc",
311
- transport: "ipc",
312
- build: () => {},
313
- });
314
- `,
315
- errors: [
316
- {
317
- messageId: "forbiddenImport",
318
- data: {
319
- transport: "ipc",
320
- source: "../../runtime/routes/health-routes.js",
321
- },
322
- },
323
- ],
98
+ filename: FILE,
99
+ code: `import { conversations } from "../../persistence/schema/conversations.js";`,
100
+ errors: [{ messageId: "hoistedDaemonImport" }],
324
101
  },
325
- // ipc-tagged file importing a skills catalog module
102
+ // Hoisting the platform client.
326
103
  {
327
- code: `
328
- import type { Command } from "commander";
329
- import { cliIpcCall } from "../../ipc/cli-client.js";
330
- import { SkillsCatalog } from "../../skills/catalog.js";
331
-
332
- registerCommand(program, {
333
- name: "bad-ipc-skills",
334
- transport: "ipc",
335
- build: () => {},
336
- });
337
- `,
338
- errors: [
339
- {
340
- messageId: "forbiddenImport",
341
- data: {
342
- transport: "ipc",
343
- source: "../../skills/catalog.js",
344
- },
345
- },
346
- ],
104
+ filename: NESTED,
105
+ code: `import { VellumPlatformClient } from "../../../platform/client.js";`,
106
+ errors: [{ messageId: "hoistedDaemonImport" }],
347
107
  },
348
- // local-tagged file importing a forbidden runtime route
108
+ // A non-leaf module under providers/ is daemon-internal (only util/ etc.
109
+ // are exempt, not providers/).
349
110
  {
350
- code: `
351
- import type { Command } from "commander";
352
- import { loadRawConfig } from "../../config/loader.js";
353
- import { healthRoutes } from "../../runtime/routes/health-routes.js";
354
-
355
- registerCommand(program, {
356
- name: "bad-local",
357
- transport: "local",
358
- build: () => {},
359
- });
360
- `,
361
- errors: [
362
- {
363
- messageId: "forbiddenImport",
364
- data: {
365
- transport: "local",
366
- source: "../../runtime/routes/health-routes.js",
367
- },
368
- },
369
- ],
370
- },
371
- // Nested command file (commands/oauth/foo.ts) STILL rejects runtime
372
- // route imports. Locking in the boundary so the depth-2 allowlist
373
- // additions don't accidentally open daemon-internal namespaces.
374
- {
375
- code: `
376
- import type { Command } from "commander";
377
- import { cliIpcCall } from "../../../ipc/cli-client.js";
378
- import { healthRoutes } from "../../../runtime/routes/health-routes.js";
379
-
380
- registerCommand(program, {
381
- name: "bad-ipc-nested",
382
- transport: "ipc",
383
- build: () => {},
384
- });
385
- `,
386
- errors: [
387
- {
388
- messageId: "forbiddenImport",
389
- data: {
390
- transport: "ipc",
391
- source: "../../../runtime/routes/health-routes.js",
392
- },
393
- },
394
- ],
111
+ filename: FILE,
112
+ code: `import { resolveProvider } from "../../providers/registry.js";`,
113
+ errors: [{ messageId: "hoistedDaemonImport" }],
395
114
  },
396
- // services/, agents/, llm/ namespaces remain forbidden for ipc commands.
115
+ // Value import mixed with a type specifier still counts (not all-type).
397
116
  {
398
- code: `
399
- import type { Command } from "commander";
400
- import { cliIpcCall } from "../../ipc/cli-client.js";
401
- import { dispatchAgent } from "../../agents/dispatcher.js";
402
-
403
- registerCommand(program, {
404
- name: "bad-ipc-agents",
405
- transport: "ipc",
406
- build: () => {},
407
- });
408
- `,
409
- errors: [
410
- {
411
- messageId: "forbiddenImport",
412
- data: {
413
- transport: "ipc",
414
- source: "../../agents/dispatcher.js",
415
- },
416
- },
417
- ],
117
+ filename: FILE,
118
+ code: `import { run, type Opts } from "../../security/keys.js";`,
119
+ errors: [{ messageId: "hoistedDaemonImport" }],
418
120
  },
419
121
  ],
420
122
  });