@aitne/daemon 0.1.0

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 (1386) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/composite-dashboard-stream.d.ts +42 -0
  3. package/dist/adapters/composite-dashboard-stream.d.ts.map +1 -0
  4. package/dist/adapters/composite-dashboard-stream.js +49 -0
  5. package/dist/adapters/composite-dashboard-stream.js.map +1 -0
  6. package/dist/adapters/dashboard-adapter.d.ts +104 -0
  7. package/dist/adapters/dashboard-adapter.d.ts.map +1 -0
  8. package/dist/adapters/dashboard-adapter.js +216 -0
  9. package/dist/adapters/dashboard-adapter.js.map +1 -0
  10. package/dist/adapters/discord.d.ts +77 -0
  11. package/dist/adapters/discord.d.ts.map +1 -0
  12. package/dist/adapters/discord.js +339 -0
  13. package/dist/adapters/discord.js.map +1 -0
  14. package/dist/adapters/docs-qa-adapter.d.ts +123 -0
  15. package/dist/adapters/docs-qa-adapter.d.ts.map +1 -0
  16. package/dist/adapters/docs-qa-adapter.js +218 -0
  17. package/dist/adapters/docs-qa-adapter.js.map +1 -0
  18. package/dist/adapters/message-hub.d.ts +70 -0
  19. package/dist/adapters/message-hub.d.ts.map +1 -0
  20. package/dist/adapters/message-hub.js +359 -0
  21. package/dist/adapters/message-hub.js.map +1 -0
  22. package/dist/adapters/notification-manager.d.ts +99 -0
  23. package/dist/adapters/notification-manager.d.ts.map +1 -0
  24. package/dist/adapters/notification-manager.js +498 -0
  25. package/dist/adapters/notification-manager.js.map +1 -0
  26. package/dist/adapters/outbound-text.d.ts +28 -0
  27. package/dist/adapters/outbound-text.d.ts.map +1 -0
  28. package/dist/adapters/outbound-text.js +58 -0
  29. package/dist/adapters/outbound-text.js.map +1 -0
  30. package/dist/adapters/slack-adapter.d.ts +82 -0
  31. package/dist/adapters/slack-adapter.d.ts.map +1 -0
  32. package/dist/adapters/slack-adapter.js +359 -0
  33. package/dist/adapters/slack-adapter.js.map +1 -0
  34. package/dist/adapters/telegram-adapter.d.ts +107 -0
  35. package/dist/adapters/telegram-adapter.d.ts.map +1 -0
  36. package/dist/adapters/telegram-adapter.js +477 -0
  37. package/dist/adapters/telegram-adapter.js.map +1 -0
  38. package/dist/adapters/types.d.ts +92 -0
  39. package/dist/adapters/types.d.ts.map +1 -0
  40. package/dist/adapters/types.js +2 -0
  41. package/dist/adapters/types.js.map +1 -0
  42. package/dist/adapters/whatsapp-adapter.d.ts +213 -0
  43. package/dist/adapters/whatsapp-adapter.d.ts.map +1 -0
  44. package/dist/adapters/whatsapp-adapter.js +1216 -0
  45. package/dist/adapters/whatsapp-adapter.js.map +1 -0
  46. package/dist/api/chat-binding-query.d.ts +36 -0
  47. package/dist/api/chat-binding-query.d.ts.map +1 -0
  48. package/dist/api/chat-binding-query.js +63 -0
  49. package/dist/api/chat-binding-query.js.map +1 -0
  50. package/dist/api/chat-session-resume.d.ts +12 -0
  51. package/dist/api/chat-session-resume.d.ts.map +1 -0
  52. package/dist/api/chat-session-resume.js +21 -0
  53. package/dist/api/chat-session-resume.js.map +1 -0
  54. package/dist/api/delegated-proxy-helper.d.ts +33 -0
  55. package/dist/api/delegated-proxy-helper.d.ts.map +1 -0
  56. package/dist/api/delegated-proxy-helper.js +54 -0
  57. package/dist/api/delegated-proxy-helper.js.map +1 -0
  58. package/dist/api/directory-picker.d.ts +38 -0
  59. package/dist/api/directory-picker.d.ts.map +1 -0
  60. package/dist/api/directory-picker.js +278 -0
  61. package/dist/api/directory-picker.js.map +1 -0
  62. package/dist/api/env-writer.d.ts +25 -0
  63. package/dist/api/env-writer.d.ts.map +1 -0
  64. package/dist/api/env-writer.js +421 -0
  65. package/dist/api/env-writer.js.map +1 -0
  66. package/dist/api/integration-route-gate.d.ts +60 -0
  67. package/dist/api/integration-route-gate.d.ts.map +1 -0
  68. package/dist/api/integration-route-gate.js +83 -0
  69. package/dist/api/integration-route-gate.js.map +1 -0
  70. package/dist/api/json-body.d.ts +29 -0
  71. package/dist/api/json-body.d.ts.map +1 -0
  72. package/dist/api/json-body.js +87 -0
  73. package/dist/api/json-body.js.map +1 -0
  74. package/dist/api/routes/activity-sources.d.ts +20 -0
  75. package/dist/api/routes/activity-sources.d.ts.map +1 -0
  76. package/dist/api/routes/activity-sources.js +18 -0
  77. package/dist/api/routes/activity-sources.js.map +1 -0
  78. package/dist/api/routes/agent.d.ts +4 -0
  79. package/dist/api/routes/agent.d.ts.map +1 -0
  80. package/dist/api/routes/agent.js +619 -0
  81. package/dist/api/routes/agent.js.map +1 -0
  82. package/dist/api/routes/apple-calendar.d.ts +31 -0
  83. package/dist/api/routes/apple-calendar.d.ts.map +1 -0
  84. package/dist/api/routes/apple-calendar.js +310 -0
  85. package/dist/api/routes/apple-calendar.js.map +1 -0
  86. package/dist/api/routes/attachments.d.ts +36 -0
  87. package/dist/api/routes/attachments.d.ts.map +1 -0
  88. package/dist/api/routes/attachments.js +305 -0
  89. package/dist/api/routes/attachments.js.map +1 -0
  90. package/dist/api/routes/backends.d.ts +4 -0
  91. package/dist/api/routes/backends.d.ts.map +1 -0
  92. package/dist/api/routes/backends.js +1132 -0
  93. package/dist/api/routes/backends.js.map +1 -0
  94. package/dist/api/routes/books.d.ts +63 -0
  95. package/dist/api/routes/books.d.ts.map +1 -0
  96. package/dist/api/routes/books.js +467 -0
  97. package/dist/api/routes/books.js.map +1 -0
  98. package/dist/api/routes/calendar.d.ts +36 -0
  99. package/dist/api/routes/calendar.d.ts.map +1 -0
  100. package/dist/api/routes/calendar.js +351 -0
  101. package/dist/api/routes/calendar.js.map +1 -0
  102. package/dist/api/routes/commands.d.ts +4 -0
  103. package/dist/api/routes/commands.d.ts.map +1 -0
  104. package/dist/api/routes/commands.js +251 -0
  105. package/dist/api/routes/commands.js.map +1 -0
  106. package/dist/api/routes/context.d.ts +57 -0
  107. package/dist/api/routes/context.d.ts.map +1 -0
  108. package/dist/api/routes/context.js +1765 -0
  109. package/dist/api/routes/context.js.map +1 -0
  110. package/dist/api/routes/dashboard.d.ts +29 -0
  111. package/dist/api/routes/dashboard.d.ts.map +1 -0
  112. package/dist/api/routes/dashboard.js +2062 -0
  113. package/dist/api/routes/dashboard.js.map +1 -0
  114. package/dist/api/routes/delegated-sync.d.ts +4 -0
  115. package/dist/api/routes/delegated-sync.d.ts.map +1 -0
  116. package/dist/api/routes/delegated-sync.js +192 -0
  117. package/dist/api/routes/delegated-sync.js.map +1 -0
  118. package/dist/api/routes/delegated.d.ts +42 -0
  119. package/dist/api/routes/delegated.d.ts.map +1 -0
  120. package/dist/api/routes/delegated.js +250 -0
  121. package/dist/api/routes/delegated.js.map +1 -0
  122. package/dist/api/routes/docs.d.ts +34 -0
  123. package/dist/api/routes/docs.d.ts.map +1 -0
  124. package/dist/api/routes/docs.js +580 -0
  125. package/dist/api/routes/docs.js.map +1 -0
  126. package/dist/api/routes/entities.d.ts +9 -0
  127. package/dist/api/routes/entities.d.ts.map +1 -0
  128. package/dist/api/routes/entities.js +176 -0
  129. package/dist/api/routes/entities.js.map +1 -0
  130. package/dist/api/routes/git-accounts.d.ts +23 -0
  131. package/dist/api/routes/git-accounts.d.ts.map +1 -0
  132. package/dist/api/routes/git-accounts.js +227 -0
  133. package/dist/api/routes/git-accounts.js.map +1 -0
  134. package/dist/api/routes/git-templates.d.ts +50 -0
  135. package/dist/api/routes/git-templates.d.ts.map +1 -0
  136. package/dist/api/routes/git-templates.js +276 -0
  137. package/dist/api/routes/git-templates.js.map +1 -0
  138. package/dist/api/routes/git.d.ts +34 -0
  139. package/dist/api/routes/git.d.ts.map +1 -0
  140. package/dist/api/routes/git.js +126 -0
  141. package/dist/api/routes/git.js.map +1 -0
  142. package/dist/api/routes/github.d.ts +34 -0
  143. package/dist/api/routes/github.d.ts.map +1 -0
  144. package/dist/api/routes/github.js +465 -0
  145. package/dist/api/routes/github.js.map +1 -0
  146. package/dist/api/routes/health.d.ts +4 -0
  147. package/dist/api/routes/health.d.ts.map +1 -0
  148. package/dist/api/routes/health.js +257 -0
  149. package/dist/api/routes/health.js.map +1 -0
  150. package/dist/api/routes/integrations-reconcile.d.ts +33 -0
  151. package/dist/api/routes/integrations-reconcile.d.ts.map +1 -0
  152. package/dist/api/routes/integrations-reconcile.js +463 -0
  153. package/dist/api/routes/integrations-reconcile.js.map +1 -0
  154. package/dist/api/routes/integrations.d.ts +19 -0
  155. package/dist/api/routes/integrations.d.ts.map +1 -0
  156. package/dist/api/routes/integrations.js +1384 -0
  157. package/dist/api/routes/integrations.js.map +1 -0
  158. package/dist/api/routes/knowledge.d.ts +4 -0
  159. package/dist/api/routes/knowledge.d.ts.map +1 -0
  160. package/dist/api/routes/knowledge.js +224 -0
  161. package/dist/api/routes/knowledge.js.map +1 -0
  162. package/dist/api/routes/mail.d.ts +39 -0
  163. package/dist/api/routes/mail.d.ts.map +1 -0
  164. package/dist/api/routes/mail.js +1406 -0
  165. package/dist/api/routes/mail.js.map +1 -0
  166. package/dist/api/routes/managed-tasks.d.ts +48 -0
  167. package/dist/api/routes/managed-tasks.d.ts.map +1 -0
  168. package/dist/api/routes/managed-tasks.js +844 -0
  169. package/dist/api/routes/managed-tasks.js.map +1 -0
  170. package/dist/api/routes/mcp.d.ts +50 -0
  171. package/dist/api/routes/mcp.d.ts.map +1 -0
  172. package/dist/api/routes/mcp.js +470 -0
  173. package/dist/api/routes/mcp.js.map +1 -0
  174. package/dist/api/routes/metrics.d.ts +13 -0
  175. package/dist/api/routes/metrics.d.ts.map +1 -0
  176. package/dist/api/routes/metrics.js +117 -0
  177. package/dist/api/routes/metrics.js.map +1 -0
  178. package/dist/api/routes/notion.d.ts +35 -0
  179. package/dist/api/routes/notion.d.ts.map +1 -0
  180. package/dist/api/routes/notion.js +442 -0
  181. package/dist/api/routes/notion.js.map +1 -0
  182. package/dist/api/routes/observations.d.ts +4 -0
  183. package/dist/api/routes/observations.d.ts.map +1 -0
  184. package/dist/api/routes/observations.js +177 -0
  185. package/dist/api/routes/observations.js.map +1 -0
  186. package/dist/api/routes/obsidian.d.ts +16 -0
  187. package/dist/api/routes/obsidian.d.ts.map +1 -0
  188. package/dist/api/routes/obsidian.js +321 -0
  189. package/dist/api/routes/obsidian.js.map +1 -0
  190. package/dist/api/routes/profile-questions.d.ts +17 -0
  191. package/dist/api/routes/profile-questions.d.ts.map +1 -0
  192. package/dist/api/routes/profile-questions.js +115 -0
  193. package/dist/api/routes/profile-questions.js.map +1 -0
  194. package/dist/api/routes/receipts.d.ts +4 -0
  195. package/dist/api/routes/receipts.d.ts.map +1 -0
  196. package/dist/api/routes/receipts.js +155 -0
  197. package/dist/api/routes/receipts.js.map +1 -0
  198. package/dist/api/routes/recurring-schedules.d.ts +4 -0
  199. package/dist/api/routes/recurring-schedules.d.ts.map +1 -0
  200. package/dist/api/routes/recurring-schedules.js +137 -0
  201. package/dist/api/routes/recurring-schedules.js.map +1 -0
  202. package/dist/api/routes/repositories.d.ts +40 -0
  203. package/dist/api/routes/repositories.d.ts.map +1 -0
  204. package/dist/api/routes/repositories.js +857 -0
  205. package/dist/api/routes/repositories.js.map +1 -0
  206. package/dist/api/routes/setup-migrate.d.ts +74 -0
  207. package/dist/api/routes/setup-migrate.d.ts.map +1 -0
  208. package/dist/api/routes/setup-migrate.js +944 -0
  209. package/dist/api/routes/setup-migrate.js.map +1 -0
  210. package/dist/api/routes/setup.d.ts +4 -0
  211. package/dist/api/routes/setup.d.ts.map +1 -0
  212. package/dist/api/routes/setup.js +443 -0
  213. package/dist/api/routes/setup.js.map +1 -0
  214. package/dist/api/routes/skill-curation.d.ts +5 -0
  215. package/dist/api/routes/skill-curation.d.ts.map +1 -0
  216. package/dist/api/routes/skill-curation.js +728 -0
  217. package/dist/api/routes/skill-curation.js.map +1 -0
  218. package/dist/api/routes/skills.d.ts +52 -0
  219. package/dist/api/routes/skills.d.ts.map +1 -0
  220. package/dist/api/routes/skills.js +429 -0
  221. package/dist/api/routes/skills.js.map +1 -0
  222. package/dist/api/routes/sot-bindings.d.ts +20 -0
  223. package/dist/api/routes/sot-bindings.d.ts.map +1 -0
  224. package/dist/api/routes/sot-bindings.js +163 -0
  225. package/dist/api/routes/sot-bindings.js.map +1 -0
  226. package/dist/api/routes/sse.d.ts +86 -0
  227. package/dist/api/routes/sse.d.ts.map +1 -0
  228. package/dist/api/routes/sse.js +378 -0
  229. package/dist/api/routes/sse.js.map +1 -0
  230. package/dist/api/routes/system.d.ts +4 -0
  231. package/dist/api/routes/system.d.ts.map +1 -0
  232. package/dist/api/routes/system.js +207 -0
  233. package/dist/api/routes/system.js.map +1 -0
  234. package/dist/api/routes/task-flows.d.ts +30 -0
  235. package/dist/api/routes/task-flows.d.ts.map +1 -0
  236. package/dist/api/routes/task-flows.js +155 -0
  237. package/dist/api/routes/task-flows.js.map +1 -0
  238. package/dist/api/routes/travel-bookings.d.ts +4 -0
  239. package/dist/api/routes/travel-bookings.d.ts.map +1 -0
  240. package/dist/api/routes/travel-bookings.js +142 -0
  241. package/dist/api/routes/travel-bookings.js.map +1 -0
  242. package/dist/api/routes/travel-time.d.ts +8 -0
  243. package/dist/api/routes/travel-time.d.ts.map +1 -0
  244. package/dist/api/routes/travel-time.js +87 -0
  245. package/dist/api/routes/travel-time.js.map +1 -0
  246. package/dist/api/routes/triggers.d.ts +4 -0
  247. package/dist/api/routes/triggers.d.ts.map +1 -0
  248. package/dist/api/routes/triggers.js +101 -0
  249. package/dist/api/routes/triggers.js.map +1 -0
  250. package/dist/api/routes/voice.d.ts +48 -0
  251. package/dist/api/routes/voice.d.ts.map +1 -0
  252. package/dist/api/routes/voice.js +232 -0
  253. package/dist/api/routes/voice.js.map +1 -0
  254. package/dist/api/server.d.ts +428 -0
  255. package/dist/api/server.d.ts.map +1 -0
  256. package/dist/api/server.js +558 -0
  257. package/dist/api/server.js.map +1 -0
  258. package/dist/config.d.ts +136 -0
  259. package/dist/config.d.ts.map +1 -0
  260. package/dist/config.js +699 -0
  261. package/dist/config.js.map +1 -0
  262. package/dist/core/agent-core.d.ts +517 -0
  263. package/dist/core/agent-core.d.ts.map +1 -0
  264. package/dist/core/agent-core.js +102 -0
  265. package/dist/core/agent-core.js.map +1 -0
  266. package/dist/core/alerts.d.ts +86 -0
  267. package/dist/core/alerts.d.ts.map +1 -0
  268. package/dist/core/alerts.js +304 -0
  269. package/dist/core/alerts.js.map +1 -0
  270. package/dist/core/atomic-write.d.ts +51 -0
  271. package/dist/core/atomic-write.d.ts.map +1 -0
  272. package/dist/core/atomic-write.js +135 -0
  273. package/dist/core/atomic-write.js.map +1 -0
  274. package/dist/core/backends/api-key-probe.d.ts +40 -0
  275. package/dist/core/backends/api-key-probe.d.ts.map +1 -0
  276. package/dist/core/backends/api-key-probe.js +116 -0
  277. package/dist/core/backends/api-key-probe.js.map +1 -0
  278. package/dist/core/backends/auth-health-monitor.d.ts +373 -0
  279. package/dist/core/backends/auth-health-monitor.d.ts.map +1 -0
  280. package/dist/core/backends/auth-health-monitor.js +950 -0
  281. package/dist/core/backends/auth-health-monitor.js.map +1 -0
  282. package/dist/core/backends/auth-recovery.d.ts +263 -0
  283. package/dist/core/backends/auth-recovery.d.ts.map +1 -0
  284. package/dist/core/backends/auth-recovery.js +1086 -0
  285. package/dist/core/backends/auth-recovery.js.map +1 -0
  286. package/dist/core/backends/auth-telemetry.d.ts +81 -0
  287. package/dist/core/backends/auth-telemetry.d.ts.map +1 -0
  288. package/dist/core/backends/auth-telemetry.js +108 -0
  289. package/dist/core/backends/auth-telemetry.js.map +1 -0
  290. package/dist/core/backends/backend-router.d.ts +272 -0
  291. package/dist/core/backends/backend-router.d.ts.map +1 -0
  292. package/dist/core/backends/backend-router.js +759 -0
  293. package/dist/core/backends/backend-router.js.map +1 -0
  294. package/dist/core/backends/claude-code-core.d.ts +299 -0
  295. package/dist/core/backends/claude-code-core.d.ts.map +1 -0
  296. package/dist/core/backends/claude-code-core.js +2541 -0
  297. package/dist/core/backends/claude-code-core.js.map +1 -0
  298. package/dist/core/backends/claude-credentials-store.d.ts +83 -0
  299. package/dist/core/backends/claude-credentials-store.d.ts.map +1 -0
  300. package/dist/core/backends/claude-credentials-store.js +243 -0
  301. package/dist/core/backends/claude-credentials-store.js.map +1 -0
  302. package/dist/core/backends/cli-utils.d.ts +95 -0
  303. package/dist/core/backends/cli-utils.d.ts.map +1 -0
  304. package/dist/core/backends/cli-utils.js +464 -0
  305. package/dist/core/backends/cli-utils.js.map +1 -0
  306. package/dist/core/backends/codex-core.d.ts +127 -0
  307. package/dist/core/backends/codex-core.d.ts.map +1 -0
  308. package/dist/core/backends/codex-core.js +1693 -0
  309. package/dist/core/backends/codex-core.js.map +1 -0
  310. package/dist/core/backends/gemini-cli-core.d.ts +367 -0
  311. package/dist/core/backends/gemini-cli-core.d.ts.map +1 -0
  312. package/dist/core/backends/gemini-cli-core.js +2331 -0
  313. package/dist/core/backends/gemini-cli-core.js.map +1 -0
  314. package/dist/core/backends/idle-watchdog.d.ts +77 -0
  315. package/dist/core/backends/idle-watchdog.d.ts.map +1 -0
  316. package/dist/core/backends/idle-watchdog.js +94 -0
  317. package/dist/core/backends/idle-watchdog.js.map +1 -0
  318. package/dist/core/backends/install-methods.d.ts +93 -0
  319. package/dist/core/backends/install-methods.d.ts.map +1 -0
  320. package/dist/core/backends/install-methods.js +267 -0
  321. package/dist/core/backends/install-methods.js.map +1 -0
  322. package/dist/core/backends/model-registry.d.ts +58 -0
  323. package/dist/core/backends/model-registry.d.ts.map +1 -0
  324. package/dist/core/backends/model-registry.js +539 -0
  325. package/dist/core/backends/model-registry.js.map +1 -0
  326. package/dist/core/backends/plan-presets.d.ts +123 -0
  327. package/dist/core/backends/plan-presets.d.ts.map +1 -0
  328. package/dist/core/backends/plan-presets.js +235 -0
  329. package/dist/core/backends/plan-presets.js.map +1 -0
  330. package/dist/core/backends/price-fetcher.d.ts +48 -0
  331. package/dist/core/backends/price-fetcher.d.ts.map +1 -0
  332. package/dist/core/backends/price-fetcher.js +248 -0
  333. package/dist/core/backends/price-fetcher.js.map +1 -0
  334. package/dist/core/backends/process-config-cascade.d.ts +68 -0
  335. package/dist/core/backends/process-config-cascade.d.ts.map +1 -0
  336. package/dist/core/backends/process-config-cascade.js +173 -0
  337. package/dist/core/backends/process-config-cascade.js.map +1 -0
  338. package/dist/core/backends/prompt-utils.d.ts +6 -0
  339. package/dist/core/backends/prompt-utils.d.ts.map +1 -0
  340. package/dist/core/backends/prompt-utils.js +80 -0
  341. package/dist/core/backends/prompt-utils.js.map +1 -0
  342. package/dist/core/backends/proxy-model-registry.d.ts +110 -0
  343. package/dist/core/backends/proxy-model-registry.d.ts.map +1 -0
  344. package/dist/core/backends/proxy-model-registry.js +195 -0
  345. package/dist/core/backends/proxy-model-registry.js.map +1 -0
  346. package/dist/core/backends/silent-api-error-detector.d.ts +31 -0
  347. package/dist/core/backends/silent-api-error-detector.d.ts.map +1 -0
  348. package/dist/core/backends/silent-api-error-detector.js +44 -0
  349. package/dist/core/backends/silent-api-error-detector.js.map +1 -0
  350. package/dist/core/bang-commands/commands-cost.d.ts +13 -0
  351. package/dist/core/bang-commands/commands-cost.d.ts.map +1 -0
  352. package/dist/core/bang-commands/commands-cost.js +91 -0
  353. package/dist/core/bang-commands/commands-cost.js.map +1 -0
  354. package/dist/core/bang-commands/commands-report.d.ts +18 -0
  355. package/dist/core/bang-commands/commands-report.d.ts.map +1 -0
  356. package/dist/core/bang-commands/commands-report.js +105 -0
  357. package/dist/core/bang-commands/commands-report.js.map +1 -0
  358. package/dist/core/bang-commands/commands-stop-start.d.ts +4 -0
  359. package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -0
  360. package/dist/core/bang-commands/commands-stop-start.js +88 -0
  361. package/dist/core/bang-commands/commands-stop-start.js.map +1 -0
  362. package/dist/core/bang-commands/format-utils.d.ts +34 -0
  363. package/dist/core/bang-commands/format-utils.d.ts.map +1 -0
  364. package/dist/core/bang-commands/format-utils.js +118 -0
  365. package/dist/core/bang-commands/format-utils.js.map +1 -0
  366. package/dist/core/bang-commands/index.d.ts +20 -0
  367. package/dist/core/bang-commands/index.d.ts.map +1 -0
  368. package/dist/core/bang-commands/index.js +31 -0
  369. package/dist/core/bang-commands/index.js.map +1 -0
  370. package/dist/core/bang-commands/registry.d.ts +72 -0
  371. package/dist/core/bang-commands/registry.d.ts.map +1 -0
  372. package/dist/core/bang-commands/registry.js +174 -0
  373. package/dist/core/bang-commands/registry.js.map +1 -0
  374. package/dist/core/bang-commands/user-commands.d.ts +86 -0
  375. package/dist/core/bang-commands/user-commands.d.ts.map +1 -0
  376. package/dist/core/bang-commands/user-commands.js +212 -0
  377. package/dist/core/bang-commands/user-commands.js.map +1 -0
  378. package/dist/core/channel-timeline.d.ts +28 -0
  379. package/dist/core/channel-timeline.d.ts.map +1 -0
  380. package/dist/core/channel-timeline.js +117 -0
  381. package/dist/core/channel-timeline.js.map +1 -0
  382. package/dist/core/character-block.d.ts +37 -0
  383. package/dist/core/character-block.d.ts.map +1 -0
  384. package/dist/core/character-block.js +162 -0
  385. package/dist/core/character-block.js.map +1 -0
  386. package/dist/core/context/activity-sources.d.ts +37 -0
  387. package/dist/core/context/activity-sources.d.ts.map +1 -0
  388. package/dist/core/context/activity-sources.js +69 -0
  389. package/dist/core/context/activity-sources.js.map +1 -0
  390. package/dist/core/context/activity-view-reconciler.d.ts +110 -0
  391. package/dist/core/context/activity-view-reconciler.d.ts.map +1 -0
  392. package/dist/core/context/activity-view-reconciler.js +252 -0
  393. package/dist/core/context/activity-view-reconciler.js.map +1 -0
  394. package/dist/core/context/activity-view-runner.d.ts +38 -0
  395. package/dist/core/context/activity-view-runner.d.ts.map +1 -0
  396. package/dist/core/context/activity-view-runner.js +402 -0
  397. package/dist/core/context/activity-view-runner.js.map +1 -0
  398. package/dist/core/context/default-schedules-reconciler.d.ts +85 -0
  399. package/dist/core/context/default-schedules-reconciler.d.ts.map +1 -0
  400. package/dist/core/context/default-schedules-reconciler.js +153 -0
  401. package/dist/core/context/default-schedules-reconciler.js.map +1 -0
  402. package/dist/core/context/default-schedules-runner.d.ts +40 -0
  403. package/dist/core/context/default-schedules-runner.d.ts.map +1 -0
  404. package/dist/core/context/default-schedules-runner.js +233 -0
  405. package/dist/core/context/default-schedules-runner.js.map +1 -0
  406. package/dist/core/context/domain-index-reconciler.d.ts +81 -0
  407. package/dist/core/context/domain-index-reconciler.d.ts.map +1 -0
  408. package/dist/core/context/domain-index-reconciler.js +199 -0
  409. package/dist/core/context/domain-index-reconciler.js.map +1 -0
  410. package/dist/core/context/domain-index-runner.d.ts +35 -0
  411. package/dist/core/context/domain-index-runner.d.ts.map +1 -0
  412. package/dist/core/context/domain-index-runner.js +223 -0
  413. package/dist/core/context/domain-index-runner.js.map +1 -0
  414. package/dist/core/context/entity-mirror.d.ts +227 -0
  415. package/dist/core/context/entity-mirror.d.ts.map +1 -0
  416. package/dist/core/context/entity-mirror.js +629 -0
  417. package/dist/core/context/entity-mirror.js.map +1 -0
  418. package/dist/core/context/entity-source-rename.d.ts +61 -0
  419. package/dist/core/context/entity-source-rename.d.ts.map +1 -0
  420. package/dist/core/context/entity-source-rename.js +237 -0
  421. package/dist/core/context/entity-source-rename.js.map +1 -0
  422. package/dist/core/context/index-reconciler.d.ts +61 -0
  423. package/dist/core/context/index-reconciler.d.ts.map +1 -0
  424. package/dist/core/context/index-reconciler.js +329 -0
  425. package/dist/core/context/index-reconciler.js.map +1 -0
  426. package/dist/core/context/policy-index-reconciler.d.ts +102 -0
  427. package/dist/core/context/policy-index-reconciler.d.ts.map +1 -0
  428. package/dist/core/context/policy-index-reconciler.js +202 -0
  429. package/dist/core/context/policy-index-reconciler.js.map +1 -0
  430. package/dist/core/context/policy-index-runner.d.ts +66 -0
  431. package/dist/core/context/policy-index-runner.d.ts.map +1 -0
  432. package/dist/core/context/policy-index-runner.js +406 -0
  433. package/dist/core/context/policy-index-runner.js.map +1 -0
  434. package/dist/core/context/reconciler-runner.d.ts +44 -0
  435. package/dist/core/context/reconciler-runner.d.ts.map +1 -0
  436. package/dist/core/context/reconciler-runner.js +273 -0
  437. package/dist/core/context/reconciler-runner.js.map +1 -0
  438. package/dist/core/context-builder.d.ts +115 -0
  439. package/dist/core/context-builder.d.ts.map +1 -0
  440. package/dist/core/context-builder.js +1148 -0
  441. package/dist/core/context-builder.js.map +1 -0
  442. package/dist/core/context-frontmatter-backfill.d.ts +33 -0
  443. package/dist/core/context-frontmatter-backfill.d.ts.map +1 -0
  444. package/dist/core/context-frontmatter-backfill.js +111 -0
  445. package/dist/core/context-frontmatter-backfill.js.map +1 -0
  446. package/dist/core/context-frontmatter.d.ts +13 -0
  447. package/dist/core/context-frontmatter.d.ts.map +1 -0
  448. package/dist/core/context-frontmatter.js +325 -0
  449. package/dist/core/context-frontmatter.js.map +1 -0
  450. package/dist/core/context-health.d.ts +51 -0
  451. package/dist/core/context-health.d.ts.map +1 -0
  452. package/dist/core/context-health.js +304 -0
  453. package/dist/core/context-health.js.map +1 -0
  454. package/dist/core/context-paths.d.ts +183 -0
  455. package/dist/core/context-paths.d.ts.map +1 -0
  456. package/dist/core/context-paths.js +241 -0
  457. package/dist/core/context-paths.js.map +1 -0
  458. package/dist/core/context-staleness.d.ts +45 -0
  459. package/dist/core/context-staleness.d.ts.map +1 -0
  460. package/dist/core/context-staleness.js +88 -0
  461. package/dist/core/context-staleness.js.map +1 -0
  462. package/dist/core/custom-routine-scheduler.d.ts +151 -0
  463. package/dist/core/custom-routine-scheduler.d.ts.map +1 -0
  464. package/dist/core/custom-routine-scheduler.js +335 -0
  465. package/dist/core/custom-routine-scheduler.js.map +1 -0
  466. package/dist/core/daemon-api-cli.d.ts +33 -0
  467. package/dist/core/daemon-api-cli.d.ts.map +1 -0
  468. package/dist/core/daemon-api-cli.js +614 -0
  469. package/dist/core/daemon-api-cli.js.map +1 -0
  470. package/dist/core/dashboard-session-cleanup.d.ts +39 -0
  471. package/dist/core/dashboard-session-cleanup.d.ts.map +1 -0
  472. package/dist/core/dashboard-session-cleanup.js +108 -0
  473. package/dist/core/dashboard-session-cleanup.js.map +1 -0
  474. package/dist/core/dashboard-session-controls.d.ts +41 -0
  475. package/dist/core/dashboard-session-controls.d.ts.map +1 -0
  476. package/dist/core/dashboard-session-controls.js +154 -0
  477. package/dist/core/dashboard-session-controls.js.map +1 -0
  478. package/dist/core/delegated-connector-health.d.ts +63 -0
  479. package/dist/core/delegated-connector-health.d.ts.map +1 -0
  480. package/dist/core/delegated-connector-health.js +157 -0
  481. package/dist/core/delegated-connector-health.js.map +1 -0
  482. package/dist/core/dispatcher.d.ts +999 -0
  483. package/dist/core/dispatcher.d.ts.map +1 -0
  484. package/dist/core/dispatcher.js +4378 -0
  485. package/dist/core/dispatcher.js.map +1 -0
  486. package/dist/core/dm-freshness-metrics.d.ts +73 -0
  487. package/dist/core/dm-freshness-metrics.d.ts.map +1 -0
  488. package/dist/core/dm-freshness-metrics.js +138 -0
  489. package/dist/core/dm-freshness-metrics.js.map +1 -0
  490. package/dist/core/docs/citation-validator.d.ts +73 -0
  491. package/dist/core/docs/citation-validator.d.ts.map +1 -0
  492. package/dist/core/docs/citation-validator.js +195 -0
  493. package/dist/core/docs/citation-validator.js.map +1 -0
  494. package/dist/core/docs/extract-terms.d.ts +78 -0
  495. package/dist/core/docs/extract-terms.d.ts.map +1 -0
  496. package/dist/core/docs/extract-terms.js +147 -0
  497. package/dist/core/docs/extract-terms.js.map +1 -0
  498. package/dist/core/docs/indexer.d.ts +104 -0
  499. package/dist/core/docs/indexer.d.ts.map +1 -0
  500. package/dist/core/docs/indexer.js +340 -0
  501. package/dist/core/docs/indexer.js.map +1 -0
  502. package/dist/core/drift-effects.d.ts +30 -0
  503. package/dist/core/drift-effects.d.ts.map +1 -0
  504. package/dist/core/drift-effects.js +384 -0
  505. package/dist/core/drift-effects.js.map +1 -0
  506. package/dist/core/event-bus.d.ts +56 -0
  507. package/dist/core/event-bus.d.ts.map +1 -0
  508. package/dist/core/event-bus.js +135 -0
  509. package/dist/core/event-bus.js.map +1 -0
  510. package/dist/core/git-project-docs.d.ts +77 -0
  511. package/dist/core/git-project-docs.d.ts.map +1 -0
  512. package/dist/core/git-project-docs.js +439 -0
  513. package/dist/core/git-project-docs.js.map +1 -0
  514. package/dist/core/health-monitor.d.ts +57 -0
  515. package/dist/core/health-monitor.d.ts.map +1 -0
  516. package/dist/core/health-monitor.js +137 -0
  517. package/dist/core/health-monitor.js.map +1 -0
  518. package/dist/core/heartbeat.d.ts +26 -0
  519. package/dist/core/heartbeat.d.ts.map +1 -0
  520. package/dist/core/heartbeat.js +48 -0
  521. package/dist/core/heartbeat.js.map +1 -0
  522. package/dist/core/integration-health.d.ts +49 -0
  523. package/dist/core/integration-health.d.ts.map +1 -0
  524. package/dist/core/integration-health.js +89 -0
  525. package/dist/core/integration-health.js.map +1 -0
  526. package/dist/core/integration-lifecycle.d.ts +79 -0
  527. package/dist/core/integration-lifecycle.d.ts.map +1 -0
  528. package/dist/core/integration-lifecycle.js +153 -0
  529. package/dist/core/integration-lifecycle.js.map +1 -0
  530. package/dist/core/integration-main-backend.d.ts +36 -0
  531. package/dist/core/integration-main-backend.d.ts.map +1 -0
  532. package/dist/core/integration-main-backend.js +59 -0
  533. package/dist/core/integration-main-backend.js.map +1 -0
  534. package/dist/core/integration-probe.d.ts +98 -0
  535. package/dist/core/integration-probe.d.ts.map +1 -0
  536. package/dist/core/integration-probe.js +152 -0
  537. package/dist/core/integration-probe.js.map +1 -0
  538. package/dist/core/management-md-write-lock.d.ts +68 -0
  539. package/dist/core/management-md-write-lock.d.ts.map +1 -0
  540. package/dist/core/management-md-write-lock.js +93 -0
  541. package/dist/core/management-md-write-lock.js.map +1 -0
  542. package/dist/core/management-md.d.ts +186 -0
  543. package/dist/core/management-md.d.ts.map +1 -0
  544. package/dist/core/management-md.js +652 -0
  545. package/dist/core/management-md.js.map +1 -0
  546. package/dist/core/management-registry.d.ts +245 -0
  547. package/dist/core/management-registry.d.ts.map +1 -0
  548. package/dist/core/management-registry.js +906 -0
  549. package/dist/core/management-registry.js.map +1 -0
  550. package/dist/core/management-telemetry.d.ts +100 -0
  551. package/dist/core/management-telemetry.d.ts.map +1 -0
  552. package/dist/core/management-telemetry.js +156 -0
  553. package/dist/core/management-telemetry.js.map +1 -0
  554. package/dist/core/message-recorder.d.ts +38 -0
  555. package/dist/core/message-recorder.d.ts.map +1 -0
  556. package/dist/core/message-recorder.js +88 -0
  557. package/dist/core/message-recorder.js.map +1 -0
  558. package/dist/core/metrics.d.ts +338 -0
  559. package/dist/core/metrics.d.ts.map +1 -0
  560. package/dist/core/metrics.js +747 -0
  561. package/dist/core/metrics.js.map +1 -0
  562. package/dist/core/migration-backup.d.ts +218 -0
  563. package/dist/core/migration-backup.d.ts.map +1 -0
  564. package/dist/core/migration-backup.js +934 -0
  565. package/dist/core/migration-backup.js.map +1 -0
  566. package/dist/core/overview-write-lock.d.ts +48 -0
  567. package/dist/core/overview-write-lock.d.ts.map +1 -0
  568. package/dist/core/overview-write-lock.js +56 -0
  569. package/dist/core/overview-write-lock.js.map +1 -0
  570. package/dist/core/path-compat.d.ts +22 -0
  571. package/dist/core/path-compat.d.ts.map +1 -0
  572. package/dist/core/path-compat.js +67 -0
  573. package/dist/core/path-compat.js.map +1 -0
  574. package/dist/core/path-rewrite.d.ts +58 -0
  575. package/dist/core/path-rewrite.d.ts.map +1 -0
  576. package/dist/core/path-rewrite.js +141 -0
  577. package/dist/core/path-rewrite.js.map +1 -0
  578. package/dist/core/policy-files.d.ts +108 -0
  579. package/dist/core/policy-files.d.ts.map +1 -0
  580. package/dist/core/policy-files.js +198 -0
  581. package/dist/core/policy-files.js.map +1 -0
  582. package/dist/core/profile-questions/seed.d.ts +44 -0
  583. package/dist/core/profile-questions/seed.d.ts.map +1 -0
  584. package/dist/core/profile-questions/seed.js +173 -0
  585. package/dist/core/profile-questions/seed.js.map +1 -0
  586. package/dist/core/profile-questions/slot-filled.d.ts +51 -0
  587. package/dist/core/profile-questions/slot-filled.d.ts.map +1 -0
  588. package/dist/core/profile-questions/slot-filled.js +118 -0
  589. package/dist/core/profile-questions/slot-filled.js.map +1 -0
  590. package/dist/core/prompts.d.ts +111 -0
  591. package/dist/core/prompts.d.ts.map +1 -0
  592. package/dist/core/prompts.js +267 -0
  593. package/dist/core/prompts.js.map +1 -0
  594. package/dist/core/quiet-hours-sync.d.ts +15 -0
  595. package/dist/core/quiet-hours-sync.d.ts.map +1 -0
  596. package/dist/core/quiet-hours-sync.js +51 -0
  597. package/dist/core/quiet-hours-sync.js.map +1 -0
  598. package/dist/core/read-sensitive-token-manager.d.ts +19 -0
  599. package/dist/core/read-sensitive-token-manager.d.ts.map +1 -0
  600. package/dist/core/read-sensitive-token-manager.js +29 -0
  601. package/dist/core/read-sensitive-token-manager.js.map +1 -0
  602. package/dist/core/recurrence.d.ts +24 -0
  603. package/dist/core/recurrence.d.ts.map +1 -0
  604. package/dist/core/recurrence.js +162 -0
  605. package/dist/core/recurrence.js.map +1 -0
  606. package/dist/core/reinstall.d.ts +107 -0
  607. package/dist/core/reinstall.d.ts.map +1 -0
  608. package/dist/core/reinstall.js +163 -0
  609. package/dist/core/reinstall.js.map +1 -0
  610. package/dist/core/release-assets.d.ts +106 -0
  611. package/dist/core/release-assets.d.ts.map +1 -0
  612. package/dist/core/release-assets.js +434 -0
  613. package/dist/core/release-assets.js.map +1 -0
  614. package/dist/core/repository-management-docs.d.ts +216 -0
  615. package/dist/core/repository-management-docs.d.ts.map +1 -0
  616. package/dist/core/repository-management-docs.js +855 -0
  617. package/dist/core/repository-management-docs.js.map +1 -0
  618. package/dist/core/retention.d.ts +164 -0
  619. package/dist/core/retention.d.ts.map +1 -0
  620. package/dist/core/retention.js +1008 -0
  621. package/dist/core/retention.js.map +1 -0
  622. package/dist/core/review-context.d.ts +48 -0
  623. package/dist/core/review-context.d.ts.map +1 -0
  624. package/dist/core/review-context.js +282 -0
  625. package/dist/core/review-context.js.map +1 -0
  626. package/dist/core/roadmap-horizon.d.ts +48 -0
  627. package/dist/core/roadmap-horizon.d.ts.map +1 -0
  628. package/dist/core/roadmap-horizon.js +213 -0
  629. package/dist/core/roadmap-horizon.js.map +1 -0
  630. package/dist/core/roadmap-ids.d.ts +57 -0
  631. package/dist/core/roadmap-ids.d.ts.map +1 -0
  632. package/dist/core/roadmap-ids.js +118 -0
  633. package/dist/core/roadmap-ids.js.map +1 -0
  634. package/dist/core/roadmap-merge.d.ts +7 -0
  635. package/dist/core/roadmap-merge.d.ts.map +1 -0
  636. package/dist/core/roadmap-merge.js +187 -0
  637. package/dist/core/roadmap-merge.js.map +1 -0
  638. package/dist/core/roadmap-refresh-triggers.d.ts +32 -0
  639. package/dist/core/roadmap-refresh-triggers.d.ts.map +1 -0
  640. package/dist/core/roadmap-refresh-triggers.js +51 -0
  641. package/dist/core/roadmap-refresh-triggers.js.map +1 -0
  642. package/dist/core/roadmap-truncate.d.ts +49 -0
  643. package/dist/core/roadmap-truncate.d.ts.map +1 -0
  644. package/dist/core/roadmap-truncate.js +152 -0
  645. package/dist/core/roadmap-truncate.js.map +1 -0
  646. package/dist/core/roadmap-validate.d.ts +31 -0
  647. package/dist/core/roadmap-validate.d.ts.map +1 -0
  648. package/dist/core/roadmap-validate.js +403 -0
  649. package/dist/core/roadmap-validate.js.map +1 -0
  650. package/dist/core/roadmap-write-lock.d.ts +53 -0
  651. package/dist/core/roadmap-write-lock.d.ts.map +1 -0
  652. package/dist/core/roadmap-write-lock.js +59 -0
  653. package/dist/core/roadmap-write-lock.js.map +1 -0
  654. package/dist/core/schedule-insert-helper.d.ts +46 -0
  655. package/dist/core/schedule-insert-helper.d.ts.map +1 -0
  656. package/dist/core/schedule-insert-helper.js +52 -0
  657. package/dist/core/schedule-insert-helper.js.map +1 -0
  658. package/dist/core/schedule-maintenance.d.ts +22 -0
  659. package/dist/core/schedule-maintenance.d.ts.map +1 -0
  660. package/dist/core/schedule-maintenance.js +57 -0
  661. package/dist/core/schedule-maintenance.js.map +1 -0
  662. package/dist/core/scheduler.d.ts +208 -0
  663. package/dist/core/scheduler.d.ts.map +1 -0
  664. package/dist/core/scheduler.js +896 -0
  665. package/dist/core/scheduler.js.map +1 -0
  666. package/dist/core/semaphore.d.ts +13 -0
  667. package/dist/core/semaphore.d.ts.map +1 -0
  668. package/dist/core/semaphore.js +31 -0
  669. package/dist/core/semaphore.js.map +1 -0
  670. package/dist/core/session-gate.d.ts +37 -0
  671. package/dist/core/session-gate.d.ts.map +1 -0
  672. package/dist/core/session-gate.js +69 -0
  673. package/dist/core/session-gate.js.map +1 -0
  674. package/dist/core/session-manager.d.ts +252 -0
  675. package/dist/core/session-manager.d.ts.map +1 -0
  676. package/dist/core/session-manager.js +716 -0
  677. package/dist/core/session-manager.js.map +1 -0
  678. package/dist/core/signal-detector.d.ts +97 -0
  679. package/dist/core/signal-detector.d.ts.map +1 -0
  680. package/dist/core/signal-detector.js +215 -0
  681. package/dist/core/signal-detector.js.map +1 -0
  682. package/dist/core/skeleton.d.ts +83 -0
  683. package/dist/core/skeleton.d.ts.map +1 -0
  684. package/dist/core/skeleton.js +255 -0
  685. package/dist/core/skeleton.js.map +1 -0
  686. package/dist/core/skill-curation/apply-proposal.d.ts +71 -0
  687. package/dist/core/skill-curation/apply-proposal.d.ts.map +1 -0
  688. package/dist/core/skill-curation/apply-proposal.js +175 -0
  689. package/dist/core/skill-curation/apply-proposal.js.map +1 -0
  690. package/dist/core/skill-curation/auto-revert.d.ts +43 -0
  691. package/dist/core/skill-curation/auto-revert.d.ts.map +1 -0
  692. package/dist/core/skill-curation/auto-revert.js +155 -0
  693. package/dist/core/skill-curation/auto-revert.js.map +1 -0
  694. package/dist/core/skill-curation/classify-diff.d.ts +27 -0
  695. package/dist/core/skill-curation/classify-diff.d.ts.map +1 -0
  696. package/dist/core/skill-curation/classify-diff.js +0 -0
  697. package/dist/core/skill-curation/classify-diff.js.map +1 -0
  698. package/dist/core/skill-curation/declarations.d.ts +32 -0
  699. package/dist/core/skill-curation/declarations.d.ts.map +1 -0
  700. package/dist/core/skill-curation/declarations.js +171 -0
  701. package/dist/core/skill-curation/declarations.js.map +1 -0
  702. package/dist/core/skill-curation/knowledge-map.d.ts +26 -0
  703. package/dist/core/skill-curation/knowledge-map.d.ts.map +1 -0
  704. package/dist/core/skill-curation/knowledge-map.js +154 -0
  705. package/dist/core/skill-curation/knowledge-map.js.map +1 -0
  706. package/dist/core/skill-curation/orphan-overlay.d.ts +35 -0
  707. package/dist/core/skill-curation/orphan-overlay.d.ts.map +1 -0
  708. package/dist/core/skill-curation/orphan-overlay.js +167 -0
  709. package/dist/core/skill-curation/orphan-overlay.js.map +1 -0
  710. package/dist/core/skill-curation/overlay-store.d.ts +41 -0
  711. package/dist/core/skill-curation/overlay-store.d.ts.map +1 -0
  712. package/dist/core/skill-curation/overlay-store.js +143 -0
  713. package/dist/core/skill-curation/overlay-store.js.map +1 -0
  714. package/dist/core/skill-curation/render/convention-notes.d.ts +4 -0
  715. package/dist/core/skill-curation/render/convention-notes.d.ts.map +1 -0
  716. package/dist/core/skill-curation/render/convention-notes.js +13 -0
  717. package/dist/core/skill-curation/render/convention-notes.js.map +1 -0
  718. package/dist/core/skill-curation/render/cross-references.d.ts +4 -0
  719. package/dist/core/skill-curation/render/cross-references.d.ts.map +1 -0
  720. package/dist/core/skill-curation/render/cross-references.js +10 -0
  721. package/dist/core/skill-curation/render/cross-references.js.map +1 -0
  722. package/dist/core/skill-curation/render/frontmatter-schema.d.ts +4 -0
  723. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +1 -0
  724. package/dist/core/skill-curation/render/frontmatter-schema.js +25 -0
  725. package/dist/core/skill-curation/render/frontmatter-schema.js.map +1 -0
  726. package/dist/core/skill-curation/render/index.d.ts +5 -0
  727. package/dist/core/skill-curation/render/index.d.ts.map +1 -0
  728. package/dist/core/skill-curation/render/index.js +42 -0
  729. package/dist/core/skill-curation/render/index.js.map +1 -0
  730. package/dist/core/skill-curation/render/knowledge-layout.d.ts +4 -0
  731. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +1 -0
  732. package/dist/core/skill-curation/render/knowledge-layout.js +36 -0
  733. package/dist/core/skill-curation/render/knowledge-layout.js.map +1 -0
  734. package/dist/core/skill-curation/render/routing-table.d.ts +4 -0
  735. package/dist/core/skill-curation/render/routing-table.d.ts.map +1 -0
  736. package/dist/core/skill-curation/render/routing-table.js +37 -0
  737. package/dist/core/skill-curation/render/routing-table.js.map +1 -0
  738. package/dist/core/skill-curation/render/search-recipes.d.ts +4 -0
  739. package/dist/core/skill-curation/render/search-recipes.d.ts.map +1 -0
  740. package/dist/core/skill-curation/render/search-recipes.js +39 -0
  741. package/dist/core/skill-curation/render/search-recipes.js.map +1 -0
  742. package/dist/core/skill-curation/run-token.d.ts +27 -0
  743. package/dist/core/skill-curation/run-token.d.ts.map +1 -0
  744. package/dist/core/skill-curation/run-token.js +81 -0
  745. package/dist/core/skill-curation/run-token.js.map +1 -0
  746. package/dist/core/skill-curation/signals.d.ts +49 -0
  747. package/dist/core/skill-curation/signals.d.ts.map +1 -0
  748. package/dist/core/skill-curation/signals.js +149 -0
  749. package/dist/core/skill-curation/signals.js.map +1 -0
  750. package/dist/core/skill-curation/smoke-test.d.ts +39 -0
  751. package/dist/core/skill-curation/smoke-test.d.ts.map +1 -0
  752. package/dist/core/skill-curation/smoke-test.js +313 -0
  753. package/dist/core/skill-curation/smoke-test.js.map +1 -0
  754. package/dist/core/skill-curation/splicer.d.ts +16 -0
  755. package/dist/core/skill-curation/splicer.d.ts.map +1 -0
  756. package/dist/core/skill-curation/splicer.js +78 -0
  757. package/dist/core/skill-curation/splicer.js.map +1 -0
  758. package/dist/core/skill-curation/workdir.d.ts +40 -0
  759. package/dist/core/skill-curation/workdir.d.ts.map +1 -0
  760. package/dist/core/skill-curation/workdir.js +242 -0
  761. package/dist/core/skill-curation/workdir.js.map +1 -0
  762. package/dist/core/skills-compiler.d.ts +391 -0
  763. package/dist/core/skills-compiler.d.ts.map +1 -0
  764. package/dist/core/skills-compiler.js +1271 -0
  765. package/dist/core/skills-compiler.js.map +1 -0
  766. package/dist/core/skills-manifest.d.ts +8 -0
  767. package/dist/core/skills-manifest.d.ts.map +1 -0
  768. package/dist/core/skills-manifest.js +408 -0
  769. package/dist/core/skills-manifest.js.map +1 -0
  770. package/dist/core/system-reset.d.ts +268 -0
  771. package/dist/core/system-reset.d.ts.map +1 -0
  772. package/dist/core/system-reset.js +816 -0
  773. package/dist/core/system-reset.js.map +1 -0
  774. package/dist/core/template-store.d.ts +170 -0
  775. package/dist/core/template-store.d.ts.map +1 -0
  776. package/dist/core/template-store.js +388 -0
  777. package/dist/core/template-store.js.map +1 -0
  778. package/dist/core/template-versions.d.ts +95 -0
  779. package/dist/core/template-versions.d.ts.map +1 -0
  780. package/dist/core/template-versions.js +175 -0
  781. package/dist/core/template-versions.js.map +1 -0
  782. package/dist/core/today-agent-plan.d.ts +33 -0
  783. package/dist/core/today-agent-plan.d.ts.map +1 -0
  784. package/dist/core/today-agent-plan.js +120 -0
  785. package/dist/core/today-agent-plan.js.map +1 -0
  786. package/dist/core/today-direct-writer.d.ts +62 -0
  787. package/dist/core/today-direct-writer.d.ts.map +1 -0
  788. package/dist/core/today-direct-writer.js +132 -0
  789. package/dist/core/today-direct-writer.js.map +1 -0
  790. package/dist/core/today-write-lock.d.ts +89 -0
  791. package/dist/core/today-write-lock.d.ts.map +1 -0
  792. package/dist/core/today-write-lock.js +154 -0
  793. package/dist/core/today-write-lock.js.map +1 -0
  794. package/dist/core/trigger-dispatch.d.ts +31 -0
  795. package/dist/core/trigger-dispatch.d.ts.map +1 -0
  796. package/dist/core/trigger-dispatch.js +100 -0
  797. package/dist/core/trigger-dispatch.js.map +1 -0
  798. package/dist/core/trigger-evaluator.d.ts +59 -0
  799. package/dist/core/trigger-evaluator.d.ts.map +1 -0
  800. package/dist/core/trigger-evaluator.js +243 -0
  801. package/dist/core/trigger-evaluator.js.map +1 -0
  802. package/dist/core/workdir.d.ts +241 -0
  803. package/dist/core/workdir.d.ts.map +1 -0
  804. package/dist/core/workdir.js +565 -0
  805. package/dist/core/workdir.js.map +1 -0
  806. package/dist/db/automation-triggers.d.ts +90 -0
  807. package/dist/db/automation-triggers.d.ts.map +1 -0
  808. package/dist/db/automation-triggers.js +199 -0
  809. package/dist/db/automation-triggers.js.map +1 -0
  810. package/dist/db/client.d.ts +6 -0
  811. package/dist/db/client.d.ts.map +1 -0
  812. package/dist/db/client.js +47 -0
  813. package/dist/db/client.js.map +1 -0
  814. package/dist/db/entities-store.d.ts +92 -0
  815. package/dist/db/entities-store.d.ts.map +1 -0
  816. package/dist/db/entities-store.js +180 -0
  817. package/dist/db/entities-store.js.map +1 -0
  818. package/dist/db/hourly-check-signals.d.ts +78 -0
  819. package/dist/db/hourly-check-signals.d.ts.map +1 -0
  820. package/dist/db/hourly-check-signals.js +289 -0
  821. package/dist/db/hourly-check-signals.js.map +1 -0
  822. package/dist/db/integration-probe-store.d.ts +27 -0
  823. package/dist/db/integration-probe-store.d.ts.map +1 -0
  824. package/dist/db/integration-probe-store.js +75 -0
  825. package/dist/db/integration-probe-store.js.map +1 -0
  826. package/dist/db/integrations-store.d.ts +19 -0
  827. package/dist/db/integrations-store.d.ts.map +1 -0
  828. package/dist/db/integrations-store.js +85 -0
  829. package/dist/db/integrations-store.js.map +1 -0
  830. package/dist/db/managed-tasks-store.d.ts +130 -0
  831. package/dist/db/managed-tasks-store.d.ts.map +1 -0
  832. package/dist/db/managed-tasks-store.js +238 -0
  833. package/dist/db/managed-tasks-store.js.map +1 -0
  834. package/dist/db/management-parse-failures-store.d.ts +45 -0
  835. package/dist/db/management-parse-failures-store.d.ts.map +1 -0
  836. package/dist/db/management-parse-failures-store.js +36 -0
  837. package/dist/db/management-parse-failures-store.js.map +1 -0
  838. package/dist/db/observations.d.ts +145 -0
  839. package/dist/db/observations.d.ts.map +1 -0
  840. package/dist/db/observations.js +287 -0
  841. package/dist/db/observations.js.map +1 -0
  842. package/dist/db/recurring-schedules.d.ts +70 -0
  843. package/dist/db/recurring-schedules.d.ts.map +1 -0
  844. package/dist/db/recurring-schedules.js +213 -0
  845. package/dist/db/recurring-schedules.js.map +1 -0
  846. package/dist/db/repositories-store.d.ts +296 -0
  847. package/dist/db/repositories-store.d.ts.map +1 -0
  848. package/dist/db/repositories-store.js +754 -0
  849. package/dist/db/repositories-store.js.map +1 -0
  850. package/dist/db/runtime-state.d.ts +61 -0
  851. package/dist/db/runtime-state.d.ts.map +1 -0
  852. package/dist/db/runtime-state.js +104 -0
  853. package/dist/db/runtime-state.js.map +1 -0
  854. package/dist/db/schema.d.ts +4 -0
  855. package/dist/db/schema.d.ts.map +1 -0
  856. package/dist/db/schema.js +1338 -0
  857. package/dist/db/schema.js.map +1 -0
  858. package/dist/db/sot-bindings-store.d.ts +41 -0
  859. package/dist/db/sot-bindings-store.d.ts.map +1 -0
  860. package/dist/db/sot-bindings-store.js +64 -0
  861. package/dist/db/sot-bindings-store.js.map +1 -0
  862. package/dist/db/test-schemas.d.ts +23 -0
  863. package/dist/db/test-schemas.d.ts.map +1 -0
  864. package/dist/db/test-schemas.js +111 -0
  865. package/dist/db/test-schemas.js.map +1 -0
  866. package/dist/db/voice-transcripts-store.d.ts +28 -0
  867. package/dist/db/voice-transcripts-store.d.ts.map +1 -0
  868. package/dist/db/voice-transcripts-store.js +43 -0
  869. package/dist/db/voice-transcripts-store.js.map +1 -0
  870. package/dist/index.d.ts +2 -0
  871. package/dist/index.d.ts.map +1 -0
  872. package/dist/index.js +2913 -0
  873. package/dist/index.js.map +1 -0
  874. package/dist/init.d.ts +7 -0
  875. package/dist/init.d.ts.map +1 -0
  876. package/dist/init.js +32 -0
  877. package/dist/init.js.map +1 -0
  878. package/dist/log-buffer.d.ts +71 -0
  879. package/dist/log-buffer.d.ts.map +1 -0
  880. package/dist/log-buffer.js +201 -0
  881. package/dist/log-buffer.js.map +1 -0
  882. package/dist/logging.d.ts +5 -0
  883. package/dist/logging.d.ts.map +1 -0
  884. package/dist/logging.js +130 -0
  885. package/dist/logging.js.map +1 -0
  886. package/dist/management-rules.d.ts +2 -0
  887. package/dist/management-rules.d.ts.map +1 -0
  888. package/dist/management-rules.js +62 -0
  889. package/dist/management-rules.js.map +1 -0
  890. package/dist/messaging/constants.d.ts +33 -0
  891. package/dist/messaging/constants.d.ts.map +1 -0
  892. package/dist/messaging/constants.js +52 -0
  893. package/dist/messaging/constants.js.map +1 -0
  894. package/dist/messaging/magic-phrase.d.ts +16 -0
  895. package/dist/messaging/magic-phrase.d.ts.map +1 -0
  896. package/dist/messaging/magic-phrase.js +103 -0
  897. package/dist/messaging/magic-phrase.js.map +1 -0
  898. package/dist/messaging/owner-channels.d.ts +20 -0
  899. package/dist/messaging/owner-channels.d.ts.map +1 -0
  900. package/dist/messaging/owner-channels.js +41 -0
  901. package/dist/messaging/owner-channels.js.map +1 -0
  902. package/dist/observers/calendar-poller.d.ts +51 -0
  903. package/dist/observers/calendar-poller.d.ts.map +1 -0
  904. package/dist/observers/calendar-poller.js +128 -0
  905. package/dist/observers/calendar-poller.js.map +1 -0
  906. package/dist/observers/context-index-reconciler-observer.d.ts +72 -0
  907. package/dist/observers/context-index-reconciler-observer.d.ts.map +1 -0
  908. package/dist/observers/context-index-reconciler-observer.js +253 -0
  909. package/dist/observers/context-index-reconciler-observer.js.map +1 -0
  910. package/dist/observers/delegated-probe-observer.d.ts +83 -0
  911. package/dist/observers/delegated-probe-observer.d.ts.map +1 -0
  912. package/dist/observers/delegated-probe-observer.js +237 -0
  913. package/dist/observers/delegated-probe-observer.js.map +1 -0
  914. package/dist/observers/delegated-sync-worker.d.ts +375 -0
  915. package/dist/observers/delegated-sync-worker.d.ts.map +1 -0
  916. package/dist/observers/delegated-sync-worker.js +1087 -0
  917. package/dist/observers/delegated-sync-worker.js.map +1 -0
  918. package/dist/observers/entity-mirror-observer.d.ts +55 -0
  919. package/dist/observers/entity-mirror-observer.d.ts.map +1 -0
  920. package/dist/observers/entity-mirror-observer.js +73 -0
  921. package/dist/observers/entity-mirror-observer.js.map +1 -0
  922. package/dist/observers/git-delegated-cron.d.ts +41 -0
  923. package/dist/observers/git-delegated-cron.d.ts.map +1 -0
  924. package/dist/observers/git-delegated-cron.js +159 -0
  925. package/dist/observers/git-delegated-cron.js.map +1 -0
  926. package/dist/observers/git-event-classifier.d.ts +52 -0
  927. package/dist/observers/git-event-classifier.d.ts.map +1 -0
  928. package/dist/observers/git-event-classifier.js +70 -0
  929. package/dist/observers/git-event-classifier.js.map +1 -0
  930. package/dist/observers/git-watcher.d.ts +162 -0
  931. package/dist/observers/git-watcher.d.ts.map +1 -0
  932. package/dist/observers/git-watcher.js +768 -0
  933. package/dist/observers/git-watcher.js.map +1 -0
  934. package/dist/observers/github-poller-classifier.d.ts +101 -0
  935. package/dist/observers/github-poller-classifier.d.ts.map +1 -0
  936. package/dist/observers/github-poller-classifier.js +199 -0
  937. package/dist/observers/github-poller-classifier.js.map +1 -0
  938. package/dist/observers/github-poller.d.ts +291 -0
  939. package/dist/observers/github-poller.d.ts.map +1 -0
  940. package/dist/observers/github-poller.js +609 -0
  941. package/dist/observers/github-poller.js.map +1 -0
  942. package/dist/observers/imminent-event-scheduler.d.ts +34 -0
  943. package/dist/observers/imminent-event-scheduler.d.ts.map +1 -0
  944. package/dist/observers/imminent-event-scheduler.js +125 -0
  945. package/dist/observers/imminent-event-scheduler.js.map +1 -0
  946. package/dist/observers/mail-poller.d.ts +133 -0
  947. package/dist/observers/mail-poller.d.ts.map +1 -0
  948. package/dist/observers/mail-poller.js +563 -0
  949. package/dist/observers/mail-poller.js.map +1 -0
  950. package/dist/observers/mail-reconciliation.d.ts +87 -0
  951. package/dist/observers/mail-reconciliation.d.ts.map +1 -0
  952. package/dist/observers/mail-reconciliation.js +241 -0
  953. package/dist/observers/mail-reconciliation.js.map +1 -0
  954. package/dist/observers/manager.d.ts +67 -0
  955. package/dist/observers/manager.d.ts.map +1 -0
  956. package/dist/observers/manager.js +136 -0
  957. package/dist/observers/manager.js.map +1 -0
  958. package/dist/observers/notion-poller.d.ts +43 -0
  959. package/dist/observers/notion-poller.d.ts.map +1 -0
  960. package/dist/observers/notion-poller.js +184 -0
  961. package/dist/observers/notion-poller.js.map +1 -0
  962. package/dist/observers/observation-summarizer/index.d.ts +13 -0
  963. package/dist/observers/observation-summarizer/index.d.ts.map +1 -0
  964. package/dist/observers/observation-summarizer/index.js +13 -0
  965. package/dist/observers/observation-summarizer/index.js.map +1 -0
  966. package/dist/observers/observation-summarizer/pre-filter.d.ts +62 -0
  967. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +1 -0
  968. package/dist/observers/observation-summarizer/pre-filter.js +189 -0
  969. package/dist/observers/observation-summarizer/pre-filter.js.map +1 -0
  970. package/dist/observers/observation-summarizer/response-parser.d.ts +30 -0
  971. package/dist/observers/observation-summarizer/response-parser.d.ts.map +1 -0
  972. package/dist/observers/observation-summarizer/response-parser.js +106 -0
  973. package/dist/observers/observation-summarizer/response-parser.js.map +1 -0
  974. package/dist/observers/observation-summarizer/summarizer-client.d.ts +83 -0
  975. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +1 -0
  976. package/dist/observers/observation-summarizer/summarizer-client.js +185 -0
  977. package/dist/observers/observation-summarizer/summarizer-client.js.map +1 -0
  978. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +51 -0
  979. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +1 -0
  980. package/dist/observers/observation-summarizer/summarizer-prompts.js +286 -0
  981. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +1 -0
  982. package/dist/observers/observation-summarizer/worker.d.ts +106 -0
  983. package/dist/observers/observation-summarizer/worker.d.ts.map +1 -0
  984. package/dist/observers/observation-summarizer/worker.js +311 -0
  985. package/dist/observers/observation-summarizer/worker.js.map +1 -0
  986. package/dist/observers/obsidian-watcher.d.ts +90 -0
  987. package/dist/observers/obsidian-watcher.d.ts.map +1 -0
  988. package/dist/observers/obsidian-watcher.js +166 -0
  989. package/dist/observers/obsidian-watcher.js.map +1 -0
  990. package/dist/observers/primary-vault-watcher.d.ts +73 -0
  991. package/dist/observers/primary-vault-watcher.d.ts.map +1 -0
  992. package/dist/observers/primary-vault-watcher.js +115 -0
  993. package/dist/observers/primary-vault-watcher.js.map +1 -0
  994. package/dist/observers/repository-management-cron.d.ts +70 -0
  995. package/dist/observers/repository-management-cron.d.ts.map +1 -0
  996. package/dist/observers/repository-management-cron.js +166 -0
  997. package/dist/observers/repository-management-cron.js.map +1 -0
  998. package/dist/observers/skill-curation-walker.d.ts +33 -0
  999. package/dist/observers/skill-curation-walker.d.ts.map +1 -0
  1000. package/dist/observers/skill-curation-walker.js +216 -0
  1001. package/dist/observers/skill-curation-walker.js.map +1 -0
  1002. package/dist/safety/absolute-block-audit.d.ts +22 -0
  1003. package/dist/safety/absolute-block-audit.d.ts.map +1 -0
  1004. package/dist/safety/absolute-block-audit.js +32 -0
  1005. package/dist/safety/absolute-block-audit.js.map +1 -0
  1006. package/dist/safety/agent-write-tracker.d.ts +42 -0
  1007. package/dist/safety/agent-write-tracker.d.ts.map +1 -0
  1008. package/dist/safety/agent-write-tracker.js +82 -0
  1009. package/dist/safety/agent-write-tracker.js.map +1 -0
  1010. package/dist/safety/always-disallowed.d.ts +66 -0
  1011. package/dist/safety/always-disallowed.d.ts.map +1 -0
  1012. package/dist/safety/always-disallowed.js +347 -0
  1013. package/dist/safety/always-disallowed.js.map +1 -0
  1014. package/dist/safety/audit.d.ts +118 -0
  1015. package/dist/safety/audit.d.ts.map +1 -0
  1016. package/dist/safety/audit.js +324 -0
  1017. package/dist/safety/audit.js.map +1 -0
  1018. package/dist/safety/integration-write-tracker.d.ts +58 -0
  1019. package/dist/safety/integration-write-tracker.d.ts.map +1 -0
  1020. package/dist/safety/integration-write-tracker.js +41 -0
  1021. package/dist/safety/integration-write-tracker.js.map +1 -0
  1022. package/dist/safety/risk-classifier.d.ts +65 -0
  1023. package/dist/safety/risk-classifier.d.ts.map +1 -0
  1024. package/dist/safety/risk-classifier.js +763 -0
  1025. package/dist/safety/risk-classifier.js.map +1 -0
  1026. package/dist/scheduler/hourly-check-gate.d.ts +73 -0
  1027. package/dist/scheduler/hourly-check-gate.d.ts.map +1 -0
  1028. package/dist/scheduler/hourly-check-gate.js +128 -0
  1029. package/dist/scheduler/hourly-check-gate.js.map +1 -0
  1030. package/dist/secrets/backend-api-key-env.d.ts +104 -0
  1031. package/dist/secrets/backend-api-key-env.d.ts.map +1 -0
  1032. package/dist/secrets/backend-api-key-env.js +197 -0
  1033. package/dist/secrets/backend-api-key-env.js.map +1 -0
  1034. package/dist/secrets/codex-home-materializer.d.ts +35 -0
  1035. package/dist/secrets/codex-home-materializer.d.ts.map +1 -0
  1036. package/dist/secrets/codex-home-materializer.js +76 -0
  1037. package/dist/secrets/codex-home-materializer.js.map +1 -0
  1038. package/dist/secrets/encrypted-blob-store.d.ts +20 -0
  1039. package/dist/secrets/encrypted-blob-store.d.ts.map +1 -0
  1040. package/dist/secrets/encrypted-blob-store.js +80 -0
  1041. package/dist/secrets/encrypted-blob-store.js.map +1 -0
  1042. package/dist/secrets/platform-secret-store.d.ts +17 -0
  1043. package/dist/secrets/platform-secret-store.d.ts.map +1 -0
  1044. package/dist/secrets/platform-secret-store.js +37 -0
  1045. package/dist/secrets/platform-secret-store.js.map +1 -0
  1046. package/dist/secrets/redaction.d.ts +2 -0
  1047. package/dist/secrets/redaction.d.ts.map +1 -0
  1048. package/dist/secrets/redaction.js +2 -0
  1049. package/dist/secrets/redaction.js.map +1 -0
  1050. package/dist/secrets/secret-broker.d.ts +61 -0
  1051. package/dist/secrets/secret-broker.d.ts.map +1 -0
  1052. package/dist/secrets/secret-broker.js +160 -0
  1053. package/dist/secrets/secret-broker.js.map +1 -0
  1054. package/dist/secrets/secret-names.d.ts +34 -0
  1055. package/dist/secrets/secret-names.d.ts.map +1 -0
  1056. package/dist/secrets/secret-names.js +39 -0
  1057. package/dist/secrets/secret-names.js.map +1 -0
  1058. package/dist/secrets/secret-store.d.ts +8 -0
  1059. package/dist/secrets/secret-store.d.ts.map +1 -0
  1060. package/dist/secrets/secret-store.js +2 -0
  1061. package/dist/secrets/secret-store.js.map +1 -0
  1062. package/dist/secrets/types.d.ts +7 -0
  1063. package/dist/secrets/types.d.ts.map +1 -0
  1064. package/dist/secrets/types.js +2 -0
  1065. package/dist/secrets/types.js.map +1 -0
  1066. package/dist/services/apple-calendar/caldav-client.d.ts +48 -0
  1067. package/dist/services/apple-calendar/caldav-client.d.ts.map +1 -0
  1068. package/dist/services/apple-calendar/caldav-client.js +86 -0
  1069. package/dist/services/apple-calendar/caldav-client.js.map +1 -0
  1070. package/dist/services/apple-calendar/caldav-codec.d.ts +67 -0
  1071. package/dist/services/apple-calendar/caldav-codec.d.ts.map +1 -0
  1072. package/dist/services/apple-calendar/caldav-codec.js +341 -0
  1073. package/dist/services/apple-calendar/caldav-codec.js.map +1 -0
  1074. package/dist/services/apple-calendar/index.d.ts +3 -0
  1075. package/dist/services/apple-calendar/index.d.ts.map +1 -0
  1076. package/dist/services/apple-calendar/index.js +2 -0
  1077. package/dist/services/apple-calendar/index.js.map +1 -0
  1078. package/dist/services/apple-calendar/service.d.ts +75 -0
  1079. package/dist/services/apple-calendar/service.d.ts.map +1 -0
  1080. package/dist/services/apple-calendar/service.js +374 -0
  1081. package/dist/services/apple-calendar/service.js.map +1 -0
  1082. package/dist/services/apple-calendar/types.d.ts +78 -0
  1083. package/dist/services/apple-calendar/types.d.ts.map +1 -0
  1084. package/dist/services/apple-calendar/types.js +17 -0
  1085. package/dist/services/apple-calendar/types.js.map +1 -0
  1086. package/dist/services/attachments/hardlink.d.ts +11 -0
  1087. package/dist/services/attachments/hardlink.d.ts.map +1 -0
  1088. package/dist/services/attachments/hardlink.js +56 -0
  1089. package/dist/services/attachments/hardlink.js.map +1 -0
  1090. package/dist/services/attachments/sanitize.d.ts +21 -0
  1091. package/dist/services/attachments/sanitize.d.ts.map +1 -0
  1092. package/dist/services/attachments/sanitize.js +128 -0
  1093. package/dist/services/attachments/sanitize.js.map +1 -0
  1094. package/dist/services/attachments/store.d.ts +146 -0
  1095. package/dist/services/attachments/store.d.ts.map +1 -0
  1096. package/dist/services/attachments/store.js +477 -0
  1097. package/dist/services/attachments/store.js.map +1 -0
  1098. package/dist/services/calendar/outlook/graph-calendar-client.d.ts +114 -0
  1099. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +1 -0
  1100. package/dist/services/calendar/outlook/graph-calendar-client.js +146 -0
  1101. package/dist/services/calendar/outlook/graph-calendar-client.js.map +1 -0
  1102. package/dist/services/calendar.d.ts +115 -0
  1103. package/dist/services/calendar.d.ts.map +1 -0
  1104. package/dist/services/calendar.js +281 -0
  1105. package/dist/services/calendar.js.map +1 -0
  1106. package/dist/services/delegated-backend-invoker.d.ts +414 -0
  1107. package/dist/services/delegated-backend-invoker.d.ts.map +1 -0
  1108. package/dist/services/delegated-backend-invoker.js +2372 -0
  1109. package/dist/services/delegated-backend-invoker.js.map +1 -0
  1110. package/dist/services/delegated-proxy-config.d.ts +93 -0
  1111. package/dist/services/delegated-proxy-config.d.ts.map +1 -0
  1112. package/dist/services/delegated-proxy-config.js +98 -0
  1113. package/dist/services/delegated-proxy-config.js.map +1 -0
  1114. package/dist/services/delegated-task-result-cache.d.ts +176 -0
  1115. package/dist/services/delegated-task-result-cache.d.ts.map +1 -0
  1116. package/dist/services/delegated-task-result-cache.js +0 -0
  1117. package/dist/services/delegated-task-result-cache.js.map +1 -0
  1118. package/dist/services/delegated-task-runtime.d.ts +346 -0
  1119. package/dist/services/delegated-task-runtime.d.ts.map +1 -0
  1120. package/dist/services/delegated-task-runtime.js +589 -0
  1121. package/dist/services/delegated-task-runtime.js.map +1 -0
  1122. package/dist/services/delegated-task-session-pool.d.ts +182 -0
  1123. package/dist/services/delegated-task-session-pool.d.ts.map +1 -0
  1124. package/dist/services/delegated-task-session-pool.js +292 -0
  1125. package/dist/services/delegated-task-session-pool.js.map +1 -0
  1126. package/dist/services/delegated-tool-runtime.d.ts +50 -0
  1127. package/dist/services/delegated-tool-runtime.d.ts.map +1 -0
  1128. package/dist/services/delegated-tool-runtime.js +120 -0
  1129. package/dist/services/delegated-tool-runtime.js.map +1 -0
  1130. package/dist/services/fts5.d.ts +40 -0
  1131. package/dist/services/fts5.d.ts.map +1 -0
  1132. package/dist/services/fts5.js +54 -0
  1133. package/dist/services/fts5.js.map +1 -0
  1134. package/dist/services/git-account-registry.d.ts +164 -0
  1135. package/dist/services/git-account-registry.d.ts.map +1 -0
  1136. package/dist/services/git-account-registry.js +297 -0
  1137. package/dist/services/git-account-registry.js.map +1 -0
  1138. package/dist/services/github.d.ts +49 -0
  1139. package/dist/services/github.d.ts.map +1 -0
  1140. package/dist/services/github.js +123 -0
  1141. package/dist/services/github.js.map +1 -0
  1142. package/dist/services/gmail-classifier.d.ts +62 -0
  1143. package/dist/services/gmail-classifier.d.ts.map +1 -0
  1144. package/dist/services/gmail-classifier.js +221 -0
  1145. package/dist/services/gmail-classifier.js.map +1 -0
  1146. package/dist/services/gmail.d.ts +192 -0
  1147. package/dist/services/gmail.d.ts.map +1 -0
  1148. package/dist/services/gmail.js +678 -0
  1149. package/dist/services/gmail.js.map +1 -0
  1150. package/dist/services/google-auth.d.ts +16 -0
  1151. package/dist/services/google-auth.d.ts.map +1 -0
  1152. package/dist/services/google-auth.js +37 -0
  1153. package/dist/services/google-auth.js.map +1 -0
  1154. package/dist/services/google-maps.d.ts +35 -0
  1155. package/dist/services/google-maps.d.ts.map +1 -0
  1156. package/dist/services/google-maps.js +82 -0
  1157. package/dist/services/google-maps.js.map +1 -0
  1158. package/dist/services/integrations/extract-write-item-id.d.ts +64 -0
  1159. package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -0
  1160. package/dist/services/integrations/extract-write-item-id.js +188 -0
  1161. package/dist/services/integrations/extract-write-item-id.js.map +1 -0
  1162. package/dist/services/integrations/reconcile.d.ts +136 -0
  1163. package/dist/services/integrations/reconcile.d.ts.map +1 -0
  1164. package/dist/services/integrations/reconcile.js +218 -0
  1165. package/dist/services/integrations/reconcile.js.map +1 -0
  1166. package/dist/services/integrations/snapshot-partitions.d.ts +40 -0
  1167. package/dist/services/integrations/snapshot-partitions.d.ts.map +1 -0
  1168. package/dist/services/integrations/snapshot-partitions.js +113 -0
  1169. package/dist/services/integrations/snapshot-partitions.js.map +1 -0
  1170. package/dist/services/journal/render.d.ts +15 -0
  1171. package/dist/services/journal/render.d.ts.map +1 -0
  1172. package/dist/services/journal/render.js +17 -0
  1173. package/dist/services/journal/render.js.map +1 -0
  1174. package/dist/services/journal/writer.d.ts +26 -0
  1175. package/dist/services/journal/writer.d.ts.map +1 -0
  1176. package/dist/services/journal/writer.js +50 -0
  1177. package/dist/services/journal/writer.js.map +1 -0
  1178. package/dist/services/mail/account-registry.d.ts +208 -0
  1179. package/dist/services/mail/account-registry.d.ts.map +1 -0
  1180. package/dist/services/mail/account-registry.js +554 -0
  1181. package/dist/services/mail/account-registry.js.map +1 -0
  1182. package/dist/services/mail/gmail/auth-failure-classifier.d.ts +24 -0
  1183. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +1 -0
  1184. package/dist/services/mail/gmail/auth-failure-classifier.js +67 -0
  1185. package/dist/services/mail/gmail/auth-failure-classifier.js.map +1 -0
  1186. package/dist/services/mail/gmail/gmail-provider.d.ts +58 -0
  1187. package/dist/services/mail/gmail/gmail-provider.d.ts.map +1 -0
  1188. package/dist/services/mail/gmail/gmail-provider.js +434 -0
  1189. package/dist/services/mail/gmail/gmail-provider.js.map +1 -0
  1190. package/dist/services/mail/gmail/legacy-row.d.ts +24 -0
  1191. package/dist/services/mail/gmail/legacy-row.d.ts.map +1 -0
  1192. package/dist/services/mail/gmail/legacy-row.js +71 -0
  1193. package/dist/services/mail/gmail/legacy-row.js.map +1 -0
  1194. package/dist/services/mail/gmail/poll-cursor.d.ts +12 -0
  1195. package/dist/services/mail/gmail/poll-cursor.d.ts.map +1 -0
  1196. package/dist/services/mail/gmail/poll-cursor.js +32 -0
  1197. package/dist/services/mail/gmail/poll-cursor.js.map +1 -0
  1198. package/dist/services/mail/html-to-plaintext.d.ts +27 -0
  1199. package/dist/services/mail/html-to-plaintext.d.ts.map +1 -0
  1200. package/dist/services/mail/html-to-plaintext.js +163 -0
  1201. package/dist/services/mail/html-to-plaintext.js.map +1 -0
  1202. package/dist/services/mail/imap/app-password.d.ts +27 -0
  1203. package/dist/services/mail/imap/app-password.d.ts.map +1 -0
  1204. package/dist/services/mail/imap/app-password.js +86 -0
  1205. package/dist/services/mail/imap/app-password.js.map +1 -0
  1206. package/dist/services/mail/imap/auth-failure-classifier.d.ts +21 -0
  1207. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +1 -0
  1208. package/dist/services/mail/imap/auth-failure-classifier.js +54 -0
  1209. package/dist/services/mail/imap/auth-failure-classifier.js.map +1 -0
  1210. package/dist/services/mail/imap/capabilities.d.ts +30 -0
  1211. package/dist/services/mail/imap/capabilities.d.ts.map +1 -0
  1212. package/dist/services/mail/imap/capabilities.js +70 -0
  1213. package/dist/services/mail/imap/capabilities.js.map +1 -0
  1214. package/dist/services/mail/imap/client.d.ts +15 -0
  1215. package/dist/services/mail/imap/client.d.ts.map +1 -0
  1216. package/dist/services/mail/imap/client.js +60 -0
  1217. package/dist/services/mail/imap/client.js.map +1 -0
  1218. package/dist/services/mail/imap/cursor.d.ts +19 -0
  1219. package/dist/services/mail/imap/cursor.d.ts.map +1 -0
  1220. package/dist/services/mail/imap/cursor.js +47 -0
  1221. package/dist/services/mail/imap/cursor.js.map +1 -0
  1222. package/dist/services/mail/imap/folder-resolver.d.ts +24 -0
  1223. package/dist/services/mail/imap/folder-resolver.d.ts.map +1 -0
  1224. package/dist/services/mail/imap/folder-resolver.js +58 -0
  1225. package/dist/services/mail/imap/folder-resolver.js.map +1 -0
  1226. package/dist/services/mail/imap/icloud-provider.d.ts +5 -0
  1227. package/dist/services/mail/imap/icloud-provider.d.ts.map +1 -0
  1228. package/dist/services/mail/imap/icloud-provider.js +5 -0
  1229. package/dist/services/mail/imap/icloud-provider.js.map +1 -0
  1230. package/dist/services/mail/imap/imap-provider-base.d.ts +173 -0
  1231. package/dist/services/mail/imap/imap-provider-base.d.ts.map +1 -0
  1232. package/dist/services/mail/imap/imap-provider-base.js +1004 -0
  1233. package/dist/services/mail/imap/imap-provider-base.js.map +1 -0
  1234. package/dist/services/mail/imap/query-translator.d.ts +13 -0
  1235. package/dist/services/mail/imap/query-translator.d.ts.map +1 -0
  1236. package/dist/services/mail/imap/query-translator.js +114 -0
  1237. package/dist/services/mail/imap/query-translator.js.map +1 -0
  1238. package/dist/services/mail/imap/reconcile-planner.d.ts +56 -0
  1239. package/dist/services/mail/imap/reconcile-planner.d.ts.map +1 -0
  1240. package/dist/services/mail/imap/reconcile-planner.js +52 -0
  1241. package/dist/services/mail/imap/reconcile-planner.js.map +1 -0
  1242. package/dist/services/mail/imap/reply-mime.d.ts +24 -0
  1243. package/dist/services/mail/imap/reply-mime.d.ts.map +1 -0
  1244. package/dist/services/mail/imap/reply-mime.js +77 -0
  1245. package/dist/services/mail/imap/reply-mime.js.map +1 -0
  1246. package/dist/services/mail/imap/yahoo-provider.d.ts +5 -0
  1247. package/dist/services/mail/imap/yahoo-provider.d.ts.map +1 -0
  1248. package/dist/services/mail/imap/yahoo-provider.js +5 -0
  1249. package/dist/services/mail/imap/yahoo-provider.js.map +1 -0
  1250. package/dist/services/mail/mail-search.d.ts +35 -0
  1251. package/dist/services/mail/mail-search.d.ts.map +1 -0
  1252. package/dist/services/mail/mail-search.js +59 -0
  1253. package/dist/services/mail/mail-search.js.map +1 -0
  1254. package/dist/services/mail/outlook/auth-failure-classifier.d.ts +38 -0
  1255. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +1 -0
  1256. package/dist/services/mail/outlook/auth-failure-classifier.js +91 -0
  1257. package/dist/services/mail/outlook/auth-failure-classifier.js.map +1 -0
  1258. package/dist/services/mail/outlook/client-config.d.ts +34 -0
  1259. package/dist/services/mail/outlook/client-config.d.ts.map +1 -0
  1260. package/dist/services/mail/outlook/client-config.js +58 -0
  1261. package/dist/services/mail/outlook/client-config.js.map +1 -0
  1262. package/dist/services/mail/outlook/delta-cursor.d.ts +66 -0
  1263. package/dist/services/mail/outlook/delta-cursor.d.ts.map +1 -0
  1264. package/dist/services/mail/outlook/delta-cursor.js +85 -0
  1265. package/dist/services/mail/outlook/delta-cursor.js.map +1 -0
  1266. package/dist/services/mail/outlook/graph-client.d.ts +98 -0
  1267. package/dist/services/mail/outlook/graph-client.d.ts.map +1 -0
  1268. package/dist/services/mail/outlook/graph-client.js +198 -0
  1269. package/dist/services/mail/outlook/graph-client.js.map +1 -0
  1270. package/dist/services/mail/outlook/msal-app-factory.d.ts +20 -0
  1271. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +1 -0
  1272. package/dist/services/mail/outlook/msal-app-factory.js +62 -0
  1273. package/dist/services/mail/outlook/msal-app-factory.js.map +1 -0
  1274. package/dist/services/mail/outlook/msal-cache-plugin.d.ts +19 -0
  1275. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +1 -0
  1276. package/dist/services/mail/outlook/msal-cache-plugin.js +30 -0
  1277. package/dist/services/mail/outlook/msal-cache-plugin.js.map +1 -0
  1278. package/dist/services/mail/outlook/oauth-device-code.d.ts +26 -0
  1279. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +1 -0
  1280. package/dist/services/mail/outlook/oauth-device-code.js +32 -0
  1281. package/dist/services/mail/outlook/oauth-device-code.js.map +1 -0
  1282. package/dist/services/mail/outlook/oauth-loopback.d.ts +41 -0
  1283. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +1 -0
  1284. package/dist/services/mail/outlook/oauth-loopback.js +223 -0
  1285. package/dist/services/mail/outlook/oauth-loopback.js.map +1 -0
  1286. package/dist/services/mail/outlook/outlook-provider.d.ts +100 -0
  1287. package/dist/services/mail/outlook/outlook-provider.d.ts.map +1 -0
  1288. package/dist/services/mail/outlook/outlook-provider.js +619 -0
  1289. package/dist/services/mail/outlook/outlook-provider.js.map +1 -0
  1290. package/dist/services/mail/outlook/query-translator.d.ts +10 -0
  1291. package/dist/services/mail/outlook/query-translator.d.ts.map +1 -0
  1292. package/dist/services/mail/outlook/query-translator.js +103 -0
  1293. package/dist/services/mail/outlook/query-translator.js.map +1 -0
  1294. package/dist/services/mail/provider.d.ts +267 -0
  1295. package/dist/services/mail/provider.d.ts.map +1 -0
  1296. package/dist/services/mail/provider.js +34 -0
  1297. package/dist/services/mail/provider.js.map +1 -0
  1298. package/dist/services/mail/query-utils.d.ts +13 -0
  1299. package/dist/services/mail/query-utils.d.ts.map +1 -0
  1300. package/dist/services/mail/query-utils.js +18 -0
  1301. package/dist/services/mail/query-utils.js.map +1 -0
  1302. package/dist/services/mail-classifier.d.ts +25 -0
  1303. package/dist/services/mail-classifier.d.ts.map +1 -0
  1304. package/dist/services/mail-classifier.js +52 -0
  1305. package/dist/services/mail-classifier.js.map +1 -0
  1306. package/dist/services/mail-ingestion.d.ts +139 -0
  1307. package/dist/services/mail-ingestion.d.ts.map +1 -0
  1308. package/dist/services/mail-ingestion.js +223 -0
  1309. package/dist/services/mail-ingestion.js.map +1 -0
  1310. package/dist/services/mcp/auto-probe.d.ts +76 -0
  1311. package/dist/services/mcp/auto-probe.d.ts.map +1 -0
  1312. package/dist/services/mcp/auto-probe.js +147 -0
  1313. package/dist/services/mcp/auto-probe.js.map +1 -0
  1314. package/dist/services/mcp/generators/claude.d.ts +18 -0
  1315. package/dist/services/mcp/generators/claude.d.ts.map +1 -0
  1316. package/dist/services/mcp/generators/claude.js +90 -0
  1317. package/dist/services/mcp/generators/claude.js.map +1 -0
  1318. package/dist/services/mcp/generators/codex.d.ts +22 -0
  1319. package/dist/services/mcp/generators/codex.d.ts.map +1 -0
  1320. package/dist/services/mcp/generators/codex.js +102 -0
  1321. package/dist/services/mcp/generators/codex.js.map +1 -0
  1322. package/dist/services/mcp/generators/gemini.d.ts +20 -0
  1323. package/dist/services/mcp/generators/gemini.d.ts.map +1 -0
  1324. package/dist/services/mcp/generators/gemini.js +97 -0
  1325. package/dist/services/mcp/generators/gemini.js.map +1 -0
  1326. package/dist/services/mcp/generators/index.d.ts +20 -0
  1327. package/dist/services/mcp/generators/index.d.ts.map +1 -0
  1328. package/dist/services/mcp/generators/index.js +29 -0
  1329. package/dist/services/mcp/generators/index.js.map +1 -0
  1330. package/dist/services/mcp/generators/types.d.ts +47 -0
  1331. package/dist/services/mcp/generators/types.d.ts.map +1 -0
  1332. package/dist/services/mcp/generators/types.js +40 -0
  1333. package/dist/services/mcp/generators/types.js.map +1 -0
  1334. package/dist/services/mcp/probe.d.ts +31 -0
  1335. package/dist/services/mcp/probe.d.ts.map +1 -0
  1336. package/dist/services/mcp/probe.js +437 -0
  1337. package/dist/services/mcp/probe.js.map +1 -0
  1338. package/dist/services/mcp/registry.d.ts +84 -0
  1339. package/dist/services/mcp/registry.d.ts.map +1 -0
  1340. package/dist/services/mcp/registry.js +387 -0
  1341. package/dist/services/mcp/registry.js.map +1 -0
  1342. package/dist/services/mcp/risk.d.ts +82 -0
  1343. package/dist/services/mcp/risk.d.ts.map +1 -0
  1344. package/dist/services/mcp/risk.js +126 -0
  1345. package/dist/services/mcp/risk.js.map +1 -0
  1346. package/dist/services/mcp/session-materializer.d.ts +123 -0
  1347. package/dist/services/mcp/session-materializer.d.ts.map +1 -0
  1348. package/dist/services/mcp/session-materializer.js +361 -0
  1349. package/dist/services/mcp/session-materializer.js.map +1 -0
  1350. package/dist/services/mcp/tool-audit.d.ts +53 -0
  1351. package/dist/services/mcp/tool-audit.d.ts.map +1 -0
  1352. package/dist/services/mcp/tool-audit.js +74 -0
  1353. package/dist/services/mcp/tool-audit.js.map +1 -0
  1354. package/dist/services/mcp/types.d.ts +88 -0
  1355. package/dist/services/mcp/types.d.ts.map +1 -0
  1356. package/dist/services/mcp/types.js +94 -0
  1357. package/dist/services/mcp/types.js.map +1 -0
  1358. package/dist/services/notion.d.ts +134 -0
  1359. package/dist/services/notion.d.ts.map +1 -0
  1360. package/dist/services/notion.js +350 -0
  1361. package/dist/services/notion.js.map +1 -0
  1362. package/dist/services/obsidian.d.ts +116 -0
  1363. package/dist/services/obsidian.d.ts.map +1 -0
  1364. package/dist/services/obsidian.js +305 -0
  1365. package/dist/services/obsidian.js.map +1 -0
  1366. package/dist/services/service-registry.d.ts +31 -0
  1367. package/dist/services/service-registry.d.ts.map +1 -0
  1368. package/dist/services/service-registry.js +15 -0
  1369. package/dist/services/service-registry.js.map +1 -0
  1370. package/dist/services/voice/transcriber-impl.d.ts +15 -0
  1371. package/dist/services/voice/transcriber-impl.d.ts.map +1 -0
  1372. package/dist/services/voice/transcriber-impl.js +129 -0
  1373. package/dist/services/voice/transcriber-impl.js.map +1 -0
  1374. package/dist/services/voice/transcriber.d.ts +117 -0
  1375. package/dist/services/voice/transcriber.d.ts.map +1 -0
  1376. package/dist/services/voice/transcriber.js +201 -0
  1377. package/dist/services/voice/transcriber.js.map +1 -0
  1378. package/dist/settings/runtime-settings.d.ts +232 -0
  1379. package/dist/settings/runtime-settings.d.ts.map +1 -0
  1380. package/dist/settings/runtime-settings.js +769 -0
  1381. package/dist/settings/runtime-settings.js.map +1 -0
  1382. package/dist/settings/settings-store.d.ts +13 -0
  1383. package/dist/settings/settings-store.d.ts.map +1 -0
  1384. package/dist/settings/settings-store.js +87 -0
  1385. package/dist/settings/settings-store.js.map +1 -0
  1386. package/package.json +85 -0
@@ -0,0 +1,1087 @@
1
+ import { INTEGRATION_DESCRIPTORS, INTEGRATION_WRITE_TTL_MS, getSnapshotNormalizer, nextActiveHoursStart, nowInTimezone, } from "@aitne/shared";
2
+ import { applyDriftEffects, emptyDriftSideEffects, } from "../core/drift-effects.js";
3
+ import { reconcile, } from "../services/integrations/reconcile.js";
4
+ import { defaultModelForTier } from "../core/backends/model-registry.js";
5
+ import { readIntegrations } from "../db/integrations-store.js";
6
+ import { readRuntimeState } from "../db/runtime-state.js";
7
+ import { createLogger } from "../logging.js";
8
+ const logger = createLogger("delegated-sync-worker");
9
+ export const DELEGATED_SYNC_OBSERVER_NAME = "delegated-sync";
10
+ export const DELEGATED_SYNC_PROCESS_KEY = "integration_drift_sync";
11
+ const RUNTIME_CONFIG_KEY = "delegatedSync";
12
+ const DEFAULT_TICK_INTERVAL_SECONDS = 60;
13
+ const DEFAULT_MIN_INTERVAL_SECONDS = 60;
14
+ const CIRCUIT_FAILURE_THRESHOLD = 5;
15
+ const CIRCUIT_BACKOFF_MULTIPLIER = 4;
16
+ /**
17
+ * Default active-hours window for delegated-sync cadences. Mirrors Hourly
18
+ * Check defaults (`hourlyCheckActiveStartHour=4`, `hourlyCheckActiveEndHour=24`)
19
+ * so the two schedules align unless an operator overrides one or the other.
20
+ * See `docs/design/appendices/delegated-sync-opt-in.md`.
21
+ *
22
+ * `endHour` is exclusive: `[start, end)`. `end=24` means "up to but not
23
+ * including 24:00", i.e. the window covers 23:59:59.
24
+ */
25
+ const DEFAULT_ACTIVE_START_HOUR = 4;
26
+ const DEFAULT_ACTIVE_END_HOUR = 24;
27
+ /**
28
+ * Per-cadence retry policy for transient subprocess-side failures.
29
+ *
30
+ * Why retry only here: cadence-driven calls (`integration_drift_sync`)
31
+ * are async, idempotent reads — there is no API caller waiting on the
32
+ * outcome, and the connector tools used by cadences (calendar listEvents,
33
+ * gmail search_threads, notion search) are read-only by construction.
34
+ * Retrying is safe.
35
+ *
36
+ * Contrast with the synchronous proxy path (skill code in a Claude Code
37
+ * / Codex / Gemini session calling `POST /api/delegated/run`): there the
38
+ * tool may be write-class (gmail send, calendar updateEvent), and the
39
+ * caller has its own deadline budget. The invoker layer must NOT retry
40
+ * automatically — this module is the only legitimate place for retry.
41
+ *
42
+ * Retryable errorClasses are limited to subprocess-side transients —
43
+ * `timeout` (idle watchdog or wall-clock fired), `subprocess_crashed`
44
+ * (exit before paired tool_result), and `tool_not_registered` (Gemini
45
+ * CLI's MCP tool registry hadn't fully populated when the model's
46
+ * tool_use was dispatched — observed when the cadence's first tick
47
+ * fires immediately after an integration switches to `delegated` and
48
+ * the host extension's MCP server is still completing its handshake).
49
+ * Auth / parse / wrong_tool / tool_error are deterministic; retrying
50
+ * them would loop without changing outcome.
51
+ *
52
+ * MAX_RETRY_ATTEMPTS=1 (so total = 2 attempts) keeps the per-cadence
53
+ * worst case inside ~2× the per-call ceiling: 75 s gemini idle + 1.5 s
54
+ * delay + 75 s gemini idle ≈ 152 s. The cadence-tick mutex (`tickRunning`)
55
+ * skips overlapping ticks during this window, but the next-cadence
56
+ * (10–60 min interval) is unaffected.
57
+ */
58
+ const RETRY_DELAY_MS = 1500;
59
+ const MAX_RETRY_ATTEMPTS = 1;
60
+ const RETRYABLE_ERROR_CLASSES = new Set([
61
+ "timeout",
62
+ "subprocess_crashed",
63
+ "tool_not_registered",
64
+ ]);
65
+ function sleep(ms) {
66
+ return new Promise((resolve) => setTimeout(resolve, ms));
67
+ }
68
+ const CALENDAR_IMMINENT_CADENCE = {
69
+ integration: "google_calendar",
70
+ windowKey: "primary:imminent",
71
+ displayName: "Calendar — imminent (next 1 h)",
72
+ description: "Polls upcoming events in the next hour. Required for the 15-min-before-meeting reminder while calendar is in delegated mode.",
73
+ defaultIntervalSeconds: 10 * 60,
74
+ softFloorSeconds: 5 * 60,
75
+ maxResults: 50,
76
+ buildWindow: (now) => ({
77
+ windowMin: new Date(now.getTime() - 15 * 60 * 1000).toISOString(),
78
+ windowMax: new Date(now.getTime() + 60 * 60 * 1000).toISOString(),
79
+ }),
80
+ buildToolCall: (backendId, ctx) => ({
81
+ toolName: namespacedTool("google_calendar", backendId, calendarListBareTool(backendId)),
82
+ toolArgs: {
83
+ calendarId: ctx.calendarId,
84
+ timeMin: ctx.windowMin,
85
+ timeMax: ctx.windowMax,
86
+ maxResults: ctx.maxResults,
87
+ },
88
+ }),
89
+ extractItems: (toolResult) => extractItemsByKeys(toolResult, CALENDAR_ITEM_KEYS),
90
+ };
91
+ const CALENDAR_24H_CADENCE = {
92
+ integration: "google_calendar",
93
+ windowKey: "primary:24h",
94
+ displayName: "Calendar — day-ahead (next 24 h)",
95
+ description: "Polls the next 24 hours of events. Feeds far-future roadmap-refresh detection.",
96
+ defaultIntervalSeconds: 60 * 60,
97
+ softFloorSeconds: 30 * 60,
98
+ maxResults: 250,
99
+ buildWindow: (now) => ({
100
+ windowMin: now.toISOString(),
101
+ windowMax: new Date(now.getTime() + 24 * 60 * 60 * 1000).toISOString(),
102
+ }),
103
+ buildToolCall: CALENDAR_IMMINENT_CADENCE.buildToolCall,
104
+ extractItems: CALENDAR_IMMINENT_CADENCE.extractItems,
105
+ };
106
+ /**
107
+ * Gmail `inbox:7d` cadence. Plan §8.2 / §8.3:
108
+ * - Default 30 min, soft floor 15 min — gmail polls less often than
109
+ * calendar so the operator-tunable cost stays bounded.
110
+ * - Window is the last 7 days. Reconcile keys by `(integration,
111
+ * window_key)` so the partition is wide enough that a recent thread
112
+ * with a fresh reply doesn't drop out and falsely emit `deleted`. The
113
+ * LLM hourly check still post-filters to "last hour" inside its own
114
+ * decision flow; this cadence's job is structural diff, not selection.
115
+ * - `query="newer_than:7d"` Gmail search operator. `pageSize` /
116
+ * `max_results` / `maxResults` differs by backend (Claude / Codex /
117
+ * Gemini) — `gmailSearchToolCall` per-backend wraps the arg shape.
118
+ */
119
+ const GMAIL_INBOX_7D_CADENCE = {
120
+ integration: "gmail",
121
+ windowKey: "inbox:7d",
122
+ displayName: "Gmail — inbox (last 7 days)",
123
+ description: "Polls thread-level changes in the last 7 days of inbox. Surfaces new threads and replies for the hourly check.",
124
+ defaultIntervalSeconds: 30 * 60,
125
+ softFloorSeconds: 15 * 60,
126
+ maxResults: 25,
127
+ buildWindow: (now) => ({
128
+ windowMin: new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000).toISOString(),
129
+ // §5.1 sliding-window: a small forward buffer past `now` keeps a
130
+ // message whose `internalDate` is exactly `now` from being classified
131
+ // as out-of-window on the next reconcile.
132
+ windowMax: new Date(now.getTime() + 60 * 1000).toISOString(),
133
+ }),
134
+ buildToolCall: gmailSearchToolCall,
135
+ extractItems: (toolResult) => extractItemsByKeys(toolResult, GMAIL_ITEM_KEYS),
136
+ };
137
+ /**
138
+ * Notion `recently_updated` cadence. Plan §8.2 / §8.3:
139
+ * - Default 60 min, soft floor 30 min.
140
+ * - Notion search has no `last_edited_time` filter (per the hourly
141
+ * check's existing footnote on coverage gaps); the cadence pulls a
142
+ * `created_date_range` window of the last 7 days as a coarse anchor
143
+ * and lets reconcile + the per-page `lastEditedTime` payload + the
144
+ * Notion normalizer's `inWindow` predicate sort out true churn.
145
+ * - The window's `created_date_range.start_date` arg is per the same
146
+ * date format the hourly_check prompt uses (`YYYY-MM-DD`), to mirror
147
+ * what the LLM-driven path was already producing — connectors uniformly
148
+ * accept that.
149
+ */
150
+ const NOTION_RECENTLY_UPDATED_CADENCE = {
151
+ integration: "notion",
152
+ windowKey: "recently_updated",
153
+ displayName: "Notion — recently updated",
154
+ description: "Polls pages updated in the last 7 days. Coarse window; per-page lastEditedTime filters in reconcile.",
155
+ defaultIntervalSeconds: 60 * 60,
156
+ softFloorSeconds: 30 * 60,
157
+ maxResults: 25,
158
+ buildWindow: (now) => ({
159
+ windowMin: new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000).toISOString(),
160
+ windowMax: new Date(now.getTime() + 60 * 1000).toISOString(),
161
+ }),
162
+ buildToolCall: notionSearchToolCall,
163
+ extractItems: (toolResult) => extractItemsByKeys(toolResult, NOTION_ITEM_KEYS),
164
+ };
165
+ const DEFAULT_CADENCES = [
166
+ CALENDAR_IMMINENT_CADENCE,
167
+ CALENDAR_24H_CADENCE,
168
+ GMAIL_INBOX_7D_CADENCE,
169
+ NOTION_RECENTLY_UPDATED_CADENCE,
170
+ ];
171
+ const DEFAULT_CADENCE_INTEGRATIONS = new Set(DEFAULT_CADENCES.map((def) => def.integration));
172
+ export function hasActiveDelegatedSyncIntegration(db, override) {
173
+ const integrations = readIntegrations(db);
174
+ if (override)
175
+ integrations[override.key] = override.state;
176
+ return Object.entries(integrations).some(([key, state]) => DEFAULT_CADENCE_INTEGRATIONS.has(key)
177
+ && state.mode === "delegated"
178
+ && state.delegatedSyncEnabled !== false);
179
+ }
180
+ export class DelegatedSyncWorker {
181
+ options;
182
+ name = DELEGATED_SYNC_OBSERVER_NAME;
183
+ timer = null;
184
+ tickRunning = false;
185
+ tickIntervalSeconds;
186
+ now;
187
+ cadences;
188
+ states = new Map();
189
+ constructor(options) {
190
+ this.options = options;
191
+ this.tickIntervalSeconds =
192
+ options.tickIntervalSeconds ?? DEFAULT_TICK_INTERVAL_SECONDS;
193
+ this.now = options.now ?? (() => new Date());
194
+ this.cadences = options.cadences ?? DEFAULT_CADENCES;
195
+ }
196
+ async start() {
197
+ if (this.timer)
198
+ return;
199
+ // Register the interval before awaiting the initial tick. Two reasons:
200
+ // 1. A second concurrent `start()` call hits `if (this.timer) return`
201
+ // immediately instead of falling through and double-registering.
202
+ // 2. If the initial tick throws (e.g. transient DB error during boot),
203
+ // subsequent scheduled ticks still fire and recover state, instead
204
+ // of leaving the worker permanently silent.
205
+ this.timer = setInterval(() => void this.tick(), this.tickIntervalSeconds * 1000);
206
+ this.timer.unref?.();
207
+ // Phase 7 (h): seed per-cadence state from the most recent successful
208
+ // delegated_sync row in agent_actions before the first tick. Daemon
209
+ // restarts no longer re-spawn every cadence's subprocess when a sync
210
+ // ran shortly before the restart; the natural cadenceDue check picks
211
+ // up where the last process left off. When no history exists (fresh
212
+ // install or retention-pruned table), states stay null and the first
213
+ // tick fires for every cadence — same effect as the prior force-on-
214
+ // start behaviour, achieved without redundant spawns.
215
+ this.hydrateStateFromHistory();
216
+ this.warnOnConfigViolations();
217
+ try {
218
+ await this.tick();
219
+ }
220
+ catch (err) {
221
+ logger.warn({ err }, "Initial delegated sync tick failed; cadence-driven retries will continue");
222
+ }
223
+ logger.info({ tickIntervalSeconds: this.tickIntervalSeconds }, "Delegated sync worker started");
224
+ }
225
+ async stop() {
226
+ if (this.timer) {
227
+ clearInterval(this.timer);
228
+ this.timer = null;
229
+ }
230
+ logger.info("Delegated sync worker stopped");
231
+ }
232
+ async tick(options = {}) {
233
+ if (this.tickRunning) {
234
+ logger.debug("Delegated sync tick already running — skipping overlap");
235
+ return;
236
+ }
237
+ this.tickRunning = true;
238
+ try {
239
+ await this.runTick(options.force === true);
240
+ }
241
+ finally {
242
+ this.tickRunning = false;
243
+ }
244
+ }
245
+ getStatus(now = this.now()) {
246
+ const runtimeConfig = this.readRuntimeConfig();
247
+ // Resolved up front because per-cadence `nextRunAt` projects past
248
+ // out-of-window candidates to the next active-hours start.
249
+ const activeHours = resolveActiveHours(runtimeConfig);
250
+ const cadences = {};
251
+ const ttlContractViolations = [];
252
+ let lastSuccessAt = null;
253
+ let anyTripped = false;
254
+ for (const def of this.cadences) {
255
+ const id = cadenceId(def);
256
+ const state = this.getState(id);
257
+ const intervalSeconds = this.resolveIntervalSeconds(def, runtimeConfig);
258
+ const effectiveIntervalSeconds = computeEffectiveIntervalSeconds(intervalSeconds, state.failureCount);
259
+ const circuitState = state.failureCount >= CIRCUIT_FAILURE_THRESHOLD
260
+ ? "tripped"
261
+ : "ok";
262
+ if (circuitState === "tripped")
263
+ anyTripped = true;
264
+ if (state.lastSuccessAt
265
+ && (lastSuccessAt === null || state.lastSuccessAt > lastSuccessAt)) {
266
+ lastSuccessAt = state.lastSuccessAt;
267
+ }
268
+ cadences[id] = {
269
+ integration: def.integration,
270
+ windowKey: def.windowKey,
271
+ enabled: isCadenceEnabled(def, runtimeConfig),
272
+ displayName: def.displayName,
273
+ description: def.description,
274
+ defaultIntervalSeconds: def.defaultIntervalSeconds,
275
+ softFloorSeconds: def.softFloorSeconds,
276
+ intervalSeconds,
277
+ effectiveIntervalSeconds,
278
+ circuitState,
279
+ failureCount: state.failureCount,
280
+ lastAttemptAt: state.lastAttemptAt,
281
+ lastSuccessAt: state.lastSuccessAt,
282
+ lastCompletedAt: state.lastCompletedAt,
283
+ lastError: state.lastError,
284
+ nextRunAt: nextRunAt(state, effectiveIntervalSeconds, now, this.options.timezone, activeHours),
285
+ };
286
+ const ttlMs = INTEGRATION_WRITE_TTL_MS[def.integration];
287
+ const ttlSeconds = Math.floor(ttlMs / 1000);
288
+ if (intervalSeconds * TTL_CONTRACT_RATIO > ttlSeconds) {
289
+ ttlContractViolations.push({
290
+ cadenceId: id,
291
+ intervalSeconds,
292
+ ttlSeconds,
293
+ });
294
+ }
295
+ }
296
+ return {
297
+ workerRunning: this.timer !== null,
298
+ lastSuccessAt,
299
+ circuitState: anyTripped ? "tripped" : "ok",
300
+ activeHours,
301
+ withinActiveHours: isWithinActiveHours(now, this.options.timezone, activeHours),
302
+ cadences,
303
+ unrecognizedIntervalKeys: collectUnrecognizedIntervalKeys(this.cadences, runtimeConfig),
304
+ ttlContractViolations,
305
+ };
306
+ }
307
+ /**
308
+ * Hourly-check-driven refresh: fires any cadence whose integration is in
309
+ * delegated mode but whose per-cadence opt-in flag (`cadenceEnabled[id]`)
310
+ * is NOT `true`. Cadences the operator opted in run on their own
311
+ * user-set interval via the regular tick loop and are intentionally
312
+ * skipped here so we don't spend tokens twice for the same partition.
313
+ *
314
+ * Why this exists: when every cadence is disabled (the post-Phase-9
315
+ * default), Gmail / Notion observations would otherwise dry up entirely
316
+ * — the delegated `routine.hourly_check` task flow's Step 0a / 0c rely
317
+ * on `mail:lifecycle` / `notion:<db>` rows the worker writes server-
318
+ * side, and the agent prompt is explicitly told NOT to call the
319
+ * gmail / notion `/reconcile` route directly (would poison the worker's
320
+ * 7 d partition with a narrow window). This method makes the hourly
321
+ * check itself the producer for those partitions when the user has not
322
+ * opted into a per-cadence schedule.
323
+ *
324
+ * Active-hours are NOT consulted: this method runs only because the
325
+ * hourly check itself fired, which already passed `hourlyCheckActive*`
326
+ * gating. The cadence-side `activeStartHour` / `activeEndHour` window
327
+ * applies only to the worker's own 60 s tick.
328
+ *
329
+ * Cadences run in parallel — they target independent integrations and
330
+ * connector subprocesses, so wall-clock latency is bounded by the
331
+ * slowest single cadence rather than the sum. Serialised through the
332
+ * `tickRunning` mutex so the regular timer tick or a dashboard Run-Now
333
+ * click landing simultaneously doesn't double-spawn the same connector.
334
+ * Failures are caught per-cadence inside `runCadence` (failureCount /
335
+ * circuit-breaker) and surfaced through the next `getStatus()` snapshot;
336
+ * this method does not throw.
337
+ */
338
+ async runDisabledCadencesForHourlyCheck() {
339
+ if (this.tickRunning) {
340
+ logger.debug("Skipping hourly-check delegated refresh — worker tick already in flight");
341
+ return;
342
+ }
343
+ this.tickRunning = true;
344
+ try {
345
+ const integrations = readIntegrations(this.options.db);
346
+ const runtimeConfig = this.readRuntimeConfig();
347
+ const tasks = [];
348
+ for (const def of this.cadences) {
349
+ const integrationState = integrations[def.integration];
350
+ if (integrationState.mode !== "delegated"
351
+ || !integrationState.delegatedBackend
352
+ || integrationState.delegatedSyncEnabled === false) {
353
+ continue;
354
+ }
355
+ // Skip cadences the operator opted in — the regular tick handles
356
+ // those on the user-set interval. The whole point of this method
357
+ // is to cover the opt-OUT case.
358
+ if (isCadenceEnabled(def, runtimeConfig))
359
+ continue;
360
+ const normalizer = getSnapshotNormalizer(def.integration);
361
+ /* c8 ignore next 2 — defensive against descriptor-before-normalizer drift. */
362
+ if (!normalizer)
363
+ continue;
364
+ tasks.push(this.runCadence(def, normalizer, integrationState.delegatedBackend));
365
+ }
366
+ if (tasks.length === 0)
367
+ return;
368
+ // `runCadence` swallows its own errors; `allSettled` keeps a future
369
+ // refactor that lets it throw from poisoning the rest of the batch.
370
+ await Promise.allSettled(tasks);
371
+ }
372
+ finally {
373
+ this.tickRunning = false;
374
+ }
375
+ }
376
+ /**
377
+ * Run a single cadence on demand (dashboard "Run Now" button). Bypasses
378
+ * `cadenceEnabled`, `cadenceDue`, and active-hours gating — the user
379
+ * explicitly asked for one-shot execution. The integration master switch
380
+ * (`delegatedSyncEnabled === false`) is still honoured because that's a
381
+ * kill switch, not a schedule.
382
+ *
383
+ * Serialised through `tickRunning` so a Run-Now click during the 60 s
384
+ * scheduled tick window doesn't double-spawn the same connector
385
+ * subprocess. Returns a structured failure code rather than throwing so
386
+ * the dashboard can render the four known reasons cleanly.
387
+ */
388
+ async runCadenceNow(cadenceIdInput) {
389
+ const def = this.cadences.find((d) => cadenceId(d) === cadenceIdInput);
390
+ if (!def)
391
+ return { ok: false, error: "unknown_cadence" };
392
+ if (this.tickRunning)
393
+ return { ok: false, error: "tick_in_progress" };
394
+ const integrations = readIntegrations(this.options.db);
395
+ const integrationState = integrations[def.integration];
396
+ if (integrationState.mode !== "delegated"
397
+ || !integrationState.delegatedBackend) {
398
+ return { ok: false, error: "integration_not_delegated" };
399
+ }
400
+ if (integrationState.delegatedSyncEnabled === false) {
401
+ return { ok: false, error: "integration_disabled" };
402
+ }
403
+ const normalizer = getSnapshotNormalizer(def.integration);
404
+ /* c8 ignore start — every shipped integration registers a normalizer;
405
+ * defensive against future descriptor-before-normalizer drift. */
406
+ if (!normalizer)
407
+ return { ok: false, error: "integration_not_delegated" };
408
+ /* c8 ignore stop */
409
+ this.tickRunning = true;
410
+ try {
411
+ await this.runCadence(def, normalizer, integrationState.delegatedBackend);
412
+ return { ok: true };
413
+ }
414
+ finally {
415
+ this.tickRunning = false;
416
+ }
417
+ }
418
+ async runTick(force) {
419
+ const integrations = readIntegrations(this.options.db);
420
+ const runtimeConfig = this.readRuntimeConfig();
421
+ const now = this.now();
422
+ // Active-hours gate (delegated-sync-opt-in.md). Outside the window the
423
+ // entire tick is skipped; cadences don't accrue failureCount or move
424
+ // their lastAttemptAt clock. `force=true` (test fixtures, future
425
+ // batch-run paths) bypasses time gating; `runCadenceNow` has its own
426
+ // bypass via the run-once code path above.
427
+ if (!force) {
428
+ const activeHours = resolveActiveHours(runtimeConfig);
429
+ if (!isWithinActiveHours(now, this.options.timezone, activeHours)) {
430
+ return;
431
+ }
432
+ }
433
+ for (const def of this.cadences) {
434
+ const integrationState = integrations[def.integration];
435
+ if (integrationState.mode !== "delegated"
436
+ || !integrationState.delegatedBackend
437
+ || integrationState.delegatedSyncEnabled === false) {
438
+ continue;
439
+ }
440
+ // Per-cadence opt-in (default false). `force=true` bypasses so the
441
+ // existing test fixtures and any future "run all due cadences now"
442
+ // call stay simple. The integration master switch above is the kill
443
+ // switch and is honoured even under `force=true`.
444
+ if (!force && !isCadenceEnabled(def, runtimeConfig))
445
+ continue;
446
+ const normalizer = getSnapshotNormalizer(def.integration);
447
+ // Defensive: every IntegrationKey ships a normalizer after Phase 5.
448
+ // The branch survives so a future integration whose connector
449
+ // wiring lands before its normalizer doesn't crash the worker; the
450
+ // cadence is silently skipped instead.
451
+ /* c8 ignore start */
452
+ if (!normalizer) {
453
+ logger.debug({ integration: def.integration, windowKey: def.windowKey }, "Skipping delegated sync cadence without a snapshot normalizer");
454
+ continue;
455
+ }
456
+ /* c8 ignore stop */
457
+ const id = cadenceId(def);
458
+ const state = this.getState(id);
459
+ const intervalSeconds = this.resolveIntervalSeconds(def, runtimeConfig);
460
+ const effectiveSeconds = computeEffectiveIntervalSeconds(intervalSeconds, state.failureCount);
461
+ if (!force && !cadenceDue(state, effectiveSeconds, now))
462
+ continue;
463
+ await this.runCadence(def, normalizer, integrationState.delegatedBackend);
464
+ }
465
+ }
466
+ async runCadence(def, normalizer, backendId) {
467
+ const id = cadenceId(def);
468
+ const state = this.getState(id);
469
+ const startedAt = this.now();
470
+ state.lastAttemptAt = startedAt.toISOString();
471
+ let invokeResult = null;
472
+ let diff = null;
473
+ let sideEffects = emptyDriftSideEffects();
474
+ let itemsSeen = 0;
475
+ let retryAttempts = 0;
476
+ try {
477
+ const { windowMin, windowMax } = def.buildWindow(startedAt);
478
+ const ctx = {
479
+ windowMin,
480
+ windowMax,
481
+ now: startedAt,
482
+ calendarId: this.options.calendarId,
483
+ maxResults: def.maxResults,
484
+ };
485
+ const { toolName, toolArgs } = def.buildToolCall(backendId, ctx);
486
+ // Cadence-path model pin. The canonical delegated proxy resolver
487
+ // returns the lite-tier model (Haiku on Claude); audit log
488
+ // 2026-05-04 showed the cadence calls timing out at the wall-clock
489
+ // cap on Haiku — the connector tool sequence (ToolSearch → tool →
490
+ // response) plus session-dir cold-start was overrunning the 30s
491
+ // window. Pin the cadence to medium tier (Sonnet on Claude / 2.5-
492
+ // flash on Gemini) so cadence reliability does not regress when an
493
+ // operator pins Haiku via `integrations.md` for synchronous skill
494
+ // calls — those still flow through `delegatedModel` resolution and
495
+ // are unaffected.
496
+ const cadenceModelOverride = defaultModelForTier(backendId, "medium");
497
+ const invokeParams = {
498
+ integrationKey: def.integration,
499
+ toolName,
500
+ toolArgs,
501
+ parentProcessKey: DELEGATED_SYNC_PROCESS_KEY,
502
+ modelOverride: cadenceModelOverride,
503
+ };
504
+ while (true) {
505
+ invokeResult = await this.options.invoker.invoke(invokeParams);
506
+ if (invokeResult.ok)
507
+ break;
508
+ if (retryAttempts >= MAX_RETRY_ATTEMPTS
509
+ || !RETRYABLE_ERROR_CLASSES.has(invokeResult.errorClass)) {
510
+ break;
511
+ }
512
+ retryAttempts += 1;
513
+ logger.info({
514
+ integration: def.integration,
515
+ windowKey: def.windowKey,
516
+ backendId,
517
+ errorClass: invokeResult.errorClass,
518
+ attempt: retryAttempts,
519
+ maxRetryAttempts: MAX_RETRY_ATTEMPTS,
520
+ }, "Delegated sync cadence retrying after transient failure");
521
+ await sleep(RETRY_DELAY_MS);
522
+ }
523
+ if (!invokeResult.ok) {
524
+ throw new Error(invokeResult.message);
525
+ }
526
+ const rawItems = def.extractItems(invokeResult.toolResult);
527
+ itemsSeen = rawItems.length;
528
+ const items = normalizeItems(rawItems, normalizer);
529
+ const req = {
530
+ integration: def.integration,
531
+ windowKey: def.windowKey,
532
+ windowMin,
533
+ windowMax,
534
+ fetchedAt: startedAt.toISOString(),
535
+ items,
536
+ };
537
+ diff = reconcile(this.options.db, req, {
538
+ normalizer,
539
+ onDiffInTransaction: (d) => {
540
+ sideEffects = applyDriftEffects(req, d, {
541
+ db: this.options.db,
542
+ calendarId: this.options.calendarId,
543
+ timezone: this.options.timezone,
544
+ todayWriteLock: this.options.todayWriteLock,
545
+ triggerRoadmapRefresh: this.options.triggerRoadmapRefresh,
546
+ // Phase 7: forward the worker's clock so today-drift detection
547
+ // is deterministic in tests (the worker uses an injected now()
548
+ // for window construction; without this forwarder drift-effects
549
+ // would call real `new Date()` and the test would flap across
550
+ // UTC midnight when the fixed NOW and the real clock disagree
551
+ // on what `today` is).
552
+ now: this.now,
553
+ });
554
+ },
555
+ });
556
+ const completedAt = this.now();
557
+ state.lastCompletedAt = completedAt.toISOString();
558
+ state.lastSuccessAt = completedAt.toISOString();
559
+ state.failureCount = 0;
560
+ state.lastError = null;
561
+ recordDelegatedSyncAction(this.options.db, {
562
+ def,
563
+ result: "success",
564
+ startedAt,
565
+ completedAt,
566
+ invokeResult,
567
+ itemsSeen,
568
+ diff,
569
+ sideEffects,
570
+ error: null,
571
+ retryAttempts,
572
+ });
573
+ }
574
+ catch (err) {
575
+ const completedAt = this.now();
576
+ const message = err instanceof Error ? err.message : String(err);
577
+ state.lastCompletedAt = completedAt.toISOString();
578
+ state.failureCount += 1;
579
+ state.lastError = message;
580
+ recordDelegatedSyncAction(this.options.db, {
581
+ def,
582
+ result: "failed",
583
+ startedAt,
584
+ completedAt,
585
+ invokeResult,
586
+ itemsSeen,
587
+ diff,
588
+ sideEffects,
589
+ error: message,
590
+ retryAttempts,
591
+ });
592
+ logger.warn({
593
+ err,
594
+ integration: def.integration,
595
+ windowKey: def.windowKey,
596
+ failureCount: state.failureCount,
597
+ }, "Delegated sync cadence failed");
598
+ }
599
+ }
600
+ getState(id) {
601
+ let state = this.states.get(id);
602
+ if (!state) {
603
+ state = {
604
+ lastAttemptAt: null,
605
+ lastSuccessAt: null,
606
+ lastCompletedAt: null,
607
+ failureCount: 0,
608
+ lastError: null,
609
+ };
610
+ this.states.set(id, state);
611
+ }
612
+ return state;
613
+ }
614
+ readRuntimeConfig() {
615
+ const raw = readRuntimeState(this.options.db, RUNTIME_CONFIG_KEY);
616
+ if (!raw || typeof raw !== "object")
617
+ return {};
618
+ return raw;
619
+ }
620
+ resolveIntervalSeconds(def, runtimeConfig) {
621
+ const configured = runtimeConfig.intervals?.[cadenceId(def)]
622
+ ?? runtimeConfig.intervals?.[`${def.integration}.${def.windowKey}`]
623
+ ?? runtimeConfig.intervals?.[def.windowKey];
624
+ const floor = Math.max(def.softFloorSeconds, positiveNumber(runtimeConfig.minIntervalSeconds)
625
+ ?? DEFAULT_MIN_INTERVAL_SECONDS);
626
+ return Math.max(floor, positiveNumber(configured) ?? def.defaultIntervalSeconds);
627
+ }
628
+ /**
629
+ * Phase 7 (h): rebuild per-cadence `lastAttemptAt` / `lastSuccessAt` from
630
+ * the most recent `delegated_sync` row in `agent_actions` so a daemon
631
+ * restart shortly after a successful sync does not re-spawn a subprocess
632
+ * for that cadence. Idempotent — re-running on an already-warm states
633
+ * map only overwrites with same-or-newer timestamps. Failures during
634
+ * hydration log warn and leave the cadence's state empty (which falls
635
+ * back to "due immediately", matching the prior force-on-start
636
+ * behaviour).
637
+ */
638
+ hydrateStateFromHistory() {
639
+ for (const def of this.cadences) {
640
+ try {
641
+ const row = this.options.db
642
+ .prepare(`SELECT started_at AS startedAt, completed_at AS completedAt, result
643
+ FROM agent_actions
644
+ WHERE action_type = 'delegated_sync'
645
+ AND json_extract(detail, '$.integration') = ?
646
+ AND json_extract(detail, '$.windowKey') = ?
647
+ ORDER BY started_at DESC
648
+ LIMIT 1`)
649
+ .get(def.integration, def.windowKey);
650
+ if (!row)
651
+ continue;
652
+ const state = this.getState(cadenceId(def));
653
+ const startedIso = sqliteDatetimeToIso(row.startedAt);
654
+ const completedIso = sqliteDatetimeToIso(row.completedAt);
655
+ if (startedIso)
656
+ state.lastAttemptAt = startedIso;
657
+ if (completedIso)
658
+ state.lastCompletedAt = completedIso;
659
+ if (row.result === "success" && completedIso) {
660
+ state.lastSuccessAt = completedIso;
661
+ }
662
+ /* c8 ignore start — defensive against a stripped test schema or
663
+ * a corrupted agent_actions row; production always has the
664
+ * table and json_extract returns null for missing keys rather
665
+ * than throwing. The worst case is one redundant subprocess
666
+ * spawn on the first tick, which is the prior force-on-start
667
+ * behaviour. */
668
+ }
669
+ catch (err) {
670
+ logger.warn({ err, integration: def.integration, windowKey: def.windowKey }, "Hydration from agent_actions failed; cadence will tick on first cycle");
671
+ }
672
+ /* c8 ignore stop */
673
+ }
674
+ }
675
+ /**
676
+ * Phase 7 (g) + (c): emit a single warn at start when the operator's
677
+ * `runtime_state.delegatedSync.intervals` includes typo'd keys or when a
678
+ * resolved cadence violates the TTL × 1.5 contract. Both checks fire
679
+ * once per `start()` to avoid log spam; they are also exposed via
680
+ * `getStatus()` so the dashboard can surface them on-screen.
681
+ */
682
+ warnOnConfigViolations() {
683
+ const runtimeConfig = this.readRuntimeConfig();
684
+ const unrecognized = collectUnrecognizedIntervalKeys(this.cadences, runtimeConfig);
685
+ if (unrecognized.length > 0) {
686
+ logger.warn({ unrecognizedIntervalKeys: unrecognized }, "delegatedSync.intervals contains keys that did not resolve to any known cadence id; configured values are ignored for those keys");
687
+ }
688
+ const violations = [];
689
+ for (const def of this.cadences) {
690
+ const intervalSeconds = this.resolveIntervalSeconds(def, runtimeConfig);
691
+ const ttlSeconds = Math.floor(INTEGRATION_WRITE_TTL_MS[def.integration] / 1000);
692
+ if (intervalSeconds * TTL_CONTRACT_RATIO > ttlSeconds) {
693
+ violations.push({ cadenceId: cadenceId(def), intervalSeconds, ttlSeconds });
694
+ }
695
+ }
696
+ if (violations.length > 0) {
697
+ logger.warn({ ttlContractViolations: violations, ttlContractRatio: TTL_CONTRACT_RATIO }, "delegatedSync cadence(s) exceed integration_writes TTL × 1.5; agent-originated writes within these cadences may be re-attributed actor='user' on the next reconcile");
698
+ }
699
+ }
700
+ }
701
+ function cadenceId(def) {
702
+ return `${def.integration}:${def.windowKey}`;
703
+ }
704
+ /**
705
+ * Per-cadence opt-in check (delegated-sync-opt-in.md). Defaults to `false`
706
+ * when the operator hasn't set the flag, which means a fresh
707
+ * `runtime_state.delegatedSync` row keeps every cadence dormant. Canonical
708
+ * fully-qualified IDs only — the legacy alias forms accepted by `intervals`
709
+ * are intentionally not honoured here so a future cadence collision cannot
710
+ * silently flip the wrong toggle.
711
+ */
712
+ function isCadenceEnabled(def, runtimeConfig) {
713
+ return runtimeConfig.cadenceEnabled?.[cadenceId(def)] === true;
714
+ }
715
+ /**
716
+ * Resolve the active-hours window from operator config, falling back to
717
+ * the Hourly-Check-aligned default. A malformed or out-of-range pair (e.g.
718
+ * `start >= end`, or numbers outside `[0,24]`) is treated as "use defaults"
719
+ * — the worker can't usefully interpret an inverted window, and falling
720
+ * back keeps cadences running rather than silently disabling them.
721
+ */
722
+ export function resolveActiveHours(runtimeConfig) {
723
+ const start = runtimeConfig.activeStartHour;
724
+ const end = runtimeConfig.activeEndHour;
725
+ if (Number.isInteger(start)
726
+ && Number.isInteger(end)
727
+ && start >= 0
728
+ && start <= 23
729
+ && end >= 1
730
+ && end <= 24
731
+ && start < end) {
732
+ return { startHour: start, endHour: end };
733
+ }
734
+ return {
735
+ startHour: DEFAULT_ACTIVE_START_HOUR,
736
+ endHour: DEFAULT_ACTIVE_END_HOUR,
737
+ };
738
+ }
739
+ /**
740
+ * `true` when `now` falls inside `[startHour, endHour)` in the daemon's
741
+ * configured timezone. `endHour=24` is exclusive — i.e. covers up to
742
+ * 23:59:59. Mirrors the semantics of Hourly Check's window so an operator
743
+ * who already understands one understands the other.
744
+ */
745
+ export function isWithinActiveHours(now, timezone, activeHours) {
746
+ const local = nowInTimezone(timezone, now);
747
+ return local.hours >= activeHours.startHour && local.hours < activeHours.endHour;
748
+ }
749
+ /**
750
+ * INTEGRATION-DRIFT-DETECTION-PLAN.md §17.11 — `integration_writes.expires_at`
751
+ * must outlive the slowest reconcile cadence by ~1.5×, otherwise an
752
+ * agent-originated write at T0 has its mark expire just before the next
753
+ * worker tick re-fetches and the diff resolves `actor='user'` instead of
754
+ * `'agent'`. Phase 7 (c) tightens both halves: the TTL constants
755
+ * (INTEGRATION_WRITE_TTL_MS, in @aitne/shared) cover the default
756
+ * cadences with margin, and this ratio is the daemon-side check that fires
757
+ * a warn when an operator-tuned cadence pushes past the boundary.
758
+ */
759
+ const TTL_CONTRACT_RATIO = 1.5;
760
+ /**
761
+ * Build the alias set a runtime-config key may take and check operator-
762
+ * supplied keys against it. Three accepted forms:
763
+ * - canonical fully-qualified (`google_calendar:primary:24h`)
764
+ * - dotted human-friendly (`google_calendar.primary:24h`)
765
+ * - integration-local (`primary:24h` — only unambiguous when the window
766
+ * key is unique across cadences, which the §8.2 default set respects)
767
+ *
768
+ * Returns the sorted list of operator keys that match none of the three
769
+ * forms for any registered cadence. Sorted for stable assertions and
770
+ * stable health-endpoint output.
771
+ */
772
+ function collectUnrecognizedIntervalKeys(cadences, runtimeConfig) {
773
+ if (!runtimeConfig.intervals)
774
+ return [];
775
+ const known = new Set();
776
+ for (const def of cadences) {
777
+ known.add(cadenceId(def));
778
+ known.add(`${def.integration}.${def.windowKey}`);
779
+ known.add(def.windowKey);
780
+ }
781
+ const unrecognized = [];
782
+ for (const key of Object.keys(runtimeConfig.intervals)) {
783
+ if (!known.has(key))
784
+ unrecognized.push(key);
785
+ }
786
+ return unrecognized.sort();
787
+ }
788
+ /**
789
+ * `agent_actions` stores `started_at` / `completed_at` as SQLite datetime
790
+ * (`YYYY-MM-DD HH:MM:SS`). Hydration converts them back to ISO 8601 to
791
+ * match the in-memory `CadenceRuntimeState` format. Returns `null` for an
792
+ * unparseable value so a malformed historical row does not poison the
793
+ * runtime state map.
794
+ */
795
+ function sqliteDatetimeToIso(value) {
796
+ if (typeof value !== "string" || value.length === 0)
797
+ return null;
798
+ const normalised = value.includes("T") ? value : value.replace(" ", "T");
799
+ const withZone = /[Zz]|[+-]\d{2}:?\d{2}$/.test(normalised)
800
+ ? normalised
801
+ : `${normalised}Z`;
802
+ const ms = Date.parse(withZone);
803
+ if (!Number.isFinite(ms))
804
+ return null;
805
+ return new Date(ms).toISOString();
806
+ }
807
+ function positiveNumber(value) {
808
+ return typeof value === "number" && Number.isFinite(value) && value > 0
809
+ ? value
810
+ : null;
811
+ }
812
+ function computeEffectiveIntervalSeconds(intervalSeconds, failureCount) {
813
+ return failureCount >= CIRCUIT_FAILURE_THRESHOLD
814
+ ? intervalSeconds * CIRCUIT_BACKOFF_MULTIPLIER
815
+ : intervalSeconds;
816
+ }
817
+ function cadenceDue(state, intervalSeconds, now) {
818
+ if (!state.lastAttemptAt)
819
+ return true;
820
+ const lastAttemptMs = Date.parse(state.lastAttemptAt);
821
+ if (!Number.isFinite(lastAttemptMs))
822
+ return true;
823
+ return now.getTime() - lastAttemptMs >= intervalSeconds * 1000;
824
+ }
825
+ /**
826
+ * `nextRunAt` projects the next time this cadence is expected to fire.
827
+ * Computes the interval-based candidate (or `now` for first run / malformed
828
+ * lastAttemptAt), floors to `now` (never returns a past instant), and then
829
+ * shifts forward to the next active-hours start when the candidate falls
830
+ * outside the configured window. Mirrors the worker's actual gating order
831
+ * (active-hours gate first, then cadenceDue) so the dashboard's "next run
832
+ * in Xm" matches what the operator will observe.
833
+ */
834
+ function nextRunAt(state, intervalSeconds, now, timezone, activeHours) {
835
+ let candidateMs;
836
+ if (!state.lastAttemptAt) {
837
+ candidateMs = now.getTime();
838
+ }
839
+ else {
840
+ const lastAttemptMs = Date.parse(state.lastAttemptAt);
841
+ candidateMs = Number.isFinite(lastAttemptMs)
842
+ ? lastAttemptMs + intervalSeconds * 1000
843
+ : now.getTime();
844
+ }
845
+ // Floor to `now` — a recurrence due in the past would actually fire on
846
+ // the next tick, not retroactively. Reporting it as "now" is the most
847
+ // accurate forward-looking value.
848
+ const candidate = new Date(Math.max(candidateMs, now.getTime()));
849
+ return nextActiveHoursStart(candidate, timezone, activeHours.startHour, activeHours.endHour).toISOString();
850
+ }
851
+ /**
852
+ * Resolve the fully-qualified tool name for `(integration, backendId, bareTool)`.
853
+ * Throws when the descriptor lacks a connector for the requested backend —
854
+ * defensive against an integration mode change racing the worker tick (the
855
+ * caller has already confirmed `delegatedBackend` resolves; this is the
856
+ * second-line check the descriptor lookup performs anyway).
857
+ */
858
+ function namespacedTool(integration, backendId, bareTool) {
859
+ const connector = INTEGRATION_DESCRIPTORS[integration].backendConnectors[backendId];
860
+ /* c8 ignore next 5 */
861
+ if (!connector) {
862
+ throw new Error(`${integration} has no delegated connector for backend '${backendId}'`);
863
+ }
864
+ return `${connector.toolNamespace}${bareTool}`;
865
+ }
866
+ function calendarListBareTool(backendId) {
867
+ return backendId === "claude"
868
+ ? "list_events"
869
+ : backendId === "codex"
870
+ ? "search_events"
871
+ : "listEvents";
872
+ }
873
+ /**
874
+ * Per-integration item-array key list. Connectors wrap upstream payloads
875
+ * differently — `events` for calendar list (Google API native field),
876
+ * `messages` / `threads` for Gmail search, `results` / `pages` for Notion
877
+ * search. The cadence-supplied list is what the worker walks via
878
+ * {@link extractItemsByKeys} when normalising the tool result.
879
+ */
880
+ const CALENDAR_ITEM_KEYS = ["events", "items", "calendarEvents"];
881
+ const GMAIL_ITEM_KEYS = ["threads", "messages", "items"];
882
+ const NOTION_ITEM_KEYS = ["results", "pages", "items"];
883
+ const SHARED_WRAPPER_KEYS = ["toolResult", "data", "result"];
884
+ function extractItemsByKeys(value, keys) {
885
+ const items = tryExtractItemsByKeys(value, keys, 0);
886
+ if (items)
887
+ return items;
888
+ throw new Error(`delegated tool result did not contain an item array (looked for ${[...keys, ...SHARED_WRAPPER_KEYS].join(", ")})`);
889
+ }
890
+ function tryExtractItemsByKeys(value, keys, depth) {
891
+ if (depth > 4)
892
+ return null;
893
+ if (Array.isArray(value))
894
+ return value;
895
+ if (typeof value === "string") {
896
+ const trimmed = value.trim();
897
+ if (trimmed.length === 0)
898
+ return [];
899
+ if (trimmed.startsWith("[") || trimmed.startsWith("{")) {
900
+ try {
901
+ return tryExtractItemsByKeys(JSON.parse(trimmed), keys, depth + 1);
902
+ }
903
+ catch {
904
+ return null;
905
+ }
906
+ }
907
+ return null;
908
+ }
909
+ if (!value || typeof value !== "object")
910
+ return null;
911
+ const obj = value;
912
+ for (const key of [...keys, ...SHARED_WRAPPER_KEYS]) {
913
+ if (key in obj) {
914
+ const nested = tryExtractItemsByKeys(obj[key], keys, depth + 1);
915
+ if (nested)
916
+ return nested;
917
+ }
918
+ }
919
+ return null;
920
+ }
921
+ /**
922
+ * Per-backend Gmail search tool call. Each Codex / Claude / Gemini Gmail
923
+ * connector exposes a slightly different search API; this maps the
924
+ * cadence's intent (`newer_than:7d`, capped to `maxResults`) onto the
925
+ * connector's actual parameter names. The tool name resolves through
926
+ * `INTEGRATION_DESCRIPTORS.gmail.backendConnectors[backendId].toolNamespace`
927
+ * so namespace drift in the descriptor stays the single source of truth.
928
+ */
929
+ function gmailSearchToolCall(backendId, ctx) {
930
+ const query = "newer_than:7d";
931
+ switch (backendId) {
932
+ case "claude":
933
+ return {
934
+ toolName: namespacedTool("gmail", "claude", "search_threads"),
935
+ toolArgs: { query, pageSize: ctx.maxResults },
936
+ };
937
+ case "codex":
938
+ return {
939
+ toolName: namespacedTool("gmail", "codex", "search_emails"),
940
+ toolArgs: { query, max_results: ctx.maxResults },
941
+ };
942
+ case "gemini":
943
+ return {
944
+ toolName: namespacedTool("gmail", "gemini", "search"),
945
+ toolArgs: { query, maxResults: ctx.maxResults },
946
+ };
947
+ // Exhaustive switch over the BackendId union; a future backend would
948
+ // surface here at compile time.
949
+ /* c8 ignore start */
950
+ default:
951
+ throw new Error(`unsupported backend '${backendId}' for gmail`);
952
+ /* c8 ignore stop */
953
+ }
954
+ }
955
+ /**
956
+ * Per-backend Notion search tool call. All three connectors accept the
957
+ * same shape (`query`, `filters.created_date_range.start_date`, page-size
958
+ * cap), but the bare tool name differs: Codex strips the `notion-` prefix
959
+ * (`_search` vs `notion-search`).
960
+ */
961
+ function notionSearchToolCall(backendId, ctx) {
962
+ const startDate = isoDate(ctx.windowMin);
963
+ const args = {
964
+ query: "updated",
965
+ filters: { created_date_range: { start_date: startDate } },
966
+ page_size: ctx.maxResults,
967
+ };
968
+ switch (backendId) {
969
+ case "claude":
970
+ return { toolName: namespacedTool("notion", "claude", "notion-search"), toolArgs: args };
971
+ case "codex":
972
+ return { toolName: namespacedTool("notion", "codex", "search"), toolArgs: args };
973
+ case "gemini":
974
+ return { toolName: namespacedTool("notion", "gemini", "notion-search"), toolArgs: args };
975
+ /* c8 ignore start */
976
+ default:
977
+ throw new Error(`unsupported backend '${backendId}' for notion`);
978
+ /* c8 ignore stop */
979
+ }
980
+ }
981
+ function isoDate(iso) {
982
+ // Trim ISO-8601 instant down to YYYY-MM-DD. `Date.parse` is the same
983
+ // mechanism the validation layer uses; we slice the resulting ISO string
984
+ // rather than risk a per-locale formatter producing zone-shifted dates.
985
+ const ms = Date.parse(iso);
986
+ // windowMin is built by buildWindow above; an unparseable value would
987
+ // mean the caller corrupted it, which the integration tests would catch
988
+ // before this branch ever fires.
989
+ /* c8 ignore start */
990
+ if (!Number.isFinite(ms)) {
991
+ throw new Error(`isoDate: cannot parse '${iso}'`);
992
+ }
993
+ /* c8 ignore stop */
994
+ return new Date(ms).toISOString().slice(0, 10);
995
+ }
996
+ function normalizeItems(rawEvents, normalizer) {
997
+ return rawEvents.map((raw) => {
998
+ const payload = normalizer.payload(raw);
999
+ return {
1000
+ itemId: normalizer.itemId(raw),
1001
+ contentHash: normalizer.hash(payload),
1002
+ payload,
1003
+ itemStart: normalizer.itemStart(raw),
1004
+ };
1005
+ });
1006
+ }
1007
+ function zeroCost() {
1008
+ return {
1009
+ tokensInput: 0,
1010
+ tokensOutput: 0,
1011
+ cacheCreationTokens: 0,
1012
+ cacheReadTokens: 0,
1013
+ costUsd: 0,
1014
+ durationMs: 0,
1015
+ numTurns: 0,
1016
+ };
1017
+ }
1018
+ function resultCost(result) {
1019
+ if (!result)
1020
+ return zeroCost();
1021
+ if (result.ok)
1022
+ return result.cost;
1023
+ return result.cost ?? zeroCost();
1024
+ }
1025
+ function recordDelegatedSyncAction(db, args) {
1026
+ const cost = resultCost(args.invokeResult);
1027
+ const detail = {
1028
+ integration: args.def.integration,
1029
+ windowKey: args.def.windowKey,
1030
+ itemsSeen: args.itemsSeen,
1031
+ ...(args.diff
1032
+ ? {
1033
+ created: args.diff.created.length,
1034
+ modified: args.diff.modified.length,
1035
+ deleted: args.diff.deleted.length,
1036
+ unchanged: args.diff.unchanged,
1037
+ prunedOutOfWindow: args.diff.prunedOutOfWindow,
1038
+ isInitialSnapshot: args.diff.isInitialSnapshot,
1039
+ }
1040
+ : {}),
1041
+ sideEffects: args.sideEffects,
1042
+ ...(args.retryAttempts > 0 ? { retryAttempts: args.retryAttempts } : {}),
1043
+ errorClass: args.invokeResult && !args.invokeResult.ok
1044
+ ? args.invokeResult.errorClass
1045
+ : undefined,
1046
+ };
1047
+ try {
1048
+ db.prepare(`INSERT INTO agent_actions (
1049
+ event_id, action_type, trigger, model_used,
1050
+ cost_usd, tokens_input, tokens_output,
1051
+ cache_creation_tokens, cache_read_tokens,
1052
+ duration_ms, num_turns, result, detail,
1053
+ started_at, completed_at, error, backend, cost_source, source_kind
1054
+ ) VALUES (
1055
+ NULL, 'delegated_sync', ?, ?,
1056
+ ?, ?, ?,
1057
+ ?, ?,
1058
+ ?, ?, ?, ?,
1059
+ datetime(?), datetime(?), ?, ?, 'sdk', 'cron'
1060
+ )`).run(DELEGATED_SYNC_PROCESS_KEY, args.invokeResult?.modelId ?? null, cost.costUsd, cost.tokensInput, cost.tokensOutput, cost.cacheCreationTokens, cost.cacheReadTokens, cost.durationMs || Math.max(0, args.completedAt.getTime() - args.startedAt.getTime()), cost.numTurns, args.result, JSON.stringify(detail), args.startedAt.toISOString(), args.completedAt.toISOString(), args.error, args.invokeResult?.backendId ?? null);
1061
+ }
1062
+ catch (err) {
1063
+ logger.error({ err }, "failed to record delegated_sync action");
1064
+ }
1065
+ }
1066
+ export const __delegatedSyncWorkerTestExports = {
1067
+ calendarListBareTool,
1068
+ namespacedTool,
1069
+ extractItemsByKeys,
1070
+ gmailSearchToolCall,
1071
+ notionSearchToolCall,
1072
+ isoDate,
1073
+ collectUnrecognizedIntervalKeys,
1074
+ sqliteDatetimeToIso,
1075
+ isCadenceEnabled,
1076
+ TTL_CONTRACT_RATIO,
1077
+ CALENDAR_ITEM_KEYS,
1078
+ GMAIL_ITEM_KEYS,
1079
+ NOTION_ITEM_KEYS,
1080
+ CALENDAR_IMMINENT_CADENCE,
1081
+ CALENDAR_24H_CADENCE,
1082
+ GMAIL_INBOX_7D_CADENCE,
1083
+ NOTION_RECENTLY_UPDATED_CADENCE,
1084
+ DEFAULT_ACTIVE_START_HOUR,
1085
+ DEFAULT_ACTIVE_END_HOUR,
1086
+ };
1087
+ //# sourceMappingURL=delegated-sync-worker.js.map