@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,600 @@
1
+ import { INTEGRATION_DESCRIPTORS, filterDeniedToolsForBackend, integrationPatchSchema, isIntegrationKey, recommendedStarterDeniedTools, supportedNativeBackends, validateDeniedTools, } from "@aitne/shared";
2
+ import { readIntegrations, updateIntegrationState, } from "../../../db/integrations-store.js";
3
+ import { writeManagementMd } from "../../../core/management-md.js";
4
+ import { missingDelegatedVariants, missingNativeVariants, } from "../../../core/skills-compiler.js";
5
+ import { acquireIntegrationFlipLock, releaseIntegrationFlipLock, } from "../../../core/integration-lifecycle.js";
6
+ import { readMainBackend } from "../../../core/integration-main-backend.js";
7
+ import { deleteProbesForIntegration } from "../../../db/integration-probe-store.js";
8
+ import { knownProxyModels, proxyModelIsKnown, } from "../../../core/backends/proxy-model-registry.js";
9
+ import { readJsonBody } from "../../json-body.js";
10
+ import { createLogger } from "../../../logging.js";
11
+ import { composeIssue, respondWithAgentError } from "../../helpers/agent-errors.js";
12
+ import { createSettingsStore } from "../../../settings/settings-store.js";
13
+ const logger = createLogger("integrations-api");
14
+ /**
15
+ * `PATCH /api/integrations/:key` handler body.
16
+ *
17
+ * Extracted from the original `routes/integrations.ts` createIntegrationRoutes
18
+ * factory so the surrounding `crud.ts` stays under the ~800 line soft
19
+ * ceiling. Behavior is byte-identical to the pre-split inline closure.
20
+ *
21
+ * Lifecycle (mirrors `docs/design/14-integration-delegation.md` §14.6):
22
+ * validate → flip-lock acquire → mode-specific gates (native, delegated,
23
+ * delegatedModel, deniedTools) → DB update → `integrations.md` re-render →
24
+ * probe-cache eviction → running-session re-materialisation →
25
+ * audit → flip-lock release.
26
+ */
27
+ export async function handleIntegrationPatch(c, deps) {
28
+ const { db, config } = deps;
29
+ // `c.req.param("key")` is typed `string` inside an `app.patch("/:key", ...)`
30
+ // closure but widens to `string | undefined` when the handler is extracted
31
+ // into a free function with a generic `Context`. The route registration in
32
+ // `./crud.ts` guarantees presence; the `undefined` branch is impossible
33
+ // at runtime, so we fold it into the unknown_integration 404 to keep
34
+ // behavior byte-identical to the pre-split inline closure.
35
+ const key = c.req.param("key");
36
+ if (key === undefined || !isIntegrationKey(key)) {
37
+ return respondWithAgentError(c, 404, [
38
+ composeIssue("integrations.unknown_integration", {
39
+ field: "key",
40
+ received: key,
41
+ }),
42
+ ], { legacyFields: { key } });
43
+ }
44
+ const parsedBody = await readJsonBody(c);
45
+ if (!parsedBody.ok)
46
+ return parsedBody.response;
47
+ const parsed = integrationPatchSchema.safeParse(parsedBody.body);
48
+ if (!parsed.success) {
49
+ return c.json({
50
+ error: "validation_error",
51
+ issues: parsed.error.issues.map((i) => ({
52
+ path: i.path,
53
+ message: i.message,
54
+ })),
55
+ }, 400);
56
+ }
57
+ const descriptor = INTEGRATION_DESCRIPTORS[key];
58
+ if (!descriptor.supportedModes.includes(parsed.data.mode)) {
59
+ return c.json({
60
+ error: "unsupported_mode",
61
+ key,
62
+ mode: parsed.data.mode,
63
+ supportedModes: descriptor.supportedModes,
64
+ }, 400);
65
+ }
66
+ const previous = readIntegrations(db)[key];
67
+ // Compute the side-effect-relevant flags up-front:
68
+ // - modeChanged: probe-cache eviction + lifecycle observer flip + variants
69
+ // gate all key off this. A pure deniedTools edit must NOT trigger any of
70
+ // them — those are mode-change concerns.
71
+ // - effectiveBackend: which backend the post-PATCH state will run against
72
+ // in `delegated` mode. Used for both the missing-variants gate and the
73
+ // deniedTools validator. If the user omits delegatedBackend on a
74
+ // delegated→delegated edit (e.g. just toggling tool permissions), we
75
+ // keep the previous backend.
76
+ // - effectiveNativeBackend: same shape for `native` mode
77
+ // (INTEGRATION_NATIVE_MODE_DESIGN.md §11.2). Validated against the
78
+ // current main backend below.
79
+ const modeChanged = parsed.data.mode !== previous.mode
80
+ || (parsed.data.delegatedBackend ?? null) !==
81
+ (previous.delegatedBackend ?? null)
82
+ || (parsed.data.nativeBackend ?? null) !==
83
+ (previous.nativeBackend ?? null);
84
+ const effectiveBackend = parsed.data.mode === "delegated"
85
+ ? (parsed.data.delegatedBackend ?? previous.delegatedBackend ?? null)
86
+ : null;
87
+ const effectiveNativeBackend = parsed.data.mode === "native"
88
+ ? (parsed.data.nativeBackend ?? previous.nativeBackend ?? null)
89
+ : null;
90
+ // INTEGRATION_NATIVE_MODE_DESIGN.md §11.2 — `native` mode validation.
91
+ // Runs BEFORE the delegated-mode validation block because native and
92
+ // delegated are mutually exclusive: a single PATCH cannot ask for both.
93
+ // The schema's `superRefine` already rejects co-occurring fields, but
94
+ // the explicit branch here surfaces a clearer error and runs the live
95
+ // probe + variant-file gate.
96
+ if (parsed.data.mode === "native") {
97
+ if (!effectiveNativeBackend) {
98
+ return c.json({
99
+ error: "validation_error",
100
+ issues: [
101
+ {
102
+ path: ["nativeBackend"],
103
+ message: "nativeBackend is required when mode is 'native'",
104
+ },
105
+ ],
106
+ }, 400);
107
+ }
108
+ const supported = supportedNativeBackends(key);
109
+ if (!supported.includes(effectiveNativeBackend)) {
110
+ // Descriptor-driven integrations only — user-managed descriptors
111
+ // pass automatically because `supportedNativeBackends` returns
112
+ // every registered backend for them (INTEGRATION_NATIVE_MODE_DESIGN.md
113
+ // §5.3 2026-05 amendment).
114
+ return c.json({
115
+ error: "backend_not_supported_native",
116
+ key,
117
+ backend: effectiveNativeBackend,
118
+ supportedNativeBackends: supported,
119
+ message: `Backend '${effectiveNativeBackend}' has no native connector for '${key}'. Native mode for this integration is offered only on backends that ship a registry connector.`,
120
+ }, 400);
121
+ }
122
+ // §3.3 invariant: native binds to the main backend. The setup wizard
123
+ // will hide the Native option entirely when the main backend doesn't
124
+ // appear in `supportedNativeBackends(key)`; this check is the API-
125
+ // layer defense against an out-of-band PATCH (CLI / curl).
126
+ const mainBackend = readMainBackend(db);
127
+ if (mainBackend !== null && effectiveNativeBackend !== mainBackend) {
128
+ return c.json({
129
+ error: "native_backend_mismatches_main",
130
+ key,
131
+ nativeBackend: effectiveNativeBackend,
132
+ mainBackend,
133
+ message: `Native mode binds to the main backend (${mainBackend}); refusing to set nativeBackend='${effectiveNativeBackend}'. Switch the main backend first (PUT /api/backends/main) or pick a different mode.`,
134
+ }, 400);
135
+ }
136
+ // §7.4 / §8.5 missing-variant gate. Only re-runs when this is an
137
+ // actual mode/binding change (a pure annotation PATCH on an already-
138
+ // native row leaves the variant set unchanged).
139
+ //
140
+ // User-managed connector integrations (e.g. Outlook) skip the
141
+ // descriptor-driven variant check — there is no daemon-shipped
142
+ // `SKILL.native.<backend>.md` for them. The user's MCP / skill
143
+ // harness on their backend is the authority, mirroring the
144
+ // delegated-mode path above. §5.3 (2026-05 amendment).
145
+ if (modeChanged && !descriptor.userManagedConnector) {
146
+ const missing = missingNativeVariants(config.workspaceDir, key, effectiveNativeBackend);
147
+ if (missing.skills.length > 0 || missing.taskFlows.length > 0) {
148
+ return c.json({
149
+ error: "missing_variants",
150
+ key,
151
+ backend: effectiveNativeBackend,
152
+ mode: "native",
153
+ missingSkills: missing.skills,
154
+ missingTaskFlows: missing.taskFlows,
155
+ message: `Cannot enter native mode for '${key}' on backend '${effectiveNativeBackend}' — ${missing.skills.length + missing.taskFlows.length} variant file(s) missing. Phase B1 stubs every supported native variant; rebuild the package if your tree is stale.`,
156
+ }, 400);
157
+ }
158
+ }
159
+ }
160
+ if (parsed.data.mode === "delegated") {
161
+ if (!effectiveBackend) {
162
+ return c.json({
163
+ error: "validation_error",
164
+ issues: [{
165
+ path: ["delegatedBackend"],
166
+ message: "delegatedBackend is required when mode is 'delegated'",
167
+ }],
168
+ }, 400);
169
+ }
170
+ // User-managed connector integrations (e.g. Outlook) skip the
171
+ // descriptor-driven connector check and the variant gate: the user
172
+ // installs an Outlook / Microsoft Graph MCP on their selected
173
+ // backend (Claude Code Connector / Codex MCP / Gemini extension)
174
+ // and the daemon trusts that wiring. Capability probing is the
175
+ // user's responsibility on the backend side.
176
+ if (!descriptor.userManagedConnector) {
177
+ if (!descriptor.backendConnectors[effectiveBackend]) {
178
+ return c.json({
179
+ error: "backend_not_supported",
180
+ key,
181
+ backend: effectiveBackend,
182
+ availableBackends: Object.keys(descriptor.backendConnectors),
183
+ }, 400);
184
+ }
185
+ // §4.7 "Missing-variant policy" — only re-run the gate when the user
186
+ // is actually changing mode or backend. A pure deniedTools edit on an
187
+ // already-delegated integration leaves the variant set unchanged, so
188
+ // re-walking the file system would be wasted work AND would surface a
189
+ // stale-during-author error if a variant was momentarily missing.
190
+ //
191
+ // DELEGATED-MODE-V2-DESIGN.md §11 (Phase 3) re-activated the
192
+ // legacy variant gate for every delegated integration. gmail and
193
+ // google_calendar now ship `SKILL.delegated.<sessionBackend>.md`
194
+ // (cross-backend) and resolve to `null` for same-backend, so
195
+ // missing variants are a real configuration error.
196
+ if (modeChanged) {
197
+ const missing = missingDelegatedVariants(config.workspaceDir, key, effectiveBackend);
198
+ if (missing.skills.length > 0 || missing.taskFlows.length > 0) {
199
+ return c.json({
200
+ error: "missing_variants",
201
+ key,
202
+ backend: effectiveBackend,
203
+ missingSkills: missing.skills,
204
+ missingTaskFlows: missing.taskFlows,
205
+ message: `Cannot enter delegated mode for '${key}' on backend '${effectiveBackend}' — ${missing.skills.length + missing.taskFlows.length} variant file(s) missing. Author the listed files or narrow the registry's skillsTouched / taskFlowsTouched before retrying.`,
206
+ }, 400);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ // DELEGATED-PROXY-API-DESIGN.md §6.1 — `delegatedModel` validation.
212
+ // The schema rejects empty strings already; here we additionally
213
+ // reject values that don't appear in the registered model list for
214
+ // the effective backend (or in user-pinned `process_backend_config`
215
+ // rows for the same backend, per §4.2's "trust custom pins" rule).
216
+ // The value is *allowed* on any mode so the user can pre-stage a pin
217
+ // before flipping to delegated; validation only runs when we have a
218
+ // backend to validate against.
219
+ if (parsed.data.delegatedModel !== undefined
220
+ && parsed.data.delegatedModel !== null
221
+ && effectiveBackend) {
222
+ const candidate = parsed.data.delegatedModel;
223
+ if (!proxyModelIsKnown(db, effectiveBackend, candidate)) {
224
+ return c.json({
225
+ error: "unknown_model",
226
+ key,
227
+ backend: effectiveBackend,
228
+ model: candidate,
229
+ knownModels: knownProxyModels(db, effectiveBackend),
230
+ message: `Model '${candidate}' is not registered for backend '${effectiveBackend}'. Pick one of the known models or pass null to use the canonical light-tier default.`,
231
+ }, 400);
232
+ }
233
+ }
234
+ // §7.7 — `deniedTools` validation. We accept the field on any mode so
235
+ // the user can pre-stage a deny list before flipping to delegated, but
236
+ // validation only runs against the effective backend when one exists.
237
+ // For non-delegated modes, deniedTools persists as-is (no live backend
238
+ // to validate against — the value is inert until delegated).
239
+ //
240
+ // DELEGATED-MODE-V2-DESIGN.md §4.5.4 — first-time delegated setup
241
+ // pre-populates `deniedTools` with the recommended starter list when
242
+ // the caller didn't supply one (PATCH omits the field). This keeps the
243
+ // CLAUDE.md "destructive ops require user confirmation" invariant
244
+ // intact on a fresh install. The user opts out explicitly by passing
245
+ // `deniedTools: []` (empty array, distinct from undefined).
246
+ //
247
+ // The starter floor fires in two distinct shapes — both arrive at an
248
+ // effectively-empty deny set after the PATCH and would otherwise leave
249
+ // the agent unconstrained:
250
+ //
251
+ // (a) Entering delegated mode for the first time on this integration
252
+ // (previous mode was direct/disabled) AND no curated list was
253
+ // already pre-staged — re-entry from disabled with prior denies
254
+ // kept means the user already curated, don't overwrite.
255
+ //
256
+ // (b) Backend swap (delegated → delegated, different `delegatedBackend`)
257
+ // where every entry in `previous.deniedTools` is namespace-stale on
258
+ // the new backend. The user's curation referenced tools the new
259
+ // connector doesn't expose (e.g. Claude's `label_message` carried
260
+ // into a Codex session), so the materializer's stale-drop pass
261
+ // would empty the disallowedTools array silently — closing the
262
+ // same §4.5.4 floor the design wrote (a) to defend. The original
263
+ // design framed §4.5.4 as "first delegated setup only" and missed
264
+ // this case; surfaced during the 2026-04-26 implementation review.
265
+ //
266
+ // The wizard UI for the opt-out / "use recommended" / "I'll edit"
267
+ // branches is Phase 4 polish (see §Phase 4.2). For now the API default
268
+ // closes the safety floor; the dashboard editor card surfaces the
269
+ // populated list for editing.
270
+ const enteringDelegated = parsed.data.mode === "delegated" && previous.mode !== "delegated";
271
+ const omittedDeniedTools = parsed.data.deniedTools === undefined;
272
+ const previousDeniedToolsEmpty = (previous.deniedTools ?? []).length === 0;
273
+ const swappingDelegatedBackend = parsed.data.mode === "delegated"
274
+ && previous.mode === "delegated"
275
+ && effectiveBackend !== null
276
+ && previous.delegatedBackend !== undefined
277
+ && previous.delegatedBackend !== effectiveBackend;
278
+ // For shape (b): the previous list had at least one entry (otherwise the
279
+ // floor was already empty and shape (a)'s logic doesn't apply here either),
280
+ // and *every* entry is stale on the new backend.
281
+ const swapWipesAllDenies = swappingDelegatedBackend
282
+ && (previous.deniedTools ?? []).length > 0
283
+ && filterDeniedToolsForBackend(key, effectiveBackend,
284
+ /* c8 ignore next -- ?? [] unreachable: length > 0 guard above ensures non-empty array */
285
+ previous.deniedTools ?? []).active.length === 0;
286
+ const useStarter = effectiveBackend !== null
287
+ && omittedDeniedTools
288
+ && ((enteringDelegated && previousDeniedToolsEmpty)
289
+ || swapWipesAllDenies);
290
+ const finalDeniedTools = useStarter
291
+ ? recommendedStarterDeniedTools(key, effectiveBackend)
292
+ : parsed.data.deniedTools !== undefined
293
+ ? parsed.data.deniedTools
294
+ : (previous.deniedTools ?? []);
295
+ if (useStarter && finalDeniedTools.length > 0) {
296
+ logger.info({
297
+ key,
298
+ backend: effectiveBackend,
299
+ starter: finalDeniedTools,
300
+ // Distinguish the two shapes so log readers can spot the
301
+ // backend-swap fallback separately from first-time setup.
302
+ // `enteringDelegated` covers shape (a); `swapWipesAllDenies`
303
+ // covers shape (b). They are mutually exclusive by construction
304
+ // (a requires `previous.mode !== "delegated"`, b requires
305
+ // `previous.mode === "delegated"`).
306
+ trigger: enteringDelegated ? "first_delegated" : "backend_swap_stale",
307
+ previousBackend: swappingDelegatedBackend
308
+ ? previous.delegatedBackend
309
+ : null,
310
+ }, "applied starter deniedTools floor");
311
+ }
312
+ if (effectiveBackend && parsed.data.deniedTools !== undefined) {
313
+ const result = validateDeniedTools(key, effectiveBackend, finalDeniedTools);
314
+ if (!result.ok) {
315
+ if (result.error === "unknown_tool") {
316
+ return c.json({
317
+ error: "unknown_tool",
318
+ key,
319
+ backend: effectiveBackend,
320
+ tool: result.tool,
321
+ knownTools: result.knownTools,
322
+ message: `Tool '${result.tool}' is not declared in the ${effectiveBackend} connector for '${key}'. Pick a tool from the descriptor's capability list.`,
323
+ }, 400);
324
+ }
325
+ if (result.error === "denial_breaks_required_capability") {
326
+ return c.json({
327
+ error: "denial_breaks_required_capability",
328
+ key,
329
+ backend: effectiveBackend,
330
+ capability: result.capability,
331
+ remainingTools: result.remainingTools,
332
+ message: `Denying these tools removes the only path for required capability '${result.capability}'. Keep at least one of: ${result.remainingTools.join(", ")}.`,
333
+ }, 400);
334
+ }
335
+ // "no_connector" should be unreachable — we already validated
336
+ // `descriptor.backendConnectors[effectiveBackend]` above. Map to a
337
+ // 500 rather than a 400 because it indicates a server-side mismatch.
338
+ return respondWithAgentError(c, 500, [
339
+ composeIssue("integrations.internal_error", {
340
+ field: "<server>",
341
+ received: "<connector_mismatch>",
342
+ }),
343
+ ]);
344
+ }
345
+ }
346
+ // DELEGATED-PROXY-API-DESIGN.md §4.2 — `delegatedModel` carry-over
347
+ // rules:
348
+ // - PATCH omits the field → preserve previous value (mode-flip
349
+ // idempotent: direct ↔ delegated keeps the pin).
350
+ // - PATCH passes `null` → clear the pin (canonical fallback at
351
+ // call time). Surfaced by the dashboard's "Reset to default"
352
+ // affordance after a backend swap.
353
+ // - PATCH passes a non-empty string → validated above and stored.
354
+ // Same shape for `delegatedMaxTurns` (forward-compat — no UI yet).
355
+ const finalDelegatedModel = parsed.data.delegatedModel === undefined
356
+ ? (previous.delegatedModel ?? null)
357
+ : parsed.data.delegatedModel;
358
+ const finalDelegatedMaxTurns = parsed.data.delegatedMaxTurns === undefined
359
+ ? (previous.delegatedMaxTurns ?? null)
360
+ : parsed.data.delegatedMaxTurns;
361
+ const finalDelegatedSyncEnabled = parsed.data.delegatedSyncEnabled === undefined
362
+ ? previous.delegatedSyncEnabled
363
+ : parsed.data.delegatedSyncEnabled;
364
+ // INTEGRATION_NATIVE_MODE_DESIGN.md §19.4 — mirror of the delegated
365
+ // collapse: PATCH omits → preserve previous; PATCH passes a boolean
366
+ // → store. Accepted in any mode so the operator can pre-stage the
367
+ // setting before flipping `mode = "native"`.
368
+ const finalNativeSyncEnabled = parsed.data.nativeSyncEnabled === undefined
369
+ ? previous.nativeSyncEnabled
370
+ : parsed.data.nativeSyncEnabled;
371
+ const stamped = new Date().toISOString();
372
+ // INTEGRATION_NATIVE_MODE_DESIGN.md §11.3.1 — flip-lock orchestration.
373
+ // Only acquired when the mode or a backend binding is changing; pure
374
+ // annotation edits (deniedTools / delegatedModel) on an already-correct
375
+ // row don't need the lock because no observer / worker / session needs
376
+ // to drain. A concurrent flip on the same key (parallel PATCH from
377
+ // CLI + dashboard) is rejected with 409.
378
+ let flipLockHeld = false;
379
+ if (modeChanged) {
380
+ const acquire = acquireIntegrationFlipLock(db, key);
381
+ if (!acquire.ok) {
382
+ // §11.3.1 — concurrent flip on the same key. The expected hold
383
+ // window is short (probe + drain are both bounded by the 5s
384
+ // tick boundary), so signal the retry interval explicitly via
385
+ // `Retry-After`. Standards-compliant clients (and the dashboard's
386
+ // mode-dialog) honor this; the message body keeps the hold
387
+ // metadata for forensics.
388
+ c.header("Retry-After", "5");
389
+ return c.json({
390
+ error: "integration_flip_in_progress",
391
+ key,
392
+ heldBy: acquire.current,
393
+ retryAfterSeconds: 5,
394
+ message: `A mode flip for '${key}' is already in progress (acquired ${acquire.current.acquiredAt} by pid ${acquire.current.processId}). Retry in a few seconds.`,
395
+ }, 409);
396
+ }
397
+ flipLockHeld = true;
398
+ }
399
+ try {
400
+ const next = updateIntegrationState(db, key, {
401
+ mode: parsed.data.mode,
402
+ // Only carry delegatedBackend when mode is delegated. The schema
403
+ // already enforces presence in that branch (superRefine), so a
404
+ // direct/disabled flip drops it cleanly. Don't fall back to the
405
+ // previous value here — that breaks the delegated → direct path
406
+ // (the integration would keep its old backend forever).
407
+ ...(parsed.data.mode === "delegated" && parsed.data.delegatedBackend
408
+ ? { delegatedBackend: parsed.data.delegatedBackend }
409
+ : {}),
410
+ // INTEGRATION_NATIVE_MODE_DESIGN.md §5.2 — same shape for the
411
+ // nativeBackend column. Schema's `superRefine` enforces mutual
412
+ // exclusion with `delegatedBackend`.
413
+ ...(parsed.data.mode === "native" && effectiveNativeBackend
414
+ ? { nativeBackend: effectiveNativeBackend }
415
+ : {}),
416
+ // Always persist the resolved delegatedModel/delegatedMaxTurns —
417
+ // null clears, undefined was already collapsed above to the
418
+ // previous value or null. Keeps the JSON blob shape stable
419
+ // across PATCHes even when the field is inert (mode !== delegated).
420
+ ...(finalDelegatedModel !== null
421
+ ? { delegatedModel: finalDelegatedModel }
422
+ : {}),
423
+ ...(finalDelegatedMaxTurns !== null
424
+ ? { delegatedMaxTurns: finalDelegatedMaxTurns }
425
+ : {}),
426
+ ...(finalDelegatedSyncEnabled === false
427
+ ? { delegatedSyncEnabled: false }
428
+ : {}),
429
+ ...(finalNativeSyncEnabled === false
430
+ ? { nativeSyncEnabled: false }
431
+ : {}),
432
+ deniedTools: finalDeniedTools,
433
+ lastChangedAt: stamped,
434
+ });
435
+ await writeManagementMd(config.dataDir, next, {
436
+ externalObsidianVaultPath: config.externalObsidianVaultPath,
437
+ externalObsidianWatch: config.externalObsidianWatch,
438
+ });
439
+ // §4.11 probe-cache eviction is a *mode-change* concern. A pure
440
+ // deniedTools edit doesn't invalidate which capabilities the
441
+ // connector exposes — the live probe answer is identical, only what
442
+ // the agent is allowed to invoke from the skill body changes. So
443
+ // gate eviction on modeChanged.
444
+ if (modeChanged) {
445
+ const cleared = deleteProbesForIntegration(db, key);
446
+ if (cleared > 0) {
447
+ logger.info({ key, cleared }, "cleared stale probe cache after integration mode change");
448
+ }
449
+ }
450
+ // DELEGATED-MODE-V2-DESIGN.md §4.4 #2 — a deniedTools-only edit must
451
+ // also re-materialize active DM workdirs, since the per-session
452
+ // `disallowedTools` array (Claude SDK), admin-policy TOML (Gemini),
453
+ // and AGENTS.md prose block (Codex) are derived from `state.deniedTools`
454
+ // at materialization time. A stale workdir would leak the old policy
455
+ // into the next turn. We compute the policy diff up front so we can
456
+ // gate the lifecycle callback on it.
457
+ const policyDiff = diffDeniedTools(previous.deniedTools ?? [], next[key].deniedTools ?? []);
458
+ const policyChanged = policyDiff.added.length > 0 || policyDiff.removed.length > 0;
459
+ // Only `delegatedSyncEnabled` gates an observer-lifecycle
460
+ // re-evaluation — the predicate
461
+ // (`hasActiveDelegatedSyncIntegration`) ignores `nativeSyncEnabled`
462
+ // because the worker has no role in native mode (see appendix
463
+ // §"Polling, observers, and the hourly-check threshold"). The
464
+ // `nativeSyncEnabled` field is retained on the state row for
465
+ // schema compatibility but toggling it is inert today.
466
+ const syncChanged = (previous.delegatedSyncEnabled ?? true)
467
+ !== (next[key].delegatedSyncEnabled ?? true);
468
+ // §4.10 lifecycle step 4 — observer flip side of the callback is
469
+ // gated on `wasDirect !== isDirect` inside `applyIntegrationModeChange`,
470
+ // so calling it on a deniedTools-only edit is safe: observer
471
+ // start/stop is a no-op, only `rematerializeDmSessions` fires.
472
+ if ((modeChanged || policyChanged || syncChanged) && deps.onIntegrationModeChange) {
473
+ void Promise.resolve()
474
+ .then(() => deps.onIntegrationModeChange?.(key, previous, next[key]))
475
+ .catch((err) => {
476
+ logger.error({ err, key }, "integration mode-change side-effects failed — DB state already updated");
477
+ });
478
+ }
479
+ // §7.7 audit. Two distinct action types so log readers can filter:
480
+ // - integration.mode_change: mode or delegatedBackend moved
481
+ // - integration.policy_change: deniedTools diff (with no mode flip)
482
+ // Both can fire on a single PATCH when the user changes mode AND
483
+ // deniedTools simultaneously — that's intentional, the diff is at
484
+ // different granularities.
485
+ if (modeChanged) {
486
+ recordAuditModeChange(db, key, previous, next[key]);
487
+ }
488
+ if (policyChanged) {
489
+ recordAuditPolicyChange(db, key, policyDiff);
490
+ }
491
+ logger.info({
492
+ key,
493
+ from: previous.mode,
494
+ to: next[key].mode,
495
+ delegatedBackend: next[key].delegatedBackend,
496
+ nativeBackend: next[key].nativeBackend,
497
+ delegatedModelFrom: previous.delegatedModel ?? null,
498
+ delegatedModelTo: next[key].delegatedModel ?? null,
499
+ deniedToolsAdded: policyDiff.added,
500
+ deniedToolsRemoved: policyDiff.removed,
501
+ }, modeChanged
502
+ ? "integration mode updated"
503
+ : "integration policy updated (deniedTools / delegatedModel)");
504
+ // Auto-enable the global task-mode flag the first time *any*
505
+ // integration enters delegated mode. Rationale:
506
+ // - The legacy `/integrations/:key/invoke` RPC is dead (commented
507
+ // out 2026-05-01 in this same file); every delegated skill body
508
+ // and task flow now talks to `/exec`.
509
+ // - `/exec` is gated by `delegatedTaskModeEnabled`, originally a
510
+ // Phase-1 canary that defaults `false`. With `/invoke` gone,
511
+ // "delegated mode + task mode off" is a degenerate state with
512
+ // no productive use — the agent calls `/exec`, gets 503,
513
+ // fails. So flipping an integration to delegated *is* the
514
+ // enablement signal.
515
+ // - We only flip on the transition into delegated, not on every
516
+ // PATCH against an already-delegated integration. A pure
517
+ // deniedTools edit must not silently re-enable a flag the
518
+ // operator manually toggled off; emergency-disable is the
519
+ // flag's remaining role.
520
+ const enteringDelegated = next[key].mode === "delegated" && previous.mode !== "delegated";
521
+ if (enteringDelegated && !config.delegatedTaskModeEnabled) {
522
+ try {
523
+ createSettingsStore(db).set("delegatedTaskModeEnabled", true);
524
+ config.delegatedTaskModeEnabled = true;
525
+ logger.info({ key, backend: effectiveBackend, trigger: "first_delegated" }, "auto-enabled delegatedTaskModeEnabled — first delegated integration");
526
+ /* c8 ignore start -- settings write never fails with in-memory DB; defensive for production */
527
+ }
528
+ catch (err) {
529
+ logger.error({ err, key }, "failed to persist delegatedTaskModeEnabled auto-enable; in-memory config still updated");
530
+ }
531
+ /* c8 ignore stop */
532
+ }
533
+ return c.json({ ok: true, integration: next[key] });
534
+ /* c8 ignore start -- updateIntegrationState never throws with in-memory DB; defensive for production */
535
+ }
536
+ catch (err) {
537
+ logger.error({ err, key }, "integration mode update failed");
538
+ return respondWithAgentError(c, 500, [
539
+ composeIssue("integrations.internal_error", {
540
+ field: "<server>",
541
+ received: "<state_update_failed>",
542
+ }),
543
+ ]);
544
+ /* c8 ignore stop */
545
+ }
546
+ finally {
547
+ // §11.3.1 — release the flip lock regardless of success/failure so
548
+ // the next PATCH for this key is unblocked.
549
+ if (flipLockHeld) {
550
+ releaseIntegrationFlipLock(db, key);
551
+ }
552
+ }
553
+ }
554
+ function recordAuditModeChange(db, key, previous, next) {
555
+ try {
556
+ db.prepare(`INSERT INTO agent_actions
557
+ (event_id, action_type, trigger, result, detail, started_at, completed_at)
558
+ VALUES (?, 'integration.mode_change', 'reactive', 'success', ?, datetime('now'), datetime('now'))`).run(`integration:${key}:${Date.now()}`, JSON.stringify({
559
+ key,
560
+ from: {
561
+ mode: previous.mode,
562
+ delegatedBackend: previous.delegatedBackend ?? null,
563
+ // INTEGRATION_NATIVE_MODE_DESIGN.md §11.4 — preserve the prior
564
+ // native binding in the audit row so the forensic chain survives
565
+ // the schema clearing `nativeBackend` once mode flips away.
566
+ nativeBackend: previous.nativeBackend ?? null,
567
+ },
568
+ to: {
569
+ mode: next.mode,
570
+ delegatedBackend: next.delegatedBackend ?? null,
571
+ nativeBackend: next.nativeBackend ?? null,
572
+ },
573
+ }));
574
+ /* c8 ignore start -- in-memory DB always succeeds; catch is defensive for production DB errors */
575
+ }
576
+ catch (err) {
577
+ logger.warn({ err, key }, "failed to write integration audit row");
578
+ }
579
+ /* c8 ignore stop */
580
+ }
581
+ function recordAuditPolicyChange(db, key, diff) {
582
+ try {
583
+ db.prepare(`INSERT INTO agent_actions
584
+ (event_id, action_type, trigger, result, detail, started_at, completed_at)
585
+ VALUES (?, 'integration.policy_change', 'reactive', 'success', ?, datetime('now'), datetime('now'))`).run(`integration:${key}:policy:${Date.now()}`, JSON.stringify({ key, deniedTools: diff }));
586
+ /* c8 ignore start -- in-memory DB always succeeds; catch is defensive for production DB errors */
587
+ }
588
+ catch (err) {
589
+ logger.warn({ err, key }, "failed to write integration policy audit row");
590
+ }
591
+ /* c8 ignore stop */
592
+ }
593
+ function diffDeniedTools(previous, next) {
594
+ const prevSet = new Set(previous);
595
+ const nextSet = new Set(next);
596
+ const added = next.filter((t) => !prevSet.has(t));
597
+ const removed = previous.filter((t) => !nextSet.has(t));
598
+ return { added, removed };
599
+ }
600
+ //# sourceMappingURL=crud-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-patch.js","sourceRoot":"","sources":["../../../../src/api/routes/integrations/crud-patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Hono } from "hono";
2
+ import type { ApiDependencies } from "../../server.js";
3
+ /**
4
+ * Register the integration CRUD routes:
5
+ * - `GET /integrations`
6
+ * - `GET /integrations/:key/recent-proxy-calls`
7
+ * - `GET /integrations/proxy-models/:backend`
8
+ * - `PATCH /integrations/:key`
9
+ *
10
+ * PATCH body lives in `./crud-patch.ts:handleIntegrationPatch` because the
11
+ * full lifecycle (validate / flip-lock / probe-cache / re-materialise /
12
+ * audit) is ~700 lines and would push this file past the ~800-line soft
13
+ * ceiling.
14
+ */
15
+ export declare function registerCrudRoutes(app: Hono, deps: ApiDependencies): void;
16
+ //# sourceMappingURL=crud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/integrations/crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAcjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAuJzE"}