@aitne/daemon 0.1.7 → 0.1.8

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 (959) hide show
  1. package/dist/adapters/dashboard-adapter.d.ts +18 -2
  2. package/dist/adapters/dashboard-adapter.d.ts.map +1 -1
  3. package/dist/adapters/dashboard-adapter.js +101 -51
  4. package/dist/adapters/dashboard-adapter.js.map +1 -1
  5. package/dist/adapters/discord.d.ts +8 -0
  6. package/dist/adapters/discord.d.ts.map +1 -1
  7. package/dist/adapters/discord.js +100 -21
  8. package/dist/adapters/discord.js.map +1 -1
  9. package/dist/adapters/message-hub.d.ts.map +1 -1
  10. package/dist/adapters/message-hub.js +7 -1
  11. package/dist/adapters/message-hub.js.map +1 -1
  12. package/dist/adapters/notification-manager.d.ts +102 -2
  13. package/dist/adapters/notification-manager.d.ts.map +1 -1
  14. package/dist/adapters/notification-manager.js +228 -8
  15. package/dist/adapters/notification-manager.js.map +1 -1
  16. package/dist/adapters/outbound-text.d.ts +16 -0
  17. package/dist/adapters/outbound-text.d.ts.map +1 -1
  18. package/dist/adapters/outbound-text.js +118 -1
  19. package/dist/adapters/outbound-text.js.map +1 -1
  20. package/dist/adapters/primary-platform-resolver.d.ts +69 -0
  21. package/dist/adapters/primary-platform-resolver.d.ts.map +1 -0
  22. package/dist/adapters/primary-platform-resolver.js +55 -0
  23. package/dist/adapters/primary-platform-resolver.js.map +1 -0
  24. package/dist/adapters/slack-adapter.d.ts +28 -0
  25. package/dist/adapters/slack-adapter.d.ts.map +1 -1
  26. package/dist/adapters/slack-adapter.js +134 -35
  27. package/dist/adapters/slack-adapter.js.map +1 -1
  28. package/dist/adapters/telegram-adapter.d.ts +7 -1
  29. package/dist/adapters/telegram-adapter.d.ts.map +1 -1
  30. package/dist/adapters/telegram-adapter.js +49 -18
  31. package/dist/adapters/telegram-adapter.js.map +1 -1
  32. package/dist/adapters/whatsapp-adapter.d.ts +33 -0
  33. package/dist/adapters/whatsapp-adapter.d.ts.map +1 -1
  34. package/dist/adapters/whatsapp-adapter.js +84 -0
  35. package/dist/adapters/whatsapp-adapter.js.map +1 -1
  36. package/dist/api/directory-picker.d.ts.map +1 -1
  37. package/dist/api/directory-picker.js +14 -0
  38. package/dist/api/directory-picker.js.map +1 -1
  39. package/dist/api/env-writer.d.ts.map +1 -1
  40. package/dist/api/env-writer.js +6 -1
  41. package/dist/api/env-writer.js.map +1 -1
  42. package/dist/api/helpers/agent-errors.d.ts +2600 -0
  43. package/dist/api/helpers/agent-errors.d.ts.map +1 -0
  44. package/dist/api/helpers/agent-errors.js +2506 -0
  45. package/dist/api/helpers/agent-errors.js.map +1 -0
  46. package/dist/api/integration-route-gate.d.ts.map +1 -1
  47. package/dist/api/integration-route-gate.js +10 -3
  48. package/dist/api/integration-route-gate.js.map +1 -1
  49. package/dist/api/routes/agent-schedule-plan-match.d.ts +5 -0
  50. package/dist/api/routes/agent-schedule-plan-match.d.ts.map +1 -0
  51. package/dist/api/routes/agent-schedule-plan-match.js +101 -0
  52. package/dist/api/routes/agent-schedule-plan-match.js.map +1 -0
  53. package/dist/api/routes/agent-schedule.d.ts +4 -0
  54. package/dist/api/routes/agent-schedule.d.ts.map +1 -0
  55. package/dist/api/routes/agent-schedule.js +750 -0
  56. package/dist/api/routes/agent-schedule.js.map +1 -0
  57. package/dist/api/routes/agent.d.ts.map +1 -1
  58. package/dist/api/routes/agent.js +209 -366
  59. package/dist/api/routes/agent.js.map +1 -1
  60. package/dist/api/routes/apple-calendar.d.ts.map +1 -1
  61. package/dist/api/routes/apple-calendar.js +109 -27
  62. package/dist/api/routes/apple-calendar.js.map +1 -1
  63. package/dist/api/routes/attachments.d.ts.map +1 -1
  64. package/dist/api/routes/attachments.js +113 -21
  65. package/dist/api/routes/attachments.js.map +1 -1
  66. package/dist/api/routes/backends.d.ts.map +1 -1
  67. package/dist/api/routes/backends.js +100 -4
  68. package/dist/api/routes/backends.js.map +1 -1
  69. package/dist/api/routes/books.d.ts.map +1 -1
  70. package/dist/api/routes/books.js +58 -18
  71. package/dist/api/routes/books.js.map +1 -1
  72. package/dist/api/routes/calendar.d.ts +3 -2
  73. package/dist/api/routes/calendar.d.ts.map +1 -1
  74. package/dist/api/routes/calendar.js +330 -55
  75. package/dist/api/routes/calendar.js.map +1 -1
  76. package/dist/api/routes/commands.d.ts.map +1 -1
  77. package/dist/api/routes/commands.js +20 -1
  78. package/dist/api/routes/commands.js.map +1 -1
  79. package/dist/api/routes/context/index.d.ts +33 -0
  80. package/dist/api/routes/context/index.d.ts.map +1 -0
  81. package/dist/api/routes/context/index.js +193 -0
  82. package/dist/api/routes/context/index.js.map +1 -0
  83. package/dist/api/routes/context/locks.d.ts +4 -0
  84. package/dist/api/routes/context/locks.d.ts.map +1 -0
  85. package/dist/api/routes/context/locks.js +136 -0
  86. package/dist/api/routes/context/locks.js.map +1 -0
  87. package/dist/api/routes/context/path-resolve.d.ts +15 -0
  88. package/dist/api/routes/context/path-resolve.d.ts.map +1 -0
  89. package/dist/api/routes/context/path-resolve.js +109 -0
  90. package/dist/api/routes/context/path-resolve.js.map +1 -0
  91. package/dist/api/routes/context/permissions.d.ts +35 -0
  92. package/dist/api/routes/context/permissions.d.ts.map +1 -0
  93. package/dist/api/routes/context/permissions.js +192 -0
  94. package/dist/api/routes/context/permissions.js.map +1 -0
  95. package/dist/api/routes/context/read.d.ts +4 -0
  96. package/dist/api/routes/context/read.d.ts.map +1 -0
  97. package/dist/api/routes/context/read.js +295 -0
  98. package/dist/api/routes/context/read.js.map +1 -0
  99. package/dist/api/routes/context/repair.d.ts +4 -0
  100. package/dist/api/routes/context/repair.d.ts.map +1 -0
  101. package/dist/api/routes/context/repair.js +114 -0
  102. package/dist/api/routes/context/repair.js.map +1 -0
  103. package/dist/api/routes/context/snapshots.d.ts +4 -0
  104. package/dist/api/routes/context/snapshots.d.ts.map +1 -0
  105. package/dist/api/routes/context/snapshots.js +177 -0
  106. package/dist/api/routes/context/snapshots.js.map +1 -0
  107. package/dist/api/routes/context/write.d.ts +4 -0
  108. package/dist/api/routes/context/write.d.ts.map +1 -0
  109. package/dist/api/routes/context/write.js +570 -0
  110. package/dist/api/routes/context/write.js.map +1 -0
  111. package/dist/api/routes/context.d.ts +2 -43
  112. package/dist/api/routes/context.d.ts.map +1 -1
  113. package/dist/api/routes/context.js +415 -558
  114. package/dist/api/routes/context.js.map +1 -1
  115. package/dist/api/routes/dashboard/config.d.ts +4 -0
  116. package/dist/api/routes/dashboard/config.d.ts.map +1 -0
  117. package/dist/api/routes/dashboard/config.js +499 -0
  118. package/dist/api/routes/dashboard/config.js.map +1 -0
  119. package/dist/api/routes/dashboard/conversations.d.ts +4 -0
  120. package/dist/api/routes/dashboard/conversations.d.ts.map +1 -0
  121. package/dist/api/routes/dashboard/conversations.js +309 -0
  122. package/dist/api/routes/dashboard/conversations.js.map +1 -0
  123. package/dist/api/routes/dashboard/cost-approvals.d.ts +29 -0
  124. package/dist/api/routes/dashboard/cost-approvals.d.ts.map +1 -0
  125. package/dist/api/routes/dashboard/cost-approvals.js +259 -0
  126. package/dist/api/routes/dashboard/cost-approvals.js.map +1 -0
  127. package/dist/api/routes/dashboard/index.d.ts +27 -0
  128. package/dist/api/routes/dashboard/index.d.ts.map +1 -0
  129. package/dist/api/routes/dashboard/index.js +47 -0
  130. package/dist/api/routes/dashboard/index.js.map +1 -0
  131. package/dist/api/routes/dashboard/messaging.d.ts +4 -0
  132. package/dist/api/routes/dashboard/messaging.d.ts.map +1 -0
  133. package/dist/api/routes/dashboard/messaging.js +351 -0
  134. package/dist/api/routes/dashboard/messaging.js.map +1 -0
  135. package/dist/api/routes/dashboard/notifications.d.ts +4 -0
  136. package/dist/api/routes/dashboard/notifications.d.ts.map +1 -0
  137. package/dist/api/routes/dashboard/notifications.js +109 -0
  138. package/dist/api/routes/dashboard/notifications.js.map +1 -0
  139. package/dist/api/routes/dashboard/oauth-google.d.ts +4 -0
  140. package/dist/api/routes/dashboard/oauth-google.d.ts.map +1 -0
  141. package/dist/api/routes/dashboard/oauth-google.js +293 -0
  142. package/dist/api/routes/dashboard/oauth-google.js.map +1 -0
  143. package/dist/api/routes/dashboard/schedule-readonly.d.ts +4 -0
  144. package/dist/api/routes/dashboard/schedule-readonly.d.ts.map +1 -0
  145. package/dist/api/routes/dashboard/schedule-readonly.js +46 -0
  146. package/dist/api/routes/dashboard/schedule-readonly.js.map +1 -0
  147. package/dist/api/routes/dashboard/secrets.d.ts +24 -0
  148. package/dist/api/routes/dashboard/secrets.d.ts.map +1 -0
  149. package/dist/api/routes/dashboard/secrets.js +307 -0
  150. package/dist/api/routes/dashboard/secrets.js.map +1 -0
  151. package/dist/api/routes/dashboard/snapshots.d.ts +4 -0
  152. package/dist/api/routes/dashboard/snapshots.d.ts.map +1 -0
  153. package/dist/api/routes/dashboard/snapshots.js +33 -0
  154. package/dist/api/routes/dashboard/snapshots.js.map +1 -0
  155. package/dist/api/routes/dashboard.d.ts.map +1 -1
  156. package/dist/api/routes/dashboard.js +20 -12
  157. package/dist/api/routes/dashboard.js.map +1 -1
  158. package/dist/api/routes/delegated.d.ts +5 -4
  159. package/dist/api/routes/delegated.d.ts.map +1 -1
  160. package/dist/api/routes/delegated.js +6 -5
  161. package/dist/api/routes/delegated.js.map +1 -1
  162. package/dist/api/routes/docs.d.ts.map +1 -1
  163. package/dist/api/routes/docs.js +72 -9
  164. package/dist/api/routes/docs.js.map +1 -1
  165. package/dist/api/routes/entities.d.ts.map +1 -1
  166. package/dist/api/routes/entities.js +112 -43
  167. package/dist/api/routes/entities.js.map +1 -1
  168. package/dist/api/routes/fs.d.ts.map +1 -1
  169. package/dist/api/routes/fs.js +27 -12
  170. package/dist/api/routes/fs.js.map +1 -1
  171. package/dist/api/routes/git-templates.d.ts.map +1 -1
  172. package/dist/api/routes/git-templates.js +107 -27
  173. package/dist/api/routes/git-templates.js.map +1 -1
  174. package/dist/api/routes/git.d.ts.map +1 -1
  175. package/dist/api/routes/git.js +55 -11
  176. package/dist/api/routes/git.js.map +1 -1
  177. package/dist/api/routes/github.d.ts.map +1 -1
  178. package/dist/api/routes/github.js +110 -17
  179. package/dist/api/routes/github.js.map +1 -1
  180. package/dist/api/routes/integrations/crud-patch.d.ts +17 -0
  181. package/dist/api/routes/integrations/crud-patch.d.ts.map +1 -0
  182. package/dist/api/routes/integrations/crud-patch.js +600 -0
  183. package/dist/api/routes/integrations/crud-patch.js.map +1 -0
  184. package/dist/api/routes/integrations/crud.d.ts +16 -0
  185. package/dist/api/routes/integrations/crud.d.ts.map +1 -0
  186. package/dist/api/routes/integrations/crud.js +158 -0
  187. package/dist/api/routes/integrations/crud.js.map +1 -0
  188. package/dist/api/routes/integrations/exec.d.ts +23 -0
  189. package/dist/api/routes/integrations/exec.d.ts.map +1 -0
  190. package/dist/api/routes/integrations/exec.js +356 -0
  191. package/dist/api/routes/integrations/exec.js.map +1 -0
  192. package/dist/api/routes/integrations/index.d.ts +62 -0
  193. package/dist/api/routes/integrations/index.d.ts.map +1 -0
  194. package/dist/api/routes/integrations/index.js +70 -0
  195. package/dist/api/routes/integrations/index.js.map +1 -0
  196. package/dist/api/routes/integrations/integrations/crud.d.ts +16 -0
  197. package/dist/api/routes/integrations/integrations/crud.d.ts.map +1 -0
  198. package/dist/api/routes/integrations/integrations/crud.js +158 -0
  199. package/dist/api/routes/integrations/integrations/crud.js.map +1 -0
  200. package/dist/api/routes/integrations/integrations/index.d.ts +55 -0
  201. package/dist/api/routes/integrations/integrations/index.d.ts.map +1 -0
  202. package/dist/api/routes/integrations/integrations/index.js +65 -0
  203. package/dist/api/routes/integrations/integrations/index.js.map +1 -0
  204. package/dist/api/routes/integrations/integrations/invoke.d.ts +38 -0
  205. package/dist/api/routes/integrations/integrations/invoke.d.ts.map +1 -0
  206. package/dist/api/routes/integrations/integrations/invoke.js +320 -0
  207. package/dist/api/routes/integrations/integrations/invoke.js.map +1 -0
  208. package/dist/api/routes/integrations/integrations/probe.d.ts +21 -0
  209. package/dist/api/routes/integrations/integrations/probe.d.ts.map +1 -0
  210. package/dist/api/routes/integrations/integrations/probe.js +247 -0
  211. package/dist/api/routes/integrations/integrations/probe.js.map +1 -0
  212. package/dist/api/routes/integrations/invoke.d.ts +38 -0
  213. package/dist/api/routes/integrations/invoke.d.ts.map +1 -0
  214. package/dist/api/routes/integrations/invoke.js +320 -0
  215. package/dist/api/routes/integrations/invoke.js.map +1 -0
  216. package/dist/api/routes/integrations/probe.d.ts +21 -0
  217. package/dist/api/routes/integrations/probe.d.ts.map +1 -0
  218. package/dist/api/routes/integrations/probe.js +247 -0
  219. package/dist/api/routes/integrations/probe.js.map +1 -0
  220. package/dist/api/routes/integrations.d.ts.map +1 -1
  221. package/dist/api/routes/integrations.js +65 -13
  222. package/dist/api/routes/integrations.js.map +1 -1
  223. package/dist/api/routes/knowledge.d.ts.map +1 -1
  224. package/dist/api/routes/knowledge.js +13 -2
  225. package/dist/api/routes/knowledge.js.map +1 -1
  226. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts +4 -0
  227. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts.map +1 -0
  228. package/dist/api/routes/mail/_pa_wip_mail/app-password.js +192 -0
  229. package/dist/api/routes/mail/_pa_wip_mail/app-password.js.map +1 -0
  230. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts +55 -0
  231. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts.map +1 -0
  232. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js +91 -0
  233. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js.map +1 -0
  234. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts +36 -0
  235. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts.map +1 -0
  236. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js +2 -0
  237. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js.map +1 -0
  238. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts +45 -0
  239. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts.map +1 -0
  240. package/dist/api/routes/mail/_pa_wip_mail/gating.js +98 -0
  241. package/dist/api/routes/mail/_pa_wip_mail/gating.js.map +1 -0
  242. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts +4 -0
  243. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts.map +1 -0
  244. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js +289 -0
  245. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js.map +1 -0
  246. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts +4 -0
  247. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts.map +1 -0
  248. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js +192 -0
  249. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js.map +1 -0
  250. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts +55 -0
  251. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts.map +1 -0
  252. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js +91 -0
  253. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js.map +1 -0
  254. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts +36 -0
  255. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts.map +1 -0
  256. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js +2 -0
  257. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js.map +1 -0
  258. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts +5 -0
  259. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts.map +1 -0
  260. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js +139 -0
  261. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js.map +1 -0
  262. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts +45 -0
  263. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts.map +1 -0
  264. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js +98 -0
  265. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js.map +1 -0
  266. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts +18 -0
  267. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts.map +1 -0
  268. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js +40 -0
  269. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js.map +1 -0
  270. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts +15 -0
  271. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts.map +1 -0
  272. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js +239 -0
  273. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js.map +1 -0
  274. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts +4 -0
  275. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts.map +1 -0
  276. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js +73 -0
  277. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js.map +1 -0
  278. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts +64 -0
  279. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts.map +1 -0
  280. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js +286 -0
  281. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js.map +1 -0
  282. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts +4 -0
  283. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts.map +1 -0
  284. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js +73 -0
  285. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js.map +1 -0
  286. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts +5 -0
  287. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts.map +1 -0
  288. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js +35 -0
  289. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js.map +1 -0
  290. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts +23 -0
  291. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts.map +1 -0
  292. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js +131 -0
  293. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js.map +1 -0
  294. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts +64 -0
  295. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts.map +1 -0
  296. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js +286 -0
  297. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js.map +1 -0
  298. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts +4 -0
  299. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts.map +1 -0
  300. package/dist/api/routes/mail/_pa_wip_mail/search-health.js +131 -0
  301. package/dist/api/routes/mail/_pa_wip_mail/search-health.js.map +1 -0
  302. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts +23 -0
  303. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts.map +1 -0
  304. package/dist/api/routes/mail/_pa_wip_mail/validators.js +131 -0
  305. package/dist/api/routes/mail/_pa_wip_mail/validators.js.map +1 -0
  306. package/dist/api/routes/mail/accounts.d.ts +4 -0
  307. package/dist/api/routes/mail/accounts.d.ts.map +1 -0
  308. package/dist/api/routes/mail/accounts.js +289 -0
  309. package/dist/api/routes/mail/accounts.js.map +1 -0
  310. package/dist/api/routes/mail/app-password.d.ts +4 -0
  311. package/dist/api/routes/mail/app-password.d.ts.map +1 -0
  312. package/dist/api/routes/mail/app-password.js +192 -0
  313. package/dist/api/routes/mail/app-password.js.map +1 -0
  314. package/dist/api/routes/mail/body-helpers.d.ts +56 -0
  315. package/dist/api/routes/mail/body-helpers.d.ts.map +1 -0
  316. package/dist/api/routes/mail/body-helpers.js +91 -0
  317. package/dist/api/routes/mail/body-helpers.js.map +1 -0
  318. package/dist/api/routes/mail/dependencies.d.ts +36 -0
  319. package/dist/api/routes/mail/dependencies.d.ts.map +1 -0
  320. package/dist/api/routes/mail/dependencies.js +2 -0
  321. package/dist/api/routes/mail/dependencies.js.map +1 -0
  322. package/dist/api/routes/mail/drafts.d.ts +5 -0
  323. package/dist/api/routes/mail/drafts.d.ts.map +1 -0
  324. package/dist/api/routes/mail/drafts.js +139 -0
  325. package/dist/api/routes/mail/drafts.js.map +1 -0
  326. package/dist/api/routes/mail/gating.d.ts +45 -0
  327. package/dist/api/routes/mail/gating.d.ts.map +1 -0
  328. package/dist/api/routes/mail/gating.js +99 -0
  329. package/dist/api/routes/mail/gating.js.map +1 -0
  330. package/dist/api/routes/mail/index.d.ts +18 -0
  331. package/dist/api/routes/mail/index.d.ts.map +1 -0
  332. package/dist/api/routes/mail/index.js +40 -0
  333. package/dist/api/routes/mail/index.js.map +1 -0
  334. package/dist/api/routes/mail/messages.d.ts +15 -0
  335. package/dist/api/routes/mail/messages.d.ts.map +1 -0
  336. package/dist/api/routes/mail/messages.js +239 -0
  337. package/dist/api/routes/mail/messages.js.map +1 -0
  338. package/dist/api/routes/mail/outlook-config.d.ts +4 -0
  339. package/dist/api/routes/mail/outlook-config.d.ts.map +1 -0
  340. package/dist/api/routes/mail/outlook-config.js +73 -0
  341. package/dist/api/routes/mail/outlook-config.js.map +1 -0
  342. package/dist/api/routes/mail/provider-resolver.d.ts +64 -0
  343. package/dist/api/routes/mail/provider-resolver.d.ts.map +1 -0
  344. package/dist/api/routes/mail/provider-resolver.js +286 -0
  345. package/dist/api/routes/mail/provider-resolver.js.map +1 -0
  346. package/dist/api/routes/mail/providers.d.ts +4 -0
  347. package/dist/api/routes/mail/providers.d.ts.map +1 -0
  348. package/dist/api/routes/mail/providers.js +73 -0
  349. package/dist/api/routes/mail/providers.js.map +1 -0
  350. package/dist/api/routes/mail/search-health.d.ts +4 -0
  351. package/dist/api/routes/mail/search-health.d.ts.map +1 -0
  352. package/dist/api/routes/mail/search-health.js +131 -0
  353. package/dist/api/routes/mail/search-health.js.map +1 -0
  354. package/dist/api/routes/mail/tags-folders.d.ts +5 -0
  355. package/dist/api/routes/mail/tags-folders.d.ts.map +1 -0
  356. package/dist/api/routes/mail/tags-folders.js +35 -0
  357. package/dist/api/routes/mail/tags-folders.js.map +1 -0
  358. package/dist/api/routes/mail/validators.d.ts +23 -0
  359. package/dist/api/routes/mail/validators.d.ts.map +1 -0
  360. package/dist/api/routes/mail/validators.js +131 -0
  361. package/dist/api/routes/mail/validators.js.map +1 -0
  362. package/dist/api/routes/mail.d.ts.map +1 -1
  363. package/dist/api/routes/mail.js +259 -67
  364. package/dist/api/routes/mail.js.map +1 -1
  365. package/dist/api/routes/managed-tasks.d.ts.map +1 -1
  366. package/dist/api/routes/managed-tasks.js +142 -54
  367. package/dist/api/routes/managed-tasks.js.map +1 -1
  368. package/dist/api/routes/mcp.d.ts.map +1 -1
  369. package/dist/api/routes/mcp.js +115 -47
  370. package/dist/api/routes/mcp.js.map +1 -1
  371. package/dist/api/routes/metrics.d.ts +1 -1
  372. package/dist/api/routes/metrics.js +2 -2
  373. package/dist/api/routes/notion.d.ts.map +1 -1
  374. package/dist/api/routes/notion.js +230 -54
  375. package/dist/api/routes/notion.js.map +1 -1
  376. package/dist/api/routes/observations.d.ts.map +1 -1
  377. package/dist/api/routes/observations.js +40 -169
  378. package/dist/api/routes/observations.js.map +1 -1
  379. package/dist/api/routes/obsidian.d.ts.map +1 -1
  380. package/dist/api/routes/obsidian.js +193 -32
  381. package/dist/api/routes/obsidian.js.map +1 -1
  382. package/dist/api/routes/profile-questions.d.ts.map +1 -1
  383. package/dist/api/routes/profile-questions.js +19 -3
  384. package/dist/api/routes/profile-questions.js.map +1 -1
  385. package/dist/api/routes/receipts.d.ts.map +1 -1
  386. package/dist/api/routes/receipts.js +64 -24
  387. package/dist/api/routes/receipts.js.map +1 -1
  388. package/dist/api/routes/recurring-schedules.d.ts.map +1 -1
  389. package/dist/api/routes/recurring-schedules.js +243 -13
  390. package/dist/api/routes/recurring-schedules.js.map +1 -1
  391. package/dist/api/routes/repositories.d.ts.map +1 -1
  392. package/dist/api/routes/repositories.js +278 -104
  393. package/dist/api/routes/repositories.js.map +1 -1
  394. package/dist/api/routes/schedule-model-resolver.d.ts +153 -0
  395. package/dist/api/routes/schedule-model-resolver.d.ts.map +1 -0
  396. package/dist/api/routes/schedule-model-resolver.js +282 -0
  397. package/dist/api/routes/schedule-model-resolver.js.map +1 -0
  398. package/dist/api/routes/schedule-options.d.ts +25 -0
  399. package/dist/api/routes/schedule-options.d.ts.map +1 -0
  400. package/dist/api/routes/schedule-options.js +77 -0
  401. package/dist/api/routes/schedule-options.js.map +1 -0
  402. package/dist/api/routes/schedule-validation.d.ts +146 -0
  403. package/dist/api/routes/schedule-validation.d.ts.map +1 -0
  404. package/dist/api/routes/schedule-validation.js +153 -0
  405. package/dist/api/routes/schedule-validation.js.map +1 -0
  406. package/dist/api/routes/setup.d.ts.map +1 -1
  407. package/dist/api/routes/setup.js +100 -26
  408. package/dist/api/routes/setup.js.map +1 -1
  409. package/dist/api/routes/skills.d.ts.map +1 -1
  410. package/dist/api/routes/skills.js +81 -30
  411. package/dist/api/routes/skills.js.map +1 -1
  412. package/dist/api/routes/sot-bindings.d.ts.map +1 -1
  413. package/dist/api/routes/sot-bindings.js +46 -11
  414. package/dist/api/routes/sot-bindings.js.map +1 -1
  415. package/dist/api/routes/sse.d.ts.map +1 -1
  416. package/dist/api/routes/sse.js +6 -1
  417. package/dist/api/routes/sse.js.map +1 -1
  418. package/dist/api/routes/system.d.ts.map +1 -1
  419. package/dist/api/routes/system.js +15 -2
  420. package/dist/api/routes/system.js.map +1 -1
  421. package/dist/api/routes/travel-bookings.d.ts.map +1 -1
  422. package/dist/api/routes/travel-bookings.js +26 -9
  423. package/dist/api/routes/travel-bookings.js.map +1 -1
  424. package/dist/api/routes/travel-time.d.ts.map +1 -1
  425. package/dist/api/routes/travel-time.js +50 -10
  426. package/dist/api/routes/travel-time.js.map +1 -1
  427. package/dist/api/routes/wiki.d.ts.map +1 -1
  428. package/dist/api/routes/wiki.js +49 -8
  429. package/dist/api/routes/wiki.js.map +1 -1
  430. package/dist/api/server.d.ts +15 -3
  431. package/dist/api/server.d.ts.map +1 -1
  432. package/dist/api/server.js +32 -10
  433. package/dist/api/server.js.map +1 -1
  434. package/dist/bootstrap/adapters.d.ts.map +1 -1
  435. package/dist/bootstrap/adapters.js +7 -4
  436. package/dist/bootstrap/adapters.js.map +1 -1
  437. package/dist/bootstrap/api.d.ts +205 -0
  438. package/dist/bootstrap/api.d.ts.map +1 -0
  439. package/dist/bootstrap/api.js +443 -0
  440. package/dist/bootstrap/api.js.map +1 -0
  441. package/dist/bootstrap/db.d.ts +119 -0
  442. package/dist/bootstrap/db.d.ts.map +1 -0
  443. package/dist/bootstrap/db.js +294 -0
  444. package/dist/bootstrap/db.js.map +1 -0
  445. package/dist/bootstrap/event-pipeline.d.ts +308 -0
  446. package/dist/bootstrap/event-pipeline.d.ts.map +1 -0
  447. package/dist/bootstrap/event-pipeline.js +704 -0
  448. package/dist/bootstrap/event-pipeline.js.map +1 -0
  449. package/dist/bootstrap/observers.d.ts +148 -0
  450. package/dist/bootstrap/observers.d.ts.map +1 -0
  451. package/dist/bootstrap/observers.js +558 -0
  452. package/dist/bootstrap/observers.js.map +1 -0
  453. package/dist/bootstrap/schedule-helpers.d.ts +122 -0
  454. package/dist/bootstrap/schedule-helpers.d.ts.map +1 -1
  455. package/dist/bootstrap/schedule-helpers.js +202 -4
  456. package/dist/bootstrap/schedule-helpers.js.map +1 -1
  457. package/dist/config.d.ts.map +1 -1
  458. package/dist/config.js +20 -3
  459. package/dist/config.js.map +1 -1
  460. package/dist/core/abort-utils.d.ts +14 -0
  461. package/dist/core/abort-utils.d.ts.map +1 -0
  462. package/dist/core/abort-utils.js +36 -0
  463. package/dist/core/abort-utils.js.map +1 -0
  464. package/dist/core/agent-core.d.ts +22 -3
  465. package/dist/core/agent-core.d.ts.map +1 -1
  466. package/dist/core/agent-core.js +3 -1
  467. package/dist/core/agent-core.js.map +1 -1
  468. package/dist/core/backends/auth-health-monitor.js +2 -3
  469. package/dist/core/backends/auth-health-monitor.js.map +1 -1
  470. package/dist/core/backends/backend-router.d.ts +11 -1
  471. package/dist/core/backends/backend-router.d.ts.map +1 -1
  472. package/dist/core/backends/backend-router.js +97 -2
  473. package/dist/core/backends/backend-router.js.map +1 -1
  474. package/dist/core/backends/claude-code-core.d.ts +51 -0
  475. package/dist/core/backends/claude-code-core.d.ts.map +1 -1
  476. package/dist/core/backends/claude-code-core.js +134 -11
  477. package/dist/core/backends/claude-code-core.js.map +1 -1
  478. package/dist/core/backends/claude-tool-collection.js +1 -1
  479. package/dist/core/backends/codex-core.d.ts +13 -1
  480. package/dist/core/backends/codex-core.d.ts.map +1 -1
  481. package/dist/core/backends/codex-core.js +436 -22
  482. package/dist/core/backends/codex-core.js.map +1 -1
  483. package/dist/core/backends/gemini-cli-core.d.ts +5 -1
  484. package/dist/core/backends/gemini-cli-core.d.ts.map +1 -1
  485. package/dist/core/backends/gemini-cli-core.js +298 -15
  486. package/dist/core/backends/gemini-cli-core.js.map +1 -1
  487. package/dist/core/backends/install-methods.d.ts.map +1 -1
  488. package/dist/core/backends/install-methods.js +22 -0
  489. package/dist/core/backends/install-methods.js.map +1 -1
  490. package/dist/core/backends/model-registry.d.ts +9 -4
  491. package/dist/core/backends/model-registry.d.ts.map +1 -1
  492. package/dist/core/backends/model-registry.js +153 -23
  493. package/dist/core/backends/model-registry.js.map +1 -1
  494. package/dist/core/backends/native-skill-discovery-probe.d.ts +80 -0
  495. package/dist/core/backends/native-skill-discovery-probe.d.ts.map +1 -0
  496. package/dist/core/backends/native-skill-discovery-probe.js +175 -0
  497. package/dist/core/backends/native-skill-discovery-probe.js.map +1 -0
  498. package/dist/core/backends/opencode-basic-auth-fetch.d.ts +27 -0
  499. package/dist/core/backends/opencode-basic-auth-fetch.d.ts.map +1 -0
  500. package/dist/core/backends/opencode-basic-auth-fetch.js +40 -0
  501. package/dist/core/backends/opencode-basic-auth-fetch.js.map +1 -0
  502. package/dist/core/backends/opencode-config-builder.d.ts +86 -0
  503. package/dist/core/backends/opencode-config-builder.d.ts.map +1 -0
  504. package/dist/core/backends/opencode-config-builder.js +172 -0
  505. package/dist/core/backends/opencode-config-builder.js.map +1 -0
  506. package/dist/core/backends/opencode-core.d.ts +316 -0
  507. package/dist/core/backends/opencode-core.d.ts.map +1 -0
  508. package/dist/core/backends/opencode-core.js +1502 -0
  509. package/dist/core/backends/opencode-core.js.map +1 -0
  510. package/dist/core/backends/opencode-event-mapper.d.ts +133 -0
  511. package/dist/core/backends/opencode-event-mapper.d.ts.map +1 -0
  512. package/dist/core/backends/opencode-event-mapper.js +198 -0
  513. package/dist/core/backends/opencode-event-mapper.js.map +1 -0
  514. package/dist/core/backends/opencode-mcp.d.ts +82 -0
  515. package/dist/core/backends/opencode-mcp.d.ts.map +1 -0
  516. package/dist/core/backends/opencode-mcp.js +165 -0
  517. package/dist/core/backends/opencode-mcp.js.map +1 -0
  518. package/dist/core/backends/opencode-server-manager.d.ts +114 -0
  519. package/dist/core/backends/opencode-server-manager.d.ts.map +1 -0
  520. package/dist/core/backends/opencode-server-manager.js +222 -0
  521. package/dist/core/backends/opencode-server-manager.js.map +1 -0
  522. package/dist/core/backends/opencode-types.d.ts +46 -0
  523. package/dist/core/backends/opencode-types.d.ts.map +1 -0
  524. package/dist/core/backends/opencode-types.js +14 -0
  525. package/dist/core/backends/opencode-types.js.map +1 -0
  526. package/dist/core/backends/plan-presets.d.ts +18 -5
  527. package/dist/core/backends/plan-presets.d.ts.map +1 -1
  528. package/dist/core/backends/plan-presets.js +144 -23
  529. package/dist/core/backends/plan-presets.js.map +1 -1
  530. package/dist/core/backends/process-config-cascade.d.ts +35 -0
  531. package/dist/core/backends/process-config-cascade.d.ts.map +1 -1
  532. package/dist/core/backends/process-config-cascade.js +35 -1
  533. package/dist/core/backends/process-config-cascade.js.map +1 -1
  534. package/dist/core/backends/prompt-utils.d.ts.map +1 -1
  535. package/dist/core/backends/prompt-utils.js +0 -2
  536. package/dist/core/backends/prompt-utils.js.map +1 -1
  537. package/dist/core/backends/quota-reset-hints.d.ts +44 -0
  538. package/dist/core/backends/quota-reset-hints.d.ts.map +1 -0
  539. package/dist/core/backends/quota-reset-hints.js +117 -0
  540. package/dist/core/backends/quota-reset-hints.js.map +1 -0
  541. package/dist/core/bang-commands/commands-close.d.ts +24 -0
  542. package/dist/core/bang-commands/commands-close.d.ts.map +1 -0
  543. package/dist/core/bang-commands/commands-close.js +24 -0
  544. package/dist/core/bang-commands/commands-close.js.map +1 -0
  545. package/dist/core/bang-commands/commands-cost.d.ts.map +1 -1
  546. package/dist/core/bang-commands/commands-cost.js +13 -0
  547. package/dist/core/bang-commands/commands-cost.js.map +1 -1
  548. package/dist/core/bang-commands/commands-help.d.ts.map +1 -1
  549. package/dist/core/bang-commands/commands-help.js +44 -5
  550. package/dist/core/bang-commands/commands-help.js.map +1 -1
  551. package/dist/core/bang-commands/commands-report.d.ts.map +1 -1
  552. package/dist/core/bang-commands/commands-report.js +1 -0
  553. package/dist/core/bang-commands/commands-report.js.map +1 -1
  554. package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -1
  555. package/dist/core/bang-commands/commands-stop-start.js +2 -0
  556. package/dist/core/bang-commands/commands-stop-start.js.map +1 -1
  557. package/dist/core/bang-commands/commands-wiki.d.ts.map +1 -1
  558. package/dist/core/bang-commands/commands-wiki.js +12 -1
  559. package/dist/core/bang-commands/commands-wiki.js.map +1 -1
  560. package/dist/core/bang-commands/format-utils.d.ts +13 -1
  561. package/dist/core/bang-commands/format-utils.d.ts.map +1 -1
  562. package/dist/core/bang-commands/format-utils.js +21 -2
  563. package/dist/core/bang-commands/format-utils.js.map +1 -1
  564. package/dist/core/bang-commands/index.d.ts +1 -0
  565. package/dist/core/bang-commands/index.d.ts.map +1 -1
  566. package/dist/core/bang-commands/index.js +3 -0
  567. package/dist/core/bang-commands/index.js.map +1 -1
  568. package/dist/core/bang-commands/registry.d.ts +50 -0
  569. package/dist/core/bang-commands/registry.d.ts.map +1 -1
  570. package/dist/core/bang-commands/registry.js +164 -19
  571. package/dist/core/bang-commands/registry.js.map +1 -1
  572. package/dist/core/channel-timeline.d.ts +18 -1
  573. package/dist/core/channel-timeline.d.ts.map +1 -1
  574. package/dist/core/channel-timeline.js +44 -0
  575. package/dist/core/channel-timeline.js.map +1 -1
  576. package/dist/core/context/activity-view-runner.js +9 -1
  577. package/dist/core/context/activity-view-runner.js.map +1 -1
  578. package/dist/core/context/default-schedules-runner.js +44 -4
  579. package/dist/core/context/default-schedules-runner.js.map +1 -1
  580. package/dist/core/context/domain-index-runner.js +9 -1
  581. package/dist/core/context/domain-index-runner.js.map +1 -1
  582. package/dist/core/context/entity-source-rename.d.ts.map +1 -1
  583. package/dist/core/context/entity-source-rename.js +9 -1
  584. package/dist/core/context/entity-source-rename.js.map +1 -1
  585. package/dist/core/context/policy-index-runner.js +9 -1
  586. package/dist/core/context/policy-index-runner.js.map +1 -1
  587. package/dist/core/context/reconciler-runner.js +9 -1
  588. package/dist/core/context/reconciler-runner.js.map +1 -1
  589. package/dist/core/context-builder.d.ts +97 -2
  590. package/dist/core/context-builder.d.ts.map +1 -1
  591. package/dist/core/context-builder.js +303 -30
  592. package/dist/core/context-builder.js.map +1 -1
  593. package/dist/core/context-frontmatter.d.ts +6 -0
  594. package/dist/core/context-frontmatter.d.ts.map +1 -1
  595. package/dist/core/context-frontmatter.js +120 -8
  596. package/dist/core/context-frontmatter.js.map +1 -1
  597. package/dist/core/context-health.js +21 -9
  598. package/dist/core/context-health.js.map +1 -1
  599. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts +19 -0
  600. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts.map +1 -0
  601. package/dist/core/context-validation/_pa_wip_context_validation/index.js +19 -0
  602. package/dist/core/context-validation/_pa_wip_context_validation/index.js.map +1 -0
  603. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts +94 -0
  604. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts.map +1 -0
  605. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js +130 -0
  606. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js.map +1 -0
  607. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts +60 -0
  608. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts.map +1 -0
  609. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js +156 -0
  610. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js.map +1 -0
  611. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts +41 -0
  612. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts.map +1 -0
  613. package/dist/core/context-validation/_pa_wip_context_validation/section.js +82 -0
  614. package/dist/core/context-validation/_pa_wip_context_validation/section.js.map +1 -0
  615. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts +52 -0
  616. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts.map +1 -0
  617. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js +110 -0
  618. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js.map +1 -0
  619. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts +85 -0
  620. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts.map +1 -0
  621. package/dist/core/context-validation/_pa_wip_context_validation/today.js +162 -0
  622. package/dist/core/context-validation/_pa_wip_context_validation/today.js.map +1 -0
  623. package/dist/core/context-validation/index.d.ts +19 -0
  624. package/dist/core/context-validation/index.d.ts.map +1 -0
  625. package/dist/core/context-validation/index.js +19 -0
  626. package/dist/core/context-validation/index.js.map +1 -0
  627. package/dist/core/context-validation/prepare-write.d.ts +95 -0
  628. package/dist/core/context-validation/prepare-write.d.ts.map +1 -0
  629. package/dist/core/context-validation/prepare-write.js +135 -0
  630. package/dist/core/context-validation/prepare-write.js.map +1 -0
  631. package/dist/core/context-validation/routine-rulebook.d.ts +60 -0
  632. package/dist/core/context-validation/routine-rulebook.d.ts.map +1 -0
  633. package/dist/core/context-validation/routine-rulebook.js +156 -0
  634. package/dist/core/context-validation/routine-rulebook.js.map +1 -0
  635. package/dist/core/context-validation/section.d.ts +41 -0
  636. package/dist/core/context-validation/section.d.ts.map +1 -0
  637. package/dist/core/context-validation/section.js +82 -0
  638. package/dist/core/context-validation/section.js.map +1 -0
  639. package/dist/core/context-validation/snapshot-debounce.d.ts +52 -0
  640. package/dist/core/context-validation/snapshot-debounce.d.ts.map +1 -0
  641. package/dist/core/context-validation/snapshot-debounce.js +110 -0
  642. package/dist/core/context-validation/snapshot-debounce.js.map +1 -0
  643. package/dist/core/context-validation/today.d.ts +85 -0
  644. package/dist/core/context-validation/today.d.ts.map +1 -0
  645. package/dist/core/context-validation/today.js +168 -0
  646. package/dist/core/context-validation/today.js.map +1 -0
  647. package/dist/core/daemon-api-cli.d.ts +6 -5
  648. package/dist/core/daemon-api-cli.d.ts.map +1 -1
  649. package/dist/core/daemon-api-cli.js +73 -32
  650. package/dist/core/daemon-api-cli.js.map +1 -1
  651. package/dist/core/dispatcher-error-handling.d.ts +13 -0
  652. package/dist/core/dispatcher-error-handling.d.ts.map +1 -1
  653. package/dist/core/dispatcher-error-handling.js +69 -0
  654. package/dist/core/dispatcher-error-handling.js.map +1 -1
  655. package/dist/core/dispatcher-hourly-check.d.ts +73 -1
  656. package/dist/core/dispatcher-hourly-check.d.ts.map +1 -1
  657. package/dist/core/dispatcher-hourly-check.js +249 -151
  658. package/dist/core/dispatcher-hourly-check.js.map +1 -1
  659. package/dist/core/dispatcher-message-handler.d.ts +11 -1
  660. package/dist/core/dispatcher-message-handler.d.ts.map +1 -1
  661. package/dist/core/dispatcher-message-handler.js +165 -47
  662. package/dist/core/dispatcher-message-handler.js.map +1 -1
  663. package/dist/core/dispatcher-morning-routine.d.ts +38 -30
  664. package/dist/core/dispatcher-morning-routine.d.ts.map +1 -1
  665. package/dist/core/dispatcher-morning-routine.js +162 -104
  666. package/dist/core/dispatcher-morning-routine.js.map +1 -1
  667. package/dist/core/dispatcher-prompt.d.ts +4 -1
  668. package/dist/core/dispatcher-prompt.d.ts.map +1 -1
  669. package/dist/core/dispatcher-prompt.js +18 -2
  670. package/dist/core/dispatcher-prompt.js.map +1 -1
  671. package/dist/core/dispatcher-repository-helpers.d.ts.map +1 -1
  672. package/dist/core/dispatcher-repository-helpers.js +5 -1
  673. package/dist/core/dispatcher-repository-helpers.js.map +1 -1
  674. package/dist/core/dispatcher-result-processor.d.ts.map +1 -1
  675. package/dist/core/dispatcher-result-processor.js +9 -4
  676. package/dist/core/dispatcher-result-processor.js.map +1 -1
  677. package/dist/core/dispatcher-scheduled-tasks.d.ts +1 -1
  678. package/dist/core/dispatcher-scheduled-tasks.d.ts.map +1 -1
  679. package/dist/core/dispatcher-scheduled-tasks.js +79 -16
  680. package/dist/core/dispatcher-scheduled-tasks.js.map +1 -1
  681. package/dist/core/dispatcher-types.d.ts +84 -12
  682. package/dist/core/dispatcher-types.d.ts.map +1 -1
  683. package/dist/core/dispatcher-types.js.map +1 -1
  684. package/dist/core/dispatcher.d.ts +50 -1
  685. package/dist/core/dispatcher.d.ts.map +1 -1
  686. package/dist/core/dispatcher.js +143 -8
  687. package/dist/core/dispatcher.js.map +1 -1
  688. package/dist/core/dm-freshness-metrics.d.ts +6 -5
  689. package/dist/core/dm-freshness-metrics.d.ts.map +1 -1
  690. package/dist/core/dm-freshness-metrics.js +7 -6
  691. package/dist/core/dm-freshness-metrics.js.map +1 -1
  692. package/dist/core/evening-review-verify.d.ts +164 -0
  693. package/dist/core/evening-review-verify.d.ts.map +1 -0
  694. package/dist/core/evening-review-verify.js +637 -0
  695. package/dist/core/evening-review-verify.js.map +1 -0
  696. package/dist/core/fetch-window-prompt-loader.d.ts +47 -0
  697. package/dist/core/fetch-window-prompt-loader.d.ts.map +1 -0
  698. package/dist/core/fetch-window-prompt-loader.js +72 -0
  699. package/dist/core/fetch-window-prompt-loader.js.map +1 -0
  700. package/dist/core/management-md.d.ts.map +1 -1
  701. package/dist/core/management-md.js +23 -9
  702. package/dist/core/management-md.js.map +1 -1
  703. package/dist/core/management-registry.d.ts +13 -21
  704. package/dist/core/management-registry.d.ts.map +1 -1
  705. package/dist/core/management-registry.js +27 -48
  706. package/dist/core/management-registry.js.map +1 -1
  707. package/dist/core/metrics.d.ts +88 -1
  708. package/dist/core/metrics.d.ts.map +1 -1
  709. package/dist/core/metrics.js +78 -2
  710. package/dist/core/metrics.js.map +1 -1
  711. package/dist/core/morning/agent-journal-appender.d.ts +197 -0
  712. package/dist/core/morning/agent-journal-appender.d.ts.map +1 -0
  713. package/dist/core/morning/agent-journal-appender.js +458 -0
  714. package/dist/core/morning/agent-journal-appender.js.map +1 -0
  715. package/dist/core/morning/handoff-parser.d.ts +45 -0
  716. package/dist/core/morning/handoff-parser.d.ts.map +1 -0
  717. package/dist/core/morning/handoff-parser.js +117 -0
  718. package/dist/core/morning/handoff-parser.js.map +1 -0
  719. package/dist/core/morning/journal-skeleton-builder.d.ts +157 -0
  720. package/dist/core/morning/journal-skeleton-builder.d.ts.map +1 -0
  721. package/dist/core/morning/journal-skeleton-builder.js +303 -0
  722. package/dist/core/morning/journal-skeleton-builder.js.map +1 -0
  723. package/dist/core/morning/orchestrator.d.ts +312 -0
  724. package/dist/core/morning/orchestrator.d.ts.map +1 -0
  725. package/dist/core/morning/orchestrator.js +827 -0
  726. package/dist/core/morning/orchestrator.js.map +1 -0
  727. package/dist/core/morning/parent-audit-emitter.d.ts +82 -0
  728. package/dist/core/morning/parent-audit-emitter.d.ts.map +1 -0
  729. package/dist/core/morning/parent-audit-emitter.js +120 -0
  730. package/dist/core/morning/parent-audit-emitter.js.map +1 -0
  731. package/dist/core/morning/roadmap-skeleton-builder.d.ts +159 -0
  732. package/dist/core/morning/roadmap-skeleton-builder.d.ts.map +1 -0
  733. package/dist/core/morning/roadmap-skeleton-builder.js +338 -0
  734. package/dist/core/morning/roadmap-skeleton-builder.js.map +1 -0
  735. package/dist/core/output-language-policy.js +1 -1
  736. package/dist/core/output-language-policy.js.map +1 -1
  737. package/dist/core/policy-files.d.ts +19 -2
  738. package/dist/core/policy-files.d.ts.map +1 -1
  739. package/dist/core/policy-files.js +65 -7
  740. package/dist/core/policy-files.js.map +1 -1
  741. package/dist/core/pre-pass-freshness.d.ts +28 -0
  742. package/dist/core/pre-pass-freshness.d.ts.map +1 -0
  743. package/dist/core/pre-pass-freshness.js +10 -0
  744. package/dist/core/pre-pass-freshness.js.map +1 -0
  745. package/dist/core/previous-week-digest.d.ts +130 -0
  746. package/dist/core/previous-week-digest.d.ts.map +1 -0
  747. package/dist/core/previous-week-digest.js +257 -0
  748. package/dist/core/previous-week-digest.js.map +1 -0
  749. package/dist/core/prompts.js +3 -3
  750. package/dist/core/prompts.js.map +1 -1
  751. package/dist/core/quiet-hours-sync.d.ts.map +1 -1
  752. package/dist/core/quiet-hours-sync.js +7 -0
  753. package/dist/core/quiet-hours-sync.js.map +1 -1
  754. package/dist/core/recurrence.d.ts +13 -0
  755. package/dist/core/recurrence.d.ts.map +1 -1
  756. package/dist/core/recurrence.js +108 -13
  757. package/dist/core/recurrence.js.map +1 -1
  758. package/dist/core/release-assets.d.ts +21 -1
  759. package/dist/core/release-assets.d.ts.map +1 -1
  760. package/dist/core/release-assets.js +58 -3
  761. package/dist/core/release-assets.js.map +1 -1
  762. package/dist/core/repository-management-docs.d.ts.map +1 -1
  763. package/dist/core/repository-management-docs.js +14 -4
  764. package/dist/core/repository-management-docs.js.map +1 -1
  765. package/dist/core/review-context.d.ts.map +1 -1
  766. package/dist/core/review-context.js +29 -1
  767. package/dist/core/review-context.js.map +1 -1
  768. package/dist/core/roadmap-maintenance.d.ts +213 -0
  769. package/dist/core/roadmap-maintenance.d.ts.map +1 -0
  770. package/dist/core/roadmap-maintenance.js +706 -0
  771. package/dist/core/roadmap-maintenance.js.map +1 -0
  772. package/dist/core/roadmap-validate.d.ts +5 -0
  773. package/dist/core/roadmap-validate.d.ts.map +1 -1
  774. package/dist/core/roadmap-validate.js +6 -69
  775. package/dist/core/roadmap-validate.js.map +1 -1
  776. package/dist/core/routine-acquisition-plan.d.ts +43 -7
  777. package/dist/core/routine-acquisition-plan.d.ts.map +1 -1
  778. package/dist/core/routine-acquisition-plan.js +99 -8
  779. package/dist/core/routine-acquisition-plan.js.map +1 -1
  780. package/dist/core/routine-fetch-window-retry.d.ts +41 -2
  781. package/dist/core/routine-fetch-window-retry.d.ts.map +1 -1
  782. package/dist/core/routine-fetch-window-retry.js +91 -8
  783. package/dist/core/routine-fetch-window-retry.js.map +1 -1
  784. package/dist/core/routine-fetch-window-runner.d.ts +55 -21
  785. package/dist/core/routine-fetch-window-runner.d.ts.map +1 -1
  786. package/dist/core/routine-fetch-window-runner.js +258 -35
  787. package/dist/core/routine-fetch-window-runner.js.map +1 -1
  788. package/dist/core/routine-windows.d.ts +17 -13
  789. package/dist/core/routine-windows.d.ts.map +1 -1
  790. package/dist/core/routine-windows.js +78 -36
  791. package/dist/core/routine-windows.js.map +1 -1
  792. package/dist/core/scheduler.d.ts +121 -37
  793. package/dist/core/scheduler.d.ts.map +1 -1
  794. package/dist/core/scheduler.js +359 -80
  795. package/dist/core/scheduler.js.map +1 -1
  796. package/dist/core/session-manager.d.ts +25 -6
  797. package/dist/core/session-manager.d.ts.map +1 -1
  798. package/dist/core/session-manager.js +32 -15
  799. package/dist/core/session-manager.js.map +1 -1
  800. package/dist/core/skeleton.d.ts.map +1 -1
  801. package/dist/core/skeleton.js +23 -23
  802. package/dist/core/skeleton.js.map +1 -1
  803. package/dist/core/skills-compiler.d.ts +275 -25
  804. package/dist/core/skills-compiler.d.ts.map +1 -1
  805. package/dist/core/skills-compiler.js +844 -205
  806. package/dist/core/skills-compiler.js.map +1 -1
  807. package/dist/core/skills-manifest.d.ts +104 -0
  808. package/dist/core/skills-manifest.d.ts.map +1 -1
  809. package/dist/core/skills-manifest.js +350 -39
  810. package/dist/core/skills-manifest.js.map +1 -1
  811. package/dist/core/wiki/git-precompile.d.ts +9 -0
  812. package/dist/core/wiki/git-precompile.d.ts.map +1 -1
  813. package/dist/core/wiki/git-precompile.js +7 -1
  814. package/dist/core/wiki/git-precompile.js.map +1 -1
  815. package/dist/core/workdir.d.ts +30 -1
  816. package/dist/core/workdir.d.ts.map +1 -1
  817. package/dist/core/workdir.js +140 -15
  818. package/dist/core/workdir.js.map +1 -1
  819. package/dist/db/entities-store.d.ts +5 -5
  820. package/dist/db/entities-store.js +5 -5
  821. package/dist/db/hourly-check-signals.d.ts.map +1 -1
  822. package/dist/db/hourly-check-signals.js +121 -35
  823. package/dist/db/hourly-check-signals.js.map +1 -1
  824. package/dist/db/observations.d.ts +1 -1
  825. package/dist/db/observations.js +1 -1
  826. package/dist/db/observations.js.map +1 -1
  827. package/dist/db/recurring-schedules.d.ts +32 -1
  828. package/dist/db/recurring-schedules.d.ts.map +1 -1
  829. package/dist/db/recurring-schedules.js +29 -10
  830. package/dist/db/recurring-schedules.js.map +1 -1
  831. package/dist/db/repositories-store.d.ts +2 -1
  832. package/dist/db/repositories-store.d.ts.map +1 -1
  833. package/dist/db/repositories-store.js +38 -3
  834. package/dist/db/repositories-store.js.map +1 -1
  835. package/dist/db/schema.d.ts.map +1 -1
  836. package/dist/db/schema.js +157 -51
  837. package/dist/db/schema.js.map +1 -1
  838. package/dist/db/wiki-store.d.ts.map +1 -1
  839. package/dist/db/wiki-store.js +3 -0
  840. package/dist/db/wiki-store.js.map +1 -1
  841. package/dist/index.js +308 -1480
  842. package/dist/index.js.map +1 -1
  843. package/dist/messaging/magic-phrase.d.ts +16 -0
  844. package/dist/messaging/magic-phrase.d.ts.map +1 -1
  845. package/dist/messaging/magic-phrase.js +53 -0
  846. package/dist/messaging/magic-phrase.js.map +1 -1
  847. package/dist/messaging/owner-channels.d.ts +24 -0
  848. package/dist/messaging/owner-channels.d.ts.map +1 -1
  849. package/dist/messaging/owner-channels.js +38 -0
  850. package/dist/messaging/owner-channels.js.map +1 -1
  851. package/dist/observers/calendar-poller.d.ts +2 -0
  852. package/dist/observers/calendar-poller.d.ts.map +1 -1
  853. package/dist/observers/calendar-poller.js +76 -54
  854. package/dist/observers/calendar-poller.js.map +1 -1
  855. package/dist/observers/delegated-sync-worker.d.ts +62 -0
  856. package/dist/observers/delegated-sync-worker.d.ts.map +1 -1
  857. package/dist/observers/delegated-sync-worker.js +128 -1
  858. package/dist/observers/delegated-sync-worker.js.map +1 -1
  859. package/dist/observers/git-watcher.d.ts +22 -0
  860. package/dist/observers/git-watcher.d.ts.map +1 -1
  861. package/dist/observers/git-watcher.js +31 -7
  862. package/dist/observers/git-watcher.js.map +1 -1
  863. package/dist/observers/imminent-event-scheduler.d.ts +2 -0
  864. package/dist/observers/imminent-event-scheduler.d.ts.map +1 -1
  865. package/dist/observers/imminent-event-scheduler.js +29 -0
  866. package/dist/observers/imminent-event-scheduler.js.map +1 -1
  867. package/dist/observers/notion-poller.d.ts +2 -0
  868. package/dist/observers/notion-poller.d.ts.map +1 -1
  869. package/dist/observers/notion-poller.js +44 -6
  870. package/dist/observers/notion-poller.js.map +1 -1
  871. package/dist/observers/poll-guard.d.ts +63 -0
  872. package/dist/observers/poll-guard.d.ts.map +1 -0
  873. package/dist/observers/poll-guard.js +89 -0
  874. package/dist/observers/poll-guard.js.map +1 -0
  875. package/dist/safety/absolute-block-audit.d.ts +17 -0
  876. package/dist/safety/absolute-block-audit.d.ts.map +1 -1
  877. package/dist/safety/absolute-block-audit.js +28 -2
  878. package/dist/safety/absolute-block-audit.js.map +1 -1
  879. package/dist/safety/agent-write-tracker.d.ts +42 -1
  880. package/dist/safety/agent-write-tracker.d.ts.map +1 -1
  881. package/dist/safety/agent-write-tracker.js +81 -1
  882. package/dist/safety/agent-write-tracker.js.map +1 -1
  883. package/dist/safety/always-disallowed.d.ts +34 -0
  884. package/dist/safety/always-disallowed.d.ts.map +1 -1
  885. package/dist/safety/always-disallowed.js +114 -7
  886. package/dist/safety/always-disallowed.js.map +1 -1
  887. package/dist/safety/audit.d.ts +20 -0
  888. package/dist/safety/audit.d.ts.map +1 -1
  889. package/dist/safety/audit.js +126 -0
  890. package/dist/safety/audit.js.map +1 -1
  891. package/dist/safety/risk-classifier.d.ts +17 -1
  892. package/dist/safety/risk-classifier.d.ts.map +1 -1
  893. package/dist/safety/risk-classifier.js +75 -7
  894. package/dist/safety/risk-classifier.js.map +1 -1
  895. package/dist/safety/subprocess-block-scanner.d.ts +89 -0
  896. package/dist/safety/subprocess-block-scanner.d.ts.map +1 -0
  897. package/dist/safety/subprocess-block-scanner.js +177 -0
  898. package/dist/safety/subprocess-block-scanner.js.map +1 -0
  899. package/dist/scheduler/hourly-check-gate.d.ts +23 -9
  900. package/dist/scheduler/hourly-check-gate.d.ts.map +1 -1
  901. package/dist/scheduler/hourly-check-gate.js +11 -6
  902. package/dist/scheduler/hourly-check-gate.js.map +1 -1
  903. package/dist/secrets/backend-api-key-env.d.ts.map +1 -1
  904. package/dist/secrets/backend-api-key-env.js +1 -0
  905. package/dist/secrets/backend-api-key-env.js.map +1 -1
  906. package/dist/services/delegated-backend-invoker.d.ts.map +1 -1
  907. package/dist/services/delegated-backend-invoker.js +8 -1
  908. package/dist/services/delegated-backend-invoker.js.map +1 -1
  909. package/dist/services/delegated-invoker-audit.d.ts.map +1 -1
  910. package/dist/services/delegated-invoker-audit.js +5 -1
  911. package/dist/services/delegated-invoker-audit.js.map +1 -1
  912. package/dist/services/delegated-proxy-config.d.ts +3 -2
  913. package/dist/services/delegated-proxy-config.d.ts.map +1 -1
  914. package/dist/services/delegated-proxy-config.js.map +1 -1
  915. package/dist/services/integrations/extract-write-item-id.d.ts +5 -2
  916. package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -1
  917. package/dist/services/integrations/extract-write-item-id.js.map +1 -1
  918. package/dist/services/mcp/generators/index.d.ts +1 -0
  919. package/dist/services/mcp/generators/index.d.ts.map +1 -1
  920. package/dist/services/mcp/generators/index.js +3 -0
  921. package/dist/services/mcp/generators/index.js.map +1 -1
  922. package/dist/services/mcp/sdk-observations-server.d.ts +60 -0
  923. package/dist/services/mcp/sdk-observations-server.d.ts.map +1 -0
  924. package/dist/services/mcp/sdk-observations-server.js +161 -0
  925. package/dist/services/mcp/sdk-observations-server.js.map +1 -0
  926. package/dist/services/mcp/session-materializer.d.ts.map +1 -1
  927. package/dist/services/mcp/session-materializer.js +13 -9
  928. package/dist/services/mcp/session-materializer.js.map +1 -1
  929. package/dist/services/mcp/types.d.ts +1 -0
  930. package/dist/services/mcp/types.d.ts.map +1 -1
  931. package/dist/services/notion.d.ts +19 -1
  932. package/dist/services/notion.d.ts.map +1 -1
  933. package/dist/services/notion.js +41 -2
  934. package/dist/services/notion.js.map +1 -1
  935. package/dist/services/observations-batch.d.ts +100 -0
  936. package/dist/services/observations-batch.d.ts.map +1 -0
  937. package/dist/services/observations-batch.js +258 -0
  938. package/dist/services/observations-batch.js.map +1 -0
  939. package/dist/services/voice/transcriber.d.ts +23 -0
  940. package/dist/services/voice/transcriber.d.ts.map +1 -1
  941. package/dist/services/voice/transcriber.js +55 -0
  942. package/dist/services/voice/transcriber.js.map +1 -1
  943. package/dist/settings/runtime-settings.d.ts +9 -6
  944. package/dist/settings/runtime-settings.d.ts.map +1 -1
  945. package/dist/settings/runtime-settings.js +50 -17
  946. package/dist/settings/runtime-settings.js.map +1 -1
  947. package/package.json +3 -2
  948. package/dist/api/delegated-proxy-helper.d.ts +0 -33
  949. package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
  950. package/dist/api/delegated-proxy-helper.js +0 -54
  951. package/dist/api/delegated-proxy-helper.js.map +0 -1
  952. package/dist/core/roadmap-merge.d.ts +0 -7
  953. package/dist/core/roadmap-merge.d.ts.map +0 -1
  954. package/dist/core/roadmap-merge.js +0 -187
  955. package/dist/core/roadmap-merge.js.map +0 -1
  956. package/dist/db/test-schemas.d.ts +0 -23
  957. package/dist/db/test-schemas.d.ts.map +0 -1
  958. package/dist/db/test-schemas.js +0 -111
  959. package/dist/db/test-schemas.js.map +0 -1
@@ -0,0 +1,704 @@
1
+ /**
2
+ * Event-processing pipeline bootstrap — §10 of the legacy `startup()` IIFE.
3
+ *
4
+ * Extracted from `index.ts` per
5
+ * `docs/design/appendices/index-bootstrap-stage-split.md` Phase B-4.
6
+ * Companion to `bootstrap/db.ts`, `bootstrap/adapters.ts`,
7
+ * `bootstrap/services.ts`, `bootstrap/observers.ts`, and `bootstrap/api.ts`;
8
+ * same Pattern-C shape (file-split-plan.md §10).
9
+ *
10
+ * Responsibilities (in run order — preserves the §10 ordering invariants
11
+ * captured by the design doc's §11):
12
+ * 1. Construct the four agent backends (Claude / Codex / Gemini / Opencode)
13
+ * and wire the per-session MCP context onto each.
14
+ * 2. Run the boot janitors that close orphaned proxy / pool / delegated-task
15
+ * tempdirs and rows so the dispatcher starts from a clean state.
16
+ * 3. Construct `DelegatedBackendInvoker`, `NotificationManager`, and
17
+ * `AuthTelemetry`. The shared `makeAuthNotifier` factory binds the
18
+ * monitor + recovery surfaces to the same notification pipeline.
19
+ * 4. Build the `BackendRouter` with its `prepareSessionDir` fallback
20
+ * re-materialization callback (CLAUDE.md invariant: a Claude→Codex
21
+ * fallback would otherwise leave the dir with only CLAUDE.md and no
22
+ * AGENTS.md). Validates the built-in skill source tree + delegated
23
+ * mode startup contracts before any execute.
24
+ * 5. Construct `ContextBuilder`, `SessionManager`, `MessageRecorder`,
25
+ * `EventBroadcaster`, `AuditLogger`. Build `rematerializeActiveDmWorkdirs`
26
+ * and install it as the real `onMailScopeChanged` handler via the
27
+ * `setMailScopeChangedHandler` dep (forward-reference resolved).
28
+ * 6. Construct `MigrationLock`, `ContextWriteGate`, `SignalDetector`,
29
+ * `ScopedReadSensitiveTokenManager`, then the `EventDispatcher`. Apply
30
+ * every dispatcher setter (signal detector, docs citation lookup,
31
+ * dashboard stream fan-out, attachment store, event broadcaster, voice
32
+ * transcriber, auth recovery/monitor, delegated-sync refresh, bang
33
+ * command registry, skill curation hooks).
34
+ * 7. Construct `AuthHealthMonitor` + `AuthRecovery` (after dispatcher so
35
+ * the `isMorningRoutineActive` closure resolves immediately). Reconcile
36
+ * in-flight recoveries, fire the initial keepalive sweep, and arm the
37
+ * daily sweep timer.
38
+ * 8. Wire the roadmap-refresh trampoline through `setRoadmapRefreshSink`
39
+ * so the observer pollers built in B-2 can emit refresh signals now
40
+ * that the dispatcher exists.
41
+ * 9. Build the on-demand `buildDelegatedSyncWorker` + register it when at
42
+ * least one integration is in `delegated` mode. Register the
43
+ * `DelegatedProbeObserver` so the §4.5 connector-health cache stays
44
+ * fresh.
45
+ * 10. Return the cross-stage closures (`handleSecretChange`,
46
+ * `handleGoogleServicesReady`, `handlePromptContextChanged`,
47
+ * `rematerializeActiveDmWorkdirs`) the B-3 API factory and the
48
+ * `index.ts` post-startup-complete flush consume.
49
+ *
50
+ * Ordering invariants this module preserves (design §11):
51
+ * - Wiki token resolver (B-1) and `mergeRuntimeSettingsFromDb` (B-1) run
52
+ * before this factory is invoked. The dispatcher reads the merged
53
+ * config directly.
54
+ * - Orphan dashboard_chat session close (B-1) runs before SessionManager
55
+ * is constructed here.
56
+ * - Fallback re-materialization is wired into BackendRouter before any
57
+ * backend fallback can occur — the closure lives inside this factory,
58
+ * same lexical proximity as the pre-extraction code.
59
+ * - The roadmap-refresh sink (`setRoadmapRefreshSink` dep) is installed
60
+ * immediately after the dispatcher is constructed but BEFORE
61
+ * `observerManager.startAll()` runs (which happens later in `index.ts`).
62
+ * - `handleSecretChange` and `handleGoogleServicesReady` are returned
63
+ * rather than registered here — the B-3 api factory wires the former
64
+ * into `ApiDependencies.onSecretChanged` and `index.ts` composes the
65
+ * latter with the `startupComplete`/`pendingGoogleServicesReady`
66
+ * deferral wrapper before threading the wrapper into B-3 via
67
+ * `onGoogleServicesReady`.
68
+ *
69
+ * Test surface (per design doc §10):
70
+ * - `createSecretChangeHandler` — exported for the scope-routing matrix
71
+ * test (slack, telegram, discord, notion, github, google, apple_calendar,
72
+ * apiToken, unknown). The Notion hot-register branch's three gates
73
+ * (services.notion, observerManager.has, notionDatabaseIds.length,
74
+ * shouldStartObserversFor) are pinned here. The GitHub webhook-mode
75
+ * upgrade branch's two gates (getGitWatcher non-null, secretState.
76
+ * githubWebhookConfigured) are pinned here.
77
+ * - `createGoogleServicesReadyHandler` — exported for the calendar
78
+ * hot-register / morning-routine gate / roadmap-refresh test matrix.
79
+ */
80
+ import { join } from "node:path";
81
+ import { randomBytes } from "node:crypto";
82
+ import { getContextDir, isRoadmapStale } from "../config.js";
83
+ import { isUserPaused } from "../db/runtime-state.js";
84
+ import { readIntegrations } from "../db/integrations-store.js";
85
+ import { selectGithubRepoSlugs } from "../db/repositories-store.js";
86
+ import { EventPriority } from "@aitne/shared";
87
+ import { createLogger } from "../logging.js";
88
+ import { markContextChanged } from "../core/dashboard-session-controls.js";
89
+ import { EventDispatcher } from "../core/dispatcher.js";
90
+ import { SignalDetector } from "../core/signal-detector.js";
91
+ import { ContextBuilder } from "../core/context-builder.js";
92
+ import { getTaskFlow, initTaskFlows } from "../core/prompts.js";
93
+ import { SessionManager } from "../core/session-manager.js";
94
+ import { MessageRecorder } from "../core/message-recorder.js";
95
+ import { ScopedReadSensitiveTokenManager } from "../core/read-sensitive-token-manager.js";
96
+ import { createDefaultBangCommandRegistry } from "../core/bang-commands/index.js";
97
+ import { ContextWriteGate, MigrationLock, } from "../core/today-write-lock.js";
98
+ import { applyPromptContextStaleness, } from "../core/context-staleness.js";
99
+ // Backends
100
+ import { ClaudeCodeCore } from "../core/backends/claude-code-core.js";
101
+ import { CodexCore } from "../core/backends/codex-core.js";
102
+ import { GeminiCliCore } from "../core/backends/gemini-cli-core.js";
103
+ import { OpencodeCore } from "../core/backends/opencode-core.js";
104
+ import { createOpencodeServerManager, } from "../core/backends/opencode-server-manager.js";
105
+ import { BackendRouter } from "../core/backends/backend-router.js";
106
+ import { AuthTelemetry } from "../core/backends/auth-telemetry.js";
107
+ import { AuthHealthMonitor, AUTH_PROBE_NOTIFICATION_CATEGORY, } from "../core/backends/auth-health-monitor.js";
108
+ import { AuthRecovery } from "../core/backends/auth-recovery.js";
109
+ // Workdir / skills
110
+ import { ensureBackendMaterialized, syncAllUserSkills, buildConfiguredServices, refreshDmSessionWorkdirs, validateDelegatedStartup, } from "../core/workdir.js";
111
+ import { validateBuiltinSkillSourceTree } from "../core/skills-compiler.js";
112
+ // Audit / safety / messaging
113
+ import { AuditLogger } from "../safety/audit.js";
114
+ import { NotificationManager } from "../adapters/notification-manager.js";
115
+ import { DocsQAAdapter } from "../adapters/docs-qa-adapter.js";
116
+ import { CompositeDashboardStream } from "../adapters/composite-dashboard-stream.js";
117
+ import { EventBroadcaster } from "../api/routes/sse.js";
118
+ import { VoiceTranscriber } from "../services/voice/transcriber.js";
119
+ import { DelegatedBackendInvoker, runDelegatedTaskOrphanJanitor, runProxyTempdirJanitor, } from "../services/delegated-backend-invoker.js";
120
+ import { runSessionPoolTempdirJanitor } from "../services/delegated-task-session-pool.js";
121
+ import { DelegatedSyncWorker, hasActiveDelegatedSyncIntegration, } from "../observers/delegated-sync-worker.js";
122
+ import { shouldStartObserversFor } from "../core/integration-lifecycle.js";
123
+ import { makeDbLookup as makeDocsCitationLookup } from "../core/docs/citation-validator.js";
124
+ import { hasFreshAgentDayTodayMd, readSkillCurationCadence } from "./schedule-helpers.js";
125
+ const logger = createLogger("daemon-bootstrap-event-pipeline");
126
+ /**
127
+ * Construct the event-processing pipeline (§10). See the file-level
128
+ * docstring for the run order and the ordering invariants this factory
129
+ * preserves.
130
+ */
131
+ export async function createEventPipeline(deps) {
132
+ const { db, config, eventBus, secretBroker, blobStore, writeTracker, services, messageHub, dashboardAdapter, attachmentStore, morningRoutineLock, roadmapWriteLock, secretState, observerManager, buildCalendarPoller, buildNotionPoller, getGitWatcher, reloadDiscordAdapter, reloadSlackAdapter, reloadTelegramAdapter, reloadGoogleServices, reloadAppleCalendarService, reloadNotionService, reloadGitHubService, scheduler, isStartupComplete, setMailScopeChangedHandler, setRoadmapRefreshSink, } = deps;
133
+ // ── Agent cores + per-session MCP context ──────────────────────────────
134
+ const opencodeServerManager = deps.opencodeServerManager ?? createOpencodeServerManager();
135
+ const agentCore = new ClaudeCodeCore(config, writeTracker);
136
+ const codexCore = new CodexCore(config);
137
+ const geminiCore = new GeminiCliCore(config, writeTracker, undefined, db);
138
+ const opencodeCore = new OpencodeCore(config, writeTracker, opencodeServerManager);
139
+ // B-003 Phase 3 — wire the MCP session context so per-session workdirs
140
+ // pick up the current DB + keychain state at spawn time. Each core stays
141
+ // backward-compatible: without this call it simply runs without MCP.
142
+ const mcpContext = { db, blobStore };
143
+ agentCore.setMcpContext(mcpContext);
144
+ codexCore.setMcpContext(mcpContext);
145
+ geminiCore.setMcpContext(mcpContext);
146
+ opencodeCore.setMcpContext(mcpContext);
147
+ // ── Boot janitors ──────────────────────────────────────────────────────
148
+ // DELEGATED-PROXY-API-DESIGN.md Phase A — sweep stale
149
+ // `agent-sessions/proxy-*` tempdirs left by SIGKILL'd proxy invocations.
150
+ const janitorRemoved = runProxyTempdirJanitor(config.dataDir);
151
+ if (janitorRemoved > 0) {
152
+ logger.info({ removed: janitorRemoved }, "Boot janitor cleared stale delegated-proxy tempdirs");
153
+ }
154
+ const poolJanitorRemoved = runSessionPoolTempdirJanitor(join(config.dataDir, "agent-sessions"));
155
+ if (poolJanitorRemoved > 0) {
156
+ logger.info({ removed: poolJanitorRemoved }, "Boot janitor cleared stale delegated-task pool tempdirs");
157
+ }
158
+ // DELEGATED-TASK-MODE-DESIGN.md §11.1 — close `delegated_task.exec`
159
+ // rows that were `in_progress` when the daemon last crashed.
160
+ const taskOrphansClosed = runDelegatedTaskOrphanJanitor(db);
161
+ if (taskOrphansClosed > 0) {
162
+ logger.info({ closed: taskOrphansClosed }, "Boot janitor closed orphaned delegated_task in-progress rows");
163
+ }
164
+ const delegatedBackendInvoker = new DelegatedBackendInvoker({
165
+ db,
166
+ config,
167
+ cores: {
168
+ claude: agentCore,
169
+ codex: codexCore,
170
+ gemini: geminiCore,
171
+ opencode: opencodeCore,
172
+ },
173
+ });
174
+ // ── Notification + auth telemetry + shared notifier factory ────────────
175
+ // P2-16: sweep stale `batched` rows from a prior crash before the new
176
+ // dispatcher starts producing notifications. A queued (status='batched')
177
+ // row whose flush timer didn't fire (process killed) would otherwise
178
+ // linger forever and confuse the dashboard's notification feed.
179
+ NotificationManager.closeStaleBatchedRows(db);
180
+ const notificationManager = new NotificationManager(messageHub, db, config);
181
+ const authTelemetry = new AuthTelemetry(db);
182
+ const makeAuthNotifier = (source) => ({
183
+ send: async (message, options) => {
184
+ const kind = options?.kind ?? "keepalive";
185
+ const typeMap = {
186
+ probe_failure: "auth.probe_failure",
187
+ recovery: "auth.recovery",
188
+ keepalive: "auth.keepalive_reminder",
189
+ };
190
+ const notificationType = typeMap[kind] ?? "auth.keepalive_reminder";
191
+ // probe_failure and recovery bypass quiet-hours; keepalive does not.
192
+ const category = kind === "keepalive" ? "auth-health" : AUTH_PROBE_NOTIFICATION_CATEGORY;
193
+ await notificationManager.send(message, {
194
+ type: notificationType,
195
+ source,
196
+ priority: EventPriority.NORMAL,
197
+ timestamp: new Date(),
198
+ data: {},
199
+ correlationId: randomBytes(8).toString("hex"),
200
+ }, {
201
+ priority: "normal",
202
+ category,
203
+ destinationMode: "configured_only",
204
+ });
205
+ },
206
+ });
207
+ // ── Read-token manager + backend router with fallback re-materialize ──
208
+ const readTokenManager = new ScopedReadSensitiveTokenManager();
209
+ const agentRouter = new BackendRouter(db, config, [agentCore, codexCore, geminiCore, opencodeCore], notificationManager, authTelemetry,
210
+ // Materialize instruction files for a fallback backend in an existing
211
+ // session workdir. Without this, a Claude→Codex heavy-tier fallback
212
+ // would leave the dir with only CLAUDE.md and no AGENTS.md.
213
+ (sessionDir, backendId, eventType, processKey, wikiWorkspaceName, messageText) => {
214
+ const cfgServices = buildConfiguredServices(config, {
215
+ ...services,
216
+ github: selectGithubRepoSlugs(db).length > 0,
217
+ });
218
+ const mailAccounts = services.mail?.listActiveAccounts() ?? [];
219
+ ensureBackendMaterialized(config.workspaceDir, sessionDir, backendId, eventType, processKey, cfgServices, mailAccounts, readIntegrations(db), config.character, wikiWorkspaceName, getContextDir(config, db), db, messageText ?? null);
220
+ syncAllUserSkills(sessionDir, join(config.dataDir, "skills"));
221
+ });
222
+ // docs/design/appendices/skills-unification.md Phase 1 §R5 / item 6 — refuse to boot on a
223
+ // malformed source tree. Throws on slug-pattern violations and
224
+ // `description.length > 280` for every built-in `SKILL.md`.
225
+ validateBuiltinSkillSourceTree(join(config.workspaceDir, "agent-assets", "skills"));
226
+ // Startup validation — warn if any delegated-mode variant files are
227
+ // missing. Never throws.
228
+ {
229
+ const startupIntegrations = readIntegrations(db);
230
+ const missing = validateDelegatedStartup(config.workspaceDir, startupIntegrations);
231
+ if (missing.skills.length > 0 || missing.taskFlows.length > 0) {
232
+ logger.warn({ missingSkills: missing.skills, missingTaskFlows: missing.taskFlows }, "Delegated-mode variant files missing — agent will fall back to SKILL.md / direct task-flow for affected entries");
233
+ }
234
+ }
235
+ // ── Context builder + session/message recording + audit broadcaster ───
236
+ const contextBuilder = new ContextBuilder(config, db, services);
237
+ const sessionManager = new SessionManager(db, config);
238
+ const messageRecorder = new MessageRecorder(db);
239
+ const eventBroadcaster = new EventBroadcaster();
240
+ const auditLogger = new AuditLogger(db, {
241
+ // `/api/events/stream` is defined in terms of persisted agent_actions
242
+ // rows, not raw EventBus payloads, so the broadcaster subscribes at
243
+ // the audit layer.
244
+ onRowInserted: (row) => eventBroadcaster.broadcastEvent(row),
245
+ });
246
+ // ── DM workdir re-materialization (shared by mail scope + mode flips) ─
247
+ const rematerializeActiveDmWorkdirs = (reason) => {
248
+ const sessions = sessionManager.listActiveDmSessions();
249
+ if (sessions.length === 0) {
250
+ logger.debug({ reason }, "DM workdir refresh requested — no active DM sessions");
251
+ return null;
252
+ }
253
+ const cfgServices = buildConfiguredServices(config, {
254
+ ...services,
255
+ github: selectGithubRepoSlugs(db).length > 0,
256
+ });
257
+ const mailAccounts = services.mail?.listActiveAccounts() ?? [];
258
+ // Read integration state fresh inside the closure so a Phase F mode
259
+ // flip's pre-`writeIntegrations` row is not what gets baked.
260
+ const integrations = readIntegrations(db);
261
+ const summary = refreshDmSessionWorkdirs({
262
+ projectRoot: config.workspaceDir,
263
+ dataDir: config.dataDir,
264
+ sessions,
265
+ configuredServices: cfgServices,
266
+ mailAccounts,
267
+ integrations,
268
+ character: config.character,
269
+ });
270
+ return { summary, mailAccounts };
271
+ };
272
+ // Real implementation of the mail-scope-changed hook. Forward-reference
273
+ // was held open by the `setMailScopeChangedHandler` setter in `index.ts`.
274
+ setMailScopeChangedHandler((reason) => {
275
+ const result = rematerializeActiveDmWorkdirs(reason);
276
+ if (!result)
277
+ return;
278
+ logger.info({ reason, ...result.summary }, "Mail scope changed — DM session workdirs re-materialized");
279
+ eventBroadcaster.broadcastEvent({
280
+ kind: "mail_scope_changed",
281
+ reason,
282
+ activeAccounts: result.mailAccounts.length,
283
+ ...result.summary,
284
+ });
285
+ });
286
+ // ── Migration / context-write gates + task flow init ──────────────────
287
+ // Long timeout because cross-fs copies of large vaults may legitimately
288
+ // run multiple minutes.
289
+ const migrationLock = new MigrationLock(60 * 60 * 1000);
290
+ const contextWriteGate = new ContextWriteGate();
291
+ initTaskFlows(config.workspaceDir, config.dataDir);
292
+ // ── Signal detector + dispatcher ──────────────────────────────────────
293
+ const signalDetector = new SignalDetector(config);
294
+ const dispatcher = new EventDispatcher(eventBus, agentRouter, contextBuilder, getTaskFlow, notificationManager, sessionManager, messageRecorder, auditLogger, db, config, morningRoutineLock, services, roadmapWriteLock, writeTracker);
295
+ notificationManager.setSignalDetector(signalDetector);
296
+ // Wire the scoped read-token manager into every backend so daemon-API
297
+ // calls from `<sessionDir>` workdirs carry a per-session token, not the
298
+ // legacy shared one. OpenCode is included for parity even though the
299
+ // SDK currently runs in-process and offers no per-tool env injection
300
+ // slot — see opencode-core.ts (issuedReadToken) for the gap; this call
301
+ // keeps the issue/revoke bookkeeping consistent so a future env-
302
+ // injection path lands on a wired manager rather than a silent undefined.
303
+ agentCore.setReadTokenManager?.(readTokenManager);
304
+ codexCore.setReadTokenManager?.(readTokenManager);
305
+ geminiCore.setReadTokenManager?.(readTokenManager);
306
+ opencodeCore.setReadTokenManager?.(readTokenManager);
307
+ // Install the roadmap-refresh sink so observer pollers built in B-2 can
308
+ // emit refresh signals via the `triggerRoadmapRefresh` trampoline. Until
309
+ // this fires the trampoline is a no-op; the actual emit only happens
310
+ // inside poll loops which start after `observerManager.startAll()` in
311
+ // §13 of `index.ts`.
312
+ setRoadmapRefreshSink((source) => dispatcher.emitRoadmapRefresh(source));
313
+ // ── Dispatcher setters ────────────────────────────────────────────────
314
+ dispatcher.setSignalDetector(signalDetector);
315
+ // DOCS_QA_B7_DESIGN.md §11.1 — persistence-side citation validator for
316
+ // docs_qa sessions. Inert for chat/DM/routine flows.
317
+ const docsCitationLookup = makeDocsCitationLookup(db);
318
+ dispatcher.setDocsCitationLookup(docsCitationLookup);
319
+ // Docs-QA SSE adapter — DOCS_QA_B7_DESIGN.md §S4 / §S8. Fans out
320
+ // alongside the dashboard adapter on the same `platform="dashboard"`
321
+ // surface; the `intent: "docs_qa"` discriminator on inbound events
322
+ // forks dispatch into the docs-qa task flow. Intentionally NOT
323
+ // registered with `messageHub` (would collide with the dashboard adapter
324
+ // on the shared platform key).
325
+ const docsQAAdapter = new DocsQAAdapter((event) => void eventBus.put(event), docsCitationLookup);
326
+ dispatcher.setDashboardStream(new CompositeDashboardStream([dashboardAdapter, docsQAAdapter]));
327
+ dispatcher.setAttachmentStore(attachmentStore);
328
+ dispatcher.setEventBroadcaster(eventBroadcaster);
329
+ // Voice transcription. See docs/design/appendices/voice-transcription.md.
330
+ // Env vars stay live for advanced operators; `enabled` falls back to the
331
+ // `voiceTranscriptionEnabled` runtime setting via a getter so the
332
+ // dashboard install flow takes effect without a daemon restart.
333
+ const voiceTranscriberMaxDuration = Number(process.env.PA_VOICE_TRANSCRIPTION_MAX_DURATION_SEC ?? "600");
334
+ const voiceEnvOverride = process.env.PA_VOICE_TRANSCRIPTION_ENABLED;
335
+ const voiceTranscriberEnabled = voiceEnvOverride !== undefined
336
+ ? voiceEnvOverride.toLowerCase() !== "false"
337
+ : () => config.voiceTranscriptionEnabled;
338
+ const voicePrimaryEnvOverride = process.env.PA_VOICE_TRANSCRIPTION_PRIMARY_LANGUAGE;
339
+ const voiceTranscriberPrimaryLanguage = voicePrimaryEnvOverride !== undefined
340
+ ? voicePrimaryEnvOverride.trim() || null
341
+ : () => config.voiceTranscriptionPrimaryLanguage;
342
+ const voiceTranscriber = new VoiceTranscriber({
343
+ db,
344
+ modelDir: join(config.dataDir, "models", "whisper"),
345
+ enabled: voiceTranscriberEnabled,
346
+ model: process.env.PA_VOICE_TRANSCRIPTION_MODEL,
347
+ language: process.env.PA_VOICE_TRANSCRIPTION_LANGUAGE ?? null,
348
+ primaryLanguage: voiceTranscriberPrimaryLanguage,
349
+ maxDurationSec: Number.isFinite(voiceTranscriberMaxDuration)
350
+ ? voiceTranscriberMaxDuration
351
+ : 600,
352
+ });
353
+ dispatcher.setVoiceTranscriber(voiceTranscriber);
354
+ // M5 (release-prep): kick off the Whisper pipeline load in the
355
+ // background so the first inbound voice DM does not pay the
356
+ // ~800 MB – 2.5 GB model-download cost on the request path. The
357
+ // `void` is deliberate — daemon startup must NOT block on Hugging
358
+ // Face Hub being reachable. `warmUp()` is internally fault-tolerant
359
+ // (catches its own errors and logs them), so the outer `.catch` is
360
+ // pure defence against future signature drift.
361
+ void voiceTranscriber.warmUp().catch((err) => {
362
+ logger.warn({ err }, "voice transcriber warm-up threw despite internal catch — investigate");
363
+ });
364
+ // ── Auth health monitor + recovery (post-dispatcher) ──────────────────
365
+ // Constructed after the dispatcher so the `isMorningRoutineActive`
366
+ // closure resolves immediately (no forward-reference let-slot needed).
367
+ const authHealthMonitor = new AuthHealthMonitor(db, {
368
+ claude: agentCore,
369
+ codex: codexCore,
370
+ gemini: geminiCore,
371
+ opencode: opencodeCore,
372
+ }, authTelemetry, {
373
+ notifier: makeAuthNotifier("auth-health-monitor"),
374
+ isMorningRoutineActive: () => dispatcher.isMorningRoutineActive(),
375
+ isQuietHours: () => notificationManager.isQuietHours(),
376
+ probeDisabled: () => config.authProbeDisabled,
377
+ });
378
+ // Reset any recoveries that were in-flight when the daemon was last killed.
379
+ const recovered = authHealthMonitor.reconcilePendingRecoveries();
380
+ if (recovered > 0) {
381
+ logger.info({ count: recovered }, "Reconciled stuck auth recoveries on startup");
382
+ }
383
+ // Run the 60-day keepalive sweep once on startup. Hourly probe is
384
+ // registered via `scheduler.setAuthProbeCallback` in §12.
385
+ void authHealthMonitor.runKeepaliveSweep().catch((err) => {
386
+ logger.warn({ err }, "Initial auth keepalive sweep failed");
387
+ });
388
+ const keepaliveTimer = setInterval(() => {
389
+ void authHealthMonitor.runKeepaliveSweep().catch((err) => {
390
+ logger.warn({ err }, "Periodic auth keepalive sweep failed");
391
+ });
392
+ }, 24 * 60 * 60 * 1000);
393
+ keepaliveTimer.unref?.();
394
+ // Phase 5/6: Interactive auth recovery manager. Uses the same notifier
395
+ // sink as the AuthHealthMonitor so recovery DMs flow through the same
396
+ // notification pipeline with the same anti-spam guarantees.
397
+ const authRecovery = new AuthRecovery(db, authTelemetry, authHealthMonitor, makeAuthNotifier("auth-recovery"), {
398
+ claudeRecoveryTimeoutMin: 10,
399
+ codexRecoveryTimeoutMin: 15,
400
+ geminiRecoveryTimeoutMin: 5,
401
+ });
402
+ dispatcher.setAuthRecovery(authRecovery);
403
+ dispatcher.setAuthHealthMonitor(authHealthMonitor);
404
+ // ── Delegated sync worker (on-demand) ─────────────────────────────────
405
+ let delegatedSyncWorker = null;
406
+ const buildDelegatedSyncWorker = () => {
407
+ if (!delegatedSyncWorker) {
408
+ delegatedSyncWorker = new DelegatedSyncWorker({
409
+ db,
410
+ invoker: delegatedBackendInvoker,
411
+ calendarId: config.googleCalendarId,
412
+ timezone: config.timezone,
413
+ todayWriteLock: morningRoutineLock,
414
+ triggerRoadmapRefresh: (source) => dispatcher.emitRoadmapRefresh(source),
415
+ });
416
+ }
417
+ return delegatedSyncWorker;
418
+ };
419
+ if (hasActiveDelegatedSyncIntegration(db)) {
420
+ observerManager.register(buildDelegatedSyncWorker());
421
+ }
422
+ // Wire the delegated-sync refresh callback. The thunk reads the live
423
+ // `delegatedSyncWorker` reference each call so the dispatcher tracks
424
+ // re-registration when an integration mode flips. When no delegated
425
+ // integration is present, the worker is null and the call is a no-op.
426
+ dispatcher.setDelegatedSyncRefresh(async () => {
427
+ await delegatedSyncWorker?.runDisabledCadencesForHourlyCheck();
428
+ });
429
+ // ── Delegated probe observer (DELEGATED-MODE-V2 §7.1) ────────────────
430
+ // Hourly re-probe of delegated integrations' connector tools so the
431
+ // `integration_probes` cache reflects current sign-in state.
432
+ {
433
+ const { DelegatedProbeObserver } = await import("../observers/delegated-probe-observer.js");
434
+ observerManager.register(new DelegatedProbeObserver({
435
+ db,
436
+ agentBackends: [agentCore, codexCore, geminiCore, opencodeCore],
437
+ intervalMinutes: config.delegatedProbeIntervalMinutes,
438
+ }));
439
+ }
440
+ // ── Bang commands + skill-curation hooks ──────────────────────────────
441
+ // Messaging bang-commands (`!stop`/`!start`/`!cost`/`!report`) — owner
442
+ // DM chokepoint that runs ahead of every other interceptor.
443
+ dispatcher.setBangCommandRegistry(createDefaultBangCommandRegistry());
444
+ // P22 — wire the optimizer-workdir hooks. The `materialize` callback
445
+ // captures db, dataDir, workspaceDir, contextDir, and secretStore so
446
+ // the dispatcher branch can invoke it without importing the workdir
447
+ // module directly.
448
+ {
449
+ const { materializeOptimizerWorkdir, teardownOptimizerWorkdir } = await import("../core/skill-curation/workdir.js");
450
+ dispatcher.setSkillCurationHooks({
451
+ materialize: (opts) => materializeOptimizerWorkdir({
452
+ db,
453
+ dataDir: config.dataDir,
454
+ workspaceDir: config.workspaceDir,
455
+ contextDir: getContextDir(config),
456
+ secretStore: secretBroker,
457
+ cadence: readSkillCurationCadence(db),
458
+ ...(opts?.manual ? { manual: true } : {}),
459
+ ...(opts?.targetSkillsOverride
460
+ ? { targetSkillsOverride: opts.targetSkillsOverride }
461
+ : {}),
462
+ }),
463
+ teardown: teardownOptimizerWorkdir,
464
+ });
465
+ }
466
+ if (isUserPaused(db)) {
467
+ logger.info("Restored user-paused state, autonomous work remains paused");
468
+ }
469
+ // ── Cross-stage closures ──────────────────────────────────────────────
470
+ const handleGoogleServicesReady = createGoogleServicesReadyHandler({
471
+ db,
472
+ config,
473
+ services,
474
+ observerManager,
475
+ buildCalendarPoller,
476
+ scheduler,
477
+ dispatcher,
478
+ });
479
+ const handleSecretChange = createSecretChangeHandler({
480
+ db,
481
+ config,
482
+ services,
483
+ observerManager,
484
+ secretState,
485
+ buildNotionPoller,
486
+ getGitWatcher,
487
+ isStartupComplete,
488
+ reloadSlackAdapter,
489
+ reloadTelegramAdapter,
490
+ reloadDiscordAdapter,
491
+ reloadNotionService,
492
+ reloadGitHubService,
493
+ reloadGoogleServices,
494
+ reloadAppleCalendarService,
495
+ });
496
+ const handlePromptContextChanged = createPromptContextChangedHandler({
497
+ config,
498
+ db,
499
+ dispatcher,
500
+ sessionManager,
501
+ });
502
+ return {
503
+ dispatcher,
504
+ sessionManager,
505
+ messageRecorder,
506
+ notificationManager,
507
+ signalDetector,
508
+ eventBroadcaster,
509
+ auditLogger,
510
+ docsQAAdapter,
511
+ agentBackends: [agentCore, codexCore, geminiCore, opencodeCore],
512
+ opencodeServerManager,
513
+ delegatedBackendInvoker,
514
+ authHealthMonitor,
515
+ authRecovery,
516
+ authTelemetry,
517
+ readTokenManager,
518
+ migrationLock,
519
+ contextWriteGate,
520
+ buildDelegatedSyncWorker,
521
+ getDelegatedSyncWorker: () => delegatedSyncWorker,
522
+ rematerializeActiveDmWorkdirs,
523
+ handleSecretChange,
524
+ handleGoogleServicesReady,
525
+ handlePromptContextChanged,
526
+ keepaliveTimer,
527
+ };
528
+ }
529
+ /**
530
+ * Build the `handleSecretChange(scope)` closure consumed by the API
531
+ * surface's `onSecretChanged` hook. Exported so the peer test can pin
532
+ * the scope-routing matrix without booting a real dispatcher.
533
+ *
534
+ * The matrix MUST stay in sync with `docs/design/appendices/
535
+ * index-bootstrap-stage-split.md` §10 (test bullet 1):
536
+ *
537
+ * scope → reload + hot-register branches
538
+ * "slack" → reloadSlackAdapter(force=true)
539
+ * "telegram" → reloadTelegramAdapter(force=true)
540
+ * "discord" → reloadDiscordAdapter(force=true)
541
+ * "notion" → reloadNotionService; then if services.notion
542
+ * && !observerManager.has("notion-poller")
543
+ * && notionDatabaseIds.length > 0
544
+ * && shouldStartObserversFor(db, "notion")
545
+ * → register + start a freshly-built poller
546
+ * "github" → reloadGitHubService; then if getGitWatcher()
547
+ * && secretState.githubWebhookConfigured
548
+ * → enableWebhookMode on the existing watcher
549
+ * "google" → reloadGoogleServices
550
+ * "apple_calendar" → reloadAppleCalendarService
551
+ * "apiToken" → no-op (a token rotation only affects future
552
+ * request authentication; nothing here is keyed on it)
553
+ * default → no-op (unknown scope is silently ignored to keep
554
+ * forward-compat with new secret kinds)
555
+ */
556
+ export function createSecretChangeHandler(deps) {
557
+ const { db, config, services, observerManager, secretState, buildNotionPoller, getGitWatcher, isStartupComplete, reloadSlackAdapter, reloadTelegramAdapter, reloadDiscordAdapter, reloadNotionService, reloadGitHubService, reloadGoogleServices, reloadAppleCalendarService, } = deps;
558
+ return async (scope) => {
559
+ switch (scope) {
560
+ case "slack":
561
+ await reloadSlackAdapter(true);
562
+ return;
563
+ case "telegram":
564
+ await reloadTelegramAdapter(true);
565
+ return;
566
+ case "discord":
567
+ await reloadDiscordAdapter(true);
568
+ return;
569
+ case "notion":
570
+ await reloadNotionService();
571
+ // Hot-reload: if the user just added the Notion API key while the
572
+ // integration is already in `direct` mode, register the poller now
573
+ // so they don't have to restart the daemon. Mirrors the
574
+ // `handleGoogleServicesReady` calendar-side path. Idempotent via
575
+ // `observerManager.has()`.
576
+ //
577
+ // The explicit `poller.start()` only fires AFTER startup has
578
+ // completed. During the bootstrap window (API listener live, but
579
+ // `observerManager.startAll()` not yet called) we register the
580
+ // poller and let the pending `startAll()` start it — calling
581
+ // `start()` here AND letting `startAll()` start it again would
582
+ // overwrite NotionPoller's `setInterval` slot and leak the first
583
+ // timer (`notion-poller.ts:91` unconditionally writes `this.timer`).
584
+ if (services.notion
585
+ && !observerManager.has("notion-poller")
586
+ && Object.keys(config.notionDatabaseIds).length > 0
587
+ && shouldStartObserversFor(db, "notion")) {
588
+ const poller = buildNotionPoller();
589
+ if (poller) {
590
+ observerManager.register(poller);
591
+ if (isStartupComplete()) {
592
+ void poller.start();
593
+ logger.info("NotionPoller started via hot-reload");
594
+ }
595
+ else {
596
+ logger.info("NotionPoller registered during bootstrap; observerManager.startAll() will start it");
597
+ }
598
+ }
599
+ }
600
+ return;
601
+ case "github":
602
+ await reloadGitHubService();
603
+ {
604
+ const existingGitWatcher = getGitWatcher();
605
+ if (existingGitWatcher && secretState.githubWebhookConfigured) {
606
+ existingGitWatcher.enableWebhookMode();
607
+ }
608
+ }
609
+ return;
610
+ case "google":
611
+ await reloadGoogleServices();
612
+ return;
613
+ case "apple_calendar":
614
+ await reloadAppleCalendarService();
615
+ return;
616
+ case "apiToken":
617
+ default:
618
+ return;
619
+ }
620
+ };
621
+ }
622
+ /**
623
+ * Build the `handleGoogleServicesReady` closure consumed when an OAuth
624
+ * round-trip leaves a fresh Google credential in the keychain mid-runtime.
625
+ * Exported so the peer test can pin the morning-routine / roadmap-refresh
626
+ * matrix without booting a real dispatcher.
627
+ *
628
+ * Branches (per design doc §10 test bullets 2 + 3):
629
+ * - services.calendar set AND google_calendar in `direct` AND no
630
+ * calendar observer registered yet → build + start a poller.
631
+ * - today.md stale → `scheduler.queueMorningRoutineWake("google_auth_ready")`
632
+ * and SKIP the standalone roadmap refresh (the morning routine's
633
+ * post-completion hook handles roadmap).
634
+ * - today.md fresh AND roadmap stale → `dispatcher.emitRoadmapRefresh
635
+ * ("google_auth_ready")`.
636
+ */
637
+ export function createGoogleServicesReadyHandler(deps) {
638
+ const { db, config, services, observerManager, buildCalendarPoller, scheduler, dispatcher, } = deps;
639
+ return () => {
640
+ if (services.calendar
641
+ && !observerManager.has("calendar")
642
+ && shouldStartObserversFor(db, "google_calendar")) {
643
+ const poller = buildCalendarPoller();
644
+ if (poller) {
645
+ observerManager.register(poller);
646
+ void poller.start();
647
+ logger.info("CalendarPoller started via hot-reload");
648
+ }
649
+ }
650
+ // Trigger morning_routine catchup if today.md is stale or missing
651
+ // (same logic as runCatchup, ensures schedule generation after first
652
+ // auth).
653
+ const contextDir = getContextDir(config);
654
+ const todayMdPath = join(contextDir, "today.md");
655
+ const needsMorning = !hasFreshAgentDayTodayMd(todayMdPath, config.timezone || undefined, config.dayBoundaryHour);
656
+ if (needsMorning) {
657
+ // Morning routine's post-completion hook will also check roadmap staleness.
658
+ logger.info("Google services ready — today.md stale, queueing morning_routine wake");
659
+ scheduler.queueMorningRoutineWake("google_auth_ready");
660
+ return;
661
+ }
662
+ // Only refresh roadmap independently when today.md is already current.
663
+ // If morning_routine is needed, its post-completion hook will handle
664
+ // stale roadmap regeneration after the day context has been rebuilt.
665
+ if (isRoadmapStale(contextDir)) {
666
+ logger.info("Google services ready — roadmap stale, emitting roadmap_refresh");
667
+ dispatcher.emitRoadmapRefresh("google_auth_ready");
668
+ }
669
+ };
670
+ }
671
+ /**
672
+ * Build the `handlePromptContextChanged` callback consumed by the
673
+ * context-index reconciler and by the API surface's
674
+ * `onPromptContextChanged` hook. Exported for symmetry with the other
675
+ * cross-stage closures; the staleness decision logic itself lives in
676
+ * `core/context-staleness.ts` (and is unit-tested there).
677
+ */
678
+ export function createPromptContextChangedHandler(deps) {
679
+ const { config, db, dispatcher, sessionManager } = deps;
680
+ return (path, reason, tier, metadata) => {
681
+ const setupMode = dispatcher.getCurrentSetupMode();
682
+ const decision = applyPromptContextStaleness({ path, reason, tier, metadata }, {
683
+ dmStalenessStrict: config.dmStalenessStrict,
684
+ setupInProgress: setupMode !== null,
685
+ markContextChanged: () => markContextChanged(db),
686
+ markActiveDmSessionsStale: (staleReason) => sessionManager.markActiveDmSessionsStale(staleReason),
687
+ });
688
+ logger.debug({
689
+ path,
690
+ reason,
691
+ tier_decided: decision.effectiveTier,
692
+ tier_requested: decision.requestedTier,
693
+ tier_reason: metadata?.tierReason,
694
+ dmStalenessStrict: config.dmStalenessStrict,
695
+ mode: setupMode,
696
+ invalidatesDmSessions: decision.invalidatesDmSessions,
697
+ skippedForSetup: decision.skippedForSetup,
698
+ }, "Prompt context staleness classified");
699
+ if (decision.skippedForSetup) {
700
+ logger.info({ path, reason, mode: setupMode }, "Skipping DM session stale flag - setup in progress");
701
+ }
702
+ };
703
+ }
704
+ //# sourceMappingURL=event-pipeline.js.map