@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,1008 @@
1
+ import { readdirSync, readFileSync, rmSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
2
+ import { resolve, extname } from "node:path";
3
+ import { getContextDir } from "../config.js";
4
+ import { CONTEXT_RELATIVE_PATHS } from "./context-paths.js";
5
+ import { cleanupConsumedObservations, getStalePendingObservationStats, } from "../db/observations.js";
6
+ import { pruneOldMcpToolCalls } from "../services/mcp/tool-audit.js";
7
+ import { AttachmentStore } from "../services/attachments/store.js";
8
+ import { createLogger } from "../logging.js";
9
+ const logger = createLogger("retention");
10
+ /** Retention policies — days to keep each data type */
11
+ const RETENTION_DAYS = {
12
+ mdFileSnapshots: 30,
13
+ messages: 90,
14
+ agentActions: 90,
15
+ notificationLog: 60,
16
+ conversationSessions: 7, // inactive sessions only
17
+ dmConversationLog: 90,
18
+ observations: 7,
19
+ agentSchedule: 30, // completed/failed/skipped rows only
20
+ mcpToolCalls: 90,
21
+ authTelemetryCounters: 90,
22
+ mailMessagesIndex: 365,
23
+ deletedMailMessagesIndex: 30,
24
+ mailParseFailures: 30,
25
+ managementParseFailures: 30,
26
+ skillCurationSignals: 180,
27
+ skillCurationConsumedSignals: 90,
28
+ skillCurationProposals: 180,
29
+ skillCurationRuns: 180,
30
+ skillCurationRunningMaxHours: 24,
31
+ tempFiles: 1,
32
+ /**
33
+ * Pending observations are NEVER deleted by retention (the hourly_check
34
+ * dispatcher owns consumption). After this many days unconsumed, retention
35
+ * logs a warning so the operator notices a stalled pipeline.
36
+ */
37
+ stalePendingObservationsWarn: 14,
38
+ // B-007 §5.9 / §6.5 — synthesized daily/ is persistent by design. The
39
+ // retention value here is only used as a safety net when the
40
+ // `daily/` folder is explicitly enabled for pruning (it is not); kept
41
+ // for backwards-compatible config reads.
42
+ dailyMd: 36500,
43
+ weeklyMd: 365,
44
+ /**
45
+ * Per-day git journal entries under `git/<slug>/journal/<YYYY-MM-DD>.md`.
46
+ * One year matches the design (docs/design/appendices/unified-repositories.md
47
+ * §4.5). Long-arc evolution lives in `git/<slug>/overview.md`'s
48
+ * `## Lifecycle Phases` and `## Notable Changes`; the journal is the
49
+ * granular per-day record we can afford to drop after a year.
50
+ */
51
+ gitJournalMd: 365,
52
+ };
53
+ /**
54
+ * Retention policy for `agent/journal.md` content-level rollup.
55
+ *
56
+ * The journal is append-only — Weekly/Monthly Review routines add new
57
+ * `## Weekly YYYY-Www` and `## Monthly YYYY-MM` sections over time. Without
58
+ * pruning it grows unbounded. The policy:
59
+ *
60
+ * - Keep the most recent `keepMonthlySections` `## Monthly YYYY-MM`
61
+ * sections (default 24 = 2 years). Older monthlies are pruned to
62
+ * bound file size over multi-year operation.
63
+ * - Keep only the most recent `keepWeeklySections` `## Weekly YYYY-Www`
64
+ * sections; older weeklies are considered superseded by the monthly
65
+ * rollup that covers them.
66
+ * - Collapse duplicate `## Weekly YYYY-Www` and `## Monthly YYYY-MM`
67
+ * sections (last-write-wins): if the review routine ran twice in the
68
+ * same period, keep only the most recently appended section. This makes
69
+ * the append-only write path structurally idempotent.
70
+ * - Warn (non-destructively) when any single kept section exceeds
71
+ * `sectionSizeWarnBytes`. Bloat indicates the review prompt's bullet
72
+ * caps are being ignored; the operator should investigate rather than
73
+ * silently truncate information mid-sentence.
74
+ * - Never delete the file itself — if nothing qualifies for pruning the
75
+ * file is left untouched (no disk write, no snapshot noise).
76
+ *
77
+ * Invariant with the weekly_review / monthly_review prompts:
78
+ * `keepWeeklySections >= 4`, because `routine.monthly_review` reads the
79
+ * last ~4 weekly sections via `GET /api/context/agent-journal` when
80
+ * synthesizing its retrospective. If you lower this below 4, update the
81
+ * prompt in core/prompts.ts as well.
82
+ */
83
+ const AGENT_JOURNAL_ROLLUP = {
84
+ keepWeeklySections: 12,
85
+ /**
86
+ * Monthly sections are the durable rollup of weekly reviews and should be
87
+ * kept for a long time, but not forever — after several years the file
88
+ * would grow into hundreds of KB, inflating prompt token costs each time
89
+ * the journal is loaded as context. 24 months keeps two full years of
90
+ * retrospectives, which is enough for long-range trend analysis while
91
+ * bounding file size to ~96 KB worst-case (24 × 4 KB cap).
92
+ */
93
+ keepMonthlySections: 24,
94
+ /**
95
+ * ~4000 bytes ≈ 1000 tokens — the soft cap a weekly or monthly section
96
+ * should respect. Above this we log a warning so the operator sees prompt
97
+ * compliance drift. We never truncate content mid-section because that
98
+ * would corrupt the agent's own reflection history in unpredictable ways.
99
+ */
100
+ sectionSizeWarnBytes: 4000,
101
+ };
102
+ /**
103
+ * Run data retention cleanup.
104
+ *
105
+ * Deletes expired data from both SQLite tables and context files
106
+ * based on the retention policy defined in DESIGN.md §3.5.
107
+ */
108
+ export function runRetentionCleanup(db, config) {
109
+ const result = {
110
+ mdFileSnapshots: 0,
111
+ messages: 0,
112
+ agentActions: 0,
113
+ notificationLog: 0,
114
+ conversationSessions: 0,
115
+ dmConversationLog: 0,
116
+ observations: 0,
117
+ agentSchedule: 0,
118
+ mcpToolCalls: 0,
119
+ authTelemetryCounters: 0,
120
+ mailMessagesIndex: 0,
121
+ mailParseFailures: 0,
122
+ managementParseFailures: 0,
123
+ skillCurationSignals: 0,
124
+ skillCurationProposals: 0,
125
+ skillCurationRuns: 0,
126
+ skillCurationRunsAborted: 0,
127
+ attachmentOrphanRows: 0,
128
+ attachmentDanglingRows: 0,
129
+ attachmentUntrackedDirs: 0,
130
+ tempFiles: 0,
131
+ scheduleFiles: 0,
132
+ weeklyFiles: 0,
133
+ gitJournalFiles: 0,
134
+ agentJournalWeeklyPruned: 0,
135
+ agentJournalMonthlyPruned: 0,
136
+ agentJournalDuplicatesCollapsed: 0,
137
+ agentJournalOversizedSections: 0,
138
+ integrationWrites: 0,
139
+ imminentEventNotifications: 0,
140
+ ftsOptimized: false,
141
+ walCheckpointed: false,
142
+ };
143
+ // ── SQLite table cleanup (transactional) ──
144
+ //
145
+ // All DELETE operations run inside a single transaction so a mid-cleanup
146
+ // crash leaves the database in either the pre- or post-cleanup state,
147
+ // never a partial mix. Deletion counts are accumulated into a local
148
+ // object and only copied to `result` after the transaction commits —
149
+ // if the transaction rolls back, `result` stays at zero rather than
150
+ // reporting phantom deletions.
151
+ const counts = {
152
+ mdFileSnapshots: 0,
153
+ messages: 0,
154
+ agentActions: 0,
155
+ notificationLog: 0,
156
+ dmConversationLog: 0,
157
+ observations: 0,
158
+ conversationSessions: 0,
159
+ agentSchedule: 0,
160
+ mcpToolCalls: 0,
161
+ authTelemetryCounters: 0,
162
+ mailMessagesIndex: 0,
163
+ mailParseFailures: 0,
164
+ managementParseFailures: 0,
165
+ skillCurationSignals: 0,
166
+ skillCurationProposals: 0,
167
+ skillCurationRuns: 0,
168
+ skillCurationRunsAborted: 0,
169
+ integrationWrites: 0,
170
+ imminentEventNotifications: 0,
171
+ };
172
+ db.transaction(() => {
173
+ counts.mdFileSnapshots = deleteOlderThan(db, "md_file_snapshots", "created_at", RETENTION_DAYS.mdFileSnapshots);
174
+ counts.messages = deleteOlderThan(db, "messages", "timestamp", RETENTION_DAYS.messages);
175
+ counts.agentActions = deleteOlderThan(db, "agent_actions", "started_at", RETENTION_DAYS.agentActions);
176
+ counts.notificationLog = deleteOlderThan(db, "notification_log", "created_at", RETENTION_DAYS.notificationLog);
177
+ counts.dmConversationLog = deleteOlderThan(db, "dm_conversation_log", "created_at", RETENTION_DAYS.dmConversationLog);
178
+ counts.observations = cleanupConsumedObservations(db, RETENTION_DAYS.observations);
179
+ // Expired inactive sessions (status != 'active')
180
+ // Must delete orphaned messages FIRST to satisfy FK constraint (foreign_keys = ON)
181
+ db.prepare(`DELETE FROM messages WHERE session_id IN (
182
+ SELECT id FROM conversation_sessions
183
+ WHERE status != 'active'
184
+ AND last_message_at < datetime('now', '-' || ? || ' days')
185
+ )`).run(RETENTION_DAYS.conversationSessions);
186
+ counts.conversationSessions = db
187
+ .prepare(`DELETE FROM conversation_sessions
188
+ WHERE status != 'active'
189
+ AND last_message_at < datetime('now', '-' || ? || ' days')`)
190
+ .run(RETENTION_DAYS.conversationSessions).changes;
191
+ // Terminal schedule rows only — explicitly enumerate the statuses we
192
+ // consider terminal so that a future new status (e.g. 'cancelled')
193
+ // is not silently swept up until it is intentionally added here.
194
+ counts.agentSchedule = db
195
+ .prepare(`DELETE FROM agent_schedule
196
+ WHERE status IN ('completed', 'skipped', 'failed')
197
+ AND scheduled_for < datetime('now', '-' || ? || ' days')`)
198
+ .run(RETENTION_DAYS.agentSchedule).changes;
199
+ // MCP audit log — `called_at` is epoch ms, not a datetime string, so
200
+ // pruneOldMcpToolCalls uses integer arithmetic. Catches internally for
201
+ // tests that hand-craft a DB without the mcp_tool_calls table.
202
+ counts.mcpToolCalls = pruneOldMcpToolCalls(db, RETENTION_DAYS.mcpToolCalls);
203
+ counts.authTelemetryCounters = deleteIsoOlderThanIfTableExists(db, "auth_telemetry_counters", "bucket_hour", RETENTION_DAYS.authTelemetryCounters);
204
+ counts.mailMessagesIndex = pruneMailMessagesIndex(db);
205
+ counts.mailParseFailures = deleteOlderThanButKeepLatestIfTableExists(db, "parse_failures", "created_at", RETENTION_DAYS.mailParseFailures, 500);
206
+ counts.managementParseFailures = deleteOlderThanButKeepLatestIfTableExists(db, "management_parse_failures", "created_at", RETENTION_DAYS.managementParseFailures, 50);
207
+ counts.skillCurationRunsAborted = abortStaleSkillCurationRuns(db);
208
+ const skillCuration = pruneSkillCurationTables(db);
209
+ counts.skillCurationSignals = skillCuration.signals;
210
+ counts.skillCurationProposals = skillCuration.proposals;
211
+ counts.skillCurationRuns = skillCuration.runs;
212
+ // INTEGRATION-DRIFT-DETECTION-PLAN.md §4.2 — `integration_writes` rows
213
+ // are TTL-keyed; reconcile only honours rows whose expires_at is in the
214
+ // future. Phase-2 has no insertion path yet (Phase 4 lands route
215
+ // handlers that call markIntegrationWrite), but adding the sweep now
216
+ // means Phase 4 won't have to revisit retention. The expires_at index
217
+ // (idx_integration_writes_expires) keeps the prune cheap. Defensive
218
+ // try/catch mirrors `pruneOldMcpToolCalls` for hand-rolled test
219
+ // schemas that omit the table — production always has it.
220
+ try {
221
+ counts.integrationWrites = db
222
+ .prepare(`DELETE FROM integration_writes
223
+ WHERE expires_at < datetime('now')`)
224
+ .run().changes;
225
+ }
226
+ catch (err) {
227
+ logger.warn({ err }, "integration_writes prune skipped (table missing)");
228
+ }
229
+ // INTEGRATION-DRIFT-PHASE-7-PLAN.md §3.2 — imminent-meeting dedup
230
+ // table. Rows older than 24 h are pruned; a calendar event cannot
231
+ // stay imminent longer than 15 min so the safety margin is generous,
232
+ // and the wider window absorbs clock jitter / DST transitions
233
+ // without re-DMing a row that the scheduler has already emitted.
234
+ try {
235
+ counts.imminentEventNotifications = db
236
+ .prepare(`DELETE FROM imminent_event_notifications
237
+ WHERE notified_at < datetime('now', '-1 day')`)
238
+ .run().changes;
239
+ }
240
+ catch (err) {
241
+ /* c8 ignore next 5 */
242
+ logger.warn({ err }, "imminent_event_notifications prune skipped (table missing)");
243
+ }
244
+ })();
245
+ // Transaction committed — safe to copy counts into result.
246
+ result.mdFileSnapshots = counts.mdFileSnapshots;
247
+ result.messages = counts.messages;
248
+ result.agentActions = counts.agentActions;
249
+ result.notificationLog = counts.notificationLog;
250
+ result.dmConversationLog = counts.dmConversationLog;
251
+ result.observations = counts.observations;
252
+ result.conversationSessions = counts.conversationSessions;
253
+ result.agentSchedule = counts.agentSchedule;
254
+ result.mcpToolCalls = counts.mcpToolCalls;
255
+ result.authTelemetryCounters = counts.authTelemetryCounters;
256
+ result.mailMessagesIndex = counts.mailMessagesIndex;
257
+ result.mailParseFailures = counts.mailParseFailures;
258
+ result.managementParseFailures = counts.managementParseFailures;
259
+ result.skillCurationSignals = counts.skillCurationSignals;
260
+ result.skillCurationProposals = counts.skillCurationProposals;
261
+ result.skillCurationRuns = counts.skillCurationRuns;
262
+ result.skillCurationRunsAborted = counts.skillCurationRunsAborted;
263
+ result.integrationWrites = counts.integrationWrites;
264
+ result.imminentEventNotifications = counts.imminentEventNotifications;
265
+ const attachmentCleanup = cleanupAttachments(db, config.dataDir);
266
+ result.attachmentOrphanRows = attachmentCleanup.orphanRows;
267
+ result.attachmentDanglingRows = attachmentCleanup.danglingRows;
268
+ result.attachmentUntrackedDirs = attachmentCleanup.untrackedDirs;
269
+ // Surface stale pending observations so a stalled hourly_check pipeline
270
+ // becomes visible in daemon logs. Pending rows are intentionally not
271
+ // deleted (see RETENTION_DAYS.stalePendingObservationsWarn comment).
272
+ const stalePending = getStalePendingObservationStats(db, RETENTION_DAYS.stalePendingObservationsWarn);
273
+ if (stalePending.count > 0) {
274
+ logger.warn({
275
+ stalePendingCount: stalePending.count,
276
+ oldestObservedAt: stalePending.oldestObservedAt,
277
+ thresholdDays: RETENTION_DAYS.stalePendingObservationsWarn,
278
+ }, "Stale pending observations detected — hourly_check may be skipping or stalled");
279
+ }
280
+ // ── FTS5 segment optimization ──
281
+ //
282
+ // FTS5 content-sync tables receive DELETE commands via triggers, but the
283
+ // internal segments are not merged until an explicit `optimize` command.
284
+ // We only run this when rows were actually deleted from the parent
285
+ // content tables — when nothing was deleted, the segments are already
286
+ // optimal and the I/O would be wasted.
287
+ // Each FTS table is optimized independently so a failure in one does not
288
+ // skip the other, and the log identifies which table had the problem.
289
+ const ftsTargets = [
290
+ { table: "fts_actions", needed: counts.agentActions > 0 },
291
+ { table: "fts_messages", needed: counts.messages > 0 || counts.conversationSessions > 0 },
292
+ { table: "fts_mail_messages", needed: counts.mailMessagesIndex > 0 },
293
+ ];
294
+ let ftsFailures = 0;
295
+ for (const { table, needed } of ftsTargets) {
296
+ if (!needed)
297
+ continue;
298
+ try {
299
+ db.exec(`INSERT INTO ${table}(${table}) VALUES('optimize')`);
300
+ }
301
+ catch (err) {
302
+ ftsFailures++;
303
+ logger.warn({ err, ftsTable: table }, "FTS5 optimization failed for table");
304
+ }
305
+ }
306
+ const ftsAttempted = ftsTargets.some((t) => t.needed);
307
+ result.ftsOptimized = ftsAttempted && ftsFailures === 0;
308
+ // Ask SQLite to refresh query planner statistics if needed. This is a
309
+ // no-op when statistics are already up to date and very cheap otherwise.
310
+ db.pragma("optimize");
311
+ // ── WAL checkpoint ──
312
+ //
313
+ // After bulk deletions the WAL file can grow large. A TRUNCATE
314
+ // checkpoint writes all WAL frames back to the main DB file and resets
315
+ // the WAL to zero length, reclaiming disk space immediately.
316
+ try {
317
+ db.pragma("wal_checkpoint(TRUNCATE)");
318
+ result.walCheckpointed = true;
319
+ }
320
+ catch (err) {
321
+ logger.warn({ err }, "WAL checkpoint failed — WAL file may remain large");
322
+ }
323
+ // ── File cleanup ──
324
+ // Retention sweeps should never touch stale fallback data if the user
325
+ // is on obsidian mode with a healthy primary vault — pass `db` so
326
+ // `getContextDir` returns the fallback only when actually degraded.
327
+ const contextDir = getContextDir(config, db);
328
+ // B-007 §5.9 — synthesized daily journals are persistent; no sweep.
329
+ // weekly/ is still time-bounded because the monthly review rolls it up.
330
+ result.weeklyFiles = cleanOldFiles(resolve(contextDir, "weekly"), RETENTION_DAYS.weeklyMd);
331
+ // Unified-repositories per-day journals — one year retention. Walk
332
+ // every `git/<slug>/journal/` directory and prune `.md` entries
333
+ // older than the cutoff. Overview files are NEVER pruned.
334
+ result.gitJournalFiles = cleanGitJournals(resolve(contextDir, "git"), RETENTION_DAYS.gitJournalMd);
335
+ result.tempFiles = cleanTempFiles(resolve(config.dataDir, "tmp"), RETENTION_DAYS.tempFiles) + cleanAtomicTempFiles(contextDir, RETENTION_DAYS.tempFiles);
336
+ // ── Content-level rollup: agent/journal.md (B-007 §5.1) ──
337
+ const journalPath = resolve(contextDir, CONTEXT_RELATIVE_PATHS.agent.journal);
338
+ const journalSnapshotKey = CONTEXT_RELATIVE_PATHS.agent.journal.replace(/\.md$/, "");
339
+ const journalResult = rollupAgentJournal(journalPath, AGENT_JOURNAL_ROLLUP.keepWeeklySections, AGENT_JOURNAL_ROLLUP.sectionSizeWarnBytes, AGENT_JOURNAL_ROLLUP.keepMonthlySections,
340
+ // Snapshot before destructive rollup so the pre-prune state is
341
+ // recoverable from md_file_snapshots, just like API PUT/PATCH writes.
342
+ (content) => {
343
+ db.prepare("INSERT INTO md_file_snapshots (file_path, content, trigger) VALUES (?, ?, ?)").run(journalSnapshotKey, content, "retention_rollup");
344
+ });
345
+ result.agentJournalWeeklyPruned = journalResult.weeklyPruned;
346
+ result.agentJournalMonthlyPruned = journalResult.monthlyPruned;
347
+ result.agentJournalDuplicatesCollapsed = journalResult.duplicatesCollapsed;
348
+ result.agentJournalOversizedSections = journalResult.oversizedSections;
349
+ logger.info(result, "Retention cleanup completed");
350
+ return result;
351
+ }
352
+ /**
353
+ * Compare two ISO week keys (`YYYY-Www` slugs) chronologically.
354
+ *
355
+ * Returns a negative number if `a` is older, a positive number if `a` is
356
+ * newer, zero if equal. Suitable as a sort comparator.
357
+ *
358
+ * Why not a plain string comparison? The `## Weekly YYYY-Www` header in
359
+ * `agent/journal.md` is written by an LLM following the review prompt.
360
+ * The prompt asks for zero-padded ISO week numbers, but compliance is
361
+ * probabilistic — the model may emit `2026-W5` instead of `2026-W05`,
362
+ * or a backfill may use a different convention. Lexicographic compare
363
+ * gets these wrong:
364
+ *
365
+ * "2026-W05" < "2026-W14" ✓ correct
366
+ * "2026-W14" < "2026-W5" ✗ wrong — W5 is chronologically earlier
367
+ *
368
+ * Parsing into `(year, weekNumber)` integers and comparing numerically
369
+ * fixes this without forcing the file to be rewritten into a canonical
370
+ * form (which would churn mtime on every rollup even when nothing real
371
+ * changed).
372
+ *
373
+ * ISO 8601 year boundaries are naturally handled: W52 of year N always
374
+ * parses as `{year: N, week: 52}` and W01 of year N+1 as `{year: N+1,
375
+ * week: 1}`, so the year field dominates the comparison. Years with 53
376
+ * ISO weeks (e.g. 2020, 2026) are handled identically — week 53 sorts
377
+ * after week 52 and before the next year's W01.
378
+ *
379
+ * If either key fails to parse (malformed input, unexpected format),
380
+ * the comparator falls back to a plain lexicographic string compare so
381
+ * sort still terminates with a stable ordering — it just may not be
382
+ * chronologically meaningful for that pair. The size-warning pass and
383
+ * dedup pass both still work correctly in that case.
384
+ */
385
+ export function compareWeeklyKey(a, b) {
386
+ const pa = parseWeeklyKey(a);
387
+ const pb = parseWeeklyKey(b);
388
+ if (pa === null || pb === null) {
389
+ // Defensive fallback — preserve sort stability for unexpected input
390
+ if (a === b)
391
+ return 0;
392
+ return a < b ? -1 : 1;
393
+ }
394
+ if (pa.year !== pb.year)
395
+ return pa.year - pb.year;
396
+ return pa.week - pb.week;
397
+ }
398
+ /**
399
+ * Parse an ISO week key like `2026-W14` or `2026-W5` into its numeric
400
+ * components. Returns null for anything that does not match the expected
401
+ * shape. Accepts 1-to-2-digit week numbers to tolerate the non-padded
402
+ * form; the week number is range-checked (1..53) to catch typos that
403
+ * happen to lex as digits.
404
+ */
405
+ function parseWeeklyKey(key) {
406
+ const match = key.match(/^(\d{4})-W(\d{1,2})$/);
407
+ if (!match)
408
+ return null;
409
+ const year = Number.parseInt(match[1], 10);
410
+ const week = Number.parseInt(match[2], 10);
411
+ if (!Number.isFinite(year) || !Number.isFinite(week))
412
+ return null;
413
+ if (week < 1 || week > 53)
414
+ return null;
415
+ return { year, week };
416
+ }
417
+ /**
418
+ * Compare two month keys (`YYYY-MM` slugs) chronologically.
419
+ *
420
+ * Same defensive parsing as `compareWeeklyKey` — the LLM may emit `2026-4`
421
+ * instead of `2026-04`, which lexicographic compare handles wrong
422
+ * (`"2026-4" > "2026-10"`). Falls back to lexicographic on parse failure.
423
+ */
424
+ export function compareMonthlyKey(a, b) {
425
+ const pa = parseMonthlyKey(a);
426
+ const pb = parseMonthlyKey(b);
427
+ if (pa === null || pb === null) {
428
+ if (a === b)
429
+ return 0;
430
+ return a < b ? -1 : 1;
431
+ }
432
+ if (pa.year !== pb.year)
433
+ return pa.year - pb.year;
434
+ return pa.month - pb.month;
435
+ }
436
+ /**
437
+ * Parse a month key like `2026-04` or `2026-4` into its numeric components.
438
+ * Returns null for anything that does not match. Accepts 1-to-2-digit months
439
+ * and range-checks (1..12).
440
+ */
441
+ function parseMonthlyKey(key) {
442
+ const match = key.match(/^(\d{4})-(\d{1,2})$/);
443
+ if (!match)
444
+ return null;
445
+ const year = Number.parseInt(match[1], 10);
446
+ const month = Number.parseInt(match[2], 10);
447
+ if (!Number.isFinite(year) || !Number.isFinite(month))
448
+ return null;
449
+ if (month < 1 || month > 12)
450
+ return null;
451
+ return { year, month };
452
+ }
453
+ function tableExists(db, table) {
454
+ const row = db
455
+ .prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?")
456
+ .get(table);
457
+ return row !== undefined;
458
+ }
459
+ function daysAgoIso(days) {
460
+ return new Date(Date.now() - days * 86_400_000).toISOString();
461
+ }
462
+ const OPTIONAL_RETENTION_TABLES = new Set([
463
+ "auth_telemetry_counters",
464
+ "parse_failures",
465
+ "management_parse_failures",
466
+ ]);
467
+ const OPTIONAL_RETENTION_COLUMNS = new Set(["bucket_hour", "created_at"]);
468
+ function deleteIsoOlderThanIfTableExists(db, table, dateColumn, days) {
469
+ if (!OPTIONAL_RETENTION_TABLES.has(table) || !OPTIONAL_RETENTION_COLUMNS.has(dateColumn)) {
470
+ throw new Error(`Invalid optional retention target: ${table}.${dateColumn}`);
471
+ }
472
+ if (!tableExists(db, table))
473
+ return 0;
474
+ const stmt = db.prepare(`DELETE FROM ${table} WHERE ${dateColumn} < ?`);
475
+ return stmt.run(daysAgoIso(days)).changes;
476
+ }
477
+ function deleteOlderThanButKeepLatestIfTableExists(db, table, dateColumn, days, keepLatest) {
478
+ if (!OPTIONAL_RETENTION_TABLES.has(table) || !OPTIONAL_RETENTION_COLUMNS.has(dateColumn)) {
479
+ throw new Error(`Invalid optional retention target: ${table}.${dateColumn}`);
480
+ }
481
+ if (!tableExists(db, table))
482
+ return 0;
483
+ const stmt = db.prepare(`DELETE FROM ${table}
484
+ WHERE ${dateColumn} < datetime('now', '-' || ? || ' days')
485
+ AND id NOT IN (
486
+ SELECT id FROM ${table}
487
+ ORDER BY id DESC
488
+ LIMIT ?
489
+ )`);
490
+ return stmt.run(days, keepLatest).changes;
491
+ }
492
+ function pruneMailMessagesIndex(db) {
493
+ if (!tableExists(db, "mail_messages_index"))
494
+ return 0;
495
+ return db
496
+ .prepare(`DELETE FROM mail_messages_index
497
+ WHERE (
498
+ deleted_at_utc IS NOT NULL
499
+ AND datetime(deleted_at_utc) < datetime('now', '-' || ? || ' days')
500
+ )
501
+ OR datetime(received_at_utc) < datetime('now', '-' || ? || ' days')`)
502
+ .run(RETENTION_DAYS.deletedMailMessagesIndex, RETENTION_DAYS.mailMessagesIndex).changes;
503
+ }
504
+ function abortStaleSkillCurationRuns(db) {
505
+ if (!tableExists(db, "skill_curation_runs"))
506
+ return 0;
507
+ const cutoff = Date.now() - RETENTION_DAYS.skillCurationRunningMaxHours * 60 * 60 * 1000;
508
+ return db
509
+ .prepare(`UPDATE skill_curation_runs
510
+ SET status = 'aborted',
511
+ finalized_at = ?,
512
+ notes = TRIM(COALESCE(notes || char(10), '') || ?)
513
+ WHERE status = 'running'
514
+ AND started_at < ?`)
515
+ .run(Date.now(), "aborted by retention: stale running optimizer run", cutoff).changes;
516
+ }
517
+ function pruneSkillCurationTables(db) {
518
+ let signals = 0;
519
+ let proposals = 0;
520
+ let runs = 0;
521
+ if (tableExists(db, "skill_curation_signals")) {
522
+ const unconsumedCutoff = Date.now() - RETENTION_DAYS.skillCurationSignals * 86_400_000;
523
+ const consumedCutoff = Date.now() - RETENTION_DAYS.skillCurationConsumedSignals * 86_400_000;
524
+ signals = db
525
+ .prepare(`DELETE FROM skill_curation_signals
526
+ WHERE (
527
+ consumed_at IS NOT NULL
528
+ AND consumed_at < ?
529
+ )
530
+ OR (
531
+ consumed_at IS NULL
532
+ AND observed_at < ?
533
+ )`)
534
+ .run(consumedCutoff, unconsumedCutoff).changes;
535
+ }
536
+ if (tableExists(db, "skill_curation_proposals")) {
537
+ const proposalCutoff = Date.now() - RETENTION_DAYS.skillCurationProposals * 86_400_000;
538
+ proposals = db
539
+ .prepare(`DELETE FROM skill_curation_proposals
540
+ WHERE proposed_at < ?`)
541
+ .run(proposalCutoff).changes;
542
+ }
543
+ if (tableExists(db, "skill_curation_runs")) {
544
+ const runCutoff = Date.now() - RETENTION_DAYS.skillCurationRuns * 86_400_000;
545
+ runs = db
546
+ .prepare(`DELETE FROM skill_curation_runs
547
+ WHERE status != 'running'
548
+ AND started_at < ?`)
549
+ .run(runCutoff).changes;
550
+ }
551
+ return { signals, proposals, runs };
552
+ }
553
+ function cleanupAttachments(db, dataDir) {
554
+ if (!tableExists(db, "chat_attachments")) {
555
+ return { orphanRows: 0, danglingRows: 0, untrackedDirs: 0 };
556
+ }
557
+ try {
558
+ const store = new AttachmentStore(db, dataDir);
559
+ const orphans = store.reapOrphans(24);
560
+ const danglingRows = store.reapDanglingMessageRefs();
561
+ const untrackedDirs = store.reapUntrackedDirs({ minAgeHours: 1 });
562
+ return {
563
+ orphanRows: orphans.inbound + orphans.outbound,
564
+ danglingRows,
565
+ untrackedDirs,
566
+ };
567
+ }
568
+ catch (err) {
569
+ logger.warn({ err }, "Attachment retention cleanup failed");
570
+ return { orphanRows: 0, danglingRows: 0, untrackedDirs: 0 };
571
+ }
572
+ }
573
+ /**
574
+ * Roll up `agent/journal.md` in place. Three independent passes applied in
575
+ * order to a single parsed section list:
576
+ *
577
+ * 1. **Dedup (last-write-wins).** If the same `## Weekly YYYY-Www` or
578
+ * `## Monthly YYYY-MM` appears more than once (e.g. the routine was
579
+ * re-run), keep only the section with the highest original index
580
+ * (most recent append) and drop the earlier copies.
581
+ * 2. **Age-based pruning.** After dedup, keep only the
582
+ * `keepWeeklySections` most recent `## Weekly YYYY-Www` sections and
583
+ * the `keepMonthlySections` most recent `## Monthly YYYY-MM` sections,
584
+ * sorted by their respective chronological keys.
585
+ * 3. **Size warning.** For each kept weekly or monthly section, if the
586
+ * UTF-8 byte length exceeds `sectionSizeWarnBytes`, log a warning.
587
+ * The content itself is never truncated — that would corrupt the
588
+ * agent's own reflection history mid-sentence. Operators should
589
+ * investigate the review prompt instead.
590
+ *
591
+ * Any H2 section that is neither `Weekly` nor `Monthly` is preserved
592
+ * untouched — a stray user-added `## Scratchpad` does not get eaten.
593
+ * Preamble above the first H2 (e.g. `# Agent Journal` header) is
594
+ * preserved verbatim.
595
+ *
596
+ * If the file does not exist, the function returns a zero result without
597
+ * touching the filesystem. If nothing would change (no dedup, no pruning),
598
+ * the file is not rewritten — avoiding unnecessary snapshot noise and
599
+ * mtime churn — but the size warning is still computed so the operator
600
+ * still sees bloated sections.
601
+ */
602
+ export function rollupAgentJournal(filePath, keepWeeklySections, sectionSizeWarnBytes = AGENT_JOURNAL_ROLLUP.sectionSizeWarnBytes, keepMonthlySections = AGENT_JOURNAL_ROLLUP.keepMonthlySections,
603
+ /**
604
+ * Optional callback invoked with the current file content just before
605
+ * the rollup writes the pruned version. The caller can use this to save
606
+ * a snapshot (e.g. to `md_file_snapshots`) so the pre-rollup state is
607
+ * recoverable if the rollup logic has a bug. If the callback throws,
608
+ * the rollup still proceeds — snapshot failure should not block cleanup.
609
+ */
610
+ onBeforeWrite) {
611
+ const empty = {
612
+ weeklyPruned: 0,
613
+ monthlyPruned: 0,
614
+ duplicatesCollapsed: 0,
615
+ oversizedSections: 0,
616
+ };
617
+ let content;
618
+ try {
619
+ content = readFileSync(filePath, "utf-8");
620
+ }
621
+ catch {
622
+ return empty; // File does not exist
623
+ }
624
+ const lines = content.split("\n");
625
+ const sectionStartLines = [];
626
+ for (let i = 0; i < lines.length; i++) {
627
+ if (lines[i].startsWith("## "))
628
+ sectionStartLines.push(i);
629
+ }
630
+ if (sectionStartLines.length === 0) {
631
+ return empty; // No H2 sections — nothing to roll up
632
+ }
633
+ const preamble = lines.slice(0, sectionStartLines[0]).join("\n");
634
+ const sections = [];
635
+ for (let i = 0; i < sectionStartLines.length; i++) {
636
+ const start = sectionStartLines[i];
637
+ const end = i + 1 < sectionStartLines.length ? sectionStartLines[i + 1] : lines.length;
638
+ const text = lines.slice(start, end).join("\n");
639
+ const header = lines[start];
640
+ const weeklyMatch = header.match(/^##\s+Weekly\s+(\S+)/);
641
+ const monthlyMatch = header.match(/^##\s+Monthly\s+(\S+)/);
642
+ if (weeklyMatch) {
643
+ sections.push({
644
+ kind: "weekly",
645
+ key: weeklyMatch[1],
646
+ originalIndex: i,
647
+ text,
648
+ });
649
+ }
650
+ else if (monthlyMatch) {
651
+ sections.push({
652
+ kind: "monthly",
653
+ key: monthlyMatch[1],
654
+ originalIndex: i,
655
+ text,
656
+ });
657
+ }
658
+ else {
659
+ sections.push({ kind: "other", key: "", originalIndex: i, text });
660
+ }
661
+ }
662
+ // ── Pass 1: dedup by (kind, key), last-write-wins ──
663
+ //
664
+ // Keep the highest originalIndex for each (kind, key). Drop the earlier
665
+ // copies. "other" sections never participate in dedup.
666
+ const latestByKey = new Map();
667
+ for (const s of sections) {
668
+ if (s.kind === "other")
669
+ continue;
670
+ const k = `${s.kind}:${s.key}`;
671
+ const prev = latestByKey.get(k);
672
+ if (prev === undefined || s.originalIndex > prev) {
673
+ latestByKey.set(k, s.originalIndex);
674
+ }
675
+ }
676
+ let duplicatesCollapsed = 0;
677
+ const afterDedup = [];
678
+ for (const s of sections) {
679
+ if (s.kind === "other") {
680
+ afterDedup.push(s);
681
+ continue;
682
+ }
683
+ const k = `${s.kind}:${s.key}`;
684
+ if (latestByKey.get(k) === s.originalIndex) {
685
+ afterDedup.push(s);
686
+ }
687
+ else {
688
+ duplicatesCollapsed++;
689
+ }
690
+ }
691
+ // ── Pass 2: age-based pruning of weekly and monthly sections ──
692
+ //
693
+ // After dedup, each key appears at most once per kind. Sort
694
+ // chronologically by parsed numeric keys and keep the most recent N.
695
+ const dedupedWeeklies = afterDedup.filter((s) => s.kind === "weekly");
696
+ let weeklyPruned = 0;
697
+ let keepWeeklyIndices;
698
+ if (dedupedWeeklies.length <= keepWeeklySections) {
699
+ keepWeeklyIndices = new Set(dedupedWeeklies.map((s) => s.originalIndex));
700
+ }
701
+ else {
702
+ const sortedWeeklies = [...dedupedWeeklies].sort((a, b) => {
703
+ const cmp = compareWeeklyKey(a.key, b.key);
704
+ if (cmp !== 0)
705
+ return cmp;
706
+ return a.originalIndex - b.originalIndex;
707
+ });
708
+ keepWeeklyIndices = new Set(sortedWeeklies.slice(-keepWeeklySections).map((s) => s.originalIndex));
709
+ weeklyPruned = dedupedWeeklies.length - keepWeeklyIndices.size;
710
+ }
711
+ // Monthly pruning — same logic as weekly but using YYYY-MM keys.
712
+ const dedupedMonthlies = afterDedup.filter((s) => s.kind === "monthly");
713
+ let monthlyPruned = 0;
714
+ let keepMonthlyIndices;
715
+ if (dedupedMonthlies.length <= keepMonthlySections) {
716
+ keepMonthlyIndices = new Set(dedupedMonthlies.map((s) => s.originalIndex));
717
+ }
718
+ else {
719
+ const sortedMonthlies = [...dedupedMonthlies].sort((a, b) => {
720
+ const cmp = compareMonthlyKey(a.key, b.key);
721
+ if (cmp !== 0)
722
+ return cmp;
723
+ return a.originalIndex - b.originalIndex;
724
+ });
725
+ keepMonthlyIndices = new Set(sortedMonthlies.slice(-keepMonthlySections).map((s) => s.originalIndex));
726
+ monthlyPruned = dedupedMonthlies.length - keepMonthlyIndices.size;
727
+ }
728
+ const finalKept = afterDedup.filter((s) => {
729
+ if (s.kind === "weekly")
730
+ return keepWeeklyIndices.has(s.originalIndex);
731
+ if (s.kind === "monthly")
732
+ return keepMonthlyIndices.has(s.originalIndex);
733
+ return true; // "other" preserved
734
+ });
735
+ // ── Pass 3: size warning on kept weekly/monthly sections ──
736
+ //
737
+ // Non-destructive: we log, but never truncate. Mid-sentence truncation
738
+ // of the agent's own self-reflection would be worse than the bloat.
739
+ let oversizedSections = 0;
740
+ for (const s of finalKept) {
741
+ if (s.kind === "other")
742
+ continue;
743
+ const bytes = Buffer.byteLength(s.text, "utf-8");
744
+ if (bytes > sectionSizeWarnBytes) {
745
+ oversizedSections++;
746
+ logger.warn({
747
+ file: filePath,
748
+ sectionKind: s.kind,
749
+ sectionKey: s.key,
750
+ bytes,
751
+ thresholdBytes: sectionSizeWarnBytes,
752
+ }, "agent-journal section exceeds size threshold — review prompt bullet caps may be ignored");
753
+ }
754
+ }
755
+ // ── Skip rewrite if nothing changed ──
756
+ //
757
+ // The file is only rewritten when dedup OR age-based pruning modified
758
+ // the section list. The size warning alone never triggers a rewrite —
759
+ // it is observability only. This avoids snapshot-table noise on quiet
760
+ // days and keeps mtime stable for the dashboard's optimistic concurrency.
761
+ if (duplicatesCollapsed === 0 && weeklyPruned === 0 && monthlyPruned === 0) {
762
+ return {
763
+ weeklyPruned: 0,
764
+ monthlyPruned: 0,
765
+ duplicatesCollapsed: 0,
766
+ oversizedSections,
767
+ };
768
+ }
769
+ const rebuilt = [
770
+ preamble.length > 0 ? preamble.replace(/\n+$/, "") : "",
771
+ ...finalKept.map((s) => s.text.replace(/\n+$/, "")),
772
+ ]
773
+ .filter((chunk, idx) => chunk.length > 0 || idx === 0)
774
+ .join("\n\n")
775
+ // Preserve a trailing newline if the original file had one
776
+ + (content.endsWith("\n") ? "\n" : "");
777
+ // Snapshot the pre-rollup content so the operator can restore if
778
+ // the rollup logic over-prunes. This mirrors the snapshot behavior
779
+ // of the Context API's PUT/PATCH paths — the rollup was previously
780
+ // the only write path that bypassed the snapshot system.
781
+ if (onBeforeWrite) {
782
+ try {
783
+ onBeforeWrite(content);
784
+ }
785
+ catch (err) {
786
+ logger.warn({ err, file: filePath }, "Pre-rollup snapshot failed — proceeding with rollup anyway");
787
+ }
788
+ }
789
+ try {
790
+ writeFileSync(filePath, rebuilt, "utf-8");
791
+ logger.debug({
792
+ file: filePath,
793
+ weeklyPruned,
794
+ monthlyPruned,
795
+ duplicatesCollapsed,
796
+ oversizedSections,
797
+ }, "Rolled up agent-journal");
798
+ }
799
+ catch (err) {
800
+ logger.warn({ err, file: filePath }, "Failed to write rolled-up agent-journal — leaving file untouched");
801
+ return empty;
802
+ }
803
+ return { weeklyPruned, monthlyPruned, duplicatesCollapsed, oversizedSections };
804
+ }
805
+ /**
806
+ * Read-only health check for `agent/journal.md`. Returns section counts and
807
+ * any oversized sections without modifying the file. Intended for the health
808
+ * endpoint so the dashboard can surface journal bloat without requiring the
809
+ * operator to watch structured logs.
810
+ */
811
+ export function checkAgentJournalHealth(filePath, sectionSizeWarnBytes = AGENT_JOURNAL_ROLLUP.sectionSizeWarnBytes) {
812
+ const empty = { exists: false, weeklySections: 0, monthlySections: 0, oversizedSections: [] };
813
+ let content;
814
+ try {
815
+ content = readFileSync(filePath, "utf-8");
816
+ }
817
+ catch {
818
+ return empty;
819
+ }
820
+ const lines = content.split("\n");
821
+ let weeklySections = 0;
822
+ let monthlySections = 0;
823
+ const oversizedSections = [];
824
+ // Find all H2 section boundaries
825
+ const sectionStarts = [];
826
+ for (let i = 0; i < lines.length; i++) {
827
+ if (lines[i].startsWith("## "))
828
+ sectionStarts.push(i);
829
+ }
830
+ for (let i = 0; i < sectionStarts.length; i++) {
831
+ const start = sectionStarts[i];
832
+ const end = i + 1 < sectionStarts.length ? sectionStarts[i + 1] : lines.length;
833
+ const header = lines[start];
834
+ const sectionText = lines.slice(start, end).join("\n");
835
+ const isWeekly = /^##\s+Weekly\s+/.test(header);
836
+ const isMonthly = /^##\s+Monthly\s+/.test(header);
837
+ if (isWeekly)
838
+ weeklySections++;
839
+ if (isMonthly)
840
+ monthlySections++;
841
+ if ((isWeekly || isMonthly) && Buffer.byteLength(sectionText, "utf-8") > sectionSizeWarnBytes) {
842
+ const key = header.replace(/^##\s+/, "").trim();
843
+ oversizedSections.push(key);
844
+ }
845
+ }
846
+ return { exists: true, weeklySections, monthlySections, oversizedSections };
847
+ }
848
+ /** Allowed tables and columns for retention cleanup (defense-in-depth against SQL injection) */
849
+ const ALLOWED_TABLES = new Set([
850
+ "md_file_snapshots",
851
+ "messages",
852
+ "agent_actions",
853
+ "notification_log",
854
+ "conversation_sessions",
855
+ "dm_conversation_log",
856
+ ]);
857
+ const ALLOWED_COLUMNS = new Set(["created_at", "timestamp", "started_at", "last_message_at"]);
858
+ /** Delete rows older than N days from a table */
859
+ function deleteOlderThan(db, table, dateColumn, days) {
860
+ // Whitelist validation — these values come from hardcoded constants above,
861
+ // but we validate anyway as defense-in-depth
862
+ if (!ALLOWED_TABLES.has(table) || !ALLOWED_COLUMNS.has(dateColumn)) {
863
+ throw new Error(`Invalid retention target: ${table}.${dateColumn}`);
864
+ }
865
+ // table/dateColumn are whitelist-validated above (not user input), safe to interpolate.
866
+ // days is parameterized to maintain prepared-statement discipline.
867
+ const stmt = db.prepare(`DELETE FROM ${table} WHERE ${dateColumn} < datetime('now', '-' || ? || ' days')`);
868
+ const { changes } = stmt.run(days);
869
+ if (changes > 0) {
870
+ logger.debug({ table, deleted: changes, retentionDays: days }, "Cleaned up table");
871
+ }
872
+ return changes;
873
+ }
874
+ /** Remove .md files older than N days from a directory */
875
+ function cleanOldFiles(dir, days) {
876
+ let deleted = 0;
877
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
878
+ let entries;
879
+ try {
880
+ entries = readdirSync(dir);
881
+ }
882
+ catch {
883
+ return 0; // Directory doesn't exist
884
+ }
885
+ for (const entry of entries) {
886
+ if (extname(entry) !== ".md")
887
+ continue;
888
+ const filePath = resolve(dir, entry);
889
+ try {
890
+ const stat = statSync(filePath);
891
+ if (stat.mtimeMs < cutoff) {
892
+ unlinkSync(filePath);
893
+ deleted++;
894
+ logger.debug({ file: entry }, "Removed expired file");
895
+ }
896
+ }
897
+ catch (err) {
898
+ logger.warn({ err, file: entry, dir }, "Failed to stat/remove expired file — will retry next run");
899
+ }
900
+ }
901
+ return deleted;
902
+ }
903
+ /** Remove files/directories from the daemon-owned tmp dir after a short TTL. */
904
+ function cleanTempFiles(dir, days) {
905
+ let deleted = 0;
906
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
907
+ let entries;
908
+ try {
909
+ entries = readdirSync(dir);
910
+ }
911
+ catch {
912
+ return 0;
913
+ }
914
+ for (const entry of entries) {
915
+ const filePath = resolve(dir, entry);
916
+ try {
917
+ const stat = statSync(filePath);
918
+ if (stat.mtimeMs >= cutoff)
919
+ continue;
920
+ rmSync(filePath, { recursive: true, force: true });
921
+ deleted++;
922
+ }
923
+ catch (err) {
924
+ logger.warn({ err, file: entry, dir }, "Failed to remove expired tmp entry — will retry next run");
925
+ }
926
+ }
927
+ return deleted;
928
+ }
929
+ const ATOMIC_WRITE_TEMP_RE = /\.tmp\.\d+\.[0-9a-f]{16}$/;
930
+ const ATOMIC_TEMP_RECURSIVE_CONTEXT_DIRS = [
931
+ "agent",
932
+ "daily",
933
+ "git",
934
+ "rules",
935
+ "weekly",
936
+ ];
937
+ /**
938
+ * Remove sidecar temp files left by writeFileAtomically after a failed unlink.
939
+ * The pattern is intentionally exact so retention does not touch arbitrary
940
+ * user-authored files under the context tree. We also keep the scan bounded:
941
+ * the active context can be a user's primary knowledge vault, so retention only
942
+ * scans the root plus known daemon-managed subtrees instead of walking the whole
943
+ * vault.
944
+ */
945
+ function cleanAtomicTempFiles(dir, days) {
946
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
947
+ let deleted = cleanAtomicTempFilesInner(dir, cutoff, false);
948
+ for (const child of ATOMIC_TEMP_RECURSIVE_CONTEXT_DIRS) {
949
+ deleted += cleanAtomicTempFilesInner(resolve(dir, child), cutoff, true);
950
+ }
951
+ return deleted;
952
+ }
953
+ function cleanAtomicTempFilesInner(dir, cutoff, recursive) {
954
+ let entries;
955
+ try {
956
+ entries = readdirSync(dir, { withFileTypes: true });
957
+ }
958
+ catch {
959
+ return 0;
960
+ }
961
+ let deleted = 0;
962
+ for (const entry of entries) {
963
+ const filePath = resolve(dir, entry.name);
964
+ if (entry.isDirectory()) {
965
+ if (recursive) {
966
+ deleted += cleanAtomicTempFilesInner(filePath, cutoff, true);
967
+ }
968
+ continue;
969
+ }
970
+ if (!entry.isFile())
971
+ continue;
972
+ if (!ATOMIC_WRITE_TEMP_RE.test(entry.name))
973
+ continue;
974
+ try {
975
+ const stat = statSync(filePath);
976
+ if (stat.mtimeMs >= cutoff)
977
+ continue;
978
+ unlinkSync(filePath);
979
+ deleted++;
980
+ }
981
+ catch (err) {
982
+ logger.warn({ err, file: entry.name, dir }, "Failed to remove atomic temp file — will retry next run");
983
+ }
984
+ }
985
+ return deleted;
986
+ }
987
+ /**
988
+ * Walk `<contextDir>/git/<slug>/journal/` directories and prune `.md`
989
+ * entries older than `days`. The `git/<slug>/overview.md` files are
990
+ * permanent — never touched here. See
991
+ * `docs/design/appendices/unified-repositories.md` §4.5.
992
+ */
993
+ function cleanGitJournals(gitDir, days) {
994
+ let deleted = 0;
995
+ let slugDirs;
996
+ try {
997
+ slugDirs = readdirSync(gitDir);
998
+ }
999
+ catch {
1000
+ return 0;
1001
+ }
1002
+ for (const slug of slugDirs) {
1003
+ const journalDir = resolve(gitDir, slug, "journal");
1004
+ deleted += cleanOldFiles(journalDir, days);
1005
+ }
1006
+ return deleted;
1007
+ }
1008
+ //# sourceMappingURL=retention.js.map