@aitne/daemon 0.1.8 → 0.1.9

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 (2328) hide show
  1. package/dist/adapters/composite-dashboard-stream.d.ts +8 -11
  2. package/dist/adapters/composite-dashboard-stream.js +8 -11
  3. package/dist/adapters/dashboard-adapter.d.ts +6 -10
  4. package/dist/adapters/dashboard-adapter.js +6 -10
  5. package/dist/adapters/discord.d.ts +5 -6
  6. package/dist/adapters/discord.js +14 -17
  7. package/dist/adapters/docs-qa-adapter.d.ts +15 -16
  8. package/dist/adapters/docs-qa-adapter.js +14 -15
  9. package/dist/adapters/message-hub.d.ts +2 -3
  10. package/dist/adapters/message-hub.js +2 -2
  11. package/dist/adapters/notification-manager.d.ts +26 -29
  12. package/dist/adapters/notification-manager.js +63 -62
  13. package/dist/adapters/outbound-text.d.ts +3 -6
  14. package/dist/adapters/outbound-text.js +3 -6
  15. package/dist/adapters/primary-platform-resolver.d.ts +0 -1
  16. package/dist/adapters/primary-platform-resolver.js +0 -1
  17. package/dist/adapters/slack-adapter.d.ts +7 -8
  18. package/dist/adapters/slack-adapter.js +18 -29
  19. package/dist/adapters/telegram-adapter.d.ts +6 -9
  20. package/dist/adapters/telegram-adapter.js +18 -28
  21. package/dist/adapters/types.d.ts +3 -4
  22. package/dist/adapters/types.js +0 -1
  23. package/dist/adapters/whatsapp-adapter.d.ts +71 -18
  24. package/dist/adapters/whatsapp-adapter.js +225 -73
  25. package/dist/api/chat-binding-query.d.ts +0 -1
  26. package/dist/api/chat-binding-query.js +0 -1
  27. package/dist/api/chat-session-resume.d.ts +0 -1
  28. package/dist/api/chat-session-resume.js +0 -1
  29. package/dist/api/directory-picker.d.ts +0 -1
  30. package/dist/api/directory-picker.js +0 -1
  31. package/dist/api/env-writer.d.ts +0 -1
  32. package/dist/api/env-writer.js +102 -4
  33. package/dist/api/helpers/agent-errors-envelope.d.ts +116 -0
  34. package/dist/api/helpers/agent-errors-envelope.js +165 -0
  35. package/dist/api/helpers/agent-errors-registry.d.ts +2290 -0
  36. package/dist/api/helpers/agent-errors-registry.js +2197 -0
  37. package/dist/api/helpers/agent-errors-types.d.ts +193 -0
  38. package/dist/api/helpers/agent-errors-types.js +15 -0
  39. package/dist/api/helpers/agent-errors-zod.d.ts +33 -0
  40. package/dist/api/helpers/agent-errors-zod.js +138 -0
  41. package/dist/api/helpers/agent-errors.d.ts +4 -2600
  42. package/dist/api/helpers/agent-errors.js +15 -2504
  43. package/dist/api/integration-route-gate.d.ts +0 -1
  44. package/dist/api/integration-route-gate.js +0 -1
  45. package/dist/api/json-body.d.ts +3 -4
  46. package/dist/api/json-body.js +3 -4
  47. package/dist/api/routes/activity-sources.d.ts +1 -2
  48. package/dist/api/routes/activity-sources.js +0 -1
  49. package/dist/api/routes/agent-schedule-plan-match.d.ts +0 -1
  50. package/dist/api/routes/agent-schedule-plan-match.js +0 -1
  51. package/dist/api/routes/agent-schedule.d.ts +0 -1
  52. package/dist/api/routes/agent-schedule.js +59 -19
  53. package/dist/api/routes/agent.d.ts +0 -1
  54. package/dist/api/routes/agent.js +25 -2
  55. package/dist/api/routes/agents/index.d.ts +3 -0
  56. package/dist/api/routes/agents/index.js +404 -0
  57. package/dist/api/routes/agents/views.d.ts +185 -0
  58. package/dist/api/routes/agents/views.js +514 -0
  59. package/dist/api/routes/apple-calendar.d.ts +1 -2
  60. package/dist/api/routes/apple-calendar.js +1 -2
  61. package/dist/api/routes/attachments.d.ts +0 -1
  62. package/dist/api/routes/attachments.js +0 -1
  63. package/dist/api/routes/backends.d.ts +0 -1
  64. package/dist/api/routes/backends.js +44 -36
  65. package/dist/api/routes/books.d.ts +0 -1
  66. package/dist/api/routes/books.js +7 -8
  67. package/dist/api/routes/browser-automation-purchase.d.ts +31 -0
  68. package/dist/api/routes/browser-automation-purchase.js +251 -0
  69. package/dist/api/routes/browser-automation-sites.d.ts +22 -0
  70. package/dist/api/routes/browser-automation-sites.js +238 -0
  71. package/dist/api/routes/browser-history-managed.d.ts +23 -0
  72. package/dist/api/routes/browser-history-managed.js +202 -0
  73. package/dist/api/routes/browser-history.d.ts +3 -0
  74. package/dist/api/routes/browser-history.js +433 -0
  75. package/dist/api/routes/browser-task.d.ts +43 -0
  76. package/dist/api/routes/browser-task.js +617 -0
  77. package/dist/api/routes/calendar.d.ts +0 -1
  78. package/dist/api/routes/calendar.js +0 -1
  79. package/dist/api/routes/commands.d.ts +0 -1
  80. package/dist/api/routes/commands.js +10 -4
  81. package/dist/api/routes/context/frontmatter-merge.d.ts +28 -0
  82. package/dist/api/routes/context/frontmatter-merge.js +56 -0
  83. package/dist/api/routes/context/index.d.ts +12 -5
  84. package/dist/api/routes/context/index.js +1 -20
  85. package/dist/api/routes/context/locks.d.ts +0 -1
  86. package/dist/api/routes/context/locks.js +14 -14
  87. package/dist/api/routes/context/path-resolve.d.ts +12 -1
  88. package/dist/api/routes/context/path-resolve.js +23 -7
  89. package/dist/api/routes/context/permissions.d.ts +24 -1
  90. package/dist/api/routes/context/permissions.js +105 -63
  91. package/dist/api/routes/context/read.d.ts +0 -1
  92. package/dist/api/routes/context/read.js +61 -50
  93. package/dist/api/routes/context/repair.d.ts +0 -1
  94. package/dist/api/routes/context/repair.js +3 -3
  95. package/dist/api/routes/context/snapshots.d.ts +0 -1
  96. package/dist/api/routes/context/snapshots.js +44 -13
  97. package/dist/api/routes/context/write-step.d.ts +132 -0
  98. package/dist/api/routes/context/write-step.js +151 -0
  99. package/dist/api/routes/context/write.d.ts +0 -1
  100. package/dist/api/routes/context/write.js +297 -86
  101. package/dist/api/routes/dashboard/config.d.ts +0 -1
  102. package/dist/api/routes/dashboard/config.js +10 -2
  103. package/dist/api/routes/dashboard/conversations.d.ts +0 -1
  104. package/dist/api/routes/dashboard/conversations.js +0 -1
  105. package/dist/api/routes/dashboard/cost-approvals.d.ts +0 -1
  106. package/dist/api/routes/dashboard/cost-approvals.js +0 -1
  107. package/dist/api/routes/dashboard/index.d.ts +0 -1
  108. package/dist/api/routes/dashboard/index.js +0 -1
  109. package/dist/api/routes/dashboard/messaging.d.ts +0 -1
  110. package/dist/api/routes/dashboard/messaging.js +2 -4
  111. package/dist/api/routes/dashboard/notifications.d.ts +0 -1
  112. package/dist/api/routes/dashboard/notifications.js +0 -1
  113. package/dist/api/routes/dashboard/oauth-google.d.ts +0 -1
  114. package/dist/api/routes/dashboard/oauth-google.js +9 -14
  115. package/dist/api/routes/dashboard/schedule-readonly.d.ts +0 -1
  116. package/dist/api/routes/dashboard/schedule-readonly.js +11 -3
  117. package/dist/api/routes/dashboard/secrets.d.ts +0 -1
  118. package/dist/api/routes/dashboard/secrets.js +0 -1
  119. package/dist/api/routes/dashboard/snapshots.d.ts +0 -1
  120. package/dist/api/routes/dashboard/snapshots.js +0 -1
  121. package/dist/api/routes/delegated-sync.d.ts +0 -1
  122. package/dist/api/routes/delegated-sync.js +0 -1
  123. package/dist/api/routes/delegated.d.ts +0 -1
  124. package/dist/api/routes/delegated.js +0 -1
  125. package/dist/api/routes/docs.d.ts +0 -1
  126. package/dist/api/routes/docs.js +0 -1
  127. package/dist/api/routes/entities.d.ts +0 -1
  128. package/dist/api/routes/entities.js +3 -3
  129. package/dist/api/routes/fs.d.ts +0 -1
  130. package/dist/api/routes/fs.js +0 -1
  131. package/dist/api/routes/fs.logic.d.ts +0 -1
  132. package/dist/api/routes/fs.logic.js +6 -2
  133. package/dist/api/routes/git-accounts.d.ts +0 -1
  134. package/dist/api/routes/git-accounts.js +0 -1
  135. package/dist/api/routes/git-templates.d.ts +0 -1
  136. package/dist/api/routes/git-templates.js +7 -2
  137. package/dist/api/routes/git.d.ts +0 -1
  138. package/dist/api/routes/git.js +9 -4
  139. package/dist/api/routes/github.d.ts +0 -1
  140. package/dist/api/routes/github.js +20 -7
  141. package/dist/api/routes/health.d.ts +0 -1
  142. package/dist/api/routes/health.js +4 -3
  143. package/dist/api/routes/integrations/crud-patch.d.ts +0 -1
  144. package/dist/api/routes/integrations/crud-patch.js +53 -15
  145. package/dist/api/routes/integrations/crud.d.ts +0 -1
  146. package/dist/api/routes/integrations/crud.js +0 -1
  147. package/dist/api/routes/integrations/exec.d.ts +0 -1
  148. package/dist/api/routes/integrations/exec.js +8 -15
  149. package/dist/api/routes/integrations/index.d.ts +0 -1
  150. package/dist/api/routes/integrations/index.js +0 -1
  151. package/dist/api/routes/integrations/probe.d.ts +0 -1
  152. package/dist/api/routes/integrations/probe.js +0 -1
  153. package/dist/api/routes/integrations-reconcile.d.ts +0 -1
  154. package/dist/api/routes/integrations-reconcile.js +0 -1
  155. package/dist/api/routes/knowledge.d.ts +0 -1
  156. package/dist/api/routes/knowledge.js +1 -2
  157. package/dist/api/routes/mail/accounts.d.ts +0 -1
  158. package/dist/api/routes/mail/accounts.js +0 -1
  159. package/dist/api/routes/mail/app-password.d.ts +0 -1
  160. package/dist/api/routes/mail/app-password.js +0 -1
  161. package/dist/api/routes/mail/body-helpers.d.ts +0 -1
  162. package/dist/api/routes/mail/body-helpers.js +0 -1
  163. package/dist/api/routes/mail/dependencies.d.ts +0 -1
  164. package/dist/api/routes/mail/dependencies.js +0 -1
  165. package/dist/api/routes/mail/drafts.d.ts +0 -1
  166. package/dist/api/routes/mail/drafts.js +0 -1
  167. package/dist/api/routes/mail/gating.d.ts +0 -1
  168. package/dist/api/routes/mail/gating.js +0 -1
  169. package/dist/api/routes/mail/index.d.ts +0 -1
  170. package/dist/api/routes/mail/index.js +0 -1
  171. package/dist/api/routes/mail/messages.d.ts +0 -1
  172. package/dist/api/routes/mail/messages.js +0 -1
  173. package/dist/api/routes/mail/outlook-config.d.ts +0 -1
  174. package/dist/api/routes/mail/outlook-config.js +0 -1
  175. package/dist/api/routes/mail/provider-resolver.d.ts +2 -3
  176. package/dist/api/routes/mail/provider-resolver.js +0 -1
  177. package/dist/api/routes/mail/providers.d.ts +0 -1
  178. package/dist/api/routes/mail/providers.js +0 -1
  179. package/dist/api/routes/mail/search-health.d.ts +0 -1
  180. package/dist/api/routes/mail/search-health.js +0 -1
  181. package/dist/api/routes/mail/tags-folders.d.ts +0 -1
  182. package/dist/api/routes/mail/tags-folders.js +0 -1
  183. package/dist/api/routes/mail/validators.d.ts +0 -1
  184. package/dist/api/routes/mail/validators.js +0 -1
  185. package/dist/api/routes/managed-tasks.d.ts +0 -1
  186. package/dist/api/routes/managed-tasks.js +12 -9
  187. package/dist/api/routes/mcp.d.ts +0 -1
  188. package/dist/api/routes/mcp.js +0 -1
  189. package/dist/api/routes/metrics.d.ts +0 -1
  190. package/dist/api/routes/metrics.js +0 -1
  191. package/dist/api/routes/notion.d.ts +0 -1
  192. package/dist/api/routes/notion.js +5 -2
  193. package/dist/api/routes/observations.d.ts +0 -1
  194. package/dist/api/routes/observations.js +13 -15
  195. package/dist/api/routes/obsidian.d.ts +0 -1
  196. package/dist/api/routes/obsidian.js +0 -1
  197. package/dist/api/routes/profile-questions.d.ts +0 -1
  198. package/dist/api/routes/profile-questions.js +7 -2
  199. package/dist/api/routes/receipts.d.ts +0 -1
  200. package/dist/api/routes/receipts.js +0 -1
  201. package/dist/api/routes/recurring-schedules.d.ts +0 -1
  202. package/dist/api/routes/recurring-schedules.js +45 -2
  203. package/dist/api/routes/repositories.d.ts +0 -1
  204. package/dist/api/routes/repositories.js +0 -1
  205. package/dist/api/routes/schedule-model-resolver.d.ts +0 -1
  206. package/dist/api/routes/schedule-model-resolver.js +6 -3
  207. package/dist/api/routes/schedule-options.d.ts +0 -1
  208. package/dist/api/routes/schedule-options.js +0 -1
  209. package/dist/api/routes/schedule-validation.d.ts +3 -4
  210. package/dist/api/routes/schedule-validation.js +4 -5
  211. package/dist/api/routes/setup-migrate.d.ts +0 -1
  212. package/dist/api/routes/setup-migrate.js +6 -4
  213. package/dist/api/routes/setup.d.ts +0 -1
  214. package/dist/api/routes/setup.js +42 -1
  215. package/dist/api/routes/skill-curation.d.ts +0 -1
  216. package/dist/api/routes/skill-curation.js +0 -1
  217. package/dist/api/routes/skills.d.ts +2 -1
  218. package/dist/api/routes/skills.js +11 -3
  219. package/dist/api/routes/sot-bindings.d.ts +1 -2
  220. package/dist/api/routes/sot-bindings.js +0 -1
  221. package/dist/api/routes/sse.d.ts +0 -1
  222. package/dist/api/routes/sse.js +3 -4
  223. package/dist/api/routes/system.d.ts +0 -1
  224. package/dist/api/routes/system.js +0 -1
  225. package/dist/api/routes/task-flows.d.ts +0 -1
  226. package/dist/api/routes/task-flows.js +0 -1
  227. package/dist/api/routes/travel-bookings.d.ts +0 -1
  228. package/dist/api/routes/travel-bookings.js +0 -1
  229. package/dist/api/routes/triggers.d.ts +0 -1
  230. package/dist/api/routes/triggers.js +0 -1
  231. package/dist/api/routes/voice.d.ts +0 -1
  232. package/dist/api/routes/voice.js +0 -1
  233. package/dist/api/routes/wiki.d.ts +0 -1
  234. package/dist/api/routes/wiki.js +35 -9
  235. package/dist/api/server.d.ts +41 -4
  236. package/dist/api/server.js +44 -12
  237. package/dist/bootstrap/adapters.d.ts +0 -1
  238. package/dist/bootstrap/adapters.js +0 -1
  239. package/dist/bootstrap/api.d.ts +16 -2
  240. package/dist/bootstrap/api.js +61 -2
  241. package/dist/bootstrap/catchup.d.ts +0 -1
  242. package/dist/bootstrap/catchup.js +1 -2
  243. package/dist/bootstrap/db.d.ts +104 -10
  244. package/dist/bootstrap/db.js +339 -16
  245. package/dist/bootstrap/event-pipeline.d.ts +22 -1
  246. package/dist/bootstrap/event-pipeline.js +507 -8
  247. package/dist/bootstrap/managed-chromium.d.ts +26 -0
  248. package/dist/bootstrap/managed-chromium.js +66 -0
  249. package/dist/bootstrap/observers.d.ts +0 -1
  250. package/dist/bootstrap/observers.js +29 -1
  251. package/dist/bootstrap/schedule-helpers.d.ts +0 -1
  252. package/dist/bootstrap/schedule-helpers.js +4 -2
  253. package/dist/bootstrap/services.d.ts +0 -1
  254. package/dist/bootstrap/services.js +1 -11
  255. package/dist/config.d.ts +1 -2
  256. package/dist/config.js +12 -12
  257. package/dist/core/abort-utils.d.ts +0 -1
  258. package/dist/core/abort-utils.js +0 -1
  259. package/dist/core/agent-core.d.ts +14 -1
  260. package/dist/core/agent-core.js +0 -1
  261. package/dist/core/agent-execution-recorder.d.ts +78 -0
  262. package/dist/core/agent-execution-recorder.js +60 -0
  263. package/dist/core/agents/agent-execution-tracker.d.ts +91 -0
  264. package/dist/core/agents/agent-execution-tracker.js +226 -0
  265. package/dist/core/agents/agent-frontmatter.d.ts +57 -0
  266. package/dist/core/agents/agent-frontmatter.js +74 -0
  267. package/dist/core/agents/agent-id-resolver.d.ts +47 -0
  268. package/dist/core/agents/agent-id-resolver.js +61 -0
  269. package/dist/core/agents/builtin-registry.d.ts +156 -0
  270. package/dist/core/agents/builtin-registry.js +257 -0
  271. package/dist/core/agents/cron-substitute.d.ts +60 -0
  272. package/dist/core/agents/cron-substitute.js +100 -0
  273. package/dist/core/agents/definition-criteria.d.ts +14 -0
  274. package/dist/core/agents/definition-criteria.js +25 -0
  275. package/dist/core/agents/effective-definition.d.ts +47 -0
  276. package/dist/core/agents/effective-definition.js +101 -0
  277. package/dist/core/agents/firing-blocked.d.ts +28 -0
  278. package/dist/core/agents/firing-blocked.js +27 -0
  279. package/dist/core/agents/loader-boot.d.ts +26 -0
  280. package/dist/core/agents/loader-boot.js +98 -0
  281. package/dist/core/agents/loader-watcher.d.ts +23 -0
  282. package/dist/core/agents/loader-watcher.js +84 -0
  283. package/dist/core/agents/loader.d.ts +188 -0
  284. package/dist/core/agents/loader.js +754 -0
  285. package/dist/core/agents/override-merge.d.ts +57 -0
  286. package/dist/core/agents/override-merge.js +131 -0
  287. package/dist/core/agents/recurrence-convert.d.ts +92 -0
  288. package/dist/core/agents/recurrence-convert.js +207 -0
  289. package/dist/core/agents/recurring-schedule-adapter.d.ts +24 -0
  290. package/dist/core/agents/recurring-schedule-adapter.js +157 -0
  291. package/dist/core/agents/success-criteria.d.ts +60 -0
  292. package/dist/core/agents/success-criteria.js +139 -0
  293. package/dist/core/agents/validate-agent-md.d.ts +17 -0
  294. package/dist/core/agents/validate-agent-md.js +64 -0
  295. package/dist/core/alerts.d.ts +0 -1
  296. package/dist/core/alerts.js +0 -1
  297. package/dist/core/atomic-write.d.ts +0 -1
  298. package/dist/core/atomic-write.js +17 -4
  299. package/dist/core/backends/api-key-probe.d.ts +0 -1
  300. package/dist/core/backends/api-key-probe.js +0 -1
  301. package/dist/core/backends/auth-health-monitor.d.ts +0 -1
  302. package/dist/core/backends/auth-health-monitor.js +29 -2
  303. package/dist/core/backends/auth-recovery.d.ts +0 -1
  304. package/dist/core/backends/auth-recovery.js +17 -4
  305. package/dist/core/backends/auth-telemetry.d.ts +0 -1
  306. package/dist/core/backends/auth-telemetry.js +0 -1
  307. package/dist/core/backends/backend-router.d.ts +33 -2
  308. package/dist/core/backends/backend-router.js +134 -2
  309. package/dist/core/backends/claude-auth.d.ts +0 -1
  310. package/dist/core/backends/claude-auth.js +0 -1
  311. package/dist/core/backends/claude-code-core.d.ts +2 -2
  312. package/dist/core/backends/claude-code-core.js +68 -18
  313. package/dist/core/backends/claude-credentials-store.d.ts +0 -1
  314. package/dist/core/backends/claude-credentials-store.js +0 -1
  315. package/dist/core/backends/claude-delegated.d.ts +0 -1
  316. package/dist/core/backends/claude-delegated.js +14 -15
  317. package/dist/core/backends/claude-errors.d.ts +0 -1
  318. package/dist/core/backends/claude-errors.js +0 -1
  319. package/dist/core/backends/claude-probe.d.ts +0 -1
  320. package/dist/core/backends/claude-probe.js +0 -1
  321. package/dist/core/backends/claude-tool-collection.d.ts +0 -1
  322. package/dist/core/backends/claude-tool-collection.js +176 -31
  323. package/dist/core/backends/cli-quota-guards.d.ts +100 -0
  324. package/dist/core/backends/cli-quota-guards.js +95 -0
  325. package/dist/core/backends/cli-utils.d.ts +26 -2
  326. package/dist/core/backends/cli-utils.js +133 -15
  327. package/dist/core/backends/codex-core.d.ts +0 -1
  328. package/dist/core/backends/codex-core.js +71 -78
  329. package/dist/core/backends/gemini-cli-core.d.ts +0 -1
  330. package/dist/core/backends/gemini-cli-core.js +89 -92
  331. package/dist/core/backends/idle-watchdog.d.ts +0 -1
  332. package/dist/core/backends/idle-watchdog.js +0 -1
  333. package/dist/core/backends/install-methods.d.ts +0 -1
  334. package/dist/core/backends/install-methods.js +0 -1
  335. package/dist/core/backends/model-registry.d.ts +2 -3
  336. package/dist/core/backends/model-registry.js +54 -14
  337. package/dist/core/backends/native-skill-discovery-probe.d.ts +3 -6
  338. package/dist/core/backends/native-skill-discovery-probe.js +3 -6
  339. package/dist/core/backends/opencode-basic-auth-fetch.d.ts +0 -1
  340. package/dist/core/backends/opencode-basic-auth-fetch.js +0 -1
  341. package/dist/core/backends/opencode-config-builder.d.ts +29 -2
  342. package/dist/core/backends/opencode-config-builder.js +13 -1
  343. package/dist/core/backends/opencode-core.d.ts +0 -1
  344. package/dist/core/backends/opencode-core.js +8 -2
  345. package/dist/core/backends/opencode-event-mapper.d.ts +0 -1
  346. package/dist/core/backends/opencode-event-mapper.js +0 -1
  347. package/dist/core/backends/opencode-mcp.d.ts +0 -1
  348. package/dist/core/backends/opencode-mcp.js +10 -18
  349. package/dist/core/backends/opencode-server-manager.d.ts +0 -1
  350. package/dist/core/backends/opencode-server-manager.js +0 -1
  351. package/dist/core/backends/opencode-types.d.ts +0 -1
  352. package/dist/core/backends/opencode-types.js +0 -1
  353. package/dist/core/backends/plan-presets.d.ts +0 -1
  354. package/dist/core/backends/plan-presets.js +52 -6
  355. package/dist/core/backends/price-fetcher.d.ts +0 -1
  356. package/dist/core/backends/price-fetcher.js +0 -1
  357. package/dist/core/backends/process-config-cascade.d.ts +0 -1
  358. package/dist/core/backends/process-config-cascade.js +0 -1
  359. package/dist/core/backends/prompt-utils.d.ts +0 -1
  360. package/dist/core/backends/prompt-utils.js +0 -1
  361. package/dist/core/backends/proxy-model-registry.d.ts +0 -1
  362. package/dist/core/backends/proxy-model-registry.js +0 -1
  363. package/dist/core/backends/quota-reset-hints.d.ts +0 -1
  364. package/dist/core/backends/quota-reset-hints.js +0 -1
  365. package/dist/core/backends/silent-api-error-detector.d.ts +0 -1
  366. package/dist/core/backends/silent-api-error-detector.js +0 -1
  367. package/dist/core/bang-commands/commands-checks.d.ts +16 -0
  368. package/dist/core/bang-commands/commands-checks.js +58 -0
  369. package/dist/core/bang-commands/commands-close.d.ts +0 -1
  370. package/dist/core/bang-commands/commands-close.js +0 -1
  371. package/dist/core/bang-commands/commands-cost.d.ts +0 -1
  372. package/dist/core/bang-commands/commands-cost.js +0 -1
  373. package/dist/core/bang-commands/commands-help.d.ts +0 -1
  374. package/dist/core/bang-commands/commands-help.js +8 -9
  375. package/dist/core/bang-commands/commands-report.d.ts +0 -1
  376. package/dist/core/bang-commands/commands-report.js +0 -1
  377. package/dist/core/bang-commands/commands-research.d.ts +36 -0
  378. package/dist/core/bang-commands/commands-research.js +284 -0
  379. package/dist/core/bang-commands/commands-stop-start.d.ts +0 -1
  380. package/dist/core/bang-commands/commands-stop-start.js +0 -1
  381. package/dist/core/bang-commands/commands-wiki.d.ts +0 -1
  382. package/dist/core/bang-commands/commands-wiki.js +44 -16
  383. package/dist/core/bang-commands/format-utils.d.ts +2 -2
  384. package/dist/core/bang-commands/format-utils.js +2 -2
  385. package/dist/core/bang-commands/index.d.ts +2 -1
  386. package/dist/core/bang-commands/index.js +11 -1
  387. package/dist/core/bang-commands/registry.d.ts +9 -1
  388. package/dist/core/bang-commands/registry.js +14 -7
  389. package/dist/core/bang-commands/user-commands.d.ts +0 -1
  390. package/dist/core/bang-commands/user-commands.js +0 -1
  391. package/dist/core/browser-history/pre-morning-digest-job.d.ts +79 -0
  392. package/dist/core/browser-history/pre-morning-digest-job.js +89 -0
  393. package/dist/core/browser-history/research-cluster-fanout.d.ts +40 -0
  394. package/dist/core/browser-history/research-cluster-fanout.js +47 -0
  395. package/dist/core/browser-history/research-events.d.ts +37 -0
  396. package/dist/core/browser-history/research-events.js +70 -0
  397. package/dist/core/channel-timeline.d.ts +0 -1
  398. package/dist/core/channel-timeline.js +0 -1
  399. package/dist/core/character-block.d.ts +0 -1
  400. package/dist/core/character-block.js +0 -1
  401. package/dist/core/context/activity-sources.d.ts +3 -4
  402. package/dist/core/context/activity-sources.js +0 -1
  403. package/dist/core/context/activity-view-reconciler.d.ts +1 -2
  404. package/dist/core/context/activity-view-reconciler.js +10 -10
  405. package/dist/core/context/activity-view-runner.d.ts +0 -1
  406. package/dist/core/context/activity-view-runner.js +2 -2
  407. package/dist/core/context/default-schedules-reconciler.d.ts +1 -2
  408. package/dist/core/context/default-schedules-reconciler.js +1 -2
  409. package/dist/core/context/default-schedules-runner.d.ts +0 -1
  410. package/dist/core/context/default-schedules-runner.js +0 -1
  411. package/dist/core/context/domain-index-reconciler.d.ts +3 -1
  412. package/dist/core/context/domain-index-reconciler.js +11 -5
  413. package/dist/core/context/domain-index-runner.d.ts +0 -1
  414. package/dist/core/context/domain-index-runner.js +0 -1
  415. package/dist/core/context/entity-mirror.d.ts +9 -7
  416. package/dist/core/context/entity-mirror.js +21 -9
  417. package/dist/core/context/entity-source-rename.d.ts +0 -1
  418. package/dist/core/context/entity-source-rename.js +0 -1
  419. package/dist/core/context/index-reconciler.d.ts +26 -5
  420. package/dist/core/context/index-reconciler.js +110 -56
  421. package/dist/core/context/policy-index-reconciler.d.ts +6 -7
  422. package/dist/core/context/policy-index-reconciler.js +6 -7
  423. package/dist/core/context/policy-index-runner.d.ts +2 -3
  424. package/dist/core/context/policy-index-runner.js +1 -2
  425. package/dist/core/context/reconciler-runner.d.ts +0 -1
  426. package/dist/core/context/reconciler-runner.js +37 -5
  427. package/dist/core/context/reconciler-section.d.ts +30 -0
  428. package/dist/core/context/reconciler-section.js +39 -0
  429. package/dist/core/context-builder-calendar.d.ts +36 -0
  430. package/dist/core/context-builder-calendar.js +245 -0
  431. package/dist/core/context-builder-conversation.d.ts +95 -0
  432. package/dist/core/context-builder-conversation.js +444 -0
  433. package/dist/core/context-builder-format.d.ts +8 -0
  434. package/dist/core/context-builder-format.js +22 -0
  435. package/dist/core/context-builder-projects.d.ts +11 -0
  436. package/dist/core/context-builder-projects.js +102 -0
  437. package/dist/core/context-builder-yesterday.d.ts +30 -0
  438. package/dist/core/context-builder-yesterday.js +198 -0
  439. package/dist/core/context-builder.d.ts +9 -155
  440. package/dist/core/context-builder.js +98 -1002
  441. package/dist/core/context-file-serializer.d.ts +92 -0
  442. package/dist/core/context-file-serializer.js +126 -0
  443. package/dist/core/context-frontmatter-extract.d.ts +32 -0
  444. package/dist/core/context-frontmatter-extract.js +98 -0
  445. package/dist/core/context-frontmatter.d.ts +8 -1
  446. package/dist/core/context-frontmatter.js +71 -112
  447. package/dist/core/context-health.d.ts +0 -1
  448. package/dist/core/context-health.js +4 -5
  449. package/dist/core/context-paths.d.ts +128 -85
  450. package/dist/core/context-paths.js +190 -108
  451. package/dist/core/context-staleness.d.ts +0 -1
  452. package/dist/core/context-staleness.js +2 -3
  453. package/dist/core/context-validation/frontmatter.d.ts +73 -0
  454. package/dist/core/context-validation/frontmatter.js +216 -0
  455. package/dist/core/context-validation/index.d.ts +1 -1
  456. package/dist/core/context-validation/index.js +1 -1
  457. package/dist/core/context-validation/prepare-write.d.ts +1 -2
  458. package/dist/core/context-validation/prepare-write.js +18 -8
  459. package/dist/core/context-validation/routine-rulebook.d.ts +2 -3
  460. package/dist/core/context-validation/routine-rulebook.js +3 -4
  461. package/dist/core/context-validation/section.d.ts +1 -2
  462. package/dist/core/context-validation/section.js +13 -5
  463. package/dist/core/context-validation/snapshot-debounce.d.ts +3 -4
  464. package/dist/core/context-validation/snapshot-debounce.js +3 -4
  465. package/dist/core/context-validation/today.d.ts +0 -1
  466. package/dist/core/context-validation/today.js +0 -1
  467. package/dist/core/context-vault-aliases.d.ts +107 -0
  468. package/dist/core/context-vault-aliases.js +253 -0
  469. package/dist/core/custom-routine-scheduler.d.ts +5 -6
  470. package/dist/core/custom-routine-scheduler.js +3 -4
  471. package/dist/core/daemon-api-cli.d.ts +0 -1
  472. package/dist/core/daemon-api-cli.js +59 -1
  473. package/dist/core/dashboard-session-cleanup.d.ts +0 -1
  474. package/dist/core/dashboard-session-cleanup.js +0 -1
  475. package/dist/core/dashboard-session-controls.d.ts +0 -1
  476. package/dist/core/dashboard-session-controls.js +0 -1
  477. package/dist/core/delegated-connector-health.d.ts +0 -1
  478. package/dist/core/delegated-connector-health.js +0 -1
  479. package/dist/core/dispatcher-date-utils.d.ts +0 -1
  480. package/dist/core/dispatcher-date-utils.js +0 -1
  481. package/dist/core/dispatcher-error-handling.d.ts +0 -1
  482. package/dist/core/dispatcher-error-handling.js +0 -1
  483. package/dist/core/dispatcher-hourly-check.d.ts +0 -1
  484. package/dist/core/dispatcher-hourly-check.js +9 -2
  485. package/dist/core/dispatcher-message-handler.d.ts +21 -1
  486. package/dist/core/dispatcher-message-handler.js +146 -7
  487. package/dist/core/dispatcher-morning-routine.d.ts +0 -1
  488. package/dist/core/dispatcher-morning-routine.js +150 -126
  489. package/dist/core/dispatcher-prompt.d.ts +0 -1
  490. package/dist/core/dispatcher-prompt.js +4 -5
  491. package/dist/core/dispatcher-repository-helpers.d.ts +0 -1
  492. package/dist/core/dispatcher-repository-helpers.js +0 -1
  493. package/dist/core/dispatcher-result-processor.d.ts +20 -1
  494. package/dist/core/dispatcher-result-processor.js +86 -2
  495. package/dist/core/dispatcher-scheduled-browser-task.d.ts +91 -0
  496. package/dist/core/dispatcher-scheduled-browser-task.js +228 -0
  497. package/dist/core/dispatcher-scheduled-tasks.d.ts +68 -1
  498. package/dist/core/dispatcher-scheduled-tasks.js +373 -13
  499. package/dist/core/dispatcher-types.d.ts +56 -1
  500. package/dist/core/dispatcher-types.js +0 -1
  501. package/dist/core/dispatcher.d.ts +144 -4
  502. package/dist/core/dispatcher.js +345 -4
  503. package/dist/core/dm-freshness-metrics.d.ts +0 -1
  504. package/dist/core/dm-freshness-metrics.js +0 -1
  505. package/dist/core/dm-token-router.d.ts +58 -0
  506. package/dist/core/dm-token-router.js +58 -0
  507. package/dist/core/docs/citation-validator.d.ts +0 -1
  508. package/dist/core/docs/citation-validator.js +0 -1
  509. package/dist/core/docs/extract-terms.d.ts +0 -1
  510. package/dist/core/docs/extract-terms.js +0 -1
  511. package/dist/core/docs/indexer.d.ts +0 -1
  512. package/dist/core/docs/indexer.js +0 -1
  513. package/dist/core/drift-effects.d.ts +0 -1
  514. package/dist/core/drift-effects.js +6 -3
  515. package/dist/core/evening-review-verify.d.ts +1 -2
  516. package/dist/core/evening-review-verify.js +2 -3
  517. package/dist/core/event-bus.d.ts +0 -1
  518. package/dist/core/event-bus.js +0 -1
  519. package/dist/core/fetch-window-prompt-loader.d.ts +0 -1
  520. package/dist/core/fetch-window-prompt-loader.js +0 -1
  521. package/dist/core/git-project-docs.d.ts +0 -1
  522. package/dist/core/git-project-docs.js +13 -6
  523. package/dist/core/health-monitor.d.ts +2 -2
  524. package/dist/core/health-monitor.js +6 -3
  525. package/dist/core/heartbeat.d.ts +0 -1
  526. package/dist/core/heartbeat.js +0 -1
  527. package/dist/core/injection-policy.d.ts +107 -0
  528. package/dist/core/injection-policy.js +117 -0
  529. package/dist/core/integration-health.d.ts +0 -1
  530. package/dist/core/integration-health.js +1 -2
  531. package/dist/core/integration-lifecycle.d.ts +0 -1
  532. package/dist/core/integration-lifecycle.js +0 -1
  533. package/dist/core/integration-main-backend.d.ts +0 -1
  534. package/dist/core/integration-main-backend.js +11 -4
  535. package/dist/core/integration-probe.d.ts +0 -1
  536. package/dist/core/integration-probe.js +0 -1
  537. package/dist/core/management-md-write-lock.d.ts +1 -2
  538. package/dist/core/management-md-write-lock.js +1 -2
  539. package/dist/core/management-md.d.ts +24 -10
  540. package/dist/core/management-md.js +42 -24
  541. package/dist/core/management-registry.d.ts +3 -4
  542. package/dist/core/management-registry.js +5 -6
  543. package/dist/core/management-telemetry.d.ts +1 -2
  544. package/dist/core/management-telemetry.js +1 -2
  545. package/dist/core/message-recorder.d.ts +3 -4
  546. package/dist/core/message-recorder.js +3 -4
  547. package/dist/core/metrics.d.ts +0 -1
  548. package/dist/core/metrics.js +0 -1
  549. package/dist/core/migration-backup.d.ts +0 -1
  550. package/dist/core/migration-backup.js +11 -1
  551. package/dist/core/morning/agent-journal-appender.d.ts +75 -8
  552. package/dist/core/morning/agent-journal-appender.js +212 -38
  553. package/dist/core/morning/daily-journal-composer.d.ts +183 -0
  554. package/dist/core/morning/daily-journal-composer.js +421 -0
  555. package/dist/core/morning/handoff-parser.d.ts +3 -5
  556. package/dist/core/morning/handoff-parser.js +3 -5
  557. package/dist/core/morning/journal-skeleton-builder.d.ts +7 -9
  558. package/dist/core/morning/journal-skeleton-builder.js +15 -17
  559. package/dist/core/morning/orchestrator.d.ts +129 -17
  560. package/dist/core/morning/orchestrator.js +467 -64
  561. package/dist/core/morning/parent-audit-emitter.d.ts +2 -4
  562. package/dist/core/morning/parent-audit-emitter.js +2 -4
  563. package/dist/core/morning/partial-extract-streak.d.ts +76 -0
  564. package/dist/core/morning/partial-extract-streak.js +165 -0
  565. package/dist/core/morning/roadmap-skeleton-builder.d.ts +3 -4
  566. package/dist/core/morning/roadmap-skeleton-builder.js +4 -5
  567. package/dist/core/output-language-policy.d.ts +0 -1
  568. package/dist/core/output-language-policy.js +6 -7
  569. package/dist/core/overview-write-lock.d.ts +0 -1
  570. package/dist/core/overview-write-lock.js +0 -1
  571. package/dist/core/path-compat.d.ts +0 -1
  572. package/dist/core/path-compat.js +0 -1
  573. package/dist/core/path-rewrite.d.ts +1 -2
  574. package/dist/core/path-rewrite.js +0 -1
  575. package/dist/core/policy-files.d.ts +25 -16
  576. package/dist/core/policy-files.js +36 -44
  577. package/dist/core/pre-pass-freshness.d.ts +0 -1
  578. package/dist/core/pre-pass-freshness.js +0 -1
  579. package/dist/core/previous-week-digest.d.ts +0 -1
  580. package/dist/core/previous-week-digest.js +12 -13
  581. package/dist/core/profile-questions/seed.d.ts +2 -3
  582. package/dist/core/profile-questions/seed.js +4 -4
  583. package/dist/core/profile-questions/slot-filled.d.ts +0 -1
  584. package/dist/core/profile-questions/slot-filled.js +0 -1
  585. package/dist/core/prompts.d.ts +0 -1
  586. package/dist/core/prompts.js +3 -4
  587. package/dist/core/quiet-hours-sync.d.ts +0 -1
  588. package/dist/core/quiet-hours-sync.js +0 -1
  589. package/dist/core/quiet-hours.d.ts +35 -0
  590. package/dist/core/quiet-hours.js +93 -0
  591. package/dist/core/read-sensitive-token-manager.d.ts +0 -1
  592. package/dist/core/read-sensitive-token-manager.js +0 -1
  593. package/dist/core/recurrence.d.ts +0 -1
  594. package/dist/core/recurrence.js +6 -7
  595. package/dist/core/reinstall.d.ts +5 -1
  596. package/dist/core/reinstall.js +12 -2
  597. package/dist/core/release-assets.d.ts +18 -3
  598. package/dist/core/release-assets.js +25 -5
  599. package/dist/core/repository-management-docs.d.ts +0 -1
  600. package/dist/core/repository-management-docs.js +18 -7
  601. package/dist/core/retention.d.ts +49 -4
  602. package/dist/core/retention.js +218 -5
  603. package/dist/core/review-context.d.ts +10 -1
  604. package/dist/core/review-context.js +26 -9
  605. package/dist/core/roadmap-horizon.d.ts +0 -1
  606. package/dist/core/roadmap-horizon.js +0 -1
  607. package/dist/core/roadmap-ids.d.ts +4 -6
  608. package/dist/core/roadmap-ids.js +4 -6
  609. package/dist/core/roadmap-maintenance.d.ts +2 -3
  610. package/dist/core/roadmap-maintenance.js +62 -36
  611. package/dist/core/roadmap-refresh-triggers.d.ts +0 -1
  612. package/dist/core/roadmap-refresh-triggers.js +0 -1
  613. package/dist/core/roadmap-truncate.d.ts +0 -1
  614. package/dist/core/roadmap-truncate.js +0 -1
  615. package/dist/core/roadmap-validate.d.ts +0 -1
  616. package/dist/core/roadmap-validate.js +6 -6
  617. package/dist/core/roadmap-write-lock.d.ts +0 -1
  618. package/dist/core/roadmap-write-lock.js +0 -1
  619. package/dist/core/routine-acquisition-plan.d.ts +0 -1
  620. package/dist/core/routine-acquisition-plan.js +0 -1
  621. package/dist/core/routine-fetch-window-retry.d.ts +6 -8
  622. package/dist/core/routine-fetch-window-retry.js +6 -8
  623. package/dist/core/routine-fetch-window-runner.d.ts +8 -9
  624. package/dist/core/routine-fetch-window-runner.js +41 -18
  625. package/dist/core/routine-windows.d.ts +5 -11
  626. package/dist/core/routine-windows.js +18 -24
  627. package/dist/core/schedule-insert-helper.d.ts +0 -1
  628. package/dist/core/schedule-insert-helper.js +0 -1
  629. package/dist/core/schedule-maintenance.d.ts +0 -1
  630. package/dist/core/schedule-maintenance.js +0 -1
  631. package/dist/core/scheduler.d.ts +59 -1
  632. package/dist/core/scheduler.js +265 -21
  633. package/dist/core/semaphore.d.ts +0 -1
  634. package/dist/core/semaphore.js +0 -1
  635. package/dist/core/session-gate.d.ts +0 -1
  636. package/dist/core/session-gate.js +0 -1
  637. package/dist/core/session-manager.d.ts +0 -1
  638. package/dist/core/session-manager.js +0 -1
  639. package/dist/core/signal-detector.d.ts +2 -3
  640. package/dist/core/signal-detector.js +3 -4
  641. package/dist/core/skeleton.d.ts +1 -2
  642. package/dist/core/skeleton.js +8 -9
  643. package/dist/core/skill-curation/apply-proposal.d.ts +0 -1
  644. package/dist/core/skill-curation/apply-proposal.js +0 -1
  645. package/dist/core/skill-curation/auto-revert.d.ts +0 -1
  646. package/dist/core/skill-curation/auto-revert.js +4 -5
  647. package/dist/core/skill-curation/classify-diff.d.ts +0 -1
  648. package/dist/core/skill-curation/classify-diff.js +0 -0
  649. package/dist/core/skill-curation/declarations.d.ts +0 -1
  650. package/dist/core/skill-curation/declarations.js +0 -1
  651. package/dist/core/skill-curation/knowledge-map.d.ts +0 -1
  652. package/dist/core/skill-curation/knowledge-map.js +0 -1
  653. package/dist/core/skill-curation/orphan-overlay.d.ts +2 -3
  654. package/dist/core/skill-curation/orphan-overlay.js +5 -6
  655. package/dist/core/skill-curation/overlay-store.d.ts +6 -4
  656. package/dist/core/skill-curation/overlay-store.js +12 -7
  657. package/dist/core/skill-curation/render/convention-notes.d.ts +0 -1
  658. package/dist/core/skill-curation/render/convention-notes.js +0 -1
  659. package/dist/core/skill-curation/render/cross-references.d.ts +0 -1
  660. package/dist/core/skill-curation/render/cross-references.js +0 -1
  661. package/dist/core/skill-curation/render/frontmatter-schema.d.ts +0 -1
  662. package/dist/core/skill-curation/render/frontmatter-schema.js +0 -1
  663. package/dist/core/skill-curation/render/index.d.ts +0 -1
  664. package/dist/core/skill-curation/render/index.js +0 -1
  665. package/dist/core/skill-curation/render/knowledge-layout.d.ts +0 -1
  666. package/dist/core/skill-curation/render/knowledge-layout.js +0 -1
  667. package/dist/core/skill-curation/render/routing-table.d.ts +0 -1
  668. package/dist/core/skill-curation/render/routing-table.js +0 -1
  669. package/dist/core/skill-curation/render/search-recipes.d.ts +0 -1
  670. package/dist/core/skill-curation/render/search-recipes.js +0 -1
  671. package/dist/core/skill-curation/run-token.d.ts +0 -1
  672. package/dist/core/skill-curation/run-token.js +0 -1
  673. package/dist/core/skill-curation/signals.d.ts +0 -1
  674. package/dist/core/skill-curation/signals.js +0 -1
  675. package/dist/core/skill-curation/smoke-test.d.ts +0 -1
  676. package/dist/core/skill-curation/smoke-test.js +0 -1
  677. package/dist/core/skill-curation/splicer.d.ts +0 -1
  678. package/dist/core/skill-curation/splicer.js +0 -1
  679. package/dist/core/skill-curation/workdir.d.ts +0 -1
  680. package/dist/core/skill-curation/workdir.js +0 -1
  681. package/dist/core/skill-source-paths.d.ts +0 -1
  682. package/dist/core/skill-source-paths.js +0 -1
  683. package/dist/core/skills-compiler-cli-renderer.d.ts +79 -0
  684. package/dist/core/skills-compiler-cli-renderer.js +289 -0
  685. package/dist/core/skills-compiler-denied-tools.d.ts +57 -0
  686. package/dist/core/skills-compiler-denied-tools.js +204 -0
  687. package/dist/core/skills-compiler-skill-index.d.ts +117 -0
  688. package/dist/core/skills-compiler-skill-index.js +262 -0
  689. package/dist/core/skills-compiler-tree.d.ts +38 -0
  690. package/dist/core/skills-compiler-tree.js +157 -0
  691. package/dist/core/skills-compiler-types.d.ts +46 -0
  692. package/dist/core/skills-compiler-types.js +1 -0
  693. package/dist/core/skills-compiler-variants.d.ts +117 -0
  694. package/dist/core/skills-compiler-variants.js +337 -0
  695. package/dist/core/skills-compiler.d.ts +21 -319
  696. package/dist/core/skills-compiler.js +29 -1223
  697. package/dist/core/skills-manifest.d.ts +30 -2
  698. package/dist/core/skills-manifest.js +178 -22
  699. package/dist/core/system-reset.d.ts +1 -2
  700. package/dist/core/system-reset.js +1 -2
  701. package/dist/core/template-store.d.ts +2 -3
  702. package/dist/core/template-store.js +7 -4
  703. package/dist/core/template-versions.d.ts +1 -2
  704. package/dist/core/template-versions.js +1 -2
  705. package/dist/core/today-agent-plan.d.ts +0 -1
  706. package/dist/core/today-agent-plan.js +0 -1
  707. package/dist/core/today-direct-writer.d.ts +11 -2
  708. package/dist/core/today-direct-writer.js +42 -27
  709. package/dist/core/today-write-lock.d.ts +0 -1
  710. package/dist/core/today-write-lock.js +0 -1
  711. package/dist/core/trigger-dispatch.d.ts +0 -1
  712. package/dist/core/trigger-dispatch.js +0 -1
  713. package/dist/core/trigger-evaluator.d.ts +0 -1
  714. package/dist/core/trigger-evaluator.js +0 -1
  715. package/dist/core/user-skills-root.d.ts +24 -0
  716. package/dist/core/user-skills-root.js +29 -0
  717. package/dist/core/wiki/approval-queue.d.ts +0 -1
  718. package/dist/core/wiki/approval-queue.js +7 -3
  719. package/dist/core/wiki/bridge.d.ts +0 -1
  720. package/dist/core/wiki/bridge.js +0 -1
  721. package/dist/core/wiki/compile-lock.d.ts +0 -1
  722. package/dist/core/wiki/compile-lock.js +0 -1
  723. package/dist/core/wiki/compile-preview.d.ts +0 -1
  724. package/dist/core/wiki/compile-preview.js +0 -1
  725. package/dist/core/wiki/cost-estimate.d.ts +0 -1
  726. package/dist/core/wiki/cost-estimate.js +23 -3
  727. package/dist/core/wiki/dispatcher.d.ts +1 -21
  728. package/dist/core/wiki/dispatcher.js +0 -26
  729. package/dist/core/wiki/git-precompile.d.ts +0 -1
  730. package/dist/core/wiki/git-precompile.js +0 -1
  731. package/dist/core/wiki/import-migrate.d.ts +0 -1
  732. package/dist/core/wiki/import-migrate.js +0 -1
  733. package/dist/core/wiki/import-probe.d.ts +0 -1
  734. package/dist/core/wiki/import-probe.js +7 -5
  735. package/dist/core/wiki/index-cache.d.ts +0 -1
  736. package/dist/core/wiki/index-cache.js +0 -1
  737. package/dist/core/wiki/multi-url-dispatch.d.ts +0 -1
  738. package/dist/core/wiki/multi-url-dispatch.js +19 -9
  739. package/dist/core/wiki/wiki-fts.d.ts +0 -1
  740. package/dist/core/wiki/wiki-fts.js +0 -1
  741. package/dist/core/wiki/workspaces.d.ts +17 -2
  742. package/dist/core/wiki/workspaces.js +28 -17
  743. package/dist/core/wiki/write-strategy.d.ts +0 -1
  744. package/dist/core/wiki/write-strategy.js +19 -3
  745. package/dist/core/workdir.d.ts +9 -2
  746. package/dist/core/workdir.js +21 -4
  747. package/dist/db/agent-executions-store.d.ts +149 -0
  748. package/dist/db/agent-executions-store.js +209 -0
  749. package/dist/db/agents-store.d.ts +179 -0
  750. package/dist/db/agents-store.js +264 -0
  751. package/dist/db/automation-triggers.d.ts +0 -1
  752. package/dist/db/automation-triggers.js +0 -1
  753. package/dist/db/browser-automation-b4-config-store.d.ts +68 -0
  754. package/dist/db/browser-automation-b4-config-store.js +111 -0
  755. package/dist/db/browser-automation-purchase-primary-channels-store.d.ts +48 -0
  756. package/dist/db/browser-automation-purchase-primary-channels-store.js +88 -0
  757. package/dist/db/browser-automation-purchase-replies-store.d.ts +48 -0
  758. package/dist/db/browser-automation-purchase-replies-store.js +71 -0
  759. package/dist/db/browser-automation-purchase-tokens-store.d.ts +276 -0
  760. package/dist/db/browser-automation-purchase-tokens-store.js +483 -0
  761. package/dist/db/browser-automation-store.d.ts +37 -0
  762. package/dist/db/browser-automation-store.js +41 -0
  763. package/dist/db/browser-history-store.d.ts +231 -0
  764. package/dist/db/browser-history-store.js +601 -0
  765. package/dist/db/browser-task-action-log-store.d.ts +41 -0
  766. package/dist/db/browser-task-action-log-store.js +74 -0
  767. package/dist/db/browser-task-clarifications-store.d.ts +67 -0
  768. package/dist/db/browser-task-clarifications-store.js +118 -0
  769. package/dist/db/browser-task-final-confirm-tokens-store.d.ts +108 -0
  770. package/dist/db/browser-task-final-confirm-tokens-store.js +251 -0
  771. package/dist/db/browser-task-store.d.ts +114 -0
  772. package/dist/db/browser-task-store.js +250 -0
  773. package/dist/db/client.d.ts +0 -1
  774. package/dist/db/client.js +0 -1
  775. package/dist/db/entities-store.d.ts +1 -2
  776. package/dist/db/entities-store.js +0 -1
  777. package/dist/db/hourly-check-signals.d.ts +0 -1
  778. package/dist/db/hourly-check-signals.js +0 -1
  779. package/dist/db/integration-probe-store.d.ts +0 -1
  780. package/dist/db/integration-probe-store.js +0 -1
  781. package/dist/db/integrations-store.d.ts +0 -1
  782. package/dist/db/integrations-store.js +0 -1
  783. package/dist/db/managed-chromium-sites-store.d.ts +110 -0
  784. package/dist/db/managed-chromium-sites-store.js +174 -0
  785. package/dist/db/managed-chromium-state.d.ts +58 -0
  786. package/dist/db/managed-chromium-state.js +104 -0
  787. package/dist/db/managed-tasks-store.d.ts +0 -1
  788. package/dist/db/managed-tasks-store.js +0 -1
  789. package/dist/db/management-parse-failures-store.d.ts +0 -1
  790. package/dist/db/management-parse-failures-store.js +0 -1
  791. package/dist/db/migrations/context-vault-restructure.d.ts +263 -0
  792. package/dist/db/migrations/context-vault-restructure.js +1384 -0
  793. package/dist/db/migrations.d.ts +111 -0
  794. package/dist/db/migrations.js +476 -0
  795. package/dist/db/observations.d.ts +0 -1
  796. package/dist/db/observations.js +12 -3
  797. package/dist/db/recurring-schedules.d.ts +12 -2
  798. package/dist/db/recurring-schedules.js +91 -15
  799. package/dist/db/repositories-store.d.ts +0 -1
  800. package/dist/db/repositories-store.js +4 -2
  801. package/dist/db/runtime-state.d.ts +32 -2
  802. package/dist/db/runtime-state.js +33 -2
  803. package/dist/db/schema.d.ts +0 -1
  804. package/dist/db/schema.js +776 -13
  805. package/dist/db/sot-bindings-store.d.ts +0 -1
  806. package/dist/db/sot-bindings-store.js +0 -1
  807. package/dist/db/voice-transcripts-store.d.ts +0 -1
  808. package/dist/db/voice-transcripts-store.js +0 -1
  809. package/dist/db/wiki-store.d.ts +0 -1
  810. package/dist/db/wiki-store.js +0 -1
  811. package/dist/index.d.ts +0 -1
  812. package/dist/index.js +119 -61
  813. package/dist/init.d.ts +0 -1
  814. package/dist/init.js +0 -2
  815. package/dist/log-buffer.d.ts +0 -1
  816. package/dist/log-buffer.js +0 -2
  817. package/dist/logging.d.ts +0 -1
  818. package/dist/logging.js +0 -2
  819. package/dist/management-rules.d.ts +0 -1
  820. package/dist/management-rules.js +0 -1
  821. package/dist/messaging/browser-task-mcp-notifier.d.ts +77 -0
  822. package/dist/messaging/browser-task-mcp-notifier.js +164 -0
  823. package/dist/messaging/browser-task-screenshot-attachment.d.ts +62 -0
  824. package/dist/messaging/browser-task-screenshot-attachment.js +115 -0
  825. package/dist/messaging/constants.d.ts +0 -1
  826. package/dist/messaging/constants.js +0 -1
  827. package/dist/messaging/final-confirm-system-message-sender.d.ts +53 -0
  828. package/dist/messaging/final-confirm-system-message-sender.js +165 -0
  829. package/dist/messaging/magic-phrase.d.ts +0 -1
  830. package/dist/messaging/magic-phrase.js +7 -3
  831. package/dist/messaging/owner-channels.d.ts +16 -1
  832. package/dist/messaging/owner-channels.js +21 -1
  833. package/dist/messaging/purchase-system-message-sender.d.ts +54 -0
  834. package/dist/messaging/purchase-system-message-sender.js +213 -0
  835. package/dist/messaging/setup-welcome-dm.d.ts +0 -1
  836. package/dist/messaging/setup-welcome-dm.js +0 -1
  837. package/dist/messaging/url-extract.d.ts +0 -1
  838. package/dist/messaging/url-extract.js +5 -1
  839. package/dist/observers/browser-history-poller.d.ts +113 -0
  840. package/dist/observers/browser-history-poller.js +404 -0
  841. package/dist/observers/calendar-poller.d.ts +0 -1
  842. package/dist/observers/calendar-poller.js +0 -1
  843. package/dist/observers/context-index-reconciler-observer.d.ts +0 -1
  844. package/dist/observers/context-index-reconciler-observer.js +0 -1
  845. package/dist/observers/delegated-probe-observer.d.ts +0 -1
  846. package/dist/observers/delegated-probe-observer.js +0 -1
  847. package/dist/observers/delegated-sync-worker.d.ts +8 -10
  848. package/dist/observers/delegated-sync-worker.js +10 -11
  849. package/dist/observers/entity-mirror-observer.d.ts +0 -1
  850. package/dist/observers/entity-mirror-observer.js +0 -1
  851. package/dist/observers/git-delegated-cron.d.ts +0 -1
  852. package/dist/observers/git-delegated-cron.js +0 -1
  853. package/dist/observers/git-event-classifier.d.ts +0 -1
  854. package/dist/observers/git-event-classifier.js +0 -1
  855. package/dist/observers/git-watcher.d.ts +0 -1
  856. package/dist/observers/git-watcher.js +7 -2
  857. package/dist/observers/github-poller-classifier.d.ts +0 -1
  858. package/dist/observers/github-poller-classifier.js +0 -1
  859. package/dist/observers/github-poller.d.ts +3 -1
  860. package/dist/observers/github-poller.js +28 -3
  861. package/dist/observers/imminent-event-scheduler.d.ts +0 -1
  862. package/dist/observers/imminent-event-scheduler.js +1 -2
  863. package/dist/observers/mail-poller.d.ts +0 -1
  864. package/dist/observers/mail-poller.js +45 -18
  865. package/dist/observers/mail-reconciliation.d.ts +1 -2
  866. package/dist/observers/mail-reconciliation.js +1 -2
  867. package/dist/observers/manager.d.ts +7 -8
  868. package/dist/observers/manager.js +7 -8
  869. package/dist/observers/notion-poller.d.ts +0 -1
  870. package/dist/observers/notion-poller.js +2 -3
  871. package/dist/observers/observation-summarizer/index.d.ts +0 -1
  872. package/dist/observers/observation-summarizer/index.js +0 -1
  873. package/dist/observers/observation-summarizer/pre-filter.d.ts +0 -1
  874. package/dist/observers/observation-summarizer/pre-filter.js +0 -1
  875. package/dist/observers/observation-summarizer/response-parser.d.ts +0 -1
  876. package/dist/observers/observation-summarizer/response-parser.js +7 -7
  877. package/dist/observers/observation-summarizer/summarizer-client.d.ts +0 -1
  878. package/dist/observers/observation-summarizer/summarizer-client.js +0 -1
  879. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +0 -1
  880. package/dist/observers/observation-summarizer/summarizer-prompts.js +0 -1
  881. package/dist/observers/observation-summarizer/worker.d.ts +2 -1
  882. package/dist/observers/observation-summarizer/worker.js +25 -1
  883. package/dist/observers/obsidian-watcher.d.ts +0 -1
  884. package/dist/observers/obsidian-watcher.js +0 -1
  885. package/dist/observers/poll-guard.d.ts +0 -1
  886. package/dist/observers/poll-guard.js +0 -1
  887. package/dist/observers/primary-vault-watcher.d.ts +0 -1
  888. package/dist/observers/primary-vault-watcher.js +0 -1
  889. package/dist/observers/repository-management-cron.d.ts +0 -1
  890. package/dist/observers/repository-management-cron.js +0 -1
  891. package/dist/observers/skill-curation-walker.d.ts +0 -1
  892. package/dist/observers/skill-curation-walker.js +0 -1
  893. package/dist/safety/absolute-block-audit.d.ts +0 -1
  894. package/dist/safety/absolute-block-audit.js +0 -1
  895. package/dist/safety/agent-write-tracker.d.ts +0 -1
  896. package/dist/safety/agent-write-tracker.js +0 -1
  897. package/dist/safety/always-disallowed.d.ts +59 -3
  898. package/dist/safety/always-disallowed.js +390 -13
  899. package/dist/safety/audit.d.ts +17 -6
  900. package/dist/safety/audit.js +137 -15
  901. package/dist/safety/integration-write-tracker.d.ts +0 -1
  902. package/dist/safety/integration-write-tracker.js +0 -1
  903. package/dist/safety/outbound-purchase-guard.d.ts +60 -0
  904. package/dist/safety/outbound-purchase-guard.js +82 -0
  905. package/dist/safety/risk-classifier.d.ts +4 -5
  906. package/dist/safety/risk-classifier.js +237 -79
  907. package/dist/safety/subprocess-block-scanner.d.ts +0 -1
  908. package/dist/safety/subprocess-block-scanner.js +0 -1
  909. package/dist/scheduler/hourly-check-gate.d.ts +0 -1
  910. package/dist/scheduler/hourly-check-gate.js +0 -1
  911. package/dist/secrets/backend-api-key-env.d.ts +0 -1
  912. package/dist/secrets/backend-api-key-env.js +0 -1
  913. package/dist/secrets/codex-home-materializer.d.ts +0 -1
  914. package/dist/secrets/codex-home-materializer.js +0 -1
  915. package/dist/secrets/encrypted-blob-store.d.ts +0 -1
  916. package/dist/secrets/encrypted-blob-store.js +0 -1
  917. package/dist/secrets/platform-secret-store.d.ts +0 -1
  918. package/dist/secrets/platform-secret-store.js +0 -1
  919. package/dist/secrets/redaction.d.ts +0 -1
  920. package/dist/secrets/redaction.js +0 -1
  921. package/dist/secrets/secret-broker.d.ts +0 -2
  922. package/dist/secrets/secret-broker.js +0 -4
  923. package/dist/secrets/secret-names.d.ts +1 -2
  924. package/dist/secrets/secret-names.js +0 -2
  925. package/dist/secrets/secret-store.d.ts +0 -1
  926. package/dist/secrets/secret-store.js +0 -1
  927. package/dist/secrets/types.d.ts +0 -1
  928. package/dist/secrets/types.js +0 -1
  929. package/dist/services/apple-calendar/caldav-client.d.ts +0 -1
  930. package/dist/services/apple-calendar/caldav-client.js +0 -1
  931. package/dist/services/apple-calendar/caldav-codec.d.ts +0 -1
  932. package/dist/services/apple-calendar/caldav-codec.js +0 -1
  933. package/dist/services/apple-calendar/index.d.ts +0 -1
  934. package/dist/services/apple-calendar/index.js +0 -1
  935. package/dist/services/apple-calendar/service.d.ts +0 -1
  936. package/dist/services/apple-calendar/service.js +0 -1
  937. package/dist/services/apple-calendar/types.d.ts +0 -1
  938. package/dist/services/apple-calendar/types.js +0 -1
  939. package/dist/services/attachments/hardlink.d.ts +0 -1
  940. package/dist/services/attachments/hardlink.js +0 -1
  941. package/dist/services/attachments/sanitize.d.ts +0 -1
  942. package/dist/services/attachments/sanitize.js +0 -1
  943. package/dist/services/attachments/store.d.ts +0 -1
  944. package/dist/services/attachments/store.js +1 -3
  945. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.d.ts +48 -0
  946. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.js +98 -0
  947. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.d.ts +76 -0
  948. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.js +79 -0
  949. package/dist/services/browser-history/automation/browser-task-tools/extract-output.d.ts +66 -0
  950. package/dist/services/browser-history/automation/browser-task-tools/extract-output.js +69 -0
  951. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.d.ts +129 -0
  952. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.js +150 -0
  953. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.d.ts +95 -0
  954. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.js +123 -0
  955. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.d.ts +54 -0
  956. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.js +62 -0
  957. package/dist/services/browser-history/automation/browser-task-tools/schemas.d.ts +201 -0
  958. package/dist/services/browser-history/automation/browser-task-tools/schemas.js +248 -0
  959. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.d.ts +76 -0
  960. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.js +101 -0
  961. package/dist/services/browser-history/automation/browser-task-tools/server.d.ts +240 -0
  962. package/dist/services/browser-history/automation/browser-task-tools/server.js +1016 -0
  963. package/dist/services/browser-history/automation/cdp-network-interception.d.ts +74 -0
  964. package/dist/services/browser-history/automation/cdp-network-interception.js +106 -0
  965. package/dist/services/browser-history/automation/egress-denylist.d.ts +167 -0
  966. package/dist/services/browser-history/automation/egress-denylist.js +452 -0
  967. package/dist/services/browser-history/automation/external-content.d.ts +72 -0
  968. package/dist/services/browser-history/automation/external-content.js +0 -0
  969. package/dist/services/browser-history/automation/final-confirm-handler.d.ts +178 -0
  970. package/dist/services/browser-history/automation/final-confirm-handler.js +462 -0
  971. package/dist/services/browser-history/automation/lite-final-confirm-tokens.d.ts +100 -0
  972. package/dist/services/browser-history/automation/lite-final-confirm-tokens.js +126 -0
  973. package/dist/services/browser-history/automation/payment-path-blocker.d.ts +62 -0
  974. package/dist/services/browser-history/automation/payment-path-blocker.js +113 -0
  975. package/dist/services/browser-history/automation/purchase-handler.d.ts +344 -0
  976. package/dist/services/browser-history/automation/purchase-handler.js +666 -0
  977. package/dist/services/browser-history/automation/purchase-tokens.d.ts +265 -0
  978. package/dist/services/browser-history/automation/purchase-tokens.js +271 -0
  979. package/dist/services/browser-history/automation/site-registry.d.ts +176 -0
  980. package/dist/services/browser-history/automation/site-registry.js +290 -0
  981. package/dist/services/browser-history/automation/trace-store-paths.d.ts +80 -0
  982. package/dist/services/browser-history/automation/trace-store-paths.js +119 -0
  983. package/dist/services/browser-history/automation/trace-store.d.ts +29 -0
  984. package/dist/services/browser-history/automation/trace-store.js +63 -0
  985. package/dist/services/browser-history/cleanup-interests-reflection.d.ts +39 -0
  986. package/dist/services/browser-history/cleanup-interests-reflection.js +204 -0
  987. package/dist/services/browser-history/detectors/atlas.d.ts +2 -0
  988. package/dist/services/browser-history/detectors/atlas.js +4 -0
  989. package/dist/services/browser-history/detectors/chrome.d.ts +2 -0
  990. package/dist/services/browser-history/detectors/chrome.js +4 -0
  991. package/dist/services/browser-history/detectors/chromium.d.ts +2 -0
  992. package/dist/services/browser-history/detectors/chromium.js +193 -0
  993. package/dist/services/browser-history/detectors/comet.d.ts +2 -0
  994. package/dist/services/browser-history/detectors/comet.js +4 -0
  995. package/dist/services/browser-history/detectors/registry.d.ts +15 -0
  996. package/dist/services/browser-history/detectors/registry.js +82 -0
  997. package/dist/services/browser-history/history-mtime.d.ts +8 -0
  998. package/dist/services/browser-history/history-mtime.js +31 -0
  999. package/dist/services/browser-history/interests-reflection-lock.d.ts +26 -0
  1000. package/dist/services/browser-history/interests-reflection-lock.js +84 -0
  1001. package/dist/services/browser-history/lifecycle/chromium-install.d.ts +78 -0
  1002. package/dist/services/browser-history/lifecycle/chromium-install.js +206 -0
  1003. package/dist/services/browser-history/lifecycle/chromium-launcher.d.ts +77 -0
  1004. package/dist/services/browser-history/lifecycle/chromium-launcher.js +288 -0
  1005. package/dist/services/browser-history/lifecycle/failure-escalation.d.ts +3 -0
  1006. package/dist/services/browser-history/lifecycle/failure-escalation.js +54 -0
  1007. package/dist/services/browser-history/lifecycle/health-check.d.ts +8 -0
  1008. package/dist/services/browser-history/lifecycle/health-check.js +17 -0
  1009. package/dist/services/browser-history/lifecycle/platform.d.ts +99 -0
  1010. package/dist/services/browser-history/lifecycle/platform.js +597 -0
  1011. package/dist/services/browser-history/lifecycle/supervisor.d.ts +24 -0
  1012. package/dist/services/browser-history/lifecycle/supervisor.js +334 -0
  1013. package/dist/services/browser-history/managed-chromium/cdp-connect.d.ts +110 -0
  1014. package/dist/services/browser-history/managed-chromium/cdp-connect.js +171 -0
  1015. package/dist/services/browser-history/managed-chromium/instance-a-config.d.ts +116 -0
  1016. package/dist/services/browser-history/managed-chromium/instance-a-config.js +164 -0
  1017. package/dist/services/browser-history/managed-chromium/instance-a-launcher.d.ts +82 -0
  1018. package/dist/services/browser-history/managed-chromium/instance-a-launcher.js +200 -0
  1019. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.d.ts +69 -0
  1020. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.js +334 -0
  1021. package/dist/services/browser-history/managed-chromium/reauth-detector.d.ts +60 -0
  1022. package/dist/services/browser-history/managed-chromium/reauth-detector.js +179 -0
  1023. package/dist/services/browser-history/managed-chromium/sandbox-install.d.ts +69 -0
  1024. package/dist/services/browser-history/managed-chromium/sandbox-install.js +123 -0
  1025. package/dist/services/browser-history/managed-chromium/sandbox-launcher.d.ts +117 -0
  1026. package/dist/services/browser-history/managed-chromium/sandbox-launcher.js +244 -0
  1027. package/dist/services/browser-history/managed-chromium/setup-bootstrap.d.ts +149 -0
  1028. package/dist/services/browser-history/managed-chromium/setup-bootstrap.js +404 -0
  1029. package/dist/services/browser-history/managed-chromium/site-bootstrap.d.ts +133 -0
  1030. package/dist/services/browser-history/managed-chromium/site-bootstrap.js +360 -0
  1031. package/dist/services/browser-history/managed-chromium/supervisor-config.d.ts +75 -0
  1032. package/dist/services/browser-history/managed-chromium/supervisor-config.js +146 -0
  1033. package/dist/services/browser-history/managed-chromium/types.d.ts +199 -0
  1034. package/dist/services/browser-history/managed-chromium/types.js +116 -0
  1035. package/dist/services/browser-history/pipeline/amazon-extractor.d.ts +11 -0
  1036. package/dist/services/browser-history/pipeline/amazon-extractor.js +33 -0
  1037. package/dist/services/browser-history/pipeline/classifier.d.ts +7 -0
  1038. package/dist/services/browser-history/pipeline/classifier.js +208 -0
  1039. package/dist/services/browser-history/pipeline/cluster-extractor.d.ts +76 -0
  1040. package/dist/services/browser-history/pipeline/cluster-extractor.js +271 -0
  1041. package/dist/services/browser-history/pipeline/interests-block.d.ts +99 -0
  1042. package/dist/services/browser-history/pipeline/interests-block.js +333 -0
  1043. package/dist/services/browser-history/pipeline/meaningful-filter.d.ts +47 -0
  1044. package/dist/services/browser-history/pipeline/meaningful-filter.js +228 -0
  1045. package/dist/services/browser-history/pipeline/offer-rate-limit.d.ts +75 -0
  1046. package/dist/services/browser-history/pipeline/offer-rate-limit.js +188 -0
  1047. package/dist/services/browser-history/pipeline/offer-triggers.d.ts +150 -0
  1048. package/dist/services/browser-history/pipeline/offer-triggers.js +164 -0
  1049. package/dist/services/browser-history/pipeline/pre-morning-digest.d.ts +118 -0
  1050. package/dist/services/browser-history/pipeline/pre-morning-digest.js +399 -0
  1051. package/dist/services/browser-history/pipeline/project-matcher.d.ts +26 -0
  1052. package/dist/services/browser-history/pipeline/project-matcher.js +314 -0
  1053. package/dist/services/browser-history/pipeline/redactor.d.ts +15 -0
  1054. package/dist/services/browser-history/pipeline/redactor.js +119 -0
  1055. package/dist/services/browser-history/pipeline/reload-detector.d.ts +6 -0
  1056. package/dist/services/browser-history/pipeline/reload-detector.js +16 -0
  1057. package/dist/services/browser-history/pipeline/sensitive-hosts.d.ts +2 -0
  1058. package/dist/services/browser-history/pipeline/sensitive-hosts.js +173 -0
  1059. package/dist/services/browser-history/pipeline/summarizer.d.ts +52 -0
  1060. package/dist/services/browser-history/pipeline/summarizer.js +97 -0
  1061. package/dist/services/browser-history/pipeline/weekly-interests-summary.d.ts +139 -0
  1062. package/dist/services/browser-history/pipeline/weekly-interests-summary.js +227 -0
  1063. package/dist/services/browser-history/readers/chromium-reader.d.ts +30 -0
  1064. package/dist/services/browser-history/readers/chromium-reader.js +139 -0
  1065. package/dist/services/browser-history/readers/snapshot.d.ts +19 -0
  1066. package/dist/services/browser-history/readers/snapshot.js +67 -0
  1067. package/dist/services/browser-history/refresh-interests-reflection.d.ts +125 -0
  1068. package/dist/services/browser-history/refresh-interests-reflection.js +424 -0
  1069. package/dist/services/browser-history/types.d.ts +60 -0
  1070. package/dist/services/browser-history/types.js +1 -0
  1071. package/dist/services/browser-task/browser-task-allowlist.d.ts +107 -0
  1072. package/dist/services/browser-task/browser-task-allowlist.js +247 -0
  1073. package/dist/services/browser-task/browser-task-deadline-scanner.d.ts +76 -0
  1074. package/dist/services/browser-task/browser-task-deadline-scanner.js +68 -0
  1075. package/dist/services/browser-task/browser-task-driver.d.ts +188 -0
  1076. package/dist/services/browser-task/browser-task-driver.js +714 -0
  1077. package/dist/services/browser-task/browser-task-runner.d.ts +166 -0
  1078. package/dist/services/browser-task/browser-task-runner.js +781 -0
  1079. package/dist/services/browser-task/browser-task-slots.d.ts +212 -0
  1080. package/dist/services/browser-task/browser-task-slots.js +404 -0
  1081. package/dist/services/browser-task/browser-task-transition-events.d.ts +76 -0
  1082. package/dist/services/browser-task/browser-task-transition-events.js +80 -0
  1083. package/dist/services/calendar/outlook/graph-calendar-client.d.ts +0 -1
  1084. package/dist/services/calendar/outlook/graph-calendar-client.js +0 -1
  1085. package/dist/services/calendar.d.ts +0 -1
  1086. package/dist/services/calendar.js +21 -16
  1087. package/dist/services/delegated-backend-invoker.d.ts +0 -1
  1088. package/dist/services/delegated-backend-invoker.js +0 -1
  1089. package/dist/services/delegated-invoker-audit.d.ts +0 -1
  1090. package/dist/services/delegated-invoker-audit.js +3 -4
  1091. package/dist/services/delegated-invoker-cache-hits.d.ts +0 -1
  1092. package/dist/services/delegated-invoker-cache-hits.js +0 -1
  1093. package/dist/services/delegated-invoker-janitors.d.ts +0 -1
  1094. package/dist/services/delegated-invoker-janitors.js +0 -1
  1095. package/dist/services/delegated-invoker-utils.d.ts +0 -1
  1096. package/dist/services/delegated-invoker-utils.js +0 -1
  1097. package/dist/services/delegated-proxy-config.d.ts +0 -1
  1098. package/dist/services/delegated-proxy-config.js +0 -1
  1099. package/dist/services/delegated-task-result-cache.d.ts +0 -1
  1100. package/dist/services/delegated-task-result-cache.js +0 -0
  1101. package/dist/services/delegated-task-runtime.d.ts +0 -1
  1102. package/dist/services/delegated-task-runtime.js +0 -1
  1103. package/dist/services/delegated-task-session-pool.d.ts +0 -1
  1104. package/dist/services/delegated-task-session-pool.js +0 -1
  1105. package/dist/services/delegated-tool-runtime.d.ts +0 -1
  1106. package/dist/services/delegated-tool-runtime.js +0 -1
  1107. package/dist/services/fts5.d.ts +0 -1
  1108. package/dist/services/fts5.js +0 -1
  1109. package/dist/services/git-account-registry.d.ts +0 -1
  1110. package/dist/services/git-account-registry.js +0 -1
  1111. package/dist/services/github.d.ts +9 -40
  1112. package/dist/services/github.js +9 -107
  1113. package/dist/services/gmail-classifier.d.ts +0 -1
  1114. package/dist/services/gmail-classifier.js +0 -1
  1115. package/dist/services/gmail.d.ts +0 -1
  1116. package/dist/services/gmail.js +31 -52
  1117. package/dist/services/google-auth.d.ts +0 -1
  1118. package/dist/services/google-auth.js +0 -1
  1119. package/dist/services/integrations/extract-write-item-id.d.ts +0 -1
  1120. package/dist/services/integrations/extract-write-item-id.js +6 -1
  1121. package/dist/services/integrations/reconcile.d.ts +0 -1
  1122. package/dist/services/integrations/reconcile.js +0 -1
  1123. package/dist/services/integrations/snapshot-partitions.d.ts +0 -1
  1124. package/dist/services/integrations/snapshot-partitions.js +8 -1
  1125. package/dist/services/journal/render.d.ts +0 -1
  1126. package/dist/services/journal/render.js +0 -1
  1127. package/dist/services/journal/writer.d.ts +0 -1
  1128. package/dist/services/journal/writer.js +0 -1
  1129. package/dist/services/mail/account-registry.d.ts +0 -1
  1130. package/dist/services/mail/account-registry.js +7 -3
  1131. package/dist/services/mail/gmail/auth-failure-classifier.d.ts +0 -1
  1132. package/dist/services/mail/gmail/auth-failure-classifier.js +0 -1
  1133. package/dist/services/mail/gmail/gmail-provider.d.ts +0 -1
  1134. package/dist/services/mail/gmail/gmail-provider.js +0 -1
  1135. package/dist/services/mail/gmail/legacy-row.d.ts +0 -1
  1136. package/dist/services/mail/gmail/legacy-row.js +0 -1
  1137. package/dist/services/mail/gmail/poll-cursor.d.ts +0 -1
  1138. package/dist/services/mail/gmail/poll-cursor.js +0 -1
  1139. package/dist/services/mail/html-to-plaintext.d.ts +0 -1
  1140. package/dist/services/mail/html-to-plaintext.js +0 -1
  1141. package/dist/services/mail/imap/app-password.d.ts +0 -1
  1142. package/dist/services/mail/imap/app-password.js +0 -1
  1143. package/dist/services/mail/imap/auth-failure-classifier.d.ts +0 -1
  1144. package/dist/services/mail/imap/auth-failure-classifier.js +0 -1
  1145. package/dist/services/mail/imap/capabilities.d.ts +0 -1
  1146. package/dist/services/mail/imap/capabilities.js +0 -1
  1147. package/dist/services/mail/imap/client.d.ts +0 -1
  1148. package/dist/services/mail/imap/client.js +0 -1
  1149. package/dist/services/mail/imap/cursor.d.ts +0 -1
  1150. package/dist/services/mail/imap/cursor.js +0 -1
  1151. package/dist/services/mail/imap/folder-resolver.d.ts +0 -1
  1152. package/dist/services/mail/imap/folder-resolver.js +0 -1
  1153. package/dist/services/mail/imap/icloud-provider.d.ts +0 -1
  1154. package/dist/services/mail/imap/icloud-provider.js +0 -1
  1155. package/dist/services/mail/imap/imap-provider-base.d.ts +0 -1
  1156. package/dist/services/mail/imap/imap-provider-base.js +12 -7
  1157. package/dist/services/mail/imap/query-translator.d.ts +0 -1
  1158. package/dist/services/mail/imap/query-translator.js +0 -1
  1159. package/dist/services/mail/imap/reconcile-planner.d.ts +0 -1
  1160. package/dist/services/mail/imap/reconcile-planner.js +0 -1
  1161. package/dist/services/mail/imap/reply-mime.d.ts +0 -1
  1162. package/dist/services/mail/imap/reply-mime.js +0 -1
  1163. package/dist/services/mail/imap/yahoo-provider.d.ts +0 -1
  1164. package/dist/services/mail/imap/yahoo-provider.js +0 -1
  1165. package/dist/services/mail/mail-search.d.ts +0 -1
  1166. package/dist/services/mail/mail-search.js +0 -1
  1167. package/dist/services/mail/outlook/auth-failure-classifier.d.ts +0 -1
  1168. package/dist/services/mail/outlook/auth-failure-classifier.js +0 -1
  1169. package/dist/services/mail/outlook/client-config.d.ts +0 -1
  1170. package/dist/services/mail/outlook/client-config.js +0 -1
  1171. package/dist/services/mail/outlook/delta-cursor.d.ts +0 -1
  1172. package/dist/services/mail/outlook/delta-cursor.js +0 -1
  1173. package/dist/services/mail/outlook/graph-client.d.ts +0 -1
  1174. package/dist/services/mail/outlook/graph-client.js +0 -1
  1175. package/dist/services/mail/outlook/msal-app-factory.d.ts +0 -1
  1176. package/dist/services/mail/outlook/msal-app-factory.js +0 -1
  1177. package/dist/services/mail/outlook/msal-cache-plugin.d.ts +0 -1
  1178. package/dist/services/mail/outlook/msal-cache-plugin.js +0 -1
  1179. package/dist/services/mail/outlook/oauth-device-code.d.ts +0 -1
  1180. package/dist/services/mail/outlook/oauth-device-code.js +0 -1
  1181. package/dist/services/mail/outlook/oauth-loopback.d.ts +0 -1
  1182. package/dist/services/mail/outlook/oauth-loopback.js +0 -1
  1183. package/dist/services/mail/outlook/outlook-provider.d.ts +0 -1
  1184. package/dist/services/mail/outlook/outlook-provider.js +0 -1
  1185. package/dist/services/mail/outlook/query-translator.d.ts +0 -1
  1186. package/dist/services/mail/outlook/query-translator.js +0 -1
  1187. package/dist/services/mail/provider.d.ts +0 -1
  1188. package/dist/services/mail/provider.js +0 -1
  1189. package/dist/services/mail/query-utils.d.ts +0 -1
  1190. package/dist/services/mail/query-utils.js +0 -1
  1191. package/dist/services/mail-classifier.d.ts +0 -1
  1192. package/dist/services/mail-classifier.js +0 -1
  1193. package/dist/services/mail-ingestion.d.ts +0 -1
  1194. package/dist/services/mail-ingestion.js +0 -1
  1195. package/dist/services/mcp/auto-probe.d.ts +0 -1
  1196. package/dist/services/mcp/auto-probe.js +0 -1
  1197. package/dist/services/mcp/generators/claude.d.ts +0 -1
  1198. package/dist/services/mcp/generators/claude.js +0 -1
  1199. package/dist/services/mcp/generators/codex.d.ts +0 -1
  1200. package/dist/services/mcp/generators/codex.js +0 -1
  1201. package/dist/services/mcp/generators/gemini.d.ts +0 -1
  1202. package/dist/services/mcp/generators/gemini.js +0 -1
  1203. package/dist/services/mcp/generators/index.d.ts +0 -1
  1204. package/dist/services/mcp/generators/index.js +0 -1
  1205. package/dist/services/mcp/generators/types.d.ts +0 -1
  1206. package/dist/services/mcp/generators/types.js +0 -1
  1207. package/dist/services/mcp/probe.d.ts +0 -1
  1208. package/dist/services/mcp/probe.js +7 -1
  1209. package/dist/services/mcp/registry.d.ts +0 -1
  1210. package/dist/services/mcp/registry.js +0 -1
  1211. package/dist/services/mcp/risk.d.ts +1 -2
  1212. package/dist/services/mcp/risk.js +1 -2
  1213. package/dist/services/mcp/sdk-observations-server.d.ts +0 -1
  1214. package/dist/services/mcp/sdk-observations-server.js +0 -1
  1215. package/dist/services/mcp/session-materializer.d.ts +2 -3
  1216. package/dist/services/mcp/session-materializer.js +2 -3
  1217. package/dist/services/mcp/tool-audit.d.ts +0 -1
  1218. package/dist/services/mcp/tool-audit.js +0 -1
  1219. package/dist/services/mcp/types.d.ts +0 -1
  1220. package/dist/services/mcp/types.js +0 -1
  1221. package/dist/services/notion.d.ts +1 -4
  1222. package/dist/services/notion.js +1 -4
  1223. package/dist/services/observations-batch.d.ts +8 -10
  1224. package/dist/services/observations-batch.js +8 -10
  1225. package/dist/services/obsidian.d.ts +0 -1
  1226. package/dist/services/obsidian.js +0 -1
  1227. package/dist/services/service-registry.d.ts +0 -3
  1228. package/dist/services/service-registry.js +0 -2
  1229. package/dist/services/voice/transcriber-impl.d.ts +0 -1
  1230. package/dist/services/voice/transcriber-impl.js +21 -20
  1231. package/dist/services/voice/transcriber.d.ts +2 -5
  1232. package/dist/services/voice/transcriber.js +16 -14
  1233. package/dist/settings/runtime-settings.d.ts +44 -3
  1234. package/dist/settings/runtime-settings.js +124 -5
  1235. package/dist/settings/settings-store.d.ts +0 -1
  1236. package/dist/settings/settings-store.js +44 -2
  1237. package/native/win-appcontainer/README.md +66 -0
  1238. package/native/win-appcontainer/binding.gyp +33 -0
  1239. package/native/win-appcontainer/loader.js +29 -0
  1240. package/native/win-appcontainer/package.json +18 -0
  1241. package/native/win-appcontainer/src/win_appcontainer.cc +67 -0
  1242. package/package.json +7 -3
  1243. package/dist/adapters/composite-dashboard-stream.d.ts.map +0 -1
  1244. package/dist/adapters/composite-dashboard-stream.js.map +0 -1
  1245. package/dist/adapters/dashboard-adapter.d.ts.map +0 -1
  1246. package/dist/adapters/dashboard-adapter.js.map +0 -1
  1247. package/dist/adapters/discord.d.ts.map +0 -1
  1248. package/dist/adapters/discord.js.map +0 -1
  1249. package/dist/adapters/docs-qa-adapter.d.ts.map +0 -1
  1250. package/dist/adapters/docs-qa-adapter.js.map +0 -1
  1251. package/dist/adapters/message-hub.d.ts.map +0 -1
  1252. package/dist/adapters/message-hub.js.map +0 -1
  1253. package/dist/adapters/notification-manager.d.ts.map +0 -1
  1254. package/dist/adapters/notification-manager.js.map +0 -1
  1255. package/dist/adapters/outbound-text.d.ts.map +0 -1
  1256. package/dist/adapters/outbound-text.js.map +0 -1
  1257. package/dist/adapters/primary-platform-resolver.d.ts.map +0 -1
  1258. package/dist/adapters/primary-platform-resolver.js.map +0 -1
  1259. package/dist/adapters/slack-adapter.d.ts.map +0 -1
  1260. package/dist/adapters/slack-adapter.js.map +0 -1
  1261. package/dist/adapters/telegram-adapter.d.ts.map +0 -1
  1262. package/dist/adapters/telegram-adapter.js.map +0 -1
  1263. package/dist/adapters/types.d.ts.map +0 -1
  1264. package/dist/adapters/types.js.map +0 -1
  1265. package/dist/adapters/whatsapp-adapter.d.ts.map +0 -1
  1266. package/dist/adapters/whatsapp-adapter.js.map +0 -1
  1267. package/dist/api/chat-binding-query.d.ts.map +0 -1
  1268. package/dist/api/chat-binding-query.js.map +0 -1
  1269. package/dist/api/chat-session-resume.d.ts.map +0 -1
  1270. package/dist/api/chat-session-resume.js.map +0 -1
  1271. package/dist/api/directory-picker.d.ts.map +0 -1
  1272. package/dist/api/directory-picker.js.map +0 -1
  1273. package/dist/api/env-writer.d.ts.map +0 -1
  1274. package/dist/api/env-writer.js.map +0 -1
  1275. package/dist/api/helpers/agent-errors.d.ts.map +0 -1
  1276. package/dist/api/helpers/agent-errors.js.map +0 -1
  1277. package/dist/api/integration-route-gate.d.ts.map +0 -1
  1278. package/dist/api/integration-route-gate.js.map +0 -1
  1279. package/dist/api/json-body.d.ts.map +0 -1
  1280. package/dist/api/json-body.js.map +0 -1
  1281. package/dist/api/routes/activity-sources.d.ts.map +0 -1
  1282. package/dist/api/routes/activity-sources.js.map +0 -1
  1283. package/dist/api/routes/agent-schedule-plan-match.d.ts.map +0 -1
  1284. package/dist/api/routes/agent-schedule-plan-match.js.map +0 -1
  1285. package/dist/api/routes/agent-schedule.d.ts.map +0 -1
  1286. package/dist/api/routes/agent-schedule.js.map +0 -1
  1287. package/dist/api/routes/agent.d.ts.map +0 -1
  1288. package/dist/api/routes/agent.js.map +0 -1
  1289. package/dist/api/routes/apple-calendar.d.ts.map +0 -1
  1290. package/dist/api/routes/apple-calendar.js.map +0 -1
  1291. package/dist/api/routes/attachments.d.ts.map +0 -1
  1292. package/dist/api/routes/attachments.js.map +0 -1
  1293. package/dist/api/routes/backends.d.ts.map +0 -1
  1294. package/dist/api/routes/backends.js.map +0 -1
  1295. package/dist/api/routes/books.d.ts.map +0 -1
  1296. package/dist/api/routes/books.js.map +0 -1
  1297. package/dist/api/routes/calendar.d.ts.map +0 -1
  1298. package/dist/api/routes/calendar.js.map +0 -1
  1299. package/dist/api/routes/commands.d.ts.map +0 -1
  1300. package/dist/api/routes/commands.js.map +0 -1
  1301. package/dist/api/routes/context/index.d.ts.map +0 -1
  1302. package/dist/api/routes/context/index.js.map +0 -1
  1303. package/dist/api/routes/context/locks.d.ts.map +0 -1
  1304. package/dist/api/routes/context/locks.js.map +0 -1
  1305. package/dist/api/routes/context/path-resolve.d.ts.map +0 -1
  1306. package/dist/api/routes/context/path-resolve.js.map +0 -1
  1307. package/dist/api/routes/context/permissions.d.ts.map +0 -1
  1308. package/dist/api/routes/context/permissions.js.map +0 -1
  1309. package/dist/api/routes/context/read.d.ts.map +0 -1
  1310. package/dist/api/routes/context/read.js.map +0 -1
  1311. package/dist/api/routes/context/repair.d.ts.map +0 -1
  1312. package/dist/api/routes/context/repair.js.map +0 -1
  1313. package/dist/api/routes/context/snapshots.d.ts.map +0 -1
  1314. package/dist/api/routes/context/snapshots.js.map +0 -1
  1315. package/dist/api/routes/context/write.d.ts.map +0 -1
  1316. package/dist/api/routes/context/write.js.map +0 -1
  1317. package/dist/api/routes/context.d.ts +0 -16
  1318. package/dist/api/routes/context.d.ts.map +0 -1
  1319. package/dist/api/routes/context.js +0 -1645
  1320. package/dist/api/routes/context.js.map +0 -1
  1321. package/dist/api/routes/dashboard/config.d.ts.map +0 -1
  1322. package/dist/api/routes/dashboard/config.js.map +0 -1
  1323. package/dist/api/routes/dashboard/conversations.d.ts.map +0 -1
  1324. package/dist/api/routes/dashboard/conversations.js.map +0 -1
  1325. package/dist/api/routes/dashboard/cost-approvals.d.ts.map +0 -1
  1326. package/dist/api/routes/dashboard/cost-approvals.js.map +0 -1
  1327. package/dist/api/routes/dashboard/index.d.ts.map +0 -1
  1328. package/dist/api/routes/dashboard/index.js.map +0 -1
  1329. package/dist/api/routes/dashboard/messaging.d.ts.map +0 -1
  1330. package/dist/api/routes/dashboard/messaging.js.map +0 -1
  1331. package/dist/api/routes/dashboard/notifications.d.ts.map +0 -1
  1332. package/dist/api/routes/dashboard/notifications.js.map +0 -1
  1333. package/dist/api/routes/dashboard/oauth-google.d.ts.map +0 -1
  1334. package/dist/api/routes/dashboard/oauth-google.js.map +0 -1
  1335. package/dist/api/routes/dashboard/schedule-readonly.d.ts.map +0 -1
  1336. package/dist/api/routes/dashboard/schedule-readonly.js.map +0 -1
  1337. package/dist/api/routes/dashboard/secrets.d.ts.map +0 -1
  1338. package/dist/api/routes/dashboard/secrets.js.map +0 -1
  1339. package/dist/api/routes/dashboard/snapshots.d.ts.map +0 -1
  1340. package/dist/api/routes/dashboard/snapshots.js.map +0 -1
  1341. package/dist/api/routes/dashboard.d.ts +0 -29
  1342. package/dist/api/routes/dashboard.d.ts.map +0 -1
  1343. package/dist/api/routes/dashboard.js +0 -2168
  1344. package/dist/api/routes/dashboard.js.map +0 -1
  1345. package/dist/api/routes/delegated-sync.d.ts.map +0 -1
  1346. package/dist/api/routes/delegated-sync.js.map +0 -1
  1347. package/dist/api/routes/delegated.d.ts.map +0 -1
  1348. package/dist/api/routes/delegated.js.map +0 -1
  1349. package/dist/api/routes/docs.d.ts.map +0 -1
  1350. package/dist/api/routes/docs.js.map +0 -1
  1351. package/dist/api/routes/entities.d.ts.map +0 -1
  1352. package/dist/api/routes/entities.js.map +0 -1
  1353. package/dist/api/routes/fs.d.ts.map +0 -1
  1354. package/dist/api/routes/fs.js.map +0 -1
  1355. package/dist/api/routes/fs.logic.d.ts.map +0 -1
  1356. package/dist/api/routes/fs.logic.js.map +0 -1
  1357. package/dist/api/routes/git-accounts.d.ts.map +0 -1
  1358. package/dist/api/routes/git-accounts.js.map +0 -1
  1359. package/dist/api/routes/git-templates.d.ts.map +0 -1
  1360. package/dist/api/routes/git-templates.js.map +0 -1
  1361. package/dist/api/routes/git.d.ts.map +0 -1
  1362. package/dist/api/routes/git.js.map +0 -1
  1363. package/dist/api/routes/github.d.ts.map +0 -1
  1364. package/dist/api/routes/github.js.map +0 -1
  1365. package/dist/api/routes/health.d.ts.map +0 -1
  1366. package/dist/api/routes/health.js.map +0 -1
  1367. package/dist/api/routes/integrations/crud-patch.d.ts.map +0 -1
  1368. package/dist/api/routes/integrations/crud-patch.js.map +0 -1
  1369. package/dist/api/routes/integrations/crud.d.ts.map +0 -1
  1370. package/dist/api/routes/integrations/crud.js.map +0 -1
  1371. package/dist/api/routes/integrations/exec.d.ts.map +0 -1
  1372. package/dist/api/routes/integrations/exec.js.map +0 -1
  1373. package/dist/api/routes/integrations/index.d.ts.map +0 -1
  1374. package/dist/api/routes/integrations/index.js.map +0 -1
  1375. package/dist/api/routes/integrations/integrations/crud.d.ts +0 -16
  1376. package/dist/api/routes/integrations/integrations/crud.d.ts.map +0 -1
  1377. package/dist/api/routes/integrations/integrations/crud.js +0 -158
  1378. package/dist/api/routes/integrations/integrations/crud.js.map +0 -1
  1379. package/dist/api/routes/integrations/integrations/index.d.ts +0 -55
  1380. package/dist/api/routes/integrations/integrations/index.d.ts.map +0 -1
  1381. package/dist/api/routes/integrations/integrations/index.js +0 -65
  1382. package/dist/api/routes/integrations/integrations/index.js.map +0 -1
  1383. package/dist/api/routes/integrations/integrations/invoke.d.ts +0 -38
  1384. package/dist/api/routes/integrations/integrations/invoke.d.ts.map +0 -1
  1385. package/dist/api/routes/integrations/integrations/invoke.js +0 -320
  1386. package/dist/api/routes/integrations/integrations/invoke.js.map +0 -1
  1387. package/dist/api/routes/integrations/integrations/probe.d.ts +0 -21
  1388. package/dist/api/routes/integrations/integrations/probe.d.ts.map +0 -1
  1389. package/dist/api/routes/integrations/integrations/probe.js +0 -247
  1390. package/dist/api/routes/integrations/integrations/probe.js.map +0 -1
  1391. package/dist/api/routes/integrations/invoke.d.ts +0 -38
  1392. package/dist/api/routes/integrations/invoke.d.ts.map +0 -1
  1393. package/dist/api/routes/integrations/invoke.js +0 -320
  1394. package/dist/api/routes/integrations/invoke.js.map +0 -1
  1395. package/dist/api/routes/integrations/probe.d.ts.map +0 -1
  1396. package/dist/api/routes/integrations/probe.js.map +0 -1
  1397. package/dist/api/routes/integrations-reconcile.d.ts.map +0 -1
  1398. package/dist/api/routes/integrations-reconcile.js.map +0 -1
  1399. package/dist/api/routes/integrations.d.ts +0 -48
  1400. package/dist/api/routes/integrations.d.ts.map +0 -1
  1401. package/dist/api/routes/integrations.js +0 -1624
  1402. package/dist/api/routes/integrations.js.map +0 -1
  1403. package/dist/api/routes/knowledge.d.ts.map +0 -1
  1404. package/dist/api/routes/knowledge.js.map +0 -1
  1405. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts +0 -4
  1406. package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts.map +0 -1
  1407. package/dist/api/routes/mail/_pa_wip_mail/app-password.js +0 -192
  1408. package/dist/api/routes/mail/_pa_wip_mail/app-password.js.map +0 -1
  1409. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts +0 -55
  1410. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts.map +0 -1
  1411. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js +0 -91
  1412. package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js.map +0 -1
  1413. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts +0 -36
  1414. package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts.map +0 -1
  1415. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js +0 -2
  1416. package/dist/api/routes/mail/_pa_wip_mail/dependencies.js.map +0 -1
  1417. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts +0 -45
  1418. package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts.map +0 -1
  1419. package/dist/api/routes/mail/_pa_wip_mail/gating.js +0 -98
  1420. package/dist/api/routes/mail/_pa_wip_mail/gating.js.map +0 -1
  1421. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts +0 -4
  1422. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts.map +0 -1
  1423. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js +0 -289
  1424. package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js.map +0 -1
  1425. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts +0 -4
  1426. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts.map +0 -1
  1427. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js +0 -192
  1428. package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js.map +0 -1
  1429. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts +0 -55
  1430. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts.map +0 -1
  1431. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js +0 -91
  1432. package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js.map +0 -1
  1433. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts +0 -36
  1434. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts.map +0 -1
  1435. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js +0 -2
  1436. package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js.map +0 -1
  1437. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts +0 -5
  1438. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts.map +0 -1
  1439. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js +0 -139
  1440. package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js.map +0 -1
  1441. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts +0 -45
  1442. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts.map +0 -1
  1443. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js +0 -98
  1444. package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js.map +0 -1
  1445. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts +0 -18
  1446. package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts.map +0 -1
  1447. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js +0 -40
  1448. package/dist/api/routes/mail/_pa_wip_mail/mail/index.js.map +0 -1
  1449. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts +0 -15
  1450. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts.map +0 -1
  1451. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js +0 -239
  1452. package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js.map +0 -1
  1453. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts +0 -4
  1454. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts.map +0 -1
  1455. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js +0 -73
  1456. package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js.map +0 -1
  1457. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts +0 -64
  1458. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts.map +0 -1
  1459. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js +0 -286
  1460. package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js.map +0 -1
  1461. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts +0 -4
  1462. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts.map +0 -1
  1463. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js +0 -73
  1464. package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js.map +0 -1
  1465. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts +0 -5
  1466. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts.map +0 -1
  1467. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js +0 -35
  1468. package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js.map +0 -1
  1469. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts +0 -23
  1470. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts.map +0 -1
  1471. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js +0 -131
  1472. package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js.map +0 -1
  1473. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts +0 -64
  1474. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts.map +0 -1
  1475. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js +0 -286
  1476. package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js.map +0 -1
  1477. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts +0 -4
  1478. package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts.map +0 -1
  1479. package/dist/api/routes/mail/_pa_wip_mail/search-health.js +0 -131
  1480. package/dist/api/routes/mail/_pa_wip_mail/search-health.js.map +0 -1
  1481. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts +0 -23
  1482. package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts.map +0 -1
  1483. package/dist/api/routes/mail/_pa_wip_mail/validators.js +0 -131
  1484. package/dist/api/routes/mail/_pa_wip_mail/validators.js.map +0 -1
  1485. package/dist/api/routes/mail/accounts.d.ts.map +0 -1
  1486. package/dist/api/routes/mail/accounts.js.map +0 -1
  1487. package/dist/api/routes/mail/app-password.d.ts.map +0 -1
  1488. package/dist/api/routes/mail/app-password.js.map +0 -1
  1489. package/dist/api/routes/mail/body-helpers.d.ts.map +0 -1
  1490. package/dist/api/routes/mail/body-helpers.js.map +0 -1
  1491. package/dist/api/routes/mail/dependencies.d.ts.map +0 -1
  1492. package/dist/api/routes/mail/dependencies.js.map +0 -1
  1493. package/dist/api/routes/mail/drafts.d.ts.map +0 -1
  1494. package/dist/api/routes/mail/drafts.js.map +0 -1
  1495. package/dist/api/routes/mail/gating.d.ts.map +0 -1
  1496. package/dist/api/routes/mail/gating.js.map +0 -1
  1497. package/dist/api/routes/mail/index.d.ts.map +0 -1
  1498. package/dist/api/routes/mail/index.js.map +0 -1
  1499. package/dist/api/routes/mail/messages.d.ts.map +0 -1
  1500. package/dist/api/routes/mail/messages.js.map +0 -1
  1501. package/dist/api/routes/mail/outlook-config.d.ts.map +0 -1
  1502. package/dist/api/routes/mail/outlook-config.js.map +0 -1
  1503. package/dist/api/routes/mail/provider-resolver.d.ts.map +0 -1
  1504. package/dist/api/routes/mail/provider-resolver.js.map +0 -1
  1505. package/dist/api/routes/mail/providers.d.ts.map +0 -1
  1506. package/dist/api/routes/mail/providers.js.map +0 -1
  1507. package/dist/api/routes/mail/search-health.d.ts.map +0 -1
  1508. package/dist/api/routes/mail/search-health.js.map +0 -1
  1509. package/dist/api/routes/mail/tags-folders.d.ts.map +0 -1
  1510. package/dist/api/routes/mail/tags-folders.js.map +0 -1
  1511. package/dist/api/routes/mail/validators.d.ts.map +0 -1
  1512. package/dist/api/routes/mail/validators.js.map +0 -1
  1513. package/dist/api/routes/mail.d.ts +0 -39
  1514. package/dist/api/routes/mail.d.ts.map +0 -1
  1515. package/dist/api/routes/mail.js +0 -1664
  1516. package/dist/api/routes/mail.js.map +0 -1
  1517. package/dist/api/routes/managed-tasks.d.ts.map +0 -1
  1518. package/dist/api/routes/managed-tasks.js.map +0 -1
  1519. package/dist/api/routes/mcp.d.ts.map +0 -1
  1520. package/dist/api/routes/mcp.js.map +0 -1
  1521. package/dist/api/routes/metrics.d.ts.map +0 -1
  1522. package/dist/api/routes/metrics.js.map +0 -1
  1523. package/dist/api/routes/notion.d.ts.map +0 -1
  1524. package/dist/api/routes/notion.js.map +0 -1
  1525. package/dist/api/routes/observations.d.ts.map +0 -1
  1526. package/dist/api/routes/observations.js.map +0 -1
  1527. package/dist/api/routes/obsidian.d.ts.map +0 -1
  1528. package/dist/api/routes/obsidian.js.map +0 -1
  1529. package/dist/api/routes/profile-questions.d.ts.map +0 -1
  1530. package/dist/api/routes/profile-questions.js.map +0 -1
  1531. package/dist/api/routes/receipts.d.ts.map +0 -1
  1532. package/dist/api/routes/receipts.js.map +0 -1
  1533. package/dist/api/routes/recurring-schedules.d.ts.map +0 -1
  1534. package/dist/api/routes/recurring-schedules.js.map +0 -1
  1535. package/dist/api/routes/repositories.d.ts.map +0 -1
  1536. package/dist/api/routes/repositories.js.map +0 -1
  1537. package/dist/api/routes/schedule-model-resolver.d.ts.map +0 -1
  1538. package/dist/api/routes/schedule-model-resolver.js.map +0 -1
  1539. package/dist/api/routes/schedule-options.d.ts.map +0 -1
  1540. package/dist/api/routes/schedule-options.js.map +0 -1
  1541. package/dist/api/routes/schedule-validation.d.ts.map +0 -1
  1542. package/dist/api/routes/schedule-validation.js.map +0 -1
  1543. package/dist/api/routes/setup-migrate.d.ts.map +0 -1
  1544. package/dist/api/routes/setup-migrate.js.map +0 -1
  1545. package/dist/api/routes/setup.d.ts.map +0 -1
  1546. package/dist/api/routes/setup.js.map +0 -1
  1547. package/dist/api/routes/skill-curation.d.ts.map +0 -1
  1548. package/dist/api/routes/skill-curation.js.map +0 -1
  1549. package/dist/api/routes/skills.d.ts.map +0 -1
  1550. package/dist/api/routes/skills.js.map +0 -1
  1551. package/dist/api/routes/sot-bindings.d.ts.map +0 -1
  1552. package/dist/api/routes/sot-bindings.js.map +0 -1
  1553. package/dist/api/routes/sse.d.ts.map +0 -1
  1554. package/dist/api/routes/sse.js.map +0 -1
  1555. package/dist/api/routes/system.d.ts.map +0 -1
  1556. package/dist/api/routes/system.js.map +0 -1
  1557. package/dist/api/routes/task-flows.d.ts.map +0 -1
  1558. package/dist/api/routes/task-flows.js.map +0 -1
  1559. package/dist/api/routes/travel-bookings.d.ts.map +0 -1
  1560. package/dist/api/routes/travel-bookings.js.map +0 -1
  1561. package/dist/api/routes/travel-time.d.ts +0 -8
  1562. package/dist/api/routes/travel-time.d.ts.map +0 -1
  1563. package/dist/api/routes/travel-time.js +0 -127
  1564. package/dist/api/routes/travel-time.js.map +0 -1
  1565. package/dist/api/routes/triggers.d.ts.map +0 -1
  1566. package/dist/api/routes/triggers.js.map +0 -1
  1567. package/dist/api/routes/voice.d.ts.map +0 -1
  1568. package/dist/api/routes/voice.js.map +0 -1
  1569. package/dist/api/routes/wiki.d.ts.map +0 -1
  1570. package/dist/api/routes/wiki.js.map +0 -1
  1571. package/dist/api/server.d.ts.map +0 -1
  1572. package/dist/api/server.js.map +0 -1
  1573. package/dist/bootstrap/adapters.d.ts.map +0 -1
  1574. package/dist/bootstrap/adapters.js.map +0 -1
  1575. package/dist/bootstrap/api.d.ts.map +0 -1
  1576. package/dist/bootstrap/api.js.map +0 -1
  1577. package/dist/bootstrap/catchup.d.ts.map +0 -1
  1578. package/dist/bootstrap/catchup.js.map +0 -1
  1579. package/dist/bootstrap/db.d.ts.map +0 -1
  1580. package/dist/bootstrap/db.js.map +0 -1
  1581. package/dist/bootstrap/event-pipeline.d.ts.map +0 -1
  1582. package/dist/bootstrap/event-pipeline.js.map +0 -1
  1583. package/dist/bootstrap/observers.d.ts.map +0 -1
  1584. package/dist/bootstrap/observers.js.map +0 -1
  1585. package/dist/bootstrap/schedule-helpers.d.ts.map +0 -1
  1586. package/dist/bootstrap/schedule-helpers.js.map +0 -1
  1587. package/dist/bootstrap/services.d.ts.map +0 -1
  1588. package/dist/bootstrap/services.js.map +0 -1
  1589. package/dist/config.d.ts.map +0 -1
  1590. package/dist/config.js.map +0 -1
  1591. package/dist/core/abort-utils.d.ts.map +0 -1
  1592. package/dist/core/abort-utils.js.map +0 -1
  1593. package/dist/core/agent-core.d.ts.map +0 -1
  1594. package/dist/core/agent-core.js.map +0 -1
  1595. package/dist/core/alerts.d.ts.map +0 -1
  1596. package/dist/core/alerts.js.map +0 -1
  1597. package/dist/core/atomic-write.d.ts.map +0 -1
  1598. package/dist/core/atomic-write.js.map +0 -1
  1599. package/dist/core/backends/api-key-probe.d.ts.map +0 -1
  1600. package/dist/core/backends/api-key-probe.js.map +0 -1
  1601. package/dist/core/backends/auth-health-monitor.d.ts.map +0 -1
  1602. package/dist/core/backends/auth-health-monitor.js.map +0 -1
  1603. package/dist/core/backends/auth-recovery.d.ts.map +0 -1
  1604. package/dist/core/backends/auth-recovery.js.map +0 -1
  1605. package/dist/core/backends/auth-telemetry.d.ts.map +0 -1
  1606. package/dist/core/backends/auth-telemetry.js.map +0 -1
  1607. package/dist/core/backends/backend-router.d.ts.map +0 -1
  1608. package/dist/core/backends/backend-router.js.map +0 -1
  1609. package/dist/core/backends/claude-auth.d.ts.map +0 -1
  1610. package/dist/core/backends/claude-auth.js.map +0 -1
  1611. package/dist/core/backends/claude-code-core.d.ts.map +0 -1
  1612. package/dist/core/backends/claude-code-core.js.map +0 -1
  1613. package/dist/core/backends/claude-credentials-store.d.ts.map +0 -1
  1614. package/dist/core/backends/claude-credentials-store.js.map +0 -1
  1615. package/dist/core/backends/claude-delegated.d.ts.map +0 -1
  1616. package/dist/core/backends/claude-delegated.js.map +0 -1
  1617. package/dist/core/backends/claude-errors.d.ts.map +0 -1
  1618. package/dist/core/backends/claude-errors.js.map +0 -1
  1619. package/dist/core/backends/claude-probe.d.ts.map +0 -1
  1620. package/dist/core/backends/claude-probe.js.map +0 -1
  1621. package/dist/core/backends/claude-tool-collection.d.ts.map +0 -1
  1622. package/dist/core/backends/claude-tool-collection.js.map +0 -1
  1623. package/dist/core/backends/cli-utils.d.ts.map +0 -1
  1624. package/dist/core/backends/cli-utils.js.map +0 -1
  1625. package/dist/core/backends/codex-core.d.ts.map +0 -1
  1626. package/dist/core/backends/codex-core.js.map +0 -1
  1627. package/dist/core/backends/gemini-cli-core.d.ts.map +0 -1
  1628. package/dist/core/backends/gemini-cli-core.js.map +0 -1
  1629. package/dist/core/backends/idle-watchdog.d.ts.map +0 -1
  1630. package/dist/core/backends/idle-watchdog.js.map +0 -1
  1631. package/dist/core/backends/install-methods.d.ts.map +0 -1
  1632. package/dist/core/backends/install-methods.js.map +0 -1
  1633. package/dist/core/backends/model-registry.d.ts.map +0 -1
  1634. package/dist/core/backends/model-registry.js.map +0 -1
  1635. package/dist/core/backends/native-skill-discovery-probe.d.ts.map +0 -1
  1636. package/dist/core/backends/native-skill-discovery-probe.js.map +0 -1
  1637. package/dist/core/backends/opencode-basic-auth-fetch.d.ts.map +0 -1
  1638. package/dist/core/backends/opencode-basic-auth-fetch.js.map +0 -1
  1639. package/dist/core/backends/opencode-config-builder.d.ts.map +0 -1
  1640. package/dist/core/backends/opencode-config-builder.js.map +0 -1
  1641. package/dist/core/backends/opencode-core.d.ts.map +0 -1
  1642. package/dist/core/backends/opencode-core.js.map +0 -1
  1643. package/dist/core/backends/opencode-event-mapper.d.ts.map +0 -1
  1644. package/dist/core/backends/opencode-event-mapper.js.map +0 -1
  1645. package/dist/core/backends/opencode-mcp.d.ts.map +0 -1
  1646. package/dist/core/backends/opencode-mcp.js.map +0 -1
  1647. package/dist/core/backends/opencode-server-manager.d.ts.map +0 -1
  1648. package/dist/core/backends/opencode-server-manager.js.map +0 -1
  1649. package/dist/core/backends/opencode-types.d.ts.map +0 -1
  1650. package/dist/core/backends/opencode-types.js.map +0 -1
  1651. package/dist/core/backends/plan-presets.d.ts.map +0 -1
  1652. package/dist/core/backends/plan-presets.js.map +0 -1
  1653. package/dist/core/backends/price-fetcher.d.ts.map +0 -1
  1654. package/dist/core/backends/price-fetcher.js.map +0 -1
  1655. package/dist/core/backends/process-config-cascade.d.ts.map +0 -1
  1656. package/dist/core/backends/process-config-cascade.js.map +0 -1
  1657. package/dist/core/backends/prompt-utils.d.ts.map +0 -1
  1658. package/dist/core/backends/prompt-utils.js.map +0 -1
  1659. package/dist/core/backends/proxy-model-registry.d.ts.map +0 -1
  1660. package/dist/core/backends/proxy-model-registry.js.map +0 -1
  1661. package/dist/core/backends/quota-reset-hints.d.ts.map +0 -1
  1662. package/dist/core/backends/quota-reset-hints.js.map +0 -1
  1663. package/dist/core/backends/silent-api-error-detector.d.ts.map +0 -1
  1664. package/dist/core/backends/silent-api-error-detector.js.map +0 -1
  1665. package/dist/core/bang-commands/commands-close.d.ts.map +0 -1
  1666. package/dist/core/bang-commands/commands-close.js.map +0 -1
  1667. package/dist/core/bang-commands/commands-cost.d.ts.map +0 -1
  1668. package/dist/core/bang-commands/commands-cost.js.map +0 -1
  1669. package/dist/core/bang-commands/commands-help.d.ts.map +0 -1
  1670. package/dist/core/bang-commands/commands-help.js.map +0 -1
  1671. package/dist/core/bang-commands/commands-report.d.ts.map +0 -1
  1672. package/dist/core/bang-commands/commands-report.js.map +0 -1
  1673. package/dist/core/bang-commands/commands-stop-start.d.ts.map +0 -1
  1674. package/dist/core/bang-commands/commands-stop-start.js.map +0 -1
  1675. package/dist/core/bang-commands/commands-wiki.d.ts.map +0 -1
  1676. package/dist/core/bang-commands/commands-wiki.js.map +0 -1
  1677. package/dist/core/bang-commands/format-utils.d.ts.map +0 -1
  1678. package/dist/core/bang-commands/format-utils.js.map +0 -1
  1679. package/dist/core/bang-commands/index.d.ts.map +0 -1
  1680. package/dist/core/bang-commands/index.js.map +0 -1
  1681. package/dist/core/bang-commands/registry.d.ts.map +0 -1
  1682. package/dist/core/bang-commands/registry.js.map +0 -1
  1683. package/dist/core/bang-commands/user-commands.d.ts.map +0 -1
  1684. package/dist/core/bang-commands/user-commands.js.map +0 -1
  1685. package/dist/core/channel-timeline.d.ts.map +0 -1
  1686. package/dist/core/channel-timeline.js.map +0 -1
  1687. package/dist/core/character-block.d.ts.map +0 -1
  1688. package/dist/core/character-block.js.map +0 -1
  1689. package/dist/core/context/activity-sources.d.ts.map +0 -1
  1690. package/dist/core/context/activity-sources.js.map +0 -1
  1691. package/dist/core/context/activity-view-reconciler.d.ts.map +0 -1
  1692. package/dist/core/context/activity-view-reconciler.js.map +0 -1
  1693. package/dist/core/context/activity-view-runner.d.ts.map +0 -1
  1694. package/dist/core/context/activity-view-runner.js.map +0 -1
  1695. package/dist/core/context/default-schedules-reconciler.d.ts.map +0 -1
  1696. package/dist/core/context/default-schedules-reconciler.js.map +0 -1
  1697. package/dist/core/context/default-schedules-runner.d.ts.map +0 -1
  1698. package/dist/core/context/default-schedules-runner.js.map +0 -1
  1699. package/dist/core/context/domain-index-reconciler.d.ts.map +0 -1
  1700. package/dist/core/context/domain-index-reconciler.js.map +0 -1
  1701. package/dist/core/context/domain-index-runner.d.ts.map +0 -1
  1702. package/dist/core/context/domain-index-runner.js.map +0 -1
  1703. package/dist/core/context/entity-mirror.d.ts.map +0 -1
  1704. package/dist/core/context/entity-mirror.js.map +0 -1
  1705. package/dist/core/context/entity-source-rename.d.ts.map +0 -1
  1706. package/dist/core/context/entity-source-rename.js.map +0 -1
  1707. package/dist/core/context/index-reconciler.d.ts.map +0 -1
  1708. package/dist/core/context/index-reconciler.js.map +0 -1
  1709. package/dist/core/context/policy-index-reconciler.d.ts.map +0 -1
  1710. package/dist/core/context/policy-index-reconciler.js.map +0 -1
  1711. package/dist/core/context/policy-index-runner.d.ts.map +0 -1
  1712. package/dist/core/context/policy-index-runner.js.map +0 -1
  1713. package/dist/core/context/reconciler-runner.d.ts.map +0 -1
  1714. package/dist/core/context/reconciler-runner.js.map +0 -1
  1715. package/dist/core/context-builder.d.ts.map +0 -1
  1716. package/dist/core/context-builder.js.map +0 -1
  1717. package/dist/core/context-frontmatter-backfill.d.ts +0 -33
  1718. package/dist/core/context-frontmatter-backfill.d.ts.map +0 -1
  1719. package/dist/core/context-frontmatter-backfill.js +0 -111
  1720. package/dist/core/context-frontmatter-backfill.js.map +0 -1
  1721. package/dist/core/context-frontmatter.d.ts.map +0 -1
  1722. package/dist/core/context-frontmatter.js.map +0 -1
  1723. package/dist/core/context-health.d.ts.map +0 -1
  1724. package/dist/core/context-health.js.map +0 -1
  1725. package/dist/core/context-paths.d.ts.map +0 -1
  1726. package/dist/core/context-paths.js.map +0 -1
  1727. package/dist/core/context-staleness.d.ts.map +0 -1
  1728. package/dist/core/context-staleness.js.map +0 -1
  1729. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts +0 -19
  1730. package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts.map +0 -1
  1731. package/dist/core/context-validation/_pa_wip_context_validation/index.js +0 -19
  1732. package/dist/core/context-validation/_pa_wip_context_validation/index.js.map +0 -1
  1733. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts +0 -94
  1734. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts.map +0 -1
  1735. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js +0 -130
  1736. package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js.map +0 -1
  1737. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts +0 -60
  1738. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts.map +0 -1
  1739. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js +0 -156
  1740. package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js.map +0 -1
  1741. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts +0 -41
  1742. package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts.map +0 -1
  1743. package/dist/core/context-validation/_pa_wip_context_validation/section.js +0 -82
  1744. package/dist/core/context-validation/_pa_wip_context_validation/section.js.map +0 -1
  1745. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts +0 -52
  1746. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts.map +0 -1
  1747. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js +0 -110
  1748. package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js.map +0 -1
  1749. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts +0 -85
  1750. package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts.map +0 -1
  1751. package/dist/core/context-validation/_pa_wip_context_validation/today.js +0 -162
  1752. package/dist/core/context-validation/_pa_wip_context_validation/today.js.map +0 -1
  1753. package/dist/core/context-validation/index.d.ts.map +0 -1
  1754. package/dist/core/context-validation/index.js.map +0 -1
  1755. package/dist/core/context-validation/prepare-write.d.ts.map +0 -1
  1756. package/dist/core/context-validation/prepare-write.js.map +0 -1
  1757. package/dist/core/context-validation/routine-rulebook.d.ts.map +0 -1
  1758. package/dist/core/context-validation/routine-rulebook.js.map +0 -1
  1759. package/dist/core/context-validation/section.d.ts.map +0 -1
  1760. package/dist/core/context-validation/section.js.map +0 -1
  1761. package/dist/core/context-validation/snapshot-debounce.d.ts.map +0 -1
  1762. package/dist/core/context-validation/snapshot-debounce.js.map +0 -1
  1763. package/dist/core/context-validation/today.d.ts.map +0 -1
  1764. package/dist/core/context-validation/today.js.map +0 -1
  1765. package/dist/core/custom-routine-scheduler.d.ts.map +0 -1
  1766. package/dist/core/custom-routine-scheduler.js.map +0 -1
  1767. package/dist/core/daemon-api-cli.d.ts.map +0 -1
  1768. package/dist/core/daemon-api-cli.js.map +0 -1
  1769. package/dist/core/dashboard-session-cleanup.d.ts.map +0 -1
  1770. package/dist/core/dashboard-session-cleanup.js.map +0 -1
  1771. package/dist/core/dashboard-session-controls.d.ts.map +0 -1
  1772. package/dist/core/dashboard-session-controls.js.map +0 -1
  1773. package/dist/core/delegated-connector-health.d.ts.map +0 -1
  1774. package/dist/core/delegated-connector-health.js.map +0 -1
  1775. package/dist/core/dispatcher-date-utils.d.ts.map +0 -1
  1776. package/dist/core/dispatcher-date-utils.js.map +0 -1
  1777. package/dist/core/dispatcher-error-handling.d.ts.map +0 -1
  1778. package/dist/core/dispatcher-error-handling.js.map +0 -1
  1779. package/dist/core/dispatcher-hourly-check.d.ts.map +0 -1
  1780. package/dist/core/dispatcher-hourly-check.js.map +0 -1
  1781. package/dist/core/dispatcher-message-handler.d.ts.map +0 -1
  1782. package/dist/core/dispatcher-message-handler.js.map +0 -1
  1783. package/dist/core/dispatcher-morning-routine.d.ts.map +0 -1
  1784. package/dist/core/dispatcher-morning-routine.js.map +0 -1
  1785. package/dist/core/dispatcher-prompt.d.ts.map +0 -1
  1786. package/dist/core/dispatcher-prompt.js.map +0 -1
  1787. package/dist/core/dispatcher-repository-helpers.d.ts.map +0 -1
  1788. package/dist/core/dispatcher-repository-helpers.js.map +0 -1
  1789. package/dist/core/dispatcher-result-processor.d.ts.map +0 -1
  1790. package/dist/core/dispatcher-result-processor.js.map +0 -1
  1791. package/dist/core/dispatcher-scheduled-tasks.d.ts.map +0 -1
  1792. package/dist/core/dispatcher-scheduled-tasks.js.map +0 -1
  1793. package/dist/core/dispatcher-types.d.ts.map +0 -1
  1794. package/dist/core/dispatcher-types.js.map +0 -1
  1795. package/dist/core/dispatcher.d.ts.map +0 -1
  1796. package/dist/core/dispatcher.js.map +0 -1
  1797. package/dist/core/dm-freshness-metrics.d.ts.map +0 -1
  1798. package/dist/core/dm-freshness-metrics.js.map +0 -1
  1799. package/dist/core/docs/citation-validator.d.ts.map +0 -1
  1800. package/dist/core/docs/citation-validator.js.map +0 -1
  1801. package/dist/core/docs/extract-terms.d.ts.map +0 -1
  1802. package/dist/core/docs/extract-terms.js.map +0 -1
  1803. package/dist/core/docs/indexer.d.ts.map +0 -1
  1804. package/dist/core/docs/indexer.js.map +0 -1
  1805. package/dist/core/drift-effects.d.ts.map +0 -1
  1806. package/dist/core/drift-effects.js.map +0 -1
  1807. package/dist/core/evening-review-verify.d.ts.map +0 -1
  1808. package/dist/core/evening-review-verify.js.map +0 -1
  1809. package/dist/core/event-bus.d.ts.map +0 -1
  1810. package/dist/core/event-bus.js.map +0 -1
  1811. package/dist/core/fetch-window-prompt-loader.d.ts.map +0 -1
  1812. package/dist/core/fetch-window-prompt-loader.js.map +0 -1
  1813. package/dist/core/git-project-docs.d.ts.map +0 -1
  1814. package/dist/core/git-project-docs.js.map +0 -1
  1815. package/dist/core/health-monitor.d.ts.map +0 -1
  1816. package/dist/core/health-monitor.js.map +0 -1
  1817. package/dist/core/heartbeat.d.ts.map +0 -1
  1818. package/dist/core/heartbeat.js.map +0 -1
  1819. package/dist/core/integration-health.d.ts.map +0 -1
  1820. package/dist/core/integration-health.js.map +0 -1
  1821. package/dist/core/integration-lifecycle.d.ts.map +0 -1
  1822. package/dist/core/integration-lifecycle.js.map +0 -1
  1823. package/dist/core/integration-main-backend.d.ts.map +0 -1
  1824. package/dist/core/integration-main-backend.js.map +0 -1
  1825. package/dist/core/integration-probe.d.ts.map +0 -1
  1826. package/dist/core/integration-probe.js.map +0 -1
  1827. package/dist/core/management-md-write-lock.d.ts.map +0 -1
  1828. package/dist/core/management-md-write-lock.js.map +0 -1
  1829. package/dist/core/management-md.d.ts.map +0 -1
  1830. package/dist/core/management-md.js.map +0 -1
  1831. package/dist/core/management-registry.d.ts.map +0 -1
  1832. package/dist/core/management-registry.js.map +0 -1
  1833. package/dist/core/management-telemetry.d.ts.map +0 -1
  1834. package/dist/core/management-telemetry.js.map +0 -1
  1835. package/dist/core/message-recorder.d.ts.map +0 -1
  1836. package/dist/core/message-recorder.js.map +0 -1
  1837. package/dist/core/metrics.d.ts.map +0 -1
  1838. package/dist/core/metrics.js.map +0 -1
  1839. package/dist/core/migration-backup.d.ts.map +0 -1
  1840. package/dist/core/migration-backup.js.map +0 -1
  1841. package/dist/core/morning/agent-journal-appender.d.ts.map +0 -1
  1842. package/dist/core/morning/agent-journal-appender.js.map +0 -1
  1843. package/dist/core/morning/handoff-parser.d.ts.map +0 -1
  1844. package/dist/core/morning/handoff-parser.js.map +0 -1
  1845. package/dist/core/morning/journal-skeleton-builder.d.ts.map +0 -1
  1846. package/dist/core/morning/journal-skeleton-builder.js.map +0 -1
  1847. package/dist/core/morning/orchestrator.d.ts.map +0 -1
  1848. package/dist/core/morning/orchestrator.js.map +0 -1
  1849. package/dist/core/morning/parent-audit-emitter.d.ts.map +0 -1
  1850. package/dist/core/morning/parent-audit-emitter.js.map +0 -1
  1851. package/dist/core/morning/roadmap-skeleton-builder.d.ts.map +0 -1
  1852. package/dist/core/morning/roadmap-skeleton-builder.js.map +0 -1
  1853. package/dist/core/output-language-policy.d.ts.map +0 -1
  1854. package/dist/core/output-language-policy.js.map +0 -1
  1855. package/dist/core/overview-write-lock.d.ts.map +0 -1
  1856. package/dist/core/overview-write-lock.js.map +0 -1
  1857. package/dist/core/path-compat.d.ts.map +0 -1
  1858. package/dist/core/path-compat.js.map +0 -1
  1859. package/dist/core/path-rewrite.d.ts.map +0 -1
  1860. package/dist/core/path-rewrite.js.map +0 -1
  1861. package/dist/core/policy-files.d.ts.map +0 -1
  1862. package/dist/core/policy-files.js.map +0 -1
  1863. package/dist/core/pre-pass-freshness.d.ts.map +0 -1
  1864. package/dist/core/pre-pass-freshness.js.map +0 -1
  1865. package/dist/core/previous-week-digest.d.ts.map +0 -1
  1866. package/dist/core/previous-week-digest.js.map +0 -1
  1867. package/dist/core/profile-questions/seed.d.ts.map +0 -1
  1868. package/dist/core/profile-questions/seed.js.map +0 -1
  1869. package/dist/core/profile-questions/slot-filled.d.ts.map +0 -1
  1870. package/dist/core/profile-questions/slot-filled.js.map +0 -1
  1871. package/dist/core/prompts.d.ts.map +0 -1
  1872. package/dist/core/prompts.js.map +0 -1
  1873. package/dist/core/quiet-hours-sync.d.ts.map +0 -1
  1874. package/dist/core/quiet-hours-sync.js.map +0 -1
  1875. package/dist/core/read-sensitive-token-manager.d.ts.map +0 -1
  1876. package/dist/core/read-sensitive-token-manager.js.map +0 -1
  1877. package/dist/core/recurrence.d.ts.map +0 -1
  1878. package/dist/core/recurrence.js.map +0 -1
  1879. package/dist/core/reinstall.d.ts.map +0 -1
  1880. package/dist/core/reinstall.js.map +0 -1
  1881. package/dist/core/release-assets.d.ts.map +0 -1
  1882. package/dist/core/release-assets.js.map +0 -1
  1883. package/dist/core/repository-management-docs.d.ts.map +0 -1
  1884. package/dist/core/repository-management-docs.js.map +0 -1
  1885. package/dist/core/retention.d.ts.map +0 -1
  1886. package/dist/core/retention.js.map +0 -1
  1887. package/dist/core/review-context.d.ts.map +0 -1
  1888. package/dist/core/review-context.js.map +0 -1
  1889. package/dist/core/roadmap-horizon.d.ts.map +0 -1
  1890. package/dist/core/roadmap-horizon.js.map +0 -1
  1891. package/dist/core/roadmap-ids.d.ts.map +0 -1
  1892. package/dist/core/roadmap-ids.js.map +0 -1
  1893. package/dist/core/roadmap-maintenance.d.ts.map +0 -1
  1894. package/dist/core/roadmap-maintenance.js.map +0 -1
  1895. package/dist/core/roadmap-refresh-triggers.d.ts.map +0 -1
  1896. package/dist/core/roadmap-refresh-triggers.js.map +0 -1
  1897. package/dist/core/roadmap-truncate.d.ts.map +0 -1
  1898. package/dist/core/roadmap-truncate.js.map +0 -1
  1899. package/dist/core/roadmap-validate.d.ts.map +0 -1
  1900. package/dist/core/roadmap-validate.js.map +0 -1
  1901. package/dist/core/roadmap-write-lock.d.ts.map +0 -1
  1902. package/dist/core/roadmap-write-lock.js.map +0 -1
  1903. package/dist/core/routine-acquisition-plan.d.ts.map +0 -1
  1904. package/dist/core/routine-acquisition-plan.js.map +0 -1
  1905. package/dist/core/routine-fetch-window-retry.d.ts.map +0 -1
  1906. package/dist/core/routine-fetch-window-retry.js.map +0 -1
  1907. package/dist/core/routine-fetch-window-runner.d.ts.map +0 -1
  1908. package/dist/core/routine-fetch-window-runner.js.map +0 -1
  1909. package/dist/core/routine-windows.d.ts.map +0 -1
  1910. package/dist/core/routine-windows.js.map +0 -1
  1911. package/dist/core/schedule-insert-helper.d.ts.map +0 -1
  1912. package/dist/core/schedule-insert-helper.js.map +0 -1
  1913. package/dist/core/schedule-maintenance.d.ts.map +0 -1
  1914. package/dist/core/schedule-maintenance.js.map +0 -1
  1915. package/dist/core/scheduler.d.ts.map +0 -1
  1916. package/dist/core/scheduler.js.map +0 -1
  1917. package/dist/core/semaphore.d.ts.map +0 -1
  1918. package/dist/core/semaphore.js.map +0 -1
  1919. package/dist/core/session-gate.d.ts.map +0 -1
  1920. package/dist/core/session-gate.js.map +0 -1
  1921. package/dist/core/session-manager.d.ts.map +0 -1
  1922. package/dist/core/session-manager.js.map +0 -1
  1923. package/dist/core/signal-detector.d.ts.map +0 -1
  1924. package/dist/core/signal-detector.js.map +0 -1
  1925. package/dist/core/skeleton.d.ts.map +0 -1
  1926. package/dist/core/skeleton.js.map +0 -1
  1927. package/dist/core/skill-curation/apply-proposal.d.ts.map +0 -1
  1928. package/dist/core/skill-curation/apply-proposal.js.map +0 -1
  1929. package/dist/core/skill-curation/auto-revert.d.ts.map +0 -1
  1930. package/dist/core/skill-curation/auto-revert.js.map +0 -1
  1931. package/dist/core/skill-curation/classify-diff.d.ts.map +0 -1
  1932. package/dist/core/skill-curation/classify-diff.js.map +0 -1
  1933. package/dist/core/skill-curation/declarations.d.ts.map +0 -1
  1934. package/dist/core/skill-curation/declarations.js.map +0 -1
  1935. package/dist/core/skill-curation/knowledge-map.d.ts.map +0 -1
  1936. package/dist/core/skill-curation/knowledge-map.js.map +0 -1
  1937. package/dist/core/skill-curation/orphan-overlay.d.ts.map +0 -1
  1938. package/dist/core/skill-curation/orphan-overlay.js.map +0 -1
  1939. package/dist/core/skill-curation/overlay-store.d.ts.map +0 -1
  1940. package/dist/core/skill-curation/overlay-store.js.map +0 -1
  1941. package/dist/core/skill-curation/render/convention-notes.d.ts.map +0 -1
  1942. package/dist/core/skill-curation/render/convention-notes.js.map +0 -1
  1943. package/dist/core/skill-curation/render/cross-references.d.ts.map +0 -1
  1944. package/dist/core/skill-curation/render/cross-references.js.map +0 -1
  1945. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +0 -1
  1946. package/dist/core/skill-curation/render/frontmatter-schema.js.map +0 -1
  1947. package/dist/core/skill-curation/render/index.d.ts.map +0 -1
  1948. package/dist/core/skill-curation/render/index.js.map +0 -1
  1949. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +0 -1
  1950. package/dist/core/skill-curation/render/knowledge-layout.js.map +0 -1
  1951. package/dist/core/skill-curation/render/routing-table.d.ts.map +0 -1
  1952. package/dist/core/skill-curation/render/routing-table.js.map +0 -1
  1953. package/dist/core/skill-curation/render/search-recipes.d.ts.map +0 -1
  1954. package/dist/core/skill-curation/render/search-recipes.js.map +0 -1
  1955. package/dist/core/skill-curation/run-token.d.ts.map +0 -1
  1956. package/dist/core/skill-curation/run-token.js.map +0 -1
  1957. package/dist/core/skill-curation/signals.d.ts.map +0 -1
  1958. package/dist/core/skill-curation/signals.js.map +0 -1
  1959. package/dist/core/skill-curation/smoke-test.d.ts.map +0 -1
  1960. package/dist/core/skill-curation/smoke-test.js.map +0 -1
  1961. package/dist/core/skill-curation/splicer.d.ts.map +0 -1
  1962. package/dist/core/skill-curation/splicer.js.map +0 -1
  1963. package/dist/core/skill-curation/workdir.d.ts.map +0 -1
  1964. package/dist/core/skill-curation/workdir.js.map +0 -1
  1965. package/dist/core/skill-source-paths.d.ts.map +0 -1
  1966. package/dist/core/skill-source-paths.js.map +0 -1
  1967. package/dist/core/skills-compiler.d.ts.map +0 -1
  1968. package/dist/core/skills-compiler.js.map +0 -1
  1969. package/dist/core/skills-manifest.d.ts.map +0 -1
  1970. package/dist/core/skills-manifest.js.map +0 -1
  1971. package/dist/core/system-reset.d.ts.map +0 -1
  1972. package/dist/core/system-reset.js.map +0 -1
  1973. package/dist/core/template-store.d.ts.map +0 -1
  1974. package/dist/core/template-store.js.map +0 -1
  1975. package/dist/core/template-versions.d.ts.map +0 -1
  1976. package/dist/core/template-versions.js.map +0 -1
  1977. package/dist/core/today-agent-plan.d.ts.map +0 -1
  1978. package/dist/core/today-agent-plan.js.map +0 -1
  1979. package/dist/core/today-direct-writer.d.ts.map +0 -1
  1980. package/dist/core/today-direct-writer.js.map +0 -1
  1981. package/dist/core/today-write-lock.d.ts.map +0 -1
  1982. package/dist/core/today-write-lock.js.map +0 -1
  1983. package/dist/core/trigger-dispatch.d.ts.map +0 -1
  1984. package/dist/core/trigger-dispatch.js.map +0 -1
  1985. package/dist/core/trigger-evaluator.d.ts.map +0 -1
  1986. package/dist/core/trigger-evaluator.js.map +0 -1
  1987. package/dist/core/wiki/approval-queue.d.ts.map +0 -1
  1988. package/dist/core/wiki/approval-queue.js.map +0 -1
  1989. package/dist/core/wiki/bridge.d.ts.map +0 -1
  1990. package/dist/core/wiki/bridge.js.map +0 -1
  1991. package/dist/core/wiki/compile-lock.d.ts.map +0 -1
  1992. package/dist/core/wiki/compile-lock.js.map +0 -1
  1993. package/dist/core/wiki/compile-preview.d.ts.map +0 -1
  1994. package/dist/core/wiki/compile-preview.js.map +0 -1
  1995. package/dist/core/wiki/cost-estimate.d.ts.map +0 -1
  1996. package/dist/core/wiki/cost-estimate.js.map +0 -1
  1997. package/dist/core/wiki/dispatcher.d.ts.map +0 -1
  1998. package/dist/core/wiki/dispatcher.js.map +0 -1
  1999. package/dist/core/wiki/git-precompile.d.ts.map +0 -1
  2000. package/dist/core/wiki/git-precompile.js.map +0 -1
  2001. package/dist/core/wiki/import-migrate.d.ts.map +0 -1
  2002. package/dist/core/wiki/import-migrate.js.map +0 -1
  2003. package/dist/core/wiki/import-probe.d.ts.map +0 -1
  2004. package/dist/core/wiki/import-probe.js.map +0 -1
  2005. package/dist/core/wiki/index-cache.d.ts.map +0 -1
  2006. package/dist/core/wiki/index-cache.js.map +0 -1
  2007. package/dist/core/wiki/multi-url-dispatch.d.ts.map +0 -1
  2008. package/dist/core/wiki/multi-url-dispatch.js.map +0 -1
  2009. package/dist/core/wiki/wiki-fts.d.ts.map +0 -1
  2010. package/dist/core/wiki/wiki-fts.js.map +0 -1
  2011. package/dist/core/wiki/workspaces.d.ts.map +0 -1
  2012. package/dist/core/wiki/workspaces.js.map +0 -1
  2013. package/dist/core/wiki/write-strategy.d.ts.map +0 -1
  2014. package/dist/core/wiki/write-strategy.js.map +0 -1
  2015. package/dist/core/workdir.d.ts.map +0 -1
  2016. package/dist/core/workdir.js.map +0 -1
  2017. package/dist/db/automation-triggers.d.ts.map +0 -1
  2018. package/dist/db/automation-triggers.js.map +0 -1
  2019. package/dist/db/client.d.ts.map +0 -1
  2020. package/dist/db/client.js.map +0 -1
  2021. package/dist/db/entities-store.d.ts.map +0 -1
  2022. package/dist/db/entities-store.js.map +0 -1
  2023. package/dist/db/hourly-check-signals.d.ts.map +0 -1
  2024. package/dist/db/hourly-check-signals.js.map +0 -1
  2025. package/dist/db/integration-probe-store.d.ts.map +0 -1
  2026. package/dist/db/integration-probe-store.js.map +0 -1
  2027. package/dist/db/integrations-store.d.ts.map +0 -1
  2028. package/dist/db/integrations-store.js.map +0 -1
  2029. package/dist/db/managed-tasks-store.d.ts.map +0 -1
  2030. package/dist/db/managed-tasks-store.js.map +0 -1
  2031. package/dist/db/management-parse-failures-store.d.ts.map +0 -1
  2032. package/dist/db/management-parse-failures-store.js.map +0 -1
  2033. package/dist/db/observations.d.ts.map +0 -1
  2034. package/dist/db/observations.js.map +0 -1
  2035. package/dist/db/recurring-schedules.d.ts.map +0 -1
  2036. package/dist/db/recurring-schedules.js.map +0 -1
  2037. package/dist/db/repositories-store.d.ts.map +0 -1
  2038. package/dist/db/repositories-store.js.map +0 -1
  2039. package/dist/db/runtime-state.d.ts.map +0 -1
  2040. package/dist/db/runtime-state.js.map +0 -1
  2041. package/dist/db/schema.d.ts.map +0 -1
  2042. package/dist/db/schema.js.map +0 -1
  2043. package/dist/db/sot-bindings-store.d.ts.map +0 -1
  2044. package/dist/db/sot-bindings-store.js.map +0 -1
  2045. package/dist/db/voice-transcripts-store.d.ts.map +0 -1
  2046. package/dist/db/voice-transcripts-store.js.map +0 -1
  2047. package/dist/db/wiki-store.d.ts.map +0 -1
  2048. package/dist/db/wiki-store.js.map +0 -1
  2049. package/dist/index.d.ts.map +0 -1
  2050. package/dist/index.js.map +0 -1
  2051. package/dist/init.d.ts.map +0 -1
  2052. package/dist/init.js.map +0 -1
  2053. package/dist/log-buffer.d.ts.map +0 -1
  2054. package/dist/log-buffer.js.map +0 -1
  2055. package/dist/logging.d.ts.map +0 -1
  2056. package/dist/logging.js.map +0 -1
  2057. package/dist/management-rules.d.ts.map +0 -1
  2058. package/dist/management-rules.js.map +0 -1
  2059. package/dist/messaging/constants.d.ts.map +0 -1
  2060. package/dist/messaging/constants.js.map +0 -1
  2061. package/dist/messaging/magic-phrase.d.ts.map +0 -1
  2062. package/dist/messaging/magic-phrase.js.map +0 -1
  2063. package/dist/messaging/owner-channels.d.ts.map +0 -1
  2064. package/dist/messaging/owner-channels.js.map +0 -1
  2065. package/dist/messaging/setup-welcome-dm.d.ts.map +0 -1
  2066. package/dist/messaging/setup-welcome-dm.js.map +0 -1
  2067. package/dist/messaging/url-extract.d.ts.map +0 -1
  2068. package/dist/messaging/url-extract.js.map +0 -1
  2069. package/dist/observers/calendar-poller.d.ts.map +0 -1
  2070. package/dist/observers/calendar-poller.js.map +0 -1
  2071. package/dist/observers/context-index-reconciler-observer.d.ts.map +0 -1
  2072. package/dist/observers/context-index-reconciler-observer.js.map +0 -1
  2073. package/dist/observers/delegated-probe-observer.d.ts.map +0 -1
  2074. package/dist/observers/delegated-probe-observer.js.map +0 -1
  2075. package/dist/observers/delegated-sync-worker.d.ts.map +0 -1
  2076. package/dist/observers/delegated-sync-worker.js.map +0 -1
  2077. package/dist/observers/entity-mirror-observer.d.ts.map +0 -1
  2078. package/dist/observers/entity-mirror-observer.js.map +0 -1
  2079. package/dist/observers/git-delegated-cron.d.ts.map +0 -1
  2080. package/dist/observers/git-delegated-cron.js.map +0 -1
  2081. package/dist/observers/git-event-classifier.d.ts.map +0 -1
  2082. package/dist/observers/git-event-classifier.js.map +0 -1
  2083. package/dist/observers/git-watcher.d.ts.map +0 -1
  2084. package/dist/observers/git-watcher.js.map +0 -1
  2085. package/dist/observers/github-poller-classifier.d.ts.map +0 -1
  2086. package/dist/observers/github-poller-classifier.js.map +0 -1
  2087. package/dist/observers/github-poller.d.ts.map +0 -1
  2088. package/dist/observers/github-poller.js.map +0 -1
  2089. package/dist/observers/imminent-event-scheduler.d.ts.map +0 -1
  2090. package/dist/observers/imminent-event-scheduler.js.map +0 -1
  2091. package/dist/observers/mail-poller.d.ts.map +0 -1
  2092. package/dist/observers/mail-poller.js.map +0 -1
  2093. package/dist/observers/mail-reconciliation.d.ts.map +0 -1
  2094. package/dist/observers/mail-reconciliation.js.map +0 -1
  2095. package/dist/observers/manager.d.ts.map +0 -1
  2096. package/dist/observers/manager.js.map +0 -1
  2097. package/dist/observers/notion-poller.d.ts.map +0 -1
  2098. package/dist/observers/notion-poller.js.map +0 -1
  2099. package/dist/observers/observation-summarizer/index.d.ts.map +0 -1
  2100. package/dist/observers/observation-summarizer/index.js.map +0 -1
  2101. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +0 -1
  2102. package/dist/observers/observation-summarizer/pre-filter.js.map +0 -1
  2103. package/dist/observers/observation-summarizer/response-parser.d.ts.map +0 -1
  2104. package/dist/observers/observation-summarizer/response-parser.js.map +0 -1
  2105. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +0 -1
  2106. package/dist/observers/observation-summarizer/summarizer-client.js.map +0 -1
  2107. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +0 -1
  2108. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +0 -1
  2109. package/dist/observers/observation-summarizer/worker.d.ts.map +0 -1
  2110. package/dist/observers/observation-summarizer/worker.js.map +0 -1
  2111. package/dist/observers/obsidian-watcher.d.ts.map +0 -1
  2112. package/dist/observers/obsidian-watcher.js.map +0 -1
  2113. package/dist/observers/poll-guard.d.ts.map +0 -1
  2114. package/dist/observers/poll-guard.js.map +0 -1
  2115. package/dist/observers/primary-vault-watcher.d.ts.map +0 -1
  2116. package/dist/observers/primary-vault-watcher.js.map +0 -1
  2117. package/dist/observers/repository-management-cron.d.ts.map +0 -1
  2118. package/dist/observers/repository-management-cron.js.map +0 -1
  2119. package/dist/observers/skill-curation-walker.d.ts.map +0 -1
  2120. package/dist/observers/skill-curation-walker.js.map +0 -1
  2121. package/dist/safety/absolute-block-audit.d.ts.map +0 -1
  2122. package/dist/safety/absolute-block-audit.js.map +0 -1
  2123. package/dist/safety/agent-write-tracker.d.ts.map +0 -1
  2124. package/dist/safety/agent-write-tracker.js.map +0 -1
  2125. package/dist/safety/always-disallowed.d.ts.map +0 -1
  2126. package/dist/safety/always-disallowed.js.map +0 -1
  2127. package/dist/safety/audit.d.ts.map +0 -1
  2128. package/dist/safety/audit.js.map +0 -1
  2129. package/dist/safety/integration-write-tracker.d.ts.map +0 -1
  2130. package/dist/safety/integration-write-tracker.js.map +0 -1
  2131. package/dist/safety/risk-classifier.d.ts.map +0 -1
  2132. package/dist/safety/risk-classifier.js.map +0 -1
  2133. package/dist/safety/subprocess-block-scanner.d.ts.map +0 -1
  2134. package/dist/safety/subprocess-block-scanner.js.map +0 -1
  2135. package/dist/scheduler/hourly-check-gate.d.ts.map +0 -1
  2136. package/dist/scheduler/hourly-check-gate.js.map +0 -1
  2137. package/dist/secrets/backend-api-key-env.d.ts.map +0 -1
  2138. package/dist/secrets/backend-api-key-env.js.map +0 -1
  2139. package/dist/secrets/codex-home-materializer.d.ts.map +0 -1
  2140. package/dist/secrets/codex-home-materializer.js.map +0 -1
  2141. package/dist/secrets/encrypted-blob-store.d.ts.map +0 -1
  2142. package/dist/secrets/encrypted-blob-store.js.map +0 -1
  2143. package/dist/secrets/platform-secret-store.d.ts.map +0 -1
  2144. package/dist/secrets/platform-secret-store.js.map +0 -1
  2145. package/dist/secrets/redaction.d.ts.map +0 -1
  2146. package/dist/secrets/redaction.js.map +0 -1
  2147. package/dist/secrets/secret-broker.d.ts.map +0 -1
  2148. package/dist/secrets/secret-broker.js.map +0 -1
  2149. package/dist/secrets/secret-names.d.ts.map +0 -1
  2150. package/dist/secrets/secret-names.js.map +0 -1
  2151. package/dist/secrets/secret-store.d.ts.map +0 -1
  2152. package/dist/secrets/secret-store.js.map +0 -1
  2153. package/dist/secrets/types.d.ts.map +0 -1
  2154. package/dist/secrets/types.js.map +0 -1
  2155. package/dist/services/apple-calendar/caldav-client.d.ts.map +0 -1
  2156. package/dist/services/apple-calendar/caldav-client.js.map +0 -1
  2157. package/dist/services/apple-calendar/caldav-codec.d.ts.map +0 -1
  2158. package/dist/services/apple-calendar/caldav-codec.js.map +0 -1
  2159. package/dist/services/apple-calendar/index.d.ts.map +0 -1
  2160. package/dist/services/apple-calendar/index.js.map +0 -1
  2161. package/dist/services/apple-calendar/service.d.ts.map +0 -1
  2162. package/dist/services/apple-calendar/service.js.map +0 -1
  2163. package/dist/services/apple-calendar/types.d.ts.map +0 -1
  2164. package/dist/services/apple-calendar/types.js.map +0 -1
  2165. package/dist/services/attachments/hardlink.d.ts.map +0 -1
  2166. package/dist/services/attachments/hardlink.js.map +0 -1
  2167. package/dist/services/attachments/sanitize.d.ts.map +0 -1
  2168. package/dist/services/attachments/sanitize.js.map +0 -1
  2169. package/dist/services/attachments/store.d.ts.map +0 -1
  2170. package/dist/services/attachments/store.js.map +0 -1
  2171. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +0 -1
  2172. package/dist/services/calendar/outlook/graph-calendar-client.js.map +0 -1
  2173. package/dist/services/calendar.d.ts.map +0 -1
  2174. package/dist/services/calendar.js.map +0 -1
  2175. package/dist/services/delegated-backend-invoker.d.ts.map +0 -1
  2176. package/dist/services/delegated-backend-invoker.js.map +0 -1
  2177. package/dist/services/delegated-invoker-audit.d.ts.map +0 -1
  2178. package/dist/services/delegated-invoker-audit.js.map +0 -1
  2179. package/dist/services/delegated-invoker-cache-hits.d.ts.map +0 -1
  2180. package/dist/services/delegated-invoker-cache-hits.js.map +0 -1
  2181. package/dist/services/delegated-invoker-janitors.d.ts.map +0 -1
  2182. package/dist/services/delegated-invoker-janitors.js.map +0 -1
  2183. package/dist/services/delegated-invoker-utils.d.ts.map +0 -1
  2184. package/dist/services/delegated-invoker-utils.js.map +0 -1
  2185. package/dist/services/delegated-proxy-config.d.ts.map +0 -1
  2186. package/dist/services/delegated-proxy-config.js.map +0 -1
  2187. package/dist/services/delegated-task-result-cache.d.ts.map +0 -1
  2188. package/dist/services/delegated-task-result-cache.js.map +0 -1
  2189. package/dist/services/delegated-task-runtime.d.ts.map +0 -1
  2190. package/dist/services/delegated-task-runtime.js.map +0 -1
  2191. package/dist/services/delegated-task-session-pool.d.ts.map +0 -1
  2192. package/dist/services/delegated-task-session-pool.js.map +0 -1
  2193. package/dist/services/delegated-tool-runtime.d.ts.map +0 -1
  2194. package/dist/services/delegated-tool-runtime.js.map +0 -1
  2195. package/dist/services/fts5.d.ts.map +0 -1
  2196. package/dist/services/fts5.js.map +0 -1
  2197. package/dist/services/git-account-registry.d.ts.map +0 -1
  2198. package/dist/services/git-account-registry.js.map +0 -1
  2199. package/dist/services/github.d.ts.map +0 -1
  2200. package/dist/services/github.js.map +0 -1
  2201. package/dist/services/gmail-classifier.d.ts.map +0 -1
  2202. package/dist/services/gmail-classifier.js.map +0 -1
  2203. package/dist/services/gmail.d.ts.map +0 -1
  2204. package/dist/services/gmail.js.map +0 -1
  2205. package/dist/services/google-auth.d.ts.map +0 -1
  2206. package/dist/services/google-auth.js.map +0 -1
  2207. package/dist/services/google-maps.d.ts +0 -35
  2208. package/dist/services/google-maps.d.ts.map +0 -1
  2209. package/dist/services/google-maps.js +0 -82
  2210. package/dist/services/google-maps.js.map +0 -1
  2211. package/dist/services/integrations/extract-write-item-id.d.ts.map +0 -1
  2212. package/dist/services/integrations/extract-write-item-id.js.map +0 -1
  2213. package/dist/services/integrations/reconcile.d.ts.map +0 -1
  2214. package/dist/services/integrations/reconcile.js.map +0 -1
  2215. package/dist/services/integrations/snapshot-partitions.d.ts.map +0 -1
  2216. package/dist/services/integrations/snapshot-partitions.js.map +0 -1
  2217. package/dist/services/journal/render.d.ts.map +0 -1
  2218. package/dist/services/journal/render.js.map +0 -1
  2219. package/dist/services/journal/writer.d.ts.map +0 -1
  2220. package/dist/services/journal/writer.js.map +0 -1
  2221. package/dist/services/mail/account-registry.d.ts.map +0 -1
  2222. package/dist/services/mail/account-registry.js.map +0 -1
  2223. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +0 -1
  2224. package/dist/services/mail/gmail/auth-failure-classifier.js.map +0 -1
  2225. package/dist/services/mail/gmail/gmail-provider.d.ts.map +0 -1
  2226. package/dist/services/mail/gmail/gmail-provider.js.map +0 -1
  2227. package/dist/services/mail/gmail/legacy-row.d.ts.map +0 -1
  2228. package/dist/services/mail/gmail/legacy-row.js.map +0 -1
  2229. package/dist/services/mail/gmail/poll-cursor.d.ts.map +0 -1
  2230. package/dist/services/mail/gmail/poll-cursor.js.map +0 -1
  2231. package/dist/services/mail/html-to-plaintext.d.ts.map +0 -1
  2232. package/dist/services/mail/html-to-plaintext.js.map +0 -1
  2233. package/dist/services/mail/imap/app-password.d.ts.map +0 -1
  2234. package/dist/services/mail/imap/app-password.js.map +0 -1
  2235. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +0 -1
  2236. package/dist/services/mail/imap/auth-failure-classifier.js.map +0 -1
  2237. package/dist/services/mail/imap/capabilities.d.ts.map +0 -1
  2238. package/dist/services/mail/imap/capabilities.js.map +0 -1
  2239. package/dist/services/mail/imap/client.d.ts.map +0 -1
  2240. package/dist/services/mail/imap/client.js.map +0 -1
  2241. package/dist/services/mail/imap/cursor.d.ts.map +0 -1
  2242. package/dist/services/mail/imap/cursor.js.map +0 -1
  2243. package/dist/services/mail/imap/folder-resolver.d.ts.map +0 -1
  2244. package/dist/services/mail/imap/folder-resolver.js.map +0 -1
  2245. package/dist/services/mail/imap/icloud-provider.d.ts.map +0 -1
  2246. package/dist/services/mail/imap/icloud-provider.js.map +0 -1
  2247. package/dist/services/mail/imap/imap-provider-base.d.ts.map +0 -1
  2248. package/dist/services/mail/imap/imap-provider-base.js.map +0 -1
  2249. package/dist/services/mail/imap/query-translator.d.ts.map +0 -1
  2250. package/dist/services/mail/imap/query-translator.js.map +0 -1
  2251. package/dist/services/mail/imap/reconcile-planner.d.ts.map +0 -1
  2252. package/dist/services/mail/imap/reconcile-planner.js.map +0 -1
  2253. package/dist/services/mail/imap/reply-mime.d.ts.map +0 -1
  2254. package/dist/services/mail/imap/reply-mime.js.map +0 -1
  2255. package/dist/services/mail/imap/yahoo-provider.d.ts.map +0 -1
  2256. package/dist/services/mail/imap/yahoo-provider.js.map +0 -1
  2257. package/dist/services/mail/mail-search.d.ts.map +0 -1
  2258. package/dist/services/mail/mail-search.js.map +0 -1
  2259. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +0 -1
  2260. package/dist/services/mail/outlook/auth-failure-classifier.js.map +0 -1
  2261. package/dist/services/mail/outlook/client-config.d.ts.map +0 -1
  2262. package/dist/services/mail/outlook/client-config.js.map +0 -1
  2263. package/dist/services/mail/outlook/delta-cursor.d.ts.map +0 -1
  2264. package/dist/services/mail/outlook/delta-cursor.js.map +0 -1
  2265. package/dist/services/mail/outlook/graph-client.d.ts.map +0 -1
  2266. package/dist/services/mail/outlook/graph-client.js.map +0 -1
  2267. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +0 -1
  2268. package/dist/services/mail/outlook/msal-app-factory.js.map +0 -1
  2269. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +0 -1
  2270. package/dist/services/mail/outlook/msal-cache-plugin.js.map +0 -1
  2271. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +0 -1
  2272. package/dist/services/mail/outlook/oauth-device-code.js.map +0 -1
  2273. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +0 -1
  2274. package/dist/services/mail/outlook/oauth-loopback.js.map +0 -1
  2275. package/dist/services/mail/outlook/outlook-provider.d.ts.map +0 -1
  2276. package/dist/services/mail/outlook/outlook-provider.js.map +0 -1
  2277. package/dist/services/mail/outlook/query-translator.d.ts.map +0 -1
  2278. package/dist/services/mail/outlook/query-translator.js.map +0 -1
  2279. package/dist/services/mail/provider.d.ts.map +0 -1
  2280. package/dist/services/mail/provider.js.map +0 -1
  2281. package/dist/services/mail/query-utils.d.ts.map +0 -1
  2282. package/dist/services/mail/query-utils.js.map +0 -1
  2283. package/dist/services/mail-classifier.d.ts.map +0 -1
  2284. package/dist/services/mail-classifier.js.map +0 -1
  2285. package/dist/services/mail-ingestion.d.ts.map +0 -1
  2286. package/dist/services/mail-ingestion.js.map +0 -1
  2287. package/dist/services/mcp/auto-probe.d.ts.map +0 -1
  2288. package/dist/services/mcp/auto-probe.js.map +0 -1
  2289. package/dist/services/mcp/generators/claude.d.ts.map +0 -1
  2290. package/dist/services/mcp/generators/claude.js.map +0 -1
  2291. package/dist/services/mcp/generators/codex.d.ts.map +0 -1
  2292. package/dist/services/mcp/generators/codex.js.map +0 -1
  2293. package/dist/services/mcp/generators/gemini.d.ts.map +0 -1
  2294. package/dist/services/mcp/generators/gemini.js.map +0 -1
  2295. package/dist/services/mcp/generators/index.d.ts.map +0 -1
  2296. package/dist/services/mcp/generators/index.js.map +0 -1
  2297. package/dist/services/mcp/generators/types.d.ts.map +0 -1
  2298. package/dist/services/mcp/generators/types.js.map +0 -1
  2299. package/dist/services/mcp/probe.d.ts.map +0 -1
  2300. package/dist/services/mcp/probe.js.map +0 -1
  2301. package/dist/services/mcp/registry.d.ts.map +0 -1
  2302. package/dist/services/mcp/registry.js.map +0 -1
  2303. package/dist/services/mcp/risk.d.ts.map +0 -1
  2304. package/dist/services/mcp/risk.js.map +0 -1
  2305. package/dist/services/mcp/sdk-observations-server.d.ts.map +0 -1
  2306. package/dist/services/mcp/sdk-observations-server.js.map +0 -1
  2307. package/dist/services/mcp/session-materializer.d.ts.map +0 -1
  2308. package/dist/services/mcp/session-materializer.js.map +0 -1
  2309. package/dist/services/mcp/tool-audit.d.ts.map +0 -1
  2310. package/dist/services/mcp/tool-audit.js.map +0 -1
  2311. package/dist/services/mcp/types.d.ts.map +0 -1
  2312. package/dist/services/mcp/types.js.map +0 -1
  2313. package/dist/services/notion.d.ts.map +0 -1
  2314. package/dist/services/notion.js.map +0 -1
  2315. package/dist/services/observations-batch.d.ts.map +0 -1
  2316. package/dist/services/observations-batch.js.map +0 -1
  2317. package/dist/services/obsidian.d.ts.map +0 -1
  2318. package/dist/services/obsidian.js.map +0 -1
  2319. package/dist/services/service-registry.d.ts.map +0 -1
  2320. package/dist/services/service-registry.js.map +0 -1
  2321. package/dist/services/voice/transcriber-impl.d.ts.map +0 -1
  2322. package/dist/services/voice/transcriber-impl.js.map +0 -1
  2323. package/dist/services/voice/transcriber.d.ts.map +0 -1
  2324. package/dist/services/voice/transcriber.js.map +0 -1
  2325. package/dist/settings/runtime-settings.d.ts.map +0 -1
  2326. package/dist/settings/runtime-settings.js.map +0 -1
  2327. package/dist/settings/settings-store.d.ts.map +0 -1
  2328. package/dist/settings/settings-store.js.map +0 -1
@@ -1,2168 +0,0 @@
1
- import { Hono } from "hono";
2
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { randomUUID } from "node:crypto";
5
- import { APP_NAME, EDITABLE_RUNTIME_KEY_TUPLE, getAgentDayBoundsUtc, getBackendIds, normalizeAgentDisplayName, } from "@aitne/shared";
6
- import { applyConfigUpdates } from "../env-writer.js";
7
- import { runDefaultSchedulesReconciler } from "../../core/context/default-schedules-runner.js";
8
- import { syncDmSessionTimesToQuietHours } from "../../core/quiet-hours-sync.js";
9
- import { detectGoogleCredentialType, getGoogleOAuthClientConfig, parseGoogleCredentialsJson, } from "../../services/google-auth.js";
10
- import { getContextDir } from "../../config.js";
11
- import { CONTEXT_RELATIVE_PATHS } from "../../core/context-paths.js";
12
- import { createLogger, toSafeErrorMessage } from "../../logging.js";
13
- import { upsertManagementRulesAgentIdentity } from "../../management-rules.js";
14
- import { DEFAULT_DISALLOWED_TOOLS, runtimeSettingsSchema } from "../../settings/runtime-settings.js";
15
- import { createSettingsStore } from "../../settings/settings-store.js";
16
- import { getSessionWorkdirPath } from "../../core/workdir.js";
17
- import { rewriteCharacterBlock } from "../../core/skills-compiler.js";
18
- import { DASHBOARD_CHAT_SCOPE, DOCS_QA_SCOPE } from "../../messaging/constants.js";
19
- import { deleteAllChatSidebarSessions, deleteChatSession, } from "../../core/dashboard-session-cleanup.js";
20
- import { readJsonBody } from "../json-body.js";
21
- import { computeDmFreshnessAggregate } from "../../core/dm-freshness-metrics.js";
22
- const MAX_UPLOAD_SIZE = 100 * 1024; // 100 KB — credential files are small
23
- const MAX_OAUTH_STATE_AGE_MS = 10 * 60 * 1000;
24
- const PUBLIC_CONFIG_RUNTIME_KEYS = [
25
- "maxConcurrentSessions",
26
- "maxReactiveSessions",
27
- "delegatedProxyMaxConcurrent",
28
- "delegatedTaskModeEnabled",
29
- "delegatedTaskMaxPerDay",
30
- "delegatedTaskDefaultMaxToolCalls",
31
- "delegatedTaskDefaultMaxBudgetUsd",
32
- "delegatedTaskDefaultTimeoutMs",
33
- "delegatedTaskHeavyEnabled",
34
- "executeTimeoutMinutes",
35
- "agentDisplayName",
36
- "sessionTimeoutDmMinutes",
37
- "sessionTimeoutChannelMinutes",
38
- "sessionTimeoutDashboardMinutes",
39
- "timezone",
40
- "dayBoundaryHour",
41
- "hourlyCheckEnabled",
42
- "hourlyCheckIntervalMinutes",
43
- "hourlyCheckActiveStartHour",
44
- "hourlyCheckActiveEndHour",
45
- "hourlyCheckMinObservations",
46
- "authProbeDisabled",
47
- "authPreflightFreshnessMs",
48
- "maxNotificationsPerHour",
49
- "maxNotificationsPerDay",
50
- "quietHoursStart",
51
- "quietHoursEnd",
52
- "batchIntervalMinutes",
53
- "primaryPlatform",
54
- "defaultNotificationPlatforms",
55
- "whatsappEnabled",
56
- "whatsappAuthDir",
57
- "disallowedTools",
58
- "claudeExecutionPermissionMode",
59
- "codexExecutionPermissionMode",
60
- "geminiExecutionPermissionMode",
61
- "opencodeExecutionPermissionMode",
62
- "opencodeBaseUrl",
63
- "opencodeServerUsername",
64
- "externalObsidianVaultPath",
65
- "externalObsidianVaultName",
66
- // SETUP-FLOW-REDESIGN-PLAN §6.3 — kill switch for the external-vault
67
- // file watcher. Surfaced so the Note step's "Watch for changes"
68
- // checkbox round-trips through the dashboard.
69
- "externalObsidianWatch",
70
- "primaryVaultPath",
71
- "primaryVaultName",
72
- // gitRepos / gitWatchedRepos / githubRepos removed at the unified-
73
- // repositories cutover (docs/design/appendices/unified-repositories.md);
74
- // dashboard reads the rows from /api/repositories instead.
75
- "googleCalendarId",
76
- "notionDatabaseIds",
77
- "character",
78
- "historyInjectionMaxMessages",
79
- "historyInjectionMaxTokens",
80
- "dmStalenessStrict",
81
- "obsidianDebounceSeconds",
82
- "schedulePollIntervalSeconds",
83
- "gitPollIntervalSeconds",
84
- "gitPushOverdueMinutes",
85
- "gitProjectUpdateDebounceMinutes",
86
- "notionPollIntervalSeconds",
87
- "calendarPollIntervalSeconds",
88
- "gmailPollIntervalSeconds",
89
- "mcpAutoProbeIntervalMinutes",
90
- "delegatedProbeIntervalMinutes",
91
- "autonomousDailyCostCapUsd",
92
- "autonomousMonthlyCostCapUsd",
93
- "primaryLanguage",
94
- "vaultMode",
95
- ];
96
- const EXECUTION_PERMISSION_CONFIG_KEYS = {
97
- claude: "claudeExecutionPermissionMode",
98
- codex: "codexExecutionPermissionMode",
99
- gemini: "geminiExecutionPermissionMode",
100
- opencode: "opencodeExecutionPermissionMode",
101
- };
102
- function getExecutionPermissionMode(config, backend) {
103
- return config[EXECUTION_PERMISSION_CONFIG_KEYS[backend]];
104
- }
105
- const PUBLIC_CONFIG_NULLABLE_STRING_KEYS = new Set([
106
- "whatsappAuthDir",
107
- "externalObsidianVaultPath",
108
- "externalObsidianVaultName",
109
- "primaryVaultPath",
110
- "primaryVaultName",
111
- ]);
112
- /**
113
- * Pre-defined static cost queries — no string interpolation of user input.
114
- * `byModel` is computed in JS via `aggregateByBilledModel` because the SDK
115
- * can route a request for one model to a sibling (e.g. opus-4-7 →
116
- * opus-4-6[1m]); SQL `GROUP BY model_used` would lump cost under the
117
- * requested model and produce a chart that disagrees with the per-row
118
- * billed-model badge on the same page.
119
- */
120
- const COST_QUERIES = {
121
- daily: {
122
- byPeriod: `SELECT date(started_at) as period,
123
- SUM(cost_usd) as total_cost, COUNT(*) as session_count,
124
- SUM(tokens_input) as total_input_tokens, SUM(tokens_output) as total_output_tokens
125
- FROM agent_actions WHERE started_at > datetime('now', '-30 days') AND cost_usd IS NOT NULL
126
- GROUP BY date(started_at) ORDER BY period DESC`,
127
- byModelRows: `SELECT model_used, model_usage_json, cost_usd
128
- FROM agent_actions
129
- WHERE started_at > datetime('now', '-30 days')
130
- AND cost_usd IS NOT NULL
131
- AND (model_used IS NOT NULL OR model_usage_json IS NOT NULL)`,
132
- byEventType: `SELECT action_type as event_type, SUM(cost_usd) as total_cost, COUNT(*) as session_count
133
- FROM agent_actions WHERE started_at > datetime('now', '-30 days') AND cost_usd IS NOT NULL
134
- GROUP BY action_type ORDER BY total_cost DESC`,
135
- },
136
- weekly: {
137
- byPeriod: `SELECT strftime('%Y-W%W', started_at) as period,
138
- SUM(cost_usd) as total_cost, COUNT(*) as session_count,
139
- SUM(tokens_input) as total_input_tokens, SUM(tokens_output) as total_output_tokens
140
- FROM agent_actions WHERE started_at > datetime('now', '-90 days') AND cost_usd IS NOT NULL
141
- GROUP BY strftime('%Y-W%W', started_at) ORDER BY period DESC`,
142
- byModelRows: `SELECT model_used, model_usage_json, cost_usd
143
- FROM agent_actions
144
- WHERE started_at > datetime('now', '-90 days')
145
- AND cost_usd IS NOT NULL
146
- AND (model_used IS NOT NULL OR model_usage_json IS NOT NULL)`,
147
- byEventType: `SELECT action_type as event_type, SUM(cost_usd) as total_cost, COUNT(*) as session_count
148
- FROM agent_actions WHERE started_at > datetime('now', '-90 days') AND cost_usd IS NOT NULL
149
- GROUP BY action_type ORDER BY total_cost DESC`,
150
- },
151
- monthly: {
152
- byPeriod: `SELECT strftime('%Y-%m', started_at) as period,
153
- SUM(cost_usd) as total_cost, COUNT(*) as session_count,
154
- SUM(tokens_input) as total_input_tokens, SUM(tokens_output) as total_output_tokens
155
- FROM agent_actions WHERE started_at > datetime('now', '-365 days') AND cost_usd IS NOT NULL
156
- GROUP BY strftime('%Y-%m', started_at) ORDER BY period DESC`,
157
- byModelRows: `SELECT model_used, model_usage_json, cost_usd
158
- FROM agent_actions
159
- WHERE started_at > datetime('now', '-365 days')
160
- AND cost_usd IS NOT NULL
161
- AND (model_used IS NOT NULL OR model_usage_json IS NOT NULL)`,
162
- byEventType: `SELECT action_type as event_type, SUM(cost_usd) as total_cost, COUNT(*) as session_count
163
- FROM agent_actions WHERE started_at > datetime('now', '-365 days') AND cost_usd IS NOT NULL
164
- GROUP BY action_type ORDER BY total_cost DESC`,
165
- },
166
- };
167
- /**
168
- * Aggregate raw `byModelRows` into the `{ model, total_cost, session_count }`
169
- * shape the dashboard expects, attributing cost to the actually-billed model
170
- * from `model_usage_json` rather than the requested `model_used`. When a row
171
- * has no usage breakdown we fall back to `model_used`. A row that touches
172
- * multiple billed models contributes its split cost to each bucket and is
173
- * counted once toward each model's `session_count`.
174
- *
175
- * Cost reconciliation: the SDK's `r.modelUsage[*].costUSD` covers LLM
176
- * inference only — server-side tools (web_search, code_execution) appear in
177
- * `r.total_cost_usd` (= row.cost_usd) but not in any per-model entry. If
178
- * `Σ per-model cost < row.cost_usd`, the residual is credited to
179
- * `model_used` (the requested model) so per-model totals add up to the
180
- * dashboard's overall cost. Without this, a chart row's "billed total"
181
- * silently drops tool-use spend.
182
- */
183
- export function aggregateByBilledModel(rows) {
184
- const map = new Map();
185
- // Per-row scratch; a single row counts toward `session_count` exactly once
186
- // per model it touched, even when residual handling credits the same model
187
- // twice (once from per-model breakdown, once from tool-use residual).
188
- const addCost = (model, cost) => {
189
- const bucket = map.get(model) ?? { total_cost: 0, session_count: 0 };
190
- bucket.total_cost += cost;
191
- map.set(model, bucket);
192
- };
193
- const incSession = (rowSeen, model) => {
194
- if (rowSeen.has(model))
195
- return;
196
- rowSeen.add(model);
197
- const bucket = map.get(model) ?? { total_cost: 0, session_count: 0 };
198
- bucket.session_count += 1;
199
- map.set(model, bucket);
200
- };
201
- // 0.0001¢ — below this, treat the residual as float-arithmetic noise and
202
- // skip the bookkeeping. Real tool-use costs are always orders of magnitude
203
- // above this.
204
- const RESIDUAL_EPSILON_USD = 0.000001;
205
- for (const row of rows) {
206
- const seenForRow = new Set();
207
- let parsed = null;
208
- if (row.model_usage_json) {
209
- try {
210
- parsed = JSON.parse(row.model_usage_json);
211
- }
212
- catch {
213
- parsed = null;
214
- }
215
- }
216
- let perModelTotal = 0;
217
- let touchedAny = false;
218
- if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
219
- for (const [modelId, entry] of Object.entries(parsed)) {
220
- if (!entry || typeof entry !== "object")
221
- continue;
222
- const v = entry;
223
- const cost = typeof v.costUsd === "number" ? v.costUsd : 0;
224
- addCost(modelId, cost);
225
- incSession(seenForRow, modelId);
226
- perModelTotal += cost;
227
- touchedAny = true;
228
- }
229
- }
230
- if (!touchedAny) {
231
- if (row.model_used) {
232
- addCost(row.model_used, row.cost_usd);
233
- incSession(seenForRow, row.model_used);
234
- }
235
- continue;
236
- }
237
- // Residual handles server-side tool cost (web_search, code execution)
238
- // that the SDK adds to total_cost_usd but not to any per-model bucket.
239
- const residual = row.cost_usd - perModelTotal;
240
- if (residual > RESIDUAL_EPSILON_USD && row.model_used) {
241
- addCost(row.model_used, residual);
242
- incSession(seenForRow, row.model_used);
243
- }
244
- }
245
- return [...map.entries()]
246
- .map(([model, v]) => ({ model, ...v }))
247
- .sort((a, b) => b.total_cost - a.total_cost);
248
- }
249
- const COST_PERIOD_SPECS = {
250
- daily: {
251
- bucketExpr: "date(started_at)",
252
- sinceExpr: "-30 days",
253
- },
254
- weekly: {
255
- bucketExpr: "strftime('%Y-W%W', started_at)",
256
- sinceExpr: "-90 days",
257
- },
258
- monthly: {
259
- bucketExpr: "strftime('%Y-%m', started_at)",
260
- sinceExpr: "-365 days",
261
- },
262
- };
263
- /** Escape HTML special characters to prevent XSS */
264
- function escapeHtml(s) {
265
- return s
266
- .replace(/&/g, "&amp;")
267
- .replace(/</g, "&lt;")
268
- .replace(/>/g, "&gt;")
269
- .replace(/"/g, "&quot;")
270
- .replace(/'/g, "&#039;");
271
- }
272
- function getLocalHourMinute(date, timeZone) {
273
- const formatter = new Intl.DateTimeFormat("en-US", {
274
- hour: "2-digit",
275
- minute: "2-digit",
276
- hour12: false,
277
- timeZone,
278
- });
279
- const parts = formatter.formatToParts(date);
280
- const hour = Number(parts.find((part) => part.type === "hour")?.value ?? "0");
281
- const minute = Number(parts.find((part) => part.type === "minute")?.value ?? "0");
282
- return { hour, minute };
283
- }
284
- function isHourlyCheckSlot(date, config) {
285
- if (!config.hourlyCheckEnabled)
286
- return false;
287
- const { hour, minute } = getLocalHourMinute(date, config.timezone || undefined);
288
- if (hour === config.dayBoundaryHour)
289
- return false;
290
- if (hour < config.hourlyCheckActiveStartHour || hour >= config.hourlyCheckActiveEndHour) {
291
- return false;
292
- }
293
- return minute % config.hourlyCheckIntervalMinutes === 0;
294
- }
295
- function getNextHourlyCheck(config) {
296
- if (!config.hourlyCheckEnabled) {
297
- return { active: false, nextRunAt: null };
298
- }
299
- const now = new Date();
300
- const active = isHourlyCheckSlot(now, config);
301
- const start = new Date(now.getTime() + 60_000);
302
- start.setSeconds(0, 0);
303
- for (let offset = 0; offset < 48 * 60; offset++) {
304
- const candidate = new Date(start.getTime() + offset * 60_000);
305
- if (isHourlyCheckSlot(candidate, config)) {
306
- return { active, nextRunAt: candidate.toISOString() };
307
- }
308
- }
309
- return { active, nextRunAt: null };
310
- }
311
- function isStringRecord(value) {
312
- if (!value || typeof value !== "object" || Array.isArray(value)) {
313
- return false;
314
- }
315
- return Object.entries(value).every(([key, entryValue]) => typeof key === "string" && typeof entryValue === "string");
316
- }
317
- function sameStringRecord(a, b) {
318
- const aEntries = Object.entries(a);
319
- const bEntries = Object.entries(b);
320
- if (aEntries.length !== bEntries.length) {
321
- return false;
322
- }
323
- return aEntries.every(([key, value]) => b[key] === value);
324
- }
325
- function buildSafeConfig(config, secretSummary) {
326
- const safeConfig = {};
327
- for (const key of PUBLIC_CONFIG_RUNTIME_KEYS) {
328
- const value = config[key];
329
- safeConfig[key] = PUBLIC_CONFIG_NULLABLE_STRING_KEYS.has(key)
330
- ? value ?? ""
331
- : value;
332
- }
333
- safeConfig.apiPort = config.apiPort;
334
- safeConfig.allowedTools = config.allowedToolsOverride ?? [];
335
- // Derived — the actual directory `getContextDir(config)` resolves to.
336
- // Surfaces the mode/path → disk outcome to the dashboard so the
337
- // Management Mode section can show the effective location without
338
- // reimplementing the resolution logic. Always an absolute path.
339
- safeConfig.contextDir = getContextDir(config);
340
- safeConfig.slackConfigured = secretSummary.slackConfigured;
341
- safeConfig.slackOwnerUserConfigured = !!config.slackOwnerUserId;
342
- safeConfig.telegramConfigured = secretSummary.telegramConfigured;
343
- safeConfig.telegramOwnerChatConfigured = !!config.telegramOwnerChatId;
344
- safeConfig.discordConfigured = secretSummary.discordConfigured;
345
- safeConfig.discordOwnerUserConfigured = !!config.discordOwnerUserId;
346
- safeConfig.notionConfigured = secretSummary.notionConfigured;
347
- safeConfig.githubConfigured = secretSummary.githubConfigured;
348
- safeConfig.githubWebhookSecretConfigured = secretSummary.githubWebhookSecretConfigured;
349
- safeConfig.apiTokenConfigured = secretSummary.apiTokenConfigured;
350
- safeConfig.whatsappOwnerPhoneConfigured = !!config.whatsappOwnerPhone;
351
- safeConfig.googleCalendarCredentialsConfigured = secretSummary.googleCalendarCredentialsConfigured;
352
- safeConfig.googleCalendarTokenConfigured = secretSummary.googleCalendarTokenConfigured;
353
- // SETUP-FLOW-REDESIGN-PLAN §6.1 — surface Outlook BYOA presence so
354
- // dashboards can decide when direct-mode Outlook integrations are
355
- // resumable.
356
- safeConfig.outlookClientConfigConfigured = secretSummary.outlookClientConfigConfigured;
357
- safeConfig.googleCredentialType = secretSummary.googleCredentialType;
358
- return safeConfig;
359
- }
360
- /**
361
- * Dashboard API routes — REST endpoints for the Dashboard UI.
362
- *
363
- * Provides:
364
- * - Config management (GET/PATCH /api/config)
365
- * - Event/action logs (GET /api/events)
366
- * - Conversation history (GET /api/conversations)
367
- * - Cost analytics (GET /api/cost)
368
- * - Approval queue (GET/POST /api/approvals)
369
- */
370
- const logger = createLogger("dashboard-api");
371
- export function createDashboardRoutes(deps) {
372
- const app = new Hono();
373
- const { db, config, services, secretBroker } = deps;
374
- const settingsStore = createSettingsStore(db);
375
- const oauthStates = new Map();
376
- // Dashboard-origin allowlist for OAuth start / callback.
377
- //
378
- // The OAuth callback HTML uses `window.opener.postMessage(..., target)`
379
- // to notify the dashboard that auth succeeded. `target` was previously
380
- // derived from the Origin/Referer headers at start time with a
381
- // `http://localhost:3000` fallback when neither was present. Both
382
- // headers are attacker-controlled in the request that *initiates* the
383
- // flow (the attacker's page can be `http://attacker.com`), so the
384
- // postMessage notification could be steered off the trusted dashboard.
385
- //
386
- // The notification body is just `{type: "google-auth-success"}` — no
387
- // tokens — but the attacker would still learn the user completed auth,
388
- // and a future widening of the payload would leak silently. Defence is
389
- // a closed allowlist: only same-origin localhost variants on the
390
- // configured dashboard port are accepted; anything else rejects the
391
- // OAuth start with 403.
392
- const dashboardPort = Number.parseInt(process.env.PA_DASHBOARD_PORT ?? "", 10) || 3000;
393
- const allowedDashboardOrigins = new Set([
394
- `http://localhost:${dashboardPort}`,
395
- `http://127.0.0.1:${dashboardPort}`,
396
- // IPv6 loopback — some dev environments (Docker desktop with IPv6
397
- // preference, certain Node IPv6-first configurations) emit origins
398
- // in this form. URL.origin returns the bracketed literal.
399
- `http://[::1]:${dashboardPort}`,
400
- ]);
401
- function parseOriginSafely(value) {
402
- if (!value)
403
- return null;
404
- try {
405
- return new URL(value).origin;
406
- }
407
- catch {
408
- return null;
409
- }
410
- }
411
- /**
412
- * Return the request's claimed dashboard origin only if it matches the
413
- * hardcoded allowlist. Origin is preferred (browser-set, never spoofable
414
- * from page JS); Referer is the fallback for browsers / configurations
415
- * that don't emit Origin on top-level navigations. Returns `null` when
416
- * neither header maps to an allowed origin — callers must reject the
417
- * request in that case rather than silently defaulting.
418
- */
419
- function resolveAllowedDashboardOrigin(originHeader, refererHeader) {
420
- const fromOrigin = parseOriginSafely(originHeader);
421
- if (fromOrigin && allowedDashboardOrigins.has(fromOrigin))
422
- return fromOrigin;
423
- const fromReferer = parseOriginSafely(refererHeader);
424
- if (fromReferer && allowedDashboardOrigins.has(fromReferer))
425
- return fromReferer;
426
- return null;
427
- }
428
- const agentActionColumns = new Set(db.pragma("table_info(agent_actions)").map((column) => column.name));
429
- const backendExpr = agentActionColumns.has("backend")
430
- ? "COALESCE(backend, 'claude')"
431
- : "'claude'";
432
- function pruneOauthStates(now = Date.now()) {
433
- for (const [state, data] of oauthStates.entries()) {
434
- if (now - data.createdAt > MAX_OAUTH_STATE_AGE_MS) {
435
- oauthStates.delete(state);
436
- }
437
- }
438
- }
439
- async function getSecretConfigSummary() {
440
- const [slackBotToken, slackAppToken, telegramBotToken, discordBotToken, notionApiKey, githubToken, githubWebhookSecret, apiToken, googleCredentialsJson, googleTokenJson,] = await Promise.all([
441
- secretBroker.getSlackBotToken(),
442
- secretBroker.getSlackAppToken(),
443
- secretBroker.getTelegramBotToken(),
444
- secretBroker.getDiscordBotToken(),
445
- secretBroker.getNotionApiKey(),
446
- secretBroker.getGitHubToken(),
447
- secretBroker.getGitHubWebhookSecret(),
448
- secretBroker.getApiToken(),
449
- secretBroker.getGoogleCredentialsJson(),
450
- secretBroker.getGoogleTokenJson(),
451
- ]);
452
- // SETUP-FLOW-REDESIGN-PLAN §6.1 — surface BYOA Outlook client config
453
- // presence so the connections page knows when direct-mode Outlook
454
- // integrations are resumable. Best-effort: if no blob store is
455
- // wired (test harness), report `false` rather than crashing.
456
- let outlookClientConfigConfigured = false;
457
- try {
458
- outlookClientConfigConfigured = deps.blobStore
459
- ? await deps.blobStore.exists("mail:outlook:client-config")
460
- : false;
461
- }
462
- catch {
463
- outlookClientConfigConfigured = false;
464
- }
465
- return {
466
- slackConfigured: !!(slackBotToken && slackAppToken),
467
- telegramConfigured: !!telegramBotToken,
468
- discordConfigured: !!discordBotToken,
469
- notionConfigured: !!notionApiKey,
470
- githubConfigured: !!githubToken,
471
- githubWebhookSecretConfigured: !!githubWebhookSecret,
472
- apiTokenConfigured: !!apiToken,
473
- googleCalendarCredentialsConfigured: !!googleCredentialsJson,
474
- googleCalendarTokenConfigured: !!googleTokenJson,
475
- outlookClientConfigConfigured,
476
- googleCredentialType: detectGoogleCredentialType(googleCredentialsJson),
477
- };
478
- }
479
- async function notifySecretChange(scope) {
480
- await deps.onSecretChanged?.(scope);
481
- }
482
- /**
483
- * design/15-character.md §15.6.1 live-overwrite: when character changes,
484
- * rewrite the `## Character` block inside every active session's
485
- * instruction files (CLAUDE.md / AGENTS.md / GEMINI.md) so the next turn
486
- * in the session picks up the new value without waiting for a session
487
- * spawn. Per-workdir errors are counted and logged but never thrown —
488
- * the DB write is already durable at the caller.
489
- *
490
- * Shared by PATCH /config (dashboard path, Approve tier) and
491
- * PATCH /config/character (agent path, Notify tier).
492
- */
493
- function fanOutCharacterToActiveSessions() {
494
- const sessions = db
495
- .prepare(`SELECT id FROM conversation_sessions WHERE status = 'active'`)
496
- .all();
497
- const totals = { rewritten: 0, skipped: 0, failed: 0, missing: 0 };
498
- for (const row of sessions) {
499
- const sessionId = typeof row.id === "bigint" ? Number(row.id) : row.id;
500
- const workdir = getSessionWorkdirPath(config.dataDir, sessionId);
501
- if (!existsSync(workdir)) {
502
- totals.missing++;
503
- continue;
504
- }
505
- try {
506
- const summary = rewriteCharacterBlock(workdir, config.character);
507
- totals.rewritten += summary.rewritten;
508
- totals.skipped += summary.skipped;
509
- totals.failed += summary.failed;
510
- }
511
- catch (err) {
512
- totals.failed++;
513
- logger.warn({ err, sessionId, workdir }, "rewriteCharacterBlock threw on character live-overwrite");
514
- }
515
- }
516
- logger.info({ ...totals, activeSessions: sessions.length }, "Character block fanned out to active session workdirs");
517
- }
518
- // ── Config API ──
519
- /** GET /config — return current configuration */
520
- app.get("/config", async (c) => {
521
- const secretSummary = await getSecretConfigSummary();
522
- const safeConfig = buildSafeConfig({ ...config, agentDisplayName: normalizeAgentDisplayName(config.agentDisplayName) }, secretSummary);
523
- return c.json(safeConfig);
524
- });
525
- /** GET /config/defaults — return Zod schema defaults for all editable keys */
526
- app.get("/config/defaults", (c) => {
527
- const zodDefaults = runtimeSettingsSchema.parse({});
528
- const defaults = {};
529
- for (const key of EDITABLE_RUNTIME_KEY_TUPLE) {
530
- const val = zodDefaults[key];
531
- // Mirror GET /config shape: allowedToolsOverride null → empty array
532
- if (key === "allowedToolsOverride") {
533
- defaults.allowedTools = val ?? [];
534
- }
535
- else {
536
- defaults[key] = val;
537
- }
538
- }
539
- // Bootstrap keys not in runtimeSettingsSchema
540
- defaults.apiPort = 8321;
541
- return c.json(defaults);
542
- });
543
- /** PATCH /config — update one or more config fields */
544
- app.patch("/config", async (c) => {
545
- const parsedBody = await readJsonBody(c);
546
- if (!parsedBody.ok)
547
- return parsedBody.response;
548
- const body = parsedBody.body;
549
- if (!body || typeof body !== "object" || Array.isArray(body)) {
550
- return c.json({ error: "Body must be a JSON object" }, 400);
551
- }
552
- const bodyRecord = { ...body };
553
- if (Object.hasOwn(bodyRecord, "notionDatabaseIdsBase")) {
554
- if (!Object.hasOwn(bodyRecord, "notionDatabaseIds")) {
555
- return c.json({
556
- error: "validation_failed",
557
- details: {
558
- notionDatabaseIdsBase: "notionDatabaseIdsBase requires notionDatabaseIds in the same request",
559
- },
560
- }, 400);
561
- }
562
- if (!isStringRecord(bodyRecord.notionDatabaseIdsBase)) {
563
- return c.json({
564
- error: "validation_failed",
565
- details: {
566
- notionDatabaseIdsBase: "notionDatabaseIdsBase must be an object mapping labels to database IDs",
567
- },
568
- }, 400);
569
- }
570
- if (!sameStringRecord(config.notionDatabaseIds, bodyRecord.notionDatabaseIdsBase)) {
571
- return c.json({
572
- error: "conflict",
573
- message: "Notion database mappings changed on another tab. Reload and try again.",
574
- }, 409);
575
- }
576
- delete bodyRecord.notionDatabaseIdsBase;
577
- }
578
- // Snapshot WhatsApp state BEFORE applying so we can detect a transition
579
- // and trigger live enable/disable of the adapter (no daemon restart).
580
- const prevWhatsappEnabled = config.whatsappEnabled;
581
- const prevWhatsappOwnerPhone = config.whatsappOwnerPhone;
582
- const prevWhatsappAuthDir = config.whatsappAuthDir;
583
- // EXECUTION-MODE-DESIGN.md §5.2 / §6.3 — snapshot pre-apply execution mode
584
- // so audit rows below can capture before → after per backend. The
585
- // dedicated `POST /api/setup/mode` is the usual path (it emits its own
586
- // audit row); this PATCH covers the power-user / env-style API caller
587
- // who edits the key directly without going through the settings UI.
588
- const prevExecMode = Object.fromEntries(getBackendIds().map((backend) => [
589
- backend,
590
- getExecutionPermissionMode(config, backend),
591
- ]));
592
- // design/15-character.md §15.6.1 — snapshot character pre-apply so the
593
- // live-overwrite pass below has a stable "after" value to fan out to
594
- // every active session workdir.
595
- const prevCharacter = config.character;
596
- // gitRepos / gitWatchedRepos no longer live in config — repository
597
- // changes go through /api/repositories and trigger
598
- // `onGitReposChanged` directly from that route.
599
- // §6.2 Note Sources regeneration is centralized inside
600
- // applyConfigUpdates (via the db option) — no inline hook in this
601
- // handler. Any future caller of applyConfigUpdates that carries
602
- // externalObsidianVaultPath / externalObsidianWatch automatically
603
- // gets the same regeneration without copy-paste.
604
- const result = await applyConfigUpdates(config, settingsStore, bodyRecord, {
605
- db: deps.db,
606
- });
607
- if (Object.keys(result.errors).length > 0 && result.updated.length === 0) {
608
- return c.json({ error: "validation_failed", details: result.errors }, 400);
609
- }
610
- // Hot-reload cron schedules when schedule-related config changes
611
- const SCHEDULE_KEYS = [
612
- "dayBoundaryHour",
613
- "timezone",
614
- "hourlyCheckEnabled",
615
- "hourlyCheckIntervalMinutes",
616
- "hourlyCheckActiveStartHour",
617
- "hourlyCheckActiveEndHour",
618
- ];
619
- if (result.updated.some((k) => SCHEDULE_KEYS.includes(k))) {
620
- deps.onScheduleConfigChanged?.();
621
- }
622
- // git repository changes route through POST/PATCH /api/repositories
623
- // (unified-repositories cutover); they trigger onGitReposChanged
624
- // from there, not from the dashboard config PATCH path.
625
- // SCHEDULED-DM-IMPLEMENTATION-PLAN §6.7 — when quietHoursEnd
626
- // changes, retime every enabled `dm_session` recurring row whose
627
- // `task_context.pin_to_quiet_hours_end === true` so the briefing
628
- // tracks the user's quiet-hours edge by default. Rows with the
629
- // pin flag false (user-pinned a custom time) are left alone.
630
- if (result.updated.includes("quietHoursEnd")
631
- && typeof config.quietHoursEnd === "string"
632
- && /^\d{2}:\d{2}$/.test(config.quietHoursEnd)) {
633
- try {
634
- syncDmSessionTimesToQuietHours(db, config.quietHoursEnd);
635
- runDefaultSchedulesReconciler({
636
- db,
637
- contextDir: getContextDir(config, db),
638
- writeTracker: deps.writeTracker,
639
- onPromptContextChanged: deps.onPromptContextChanged,
640
- trigger: "manual",
641
- }).catch((err) => {
642
- logger.warn({ err }, "Default-schedules reconciler failed after quietHoursEnd change");
643
- });
644
- }
645
- catch (err) {
646
- logger.warn({ err }, "syncDmSessionTimesToQuietHours threw after dashboard config PATCH");
647
- }
648
- }
649
- // Hot-refresh DM session skill dirs when enabledMailProviders changes
650
- // through the generic config PATCH. The per-endpoint `PATCH /mail/providers`
651
- // handler already drives this through MailAccountRegistry.onScopeChanged,
652
- // but the dashboard's catch-all config PATCH bypasses that route, so
653
- // without this dispatch the scope toggle wouldn't reach active workdirs.
654
- if (result.updated.includes("enabledMailProviders")) {
655
- try {
656
- deps.services.mail?.onProviderSelectionChanged(config.enabledMailProviders);
657
- }
658
- catch (err) {
659
- logger.warn({ err }, "onProviderSelectionChanged threw after dashboard config PATCH");
660
- }
661
- }
662
- // Hot-reload WhatsApp adapter when whatsappEnabled / phone / auth dir change.
663
- // This eliminates the daemon-restart requirement that previously made
664
- // pairing impossible from the dashboard.
665
- const whatsappKeysTouched = result.updated.some((k) => ["whatsappEnabled", "whatsappOwnerPhone", "whatsappAuthDir"].includes(k));
666
- if (whatsappKeysTouched && deps.whatsappControls) {
667
- const phoneChanged = config.whatsappOwnerPhone !== prevWhatsappOwnerPhone;
668
- const authDirChanged = config.whatsappAuthDir !== prevWhatsappAuthDir;
669
- try {
670
- if (!config.whatsappEnabled && prevWhatsappEnabled) {
671
- // disabled — tear down
672
- await deps.whatsappControls.disable();
673
- }
674
- else if (config.whatsappEnabled) {
675
- if (!prevWhatsappEnabled) {
676
- // newly enabled — build and start
677
- await deps.whatsappControls.enable();
678
- }
679
- else if (phoneChanged || authDirChanged) {
680
- // settings changed while enabled — bounce
681
- await deps.whatsappControls.disable();
682
- await deps.whatsappControls.enable();
683
- }
684
- }
685
- // Drop "whatsappEnabled" / phone / auth dir from requiresRestart since
686
- // we just hot-reloaded them. Other restart-required keys (like Slack
687
- // tokens) still report restart.
688
- result.requiresRestart = result.requiresRestart.filter((k) => !["whatsappEnabled", "whatsappOwnerPhone", "whatsappAuthDir"].includes(k));
689
- }
690
- catch (err) {
691
- const message = toSafeErrorMessage(err, "unknown WhatsApp error");
692
- result.errors.whatsapp = `WhatsApp hot-reload failed: ${message}`;
693
- }
694
- }
695
- // EXECUTION-MODE-DESIGN.md §6.3 — emit one `execution_mode_changed`
696
- // audit row per backend whose mode moved through this PATCH, matching
697
- // the row shape that `POST /api/setup/mode` writes. Without this the
698
- // PATCH path would silently bypass audit coverage for a power-user
699
- // API caller.
700
- for (const backend of getBackendIds()) {
701
- const key = EXECUTION_PERMISSION_CONFIG_KEYS[backend];
702
- if (!result.updated.includes(key))
703
- continue;
704
- const before = prevExecMode[backend];
705
- const after = getExecutionPermissionMode(config, backend);
706
- if (before === after)
707
- continue;
708
- try {
709
- db.prepare(`INSERT INTO agent_actions (action_type, trigger, result, detail, backend)
710
- VALUES (?, ?, ?, ?, ?)`).run("execution_mode_changed", "dashboard_config_patch", "success", JSON.stringify({ before, after }), backend);
711
- }
712
- catch (err) {
713
- logger.warn({ err, backend }, "failed to record execution_mode_changed audit row (PATCH path)");
714
- }
715
- }
716
- if (result.updated.includes("agentDisplayName")) {
717
- try {
718
- const rulesRelPath = CONTEXT_RELATIVE_PATHS.rules.management;
719
- const rulesSnapshotKey = rulesRelPath.replace(/\.md$/, "");
720
- const rulesPath = join(getContextDir(config, db), rulesRelPath);
721
- if (existsSync(rulesPath)) {
722
- const currentRules = readFileSync(rulesPath, "utf-8");
723
- const nextRules = upsertManagementRulesAgentIdentity(currentRules, normalizeAgentDisplayName(config.agentDisplayName));
724
- if (nextRules !== currentRules) {
725
- db.prepare("INSERT INTO md_file_snapshots (file_path, content, trigger) VALUES (?, ?, ?)").run(rulesSnapshotKey, currentRules, "agent_name_update");
726
- writeFileSync(rulesPath, nextRules, "utf-8");
727
- }
728
- }
729
- }
730
- catch (err) {
731
- const message = toSafeErrorMessage(err, `unknown ${CONTEXT_RELATIVE_PATHS.rules.management} error`);
732
- result.errors.agentDisplayName = `Saved config, but failed to sync ${CONTEXT_RELATIVE_PATHS.rules.management}: ${message}`;
733
- }
734
- deps.onPromptContextChanged?.("agentDisplayName", "config_update:agentDisplayName", "loud", { tierReason: "config_agent_display_name" });
735
- }
736
- // design/15-character.md §15.6.1 — character changed; fan the new value
737
- // out to every active session's instruction files.
738
- if (result.updated.includes("character") && config.character !== prevCharacter) {
739
- fanOutCharacterToActiveSessions();
740
- }
741
- return c.json({
742
- status: "updated",
743
- updated: result.updated,
744
- requiresRestart: result.requiresRestart,
745
- errors: result.errors,
746
- });
747
- });
748
- /**
749
- * GET /config/character — agent-callable read of the persona string.
750
- *
751
- * design/15-character.md §15.6 — the general /api/config surface is
752
- * Approve-tier (contains secret summaries, OAuth state, schedule keys),
753
- * so bearer-less callers (the agent's curl from a session workdir) need
754
- * a narrowly scoped read. Returns the single field shape `{character}`
755
- * so `jq .character` in skills keeps working.
756
- */
757
- app.get("/config/character", (c) => {
758
- return c.json({ character: config.character });
759
- });
760
- /**
761
- * PATCH /config/character — agent-callable write of the persona string.
762
- *
763
- * Notify tier: audit-logged by the auth middleware, no Bearer required.
764
- * Accepts only `{character: string}` — extra keys are rejected so this
765
- * route cannot be used as a side channel into other config fields.
766
- * Zod validation (max 1000 chars, no marker substring, non-blank-or-empty)
767
- * runs inside `applyConfigUpdates` as usual.
768
- */
769
- app.patch("/config/character", async (c) => {
770
- const parsedBody = await readJsonBody(c);
771
- if (!parsedBody.ok)
772
- return parsedBody.response;
773
- const body = parsedBody.body;
774
- if (!body || typeof body !== "object" || Array.isArray(body)) {
775
- return c.json({ error: "Body must be a JSON object" }, 400);
776
- }
777
- const bodyRecord = body;
778
- const extraKeys = Object.keys(bodyRecord).filter((k) => k !== "character");
779
- if (extraKeys.length > 0) {
780
- return c.json({
781
- error: "validation_failed",
782
- details: {
783
- _extraKeys: `Only "character" is accepted on this endpoint; got: ${extraKeys.join(", ")}`,
784
- },
785
- }, 400);
786
- }
787
- if (!Object.hasOwn(bodyRecord, "character")) {
788
- return c.json({
789
- error: "validation_failed",
790
- details: { character: "character field is required" },
791
- }, 400);
792
- }
793
- const prevCharacter = config.character;
794
- const result = await applyConfigUpdates(config, settingsStore, {
795
- character: bodyRecord.character,
796
- });
797
- if (Object.keys(result.errors).length > 0 && result.updated.length === 0) {
798
- return c.json({ error: "validation_failed", details: result.errors }, 400);
799
- }
800
- if (result.updated.includes("character") && config.character !== prevCharacter) {
801
- fanOutCharacterToActiveSessions();
802
- }
803
- return c.json({
804
- status: "updated",
805
- character: config.character,
806
- updated: result.updated,
807
- errors: result.errors,
808
- });
809
- });
810
- app.put("/secrets/slack", async (c) => {
811
- const parsedBody = await readJsonBody(c);
812
- if (!parsedBody.ok)
813
- return parsedBody.response;
814
- const body = parsedBody.body;
815
- const botToken = typeof body?.botToken === "string" ? body.botToken.trim() : "";
816
- const appToken = typeof body?.appToken === "string" ? body.appToken.trim() : "";
817
- const validationErrors = {};
818
- if (!botToken && !appToken) {
819
- return c.json({
820
- status: "validation_failed",
821
- configured: false,
822
- requiresRestart: false,
823
- validationErrors: {
824
- botToken: "Provide at least one Slack token to save.",
825
- appToken: "Provide at least one Slack token to save.",
826
- },
827
- }, 400);
828
- }
829
- if (botToken)
830
- await secretBroker.set("slackBotToken", botToken);
831
- if (appToken)
832
- await secretBroker.set("slackAppToken", appToken);
833
- await notifySecretChange("slack");
834
- return c.json({
835
- status: "updated",
836
- configured: (await getSecretConfigSummary()).slackConfigured,
837
- requiresRestart: false,
838
- validationErrors,
839
- });
840
- });
841
- app.put("/secrets/telegram", async (c) => {
842
- const parsedBody = await readJsonBody(c);
843
- if (!parsedBody.ok)
844
- return parsedBody.response;
845
- const body = parsedBody.body;
846
- const botToken = typeof body?.botToken === "string" ? body.botToken.trim() : "";
847
- if (!botToken) {
848
- return c.json({
849
- status: "validation_failed",
850
- configured: false,
851
- requiresRestart: false,
852
- validationErrors: { botToken: "Telegram bot token is required." },
853
- }, 400);
854
- }
855
- await secretBroker.set("telegramBotToken", botToken);
856
- await notifySecretChange("telegram");
857
- return c.json({
858
- status: "updated",
859
- configured: (await getSecretConfigSummary()).telegramConfigured,
860
- requiresRestart: false,
861
- validationErrors: {},
862
- });
863
- });
864
- app.put("/secrets/discord", async (c) => {
865
- const parsedBody = await readJsonBody(c);
866
- if (!parsedBody.ok)
867
- return parsedBody.response;
868
- const body = parsedBody.body;
869
- const botToken = typeof body?.botToken === "string" ? body.botToken.trim() : "";
870
- if (!botToken) {
871
- return c.json({
872
- status: "validation_failed",
873
- configured: false,
874
- requiresRestart: false,
875
- validationErrors: { botToken: "Discord bot token is required." },
876
- }, 400);
877
- }
878
- await secretBroker.set("discordBotToken", botToken);
879
- await notifySecretChange("discord");
880
- return c.json({
881
- status: "updated",
882
- configured: (await getSecretConfigSummary()).discordConfigured,
883
- requiresRestart: false,
884
- validationErrors: {},
885
- });
886
- });
887
- app.put("/secrets/notion", async (c) => {
888
- const parsedBody = await readJsonBody(c);
889
- if (!parsedBody.ok)
890
- return parsedBody.response;
891
- const body = parsedBody.body;
892
- const apiKey = typeof body?.apiKey === "string" ? body.apiKey.trim() : "";
893
- if (!apiKey) {
894
- return c.json({
895
- status: "validation_failed",
896
- configured: false,
897
- requiresRestart: false,
898
- validationErrors: { apiKey: "Notion API key is required." },
899
- }, 400);
900
- }
901
- await secretBroker.set("notionApiKey", apiKey);
902
- await notifySecretChange("notion");
903
- return c.json({
904
- status: "updated",
905
- configured: (await getSecretConfigSummary()).notionConfigured,
906
- requiresRestart: false,
907
- validationErrors: {},
908
- });
909
- });
910
- app.put("/secrets/github", async (c) => {
911
- const parsedBody = await readJsonBody(c);
912
- if (!parsedBody.ok)
913
- return parsedBody.response;
914
- const body = parsedBody.body;
915
- const token = typeof body?.token === "string" ? body.token.trim() : "";
916
- const webhookSecret = typeof body?.webhookSecret === "string" ? body.webhookSecret.trim() : "";
917
- if (!token && !webhookSecret) {
918
- return c.json({
919
- status: "validation_failed",
920
- configured: false,
921
- requiresRestart: false,
922
- validationErrors: {
923
- token: "Provide a GitHub token and/or webhook secret.",
924
- webhookSecret: "Provide a GitHub token and/or webhook secret.",
925
- },
926
- }, 400);
927
- }
928
- if (token)
929
- await secretBroker.set("githubToken", token);
930
- if (webhookSecret)
931
- await secretBroker.set("githubWebhookSecret", webhookSecret);
932
- await notifySecretChange("github");
933
- const summary = await getSecretConfigSummary();
934
- return c.json({
935
- status: "updated",
936
- configured: summary.githubConfigured || summary.githubWebhookSecretConfigured,
937
- requiresRestart: false,
938
- validationErrors: {},
939
- });
940
- });
941
- app.put("/secrets/google/credentials", async (c) => {
942
- const parsedBody = await readJsonBody(c);
943
- if (!parsedBody.ok)
944
- return parsedBody.response;
945
- const body = parsedBody.body;
946
- const raw = typeof body?.json === "string" ? body.json : "";
947
- if (!raw) {
948
- return c.json({
949
- status: "validation_failed",
950
- configured: false,
951
- requiresRestart: false,
952
- validationErrors: { json: "Credentials JSON is required." },
953
- }, 400);
954
- }
955
- let parsed;
956
- try {
957
- parsed = JSON.parse(raw);
958
- }
959
- catch {
960
- return c.json({
961
- status: "validation_failed",
962
- configured: false,
963
- requiresRestart: false,
964
- validationErrors: { json: "Invalid JSON file" },
965
- }, 400);
966
- }
967
- if (!parsed.installed && !parsed.web && parsed.type !== "service_account") {
968
- return c.json({
969
- status: "validation_failed",
970
- configured: false,
971
- requiresRestart: false,
972
- validationErrors: {
973
- json: "Invalid credentials format. Expected OAuth2 credentials JSON or a service account JSON.",
974
- },
975
- }, 400);
976
- }
977
- await secretBroker.set("googleCredentialsJson", raw);
978
- if (parsed.type === "service_account") {
979
- await secretBroker.delete("googleTokenJson");
980
- }
981
- await notifySecretChange("google");
982
- deps.onGoogleServicesReady?.();
983
- const summary = await getSecretConfigSummary();
984
- return c.json({
985
- status: "updated",
986
- configured: summary.googleCalendarCredentialsConfigured,
987
- requiresRestart: false,
988
- validationErrors: {},
989
- });
990
- });
991
- app.put("/secrets/google/token", async (c) => {
992
- const parsedBody = await readJsonBody(c);
993
- if (!parsedBody.ok)
994
- return parsedBody.response;
995
- const body = parsedBody.body;
996
- const raw = typeof body?.json === "string" ? body.json : "";
997
- if (!raw) {
998
- return c.json({
999
- status: "validation_failed",
1000
- configured: false,
1001
- requiresRestart: false,
1002
- validationErrors: { json: "Token JSON is required." },
1003
- }, 400);
1004
- }
1005
- try {
1006
- JSON.parse(raw);
1007
- }
1008
- catch {
1009
- return c.json({
1010
- status: "validation_failed",
1011
- configured: false,
1012
- requiresRestart: false,
1013
- validationErrors: { json: "Invalid JSON file" },
1014
- }, 400);
1015
- }
1016
- await secretBroker.saveGoogleTokenJson(raw);
1017
- await notifySecretChange("google");
1018
- deps.onGoogleServicesReady?.();
1019
- const summary = await getSecretConfigSummary();
1020
- return c.json({
1021
- status: "updated",
1022
- configured: summary.googleCalendarTokenConfigured,
1023
- requiresRestart: false,
1024
- validationErrors: {},
1025
- });
1026
- });
1027
- app.delete("/secrets/:name", async (c) => {
1028
- const name = c.req.param("name");
1029
- if (name === "apiToken") {
1030
- return c.json({
1031
- error: "api_token_not_deletable",
1032
- message: "The daemon API token cannot be deleted from the API. Rotate it explicitly instead.",
1033
- }, 400);
1034
- }
1035
- const secretNameByParam = {
1036
- slackBotToken: "slackBotToken",
1037
- slackAppToken: "slackAppToken",
1038
- telegramBotToken: "telegramBotToken",
1039
- discordBotToken: "discordBotToken",
1040
- notionApiKey: "notionApiKey",
1041
- githubToken: "githubToken",
1042
- githubWebhookSecret: "githubWebhookSecret",
1043
- googleCredentialsJson: "googleCredentialsJson",
1044
- googleTokenJson: "googleTokenJson",
1045
- };
1046
- const secretName = secretNameByParam[name];
1047
- if (!secretName) {
1048
- return c.json({ error: "unknown_secret" }, 404);
1049
- }
1050
- await secretBroker.delete(secretName);
1051
- const scopeBySecret = {
1052
- slackBotToken: "slack",
1053
- slackAppToken: "slack",
1054
- telegramBotToken: "telegram",
1055
- discordBotToken: "discord",
1056
- notionApiKey: "notion",
1057
- githubToken: "github",
1058
- githubWebhookSecret: "github",
1059
- googleCredentialsJson: "google",
1060
- googleTokenJson: "google",
1061
- };
1062
- await notifySecretChange(scopeBySecret[secretName]);
1063
- return c.json({
1064
- status: "deleted",
1065
- configured: false,
1066
- requiresRestart: false,
1067
- validationErrors: {},
1068
- });
1069
- });
1070
- app.get("/dashboard/next-check", (c) => {
1071
- return c.json(getNextHourlyCheck(config));
1072
- });
1073
- // STAGE-C-DM-FRESHNESS-PLAN §Task 4 — DM freshness aggregate. Powered
1074
- // by `agent_actions.detail.dm_freshness.*` rows the DM dispatch path
1075
- // writes via AuditLogger.logAction. Window defaults to 7 days; query
1076
- // param `days` overrides for ad-hoc inspection (clamped to 1..90).
1077
- app.get("/dashboard/dm-freshness", (c) => {
1078
- const daysParam = c.req.query("days");
1079
- let windowDays = 7;
1080
- if (daysParam !== undefined) {
1081
- const parsed = Number(daysParam);
1082
- if (!Number.isFinite(parsed) || parsed < 1 || parsed > 90) {
1083
- return c.json({
1084
- error: "invalid_window",
1085
- message: "days must be a number between 1 and 90",
1086
- }, 400);
1087
- }
1088
- windowDays = Math.round(parsed);
1089
- }
1090
- const aggregate = computeDmFreshnessAggregate(deps.db, windowDays);
1091
- return c.json(aggregate);
1092
- });
1093
- /**
1094
- * POST /messaging/whatsapp/pair
1095
- *
1096
- * Triggers Baileys pairing and waits up to ~10s for the first scannable QR.
1097
- * If WhatsApp isn't enabled yet, returns 409 with a clear hint instead of
1098
- * silently 404'ing — this surfaces the original setup-flow bug where users
1099
- * clicked Pair without first enabling.
1100
- */
1101
- app.post("/messaging/whatsapp/pair", async (c) => {
1102
- if (!deps.whatsappControls) {
1103
- return c.json({ error: "whatsapp_not_available" }, 404);
1104
- }
1105
- if (!config.whatsappEnabled) {
1106
- return c.json({
1107
- error: "whatsapp_not_enabled",
1108
- message: "Enable WhatsApp first (toggle the Enable button), then click Pair.",
1109
- }, 409);
1110
- }
1111
- if (!config.whatsappOwnerPhone) {
1112
- return c.json({
1113
- error: "whatsapp_phone_missing",
1114
- message: "Set the owner phone (E.164, e.g. +818012345678) and save before pairing.",
1115
- }, 409);
1116
- }
1117
- try {
1118
- const response = await deps.whatsappControls.waitForQr(10_000);
1119
- return c.json(response);
1120
- }
1121
- catch (err) {
1122
- const message = toSafeErrorMessage(err, "Unknown WhatsApp error");
1123
- return c.json({
1124
- error: "whatsapp_pair_failed",
1125
- message,
1126
- state: deps.whatsappControls.getQrResponse().state,
1127
- }, 500);
1128
- }
1129
- });
1130
- /**
1131
- * GET /messaging/whatsapp/qr
1132
- *
1133
- * Returns the current QR snapshot WITHOUT triggering a fresh pair flow.
1134
- * Dashboard polls this every ~3s while pairing is in progress so the user
1135
- * always sees the latest QR (Baileys rotates them every ~20s).
1136
- */
1137
- app.get("/messaging/whatsapp/qr", (c) => {
1138
- if (!deps.whatsappControls) {
1139
- return c.json({ error: "whatsapp_not_available" }, 404);
1140
- }
1141
- const response = deps.whatsappControls.getQrResponse();
1142
- return c.json({
1143
- ...response,
1144
- error: response.error ? toSafeErrorMessage(response.error) : null,
1145
- });
1146
- });
1147
- /**
1148
- * POST /messaging/whatsapp/reset
1149
- *
1150
- * Recovery path for "unlinked from phone" or "broken link" situations
1151
- * where the cached Baileys auth would otherwise prevent a fresh pair
1152
- * from succeeding. Tears the adapter down, wipes the auth directory
1153
- * (creds.json, session-*.json, qr.txt, …) plus the owner_channels
1154
- * mapping, then — if WhatsApp is currently enabled — rebuilds the
1155
- * adapter and waits up to ~10s for the first QR so the dashboard can
1156
- * render it in the same response.
1157
- */
1158
- app.post("/messaging/whatsapp/reset", async (c) => {
1159
- if (!deps.whatsappControls) {
1160
- return c.json({ error: "whatsapp_not_available" }, 404);
1161
- }
1162
- try {
1163
- const response = await deps.whatsappControls.reset(10_000);
1164
- return c.json(response);
1165
- }
1166
- catch (err) {
1167
- const message = toSafeErrorMessage(err, "Unknown WhatsApp error");
1168
- return c.json({
1169
- error: "whatsapp_reset_failed",
1170
- message,
1171
- state: deps.whatsappControls.getQrResponse().state,
1172
- }, 500);
1173
- }
1174
- });
1175
- /**
1176
- * GET /messaging/whatsapp/status
1177
- *
1178
- * Lightweight health probe — connection state + last error, no QR fetch.
1179
- */
1180
- app.get("/messaging/whatsapp/status", (c) => {
1181
- if (!deps.whatsappControls) {
1182
- return c.json({ error: "whatsapp_not_available" }, 404);
1183
- }
1184
- const response = deps.whatsappControls.getQrResponse();
1185
- return c.json({
1186
- enabled: config.whatsappEnabled,
1187
- initialized: deps.whatsappControls.isInitialized(),
1188
- state: response.state,
1189
- error: response.error ? toSafeErrorMessage(response.error) : null,
1190
- });
1191
- });
1192
- // ── Telegram pairing ──────────────────────────────────────────────────
1193
- //
1194
- // Three endpoints support the dashboard's QR-deep-link pairing flow:
1195
- // POST /messaging/telegram/test-token — getMe (validate token)
1196
- // POST /messaging/telegram/start-pairing — generate token + QR + deep link
1197
- // GET /messaging/telegram/pairing-status — poll until paired
1198
- //
1199
- // The QR encodes `https://t.me/<bot>?start=<token>`. When the user scans
1200
- // it, Telegram opens the bot and sends `/start <token>`; the adapter
1201
- // matches the token, captures the chat ID via discovery mode, and the
1202
- // daemon writes the ID into .env via the onOwnerDetected callback.
1203
- app.post("/messaging/telegram/test-token", async (c) => {
1204
- if (!deps.messagingControls?.telegram) {
1205
- return c.json({ error: "telegram_not_configured" }, 404);
1206
- }
1207
- // Accept an optional candidate token in the request body so the
1208
- // dashboard can validate an UNSAVED draft before persisting it.
1209
- const body = await c.req.json().catch(() => ({}));
1210
- const candidate = typeof body?.token === "string" && body.token.length > 0
1211
- ? body.token
1212
- : undefined;
1213
- try {
1214
- const info = await deps.messagingControls.telegram.testToken(candidate);
1215
- return c.json(info);
1216
- }
1217
- catch (err) {
1218
- return c.json({
1219
- error: "telegram_test_failed",
1220
- message: toSafeErrorMessage(err, "Telegram token validation failed"),
1221
- }, 400);
1222
- }
1223
- });
1224
- app.post("/messaging/telegram/start-pairing", async (c) => {
1225
- if (!deps.messagingControls?.telegram) {
1226
- return c.json({ error: "telegram_not_configured" }, 404);
1227
- }
1228
- try {
1229
- const result = await deps.messagingControls.telegram.startPairing();
1230
- return c.json(result);
1231
- }
1232
- catch (err) {
1233
- return c.json({
1234
- error: "telegram_pair_start_failed",
1235
- message: toSafeErrorMessage(err, "Telegram pairing could not start"),
1236
- }, 500);
1237
- }
1238
- });
1239
- app.get("/messaging/telegram/pairing-status", (c) => {
1240
- if (!deps.messagingControls?.telegram) {
1241
- return c.json({ error: "telegram_not_configured" }, 404);
1242
- }
1243
- return c.json(deps.messagingControls.telegram.getPairingStatus());
1244
- });
1245
- app.post("/messaging/telegram/cancel-pairing", (c) => {
1246
- if (!deps.messagingControls?.telegram) {
1247
- return c.json({ error: "telegram_not_configured" }, 404);
1248
- }
1249
- deps.messagingControls.telegram.cancelPairing();
1250
- return c.json({ status: "cancelled" });
1251
- });
1252
- // ── Slack pairing ─────────────────────────────────────────────────────
1253
- //
1254
- // Slack has no QR/deep-link mechanism, so we offer two helpers:
1255
- // 1. Token validation via auth.test
1256
- // 2. A pre-built app manifest (one-click app creation at api.slack.com)
1257
- // 3. Discovery mode for owner user ID — user DMs the bot, daemon captures
1258
- //
1259
- // The manifest uses Aitne's required scopes (im:history,
1260
- // chat:write, app_mentions:read) + Socket Mode + bot scopes. We do NOT
1261
- // include any oauth_redirect_url since Socket Mode bots don't need one.
1262
- app.post("/messaging/slack/test-token", async (c) => {
1263
- if (!deps.messagingControls?.slack) {
1264
- return c.json({ error: "slack_not_configured" }, 404);
1265
- }
1266
- const body = await c.req.json().catch(() => ({}));
1267
- const candidate = typeof body?.token === "string" && body.token.length > 0
1268
- ? body.token
1269
- : undefined;
1270
- try {
1271
- const info = await deps.messagingControls.slack.testToken(candidate);
1272
- return c.json(info);
1273
- }
1274
- catch (err) {
1275
- return c.json({
1276
- error: "slack_test_failed",
1277
- message: toSafeErrorMessage(err, "Slack token validation failed"),
1278
- }, 400);
1279
- }
1280
- });
1281
- app.get("/messaging/slack/manifest", (c) => {
1282
- // App manifest in JSON form. Slack supports both YAML and JSON in the
1283
- // `?manifest_json=` and `?manifest_yaml=` query params on the new-app
1284
- // create page (https://docs.slack.dev/app-manifests/...).
1285
- //
1286
- // Scope minimization (intentional, do not re-broaden):
1287
- // - app_mentions:read — for @mentions in channels the user invited the bot to
1288
- // - chat:write — required to send messages
1289
- // - files:read — required to download user-uploaded files
1290
- // - im:history — required to receive `message.im` events
1291
- // - im:read — list/inspect direct-message channels
1292
- // - im:write — open a DM channel with the owner
1293
- //
1294
- // We DELIBERATELY OMIT:
1295
- // - channels:history — would let the bot read every message in every
1296
- // channel it's added to. Aitne only DMs,
1297
- // so this scope is pure attack surface.
1298
- // - users:read — not needed; resolveUserChannel() uses
1299
- // conversations.open with the configured user ID.
1300
- const manifest = {
1301
- display_information: {
1302
- name: APP_NAME,
1303
- description: "Local-first proactive assistant",
1304
- background_color: "#1a1a2e",
1305
- },
1306
- features: {
1307
- bot_user: {
1308
- display_name: APP_NAME,
1309
- always_online: true,
1310
- },
1311
- },
1312
- oauth_config: {
1313
- scopes: {
1314
- bot: [
1315
- "app_mentions:read",
1316
- "chat:write",
1317
- "files:read",
1318
- "im:history",
1319
- "im:read",
1320
- "im:write",
1321
- ],
1322
- },
1323
- },
1324
- settings: {
1325
- event_subscriptions: {
1326
- bot_events: ["app_mention", "message.im"],
1327
- },
1328
- interactivity: { is_enabled: false },
1329
- org_deploy_enabled: false,
1330
- socket_mode_enabled: true,
1331
- token_rotation_enabled: false,
1332
- },
1333
- };
1334
- const manifestJson = JSON.stringify(manifest);
1335
- // Slack's "create app from manifest" deep link.
1336
- const createAppUrl = `https://api.slack.com/apps?new_app=1&manifest_json=${encodeURIComponent(manifestJson)}`;
1337
- return c.json({
1338
- manifest,
1339
- manifestJson,
1340
- createAppUrl,
1341
- instructions: [
1342
- "1. Click 'Open Slack app builder' below — Slack will pre-fill the manifest.",
1343
- "2. On the app page, scroll to 'Install App' and click Install to your workspace.",
1344
- "3. Copy the Bot User OAuth Token (xoxb-…) from 'OAuth & Permissions' into the field below.",
1345
- "4. Generate an App-Level Token (xapp-…) under 'Basic Information' → 'App-Level Tokens' with `connections:write` scope, paste it below.",
1346
- "5. Click Save Slack Config, then 'Generate pairing phrase' and DM the bot with the phrase.",
1347
- ],
1348
- });
1349
- });
1350
- /**
1351
- * POST /messaging/slack/start-pairing
1352
- *
1353
- * Generates a fresh magic phrase, registers it as the Slack adapter's
1354
- * pairing challenge, and returns it to the dashboard. The user must
1355
- * include this phrase in the next DM they send to the bot — only that
1356
- * matching DM captures the owner role. The previous "enable-discovery"
1357
- * endpoint was vulnerable to a 5-minute race where any DM could
1358
- * hijack ownership; the magic phrase closes that.
1359
- */
1360
- app.post("/messaging/slack/start-pairing", async (c) => {
1361
- if (!deps.messagingControls?.slack) {
1362
- return c.json({ error: "slack_not_configured" }, 404);
1363
- }
1364
- try {
1365
- const result = await deps.messagingControls.slack.startPairing();
1366
- return c.json(result);
1367
- }
1368
- catch (err) {
1369
- return c.json({
1370
- error: "slack_pair_start_failed",
1371
- message: toSafeErrorMessage(err, "Slack pairing could not start"),
1372
- }, 400);
1373
- }
1374
- });
1375
- app.post("/messaging/slack/cancel-pairing", (c) => {
1376
- if (!deps.messagingControls?.slack) {
1377
- return c.json({ error: "slack_not_configured" }, 404);
1378
- }
1379
- deps.messagingControls.slack.cancelPairing();
1380
- return c.json({ status: "cancelled" });
1381
- });
1382
- app.get("/messaging/slack/pairing-status", (c) => {
1383
- if (!deps.messagingControls?.slack) {
1384
- return c.json({ error: "slack_not_configured" }, 404);
1385
- }
1386
- return c.json(deps.messagingControls.slack.getPairingStatus());
1387
- });
1388
- // ── Discord pairing ───────────────────────────────────────────────────
1389
- //
1390
- // Discord parity: token validation + magic-phrase pairing for owner user ID.
1391
- app.post("/messaging/discord/test-token", async (c) => {
1392
- if (!deps.messagingControls?.discord) {
1393
- return c.json({ error: "discord_not_configured" }, 404);
1394
- }
1395
- const body = await c.req.json().catch(() => ({}));
1396
- const candidate = typeof body?.token === "string" && body.token.length > 0
1397
- ? body.token
1398
- : undefined;
1399
- try {
1400
- const info = await deps.messagingControls.discord.testToken(candidate);
1401
- return c.json(info);
1402
- }
1403
- catch (err) {
1404
- return c.json({
1405
- error: "discord_test_failed",
1406
- message: toSafeErrorMessage(err, "Discord token validation failed"),
1407
- }, 400);
1408
- }
1409
- });
1410
- app.post("/messaging/discord/start-pairing", async (c) => {
1411
- if (!deps.messagingControls?.discord) {
1412
- return c.json({ error: "discord_not_configured" }, 404);
1413
- }
1414
- try {
1415
- const result = await deps.messagingControls.discord.startPairing();
1416
- return c.json(result);
1417
- }
1418
- catch (err) {
1419
- return c.json({
1420
- error: "discord_pair_start_failed",
1421
- message: toSafeErrorMessage(err, "Discord pairing could not start"),
1422
- }, 400);
1423
- }
1424
- });
1425
- app.post("/messaging/discord/cancel-pairing", (c) => {
1426
- if (!deps.messagingControls?.discord) {
1427
- return c.json({ error: "discord_not_configured" }, 404);
1428
- }
1429
- deps.messagingControls.discord.cancelPairing();
1430
- return c.json({ status: "cancelled" });
1431
- });
1432
- app.get("/messaging/discord/pairing-status", (c) => {
1433
- if (!deps.messagingControls?.discord) {
1434
- return c.json({ error: "discord_not_configured" }, 404);
1435
- }
1436
- return c.json(deps.messagingControls.discord.getPairingStatus());
1437
- });
1438
- /** POST /config/upload/google-credentials — upload Google Calendar credentials JSON */
1439
- app.post("/config/upload/google-credentials", async (c) => {
1440
- const body = await c.req.parseBody();
1441
- const file = body["file"];
1442
- if (!file || !(file instanceof File)) {
1443
- return c.json({ error: "No file uploaded. Send as multipart with field name 'file'" }, 400);
1444
- }
1445
- if (file.size > MAX_UPLOAD_SIZE) {
1446
- return c.json({ error: `File too large (max ${MAX_UPLOAD_SIZE / 1024} KB)` }, 400);
1447
- }
1448
- const content = await file.text();
1449
- let parsed;
1450
- try {
1451
- parsed = JSON.parse(content);
1452
- }
1453
- catch {
1454
- return c.json({ error: "Invalid JSON file" }, 400);
1455
- }
1456
- // Basic validation: must be OAuth2 (installed/web) or service account
1457
- const obj = parsed;
1458
- if (!obj.installed && !obj.web && obj.type !== "service_account") {
1459
- return c.json({ error: "Invalid credentials format. Expected OAuth2 credentials JSON (with 'installed' or 'web' key) or a service account JSON." }, 400);
1460
- }
1461
- await secretBroker.set("googleCredentialsJson", content);
1462
- if (parsed.type === "service_account") {
1463
- await secretBroker.delete("googleTokenJson");
1464
- }
1465
- await notifySecretChange("google");
1466
- deps.onGoogleServicesReady?.();
1467
- return c.json({
1468
- status: "uploaded",
1469
- path: "keychain://google-credentials",
1470
- requiresRestart: false,
1471
- message: "Credentials saved.",
1472
- });
1473
- });
1474
- /** POST /config/upload/google-token — upload Google Calendar OAuth token JSON */
1475
- app.post("/config/upload/google-token", async (c) => {
1476
- const body = await c.req.parseBody();
1477
- const file = body["file"];
1478
- if (!file || !(file instanceof File)) {
1479
- return c.json({ error: "No file uploaded. Send as multipart with field name 'file'" }, 400);
1480
- }
1481
- if (file.size > MAX_UPLOAD_SIZE) {
1482
- return c.json({ error: `File too large (max ${MAX_UPLOAD_SIZE / 1024} KB)` }, 400);
1483
- }
1484
- const content = await file.text();
1485
- // Validate JSON
1486
- try {
1487
- JSON.parse(content);
1488
- }
1489
- catch {
1490
- return c.json({ error: "Invalid JSON file" }, 400);
1491
- }
1492
- await secretBroker.saveGoogleTokenJson(content);
1493
- await notifySecretChange("google");
1494
- deps.onGoogleServicesReady?.();
1495
- return c.json({
1496
- status: "uploaded",
1497
- path: "keychain://google-token",
1498
- requiresRestart: false,
1499
- message: "Token saved.",
1500
- });
1501
- });
1502
- // ── Google OAuth2 Authorization Flow ──
1503
- // Allows users to authenticate with just credentials.json — the daemon
1504
- // handles the full OAuth2 flow and saves the token automatically.
1505
- /** POST /config/google-auth/start — begin OAuth2 authorization */
1506
- app.post("/config/google-auth/start", async (c) => {
1507
- const credRaw = await secretBroker.getGoogleCredentialsJson();
1508
- if (!credRaw) {
1509
- return c.json({ error: "Upload credentials.json first" }, 400);
1510
- }
1511
- let cred;
1512
- try {
1513
- cred = parseGoogleCredentialsJson(credRaw);
1514
- }
1515
- catch {
1516
- return c.json({ error: "Credentials JSON is invalid. Upload it again." }, 400);
1517
- }
1518
- // Service accounts don't need OAuth2 authorization
1519
- if (cred.type === "service_account") {
1520
- return c.json({ error: "Service account credentials don't require OAuth authorization. Restart the daemon to activate." }, 400);
1521
- }
1522
- const clientConfig = getGoogleOAuthClientConfig(cred);
1523
- if (!clientConfig) {
1524
- return c.json({ error: "Invalid credentials format" }, 400);
1525
- }
1526
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1527
- let google;
1528
- try {
1529
- const mod = await import("googleapis");
1530
- google = mod.google;
1531
- }
1532
- catch {
1533
- return c.json({ error: "googleapis package not installed" }, 500);
1534
- }
1535
- // Use daemon's own port for the OAuth callback
1536
- const redirectUri = `http://localhost:${config.apiPort}/api/config/google-auth/callback`;
1537
- const oauth2Client = new google.auth.OAuth2(clientConfig.client_id, clientConfig.client_secret, redirectUri);
1538
- // Request scopes for Calendar + Gmail
1539
- const scopes = [
1540
- "https://www.googleapis.com/auth/calendar",
1541
- "https://www.googleapis.com/auth/gmail.modify",
1542
- "https://www.googleapis.com/auth/gmail.send",
1543
- ];
1544
- pruneOauthStates();
1545
- const state = randomUUID();
1546
- // Capture the dashboard origin so the callback can postMessage to the
1547
- // correct window. Origin/Referer must match the closed allowlist or
1548
- // the flow is refused — defending the postMessage target from the
1549
- // class of attacks described next to `allowedDashboardOrigins`.
1550
- const dashboardOrigin = resolveAllowedDashboardOrigin(c.req.header("origin"), c.req.header("referer"));
1551
- if (!dashboardOrigin) {
1552
- return c.json({
1553
- error: "untrusted_origin",
1554
- message: "OAuth flows must be initiated from the configured dashboard origin",
1555
- }, 403);
1556
- }
1557
- oauthStates.set(state, { createdAt: Date.now(), dashboardOrigin });
1558
- const authUrl = oauth2Client.generateAuthUrl({
1559
- access_type: "offline",
1560
- scope: scopes,
1561
- prompt: "consent", // Force consent to always get a refresh_token
1562
- state,
1563
- });
1564
- return c.json({ authUrl, redirectUri, scopes });
1565
- });
1566
- /** GET /config/google-auth/callback — OAuth2 redirect handler */
1567
- app.get("/config/google-auth/callback", async (c) => {
1568
- const code = c.req.query("code");
1569
- const error = c.req.query("error");
1570
- const state = c.req.query("state");
1571
- if (error) {
1572
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1573
- <h2 style="color:#dc2626">Authorization Failed</h2>
1574
- <p>${escapeHtml(error)}</p>
1575
- <p style="color:#666;font-size:14px">You can close this window.</p>
1576
- </body></html>`);
1577
- }
1578
- pruneOauthStates();
1579
- const stateData = state ? oauthStates.get(state) : undefined;
1580
- if (!state || !stateData) {
1581
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1582
- <h2 style="color:#dc2626">Authorization Failed</h2>
1583
- <p>Invalid or expired OAuth state.</p>
1584
- <p style="color:#666;font-size:14px">Start the authorization flow again from the dashboard.</p>
1585
- </body></html>`);
1586
- }
1587
- const { dashboardOrigin } = stateData;
1588
- oauthStates.delete(state);
1589
- // Defence-in-depth: the start handler already gates Origin/Referer
1590
- // against `allowedDashboardOrigins`, so a stored value should always
1591
- // pass this check. Re-validate before injecting into the callback
1592
- // HTML so a future code change that drops the start-side gate
1593
- // doesn't silently regress the postMessage target.
1594
- if (!allowedDashboardOrigins.has(dashboardOrigin)) {
1595
- logger.warn({ dashboardOrigin }, "OAuth callback refused — stored dashboard origin not in allowlist");
1596
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1597
- <h2 style="color:#dc2626">Authorization Failed</h2>
1598
- <p>Untrusted dashboard origin.</p>
1599
- </body></html>`);
1600
- }
1601
- if (!code) {
1602
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1603
- <h2 style="color:#dc2626">Error</h2>
1604
- <p>No authorization code received.</p>
1605
- </body></html>`);
1606
- }
1607
- // Re-create OAuth2 client from stored credentials
1608
- const credRaw = await secretBroker.getGoogleCredentialsJson();
1609
- if (!credRaw) {
1610
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1611
- <h2 style="color:#dc2626">Error</h2>
1612
- <p>Credentials not configured.</p>
1613
- </body></html>`);
1614
- }
1615
- try {
1616
- const cred = parseGoogleCredentialsJson(credRaw);
1617
- const clientConfig = getGoogleOAuthClientConfig(cred);
1618
- if (!clientConfig)
1619
- throw new Error("Invalid credentials");
1620
- const mod = await import("googleapis");
1621
- const google = mod.google;
1622
- const redirectUri = `http://localhost:${config.apiPort}/api/config/google-auth/callback`;
1623
- const oauth2Client = new google.auth.OAuth2(clientConfig.client_id, clientConfig.client_secret, redirectUri);
1624
- // Exchange authorization code for tokens
1625
- const { tokens } = await oauth2Client.getToken(code);
1626
- await secretBroker.saveGoogleTokenJson(JSON.stringify(tokens));
1627
- await notifySecretChange("google");
1628
- deps.onGoogleServicesReady?.();
1629
- const statusMsg = services.calendar || services.gmail
1630
- ? "Services activated."
1631
- : "Token saved.";
1632
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1633
- <h2 style="color:#059669">Authorization Successful</h2>
1634
- <p>${escapeHtml(statusMsg)}</p>
1635
- <p style="color:#666;font-size:14px">You can close this window.</p>
1636
- <script>
1637
- if (window.opener) {
1638
- window.opener.postMessage({ type: "google-auth-success" }, ${JSON.stringify(dashboardOrigin)});
1639
- }
1640
- </script>
1641
- </body></html>`);
1642
- }
1643
- catch (err) {
1644
- const msg = toSafeErrorMessage(err, "Unknown error");
1645
- return c.html(`<!DOCTYPE html><html><body style="font-family:system-ui;text-align:center;padding:60px">
1646
- <h2 style="color:#dc2626">Token Exchange Failed</h2>
1647
- <p>${escapeHtml(msg)}</p>
1648
- <p style="color:#666;font-size:14px">You can close this window and try again.</p>
1649
- </body></html>`);
1650
- }
1651
- });
1652
- /** POST /config/reset-safety — reset disallowedTools to defaults */
1653
- app.post("/config/reset-safety", async (c) => {
1654
- const defaults = [...DEFAULT_DISALLOWED_TOOLS];
1655
- // Actually persist the reset — update in-memory config and .env
1656
- // Use null for allowedToolsOverride to match the Zod default (null = "no override")
1657
- const result = await applyConfigUpdates(config, settingsStore, {
1658
- disallowedTools: defaults,
1659
- allowedToolsOverride: null,
1660
- });
1661
- return c.json({ status: "reset", disallowedTools: defaults, ...result });
1662
- });
1663
- // ── Events/Logs API ──
1664
- /** GET /events — paginated event/action log */
1665
- app.get("/events", (c) => {
1666
- const page = Math.max(1, Number(c.req.query("page") ?? "1"));
1667
- const limit = Math.min(Number(c.req.query("limit") ?? "50"), 100);
1668
- const offset = (page - 1) * limit;
1669
- const type = c.req.query("type");
1670
- const result = c.req.query("result");
1671
- const days = c.req.query("days"); // "1" (today), "7", "30"
1672
- let whereClause = "WHERE 1=1";
1673
- const params = [];
1674
- if (type) {
1675
- whereClause += " AND action_type = ?";
1676
- params.push(type);
1677
- }
1678
- if (result) {
1679
- whereClause += " AND result = ?";
1680
- params.push(result);
1681
- }
1682
- if (days) {
1683
- const d = Number(days);
1684
- if (d > 0 && d <= 365) {
1685
- // datetime(started_at) normalizes mixed ISO-8601 / SQL formats — the
1686
- // delegated_proxy.invoke writer historically inserted ISO-with-T-and-Z
1687
- // strings, which sort lexicographically above same-day SQL strings.
1688
- whereClause += " AND datetime(started_at) > datetime('now', '-' || ? || ' days')";
1689
- params.push(d);
1690
- }
1691
- }
1692
- const total = db
1693
- .prepare(`SELECT COUNT(*) as cnt FROM agent_actions ${whereClause}`)
1694
- .get(...params);
1695
- params.push(limit, offset);
1696
- const rows = db
1697
- .prepare(`SELECT id, event_id, action_type, trigger, model_used, model_usage_json, cost_usd,
1698
- tokens_input, tokens_output,
1699
- cache_creation_tokens, cache_read_tokens,
1700
- duration_ms, num_turns,
1701
- result, detail, started_at, completed_at, error
1702
- FROM agent_actions ${whereClause}
1703
- ORDER BY datetime(started_at) DESC, id DESC
1704
- LIMIT ? OFFSET ?`)
1705
- .all(...params);
1706
- return c.json({
1707
- events: rows,
1708
- pagination: {
1709
- page,
1710
- limit,
1711
- total: total.cnt,
1712
- totalPages: Math.ceil(total.cnt / limit),
1713
- },
1714
- });
1715
- });
1716
- // ── Conversations API ──
1717
- /** GET /conversations — paginated conversation sessions */
1718
- app.get("/conversations", (c) => {
1719
- const page = Number(c.req.query("page") ?? "1");
1720
- const limit = Math.min(Number(c.req.query("limit") ?? "20"), 50);
1721
- const offset = (page - 1) * limit;
1722
- const platform = c.req.query("platform");
1723
- const status = c.req.query("status");
1724
- const scope = c.req.query("scope");
1725
- const scopes = scope
1726
- ?.split(",")
1727
- .map((value) => value.trim())
1728
- .filter((value) => value.length > 0);
1729
- let whereClause = "WHERE 1=1";
1730
- const params = [];
1731
- if (platform) {
1732
- whereClause += " AND platform = ?";
1733
- params.push(platform);
1734
- }
1735
- if (status) {
1736
- whereClause += " AND status = ?";
1737
- params.push(status);
1738
- }
1739
- if (scopes && scopes.length > 0) {
1740
- if (scopes.length === 1) {
1741
- whereClause += " AND scope = ?";
1742
- params.push(scopes[0]);
1743
- }
1744
- else {
1745
- whereClause += ` AND scope IN (${scopes.map(() => "?").join(", ")})`;
1746
- params.push(...scopes);
1747
- }
1748
- }
1749
- else {
1750
- // Default view excludes docs_qa: QA transcripts are short lookups
1751
- // and would drown out chat in /activity. Operators opt in with the
1752
- // explicit `?scope=docs_qa` filter chip.
1753
- whereClause += " AND scope != ?";
1754
- params.push(DOCS_QA_SCOPE);
1755
- }
1756
- const total = db
1757
- .prepare(`SELECT COUNT(*) as cnt FROM conversation_sessions ${whereClause}`)
1758
- .get(...params);
1759
- params.push(limit, offset);
1760
- const rows = db
1761
- .prepare(`SELECT id, platform, channel_id, thread_id, scope, model, status,
1762
- message_count, started_at, last_message_at, is_dm, backend_session_id
1763
- FROM conversation_sessions ${whereClause}
1764
- ORDER BY last_message_at DESC
1765
- LIMIT ? OFFSET ?`)
1766
- .all(...params);
1767
- const sourcePlatformsStmt = db.prepare(`SELECT DISTINCT platform
1768
- FROM messages
1769
- WHERE session_id = ?
1770
- ORDER BY CASE platform
1771
- WHEN 'dashboard' THEN 0
1772
- WHEN 'whatsapp' THEN 1
1773
- WHEN 'telegram' THEN 2
1774
- WHEN 'slack' THEN 3
1775
- WHEN 'discord' THEN 4
1776
- ELSE 99
1777
- END, platform`);
1778
- const conversations = rows.map((row) => {
1779
- const sourcePlatforms = sourcePlatformsStmt.all(row.id).map((platformRow) => platformRow.platform);
1780
- const normalizedSourcePlatforms = sourcePlatforms.length > 0
1781
- ? sourcePlatforms
1782
- : row.platform !== "owner"
1783
- ? [row.platform]
1784
- : [];
1785
- const browserOnly = normalizedSourcePlatforms.length > 0
1786
- && normalizedSourcePlatforms.every((platform) => platform === "dashboard");
1787
- return {
1788
- id: row.id,
1789
- platform: row.platform,
1790
- channel_id: row.channel_id,
1791
- thread_id: row.thread_id,
1792
- model: row.model,
1793
- status: row.status,
1794
- message_count: row.message_count,
1795
- started_at: row.started_at,
1796
- last_message_at: row.last_message_at,
1797
- summary: null,
1798
- source_platforms: normalizedSourcePlatforms,
1799
- read_only_from_dashboard: normalizedSourcePlatforms.length === 0 ||
1800
- normalizedSourcePlatforms.some((platform) => platform !== "dashboard"),
1801
- // A session is continuable when the dispatcher can actually
1802
- // execute against it — not when its stored SDK session id is
1803
- // non-null. `continueDashboardSession` legitimately writes
1804
- // `backend_session_id = NULL` on the `shouldInvalidateSdkSession`
1805
- // path, and the dispatcher falls back to fresh-execute + history
1806
- // injection for NULL backends. The real gates are: scope,
1807
- // browser-only provenance, and the workdir surviving on disk.
1808
- continue_available: row.scope === DASHBOARD_CHAT_SCOPE
1809
- && browserOnly
1810
- && existsSync(getSessionWorkdirPath(config.dataDir, row.id)),
1811
- };
1812
- });
1813
- return c.json({
1814
- conversations,
1815
- pagination: {
1816
- page,
1817
- limit,
1818
- total: total.cnt,
1819
- totalPages: Math.ceil(total.cnt / limit),
1820
- },
1821
- });
1822
- });
1823
- /**
1824
- * DELETE /conversations — bulk-delete every non-active sidebar session.
1825
- * Scope is hard-coded to `dashboard_chat` + `owner_dm` (what the chat
1826
- * sidebar shows); the live active session is filtered out so deleting
1827
- * "all past sessions" never kills the current chat.
1828
- */
1829
- app.delete("/conversations", (c) => {
1830
- const result = deleteAllChatSidebarSessions({ db, dataDir: config.dataDir });
1831
- return c.json({ status: "deleted", deleted: result.deleted });
1832
- });
1833
- /** DELETE /conversations/:id — delete one non-active sidebar session. */
1834
- app.delete("/conversations/:id", (c) => {
1835
- const sessionId = Number(c.req.param("id"));
1836
- if (!Number.isFinite(sessionId) || sessionId <= 0) {
1837
- return c.json({ error: "invalid_session_id" }, 400);
1838
- }
1839
- const result = deleteChatSession({
1840
- db,
1841
- dataDir: config.dataDir,
1842
- sessionId,
1843
- });
1844
- if (!result.ok) {
1845
- return c.json({ error: "delete_failed", message: result.message }, result.status);
1846
- }
1847
- return c.json({ status: "deleted", deleted: result.deleted });
1848
- });
1849
- /** GET /conversations/:id/messages — messages for a specific conversation */
1850
- app.get("/conversations/:id/messages", (c) => {
1851
- const sessionId = Number(c.req.param("id"));
1852
- const limit = Math.min(Number(c.req.query("limit") ?? "50"), 200);
1853
- const before = c.req.query("before"); // cursor-based pagination
1854
- let whereClause = "WHERE session_id = ?";
1855
- const params = [sessionId];
1856
- if (before) {
1857
- whereClause += " AND id < ?";
1858
- params.push(Number(before));
1859
- }
1860
- params.push(limit);
1861
- const rows = db
1862
- .prepare(`SELECT id, role, content, platform, sender_id, timestamp
1863
- FROM messages ${whereClause}
1864
- ORDER BY id DESC
1865
- LIMIT ?`)
1866
- .all(...params);
1867
- // Chat-attachments Phase 1 — inline attachment refs per message so
1868
- // the dashboard transcript can render thumbnails/download chips
1869
- // alongside past messages without an extra round-trip per row.
1870
- // Skipped when the chat_attachments table doesn't exist (older DB
1871
- // snapshots / tests that don't run migrations).
1872
- const hasAttachments = (() => {
1873
- try {
1874
- const row = db
1875
- .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name='chat_attachments'`)
1876
- .get();
1877
- return row !== undefined;
1878
- }
1879
- catch {
1880
- return false;
1881
- }
1882
- })();
1883
- const attachmentsByMessage = new Map();
1884
- if (hasAttachments && rows.length > 0) {
1885
- const ids = rows.map((r) => r.id);
1886
- const placeholders = ids.map(() => "?").join(",");
1887
- const attachmentRows = db
1888
- .prepare(`SELECT message_id, id, direction, original_filename, mime_type, size_bytes, caption
1889
- FROM chat_attachments
1890
- WHERE message_id IN (${placeholders})
1891
- ORDER BY created_at ASC`)
1892
- .all(...ids);
1893
- for (const a of attachmentRows) {
1894
- let bucket = attachmentsByMessage.get(a.message_id);
1895
- if (!bucket) {
1896
- bucket = [];
1897
- attachmentsByMessage.set(a.message_id, bucket);
1898
- }
1899
- bucket.push({
1900
- id: a.id,
1901
- direction: a.direction,
1902
- originalFilename: a.original_filename,
1903
- mimeType: a.mime_type,
1904
- sizeBytes: a.size_bytes,
1905
- caption: a.caption,
1906
- });
1907
- }
1908
- }
1909
- const enriched = rows.map((row) => {
1910
- const attachments = attachmentsByMessage.get(row.id);
1911
- return attachments && attachments.length > 0
1912
- ? { ...row, attachments }
1913
- : row;
1914
- });
1915
- return c.json({
1916
- messages: enriched.reverse(), // Return in chronological order
1917
- hasMore: rows.length === limit,
1918
- });
1919
- });
1920
- // ── Cost API ──
1921
- /** GET /cost — cost analytics */
1922
- app.get("/cost", (c) => {
1923
- const period = c.req.query("period") ?? "daily"; // daily, weekly, monthly
1924
- const periodKey = period in COST_QUERIES
1925
- ? period
1926
- : "daily";
1927
- const queries = COST_QUERIES[periodKey];
1928
- const spec = COST_PERIOD_SPECS[periodKey];
1929
- const byPeriod = db.prepare(queries.byPeriod).all();
1930
- const byModelRaw = db.prepare(queries.byModelRows).all();
1931
- const byModel = aggregateByBilledModel(byModelRaw);
1932
- const byEventType = db.prepare(queries.byEventType).all();
1933
- const byBackend = db
1934
- .prepare(`SELECT ${backendExpr} as backend,
1935
- SUM(cost_usd) as total_cost,
1936
- COUNT(*) as session_count
1937
- FROM agent_actions
1938
- WHERE started_at > datetime('now', ?)
1939
- AND cost_usd IS NOT NULL
1940
- GROUP BY 1
1941
- ORDER BY total_cost DESC`)
1942
- .all(spec.sinceExpr);
1943
- const byBackendPeriod = db
1944
- .prepare(`SELECT ${spec.bucketExpr} as period,
1945
- ${backendExpr} as backend,
1946
- SUM(cost_usd) as total_cost,
1947
- COUNT(*) as session_count
1948
- FROM agent_actions
1949
- WHERE started_at > datetime('now', ?)
1950
- AND cost_usd IS NOT NULL
1951
- GROUP BY 1, 2
1952
- ORDER BY period DESC, backend ASC`)
1953
- .all(spec.sinceExpr);
1954
- // Today's total (timezone-aware agent day, executed sessions only).
1955
- // datetime(started_at) normalizes mixed ISO-8601 / SQL formats — same
1956
- // rationale as the /events ORDER BY fix above.
1957
- const bounds = getAgentDayBoundsUtc(config.timezone, config.dayBoundaryHour);
1958
- const today = db
1959
- .prepare(`SELECT COALESCE(SUM(cost_usd), 0) as cost,
1960
- COUNT(*) as sessions
1961
- FROM agent_actions
1962
- WHERE datetime(started_at) >= ? AND datetime(started_at) < ?
1963
- AND cost_usd IS NOT NULL`)
1964
- .get(bounds.start, bounds.end);
1965
- return c.json({
1966
- period,
1967
- today: { costUsd: today.cost, sessions: today.sessions },
1968
- byPeriod,
1969
- byModel,
1970
- byEventType,
1971
- byBackend,
1972
- byBackendPeriod,
1973
- });
1974
- });
1975
- // ── Approvals API ──
1976
- /** GET /approvals — list pending approval requests */
1977
- app.get("/approvals", (c) => {
1978
- const rows = db
1979
- .prepare(`SELECT id, scheduled_for, task_type, task_description,
1980
- task_context, model, status, created_at
1981
- FROM agent_schedule
1982
- WHERE status = 'pending' AND task_type = 'approval'
1983
- ORDER BY created_at DESC`)
1984
- .all();
1985
- return c.json({ approvals: rows });
1986
- });
1987
- /** POST /approvals/:id/approve — approve a pending request */
1988
- app.post("/approvals/:id/approve", (c) => {
1989
- const id = Number(c.req.param("id"));
1990
- const result = db
1991
- .prepare("UPDATE agent_schedule SET status = 'pending', task_type = 'approved_task' WHERE id = ? AND status = 'pending' AND task_type = 'approval'")
1992
- .run(id);
1993
- if (result.changes === 0) {
1994
- return c.json({ error: "approval not found or already processed" }, 404);
1995
- }
1996
- return c.json({ status: "approved", id });
1997
- });
1998
- /** POST /approvals/:id/deny — deny a pending request */
1999
- app.post("/approvals/:id/deny", (c) => {
2000
- const id = Number(c.req.param("id"));
2001
- const result = db
2002
- .prepare("UPDATE agent_schedule SET status = 'skipped' WHERE id = ? AND status = 'pending' AND task_type = 'approval'")
2003
- .run(id);
2004
- if (result.changes === 0) {
2005
- return c.json({ error: "approval not found or already processed" }, 404);
2006
- }
2007
- return c.json({ status: "denied", id });
2008
- });
2009
- // ── Schedule API ──
2010
- /** GET /schedule/next — next pending scheduled task */
2011
- app.get("/schedule/next", (c) => {
2012
- const row = db
2013
- .prepare(`SELECT id, scheduled_for, task_type, task_description
2014
- FROM agent_schedule
2015
- WHERE status = 'pending' AND scheduled_for > datetime('now')
2016
- ORDER BY scheduled_for ASC LIMIT 1`)
2017
- .get();
2018
- return c.json({ next: row ?? null });
2019
- });
2020
- /** GET /schedule/list — all scheduled tasks (paginated) */
2021
- app.get("/schedule/list", (c) => {
2022
- const page = Math.max(1, Number(c.req.query("page") ?? "1"));
2023
- const limit = Math.min(Number(c.req.query("limit") ?? "20"), 50);
2024
- const status = c.req.query("status");
2025
- const type = c.req.query("type");
2026
- const offset = (page - 1) * limit;
2027
- let where = "1=1";
2028
- const params = [];
2029
- if (status) {
2030
- where += " AND status = ?";
2031
- params.push(status);
2032
- }
2033
- if (type) {
2034
- where += " AND task_type = ?";
2035
- params.push(type);
2036
- }
2037
- const total = db
2038
- .prepare(`SELECT COUNT(*) as count FROM agent_schedule WHERE ${where}`)
2039
- .get(...params).count;
2040
- params.push(limit, offset);
2041
- const schedules = db
2042
- .prepare(`SELECT id, scheduled_for, task_type, task_description, task_prompt, model, status, task_context, created_at
2043
- FROM agent_schedule WHERE ${where}
2044
- ORDER BY scheduled_for DESC LIMIT ? OFFSET ?`)
2045
- .all(...params);
2046
- return c.json({
2047
- schedules,
2048
- pagination: { page, limit, total, totalPages: Math.ceil(total / limit) },
2049
- });
2050
- });
2051
- // ── Search API ──
2052
- /** GET /search?q= — full-text search via FTS5 */
2053
- app.get("/search", (c) => {
2054
- const q = c.req.query("q");
2055
- if (!q || q.length < 2)
2056
- return c.json({ error: "query too short" }, 400);
2057
- if (q.length > 200)
2058
- return c.json({ error: "query too long" }, 400);
2059
- const limit = Math.min(Number(c.req.query("limit") ?? "20"), 50);
2060
- // Sanitize: wrap each word in double-quotes to disable FTS5 operators (NEAR, NOT, OR, etc.)
2061
- const safeQuery = q
2062
- .replace(/[^\w\s\u3000-\u9FFF\uF900-\uFAFF]/g, " ") // strip punctuation except CJK
2063
- .split(/\s+/)
2064
- .filter(Boolean)
2065
- .map((w) => `"${w}"`)
2066
- .join(" ");
2067
- if (!safeQuery)
2068
- return c.json({ actions: [], messages: [] });
2069
- let actions = [];
2070
- let messages = [];
2071
- try {
2072
- actions = db
2073
- .prepare(`SELECT a.id, a.action_type, a.started_at,
2074
- highlight(fts_actions, 1, '<mark>', '</mark>') as snippet
2075
- FROM fts_actions JOIN agent_actions a ON a.id = fts_actions.rowid
2076
- WHERE fts_actions MATCH ? ORDER BY rank LIMIT ?`)
2077
- .all(safeQuery, limit);
2078
- }
2079
- catch {
2080
- // FTS table may not exist yet
2081
- }
2082
- try {
2083
- messages = db
2084
- .prepare(`SELECT m.id, m.role, m.timestamp, m.session_id,
2085
- highlight(fts_messages, 0, '<mark>', '</mark>') as snippet
2086
- FROM fts_messages JOIN messages m ON m.id = fts_messages.rowid
2087
- WHERE fts_messages MATCH ? ORDER BY rank LIMIT ?`)
2088
- .all(safeQuery, limit);
2089
- }
2090
- catch {
2091
- // FTS table may not exist yet
2092
- }
2093
- return c.json({ actions, messages });
2094
- });
2095
- // ── Snapshots API ──
2096
- /** GET /snapshots/content/:id — single snapshot content */
2097
- app.get("/snapshots/content/:id", (c) => {
2098
- const id = Number(c.req.param("id"));
2099
- if (!Number.isSafeInteger(id) || id <= 0) {
2100
- return c.json({ error: "invalid id" }, 400);
2101
- }
2102
- const row = db
2103
- .prepare("SELECT id, file_path, content, trigger, created_at FROM md_file_snapshots WHERE id = ?")
2104
- .get(id);
2105
- if (!row)
2106
- return c.json({ error: "not_found" }, 404);
2107
- return c.json(row);
2108
- });
2109
- /** GET /snapshots/* — snapshot history for a context file */
2110
- app.get("/snapshots/*", (c) => {
2111
- const filePath = c.req.path.replace("/api/snapshots/", "");
2112
- // Validate: reject path traversal and unsafe characters
2113
- if (!filePath || /\.\./.test(filePath) || !/^[\w./-]+$/.test(filePath)) {
2114
- return c.json({ error: "invalid file path" }, 400);
2115
- }
2116
- const limit = Math.min(Number(c.req.query("limit") ?? "20"), 50);
2117
- const rows = db
2118
- .prepare(`SELECT id, file_path, trigger, session_id, created_at
2119
- FROM md_file_snapshots WHERE file_path = ?
2120
- ORDER BY created_at DESC LIMIT ?`)
2121
- .all(filePath, limit);
2122
- return c.json({ snapshots: rows });
2123
- });
2124
- // ── Notifications API ──
2125
- /** GET /notifications — notification history (paginated) */
2126
- app.get("/notifications", (c) => {
2127
- const page = Math.max(1, Number(c.req.query("page") ?? "1"));
2128
- const limit = Math.min(Number(c.req.query("limit") ?? "50"), 100);
2129
- const status = c.req.query("status");
2130
- const priority = c.req.query("priority");
2131
- const offset = (page - 1) * limit;
2132
- let where = "1=1";
2133
- const params = [];
2134
- if (status) {
2135
- where += " AND status = ?";
2136
- params.push(status);
2137
- }
2138
- if (priority) {
2139
- where += " AND priority = ?";
2140
- params.push(priority);
2141
- }
2142
- const total = db
2143
- .prepare(`SELECT COUNT(*) as count FROM notification_log WHERE ${where}`)
2144
- .get(...params).count;
2145
- params.push(limit, offset);
2146
- const notifications = db
2147
- .prepare(`SELECT
2148
- id,
2149
- dispatch_id,
2150
- content_summary AS message,
2151
- platform,
2152
- delivery_channel,
2153
- priority,
2154
- status,
2155
- user_reaction,
2156
- reacted_at,
2157
- created_at
2158
- FROM notification_log WHERE ${where}
2159
- ORDER BY created_at DESC LIMIT ? OFFSET ?`)
2160
- .all(...params);
2161
- return c.json({
2162
- notifications,
2163
- pagination: { page, limit, total, totalPages: Math.ceil(total / limit) },
2164
- });
2165
- });
2166
- return app;
2167
- }
2168
- //# sourceMappingURL=dashboard.js.map