@aitne/daemon 0.1.7 → 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 (2056) 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 +18 -6
  4. package/dist/adapters/dashboard-adapter.js +101 -55
  5. package/dist/adapters/discord.d.ts +10 -3
  6. package/dist/adapters/discord.js +102 -26
  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 +9 -3
  11. package/dist/adapters/notification-manager.d.ts +100 -3
  12. package/dist/adapters/notification-manager.js +244 -23
  13. package/dist/adapters/outbound-text.d.ts +17 -4
  14. package/dist/adapters/outbound-text.js +119 -5
  15. package/dist/adapters/primary-platform-resolver.d.ts +68 -0
  16. package/dist/adapters/primary-platform-resolver.js +54 -0
  17. package/dist/adapters/slack-adapter.d.ts +32 -5
  18. package/dist/adapters/slack-adapter.js +146 -58
  19. package/dist/adapters/telegram-adapter.d.ts +11 -8
  20. package/dist/adapters/telegram-adapter.js +63 -42
  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 +104 -18
  24. package/dist/adapters/whatsapp-adapter.js +305 -69
  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 +14 -1
  31. package/dist/api/env-writer.d.ts +0 -1
  32. package/dist/api/env-writer.js +108 -5
  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 -0
  42. package/dist/api/helpers/agent-errors.js +17 -0
  43. package/dist/api/integration-route-gate.d.ts +0 -1
  44. package/dist/api/integration-route-gate.js +10 -4
  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 +4 -0
  50. package/dist/api/routes/agent-schedule-plan-match.js +100 -0
  51. package/dist/api/routes/agent-schedule.d.ts +3 -0
  52. package/dist/api/routes/agent-schedule.js +790 -0
  53. package/dist/api/routes/agent.d.ts +0 -1
  54. package/dist/api/routes/agent.js +233 -367
  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 +110 -29
  61. package/dist/api/routes/attachments.d.ts +0 -1
  62. package/dist/api/routes/attachments.js +113 -22
  63. package/dist/api/routes/backends.d.ts +0 -1
  64. package/dist/api/routes/backends.js +144 -40
  65. package/dist/api/routes/books.d.ts +0 -1
  66. package/dist/api/routes/books.js +65 -26
  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 +3 -3
  78. package/dist/api/routes/calendar.js +330 -56
  79. package/dist/api/routes/commands.d.ts +0 -1
  80. package/dist/api/routes/commands.js +27 -2
  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 +40 -0
  84. package/dist/api/routes/context/index.js +174 -0
  85. package/dist/api/routes/context/locks.d.ts +3 -0
  86. package/dist/api/routes/context/locks.js +136 -0
  87. package/dist/api/routes/context/path-resolve.d.ts +26 -0
  88. package/dist/api/routes/context/path-resolve.js +125 -0
  89. package/dist/api/routes/context/permissions.d.ts +58 -0
  90. package/dist/api/routes/context/permissions.js +234 -0
  91. package/dist/api/routes/context/read.d.ts +3 -0
  92. package/dist/api/routes/context/read.js +306 -0
  93. package/dist/api/routes/context/repair.d.ts +3 -0
  94. package/dist/api/routes/context/repair.js +114 -0
  95. package/dist/api/routes/context/snapshots.d.ts +3 -0
  96. package/dist/api/routes/context/snapshots.js +208 -0
  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 +3 -0
  100. package/dist/api/routes/context/write.js +781 -0
  101. package/dist/api/routes/dashboard/config.d.ts +3 -0
  102. package/dist/api/routes/dashboard/config.js +507 -0
  103. package/dist/api/routes/dashboard/conversations.d.ts +3 -0
  104. package/dist/api/routes/dashboard/conversations.js +308 -0
  105. package/dist/api/routes/dashboard/cost-approvals.d.ts +28 -0
  106. package/dist/api/routes/dashboard/cost-approvals.js +258 -0
  107. package/dist/api/routes/dashboard/index.d.ts +26 -0
  108. package/dist/api/routes/dashboard/index.js +46 -0
  109. package/dist/api/routes/dashboard/messaging.d.ts +3 -0
  110. package/dist/api/routes/dashboard/messaging.js +349 -0
  111. package/dist/api/routes/dashboard/notifications.d.ts +3 -0
  112. package/dist/api/routes/dashboard/notifications.js +108 -0
  113. package/dist/api/routes/dashboard/oauth-google.d.ts +3 -0
  114. package/dist/api/routes/dashboard/oauth-google.js +288 -0
  115. package/dist/api/routes/dashboard/schedule-readonly.d.ts +3 -0
  116. package/dist/api/routes/dashboard/schedule-readonly.js +54 -0
  117. package/dist/api/routes/dashboard/secrets.d.ts +23 -0
  118. package/dist/api/routes/dashboard/secrets.js +306 -0
  119. package/dist/api/routes/dashboard/snapshots.d.ts +3 -0
  120. package/dist/api/routes/dashboard/snapshots.js +32 -0
  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 +5 -5
  124. package/dist/api/routes/delegated.js +6 -6
  125. package/dist/api/routes/docs.d.ts +0 -1
  126. package/dist/api/routes/docs.js +72 -10
  127. package/dist/api/routes/entities.d.ts +0 -1
  128. package/dist/api/routes/entities.js +114 -45
  129. package/dist/api/routes/fs.d.ts +0 -1
  130. package/dist/api/routes/fs.js +27 -13
  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 +113 -28
  137. package/dist/api/routes/git.d.ts +0 -1
  138. package/dist/api/routes/git.js +65 -16
  139. package/dist/api/routes/github.d.ts +0 -1
  140. package/dist/api/routes/github.js +130 -24
  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 +16 -0
  144. package/dist/api/routes/integrations/crud-patch.js +638 -0
  145. package/dist/api/routes/integrations/crud.d.ts +15 -0
  146. package/dist/api/routes/integrations/crud.js +157 -0
  147. package/dist/api/routes/integrations/exec.d.ts +22 -0
  148. package/dist/api/routes/integrations/exec.js +349 -0
  149. package/dist/api/routes/integrations/index.d.ts +61 -0
  150. package/dist/api/routes/integrations/index.js +69 -0
  151. package/dist/api/routes/integrations/probe.d.ts +20 -0
  152. package/dist/api/routes/integrations/probe.js +246 -0
  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 +14 -4
  157. package/dist/api/routes/mail/accounts.d.ts +3 -0
  158. package/dist/api/routes/mail/accounts.js +288 -0
  159. package/dist/api/routes/mail/app-password.d.ts +3 -0
  160. package/dist/api/routes/mail/app-password.js +191 -0
  161. package/dist/api/routes/mail/body-helpers.d.ts +55 -0
  162. package/dist/api/routes/mail/body-helpers.js +90 -0
  163. package/dist/api/routes/mail/dependencies.d.ts +35 -0
  164. package/dist/api/routes/mail/dependencies.js +1 -0
  165. package/dist/api/routes/mail/drafts.d.ts +4 -0
  166. package/dist/api/routes/mail/drafts.js +138 -0
  167. package/dist/api/routes/mail/gating.d.ts +44 -0
  168. package/dist/api/routes/mail/gating.js +98 -0
  169. package/dist/api/routes/mail/index.d.ts +17 -0
  170. package/dist/api/routes/mail/index.js +39 -0
  171. package/dist/api/routes/mail/messages.d.ts +14 -0
  172. package/dist/api/routes/mail/messages.js +238 -0
  173. package/dist/api/routes/mail/outlook-config.d.ts +3 -0
  174. package/dist/api/routes/mail/outlook-config.js +72 -0
  175. package/dist/api/routes/mail/provider-resolver.d.ts +63 -0
  176. package/dist/api/routes/mail/provider-resolver.js +285 -0
  177. package/dist/api/routes/mail/providers.d.ts +3 -0
  178. package/dist/api/routes/mail/providers.js +72 -0
  179. package/dist/api/routes/mail/search-health.d.ts +3 -0
  180. package/dist/api/routes/mail/search-health.js +130 -0
  181. package/dist/api/routes/mail/tags-folders.d.ts +4 -0
  182. package/dist/api/routes/mail/tags-folders.js +34 -0
  183. package/dist/api/routes/mail/validators.d.ts +22 -0
  184. package/dist/api/routes/mail/validators.js +130 -0
  185. package/dist/api/routes/managed-tasks.d.ts +0 -1
  186. package/dist/api/routes/managed-tasks.js +154 -63
  187. package/dist/api/routes/mcp.d.ts +0 -1
  188. package/dist/api/routes/mcp.js +115 -48
  189. package/dist/api/routes/metrics.d.ts +1 -2
  190. package/dist/api/routes/metrics.js +2 -3
  191. package/dist/api/routes/notion.d.ts +0 -1
  192. package/dist/api/routes/notion.js +234 -55
  193. package/dist/api/routes/observations.d.ts +0 -1
  194. package/dist/api/routes/observations.js +53 -184
  195. package/dist/api/routes/obsidian.d.ts +0 -1
  196. package/dist/api/routes/obsidian.js +193 -33
  197. package/dist/api/routes/profile-questions.d.ts +0 -1
  198. package/dist/api/routes/profile-questions.js +26 -5
  199. package/dist/api/routes/receipts.d.ts +0 -1
  200. package/dist/api/routes/receipts.js +64 -25
  201. package/dist/api/routes/recurring-schedules.d.ts +0 -1
  202. package/dist/api/routes/recurring-schedules.js +288 -15
  203. package/dist/api/routes/repositories.d.ts +0 -1
  204. package/dist/api/routes/repositories.js +278 -105
  205. package/dist/api/routes/schedule-model-resolver.d.ts +152 -0
  206. package/dist/api/routes/schedule-model-resolver.js +285 -0
  207. package/dist/api/routes/schedule-options.d.ts +24 -0
  208. package/dist/api/routes/schedule-options.js +76 -0
  209. package/dist/api/routes/schedule-validation.d.ts +145 -0
  210. package/dist/api/routes/schedule-validation.js +152 -0
  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 +142 -27
  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 +92 -33
  219. package/dist/api/routes/sot-bindings.d.ts +1 -2
  220. package/dist/api/routes/sot-bindings.js +46 -12
  221. package/dist/api/routes/sse.d.ts +0 -1
  222. package/dist/api/routes/sse.js +6 -2
  223. package/dist/api/routes/system.d.ts +0 -1
  224. package/dist/api/routes/system.js +15 -3
  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 +26 -10
  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 +84 -17
  235. package/dist/api/server.d.ts +55 -6
  236. package/dist/api/server.js +76 -22
  237. package/dist/bootstrap/adapters.d.ts +0 -1
  238. package/dist/bootstrap/adapters.js +7 -5
  239. package/dist/bootstrap/api.d.ts +219 -0
  240. package/dist/bootstrap/api.js +502 -0
  241. package/dist/bootstrap/catchup.d.ts +0 -1
  242. package/dist/bootstrap/catchup.js +1 -2
  243. package/dist/bootstrap/db.d.ts +213 -0
  244. package/dist/bootstrap/db.js +617 -0
  245. package/dist/bootstrap/event-pipeline.d.ts +329 -0
  246. package/dist/bootstrap/event-pipeline.js +1203 -0
  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 +147 -0
  250. package/dist/bootstrap/observers.js +586 -0
  251. package/dist/bootstrap/schedule-helpers.d.ts +122 -1
  252. package/dist/bootstrap/schedule-helpers.js +206 -6
  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 +32 -15
  257. package/dist/core/abort-utils.d.ts +13 -0
  258. package/dist/core/abort-utils.js +35 -0
  259. package/dist/core/agent-core.d.ts +36 -4
  260. package/dist/core/agent-core.js +3 -2
  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 +31 -5
  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 +44 -3
  308. package/dist/core/backends/backend-router.js +230 -3
  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 +53 -2
  312. package/dist/core/backends/claude-code-core.js +202 -29
  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 +177 -32
  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 +13 -2
  328. package/dist/core/backends/codex-core.js +470 -63
  329. package/dist/core/backends/gemini-cli-core.d.ts +5 -2
  330. package/dist/core/backends/gemini-cli-core.js +348 -68
  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 +22 -1
  335. package/dist/core/backends/model-registry.d.ts +10 -6
  336. package/dist/core/backends/model-registry.js +204 -34
  337. package/dist/core/backends/native-skill-discovery-probe.d.ts +77 -0
  338. package/dist/core/backends/native-skill-discovery-probe.js +172 -0
  339. package/dist/core/backends/opencode-basic-auth-fetch.d.ts +26 -0
  340. package/dist/core/backends/opencode-basic-auth-fetch.js +39 -0
  341. package/dist/core/backends/opencode-config-builder.d.ts +113 -0
  342. package/dist/core/backends/opencode-config-builder.js +184 -0
  343. package/dist/core/backends/opencode-core.d.ts +315 -0
  344. package/dist/core/backends/opencode-core.js +1508 -0
  345. package/dist/core/backends/opencode-event-mapper.d.ts +132 -0
  346. package/dist/core/backends/opencode-event-mapper.js +197 -0
  347. package/dist/core/backends/opencode-mcp.d.ts +81 -0
  348. package/dist/core/backends/opencode-mcp.js +157 -0
  349. package/dist/core/backends/opencode-server-manager.d.ts +113 -0
  350. package/dist/core/backends/opencode-server-manager.js +221 -0
  351. package/dist/core/backends/opencode-types.d.ts +45 -0
  352. package/dist/core/backends/opencode-types.js +13 -0
  353. package/dist/core/backends/plan-presets.d.ts +18 -6
  354. package/dist/core/backends/plan-presets.js +191 -24
  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 +35 -1
  358. package/dist/core/backends/process-config-cascade.js +35 -2
  359. package/dist/core/backends/prompt-utils.d.ts +0 -1
  360. package/dist/core/backends/prompt-utils.js +0 -3
  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 +43 -0
  364. package/dist/core/backends/quota-reset-hints.js +116 -0
  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 +23 -0
  370. package/dist/core/bang-commands/commands-close.js +23 -0
  371. package/dist/core/bang-commands/commands-cost.d.ts +0 -1
  372. package/dist/core/bang-commands/commands-cost.js +13 -1
  373. package/dist/core/bang-commands/commands-help.d.ts +0 -1
  374. package/dist/core/bang-commands/commands-help.js +44 -6
  375. package/dist/core/bang-commands/commands-report.d.ts +0 -1
  376. package/dist/core/bang-commands/commands-report.js +1 -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 +2 -1
  381. package/dist/core/bang-commands/commands-wiki.d.ts +0 -1
  382. package/dist/core/bang-commands/commands-wiki.js +53 -14
  383. package/dist/core/bang-commands/format-utils.d.ts +15 -3
  384. package/dist/core/bang-commands/format-utils.js +23 -4
  385. package/dist/core/bang-commands/index.d.ts +3 -1
  386. package/dist/core/bang-commands/index.js +14 -1
  387. package/dist/core/bang-commands/registry.d.ts +59 -1
  388. package/dist/core/bang-commands/registry.js +175 -23
  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 +18 -2
  398. package/dist/core/channel-timeline.js +44 -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 +11 -3
  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 +44 -5
  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 +9 -2
  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 +9 -2
  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 +10 -3
  425. package/dist/core/context/reconciler-runner.d.ts +0 -1
  426. package/dist/core/context/reconciler-runner.js +46 -6
  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 +73 -124
  440. package/dist/core/context-builder.js +272 -903
  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 +14 -1
  446. package/dist/core/context-frontmatter.js +180 -109
  447. package/dist/core/context-health.d.ts +0 -1
  448. package/dist/core/context-health.js +25 -14
  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 +19 -0
  456. package/dist/core/context-validation/index.js +19 -0
  457. package/dist/core/context-validation/prepare-write.d.ts +94 -0
  458. package/dist/core/context-validation/prepare-write.js +145 -0
  459. package/dist/core/context-validation/routine-rulebook.d.ts +59 -0
  460. package/dist/core/context-validation/routine-rulebook.js +155 -0
  461. package/dist/core/context-validation/section.d.ts +40 -0
  462. package/dist/core/context-validation/section.js +90 -0
  463. package/dist/core/context-validation/snapshot-debounce.d.ts +51 -0
  464. package/dist/core/context-validation/snapshot-debounce.js +109 -0
  465. package/dist/core/context-validation/today.d.ts +84 -0
  466. package/dist/core/context-validation/today.js +167 -0
  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 +6 -6
  472. package/dist/core/daemon-api-cli.js +132 -33
  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 +13 -1
  482. package/dist/core/dispatcher-error-handling.js +69 -1
  483. package/dist/core/dispatcher-hourly-check.d.ts +73 -2
  484. package/dist/core/dispatcher-hourly-check.js +258 -153
  485. package/dist/core/dispatcher-message-handler.d.ts +32 -2
  486. package/dist/core/dispatcher-message-handler.js +310 -53
  487. package/dist/core/dispatcher-morning-routine.d.ts +38 -31
  488. package/dist/core/dispatcher-morning-routine.js +238 -156
  489. package/dist/core/dispatcher-prompt.d.ts +4 -2
  490. package/dist/core/dispatcher-prompt.js +19 -4
  491. package/dist/core/dispatcher-repository-helpers.d.ts +0 -1
  492. package/dist/core/dispatcher-repository-helpers.js +5 -2
  493. package/dist/core/dispatcher-result-processor.d.ts +20 -1
  494. package/dist/core/dispatcher-result-processor.js +94 -5
  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 +69 -2
  498. package/dist/core/dispatcher-scheduled-tasks.js +452 -29
  499. package/dist/core/dispatcher-types.d.ts +140 -13
  500. package/dist/core/dispatcher-types.js +0 -1
  501. package/dist/core/dispatcher.d.ts +194 -5
  502. package/dist/core/dispatcher.js +487 -11
  503. package/dist/core/dm-freshness-metrics.d.ts +6 -6
  504. package/dist/core/dm-freshness-metrics.js +7 -7
  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 +163 -0
  516. package/dist/core/evening-review-verify.js +636 -0
  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 +46 -0
  520. package/dist/core/fetch-window-prompt-loader.js +71 -0
  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 +65 -33
  541. package/dist/core/management-registry.d.ts +16 -25
  542. package/dist/core/management-registry.js +32 -54
  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 +88 -2
  548. package/dist/core/metrics.js +78 -3
  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 +264 -0
  552. package/dist/core/morning/agent-journal-appender.js +632 -0
  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 +43 -0
  556. package/dist/core/morning/handoff-parser.js +115 -0
  557. package/dist/core/morning/journal-skeleton-builder.d.ts +155 -0
  558. package/dist/core/morning/journal-skeleton-builder.js +301 -0
  559. package/dist/core/morning/orchestrator.d.ts +424 -0
  560. package/dist/core/morning/orchestrator.js +1230 -0
  561. package/dist/core/morning/parent-audit-emitter.d.ts +80 -0
  562. package/dist/core/morning/parent-audit-emitter.js +118 -0
  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 +158 -0
  566. package/dist/core/morning/roadmap-skeleton-builder.js +337 -0
  567. package/dist/core/output-language-policy.d.ts +0 -1
  568. package/dist/core/output-language-policy.js +7 -8
  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 +39 -13
  576. package/dist/core/policy-files.js +62 -12
  577. package/dist/core/pre-pass-freshness.d.ts +27 -0
  578. package/dist/core/pre-pass-freshness.js +9 -0
  579. package/dist/core/previous-week-digest.d.ts +129 -0
  580. package/dist/core/previous-week-digest.js +256 -0
  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 +6 -7
  587. package/dist/core/quiet-hours-sync.d.ts +0 -1
  588. package/dist/core/quiet-hours-sync.js +7 -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 +13 -1
  594. package/dist/core/recurrence.js +108 -14
  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 +39 -4
  598. package/dist/core/release-assets.js +83 -8
  599. package/dist/core/repository-management-docs.d.ts +0 -1
  600. package/dist/core/repository-management-docs.js +32 -11
  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 +51 -6
  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 +212 -0
  610. package/dist/core/roadmap-maintenance.js +732 -0
  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 +5 -1
  616. package/dist/core/roadmap-validate.js +12 -75
  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 +43 -8
  620. package/dist/core/routine-acquisition-plan.js +99 -9
  621. package/dist/core/routine-fetch-window-retry.d.ts +40 -3
  622. package/dist/core/routine-fetch-window-retry.js +90 -9
  623. package/dist/core/routine-fetch-window-runner.d.ts +55 -22
  624. package/dist/core/routine-fetch-window-runner.js +287 -41
  625. package/dist/core/routine-windows.d.ts +17 -19
  626. package/dist/core/routine-windows.js +80 -44
  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 +179 -37
  632. package/dist/core/scheduler.js +614 -91
  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 +25 -7
  638. package/dist/core/session-manager.js +32 -16
  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 +31 -32
  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 +169 -217
  696. package/dist/core/skills-compiler.js +385 -940
  697. package/dist/core/skills-manifest.d.ts +133 -1
  698. package/dist/core/skills-manifest.js +507 -40
  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 +9 -1
  730. package/dist/core/wiki/git-precompile.js +7 -2
  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 +38 -2
  746. package/dist/core/workdir.js +159 -17
  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 +6 -7
  776. package/dist/db/entities-store.js +5 -6
  777. package/dist/db/hourly-check-signals.d.ts +0 -1
  778. package/dist/db/hourly-check-signals.js +121 -36
  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 +1 -2
  796. package/dist/db/observations.js +13 -4
  797. package/dist/db/recurring-schedules.d.ts +44 -3
  798. package/dist/db/recurring-schedules.js +116 -21
  799. package/dist/db/repositories-store.d.ts +2 -2
  800. package/dist/db/repositories-store.js +41 -4
  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 +923 -54
  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 +3 -1
  811. package/dist/index.d.ts +0 -1
  812. package/dist/index.js +408 -1522
  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 +16 -1
  830. package/dist/messaging/magic-phrase.js +60 -3
  831. package/dist/messaging/owner-channels.d.ts +40 -1
  832. package/dist/messaging/owner-channels.js +59 -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 +2 -1
  842. package/dist/observers/calendar-poller.js +76 -55
  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 +70 -10
  848. package/dist/observers/delegated-sync-worker.js +138 -12
  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 +22 -1
  856. package/dist/observers/git-watcher.js +38 -9
  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 +2 -1
  862. package/dist/observers/imminent-event-scheduler.js +30 -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 +2 -1
  870. package/dist/observers/notion-poller.js +44 -7
  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 +62 -0
  886. package/dist/observers/poll-guard.js +88 -0
  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 +17 -1
  894. package/dist/safety/absolute-block-audit.js +28 -3
  895. package/dist/safety/agent-write-tracker.d.ts +42 -2
  896. package/dist/safety/agent-write-tracker.js +81 -2
  897. package/dist/safety/always-disallowed.d.ts +93 -3
  898. package/dist/safety/always-disallowed.js +504 -20
  899. package/dist/safety/audit.d.ts +37 -6
  900. package/dist/safety/audit.js +263 -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 +21 -6
  906. package/dist/safety/risk-classifier.js +296 -70
  907. package/dist/safety/subprocess-block-scanner.d.ts +88 -0
  908. package/dist/safety/subprocess-block-scanner.js +176 -0
  909. package/dist/scheduler/hourly-check-gate.d.ts +23 -10
  910. package/dist/scheduler/hourly-check-gate.js +11 -7
  911. package/dist/secrets/backend-api-key-env.d.ts +0 -1
  912. package/dist/secrets/backend-api-key-env.js +1 -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 +8 -2
  1089. package/dist/services/delegated-invoker-audit.d.ts +0 -1
  1090. package/dist/services/delegated-invoker-audit.js +5 -2
  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 +3 -3
  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 +5 -3
  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 +1 -1
  1204. package/dist/services/mcp/generators/index.js +3 -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 +59 -0
  1214. package/dist/services/mcp/sdk-observations-server.js +160 -0
  1215. package/dist/services/mcp/session-materializer.d.ts +2 -3
  1216. package/dist/services/mcp/session-materializer.js +15 -12
  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 +1 -1
  1220. package/dist/services/mcp/types.js +0 -1
  1221. package/dist/services/notion.d.ts +17 -2
  1222. package/dist/services/notion.js +39 -3
  1223. package/dist/services/observations-batch.d.ts +98 -0
  1224. package/dist/services/observations-batch.js +256 -0
  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 +22 -2
  1232. package/dist/services/voice/transcriber.js +68 -11
  1233. package/dist/settings/runtime-settings.d.ts +52 -8
  1234. package/dist/settings/runtime-settings.js +172 -20
  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 +8 -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/slack-adapter.d.ts.map +0 -1
  1258. package/dist/adapters/slack-adapter.js.map +0 -1
  1259. package/dist/adapters/telegram-adapter.d.ts.map +0 -1
  1260. package/dist/adapters/telegram-adapter.js.map +0 -1
  1261. package/dist/adapters/types.d.ts.map +0 -1
  1262. package/dist/adapters/types.js.map +0 -1
  1263. package/dist/adapters/whatsapp-adapter.d.ts.map +0 -1
  1264. package/dist/adapters/whatsapp-adapter.js.map +0 -1
  1265. package/dist/api/chat-binding-query.d.ts.map +0 -1
  1266. package/dist/api/chat-binding-query.js.map +0 -1
  1267. package/dist/api/chat-session-resume.d.ts.map +0 -1
  1268. package/dist/api/chat-session-resume.js.map +0 -1
  1269. package/dist/api/delegated-proxy-helper.d.ts +0 -33
  1270. package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
  1271. package/dist/api/delegated-proxy-helper.js +0 -54
  1272. package/dist/api/delegated-proxy-helper.js.map +0 -1
  1273. package/dist/api/directory-picker.d.ts.map +0 -1
  1274. package/dist/api/directory-picker.js.map +0 -1
  1275. package/dist/api/env-writer.d.ts.map +0 -1
  1276. package/dist/api/env-writer.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.d.ts.map +0 -1
  1284. package/dist/api/routes/agent.js.map +0 -1
  1285. package/dist/api/routes/apple-calendar.d.ts.map +0 -1
  1286. package/dist/api/routes/apple-calendar.js.map +0 -1
  1287. package/dist/api/routes/attachments.d.ts.map +0 -1
  1288. package/dist/api/routes/attachments.js.map +0 -1
  1289. package/dist/api/routes/backends.d.ts.map +0 -1
  1290. package/dist/api/routes/backends.js.map +0 -1
  1291. package/dist/api/routes/books.d.ts.map +0 -1
  1292. package/dist/api/routes/books.js.map +0 -1
  1293. package/dist/api/routes/calendar.d.ts.map +0 -1
  1294. package/dist/api/routes/calendar.js.map +0 -1
  1295. package/dist/api/routes/commands.d.ts.map +0 -1
  1296. package/dist/api/routes/commands.js.map +0 -1
  1297. package/dist/api/routes/context.d.ts +0 -57
  1298. package/dist/api/routes/context.d.ts.map +0 -1
  1299. package/dist/api/routes/context.js +0 -1788
  1300. package/dist/api/routes/context.js.map +0 -1
  1301. package/dist/api/routes/dashboard.d.ts +0 -29
  1302. package/dist/api/routes/dashboard.d.ts.map +0 -1
  1303. package/dist/api/routes/dashboard.js +0 -2160
  1304. package/dist/api/routes/dashboard.js.map +0 -1
  1305. package/dist/api/routes/delegated-sync.d.ts.map +0 -1
  1306. package/dist/api/routes/delegated-sync.js.map +0 -1
  1307. package/dist/api/routes/delegated.d.ts.map +0 -1
  1308. package/dist/api/routes/delegated.js.map +0 -1
  1309. package/dist/api/routes/docs.d.ts.map +0 -1
  1310. package/dist/api/routes/docs.js.map +0 -1
  1311. package/dist/api/routes/entities.d.ts.map +0 -1
  1312. package/dist/api/routes/entities.js.map +0 -1
  1313. package/dist/api/routes/fs.d.ts.map +0 -1
  1314. package/dist/api/routes/fs.js.map +0 -1
  1315. package/dist/api/routes/fs.logic.d.ts.map +0 -1
  1316. package/dist/api/routes/fs.logic.js.map +0 -1
  1317. package/dist/api/routes/git-accounts.d.ts.map +0 -1
  1318. package/dist/api/routes/git-accounts.js.map +0 -1
  1319. package/dist/api/routes/git-templates.d.ts.map +0 -1
  1320. package/dist/api/routes/git-templates.js.map +0 -1
  1321. package/dist/api/routes/git.d.ts.map +0 -1
  1322. package/dist/api/routes/git.js.map +0 -1
  1323. package/dist/api/routes/github.d.ts.map +0 -1
  1324. package/dist/api/routes/github.js.map +0 -1
  1325. package/dist/api/routes/health.d.ts.map +0 -1
  1326. package/dist/api/routes/health.js.map +0 -1
  1327. package/dist/api/routes/integrations-reconcile.d.ts.map +0 -1
  1328. package/dist/api/routes/integrations-reconcile.js.map +0 -1
  1329. package/dist/api/routes/integrations.d.ts +0 -48
  1330. package/dist/api/routes/integrations.d.ts.map +0 -1
  1331. package/dist/api/routes/integrations.js +0 -1572
  1332. package/dist/api/routes/integrations.js.map +0 -1
  1333. package/dist/api/routes/knowledge.d.ts.map +0 -1
  1334. package/dist/api/routes/knowledge.js.map +0 -1
  1335. package/dist/api/routes/mail.d.ts +0 -39
  1336. package/dist/api/routes/mail.d.ts.map +0 -1
  1337. package/dist/api/routes/mail.js +0 -1472
  1338. package/dist/api/routes/mail.js.map +0 -1
  1339. package/dist/api/routes/managed-tasks.d.ts.map +0 -1
  1340. package/dist/api/routes/managed-tasks.js.map +0 -1
  1341. package/dist/api/routes/mcp.d.ts.map +0 -1
  1342. package/dist/api/routes/mcp.js.map +0 -1
  1343. package/dist/api/routes/metrics.d.ts.map +0 -1
  1344. package/dist/api/routes/metrics.js.map +0 -1
  1345. package/dist/api/routes/notion.d.ts.map +0 -1
  1346. package/dist/api/routes/notion.js.map +0 -1
  1347. package/dist/api/routes/observations.d.ts.map +0 -1
  1348. package/dist/api/routes/observations.js.map +0 -1
  1349. package/dist/api/routes/obsidian.d.ts.map +0 -1
  1350. package/dist/api/routes/obsidian.js.map +0 -1
  1351. package/dist/api/routes/profile-questions.d.ts.map +0 -1
  1352. package/dist/api/routes/profile-questions.js.map +0 -1
  1353. package/dist/api/routes/receipts.d.ts.map +0 -1
  1354. package/dist/api/routes/receipts.js.map +0 -1
  1355. package/dist/api/routes/recurring-schedules.d.ts.map +0 -1
  1356. package/dist/api/routes/recurring-schedules.js.map +0 -1
  1357. package/dist/api/routes/repositories.d.ts.map +0 -1
  1358. package/dist/api/routes/repositories.js.map +0 -1
  1359. package/dist/api/routes/setup-migrate.d.ts.map +0 -1
  1360. package/dist/api/routes/setup-migrate.js.map +0 -1
  1361. package/dist/api/routes/setup.d.ts.map +0 -1
  1362. package/dist/api/routes/setup.js.map +0 -1
  1363. package/dist/api/routes/skill-curation.d.ts.map +0 -1
  1364. package/dist/api/routes/skill-curation.js.map +0 -1
  1365. package/dist/api/routes/skills.d.ts.map +0 -1
  1366. package/dist/api/routes/skills.js.map +0 -1
  1367. package/dist/api/routes/sot-bindings.d.ts.map +0 -1
  1368. package/dist/api/routes/sot-bindings.js.map +0 -1
  1369. package/dist/api/routes/sse.d.ts.map +0 -1
  1370. package/dist/api/routes/sse.js.map +0 -1
  1371. package/dist/api/routes/system.d.ts.map +0 -1
  1372. package/dist/api/routes/system.js.map +0 -1
  1373. package/dist/api/routes/task-flows.d.ts.map +0 -1
  1374. package/dist/api/routes/task-flows.js.map +0 -1
  1375. package/dist/api/routes/travel-bookings.d.ts.map +0 -1
  1376. package/dist/api/routes/travel-bookings.js.map +0 -1
  1377. package/dist/api/routes/travel-time.d.ts +0 -8
  1378. package/dist/api/routes/travel-time.d.ts.map +0 -1
  1379. package/dist/api/routes/travel-time.js +0 -87
  1380. package/dist/api/routes/travel-time.js.map +0 -1
  1381. package/dist/api/routes/triggers.d.ts.map +0 -1
  1382. package/dist/api/routes/triggers.js.map +0 -1
  1383. package/dist/api/routes/voice.d.ts.map +0 -1
  1384. package/dist/api/routes/voice.js.map +0 -1
  1385. package/dist/api/routes/wiki.d.ts.map +0 -1
  1386. package/dist/api/routes/wiki.js.map +0 -1
  1387. package/dist/api/server.d.ts.map +0 -1
  1388. package/dist/api/server.js.map +0 -1
  1389. package/dist/bootstrap/adapters.d.ts.map +0 -1
  1390. package/dist/bootstrap/adapters.js.map +0 -1
  1391. package/dist/bootstrap/catchup.d.ts.map +0 -1
  1392. package/dist/bootstrap/catchup.js.map +0 -1
  1393. package/dist/bootstrap/schedule-helpers.d.ts.map +0 -1
  1394. package/dist/bootstrap/schedule-helpers.js.map +0 -1
  1395. package/dist/bootstrap/services.d.ts.map +0 -1
  1396. package/dist/bootstrap/services.js.map +0 -1
  1397. package/dist/config.d.ts.map +0 -1
  1398. package/dist/config.js.map +0 -1
  1399. package/dist/core/agent-core.d.ts.map +0 -1
  1400. package/dist/core/agent-core.js.map +0 -1
  1401. package/dist/core/alerts.d.ts.map +0 -1
  1402. package/dist/core/alerts.js.map +0 -1
  1403. package/dist/core/atomic-write.d.ts.map +0 -1
  1404. package/dist/core/atomic-write.js.map +0 -1
  1405. package/dist/core/backends/api-key-probe.d.ts.map +0 -1
  1406. package/dist/core/backends/api-key-probe.js.map +0 -1
  1407. package/dist/core/backends/auth-health-monitor.d.ts.map +0 -1
  1408. package/dist/core/backends/auth-health-monitor.js.map +0 -1
  1409. package/dist/core/backends/auth-recovery.d.ts.map +0 -1
  1410. package/dist/core/backends/auth-recovery.js.map +0 -1
  1411. package/dist/core/backends/auth-telemetry.d.ts.map +0 -1
  1412. package/dist/core/backends/auth-telemetry.js.map +0 -1
  1413. package/dist/core/backends/backend-router.d.ts.map +0 -1
  1414. package/dist/core/backends/backend-router.js.map +0 -1
  1415. package/dist/core/backends/claude-auth.d.ts.map +0 -1
  1416. package/dist/core/backends/claude-auth.js.map +0 -1
  1417. package/dist/core/backends/claude-code-core.d.ts.map +0 -1
  1418. package/dist/core/backends/claude-code-core.js.map +0 -1
  1419. package/dist/core/backends/claude-credentials-store.d.ts.map +0 -1
  1420. package/dist/core/backends/claude-credentials-store.js.map +0 -1
  1421. package/dist/core/backends/claude-delegated.d.ts.map +0 -1
  1422. package/dist/core/backends/claude-delegated.js.map +0 -1
  1423. package/dist/core/backends/claude-errors.d.ts.map +0 -1
  1424. package/dist/core/backends/claude-errors.js.map +0 -1
  1425. package/dist/core/backends/claude-probe.d.ts.map +0 -1
  1426. package/dist/core/backends/claude-probe.js.map +0 -1
  1427. package/dist/core/backends/claude-tool-collection.d.ts.map +0 -1
  1428. package/dist/core/backends/claude-tool-collection.js.map +0 -1
  1429. package/dist/core/backends/cli-utils.d.ts.map +0 -1
  1430. package/dist/core/backends/cli-utils.js.map +0 -1
  1431. package/dist/core/backends/codex-core.d.ts.map +0 -1
  1432. package/dist/core/backends/codex-core.js.map +0 -1
  1433. package/dist/core/backends/gemini-cli-core.d.ts.map +0 -1
  1434. package/dist/core/backends/gemini-cli-core.js.map +0 -1
  1435. package/dist/core/backends/idle-watchdog.d.ts.map +0 -1
  1436. package/dist/core/backends/idle-watchdog.js.map +0 -1
  1437. package/dist/core/backends/install-methods.d.ts.map +0 -1
  1438. package/dist/core/backends/install-methods.js.map +0 -1
  1439. package/dist/core/backends/model-registry.d.ts.map +0 -1
  1440. package/dist/core/backends/model-registry.js.map +0 -1
  1441. package/dist/core/backends/plan-presets.d.ts.map +0 -1
  1442. package/dist/core/backends/plan-presets.js.map +0 -1
  1443. package/dist/core/backends/price-fetcher.d.ts.map +0 -1
  1444. package/dist/core/backends/price-fetcher.js.map +0 -1
  1445. package/dist/core/backends/process-config-cascade.d.ts.map +0 -1
  1446. package/dist/core/backends/process-config-cascade.js.map +0 -1
  1447. package/dist/core/backends/prompt-utils.d.ts.map +0 -1
  1448. package/dist/core/backends/prompt-utils.js.map +0 -1
  1449. package/dist/core/backends/proxy-model-registry.d.ts.map +0 -1
  1450. package/dist/core/backends/proxy-model-registry.js.map +0 -1
  1451. package/dist/core/backends/silent-api-error-detector.d.ts.map +0 -1
  1452. package/dist/core/backends/silent-api-error-detector.js.map +0 -1
  1453. package/dist/core/bang-commands/commands-cost.d.ts.map +0 -1
  1454. package/dist/core/bang-commands/commands-cost.js.map +0 -1
  1455. package/dist/core/bang-commands/commands-help.d.ts.map +0 -1
  1456. package/dist/core/bang-commands/commands-help.js.map +0 -1
  1457. package/dist/core/bang-commands/commands-report.d.ts.map +0 -1
  1458. package/dist/core/bang-commands/commands-report.js.map +0 -1
  1459. package/dist/core/bang-commands/commands-stop-start.d.ts.map +0 -1
  1460. package/dist/core/bang-commands/commands-stop-start.js.map +0 -1
  1461. package/dist/core/bang-commands/commands-wiki.d.ts.map +0 -1
  1462. package/dist/core/bang-commands/commands-wiki.js.map +0 -1
  1463. package/dist/core/bang-commands/format-utils.d.ts.map +0 -1
  1464. package/dist/core/bang-commands/format-utils.js.map +0 -1
  1465. package/dist/core/bang-commands/index.d.ts.map +0 -1
  1466. package/dist/core/bang-commands/index.js.map +0 -1
  1467. package/dist/core/bang-commands/registry.d.ts.map +0 -1
  1468. package/dist/core/bang-commands/registry.js.map +0 -1
  1469. package/dist/core/bang-commands/user-commands.d.ts.map +0 -1
  1470. package/dist/core/bang-commands/user-commands.js.map +0 -1
  1471. package/dist/core/channel-timeline.d.ts.map +0 -1
  1472. package/dist/core/channel-timeline.js.map +0 -1
  1473. package/dist/core/character-block.d.ts.map +0 -1
  1474. package/dist/core/character-block.js.map +0 -1
  1475. package/dist/core/context/activity-sources.d.ts.map +0 -1
  1476. package/dist/core/context/activity-sources.js.map +0 -1
  1477. package/dist/core/context/activity-view-reconciler.d.ts.map +0 -1
  1478. package/dist/core/context/activity-view-reconciler.js.map +0 -1
  1479. package/dist/core/context/activity-view-runner.d.ts.map +0 -1
  1480. package/dist/core/context/activity-view-runner.js.map +0 -1
  1481. package/dist/core/context/default-schedules-reconciler.d.ts.map +0 -1
  1482. package/dist/core/context/default-schedules-reconciler.js.map +0 -1
  1483. package/dist/core/context/default-schedules-runner.d.ts.map +0 -1
  1484. package/dist/core/context/default-schedules-runner.js.map +0 -1
  1485. package/dist/core/context/domain-index-reconciler.d.ts.map +0 -1
  1486. package/dist/core/context/domain-index-reconciler.js.map +0 -1
  1487. package/dist/core/context/domain-index-runner.d.ts.map +0 -1
  1488. package/dist/core/context/domain-index-runner.js.map +0 -1
  1489. package/dist/core/context/entity-mirror.d.ts.map +0 -1
  1490. package/dist/core/context/entity-mirror.js.map +0 -1
  1491. package/dist/core/context/entity-source-rename.d.ts.map +0 -1
  1492. package/dist/core/context/entity-source-rename.js.map +0 -1
  1493. package/dist/core/context/index-reconciler.d.ts.map +0 -1
  1494. package/dist/core/context/index-reconciler.js.map +0 -1
  1495. package/dist/core/context/policy-index-reconciler.d.ts.map +0 -1
  1496. package/dist/core/context/policy-index-reconciler.js.map +0 -1
  1497. package/dist/core/context/policy-index-runner.d.ts.map +0 -1
  1498. package/dist/core/context/policy-index-runner.js.map +0 -1
  1499. package/dist/core/context/reconciler-runner.d.ts.map +0 -1
  1500. package/dist/core/context/reconciler-runner.js.map +0 -1
  1501. package/dist/core/context-builder.d.ts.map +0 -1
  1502. package/dist/core/context-builder.js.map +0 -1
  1503. package/dist/core/context-frontmatter-backfill.d.ts +0 -33
  1504. package/dist/core/context-frontmatter-backfill.d.ts.map +0 -1
  1505. package/dist/core/context-frontmatter-backfill.js +0 -111
  1506. package/dist/core/context-frontmatter-backfill.js.map +0 -1
  1507. package/dist/core/context-frontmatter.d.ts.map +0 -1
  1508. package/dist/core/context-frontmatter.js.map +0 -1
  1509. package/dist/core/context-health.d.ts.map +0 -1
  1510. package/dist/core/context-health.js.map +0 -1
  1511. package/dist/core/context-paths.d.ts.map +0 -1
  1512. package/dist/core/context-paths.js.map +0 -1
  1513. package/dist/core/context-staleness.d.ts.map +0 -1
  1514. package/dist/core/context-staleness.js.map +0 -1
  1515. package/dist/core/custom-routine-scheduler.d.ts.map +0 -1
  1516. package/dist/core/custom-routine-scheduler.js.map +0 -1
  1517. package/dist/core/daemon-api-cli.d.ts.map +0 -1
  1518. package/dist/core/daemon-api-cli.js.map +0 -1
  1519. package/dist/core/dashboard-session-cleanup.d.ts.map +0 -1
  1520. package/dist/core/dashboard-session-cleanup.js.map +0 -1
  1521. package/dist/core/dashboard-session-controls.d.ts.map +0 -1
  1522. package/dist/core/dashboard-session-controls.js.map +0 -1
  1523. package/dist/core/delegated-connector-health.d.ts.map +0 -1
  1524. package/dist/core/delegated-connector-health.js.map +0 -1
  1525. package/dist/core/dispatcher-date-utils.d.ts.map +0 -1
  1526. package/dist/core/dispatcher-date-utils.js.map +0 -1
  1527. package/dist/core/dispatcher-error-handling.d.ts.map +0 -1
  1528. package/dist/core/dispatcher-error-handling.js.map +0 -1
  1529. package/dist/core/dispatcher-hourly-check.d.ts.map +0 -1
  1530. package/dist/core/dispatcher-hourly-check.js.map +0 -1
  1531. package/dist/core/dispatcher-message-handler.d.ts.map +0 -1
  1532. package/dist/core/dispatcher-message-handler.js.map +0 -1
  1533. package/dist/core/dispatcher-morning-routine.d.ts.map +0 -1
  1534. package/dist/core/dispatcher-morning-routine.js.map +0 -1
  1535. package/dist/core/dispatcher-prompt.d.ts.map +0 -1
  1536. package/dist/core/dispatcher-prompt.js.map +0 -1
  1537. package/dist/core/dispatcher-repository-helpers.d.ts.map +0 -1
  1538. package/dist/core/dispatcher-repository-helpers.js.map +0 -1
  1539. package/dist/core/dispatcher-result-processor.d.ts.map +0 -1
  1540. package/dist/core/dispatcher-result-processor.js.map +0 -1
  1541. package/dist/core/dispatcher-scheduled-tasks.d.ts.map +0 -1
  1542. package/dist/core/dispatcher-scheduled-tasks.js.map +0 -1
  1543. package/dist/core/dispatcher-types.d.ts.map +0 -1
  1544. package/dist/core/dispatcher-types.js.map +0 -1
  1545. package/dist/core/dispatcher.d.ts.map +0 -1
  1546. package/dist/core/dispatcher.js.map +0 -1
  1547. package/dist/core/dm-freshness-metrics.d.ts.map +0 -1
  1548. package/dist/core/dm-freshness-metrics.js.map +0 -1
  1549. package/dist/core/docs/citation-validator.d.ts.map +0 -1
  1550. package/dist/core/docs/citation-validator.js.map +0 -1
  1551. package/dist/core/docs/extract-terms.d.ts.map +0 -1
  1552. package/dist/core/docs/extract-terms.js.map +0 -1
  1553. package/dist/core/docs/indexer.d.ts.map +0 -1
  1554. package/dist/core/docs/indexer.js.map +0 -1
  1555. package/dist/core/drift-effects.d.ts.map +0 -1
  1556. package/dist/core/drift-effects.js.map +0 -1
  1557. package/dist/core/event-bus.d.ts.map +0 -1
  1558. package/dist/core/event-bus.js.map +0 -1
  1559. package/dist/core/git-project-docs.d.ts.map +0 -1
  1560. package/dist/core/git-project-docs.js.map +0 -1
  1561. package/dist/core/health-monitor.d.ts.map +0 -1
  1562. package/dist/core/health-monitor.js.map +0 -1
  1563. package/dist/core/heartbeat.d.ts.map +0 -1
  1564. package/dist/core/heartbeat.js.map +0 -1
  1565. package/dist/core/integration-health.d.ts.map +0 -1
  1566. package/dist/core/integration-health.js.map +0 -1
  1567. package/dist/core/integration-lifecycle.d.ts.map +0 -1
  1568. package/dist/core/integration-lifecycle.js.map +0 -1
  1569. package/dist/core/integration-main-backend.d.ts.map +0 -1
  1570. package/dist/core/integration-main-backend.js.map +0 -1
  1571. package/dist/core/integration-probe.d.ts.map +0 -1
  1572. package/dist/core/integration-probe.js.map +0 -1
  1573. package/dist/core/management-md-write-lock.d.ts.map +0 -1
  1574. package/dist/core/management-md-write-lock.js.map +0 -1
  1575. package/dist/core/management-md.d.ts.map +0 -1
  1576. package/dist/core/management-md.js.map +0 -1
  1577. package/dist/core/management-registry.d.ts.map +0 -1
  1578. package/dist/core/management-registry.js.map +0 -1
  1579. package/dist/core/management-telemetry.d.ts.map +0 -1
  1580. package/dist/core/management-telemetry.js.map +0 -1
  1581. package/dist/core/message-recorder.d.ts.map +0 -1
  1582. package/dist/core/message-recorder.js.map +0 -1
  1583. package/dist/core/metrics.d.ts.map +0 -1
  1584. package/dist/core/metrics.js.map +0 -1
  1585. package/dist/core/migration-backup.d.ts.map +0 -1
  1586. package/dist/core/migration-backup.js.map +0 -1
  1587. package/dist/core/output-language-policy.d.ts.map +0 -1
  1588. package/dist/core/output-language-policy.js.map +0 -1
  1589. package/dist/core/overview-write-lock.d.ts.map +0 -1
  1590. package/dist/core/overview-write-lock.js.map +0 -1
  1591. package/dist/core/path-compat.d.ts.map +0 -1
  1592. package/dist/core/path-compat.js.map +0 -1
  1593. package/dist/core/path-rewrite.d.ts.map +0 -1
  1594. package/dist/core/path-rewrite.js.map +0 -1
  1595. package/dist/core/policy-files.d.ts.map +0 -1
  1596. package/dist/core/policy-files.js.map +0 -1
  1597. package/dist/core/profile-questions/seed.d.ts.map +0 -1
  1598. package/dist/core/profile-questions/seed.js.map +0 -1
  1599. package/dist/core/profile-questions/slot-filled.d.ts.map +0 -1
  1600. package/dist/core/profile-questions/slot-filled.js.map +0 -1
  1601. package/dist/core/prompts.d.ts.map +0 -1
  1602. package/dist/core/prompts.js.map +0 -1
  1603. package/dist/core/quiet-hours-sync.d.ts.map +0 -1
  1604. package/dist/core/quiet-hours-sync.js.map +0 -1
  1605. package/dist/core/read-sensitive-token-manager.d.ts.map +0 -1
  1606. package/dist/core/read-sensitive-token-manager.js.map +0 -1
  1607. package/dist/core/recurrence.d.ts.map +0 -1
  1608. package/dist/core/recurrence.js.map +0 -1
  1609. package/dist/core/reinstall.d.ts.map +0 -1
  1610. package/dist/core/reinstall.js.map +0 -1
  1611. package/dist/core/release-assets.d.ts.map +0 -1
  1612. package/dist/core/release-assets.js.map +0 -1
  1613. package/dist/core/repository-management-docs.d.ts.map +0 -1
  1614. package/dist/core/repository-management-docs.js.map +0 -1
  1615. package/dist/core/retention.d.ts.map +0 -1
  1616. package/dist/core/retention.js.map +0 -1
  1617. package/dist/core/review-context.d.ts.map +0 -1
  1618. package/dist/core/review-context.js.map +0 -1
  1619. package/dist/core/roadmap-horizon.d.ts.map +0 -1
  1620. package/dist/core/roadmap-horizon.js.map +0 -1
  1621. package/dist/core/roadmap-ids.d.ts.map +0 -1
  1622. package/dist/core/roadmap-ids.js.map +0 -1
  1623. package/dist/core/roadmap-merge.d.ts +0 -7
  1624. package/dist/core/roadmap-merge.d.ts.map +0 -1
  1625. package/dist/core/roadmap-merge.js +0 -187
  1626. package/dist/core/roadmap-merge.js.map +0 -1
  1627. package/dist/core/roadmap-refresh-triggers.d.ts.map +0 -1
  1628. package/dist/core/roadmap-refresh-triggers.js.map +0 -1
  1629. package/dist/core/roadmap-truncate.d.ts.map +0 -1
  1630. package/dist/core/roadmap-truncate.js.map +0 -1
  1631. package/dist/core/roadmap-validate.d.ts.map +0 -1
  1632. package/dist/core/roadmap-validate.js.map +0 -1
  1633. package/dist/core/roadmap-write-lock.d.ts.map +0 -1
  1634. package/dist/core/roadmap-write-lock.js.map +0 -1
  1635. package/dist/core/routine-acquisition-plan.d.ts.map +0 -1
  1636. package/dist/core/routine-acquisition-plan.js.map +0 -1
  1637. package/dist/core/routine-fetch-window-retry.d.ts.map +0 -1
  1638. package/dist/core/routine-fetch-window-retry.js.map +0 -1
  1639. package/dist/core/routine-fetch-window-runner.d.ts.map +0 -1
  1640. package/dist/core/routine-fetch-window-runner.js.map +0 -1
  1641. package/dist/core/routine-windows.d.ts.map +0 -1
  1642. package/dist/core/routine-windows.js.map +0 -1
  1643. package/dist/core/schedule-insert-helper.d.ts.map +0 -1
  1644. package/dist/core/schedule-insert-helper.js.map +0 -1
  1645. package/dist/core/schedule-maintenance.d.ts.map +0 -1
  1646. package/dist/core/schedule-maintenance.js.map +0 -1
  1647. package/dist/core/scheduler.d.ts.map +0 -1
  1648. package/dist/core/scheduler.js.map +0 -1
  1649. package/dist/core/semaphore.d.ts.map +0 -1
  1650. package/dist/core/semaphore.js.map +0 -1
  1651. package/dist/core/session-gate.d.ts.map +0 -1
  1652. package/dist/core/session-gate.js.map +0 -1
  1653. package/dist/core/session-manager.d.ts.map +0 -1
  1654. package/dist/core/session-manager.js.map +0 -1
  1655. package/dist/core/signal-detector.d.ts.map +0 -1
  1656. package/dist/core/signal-detector.js.map +0 -1
  1657. package/dist/core/skeleton.d.ts.map +0 -1
  1658. package/dist/core/skeleton.js.map +0 -1
  1659. package/dist/core/skill-curation/apply-proposal.d.ts.map +0 -1
  1660. package/dist/core/skill-curation/apply-proposal.js.map +0 -1
  1661. package/dist/core/skill-curation/auto-revert.d.ts.map +0 -1
  1662. package/dist/core/skill-curation/auto-revert.js.map +0 -1
  1663. package/dist/core/skill-curation/classify-diff.d.ts.map +0 -1
  1664. package/dist/core/skill-curation/classify-diff.js.map +0 -1
  1665. package/dist/core/skill-curation/declarations.d.ts.map +0 -1
  1666. package/dist/core/skill-curation/declarations.js.map +0 -1
  1667. package/dist/core/skill-curation/knowledge-map.d.ts.map +0 -1
  1668. package/dist/core/skill-curation/knowledge-map.js.map +0 -1
  1669. package/dist/core/skill-curation/orphan-overlay.d.ts.map +0 -1
  1670. package/dist/core/skill-curation/orphan-overlay.js.map +0 -1
  1671. package/dist/core/skill-curation/overlay-store.d.ts.map +0 -1
  1672. package/dist/core/skill-curation/overlay-store.js.map +0 -1
  1673. package/dist/core/skill-curation/render/convention-notes.d.ts.map +0 -1
  1674. package/dist/core/skill-curation/render/convention-notes.js.map +0 -1
  1675. package/dist/core/skill-curation/render/cross-references.d.ts.map +0 -1
  1676. package/dist/core/skill-curation/render/cross-references.js.map +0 -1
  1677. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +0 -1
  1678. package/dist/core/skill-curation/render/frontmatter-schema.js.map +0 -1
  1679. package/dist/core/skill-curation/render/index.d.ts.map +0 -1
  1680. package/dist/core/skill-curation/render/index.js.map +0 -1
  1681. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +0 -1
  1682. package/dist/core/skill-curation/render/knowledge-layout.js.map +0 -1
  1683. package/dist/core/skill-curation/render/routing-table.d.ts.map +0 -1
  1684. package/dist/core/skill-curation/render/routing-table.js.map +0 -1
  1685. package/dist/core/skill-curation/render/search-recipes.d.ts.map +0 -1
  1686. package/dist/core/skill-curation/render/search-recipes.js.map +0 -1
  1687. package/dist/core/skill-curation/run-token.d.ts.map +0 -1
  1688. package/dist/core/skill-curation/run-token.js.map +0 -1
  1689. package/dist/core/skill-curation/signals.d.ts.map +0 -1
  1690. package/dist/core/skill-curation/signals.js.map +0 -1
  1691. package/dist/core/skill-curation/smoke-test.d.ts.map +0 -1
  1692. package/dist/core/skill-curation/smoke-test.js.map +0 -1
  1693. package/dist/core/skill-curation/splicer.d.ts.map +0 -1
  1694. package/dist/core/skill-curation/splicer.js.map +0 -1
  1695. package/dist/core/skill-curation/workdir.d.ts.map +0 -1
  1696. package/dist/core/skill-curation/workdir.js.map +0 -1
  1697. package/dist/core/skill-source-paths.d.ts.map +0 -1
  1698. package/dist/core/skill-source-paths.js.map +0 -1
  1699. package/dist/core/skills-compiler.d.ts.map +0 -1
  1700. package/dist/core/skills-compiler.js.map +0 -1
  1701. package/dist/core/skills-manifest.d.ts.map +0 -1
  1702. package/dist/core/skills-manifest.js.map +0 -1
  1703. package/dist/core/system-reset.d.ts.map +0 -1
  1704. package/dist/core/system-reset.js.map +0 -1
  1705. package/dist/core/template-store.d.ts.map +0 -1
  1706. package/dist/core/template-store.js.map +0 -1
  1707. package/dist/core/template-versions.d.ts.map +0 -1
  1708. package/dist/core/template-versions.js.map +0 -1
  1709. package/dist/core/today-agent-plan.d.ts.map +0 -1
  1710. package/dist/core/today-agent-plan.js.map +0 -1
  1711. package/dist/core/today-direct-writer.d.ts.map +0 -1
  1712. package/dist/core/today-direct-writer.js.map +0 -1
  1713. package/dist/core/today-write-lock.d.ts.map +0 -1
  1714. package/dist/core/today-write-lock.js.map +0 -1
  1715. package/dist/core/trigger-dispatch.d.ts.map +0 -1
  1716. package/dist/core/trigger-dispatch.js.map +0 -1
  1717. package/dist/core/trigger-evaluator.d.ts.map +0 -1
  1718. package/dist/core/trigger-evaluator.js.map +0 -1
  1719. package/dist/core/wiki/approval-queue.d.ts.map +0 -1
  1720. package/dist/core/wiki/approval-queue.js.map +0 -1
  1721. package/dist/core/wiki/bridge.d.ts.map +0 -1
  1722. package/dist/core/wiki/bridge.js.map +0 -1
  1723. package/dist/core/wiki/compile-lock.d.ts.map +0 -1
  1724. package/dist/core/wiki/compile-lock.js.map +0 -1
  1725. package/dist/core/wiki/compile-preview.d.ts.map +0 -1
  1726. package/dist/core/wiki/compile-preview.js.map +0 -1
  1727. package/dist/core/wiki/cost-estimate.d.ts.map +0 -1
  1728. package/dist/core/wiki/cost-estimate.js.map +0 -1
  1729. package/dist/core/wiki/dispatcher.d.ts.map +0 -1
  1730. package/dist/core/wiki/dispatcher.js.map +0 -1
  1731. package/dist/core/wiki/git-precompile.d.ts.map +0 -1
  1732. package/dist/core/wiki/git-precompile.js.map +0 -1
  1733. package/dist/core/wiki/import-migrate.d.ts.map +0 -1
  1734. package/dist/core/wiki/import-migrate.js.map +0 -1
  1735. package/dist/core/wiki/import-probe.d.ts.map +0 -1
  1736. package/dist/core/wiki/import-probe.js.map +0 -1
  1737. package/dist/core/wiki/index-cache.d.ts.map +0 -1
  1738. package/dist/core/wiki/index-cache.js.map +0 -1
  1739. package/dist/core/wiki/multi-url-dispatch.d.ts.map +0 -1
  1740. package/dist/core/wiki/multi-url-dispatch.js.map +0 -1
  1741. package/dist/core/wiki/wiki-fts.d.ts.map +0 -1
  1742. package/dist/core/wiki/wiki-fts.js.map +0 -1
  1743. package/dist/core/wiki/workspaces.d.ts.map +0 -1
  1744. package/dist/core/wiki/workspaces.js.map +0 -1
  1745. package/dist/core/wiki/write-strategy.d.ts.map +0 -1
  1746. package/dist/core/wiki/write-strategy.js.map +0 -1
  1747. package/dist/core/workdir.d.ts.map +0 -1
  1748. package/dist/core/workdir.js.map +0 -1
  1749. package/dist/db/automation-triggers.d.ts.map +0 -1
  1750. package/dist/db/automation-triggers.js.map +0 -1
  1751. package/dist/db/client.d.ts.map +0 -1
  1752. package/dist/db/client.js.map +0 -1
  1753. package/dist/db/entities-store.d.ts.map +0 -1
  1754. package/dist/db/entities-store.js.map +0 -1
  1755. package/dist/db/hourly-check-signals.d.ts.map +0 -1
  1756. package/dist/db/hourly-check-signals.js.map +0 -1
  1757. package/dist/db/integration-probe-store.d.ts.map +0 -1
  1758. package/dist/db/integration-probe-store.js.map +0 -1
  1759. package/dist/db/integrations-store.d.ts.map +0 -1
  1760. package/dist/db/integrations-store.js.map +0 -1
  1761. package/dist/db/managed-tasks-store.d.ts.map +0 -1
  1762. package/dist/db/managed-tasks-store.js.map +0 -1
  1763. package/dist/db/management-parse-failures-store.d.ts.map +0 -1
  1764. package/dist/db/management-parse-failures-store.js.map +0 -1
  1765. package/dist/db/observations.d.ts.map +0 -1
  1766. package/dist/db/observations.js.map +0 -1
  1767. package/dist/db/recurring-schedules.d.ts.map +0 -1
  1768. package/dist/db/recurring-schedules.js.map +0 -1
  1769. package/dist/db/repositories-store.d.ts.map +0 -1
  1770. package/dist/db/repositories-store.js.map +0 -1
  1771. package/dist/db/runtime-state.d.ts.map +0 -1
  1772. package/dist/db/runtime-state.js.map +0 -1
  1773. package/dist/db/schema.d.ts.map +0 -1
  1774. package/dist/db/schema.js.map +0 -1
  1775. package/dist/db/sot-bindings-store.d.ts.map +0 -1
  1776. package/dist/db/sot-bindings-store.js.map +0 -1
  1777. package/dist/db/test-schemas.d.ts +0 -23
  1778. package/dist/db/test-schemas.d.ts.map +0 -1
  1779. package/dist/db/test-schemas.js +0 -111
  1780. package/dist/db/test-schemas.js.map +0 -1
  1781. package/dist/db/voice-transcripts-store.d.ts.map +0 -1
  1782. package/dist/db/voice-transcripts-store.js.map +0 -1
  1783. package/dist/db/wiki-store.d.ts.map +0 -1
  1784. package/dist/db/wiki-store.js.map +0 -1
  1785. package/dist/index.d.ts.map +0 -1
  1786. package/dist/index.js.map +0 -1
  1787. package/dist/init.d.ts.map +0 -1
  1788. package/dist/init.js.map +0 -1
  1789. package/dist/log-buffer.d.ts.map +0 -1
  1790. package/dist/log-buffer.js.map +0 -1
  1791. package/dist/logging.d.ts.map +0 -1
  1792. package/dist/logging.js.map +0 -1
  1793. package/dist/management-rules.d.ts.map +0 -1
  1794. package/dist/management-rules.js.map +0 -1
  1795. package/dist/messaging/constants.d.ts.map +0 -1
  1796. package/dist/messaging/constants.js.map +0 -1
  1797. package/dist/messaging/magic-phrase.d.ts.map +0 -1
  1798. package/dist/messaging/magic-phrase.js.map +0 -1
  1799. package/dist/messaging/owner-channels.d.ts.map +0 -1
  1800. package/dist/messaging/owner-channels.js.map +0 -1
  1801. package/dist/messaging/setup-welcome-dm.d.ts.map +0 -1
  1802. package/dist/messaging/setup-welcome-dm.js.map +0 -1
  1803. package/dist/messaging/url-extract.d.ts.map +0 -1
  1804. package/dist/messaging/url-extract.js.map +0 -1
  1805. package/dist/observers/calendar-poller.d.ts.map +0 -1
  1806. package/dist/observers/calendar-poller.js.map +0 -1
  1807. package/dist/observers/context-index-reconciler-observer.d.ts.map +0 -1
  1808. package/dist/observers/context-index-reconciler-observer.js.map +0 -1
  1809. package/dist/observers/delegated-probe-observer.d.ts.map +0 -1
  1810. package/dist/observers/delegated-probe-observer.js.map +0 -1
  1811. package/dist/observers/delegated-sync-worker.d.ts.map +0 -1
  1812. package/dist/observers/delegated-sync-worker.js.map +0 -1
  1813. package/dist/observers/entity-mirror-observer.d.ts.map +0 -1
  1814. package/dist/observers/entity-mirror-observer.js.map +0 -1
  1815. package/dist/observers/git-delegated-cron.d.ts.map +0 -1
  1816. package/dist/observers/git-delegated-cron.js.map +0 -1
  1817. package/dist/observers/git-event-classifier.d.ts.map +0 -1
  1818. package/dist/observers/git-event-classifier.js.map +0 -1
  1819. package/dist/observers/git-watcher.d.ts.map +0 -1
  1820. package/dist/observers/git-watcher.js.map +0 -1
  1821. package/dist/observers/github-poller-classifier.d.ts.map +0 -1
  1822. package/dist/observers/github-poller-classifier.js.map +0 -1
  1823. package/dist/observers/github-poller.d.ts.map +0 -1
  1824. package/dist/observers/github-poller.js.map +0 -1
  1825. package/dist/observers/imminent-event-scheduler.d.ts.map +0 -1
  1826. package/dist/observers/imminent-event-scheduler.js.map +0 -1
  1827. package/dist/observers/mail-poller.d.ts.map +0 -1
  1828. package/dist/observers/mail-poller.js.map +0 -1
  1829. package/dist/observers/mail-reconciliation.d.ts.map +0 -1
  1830. package/dist/observers/mail-reconciliation.js.map +0 -1
  1831. package/dist/observers/manager.d.ts.map +0 -1
  1832. package/dist/observers/manager.js.map +0 -1
  1833. package/dist/observers/notion-poller.d.ts.map +0 -1
  1834. package/dist/observers/notion-poller.js.map +0 -1
  1835. package/dist/observers/observation-summarizer/index.d.ts.map +0 -1
  1836. package/dist/observers/observation-summarizer/index.js.map +0 -1
  1837. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +0 -1
  1838. package/dist/observers/observation-summarizer/pre-filter.js.map +0 -1
  1839. package/dist/observers/observation-summarizer/response-parser.d.ts.map +0 -1
  1840. package/dist/observers/observation-summarizer/response-parser.js.map +0 -1
  1841. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +0 -1
  1842. package/dist/observers/observation-summarizer/summarizer-client.js.map +0 -1
  1843. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +0 -1
  1844. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +0 -1
  1845. package/dist/observers/observation-summarizer/worker.d.ts.map +0 -1
  1846. package/dist/observers/observation-summarizer/worker.js.map +0 -1
  1847. package/dist/observers/obsidian-watcher.d.ts.map +0 -1
  1848. package/dist/observers/obsidian-watcher.js.map +0 -1
  1849. package/dist/observers/primary-vault-watcher.d.ts.map +0 -1
  1850. package/dist/observers/primary-vault-watcher.js.map +0 -1
  1851. package/dist/observers/repository-management-cron.d.ts.map +0 -1
  1852. package/dist/observers/repository-management-cron.js.map +0 -1
  1853. package/dist/observers/skill-curation-walker.d.ts.map +0 -1
  1854. package/dist/observers/skill-curation-walker.js.map +0 -1
  1855. package/dist/safety/absolute-block-audit.d.ts.map +0 -1
  1856. package/dist/safety/absolute-block-audit.js.map +0 -1
  1857. package/dist/safety/agent-write-tracker.d.ts.map +0 -1
  1858. package/dist/safety/agent-write-tracker.js.map +0 -1
  1859. package/dist/safety/always-disallowed.d.ts.map +0 -1
  1860. package/dist/safety/always-disallowed.js.map +0 -1
  1861. package/dist/safety/audit.d.ts.map +0 -1
  1862. package/dist/safety/audit.js.map +0 -1
  1863. package/dist/safety/integration-write-tracker.d.ts.map +0 -1
  1864. package/dist/safety/integration-write-tracker.js.map +0 -1
  1865. package/dist/safety/risk-classifier.d.ts.map +0 -1
  1866. package/dist/safety/risk-classifier.js.map +0 -1
  1867. package/dist/scheduler/hourly-check-gate.d.ts.map +0 -1
  1868. package/dist/scheduler/hourly-check-gate.js.map +0 -1
  1869. package/dist/secrets/backend-api-key-env.d.ts.map +0 -1
  1870. package/dist/secrets/backend-api-key-env.js.map +0 -1
  1871. package/dist/secrets/codex-home-materializer.d.ts.map +0 -1
  1872. package/dist/secrets/codex-home-materializer.js.map +0 -1
  1873. package/dist/secrets/encrypted-blob-store.d.ts.map +0 -1
  1874. package/dist/secrets/encrypted-blob-store.js.map +0 -1
  1875. package/dist/secrets/platform-secret-store.d.ts.map +0 -1
  1876. package/dist/secrets/platform-secret-store.js.map +0 -1
  1877. package/dist/secrets/redaction.d.ts.map +0 -1
  1878. package/dist/secrets/redaction.js.map +0 -1
  1879. package/dist/secrets/secret-broker.d.ts.map +0 -1
  1880. package/dist/secrets/secret-broker.js.map +0 -1
  1881. package/dist/secrets/secret-names.d.ts.map +0 -1
  1882. package/dist/secrets/secret-names.js.map +0 -1
  1883. package/dist/secrets/secret-store.d.ts.map +0 -1
  1884. package/dist/secrets/secret-store.js.map +0 -1
  1885. package/dist/secrets/types.d.ts.map +0 -1
  1886. package/dist/secrets/types.js.map +0 -1
  1887. package/dist/services/apple-calendar/caldav-client.d.ts.map +0 -1
  1888. package/dist/services/apple-calendar/caldav-client.js.map +0 -1
  1889. package/dist/services/apple-calendar/caldav-codec.d.ts.map +0 -1
  1890. package/dist/services/apple-calendar/caldav-codec.js.map +0 -1
  1891. package/dist/services/apple-calendar/index.d.ts.map +0 -1
  1892. package/dist/services/apple-calendar/index.js.map +0 -1
  1893. package/dist/services/apple-calendar/service.d.ts.map +0 -1
  1894. package/dist/services/apple-calendar/service.js.map +0 -1
  1895. package/dist/services/apple-calendar/types.d.ts.map +0 -1
  1896. package/dist/services/apple-calendar/types.js.map +0 -1
  1897. package/dist/services/attachments/hardlink.d.ts.map +0 -1
  1898. package/dist/services/attachments/hardlink.js.map +0 -1
  1899. package/dist/services/attachments/sanitize.d.ts.map +0 -1
  1900. package/dist/services/attachments/sanitize.js.map +0 -1
  1901. package/dist/services/attachments/store.d.ts.map +0 -1
  1902. package/dist/services/attachments/store.js.map +0 -1
  1903. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +0 -1
  1904. package/dist/services/calendar/outlook/graph-calendar-client.js.map +0 -1
  1905. package/dist/services/calendar.d.ts.map +0 -1
  1906. package/dist/services/calendar.js.map +0 -1
  1907. package/dist/services/delegated-backend-invoker.d.ts.map +0 -1
  1908. package/dist/services/delegated-backend-invoker.js.map +0 -1
  1909. package/dist/services/delegated-invoker-audit.d.ts.map +0 -1
  1910. package/dist/services/delegated-invoker-audit.js.map +0 -1
  1911. package/dist/services/delegated-invoker-cache-hits.d.ts.map +0 -1
  1912. package/dist/services/delegated-invoker-cache-hits.js.map +0 -1
  1913. package/dist/services/delegated-invoker-janitors.d.ts.map +0 -1
  1914. package/dist/services/delegated-invoker-janitors.js.map +0 -1
  1915. package/dist/services/delegated-invoker-utils.d.ts.map +0 -1
  1916. package/dist/services/delegated-invoker-utils.js.map +0 -1
  1917. package/dist/services/delegated-proxy-config.d.ts.map +0 -1
  1918. package/dist/services/delegated-proxy-config.js.map +0 -1
  1919. package/dist/services/delegated-task-result-cache.d.ts.map +0 -1
  1920. package/dist/services/delegated-task-result-cache.js.map +0 -1
  1921. package/dist/services/delegated-task-runtime.d.ts.map +0 -1
  1922. package/dist/services/delegated-task-runtime.js.map +0 -1
  1923. package/dist/services/delegated-task-session-pool.d.ts.map +0 -1
  1924. package/dist/services/delegated-task-session-pool.js.map +0 -1
  1925. package/dist/services/delegated-tool-runtime.d.ts.map +0 -1
  1926. package/dist/services/delegated-tool-runtime.js.map +0 -1
  1927. package/dist/services/fts5.d.ts.map +0 -1
  1928. package/dist/services/fts5.js.map +0 -1
  1929. package/dist/services/git-account-registry.d.ts.map +0 -1
  1930. package/dist/services/git-account-registry.js.map +0 -1
  1931. package/dist/services/github.d.ts.map +0 -1
  1932. package/dist/services/github.js.map +0 -1
  1933. package/dist/services/gmail-classifier.d.ts.map +0 -1
  1934. package/dist/services/gmail-classifier.js.map +0 -1
  1935. package/dist/services/gmail.d.ts.map +0 -1
  1936. package/dist/services/gmail.js.map +0 -1
  1937. package/dist/services/google-auth.d.ts.map +0 -1
  1938. package/dist/services/google-auth.js.map +0 -1
  1939. package/dist/services/google-maps.d.ts +0 -35
  1940. package/dist/services/google-maps.d.ts.map +0 -1
  1941. package/dist/services/google-maps.js +0 -82
  1942. package/dist/services/google-maps.js.map +0 -1
  1943. package/dist/services/integrations/extract-write-item-id.d.ts.map +0 -1
  1944. package/dist/services/integrations/extract-write-item-id.js.map +0 -1
  1945. package/dist/services/integrations/reconcile.d.ts.map +0 -1
  1946. package/dist/services/integrations/reconcile.js.map +0 -1
  1947. package/dist/services/integrations/snapshot-partitions.d.ts.map +0 -1
  1948. package/dist/services/integrations/snapshot-partitions.js.map +0 -1
  1949. package/dist/services/journal/render.d.ts.map +0 -1
  1950. package/dist/services/journal/render.js.map +0 -1
  1951. package/dist/services/journal/writer.d.ts.map +0 -1
  1952. package/dist/services/journal/writer.js.map +0 -1
  1953. package/dist/services/mail/account-registry.d.ts.map +0 -1
  1954. package/dist/services/mail/account-registry.js.map +0 -1
  1955. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +0 -1
  1956. package/dist/services/mail/gmail/auth-failure-classifier.js.map +0 -1
  1957. package/dist/services/mail/gmail/gmail-provider.d.ts.map +0 -1
  1958. package/dist/services/mail/gmail/gmail-provider.js.map +0 -1
  1959. package/dist/services/mail/gmail/legacy-row.d.ts.map +0 -1
  1960. package/dist/services/mail/gmail/legacy-row.js.map +0 -1
  1961. package/dist/services/mail/gmail/poll-cursor.d.ts.map +0 -1
  1962. package/dist/services/mail/gmail/poll-cursor.js.map +0 -1
  1963. package/dist/services/mail/html-to-plaintext.d.ts.map +0 -1
  1964. package/dist/services/mail/html-to-plaintext.js.map +0 -1
  1965. package/dist/services/mail/imap/app-password.d.ts.map +0 -1
  1966. package/dist/services/mail/imap/app-password.js.map +0 -1
  1967. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +0 -1
  1968. package/dist/services/mail/imap/auth-failure-classifier.js.map +0 -1
  1969. package/dist/services/mail/imap/capabilities.d.ts.map +0 -1
  1970. package/dist/services/mail/imap/capabilities.js.map +0 -1
  1971. package/dist/services/mail/imap/client.d.ts.map +0 -1
  1972. package/dist/services/mail/imap/client.js.map +0 -1
  1973. package/dist/services/mail/imap/cursor.d.ts.map +0 -1
  1974. package/dist/services/mail/imap/cursor.js.map +0 -1
  1975. package/dist/services/mail/imap/folder-resolver.d.ts.map +0 -1
  1976. package/dist/services/mail/imap/folder-resolver.js.map +0 -1
  1977. package/dist/services/mail/imap/icloud-provider.d.ts.map +0 -1
  1978. package/dist/services/mail/imap/icloud-provider.js.map +0 -1
  1979. package/dist/services/mail/imap/imap-provider-base.d.ts.map +0 -1
  1980. package/dist/services/mail/imap/imap-provider-base.js.map +0 -1
  1981. package/dist/services/mail/imap/query-translator.d.ts.map +0 -1
  1982. package/dist/services/mail/imap/query-translator.js.map +0 -1
  1983. package/dist/services/mail/imap/reconcile-planner.d.ts.map +0 -1
  1984. package/dist/services/mail/imap/reconcile-planner.js.map +0 -1
  1985. package/dist/services/mail/imap/reply-mime.d.ts.map +0 -1
  1986. package/dist/services/mail/imap/reply-mime.js.map +0 -1
  1987. package/dist/services/mail/imap/yahoo-provider.d.ts.map +0 -1
  1988. package/dist/services/mail/imap/yahoo-provider.js.map +0 -1
  1989. package/dist/services/mail/mail-search.d.ts.map +0 -1
  1990. package/dist/services/mail/mail-search.js.map +0 -1
  1991. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +0 -1
  1992. package/dist/services/mail/outlook/auth-failure-classifier.js.map +0 -1
  1993. package/dist/services/mail/outlook/client-config.d.ts.map +0 -1
  1994. package/dist/services/mail/outlook/client-config.js.map +0 -1
  1995. package/dist/services/mail/outlook/delta-cursor.d.ts.map +0 -1
  1996. package/dist/services/mail/outlook/delta-cursor.js.map +0 -1
  1997. package/dist/services/mail/outlook/graph-client.d.ts.map +0 -1
  1998. package/dist/services/mail/outlook/graph-client.js.map +0 -1
  1999. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +0 -1
  2000. package/dist/services/mail/outlook/msal-app-factory.js.map +0 -1
  2001. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +0 -1
  2002. package/dist/services/mail/outlook/msal-cache-plugin.js.map +0 -1
  2003. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +0 -1
  2004. package/dist/services/mail/outlook/oauth-device-code.js.map +0 -1
  2005. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +0 -1
  2006. package/dist/services/mail/outlook/oauth-loopback.js.map +0 -1
  2007. package/dist/services/mail/outlook/outlook-provider.d.ts.map +0 -1
  2008. package/dist/services/mail/outlook/outlook-provider.js.map +0 -1
  2009. package/dist/services/mail/outlook/query-translator.d.ts.map +0 -1
  2010. package/dist/services/mail/outlook/query-translator.js.map +0 -1
  2011. package/dist/services/mail/provider.d.ts.map +0 -1
  2012. package/dist/services/mail/provider.js.map +0 -1
  2013. package/dist/services/mail/query-utils.d.ts.map +0 -1
  2014. package/dist/services/mail/query-utils.js.map +0 -1
  2015. package/dist/services/mail-classifier.d.ts.map +0 -1
  2016. package/dist/services/mail-classifier.js.map +0 -1
  2017. package/dist/services/mail-ingestion.d.ts.map +0 -1
  2018. package/dist/services/mail-ingestion.js.map +0 -1
  2019. package/dist/services/mcp/auto-probe.d.ts.map +0 -1
  2020. package/dist/services/mcp/auto-probe.js.map +0 -1
  2021. package/dist/services/mcp/generators/claude.d.ts.map +0 -1
  2022. package/dist/services/mcp/generators/claude.js.map +0 -1
  2023. package/dist/services/mcp/generators/codex.d.ts.map +0 -1
  2024. package/dist/services/mcp/generators/codex.js.map +0 -1
  2025. package/dist/services/mcp/generators/gemini.d.ts.map +0 -1
  2026. package/dist/services/mcp/generators/gemini.js.map +0 -1
  2027. package/dist/services/mcp/generators/index.d.ts.map +0 -1
  2028. package/dist/services/mcp/generators/index.js.map +0 -1
  2029. package/dist/services/mcp/generators/types.d.ts.map +0 -1
  2030. package/dist/services/mcp/generators/types.js.map +0 -1
  2031. package/dist/services/mcp/probe.d.ts.map +0 -1
  2032. package/dist/services/mcp/probe.js.map +0 -1
  2033. package/dist/services/mcp/registry.d.ts.map +0 -1
  2034. package/dist/services/mcp/registry.js.map +0 -1
  2035. package/dist/services/mcp/risk.d.ts.map +0 -1
  2036. package/dist/services/mcp/risk.js.map +0 -1
  2037. package/dist/services/mcp/session-materializer.d.ts.map +0 -1
  2038. package/dist/services/mcp/session-materializer.js.map +0 -1
  2039. package/dist/services/mcp/tool-audit.d.ts.map +0 -1
  2040. package/dist/services/mcp/tool-audit.js.map +0 -1
  2041. package/dist/services/mcp/types.d.ts.map +0 -1
  2042. package/dist/services/mcp/types.js.map +0 -1
  2043. package/dist/services/notion.d.ts.map +0 -1
  2044. package/dist/services/notion.js.map +0 -1
  2045. package/dist/services/obsidian.d.ts.map +0 -1
  2046. package/dist/services/obsidian.js.map +0 -1
  2047. package/dist/services/service-registry.d.ts.map +0 -1
  2048. package/dist/services/service-registry.js.map +0 -1
  2049. package/dist/services/voice/transcriber-impl.d.ts.map +0 -1
  2050. package/dist/services/voice/transcriber-impl.js.map +0 -1
  2051. package/dist/services/voice/transcriber.d.ts.map +0 -1
  2052. package/dist/services/voice/transcriber.js.map +0 -1
  2053. package/dist/settings/runtime-settings.d.ts.map +0 -1
  2054. package/dist/settings/runtime-settings.js.map +0 -1
  2055. package/dist/settings/settings-store.d.ts.map +0 -1
  2056. package/dist/settings/settings-store.js.map +0 -1
@@ -1,1788 +0,0 @@
1
- import { Hono } from "hono";
2
- import { readFileSync, existsSync, statSync, readdirSync, unlinkSync, realpathSync, lstatSync, readlinkSync, } from "node:fs";
3
- import { basename, join, dirname, resolve, relative, isAbsolute } from "node:path";
4
- import { writeFileAtomically } from "../../core/atomic-write.js";
5
- import { contextPutSchema, contextPatchSchema, getAgentDayDateStr, localDateStr, nowInTimezone, } from "@aitne/shared";
6
- import { getContextDir } from "../../config.js";
7
- import { getDegradedMode } from "../../db/runtime-state.js";
8
- import { InMemoryTodayWriteLockManager, getTodayWriteLockTimeoutMs, } from "../../core/today-write-lock.js";
9
- import { InMemoryRoadmapWriteLockManager, getRoadmapWriteLockTimeoutMs, } from "../../core/roadmap-write-lock.js";
10
- import { CONTEXT_BASE_FILE_STEMS, CONTEXT_FILE_EXTENSIONS, } from "../../core/context-paths.js";
11
- import { REPAIRABLE_STUB_TARGETS, buildContextHealthReport, normalizeRepairStubPath, } from "../../core/context-health.js";
12
- import { validateContextFileFrontmatter } from "../../core/context-frontmatter.js";
13
- import { classifyContextWriteStaleness } from "../../core/context-staleness.js";
14
- import { resolveTemplatesRoot } from "../../core/skeleton.js";
15
- import { parseCustomRoutineSpec, } from "../../core/custom-routine-scheduler.js";
16
- import { normalizeRoadmapForWrite, validateRoadmap, validateRoadmapTransition, } from "../../core/roadmap-validate.js";
17
- import { isValidYmd, } from "../../core/roadmap-horizon.js";
18
- import { extractRoadmapIds, generateRoadmapId, RoadmapIdGenerationError, } from "../../core/roadmap-ids.js";
19
- import { buildTodayAgentPlanMetadata, extractTodayAgentPlanRows, extractTodayDate, readTodayAgentPlanMetadata, } from "../../core/today-agent-plan.js";
20
- import { createLogger } from "../../logging.js";
21
- import { readJsonBody } from "../json-body.js";
22
- const logger = createLogger("context-api");
23
- const CONTEXT_BASE_FILE_STEM_SET = new Set(CONTEXT_BASE_FILE_STEMS);
24
- function resolveContextTarget(userPath) {
25
- for (const ext of CONTEXT_FILE_EXTENSIONS) {
26
- if (userPath.endsWith(ext)) {
27
- return { base: userPath.slice(0, -ext.length), ext };
28
- }
29
- }
30
- if (CONTEXT_BASE_FILE_STEM_SET.has(userPath)) {
31
- return { base: userPath, ext: ".base" };
32
- }
33
- return { base: userPath, ext: ".md" };
34
- }
35
- function normalizeContextPath(userPath) {
36
- return resolveContextTarget(userPath).base;
37
- }
38
- /**
39
- * Subpath prefixes inside contextDir that the API never exposes.
40
- * Relative paths from `path.relative` never contain a trailing slash for
41
- * the leaf element, so we match on "<name>" exactly OR "<name>/" prefix.
42
- *
43
- * - `.git` — local repo artifacts the daemon must not touch
44
- * - `.DS_Store` — macOS filesystem cruft
45
- * - `.obsidian` — Obsidian's own state directory
46
- *
47
- * `.obsidian` stays denied in every mode. `vaultMode="obsidian"` means the
48
- * directory may exist on disk and should be preserved by the daemon, not that
49
- * the agent may read or edit Obsidian's workspace state through this API.
50
- */
51
- const DENIED_SUBPATH_ROOTS = [".git", ".DS_Store", ".obsidian"];
52
- function isDeniedPath(relativePath) {
53
- for (const root of DENIED_SUBPATH_ROOTS) {
54
- if (relativePath === root || relativePath.startsWith(`${root}/`)) {
55
- return true;
56
- }
57
- }
58
- return false;
59
- }
60
- function escapesBase(base, candidate) {
61
- const rel = relative(base, candidate);
62
- return rel.startsWith("..") || isAbsolute(rel);
63
- }
64
- function resolveRealPathBestEffort(path, seen = new Set()) {
65
- const abs = resolve(path);
66
- try {
67
- const stat = lstatSync(abs);
68
- if (stat.isSymbolicLink()) {
69
- if (seen.has(abs))
70
- return null;
71
- seen.add(abs);
72
- const target = readlinkSync(abs);
73
- return resolveRealPathBestEffort(isAbsolute(target) ? target : resolve(dirname(abs), target), seen);
74
- }
75
- return realpathSync(abs);
76
- }
77
- catch {
78
- const parent = dirname(abs);
79
- if (parent === abs)
80
- return abs;
81
- const parentReal = resolveRealPathBestEffort(parent, seen);
82
- return parentReal ? resolve(parentReal, basename(abs)) : null;
83
- }
84
- }
85
- /**
86
- * Resolve a user-supplied path safely within contextDir.
87
- * Accepts paths with or without the trailing `.md` / `.base` extension.
88
- * Returns null if the resolved path escapes contextDir (path traversal),
89
- * targets a reserved `.base` stem with the wrong extension, or is on the
90
- * deny list.
91
- */
92
- function safePath(contextDir, userPath) {
93
- const { base, ext } = resolveContextTarget(userPath);
94
- if (base === "projects/_active" && ext !== ".base") {
95
- logger.warn({ userPath, base, ext }, "Base file requested with wrong extension");
96
- return null;
97
- }
98
- const resolved = resolve(contextDir, `${base}${ext}`);
99
- const rel = relative(contextDir, resolved);
100
- // Reject if path escapes contextDir (starts with .. or is absolute)
101
- if (escapesBase(contextDir, resolved)) {
102
- logger.warn({ userPath, resolved }, "Path traversal rejected");
103
- return null;
104
- }
105
- if (isDeniedPath(rel)) {
106
- logger.warn({ userPath, resolved }, "Denied subpath rejected");
107
- return null;
108
- }
109
- const contextReal = resolveRealPathBestEffort(contextDir);
110
- const resolvedReal = resolveRealPathBestEffort(resolved);
111
- if (!contextReal || !resolvedReal) {
112
- logger.warn({ userPath, resolved }, "Realpath resolution rejected");
113
- return null;
114
- }
115
- if (escapesBase(contextReal, resolvedReal)) {
116
- logger.warn({ userPath, resolved, resolvedReal }, "Symlink traversal rejected");
117
- return null;
118
- }
119
- const realRel = relative(contextReal, resolvedReal);
120
- if (isDeniedPath(realRel)) {
121
- logger.warn({ userPath, resolved, resolvedReal }, "Denied realpath rejected");
122
- return null;
123
- }
124
- return resolved;
125
- }
126
- // B-007 §5.1 — write-permission whitelist for the new layout.
127
- const CONTEXT_WRITE_PERMISSIONS = {
128
- // Top-level survivors.
129
- today: ["PUT", "PATCH"],
130
- yesterday: ["PUT", "PATCH"],
131
- roadmap: ["PUT", "PATCH"],
132
- _index: ["PUT", "PATCH"],
133
- "context-index": ["PUT", "PATCH"],
134
- // user/* covers fixed area files AND the §5.5 growth pattern
135
- // (e.g. `user/health/sleep-log.md` after an area promotion).
136
- "user/*": ["PUT", "PATCH"],
137
- // Natural-language rulebooks — §5.8.
138
- "rules/_index": ["PUT", "PATCH"],
139
- // DELETE intentionally omitted. Policy files under `rules/policies/`
140
- // use `status: removed` in lieu of physical deletion so the captured
141
- // history (origin DM, why, linked routine) survives. See
142
- // MANAGEMENT-POLICY-CAPTURE-PLAN.md §4.6 / §5.1.
143
- "rules/*": ["PUT", "PATCH"],
144
- "routines/_index": ["PUT", "PATCH"],
145
- "routines/*": ["PUT", "PATCH"],
146
- // B-007 §5.8 Q3 — custom routines support DELETE so the agent can
147
- // retire a routine when the user asks via DM. The scheduler re-reads
148
- // the directory via `onCustomRoutinesChanged` and unregisters the
149
- // cron job on the next reload pass.
150
- "routines/custom/*": ["PUT", "PATCH", "DELETE"],
151
- // Projects (`.base` permitted via CONTEXT_FILE_EXTENSIONS).
152
- "projects/_index": ["PUT", "PATCH"],
153
- "projects/_active": ["PUT"],
154
- "projects/*": ["PUT", "PATCH"],
155
- // Lightweight registry for watched git repos that are not promoted to a
156
- // full project page.
157
- // @deprecated Pre-cutover layout (see docs/design/appendices/unified-repositories.md);
158
- // retained for transitional reads of legacy files. New writes route to
159
- // `git/<slug>/{overview,journal/<YYYY-MM-DD>}`.
160
- "git-repos/*": ["PUT", "PATCH"],
161
- // Unified repositories — per-repo project overview + per-day journal.
162
- // The two specific patterns below carry write permission; arbitrary
163
- // paths under `git/` are NOT writable to keep the layout disciplined.
164
- // See docs/design/appendices/unified-repositories.md §4.5.
165
- "git/{slug}/overview": ["PUT", "PATCH"],
166
- "git/{slug}/journal/{date}": ["PUT", "PATCH"],
167
- // Journal & reviews.
168
- "daily/*": ["PUT", "PATCH"],
169
- "weekly/*": ["PUT", "PATCH"],
170
- "monthly/*": ["PUT", "PATCH"],
171
- // Dossiers + inbox + agent self-areas.
172
- "dossiers/_index": ["PUT", "PATCH"],
173
- "dossiers/*": ["PUT", "PATCH"],
174
- // B-007 §5.9 Step 4 / §5.3 — morning routine triages each inbox file and
175
- // moves the original to `agent/scratch/inbox-YYYY-MM-DD-*.md`. Both sides
176
- // of the move need DELETE: inbox for the post-triage cleanup, scratch for
177
- // the eventual 48h TTL retention sweep (§6.5).
178
- "inbox/*": ["PUT", "PATCH", "DELETE"],
179
- "agent/journal": ["PUT", "PATCH"],
180
- "agent/scratch/*": ["PUT", "PATCH", "DELETE"],
181
- };
182
- /**
183
- * Paths where PUT is only allowed when the file does not yet exist.
184
- * Subsequent writes must go through PATCH (append). This enforces the
185
- * append-only contract at the API level rather than relying on prompt
186
- * compliance alone.
187
- */
188
- const CREATE_ONLY_PUT = new Set(["agent/journal"]);
189
- /**
190
- * Slug regex shared by `{slug}` and `{date}` placeholders. Matches the
191
- * sanitized output of `deriveSlug` (a-z, 0-9, dot, underscore, dash) and
192
- * `YYYY-MM-DD` date strings without further validation — the route
193
- * handler does the canonical date validation when it parses the URL.
194
- */
195
- const PLACEHOLDER_SEGMENT_RE = /^[a-z0-9._-]+$/;
196
- function patternToRegex(pattern) {
197
- // Escape regex metachars except the placeholder syntax we control.
198
- const escaped = pattern.replace(/[.+^$()|\\]/g, "\\$&");
199
- // `{name}` → one allowed segment.
200
- const withSegments = escaped.replace(/\\?\{[^}]+\\?\}/g, "[a-z0-9._-]+");
201
- // `/*` at end → exactly one trailing segment.
202
- const withTail = withSegments.replace(/\/\*$/, "/[^/]+");
203
- return new RegExp("^" + withTail + "$");
204
- }
205
- function isWriteAllowed(path, method) {
206
- // Check exact match first
207
- if (CONTEXT_WRITE_PERMISSIONS[path]?.includes(method))
208
- return true;
209
- // Check wildcard patterns
210
- for (const [pattern, methods] of Object.entries(CONTEXT_WRITE_PERMISSIONS)) {
211
- if (!methods.includes(method))
212
- continue;
213
- if (pattern.endsWith("/*")) {
214
- const prefix = pattern.slice(0, -2);
215
- if (path.startsWith(prefix + "/")) {
216
- return true;
217
- }
218
- }
219
- if (pattern.includes("{")) {
220
- if (patternToRegex(pattern).test(path)) {
221
- // Defense-in-depth: each replaced placeholder must match the
222
- // sanitized form. The regex already enforces that, but we
223
- // double-check the character set explicitly so a future
224
- // pattern with `{slug}` mid-string can't drift.
225
- const segments = path.split("/");
226
- const patternSegments = pattern.split("/");
227
- /* c8 ignore next 2 — segment-length mismatch after a regex match is
228
- * unreachable: patternToRegex already validates the full path structure. */
229
- if (segments.length !== patternSegments.length)
230
- continue;
231
- let allValid = true;
232
- for (let i = 0; i < segments.length; i++) {
233
- const lit = patternSegments[i];
234
- if (lit.startsWith("{") && lit.endsWith("}")) {
235
- if (!PLACEHOLDER_SEGMENT_RE.test(segments[i])) {
236
- allValid = false;
237
- break;
238
- }
239
- }
240
- else /* c8 ignore next 2 — literal mismatch after a full-pattern regex match
241
- * is unreachable: the regex enforces exact literal equality. */ if (lit !== segments[i]) {
242
- allValid = false;
243
- break;
244
- }
245
- }
246
- if (allValid)
247
- return true;
248
- }
249
- }
250
- }
251
- return false;
252
- }
253
- /**
254
- * Determine if a context file change should trigger a prompt context
255
- * refresh consideration. The staleness classifier decides whether the
256
- * matching write is loud enough to invalidate active DM sessions.
257
- *
258
- * B-007 §5.1 — user/profile.md is refreshed on PUT only (setup writes
259
- * the full file) but NOT on PATCH (SignalDetector appends to Raw Signals
260
- * frequently — refreshing on every append would thrash the owner session).
261
- *
262
- * The setup.initial PUT fires this, but it does NOT destroy the in-flight
263
- * setup conversation — the `onPromptContextChanged` handler in index.ts
264
- * skips `markActiveDmSessionsStale` while `currentSetupMode` is active.
265
- */
266
- function shouldRefreshPromptContext(path, method) {
267
- if (path === "today" ||
268
- path === "roadmap" ||
269
- path === "context-index") {
270
- return true;
271
- }
272
- // B-007 — any rules/*.md file feeds the policy-files injection hub, so
273
- // edits to any of them should invalidate the owner-session prompt cache.
274
- // Routine rulebooks (`routines/*.md`) similarly drive task-flow prompts.
275
- if (path.startsWith("rules/") || path.startsWith("routines/")) {
276
- return true;
277
- }
278
- if (path.startsWith("dossiers/")) {
279
- return true;
280
- }
281
- if (path === "user/profile" && method === "PUT") {
282
- return true;
283
- }
284
- return false;
285
- }
286
- function notifyPromptContextChanged(deps, path, reason, input) {
287
- const classification = classifyContextWriteStaleness(input);
288
- deps.onPromptContextChanged?.(path, reason, classification.tier, {
289
- tierReason: classification.tierReason,
290
- });
291
- // STAGE-C-DM-FRESHNESS-PLAN §Task 4 — record the staleness tier in
292
- // `agent_actions` so the dashboard's `dm_freshness_metrics` view can
293
- // count loud vs. quiet writes that landed within a DM session's
294
- // lifetime. Best-effort: a failure here must not break the write.
295
- try {
296
- deps.db
297
- .prepare(`INSERT INTO agent_actions (action_type, trigger, result, detail, started_at, completed_at)
298
- VALUES ('context_write', 'reactive', 'success', json(?), datetime('now'), datetime('now'))`)
299
- .run(JSON.stringify({
300
- path,
301
- method: input.method,
302
- tier: classification.tier,
303
- tierReason: classification.tierReason,
304
- reason,
305
- }));
306
- }
307
- catch (err) {
308
- /* c8 ignore next 5 — DB INSERT failure inside a best-effort audit path;
309
- * triggering requires closing the DB mid-request, which destroys the
310
- * test harness. */
311
- logger.warn({ err, path, method: input.method }, "Failed to record context_write agent_actions row (Stage C metrics)");
312
- }
313
- }
314
- /**
315
- * Normalize a section name for matching:
316
- * lowercase, spaces → underscores, strip leading ##
317
- */
318
- function normalizeSection(name) {
319
- return name
320
- .replace(/^#+\s*/, "")
321
- .toLowerCase()
322
- .replace(/\s+/g, "_");
323
- }
324
- /**
325
- * Find a section in markdown content and return its boundaries.
326
- * Returns [startOfBody, endOfBody] where body is between this ## and next ##.
327
- */
328
- function findSection(content, sectionName) {
329
- const normalized = normalizeSection(sectionName);
330
- const lines = content.split("\n");
331
- let sectionStart = -1;
332
- let headerEnd = -1;
333
- for (let i = 0; i < lines.length; i++) {
334
- if (lines[i].startsWith("## ")) {
335
- const lineNormalized = normalizeSection(lines[i]);
336
- if (lineNormalized === normalized) {
337
- sectionStart = i;
338
- const lineStart = sumLength(lines, i);
339
- const nlPos = content.indexOf("\n", lineStart);
340
- // Handle file ending without trailing newline
341
- headerEnd = nlPos === -1 ? content.length : nlPos + 1;
342
- break;
343
- }
344
- }
345
- }
346
- if (sectionStart === -1)
347
- return null;
348
- // Find end: next ## header or EOF
349
- let sectionEnd = content.length;
350
- for (let i = sectionStart + 1; i < lines.length; i++) {
351
- if (lines[i].startsWith("## ")) {
352
- sectionEnd = sumLength(lines, i);
353
- break;
354
- }
355
- }
356
- return { start: headerEnd, end: sectionEnd, headerEnd };
357
- }
358
- function sumLength(lines, upToIndex) {
359
- let len = 0;
360
- for (let i = 0; i < upToIndex; i++) {
361
- len += lines[i].length + 1; // +1 for \n
362
- }
363
- return len;
364
- }
365
- function getAvailableSections(content) {
366
- return content
367
- .split("\n")
368
- .filter((l) => l.startsWith("## "))
369
- .map((l) => normalizeSection(l));
370
- }
371
- /**
372
- * Parse a timestamp from a bullet entry like `- [2026-04-10 02:32:59] ...`
373
- * Returns the timestamp string or null if the line doesn't match.
374
- */
375
- const ENTRY_TIMESTAMP_RE = /^- \[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]/;
376
- function parseEntryTimestamp(line) {
377
- const match = ENTRY_TIMESTAMP_RE.exec(line);
378
- return match ? match[1] : null;
379
- }
380
- /**
381
- * Remove entries whose `- [YYYY-MM-DD HH:MM:SS]` timestamp is ≤ cutoff.
382
- * Non-matching lines (blank lines, continuation lines) are preserved.
383
- * Returns the remaining section body and the count of removed entries.
384
- */
385
- function clearEntriesBefore(sectionBody, cutoff) {
386
- const lines = sectionBody.split("\n");
387
- const kept = [];
388
- let removedCount = 0;
389
- let skipContinuation = false;
390
- for (const line of lines) {
391
- const ts = parseEntryTimestamp(line);
392
- if (ts !== null) {
393
- // This is a timestamped entry
394
- if (ts <= cutoff) {
395
- removedCount++;
396
- skipContinuation = true;
397
- continue;
398
- }
399
- skipContinuation = false;
400
- kept.push(line);
401
- }
402
- else if (skipContinuation && (line.startsWith(" ") || line.trim() === "")) {
403
- // Continuation or trailing blank line of a removed entry
404
- continue;
405
- }
406
- else {
407
- skipContinuation = false;
408
- kept.push(line);
409
- }
410
- }
411
- return { remaining: kept.join("\n"), removedCount };
412
- }
413
- /**
414
- * Trim oldest bullet entries (`- ...` lines) from the top of a section
415
- * body to keep at most `maxEntries` entries. Non-bullet lines (blank
416
- * lines, non-`- ` prefixed lines) are preserved.
417
- */
418
- function trimBulletEntries(body, maxEntries) {
419
- const lines = body.split("\n");
420
- // Collect indices of bullet entry start lines
421
- const bulletIndices = [];
422
- for (let i = 0; i < lines.length; i++) {
423
- if (lines[i].startsWith("- ")) {
424
- bulletIndices.push(i);
425
- }
426
- }
427
- const excess = bulletIndices.length - maxEntries;
428
- if (excess <= 0) {
429
- return { body, trimmed: 0 };
430
- }
431
- // Remove the oldest (topmost) `excess` entries and their continuations.
432
- // Also remove blank lines between consecutive removed entries to avoid
433
- // orphaned whitespace accumulating over many trim cycles.
434
- const removeSet = new Set();
435
- for (let i = 0; i < excess; i++) {
436
- const start = bulletIndices[i];
437
- const end = i + 1 < bulletIndices.length ? bulletIndices[i + 1] : lines.length;
438
- for (let j = start; j < end; j++) {
439
- if (j === start || lines[j].startsWith(" ") || lines[j].trim() === "") {
440
- removeSet.add(j);
441
- }
442
- }
443
- }
444
- const kept = lines.filter((_, i) => !removeSet.has(i));
445
- return { body: kept.join("\n"), trimmed: excess };
446
- }
447
- const SNAPSHOT_DEBOUNCE_MS = 5 * 60 * 1000; // 5 minutes
448
- /**
449
- * Cap on the JSON body accepted by the Context PUT/PATCH endpoints.
450
- *
451
- * Real context files are well under this — `today.md` is typically
452
- * ~10 KB at the busiest point of the day, `roadmap.md` runs ~50 KB,
453
- * project pages ~50 KB, and `agent/journal.md` is bounded by the
454
- * retention rollup. 1 MB leaves >10x headroom for legitimate writes
455
- * while preventing a runaway-payload denial-of-service:
456
- *
457
- * - The agent could otherwise be tricked (prompt injection from a
458
- * poisoned email or Obsidian note) into PATCHing a multi-megabyte
459
- * payload, and each PATCH writes a snapshot row in
460
- * `md_file_snapshots`. Snapshots are pruned at 30 days, so a
461
- * burst of large writes can balloon the DB before retention
462
- * catches up.
463
- *
464
- * - 1 MB is an order of magnitude smaller than the attachment route's
465
- * 25 MB cap; context files have no legitimate need to be that big.
466
- *
467
- * Only PUT/PATCH against the wildcard route apply this cap. Smaller
468
- * structured endpoints (lock, archive-today, repair/stub) use
469
- * `readOptionalJsonBody` whose payloads are tiny by construction.
470
- */
471
- const CONTEXT_BODY_MAX_BYTES = 1024 * 1024;
472
- export function createContextRoutes(deps) {
473
- const app = new Hono();
474
- const { db, config, writeTracker } = deps;
475
- // Resolve the context directory at request time rather than closing over
476
- // the startup value. `/api/setup/migrate-context` mutates `config` in
477
- // memory after a successful move, and the Context API must immediately
478
- // follow the new primary-vault path without requiring a daemon restart.
479
- //
480
- // Intentionally omit `db` here: degraded mode is handled by the 503
481
- // middleware below, so once a request reaches a handler we want the
482
- // actual current target path, never the legacy fallback.
483
- const getCurrentContextDir = () => getContextDir(config);
484
- /**
485
- * Management Mode degraded-mode gate (plan §5.4).
486
- * When the primary vault is unreachable, refuse BOTH reads and writes
487
- * with 503 so the agent does not read or write a stale fallback
488
- * location. Checked per-request so lifting degraded mode in the health
489
- * probe takes effect without restart. The lock endpoints under
490
- * `/context/lock/*` also participate: acquiring a lock during degraded
491
- * mode would leave the lock held with no way to write, so we gate them
492
- * too.
493
- */
494
- app.use("/context/*", async (c, next) => {
495
- const state = getDegradedMode(db);
496
- if (state) {
497
- return c.json({
498
- error: "primary_vault_unreachable",
499
- reason: state.reason,
500
- path: state.path,
501
- since: state.since,
502
- }, 503);
503
- }
504
- // Phase 2 — global context-write gate engaged during a
505
- // /api/setup/migrate-context run. Refuses WRITES (not reads)
506
- // because reads against the still-intact source are safe; the
507
- // migration endpoint blocks writes so no handler races the move.
508
- const writeMethods = new Set(["POST", "PUT", "PATCH", "DELETE"]);
509
- if (deps.contextWriteGate?.isEngaged() && writeMethods.has(c.req.method)) {
510
- const gateState = deps.contextWriteGate.getState();
511
- return c.json({
512
- error: "migration_in_progress",
513
- reason: gateState.reason,
514
- since: gateState.since,
515
- }, 503);
516
- }
517
- await next();
518
- });
519
- const morningRoutineLock = deps.morningRoutineLock ??
520
- new InMemoryTodayWriteLockManager(getTodayWriteLockTimeoutMs(config.executeTimeoutMinutes));
521
- const roadmapWriteLock = deps.roadmapWriteLock ??
522
- new InMemoryRoadmapWriteLockManager(getRoadmapWriteLockTimeoutMs(config.executeTimeoutMinutes));
523
- // Per-instance state (not shared across tests)
524
- const lastSnapshotTimes = new Map();
525
- // Mutex for serialized writes
526
- let writeLock = Promise.resolve();
527
- function withWriteLock(fn) {
528
- const prev = writeLock;
529
- let resolve;
530
- writeLock = new Promise((r) => {
531
- resolve = r;
532
- });
533
- return prev.then(() => {
534
- try {
535
- return fn();
536
- }
537
- finally {
538
- resolve();
539
- }
540
- });
541
- }
542
- function saveSnapshot(filePath, content, trigger, force = false, sessionId) {
543
- const now = Date.now();
544
- const lastTime = lastSnapshotTimes.get(filePath) ?? 0;
545
- if (!force && now - lastTime < SNAPSHOT_DEBOUNCE_MS) {
546
- return null;
547
- }
548
- const result = db
549
- .prepare("INSERT INTO md_file_snapshots (file_path, content, trigger, session_id) VALUES (?, ?, ?, ?)")
550
- .run(filePath, content, trigger, sessionId ?? null);
551
- lastSnapshotTimes.set(filePath, now);
552
- return Number(result.lastInsertRowid);
553
- }
554
- function isRoadmapValidationDisabled(path, headerValue) {
555
- return path === "roadmap" && headerValue?.toLowerCase() === "off";
556
- }
557
- function logRoadmapValidationBypass(c, method, path) {
558
- logger.warn({
559
- path,
560
- method,
561
- sessionId: c.req.header("X-Session-Id") ?? null,
562
- caller: c.req.header("X-Caller") ??
563
- c.req.header("X-Agent-Caller") ??
564
- c.req.header("User-Agent") ??
565
- null,
566
- route: c.req.path,
567
- }, "Roadmap validation bypassed by X-Roadmap-Validation: off");
568
- }
569
- function roadmapDefaultLongTermPlanSource(c) {
570
- const caller = (c.req.header("X-Caller") ??
571
- c.req.header("X-Agent-Caller") ??
572
- "").toLowerCase();
573
- return caller.includes("dashboard") ? "dashboard" : "manual";
574
- }
575
- async function readOptionalJsonBody(c) {
576
- const raw = await c.req.text();
577
- if (raw.trim() === "")
578
- return { ok: true, body: {} };
579
- try {
580
- const parsed = JSON.parse(raw);
581
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
582
- return {
583
- ok: false,
584
- response: c.json({
585
- error: "validation_error",
586
- message: "JSON body must be an object.",
587
- }, 400),
588
- };
589
- }
590
- return { ok: true, body: parsed };
591
- }
592
- catch (err) {
593
- const detail = err instanceof Error ? err.message : String(err);
594
- logger.warn({ path: c.req.path, method: c.req.method, detail }, "Request rejected — body is not valid JSON");
595
- return {
596
- ok: false,
597
- response: c.json({ error: "invalid_json_body", message: detail }, 400),
598
- };
599
- }
600
- }
601
- // === Routes registered BEFORE wildcards (Hono matches in registration order) ===
602
- // POST /context/lock/morning-routine — Acquire exclusive lock
603
- app.post("/context/lock/morning-routine", (c) => {
604
- const result = morningRoutineLock.acquire();
605
- if (!result.ok) {
606
- return c.json({ error: "lock_held", holder: result.holder }, 409);
607
- }
608
- return c.json({ status: "acquired", lockId: result.lockId });
609
- });
610
- // DELETE /context/lock/morning-routine — Release exclusive lock
611
- app.delete("/context/lock/morning-routine", async (c) => {
612
- const body = await c.req.json().catch(() => ({}));
613
- const lockId = body.lockId;
614
- if (lockId && morningRoutineLock.release(lockId)) {
615
- return c.json({ status: "released" });
616
- }
617
- return c.json({ error: "lock_not_held" }, 400);
618
- });
619
- // POST /context/lock/roadmap — Acquire exclusive roadmap write lock
620
- // Dispatcher auto-acquires this for `routine.roadmap_refresh`; other
621
- // flows (DM handler via the roadmap skill, evening sweeper) may
622
- // acquire it manually. See ROADMAP-REDESIGN.md §3.6.
623
- app.post("/context/lock/roadmap", (c) => {
624
- const result = roadmapWriteLock.acquire();
625
- if (!result.ok) {
626
- return c.json({ error: "roadmap_write_lock_held", holder: result.holder }, 409);
627
- }
628
- return c.json({ status: "acquired", lockId: result.lockId });
629
- });
630
- // DELETE /context/lock/roadmap — Release the roadmap write lock
631
- app.delete("/context/lock/roadmap", async (c) => {
632
- const body = await c.req.json().catch(() => ({}));
633
- const lockId = body.lockId;
634
- if (lockId && roadmapWriteLock.release(lockId)) {
635
- return c.json({ status: "released" });
636
- }
637
- return c.json({ error: "lock_not_held" }, 400);
638
- });
639
- // POST /context/roadmap/id — Mint a stable daemon-owned roadmap entry id.
640
- app.post("/context/roadmap/id", async (c) => {
641
- if (roadmapWriteLock.getHolder()) {
642
- const lockId = c.req.header("X-Lock-Id");
643
- if (!roadmapWriteLock.isHeldBy(lockId)) {
644
- logger.info({ path: "roadmap" }, "Roadmap id mint rejected — roadmap write lock held");
645
- return c.json({ error: "roadmap_write_lock_held" }, 409);
646
- }
647
- }
648
- const parsedBody = await readOptionalJsonBody(c);
649
- if (!parsedBody.ok)
650
- return parsedBody.response;
651
- const requestedDate = parsedBody.body.creationDate ?? parsedBody.body.sourceDate;
652
- const creationDate = typeof requestedDate === "string"
653
- ? requestedDate
654
- : localDateStr(new Date(), config.timezone || undefined);
655
- if (!isValidYmd(creationDate)) {
656
- return c.json({
657
- error: "validation_error",
658
- message: "creationDate must be YYYY-MM-DD.",
659
- }, 400);
660
- }
661
- return withWriteLock(() => {
662
- const contextDir = getCurrentContextDir();
663
- const fullPath = safePath(contextDir, "roadmap");
664
- if (!fullPath) {
665
- return c.json({ error: "invalid_path", path: "roadmap" }, 400);
666
- }
667
- const content = existsSync(fullPath)
668
- ? readFileSync(fullPath, "utf-8")
669
- : "";
670
- const existingIds = extractRoadmapIds(content).map((ref) => ref.id);
671
- try {
672
- return c.json({
673
- id: generateRoadmapId({
674
- creationDate,
675
- existingIds,
676
- randomBytes: deps.roadmapIdRandomBytes,
677
- }),
678
- });
679
- }
680
- catch (err) {
681
- if (err instanceof RoadmapIdGenerationError) {
682
- return c.json({ error: "roadmap_id_generation_failed" }, 503);
683
- }
684
- throw err;
685
- }
686
- });
687
- });
688
- // POST /context/archive-today — B-007 §5.9 day rotation.
689
- // Before Phase 1 this copied today.md to `schedule/YYYY-MM-DD.md`; that
690
- // mechanical archive has been retired (the synthesized `daily/YYYY-MM-DD.md`
691
- // is now written by the morning routine). The endpoint is kept as the
692
- // agent-triggered rotation that renames `today.md → yesterday.md` and
693
- // returns the previous date so the agent can write the new `today.md`
694
- // in the same flow.
695
- app.post("/context/archive-today", (c) => {
696
- return withWriteLock(() => {
697
- const contextDir = getCurrentContextDir();
698
- const todayPath = join(contextDir, "today.md");
699
- if (!existsSync(todayPath)) {
700
- return c.json({ error: "not_found", path: "today" }, 404);
701
- }
702
- const content = readFileSync(todayPath, "utf-8");
703
- const dateStr = content.match(/^#.*(\d{4}-\d{2}-\d{2})/)?.[1] ??
704
- localDateStr(new Date());
705
- const yesterdayPath = join(contextDir, "yesterday.md");
706
- // Atomic write through O_NOFOLLOW + rename so a symlink swap at
707
- // `yesterday.md` between request validation and the write cannot
708
- // redirect the rotation into an attacker-controlled path. The
709
- // legacy `copyFileSync` would silently follow such a symlink.
710
- writeFileAtomically(yesterdayPath, content);
711
- saveSnapshot("today", content, "rotate-to-yesterday", true);
712
- return c.json({
713
- status: "archived",
714
- archivePath: "yesterday.md",
715
- rotatedFrom: dateStr,
716
- });
717
- });
718
- });
719
- // POST /context/restore-snapshot/:id — restore a prior md_file_snapshots
720
- // row back onto disk. The current on-disk file (if any) is snapshotted
721
- // first so the restore itself is reversible from the Knowledge page.
722
- app.post("/context/restore-snapshot/:id", (c) => {
723
- const id = Number(c.req.param("id"));
724
- if (!Number.isSafeInteger(id) || id <= 0) {
725
- return c.json({ error: "invalid_id" }, 400);
726
- }
727
- const row = db
728
- .prepare("SELECT id, file_path, content FROM md_file_snapshots WHERE id = ?")
729
- .get(id);
730
- if (!row) {
731
- return c.json({ error: "not_found" }, 404);
732
- }
733
- const target = resolveContextTarget(row.file_path);
734
- const path = target.base;
735
- const contextDir = getCurrentContextDir();
736
- const fullPath = safePath(contextDir, row.file_path);
737
- if (!fullPath) {
738
- return c.json({ error: "invalid_path", path }, 400);
739
- }
740
- if (!isWriteAllowed(path, "PUT") && !isWriteAllowed(path, "PATCH")) {
741
- logger.warn({ path, method: "RESTORE" }, "Snapshot restore forbidden");
742
- return c.json({ error: "forbidden", path, method: "RESTORE" }, 403);
743
- }
744
- if (morningRoutineLock.getHolder() && path === "today") {
745
- const lockId = c.req.header("X-Lock-Id");
746
- if (!morningRoutineLock.isHeldBy(lockId)) {
747
- logger.info({ path }, "Snapshot restore rejected — morning routine lock held");
748
- return c.json({ error: "morning_routine_lock_held" }, 409);
749
- }
750
- }
751
- if (roadmapWriteLock.getHolder() && path === "roadmap") {
752
- const lockId = c.req.header("X-Lock-Id");
753
- if (!roadmapWriteLock.isHeldBy(lockId)) {
754
- logger.info({ path }, "Snapshot restore rejected — roadmap write lock held");
755
- return c.json({ error: "roadmap_write_lock_held" }, 409);
756
- }
757
- }
758
- const contentError = validateContextContent(target, row.content, {
759
- skipFrontmatterValidation: true,
760
- });
761
- if (contentError) {
762
- return c.json({ error: "validation_error", message: contentError.message }, contentError.status);
763
- }
764
- return withWriteLock(() => {
765
- let backupSnapshotId = null;
766
- if (existsSync(fullPath)) {
767
- const current = readFileSync(fullPath, "utf-8");
768
- backupSnapshotId = saveSnapshot(path, current, "api_restore_snapshot", true);
769
- }
770
- // writeFileAtomically handles parent-dir creation, refuses to
771
- // follow a symlink at the destination, and renames into place.
772
- writeFileAtomically(fullPath, row.content);
773
- writeTracker?.markWriting(fullPath, row.content);
774
- if (shouldRefreshPromptContext(path, "PUT")) {
775
- notifyPromptContextChanged(deps, path, `context_restore_snapshot:${path}`, { path, method: "RESTORE" });
776
- }
777
- if (path.startsWith("routines/custom/")) {
778
- deps.onCustomRoutinesChanged?.();
779
- }
780
- const writtenStat = statSync(fullPath);
781
- logger.info({
782
- path,
783
- method: "RESTORE",
784
- restoredFromSnapshotId: id,
785
- backupSnapshotId: backupSnapshotId ?? undefined,
786
- }, "Context snapshot restored");
787
- return c.json({
788
- status: "restored",
789
- path,
790
- restoredFromSnapshotId: id,
791
- backupSnapshotId,
792
- lastModified: writtenStat.mtime.toISOString(),
793
- });
794
- });
795
- });
796
- // GET /context/list/:dir — List files in directory
797
- app.get("/context/list/:dir", (c) => {
798
- const dir = c.req.param("dir");
799
- // B-007 §5.1 — canonical listable directories.
800
- const allowedDirs = [
801
- "projects",
802
- "weekly",
803
- "monthly",
804
- "daily",
805
- "user",
806
- "rules",
807
- "routines",
808
- "dossiers",
809
- "git",
810
- "git-repos",
811
- "inbox",
812
- ];
813
- if (!allowedDirs.includes(dir)) {
814
- return c.json({ error: "invalid_directory", allowed: allowedDirs }, 400);
815
- }
816
- const contextDir = getCurrentContextDir();
817
- const dirPath = join(contextDir, dir);
818
- if (!existsSync(dirPath)) {
819
- return c.json({ files: [] });
820
- }
821
- const files = readdirSync(dirPath)
822
- .filter((f) => CONTEXT_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)))
823
- .map((f) => {
824
- const stat = statSync(join(dirPath, f));
825
- return { name: f, lastModified: stat.mtime.toISOString() };
826
- });
827
- // B-007 §5.8 Q3 — surface custom routines so the dashboard routines
828
- // editor sees them alongside the built-ins. `routines/custom/` is the
829
- // only nested directory we need to flatten; other listable dirs are
830
- // flat by design (§5.1).
831
- if (dir === "routines") {
832
- const customDir = join(dirPath, "custom");
833
- if (existsSync(customDir)) {
834
- for (const f of readdirSync(customDir)) {
835
- if (!CONTEXT_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)))
836
- continue;
837
- const stat = statSync(join(customDir, f));
838
- files.push({
839
- name: `custom/${f}`,
840
- lastModified: stat.mtime.toISOString(),
841
- });
842
- }
843
- }
844
- }
845
- // Unified repositories layout (`git/<slug>/overview.md` +
846
- // `git/<slug>/journal/<YYYY-MM-DD>.md`) — surface every per-repo file
847
- // under the `git` listing so the Knowledge page tree shows them.
848
- // Without this the listing only contains files directly under `git/`,
849
- // and the per-slug subdirectories silently drop off the dashboard.
850
- // Mirrors the `routines/custom/` flatten above.
851
- if (dir === "git") {
852
- for (const entry of readdirSync(dirPath, { withFileTypes: true })) {
853
- if (!entry.isDirectory())
854
- continue;
855
- const slug = entry.name;
856
- const slugDir = join(dirPath, slug);
857
- for (const f of readdirSync(slugDir)) {
858
- if (!CONTEXT_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)))
859
- continue;
860
- const stat = statSync(join(slugDir, f));
861
- files.push({
862
- name: `${slug}/${f}`,
863
- lastModified: stat.mtime.toISOString(),
864
- });
865
- }
866
- const journalDir = join(slugDir, "journal");
867
- if (existsSync(journalDir)) {
868
- for (const f of readdirSync(journalDir)) {
869
- if (!CONTEXT_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)))
870
- continue;
871
- const stat = statSync(join(journalDir, f));
872
- files.push({
873
- name: `${slug}/journal/${f}`,
874
- lastModified: stat.mtime.toISOString(),
875
- });
876
- }
877
- }
878
- }
879
- }
880
- // MANAGEMENT-POLICY-CAPTURE-PLAN §4.4.1 step 1 — surface policy files
881
- // under `rules/policies/` flattened into the `rules` listing so the
882
- // `management-policy` skill can use the directory listing as its
883
- // source-of-truth (the agent-maintained `_index.md` is only the
884
- // convenience snapshot). Mirrors the `routines/custom/` flatten above.
885
- if (dir === "rules") {
886
- const policiesDir = join(dirPath, "policies");
887
- if (existsSync(policiesDir)) {
888
- for (const f of readdirSync(policiesDir)) {
889
- if (!CONTEXT_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)))
890
- continue;
891
- const stat = statSync(join(policiesDir, f));
892
- files.push({
893
- name: `policies/${f}`,
894
- lastModified: stat.mtime.toISOString(),
895
- });
896
- }
897
- }
898
- }
899
- return c.json({ files });
900
- });
901
- // GET /context/today/reconciliation — compare open Agent Plan rows with
902
- // pending/running schedules for the same local day. This is intentionally
903
- // diagnostic only: morning routine may write today.md and register schedules
904
- // in separate API calls, so write-time hard failure would create false
905
- // conflicts. The endpoint gives operators and future jobs a server-side
906
- // reconciliation surface.
907
- app.get("/context/today/reconciliation", (c) => {
908
- const contextDir = getCurrentContextDir();
909
- const fullPath = safePath(contextDir, "today");
910
- if (!fullPath) {
911
- return c.json({ error: "invalid_path", path: "today" }, 400);
912
- }
913
- if (!existsSync(fullPath)) {
914
- return c.json({ error: "not_found", path: "today" }, 404);
915
- }
916
- const content = readFileSync(fullPath, "utf-8");
917
- const validationError = validateTodayContent(content);
918
- const todayDate = extractTodayDate(content) ??
919
- localDateStr(new Date(), config.timezone || undefined);
920
- const openRows = extractTodayAgentPlanRows(content).rows.filter((row) => !row.checked);
921
- const openRowsWithMetadata = openRows.map((row) => ({
922
- row,
923
- agentPlan: buildTodayAgentPlanMetadata(todayDate, row),
924
- }));
925
- const pendingRows = db
926
- .prepare(`SELECT id, scheduled_for, task_type, task_description, task_context, status
927
- FROM agent_schedule
928
- WHERE status IN ('pending', 'running')`)
929
- .all();
930
- const schedules = pendingRows
931
- .map((row) => toTodayScheduleCandidate(row, config.timezone || undefined))
932
- .filter((row) => row !== null)
933
- .map((row) => ({
934
- ...row,
935
- agentPlan: readTodayAgentPlanMetadata(row.taskContext),
936
- }))
937
- .filter((row) => row.agentPlan !== null && row.agentPlan.date === todayDate);
938
- const rowMatches = openRowsWithMetadata.map(({ row, agentPlan }) => {
939
- const matches = schedules.filter((schedule) => schedule.localDate === todayDate &&
940
- schedule.localTime === row.time &&
941
- schedule.agentPlan.ref === agentPlan.ref &&
942
- schedule.agentPlan.fingerprint === agentPlan.fingerprint &&
943
- schedule.agentPlan.category === row.category &&
944
- schedule.agentPlan.trigger === row.trigger);
945
- return { row, agentPlan, matches };
946
- });
947
- const rowsWithoutSchedule = rowMatches.filter(({ matches }) => matches.length === 0);
948
- const duplicateAgentPlanSchedules = rowMatches.filter(({ matches }) => matches.length > 1);
949
- const matchedScheduleIds = new Set();
950
- for (const { matches } of rowMatches) {
951
- for (const schedule of matches)
952
- matchedScheduleIds.add(schedule.id);
953
- }
954
- const schedulesWithoutRow = schedules.filter((row) => !matchedScheduleIds.has(row.id));
955
- const mismatchCount = (rowsWithoutSchedule.length +
956
- duplicateAgentPlanSchedules.length +
957
- schedulesWithoutRow.length);
958
- return c.json({
959
- status: validationError
960
- ? "invalid_today"
961
- : mismatchCount > 0
962
- ? "mismatch"
963
- : "ok",
964
- validationError,
965
- todayDate,
966
- openAgentPlanRows: openRows.length,
967
- pendingSchedules: schedules.length,
968
- rowsWithoutSchedule: rowsWithoutSchedule.map(({ row, agentPlan }) => ({
969
- line: row.line,
970
- ref: agentPlan.ref,
971
- time: row.time,
972
- action: row.action,
973
- category: row.category,
974
- trigger: row.trigger,
975
- })),
976
- schedulesWithoutRow: schedulesWithoutRow.map((row) => ({
977
- id: row.id,
978
- ref: row.agentPlan.ref,
979
- localTime: row.localTime,
980
- scheduledFor: row.scheduledFor,
981
- taskType: row.taskType,
982
- status: row.status,
983
- description: row.description,
984
- })),
985
- duplicateAgentPlanSchedules: duplicateAgentPlanSchedules.map(({ row, agentPlan, matches }) => ({
986
- line: row.line,
987
- ref: agentPlan.ref,
988
- time: row.time,
989
- action: row.action,
990
- scheduleIds: matches.map((match) => match.id),
991
- })),
992
- });
993
- });
994
- // GET /context/health — schema drift and missing-file report for the
995
- // primary context vault. Registered before the wildcard read route.
996
- app.get("/context/health", (c) => {
997
- const contextDir = getCurrentContextDir();
998
- return c.json(buildContextHealthReport(contextDir));
999
- });
1000
- // POST /context/repair/stub — create a known missing stub from the
1001
- // templates tree. This is intentionally guarded to a small allow-list;
1002
- // it is not an arbitrary file creation endpoint.
1003
- app.post("/context/repair/stub", async (c) => {
1004
- const parsedBody = await readOptionalJsonBody(c);
1005
- if (!parsedBody.ok)
1006
- return parsedBody.response;
1007
- const rawPath = parsedBody.body.path;
1008
- if (typeof rawPath !== "string") {
1009
- return c.json({
1010
- error: "validation_error",
1011
- message: "path must be a string.",
1012
- }, 400);
1013
- }
1014
- const normalizedPath = normalizeRepairStubPath(rawPath);
1015
- if (!normalizedPath || !REPAIRABLE_STUB_TARGETS.has(normalizedPath)) {
1016
- return c.json({
1017
- error: "unsupported_stub_target",
1018
- message: "Only known context stub targets can be repaired.",
1019
- path: rawPath,
1020
- }, 400);
1021
- }
1022
- const templatesRoot = resolveTemplatesRoot(config.workspaceDir);
1023
- /* c8 ignore next 9 — resolveTemplatesRoot always succeeds via import.meta.url
1024
- * fallback in tests; the 503 branch requires a broken install where the
1025
- * agent-assets directory is absent from every candidate path. */
1026
- if (!templatesRoot) {
1027
- return c.json({
1028
- error: "templates_unavailable",
1029
- message: "agent-assets/templates could not be located.",
1030
- }, 503);
1031
- }
1032
- const templatePath = join(templatesRoot, normalizedPath);
1033
- if (!existsSync(templatePath)) {
1034
- return c.json({
1035
- error: "template_not_found",
1036
- message: `No template exists for ${normalizedPath}.`,
1037
- path: normalizedPath,
1038
- }, 404);
1039
- }
1040
- const contextDir = getCurrentContextDir();
1041
- const fullPath = safePath(contextDir, normalizedPath);
1042
- if (!fullPath) {
1043
- return c.json({ error: "invalid_path", path: normalizedPath }, 400);
1044
- }
1045
- return withWriteLock(() => {
1046
- if (existsSync(fullPath)) {
1047
- const existingStat = statSync(fullPath);
1048
- return c.json({
1049
- status: "exists",
1050
- path: normalizedPath,
1051
- lastModified: existingStat.mtime.toISOString(),
1052
- });
1053
- }
1054
- // Read the template once and write atomically; replaces the
1055
- // previous copyFileSync, which would have silently followed a
1056
- // symlink planted at `fullPath` during the TOCTOU window between
1057
- // safePath validation and the write.
1058
- const content = readFileSync(templatePath, "utf-8");
1059
- writeFileAtomically(fullPath, content);
1060
- writeTracker?.markWriting(fullPath, content);
1061
- const normalizedBase = normalizeContextPath(normalizedPath);
1062
- if (shouldRefreshPromptContext(normalizedBase, "PUT")) {
1063
- notifyPromptContextChanged(deps, normalizedBase, `context_repair_stub:${normalizedBase}`, { path: normalizedBase, method: "REPAIR" });
1064
- }
1065
- deps.onIndexableContextChange?.(normalizedPath);
1066
- const writtenStat = statSync(fullPath);
1067
- logger.info({ path: normalizedPath, templatePath }, "Context stub repaired from template");
1068
- return c.json({
1069
- status: "created",
1070
- path: normalizedPath,
1071
- lastModified: writtenStat.mtime.toISOString(),
1072
- });
1073
- });
1074
- });
1075
- // === Wildcard routes ===
1076
- // GET /context/* — Read context file
1077
- app.get("/context/*", (c) => {
1078
- const rawPath = c.req.path.replace("/api/context/", "");
1079
- if (!rawPath || rawPath === "list") {
1080
- return c.json({ error: "path_required" }, 400);
1081
- }
1082
- const path = normalizeContextPath(rawPath);
1083
- const contextDir = getCurrentContextDir();
1084
- const fullPath = safePath(contextDir, rawPath);
1085
- if (!fullPath) {
1086
- return c.json({ error: "invalid_path", path }, 400);
1087
- }
1088
- if (!existsSync(fullPath)) {
1089
- return c.json({ error: "not_found", path }, 404);
1090
- }
1091
- const content = readFileSync(fullPath, "utf-8");
1092
- const stat = statSync(fullPath);
1093
- // STAGE-C-DM-FRESHNESS-PLAN §Task 4 — record reads of `today` so the
1094
- // dashboard refetch-hit metric can detect when the agent invokes the
1095
- // Task 3 directive on a resumed turn. Bounded to `today` reads only
1096
- // so the agent_actions volume stays small. Best-effort: any logging
1097
- // failure must not break the read.
1098
- if (path === "today") {
1099
- try {
1100
- deps.db
1101
- .prepare(`INSERT INTO agent_actions (action_type, trigger, result, detail, started_at, completed_at)
1102
- VALUES ('context_read', 'reactive', 'success', json(?), datetime('now'), datetime('now'))`)
1103
- .run(JSON.stringify({ path }));
1104
- }
1105
- catch (err) {
1106
- /* c8 ignore next 5 — DB INSERT failure inside a best-effort audit path;
1107
- * triggering requires closing the DB mid-request which destroys
1108
- * the test harness. */
1109
- logger.warn({ err, path }, "Failed to record context_read agent_actions row (Stage C metrics)");
1110
- }
1111
- }
1112
- return c.json({
1113
- content,
1114
- lastModified: stat.mtime.toISOString(),
1115
- editable: isWriteAllowed(path, "PUT"),
1116
- });
1117
- });
1118
- // PUT /context/* — Full replace
1119
- app.put("/context/*", async (c) => {
1120
- const rawPath = c.req.path.replace("/api/context/", "");
1121
- const target = resolveContextTarget(rawPath);
1122
- const path = target.base;
1123
- const contextDir = getCurrentContextDir();
1124
- const fullPath = safePath(contextDir, rawPath);
1125
- if (!fullPath) {
1126
- return c.json({ error: "invalid_path", path }, 400);
1127
- }
1128
- if (!isWriteAllowed(path, "PUT")) {
1129
- logger.warn({ path, method: "PUT" }, "Context write forbidden");
1130
- return c.json({ error: "forbidden", path, method: "PUT" }, 403);
1131
- }
1132
- // Morning Routine lock: reject writes to today while lock is held
1133
- if (morningRoutineLock.getHolder() && path === "today") {
1134
- const lockId = c.req.header("X-Lock-Id");
1135
- if (!morningRoutineLock.isHeldBy(lockId)) {
1136
- logger.info({ path }, "Context PUT rejected — morning routine lock held");
1137
- return c.json({ error: "morning_routine_lock_held" }, 409);
1138
- }
1139
- }
1140
- // Roadmap write lock: reject writes to roadmap while another session holds it
1141
- if (roadmapWriteLock.getHolder() && path === "roadmap") {
1142
- const lockId = c.req.header("X-Lock-Id");
1143
- if (!roadmapWriteLock.isHeldBy(lockId)) {
1144
- logger.info({ path }, "Context PUT rejected — roadmap write lock held");
1145
- return c.json({ error: "roadmap_write_lock_held" }, 409);
1146
- }
1147
- }
1148
- const parsedBody = await readJsonBody(c, { maxBytes: CONTEXT_BODY_MAX_BYTES });
1149
- if (!parsedBody.ok)
1150
- return parsedBody.response;
1151
- const body = parsedBody.body;
1152
- const parsed = contextPutSchema.safeParse(body);
1153
- if (!parsed.success) {
1154
- return c.json({ error: "validation_error", details: parsed.error }, 400);
1155
- }
1156
- const roadmapValidationOff = isRoadmapValidationDisabled(path, c.req.header("X-Roadmap-Validation"));
1157
- if (roadmapValidationOff) {
1158
- logRoadmapValidationBypass(c, "PUT", path);
1159
- }
1160
- const expectedAgentDay = path === "today"
1161
- ? getAgentDayDateStr(config.timezone || undefined, config.dayBoundaryHour ?? 4)
1162
- : undefined;
1163
- const preflight = prepareContextContentForWrite(target, parsed.data.content, {
1164
- timezone: config.timezone || undefined,
1165
- disableRoadmapValidation: roadmapValidationOff,
1166
- defaultLongTermPlanSource: roadmapDefaultLongTermPlanSource(c),
1167
- expectedAgentDay,
1168
- });
1169
- if (!preflight.ok) {
1170
- return c.json({
1171
- error: "validation_error",
1172
- message: preflight.message,
1173
- path: preflight.path,
1174
- }, preflight.status);
1175
- }
1176
- const sessionId = c.req.header("X-Session-Id");
1177
- return withWriteLock(() => {
1178
- // Append-only files: PUT is only allowed for initial creation.
1179
- // Once the file exists, all writes must go through PATCH to preserve
1180
- // the append-only contract. This check MUST be inside withWriteLock
1181
- // to prevent TOCTOU races where two concurrent PUTs both pass an
1182
- // outer existsSync check and then sequentially overwrite.
1183
- if (CREATE_ONLY_PUT.has(path) && existsSync(fullPath)) {
1184
- logger.warn({ path }, "Context PUT rejected — file exists, use PATCH to append");
1185
- return c.json({
1186
- error: "append_only",
1187
- message: `${path} already exists. Use PATCH to append new sections.`,
1188
- path,
1189
- }, 409);
1190
- }
1191
- // Optimistic concurrency check: if client supplied expectedMtime,
1192
- // compare against the current file. On mismatch, return 409 with
1193
- // the current state so the UI can surface a conflict dialog without
1194
- // a second round-trip.
1195
- let snapshotId = null;
1196
- let contentToWrite = preflight.content;
1197
- if (existsSync(fullPath)) {
1198
- const currentStat = statSync(fullPath);
1199
- const currentMtime = currentStat.mtime.toISOString();
1200
- const existing = readFileSync(fullPath, "utf-8");
1201
- if (parsed.data.expectedMtime !== undefined &&
1202
- parsed.data.expectedMtime !== currentMtime) {
1203
- logger.info({ path, expectedMtime: parsed.data.expectedMtime, currentMtime }, "Context PUT conflict");
1204
- return c.json({
1205
- error: "conflict",
1206
- currentMtime,
1207
- currentContent: existing,
1208
- }, 409);
1209
- }
1210
- const prepared = prepareContextContentForWrite(target, parsed.data.content, {
1211
- timezone: config.timezone || undefined,
1212
- disableRoadmapValidation: roadmapValidationOff,
1213
- previousRoadmapContent: existing,
1214
- today: localDateStr(new Date(), config.timezone || undefined),
1215
- defaultLongTermPlanSource: roadmapDefaultLongTermPlanSource(c),
1216
- expectedAgentDay,
1217
- });
1218
- if (!prepared.ok) {
1219
- return c.json({
1220
- error: "validation_error",
1221
- message: prepared.message,
1222
- path: prepared.path,
1223
- }, prepared.status);
1224
- }
1225
- contentToWrite = prepared.content;
1226
- snapshotId = saveSnapshot(path, existing, "api_put", true, sessionId);
1227
- }
1228
- else if (parsed.data.expectedMtime !== undefined) {
1229
- // Client expected a specific mtime but the file is gone
1230
- return c.json({
1231
- error: "conflict",
1232
- currentMtime: "",
1233
- currentContent: "",
1234
- }, 409);
1235
- }
1236
- // Symlink-safe atomic write — protects against a TOCTOU swap of
1237
- // `fullPath` to a symlink between safePath validation and the write.
1238
- writeFileAtomically(fullPath, contentToWrite);
1239
- writeTracker?.markWriting(fullPath, contentToWrite);
1240
- if (shouldRefreshPromptContext(path, "PUT")) {
1241
- notifyPromptContextChanged(deps, path, `context_put:${path}`, { path, method: "PUT" });
1242
- }
1243
- if (path.startsWith("routines/custom/")) {
1244
- deps.onCustomRoutinesChanged?.();
1245
- }
1246
- deps.onIndexableContextChange?.(`${path}${target.ext}`);
1247
- const writtenStat = statSync(fullPath);
1248
- logger.info({ path, method: "PUT", bytesWritten: writtenStat.size, snapshotId: snapshotId ?? undefined }, "Context file updated");
1249
- return c.json({
1250
- status: "updated",
1251
- snapshotId: snapshotId ?? 0,
1252
- lastModified: writtenStat.mtime.toISOString(),
1253
- });
1254
- });
1255
- });
1256
- // PATCH /context/* — Section operation
1257
- app.patch("/context/*", async (c) => {
1258
- const rawPath = c.req.path.replace("/api/context/", "");
1259
- const target = resolveContextTarget(rawPath);
1260
- const path = target.base;
1261
- const contextDir = getCurrentContextDir();
1262
- const fullPath = safePath(contextDir, rawPath);
1263
- if (!fullPath) {
1264
- return c.json({ error: "invalid_path", path }, 400);
1265
- }
1266
- if (!isWriteAllowed(path, "PATCH")) {
1267
- logger.warn({ path, method: "PATCH" }, "Context write forbidden");
1268
- return c.json({ error: "forbidden", path, method: "PATCH" }, 403);
1269
- }
1270
- // Morning Routine lock: reject writes to today while lock is held
1271
- if (morningRoutineLock.getHolder() && path === "today") {
1272
- const lockId = c.req.header("X-Lock-Id");
1273
- if (!morningRoutineLock.isHeldBy(lockId)) {
1274
- logger.info({ path }, "Context PATCH rejected — morning routine lock held");
1275
- return c.json({ error: "morning_routine_lock_held" }, 409);
1276
- }
1277
- }
1278
- // Roadmap write lock: reject writes to roadmap while another session holds it
1279
- if (roadmapWriteLock.getHolder() && path === "roadmap") {
1280
- const lockId = c.req.header("X-Lock-Id");
1281
- if (!roadmapWriteLock.isHeldBy(lockId)) {
1282
- logger.info({ path }, "Context PATCH rejected — roadmap write lock held");
1283
- return c.json({ error: "roadmap_write_lock_held" }, 409);
1284
- }
1285
- }
1286
- const parsedBody = await readJsonBody(c, { maxBytes: CONTEXT_BODY_MAX_BYTES });
1287
- if (!parsedBody.ok)
1288
- return parsedBody.response;
1289
- const body = parsedBody.body;
1290
- const parsed = contextPatchSchema.safeParse(body);
1291
- if (!parsed.success) {
1292
- return c.json({ error: "validation_error", details: parsed.error }, 400);
1293
- }
1294
- if (target.ext === ".base") {
1295
- return c.json({
1296
- error: "unsupported_operation",
1297
- message: "PATCH is not supported for .base files; use PUT to replace the file.",
1298
- }, 400);
1299
- }
1300
- const { section, mode, content: newContent, cutoff, maxEntries } = parsed.data;
1301
- const sessionId = c.req.header("X-Session-Id");
1302
- const roadmapValidationOff = isRoadmapValidationDisabled(path, c.req.header("X-Roadmap-Validation"));
1303
- if (roadmapValidationOff) {
1304
- logRoadmapValidationBypass(c, "PATCH", path);
1305
- }
1306
- const expectedAgentDay = path === "today"
1307
- ? getAgentDayDateStr(config.timezone || undefined, config.dayBoundaryHour ?? 4)
1308
- : undefined;
1309
- return withWriteLock(() => {
1310
- if (!existsSync(fullPath)) {
1311
- return c.json({ error: "not_found", path }, 404);
1312
- }
1313
- const fileContent = readFileSync(fullPath, "utf-8");
1314
- // ── append_to_file: append content to end of file (no section lookup) ──
1315
- // Designed for agent/journal.md and similar append-only files where
1316
- // each write adds a new top-level ## section rather than modifying
1317
- // an existing one. Avoids the hack of targeting the last section's
1318
- // body and injecting H2 headers inside it.
1319
- if (mode === "append_to_file") {
1320
- const separator = fileContent.endsWith("\n") ? "" : "\n";
1321
- const updated = fileContent + separator + (newContent ?? "") + "\n";
1322
- const prepared = prepareContextContentForWrite(target, updated, {
1323
- timezone: config.timezone || undefined,
1324
- disableRoadmapValidation: roadmapValidationOff,
1325
- previousRoadmapContent: fileContent,
1326
- today: localDateStr(new Date(), config.timezone || undefined),
1327
- defaultLongTermPlanSource: roadmapDefaultLongTermPlanSource(c),
1328
- allowLegacyToday: path === "today" && isLegacyTodayContent(fileContent),
1329
- expectedAgentDay,
1330
- });
1331
- if (!prepared.ok) {
1332
- return c.json({
1333
- error: "validation_error",
1334
- message: prepared.message,
1335
- path: prepared.path,
1336
- }, prepared.status);
1337
- }
1338
- saveSnapshot(path, fileContent, "api_patch", false, sessionId);
1339
- writeFileAtomically(fullPath, prepared.content);
1340
- writeTracker?.markWriting(fullPath, prepared.content);
1341
- if (shouldRefreshPromptContext(path, "PATCH")) {
1342
- notifyPromptContextChanged(deps, path, `context_patch:${path}`, {
1343
- path,
1344
- method: "PATCH",
1345
- mode,
1346
- section,
1347
- content: newContent,
1348
- previousContent: fileContent,
1349
- });
1350
- }
1351
- if (path.startsWith("routines/custom/")) {
1352
- deps.onCustomRoutinesChanged?.();
1353
- }
1354
- deps.onIndexableContextChange?.(`${path}${target.ext}`);
1355
- logger.info({ path, method: "PATCH", mode }, "Content appended to file");
1356
- return c.json({ status: "appended" });
1357
- }
1358
- // ── Section-based modes: require section lookup ──
1359
- const sectionBounds = findSection(fileContent, section);
1360
- if (!sectionBounds) {
1361
- return c.json({
1362
- error: "section_not_found",
1363
- section,
1364
- availableSections: getAvailableSections(fileContent),
1365
- }, 400);
1366
- }
1367
- let updated;
1368
- const before = fileContent.slice(0, sectionBounds.start);
1369
- const after = fileContent.slice(sectionBounds.end);
1370
- const currentBody = fileContent.slice(sectionBounds.start, sectionBounds.end);
1371
- let removedCount;
1372
- let trimmedCount;
1373
- switch (mode) {
1374
- case "append": {
1375
- // Ensure a single newline separator without destroying existing content
1376
- const separator = currentBody.endsWith("\n") ? "" : "\n";
1377
- let appendedBody = currentBody + separator + (newContent ?? "") + "\n";
1378
- // maxEntries: trim oldest bullet entries from the top
1379
- if (maxEntries !== undefined) {
1380
- const trimResult = trimBulletEntries(appendedBody, maxEntries);
1381
- appendedBody = trimResult.body;
1382
- trimmedCount = trimResult.trimmed;
1383
- }
1384
- updated = before + appendedBody + after;
1385
- break;
1386
- }
1387
- case "replace":
1388
- updated = before + (newContent ?? "") + "\n" + after;
1389
- break;
1390
- case "clear":
1391
- updated = before + "\n" + after;
1392
- break;
1393
- case "clear_before": {
1394
- // Schema refinements validate format, but defense-in-depth for
1395
- // direct API callers that bypass schema validation.
1396
- if (!cutoff || !/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(cutoff)) {
1397
- return c.json({
1398
- error: "cutoff_required",
1399
- message: "clear_before requires cutoff in 'YYYY-MM-DD HH:MM:SS' format (zero-padded)",
1400
- }, 400);
1401
- }
1402
- const clearResult = clearEntriesBefore(currentBody, cutoff);
1403
- updated = before + clearResult.remaining + after;
1404
- removedCount = clearResult.removedCount;
1405
- break;
1406
- }
1407
- }
1408
- const prepared = prepareContextContentForWrite(target, updated, {
1409
- timezone: config.timezone || undefined,
1410
- disableRoadmapValidation: roadmapValidationOff,
1411
- previousRoadmapContent: fileContent,
1412
- today: localDateStr(new Date(), config.timezone || undefined),
1413
- defaultLongTermPlanSource: roadmapDefaultLongTermPlanSource(c),
1414
- allowLegacyToday: path === "today" && isLegacyTodayContent(fileContent),
1415
- expectedAgentDay,
1416
- });
1417
- if (!prepared.ok) {
1418
- return c.json({
1419
- error: "validation_error",
1420
- message: prepared.message,
1421
- path: prepared.path,
1422
- }, prepared.status);
1423
- }
1424
- // Force snapshot on replace (bypass debounce) to ensure recovery
1425
- // from accidental overwrites. Other modes use normal debounce.
1426
- const forceSnapshot = mode === "replace" || mode === "clear" || mode === "clear_before";
1427
- saveSnapshot(path, fileContent, "api_patch", forceSnapshot, sessionId);
1428
- writeFileAtomically(fullPath, prepared.content);
1429
- writeTracker?.markWriting(fullPath, prepared.content);
1430
- if (shouldRefreshPromptContext(path, "PATCH")) {
1431
- notifyPromptContextChanged(deps, path, `context_patch:${path}`, {
1432
- path,
1433
- method: "PATCH",
1434
- mode,
1435
- section,
1436
- content: newContent,
1437
- previousContent: fileContent,
1438
- });
1439
- }
1440
- if (path.startsWith("routines/custom/")) {
1441
- deps.onCustomRoutinesChanged?.();
1442
- }
1443
- deps.onIndexableContextChange?.(`${path}${target.ext}`);
1444
- const resultStatus = mode === "append" ? "appended" : mode === "replace" ? "replaced" : "cleared";
1445
- logger.info({ path, method: "PATCH", section, mode, removedCount, trimmedCount }, "Context section " + resultStatus);
1446
- return c.json({ status: resultStatus, removedCount, trimmedCount });
1447
- });
1448
- });
1449
- // DELETE /context/* — File delete (currently limited to `routines/custom/*`
1450
- // via the write-permission whitelist). B-007 §5.8 Q3: the agent retires a
1451
- // custom routine after the user confirms. The scheduler listens via
1452
- // `onCustomRoutinesChanged` and unregisters the cron job on reload.
1453
- app.delete("/context/*", (c) => {
1454
- const path = normalizeContextPath(c.req.path.replace("/api/context/", ""));
1455
- const contextDir = getCurrentContextDir();
1456
- const fullPath = safePath(contextDir, path);
1457
- if (!fullPath) {
1458
- return c.json({ error: "invalid_path", path }, 400);
1459
- }
1460
- if (!isWriteAllowed(path, "DELETE")) {
1461
- logger.warn({ path, method: "DELETE" }, "Context delete forbidden");
1462
- return c.json({ error: "forbidden", path, method: "DELETE" }, 403);
1463
- }
1464
- return withWriteLock(() => {
1465
- if (!existsSync(fullPath)) {
1466
- return c.json({ error: "not_found", path }, 404);
1467
- }
1468
- const existing = readFileSync(fullPath, "utf-8");
1469
- const snapshotId = saveSnapshot(path, existing, "api_delete", true);
1470
- unlinkSync(fullPath);
1471
- if (path.startsWith("routines/custom/")) {
1472
- deps.onCustomRoutinesChanged?.();
1473
- }
1474
- deps.onIndexableContextChange?.(path);
1475
- logger.info({ path, method: "DELETE", snapshotId: snapshotId ?? undefined }, "Context file deleted");
1476
- return c.json({ status: "deleted", snapshotId: snapshotId ?? 0 });
1477
- });
1478
- });
1479
- return app;
1480
- }
1481
- function validateContextContent(target, content, options) {
1482
- if (target.base === "today") {
1483
- const message = validateTodayContent(content, {
1484
- allowLegacyToday: options?.allowLegacyToday ?? false,
1485
- expectedAgentDay: options?.expectedAgentDay,
1486
- });
1487
- return message ? { message, status: 400 } : null;
1488
- }
1489
- if (target.base === "roadmap") {
1490
- const result = validateRoadmap(content);
1491
- if (!result.ok && result.error) {
1492
- return {
1493
- message: formatRoadmapValidationError(result.error),
1494
- status: 400,
1495
- path: result.error.path,
1496
- };
1497
- }
1498
- return null;
1499
- }
1500
- if (target.base.startsWith("routines/custom/")) {
1501
- const slug = target.base.slice("routines/custom/".length);
1502
- const result = parseCustomRoutineSpec(slug, content);
1503
- if (!result.ok) {
1504
- return {
1505
- message: explainCustomRoutineValidationError(result.error),
1506
- status: 400,
1507
- };
1508
- }
1509
- return null;
1510
- }
1511
- if (target.base.startsWith("routines/") && target.base !== "routines/_index") {
1512
- const message = validateBuiltInRoutineRulebook(target.base, content);
1513
- return message ? { message, status: 400 } : null;
1514
- }
1515
- const relativePath = `${target.base}${target.ext}`;
1516
- if (!options?.skipFrontmatterValidation) {
1517
- const frontmatterError = validateContextFileFrontmatter(content, relativePath);
1518
- if (frontmatterError) {
1519
- return { message: frontmatterError.message, status: 422 };
1520
- }
1521
- }
1522
- if (target.ext !== ".base")
1523
- return null;
1524
- const message = validateBaseYamlSyntax(content);
1525
- return message ? { message, status: 400 } : null;
1526
- }
1527
- const TODAY_REQUIRED_SECTIONS = [
1528
- "User Schedule",
1529
- "User Tasks",
1530
- "Agent Plan",
1531
- "Agent Notes",
1532
- "Agent Log",
1533
- "Handoff",
1534
- ];
1535
- const TODAY_H1_RE = /^# \d{4}-\d{2}-\d{2}(?: \([^)]+\))?$/;
1536
- const TODAY_DAY_TYPE_RE = /^> Day type: (Weekday|Weekend) \| Work focus: (on|off) \| Study focus: (on|off) \| Personal focus: (on|off)$/;
1537
- function isLegacyTodayContent(content) {
1538
- const lines = content.split(/\r?\n/);
1539
- return (lines[0] ?? "").trim() === "# Today";
1540
- }
1541
- function validateTodayContent(content, options = {}) {
1542
- if (options.allowLegacyToday && isLegacyTodayContent(content))
1543
- return null;
1544
- const lines = content.split(/\r?\n/);
1545
- const firstLine = (lines[0] ?? "").trim();
1546
- if (!TODAY_H1_RE.test(firstLine)) {
1547
- return ("today.md line 1 must be `# YYYY-MM-DD (day-of-week)`. " +
1548
- "The date and dashes are ASCII English; only the weekday inside " +
1549
- "`(...)` may be localized. Do NOT translate the literal `# ` prefix " +
1550
- "or change the date separator. See the today skill for the full " +
1551
- "skeleton contract.");
1552
- }
1553
- if (!TODAY_DAY_TYPE_RE.test((lines[1] ?? "").trim())) {
1554
- return ("today.md line 2 must be `> Day type: Weekday|Weekend | Work focus: on|off | Study focus: on|off | Personal focus: on|off`. " +
1555
- "This line is parsed by every downstream event handler — keep it " +
1556
- "exact English ASCII with the casing, pipe separators (` | `), and " +
1557
- "leading `> ` shown above. Do NOT translate `Day type` / `Weekday` / " +
1558
- "`Work focus` / `on` / `off` etc. into the user's primary_language; " +
1559
- "the `<output_language_policy>` skeleton-precedence rule covers this " +
1560
- "line. Example: " +
1561
- "`> Day type: Weekday | Work focus: on | Study focus: on | Personal focus: on`.");
1562
- }
1563
- // Agent-day-date check — rejects wrong-date H1 with a clear error echoing
1564
- // both values. Without this, a wrong-date PUT silently succeeds (regex
1565
- // passes) and the dispatcher's post-run hasCurrentAgentDayTodayMd() check
1566
- // schedules a retry while the same session still has the prompt context
1567
- // loaded, wasting a heavy-tier turn cycle. With this guard the agent gets
1568
- // immediate feedback and corrects in-session.
1569
- if (options.expectedAgentDay) {
1570
- // TODAY_H1_RE already matched, so the YYYY-MM-DD capture is guaranteed.
1571
- // No optional-chain — the regex precondition guarantees `[1]` is set.
1572
- const writtenDate = firstLine.match(/^# (\d{4}-\d{2}-\d{2})/)[1];
1573
- if (writtenDate !== options.expectedAgentDay) {
1574
- return (`today.md line 1 date '${writtenDate}' does not match the current ` +
1575
- `agent-day date '${options.expectedAgentDay}'. ` +
1576
- `Use the date from <current_agent_day date="..."> in your prompt context — ` +
1577
- `the agent-day differs from calendar today before the day-boundary hour.`);
1578
- }
1579
- }
1580
- let previousSectionIndex = 1;
1581
- for (const section of TODAY_REQUIRED_SECTIONS) {
1582
- const index = lines.findIndex((line, lineIndex) => lineIndex > previousSectionIndex && line.trim() === `## ${section}`);
1583
- if (index < 0) {
1584
- return `today.md requires \`## ${section}\` in canonical order.`;
1585
- }
1586
- previousSectionIndex = index;
1587
- }
1588
- const parsed = extractTodayAgentPlanRows(content);
1589
- if (parsed.invalidRows.length > 0) {
1590
- const first = parsed.invalidRows[0];
1591
- return (`today.md Agent Plan line ${first.line} must match ` +
1592
- `\`- [ ] HH:MM <action> [work|study|personal|home] →DM|→notify|→check-in|→wake\`. ` +
1593
- `Got: ${JSON.stringify(first.raw)}`);
1594
- }
1595
- return null;
1596
- }
1597
- function toTodayScheduleCandidate(row, timezone) {
1598
- const scheduledAt = parseScheduleDate(row.scheduled_for);
1599
- if (Number.isNaN(scheduledAt.getTime()))
1600
- return null;
1601
- const local = nowInTimezone(timezone, scheduledAt);
1602
- const localDate = `${local.year}-${String(local.month).padStart(2, "0")}-${String(local.day).padStart(2, "0")}`;
1603
- const localTime = `${String(local.hours).padStart(2, "0")}:${String(local.minutes).padStart(2, "0")}`;
1604
- return {
1605
- id: row.id,
1606
- scheduledFor: row.scheduled_for,
1607
- localDate,
1608
- localTime,
1609
- taskType: row.task_type,
1610
- status: row.status,
1611
- description: row.task_description,
1612
- taskContext: parseJsonObject(row.task_context),
1613
- };
1614
- }
1615
- function parseScheduleDate(value) {
1616
- return new Date(value.includes("T") ? value : value.replace(" ", "T") + "Z");
1617
- }
1618
- function parseJsonObject(raw) {
1619
- if (!raw)
1620
- return {};
1621
- try {
1622
- const parsed = JSON.parse(raw);
1623
- if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
1624
- return parsed;
1625
- }
1626
- }
1627
- catch {
1628
- // Ignore corrupt metadata for reconciliation diagnostics.
1629
- }
1630
- return {};
1631
- }
1632
- function prepareContextContentForWrite(target, content, options) {
1633
- if (target.base !== "roadmap") {
1634
- const contentError = validateContextContent(target, content, {
1635
- allowLegacyToday: options?.allowLegacyToday,
1636
- expectedAgentDay: options?.expectedAgentDay,
1637
- });
1638
- if (contentError) {
1639
- return {
1640
- ok: false,
1641
- message: contentError.message,
1642
- status: contentError.status,
1643
- path: contentError.path,
1644
- };
1645
- }
1646
- return { ok: true, content };
1647
- }
1648
- if (options?.disableRoadmapValidation) {
1649
- return { ok: true, content };
1650
- }
1651
- const normalized = normalizeRoadmapForWrite(content, {
1652
- timezone: options?.timezone,
1653
- defaultLongTermPlanSource: options?.defaultLongTermPlanSource ?? "manual",
1654
- });
1655
- const result = validateRoadmap(normalized.content);
1656
- if (!result.ok && result.error) {
1657
- return {
1658
- ok: false,
1659
- message: formatRoadmapValidationError(result.error),
1660
- status: 400,
1661
- path: result.error.path,
1662
- };
1663
- }
1664
- if (options?.previousRoadmapContent !== undefined) {
1665
- const transition = validateRoadmapTransition(options.previousRoadmapContent, normalized.content, {
1666
- today: options.today,
1667
- timezone: options.timezone,
1668
- });
1669
- if (!transition.ok && transition.error) {
1670
- return {
1671
- ok: false,
1672
- message: formatRoadmapValidationError(transition.error),
1673
- status: 400,
1674
- path: transition.error.path,
1675
- };
1676
- }
1677
- }
1678
- return { ok: true, content: normalized.content };
1679
- }
1680
- function formatRoadmapValidationError(error) {
1681
- const line = error.line ? `line ${error.line}: ` : "";
1682
- return `${line}${error.message}`;
1683
- }
1684
- function validateBuiltInRoutineRulebook(path, content) {
1685
- const frontmatter = extractRoutineFrontmatter(content);
1686
- if (frontmatter === null) {
1687
- return "Routine rulebooks require YAML frontmatter.";
1688
- }
1689
- const expectedSlug = path.slice("routines/".length);
1690
- const typeRaw = readRoutineFrontmatterScalar(frontmatter, "type");
1691
- if (!typeRaw) {
1692
- return "Routine rulebooks require `type: rule` in frontmatter.";
1693
- }
1694
- if (typeRaw !== "rule") {
1695
- return "Routine rulebooks must declare `type: rule`.";
1696
- }
1697
- const slugRaw = readRoutineFrontmatterScalar(frontmatter, "slug");
1698
- if (!slugRaw) {
1699
- return "Routine rulebooks require a `slug` frontmatter field.";
1700
- }
1701
- if (slugRaw !== expectedSlug) {
1702
- return `Routine rulebook slug must match the filename (${expectedSlug}).`;
1703
- }
1704
- if (!/^##\s+Checks\s*$/m.test(content)) {
1705
- return "Routine rulebooks require a `## Checks` section.";
1706
- }
1707
- return null;
1708
- }
1709
- function explainCustomRoutineValidationError(error) {
1710
- switch (error.kind) {
1711
- case "missing_field":
1712
- return `Custom routine files require \`${error.field}\` in frontmatter.`;
1713
- case "invalid_cron":
1714
- return `Invalid cron expression: \`${error.value}\`.`;
1715
- case "invalid_slug":
1716
- return `Custom routine slug is invalid or does not match the filename: \`${error.value}\`.`;
1717
- case "invalid_type":
1718
- return `Custom routines must declare \`type: rule\`, got \`${error.value}\`.`;
1719
- case "invalid_process_key":
1720
- return `Custom routine \`process_key\` must match the filename-derived key, got \`${error.value}\`.`;
1721
- case "invalid_enabled":
1722
- return `Custom routine \`enabled\` must be \`true\` or \`false\`, got \`${error.value}\`.`;
1723
- case "invalid_tier":
1724
- return `Custom routine \`backend_tier\` must be \`light\` or \`heavy\`, got \`${error.value}\`.`;
1725
- case "invalid_budget":
1726
- return `Custom routine \`max_budget_usd\` must be a positive number, got \`${error.value}\`.`;
1727
- case "missing_checks_section":
1728
- return "Custom routines require a `## Checks` section.";
1729
- case "no_frontmatter":
1730
- return "Custom routines require YAML frontmatter.";
1731
- }
1732
- }
1733
- function extractRoutineFrontmatter(content) {
1734
- if (!content.startsWith("---\n") && !content.startsWith("---\r\n")) {
1735
- return null;
1736
- }
1737
- const afterOpen = content.startsWith("---\r\n") ? 5 : 4;
1738
- const endIdx = content.indexOf("\n---", afterOpen - 1);
1739
- if (endIdx < 0)
1740
- return null;
1741
- return content.slice(afterOpen, endIdx);
1742
- }
1743
- function readRoutineFrontmatterScalar(frontmatter, field) {
1744
- const re = new RegExp(`^${field}\\s*:\\s*(.+?)\\s*$`, "m");
1745
- const match = frontmatter.match(re);
1746
- if (!match)
1747
- return null;
1748
- let value = match[1].trim();
1749
- if ((value.startsWith('"') && value.endsWith('"')) ||
1750
- (value.startsWith("'") && value.endsWith("'"))) {
1751
- value = value.slice(1, -1);
1752
- }
1753
- return value;
1754
- }
1755
- function validateBaseYamlSyntax(content) {
1756
- if (content.trim().length === 0) {
1757
- return ".base files must not be empty.";
1758
- }
1759
- const lines = content.split("\n");
1760
- let sawMeaningfulLine = false;
1761
- for (let index = 0; index < lines.length; index++) {
1762
- const raw = lines[index];
1763
- const lineNo = index + 1;
1764
- if (raw.includes("\t")) {
1765
- return `.base YAML may not contain tab indentation (line ${lineNo}).`;
1766
- }
1767
- const trimmed = raw.trim();
1768
- if (!trimmed || trimmed.startsWith("#"))
1769
- continue;
1770
- sawMeaningfulLine = true;
1771
- const indent = raw.length - raw.trimStart().length;
1772
- if (indent % 2 !== 0) {
1773
- return `.base YAML uses 2-space indentation (line ${lineNo}).`;
1774
- }
1775
- const isListItem = /^-\s+\S/.test(trimmed);
1776
- const isMapping = /^[^:#][^:]*:\s*(?:.*)?$/.test(trimmed);
1777
- if (!isListItem && !isMapping) {
1778
- return `Invalid .base YAML structure on line ${lineNo}.`;
1779
- }
1780
- }
1781
- if (!sawMeaningfulLine) {
1782
- return ".base files must contain at least one mapping entry.";
1783
- }
1784
- return null;
1785
- }
1786
- // Export for testing
1787
- export { normalizeSection, findSection, isWriteAllowed, safePath, resolveContextTarget, validateBaseYamlSyntax, validateTodayContent, clearEntriesBefore, trimBulletEntries, parseEntryTimestamp, };
1788
- //# sourceMappingURL=context.js.map