@vellumai/assistant 0.4.42 → 0.4.44

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 (867) hide show
  1. package/.env.example +1 -6
  2. package/.prettierignore +3 -0
  3. package/ARCHITECTURE.md +140 -403
  4. package/Dockerfile +0 -1
  5. package/README.md +81 -92
  6. package/bun.lock +8 -2
  7. package/docs/architecture/integrations.md +81 -104
  8. package/docs/architecture/memory.md +1 -1
  9. package/docs/architecture/scheduling.md +63 -63
  10. package/docs/architecture/security.md +3 -3
  11. package/docs/runbook-trusted-contacts.md +11 -12
  12. package/docs/trusted-contact-access.md +39 -39
  13. package/package.json +5 -8
  14. package/src/__tests__/access-request-decision.test.ts +4 -4
  15. package/src/__tests__/active-skill-tools.test.ts +49 -34
  16. package/src/__tests__/actor-token-service.test.ts +55 -85
  17. package/src/__tests__/amazon-cdp-integration.test.ts +14 -26
  18. package/src/__tests__/app-bundler.test.ts +14 -368
  19. package/src/__tests__/app-compiler.test.ts +0 -1
  20. package/src/__tests__/app-executors.test.ts +10 -1
  21. package/src/__tests__/approval-hardcoded-copy-guard.test.ts +1 -1
  22. package/src/__tests__/approval-primitive.test.ts +2 -4
  23. package/src/__tests__/approval-routes-http.test.ts +1 -3
  24. package/src/__tests__/asset-materialize-tool.test.ts +1 -4
  25. package/src/__tests__/asset-search-tool.test.ts +1 -4
  26. package/src/__tests__/assistant-attachments.test.ts +23 -0
  27. package/src/__tests__/assistant-feature-flags-integration.test.ts +4 -8
  28. package/src/__tests__/assistant-id-boundary-guard.test.ts +5 -5
  29. package/src/__tests__/attachments-store.test.ts +1 -4
  30. package/src/__tests__/avatar-e2e.test.ts +43 -23
  31. package/src/__tests__/browser-fill-credential.test.ts +1 -1
  32. package/src/__tests__/bundled-asset.test.ts +1 -1
  33. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +2 -9
  34. package/src/__tests__/call-controller.test.ts +4 -8
  35. package/src/__tests__/call-conversation-messages.test.ts +1 -1
  36. package/src/__tests__/call-domain.test.ts +250 -8
  37. package/src/__tests__/call-pointer-message-composer.test.ts +14 -14
  38. package/src/__tests__/call-pointer-messages.test.ts +7 -11
  39. package/src/__tests__/call-recovery.test.ts +47 -0
  40. package/src/__tests__/call-routes-http.test.ts +13 -0
  41. package/src/__tests__/call-start-guardian-guard.test.ts +1 -1
  42. package/src/__tests__/callback-handoff-copy.test.ts +5 -5
  43. package/src/__tests__/canonical-guardian-store.test.ts +3 -3
  44. package/src/__tests__/channel-approval-routes.test.ts +101 -134
  45. package/src/__tests__/channel-approval.test.ts +0 -201
  46. package/src/__tests__/channel-approvals.test.ts +2 -2
  47. package/src/__tests__/channel-delivery-store.test.ts +16 -24
  48. package/src/__tests__/channel-guardian.test.ts +641 -740
  49. package/src/__tests__/channel-invite-transport.test.ts +1 -2
  50. package/src/__tests__/channel-policy.test.ts +9 -12
  51. package/src/__tests__/channel-readiness-service.test.ts +156 -45
  52. package/src/__tests__/channel-reply-delivery.test.ts +3 -3
  53. package/src/__tests__/channel-retry-sweep.test.ts +7 -7
  54. package/src/__tests__/checker.test.ts +41 -35
  55. package/src/__tests__/chrome-cdp.test.ts +57 -17
  56. package/src/__tests__/cli-help-reference-sync.test.ts +26 -0
  57. package/src/__tests__/compaction.benchmark.test.ts +25 -5
  58. package/src/__tests__/computer-use-session-lifecycle.test.ts +1 -1
  59. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  60. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +1 -1
  61. package/src/__tests__/config-loader-backfill.test.ts +310 -0
  62. package/src/__tests__/config-watcher.test.ts +1 -5
  63. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +3 -5
  64. package/src/__tests__/connection-policy.test.ts +3 -62
  65. package/src/__tests__/contacts-tools.test.ts +0 -2
  66. package/src/__tests__/context-memory-e2e.test.ts +11 -7
  67. package/src/__tests__/context-overflow-policy.test.ts +2 -2
  68. package/src/__tests__/context-window-manager.test.ts +220 -61
  69. package/src/__tests__/conversation-attention-store.test.ts +178 -2
  70. package/src/__tests__/conversation-attention-telegram.test.ts +8 -11
  71. package/src/__tests__/conversation-pairing.test.ts +14 -14
  72. package/src/__tests__/conversation-routes-guardian-reply.test.ts +7 -7
  73. package/src/__tests__/conversation-store.test.ts +2 -2
  74. package/src/__tests__/conversation-unread-route.test.ts +155 -0
  75. package/src/__tests__/credential-metadata-store.test.ts +0 -2
  76. package/src/__tests__/credential-security-invariants.test.ts +10 -16
  77. package/src/__tests__/credentials-cli.test.ts +49 -5
  78. package/src/__tests__/daemon-assistant-events.test.ts +4 -22
  79. package/src/__tests__/db-migration-rollback.test.ts +2 -2
  80. package/src/__tests__/deterministic-verification-control-plane.test.ts +19 -19
  81. package/src/__tests__/dictation-mode-detection.test.ts +1 -1
  82. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  83. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -6
  84. package/src/__tests__/email-cli.test.ts +12 -12
  85. package/src/__tests__/email-service-config-fallback.test.ts +1 -1
  86. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -18
  87. package/src/__tests__/error-handler-friendly-messages.test.ts +46 -0
  88. package/src/__tests__/event-bus.test.ts +0 -1
  89. package/src/__tests__/followup-tools.test.ts +0 -2
  90. package/src/__tests__/gateway-client-managed-outbound.test.ts +6 -6
  91. package/src/__tests__/gateway-only-enforcement.test.ts +13 -77
  92. package/src/__tests__/gateway-only-guard.test.ts +5 -0
  93. package/src/__tests__/guardian-action-conversation-turn.test.ts +3 -3
  94. package/src/__tests__/guardian-action-followup-executor.test.ts +29 -94
  95. package/src/__tests__/guardian-action-followup-store.test.ts +2 -12
  96. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +48 -194
  97. package/src/__tests__/guardian-action-late-reply.test.ts +12 -12
  98. package/src/__tests__/guardian-action-store.test.ts +2 -2
  99. package/src/__tests__/guardian-action-sweep.test.ts +5 -5
  100. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +1 -3
  101. package/src/__tests__/guardian-dispatch.test.ts +5 -46
  102. package/src/__tests__/guardian-grant-minting.test.ts +5 -44
  103. package/src/__tests__/guardian-outbound-http.test.ts +95 -114
  104. package/src/__tests__/guardian-question-mode.test.ts +1 -4
  105. package/src/__tests__/guardian-routing-invariants.test.ts +5 -13
  106. package/src/__tests__/guardian-routing-state.test.ts +3 -3
  107. package/src/__tests__/guardian-verification-voice-binding.test.ts +64 -7
  108. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +2 -2
  109. package/src/__tests__/handle-user-message-secret-resume.test.ts +3 -5
  110. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +16 -34
  111. package/src/__tests__/headless-browser-interactions.test.ts +1 -1
  112. package/src/__tests__/headless-browser-navigate.test.ts +1 -1
  113. package/src/__tests__/headless-browser-read-tools.test.ts +1 -1
  114. package/src/__tests__/headless-browser-snapshot.test.ts +1 -1
  115. package/src/__tests__/heartbeat-service.test.ts +1 -1
  116. package/src/__tests__/host-shell-tool.test.ts +3 -12
  117. package/src/__tests__/inbound-invite-redemption.test.ts +2 -2
  118. package/src/__tests__/ingress-url-consistency.test.ts +0 -64
  119. package/src/__tests__/integration-status.test.ts +8 -8
  120. package/src/__tests__/intent-routing.test.ts +9 -13
  121. package/src/__tests__/invite-redemption-service.test.ts +4 -4
  122. package/src/__tests__/invite-routes-http.test.ts +10 -10
  123. package/src/__tests__/llm-usage-store.test.ts +45 -9
  124. package/src/__tests__/local-gateway-health.test.ts +209 -0
  125. package/src/__tests__/managed-avatar-client.test.ts +23 -12
  126. package/src/__tests__/managed-skill-lifecycle.test.ts +1 -2
  127. package/src/__tests__/managed-store.test.ts +29 -12
  128. package/src/__tests__/managed-twitter-guardrails.test.ts +357 -0
  129. package/src/__tests__/mcp-cli.test.ts +1 -1
  130. package/src/__tests__/mcp-health-check.test.ts +1 -1
  131. package/src/__tests__/media-generate-image.test.ts +1 -1
  132. package/src/__tests__/media-reuse-story.e2e.test.ts +1 -4
  133. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +9 -6
  134. package/src/__tests__/memory-regressions.test.ts +1 -166
  135. package/src/__tests__/messaging-send-tool.test.ts +8 -4
  136. package/src/__tests__/migration-export-http.test.ts +2 -2
  137. package/src/__tests__/migration-transport.test.ts +44 -0
  138. package/src/__tests__/non-member-access-request.test.ts +49 -36
  139. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  140. package/src/__tests__/notification-decision-fallback.test.ts +2 -2
  141. package/src/__tests__/notification-decision-strategy.test.ts +4 -4
  142. package/src/__tests__/notification-deep-link.test.ts +3 -3
  143. package/src/__tests__/notification-guardian-path.test.ts +6 -44
  144. package/src/__tests__/notification-routing-intent.test.ts +11 -7
  145. package/src/__tests__/oauth-cli.test.ts +1 -1
  146. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -6
  147. package/src/__tests__/onboarding-template-contract.test.ts +2 -12
  148. package/src/__tests__/platform.test.ts +168 -5
  149. package/src/__tests__/playbook-execution.test.ts +0 -2
  150. package/src/__tests__/playbook-tools.test.ts +0 -2
  151. package/src/__tests__/pricing.test.ts +125 -0
  152. package/src/__tests__/provider-error-scenarios.test.ts +9 -3
  153. package/src/__tests__/provider-fail-open-selection.test.ts +12 -2
  154. package/src/__tests__/recording-handler.test.ts +46 -80
  155. package/src/__tests__/recording-state-machine.test.ts +112 -183
  156. package/src/__tests__/registry.test.ts +1 -1
  157. package/src/__tests__/relay-server.test.ts +69 -71
  158. package/src/__tests__/reminder-store.test.ts +3 -3
  159. package/src/__tests__/request-file-tool.test.ts +2 -2
  160. package/src/__tests__/ride-shotgun-handler.test.ts +2 -33
  161. package/src/__tests__/runtime-attachment-metadata.test.ts +3 -3
  162. package/src/__tests__/runtime-events-sse-parity.test.ts +1 -1
  163. package/src/__tests__/scaffold-managed-skill-tool.test.ts +4 -4
  164. package/src/__tests__/schedule-store.test.ts +13 -4
  165. package/src/__tests__/schedule-tools.test.ts +0 -2
  166. package/src/__tests__/scheduler-recurrence.test.ts +3 -4
  167. package/src/__tests__/scoped-approval-grants.test.ts +3 -5
  168. package/src/__tests__/scoped-grant-security-matrix.test.ts +6 -8
  169. package/src/__tests__/secret-prompt-log-hygiene.test.ts +1 -1
  170. package/src/__tests__/secret-response-routing.test.ts +1 -1
  171. package/src/__tests__/send-endpoint-busy.test.ts +1 -4
  172. package/src/__tests__/sequence-store.test.ts +0 -2
  173. package/src/__tests__/server-history-render.test.ts +2 -199
  174. package/src/__tests__/session-abort-tool-results.test.ts +9 -3
  175. package/src/__tests__/session-agent-loop.test.ts +107 -3
  176. package/src/__tests__/session-confirmation-signals.test.ts +17 -49
  177. package/src/__tests__/session-conflict-gate.test.ts +9 -3
  178. package/src/__tests__/session-init.benchmark.test.ts +22 -13
  179. package/src/__tests__/session-load-history-repair.test.ts +6 -3
  180. package/src/__tests__/session-pre-run-repair.test.ts +9 -3
  181. package/src/__tests__/session-profile-injection.test.ts +9 -3
  182. package/src/__tests__/session-provider-retry-repair.test.ts +10 -4
  183. package/src/__tests__/session-queue.test.ts +10 -4
  184. package/src/__tests__/session-runtime-assembly.test.ts +28 -18
  185. package/src/__tests__/session-skill-tools.test.ts +2 -3
  186. package/src/__tests__/session-slash-known.test.ts +11 -4
  187. package/src/__tests__/session-slash-queue.test.ts +11 -4
  188. package/src/__tests__/session-slash-unknown.test.ts +12 -4
  189. package/src/__tests__/session-surfaces-deselection.test.ts +2 -2
  190. package/src/__tests__/session-surfaces-task-progress.test.ts +3 -3
  191. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -1
  192. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -1
  193. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -1
  194. package/src/__tests__/session-usage.test.ts +180 -0
  195. package/src/__tests__/session-workspace-cache-state.test.ts +8 -2
  196. package/src/__tests__/session-workspace-injection.test.ts +8 -2
  197. package/src/__tests__/session-workspace-tool-tracking.test.ts +8 -2
  198. package/src/__tests__/skill-feature-flags-integration.test.ts +5 -11
  199. package/src/__tests__/skill-feature-flags.test.ts +1 -0
  200. package/src/__tests__/skill-include-graph.test.ts +1 -0
  201. package/src/__tests__/skill-load-feature-flag.test.ts +3 -9
  202. package/src/__tests__/skill-load-tool.test.ts +90 -12
  203. package/src/__tests__/skill-projection-feature-flag.test.ts +14 -15
  204. package/src/__tests__/skills-uninstall.test.ts +131 -0
  205. package/src/__tests__/skills.test.ts +32 -16
  206. package/src/__tests__/slack-block-formatting.test.ts +1 -1
  207. package/src/__tests__/slack-channel-config.test.ts +71 -12
  208. package/src/__tests__/slack-inbound-verification.test.ts +7 -7
  209. package/src/__tests__/slack-share-routes.test.ts +1 -1
  210. package/src/__tests__/slack-skill.test.ts +2 -2
  211. package/src/__tests__/slash-commands-catalog.test.ts +1 -0
  212. package/src/__tests__/slash-commands-resolver.test.ts +1 -0
  213. package/src/__tests__/starter-task-flow.test.ts +10 -20
  214. package/src/__tests__/subagent-manager-notify.test.ts +1 -1
  215. package/src/__tests__/subagent-tools.test.ts +2 -2
  216. package/src/__tests__/system-prompt.test.ts +7 -12
  217. package/src/__tests__/task-compiler.test.ts +0 -2
  218. package/src/__tests__/task-management-tools.test.ts +0 -2
  219. package/src/__tests__/task-runner.test.ts +0 -2
  220. package/src/__tests__/task-scheduler.test.ts +2 -2
  221. package/src/__tests__/telegram-bot-username-resolution.test.ts +46 -44
  222. package/src/__tests__/terminal-tools.test.ts +1 -11
  223. package/src/__tests__/thread-seed-composer.test.ts +3 -1
  224. package/src/__tests__/tool-approval-handler.test.ts +5 -7
  225. package/src/__tests__/tool-executor.test.ts +2 -2
  226. package/src/__tests__/tool-grant-request-escalation.test.ts +3 -5
  227. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  228. package/src/__tests__/tool-profiling-listener.test.ts +1 -1
  229. package/src/__tests__/tool-trace-listener.test.ts +1 -2
  230. package/src/__tests__/trace-emitter.test.ts +1 -1
  231. package/src/__tests__/trust-context-guards.test.ts +1 -1
  232. package/src/__tests__/trust-store.test.ts +48 -399
  233. package/src/__tests__/trusted-contact-approval-notifier.test.ts +6 -8
  234. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +5 -7
  235. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +6 -6
  236. package/src/__tests__/trusted-contact-multichannel.test.ts +54 -47
  237. package/src/__tests__/trusted-contact-verification.test.ts +12 -12
  238. package/src/__tests__/twilio-config.test.ts +11 -2
  239. package/src/__tests__/twilio-provider.test.ts +6 -4
  240. package/src/__tests__/twilio-routes.test.ts +408 -86
  241. package/src/__tests__/twitter-platform-proxy-client.test.ts +475 -0
  242. package/src/__tests__/update-bulletin-format.test.ts +1 -1
  243. package/src/__tests__/update-bulletin-state.test.ts +1 -1
  244. package/src/__tests__/update-bulletin.test.ts +4 -8
  245. package/src/__tests__/update-template-contract.test.ts +1 -1
  246. package/src/__tests__/usage-cache-backfill-migration.test.ts +406 -0
  247. package/src/__tests__/usage-routes.test.ts +23 -5
  248. package/src/__tests__/user-reference.test.ts +1 -1
  249. package/src/__tests__/{guardian-control-plane-policy.test.ts → verification-control-plane-policy.test.ts} +142 -170
  250. package/src/__tests__/{guardian-verification-intent-routing.test.ts → verification-session-intent-routing.test.ts} +16 -16
  251. package/src/__tests__/view-image-tool.test.ts +0 -2
  252. package/src/__tests__/voice-ingress-preflight.test.ts +36 -0
  253. package/src/__tests__/voice-invite-redemption.test.ts +18 -18
  254. package/src/__tests__/voice-scoped-grant-consumer.test.ts +7 -7
  255. package/src/__tests__/voice-session-bridge.test.ts +14 -16
  256. package/src/__tests__/workspace-policy.test.ts +1 -1
  257. package/src/approvals/AGENTS.md +4 -4
  258. package/src/approvals/approval-primitive.ts +2 -2
  259. package/src/approvals/guardian-decision-primitive.ts +1 -1
  260. package/src/approvals/guardian-request-resolvers.ts +3 -4
  261. package/src/bundler/app-bundler.ts +29 -217
  262. package/src/calls/active-call-lease.ts +207 -0
  263. package/src/calls/call-constants.ts +0 -7
  264. package/src/calls/call-controller.ts +1 -1
  265. package/src/calls/call-conversation-messages.ts +6 -6
  266. package/src/calls/call-domain.ts +73 -38
  267. package/src/calls/call-pointer-message-composer.ts +6 -6
  268. package/src/calls/call-pointer-messages.ts +14 -13
  269. package/src/calls/call-recovery.ts +2 -0
  270. package/src/calls/call-store.ts +21 -28
  271. package/src/calls/guardian-action-sweep.ts +6 -8
  272. package/src/calls/guardian-dispatch.ts +2 -6
  273. package/src/calls/relay-access-wait.ts +4 -4
  274. package/src/calls/relay-server.ts +69 -80
  275. package/src/calls/relay-setup-router.ts +16 -21
  276. package/src/calls/relay-verification.ts +27 -28
  277. package/src/calls/twilio-config.ts +28 -3
  278. package/src/calls/twilio-provider.ts +5 -5
  279. package/src/calls/twilio-rest.ts +26 -27
  280. package/src/calls/twilio-routes.ts +67 -54
  281. package/src/calls/types.ts +8 -8
  282. package/src/calls/voice-ingress-preflight.ts +110 -0
  283. package/src/calls/voice-session-bridge.ts +7 -7
  284. package/src/channels/config.ts +1 -10
  285. package/src/{config/channel-permission-profiles.ts → channels/permission-profiles.ts} +1 -1
  286. package/src/channels/types.ts +2 -13
  287. package/src/cli/__tests__/notifications.test.ts +1 -1
  288. package/src/{amazon → cli/commands/amazon}/client.ts +99 -42
  289. package/src/cli/{amazon.ts → commands/amazon/index.ts} +14 -54
  290. package/src/{amazon → cli/commands/amazon}/request-extractor.ts +39 -3
  291. package/src/cli/commands/amazon/session.ts +108 -0
  292. package/src/cli/{audit.ts → commands/audit.ts} +2 -4
  293. package/src/cli/{autonomy.ts → commands/autonomy.ts} +1 -3
  294. package/src/cli/commands/browser-relay.ts +520 -0
  295. package/src/cli/commands/channel-verification-sessions.ts +442 -0
  296. package/src/cli/{completions.ts → commands/completions.ts} +1 -3
  297. package/src/cli/{config.ts → commands/config.ts} +3 -5
  298. package/src/cli/{contacts.ts → commands/contacts.ts} +15 -17
  299. package/src/cli/{credentials.ts → commands/credentials.ts} +9 -10
  300. package/src/cli/{default-action.ts → commands/default-action.ts} +3 -3
  301. package/src/cli/{dev.ts → commands/dev.ts} +4 -6
  302. package/src/cli/{doctor.ts → commands/doctor.ts} +36 -60
  303. package/src/cli/{email.ts → commands/email.ts} +2 -2
  304. package/src/cli/{keys.ts → commands/keys.ts} +6 -6
  305. package/src/cli/{map.ts → commands/map.ts} +85 -93
  306. package/src/cli/{mcp.ts → commands/mcp.ts} +5 -7
  307. package/src/cli/{memory.ts → commands/memory.ts} +6 -7
  308. package/src/cli/{notifications.ts → commands/notifications.ts} +8 -10
  309. package/src/cli/{oauth.ts → commands/oauth.ts} +2 -2
  310. package/src/cli/commands/platform.ts +176 -0
  311. package/src/cli/{sequence.ts → commands/sequence.ts} +3 -3
  312. package/src/cli/{sessions.ts → commands/sessions.ts} +32 -52
  313. package/src/cli/commands/skills.ts +498 -0
  314. package/src/cli/{trust.ts → commands/trust.ts} +2 -4
  315. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +345 -0
  316. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +252 -0
  317. package/src/{__tests__/twitter-oauth-client.test.ts → cli/commands/twitter/__tests__/oauth-client.test.ts} +2 -48
  318. package/src/cli/commands/twitter/index.ts +420 -0
  319. package/src/{twitter → cli/commands/twitter}/oauth-client.ts +1 -35
  320. package/src/cli/commands/twitter/router.ts +351 -0
  321. package/src/cli/commands/twitter/types.ts +30 -0
  322. package/src/cli/db.ts +1 -0
  323. package/src/cli/http-client.ts +87 -0
  324. package/src/cli/logger.ts +6 -0
  325. package/src/cli/main-screen.tsx +4 -3
  326. package/src/cli/output.ts +19 -0
  327. package/src/cli/program.ts +29 -27
  328. package/src/cli/reference.ts +27 -37
  329. package/src/cli.ts +452 -240
  330. package/src/config/assistant-feature-flags.ts +3 -15
  331. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +3 -6
  332. package/src/config/bundled-skills/agentmail/SKILL.md +4 -4
  333. package/src/config/bundled-skills/amazon/SKILL.md +15 -6
  334. package/src/config/bundled-skills/api-mapping/SKILL.md +4 -4
  335. package/src/config/bundled-skills/app-builder/SKILL.md +4 -9
  336. package/src/config/bundled-skills/app-builder/TOOLS.json +0 -4
  337. package/src/config/bundled-skills/browser/SKILL.md +4 -5
  338. package/src/config/bundled-skills/chatgpt-import/SKILL.md +4 -4
  339. package/src/config/bundled-skills/chatgpt-import/tools/chatgpt-import.ts +1 -1
  340. package/src/config/bundled-skills/claude-code/SKILL.md +4 -4
  341. package/src/config/bundled-skills/cli-discover/SKILL.md +4 -4
  342. package/src/config/bundled-skills/computer-use/SKILL.md +4 -4
  343. package/src/config/bundled-skills/contacts/SKILL.md +23 -77
  344. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +4 -4
  345. package/src/config/bundled-skills/document/SKILL.md +4 -3
  346. package/src/config/bundled-skills/document-writer/SKILL.md +4 -4
  347. package/src/config/bundled-skills/doordash/SKILL.md +4 -12
  348. package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +1 -90
  349. package/src/config/bundled-skills/doordash/doordash-cli.ts +132 -109
  350. package/src/config/bundled-skills/doordash/lib/session.ts +22 -19
  351. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +26 -9
  352. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +140 -0
  353. package/src/config/bundled-skills/email-setup/SKILL.md +4 -4
  354. package/src/config/bundled-skills/followups/SKILL.md +4 -3
  355. package/src/config/bundled-skills/frontend-design/SKILL.md +2 -0
  356. package/src/config/bundled-skills/google-calendar/SKILL.md +4 -4
  357. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +4 -6
  358. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +26 -41
  359. package/src/config/bundled-skills/image-studio/SKILL.md +4 -5
  360. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +1 -1
  361. package/src/config/bundled-skills/influencer/SKILL.md +19 -19
  362. package/src/{influencer → config/bundled-skills/influencer/scripts}/client.ts +73 -56
  363. package/src/config/bundled-skills/influencer/scripts/influencer.ts +267 -0
  364. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -2
  365. package/src/config/bundled-skills/macos-automation/SKILL.md +4 -5
  366. package/src/config/bundled-skills/mcp-setup/SKILL.md +4 -4
  367. package/src/config/bundled-skills/media-processing/SKILL.md +3 -2
  368. package/src/config/bundled-skills/messaging/SKILL.md +6 -33
  369. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +0 -5
  370. package/src/config/bundled-skills/notifications/SKILL.md +4 -4
  371. package/src/config/bundled-skills/notion/SKILL.md +4 -4
  372. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +4 -5
  373. package/src/config/bundled-skills/oauth-setup/SKILL.md +4 -5
  374. package/src/config/bundled-skills/phone-calls/SKILL.md +24 -458
  375. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +83 -0
  376. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +57 -0
  377. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +67 -0
  378. package/src/config/bundled-skills/playbooks/SKILL.md +4 -3
  379. package/src/config/bundled-skills/public-ingress/SKILL.md +65 -14
  380. package/src/config/bundled-skills/reminder/SKILL.md +4 -3
  381. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +4 -6
  382. package/src/config/bundled-skills/schedule/SKILL.md +4 -3
  383. package/src/config/bundled-skills/screen-recording/SKILL.md +4 -3
  384. package/src/config/bundled-skills/self-upgrade/SKILL.md +4 -4
  385. package/src/config/bundled-skills/skills-catalog/SKILL.md +4 -4
  386. package/src/config/bundled-skills/slack/SKILL.md +4 -8
  387. package/src/config/bundled-skills/slack/tools/slack-channel-permissions.ts +1 -1
  388. package/src/config/bundled-skills/slack-app-setup/SKILL.md +66 -88
  389. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +4 -5
  390. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +4 -5
  391. package/src/config/bundled-skills/start-the-day/SKILL.md +4 -4
  392. package/src/config/bundled-skills/subagent/SKILL.md +4 -3
  393. package/src/config/bundled-skills/tasks/SKILL.md +4 -3
  394. package/src/config/bundled-skills/telegram-setup/SKILL.md +63 -112
  395. package/src/config/bundled-skills/time-based-actions/SKILL.md +4 -3
  396. package/src/config/bundled-skills/transcribe/SKILL.md +4 -3
  397. package/src/config/bundled-skills/twilio-setup/SKILL.md +23 -50
  398. package/src/config/bundled-skills/twitter/SKILL.md +73 -144
  399. package/src/config/bundled-skills/typescript-eval/SKILL.md +4 -4
  400. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +4 -5
  401. package/src/config/bundled-skills/voice-setup/SKILL.md +19 -45
  402. package/src/config/bundled-skills/watcher/SKILL.md +4 -3
  403. package/src/config/env-registry.ts +1 -10
  404. package/src/config/feature-flag-registry.json +8 -16
  405. package/src/config/loader.ts +78 -38
  406. package/src/config/schema.ts +143 -106
  407. package/src/config/schemas/channels.ts +80 -0
  408. package/src/config/schemas/heartbeat.ts +51 -0
  409. package/src/config/schemas/inference.ts +136 -0
  410. package/src/config/schemas/ingress.ts +81 -0
  411. package/src/config/schemas/logging.ts +21 -0
  412. package/src/config/schemas/memory-lifecycle.ts +67 -0
  413. package/src/config/schemas/memory-processing.ts +215 -0
  414. package/src/config/schemas/memory-retrieval.ts +222 -0
  415. package/src/config/schemas/memory-storage.ts +83 -0
  416. package/src/config/schemas/memory.ts +58 -0
  417. package/src/config/schemas/platform.ts +64 -0
  418. package/src/config/schemas/security.ts +54 -0
  419. package/src/config/schemas/swarm.ts +50 -0
  420. package/src/config/schemas/timeouts.ts +47 -0
  421. package/src/config/{agent-schema.ts → schemas/workspace-git.ts} +0 -97
  422. package/src/config/skill-state.ts +3 -13
  423. package/src/config/skills.ts +196 -75
  424. package/src/config/types.ts +1 -20
  425. package/src/contacts/contact-store.ts +12 -49
  426. package/src/contacts/contacts-write.ts +1 -5
  427. package/src/contacts/index.ts +0 -2
  428. package/src/contacts/types.ts +0 -8
  429. package/src/context/window-manager.ts +73 -14
  430. package/src/daemon/assistant-attachments.ts +9 -0
  431. package/src/daemon/computer-use-session.ts +3 -3
  432. package/src/daemon/connection-policy.ts +6 -21
  433. package/src/daemon/context-overflow-policy.ts +1 -1
  434. package/src/daemon/daemon-control.ts +46 -54
  435. package/src/daemon/doordash-steps.ts +1 -1
  436. package/src/daemon/handlers/config-channels.ts +407 -71
  437. package/src/daemon/handlers/config-ingress.ts +17 -85
  438. package/src/daemon/handlers/config-model.ts +145 -123
  439. package/src/daemon/handlers/config-slack-channel.ts +43 -29
  440. package/src/daemon/handlers/config-telegram.ts +32 -27
  441. package/src/daemon/handlers/config-voice.ts +1 -4
  442. package/src/daemon/handlers/dictation.ts +11 -16
  443. package/src/daemon/handlers/identity.ts +5 -6
  444. package/src/daemon/handlers/pairing.ts +5 -13
  445. package/src/daemon/handlers/recording.ts +97 -199
  446. package/src/daemon/handlers/session-history.ts +151 -105
  447. package/src/daemon/handlers/session-user-message.ts +29 -57
  448. package/src/daemon/handlers/sessions.ts +240 -137
  449. package/src/daemon/handlers/shared.ts +62 -95
  450. package/src/daemon/handlers/skills.ts +492 -543
  451. package/src/daemon/lifecycle.ts +155 -55
  452. package/src/daemon/{ipc-contract.ts → message-protocol.ts} +49 -49
  453. package/src/daemon/{ipc-contract → message-types}/apps.ts +0 -25
  454. package/src/daemon/{ipc-contract → message-types}/computer-use.ts +0 -3
  455. package/src/daemon/{ipc-contract → message-types}/diagnostics.ts +0 -16
  456. package/src/daemon/{ipc-contract → message-types}/integrations.ts +30 -20
  457. package/src/daemon/{ipc-contract → message-types}/memory.ts +8 -0
  458. package/src/daemon/{ipc-contract → message-types}/notifications.ts +15 -1
  459. package/src/daemon/{ipc-contract → message-types}/sessions.ts +7 -1
  460. package/src/daemon/{ipc-contract → message-types}/shared.ts +0 -8
  461. package/src/daemon/{ipc-contract → message-types}/surfaces.ts +2 -0
  462. package/src/daemon/{ipc-contract → message-types}/workspace.ts +2 -2
  463. package/src/daemon/providers-setup.ts +0 -5
  464. package/src/daemon/recording-executor.ts +0 -7
  465. package/src/daemon/ride-shotgun-handler.ts +42 -14
  466. package/src/daemon/seed-files.ts +3 -27
  467. package/src/daemon/server.ts +134 -524
  468. package/src/daemon/session-agent-loop-handlers.ts +46 -9
  469. package/src/daemon/session-agent-loop.ts +86 -24
  470. package/src/daemon/session-attachments.ts +1 -1
  471. package/src/daemon/session-error.ts +1 -1
  472. package/src/daemon/session-history.ts +20 -15
  473. package/src/daemon/session-lifecycle.ts +9 -7
  474. package/src/daemon/session-memory.ts +15 -1
  475. package/src/daemon/session-messaging.ts +10 -6
  476. package/src/daemon/session-notifiers.ts +10 -8
  477. package/src/daemon/session-process.ts +34 -25
  478. package/src/daemon/session-queue-manager.ts +1 -1
  479. package/src/daemon/session-runtime-assembly.ts +6 -32
  480. package/src/daemon/session-surfaces.ts +187 -35
  481. package/src/daemon/session-tool-setup.ts +1 -1
  482. package/src/daemon/session-usage.ts +119 -18
  483. package/src/daemon/session.ts +11 -33
  484. package/src/daemon/tool-side-effects.ts +6 -5
  485. package/src/daemon/trace-emitter.ts +1 -1
  486. package/src/daemon/{guardian-verification-intent.ts → verification-session-intent.ts} +16 -16
  487. package/src/daemon/watch-handler.ts +2 -5
  488. package/src/email/service.ts +8 -8
  489. package/src/events/domain-events.ts +0 -1
  490. package/src/events/tool-notification-listener.ts +1 -1
  491. package/src/followups/followup-store.ts +1 -2
  492. package/src/followups/types.ts +0 -6
  493. package/src/heartbeat/heartbeat-service.ts +1 -1
  494. package/src/inbound/platform-callback-registration.ts +1 -1
  495. package/src/inbound/public-ingress-urls.ts +0 -8
  496. package/src/index.ts +12 -0
  497. package/src/mcp/client.ts +1 -1
  498. package/src/mcp/manager.ts +1 -1
  499. package/src/memory/app-store.ts +1 -60
  500. package/src/memory/{guardian-verification.ts → channel-verification-sessions.ts} +110 -93
  501. package/src/memory/conversation-attention-store.ts +154 -0
  502. package/src/memory/conversation-bootstrap.ts +1 -1
  503. package/src/memory/conversation-crud.ts +53 -1
  504. package/src/memory/conversation-display-order-migration.ts +2 -3
  505. package/src/memory/conversation-queries.ts +1 -29
  506. package/src/memory/conversation-title-service.ts +26 -21
  507. package/src/memory/db-connection.ts +1 -8
  508. package/src/memory/db-init.ts +20 -0
  509. package/src/memory/delivery-crud.ts +4 -34
  510. package/src/memory/external-conversation-store.ts +1 -1
  511. package/src/memory/format-recall.ts +47 -0
  512. package/src/memory/guardian-action-store.ts +4 -5
  513. package/src/memory/guardian-rate-limits.ts +0 -3
  514. package/src/memory/invite-store.ts +1 -1
  515. package/src/memory/job-handlers/backfill.ts +9 -2
  516. package/src/memory/job-handlers/extraction.ts +2 -7
  517. package/src/memory/job-handlers/summarization.ts +1 -1
  518. package/src/memory/llm-usage-store.ts +11 -0
  519. package/src/memory/migrations/114-notifications.ts +12 -40
  520. package/src/memory/migrations/140-backfill-usage-cache-accounting.ts +357 -0
  521. package/src/memory/migrations/141-rename-verification-table.ts +55 -0
  522. package/src/memory/migrations/142-rename-verification-session-id-column.ts +32 -0
  523. package/src/memory/migrations/143-rename-guardian-verification-values.ts +48 -0
  524. package/src/memory/migrations/144-rename-voice-to-phone.ts +147 -0
  525. package/src/memory/migrations/index.ts +5 -0
  526. package/src/memory/migrations/registry.ts +30 -0
  527. package/src/memory/qdrant-circuit-breaker.ts +5 -0
  528. package/src/memory/retriever.test.ts +707 -0
  529. package/src/memory/retriever.ts +120 -116
  530. package/src/memory/schema/calls.ts +3 -7
  531. package/src/memory/schema/guardian.ts +2 -2
  532. package/src/memory/schema/infrastructure.ts +0 -8
  533. package/src/memory/search/lexical.ts +4 -1
  534. package/src/memory/search/query-expansion.test.ts +70 -0
  535. package/src/memory/search/query-expansion.ts +118 -0
  536. package/src/memory/search/types.ts +18 -17
  537. package/src/messaging/providers/telegram-bot/adapter.ts +1 -1
  538. package/src/messaging/providers/whatsapp/adapter.ts +1 -4
  539. package/src/messaging/registry.ts +0 -1
  540. package/src/notifications/README.md +13 -22
  541. package/src/notifications/adapters/macos.ts +1 -1
  542. package/src/notifications/conversation-pairing.ts +2 -2
  543. package/src/notifications/copy-composer.ts +2 -2
  544. package/src/notifications/decision-engine.ts +1 -10
  545. package/src/notifications/destination-resolver.ts +2 -3
  546. package/src/notifications/emit-signal.ts +2 -8
  547. package/src/notifications/guardian-question-mode.ts +5 -8
  548. package/src/notifications/signal.ts +1 -2
  549. package/src/notifications/types.ts +1 -1
  550. package/src/oauth/token-persistence.ts +25 -1
  551. package/src/permissions/checker.ts +4 -29
  552. package/src/permissions/defaults.ts +9 -9
  553. package/src/permissions/prompter.ts +1 -1
  554. package/src/permissions/secret-prompter.ts +1 -1
  555. package/src/permissions/shell-identity.ts +1 -1
  556. package/src/permissions/trust-store.ts +13 -76
  557. package/src/permissions/workspace-policy.ts +1 -1
  558. package/src/{config → prompts}/computer-use-prompt.ts +1 -1
  559. package/src/{config → prompts}/system-prompt.ts +44 -26
  560. package/src/{config → prompts}/templates/BOOTSTRAP.md +0 -3
  561. package/src/providers/registry.ts +2 -4
  562. package/src/runtime/AGENTS.md +6 -8
  563. package/src/runtime/access-request-helper.ts +36 -55
  564. package/src/runtime/actor-trust-resolver.ts +1 -24
  565. package/src/runtime/approval-message-composer.ts +6 -2
  566. package/src/runtime/assistant-event.ts +1 -1
  567. package/src/runtime/auth/__tests__/guard-tests.test.ts +1 -0
  568. package/src/runtime/auth/__tests__/ipc-auth-context.test.ts +1 -1
  569. package/src/runtime/auth/__tests__/scopes.test.ts +2 -1
  570. package/src/runtime/auth/__tests__/subject.test.ts +32 -0
  571. package/src/runtime/auth/route-policy.ts +137 -25
  572. package/src/runtime/auth/scopes.ts +1 -0
  573. package/src/runtime/auth/subject.ts +9 -0
  574. package/src/runtime/auth/token-service.ts +12 -1
  575. package/src/runtime/auth/types.ts +1 -1
  576. package/src/runtime/channel-approval-types.ts +1 -1
  577. package/src/runtime/channel-approvals.ts +1 -1
  578. package/src/runtime/channel-invite-transport.ts +0 -2
  579. package/src/runtime/channel-invite-transports/slack.ts +5 -19
  580. package/src/runtime/channel-invite-transports/telegram.ts +17 -34
  581. package/src/runtime/channel-invite-transports/voice.ts +1 -1
  582. package/src/runtime/channel-readiness-service.ts +24 -159
  583. package/src/runtime/channel-readiness-types.ts +5 -1
  584. package/src/runtime/channel-reply-delivery.ts +43 -3
  585. package/src/runtime/channel-retry-sweep.ts +14 -22
  586. package/src/runtime/{channel-guardian-service.ts → channel-verification-service.ts} +50 -53
  587. package/src/runtime/confirmation-request-guardian-bridge.ts +2 -3
  588. package/src/runtime/gateway-client.ts +12 -15
  589. package/src/runtime/guardian-action-followup-executor.ts +8 -73
  590. package/src/runtime/guardian-action-grant-minter.ts +45 -61
  591. package/src/runtime/guardian-action-message-composer.ts +4 -4
  592. package/src/runtime/guardian-reply-router.ts +3 -3
  593. package/src/runtime/http-server.ts +133 -24
  594. package/src/runtime/http-types.ts +44 -1
  595. package/src/runtime/invite-instruction-generator.ts +1 -3
  596. package/src/runtime/invite-redemption-service.ts +5 -5
  597. package/src/runtime/invite-service.ts +7 -7
  598. package/src/runtime/local-actor-identity.ts +28 -2
  599. package/src/runtime/local-gateway-health.ts +275 -0
  600. package/src/runtime/middleware/error-handler.ts +14 -1
  601. package/src/runtime/middleware/twilio-validation.ts +3 -3
  602. package/src/runtime/migrations/migration-transport.ts +18 -3
  603. package/src/runtime/migrations/rebind-secrets-screen.ts +2 -2
  604. package/src/runtime/nl-approval-parser.ts +2 -3
  605. package/src/runtime/routes/access-request-decision.ts +2 -2
  606. package/src/runtime/routes/app-management-routes.ts +918 -0
  607. package/src/runtime/routes/approval-routes.ts +76 -7
  608. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +38 -203
  609. package/src/runtime/routes/brain-graph/brain-graph.html +1845 -0
  610. package/src/runtime/routes/brain-graph-routes.ts +4 -42
  611. package/src/runtime/routes/channel-delivery-routes.ts +5 -4
  612. package/src/runtime/routes/channel-route-shared.ts +1 -3
  613. package/src/runtime/routes/channel-routes.ts +1 -4
  614. package/src/runtime/routes/channel-verification-routes.ts +257 -0
  615. package/src/runtime/routes/computer-use-routes.ts +595 -0
  616. package/src/runtime/routes/contact-routes.ts +1 -317
  617. package/src/runtime/routes/conversation-attention-routes.ts +6 -5
  618. package/src/runtime/routes/conversation-routes.ts +20 -24
  619. package/src/runtime/routes/debug-routes.ts +1 -1
  620. package/src/runtime/routes/diagnostics-routes.ts +890 -0
  621. package/src/runtime/routes/documents-routes.ts +227 -0
  622. package/src/runtime/routes/guardian-approval-interception.ts +25 -48
  623. package/src/runtime/routes/guardian-bootstrap-routes.ts +3 -3
  624. package/src/runtime/routes/guardian-expiry-sweep.ts +2 -2
  625. package/src/runtime/routes/guardian-refresh-routes.ts +11 -6
  626. package/src/runtime/routes/inbound-conversation.ts +3 -10
  627. package/src/runtime/routes/inbound-message-handler.ts +7 -6
  628. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +22 -22
  629. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +44 -0
  630. package/src/runtime/routes/inbound-stages/background-dispatch.ts +140 -22
  631. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +4 -4
  632. package/src/runtime/routes/inbound-stages/edit-intercept.ts +5 -5
  633. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +3 -3
  634. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +4 -4
  635. package/src/runtime/routes/inbound-stages/verification-intercept.ts +13 -14
  636. package/src/runtime/routes/integrations/slack/channel.ts +72 -0
  637. package/src/runtime/routes/{slack-share-routes.ts → integrations/slack/share.ts} +9 -9
  638. package/src/runtime/routes/integrations/telegram.ts +111 -0
  639. package/src/runtime/routes/integrations/twilio.ts +451 -0
  640. package/src/runtime/routes/invite-routes.ts +2 -2
  641. package/src/runtime/routes/pairing-routes.ts +1 -1
  642. package/src/runtime/routes/recording-routes.ts +332 -0
  643. package/src/{daemon/handlers/config-scheduling.ts → runtime/routes/schedule-routes.ts} +91 -106
  644. package/src/runtime/routes/session-management-routes.ts +167 -0
  645. package/src/runtime/routes/session-query-routes.ts +204 -0
  646. package/src/runtime/routes/settings-routes.ts +887 -0
  647. package/src/runtime/routes/skills-routes.ts +266 -0
  648. package/src/runtime/routes/subagents-routes.ts +246 -0
  649. package/src/runtime/routes/surface-action-routes.ts +100 -10
  650. package/src/runtime/routes/surface-content-routes.ts +1 -1
  651. package/src/runtime/routes/work-items-routes.ts +809 -0
  652. package/src/runtime/routes/workspace-routes.test.ts +778 -0
  653. package/src/runtime/routes/workspace-routes.ts +410 -0
  654. package/src/runtime/routes/workspace-utils.ts +88 -0
  655. package/src/runtime/telegram-streaming-delivery.test.ts +597 -0
  656. package/src/runtime/telegram-streaming-delivery.ts +380 -0
  657. package/src/runtime/tool-grant-request-helper.ts +1 -2
  658. package/src/runtime/trust-context-resolver.ts +0 -1
  659. package/src/runtime/{guardian-outbound-actions.ts → verification-outbound-actions.ts} +23 -188
  660. package/src/runtime/verification-rate-limiter.ts +2 -2
  661. package/src/runtime/{guardian-verification-templates.ts → verification-templates.ts} +2 -28
  662. package/src/schedule/integration-status.ts +2 -2
  663. package/src/schedule/schedule-store.ts +7 -9
  664. package/src/sequence/engine.ts +1 -1
  665. package/src/skills/active-skill-tools.ts +0 -8
  666. package/src/skills/clawhub.ts +1 -10
  667. package/src/skills/managed-store.ts +14 -4
  668. package/src/skills/slash-commands.ts +1 -1
  669. package/src/subagent/manager.ts +1 -1
  670. package/src/subagent/types.ts +1 -1
  671. package/src/tasks/SPEC.md +10 -10
  672. package/src/tasks/task-scheduler.ts +1 -1
  673. package/src/telegram/bot-username.ts +13 -0
  674. package/src/tools/AGENTS.md +38 -0
  675. package/src/tools/apps/executors.ts +0 -6
  676. package/src/tools/assets/materialize.ts +1 -1
  677. package/src/tools/assets/search.ts +1 -1
  678. package/src/tools/browser/browser-execution.ts +2 -2
  679. package/src/tools/browser/browser-manager.ts +88 -11
  680. package/src/tools/browser/browser-screencast.ts +1 -1
  681. package/src/tools/browser/headless-browser.ts +0 -17
  682. package/src/tools/browser/jit-auth.ts +1 -1
  683. package/src/tools/browser/recording-store.ts +19 -1
  684. package/src/tools/browser/runtime-check.ts +4 -2
  685. package/src/tools/calls/call-start.ts +3 -3
  686. package/src/tools/credentials/metadata-store.ts +0 -13
  687. package/src/tools/credentials/vault.ts +7 -31
  688. package/src/tools/document/editor-template.ts +10 -8
  689. package/src/tools/followups/followup_create.ts +0 -8
  690. package/src/tools/mcp/mcp-tool-factory.ts +1 -1
  691. package/src/tools/memory/definitions.ts +32 -10
  692. package/src/tools/memory/handlers.test.ts +573 -0
  693. package/src/tools/memory/handlers.ts +222 -65
  694. package/src/tools/memory/register.ts +53 -24
  695. package/src/tools/network/script-proxy/session-manager.ts +1 -12
  696. package/src/tools/schedule/update.ts +0 -8
  697. package/src/tools/skills/load.ts +3 -3
  698. package/src/tools/subagent/read.ts +1 -1
  699. package/src/tools/system/voice-config.ts +2 -14
  700. package/src/tools/terminal/safe-env.ts +5 -18
  701. package/src/tools/tool-approval-handler.ts +4 -4
  702. package/src/tools/tool-manifest.ts +4 -2
  703. package/src/tools/types.ts +1 -1
  704. package/src/tools/{guardian-control-plane-policy.ts → verification-control-plane-policy.ts} +37 -39
  705. package/src/twitter/platform-proxy-client.ts +408 -0
  706. package/src/usage/types.ts +21 -0
  707. package/src/util/canonicalize-identity.ts +2 -6
  708. package/src/util/errors.ts +12 -0
  709. package/src/util/platform.ts +93 -86
  710. package/src/util/pricing.ts +180 -43
  711. package/src/work-items/work-item-runner.ts +1 -1
  712. package/scripts/ipc/check-contract-inventory.ts +0 -107
  713. package/scripts/ipc/check-swift-decoder-drift.ts +0 -184
  714. package/scripts/ipc/generate-swift.ts +0 -528
  715. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +0 -3043
  716. package/src/__tests__/app-migration.test.ts +0 -148
  717. package/src/__tests__/config-loader-migration.test.ts +0 -85
  718. package/src/__tests__/daemon-lifecycle.test.ts +0 -715
  719. package/src/__tests__/daemon-server-session-init.test.ts +0 -864
  720. package/src/__tests__/guardian-actions-endpoint.test.ts +0 -1452
  721. package/src/__tests__/handlers-add-trust-rule-metadata.test.ts +0 -228
  722. package/src/__tests__/handlers-cu-observation-blob.test.ts +0 -397
  723. package/src/__tests__/handlers-ipc-blob-probe.test.ts +0 -218
  724. package/src/__tests__/handlers-slack-config.test.ts +0 -140
  725. package/src/__tests__/handlers-telegram-config.test.ts +0 -1317
  726. package/src/__tests__/handlers-twitter-config.test.ts +0 -1145
  727. package/src/__tests__/home-base-bootstrap.test.ts +0 -86
  728. package/src/__tests__/ingress-reconcile.test.ts +0 -606
  729. package/src/__tests__/integrations-cli.test.ts +0 -232
  730. package/src/__tests__/ipc-blob-store.test.ts +0 -329
  731. package/src/__tests__/ipc-contract-inventory.test.ts +0 -69
  732. package/src/__tests__/ipc-contract.test.ts +0 -76
  733. package/src/__tests__/ipc-protocol.test.ts +0 -120
  734. package/src/__tests__/ipc-roundtrip.benchmark.test.ts +0 -250
  735. package/src/__tests__/ipc-snapshot.test.ts +0 -2197
  736. package/src/__tests__/ipc-validate.test.ts +0 -471
  737. package/src/__tests__/migration-cli-flows.test.ts +0 -186
  738. package/src/__tests__/migration-ordering.test.ts +0 -267
  739. package/src/__tests__/oauth-connect-handler.test.ts +0 -361
  740. package/src/__tests__/platform-move-helper.test.ts +0 -108
  741. package/src/__tests__/platform-socket-path.test.ts +0 -52
  742. package/src/__tests__/platform-workspace-migration.test.ts +0 -1051
  743. package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -79
  744. package/src/__tests__/recording-intent-handler.test.ts +0 -1155
  745. package/src/__tests__/script-proxy-profile-template-fallback.test.ts +0 -127
  746. package/src/__tests__/sms-messaging-provider.test.ts +0 -156
  747. package/src/__tests__/tool-permission-simulate-handler.test.ts +0 -367
  748. package/src/__tests__/twitter-auth-handler.test.ts +0 -561
  749. package/src/__tests__/twitter-cli-error-shaping.test.ts +0 -224
  750. package/src/__tests__/twitter-cli-routing.test.ts +0 -286
  751. package/src/__tests__/work-item-output.test.ts +0 -150
  752. package/src/amazon/session.ts +0 -58
  753. package/src/cli/channels.ts +0 -51
  754. package/src/cli/influencer.ts +0 -319
  755. package/src/cli/integrations.ts +0 -372
  756. package/src/cli/ipc-client.ts +0 -88
  757. package/src/cli/twitter.ts +0 -1111
  758. package/src/config/bundled-skills/configure-settings/SKILL.md +0 -86
  759. package/src/config/bundled-skills/doordash/lib/shared/ipc.ts +0 -32
  760. package/src/config/bundled-skills/sms-setup/SKILL.md +0 -210
  761. package/src/config/core-schema.ts +0 -434
  762. package/src/config/memory-schema.ts +0 -617
  763. package/src/daemon/auth-manager.ts +0 -106
  764. package/src/daemon/handlers/apps.ts +0 -783
  765. package/src/daemon/handlers/avatar.ts +0 -73
  766. package/src/daemon/handlers/browser.ts +0 -3
  767. package/src/daemon/handlers/computer-use.ts +0 -231
  768. package/src/daemon/handlers/config-dispatch.ts +0 -29
  769. package/src/daemon/handlers/config-heartbeat.ts +0 -299
  770. package/src/daemon/handlers/config-inbox.ts +0 -457
  771. package/src/daemon/handlers/config-integrations.ts +0 -409
  772. package/src/daemon/handlers/config-platform.ts +0 -77
  773. package/src/daemon/handlers/config-slack.ts +0 -41
  774. package/src/daemon/handlers/config-tools.ts +0 -226
  775. package/src/daemon/handlers/config-trust.ts +0 -135
  776. package/src/daemon/handlers/config.ts +0 -64
  777. package/src/daemon/handlers/contacts.ts +0 -193
  778. package/src/daemon/handlers/diagnostics.ts +0 -382
  779. package/src/daemon/handlers/documents.ts +0 -188
  780. package/src/daemon/handlers/guardian-actions.ts +0 -82
  781. package/src/daemon/handlers/home-base.ts +0 -82
  782. package/src/daemon/handlers/index.ts +0 -222
  783. package/src/daemon/handlers/misc.ts +0 -1139
  784. package/src/daemon/handlers/navigate-settings.ts +0 -29
  785. package/src/daemon/handlers/oauth-connect.ts +0 -202
  786. package/src/daemon/handlers/open-bundle-handler.ts +0 -88
  787. package/src/daemon/handlers/publish.ts +0 -176
  788. package/src/daemon/handlers/signing.ts +0 -56
  789. package/src/daemon/handlers/subagents.ts +0 -286
  790. package/src/daemon/handlers/twitter-auth.ts +0 -220
  791. package/src/daemon/handlers/work-items.ts +0 -796
  792. package/src/daemon/handlers/workspace-files.ts +0 -84
  793. package/src/daemon/handlers.ts +0 -16
  794. package/src/daemon/ipc-blob-store.ts +0 -246
  795. package/src/daemon/ipc-contract-inventory.json +0 -348
  796. package/src/daemon/ipc-contract-inventory.ts +0 -202
  797. package/src/daemon/ipc-handler.ts +0 -120
  798. package/src/daemon/ipc-protocol.ts +0 -85
  799. package/src/daemon/ipc-validate.ts +0 -254
  800. package/src/home-base/app-link-store.ts +0 -78
  801. package/src/home-base/bootstrap.ts +0 -74
  802. package/src/home-base/prebuilt/brain-graph.html +0 -1483
  803. package/src/home-base/prebuilt/index.html +0 -702
  804. package/src/home-base/prebuilt/seed-metadata.json +0 -21
  805. package/src/home-base/prebuilt/seed.ts +0 -122
  806. package/src/home-base/prebuilt-home-base-updater.ts +0 -36
  807. package/src/memory/app-migration.ts +0 -114
  808. package/src/memory/channel-delivery-store.ts +0 -40
  809. package/src/memory/channel-guardian-store.ts +0 -83
  810. package/src/memory/conversation-store.ts +0 -102
  811. package/src/memory/schema-migration.ts +0 -38
  812. package/src/messaging/providers/sms/adapter.ts +0 -232
  813. package/src/messaging/providers/sms/client.ts +0 -93
  814. package/src/messaging/providers/sms/types.ts +0 -7
  815. package/src/migrations/config-merge.ts +0 -62
  816. package/src/migrations/data-layout.ts +0 -89
  817. package/src/migrations/data-merge.ts +0 -44
  818. package/src/migrations/hooks-merge.ts +0 -118
  819. package/src/migrations/index.ts +0 -6
  820. package/src/migrations/log.ts +0 -28
  821. package/src/migrations/skills-merge.ts +0 -44
  822. package/src/migrations/workspace-layout.ts +0 -94
  823. package/src/notifications/adapters/sms.ts +0 -94
  824. package/src/runtime/channel-approval-parser.ts +0 -123
  825. package/src/runtime/channel-invite-transports/sms.ts +0 -53
  826. package/src/runtime/routes/approval-strategies/guardian-legacy-fallback-strategy.ts +0 -82
  827. package/src/runtime/routes/integration-routes.ts +0 -381
  828. package/src/runtime/routes/twilio-routes.ts +0 -1251
  829. package/src/twitter/client.ts +0 -979
  830. package/src/twitter/router.ts +0 -131
  831. package/src/twitter/session.ts +0 -54
  832. package/src/util/cookie-session.ts +0 -114
  833. package/src/watcher/providers/slack.ts +0 -282
  834. /package/src/{amazon → cli/commands/amazon}/cart.ts +0 -0
  835. /package/src/{amazon → cli/commands/amazon}/checkout.ts +0 -0
  836. /package/src/{amazon → cli/commands/amazon}/product-details.ts +0 -0
  837. /package/src/{amazon → cli/commands/amazon}/search.ts +0 -0
  838. /package/src/config/{calls-schema.ts → schemas/calls.ts} +0 -0
  839. /package/src/config/{elevenlabs-schema.ts → schemas/elevenlabs.ts} +0 -0
  840. /package/src/config/{mcp-schema.ts → schemas/mcp.ts} +0 -0
  841. /package/src/config/{notifications-schema.ts → schemas/notifications.ts} +0 -0
  842. /package/src/config/{sandbox-schema.ts → schemas/sandbox.ts} +0 -0
  843. /package/src/config/{skills-schema.ts → schemas/skills.ts} +0 -0
  844. /package/src/daemon/{ipc-contract → message-types}/browser.ts +0 -0
  845. /package/src/daemon/{ipc-contract → message-types}/contacts.ts +0 -0
  846. /package/src/daemon/{ipc-contract → message-types}/documents.ts +0 -0
  847. /package/src/daemon/{ipc-contract → message-types}/guardian-actions.ts +0 -0
  848. /package/src/daemon/{ipc-contract → message-types}/inbox.ts +0 -0
  849. /package/src/daemon/{ipc-contract → message-types}/messages.ts +0 -0
  850. /package/src/daemon/{ipc-contract → message-types}/pairing.ts +0 -0
  851. /package/src/daemon/{ipc-contract → message-types}/schedules.ts +0 -0
  852. /package/src/daemon/{ipc-contract → message-types}/settings.ts +0 -0
  853. /package/src/daemon/{ipc-contract → message-types}/skills.ts +0 -0
  854. /package/src/daemon/{ipc-contract → message-types}/subagents.ts +0 -0
  855. /package/src/daemon/{ipc-contract → message-types}/trust.ts +0 -0
  856. /package/src/daemon/{ipc-contract → message-types}/work-items.ts +0 -0
  857. /package/src/{cli/email-guardrails.ts → email/guardrails.ts} +0 -0
  858. /package/src/{config → prompts}/__tests__/build-cli-reference-section.test.ts +0 -0
  859. /package/src/{config → prompts}/templates/IDENTITY.md +0 -0
  860. /package/src/{config → prompts}/templates/SOUL.md +0 -0
  861. /package/src/{config → prompts}/templates/UPDATES.md +0 -0
  862. /package/src/{config → prompts}/templates/USER.md +0 -0
  863. /package/src/{config → prompts}/update-bulletin-format.ts +0 -0
  864. /package/src/{config → prompts}/update-bulletin-state.ts +0 -0
  865. /package/src/{config → prompts}/update-bulletin-template-path.ts +0 -0
  866. /package/src/{config → prompts}/update-bulletin.ts +0 -0
  867. /package/src/{config → prompts}/user-reference.ts +0 -0
@@ -0,0 +1,222 @@
1
+ import { z } from "zod";
2
+
3
+ export const MemoryRerankingConfigSchema = z.object({
4
+ enabled: z
5
+ .boolean({ error: "memory.retrieval.reranking.enabled must be a boolean" })
6
+ .default(false),
7
+ modelIntent: z
8
+ .enum(["latency-optimized", "quality-optimized", "vision-optimized"], {
9
+ error:
10
+ "memory.retrieval.reranking.modelIntent must be a valid model intent",
11
+ })
12
+ .default("latency-optimized"),
13
+ topK: z
14
+ .number({ error: "memory.retrieval.reranking.topK must be a number" })
15
+ .int("memory.retrieval.reranking.topK must be an integer")
16
+ .positive("memory.retrieval.reranking.topK must be a positive integer")
17
+ .default(20),
18
+ });
19
+
20
+ export const MemoryDynamicBudgetConfigSchema = z.object({
21
+ enabled: z
22
+ .boolean({
23
+ error: "memory.retrieval.dynamicBudget.enabled must be a boolean",
24
+ })
25
+ .default(true),
26
+ minInjectTokens: z
27
+ .number({
28
+ error: "memory.retrieval.dynamicBudget.minInjectTokens must be a number",
29
+ })
30
+ .int("memory.retrieval.dynamicBudget.minInjectTokens must be an integer")
31
+ .positive(
32
+ "memory.retrieval.dynamicBudget.minInjectTokens must be a positive integer",
33
+ )
34
+ .default(1200),
35
+ maxInjectTokens: z
36
+ .number({
37
+ error: "memory.retrieval.dynamicBudget.maxInjectTokens must be a number",
38
+ })
39
+ .int("memory.retrieval.dynamicBudget.maxInjectTokens must be an integer")
40
+ .positive(
41
+ "memory.retrieval.dynamicBudget.maxInjectTokens must be a positive integer",
42
+ )
43
+ .default(10000),
44
+ targetHeadroomTokens: z
45
+ .number({
46
+ error:
47
+ "memory.retrieval.dynamicBudget.targetHeadroomTokens must be a number",
48
+ })
49
+ .int(
50
+ "memory.retrieval.dynamicBudget.targetHeadroomTokens must be an integer",
51
+ )
52
+ .positive(
53
+ "memory.retrieval.dynamicBudget.targetHeadroomTokens must be a positive integer",
54
+ )
55
+ .default(10000),
56
+ });
57
+
58
+ export const MemoryEarlyTerminationConfigSchema = z.object({
59
+ enabled: z
60
+ .boolean({
61
+ error: "memory.retrieval.earlyTermination.enabled must be a boolean",
62
+ })
63
+ .default(true),
64
+ minCandidates: z
65
+ .number({
66
+ error: "memory.retrieval.earlyTermination.minCandidates must be a number",
67
+ })
68
+ .int("memory.retrieval.earlyTermination.minCandidates must be an integer")
69
+ .positive(
70
+ "memory.retrieval.earlyTermination.minCandidates must be a positive integer",
71
+ )
72
+ .default(20),
73
+ minHighConfidence: z
74
+ .number({
75
+ error:
76
+ "memory.retrieval.earlyTermination.minHighConfidence must be a number",
77
+ })
78
+ .int(
79
+ "memory.retrieval.earlyTermination.minHighConfidence must be an integer",
80
+ )
81
+ .positive(
82
+ "memory.retrieval.earlyTermination.minHighConfidence must be a positive integer",
83
+ )
84
+ .default(10),
85
+ confidenceThreshold: z
86
+ .number({
87
+ error:
88
+ "memory.retrieval.earlyTermination.confidenceThreshold must be a number",
89
+ })
90
+ .min(
91
+ 0,
92
+ "memory.retrieval.earlyTermination.confidenceThreshold must be >= 0",
93
+ )
94
+ .max(
95
+ 1,
96
+ "memory.retrieval.earlyTermination.confidenceThreshold must be <= 1",
97
+ )
98
+ .default(0.7),
99
+ });
100
+
101
+ /**
102
+ * Per-kind freshness windows (in days). Items older than their window
103
+ * (based on lastSeenAt) are down-ranked unless recently reinforced.
104
+ * A value of 0 disables freshness decay for that kind.
105
+ */
106
+ const MemoryFreshnessConfigSchema = z.object({
107
+ enabled: z
108
+ .boolean({ error: "memory.retrieval.freshness.enabled must be a boolean" })
109
+ .default(true),
110
+ maxAgeDays: z
111
+ .object({
112
+ fact: z
113
+ .number({
114
+ error: "memory.retrieval.freshness.maxAgeDays.fact must be a number",
115
+ })
116
+ .nonnegative(
117
+ "memory.retrieval.freshness.maxAgeDays.fact must be non-negative",
118
+ )
119
+ .default(0),
120
+ preference: z
121
+ .number({
122
+ error:
123
+ "memory.retrieval.freshness.maxAgeDays.preference must be a number",
124
+ })
125
+ .nonnegative(
126
+ "memory.retrieval.freshness.maxAgeDays.preference must be non-negative",
127
+ )
128
+ .default(0),
129
+ behavior: z
130
+ .number({
131
+ error:
132
+ "memory.retrieval.freshness.maxAgeDays.behavior must be a number",
133
+ })
134
+ .nonnegative(
135
+ "memory.retrieval.freshness.maxAgeDays.behavior must be non-negative",
136
+ )
137
+ .default(90),
138
+ event: z
139
+ .number({
140
+ error: "memory.retrieval.freshness.maxAgeDays.event must be a number",
141
+ })
142
+ .nonnegative(
143
+ "memory.retrieval.freshness.maxAgeDays.event must be non-negative",
144
+ )
145
+ .default(30),
146
+ opinion: z
147
+ .number({
148
+ error:
149
+ "memory.retrieval.freshness.maxAgeDays.opinion must be a number",
150
+ })
151
+ .nonnegative(
152
+ "memory.retrieval.freshness.maxAgeDays.opinion must be non-negative",
153
+ )
154
+ .default(60),
155
+ })
156
+ .default({ fact: 0, preference: 0, behavior: 90, event: 30, opinion: 60 }),
157
+ staleDecay: z
158
+ .number({ error: "memory.retrieval.freshness.staleDecay must be a number" })
159
+ .min(0, "memory.retrieval.freshness.staleDecay must be >= 0")
160
+ .max(1, "memory.retrieval.freshness.staleDecay must be <= 1")
161
+ .default(0.5),
162
+ reinforcementShieldDays: z
163
+ .number({
164
+ error:
165
+ "memory.retrieval.freshness.reinforcementShieldDays must be a number",
166
+ })
167
+ .nonnegative(
168
+ "memory.retrieval.freshness.reinforcementShieldDays must be non-negative",
169
+ )
170
+ .default(7),
171
+ });
172
+
173
+ export const MemoryRetrievalConfigSchema = z.object({
174
+ lexicalTopK: z
175
+ .number({ error: "memory.retrieval.lexicalTopK must be a number" })
176
+ .int("memory.retrieval.lexicalTopK must be an integer")
177
+ .positive("memory.retrieval.lexicalTopK must be a positive integer")
178
+ .default(80),
179
+ semanticTopK: z
180
+ .number({ error: "memory.retrieval.semanticTopK must be a number" })
181
+ .int("memory.retrieval.semanticTopK must be an integer")
182
+ .positive("memory.retrieval.semanticTopK must be a positive integer")
183
+ .default(40),
184
+ maxInjectTokens: z
185
+ .number({ error: "memory.retrieval.maxInjectTokens must be a number" })
186
+ .int("memory.retrieval.maxInjectTokens must be an integer")
187
+ .positive("memory.retrieval.maxInjectTokens must be a positive integer")
188
+ .default(10000),
189
+ injectionFormat: z
190
+ .enum(["markdown", "structured_v1"], {
191
+ error:
192
+ 'memory.retrieval.injectionFormat must be "markdown" or "structured_v1"',
193
+ })
194
+ .default("markdown"),
195
+ injectionStrategy: z
196
+ .enum(["prepend_user_block", "separate_context_message"], {
197
+ error:
198
+ 'memory.retrieval.injectionStrategy must be "prepend_user_block" or "separate_context_message"',
199
+ })
200
+ .default("prepend_user_block"),
201
+ reranking: MemoryRerankingConfigSchema.default(
202
+ MemoryRerankingConfigSchema.parse({}),
203
+ ),
204
+ freshness: MemoryFreshnessConfigSchema.default(
205
+ MemoryFreshnessConfigSchema.parse({}),
206
+ ),
207
+ scopePolicy: z
208
+ .enum(["allow_global_fallback", "strict"], {
209
+ error:
210
+ 'memory.retrieval.scopePolicy must be "allow_global_fallback" or "strict"',
211
+ })
212
+ .default("allow_global_fallback"),
213
+ dynamicBudget: MemoryDynamicBudgetConfigSchema.default(
214
+ MemoryDynamicBudgetConfigSchema.parse({}),
215
+ ),
216
+ earlyTermination: MemoryEarlyTerminationConfigSchema.default(
217
+ MemoryEarlyTerminationConfigSchema.parse({}),
218
+ ),
219
+ });
220
+
221
+ export type MemoryRerankingConfig = z.infer<typeof MemoryRerankingConfigSchema>;
222
+ export type MemoryRetrievalConfig = z.infer<typeof MemoryRetrievalConfigSchema>;
@@ -0,0 +1,83 @@
1
+ import { z } from "zod";
2
+
3
+ const VALID_MEMORY_EMBEDDING_PROVIDERS = [
4
+ "auto",
5
+ "local",
6
+ "openai",
7
+ "gemini",
8
+ "ollama",
9
+ ] as const;
10
+
11
+ const VALID_QDRANT_QUANTIZATION = ["scalar", "none"] as const;
12
+
13
+ export const MemoryEmbeddingsConfigSchema = z.object({
14
+ required: z
15
+ .boolean({ error: "memory.embeddings.required must be a boolean" })
16
+ .default(true),
17
+ provider: z
18
+ .enum(VALID_MEMORY_EMBEDDING_PROVIDERS, {
19
+ error: `memory.embeddings.provider must be one of: ${VALID_MEMORY_EMBEDDING_PROVIDERS.join(
20
+ ", ",
21
+ )}`,
22
+ })
23
+ .default("auto"),
24
+ localModel: z
25
+ .string({ error: "memory.embeddings.localModel must be a string" })
26
+ .default("Xenova/bge-small-en-v1.5"),
27
+ openaiModel: z
28
+ .string({ error: "memory.embeddings.openaiModel must be a string" })
29
+ .default("text-embedding-3-small"),
30
+ geminiModel: z
31
+ .string({ error: "memory.embeddings.geminiModel must be a string" })
32
+ .default("gemini-embedding-001"),
33
+ ollamaModel: z
34
+ .string({ error: "memory.embeddings.ollamaModel must be a string" })
35
+ .default("nomic-embed-text"),
36
+ });
37
+
38
+ export const QdrantConfigSchema = z.object({
39
+ url: z
40
+ .string({ error: "memory.qdrant.url must be a string" })
41
+ .default("http://127.0.0.1:6333"),
42
+ collection: z
43
+ .string({ error: "memory.qdrant.collection must be a string" })
44
+ .default("memory"),
45
+ vectorSize: z
46
+ .number({ error: "memory.qdrant.vectorSize must be a number" })
47
+ .int("memory.qdrant.vectorSize must be an integer")
48
+ .positive("memory.qdrant.vectorSize must be a positive integer")
49
+ .default(384),
50
+ onDisk: z
51
+ .boolean({ error: "memory.qdrant.onDisk must be a boolean" })
52
+ .default(true),
53
+ quantization: z
54
+ .enum(VALID_QDRANT_QUANTIZATION, {
55
+ error: `memory.qdrant.quantization must be one of: ${VALID_QDRANT_QUANTIZATION.join(
56
+ ", ",
57
+ )}`,
58
+ })
59
+ .default("scalar"),
60
+ });
61
+
62
+ export const MemorySegmentationConfigSchema = z.object({
63
+ targetTokens: z
64
+ .number({ error: "memory.segmentation.targetTokens must be a number" })
65
+ .int("memory.segmentation.targetTokens must be an integer")
66
+ .positive("memory.segmentation.targetTokens must be a positive integer")
67
+ .default(450),
68
+ overlapTokens: z
69
+ .number({ error: "memory.segmentation.overlapTokens must be a number" })
70
+ .int("memory.segmentation.overlapTokens must be an integer")
71
+ .nonnegative(
72
+ "memory.segmentation.overlapTokens must be a non-negative integer",
73
+ )
74
+ .default(60),
75
+ });
76
+
77
+ export type MemoryEmbeddingsConfig = z.infer<
78
+ typeof MemoryEmbeddingsConfigSchema
79
+ >;
80
+ export type QdrantConfig = z.infer<typeof QdrantConfigSchema>;
81
+ export type MemorySegmentationConfig = z.infer<
82
+ typeof MemorySegmentationConfigSchema
83
+ >;
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+
3
+ import {
4
+ MemoryCleanupConfigSchema,
5
+ MemoryJobsConfigSchema,
6
+ MemoryRetentionConfigSchema,
7
+ } from "./memory-lifecycle.js";
8
+ import {
9
+ MemoryConflictsConfigSchema,
10
+ MemoryEntityConfigSchema,
11
+ MemoryExtractionConfigSchema,
12
+ MemoryProfileConfigSchema,
13
+ MemorySummarizationConfigSchema,
14
+ } from "./memory-processing.js";
15
+ import { MemoryRetrievalConfigSchema } from "./memory-retrieval.js";
16
+ import {
17
+ MemoryEmbeddingsConfigSchema,
18
+ MemorySegmentationConfigSchema,
19
+ QdrantConfigSchema,
20
+ } from "./memory-storage.js";
21
+
22
+ export const MemoryConfigSchema = z.object({
23
+ enabled: z
24
+ .boolean({ error: "memory.enabled must be a boolean" })
25
+ .default(true),
26
+ embeddings: MemoryEmbeddingsConfigSchema.default(
27
+ MemoryEmbeddingsConfigSchema.parse({}),
28
+ ),
29
+ qdrant: QdrantConfigSchema.default(QdrantConfigSchema.parse({})),
30
+ retrieval: MemoryRetrievalConfigSchema.default(
31
+ MemoryRetrievalConfigSchema.parse({}),
32
+ ),
33
+ segmentation: MemorySegmentationConfigSchema.default(
34
+ MemorySegmentationConfigSchema.parse({}),
35
+ ),
36
+ jobs: MemoryJobsConfigSchema.default(MemoryJobsConfigSchema.parse({})),
37
+ retention: MemoryRetentionConfigSchema.default(
38
+ MemoryRetentionConfigSchema.parse({}),
39
+ ),
40
+ cleanup: MemoryCleanupConfigSchema.default(
41
+ MemoryCleanupConfigSchema.parse({}),
42
+ ),
43
+ extraction: MemoryExtractionConfigSchema.default(
44
+ MemoryExtractionConfigSchema.parse({}),
45
+ ),
46
+ summarization: MemorySummarizationConfigSchema.default(
47
+ MemorySummarizationConfigSchema.parse({}),
48
+ ),
49
+ entity: MemoryEntityConfigSchema.default(MemoryEntityConfigSchema.parse({})),
50
+ conflicts: MemoryConflictsConfigSchema.default(
51
+ MemoryConflictsConfigSchema.parse({}),
52
+ ),
53
+ profile: MemoryProfileConfigSchema.default(
54
+ MemoryProfileConfigSchema.parse({}),
55
+ ),
56
+ });
57
+
58
+ export type MemoryConfig = z.infer<typeof MemoryConfigSchema>;
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+
3
+ export const VALID_AVATAR_STRATEGIES = [
4
+ "managed_required",
5
+ "managed_prefer",
6
+ "local_only",
7
+ ] as const;
8
+
9
+ export const AvatarConfigSchema = z.object({
10
+ generationStrategy: z
11
+ .enum(VALID_AVATAR_STRATEGIES, {
12
+ error: `avatar.generationStrategy must be one of: ${VALID_AVATAR_STRATEGIES.join(", ")}`,
13
+ })
14
+ .default("local_only"),
15
+ });
16
+
17
+ export type AvatarConfig = z.infer<typeof AvatarConfigSchema>;
18
+
19
+ export const PlatformConfigSchema = z.object({
20
+ baseUrl: z
21
+ .string({ error: "platform.baseUrl must be a string" })
22
+ .refine(
23
+ (val) => val === "" || /^https?:\/\//i.test(val),
24
+ "platform.baseUrl must be an absolute URL starting with http:// or https://",
25
+ )
26
+ .default(""),
27
+ });
28
+
29
+ export type PlatformConfig = z.infer<typeof PlatformConfigSchema>;
30
+
31
+ export const DaemonConfigSchema = z.object({
32
+ startupSocketWaitMs: z
33
+ .number({ error: "daemon.startupSocketWaitMs must be a number" })
34
+ .int("daemon.startupSocketWaitMs must be an integer")
35
+ .positive("daemon.startupSocketWaitMs must be a positive integer")
36
+ .default(5000),
37
+ stopTimeoutMs: z
38
+ .number({ error: "daemon.stopTimeoutMs must be a number" })
39
+ .int("daemon.stopTimeoutMs must be an integer")
40
+ .positive("daemon.stopTimeoutMs must be a positive integer")
41
+ .default(5000),
42
+ sigkillGracePeriodMs: z
43
+ .number({ error: "daemon.sigkillGracePeriodMs must be a number" })
44
+ .int("daemon.sigkillGracePeriodMs must be an integer")
45
+ .positive("daemon.sigkillGracePeriodMs must be a positive integer")
46
+ .default(2000),
47
+ titleGenerationMaxTokens: z
48
+ .number({ error: "daemon.titleGenerationMaxTokens must be a number" })
49
+ .int("daemon.titleGenerationMaxTokens must be an integer")
50
+ .positive("daemon.titleGenerationMaxTokens must be a positive integer")
51
+ .default(30),
52
+ standaloneRecording: z
53
+ .boolean({ error: "daemon.standaloneRecording must be a boolean" })
54
+ .default(true),
55
+ });
56
+
57
+ export const UiConfigSchema = z.object({
58
+ userTimezone: z
59
+ .string({ error: "ui.userTimezone must be a string" })
60
+ .optional(),
61
+ });
62
+
63
+ export type DaemonConfig = z.infer<typeof DaemonConfigSchema>;
64
+ export type UiConfig = z.infer<typeof UiConfigSchema>;
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+
3
+ const VALID_SECRET_ACTIONS = ["redact", "warn", "block", "prompt"] as const;
4
+ const VALID_PERMISSIONS_MODES = ["strict", "workspace"] as const;
5
+
6
+ export { VALID_PERMISSIONS_MODES, VALID_SECRET_ACTIONS };
7
+
8
+ export const CustomSecretPatternSchema = z.object({
9
+ label: z.string({
10
+ error: "secretDetection.customPatterns[].label must be a string",
11
+ }),
12
+ pattern: z.string({
13
+ error: "secretDetection.customPatterns[].pattern must be a string",
14
+ }),
15
+ });
16
+
17
+ export const SecretDetectionConfigSchema = z.object({
18
+ enabled: z
19
+ .boolean({ error: "secretDetection.enabled must be a boolean" })
20
+ .default(true),
21
+ action: z
22
+ .enum(VALID_SECRET_ACTIONS, {
23
+ error: `secretDetection.action must be one of: ${VALID_SECRET_ACTIONS.join(
24
+ ", ",
25
+ )}`,
26
+ })
27
+ .default("redact"),
28
+ entropyThreshold: z
29
+ .number({ error: "secretDetection.entropyThreshold must be a number" })
30
+ .finite("secretDetection.entropyThreshold must be finite")
31
+ .positive("secretDetection.entropyThreshold must be a positive number")
32
+ .default(4.0),
33
+ allowOneTimeSend: z
34
+ .boolean({ error: "secretDetection.allowOneTimeSend must be a boolean" })
35
+ .default(false),
36
+ blockIngress: z
37
+ .boolean({ error: "secretDetection.blockIngress must be a boolean" })
38
+ .default(true),
39
+ customPatterns: z.array(CustomSecretPatternSchema).optional(),
40
+ });
41
+
42
+ export const PermissionsConfigSchema = z.object({
43
+ mode: z
44
+ .enum(VALID_PERMISSIONS_MODES, {
45
+ error: `permissions.mode must be one of: ${VALID_PERMISSIONS_MODES.join(
46
+ ", ",
47
+ )}`,
48
+ })
49
+ .default("workspace"),
50
+ });
51
+
52
+ export type CustomSecretPattern = z.infer<typeof CustomSecretPatternSchema>;
53
+ export type SecretDetectionConfig = z.infer<typeof SecretDetectionConfigSchema>;
54
+ export type PermissionsConfig = z.infer<typeof PermissionsConfigSchema>;
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+
3
+ export const SwarmConfigSchema = z.object({
4
+ enabled: z
5
+ .boolean({ error: "swarm.enabled must be a boolean" })
6
+ .default(true),
7
+ maxWorkers: z
8
+ .number({ error: "swarm.maxWorkers must be a number" })
9
+ .int("swarm.maxWorkers must be an integer")
10
+ .positive("swarm.maxWorkers must be a positive integer")
11
+ .max(6, "swarm.maxWorkers must be at most 6")
12
+ .default(3),
13
+ maxTasks: z
14
+ .number({ error: "swarm.maxTasks must be a number" })
15
+ .int("swarm.maxTasks must be an integer")
16
+ .positive("swarm.maxTasks must be a positive integer")
17
+ .max(20, "swarm.maxTasks must be at most 20")
18
+ .default(8),
19
+ maxRetriesPerTask: z
20
+ .number({ error: "swarm.maxRetriesPerTask must be a number" })
21
+ .int("swarm.maxRetriesPerTask must be an integer")
22
+ .nonnegative("swarm.maxRetriesPerTask must be a non-negative integer")
23
+ .max(3, "swarm.maxRetriesPerTask must be at most 3")
24
+ .default(1),
25
+ workerTimeoutSec: z
26
+ .number({ error: "swarm.workerTimeoutSec must be a number" })
27
+ .int("swarm.workerTimeoutSec must be an integer")
28
+ .positive("swarm.workerTimeoutSec must be a positive integer")
29
+ .default(900),
30
+ roleTimeoutsSec: z
31
+ .object({
32
+ router: z.number().int().positive().optional(),
33
+ researcher: z.number().int().positive().optional(),
34
+ coder: z.number().int().positive().optional(),
35
+ reviewer: z.number().int().positive().optional(),
36
+ })
37
+ .default({}),
38
+ plannerModelIntent: z
39
+ .enum(["latency-optimized", "quality-optimized", "vision-optimized"], {
40
+ error: "swarm.plannerModelIntent must be a valid model intent",
41
+ })
42
+ .default("latency-optimized"),
43
+ synthesizerModelIntent: z
44
+ .enum(["latency-optimized", "quality-optimized", "vision-optimized"], {
45
+ error: "swarm.synthesizerModelIntent must be a valid model intent",
46
+ })
47
+ .default("quality-optimized"),
48
+ });
49
+
50
+ export type SwarmConfig = z.infer<typeof SwarmConfigSchema>;
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+
3
+ export const TimeoutConfigSchema = z.object({
4
+ shellMaxTimeoutSec: z
5
+ .number({ error: "timeouts.shellMaxTimeoutSec must be a number" })
6
+ .finite("timeouts.shellMaxTimeoutSec must be finite")
7
+ .positive("timeouts.shellMaxTimeoutSec must be a positive number")
8
+ .default(600),
9
+ shellDefaultTimeoutSec: z
10
+ .number({ error: "timeouts.shellDefaultTimeoutSec must be a number" })
11
+ .finite("timeouts.shellDefaultTimeoutSec must be finite")
12
+ .positive("timeouts.shellDefaultTimeoutSec must be a positive number")
13
+ .default(120),
14
+ permissionTimeoutSec: z
15
+ .number({ error: "timeouts.permissionTimeoutSec must be a number" })
16
+ .finite("timeouts.permissionTimeoutSec must be finite")
17
+ .positive("timeouts.permissionTimeoutSec must be a positive number")
18
+ .default(300),
19
+ toolExecutionTimeoutSec: z
20
+ .number({ error: "timeouts.toolExecutionTimeoutSec must be a number" })
21
+ .finite("timeouts.toolExecutionTimeoutSec must be finite")
22
+ .positive("timeouts.toolExecutionTimeoutSec must be a positive number")
23
+ .default(120),
24
+ providerStreamTimeoutSec: z
25
+ .number({ error: "timeouts.providerStreamTimeoutSec must be a number" })
26
+ .finite("timeouts.providerStreamTimeoutSec must be finite")
27
+ .positive("timeouts.providerStreamTimeoutSec must be a positive number")
28
+ .default(300),
29
+ });
30
+
31
+ export const RateLimitConfigSchema = z.object({
32
+ maxRequestsPerMinute: z
33
+ .number({ error: "rateLimit.maxRequestsPerMinute must be a number" })
34
+ .int("rateLimit.maxRequestsPerMinute must be an integer")
35
+ .nonnegative(
36
+ "rateLimit.maxRequestsPerMinute must be a non-negative integer",
37
+ )
38
+ .default(0),
39
+ maxTokensPerSession: z
40
+ .number({ error: "rateLimit.maxTokensPerSession must be a number" })
41
+ .int("rateLimit.maxTokensPerSession must be an integer")
42
+ .nonnegative("rateLimit.maxTokensPerSession must be a non-negative integer")
43
+ .default(0),
44
+ });
45
+
46
+ export type TimeoutConfig = z.infer<typeof TimeoutConfigSchema>;
47
+ export type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;
@@ -1,100 +1,5 @@
1
1
  import { z } from "zod";
2
2
 
3
- export const HeartbeatConfigSchema = z
4
- .object({
5
- enabled: z
6
- .boolean({ error: "heartbeat.enabled must be a boolean" })
7
- .default(false),
8
- intervalMs: z
9
- .number({ error: "heartbeat.intervalMs must be a number" })
10
- .int("heartbeat.intervalMs must be an integer")
11
- .positive("heartbeat.intervalMs must be a positive integer")
12
- .default(3_600_000),
13
- activeHoursStart: z
14
- .number({ error: "heartbeat.activeHoursStart must be a number" })
15
- .int("heartbeat.activeHoursStart must be an integer")
16
- .min(0, "heartbeat.activeHoursStart must be >= 0")
17
- .max(23, "heartbeat.activeHoursStart must be <= 23")
18
- .optional(),
19
- activeHoursEnd: z
20
- .number({ error: "heartbeat.activeHoursEnd must be a number" })
21
- .int("heartbeat.activeHoursEnd must be an integer")
22
- .min(0, "heartbeat.activeHoursEnd must be >= 0")
23
- .max(23, "heartbeat.activeHoursEnd must be <= 23")
24
- .optional(),
25
- })
26
- .superRefine((config, ctx) => {
27
- const hasStart = config.activeHoursStart != null;
28
- const hasEnd = config.activeHoursEnd != null;
29
- if (hasStart !== hasEnd) {
30
- ctx.addIssue({
31
- code: z.ZodIssueCode.custom,
32
- path: [hasStart ? "activeHoursEnd" : "activeHoursStart"],
33
- message:
34
- "heartbeat.activeHoursStart and heartbeat.activeHoursEnd must both be set or both be omitted",
35
- });
36
- }
37
- if (
38
- hasStart &&
39
- hasEnd &&
40
- config.activeHoursStart === config.activeHoursEnd
41
- ) {
42
- ctx.addIssue({
43
- code: z.ZodIssueCode.custom,
44
- path: ["activeHoursEnd"],
45
- message:
46
- "heartbeat.activeHoursStart and heartbeat.activeHoursEnd must not be equal (would create an empty window)",
47
- });
48
- }
49
- });
50
-
51
- export const SwarmConfigSchema = z.object({
52
- enabled: z
53
- .boolean({ error: "swarm.enabled must be a boolean" })
54
- .default(true),
55
- maxWorkers: z
56
- .number({ error: "swarm.maxWorkers must be a number" })
57
- .int("swarm.maxWorkers must be an integer")
58
- .positive("swarm.maxWorkers must be a positive integer")
59
- .max(6, "swarm.maxWorkers must be at most 6")
60
- .default(3),
61
- maxTasks: z
62
- .number({ error: "swarm.maxTasks must be a number" })
63
- .int("swarm.maxTasks must be an integer")
64
- .positive("swarm.maxTasks must be a positive integer")
65
- .max(20, "swarm.maxTasks must be at most 20")
66
- .default(8),
67
- maxRetriesPerTask: z
68
- .number({ error: "swarm.maxRetriesPerTask must be a number" })
69
- .int("swarm.maxRetriesPerTask must be an integer")
70
- .nonnegative("swarm.maxRetriesPerTask must be a non-negative integer")
71
- .max(3, "swarm.maxRetriesPerTask must be at most 3")
72
- .default(1),
73
- workerTimeoutSec: z
74
- .number({ error: "swarm.workerTimeoutSec must be a number" })
75
- .int("swarm.workerTimeoutSec must be an integer")
76
- .positive("swarm.workerTimeoutSec must be a positive integer")
77
- .default(900),
78
- roleTimeoutsSec: z
79
- .object({
80
- router: z.number().int().positive().optional(),
81
- researcher: z.number().int().positive().optional(),
82
- coder: z.number().int().positive().optional(),
83
- reviewer: z.number().int().positive().optional(),
84
- })
85
- .default({}),
86
- plannerModelIntent: z
87
- .enum(["latency-optimized", "quality-optimized", "vision-optimized"], {
88
- error: "swarm.plannerModelIntent must be a valid model intent",
89
- })
90
- .default("latency-optimized"),
91
- synthesizerModelIntent: z
92
- .enum(["latency-optimized", "quality-optimized", "vision-optimized"], {
93
- error: "swarm.synthesizerModelIntent must be a valid model intent",
94
- })
95
- .default("quality-optimized"),
96
- });
97
-
98
3
  export const WorkspaceGitConfigSchema = z.object({
99
4
  turnCommitMaxWaitMs: z
100
5
  .number({ error: "workspaceGit.turnCommitMaxWaitMs must be a number" })
@@ -261,6 +166,4 @@ export const WorkspaceGitConfigSchema = z.object({
261
166
  }),
262
167
  });
263
168
 
264
- export type HeartbeatConfig = z.infer<typeof HeartbeatConfigSchema>;
265
- export type SwarmConfig = z.infer<typeof SwarmConfigSchema>;
266
169
  export type WorkspaceGitConfig = z.infer<typeof WorkspaceGitConfigSchema>;