@vellumai/assistant 0.5.12 → 0.5.14

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 (442) hide show
  1. package/.env.example +1 -6
  2. package/AGENTS.md +4 -0
  3. package/ARCHITECTURE.md +0 -1
  4. package/Dockerfile +41 -9
  5. package/bunfig.toml +1 -0
  6. package/docs/architecture/memory.md +3 -3
  7. package/node_modules/@vellumai/ces-contracts/src/index.ts +7 -0
  8. package/node_modules/@vellumai/ces-contracts/src/rpc.ts +5 -0
  9. package/openapi.yaml +127 -22
  10. package/package.json +1 -1
  11. package/src/__tests__/access-request-decision.test.ts +2 -32
  12. package/src/__tests__/actor-token-service.test.ts +1 -31
  13. package/src/__tests__/anthropic-provider.test.ts +53 -40
  14. package/src/__tests__/app-git-history.test.ts +9 -17
  15. package/src/__tests__/app-git-service.test.ts +14 -20
  16. package/src/__tests__/app-store-dir-names.test.ts +10 -20
  17. package/src/__tests__/approval-cascade.test.ts +2 -19
  18. package/src/__tests__/approval-primitive.test.ts +2 -27
  19. package/src/__tests__/approval-routes-http.test.ts +2 -30
  20. package/src/__tests__/assistant-events-sse-hardening.test.ts +2 -28
  21. package/src/__tests__/assistant-feature-flags-integration.test.ts +2 -45
  22. package/src/__tests__/attachments-store.test.ts +5 -32
  23. package/src/__tests__/audit-log-rotation.test.ts +5 -36
  24. package/src/__tests__/avatar-e2e.test.ts +1 -9
  25. package/src/__tests__/avatar-generator.test.ts +1 -7
  26. package/src/__tests__/browser-fill-credential.test.ts +0 -4
  27. package/src/__tests__/browser-manager.test.ts +0 -6
  28. package/src/__tests__/call-controller.test.ts +1 -22
  29. package/src/__tests__/call-conversation-messages.test.ts +0 -21
  30. package/src/__tests__/call-domain.test.ts +0 -25
  31. package/src/__tests__/call-pointer-messages.test.ts +0 -21
  32. package/src/__tests__/call-recovery.test.ts +0 -22
  33. package/src/__tests__/call-routes-http.test.ts +0 -24
  34. package/src/__tests__/call-store.test.ts +0 -21
  35. package/src/__tests__/cancel-resolves-conversation-key.test.ts +0 -24
  36. package/src/__tests__/canonical-guardian-store.test.ts +48 -21
  37. package/src/__tests__/channel-approval-routes.test.ts +6 -26
  38. package/src/__tests__/channel-approvals.test.ts +1 -38
  39. package/src/__tests__/channel-delivery-store.test.ts +0 -21
  40. package/src/__tests__/channel-guardian.test.ts +0 -26
  41. package/src/__tests__/channel-reply-delivery.test.ts +5 -0
  42. package/src/__tests__/channel-retry-sweep.test.ts +0 -21
  43. package/src/__tests__/checker.test.ts +26 -61
  44. package/src/__tests__/clawhub.test.ts +9 -25
  45. package/src/__tests__/cli-command-risk-guard.test.ts +0 -18
  46. package/src/__tests__/config-loader-backfill.test.ts +9 -28
  47. package/src/__tests__/config-schema-cmd.test.ts +5 -25
  48. package/src/__tests__/config-schema.test.ts +21 -40
  49. package/src/__tests__/config-watcher.test.ts +4 -91
  50. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -21
  51. package/src/__tests__/contacts-tools.test.ts +0 -21
  52. package/src/__tests__/context-memory-e2e.test.ts +0 -21
  53. package/src/__tests__/context-window-manager.test.ts +130 -3
  54. package/src/__tests__/conversation-abort-tool-results.test.ts +0 -4
  55. package/src/__tests__/conversation-agent-loop-overflow.test.ts +0 -4
  56. package/src/__tests__/conversation-agent-loop.test.ts +0 -4
  57. package/src/__tests__/conversation-attachments.test.ts +1 -24
  58. package/src/__tests__/conversation-attention-store.test.ts +0 -21
  59. package/src/__tests__/conversation-attention-telegram.test.ts +0 -22
  60. package/src/__tests__/conversation-clear-safety.test.ts +0 -22
  61. package/src/__tests__/conversation-confirmation-signals.test.ts +2 -21
  62. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +0 -24
  63. package/src/__tests__/conversation-disk-view-integration.test.ts +1 -23
  64. package/src/__tests__/conversation-disk-view.test.ts +5 -27
  65. package/src/__tests__/conversation-error.test.ts +1 -1
  66. package/src/__tests__/conversation-fork-crud.test.ts +1 -33
  67. package/src/__tests__/conversation-fork-route.test.ts +0 -27
  68. package/src/__tests__/conversation-history-web-search.test.ts +23 -16
  69. package/src/__tests__/conversation-init.benchmark.test.ts +22 -43
  70. package/src/__tests__/conversation-key-store-disk-view.test.ts +8 -34
  71. package/src/__tests__/conversation-load-history-repair.test.ts +0 -4
  72. package/src/__tests__/conversation-pre-run-repair.test.ts +0 -4
  73. package/src/__tests__/conversation-provider-retry-repair.test.ts +0 -4
  74. package/src/__tests__/conversation-queue.test.ts +8 -8
  75. package/src/__tests__/conversation-routes-disk-view.test.ts +13 -51
  76. package/src/__tests__/conversation-runtime-assembly.test.ts +64 -38
  77. package/src/__tests__/conversation-slash-commands.test.ts +5 -0
  78. package/src/__tests__/conversation-slash-queue.test.ts +0 -4
  79. package/src/__tests__/conversation-slash-unknown.test.ts +0 -4
  80. package/src/__tests__/conversation-speed-override.test.ts +326 -0
  81. package/src/__tests__/conversation-starter-routes.test.ts +0 -23
  82. package/src/__tests__/conversation-store.test.ts +0 -21
  83. package/src/__tests__/conversation-unread-route.test.ts +0 -24
  84. package/src/__tests__/conversation-usage.test.ts +56 -21
  85. package/src/__tests__/conversation-wipe.test.ts +0 -21
  86. package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -4
  87. package/src/__tests__/conversation-workspace-injection.test.ts +0 -4
  88. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -4
  89. package/src/__tests__/credential-execution-shell-lockdown.test.ts +8 -5
  90. package/src/__tests__/credential-vault-unit.test.ts +9 -428
  91. package/src/__tests__/credentials-cli.test.ts +10 -10
  92. package/src/__tests__/daemon-assistant-events.test.ts +0 -19
  93. package/src/__tests__/date-context.test.ts +77 -97
  94. package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +7 -24
  95. package/src/__tests__/db-llm-request-log-provider-migration.test.ts +29 -42
  96. package/src/__tests__/delete-managed-skill-tool.test.ts +2 -10
  97. package/src/__tests__/deterministic-verification-control-plane.test.ts +1 -26
  98. package/src/__tests__/docker-signing-key-bootstrap.test.ts +61 -15
  99. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -36
  100. package/src/__tests__/email-cli.test.ts +6 -6
  101. package/src/__tests__/ephemeral-permissions.test.ts +5 -17
  102. package/src/__tests__/first-greeting.test.ts +11 -32
  103. package/src/__tests__/followup-tools.test.ts +0 -21
  104. package/src/__tests__/gateway-only-enforcement.test.ts +0 -20
  105. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -23
  106. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -23
  107. package/src/__tests__/guardian-action-followup-store.test.ts +0 -21
  108. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -21
  109. package/src/__tests__/guardian-action-late-reply.test.ts +0 -21
  110. package/src/__tests__/guardian-action-store.test.ts +0 -21
  111. package/src/__tests__/guardian-action-sweep.test.ts +0 -21
  112. package/src/__tests__/guardian-binding-drift-heal.test.ts +0 -23
  113. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +172 -22
  114. package/src/__tests__/guardian-dispatch.test.ts +0 -21
  115. package/src/__tests__/guardian-grant-minting.test.ts +0 -22
  116. package/src/__tests__/guardian-outbound-http.test.ts +0 -22
  117. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -23
  118. package/src/__tests__/guardian-routing-invariants.test.ts +0 -22
  119. package/src/__tests__/guardian-routing-state.test.ts +0 -22
  120. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -24
  121. package/src/__tests__/headless-browser-interactions.test.ts +0 -4
  122. package/src/__tests__/headless-browser-navigate.test.ts +0 -4
  123. package/src/__tests__/headless-browser-read-tools.test.ts +0 -4
  124. package/src/__tests__/headless-browser-snapshot.test.ts +0 -4
  125. package/src/__tests__/heartbeat-service.test.ts +99 -26
  126. package/src/__tests__/hooks-blocking.test.ts +3 -3
  127. package/src/__tests__/hooks-config.test.ts +7 -7
  128. package/src/__tests__/hooks-discovery.test.ts +3 -3
  129. package/src/__tests__/hooks-integration.test.ts +5 -5
  130. package/src/__tests__/hooks-manager.test.ts +3 -3
  131. package/src/__tests__/hooks-runner.test.ts +5 -23
  132. package/src/__tests__/hooks-settings.test.ts +3 -3
  133. package/src/__tests__/hooks-templates.test.ts +3 -3
  134. package/src/__tests__/http-conversation-lineage.test.ts +0 -27
  135. package/src/__tests__/identity-intro-cache.test.ts +0 -4
  136. package/src/__tests__/inbound-invite-redemption.test.ts +0 -22
  137. package/src/__tests__/inline-skill-load-permissions.test.ts +5 -16
  138. package/src/__tests__/intent-routing.test.ts +2 -55
  139. package/src/__tests__/invite-redemption-service.test.ts +0 -21
  140. package/src/__tests__/invite-routes-http.test.ts +0 -21
  141. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +0 -17
  142. package/src/__tests__/journal-context.test.ts +8 -75
  143. package/src/__tests__/list-messages-attachments.test.ts +0 -22
  144. package/src/__tests__/llm-context-route-provider.test.ts +0 -21
  145. package/src/__tests__/llm-request-log-turn-query.test.ts +46 -28
  146. package/src/__tests__/llm-usage-store.test.ts +0 -21
  147. package/src/__tests__/log-export-workspace.test.ts +1 -1
  148. package/src/__tests__/managed-skill-lifecycle.test.ts +1 -1
  149. package/src/__tests__/managed-store.test.ts +1 -1
  150. package/src/__tests__/mcp-cli.test.ts +7 -10
  151. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +0 -21
  152. package/src/__tests__/memory-jobs-worker-backoff.test.ts +0 -11
  153. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -21
  154. package/src/__tests__/memory-recall-log-store.test.ts +0 -27
  155. package/src/__tests__/memory-recall-quality.test.ts +0 -21
  156. package/src/__tests__/memory-regressions.experimental.test.ts +31 -30
  157. package/src/__tests__/memory-regressions.test.ts +282 -70
  158. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -21
  159. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -21
  160. package/src/__tests__/messaging-send-tool.test.ts +201 -0
  161. package/src/__tests__/migration-cross-version-compatibility.test.ts +18 -13
  162. package/src/__tests__/migration-export-http.test.ts +7 -1
  163. package/src/__tests__/migration-import-commit-http.test.ts +16 -14
  164. package/src/__tests__/migration-import-preflight-http.test.ts +27 -44
  165. package/src/__tests__/migration-validate-http.test.ts +1 -28
  166. package/src/__tests__/native-web-search.test.ts +25 -22
  167. package/src/__tests__/navigate-settings-tab.test.ts +6 -2
  168. package/src/__tests__/non-member-access-request.test.ts +0 -22
  169. package/src/__tests__/notification-guardian-path.test.ts +0 -21
  170. package/src/__tests__/notification-schedule-dedup.test.ts +1 -25
  171. package/src/__tests__/oauth-apps-routes.test.ts +103 -2
  172. package/src/__tests__/oauth-cli.test.ts +52 -0
  173. package/src/__tests__/oauth-provider-profiles.test.ts +0 -16
  174. package/src/__tests__/oauth-provider-serializer.test.ts +232 -0
  175. package/src/__tests__/oauth-providers-routes.test.ts +257 -0
  176. package/src/__tests__/oauth-store.test.ts +0 -21
  177. package/src/__tests__/onboarding-template-contract.test.ts +2 -2
  178. package/src/__tests__/openai-provider.test.ts +261 -0
  179. package/src/__tests__/pairing-concurrent.test.ts +6 -6
  180. package/src/__tests__/pairing-routes.test.ts +7 -1
  181. package/src/__tests__/path-policy.test.ts +1 -1
  182. package/src/__tests__/platform.test.ts +62 -251
  183. package/src/__tests__/playbook-execution.test.ts +0 -21
  184. package/src/__tests__/playbook-tools.test.ts +0 -21
  185. package/src/__tests__/pricing.test.ts +100 -0
  186. package/src/__tests__/relay-server.test.ts +1 -25
  187. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -24
  188. package/src/__tests__/runtime-events-sse-parity.test.ts +2 -24
  189. package/src/__tests__/runtime-events-sse.test.ts +0 -24
  190. package/src/__tests__/sandbox-diagnostics.test.ts +2 -1
  191. package/src/__tests__/scaffold-managed-skill-tool.test.ts +1 -1
  192. package/src/__tests__/schedule-store.test.ts +0 -21
  193. package/src/__tests__/schedule-tools.test.ts +0 -21
  194. package/src/__tests__/scheduler-recurrence.test.ts +0 -21
  195. package/src/__tests__/scoped-approval-grants.test.ts +0 -21
  196. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -21
  197. package/src/__tests__/secret-allowlist.test.ts +1 -1
  198. package/src/__tests__/secret-ingress-channel.test.ts +0 -5
  199. package/src/__tests__/secret-ingress-cli.test.ts +0 -6
  200. package/src/__tests__/secret-ingress-http.test.ts +0 -5
  201. package/src/__tests__/secret-ingress.test.ts +0 -5
  202. package/src/__tests__/send-endpoint-busy.test.ts +0 -24
  203. package/src/__tests__/sequence-store.test.ts +0 -21
  204. package/src/__tests__/server-history-render.test.ts +0 -24
  205. package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -4
  206. package/src/__tests__/skill-feature-flags.test.ts +8 -0
  207. package/src/__tests__/skill-load-inline-command.test.ts +9 -0
  208. package/src/__tests__/skill-load-inline-includes.test.ts +9 -0
  209. package/src/__tests__/skill-load-tool.test.ts +11 -0
  210. package/src/__tests__/skill-secret-handling-guard.test.ts +212 -0
  211. package/src/__tests__/skills-uninstall.test.ts +10 -8
  212. package/src/__tests__/skills.test.ts +1 -1
  213. package/src/__tests__/slack-channel-config.test.ts +1 -1
  214. package/src/__tests__/slack-inbound-verification.test.ts +0 -22
  215. package/src/__tests__/starter-bundle.test.ts +4 -1
  216. package/src/__tests__/suggestion-routes.test.ts +2 -0
  217. package/src/__tests__/system-prompt.test.ts +1 -1
  218. package/src/__tests__/terminal-tools.test.ts +1 -1
  219. package/src/__tests__/test-preload.ts +31 -0
  220. package/src/__tests__/token-estimator-accuracy.benchmark.test.ts +1 -1
  221. package/src/__tests__/tool-execution-abort-cleanup.test.ts +1 -1
  222. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +1 -1
  223. package/src/__tests__/tool-executor.test.ts +0 -20
  224. package/src/__tests__/tool-input-summary.test.ts +124 -0
  225. package/src/__tests__/tool-preview-lifecycle.test.ts +2 -1
  226. package/src/__tests__/trust-store.test.ts +7 -1
  227. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +1 -1
  228. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +1 -1
  229. package/src/__tests__/trusted-contact-multichannel.test.ts +1 -1
  230. package/src/__tests__/trusted-contact-verification.test.ts +1 -1
  231. package/src/__tests__/turn-boundary-resolution.test.ts +1 -1
  232. package/src/__tests__/twilio-routes.test.ts +1 -1
  233. package/src/__tests__/update-bulletin.test.ts +1 -1
  234. package/src/__tests__/vbundle-pax-and-symlink.test.ts +1 -1
  235. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +1 -0
  236. package/src/__tests__/voice-scoped-grant-consumer.test.ts +1 -1
  237. package/src/__tests__/voice-session-bridge.test.ts +1 -1
  238. package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +4 -4
  239. package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +1 -1
  240. package/src/__tests__/workspace-migration-down-functions.test.ts +15 -3
  241. package/src/__tests__/workspace-migration-seed-device-id.test.ts +40 -4
  242. package/src/agent/loop.ts +6 -9
  243. package/src/approvals/guardian-decision-primitive.ts +46 -18
  244. package/src/approvals/guardian-request-resolvers.ts +19 -2
  245. package/src/calls/active-call-lease.ts +2 -2
  246. package/src/cli/AGENTS.md +1 -1
  247. package/src/cli/commands/doctor.ts +9 -9
  248. package/src/cli/commands/memory.ts +142 -0
  249. package/src/cli/commands/oauth/__tests__/connect.test.ts +13 -11
  250. package/src/cli/commands/oauth/__tests__/ping.test.ts +1 -1
  251. package/src/cli/commands/oauth/connect.ts +13 -12
  252. package/src/cli/commands/oauth/index.ts +1 -1
  253. package/src/cli/commands/oauth/providers.ts +47 -62
  254. package/src/cli/commands/platform/__tests__/connect.test.ts +250 -0
  255. package/src/cli/commands/platform/__tests__/disconnect.test.ts +290 -0
  256. package/src/cli/commands/platform/__tests__/status.test.ts +282 -0
  257. package/src/cli/commands/platform/connect.ts +17 -7
  258. package/src/cli/commands/platform/disconnect.ts +28 -3
  259. package/src/cli/commands/platform/index.ts +3 -3
  260. package/src/cli.ts +1 -299
  261. package/src/config/assistant-feature-flags.ts +23 -15
  262. package/src/config/bundled-skills/app-builder/TOOLS.json +16 -0
  263. package/src/config/bundled-skills/app-builder/tools/app-create.ts +4 -0
  264. package/src/config/bundled-skills/app-builder/tools/app-delete.ts +5 -1
  265. package/src/config/bundled-skills/app-builder/tools/app-generate-icon.ts +9 -1
  266. package/src/config/bundled-skills/app-builder/tools/app-refresh.ts +5 -1
  267. package/src/config/bundled-skills/contacts/TOOLS.json +8 -0
  268. package/src/config/bundled-skills/contacts/tools/contact-search.ts +10 -1
  269. package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +16 -2
  270. package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +1 -0
  271. package/src/config/bundled-skills/messaging/SKILL.md +7 -7
  272. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +37 -0
  273. package/src/config/bundled-skills/settings/TOOLS.json +5 -3
  274. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +4 -2
  275. package/src/config/bundled-skills/slack/SKILL.md +18 -0
  276. package/src/config/env-registry.ts +15 -11
  277. package/src/config/env.ts +1 -11
  278. package/src/config/feature-flag-registry.json +17 -1
  279. package/src/config/schema.ts +4 -0
  280. package/src/config/schemas/heartbeat.ts +6 -1
  281. package/src/config/schemas/inference.ts +14 -3
  282. package/src/config/schemas/memory-processing.ts +16 -8
  283. package/src/config/schemas/memory-retrieval.ts +3 -3
  284. package/src/config/skills.ts +1 -1
  285. package/src/context/window-manager.ts +174 -51
  286. package/src/credential-execution/client.ts +14 -2
  287. package/src/credential-execution/executable-discovery.ts +2 -2
  288. package/src/daemon/approved-devices-store.ts +2 -2
  289. package/src/daemon/assistant-attachments.ts +2 -0
  290. package/src/daemon/config-watcher.ts +4 -50
  291. package/src/daemon/conversation-agent-loop-handlers.ts +9 -1
  292. package/src/daemon/conversation-agent-loop.ts +12 -0
  293. package/src/daemon/conversation-error.ts +3 -5
  294. package/src/daemon/conversation-history.ts +7 -3
  295. package/src/daemon/conversation-lifecycle.ts +16 -0
  296. package/src/daemon/conversation-messaging.ts +1 -0
  297. package/src/daemon/conversation-notifiers.ts +67 -30
  298. package/src/daemon/conversation-process.ts +161 -2
  299. package/src/daemon/conversation-queue-manager.ts +2 -0
  300. package/src/daemon/conversation-runtime-assembly.ts +33 -11
  301. package/src/daemon/conversation-slash.ts +14 -3
  302. package/src/daemon/conversation-tool-setup.ts +2 -0
  303. package/src/daemon/conversation-usage.ts +32 -4
  304. package/src/daemon/conversation.ts +33 -1
  305. package/src/daemon/daemon-control.ts +32 -16
  306. package/src/daemon/date-context.ts +47 -45
  307. package/src/daemon/dictation-profile-store.ts +2 -2
  308. package/src/daemon/first-greeting.ts +6 -1
  309. package/src/daemon/handlers/conversations.ts +19 -0
  310. package/src/daemon/handlers/shared.ts +14 -21
  311. package/src/daemon/lifecycle.ts +18 -15
  312. package/src/daemon/message-types/conversations.ts +2 -0
  313. package/src/daemon/message-types/guardian-actions.ts +3 -17
  314. package/src/daemon/message-types/integrations.ts +11 -1
  315. package/src/daemon/message-types/messages.ts +1 -0
  316. package/src/daemon/pairing-store.ts +2 -79
  317. package/src/daemon/server.ts +154 -8
  318. package/src/daemon/watch-handler.ts +65 -21
  319. package/src/email/guardrails.ts +3 -3
  320. package/src/heartbeat/heartbeat-service.ts +14 -7
  321. package/src/hooks/cli.ts +2 -2
  322. package/src/hooks/config.ts +2 -2
  323. package/src/hooks/discovery.ts +2 -2
  324. package/src/hooks/manager.ts +2 -2
  325. package/src/hooks/runner.ts +5 -2
  326. package/src/hooks/templates.ts +2 -2
  327. package/src/index.ts +0 -12
  328. package/src/memory/admin.ts +181 -2
  329. package/src/memory/app-git-service.ts +61 -4
  330. package/src/memory/attachments-store.ts +2 -0
  331. package/src/memory/canonical-guardian-store.ts +16 -0
  332. package/src/memory/conversation-queries.ts +6 -6
  333. package/src/memory/db-init.ts +8 -0
  334. package/src/memory/embedding-local.ts +5 -2
  335. package/src/memory/indexer.ts +44 -26
  336. package/src/memory/items-extractor.ts +34 -82
  337. package/src/memory/job-handlers/batch-extraction.ts +741 -0
  338. package/src/memory/job-handlers/journal-carry-forward.test.ts +383 -0
  339. package/src/memory/job-handlers/journal-carry-forward.ts +255 -0
  340. package/src/memory/jobs-store.ts +28 -0
  341. package/src/memory/jobs-worker.ts +56 -9
  342. package/src/memory/journal-memory.ts +8 -2
  343. package/src/memory/lifecycle-events-store.ts +4 -2
  344. package/src/memory/llm-request-log-store.ts +40 -2
  345. package/src/memory/llm-usage-store.ts +4 -3
  346. package/src/memory/migrations/199-guardian-request-enrichment-columns.ts +71 -0
  347. package/src/memory/migrations/200-usage-llm-call-count.ts +20 -0
  348. package/src/memory/migrations/index.ts +2 -0
  349. package/src/memory/query-expansion.ts +83 -0
  350. package/src/memory/retriever.test.ts +119 -0
  351. package/src/memory/retriever.ts +513 -105
  352. package/src/memory/schema/guardian.ts +4 -0
  353. package/src/memory/schema/infrastructure.ts +1 -0
  354. package/src/memory/search/formatting.test.ts +140 -0
  355. package/src/memory/search/formatting.ts +143 -198
  356. package/src/memory/search/mmr.ts +136 -0
  357. package/src/memory/search/staleness.ts +0 -15
  358. package/src/memory/search/tier-classifier.ts +10 -21
  359. package/src/memory/search/types.ts +17 -0
  360. package/src/messaging/providers/slack/adapter.ts +51 -5
  361. package/src/notifications/broadcaster.ts +13 -0
  362. package/src/notifications/copy-composer.ts +8 -0
  363. package/src/oauth/connect-orchestrator.ts +1 -1
  364. package/src/oauth/connection-resolver.ts +2 -2
  365. package/src/oauth/provider-serializer.ts +116 -0
  366. package/src/permissions/trust-store.ts +24 -7
  367. package/src/prompts/__tests__/build-cli-reference-section.test.ts +5 -0
  368. package/src/prompts/journal-context.ts +54 -36
  369. package/src/prompts/persona-resolver.ts +1 -1
  370. package/src/prompts/system-prompt.ts +38 -28
  371. package/src/prompts/templates/BOOTSTRAP.md +14 -1
  372. package/src/prompts/templates/HEARTBEAT.md +10 -0
  373. package/src/prompts/templates/NOW.md +19 -25
  374. package/src/prompts/templates/SOUL.md +13 -1
  375. package/src/prompts/templates/UPDATES.md +12 -0
  376. package/src/prompts/update-bulletin.ts +1 -1
  377. package/src/providers/anthropic/client.ts +89 -18
  378. package/src/providers/model-catalog.ts +22 -2
  379. package/src/providers/model-intents.ts +2 -2
  380. package/src/providers/openai/client.ts +40 -1
  381. package/src/providers/retry.ts +23 -4
  382. package/src/providers/types.ts +2 -0
  383. package/src/runtime/assistant-scope.ts +1 -1
  384. package/src/runtime/auth/__tests__/credential-service.test.ts +1 -0
  385. package/src/runtime/auth/route-policy.ts +1 -0
  386. package/src/runtime/auth/token-service.ts +51 -29
  387. package/src/runtime/confirmation-request-guardian-bridge.ts +3 -1
  388. package/src/runtime/guardian-decision-types.ts +16 -10
  389. package/src/runtime/http-server.ts +10 -29
  390. package/src/runtime/http-types.ts +1 -0
  391. package/src/runtime/migrations/rebind-secrets-screen.ts +2 -2
  392. package/src/runtime/migrations/vbundle-builder.ts +7 -4
  393. package/src/runtime/migrations/vbundle-import-analyzer.ts +0 -4
  394. package/src/runtime/migrations/vbundle-importer.ts +1 -1
  395. package/src/runtime/routes/conversation-query-routes.ts +40 -8
  396. package/src/runtime/routes/conversation-routes.ts +125 -3
  397. package/src/runtime/routes/guardian-action-routes.ts +9 -3
  398. package/src/runtime/routes/identity-routes.ts +25 -4
  399. package/src/runtime/routes/llm-context-normalization.ts +1 -0
  400. package/src/runtime/routes/log-export-routes.ts +34 -12
  401. package/src/runtime/routes/migration-routes.ts +6 -10
  402. package/src/runtime/routes/oauth-apps.ts +2 -9
  403. package/src/runtime/routes/oauth-providers.ts +60 -0
  404. package/src/runtime/routes/pairing-routes.ts +0 -8
  405. package/src/runtime/routes/secret-routes.ts +9 -2
  406. package/src/runtime/routes/settings-routes.ts +0 -1
  407. package/src/runtime/routes/telemetry-routes.ts +16 -4
  408. package/src/security/encrypted-store.ts +2 -2
  409. package/src/security/secret-allowlist.ts +3 -3
  410. package/src/signals/emit-event.ts +42 -0
  411. package/src/signals/user-message.ts +37 -0
  412. package/src/telemetry/usage-telemetry-reporter.test.ts +83 -19
  413. package/src/telemetry/usage-telemetry-reporter.ts +23 -17
  414. package/src/tools/browser/browser-manager.ts +2 -2
  415. package/src/tools/browser/runtime-check.ts +2 -2
  416. package/src/tools/credentials/vault.ts +2 -249
  417. package/src/tools/memory/definitions.ts +1 -1
  418. package/src/tools/memory/handlers.test.ts +50 -8
  419. package/src/tools/memory/handlers.ts +3 -1
  420. package/src/tools/side-effects.ts +1 -6
  421. package/src/tools/terminal/safe-env.ts +3 -2
  422. package/src/tools/terminal/shell.ts +11 -14
  423. package/src/tools/tool-approval-handler.ts +20 -1
  424. package/src/tools/tool-input-summary.ts +66 -0
  425. package/src/tools/types.ts +4 -0
  426. package/src/usage/types.ts +4 -0
  427. package/src/util/device-id.ts +10 -10
  428. package/src/util/platform.ts +72 -124
  429. package/src/util/pricing.ts +19 -6
  430. package/src/util/strip-comment-lines.ts +28 -0
  431. package/src/workspace/git-service.ts +8 -18
  432. package/src/workspace/migrations/003-seed-device-id.ts +6 -4
  433. package/src/workspace/migrations/016-extract-feature-flags-to-protected.ts +7 -1
  434. package/src/workspace/migrations/017-seed-persona-dirs.ts +2 -4
  435. package/src/workspace/migrations/021-move-signals-to-workspace.ts +84 -0
  436. package/src/workspace/migrations/022-move-hooks-to-workspace.ts +94 -0
  437. package/src/workspace/migrations/023-move-config-files-to-workspace.ts +86 -0
  438. package/src/workspace/migrations/024-move-runtime-files-to-workspace.ts +126 -0
  439. package/src/workspace/migrations/migrate-to-workspace-volume.ts +3 -6
  440. package/src/workspace/migrations/registry.ts +8 -0
  441. package/src/signals/confirm.ts +0 -82
  442. package/src/signals/trust-rule.ts +0 -174
package/.env.example CHANGED
@@ -21,12 +21,7 @@ VELLUM_PLATFORM_URL=https://dev-platform.vellum.ai
21
21
 
22
22
  # --- Sentry (crash reporting) ---
23
23
  # Omit to disable Sentry.
24
- SENTRY_DSN_ASSISTANT=https://db2d38a082e4ee35eeaea08c44b376ec@o4504590528675840.ingest.us.sentry.io/4510874712276992
25
-
26
- # --- Telemetry ---
27
- # Omit to disable telemetry reporting.
28
- TELEMETRY_PLATFORM_URL=https://platform.vellum.ai
29
- TELEMETRY_APP_TOKEN=e01cf85768cc3617e986f0a7f1966b72e25316526c5db54c8b94a9c3c5c9eaed
24
+ SENTRY_DSN_ASSISTANT=
30
25
 
31
26
  # --- Network proxy ---
32
27
  # Comma-separated host patterns allowed through the proxy.
package/AGENTS.md CHANGED
@@ -11,3 +11,7 @@ When you introduce a new env var that the assistant process needs to read at run
11
11
  `safe-env.ts` maintains the allowlist of env vars that are forwarded to agent-spawned child processes (bash tool, skill sandbox, etc.). Anything not on the list is stripped to prevent credential leakage. If your new var is needed by commands the agent runs, it must be added.
12
12
 
13
13
  **Default to including it.** If the var doesn't contain secrets (e.g. a URL, a feature flag, a path, a mode string), add it. Only omit it if it carries credential material (tokens, passwords, private keys) — those must stay isolated to CES.
14
+
15
+ ## Code comments
16
+
17
+ When writing or updating comments, **do not reference code that has been removed.** Comments should describe the current state of the codebase, not narrate its history. Avoid phrases like "no longer does X", "previously used Y", or "was removed in PR Z" — future readers should not need to understand past implementations to understand the current code.
package/ARCHITECTURE.md CHANGED
@@ -707,7 +707,6 @@ graph LR
707
707
 
708
708
  subgraph "~/.vellum/ (Root Files)"
709
709
  TRUST["protected/trust.json<br/>Tool permission rules"]
710
- FF_TOKEN["feature-flag-token<br/>Client token for feature-flag API"]
711
710
  end
712
711
 
713
712
  subgraph "~/.vellum/workspace/ (Workspace Files)"
package/Dockerfile CHANGED
@@ -38,23 +38,55 @@ WORKDIR /app/assistant
38
38
 
39
39
  # Install runtime dependencies for Playwright and tree-sitter
40
40
  RUN apt-get update && apt-get install -y \
41
- curl \
42
- unzip \
41
+ bubblewrap \
43
42
  ca-certificates \
44
- python3 \
45
- libnss3 \
46
- libfreetype6 \
47
- libharfbuzz0b \
43
+ curl \
44
+ ffmpeg \
48
45
  fonts-freefont-ttf \
49
- make \
50
46
  g++ \
51
47
  git \
52
- sudo \
53
48
  htop \
54
- procps \
55
49
  jq \
50
+ libasound2 \
51
+ libatk-bridge2.0-0 \
52
+ libatk1.0-0 \
53
+ libatspi2.0-0 \
54
+ libcairo2 \
55
+ libcups2 \
56
+ libdrm2 \
57
+ libfreetype6 \
58
+ libgbm1 \
59
+ libharfbuzz0b \
60
+ libnspr4 \
61
+ libnss3 \
62
+ libpango-1.0-0 \
63
+ libpangocairo-1.0-0 \
64
+ libx11-6 \
65
+ libx11-xcb1 \
66
+ libxcb-dri3-0 \
67
+ libxcb1 \
68
+ libxcomposite1 \
69
+ libxdamage1 \
70
+ libxext6 \
71
+ libxfixes3 \
72
+ libxi6 \
73
+ libxkbcommon0 \
74
+ libxrandr2 \
75
+ libxrender1 \
76
+ libxshmfence1 \
77
+ libxtst6 \
78
+ lsof \
79
+ make \
80
+ openssl \
81
+ procps \
82
+ python3 \
83
+ sqlite3 \
84
+ sudo \
85
+ unzip \
56
86
  uuid-runtime \
57
87
  vim \
88
+ xclip \
89
+ xdg-utils \
58
90
  && rm -rf /var/lib/apt/lists/*
59
91
 
60
92
  # Copy bun binary from builder instead of re-installing
package/bunfig.toml CHANGED
@@ -1,2 +1,3 @@
1
1
  [test]
2
2
  root = "./src"
3
+ preload = ["./src/__tests__/test-preload.ts"]
@@ -260,10 +260,10 @@ The key distinction: normal compaction is a cost-optimized background process th
260
260
  | Config key | Default | Purpose |
261
261
  | ----------------------------------------------------- | ------------------------: | -------------------------------------------------------------------- |
262
262
  | `memory.retrieval.dynamicBudget.enabled` | `true` | Toggle per-turn recall budget calculation from live prompt headroom. |
263
- | `memory.retrieval.dynamicBudget.minInjectTokens` | `1200` | Lower clamp for computed recall injection budget. |
264
- | `memory.retrieval.dynamicBudget.maxInjectTokens` | `10000` | Upper clamp for computed recall injection budget. |
263
+ | `memory.retrieval.dynamicBudget.minInjectTokens` | `2400` | Lower clamp for computed recall injection budget. |
264
+ | `memory.retrieval.dynamicBudget.maxInjectTokens` | `16000` | Upper clamp for computed recall injection budget. |
265
265
  | `memory.retrieval.dynamicBudget.targetHeadroomTokens` | `10000` | Reserved headroom to keep free for response generation/tool traces. |
266
- | `memory.retrieval.maxInjectTokens` | `10000` | Static fallback when dynamic budget is disabled. |
266
+ | `memory.retrieval.maxInjectTokens` | `16000` | Static fallback when dynamic budget is disabled. |
267
267
  | `memory.retrieval.scopePolicy` | `'allow_global_fallback'` | Scope filtering strategy: `'strict'` or `'allow_global_fallback'`. |
268
268
 
269
269
  ### Memory Recall Debugging Playbook
@@ -33,6 +33,13 @@ export const HandshakeRequestSchema = z.object({
33
33
  * can use it for platform credential materialisation.
34
34
  */
35
35
  assistantApiKey: z.string().optional(),
36
+ /**
37
+ * Optional platform assistant ID passed from the assistant runtime.
38
+ * In managed (sidecar) mode with warm pools, the PLATFORM_ASSISTANT_ID
39
+ * env var may not be set at CES startup. The assistant forwards it here
40
+ * so CES can use it for platform credential materialisation.
41
+ */
42
+ assistantId: z.string().optional(),
36
43
  });
37
44
  export type HandshakeRequest = z.infer<typeof HandshakeRequestSchema>;
38
45
 
@@ -422,6 +422,11 @@ export type ListAuditRecordsResponse = z.infer<
422
422
  export const UpdateManagedCredentialSchema = z.object({
423
423
  /** The assistant API key to push to CES for platform credential materialization. */
424
424
  assistantApiKey: z.string(), // nosemgrep: not-a-secret
425
+ /**
426
+ * Optional platform assistant ID. In warm-pool mode the ID may not be
427
+ * available at CES startup; the assistant pushes it here once provisioned.
428
+ */
429
+ assistantId: z.string().optional(),
425
430
  });
426
431
  export type UpdateManagedCredential = z.infer<
427
432
  typeof UpdateManagedCredentialSchema
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.5.11
6
+ version: 0.5.13
7
7
  description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
8
8
  servers:
9
9
  - url: http://127.0.0.1:7821
@@ -3144,7 +3144,7 @@ paths:
3144
3144
  post:
3145
3145
  operationId: export_post
3146
3146
  summary: Export logs and audit data
3147
- description: Export audit records, daemon logs, workspace contents, and config as a tar.gz archive.
3147
+ description: Export audit records, assistant logs, workspace contents, and config as a tar.gz archive.
3148
3148
  tags:
3149
3149
  - export
3150
3150
  responses:
@@ -3158,24 +3158,19 @@ paths:
3158
3158
  type: object
3159
3159
  properties:
3160
3160
  auditLimit:
3161
+ description: Max audit records (default 1000)
3161
3162
  type: integer
3162
3163
  minimum: -9007199254740991
3163
3164
  maximum: 9007199254740991
3164
- description: Max audit records (default 1000)
3165
3165
  conversationId:
3166
- type: string
3167
3166
  description: Scope to a single conversation
3167
+ type: string
3168
3168
  startTime:
3169
- type: number
3170
3169
  description: Lower bound epoch ms
3171
- endTime:
3172
3170
  type: number
3171
+ endTime:
3173
3172
  description: Upper bound epoch ms
3174
- required:
3175
- - auditLimit
3176
- - conversationId
3177
- - startTime
3178
- - endTime
3173
+ type: number
3179
3174
  additionalProperties: false
3180
3175
  /v1/guardian-actions/decision:
3181
3176
  post:
@@ -3316,6 +3311,52 @@ paths:
3316
3311
  - cpu
3317
3312
  - migrations
3318
3313
  additionalProperties: false
3314
+ /v1/healthz:
3315
+ get:
3316
+ operationId: healthz_get
3317
+ summary: Detailed health check (alias)
3318
+ description: Alias for /v1/health. Returns runtime health including version, disk, memory, CPU, and migration status.
3319
+ tags:
3320
+ - system
3321
+ responses:
3322
+ "200":
3323
+ description: Successful response
3324
+ content:
3325
+ application/json:
3326
+ schema:
3327
+ type: object
3328
+ properties:
3329
+ status:
3330
+ type: string
3331
+ timestamp:
3332
+ type: string
3333
+ version:
3334
+ type: string
3335
+ disk:
3336
+ type: object
3337
+ properties: {}
3338
+ additionalProperties: {}
3339
+ memory:
3340
+ type: object
3341
+ properties: {}
3342
+ additionalProperties: {}
3343
+ cpu:
3344
+ type: object
3345
+ properties: {}
3346
+ additionalProperties: {}
3347
+ migrations:
3348
+ type: object
3349
+ properties: {}
3350
+ additionalProperties: {}
3351
+ required:
3352
+ - status
3353
+ - timestamp
3354
+ - version
3355
+ - disk
3356
+ - memory
3357
+ - cpu
3358
+ - migrations
3359
+ additionalProperties: false
3319
3360
  /v1/heartbeat/checklist:
3320
3361
  get:
3321
3362
  operationId: heartbeat_checklist_get
@@ -3968,6 +4009,38 @@ paths:
3968
4009
  responses:
3969
4010
  "200":
3970
4011
  description: Successful response
4012
+ /v1/logs/export:
4013
+ post:
4014
+ operationId: logs_export_post
4015
+ summary: Export logs and audit data (alias)
4016
+ description: Alias for /v1/export. Export audit records, assistant logs, workspace contents, and config as a tar.gz archive.
4017
+ tags:
4018
+ - export
4019
+ responses:
4020
+ "200":
4021
+ description: Successful response
4022
+ requestBody:
4023
+ required: true
4024
+ content:
4025
+ application/json:
4026
+ schema:
4027
+ type: object
4028
+ properties:
4029
+ auditLimit:
4030
+ description: Max audit records (default 1000)
4031
+ type: integer
4032
+ minimum: -9007199254740991
4033
+ maximum: 9007199254740991
4034
+ conversationId:
4035
+ description: Scope to a single conversation
4036
+ type: string
4037
+ startTime:
4038
+ description: Lower bound epoch ms
4039
+ type: number
4040
+ endTime:
4041
+ description: Upper bound epoch ms
4042
+ type: number
4043
+ additionalProperties: false
3971
4044
  /v1/memory-items:
3972
4045
  get:
3973
4046
  operationId: memoryitems_get
@@ -4644,6 +4717,28 @@ paths:
4644
4717
  required: true
4645
4718
  schema:
4646
4719
  type: string
4720
+ /v1/oauth/providers:
4721
+ get:
4722
+ operationId: oauth_providers_get
4723
+ tags:
4724
+ - oauth-providers
4725
+ responses:
4726
+ "200":
4727
+ description: Successful response
4728
+ /v1/oauth/providers/{providerKey}:
4729
+ get:
4730
+ operationId: oauth_providers_by_providerKey_get
4731
+ tags:
4732
+ - oauth-providers
4733
+ responses:
4734
+ "200":
4735
+ description: Successful response
4736
+ parameters:
4737
+ - name: providerKey
4738
+ in: path
4739
+ required: true
4740
+ schema:
4741
+ type: string
4647
4742
  /v1/oauth/start:
4648
4743
  post:
4649
4744
  operationId: oauth_start_post
@@ -6281,17 +6376,27 @@ paths:
6281
6376
  content:
6282
6377
  application/json:
6283
6378
  schema:
6284
- type: object
6285
- properties:
6286
- id:
6287
- type: string
6288
- description: Event ID
6289
- event_name:
6290
- type: string
6291
- required:
6292
- - id
6293
- - event_name
6294
- additionalProperties: false
6379
+ anyOf:
6380
+ - type: object
6381
+ properties:
6382
+ id:
6383
+ type: string
6384
+ description: Event ID
6385
+ event_name:
6386
+ type: string
6387
+ required:
6388
+ - id
6389
+ - event_name
6390
+ additionalProperties: false
6391
+ - type: object
6392
+ properties:
6393
+ skipped:
6394
+ type: boolean
6395
+ const: true
6396
+ description: Event skipped due to usage data collection being disabled
6397
+ required:
6398
+ - skipped
6399
+ additionalProperties: false
6295
6400
  requestBody:
6296
6401
  required: true
6297
6402
  content:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/assistant",
3
- "version": "0.5.12",
3
+ "version": "0.5.14",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -8,28 +8,7 @@
8
8
  * - Stale: handles already-resolved requests gracefully.
9
9
  * - Idempotent: approving same request twice does not create duplicate sessions.
10
10
  */
11
- import { mkdtempSync, rmSync } from "node:fs";
12
- import { tmpdir } from "node:os";
13
- import { join } from "node:path";
14
- import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
15
-
16
- // ---------------------------------------------------------------------------
17
- // Test isolation: in-memory SQLite via temp directory
18
- // ---------------------------------------------------------------------------
19
-
20
- const testDir = mkdtempSync(join(tmpdir(), "access-request-decision-test-"));
21
-
22
- mock.module("../util/platform.js", () => ({
23
- getRootDir: () => testDir,
24
- getDataDir: () => testDir,
25
- isMacOS: () => process.platform === "darwin",
26
- isLinux: () => process.platform === "linux",
27
- isWindows: () => process.platform === "win32",
28
- getPidPath: () => join(testDir, "test.pid"),
29
- getDbPath: () => join(testDir, "test.db"),
30
- getLogPath: () => join(testDir, "test.log"),
31
- ensureDataDir: () => {},
32
- }));
11
+ import { beforeEach, describe, expect, mock, test } from "bun:test";
33
12
 
34
13
  mock.module("../util/logger.js", () => ({
35
14
  getLogger: () =>
@@ -56,7 +35,7 @@ mock.module("../runtime/gateway-client.js", () => ({
56
35
  },
57
36
  }));
58
37
 
59
- import { getDb, initializeDb, resetDb } from "../memory/db.js";
38
+ import { getDb, initializeDb } from "../memory/db.js";
60
39
  import {
61
40
  createApprovalRequest,
62
41
  getApprovalRequestById,
@@ -72,15 +51,6 @@ import {
72
51
 
73
52
  initializeDb();
74
53
 
75
- afterAll(() => {
76
- resetDb();
77
- try {
78
- rmSync(testDir, { recursive: true });
79
- } catch {
80
- /* best effort */
81
- }
82
- });
83
-
84
54
  // ---------------------------------------------------------------------------
85
55
  // Helpers
86
56
  // ---------------------------------------------------------------------------
@@ -6,25 +6,7 @@
6
6
  * that middleware is replaced by the JWT auth middleware in
7
7
  * runtime/auth/middleware.ts (tested in auth/middleware.test.ts).
8
8
  */
9
- import { mkdtempSync, realpathSync, rmSync } from "node:fs";
10
- import { tmpdir } from "node:os";
11
- import { join } from "node:path";
12
- import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
13
-
14
- const testDir = realpathSync(mkdtempSync(join(tmpdir(), "actor-token-test-")));
15
-
16
- mock.module("../util/platform.js", () => ({
17
- getRootDir: () => testDir,
18
- getDataDir: () => testDir,
19
- getDbPath: () => join(testDir, "test.db"),
20
- normalizeAssistantId: (id: string) => (id === "self" ? "self" : id),
21
- isMacOS: () => process.platform === "darwin",
22
- isLinux: () => process.platform === "linux",
23
- isWindows: () => process.platform === "win32",
24
- getPidPath: () => join(testDir, "test.pid"),
25
- getLogPath: () => join(testDir, "test.log"),
26
- ensureDataDir: () => {},
27
- }));
9
+ import { beforeEach, describe, expect, mock, test } from "bun:test";
28
10
 
29
11
  mock.module("../util/logger.js", () => ({
30
12
  getLogger: () =>
@@ -40,7 +22,6 @@ mock.module("../config/env.js", () => ({
40
22
  getRuntimeGatewayOriginSecret: () => undefined,
41
23
  isHttpAuthDisabledWithoutSafetyGate: () => false,
42
24
  checkUnrecognizedEnvVars: () => {},
43
- getBaseDataDir: () => testDir,
44
25
  }));
45
26
 
46
27
  import { findGuardianForChannel } from "../contacts/contact-store.js";
@@ -110,12 +91,6 @@ beforeEach(() => {
110
91
  db.run("DELETE FROM contacts");
111
92
  });
112
93
 
113
- afterAll(() => {
114
- try {
115
- rmSync(testDir, { recursive: true, force: true });
116
- } catch {}
117
- });
118
-
119
94
  // ---------------------------------------------------------------------------
120
95
  // Hash-only storage
121
96
  // ---------------------------------------------------------------------------
@@ -462,7 +437,6 @@ describe("pairing credential flow", () => {
462
437
  const ctx = {
463
438
  pairingStore: store,
464
439
  bearerToken,
465
- featureFlagToken: undefined,
466
440
  pairingBroadcast: () => {},
467
441
  };
468
442
 
@@ -520,7 +494,6 @@ describe("pairing credential flow", () => {
520
494
  const ctx = {
521
495
  pairingStore: store,
522
496
  bearerToken,
523
- featureFlagToken: undefined,
524
497
  pairingBroadcast: () => {},
525
498
  };
526
499
 
@@ -577,7 +550,6 @@ describe("pairing credential flow", () => {
577
550
  const ctx = {
578
551
  pairingStore: store,
579
552
  bearerToken,
580
- featureFlagToken: undefined,
581
553
  pairingBroadcast: () => {},
582
554
  };
583
555
 
@@ -637,7 +609,6 @@ describe("pairing credential flow", () => {
637
609
  const ctx = {
638
610
  pairingStore: store,
639
611
  bearerToken,
640
- featureFlagToken: undefined,
641
612
  pairingBroadcast: () => {},
642
613
  };
643
614
 
@@ -727,4 +698,3 @@ describe("bootstrap private-network guard", () => {
727
698
  expect(res.status).toBe(200);
728
699
  });
729
700
  });
730
-